Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/crypto/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 1 MB image not shown  

Quelle  testmgr.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Algorithm testing framework and tests.
 *
 * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
 * Copyright (c) 2002 Jean-Francois Dive <jef@linuxbe.org>
 * Copyright (c) 2007 Nokia Siemens Networks
 * Copyright (c) 2008 Herbert Xu <herbert@gondor.apana.org.au>
 * Copyright (c) 2019 Google LLC
 *
 * Updated RFC4106 AES-GCM testing. Some test vectors were taken from
 * http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/
 * gcm/gcm-test-vectors.tar.gz
 *     Authors: Aidan O'Mahony (aidan.o.mahony@intel.com)
 *              Adrian Hoban <adrian.hoban@intel.com>
 *              Gabriele Paoloni <gabriele.paoloni@intel.com>
 *              Tadeusz Struk (tadeusz.struk@intel.com)
 *     Copyright (c) 2010, Intel Corporation.
 */

#ifndef _CRYPTO_TESTMGR_H
#define _CRYPTO_TESTMGR_H

#include <linux/oid_registry.h>
#include <crypto/internal/ecc.h>

#define MAX_IVLEN  32

/*
 * hash_testvec: structure to describe a hash (message digest) test
 * @key: Pointer to key (NULL if none)
 * @plaintext: Pointer to source data
 * @digest: Pointer to expected digest
 * @psize: Length of source data in bytes
 * @ksize: Length of @key in bytes (0 if no key)
 * @setkey_error: Expected error from setkey()
 * @digest_error: Expected error from digest()
 * @fips_skip: Skip the test vector in FIPS mode
 */

struct hash_testvec {
 const char *key;
 const char *plaintext;
 const char *digest;
 unsigned int psize;
 unsigned short ksize;
 int setkey_error;
 int digest_error;
 bool fips_skip;
};

/*
 * cipher_testvec: structure to describe a symmetric cipher test
 * @key: Pointer to key
 * @klen: Length of @key in bytes
 * @iv: Pointer to IV.  If NULL, an all-zeroes IV is used.
 * @iv_out: Pointer to output IV, if applicable for the cipher.
 * @ptext: Pointer to plaintext
 * @ctext: Pointer to ciphertext
 * @len: Length of @ptext and @ctext in bytes
 * @wk: Does the test need CRYPTO_TFM_REQ_FORBID_WEAK_KEYS?
 *  ( e.g. test needs to fail due to a weak key )
 * @fips_skip: Skip the test vector in FIPS mode
 * @setkey_error: Expected error from setkey()
 * @crypt_error: Expected error from encrypt() and decrypt()
 */

struct cipher_testvec {
 const char *key;
 const char *iv;
 const char *iv_out;
 const char *ptext;
 const char *ctext;
 unsigned char wk; /* weak key flag */
 unsigned short klen;
 unsigned int len;
 bool fips_skip;
 int setkey_error;
 int crypt_error;
};

/*
 * aead_testvec: structure to describe an AEAD test
 * @key: Pointer to key
 * @iv: Pointer to IV.  If NULL, an all-zeroes IV is used.
 * @ptext: Pointer to plaintext
 * @assoc: Pointer to associated data
 * @ctext: Pointer to the full authenticated ciphertext.  For AEADs that
 * produce a separate "ciphertext" and "authentication tag", these
 * two parts are concatenated: ciphertext || tag.
 * @novrfy: If set, this is an inauthentic input test: only decryption is
 * tested, and it is expected to fail with either -EBADMSG or
 * @crypt_error if it is nonzero.
 * @wk: Does the test need CRYPTO_TFM_REQ_FORBID_WEAK_KEYS?
 * (e.g. setkey() needs to fail due to a weak key)
 * @klen: Length of @key in bytes
 * @plen: Length of @ptext in bytes
 * @alen: Length of @assoc in bytes
 * @clen: Length of @ctext in bytes
 * @setkey_error: Expected error from setkey().  If set, neither encryption nor
 *   decryption is tested.
 * @setauthsize_error: Expected error from setauthsize().  If set, neither
 *        encryption nor decryption is tested.
 * @crypt_error: When @novrfy=0, the expected error from encrypt().  When
 *  @novrfy=1, an optional alternate error code that is acceptable
 *  for decrypt() to return besides -EBADMSG.
 */

struct aead_testvec {
 const char *key;
 const char *iv;
 const char *ptext;
 const char *assoc;
 const char *ctext;
 unsigned char novrfy;
 unsigned char wk;
 unsigned char klen;
 unsigned int plen;
 unsigned int clen;
 unsigned int alen;
 int setkey_error;
 int setauthsize_error;
 int crypt_error;
};

struct cprng_testvec {
 const char *key;
 const char *dt;
 const char *v;
 const char *result;
 unsigned char klen;
 unsigned short dtlen;
 unsigned short vlen;
 unsigned short rlen;
 unsigned short loops;
};

struct drbg_testvec {
 const unsigned char *entropy;
 size_t entropylen;
 const unsigned char *entpra;
 const unsigned char *entprb;
 size_t entprlen;
 const unsigned char *addtla;
 const unsigned char *addtlb;
 size_t addtllen;
 const unsigned char *pers;
 size_t perslen;
 const unsigned char *expected;
 size_t expectedlen;
};

struct akcipher_testvec {
 const unsigned char *key;
 const unsigned char *m;
 const unsigned char *c;
 unsigned int key_len;
 unsigned int m_size;
 unsigned int c_size;
 bool public_key_vec;
};

struct sig_testvec {
 const unsigned char *key;
 const unsigned char *params;
 const unsigned char *m;
 const unsigned char *c;
 unsigned int key_len;
 unsigned int param_len;
 unsigned int m_size;
 unsigned int c_size;
 bool public_key_vec;
 enum OID algo;
};

struct kpp_testvec {
 const unsigned char *secret;
 const unsigned char *b_secret;
 const unsigned char *b_public;
 const unsigned char *expected_a_public;
 const unsigned char *expected_ss;
 unsigned short secret_size;
 unsigned short b_secret_size;
 unsigned short b_public_size;
 unsigned short expected_a_public_size;
 unsigned short expected_ss_size;
 bool genkey;
};

static const char zeroed_string[48];

/*
 * RSA test vectors. Borrowed from openSSL.
 */

static const struct akcipher_testvec rsa_tv_template[] = {
 {
#ifndef CONFIG_CRYPTO_FIPS
 .key =
 "\x30\x82\x01\x38" /* sequence of 312 bytes */
 "\x02\x01\x00" /* version - integer of 1 byte */
 "\x02\x41" /* modulus - integer of 65 bytes */
 "\x00\xAA\x36\xAB\xCE\x88\xAC\xFD\xFF\x55\x52\x3C\x7F\xC4\x52\x3F"
 "\x90\xEF\xA0\x0D\xF3\x77\x4A\x25\x9F\x2E\x62\xB4\xC5\xD9\x9C\xB5"
 "\xAD\xB3\x00\xA0\x28\x5E\x53\x01\x93\x0E\x0C\x70\xFB\x68\x76\x93"
 "\x9C\xE6\x16\xCE\x62\x4A\x11\xE0\x08\x6D\x34\x1E\xBC\xAC\xA0\xA1"
 "\xF5"
 "\x02\x01\x11" /* public key - integer of 1 byte */
 "\x02\x40" /* private key - integer of 64 bytes */
 "\x0A\x03\x37\x48\x62\x64\x87\x69\x5F\x5F\x30\xBC\x38\xB9\x8B\x44"
 "\xC2\xCD\x2D\xFF\x43\x40\x98\xCD\x20\xD8\xA1\x38\xD0\x90\xBF\x64"
 "\x79\x7C\x3F\xA7\xA2\xCD\xCB\x3C\xD1\xE0\xBD\xBA\x26\x54\xB4\xF9"
 "\xDF\x8E\x8A\xE5\x9D\x73\x3D\x9F\x33\xB3\x01\x62\x4A\xFD\x1D\x51"
 "\x02\x21" /* prime1 - integer of 33 bytes */
 "\x00\xD8\x40\xB4\x16\x66\xB4\x2E\x92\xEA\x0D\xA3\xB4\x32\x04\xB5"
 "\xCF\xCE\x33\x52\x52\x4D\x04\x16\xA5\xA4\x41\xE7\x00\xAF\x46\x12"
 "\x0D"
 "\x02\x21" /* prime2 - integer of 33 bytes */
 "\x00\xC9\x7F\xB1\xF0\x27\xF4\x53\xF6\x34\x12\x33\xEA\xAA\xD1\xD9"
 "\x35\x3F\x6C\x42\xD0\x88\x66\xB1\xD0\x5A\x0F\x20\x35\x02\x8B\x9D"
 "\x89"
 "\x02\x20" /* exponent1 - integer of 32 bytes */
 "\x59\x0B\x95\x72\xA2\xC2\xA9\xC4\x06\x05\x9D\xC2\xAB\x2F\x1D\xAF"
 "\xEB\x7E\x8B\x4F\x10\xA7\x54\x9E\x8E\xED\xF5\xB4\xFC\xE0\x9E\x05"
 "\x02\x21" /* exponent2 - integer of 33 bytes */
 "\x00\x8E\x3C\x05\x21\xFE\x15\xE0\xEA\x06\xA3\x6F\xF0\xF1\x0C\x99"
 "\x52\xC3\x5B\x7A\x75\x14\xFD\x32\x38\xB8\x0A\xAD\x52\x98\x62\x8D"
 "\x51"
 "\x02\x20" /* coefficient - integer of 32 bytes */
 "\x36\x3F\xF7\x18\x9D\xA8\xE9\x0B\x1D\x34\x1F\x71\xD0\x9B\x76\xA8"
 "\xA9\x43\xE1\x1D\x10\xB2\x4D\x24\x9F\x2D\xEA\xFE\xF8\x0C\x18\x26",
 .m = "\x54\x85\x9b\x34\x2c\x49\xea\x2a",
 .c =
 "\x63\x1c\xcd\x7b\xe1\x7e\xe4\xde\xc9\xa8\x89\xa1\x74\xcb\x3c\x63"
 "\x7d\x24\xec\x83\xc3\x15\xe4\x7f\x73\x05\x34\xd1\xec\x22\xbb\x8a"
 "\x5e\x32\x39\x6d\xc1\x1d\x7d\x50\x3b\x9f\x7a\xad\xf0\x2e\x25\x53"
 "\x9f\x6e\xbd\x4c\x55\x84\x0c\x9b\xcf\x1a\x4b\x51\x1e\x9e\x0c\x06",
 .key_len = 316,
 .m_size = 8,
 .c_size = 64,
 }, {
 .key =
 "\x30\x82\x02\x5B" /* sequence of 603 bytes */
 "\x02\x01\x00" /* version - integer of 1 byte */
 "\x02\x81\x81" /* modulus - integer of 129 bytes */
 "\x00\xBB\xF8\x2F\x09\x06\x82\xCE\x9C\x23\x38\xAC\x2B\x9D\xA8\x71"
 "\xF7\x36\x8D\x07\xEE\xD4\x10\x43\xA4\x40\xD6\xB6\xF0\x74\x54\xF5"
 "\x1F\xB8\xDF\xBA\xAF\x03\x5C\x02\xAB\x61\xEA\x48\xCE\xEB\x6F\xCD"
 "\x48\x76\xED\x52\x0D\x60\xE1\xEC\x46\x19\x71\x9D\x8A\x5B\x8B\x80"
 "\x7F\xAF\xB8\xE0\xA3\xDF\xC7\x37\x72\x3E\xE6\xB4\xB7\xD9\x3A\x25"
 "\x84\xEE\x6A\x64\x9D\x06\x09\x53\x74\x88\x34\xB2\x45\x45\x98\x39"
 "\x4E\xE0\xAA\xB1\x2D\x7B\x61\xA5\x1F\x52\x7A\x9A\x41\xF6\xC1\x68"
 "\x7F\xE2\x53\x72\x98\xCA\x2A\x8F\x59\x46\xF8\xE5\xFD\x09\x1D\xBD"
 "\xCB"
 "\x02\x01\x11" /* public key - integer of 1 byte */
 "\x02\x81\x81"  /* private key - integer of 129 bytes */
 "\x00\xA5\xDA\xFC\x53\x41\xFA\xF2\x89\xC4\xB9\x88\xDB\x30\xC1\xCD"
 "\xF8\x3F\x31\x25\x1E\x06\x68\xB4\x27\x84\x81\x38\x01\x57\x96\x41"
 "\xB2\x94\x10\xB3\xC7\x99\x8D\x6B\xC4\x65\x74\x5E\x5C\x39\x26\x69"
 "\xD6\x87\x0D\xA2\xC0\x82\xA9\x39\xE3\x7F\xDC\xB8\x2E\xC9\x3E\xDA"
 "\xC9\x7F\xF3\xAD\x59\x50\xAC\xCF\xBC\x11\x1C\x76\xF1\xA9\x52\x94"
 "\x44\xE5\x6A\xAF\x68\xC5\x6C\x09\x2C\xD3\x8D\xC3\xBE\xF5\xD2\x0A"
 "\x93\x99\x26\xED\x4F\x74\xA1\x3E\xDD\xFB\xE1\xA1\xCE\xCC\x48\x94"
 "\xAF\x94\x28\xC2\xB7\xB8\x88\x3F\xE4\x46\x3A\x4B\xC8\x5B\x1C\xB3"
 "\xC1"
 "\x02\x41" /* prime1 - integer of 65 bytes */
 "\x00\xEE\xCF\xAE\x81\xB1\xB9\xB3\xC9\x08\x81\x0B\x10\xA1\xB5\x60"
 "\x01\x99\xEB\x9F\x44\xAE\xF4\xFD\xA4\x93\xB8\x1A\x9E\x3D\x84\xF6"
 "\x32\x12\x4E\xF0\x23\x6E\x5D\x1E\x3B\x7E\x28\xFA\xE7\xAA\x04\x0A"
 "\x2D\x5B\x25\x21\x76\x45\x9D\x1F\x39\x75\x41\xBA\x2A\x58\xFB\x65"
 "\x99"
 "\x02\x41" /* prime2 - integer of 65 bytes */
 "\x00\xC9\x7F\xB1\xF0\x27\xF4\x53\xF6\x34\x12\x33\xEA\xAA\xD1\xD9"
 "\x35\x3F\x6C\x42\xD0\x88\x66\xB1\xD0\x5A\x0F\x20\x35\x02\x8B\x9D"
 "\x86\x98\x40\xB4\x16\x66\xB4\x2E\x92\xEA\x0D\xA3\xB4\x32\x04\xB5"
 "\xCF\xCE\x33\x52\x52\x4D\x04\x16\xA5\xA4\x41\xE7\x00\xAF\x46\x15"
 "\x03"
 "\x02\x40" /* exponent1 - integer of 64 bytes */
 "\x54\x49\x4C\xA6\x3E\xBA\x03\x37\xE4\xE2\x40\x23\xFC\xD6\x9A\x5A"
 "\xEB\x07\xDD\xDC\x01\x83\xA4\xD0\xAC\x9B\x54\xB0\x51\xF2\xB1\x3E"
 "\xD9\x49\x09\x75\xEA\xB7\x74\x14\xFF\x59\xC1\xF7\x69\x2E\x9A\x2E"
 "\x20\x2B\x38\xFC\x91\x0A\x47\x41\x74\xAD\xC9\x3C\x1F\x67\xC9\x81"
 "\x02\x40" /* exponent2 - integer of 64 bytes */
 "\x47\x1E\x02\x90\xFF\x0A\xF0\x75\x03\x51\xB7\xF8\x78\x86\x4C\xA9"
 "\x61\xAD\xBD\x3A\x8A\x7E\x99\x1C\x5C\x05\x56\xA9\x4C\x31\x46\xA7"
 "\xF9\x80\x3F\x8F\x6F\x8A\xE3\x42\xE9\x31\xFD\x8A\xE4\x7A\x22\x0D"
 "\x1B\x99\xA4\x95\x84\x98\x07\xFE\x39\xF9\x24\x5A\x98\x36\xDA\x3D"
 "\x02\x41" /* coefficient - integer of 65 bytes */
 "\x00\xB0\x6C\x4F\xDA\xBB\x63\x01\x19\x8D\x26\x5B\xDB\xAE\x94\x23"
 "\xB3\x80\xF2\x71\xF7\x34\x53\x88\x50\x93\x07\x7F\xCD\x39\xE2\x11"
 "\x9F\xC9\x86\x32\x15\x4F\x58\x83\xB1\x67\xA9\x67\xBF\x40\x2B\x4E"
 "\x9E\x2E\x0F\x96\x56\xE6\x98\xEA\x36\x66\xED\xFB\x25\x79\x80\x39"
 "\xF7",
 .key_len = 607,
 .m = "\x54\x85\x9b\x34\x2c\x49\xea\x2a",
 .c =
 "\x74\x1b\x55\xac\x47\xb5\x08\x0a\x6e\x2b\x2d\xf7\x94\xb8\x8a\x95"
 "\xed\xa3\x6b\xc9\x29\xee\xb2\x2c\x80\xc3\x39\x3b\x8c\x62\x45\x72"
 "\xc2\x7f\x74\x81\x91\x68\x44\x48\x5a\xdc\xa0\x7e\xa7\x0b\x05\x7f"
 "\x0e\xa0\x6c\xe5\x8f\x19\x4d\xce\x98\x47\x5f\xbd\x5f\xfe\xe5\x34"
 "\x59\x89\xaf\xf0\xba\x44\xd7\xf1\x1a\x50\x72\xef\x5e\x4a\xb6\xb7"
 "\x54\x34\xd1\xc4\x83\x09\xdf\x0f\x91\x5f\x7d\x91\x70\x2f\xd4\x13"
 "\xcc\x5e\xa4\x6c\xc3\x4d\x28\xef\xda\xaf\xec\x14\x92\xfc\xa3\x75"
 "\x13\xb4\xc1\xa1\x11\xfc\x40\x2f\x4c\x9d\xdf\x16\x76\x11\x20\x6b",
 .m_size = 8,
 .c_size = 128,
 }, {
#endif
 .key =
 "\x30\x82\x04\xA3" /* sequence of 1187 bytes */
 "\x02\x01\x00" /* version - integer of 1 byte */
 "\x02\x82\x01\x01\x00" /* modulus - integer of 256 bytes */
 "\xDB\x10\x1A\xC2\xA3\xF1\xDC\xFF\x13\x6B\xED\x44\xDF\xF0\x02\x6D"
 "\x13\xC7\x88\xDA\x70\x6B\x54\xF1\xE8\x27\xDC\xC3\x0F\x99\x6A\xFA"
 "\xC6\x67\xFF\x1D\x1E\x3C\x1D\xC1\xB5\x5F\x6C\xC0\xB2\x07\x3A\x6D"
 "\x41\xE4\x25\x99\xAC\xFC\xD2\x0F\x02\xD3\xD1\x54\x06\x1A\x51\x77"
 "\xBD\xB6\xBF\xEA\xA7\x5C\x06\xA9\x5D\x69\x84\x45\xD7\xF5\x05\xBA"
 "\x47\xF0\x1B\xD7\x2B\x24\xEC\xCB\x9B\x1B\x10\x8D\x81\xA0\xBE\xB1"
 "\x8C\x33\xE4\x36\xB8\x43\xEB\x19\x2A\x81\x8D\xDE\x81\x0A\x99\x48"
 "\xB6\xF6\xBC\xCD\x49\x34\x3A\x8F\x26\x94\xE3\x28\x82\x1A\x7C\x8F"
 "\x59\x9F\x45\xE8\x5D\x1A\x45\x76\x04\x56\x05\xA1\xD0\x1B\x8C\x77"
 "\x6D\xAF\x53\xFA\x71\xE2\x67\xE0\x9A\xFE\x03\xA9\x85\xD2\xC9\xAA"
 "\xBA\x2A\xBC\xF4\xA0\x08\xF5\x13\x98\x13\x5D\xF0\xD9\x33\x34\x2A"
 "\x61\xC3\x89\x55\xF0\xAE\x1A\x9C\x22\xEE\x19\x05\x8D\x32\xFE\xEC"
 "\x9C\x84\xBA\xB7\xF9\x6C\x3A\x4F\x07\xFC\x45\xEB\x12\xE5\x7B\xFD"
 "\x55\xE6\x29\x69\xD1\xC2\xE8\xB9\x78\x59\xF6\x79\x10\xC6\x4E\xEB"
 "\x6A\x5E\xB9\x9A\xC7\xC4\x5B\x63\xDA\xA3\x3F\x5E\x92\x7A\x81\x5E"
 "\xD6\xB0\xE2\x62\x8F\x74\x26\xC2\x0C\xD3\x9A\x17\x47\xE6\x8E\xAB"
 "\x02\x03\x01\x00\x01" /* public key - integer of 3 bytes */
 "\x02\x82\x01\x00" /* private key - integer of 256 bytes */
 "\x52\x41\xF4\xDA\x7B\xB7\x59\x55\xCA\xD4\x2F\x0F\x3A\xCB\xA4\x0D"
 "\x93\x6C\xCC\x9D\xC1\xB2\xFB\xFD\xAE\x40\x31\xAC\x69\x52\x21\x92"
 "\xB3\x27\xDF\xEA\xEE\x2C\x82\xBB\xF7\x40\x32\xD5\x14\xC4\x94\x12"
 "\xEC\xB8\x1F\xCA\x59\xE3\xC1\x78\xF3\x85\xD8\x47\xA5\xD7\x02\x1A"
 "\x65\x79\x97\x0D\x24\xF4\xF0\x67\x6E\x75\x2D\xBF\x10\x3D\xA8\x7D"
 "\xEF\x7F\x60\xE4\xE6\x05\x82\x89\x5D\xDF\xC6\xD2\x6C\x07\x91\x33"
 "\x98\x42\xF0\x02\x00\x25\x38\xC5\x85\x69\x8A\x7D\x2F\x95\x6C\x43"
 "\x9A\xB8\x81\xE2\xD0\x07\x35\xAA\x05\x41\xC9\x1E\xAF\xE4\x04\x3B"
 "\x19\xB8\x73\xA2\xAC\x4B\x1E\x66\x48\xD8\x72\x1F\xAC\xF6\xCB\xBC"
 "\x90\x09\xCA\xEC\x0C\xDC\xF9\x2C\xD7\xEB\xAE\xA3\xA4\x47\xD7\x33"
 "\x2F\x8A\xCA\xBC\x5E\xF0\x77\xE4\x97\x98\x97\xC7\x10\x91\x7D\x2A"
 "\xA6\xFF\x46\x83\x97\xDE\xE9\xE2\x17\x03\x06\x14\xE2\xD7\xB1\x1D"
 "\x77\xAF\x51\x27\x5B\x5E\x69\xB8\x81\xE6\x11\xC5\x43\x23\x81\x04"
 "\x62\xFF\xE9\x46\xB8\xD8\x44\xDB\xA5\xCC\x31\x54\x34\xCE\x3E\x82"
 "\xD6\xBF\x7A\x0B\x64\x21\x6D\x88\x7E\x5B\x45\x12\x1E\x63\x8D\x49"
 "\xA7\x1D\xD9\x1E\x06\xCD\xE8\xBA\x2C\x8C\x69\x32\xEA\xBE\x60\x71"
 "\x02\x81\x81" /* prime1 - integer of 129 bytes */
 "\x00\xFA\xAC\xE1\x37\x5E\x32\x11\x34\xC6\x72\x58\x2D\x91\x06\x3E"
 "\x77\xE7\x11\x21\xCD\x4A\xF8\xA4\x3F\x0F\xEF\x31\xE3\xF3\x55\xA0"
 "\xB9\xAC\xB6\xCB\xBB\x41\xD0\x32\x81\x9A\x8F\x7A\x99\x30\x77\x6C"
 "\x68\x27\xE2\x96\xB5\x72\xC9\xC3\xD4\x42\xAA\xAA\xCA\x95\x8F\xFF"
 "\xC9\x9B\x52\x34\x30\x1D\xCF\xFE\xCF\x3C\x56\x68\x6E\xEF\xE7\x6C"
 "\xD7\xFB\x99\xF5\x4A\xA5\x21\x1F\x2B\xEA\x93\xE8\x98\x26\xC4\x6E"
 "\x42\x21\x5E\xA0\xA1\x2A\x58\x35\xBB\x10\xE7\xBA\x27\x0A\x3B\xB3"
 "\xAF\xE2\x75\x36\x04\xAC\x56\xA0\xAB\x52\xDE\xCE\xDD\x2C\x28\x77"
 "\x03"
 "\x02\x81\x81" /* prime2 - integer of 129 bytes */
 "\x00\xDF\xB7\x52\xB6\xD7\xC0\xE2\x96\xE7\xC9\xFE\x5D\x71\x5A\xC4"
 "\x40\x96\x2F\xE5\x87\xEA\xF3\xA5\x77\x11\x67\x3C\x8D\x56\x08\xA7"
 "\xB5\x67\xFA\x37\xA8\xB8\xCF\x61\xE8\x63\xD8\x38\x06\x21\x2B\x92"
 "\x09\xA6\x39\x3A\xEA\xA8\xB4\x45\x4B\x36\x10\x4C\xE4\x00\x66\x71"
 "\x65\xF8\x0B\x94\x59\x4F\x8C\xFD\xD5\x34\xA2\xE7\x62\x84\x0A\xA7"
 "\xBB\xDB\xD9\x8A\xCD\x05\xE1\xCC\x57\x7B\xF1\xF1\x1F\x11\x9D\xBA"
 "\x3E\x45\x18\x99\x1B\x41\x64\x43\xEE\x97\x5D\x77\x13\x5B\x74\x69"
 "\x73\x87\x95\x05\x07\xBE\x45\x07\x17\x7E\x4A\x69\x22\xF3\xDB\x05"
 "\x39"
 "\x02\x81\x80" /* exponent1 - integer of 128 bytes */
 "\x5E\xD8\xDC\xDA\x53\x44\xC4\x67\xE0\x92\x51\x34\xE4\x83\xA5\x4D"
 "\x3E\xDB\xA7\x9B\x82\xBB\x73\x81\xFC\xE8\x77\x4B\x15\xBE\x17\x73"
 "\x49\x9B\x5C\x98\xBC\xBD\x26\xEF\x0C\xE9\x2E\xED\x19\x7E\x86\x41"
 "\x1E\x9E\x48\x81\xDD\x2D\xE4\x6F\xC2\xCD\xCA\x93\x9E\x65\x7E\xD5"
 "\xEC\x73\xFD\x15\x1B\xA2\xA0\x7A\x0F\x0D\x6E\xB4\x53\x07\x90\x92"
 "\x64\x3B\x8B\xA9\x33\xB3\xC5\x94\x9B\x4C\x5D\x9C\x7C\x46\xA4\xA5"
 "\x56\xF4\xF3\xF8\x27\x0A\x7B\x42\x0D\x92\x70\x47\xE7\x42\x51\xA9"
 "\xC2\x18\xB1\x58\xB1\x50\x91\xB8\x61\x41\xB6\xA9\xCE\xD4\x7C\xBB"
 "\x02\x81\x80" /* exponent2 - integer of 128 bytes */
 "\x54\x09\x1F\x0F\x03\xD8\xB6\xC5\x0C\xE8\xB9\x9E\x0C\x38\x96\x43"
 "\xD4\xA6\xC5\x47\xDB\x20\x0E\xE5\xBD\x29\xD4\x7B\x1A\xF8\x41\x57"
 "\x49\x69\x9A\x82\xCC\x79\x4A\x43\xEB\x4D\x8B\x2D\xF2\x43\xD5\xA5"
 "\xBE\x44\xFD\x36\xAC\x8C\x9B\x02\xF7\x9A\x03\xE8\x19\xA6\x61\xAE"
 "\x76\x10\x93\x77\x41\x04\xAB\x4C\xED\x6A\xCC\x14\x1B\x99\x8D\x0C"
 "\x6A\x37\x3B\x86\x6C\x51\x37\x5B\x1D\x79\xF2\xA3\x43\x10\xC6\xA7"
 "\x21\x79\x6D\xF9\xE9\x04\x6A\xE8\x32\xFF\xAE\xFD\x1C\x7B\x8C\x29"
 "\x13\xA3\x0C\xB2\xAD\xEC\x6C\x0F\x8D\x27\x12\x7B\x48\xB2\xDB\x31"
 "\x02\x81\x81" /* coefficient - integer of 129 bytes */
 "\x00\x8D\x1B\x05\xCA\x24\x1F\x0C\x53\x19\x52\x74\x63\x21\xFA\x78"
 "\x46\x79\xAF\x5C\xDE\x30\xA4\x6C\x20\x38\xE6\x97\x39\xB8\x7A\x70"
 "\x0D\x8B\x6C\x6D\x13\x74\xD5\x1C\xDE\xA9\xF4\x60\x37\xFE\x68\x77"
 "\x5E\x0B\x4E\x5E\x03\x31\x30\xDF\xD6\xAE\x85\xD0\x81\xBB\x61\xC7"
 "\xB1\x04\x5A\xC4\x6D\x56\x1C\xD9\x64\xE7\x85\x7F\x88\x91\xC9\x60"
 "\x28\x05\xE2\xC6\x24\x8F\xDD\x61\x64\xD8\x09\xDE\x7E\xD3\x4A\x61"
 "\x1A\xD3\x73\x58\x4B\xD8\xA0\x54\x25\x48\x83\x6F\x82\x6C\xAF\x36"
 "\x51\x2A\x5D\x14\x2F\x41\x25\x00\xDD\xF8\xF3\x95\xFE\x31\x25\x50"
 "\x12",
 .key_len = 1191,
 .m = "\x54\x85\x9b\x34\x2c\x49\xea\x2a",
 .c =
 "\xb2\x97\x76\xb4\xae\x3e\x38\x3c\x7e\x64\x1f\xcc\xa2\x7f\xf6\xbe"
 "\xcf\x49\xbc\x48\xd3\x6c\x8f\x0a\x0e\xc1\x73\xbd\x7b\x55\x79\x36"
 "\x0e\xa1\x87\x88\xb9\x2c\x90\xa6\x53\x5e\xe9\xef\xc4\xe2\x4d\xdd"
 "\xf7\xa6\x69\x82\x3f\x56\xa4\x7b\xfb\x62\xe0\xae\xb8\xd3\x04\xb3"
 "\xac\x5a\x15\x2a\xe3\x19\x9b\x03\x9a\x0b\x41\xda\x64\xec\x0a\x69"
 "\xfc\xf2\x10\x92\xf3\xc1\xbf\x84\x7f\xfd\x2c\xae\xc8\xb5\xf6\x41"
 "\x70\xc5\x47\x03\x8a\xf8\xff\x6f\x3f\xd2\x6f\x09\xb4\x22\xf3\x30"
 "\xbe\xa9\x85\xcb\x9c\x8d\xf9\x8f\xeb\x32\x91\xa2\x25\x84\x8f\xf5"
 "\xdc\xc7\x06\x9c\x2d\xe5\x11\x2c\x09\x09\x87\x09\xa9\xf6\x33\x73"
 "\x90\xf1\x60\xf2\x65\xdd\x30\xa5\x66\xce\x62\x7b\xd0\xf8\x2d\x3d"
 "\x19\x82\x77\xe3\x0a\x5f\x75\x2f\x8e\xb1\xe5\xe8\x91\x35\x1b\x3b"
 "\x33\xb7\x66\x92\xd1\xf2\x8e\x6f\xe5\x75\x0c\xad\x36\xfb\x4e\xd0"
 "\x66\x61\xbd\x49\xfe\xf4\x1a\xa2\x2b\x49\xfe\x03\x4c\x74\x47\x8d"
 "\x9a\x66\xb2\x49\x46\x4d\x77\xea\x33\x4d\x6b\x3c\xb4\x49\x4a\xc6"
 "\x7d\x3d\xb5\xb9\x56\x41\x15\x67\x0f\x94\x3c\x93\x65\x27\xe0\x21"
 "\x5d\x59\xc3\x62\xd5\xa6\xda\x38\x26\x22\x5e\x34\x1c\x94\xaf\x98",
 .m_size = 8,
 .c_size = 256,
 }, {
 .key =
 "\x30\x82\x01\x09" /* sequence of 265 bytes */
 "\x02\x82\x01\x00" /* modulus - integer of 256 bytes */
 "\xDB\x10\x1A\xC2\xA3\xF1\xDC\xFF\x13\x6B\xED\x44\xDF\xF0\x02\x6D"
 "\x13\xC7\x88\xDA\x70\x6B\x54\xF1\xE8\x27\xDC\xC3\x0F\x99\x6A\xFA"
 "\xC6\x67\xFF\x1D\x1E\x3C\x1D\xC1\xB5\x5F\x6C\xC0\xB2\x07\x3A\x6D"
 "\x41\xE4\x25\x99\xAC\xFC\xD2\x0F\x02\xD3\xD1\x54\x06\x1A\x51\x77"
 "\xBD\xB6\xBF\xEA\xA7\x5C\x06\xA9\x5D\x69\x84\x45\xD7\xF5\x05\xBA"
 "\x47\xF0\x1B\xD7\x2B\x24\xEC\xCB\x9B\x1B\x10\x8D\x81\xA0\xBE\xB1"
 "\x8C\x33\xE4\x36\xB8\x43\xEB\x19\x2A\x81\x8D\xDE\x81\x0A\x99\x48"
 "\xB6\xF6\xBC\xCD\x49\x34\x3A\x8F\x26\x94\xE3\x28\x82\x1A\x7C\x8F"
 "\x59\x9F\x45\xE8\x5D\x1A\x45\x76\x04\x56\x05\xA1\xD0\x1B\x8C\x77"
 "\x6D\xAF\x53\xFA\x71\xE2\x67\xE0\x9A\xFE\x03\xA9\x85\xD2\xC9\xAA"
 "\xBA\x2A\xBC\xF4\xA0\x08\xF5\x13\x98\x13\x5D\xF0\xD9\x33\x34\x2A"
 "\x61\xC3\x89\x55\xF0\xAE\x1A\x9C\x22\xEE\x19\x05\x8D\x32\xFE\xEC"
 "\x9C\x84\xBA\xB7\xF9\x6C\x3A\x4F\x07\xFC\x45\xEB\x12\xE5\x7B\xFD"
 "\x55\xE6\x29\x69\xD1\xC2\xE8\xB9\x78\x59\xF6\x79\x10\xC6\x4E\xEB"
 "\x6A\x5E\xB9\x9A\xC7\xC4\x5B\x63\xDA\xA3\x3F\x5E\x92\x7A\x81\x5E"
 "\xD6\xB0\xE2\x62\x8F\x74\x26\xC2\x0C\xD3\x9A\x17\x47\xE6\x8E\xAB"
 "\x02\x03\x01\x00\x01"/* public key - integer of 3 bytes */
 .key_len = 269,
 .m = "\x54\x85\x9b\x34\x2c\x49\xea\x2a",
 .c =
 "\xb2\x97\x76\xb4\xae\x3e\x38\x3c\x7e\x64\x1f\xcc\xa2\x7f\xf6\xbe"
 "\xcf\x49\xbc\x48\xd3\x6c\x8f\x0a\x0e\xc1\x73\xbd\x7b\x55\x79\x36"
 "\x0e\xa1\x87\x88\xb9\x2c\x90\xa6\x53\x5e\xe9\xef\xc4\xe2\x4d\xdd"
 "\xf7\xa6\x69\x82\x3f\x56\xa4\x7b\xfb\x62\xe0\xae\xb8\xd3\x04\xb3"
 "\xac\x5a\x15\x2a\xe3\x19\x9b\x03\x9a\x0b\x41\xda\x64\xec\x0a\x69"
 "\xfc\xf2\x10\x92\xf3\xc1\xbf\x84\x7f\xfd\x2c\xae\xc8\xb5\xf6\x41"
 "\x70\xc5\x47\x03\x8a\xf8\xff\x6f\x3f\xd2\x6f\x09\xb4\x22\xf3\x30"
 "\xbe\xa9\x85\xcb\x9c\x8d\xf9\x8f\xeb\x32\x91\xa2\x25\x84\x8f\xf5"
 "\xdc\xc7\x06\x9c\x2d\xe5\x11\x2c\x09\x09\x87\x09\xa9\xf6\x33\x73"
 "\x90\xf1\x60\xf2\x65\xdd\x30\xa5\x66\xce\x62\x7b\xd0\xf8\x2d\x3d"
 "\x19\x82\x77\xe3\x0a\x5f\x75\x2f\x8e\xb1\xe5\xe8\x91\x35\x1b\x3b"
 "\x33\xb7\x66\x92\xd1\xf2\x8e\x6f\xe5\x75\x0c\xad\x36\xfb\x4e\xd0"
 "\x66\x61\xbd\x49\xfe\xf4\x1a\xa2\x2b\x49\xfe\x03\x4c\x74\x47\x8d"
 "\x9a\x66\xb2\x49\x46\x4d\x77\xea\x33\x4d\x6b\x3c\xb4\x49\x4a\xc6"
 "\x7d\x3d\xb5\xb9\x56\x41\x15\x67\x0f\x94\x3c\x93\x65\x27\xe0\x21"
 "\x5d\x59\xc3\x62\xd5\xa6\xda\x38\x26\x22\x5e\x34\x1c\x94\xaf\x98",
 .m_size = 8,
 .c_size = 256,
 .public_key_vec = true,
#ifndef CONFIG_CRYPTO_FIPS
 }, {
 .key =
 "\x30\x82\x09\x29" /* sequence of 2345 bytes */
 "\x02\x01\x00" /* version integer of 1 byte */
 "\x02\x82\x02\x01" /* modulus - integer of 513 bytes */
 "\x00\xC3\x8B\x55\x7B\x73\x4D\xFF\xE9\x9B\xC6\xDC\x67\x3C\xB4\x8E"
 "\xA0\x86\xED\xF2\xB9\x50\x5C\x54\x5C\xBA\xE4\xA1\xB2\xA7\xAE\x2F"
 "\x1B\x7D\xF1\xFB\xAC\x79\xC5\xDF\x1A\x00\xC9\xB2\xC1\x61\x25\x33"
 "\xE6\x9C\xE9\xCF\xD6\x27\xC4\x4E\x44\x30\x44\x5E\x08\xA1\x87\x52"
 "\xCC\x6B\x97\x70\x8C\xBC\xA5\x06\x31\x0C\xD4\x2F\xD5\x7D\x26\x24"
 "\xA2\xE2\xAC\x78\xF4\x53\x14\xCE\xF7\x19\x2E\xD7\xF7\xE6\x0C\xB9"
 "\x56\x7F\x0B\xF1\xB1\xE2\x43\x70\xBD\x86\x1D\xA1\xCC\x2B\x19\x08"
 "\x76\xEF\x91\xAC\xBF\x20\x24\x0D\x38\xC0\x89\xB8\x9A\x70\xB3\x64"
 "\xD9\x8F\x80\x41\x10\x5B\x9F\xB1\xCB\x76\x43\x00\x21\x25\x36\xD4"
 "\x19\xFC\x55\x95\x10\xE4\x26\x74\x98\x2C\xD9\xBD\x0B\x2B\x04\xC2"
 "\xAC\x82\x38\xB4\xDD\x4C\x04\x7E\x51\x36\x40\x1E\x0B\xC4\x7C\x25"
 "\xDD\x4B\xB2\xE7\x20\x0A\x57\xF9\xB4\x94\xC3\x08\x33\x22\x6F\x8B"
 "\x48\xDB\x03\x68\x5A\x5B\xBA\xAE\xF3\xAD\xCF\xC3\x6D\xBA\xF1\x28"
 "\x67\x7E\x6C\x79\x07\xDE\xFC\xED\xE7\x96\xE3\x6C\xE0\x2C\x87\xF8"
 "\x02\x01\x28\x38\x43\x21\x53\x84\x69\x75\x78\x15\x7E\xEE\xD2\x1B"
 "\xB9\x23\x40\xA8\x86\x1E\x38\x83\xB2\x73\x1D\x53\xFB\x9E\x2A\x8A"
 "\xB2\x75\x35\x01\xC3\xC3\xC4\x94\xE8\x84\x86\x64\x81\xF4\x42\xAA"
 "\x3C\x0E\xD6\x4F\xBC\x0A\x09\x2D\xE7\x1B\xD4\x10\xA8\x54\xEA\x89"
 "\x84\x8A\xCB\xF7\x5A\x3C\xCA\x76\x08\x29\x62\xB4\x6A\x22\xDF\x14"
 "\x95\x71\xFD\xB6\x86\x39\xB8\x8B\xF8\x91\x7F\x38\xAA\x14\xCD\xE5"
 "\xF5\x1D\xC2\x6D\x53\x69\x52\x84\x7F\xA3\x1A\x5E\x26\x04\x83\x06"
 "\x73\x52\x56\xCF\x76\x26\xC9\xDD\x75\xD7\xFC\xF4\x69\xD8\x7B\x55"
 "\xB7\x68\x13\x53\xB9\xE7\x89\xC3\xE8\xD6\x6E\xA7\x6D\xEA\x81\xFD"
 "\xC4\xB7\x05\x5A\xB7\x41\x0A\x23\x8E\x03\x8A\x1C\xAE\xD3\x1E\xCE"
 "\xE3\x5E\xFC\x19\x4A\xEE\x61\x9B\x8E\xE5\xE5\xDD\x85\xF9\x41\xEC"
 "\x14\x53\x92\xF7\xDD\x06\x85\x02\x91\xE3\xEB\x6C\x43\x03\xB1\x36"
 "\x7B\x89\x5A\xA8\xEB\xFC\xD5\xA8\x35\xDC\x81\xD9\x5C\xBD\xCA\xDC"
 "\x9B\x98\x0B\x06\x5D\x0C\x5B\xEE\xF3\xD5\xCC\x57\xC9\x71\x2F\x90"
 "\x3B\x3C\xF0\x8E\x4E\x35\x48\xAE\x63\x74\xA9\xFC\x72\x75\x8E\x34"
 "\xA8\xF2\x1F\xEA\xDF\x3A\x37\x2D\xE5\x39\x39\xF8\x57\x58\x3C\x04"
 "\xFE\x87\x06\x98\xBC\x7B\xD3\x21\x36\x60\x25\x54\xA7\x3D\xFA\x91"
 "\xCC\xA8\x0B\x92\x8E\xB4\xF7\x06\xFF\x1E\x95\xCB\x07\x76\x97\x3B"
 "\x9D"
 "\x02\x03\x01\x00\x01" /* public key integer of 3 bytes */
 "\x02\x82\x02\x00" /* private key integer of 512 bytes */
 "\x74\xA9\xE0\x6A\x32\xB4\xCA\x85\xD9\x86\x9F\x60\x88\x7B\x40\xCC"
 "\xCD\x33\x91\xA8\xB6\x25\x1F\xBF\xE3\x51\x1C\x97\xB6\x2A\xD9\xB8"
 "\x11\x40\x19\xE3\x21\x13\xC8\xB3\x7E\xDC\xD7\x65\x40\x4C\x2D\xD6"
 "\xDC\xAF\x32\x6C\x96\x75\x2C\x2C\xCA\x8F\x3F\x7A\xEE\xC4\x09\xC6"
 "\x24\x3A\xC9\xCF\x6D\x8D\x17\x50\x94\x52\xD3\xE7\x0F\x2F\x7E\x94"
 "\x1F\xA0\xBE\xD9\x25\xE8\x38\x42\x7C\x27\xD2\x79\xF8\x2A\x87\x38"
 "\xEF\xBB\x74\x8B\xA8\x6E\x8C\x08\xC6\xC7\x4F\x0C\xBC\x79\xC6\xEF"
 "\x0E\xA7\x5E\xE4\xF8\x8C\x09\xC7\x5E\x37\xCC\x87\x77\xCD\xCF\xD1"
 "\x6D\x28\x1B\xA9\x62\xC0\xB8\x16\xA7\x8B\xF9\xBB\xCC\xB4\x15\x7F"
 "\x1B\x69\x03\xF2\x7B\xEB\xE5\x8C\x14\xD6\x23\x4F\x52\x6F\x18\xA6"
 "\x4B\x5B\x01\xAD\x35\xF9\x48\x53\xB3\x86\x35\x66\xD7\xE7\x29\xC0"
 "\x09\xB5\xC6\xE6\xFA\xC4\xDA\x19\xBE\xD7\x4D\x41\x14\xBE\x6F\xDF"
 "\x1B\xAB\xC0\xCA\x88\x07\xAC\xF1\x7D\x35\x83\x67\x28\x2D\x50\xE9"
 "\xCE\x27\x71\x5E\x1C\xCF\xD2\x30\x65\x79\x72\x2F\x9C\xE1\xD2\x39"
 "\x7F\xEF\x3B\x01\xF2\x14\x1D\xDF\xBD\x51\xD3\xA1\x53\x62\xCF\x5F"
 "\x79\x84\xCE\x06\x96\x69\x29\x49\x82\x1C\x71\x4A\xA1\x66\xC8\x2F"
 "\xFD\x7B\x96\x7B\xFC\xC4\x26\x58\xC4\xFC\x7C\xAF\xB5\xE8\x95\x83"
 "\x87\xCB\x46\xDE\x97\xA7\xB3\xA2\x54\x5B\xD7\xAF\xAB\xEB\xC8\xF3"
 "\x55\x9D\x48\x2B\x30\x9C\xDC\x26\x4B\xC2\x89\x45\x13\xB2\x01\x9A"
 "\xA4\x65\xC3\xEC\x24\x2D\x26\x97\xEB\x80\x8A\x9D\x03\xBC\x59\x66"
 "\x9E\xE2\xBB\xBB\x63\x19\x64\x93\x11\x7B\x25\x65\x30\xCD\x5B\x4B"
 "\x2C\xFF\xDC\x2D\x30\x87\x1F\x3C\x88\x07\xD0\xFC\x48\xCC\x05\x8A"
 "\xA2\xC8\x39\x3E\xD5\x51\xBC\x0A\xBE\x6D\xA8\xA0\xF6\x88\x06\x79"
 "\x13\xFF\x1B\x45\xDA\x54\xC9\x24\x25\x8A\x75\x0A\x26\xD1\x69\x81"
 "\x14\x14\xD1\x79\x7D\x8E\x76\xF2\xE0\xEB\xDD\x0F\xDE\xC2\xEC\x80"
 "\xD7\xDC\x16\x99\x92\xBE\xCB\x40\x0C\xCE\x7C\x3B\x46\xA2\x5B\x5D"
 "\x0C\x45\xEB\xE1\x00\xDE\x72\x50\xB1\xA6\x0B\x76\xC5\x8D\xFC\x82"
 "\x38\x6D\x99\x14\x1D\x1A\x4A\xD3\x7C\x53\xB8\x12\x46\xA2\x30\x38"
 "\x82\xF4\x96\x6E\x8C\xCE\x47\x0D\xAF\x0A\x3B\x45\xB7\x43\x95\x43"
 "\x9E\x02\x2C\x44\x07\x6D\x1F\x3C\x66\x89\x09\xB6\x1F\x06\x30\xCC"
 "\xAD\xCE\x7D\x9A\xDE\x3E\xFB\x6C\xE4\x58\x43\xD2\x4F\xA5\x9E\x5E"
 "\xA7\x7B\xAE\x3A\xF6\x7E\xD9\xDB\xD3\xF5\xC5\x41\xAF\xE6\x9C\x91"
 "\x02\x82\x01\x01" /* prime1 - integer of 257 bytes */
 "\x00\xE0\xA6\x6C\xF0\xA2\xF8\x81\x85\x36\x43\xD0\x13\x0B\x33\x8B"
 "\x8F\x78\x3D\xAC\xC7\x5E\x46\x6A\x7F\x05\xAE\x3E\x26\x0A\xA6\xD0"
 "\x51\xF3\xC8\x61\xF5\x77\x22\x48\x10\x87\x4C\xD5\xA4\xD5\xAE\x2D"
 "\x4E\x7A\xFE\x1C\x31\xE7\x6B\xFF\xA4\x69\x20\xF9\x2A\x0B\x99\xBE"
 "\x7C\x32\x68\xAD\xB0\xC6\x94\x81\x41\x75\xDC\x06\x78\x0A\xB4\xCF"
 "\xCD\x1B\x2D\x31\xE4\x7B\xEA\xA8\x35\x99\x75\x57\xC6\x0E\xF6\x78"
 "\x4F\xA0\x92\x4A\x00\x1B\xE7\x96\xF2\x5B\xFD\x2C\x0A\x0A\x13\x81"
 "\xAF\xCB\x59\x87\x31\xD9\x83\x65\xF2\x22\x48\xD0\x03\x67\x39\xF6"
 "\xFF\xA8\x36\x07\x3A\x68\xE3\x7B\xA9\x64\xFD\x9C\xF7\xB1\x3D\xBF"
 "\x26\x5C\xCC\x7A\xFC\xA2\x8F\x51\xD1\xE1\xE2\x3C\xEC\x06\x75\x7C"
 "\x34\xF9\xA9\x33\x70\x11\xAD\x5A\xDC\x5F\xCF\x50\xF6\x23\x2F\x39"
 "\xAC\x92\x48\x53\x4D\x01\x96\x3C\xD8\xDC\x1F\x23\x23\x78\x80\x34"
 "\x54\x14\x76\x8B\xB6\xBB\xFB\x88\x78\x31\x59\x28\xD2\xB1\x75\x17"
 "\x88\x04\x4A\x78\x62\x18\x2E\xF5\xFB\x9B\xEF\x15\xD8\x16\x47\xC6"
 "\x42\xB1\x02\xDA\x9E\xE3\x84\x90\xB4\x2D\xC3\xCE\x13\xC9\x12\x7D"
 "\x3E\xCD\x39\x39\xC9\xAD\xA1\x1A\xE6\xD5\xAD\x5A\x09\x4D\x1B\x0C"
 "\xAB"
 "\x02\x82\x01\x01" /* prime 2 - integer of 257 bytes */
 "\x00\xDE\xD5\x1B\xF6\xCD\x83\xB1\xC6\x47\x7E\xB9\xC0\x6B\xA9\xB8"
 "\x02\xF3\xAE\x40\x5D\xFC\xD3\xE5\x4E\xF1\xE3\x39\x04\x52\x84\x89"
 "\x40\x37\xBB\xC2\xCD\x7F\x71\x77\x17\xDF\x6A\x4C\x31\x24\x7F\xB9"
 "\x7E\x7F\xC8\x43\x4A\x3C\xEB\x8D\x1B\x7F\x21\x51\x67\x45\x8F\xA0"
 "\x36\x29\x3A\x18\x45\xA5\x32\xEC\x74\x88\x3C\x98\x5D\x67\x3B\xD7"
 "\x51\x1F\xE9\xAE\x09\x01\xDE\xDE\x7C\xFB\x60\xD1\xA5\x6C\xE9\x6A"
 "\x93\x04\x02\x3A\xBB\x67\x02\xB9\xFD\x23\xF0\x02\x2B\x49\x85\xC9"
 "\x5B\xE7\x4B\xDF\xA3\xF4\xEE\x59\x4C\x45\xEF\x8B\xC1\x6B\xDE\xDE"
 "\xBC\x1A\xFC\xD2\x76\x3F\x33\x74\xA9\x8E\xA3\x7E\x0C\xC6\xCE\x70"
 "\xA1\x5B\xA6\x77\xEA\x76\xEB\x18\xCE\xB9\xD7\x78\x8D\xAE\x06\xBB"
 "\xD3\x1F\x16\x0D\x05\xAB\x4F\xC6\x52\xC8\x6B\x36\x51\x7D\x1D\x27"
 "\xAF\x88\x9A\x6F\xCC\x25\x2E\x74\x06\x72\xCE\x9E\xDB\xE0\x9D\x30"
 "\xEF\x55\xA5\x58\x21\xA7\x42\x12\x2C\x2C\x23\x87\xC1\x0F\xE8\x51"
 "\xDA\x53\xDA\xFC\x05\x36\xDF\x08\x0E\x08\x36\xBE\x5C\x86\x9E\xCA"
 "\x68\x90\x33\x12\x0B\x14\x82\xAB\x90\x1A\xD4\x49\x32\x9C\xBD\xAA"
 "\xAB\x4E\x38\xF1\xEE\xED\x3D\x3F\xE8\xBD\x48\x56\xA6\x64\xEE\xC8"
 "\xD7"
 "\x02\x82\x01\x01" /* exponent 1 - integer of 257 bytes */
 "\x00\x96\x5E\x6F\x8F\x06\xD6\xE6\x03\x1F\x96\x76\x81\x38\xBF\x30"
 "\xCC\x40\x84\xAF\xD0\xE7\x06\xA5\x24\x0E\xCE\x59\xA5\x26\xFE\x0F"
 "\x74\xBB\x83\xC6\x26\x02\xAF\x3C\xA3\x6B\x9C\xFF\x68\x0C\xEB\x40"
 "\x42\x46\xCB\x2E\x5E\x2C\xF4\x3A\x32\x77\x77\xED\xAF\xBA\x02\x17"
 "\xE1\x93\xF0\x43\x4A\x8F\x31\x39\xEF\x72\x0F\x6B\x79\x10\x59\x84"
 "\xBA\x5A\x55\x7F\x0E\xDB\xEE\xEE\xD6\xA9\xB8\x44\x9F\x3A\xC6\xB9"
 "\x33\x3B\x5C\x90\x11\xD0\x9B\xCC\x8A\xBF\x0E\x10\x5B\x4B\xF1\x50"
 "\x9E\x35\xB3\xE0\x6D\x7A\x95\x9C\x38\x5D\xC0\x75\x13\xC2\x15\xA7"
 "\x81\xEA\xBA\xF7\x4D\x9E\x85\x9D\xF1\x7D\xBA\xD0\x45\x6F\x2A\xD0"
 "\x76\xC2\x28\xD0\xAD\xA7\xB5\xDC\xE3\x6A\x99\xFF\x83\x50\xB3\x75"
 "\x07\x14\x91\xAF\xEF\x74\xB5\x9F\x9A\xE0\xBA\xA9\x0B\x87\xF3\x85"
 "\x5C\x40\xB2\x0E\xA7\xFD\xC6\xED\x45\x8E\xD9\x7C\xB0\xB2\x68\xC6"
 "\x1D\xFD\x70\x78\x06\x41\x7F\x95\x12\x36\x9D\xE2\x58\x5D\x15\xEE"
 "\x41\x49\xF5\xFA\xEC\x56\x19\xA0\xE6\xE0\xB2\x40\xE1\xD9\xD0\x03"
 "\x22\x02\xCF\xD1\x3C\x07\x38\x65\x8F\x65\x0E\xAA\x32\xCE\x25\x05"
 "\x16\x73\x51\xB9\x9F\x88\x0B\xCD\x30\xF3\x97\xCC\x2B\x6B\xA4\x0E"
 "\x6F"
 "\x02\x82\x01\x00" /* exponent 2 - integer of 256 bytes */
 "\x2A\x5F\x3F\xB8\x08\x90\x58\x47\xA9\xE4\xB1\x11\xA3\xE7\x5B\xF4"
 "\x43\xBE\x08\xC3\x56\x86\x3C\x7E\x6C\x84\x96\x9C\xF9\xCB\xF6\x05"
 "\x5E\x13\xB8\x11\x37\x80\xAD\xF2\xBE\x2B\x0A\x5D\xF5\xE0\xCB\xB7"
 "\x00\x39\x66\x82\x41\x5F\x51\x2F\xBF\x56\xE8\x91\xC8\xAA\x6C\xFE"
 "\x9F\x8C\x4A\x7D\x43\xD2\x91\x1F\xFF\x9F\xF6\x21\x1C\xB6\x46\x55"
 "\x48\xCA\x38\xAB\xC1\xCD\x4D\x65\x5A\xAF\xA8\x6D\xDA\x6D\xF0\x34"
 "\x10\x79\x14\x0D\xFA\xA2\x8C\x17\x54\xB4\x18\xD5\x7E\x5F\x90\x50"
 "\x87\x84\xE7\xFB\xD7\x61\x53\x5D\xAB\x96\xC7\x6E\x7A\x42\xA0\xFC"
 "\x07\xED\xB7\x5F\x80\xD9\x19\xFF\xFB\xFD\x9E\xC4\x73\x31\x62\x3D"
 "\x6C\x9E\x15\x03\x62\xA5\x85\xCC\x19\x8E\x9D\x7F\xE3\x6D\xA8\x5D"
 "\x96\xF5\xAC\x78\x3D\x81\x27\xE7\x29\xF1\x29\x1D\x09\xBB\x77\x86"
 "\x6B\x65\x62\x88\xE1\x31\x1A\x22\xF7\xC5\xCE\x73\x65\x1C\xBE\xE7"
 "\x63\xD3\xD3\x14\x63\x27\xAF\x28\xF3\x23\xB6\x76\xC1\xBD\x9D\x82"
 "\xF4\x9B\x19\x7D\x2C\x57\xF0\xC2\x2A\x51\xAE\x95\x0D\x8C\x38\x54"
 "\xF5\xC6\xA0\x51\xB7\x0E\xB9\xEC\xE7\x0D\x22\xF6\x1A\xD3\xFE\x16"
 "\x21\x03\xB7\x0D\x85\xD3\x35\xC9\xDD\xE4\x59\x85\xBE\x7F\xA1\x75"
 "\x02\x82\x01\x01" /* coefficient - integer of 257 bytes */
 "\x00\xB9\x48\xD2\x54\x2F\x19\x54\x64\xAE\x62\x80\x61\x89\x80\xB4"
 "\x48\x0B\x8D\x7E\x1B\x0F\x50\x08\x82\x3F\xED\x75\x84\xB7\x13\xE4"
 "\xF8\x8D\xA8\xBB\x54\x21\x4C\x5A\x54\x07\x16\x4B\xB4\xA4\x9E\x30"
 "\xBF\x7A\x30\x1B\x39\x60\xA3\x21\x53\xFB\xB0\xDC\x0F\x7C\x2C\xFB"
 "\xAA\x95\x7D\x51\x39\x28\x33\x1F\x25\x31\x53\xF5\xD2\x64\x2B\xF2"
 "\x1E\xB3\xC0\x6A\x0B\xC9\xA4\x42\x64\x5C\xFB\x15\xA3\xE8\x4C\x3A"
 "\x9C\x3C\xBE\xA3\x39\x83\x23\xE3\x6D\x18\xCC\xC2\xDC\x63\x8D\xBA"
 "\x98\xE0\xE0\x31\x4A\x2B\x37\x9C\x4D\x6B\xF3\x9F\x51\xE4\x43\x5C"
 "\x83\x5F\xBF\x5C\xFE\x92\x45\x01\xAF\xF5\xC2\xF4\xB7\x56\x93\xA5"
 "\xF4\xAA\x67\x3C\x48\x37\xBD\x9A\x3C\xFE\xA5\x9A\xB0\xD1\x6B\x85"
 "\xDD\x81\xD4\xFA\xAD\x31\x83\xA8\x22\x9B\xFD\xB4\x61\xDC\x7A\x51"
 "\x59\x62\x10\x1B\x7E\x44\xA3\xFE\x90\x51\x5A\x3E\x02\x87\xAD\xFA"
 "\xDD\x0B\x1F\x3D\x35\xAF\xEE\x13\x85\x51\xA7\x42\xC0\xEE\x9E\x20"
 "\xE9\xD0\x29\xB2\xE4\x21\xE4\x6D\x62\xB9\xF4\x48\x4A\xD8\x46\x8E"
 "\x61\xA6\x2C\x5D\xDF\x8F\x97\x2B\x3A\x75\x1D\x83\x17\x6F\xC6\xB0"
 "\xDE\xFC\x14\x25\x06\x5A\x60\xBB\xB8\x21\x89\xD1\xEF\x57\xF1\x71"
 "\x3D",
 .m = "\x54\x85\x9b\x34\x2c\x49\xea\x2a",
 .c =
 "\x5c\xce\x9c\xd7\x9a\x9e\xa1\xfe\x7a\x82\x3c\x68\x27\x98\xe3\x5d"
 "\xd5\xd7\x07\x29\xf5\xfb\xc3\x1a\x7f\x63\x1e\x62\x31\x3b\x19\x87"
 "\x79\x4f\xec\x7b\xf3\xcb\xea\x9b\x95\x52\x3a\x40\xe5\x87\x7b\x72"
 "\xd1\x72\xc9\xfb\x54\x63\xd8\xc9\xd7\x2c\xfc\x7b\xc3\x14\x1e\xbc"
 "\x18\xb4\x34\xa1\xbf\x14\xb1\x37\x31\x6e\xf0\x1b\x35\x19\x54\x07"
 "\xf7\x99\xec\x3e\x63\xe2\xcd\x61\x28\x65\xc3\xcd\xb1\x38\x36\xa5"
 "\xb2\xd7\xb0\xdc\x1f\xf5\xef\x19\xc7\x53\x32\x2d\x1c\x26\xda\xe4"
 "\x0d\xd6\x90\x7e\x28\xd8\xdc\xe4\x61\x05\xd2\x25\x90\x01\xd3\x96"
 "\x6d\xa6\xcf\x58\x20\xbb\x03\xf4\x01\xbc\x79\xb9\x18\xd8\xb8\xba"
 "\xbd\x93\xfc\xf2\x62\x5d\x8c\x66\x1e\x0e\x84\x59\x93\xdd\xe2\x93"
 "\xa2\x62\x7d\x08\x82\x7a\xdd\xfc\xb8\xbc\xc5\x4f\x9c\x4e\xbf\xb4"
 "\xfc\xf4\xc5\x01\xe8\x00\x70\x4d\x28\x26\xcc\x2e\xfe\x0e\x58\x41"
 "\x8b\xec\xaf\x7c\x4b\x54\xd0\xa0\x64\xf9\x32\xf4\x2e\x47\x65\x0a"
 "\x67\x88\x39\x3a\xdb\xb2\xdb\x7b\xb5\xf6\x17\xa8\xd9\xc6\x5e\x28"
 "\x13\x82\x8a\x99\xdb\x60\x08\xa5\x23\x37\xfa\x88\x90\x31\xc8\x9d"
 "\x8f\xec\xfb\x85\x9f\xb1\xce\xa6\x24\x50\x46\x44\x47\xcb\x65\xd1"
 "\xdf\xc0\xb1\x6c\x90\x1f\x99\x8e\x4d\xd5\x9e\x31\x07\x66\x87\xdf"
 "\x01\xaa\x56\x3c\x71\xe0\x2b\x6f\x67\x3b\x23\xed\xc2\xbd\x03\x30"
 "\x79\x76\x02\x10\x10\x98\x85\x8a\xff\xfd\x0b\xda\xa5\xd9\x32\x48"
 "\x02\xa0\x0b\xb9\x2a\x8a\x18\xca\xc6\x8f\x3f\xbb\x16\xb2\xaa\x98"
 "\x27\xe3\x60\x43\xed\x15\x70\xd4\x57\x15\xfe\x19\xd4\x9b\x13\x78"
 "\x8a\xf7\x21\xf1\xa2\xa2\x2d\xb3\x09\xcf\x44\x91\x6e\x08\x3a\x30"
 "\x81\x3e\x90\x93\x8a\x67\x33\x00\x59\x54\x9a\x25\xd3\x49\x8e\x9f"
 "\xc1\x4b\xe5\x86\xf3\x50\x4c\xbc\xc5\xd3\xf5\x3a\x54\xe1\x36\x3f"
 "\xe2\x5a\xb4\x37\xc0\xeb\x70\x35\xec\xf6\xb7\xe8\x44\x3b\x7b\xf3"
 "\xf1\xf2\x1e\xdb\x60\x7d\xd5\xbe\xf0\x71\x34\x90\x4c\xcb\xd4\x35"
 "\x51\xc7\xdd\xd8\xc9\x81\xf5\x5d\x57\x46\x2c\xb1\x7b\x9b\xaa\xcb"
 "\xd1\x22\x25\x49\x44\xa3\xd4\x6b\x29\x7b\xd8\xb2\x07\x93\xbf\x3d"
 "\x52\x49\x84\x79\xef\xb8\xe5\xc4\xad\xca\xa8\xc6\xf6\xa6\x76\x70"
 "\x5b\x0b\xe5\x83\xc6\x0e\xef\x55\xf2\xe7\xff\x04\xea\xe6\x13\xbe"
 "\x40\xe1\x40\x45\x48\x66\x75\x31\xae\x35\x64\x91\x11\x6f\xda\xee"
 "\x26\x86\x45\x6f\x0b\xd5\x9f\x03\xb1\x65\x5b\xdb\xa4\xe4\xf9\x45",
 .key_len = 2349,
 .m_size = 8,
 .c_size = 512,
#endif
 }
};

#ifdef CONFIG_CPU_BIG_ENDIAN
#define be64_to_cpua(b1, b2, b3, b4, b5, b6, b7, b8)   \
 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8
#else
#define be64_to_cpua(b1, b2, b3, b4, b5, b6, b7, b8)   \
 0x##b8, 0x##b7, 0x##b6, 0x##b5, 0x##b4, 0x##b3, 0x##b2, 0x##b1
#endif

/*
 * ECDSA test vectors.
 */

static const struct sig_testvec ecdsa_nist_p192_tv_template[] = {
 {
 .key = /* secp192r1(sha1) */
 "\x04\xf7\x46\xf8\x2f\x15\xf6\x22\x8e\xd7\x57\x4f\xcc\xe7\xbb\xc1"
 "\xd4\x09\x73\xcf\xea\xd0\x15\x07\x3d\xa5\x8a\x8a\x95\x43\xe4\x68"
 "\xea\xc6\x25\xc1\xc1\x01\x25\x4c\x7e\xc3\x3c\xa6\x04\x0a\xe7\x08"
 "\x98",
 .key_len = 49,
 .m =
 "\xcd\xb9\xd2\x1c\xb7\x6f\xcd\x44\xb3\xfd\x63\xea\xa3\x66\x7f\xae"
 "\x63\x85\xe7\x82",
 .m_size = 20,
 .c = (const unsigned char[]){
 be64_to_cpua(ad, 59, ad, 88, 27, d6, 92, 6b),
 be64_to_cpua(a0, 27, 91, c6, f6, 7f, c3, 09),
 be64_to_cpua(ba, e5, 93, 83, 6e, b6, 3b, 63),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(86, 80, 6f, a5, 79, 77, da, d0),
 be64_to_cpua(ef, 95, 52, 7b, a0, 0f, e4, 18),
 be64_to_cpua(10, 68, 01, 9d, ba, ce, 83, 08),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 }, {
 .key = /* secp192r1(sha224) */
 "\x04\xb6\x4b\xb1\xd1\xac\xba\x24\x8f\x65\xb2\x60\x00\x90\xbf\xbd"
 "\x78\x05\x73\xe9\x79\x1d\x6f\x7c\x0b\xd2\xc3\x93\xa7\x28\xe1\x75"
 "\xf7\xd5\x95\x1d\x28\x10\xc0\x75\x50\x5c\x1a\x4f\x3f\x8f\xa5\xee"
 "\xa3",
 .key_len = 49,
 .m =
 "\x8d\xd6\xb8\x3e\xe5\xff\x23\xf6\x25\xa2\x43\x42\x74\x45\xa7\x40"
 "\x3a\xff\x2f\xe1\xd3\xf6\x9f\xe8\x33\xcb\x12\x11",
 .m_size = 28,
 .c = (const unsigned char[]){
 be64_to_cpua(83, 7b, 12, e6, b6, 5b, cb, d4),
 be64_to_cpua(14, f8, 11, 2b, 55, dc, ae, 37),
 be64_to_cpua(5a, 8b, 82, 69, 7e, 8a, 0a, 09),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(a3, e3, 5c, 99, db, 92, 5b, 36),
 be64_to_cpua(eb, c3, 92, 0f, 1e, 72, ee, c4),
 be64_to_cpua(6a, 14, 4f, 53, 75, c8, 02, 48),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 }, {
 .key = /* secp192r1(sha256) */
 "\x04\xe2\x51\x24\x9b\xf7\xb6\x32\x82\x39\x66\x3d\x5b\xec\x3b\xae"
 "\x0c\xd5\xf2\x67\xd1\xc7\xe1\x02\xe4\xbf\x90\x62\xb8\x55\x75\x56"
 "\x69\x20\x5e\xcb\x4e\xca\x33\xd6\xcb\x62\x6b\x94\xa9\xa2\xe9\x58"
 "\x91",
 .key_len = 49,
 .m =
 "\x35\xec\xa1\xa0\x9e\x14\xde\x33\x03\xb6\xf6\xbd\x0c\x2f\xb2\xfd"
 "\x1f\x27\x82\xa5\xd7\x70\x3f\xef\xa0\x82\x69\x8e\x73\x31\x8e\xd7",
 .m_size = 32,
 .c = (const unsigned char[]){
 be64_to_cpua(01, 48, fb, 5f, 72, 2a, d4, 8f),
 be64_to_cpua(6b, 1a, 58, 56, f1, 8f, f7, fd),
 be64_to_cpua(3f, 72, 3f, 1f, 42, d2, 3f, 1d),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(7d, 3a, 97, d9, cd, 1a, 6a, 49),
 be64_to_cpua(32, dd, 41, 74, 6a, 51, c7, d9),
 be64_to_cpua(b3, 69, 43, fd, 48, 19, 86, cf),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 }, {
 .key = /* secp192r1(sha384) */
 "\x04\x5a\x13\xfe\x68\x86\x4d\xf4\x17\xc7\xa4\xe5\x8c\x65\x57\xb7"
 "\x03\x73\x26\x57\xfb\xe5\x58\x40\xd8\xfd\x49\x05\xab\xf1\x66\x1f"
 "\xe2\x9d\x93\x9e\xc2\x22\x5a\x8b\x4f\xf3\x77\x22\x59\x7e\xa6\x4e"
 "\x8b",
 .key_len = 49,
 .m =
 "\x9d\x2e\x1a\x8f\xed\x6c\x4b\x61\xae\xac\xd5\x19\x79\xce\x67\xf9"
 "\xa0\x34\xeb\xb0\x81\xf9\xd9\xdc\x6e\xb3\x5c\xa8\x69\xfc\x8a\x61"
 "\x39\x81\xfb\xfd\x5c\x30\x6b\xa8\xee\xed\x89\xaf\xa3\x05\xe4\x78",
 .m_size = 48,
 .c = (const unsigned char[]){
 be64_to_cpua(dd, 15, bb, d6, 8c, a7, 03, 78),
 be64_to_cpua(cf, 7f, 34, b4, b4, e5, c5, 00),
 be64_to_cpua(f0, a3, 38, ce, 2b, f8, 9d, 1a),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(93, 12, 3b, 3b, 28, fb, 6d, e1),
 be64_to_cpua(d1, 01, 77, 44, 5d, 53, a4, 7c),
 be64_to_cpua(64, bc, 5a, 1f, 82, 96, 61, d7),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 }, {
 .key = /* secp192r1(sha512) */
 "\x04\xd5\xf2\x6e\xc3\x94\x5c\x52\xbc\xdf\x86\x6c\x14\xd1\xca\xea"
 "\xcc\x72\x3a\x8a\xf6\x7a\x3a\x56\x36\x3b\xca\xc6\x94\x0e\x17\x1d"
 "\x9e\xa0\x58\x28\xf9\x4b\xe6\xd1\xa5\x44\x91\x35\x0d\xe7\xf5\x11"
 "\x57",
 .key_len = 49,
 .m =
 "\xd5\x4b\xe9\x36\xda\xd8\x6e\xc0\x50\x03\xbe\x00\x43\xff\xf0\x23"
 "\xac\xa2\x42\xe7\x37\x77\x79\x52\x8f\x3e\xc0\x16\xc1\xfc\x8c\x67"
 "\x16\xbc\x8a\x5d\x3b\xd3\x13\xbb\xb6\xc0\x26\x1b\xeb\x33\xcc\x70"
 "\x4a\xf2\x11\x37\xe8\x1b\xba\x55\xac\x69\xe1\x74\x62\x7c\x6e\xb5",
 .m_size = 64,
 .c = (const unsigned char[]){
 be64_to_cpua(2b, 11, 2d, 1c, b6, 06, c9, 6c),
 be64_to_cpua(dd, 3f, 07, 87, 12, a0, d4, ac),
 be64_to_cpua(88, 5b, 8f, 59, 43, bf, cf, c6),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(28, 6a, df, 97, fd, 82, 76, 24),
 be64_to_cpua(a9, 14, 2a, 5e, f5, e5, fb, 72),
 be64_to_cpua(73, b4, 22, 9a, 98, 73, 3c, 83),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 },
};

static const struct sig_testvec ecdsa_nist_p256_tv_template[] = {
 {
 .key = /* secp256r1(sha1) */
 "\x04\xb9\x7b\xbb\xd7\x17\x64\xd2\x7e\xfc\x81\x5d\x87\x06\x83\x41"
 "\x22\xd6\x9a\xaa\x87\x17\xec\x4f\x63\x55\x2f\x94\xba\xdd\x83\xe9"
 "\x34\x4b\xf3\xe9\x91\x13\x50\xb6\xcb\xca\x62\x08\xe7\x3b\x09\xdc"
 "\xc3\x63\x4b\x2d\xb9\x73\x53\xe4\x45\xe6\x7c\xad\xe7\x6b\xb0\xe8"
 "\xaf",
 .key_len = 65,
 .m =
 "\xc2\x2b\x5f\x91\x78\x34\x26\x09\x42\x8d\x6f\x51\xb2\xc5\xaf\x4c"
 "\x0b\xde\x6a\x42",
 .m_size = 20,
 .c = (const unsigned char[]){
 be64_to_cpua(ee, ca, 6a, 52, 0e, 48, 4d, cc),
 be64_to_cpua(f7, d4, ad, 8d, 94, 5a, 69, 89),
 be64_to_cpua(cf, d4, e7, b7, f0, 82, 56, 41),
 be64_to_cpua(f9, 25, ce, 9f, 3a, a6, 35, 81),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(fb, 9d, 8b, de, d4, 8d, 6f, ad),
 be64_to_cpua(f1, 03, 03, f3, 3b, e2, 73, f7),
 be64_to_cpua(8a, fa, 54, 93, 29, a7, 70, 86),
 be64_to_cpua(d7, e4, ef, 52, 66, d3, 5b, 9d),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 }, {
 .key = /* secp256r1(sha224) */
 "\x04\x8b\x6d\xc0\x33\x8e\x2d\x8b\x67\xf5\xeb\xc4\x7f\xa0\xf5\xd9"
 "\x7b\x03\xa5\x78\x9a\xb5\xea\x14\xe4\x23\xd0\xaf\xd7\x0e\x2e\xa0"
 "\xc9\x8b\xdb\x95\xf8\xb3\xaf\xac\x00\x2c\x2c\x1f\x7a\xfd\x95\x88"
 "\x43\x13\xbf\xf3\x1c\x05\x1a\x14\x18\x09\x3f\xd6\x28\x3e\xc5\xa0"
 "\xd4",
 .key_len = 65,
 .m =
 "\x1a\x15\xbc\xa3\xe4\xed\x3a\xb8\x23\x67\xc6\xc4\x34\xf8\x6c\x41"
 "\x04\x0b\xda\xc5\x77\xfa\x1c\x2d\xe6\x2c\x3b\xe0",
 .m_size = 28,
 .c = (const unsigned char[]){
 be64_to_cpua(7d, 25, d8, 25, f5, 81, d2, 1e),
 be64_to_cpua(34, 62, 79, cb, 6a, 91, 67, 2e),
 be64_to_cpua(ae, ce, 77, 59, 1a, db, 59, d5),
 be64_to_cpua(20, 43, fa, c0, 9f, 9d, 7b, e7),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(ce, d5, 2e, 8b, de, 5a, 04, 0e),
 be64_to_cpua(bf, 50, 05, 58, 39, 0e, 26, 92),
 be64_to_cpua(76, 20, 4a, 77, 22, ec, c8, 66),
 be64_to_cpua(5f, f8, 74, f8, 57, d0, 5e, 54),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 }, {
 .key = /* secp256r1(sha256) */
 "\x04\xf1\xea\xc4\x53\xf3\xb9\x0e\x9f\x7e\xad\xe3\xea\xd7\x0e\x0f"
 "\xd6\x98\x9a\xca\x92\x4d\x0a\x80\xdb\x2d\x45\xc7\xec\x4b\x97\x00"
 "\x2f\xe9\x42\x6c\x29\xdc\x55\x0e\x0b\x53\x12\x9b\x2b\xad\x2c\xe9"
 "\x80\xe6\xc5\x43\xc2\x1d\x5e\xbb\x65\x21\x50\xb6\x37\xb0\x03\x8e"
 "\xb8",
 .key_len = 65,
 .m =
 "\x8f\x43\x43\x46\x64\x8f\x6b\x96\xdf\x89\xdd\xa9\x01\xc5\x17\x6b"
 "\x10\xa6\xd8\x39\x61\xdd\x3c\x1a\xc8\x8b\x59\xb2\xdc\x32\x7a\xa4",
 .m_size = 32,
 .c = (const unsigned char[]){
 be64_to_cpua(91, dc, 02, 67, dc, 0c, d0, 82),
 be64_to_cpua(ac, 44, c3, e8, 24, 11, 2d, a4),
 be64_to_cpua(09, dc, 29, 63, a8, 1a, ad, fc),
 be64_to_cpua(08, 31, fa, 74, 0d, 1d, 21, 5d),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(4f, 2a, 65, 35, 23, e3, 1d, fa),
 be64_to_cpua(0a, 6e, 1b, c4, af, e1, 83, c3),
 be64_to_cpua(f9, a9, 81, ac, 4a, 50, d0, 91),
 be64_to_cpua(bd, ff, ce, ee, 42, c3, 97, ff),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 }, {
 .key = /* secp256r1(sha384) */
 "\x04\xc5\xc6\xea\x60\xc9\xce\xad\x02\x8d\xf5\x3e\x24\xe3\x52\x1d"
 "\x28\x47\x3b\xc3\x6b\xa4\x99\x35\x99\x11\x88\x88\xc8\xf4\xee\x7e"
 "\x8c\x33\x8f\x41\x03\x24\x46\x2b\x1a\x82\xf9\x9f\xe1\x97\x1b\x00"
 "\xda\x3b\x24\x41\xf7\x66\x33\x58\x3d\x3a\x81\xad\xcf\x16\xe9\xe2"
 "\x7c",
 .key_len = 65,
 .m =
 "\x3e\x78\x70\xfb\xcd\x66\xba\x91\xa1\x79\xff\x1e\x1c\x6b\x78\xe6"
 "\xc0\x81\x3a\x65\x97\x14\x84\x36\x14\x1a\x9a\xb7\xc5\xab\x84\x94"
 "\x5e\xbb\x1b\x34\x71\xcb\x41\xe1\xf6\xfc\x92\x7b\x34\xbb\x86\xbb",
 .m_size = 48,
 .c = (const unsigned char[]){
 be64_to_cpua(f2, e4, 6c, c7, 94, b1, d5, fe),
 be64_to_cpua(08, b2, 6b, 24, 94, 48, 46, 5e),
 be64_to_cpua(d0, 2e, 95, 54, d1, 95, 64, 93),
 be64_to_cpua(8e, f3, 6f, dc, f8, 69, a6, 2e),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(c0, 60, 11, 92, dc, 17, 89, 12),
 be64_to_cpua(69, f4, 3b, 4f, 47, cf, 9b, 16),
 be64_to_cpua(19, fb, 5f, 92, f4, c9, 23, 37),
 be64_to_cpua(eb, a7, 80, 26, dc, f9, 3a, 44),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 }, {
 .key = /* secp256r1(sha512) */
 "\x04\xd7\x27\x46\x49\xf6\x26\x85\x12\x40\x76\x8e\xe2\xe6\x2a\x7a"
 "\x83\xb1\x4e\x7a\xeb\x3b\x5c\x67\x4a\xb5\xa4\x92\x8c\x69\xff\x38"
 "\xee\xd9\x4e\x13\x29\x59\xad\xde\x6b\xbb\x45\x31\xee\xfd\xd1\x1b"
 "\x64\xd3\xb5\xfc\xaf\x9b\x4b\x88\x3b\x0e\xb7\xd6\xdf\xf1\xd5\x92"
 "\xbf",
 .key_len = 65,
 .m =
 "\x57\xb7\x9e\xe9\x05\x0a\x8c\x1b\xc9\x13\xe5\x4a\x24\xc7\xe2\xe9"
 "\x43\xc3\xd1\x76\x62\xf4\x98\x1a\x9c\x13\xb0\x20\x1b\xe5\x39\xca"
 "\x4f\xd9\x85\x34\x95\xa2\x31\xbc\xbb\xde\xdd\x76\xbb\x61\xe3\xcf"
 "\x9d\xc0\x49\x7a\xf3\x7a\xc4\x7d\xa8\x04\x4b\x8d\xb4\x4d\x5b\xd6",
 .m_size = 64,
 .c = (const unsigned char[]){
 be64_to_cpua(76, f6, 04, 99, 09, 37, 4d, fa),
 be64_to_cpua(ed, 8c, 73, 30, 6c, 22, b3, 97),
 be64_to_cpua(40, ea, 44, 81, 00, 4e, 29, 08),
 be64_to_cpua(b8, 6d, 87, 81, 43, df, fb, 9f),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(76, 31, 79, 4a, e9, 81, 6a, ee),
 be64_to_cpua(5c, ad, c3, 78, 1c, c2, c1, 19),
 be64_to_cpua(f8, 00, dd, ab, d4, c0, 2b, e6),
 be64_to_cpua(1e, b9, 75, 31, f6, 04, a5, 4d),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 },
};

static const struct sig_testvec ecdsa_nist_p384_tv_template[] = {
 {
 .key = /* secp384r1(sha1) */
 "\x04\x89\x25\xf3\x97\x88\xcb\xb0\x78\xc5\x72\x9a\x14\x6e\x7a\xb1"
 "\x5a\xa5\x24\xf1\x95\x06\x9e\x28\xfb\xc4\xb9\xbe\x5a\x0d\xd9\x9f"
 "\xf3\xd1\x4d\x2d\x07\x99\xbd\xda\xa7\x66\xec\xbb\xea\xba\x79\x42"
 "\xc9\x34\x89\x6a\xe7\x0b\xc3\xf2\xfe\x32\x30\xbe\xba\xf9\xdf\x7e"
 "\x4b\x6a\x07\x8e\x26\x66\x3f\x1d\xec\xa2\x57\x91\x51\xdd\x17\x0e"
 "\x0b\x25\xd6\x80\x5c\x3b\xe6\x1a\x98\x48\x91\x45\x7a\x73\xb0\xc3"
 "\xf1",
 .key_len = 97,
 .m =
 "\x12\x55\x28\xf0\x77\xd5\xb6\x21\x71\x32\x48\xcd\x28\xa8\x25\x22"
 "\x3a\x69\xc1\x93",
 .m_size = 20,
 .c = (const unsigned char[]){
 be64_to_cpua(ec, 7c, 7e, d0, 87, d7, d7, 6e),
 be64_to_cpua(78, f1, 4c, 26, e6, 5b, 86, cf),
 be64_to_cpua(3a, c6, f1, 32, 3c, ce, 70, 2b),
 be64_to_cpua(8d, 26, 8e, ae, 63, 3f, bc, 20),
 be64_to_cpua(57, 55, 07, 20, 43, 30, de, a0),
 be64_to_cpua(f5, 0f, 24, 4c, 07, 93, 6f, 21),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(79, 12, 2a, b7, c5, 15, 92, c5),
 be64_to_cpua(4a, a1, 59, f1, 1c, a4, 58, 26),
 be64_to_cpua(74, a0, 0f, bf, af, c3, 36, 76),
 be64_to_cpua(df, 28, 8c, 1b, fa, f9, 95, 88),
 be64_to_cpua(5f, 63, b1, be, 5e, 4c, 0e, a1),
 be64_to_cpua(cd, bb, 7e, 81, 5d, 8f, 63, c0),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 }, {
 .key = /* secp384r1(sha224) */
 "\x04\x69\x6c\xcf\x62\xee\xd0\x0d\xe5\xb5\x2f\x70\x54\xcf\x26\xa0"
 "\xd9\x98\x8d\x92\x2a\xab\x9b\x11\xcb\x48\x18\xa1\xa9\x0d\xd5\x18"
 "\x3e\xe8\x29\x6e\xf6\xe4\xb5\x8e\xc7\x4a\xc2\x5f\x37\x13\x99\x05"
 "\xb6\xa4\x9d\xf9\xfb\x79\x41\xe7\xd7\x96\x9f\x73\x3b\x39\x43\xdc"
 "\xda\xf4\x06\xb9\xa5\x29\x01\x9d\x3b\xe1\xd8\x68\x77\x2a\xf4\x50"
 "\x6b\x93\x99\x6c\x66\x4c\x42\x3f\x65\x60\x6c\x1c\x0b\x93\x9b\x9d"
 "\xe0",
 .key_len = 97,
 .m =
 "\x12\x80\xb6\xeb\x25\xe2\x3d\xf0\x21\x32\x96\x17\x3a\x38\x39\xfd"
 "\x1f\x05\x34\x7b\xb8\xf9\x71\x66\x03\x4f\xd5\xe5",
 .m_size = 28,
 .c = (const unsigned char[]){
 be64_to_cpua(3f, dd, 15, 1b, 68, 2b, 9d, 8b),
 be64_to_cpua(c9, 9c, 11, b8, 10, 01, c5, 41),
 be64_to_cpua(c5, da, b4, e3, 93, 07, e0, 99),
 be64_to_cpua(97, f1, c8, 72, 26, cf, 5a, 5e),
 be64_to_cpua(ec, cb, e4, 89, 47, b2, f7, bc),
 be64_to_cpua(8a, 51, 84, ce, 13, 1e, d2, dc),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(88, 2b, 82, 26, 5e, 1c, da, fb),
 be64_to_cpua(9f, 19, d0, 42, 8b, 93, c2, 11),
 be64_to_cpua(4d, d0, c6, 6e, b0, e9, fc, 14),
 be64_to_cpua(df, d8, 68, a2, 64, 42, 65, f3),
 be64_to_cpua(4b, 00, 08, 31, 6c, f5, d5, f6),
 be64_to_cpua(8b, 03, 2c, fc, 1f, d1, a9, a4),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 }, {
 .key = /* secp384r1(sha256) */
 "\x04\xee\xd6\xda\x3e\x94\x90\x00\x27\xed\xf8\x64\x55\xd6\x51\x9a"
 "\x1f\x52\x00\x63\x78\xf1\xa9\xfd\x75\x4c\x9e\xb2\x20\x1a\x91\x5a"
 "\xba\x7a\xa3\xe5\x6c\xb6\x25\x68\x4b\xe8\x13\xa6\x54\x87\x2c\x0e"
 "\xd0\x83\x95\xbc\xbf\xc5\x28\x4f\x77\x1c\x46\xa6\xf0\xbc\xd4\xa4"
 "\x8d\xc2\x8f\xb3\x32\x37\x40\xd6\xca\xf8\xae\x07\x34\x52\x39\x52"
 "\x17\xc3\x34\x29\xd6\x40\xea\x5c\xb9\x3f\xfb\x32\x2e\x12\x33\xbc"
 "\xab",
 .key_len = 97,
 .m =
 "\xaa\xe7\xfd\x03\x26\xcb\x94\x71\xe4\xce\x0f\xc5\xff\xa6\x29\xa3"
 "\xe1\xcc\x4c\x35\x4e\xde\xca\x80\xab\x26\x0c\x25\xe6\x68\x11\xc2",
 .m_size = 32,
 .c = (const unsigned char[]){
 be64_to_cpua(c8, 8d, 2c, 79, 3a, 8e, 32, c4),
 be64_to_cpua(b6, c6, fc, 70, 2e, 66, 3c, 77),
 be64_to_cpua(af, 06, 3f, 84, 04, e2, f9, 67),
 be64_to_cpua(cc, 47, 53, 87, bc, bd, 83, 3f),
 be64_to_cpua(8e, 3f, 7e, ce, 0a, 9b, aa, 59),
 be64_to_cpua(08, 09, 12, 9d, 6e, 96, 64, a6),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(10, 0e, f4, 1f, 39, ca, 4d, 43),
 be64_to_cpua(4f, 8d, de, 1e, 93, 8d, 95, bb),
 be64_to_cpua(15, 68, c0, 75, 3e, 23, 5e, 36),
 be64_to_cpua(dd, ce, bc, b2, 97, f4, 9c, f3),
 be64_to_cpua(26, a2, b0, 89, 42, 0a, da, d9),
 be64_to_cpua(40, 34, b8, 90, a9, 80, ab, 47),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 }, {
 .key = /* secp384r1(sha384) */
 "\x04\x3a\x2f\x62\xe7\x1a\xcf\x24\xd0\x0b\x7c\xe0\xed\x46\x0a\x4f"
 "\x74\x16\x43\xe9\x1a\x25\x7c\x55\xff\xf0\x29\x68\x66\x20\x91\xf9"
 "\xdb\x2b\xf6\xb3\x6c\x54\x01\xca\xc7\x6a\x5c\x0d\xeb\x68\xd9\x3c"
 "\xf1\x01\x74\x1f\xf9\x6c\xe5\x5b\x60\xe9\x7f\x5d\xb3\x12\x80\x2a"
 "\xd8\x67\x92\xc9\x0e\x4c\x4c\x6b\xa1\xb2\xa8\x1e\xac\x1c\x97\xd9"
 "\x21\x67\xe5\x1b\x5a\x52\x31\x68\xd6\xee\xf0\x19\xb0\x55\xed\x89"
 "\x9e",
 .key_len = 97,
 .m =
 "\x8d\xf2\xc0\xe9\xa8\xf3\x8e\x44\xc4\x8c\x1a\xa0\xb8\xd7\x17\xdf"
 "\xf2\x37\x1b\xc6\xe3\xf5\x62\xcc\x68\xf5\xd5\x0b\xbf\x73\x2b\xb1"
 "\xb0\x4c\x04\x00\x31\xab\xfe\xc8\xd6\x09\xc8\xf2\xea\xd3\x28\xff",
 .m_size = 48,
 .c = (const unsigned char[]){
 be64_to_cpua(a2, a4, c8, f2, ea, 9d, 11, 1f),
 be64_to_cpua(3b, 1f, 07, 8f, 15, 02, fe, 1d),
 be64_to_cpua(29, e6, fb, ca, 8c, d6, b6, b4),
 be64_to_cpua(2d, 7a, 91, 5f, 49, 2d, 22, 08),
 be64_to_cpua(ee, 2e, 62, 35, 46, fa, 00, d8),
 be64_to_cpua(9b, 28, 68, c0, a1, ea, 8c, 50),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(ab, 8d, 4e, de, e6, 6d, 9b, 66),
 be64_to_cpua(96, 17, 04, c9, 05, 77, f1, 8e),
 be64_to_cpua(44, 92, 8c, 86, 99, 65, b3, 97),
 be64_to_cpua(71, cd, 8f, 18, 99, f0, 0f, 13),
 be64_to_cpua(bf, e3, 75, 24, 49, ac, fb, c8),
 be64_to_cpua(fc, 50, f6, 43, bd, 50, 82, 0e),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 }, {
 .key = /* secp384r1(sha512) */
 "\x04\xb4\xe7\xc1\xeb\x64\x25\x22\x46\xc3\x86\x61\x80\xbe\x1e\x46"
 "\xcb\xf6\x05\xc2\xee\x73\x83\xbc\xea\x30\x61\x4d\x40\x05\x41\xf4"
 "\x8c\xe3\x0e\x5c\xf0\x50\xf2\x07\x19\xe8\x4f\x25\xbe\xee\x0c\x95"
 "\x54\x36\x86\xec\xc2\x20\x75\xf3\x89\xb5\x11\xa1\xb7\xf5\xaf\xbe"
 "\x81\xe4\xc3\x39\x06\xbd\xe4\xfe\x68\x1c\x6d\x99\x2b\x1b\x63\xfa"
 "\xdf\x42\x5c\xc2\x5a\xc7\x0c\xf4\x15\xf7\x1b\xa3\x2e\xd7\x00\xac"
 "\xa3",
 .key_len = 97,
 .m =
 "\xe8\xb7\x52\x7d\x1a\x44\x20\x05\x53\x6b\x3a\x68\xf2\xe7\x6c\xa1"
 "\xae\x9d\x84\xbb\xba\x52\x43\x3e\x2c\x42\x78\x49\xbf\x78\xb2\x71"
 "\xeb\xe1\xe0\xe8\x42\x7b\x11\xad\x2b\x99\x05\x1d\x36\xe6\xac\xfc"
 "\x55\x73\xf0\x15\x63\x39\xb8\x6a\x6a\xc5\x91\x5b\xca\x6a\xa8\x0e",
 .m_size = 64,
 .c = (const unsigned char[]){
 be64_to_cpua(3e, b3, c7, a8, b3, 17, 77, d1),
 be64_to_cpua(dc, 2b, 43, 0e, 6a, b3, 53, 6f),
 be64_to_cpua(4c, fc, 6f, 80, e3, af, b3, d9),
 be64_to_cpua(9a, 02, de, 93, e8, 83, e4, 84),
 be64_to_cpua(4d, c6, ef, da, 02, e7, 0f, 52),
 be64_to_cpua(00, 1d, 20, 94, 77, fe, 31, fa),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(4e, 45, cf, 3c, 93, ff, 50, 5d),
 be64_to_cpua(34, e4, 8b, 80, a5, b6, da, 2c),
 be64_to_cpua(c4, 6a, 03, 5f, 8d, 7a, f9, fb),
 be64_to_cpua(ec, 63, e3, 0c, ec, 50, dc, cc),
 be64_to_cpua(de, 3a, 3d, 16, af, b4, 52, 6a),
 be64_to_cpua(63, f6, f0, 3d, 5f, 5f, 99, 3f),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 00) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 },
};

static const struct sig_testvec ecdsa_nist_p521_tv_template[] = {
 {
 .key = /* secp521r1(sha224) */
 "\x04\x01\x4f\x43\x18\xb6\xa9\xc9\x5d\x68\xd3\xa9\x42\xf8\x98\xc0"
 "\xd2\xd1\xa9\x50\x3b\xe8\xc4\x40\xe6\x11\x78\x88\x4b\xbd\x76\xa7"
 "\x9a\xe0\xdd\x31\xa4\x67\x78\x45\x33\x9e\x8c\xd1\xc7\x44\xac\x61"
 "\x68\xc8\x04\xe7\x5c\x79\xb1\xf1\x41\x0c\x71\xc0\x53\xa8\xbc\xfb"
 "\xf5\xca\xd4\x01\x40\xfd\xa3\x45\xda\x08\xe0\xb4\xcb\x28\x3b\x0a"
 "\x02\x35\x5f\x02\x9f\x3f\xcd\xef\x08\x22\x40\x97\x74\x65\xb7\x76"
 "\x85\xc7\xc0\x5c\xfb\x81\xe1\xa5\xde\x0c\x4e\x8b\x12\x31\xb6\x47"
 "\xed\x37\x0f\x99\x3f\x26\xba\xa3\x8e\xff\x79\x34\x7c\x3a\xfe\x1f"
 "\x3b\x83\x82\x2f\x14",
 .key_len = 133,
 .m =
 "\xa2\x3a\x6a\x8c\x7b\x3c\xf2\x51\xf8\xbe\x5f\x4f\x3b\x15\x05\xc4"
 "\xb5\xbc\x19\xe7\x21\x85\xe9\x23\x06\x33\x62\xfb",
 .m_size = 28,
 .c = (const unsigned char[]){
 be64_to_cpua(46, 6b, c7, af, 7a, b9, 19, 0a),
 be64_to_cpua(6c, a6, 9b, 89, 8b, 1e, fd, 09),
 be64_to_cpua(98, 85, 29, 88, ff, 0b, 94, 94),
 be64_to_cpua(18, c6, 37, 8a, cb, a7, d8, 7d),
 be64_to_cpua(f8, 3f, 59, 0f, 74, f0, 3f, d8),
 be64_to_cpua(e2, ef, 07, 92, ee, 60, 94, 06),
 be64_to_cpua(35, f6, dc, 6d, 02, 7b, 22, ac),
 be64_to_cpua(d6, 43, e7, ff, 42, b2, ba, 74),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 01),
 be64_to_cpua(50, b1, a5, 98, 92, 2a, a5, 52),
 be64_to_cpua(1c, ad, 22, da, 82, 00, 35, a3),
 be64_to_cpua(0e, 64, cc, c4, e8, 43, d9, 0e),
 be64_to_cpua(30, 90, 0f, 1c, 8f, 78, d3, 9f),
 be64_to_cpua(26, 0b, 5f, 49, 32, 6b, 91, 99),
 be64_to_cpua(0f, f8, 65, 97, 6b, 09, 4d, 22),
 be64_to_cpua(5e, f9, 88, f3, d2, 32, 90, 57),
 be64_to_cpua(26, 0d, 55, cd, 23, 1e, 7d, a0),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 3a) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 },
 {
 .key = /* secp521r1(sha256) */
 "\x04\x01\x05\x3a\x6b\x3b\x5a\x0f\xa7\xb9\xb7\x32\x53\x4e\xe2\xae"
 "\x0a\x52\xc5\xda\xdd\x5a\x79\x1c\x30\x2d\x33\x07\x79\xd5\x70\x14"
 "\x61\x0c\xec\x26\x4d\xd8\x35\x57\x04\x1d\x88\x33\x4d\xce\x05\x36"
 "\xa5\xaf\x56\x84\xfa\x0b\x9e\xff\x7b\x30\x4b\x92\x1d\x06\xf8\x81"
 "\x24\x1e\x51\x00\x09\x21\x51\xf7\x46\x0a\x77\xdb\xb5\x0c\xe7\x9c"
 "\xff\x27\x3c\x02\x71\xd7\x85\x36\xf1\xaa\x11\x59\xd8\xb8\xdc\x09"
 "\xdc\x6d\x5a\x6f\x63\x07\x6c\xe1\xe5\x4d\x6e\x0f\x6e\xfb\x7c\x05"
 "\x8a\xe9\x53\xa8\xcf\xce\x43\x0e\x82\x20\x86\xbc\x88\x9c\xb7\xe3"
 "\xe6\x77\x1e\x1f\x8a",
 .key_len = 133,
 .m =
 "\xcc\x97\x73\x0c\x73\xa2\x53\x2b\xfa\xd7\x83\x1d\x0c\x72\x1b\x39"
 "\x80\x71\x8d\xdd\xc5\x9b\xff\x55\x32\x98\x25\xa2\x58\x2e\xb7\x73",
 .m_size = 32,
 .c = (const unsigned char[]){
 be64_to_cpua(de, 7e, d7, 59, 10, e9, d9, d5),
 be64_to_cpua(38, 1f, 46, 0b, 04, 64, 34, 79),
 be64_to_cpua(ae, ce, 54, 76, 9a, c2, 8f, b8),
 be64_to_cpua(95, 35, 6f, 02, 0e, af, e1, 4c),
 be64_to_cpua(56, 3c, f6, f0, d8, e1, b7, 5d),
 be64_to_cpua(50, 9f, 7d, 1f, ca, 8b, a8, 2d),
 be64_to_cpua(06, 0f, fd, 83, fc, 0e, d9, ce),
 be64_to_cpua(a5, 5f, 57, 52, 27, 78, 3a, b5),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, cd),
 be64_to_cpua(55, 38, b6, f6, 34, 65, c7, bd),
 be64_to_cpua(1c, 57, 56, 8f, 12, b7, 1d, 91),
 be64_to_cpua(03, 42, 02, 5f, 50, f0, a2, 0d),
 be64_to_cpua(fa, 10, dd, 9b, fb, 36, 1a, 31),
 be64_to_cpua(e0, 87, 2c, 44, 4b, 5a, ee, af),
 be64_to_cpua(a9, 79, 24, b9, 37, 35, dd, a0),
 be64_to_cpua(6b, 35, ae, 65, b5, 99, 12, 0a),
 be64_to_cpua(50, 85, 38, f9, 15, 83, 18, 04),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 01, cf) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 },
 {
 .key = /* secp521r1(sha384) */
 "\x04\x00\x2e\xd6\x21\x04\x75\xc3\xdc\x7d\xff\x0e\xf3\x70\x25\x2b"
 "\xad\x72\xfc\x5a\x91\xf1\xd5\x9c\x64\xf3\x1f\x47\x11\x10\x62\x33"
 "\xfd\x2e\xe8\x32\xca\x9e\x6f\x0a\x4c\x5b\x35\x9a\x46\xc5\xe7\xd4"
 "\x38\xda\xb2\xf0\xf4\x87\xf3\x86\xf4\xea\x70\xad\x1e\xd4\x78\x8c"
 "\x36\x18\x17\x00\xa2\xa0\x34\x1b\x2e\x6a\xdf\x06\xd6\x99\x2d\x47"
 "\x50\x92\x1a\x8a\x72\x9c\x23\x44\xfa\xa7\xa9\xed\xa6\xef\x26\x14"
 "\xb3\x9d\xfe\x5e\xa3\x8c\xd8\x29\xf8\xdf\xad\xa6\xab\xfc\xdd\x46"
 "\x22\x6e\xd7\x35\xc7\x23\xb7\x13\xae\xb6\x34\xff\xd7\x80\xe5\x39"
 "\xb3\x3b\x5b\x1b\x94",
 .key_len = 133,
 .m =
 "\x36\x98\xd6\x82\xfa\xad\xed\x3c\xb9\x40\xb6\x4d\x9e\xb7\x04\x26"
 "\xad\x72\x34\x44\xd2\x81\xb4\x9b\xbe\x01\x04\x7a\xd8\x50\xf8\x59"
 "\xba\xad\x23\x85\x6b\x59\xbe\xfb\xf6\x86\xd4\x67\xa8\x43\x28\x76",
 .m_size = 48,
 .c = (const unsigned char[]){
 be64_to_cpua(b8, 6a, dd, fb, e6, 63, 4e, 28),
 be64_to_cpua(84, 59, fd, 1a, c4, 40, dd, 43),
 be64_to_cpua(32, 76, 06, d0, f9, c0, e4, e6),
 be64_to_cpua(e4, df, 9b, 7d, 9e, 47, ca, 33),
 be64_to_cpua(7e, 42, 71, 86, 57, 2d, f1, 7d),
 be64_to_cpua(f2, 4b, 64, 98, f7, ec, da, c7),
 be64_to_cpua(ec, 51, dc, e8, 35, 5e, ae, 16),
 be64_to_cpua(96, 76, 3c, 27, ea, aa, 9c, 26),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, 93),
 be64_to_cpua(c6, 4f, ab, 2b, 62, c1, 42, b1),
 be64_to_cpua(e5, 5a, 94, 56, cf, 8f, b4, 22),
 be64_to_cpua(6a, c3, f3, 7a, d1, fa, e7, a7),
 be64_to_cpua(df, c4, c0, db, 54, db, 8a, 0d),
 be64_to_cpua(da, a7, cd, 26, 28, 76, 3b, 52),
 be64_to_cpua(e4, 3c, bc, 93, 65, 57, 1c, 30),
 be64_to_cpua(55, ce, 37, 97, c9, 05, 51, e5),
 be64_to_cpua(c3, 6a, 87, 6e, b5, 13, 1f, 20),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 00, ff) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 },
 {
 .key = /* secp521r1(sha512) */
 "\x04\x00\xc7\x65\xee\x0b\x86\x7d\x8f\x02\xf1\x74\x5b\xb0\x4c\x3f"
 "\xa6\x35\x60\x9f\x55\x23\x11\xcc\xdf\xb8\x42\x99\xee\x6c\x96\x6a"
 "\x27\xa2\x56\xb2\x2b\x03\xad\x0f\xe7\x97\xde\x09\x5d\xb4\xc5\x5f"
 "\xbd\x87\x37\xbf\x5a\x16\x35\x56\x08\xfd\x6f\x06\x1a\x1c\x84\xee"
 "\xc3\x64\xb3\x00\x9e\xbd\x6e\x60\x76\xee\x69\xfd\x3a\xb8\xcd\x7e"
 "\x91\x68\x53\x57\x44\x13\x2e\x77\x09\x2a\xbe\x48\xbd\x91\xd8\xf6"
 "\x21\x16\x53\x99\xd5\xf0\x40\xad\xa6\xf8\x58\x26\xb6\x9a\xf8\x77"
 "\xfe\x3a\x05\x1a\xdb\xa9\x0f\xc0\x6c\x76\x30\x8c\xd8\xde\x44\xae"
 "\xd0\x17\xdf\x49\x6a",
 .key_len = 133,
 .m =
 "\x5c\xa6\xbc\x79\xb8\xa0\x1e\x11\x83\xf7\xe9\x05\xdf\xba\xf7\x69"
 "\x97\x22\x32\xe4\x94\x7c\x65\xbd\x74\xc6\x9a\x8b\xbd\x0d\xdc\xed"
 "\xf5\x9c\xeb\xe1\xc5\x68\x40\xf2\xc7\x04\xde\x9e\x0d\x76\xc5\xa3"
 "\xf9\x3c\x6c\x98\x08\x31\xbd\x39\xe8\x42\x7f\x80\x39\x6f\xfe\x68",
 .m_size = 64,
 .c = (const unsigned char[]){
 be64_to_cpua(28, b5, 04, b0, b6, 33, 1c, 7e),
 be64_to_cpua(80, a6, 13, fc, b6, 90, f7, bb),
 be64_to_cpua(27, 93, e8, 6c, 49, 7d, 28, fc),
 be64_to_cpua(1f, 12, 3e, b7, 7e, 51, ff, 7f),
 be64_to_cpua(fb, 62, 1e, 42, 03, 6c, 74, 8a),
 be64_to_cpua(63, 0e, 02, cc, 94, a9, 05, b9),
 be64_to_cpua(aa, 86, ec, a8, 05, 03, 52, 56),
 be64_to_cpua(71, 86, 96, ac, 21, 33, 7e, 4e),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 01, 5c),
 be64_to_cpua(46, 1e, 77, 44, 78, e0, d1, 04),
 be64_to_cpua(72, 74, 13, 63, 39, a6, e5, 25),
 be64_to_cpua(00, 55, bb, 6a, b4, 73, 00, d2),
 be64_to_cpua(71, d0, e9, ca, a7, c0, cb, aa),
 be64_to_cpua(7a, 76, 37, 51, 47, 49, 98, 12),
 be64_to_cpua(88, 05, 3e, 43, 39, 01, bd, b7),
 be64_to_cpua(95, 35, 89, 4f, 41, 5f, 9e, 19),
 be64_to_cpua(43, 52, 1d, e3, c6, bd, 5a, 40),
 be64_to_cpua(00, 00, 00, 00, 00, 00, 01, 70) },
 .c_size = ECC_MAX_BYTES * 2,
 .public_key_vec = true,
 },
};

/*
 * ECDSA X9.62 test vectors.
 *
 * Identical to ECDSA test vectors, except signature in "c" is X9.62 encoded.
 */

static const struct sig_testvec x962_ecdsa_nist_p192_tv_template[] = {
 {
 .key = /* secp192r1(sha1) */
 "\x04\xf7\x46\xf8\x2f\x15\xf6\x22\x8e\xd7\x57\x4f\xcc\xe7\xbb\xc1"
 "\xd4\x09\x73\xcf\xea\xd0\x15\x07\x3d\xa5\x8a\x8a\x95\x43\xe4\x68"
 "\xea\xc6\x25\xc1\xc1\x01\x25\x4c\x7e\xc3\x3c\xa6\x04\x0a\xe7\x08"
 "\x98",
 .key_len = 49,
 .m =
 "\xcd\xb9\xd2\x1c\xb7\x6f\xcd\x44\xb3\xfd\x63\xea\xa3\x66\x7f\xae"
 "\x63\x85\xe7\x82",
 .m_size = 20,
 .c =
 "\x30\x35\x02\x19\x00\xba\xe5\x93\x83\x6e\xb6\x3b\x63\xa0\x27\x91"
 "\xc6\xf6\x7f\xc3\x09\xad\x59\xad\x88\x27\xd6\x92\x6b\x02\x18\x10"
 "\x68\x01\x9d\xba\xce\x83\x08\xef\x95\x52\x7b\xa0\x0f\xe4\x18\x86"
 "\x80\x6f\xa5\x79\x77\xda\xd0",
 .c_size = 55,
 .public_key_vec = true,
 }, {
 .key = /* secp192r1(sha224) */
 "\x04\xb6\x4b\xb1\xd1\xac\xba\x24\x8f\x65\xb2\x60\x00\x90\xbf\xbd"
 "\x78\x05\x73\xe9\x79\x1d\x6f\x7c\x0b\xd2\xc3\x93\xa7\x28\xe1\x75"
 "\xf7\xd5\x95\x1d\x28\x10\xc0\x75\x50\x5c\x1a\x4f\x3f\x8f\xa5\xee"
 "\xa3",
 .key_len = 49,
 .m =
 "\x8d\xd6\xb8\x3e\xe5\xff\x23\xf6\x25\xa2\x43\x42\x74\x45\xa7\x40"
 "\x3a\xff\x2f\xe1\xd3\xf6\x9f\xe8\x33\xcb\x12\x11",
 .m_size = 28,
 .c =
 "\x30\x34\x02\x18\x5a\x8b\x82\x69\x7e\x8a\x0a\x09\x14\xf8\x11\x2b"
 "\x55\xdc\xae\x37\x83\x7b\x12\xe6\xb6\x5b\xcb\xd4\x02\x18\x6a\x14"
 "\x4f\x53\x75\xc8\x02\x48\xeb\xc3\x92\x0f\x1e\x72\xee\xc4\xa3\xe3"
 "\x5c\x99\xdb\x92\x5b\x36",
 .c_size = 54,
 .public_key_vec = true,
 }, {
 .key = /* secp192r1(sha256) */
 "\x04\xe2\x51\x24\x9b\xf7\xb6\x32\x82\x39\x66\x3d\x5b\xec\x3b\xae"
 "\x0c\xd5\xf2\x67\xd1\xc7\xe1\x02\xe4\xbf\x90\x62\xb8\x55\x75\x56"
 "\x69\x20\x5e\xcb\x4e\xca\x33\xd6\xcb\x62\x6b\x94\xa9\xa2\xe9\x58"
 "\x91",
 .key_len = 49,
 .m =
 "\x35\xec\xa1\xa0\x9e\x14\xde\x33\x03\xb6\xf6\xbd\x0c\x2f\xb2\xfd"
 "\x1f\x27\x82\xa5\xd7\x70\x3f\xef\xa0\x82\x69\x8e\x73\x31\x8e\xd7",
 .m_size = 32,
 .c =
 "\x30\x35\x02\x18\x3f\x72\x3f\x1f\x42\xd2\x3f\x1d\x6b\x1a\x58\x56"
 "\xf1\x8f\xf7\xfd\x01\x48\xfb\x5f\x72\x2a\xd4\x8f\x02\x19\x00\xb3"
 "\x69\x43\xfd\x48\x19\x86\xcf\x32\xdd\x41\x74\x6a\x51\xc7\xd9\x7d"
 "\x3a\x97\xd9\xcd\x1a\x6a\x49",
 .c_size = 55,
 .public_key_vec = true,
 }, {
 .key = /* secp192r1(sha384) */
 "\x04\x5a\x13\xfe\x68\x86\x4d\xf4\x17\xc7\xa4\xe5\x8c\x65\x57\xb7"
 "\x03\x73\x26\x57\xfb\xe5\x58\x40\xd8\xfd\x49\x05\xab\xf1\x66\x1f"
 "\xe2\x9d\x93\x9e\xc2\x22\x5a\x8b\x4f\xf3\x77\x22\x59\x7e\xa6\x4e"
--> --------------------

--> maximum size reached

--> --------------------

92%


¤ Dauer der Verarbeitung: 0.26 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.