From 03d0c3b8e29b72ebd4a1000a98e87e24725fefa2 Mon Sep 17 00:00:00 2001 From: Andreas Steffen Date: Mon, 4 Nov 2019 22:22:47 +0100 Subject: [PATCH] key-exchange: Joint ke_test_vector format for DH and KEM Both Diffie-Hellman (DH) and Key Encapsulation Mechanism (KEM) based key exchange methods use a common ke_test_vector format. The set_seed() function is used to provide deterministic private key material for the crypto tests. --- src/libstrongswan/crypto/crypto_tester.c | 183 +- src/libstrongswan/crypto/crypto_tester.h | 22 +- src/libstrongswan/crypto/key_exchange.h | 6 +- .../plugins/botan/botan_diffie_hellman.c | 6 +- .../plugins/botan/botan_ec_diffie_hellman.c | 6 +- .../plugins/botan/botan_x25519.c | 6 +- .../plugins/curve25519/curve25519_dh.c | 6 +- src/libstrongswan/plugins/gcrypt/gcrypt_dh.c | 6 +- .../plugins/gmp/gmp_diffie_hellman.c | 6 +- .../plugins/openssl/openssl_diffie_hellman.c | 6 +- .../openssl/openssl_ec_diffie_hellman.c | 6 +- .../openssl/openssl_x_diffie_hellman.c | 6 +- .../test_vectors/test_vectors/curve25519.c | 75 +- .../test_vectors/test_vectors/curve448.c | 57 +- .../plugins/test_vectors/test_vectors/ecp.c | 277 ++- .../plugins/test_vectors/test_vectors/ecpbp.c | 233 ++- .../plugins/test_vectors/test_vectors/modp.c | 1835 +++++++++++------ .../test_vectors/test_vectors/modpsub.c | 366 ++-- .../plugins/wolfssl/wolfssl_diffie_hellman.c | 6 +- .../wolfssl/wolfssl_ec_diffie_hellman.c | 6 +- .../wolfssl/wolfssl_x_diffie_hellman.c | 12 +- 21 files changed, 1954 insertions(+), 1178 deletions(-) diff --git a/src/libstrongswan/crypto/crypto_tester.c b/src/libstrongswan/crypto/crypto_tester.c index 69361608b..ce7d92095 100644 --- a/src/libstrongswan/crypto/crypto_tester.c +++ b/src/libstrongswan/crypto/crypto_tester.c @@ -1444,8 +1444,8 @@ failure: static u_int bench_ke(private_crypto_tester_t *this, key_exchange_method_t method, ke_constructor_t create) { - chunk_t pub = chunk_empty, shared = chunk_empty; - key_exchange_t *ke; + chunk_t a_pub = chunk_empty, b_pub = chunk_empty, shared = chunk_empty; + key_exchange_t *a, *b; struct timespec start; u_int runs; @@ -1453,108 +1453,134 @@ static u_int bench_ke(private_crypto_tester_t *this, start_timing(&start); while (end_timing(&start) < this->bench_time) { - ke = create(method); - if (!ke) + a = create(method); + b = create(method); + if (!a || !b) { + DESTROY_IF(a); + DESTROY_IF(b); return 0; } - if (ke->get_public_key(ke, &pub) && - ke->set_public_key(ke, pub) && - ke->get_shared_secret(ke, &shared)) + if (a->get_public_key(a, &a_pub) && + b->set_public_key(b, a_pub) && + b->get_public_key(b, &b_pub) && + a->set_public_key(a, b_pub) && + a->get_shared_secret(a, &shared)) { runs++; } - chunk_free(&pub); + chunk_free(&a_pub); + chunk_free(&b_pub); chunk_free(&shared); - ke->destroy(ke); + a->destroy(a); + b->destroy(b); } return runs; } +static bool test_single_ke(key_exchange_method_t method, ke_test_vector_t *v, + ke_constructor_t create) +{ + rng_t *entropy = NULL; + drbg_t *drbg = NULL; + key_exchange_t *a = NULL, *b = NULL; + chunk_t a_priv, b_priv, a_pub, b_pub, a_sec, b_sec; + bool success = FALSE; + + a = create(method); + b = create(method); + if (!a || !b) + { + goto failure; + } + a_pub = b_pub = a_sec = b_sec = chunk_empty; + + if (key_exchange_is_kem(method)) + { + /* entropy instance will be owned by drbg */ + entropy = rng_tester_create(v->seed); + drbg = lib->crypto->create_drbg(lib->crypto, DRBG_CTR_AES256, 256, + entropy, chunk_empty); + if (!drbg) + { + entropy->destroy(entropy); + goto failure; + } + if (!a->set_seed(a, chunk_empty, drbg) || + !b->set_seed(b, chunk_empty, drbg)) + { + goto failure; + } + } + else + { + /* the seed is the concatenation of both DH private keys */ + a_priv = chunk_create(v->seed.ptr, v->seed.len/2); + b_priv = chunk_create(v->seed.ptr + v->seed.len/2, v->seed.len/2); + + if (!a->set_seed(a, a_priv, NULL) || !b->set_seed(b, b_priv, NULL)) + { + goto failure; + } + } + if (!a->get_public_key(a, &a_pub) || !chunk_equals(a_pub, v->pub_i)) + { + goto failure; + } + if (!b->set_public_key(b, a_pub)) + { + goto failure; + } + if (!b->get_shared_secret(b, &b_sec) || !chunk_equals(b_sec, v->shared)) + { + goto failure; + } + if (!b->get_public_key(b, &b_pub) || !chunk_equals(b_pub, v->pub_r)) + { + goto failure; + } + if (!a->set_public_key(a, b_pub)) + { + goto failure; + } + if (!a->get_shared_secret(a, &a_sec) || !chunk_equals(a_sec, v->shared)) + { + goto failure; + } + success = TRUE; + +failure: + DESTROY_IF(a); + DESTROY_IF(b); + chunk_free(&a_pub); + chunk_free(&b_pub); + chunk_free(&a_sec); + chunk_free(&b_sec); + DESTROY_IF(drbg); + + return success; +} + METHOD(crypto_tester_t, test_ke, bool, private_crypto_tester_t *this, key_exchange_method_t method, ke_constructor_t create, u_int *speed, const char *plugin_name) { enumerator_t *enumerator; ke_test_vector_t *v; - bool failed = FALSE; + bool success = TRUE; u_int tested = 0; enumerator = this->ke->create_enumerator(this->ke); while (enumerator->enumerate(enumerator, &v)) { - key_exchange_t *a, *b; - chunk_t apub, bpub, asec, bsec; - if (v->method != method) { continue; } - - a = create(method); - b = create(method); - if (!a || !b) - { - DESTROY_IF(a); - DESTROY_IF(b); - failed = TRUE; - tested++; - DBG1(DBG_LIB, "disabled %N[%s]: creating instance failed", - key_exchange_method_names, method, plugin_name); - break; - } - - if (!a->set_private_key || !b->set_private_key) - { /* does not support testing */ - a->destroy(a); - b->destroy(b); - continue; - } - failed = TRUE; + success = test_single_ke(method, v, create); tested++; - apub = bpub = asec = bsec = chunk_empty; - - if (!a->set_private_key(a, chunk_create(v->priv_a, v->priv_len)) || - !b->set_private_key(b, chunk_create(v->priv_b, v->priv_len))) - { - goto failure; - } - if (!a->get_public_key(a, &apub) || - !chunk_equals(apub, chunk_create(v->pub_a, v->pub_len))) - { - goto failure; - } - if (!b->get_public_key(b, &bpub) || - !chunk_equals(bpub, chunk_create(v->pub_b, v->pub_len))) - { - goto failure; - } - if (!a->set_public_key(a, bpub) || - !b->set_public_key(b, apub)) - { - goto failure; - } - if (!a->get_shared_secret(a, &asec) || - !chunk_equals(asec, chunk_create(v->shared, v->shared_len))) - { - goto failure; - } - if (!b->get_shared_secret(b, &bsec) || - !chunk_equals(bsec, chunk_create(v->shared, v->shared_len))) - { - goto failure; - } - - failed = FALSE; -failure: - a->destroy(a); - b->destroy(b); - chunk_free(&apub); - chunk_free(&bpub); - chunk_free(&asec); - chunk_free(&bsec); - if (failed) + if (!success) { DBG1(DBG_LIB, "disabled %N[%s]: %s test vector failed", key_exchange_method_names, method, plugin_name, get_name(v)); @@ -1562,6 +1588,7 @@ failure: } } enumerator->destroy(enumerator); + if (!tested) { DBG1(DBG_LIB, "%s %N[%s]: no test vectors found / untestable", @@ -1569,7 +1596,7 @@ failure: key_exchange_method_names, method, plugin_name); return !this->required; } - if (!failed) + if (success) { if (speed) { @@ -1583,7 +1610,7 @@ failure: key_exchange_method_names, method, plugin_name, tested); } } - return !failed; + return success; } METHOD(crypto_tester_t, add_crypter_vector, void, diff --git a/src/libstrongswan/crypto/crypto_tester.h b/src/libstrongswan/crypto/crypto_tester.h index eadfba40e..4c9b3e17e 100644 --- a/src/libstrongswan/crypto/crypto_tester.h +++ b/src/libstrongswan/crypto/crypto_tester.h @@ -162,22 +162,14 @@ struct rng_test_vector_t { struct ke_test_vector_t { /** key exchange method to test */ key_exchange_method_t method; - /** private key of alice */ - u_char *priv_a; - /** private key of bob */ - u_char *priv_b; - /** length of private keys */ - size_t priv_len; - /** expected public key of alice */ - u_char *pub_a; - /** expected public key of bob */ - u_char *pub_b; - /** size of public keys */ - size_t pub_len; + /** seed from which private key material is derived */ + chunk_t seed; + /** expected public factor of initiator */ + chunk_t pub_i; + /** expected public factor of responder */ + chunk_t pub_r; /** expected shared secret */ - u_char *shared; - /** size of shared secret */ - size_t shared_len; + chunk_t shared; }; /** diff --git a/src/libstrongswan/crypto/key_exchange.h b/src/libstrongswan/crypto/key_exchange.h index b94b10876..7d9440f92 100644 --- a/src/libstrongswan/crypto/key_exchange.h +++ b/src/libstrongswan/crypto/key_exchange.h @@ -2,6 +2,7 @@ * Copyright (C) 2010-2020 Tobias Brunner * Copyright (C) 2005-2007 Martin Willi * Copyright (C) 2005 Jan Hutter + * Copyright (C) 2016-2019 Andreas Steffen * HSR Hochschule fuer Technik Rapperswil * * This program is free software; you can redistribute it and/or modify it @@ -160,9 +161,10 @@ struct key_exchange_t { * used mostly for testing purposes. The private key may be the actual key * or a seed for a DRBG. * - * @param value private key value to set + * @param value optional seed value to set (can be chunk_empty) + * @param drbg optional DRBG (can be NULL) */ - bool (*set_private_key)(key_exchange_t *this, chunk_t value) + bool (*set_seed)(key_exchange_t *this, chunk_t value, drbg_t *drbg) __attribute__((warn_unused_result)); /** diff --git a/src/libstrongswan/plugins/botan/botan_diffie_hellman.c b/src/libstrongswan/plugins/botan/botan_diffie_hellman.c index 4b5417585..b69b96ad9 100644 --- a/src/libstrongswan/plugins/botan/botan_diffie_hellman.c +++ b/src/libstrongswan/plugins/botan/botan_diffie_hellman.c @@ -129,8 +129,8 @@ METHOD(key_exchange_t, get_public_key, bool, return TRUE; } -METHOD(key_exchange_t, set_private_key, bool, - private_botan_diffie_hellman_t *this, chunk_t value) +METHOD(key_exchange_t, set_seed, bool, + private_botan_diffie_hellman_t *this, chunk_t value, drbg_t *drbg) { chunk_clear(&this->shared_secret); return load_private_key(this, value); @@ -179,7 +179,7 @@ static botan_diffie_hellman_t *create_generic(key_exchange_method_t group, .get_shared_secret = _get_shared_secret, .set_public_key = _set_public_key, .get_public_key = _get_public_key, - .set_private_key = _set_private_key, + .set_seed = _set_seed, .get_method = _get_method, .destroy = _destroy, }, diff --git a/src/libstrongswan/plugins/botan/botan_ec_diffie_hellman.c b/src/libstrongswan/plugins/botan/botan_ec_diffie_hellman.c index 871e58c56..ae074a786 100644 --- a/src/libstrongswan/plugins/botan/botan_ec_diffie_hellman.c +++ b/src/libstrongswan/plugins/botan/botan_ec_diffie_hellman.c @@ -104,8 +104,8 @@ METHOD(key_exchange_t, get_public_key, bool, return TRUE; } -METHOD(key_exchange_t, set_private_key, bool, - private_botan_ec_diffie_hellman_t *this, chunk_t value) +METHOD(key_exchange_t, set_seed, bool, + private_botan_ec_diffie_hellman_t *this, chunk_t value, drbg_t *drbg) { botan_mp_t scalar; @@ -172,7 +172,7 @@ botan_ec_diffie_hellman_t *botan_ec_diffie_hellman_create( .get_shared_secret = _get_shared_secret, .set_public_key = _set_public_key, .get_public_key = _get_public_key, - .set_private_key = _set_private_key, + .set_seed = _set_seed, .get_method = _get_method, .destroy = _destroy, }, diff --git a/src/libstrongswan/plugins/botan/botan_x25519.c b/src/libstrongswan/plugins/botan/botan_x25519.c index ebfb699d2..ab0e41e93 100644 --- a/src/libstrongswan/plugins/botan/botan_x25519.c +++ b/src/libstrongswan/plugins/botan/botan_x25519.c @@ -89,8 +89,8 @@ METHOD(key_exchange_t, get_public_key, bool, return TRUE; } -METHOD(key_exchange_t, set_private_key, bool, - private_diffie_hellman_t *this, chunk_t value) +METHOD(key_exchange_t, set_seed, bool, + private_diffie_hellman_t *this, chunk_t value, drbg_t *drbg) { if (value.len != 32) { @@ -149,7 +149,7 @@ key_exchange_t *botan_x25519_create(key_exchange_method_t ke) .get_shared_secret = _get_shared_secret, .set_public_key = _set_public_key, .get_public_key = _get_public_key, - .set_private_key = _set_private_key, + .set_seed = _set_seed, .get_method = _get_method, .destroy = _destroy, }, diff --git a/src/libstrongswan/plugins/curve25519/curve25519_dh.c b/src/libstrongswan/plugins/curve25519/curve25519_dh.c index 1976d81b7..84024db9f 100644 --- a/src/libstrongswan/plugins/curve25519/curve25519_dh.c +++ b/src/libstrongswan/plugins/curve25519/curve25519_dh.c @@ -100,8 +100,8 @@ METHOD(key_exchange_t, get_public_key, bool, return FALSE; } -METHOD(key_exchange_t, set_private_key, bool, - private_curve25519_dh_t *this, chunk_t value) +METHOD(key_exchange_t, set_seed, bool, + private_curve25519_dh_t *this, chunk_t value, drbg_t *drbg) { if (value.len != CURVE25519_KEY_SIZE) { @@ -152,7 +152,7 @@ curve25519_dh_t *curve25519_dh_create(key_exchange_method_t group) .get_shared_secret = _get_shared_secret, .set_public_key = _set_public_key, .get_public_key = _get_public_key, - .set_private_key = _set_private_key, + .set_seed = _set_seed, .get_method = _get_method, .destroy = _destroy, }, diff --git a/src/libstrongswan/plugins/gcrypt/gcrypt_dh.c b/src/libstrongswan/plugins/gcrypt/gcrypt_dh.c index bccbb2882..d22fc03a0 100644 --- a/src/libstrongswan/plugins/gcrypt/gcrypt_dh.c +++ b/src/libstrongswan/plugins/gcrypt/gcrypt_dh.c @@ -145,8 +145,8 @@ METHOD(key_exchange_t, get_public_key, bool, return TRUE; } -METHOD(key_exchange_t, set_private_key, bool, - private_gcrypt_dh_t *this, chunk_t value) +METHOD(key_exchange_t, set_seed, bool, + private_gcrypt_dh_t *this, chunk_t value, drbg_t *drbg) { gcry_error_t err; gcry_mpi_t xa; @@ -209,7 +209,7 @@ static gcrypt_dh_t *create_generic(key_exchange_method_t group, size_t exp_len, .get_shared_secret = _get_shared_secret, .set_public_key = _set_public_key, .get_public_key = _get_public_key, - .set_private_key = _set_private_key, + .set_seed = _set_seed, .get_method = _get_method, .destroy = _destroy, }, diff --git a/src/libstrongswan/plugins/gmp/gmp_diffie_hellman.c b/src/libstrongswan/plugins/gmp/gmp_diffie_hellman.c index 94e2b60b4..4332a8feb 100644 --- a/src/libstrongswan/plugins/gmp/gmp_diffie_hellman.c +++ b/src/libstrongswan/plugins/gmp/gmp_diffie_hellman.c @@ -162,8 +162,8 @@ METHOD(key_exchange_t, get_public_key, bool, return TRUE; } -METHOD(key_exchange_t, set_private_key, bool, - private_gmp_diffie_hellman_t *this, chunk_t value) +METHOD(key_exchange_t, set_seed, bool, + private_gmp_diffie_hellman_t *this, chunk_t value, drbg_t *drbg) { mpz_import(this->xa, value.len, 1, 1, 1, 0, value.ptr); mpz_powm(this->ya, this->g, this->xa, this->p); @@ -221,7 +221,7 @@ static gmp_diffie_hellman_t *create_generic(key_exchange_method_t group, .get_shared_secret = _get_shared_secret, .set_public_key = _set_public_key, .get_public_key = _get_public_key, - .set_private_key = _set_private_key, + .set_seed = _set_seed, .get_method = _get_method, .destroy = _destroy, }, diff --git a/src/libstrongswan/plugins/openssl/openssl_diffie_hellman.c b/src/libstrongswan/plugins/openssl/openssl_diffie_hellman.c index 9e4c3c132..d0ec67570 100644 --- a/src/libstrongswan/plugins/openssl/openssl_diffie_hellman.c +++ b/src/libstrongswan/plugins/openssl/openssl_diffie_hellman.c @@ -123,8 +123,8 @@ METHOD(key_exchange_t, set_public_key, bool, return TRUE; } -METHOD(key_exchange_t, set_private_key, bool, - private_openssl_diffie_hellman_t *this, chunk_t value) +METHOD(key_exchange_t, set_seed, bool, + private_openssl_diffie_hellman_t *this, chunk_t value, drbg_t *drbg) { BIGNUM *privkey; @@ -204,7 +204,7 @@ openssl_diffie_hellman_t *openssl_diffie_hellman_create( .get_shared_secret = _get_shared_secret, .set_public_key = _set_public_key, .get_public_key = _get_public_key, - .set_private_key = _set_private_key, + .set_seed = _set_seed, .get_method = _get_method, .destroy = _destroy, }, diff --git a/src/libstrongswan/plugins/openssl/openssl_ec_diffie_hellman.c b/src/libstrongswan/plugins/openssl/openssl_ec_diffie_hellman.c index c0b8c0c43..cafb82484 100644 --- a/src/libstrongswan/plugins/openssl/openssl_ec_diffie_hellman.c +++ b/src/libstrongswan/plugins/openssl/openssl_ec_diffie_hellman.c @@ -253,8 +253,8 @@ METHOD(key_exchange_t, get_public_key, bool, #endif } -METHOD(key_exchange_t, set_private_key, bool, - private_openssl_ec_diffie_hellman_t *this, chunk_t value) +METHOD(key_exchange_t, set_seed, bool, + private_openssl_ec_diffie_hellman_t *this, chunk_t value, drbg_t *drbg) { EC_KEY *key = NULL; EC_POINT *pub = NULL; @@ -646,7 +646,7 @@ openssl_ec_diffie_hellman_t *openssl_ec_diffie_hellman_create( .get_shared_secret = _get_shared_secret, .set_public_key = _set_public_key, .get_public_key = _get_public_key, - .set_private_key = _set_private_key, + .set_seed = _set_seed, .get_method = _get_method, .destroy = _destroy, }, diff --git a/src/libstrongswan/plugins/openssl/openssl_x_diffie_hellman.c b/src/libstrongswan/plugins/openssl/openssl_x_diffie_hellman.c index 7f0500243..9923758f6 100644 --- a/src/libstrongswan/plugins/openssl/openssl_x_diffie_hellman.c +++ b/src/libstrongswan/plugins/openssl/openssl_x_diffie_hellman.c @@ -125,8 +125,8 @@ METHOD(key_exchange_t, get_public_key, bool, return TRUE; } -METHOD(key_exchange_t, set_private_key, bool, - private_key_exchange_t *this, chunk_t value) +METHOD(key_exchange_t, set_seed, bool, + private_key_exchange_t *this, chunk_t value, drbg_t *drbg) { EVP_PKEY_free(this->key); this->key = EVP_PKEY_new_raw_private_key(map_key_type(this->ke), NULL, @@ -200,7 +200,7 @@ key_exchange_t *openssl_x_diffie_hellman_create(key_exchange_method_t ke) .get_shared_secret = _get_shared_secret, .set_public_key = _set_public_key, .get_public_key = _get_public_key, - .set_private_key = _set_private_key, + .set_seed = _set_seed, .get_method = _get_method, .destroy = _destroy, }, diff --git a/src/libstrongswan/plugins/test_vectors/test_vectors/curve25519.c b/src/libstrongswan/plugins/test_vectors/test_vectors/curve25519.c index 693d56073..86b2dcbab 100644 --- a/src/libstrongswan/plugins/test_vectors/test_vectors/curve25519.c +++ b/src/libstrongswan/plugins/test_vectors/test_vectors/curve25519.c @@ -2,6 +2,9 @@ * Copyright (C) 2015 Martin Willi * Copyright (C) 2015 revosec AG * + * Copyright (C) 2019 Andreas Steffen + * HSR Hochschule fuer Technik Rapperswil + * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the Licenseor (at your @@ -19,32 +22,60 @@ * From RFC 7748 */ ke_test_vector_t curve25519_1 = { - .method = CURVE_25519, .priv_len = 32, .pub_len = 32, .shared_len = 32, - .priv_a = "\x77\x07\x6d\x0a\x73\x18\xa5\x7d\x3c\x16\xc1\x72\x51\xb2\x66\x45" - "\xdf\x4c\x2f\x87\xeb\xc0\x99\x2a\xb1\x77\xfb\xa5\x1d\xb9\x2c\x2a", - .priv_b = "\x5d\xab\x08\x7e\x62\x4a\x8a\x4b\x79\xe1\x7f\x8b\x83\x80\x0e\xe6" - "\x6f\x3b\xb1\x29\x26\x18\xb6\xfd\x1c\x2f\x8b\x27\xff\x88\xe0\xeb", - .pub_a = "\x85\x20\xf0\x09\x89\x30\xa7\x54\x74\x8b\x7d\xdc\xb4\x3e\xf7\x5a" - "\x0d\xbf\x3a\x0d\x26\x38\x1a\xf4\xeb\xa4\xa9\x8e\xaa\x9b\x4e\x6a", - .pub_b = "\xde\x9e\xdb\x7d\x7b\x7d\xc1\xb4\xd3\x5b\x61\xc2\xec\xe4\x35\x37" - "\x3f\x83\x43\xc8\x5b\x78\x67\x4d\xad\xfc\x7e\x14\x6f\x88\x2b\x4f", - .shared = "\x4a\x5d\x9d\x5b\xa4\xce\x2d\xe1\x72\x8e\x3b\xf4\x80\x35\x0f\x25" - "\xe0\x7e\x21\xc9\x47\xd1\x9e\x33\x76\xf0\x9b\x3c\x1e\x16\x17\x42", + .method = CURVE_25519, + .seed = chunk_from_chars( + 0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, + 0xc1, 0x72, 0x51, 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, + 0xeb, 0xc0, 0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, + 0x2c, 0x2a, /* - */ + 0x5d, 0xab, 0x08, 0x7e, 0x62, 0x4a, 0x8a, 0x4b, 0x79, 0xe1, + 0x7f, 0x8b, 0x83, 0x80, 0x0e, 0xe6, 0x6f, 0x3b, 0xb1, 0x29, + 0x26, 0x18, 0xb6, 0xfd, 0x1c, 0x2f, 0x8b, 0x27, 0xff, 0x88, + 0xe0, 0xeb), + .pub_i = chunk_from_chars( + 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, + 0x7d, 0xdc, 0xb4, 0x3e, 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d, + 0x26, 0x38, 0x1a, 0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, + 0x4e, 0x6a), + .pub_r = chunk_from_chars( + 0xde, 0x9e, 0xdb, 0x7d, 0x7b, 0x7d, 0xc1, 0xb4, 0xd3, 0x5b, + 0x61, 0xc2, 0xec, 0xe4, 0x35, 0x37, 0x3f, 0x83, 0x43, 0xc8, + 0x5b, 0x78, 0x67, 0x4d, 0xad, 0xfc, 0x7e, 0x14, 0x6f, 0x88, + 0x2b, 0x4f), + .shared = chunk_from_chars( + 0x4a, 0x5d, 0x9d, 0x5b, 0xa4, 0xce, 0x2d, 0xe1, 0x72, 0x8e, + 0x3b, 0xf4, 0x80, 0x35, 0x0f, 0x25, 0xe0, 0x7e, 0x21, 0xc9, + 0x47, 0xd1, 0x9e, 0x33, 0x76, 0xf0, 0x9b, 0x3c, 0x1e, 0x16, + 0x17, 0x42) }; /** * From RFC 8031 */ ke_test_vector_t curve25519_2 = { - .method = CURVE_25519, .priv_len = 32, .pub_len = 32, .shared_len = 32, - .priv_a = "\x75\x1f\xb4\x30\x86\x55\xb4\x76\xb6\x78\x9b\x73\x25\xf9\xea\x8c" - "\xdd\xd1\x6a\x58\x53\x3f\xf6\xd9\xe6\x00\x09\x46\x4a\x5f\x9d\x94", - .priv_b = "\x0a\x54\x64\x52\x53\x29\x0d\x60\xdd\xad\xd0\xe0\x30\xba\xcd\x9e" - "\x55\x01\xef\xdc\x22\x07\x55\xa1\xe9\x78\xf1\xb8\x39\xa0\x56\x88", - .pub_a = "\x48\xd5\xdd\xd4\x06\x12\x57\xba\x16\x6f\xa3\xf9\xbb\xdb\x74\xf1" - "\xa4\xe8\x1c\x08\x93\x84\xfa\x77\xf7\x90\x70\x9f\x0d\xfb\xc7\x66", - .pub_b = "\x0b\xe7\xc1\xf5\xaa\xd8\x7d\x7e\x44\x86\x62\x67\x32\x98\xa4\x43" - "\x47\x8b\x85\x97\x45\x17\x9e\xaf\x56\x4c\x79\xc0\xef\x6e\xee\x25", - .shared = "\xc7\x49\x50\x60\x7a\x12\x32\x7f\x32\x04\xd9\x4b\x68\x25\xbf\xb0" - "\x68\xb7\xf8\x31\x9a\x9e\x37\x08\xed\x3d\x43\xce\x81\x30\xc9\x50", + .method = CURVE_25519, + .seed = chunk_from_chars( + 0x75, 0x1f, 0xb4, 0x30, 0x86, 0x55, 0xb4, 0x76, 0xb6, 0x78, + 0x9b, 0x73, 0x25, 0xf9, 0xea, 0x8c, 0xdd, 0xd1, 0x6a, 0x58, + 0x53, 0x3f, 0xf6, 0xd9, 0xe6, 0x00, 0x09, 0x46, 0x4a, 0x5f, + 0x9d, 0x94, /* - */ + 0x0a, 0x54, 0x64, 0x52, 0x53, 0x29, 0x0d, 0x60, 0xdd, 0xad, + 0xd0, 0xe0, 0x30, 0xba, 0xcd, 0x9e, 0x55, 0x01, 0xef, 0xdc, + 0x22, 0x07, 0x55, 0xa1, 0xe9, 0x78, 0xf1, 0xb8, 0x39, 0xa0, + 0x56, 0x88), + .pub_i = chunk_from_chars( + 0x48, 0xd5, 0xdd, 0xd4, 0x06, 0x12, 0x57, 0xba, 0x16, 0x6f, + 0xa3, 0xf9, 0xbb, 0xdb, 0x74, 0xf1, 0xa4, 0xe8, 0x1c, 0x08, + 0x93, 0x84, 0xfa, 0x77, 0xf7, 0x90, 0x70, 0x9f, 0x0d, 0xfb, + 0xc7, 0x66), + .pub_r = chunk_from_chars( + 0x0b, 0xe7, 0xc1, 0xf5, 0xaa, 0xd8, 0x7d, 0x7e, 0x44, 0x86, + 0x62, 0x67, 0x32, 0x98, 0xa4, 0x43, 0x47, 0x8b, 0x85, 0x97, + 0x45, 0x17, 0x9e, 0xaf, 0x56, 0x4c, 0x79, 0xc0, 0xef, 0x6e, + 0xee, 0x25), + .shared = chunk_from_chars( + 0xc7, 0x49, 0x50, 0x60, 0x7a, 0x12, 0x32, 0x7f, 0x32, 0x04, + 0xd9, 0x4b, 0x68, 0x25, 0xbf, 0xb0, 0x68, 0xb7, 0xf8, 0x31, + 0x9a, 0x9e, 0x37, 0x08, 0xed, 0x3d, 0x43, 0xce, 0x81, 0x30, + 0xc9, 0x50) }; diff --git a/src/libstrongswan/plugins/test_vectors/test_vectors/curve448.c b/src/libstrongswan/plugins/test_vectors/test_vectors/curve448.c index 0922b8b4b..2a9aafe64 100644 --- a/src/libstrongswan/plugins/test_vectors/test_vectors/curve448.c +++ b/src/libstrongswan/plugins/test_vectors/test_vectors/curve448.c @@ -1,5 +1,6 @@ /* * Copyright (C) 2018 Tobias Brunner + * Copyright (C) 2019 Andreas Steffen * HSR Hochschule fuer Technik Rapperswil * * This program is free software; you can redistribute it and/or modify it @@ -19,25 +20,39 @@ * From RFC 7748 */ ke_test_vector_t curve448_1 = { - .method = CURVE_448, .priv_len = 56, .pub_len = 56, .shared_len = 56, - .priv_a = "\x9a\x8f\x49\x25\xd1\x51\x9f\x57\x75\xcf\x46\xb0\x4b\x58\x00\xd4" - "\xee\x9e\xe8\xba\xe8\xbc\x55\x65\xd4\x98\xc2\x8d\xd9\xc9\xba\xf5" - "\x74\xa9\x41\x97\x44\x89\x73\x91\x00\x63\x82\xa6\xf1\x27\xab\x1d" - "\x9a\xc2\xd8\xc0\xa5\x98\x72\x6b", - .priv_b = "\x1c\x30\x6a\x7a\xc2\xa0\xe2\xe0\x99\x0b\x29\x44\x70\xcb\xa3\x39" - "\xe6\x45\x37\x72\xb0\x75\x81\x1d\x8f\xad\x0d\x1d\x69\x27\xc1\x20" - "\xbb\x5e\xe8\x97\x2b\x0d\x3e\x21\x37\x4c\x9c\x92\x1b\x09\xd1\xb0" - "\x36\x6f\x10\xb6\x51\x73\x99\x2d", - .pub_a = "\x9b\x08\xf7\xcc\x31\xb7\xe3\xe6\x7d\x22\xd5\xae\xa1\x21\x07\x4a" - "\x27\x3b\xd2\xb8\x3d\xe0\x9c\x63\xfa\xa7\x3d\x2c\x22\xc5\xd9\xbb" - "\xc8\x36\x64\x72\x41\xd9\x53\xd4\x0c\x5b\x12\xda\x88\x12\x0d\x53" - "\x17\x7f\x80\xe5\x32\xc4\x1f\xa0", - .pub_b = "\x3e\xb7\xa8\x29\xb0\xcd\x20\xf5\xbc\xfc\x0b\x59\x9b\x6f\xec\xcf" - "\x6d\xa4\x62\x71\x07\xbd\xb0\xd4\xf3\x45\xb4\x30\x27\xd8\xb9\x72" - "\xfc\x3e\x34\xfb\x42\x32\xa1\x3c\xa7\x06\xdc\xb5\x7a\xec\x3d\xae" - "\x07\xbd\xc1\xc6\x7b\xf3\x36\x09", - .shared = "\x07\xff\xf4\x18\x1a\xc6\xcc\x95\xec\x1c\x16\xa9\x4a\x0f\x74\xd1" - "\x2d\xa2\x32\xce\x40\xa7\x75\x52\x28\x1d\x28\x2b\xb6\x0c\x0b\x56" - "\xfd\x24\x64\xc3\x35\x54\x39\x36\x52\x1c\x24\x40\x30\x85\xd5\x9a" - "\x44\x9a\x50\x37\x51\x4a\x87\x9d", + .method = CURVE_448, + .seed = chunk_from_chars( + 0x9a, 0x8f, 0x49, 0x25, 0xd1, 0x51, 0x9f, 0x57, 0x75, 0xcf, + 0x46, 0xb0, 0x4b, 0x58, 0x00, 0xd4, 0xee, 0x9e, 0xe8, 0xba, + 0xe8, 0xbc, 0x55, 0x65, 0xd4, 0x98, 0xc2, 0x8d, 0xd9, 0xc9, + 0xba, 0xf5, 0x74, 0xa9, 0x41, 0x97, 0x44, 0x89, 0x73, 0x91, + 0x00, 0x63, 0x82, 0xa6, 0xf1, 0x27, 0xab, 0x1d, 0x9a, 0xc2, + 0xd8, 0xc0, 0xa5, 0x98, 0x72, 0x6b, /* - */ + 0x1c, 0x30, 0x6a, 0x7a, 0xc2, 0xa0, 0xe2, 0xe0, 0x99, 0x0b, + 0x29, 0x44, 0x70, 0xcb, 0xa3, 0x39, 0xe6, 0x45, 0x37, 0x72, + 0xb0, 0x75, 0x81, 0x1d, 0x8f, 0xad, 0x0d, 0x1d, 0x69, 0x27, + 0xc1, 0x20, 0xbb, 0x5e, 0xe8, 0x97, 0x2b, 0x0d, 0x3e, 0x21, + 0x37, 0x4c, 0x9c, 0x92, 0x1b, 0x09, 0xd1, 0xb0, 0x36, 0x6f, + 0x10, 0xb6, 0x51, 0x73, 0x99, 0x2d), + .pub_i = chunk_from_chars( + 0x9b, 0x08, 0xf7, 0xcc, 0x31, 0xb7, 0xe3, 0xe6, 0x7d, 0x22, + 0xd5, 0xae, 0xa1, 0x21, 0x07, 0x4a, 0x27, 0x3b, 0xd2, 0xb8, + 0x3d, 0xe0, 0x9c, 0x63, 0xfa, 0xa7, 0x3d, 0x2c, 0x22, 0xc5, + 0xd9, 0xbb, 0xc8, 0x36, 0x64, 0x72, 0x41, 0xd9, 0x53, 0xd4, + 0x0c, 0x5b, 0x12, 0xda, 0x88, 0x12, 0x0d, 0x53, 0x17, 0x7f, + 0x80, 0xe5, 0x32, 0xc4, 0x1f, 0xa0), + .pub_r = chunk_from_chars( + 0x3e, 0xb7, 0xa8, 0x29, 0xb0, 0xcd, 0x20, 0xf5, 0xbc, 0xfc, + 0x0b, 0x59, 0x9b, 0x6f, 0xec, 0xcf, 0x6d, 0xa4, 0x62, 0x71, + 0x07, 0xbd, 0xb0, 0xd4, 0xf3, 0x45, 0xb4, 0x30, 0x27, 0xd8, + 0xb9, 0x72, 0xfc, 0x3e, 0x34, 0xfb, 0x42, 0x32, 0xa1, 0x3c, + 0xa7, 0x06, 0xdc, 0xb5, 0x7a, 0xec, 0x3d, 0xae, 0x07, 0xbd, + 0xc1, 0xc6, 0x7b, 0xf3, 0x36, 0x09), + .shared = chunk_from_chars( + 0x07, 0xff, 0xf4, 0x18, 0x1a, 0xc6, 0xcc, 0x95, 0xec, 0x1c, + 0x16, 0xa9, 0x4a, 0x0f, 0x74, 0xd1, 0x2d, 0xa2, 0x32, 0xce, + 0x40, 0xa7, 0x75, 0x52, 0x28, 0x1d, 0x28, 0x2b, 0xb6, 0x0c, + 0x0b, 0x56, 0xfd, 0x24, 0x64, 0xc3, 0x35, 0x54, 0x39, 0x36, + 0x52, 0x1c, 0x24, 0x40, 0x30, 0x85, 0xd5, 0x9a, 0x44, 0x9a, + 0x50, 0x37, 0x51, 0x4a, 0x87, 0x9d) }; diff --git a/src/libstrongswan/plugins/test_vectors/test_vectors/ecp.c b/src/libstrongswan/plugins/test_vectors/test_vectors/ecp.c index 95b94bc6f..fe72ef36d 100644 --- a/src/libstrongswan/plugins/test_vectors/test_vectors/ecp.c +++ b/src/libstrongswan/plugins/test_vectors/test_vectors/ecp.c @@ -2,6 +2,9 @@ * Copyright (C) 2015 Martin Willi * Copyright (C) 2015 revosec AG * + * Copyright (C) 2019 Andreas Steffen + * HSR Hochschule fuer Technik Rapperswil + * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the Licenseor (at your @@ -20,115 +23,191 @@ */ ke_test_vector_t ecp192 = { - .method = ECP_192_BIT, .priv_len = 24, .pub_len = 48, .shared_len = 24, - .priv_a = "\x32\x3f\xa3\x16\x9d\x8e\x9c\x65\x93\xf5\x94\x76\xbc\x14\x20\x00" - "\xab\x5b\xe0\xe2\x49\xc4\x34\x26", - .priv_b = "\x63\x1f\x95\xbb\x4a\x67\x63\x2c\x9c\x47\x6e\xee\x9a\xb6\x95\xab" - "\x24\x0a\x04\x99\x30\x7f\xcf\x62", - .pub_a = "\xcd\x46\x48\x9e\xcf\xd6\xc1\x05\xe7\xb3\xd3\x25\x66\xe2\xb1\x22" - "\xe2\x49\xab\xaa\xdd\x87\x06\x12\x68\x88\x7b\x48\x77\xdf\x51\xdd" - "\x4d\xc3\xd6\xfd\x11\xf0\xa2\x6f\x8f\xd3\x84\x43\x17\x91\x6e\x9a", - .pub_b = "\x51\x9a\x12\x16\x80\xe0\x04\x54\x66\xba\x21\xdf\x2e\xee\x47\xf5" - "\x97\x3b\x50\x05\x77\xef\x13\xd5\xff\x61\x3a\xb4\xd6\x4c\xee\x3a" - "\x20\x87\x5b\xdb\x10\xf9\x53\xf6\xb3\x0c\xa0\x72\xc6\x0a\xa5\x7f", - .shared = "\xad\x42\x01\x82\x63\x3f\x85\x26\xbf\xe9\x54\xac\xda\x37\x6f\x05" - "\xe5\xff\x4f\x83\x7f\x54\xfe\xbe", + .method = ECP_192_BIT, + .seed = chunk_from_chars( + 0x32, 0x3f, 0xa3, 0x16, 0x9d, 0x8e, 0x9c, 0x65, 0x93, 0xf5, + 0x94, 0x76, 0xbc, 0x14, 0x20, 0x00, 0xab, 0x5b, 0xe0, 0xe2, + 0x49, 0xc4, 0x34, 0x26, /* - */ + 0x63, 0x1f, 0x95, 0xbb, 0x4a, 0x67, 0x63, 0x2c, 0x9c, 0x47, + 0x6e, 0xee, 0x9a, 0xb6, 0x95, 0xab, 0x24, 0x0a, 0x04, 0x99, + 0x30, 0x7f, 0xcf, 0x62), + .pub_i = chunk_from_chars( + 0xcd, 0x46, 0x48, 0x9e, 0xcf, 0xd6, 0xc1, 0x05, 0xe7, 0xb3, + 0xd3, 0x25, 0x66, 0xe2, 0xb1, 0x22, 0xe2, 0x49, 0xab, 0xaa, + 0xdd, 0x87, 0x06, 0x12, 0x68, 0x88, 0x7b, 0x48, 0x77, 0xdf, + 0x51, 0xdd, 0x4d, 0xc3, 0xd6, 0xfd, 0x11, 0xf0, 0xa2, 0x6f, + 0x8f, 0xd3, 0x84, 0x43, 0x17, 0x91, 0x6e, 0x9a), + .pub_r = chunk_from_chars( + 0x51, 0x9a, 0x12, 0x16, 0x80, 0xe0, 0x04, 0x54, 0x66, 0xba, + 0x21, 0xdf, 0x2e, 0xee, 0x47, 0xf5, 0x97, 0x3b, 0x50, 0x05, + 0x77, 0xef, 0x13, 0xd5, 0xff, 0x61, 0x3a, 0xb4, 0xd6, 0x4c, + 0xee, 0x3a, 0x20, 0x87, 0x5b, 0xdb, 0x10, 0xf9, 0x53, 0xf6, + 0xb3, 0x0c, 0xa0, 0x72, 0xc6, 0x0a, 0xa5, 0x7f), + .shared = chunk_from_chars( + 0xad, 0x42, 0x01, 0x82, 0x63, 0x3f, 0x85, 0x26, 0xbf, 0xe9, + 0x54, 0xac, 0xda, 0x37, 0x6f, 0x05, 0xe5, 0xff, 0x4f, 0x83, + 0x7f, 0x54, 0xfe, 0xbe) }; ke_test_vector_t ecp224 = { - .method = ECP_224_BIT, .priv_len = 28, .pub_len = 56, .shared_len = 28, - .priv_a = "\xb5\x58\xeb\x6c\x28\x8d\xa7\x07\xbb\xb4\xf8\xfb\xae\x2a\xb9\xe9" - "\xcb\x62\xe3\xbc\x5c\x75\x73\xe2\x2e\x26\xd3\x7f", - .priv_b = "\xac\x3b\x1a\xdd\x3d\x97\x70\xe6\xf6\xa7\x08\xee\x9f\x3b\x8e\x0a" - "\xb3\xb4\x80\xe9\xf2\x7f\x85\xc8\x8b\x5e\x6d\x18", - .pub_a = "\x49\xdf\xef\x30\x9f\x81\x48\x8c\x30\x4c\xff\x5a\xb3\xee\x5a\x21" - "\x54\x36\x7d\xc7\x83\x31\x50\xe0\xa5\x1f\x3e\xeb\x4f\x2b\x5e\xe4" - "\x57\x62\xc4\xf6\x54\xc1\xa0\xc6\x7f\x54\xcf\x88\xb0\x16\xb5\x1b" - "\xce\x3d\x7c\x22\x8d\x57\xad\xb4", - .pub_b = "\x6b\x3a\xc9\x6a\x8d\x0c\xde\x6a\x55\x99\xbe\x80\x32\xed\xf1\x0c" - "\x16\x2d\x0a\x8a\xd2\x19\x50\x6d\xcd\x42\xa2\x07\xd4\x91\xbe\x99" - "\xc2\x13\xa7\xd1\xca\x37\x06\xde\xbf\xe3\x05\xf3\x61\xaf\xcb\xb3" - "\x3e\x26\x09\xc8\xb1\x61\x8a\xd5", - .shared = "\x52\x27\x2f\x50\xf4\x6f\x4e\xdc\x91\x51\x56\x90\x92\xf4\x6d\xf2" - "\xd9\x6e\xcc\x3b\x6d\xc1\x71\x4a\x4e\xa9\x49\xfa", + .method = ECP_224_BIT, + .seed = chunk_from_chars( + 0xb5, 0x58, 0xeb, 0x6c, 0x28, 0x8d, 0xa7, 0x07, 0xbb, 0xb4, + 0xf8, 0xfb, 0xae, 0x2a, 0xb9, 0xe9, 0xcb, 0x62, 0xe3, 0xbc, + 0x5c, 0x75, 0x73, 0xe2, 0x2e, 0x26, 0xd3, 0x7f, /* - */ + 0xac, 0x3b, 0x1a, 0xdd, 0x3d, 0x97, 0x70, 0xe6, 0xf6, 0xa7, + 0x08, 0xee, 0x9f, 0x3b, 0x8e, 0x0a, 0xb3, 0xb4, 0x80, 0xe9, + 0xf2, 0x7f, 0x85, 0xc8, 0x8b, 0x5e, 0x6d, 0x18), + .pub_i = chunk_from_chars( + 0x49, 0xdf, 0xef, 0x30, 0x9f, 0x81, 0x48, 0x8c, 0x30, 0x4c, + 0xff, 0x5a, 0xb3, 0xee, 0x5a, 0x21, 0x54, 0x36, 0x7d, 0xc7, + 0x83, 0x31, 0x50, 0xe0, 0xa5, 0x1f, 0x3e, 0xeb, 0x4f, 0x2b, + 0x5e, 0xe4, 0x57, 0x62, 0xc4, 0xf6, 0x54, 0xc1, 0xa0, 0xc6, + 0x7f, 0x54, 0xcf, 0x88, 0xb0, 0x16, 0xb5, 0x1b, 0xce, 0x3d, + 0x7c, 0x22, 0x8d, 0x57, 0xad, 0xb4), + .pub_r = chunk_from_chars( + 0x6b, 0x3a, 0xc9, 0x6a, 0x8d, 0x0c, 0xde, 0x6a, 0x55, 0x99, + 0xbe, 0x80, 0x32, 0xed, 0xf1, 0x0c, 0x16, 0x2d, 0x0a, 0x8a, + 0xd2, 0x19, 0x50, 0x6d, 0xcd, 0x42, 0xa2, 0x07, 0xd4, 0x91, + 0xbe, 0x99, 0xc2, 0x13, 0xa7, 0xd1, 0xca, 0x37, 0x06, 0xde, + 0xbf, 0xe3, 0x05, 0xf3, 0x61, 0xaf, 0xcb, 0xb3, 0x3e, 0x26, + 0x09, 0xc8, 0xb1, 0x61, 0x8a, 0xd5), + .shared = chunk_from_chars( + 0x52, 0x27, 0x2f, 0x50, 0xf4, 0x6f, 0x4e, 0xdc, 0x91, 0x51, + 0x56, 0x90, 0x92, 0xf4, 0x6d, 0xf2, 0xd9, 0x6e, 0xcc, 0x3b, + 0x6d, 0xc1, 0x71, 0x4a, 0x4e, 0xa9, 0x49, 0xfa) }; ke_test_vector_t ecp256 = { - .method = ECP_256_BIT, .priv_len = 32, .pub_len = 64, .shared_len = 32, - .priv_a = "\x81\x42\x64\x14\x5f\x2f\x56\xf2\xe9\x6a\x8e\x33\x7a\x12\x84\x99" - "\x3f\xaf\x43\x2a\x5a\xbc\xe5\x9e\x86\x7b\x72\x91\xd5\x07\xa3\xaf", - .priv_b = "\x2c\xe1\x78\x8e\xc1\x97\xe0\x96\xdb\x95\xa2\x00\xcc\x0a\xb2\x6a" - "\x19\xce\x6b\xcc\xad\x56\x2b\x8e\xee\x1b\x59\x37\x61\xcf\x7f\x41", - .pub_a = "\x2a\xf5\x02\xf3\xbe\x89\x52\xf2\xc9\xb5\xa8\xd4\x16\x0d\x09\xe9" - "\x71\x65\xbe\x50\xbc\x42\xae\x4a\x5e\x8d\x3b\x4b\xa8\x3a\xeb\x15" - "\xeb\x0f\xaf\x4c\xa9\x86\xc4\xd3\x86\x81\xa0\xf9\x87\x2d\x79\xd5" - "\x67\x95\xbd\x4b\xff\x6e\x6d\xe3\xc0\xf5\x01\x5e\xce\x5e\xfd\x85", - .pub_b = "\xb1\x20\xde\x4a\xa3\x64\x92\x79\x53\x46\xe8\xde\x6c\x2c\x86\x46" - "\xae\x06\xaa\xea\x27\x9f\xa7\x75\xb3\xab\x07\x15\xf6\xce\x51\xb0" - "\x9f\x1b\x7e\xec\xe2\x0d\x7b\x5e\xd8\xec\x68\x5f\xa3\xf0\x71\xd8" - "\x37\x27\x02\x70\x92\xa8\x41\x13\x85\xc3\x4d\xde\x57\x08\xb2\xb6", - .shared = "\xdd\x0f\x53\x96\x21\x9d\x1e\xa3\x93\x31\x04\x12\xd1\x9a\x08\xf1" - "\xf5\x81\x1e\x9d\xc8\xec\x8e\xea\x7f\x80\xd2\x1c\x82\x0c\x27\x88", + .method = ECP_256_BIT, + .seed = chunk_from_chars( + 0x81, 0x42, 0x64, 0x14, 0x5f, 0x2f, 0x56, 0xf2, 0xe9, 0x6a, + 0x8e, 0x33, 0x7a, 0x12, 0x84, 0x99, 0x3f, 0xaf, 0x43, 0x2a, + 0x5a, 0xbc, 0xe5, 0x9e, 0x86, 0x7b, 0x72, 0x91, 0xd5, 0x07, + 0xa3, 0xaf, /* - */ + 0x2c, 0xe1, 0x78, 0x8e, 0xc1, 0x97, 0xe0, 0x96, 0xdb, 0x95, + 0xa2, 0x00, 0xcc, 0x0a, 0xb2, 0x6a, 0x19, 0xce, 0x6b, 0xcc, + 0xad, 0x56, 0x2b, 0x8e, 0xee, 0x1b, 0x59, 0x37, 0x61, 0xcf, + 0x7f, 0x41), + .pub_i = chunk_from_chars( + 0x2a, 0xf5, 0x02, 0xf3, 0xbe, 0x89, 0x52, 0xf2, 0xc9, 0xb5, + 0xa8, 0xd4, 0x16, 0x0d, 0x09, 0xe9, 0x71, 0x65, 0xbe, 0x50, + 0xbc, 0x42, 0xae, 0x4a, 0x5e, 0x8d, 0x3b, 0x4b, 0xa8, 0x3a, + 0xeb, 0x15, 0xeb, 0x0f, 0xaf, 0x4c, 0xa9, 0x86, 0xc4, 0xd3, + 0x86, 0x81, 0xa0, 0xf9, 0x87, 0x2d, 0x79, 0xd5, 0x67, 0x95, + 0xbd, 0x4b, 0xff, 0x6e, 0x6d, 0xe3, 0xc0, 0xf5, 0x01, 0x5e, + 0xce, 0x5e, 0xfd, 0x85), + .pub_r = chunk_from_chars( + 0xb1, 0x20, 0xde, 0x4a, 0xa3, 0x64, 0x92, 0x79, 0x53, 0x46, + 0xe8, 0xde, 0x6c, 0x2c, 0x86, 0x46, 0xae, 0x06, 0xaa, 0xea, + 0x27, 0x9f, 0xa7, 0x75, 0xb3, 0xab, 0x07, 0x15, 0xf6, 0xce, + 0x51, 0xb0, 0x9f, 0x1b, 0x7e, 0xec, 0xe2, 0x0d, 0x7b, 0x5e, + 0xd8, 0xec, 0x68, 0x5f, 0xa3, 0xf0, 0x71, 0xd8, 0x37, 0x27, + 0x02, 0x70, 0x92, 0xa8, 0x41, 0x13, 0x85, 0xc3, 0x4d, 0xde, + 0x57, 0x08, 0xb2, 0xb6), + .shared = chunk_from_chars( + 0xdd, 0x0f, 0x53, 0x96, 0x21, 0x9d, 0x1e, 0xa3, 0x93, 0x31, + 0x04, 0x12, 0xd1, 0x9a, 0x08, 0xf1, 0xf5, 0x81, 0x1e, 0x9d, + 0xc8, 0xec, 0x8e, 0xea, 0x7f, 0x80, 0xd2, 0x1c, 0x82, 0x0c, + 0x27, 0x88) }; ke_test_vector_t ecp384 = { - .method = ECP_384_BIT, .priv_len = 48, .pub_len = 96, .shared_len = 48, - .priv_a = "\xd2\x73\x35\xea\x71\x66\x4a\xf2\x44\xdd\x14\xe9\xfd\x12\x60\x71" - "\x5d\xfd\x8a\x79\x65\x57\x1c\x48\xd7\x09\xee\x7a\x79\x62\xa1\x56" - "\xd7\x06\xa9\x0c\xbc\xb5\xdf\x29\x86\xf0\x5f\xea\xdb\x93\x76\xf1", - .priv_b = "\x52\xd1\x79\x1f\xdb\x4b\x70\xf8\x9c\x0f\x00\xd4\x56\xc2\xf7\x02" - "\x3b\x61\x25\x26\x2c\x36\xa7\xdf\x1f\x80\x23\x11\x21\xcc\xe3\xd3" - "\x9b\xe5\x2e\x00\xc1\x94\xa4\x13\x2c\x4a\x6c\x76\x8b\xcd\x94\xd2", - .pub_a = "\x79\x31\x48\xf1\x78\x76\x34\xd5\xda\x4c\x6d\x90\x74\x41\x7d\x05" - "\xe0\x57\xab\x62\xf8\x20\x54\xd1\x0e\xe6\xb0\x40\x3d\x62\x79\x54" - "\x7e\x6a\x8e\xa9\xd1\xfd\x77\x42\x7d\x01\x6f\xe2\x7a\x8b\x8c\x66" - "\xc6\xc4\x12\x94\x33\x1d\x23\xe6\xf4\x80\xf4\xfb\x4c\xd4\x05\x04" - "\xc9\x47\x39\x2e\x94\xf4\xc3\xf0\x6b\x8f\x39\x8b\xb2\x9e\x42\x36" - "\x8f\x7a\x68\x59\x23\xde\x3b\x67\xba\xce\xd2\x14\xa1\xa1\xd1\x28", - .pub_b = "\x5c\xd4\x2a\xb9\xc4\x1b\x53\x47\xf7\x4b\x8d\x4e\xfb\x70\x8b\x3d" - "\x5b\x36\xdb\x65\x91\x53\x59\xb4\x4a\xbc\x17\x64\x7b\x6b\x99\x99" - "\x78\x9d\x72\xa8\x48\x65\xae\x2f\x22\x3f\x12\xb5\xa1\xab\xc1\x20" - "\xe1\x71\x45\x8f\xea\xa9\x39\xaa\xa3\xa8\xbf\xac\x46\xb4\x04\xbd" - "\x8f\x6d\x5b\x34\x8c\x0f\xa4\xd8\x0c\xec\xa1\x63\x56\xca\x93\x32" - "\x40\xbd\xe8\x72\x34\x15\xa8\xec\xe0\x35\xb0\xed\xf3\x67\x55\xde", - .shared = "\x5e\xa1\xfc\x4a\xf7\x25\x6d\x20\x55\x98\x1b\x11\x05\x75\xe0\xa8" - "\xca\xe5\x31\x60\x13\x7d\x90\x4c\x59\xd9\x26\xeb\x1b\x84\x56\xe4" - "\x27\xaa\x8a\x45\x40\x88\x4c\x37\xde\x15\x9a\x58\x02\x8a\xbc\x0e", + .method = ECP_384_BIT, + .seed = chunk_from_chars( + 0xd2, 0x73, 0x35, 0xea, 0x71, 0x66, 0x4a, 0xf2, 0x44, 0xdd, + 0x14, 0xe9, 0xfd, 0x12, 0x60, 0x71, 0x5d, 0xfd, 0x8a, 0x79, + 0x65, 0x57, 0x1c, 0x48, 0xd7, 0x09, 0xee, 0x7a, 0x79, 0x62, + 0xa1, 0x56, 0xd7, 0x06, 0xa9, 0x0c, 0xbc, 0xb5, 0xdf, 0x29, + 0x86, 0xf0, 0x5f, 0xea, 0xdb, 0x93, 0x76, 0xf1, /* - */ + 0x52, 0xd1, 0x79, 0x1f, 0xdb, 0x4b, 0x70, 0xf8, 0x9c, 0x0f, + 0x00, 0xd4, 0x56, 0xc2, 0xf7, 0x02, 0x3b, 0x61, 0x25, 0x26, + 0x2c, 0x36, 0xa7, 0xdf, 0x1f, 0x80, 0x23, 0x11, 0x21, 0xcc, + 0xe3, 0xd3, 0x9b, 0xe5, 0x2e, 0x00, 0xc1, 0x94, 0xa4, 0x13, + 0x2c, 0x4a, 0x6c, 0x76, 0x8b, 0xcd, 0x94, 0xd2), + .pub_i = chunk_from_chars( + 0x79, 0x31, 0x48, 0xf1, 0x78, 0x76, 0x34, 0xd5, 0xda, 0x4c, + 0x6d, 0x90, 0x74, 0x41, 0x7d, 0x05, 0xe0, 0x57, 0xab, 0x62, + 0xf8, 0x20, 0x54, 0xd1, 0x0e, 0xe6, 0xb0, 0x40, 0x3d, 0x62, + 0x79, 0x54, 0x7e, 0x6a, 0x8e, 0xa9, 0xd1, 0xfd, 0x77, 0x42, + 0x7d, 0x01, 0x6f, 0xe2, 0x7a, 0x8b, 0x8c, 0x66, 0xc6, 0xc4, + 0x12, 0x94, 0x33, 0x1d, 0x23, 0xe6, 0xf4, 0x80, 0xf4, 0xfb, + 0x4c, 0xd4, 0x05, 0x04, 0xc9, 0x47, 0x39, 0x2e, 0x94, 0xf4, + 0xc3, 0xf0, 0x6b, 0x8f, 0x39, 0x8b, 0xb2, 0x9e, 0x42, 0x36, + 0x8f, 0x7a, 0x68, 0x59, 0x23, 0xde, 0x3b, 0x67, 0xba, 0xce, + 0xd2, 0x14, 0xa1, 0xa1, 0xd1, 0x28), + .pub_r = chunk_from_chars( + 0x5c, 0xd4, 0x2a, 0xb9, 0xc4, 0x1b, 0x53, 0x47, 0xf7, 0x4b, + 0x8d, 0x4e, 0xfb, 0x70, 0x8b, 0x3d, 0x5b, 0x36, 0xdb, 0x65, + 0x91, 0x53, 0x59, 0xb4, 0x4a, 0xbc, 0x17, 0x64, 0x7b, 0x6b, + 0x99, 0x99, 0x78, 0x9d, 0x72, 0xa8, 0x48, 0x65, 0xae, 0x2f, + 0x22, 0x3f, 0x12, 0xb5, 0xa1, 0xab, 0xc1, 0x20, 0xe1, 0x71, + 0x45, 0x8f, 0xea, 0xa9, 0x39, 0xaa, 0xa3, 0xa8, 0xbf, 0xac, + 0x46, 0xb4, 0x04, 0xbd, 0x8f, 0x6d, 0x5b, 0x34, 0x8c, 0x0f, + 0xa4, 0xd8, 0x0c, 0xec, 0xa1, 0x63, 0x56, 0xca, 0x93, 0x32, + 0x40, 0xbd, 0xe8, 0x72, 0x34, 0x15, 0xa8, 0xec, 0xe0, 0x35, + 0xb0, 0xed, 0xf3, 0x67, 0x55, 0xde), + .shared = chunk_from_chars( + 0x5e, 0xa1, 0xfc, 0x4a, 0xf7, 0x25, 0x6d, 0x20, 0x55, 0x98, + 0x1b, 0x11, 0x05, 0x75, 0xe0, 0xa8, 0xca, 0xe5, 0x31, 0x60, + 0x13, 0x7d, 0x90, 0x4c, 0x59, 0xd9, 0x26, 0xeb, 0x1b, 0x84, + 0x56, 0xe4, 0x27, 0xaa, 0x8a, 0x45, 0x40, 0x88, 0x4c, 0x37, + 0xde, 0x15, 0x9a, 0x58, 0x02, 0x8a, 0xbc, 0x0e) }; ke_test_vector_t ecp521 = { - .method = ECP_521_BIT, .priv_len = 66, .pub_len = 132, .shared_len = 66, - .priv_a = "\x01\x13\xf8\x2d\xa8\x25\x73\x5e\x3d\x97\x27\x66\x83\xb2\xb7\x42" - "\x77\xba\xd2\x73\x35\xea\x71\x66\x4a\xf2\x43\x0c\xc4\xf3\x34\x59" - "\xb9\x66\x9e\xe7\x8b\x3f\xfb\x9b\x86\x83\x01\x5d\x34\x4d\xcb\xfe" - "\xf6\xfb\x9a\xf4\xc6\xc4\x70\xbe\x25\x45\x16\xcd\x3c\x1a\x1f\xb4" - "\x73\x62", - .priv_b = "\x00\xce\xe3\x48\x0d\x86\x45\xa1\x7d\x24\x9f\x27\x76\xd2\x8b\xae" - "\x61\x69\x52\xd1\x79\x1f\xdb\x4b\x70\xf7\xc3\x37\x87\x32\xaa\x1b" - "\x22\x92\x84\x48\xbc\xd1\xdc\x24\x96\xd4\x35\xb0\x10\x48\x06\x6e" - "\xbe\x4f\x72\x90\x3c\x36\x1b\x1a\x9d\xc1\x19\x3d\xc2\xc9\xd0\x89" - "\x1b\x96", - .pub_a = "\x01\xeb\xb3\x4d\xd7\x57\x21\xab\xf8\xad\xc9\xdb\xed\x17\x88\x9c" - "\xbb\x97\x65\xd9\x0a\x7c\x60\xf2\xce\xf0\x07\xbb\x0f\x2b\x26\xe1" - "\x48\x81\xfd\x44\x42\xe6\x89\xd6\x1c\xb2\xdd\x04\x6e\xe3\x0e\x3f" - "\xfd\x20\xf9\xa4\x5b\xbd\xf6\x41\x3d\x58\x3a\x2d\xbf\x59\x92\x4f" - "\xd3\x5c\x00\xf6\xb6\x32\xd1\x94\xc0\x38\x8e\x22\xd8\x43\x7e\x55" - "\x8c\x55\x2a\xe1\x95\xad\xfd\x15\x3f\x92\xd7\x49\x08\x35\x1b\x2f" - "\x8c\x4e\xda\x94\xed\xb0\x91\x6d\x1b\x53\xc0\x20\xb5\xee\xca\xed" - "\x1a\x5f\xc3\x8a\x23\x3e\x48\x30\x58\x7b\xb2\xee\x34\x89\xb3\xb4" - "\x2a\x5a\x86\xa4", - .pub_b = "\x01\x0e\xbf\xaf\xc6\xe8\x5e\x08\xd2\x4b\xff\xfc\xc1\xa4\x51\x1d" - "\xb0\xe6\x34\xbe\xeb\x1b\x6d\xec\x8c\x59\x39\xae\x44\x76\x62\x01" - "\xaf\x62\x00\x43\x0b\xa9\x7c\x8a\xc6\xa0\xe9\xf0\x8b\x33\xce\x7e" - "\x9f\xee\xb5\xba\x4e\xe5\xe0\xd8\x15\x10\xc2\x42\x95\xb8\xa0\x8d" - "\x02\x35\x00\xa4\xa6\xec\x30\x0d\xf9\xe2\x57\xb0\x37\x2b\x5e\x7a" - "\xbf\xef\x09\x34\x36\x71\x9a\x77\x88\x7e\xbb\x0b\x18\xcf\x80\x99" - "\xb9\xf4\x21\x2b\x6e\x30\xa1\x41\x9c\x18\xe0\x29\xd3\x68\x63\xcc" - "\x9d\x44\x8f\x4d\xba\x4d\x2a\x0e\x60\x71\x1b\xe5\x72\x91\x5f\xbd" - "\x4f\xef\x26\x95", - .shared = "\x00\xcd\xea\x89\x62\x1c\xfa\x46\xb1\x32\xf9\xe4\xcf\xe2\x26\x1c" - "\xde\x2d\x43\x68\xeb\x56\x56\x63\x4c\x7c\xc9\x8c\x7a\x00\xcd\xe5" - "\x4e\xd1\x86\x6a\x0d\xd3\xe6\x12\x6c\x9d\x2f\x84\x5d\xaf\xf8\x2c" - "\xeb\x1d\xa0\x8f\x5d\x87\x52\x1b\xb0\xeb\xec\xa7\x79\x11\x16\x9c" - "\x20\xcc", + .method = ECP_521_BIT, + .seed = chunk_from_chars( + 0x01, 0x13, 0xf8, 0x2d, 0xa8, 0x25, 0x73, 0x5e, 0x3d, 0x97, + 0x27, 0x66, 0x83, 0xb2, 0xb7, 0x42, 0x77, 0xba, 0xd2, 0x73, + 0x35, 0xea, 0x71, 0x66, 0x4a, 0xf2, 0x43, 0x0c, 0xc4, 0xf3, + 0x34, 0x59, 0xb9, 0x66, 0x9e, 0xe7, 0x8b, 0x3f, 0xfb, 0x9b, + 0x86, 0x83, 0x01, 0x5d, 0x34, 0x4d, 0xcb, 0xfe, 0xf6, 0xfb, + 0x9a, 0xf4, 0xc6, 0xc4, 0x70, 0xbe, 0x25, 0x45, 0x16, 0xcd, + 0x3c, 0x1a, 0x1f, 0xb4, 0x73, 0x62, /* - */ + 0x00, 0xce, 0xe3, 0x48, 0x0d, 0x86, 0x45, 0xa1, 0x7d, 0x24, + 0x9f, 0x27, 0x76, 0xd2, 0x8b, 0xae, 0x61, 0x69, 0x52, 0xd1, + 0x79, 0x1f, 0xdb, 0x4b, 0x70, 0xf7, 0xc3, 0x37, 0x87, 0x32, + 0xaa, 0x1b, 0x22, 0x92, 0x84, 0x48, 0xbc, 0xd1, 0xdc, 0x24, + 0x96, 0xd4, 0x35, 0xb0, 0x10, 0x48, 0x06, 0x6e, 0xbe, 0x4f, + 0x72, 0x90, 0x3c, 0x36, 0x1b, 0x1a, 0x9d, 0xc1, 0x19, 0x3d, + 0xc2, 0xc9, 0xd0, 0x89, 0x1b, 0x96), + .pub_i = chunk_from_chars( + 0x01, 0xeb, 0xb3, 0x4d, 0xd7, 0x57, 0x21, 0xab, 0xf8, 0xad, + 0xc9, 0xdb, 0xed, 0x17, 0x88, 0x9c, 0xbb, 0x97, 0x65, 0xd9, + 0x0a, 0x7c, 0x60, 0xf2, 0xce, 0xf0, 0x07, 0xbb, 0x0f, 0x2b, + 0x26, 0xe1, 0x48, 0x81, 0xfd, 0x44, 0x42, 0xe6, 0x89, 0xd6, + 0x1c, 0xb2, 0xdd, 0x04, 0x6e, 0xe3, 0x0e, 0x3f, 0xfd, 0x20, + 0xf9, 0xa4, 0x5b, 0xbd, 0xf6, 0x41, 0x3d, 0x58, 0x3a, 0x2d, + 0xbf, 0x59, 0x92, 0x4f, 0xd3, 0x5c, 0x00, 0xf6, 0xb6, 0x32, + 0xd1, 0x94, 0xc0, 0x38, 0x8e, 0x22, 0xd8, 0x43, 0x7e, 0x55, + 0x8c, 0x55, 0x2a, 0xe1, 0x95, 0xad, 0xfd, 0x15, 0x3f, 0x92, + 0xd7, 0x49, 0x08, 0x35, 0x1b, 0x2f, 0x8c, 0x4e, 0xda, 0x94, /* 100 */ + 0xed, 0xb0, 0x91, 0x6d, 0x1b, 0x53, 0xc0, 0x20, 0xb5, 0xee, + 0xca, 0xed, 0x1a, 0x5f, 0xc3, 0x8a, 0x23, 0x3e, 0x48, 0x30, + 0x58, 0x7b, 0xb2, 0xee, 0x34, 0x89, 0xb3, 0xb4, 0x2a, 0x5a, + 0x86, 0xa4), + .pub_r = chunk_from_chars( + 0x01, 0x0e, 0xbf, 0xaf, 0xc6, 0xe8, 0x5e, 0x08, 0xd2, 0x4b, + 0xff, 0xfc, 0xc1, 0xa4, 0x51, 0x1d, 0xb0, 0xe6, 0x34, 0xbe, + 0xeb, 0x1b, 0x6d, 0xec, 0x8c, 0x59, 0x39, 0xae, 0x44, 0x76, + 0x62, 0x01, 0xaf, 0x62, 0x00, 0x43, 0x0b, 0xa9, 0x7c, 0x8a, + 0xc6, 0xa0, 0xe9, 0xf0, 0x8b, 0x33, 0xce, 0x7e, 0x9f, 0xee, + 0xb5, 0xba, 0x4e, 0xe5, 0xe0, 0xd8, 0x15, 0x10, 0xc2, 0x42, + 0x95, 0xb8, 0xa0, 0x8d, 0x02, 0x35, 0x00, 0xa4, 0xa6, 0xec, + 0x30, 0x0d, 0xf9, 0xe2, 0x57, 0xb0, 0x37, 0x2b, 0x5e, 0x7a, + 0xbf, 0xef, 0x09, 0x34, 0x36, 0x71, 0x9a, 0x77, 0x88, 0x7e, + 0xbb, 0x0b, 0x18, 0xcf, 0x80, 0x99, 0xb9, 0xf4, 0x21, 0x2b, /* 100 */ + 0x6e, 0x30, 0xa1, 0x41, 0x9c, 0x18, 0xe0, 0x29, 0xd3, 0x68, + 0x63, 0xcc, 0x9d, 0x44, 0x8f, 0x4d, 0xba, 0x4d, 0x2a, 0x0e, + 0x60, 0x71, 0x1b, 0xe5, 0x72, 0x91, 0x5f, 0xbd, 0x4f, 0xef, + 0x26, 0x95), + .shared = chunk_from_chars( + 0x00, 0xcd, 0xea, 0x89, 0x62, 0x1c, 0xfa, 0x46, 0xb1, 0x32, + 0xf9, 0xe4, 0xcf, 0xe2, 0x26, 0x1c, 0xde, 0x2d, 0x43, 0x68, + 0xeb, 0x56, 0x56, 0x63, 0x4c, 0x7c, 0xc9, 0x8c, 0x7a, 0x00, + 0xcd, 0xe5, 0x4e, 0xd1, 0x86, 0x6a, 0x0d, 0xd3, 0xe6, 0x12, + 0x6c, 0x9d, 0x2f, 0x84, 0x5d, 0xaf, 0xf8, 0x2c, 0xeb, 0x1d, + 0xa0, 0x8f, 0x5d, 0x87, 0x52, 0x1b, 0xb0, 0xeb, 0xec, 0xa7, + 0x79, 0x11, 0x16, 0x9c, 0x20, 0xcc) }; diff --git a/src/libstrongswan/plugins/test_vectors/test_vectors/ecpbp.c b/src/libstrongswan/plugins/test_vectors/test_vectors/ecpbp.c index efbd20283..b4c683e87 100644 --- a/src/libstrongswan/plugins/test_vectors/test_vectors/ecpbp.c +++ b/src/libstrongswan/plugins/test_vectors/test_vectors/ecpbp.c @@ -2,6 +2,9 @@ * Copyright (C) 2015 Martin Willi * Copyright (C) 2015 revosec AG * + * Copyright (C) 2019 Andreas Steffen + * HSR Hochschule fuer Technik Rapperswil + * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the Licenseor (at your @@ -20,94 +23,162 @@ */ ke_test_vector_t ecp224bp = { - .method = ECP_224_BP, .priv_len = 28, .pub_len = 56, .shared_len = 28, - .priv_a = "\x7c\x4b\x7a\x2c\x8a\x4b\xad\x1f\xbb\x7d\x79\xcc\x09\x55\xdb\x7c" - "\x6a\x46\x60\xca\x64\xcc\x47\x78\x15\x9b\x49\x5e", - .priv_b = "\x63\x97\x6d\x4a\xae\x6c\xd0\xf6\xdd\x18\xde\xfe\xf5\x5d\x96\x56" - "\x9d\x05\x07\xc0\x3e\x74\xd6\x48\x6f\xfa\x28\xfb", - .pub_a = "\xb1\x04\xa6\x7a\x6f\x6e\x85\xe1\x4e\xc1\x82\x5e\x15\x39\xe8\xec" - "\xdb\xbf\x58\x49\x22\x36\x7d\xd8\x8c\x6b\xdc\xf2\x46\xd7\x82\xe7" - "\xfd\xb5\xf6\x0c\xd8\x40\x43\x01\xac\x59\x49\xc5\x8e\xdb\x26\xbc" - "\x68\xba\x07\x69\x5b\x75\x0a\x94", - .pub_b = "\x2a\x97\x08\x9a\x92\x96\x14\x7b\x71\xb2\x1a\x4b\x57\x4e\x12\x78" - "\x24\x5b\x53\x6f\x14\xd8\xc2\xb9\xd0\x7a\x87\x4e\x9b\x90\x0d\x7c" - "\x77\xa7\x09\xa7\x97\x27\x6b\x8c\xa1\xba\x61\xbb\x95\xb5\x46\xfc" - "\x29\xf8\x62\xe4\x4d\x59\xd2\x5b", - .shared = "\x31\x2d\xfd\x98\x78\x3f\x9f\xb7\x7b\x97\x04\x94\x5a\x73\xbe\xb6" - "\xdc\xcb\xe3\xb6\x5d\x0f\x96\x7d\xca\xb5\x74\xeb", + .method = ECP_224_BP, + .seed = chunk_from_chars( + 0x7c, 0x4b, 0x7a, 0x2c, 0x8a, 0x4b, 0xad, 0x1f, 0xbb, 0x7d, + 0x79, 0xcc, 0x09, 0x55, 0xdb, 0x7c, 0x6a, 0x46, 0x60, 0xca, + 0x64, 0xcc, 0x47, 0x78, 0x15, 0x9b, 0x49, 0x5e, /* - */ + 0x63, 0x97, 0x6d, 0x4a, 0xae, 0x6c, 0xd0, 0xf6, 0xdd, 0x18, + 0xde, 0xfe, 0xf5, 0x5d, 0x96, 0x56, 0x9d, 0x05, 0x07, 0xc0, + 0x3e, 0x74, 0xd6, 0x48, 0x6f, 0xfa, 0x28, 0xfb), + .pub_i = chunk_from_chars( + 0xb1, 0x04, 0xa6, 0x7a, 0x6f, 0x6e, 0x85, 0xe1, 0x4e, 0xc1, + 0x82, 0x5e, 0x15, 0x39, 0xe8, 0xec, 0xdb, 0xbf, 0x58, 0x49, + 0x22, 0x36, 0x7d, 0xd8, 0x8c, 0x6b, 0xdc, 0xf2, 0x46, 0xd7, + 0x82, 0xe7, 0xfd, 0xb5, 0xf6, 0x0c, 0xd8, 0x40, 0x43, 0x01, + 0xac, 0x59, 0x49, 0xc5, 0x8e, 0xdb, 0x26, 0xbc, 0x68, 0xba, + 0x07, 0x69, 0x5b, 0x75, 0x0a, 0x94), + .pub_r = chunk_from_chars( + 0x2a, 0x97, 0x08, 0x9a, 0x92, 0x96, 0x14, 0x7b, 0x71, 0xb2, + 0x1a, 0x4b, 0x57, 0x4e, 0x12, 0x78, 0x24, 0x5b, 0x53, 0x6f, + 0x14, 0xd8, 0xc2, 0xb9, 0xd0, 0x7a, 0x87, 0x4e, 0x9b, 0x90, + 0x0d, 0x7c, 0x77, 0xa7, 0x09, 0xa7, 0x97, 0x27, 0x6b, 0x8c, + 0xa1, 0xba, 0x61, 0xbb, 0x95, 0xb5, 0x46, 0xfc, 0x29, 0xf8, + 0x62, 0xe4, 0x4d, 0x59, 0xd2, 0x5b), + .shared = chunk_from_chars( + 0x31, 0x2d, 0xfd, 0x98, 0x78, 0x3f, 0x9f, 0xb7, 0x7b, 0x97, + 0x04, 0x94, 0x5a, 0x73, 0xbe, 0xb6, 0xdc, 0xcb, 0xe3, 0xb6, + 0x5d, 0x0f, 0x96, 0x7d, 0xca, 0xb5, 0x74, 0xeb) }; ke_test_vector_t ecp256bp = { - .method = ECP_256_BP, .priv_len = 32, .pub_len = 64, .shared_len = 32, - .priv_a = "\x81\xdb\x1e\xe1\x00\x15\x0f\xf2\xea\x33\x8d\x70\x82\x71\xbe\x38" - "\x30\x0c\xb5\x42\x41\xd7\x99\x50\xf7\x7b\x06\x30\x39\x80\x4f\x1d", - .priv_b = "\x55\xe4\x0b\xc4\x1e\x37\xe3\xe2\xad\x25\xc3\xc6\x65\x45\x11\xff" - "\xa8\x47\x4a\x91\xa0\x03\x20\x87\x59\x38\x52\xd3\xe7\xd7\x6b\xd3", - .pub_a = "\x44\x10\x6e\x91\x3f\x92\xbc\x02\xa1\x70\x5d\x99\x53\xa8\x41\x4d" - "\xb9\x5e\x1a\xaa\x49\xe8\x1d\x9e\x85\xf9\x29\xa8\xe3\x10\x0b\xe5" - "\x8a\xb4\x84\x6f\x11\xca\xcc\xb7\x3c\xe4\x9c\xbd\xd1\x20\xf5\xa9" - "\x00\xa6\x9f\xd3\x2c\x27\x22\x23\xf7\x89\xef\x10\xeb\x08\x9b\xdc", - .pub_b = "\x8d\x2d\x68\x8c\x6c\xf9\x3e\x11\x60\xad\x04\xcc\x44\x29\x11\x7d" - "\xc2\xc4\x18\x25\xe1\xe9\xfc\xa0\xad\xdd\x34\xe6\xf1\xb3\x9f\x7b" - "\x99\x0c\x57\x52\x08\x12\xbe\x51\x26\x41\xe4\x70\x34\x83\x21\x06" - "\xbc\x7d\x3e\x8d\xd0\xe4\xc7\xf1\x13\x6d\x70\x06\x54\x7c\xec\x6a", - .shared = "\x89\xaf\xc3\x9d\x41\xd3\xb3\x27\x81\x4b\x80\x94\x0b\x04\x25\x90" - "\xf9\x65\x56\xec\x91\xe6\xae\x79\x39\xbc\xe3\x1f\x3a\x18\xbf\x2b", + .method = ECP_256_BP, + .seed = chunk_from_chars( + 0x81, 0xdb, 0x1e, 0xe1, 0x00, 0x15, 0x0f, 0xf2, 0xea, 0x33, + 0x8d, 0x70, 0x82, 0x71, 0xbe, 0x38, 0x30, 0x0c, 0xb5, 0x42, + 0x41, 0xd7, 0x99, 0x50, 0xf7, 0x7b, 0x06, 0x30, 0x39, 0x80, + 0x4f, 0x1d, /* - */ + 0x55, 0xe4, 0x0b, 0xc4, 0x1e, 0x37, 0xe3, 0xe2, 0xad, 0x25, + 0xc3, 0xc6, 0x65, 0x45, 0x11, 0xff, 0xa8, 0x47, 0x4a, 0x91, + 0xa0, 0x03, 0x20, 0x87, 0x59, 0x38, 0x52, 0xd3, 0xe7, 0xd7, + 0x6b, 0xd3), + .pub_i = chunk_from_chars( + 0x44, 0x10, 0x6e, 0x91, 0x3f, 0x92, 0xbc, 0x02, 0xa1, 0x70, + 0x5d, 0x99, 0x53, 0xa8, 0x41, 0x4d, 0xb9, 0x5e, 0x1a, 0xaa, + 0x49, 0xe8, 0x1d, 0x9e, 0x85, 0xf9, 0x29, 0xa8, 0xe3, 0x10, + 0x0b, 0xe5, 0x8a, 0xb4, 0x84, 0x6f, 0x11, 0xca, 0xcc, 0xb7, + 0x3c, 0xe4, 0x9c, 0xbd, 0xd1, 0x20, 0xf5, 0xa9, 0x00, 0xa6, + 0x9f, 0xd3, 0x2c, 0x27, 0x22, 0x23, 0xf7, 0x89, 0xef, 0x10, + 0xeb, 0x08, 0x9b, 0xdc), + .pub_r = chunk_from_chars( + 0x8d, 0x2d, 0x68, 0x8c, 0x6c, 0xf9, 0x3e, 0x11, 0x60, 0xad, + 0x04, 0xcc, 0x44, 0x29, 0x11, 0x7d, 0xc2, 0xc4, 0x18, 0x25, + 0xe1, 0xe9, 0xfc, 0xa0, 0xad, 0xdd, 0x34, 0xe6, 0xf1, 0xb3, + 0x9f, 0x7b, 0x99, 0x0c, 0x57, 0x52, 0x08, 0x12, 0xbe, 0x51, + 0x26, 0x41, 0xe4, 0x70, 0x34, 0x83, 0x21, 0x06, 0xbc, 0x7d, + 0x3e, 0x8d, 0xd0, 0xe4, 0xc7, 0xf1, 0x13, 0x6d, 0x70, 0x06, + 0x54, 0x7c, 0xec, 0x6a), + .shared = chunk_from_chars( + 0x89, 0xaf, 0xc3, 0x9d, 0x41, 0xd3, 0xb3, 0x27, 0x81, 0x4b, + 0x80, 0x94, 0x0b, 0x04, 0x25, 0x90, 0xf9, 0x65, 0x56, 0xec, + 0x91, 0xe6, 0xae, 0x79, 0x39, 0xbc, 0xe3, 0x1f, 0x3a, 0x18, + 0xbf, 0x2b) }; ke_test_vector_t ecp384bp = { - .method = ECP_384_BP, .priv_len = 48, .pub_len = 96, .shared_len = 48, - .priv_a = "\x1e\x20\xf5\xe0\x48\xa5\x88\x6f\x1f\x15\x7c\x74\xe9\x1b\xde\x2b" - "\x98\xc8\xb5\x2d\x58\xe5\x00\x3d\x57\x05\x3f\xc4\xb0\xbd\x65\xd6" - "\xf1\x5e\xb5\xd1\xee\x16\x10\xdf\x87\x07\x95\x14\x36\x27\xd0\x42", - .priv_b = "\x03\x26\x40\xbc\x60\x03\xc5\x92\x60\xf7\x25\x0c\x3d\xb5\x8c\xe6" - "\x47\xf9\x8e\x12\x60\xac\xce\x4a\xcd\xa3\xdd\x86\x9f\x74\xe0\x1f" - "\x8b\xa5\xe0\x32\x43\x09\xdb\x6a\x98\x31\x49\x7a\xba\xc9\x66\x70", - .pub_a = "\x68\xb6\x65\xdd\x91\xc1\x95\x80\x06\x50\xcd\xd3\x63\xc6\x25\xf4" - "\xe7\x42\xe8\x13\x46\x67\xb7\x67\xb1\xb4\x76\x79\x35\x88\xf8\x85" - "\xab\x69\x8c\x85\x2d\x4a\x6e\x77\xa2\x52\xd6\x38\x0f\xca\xf0\x68" - "\x55\xbc\x91\xa3\x9c\x9e\xc0\x1d\xee\x36\x01\x7b\x7d\x67\x3a\x93" - "\x12\x36\xd2\xf1\xf5\xc8\x39\x42\xd0\x49\xe3\xfa\x20\x60\x74\x93" - "\xe0\xd0\x38\xff\x2f\xd3\x0c\x2a\xb6\x7d\x15\xc8\x5f\x7f\xaa\x59", - .pub_b = "\x4d\x44\x32\x6f\x26\x9a\x59\x7a\x5b\x58\xbb\xa5\x65\xda\x55\x56" - "\xed\x7f\xd9\xa8\xa9\xeb\x76\xc2\x5f\x46\xdb\x69\xd1\x9d\xc8\xce" - "\x6a\xd1\x8e\x40\x4b\x15\x73\x8b\x20\x86\xdf\x37\xe7\x1d\x1e\xb4" - "\x62\xd6\x92\x13\x6d\xe5\x6c\xbe\x93\xbf\x5f\xa3\x18\x8e\xf5\x8b" - "\xc8\xa3\xa0\xec\x6c\x1e\x15\x1a\x21\x03\x8a\x42\xe9\x18\x53\x29" - "\xb5\xb2\x75\x90\x3d\x19\x2f\x8d\x4e\x1f\x32\xfe\x9c\xc7\x8c\x48", - .shared = "\x0b\xd9\xd3\xa7\xea\x0b\x3d\x51\x9d\x09\xd8\xe4\x8d\x07\x85\xfb" - "\x74\x4a\x6b\x35\x5e\x63\x04\xbc\x51\xc2\x29\xfb\xbc\xe2\x39\xbb" - "\xad\xf6\x40\x37\x15\xc3\x5d\x4f\xb2\xa5\x44\x4f\x57\x5d\x4f\x42", + .method = ECP_384_BP, + .seed = chunk_from_chars( + 0x1e, 0x20, 0xf5, 0xe0, 0x48, 0xa5, 0x88, 0x6f, 0x1f, 0x15, + 0x7c, 0x74, 0xe9, 0x1b, 0xde, 0x2b, 0x98, 0xc8, 0xb5, 0x2d, + 0x58, 0xe5, 0x00, 0x3d, 0x57, 0x05, 0x3f, 0xc4, 0xb0, 0xbd, + 0x65, 0xd6, 0xf1, 0x5e, 0xb5, 0xd1, 0xee, 0x16, 0x10, 0xdf, + 0x87, 0x07, 0x95, 0x14, 0x36, 0x27, 0xd0, 0x42, /* - */ + 0x03, 0x26, 0x40, 0xbc, 0x60, 0x03, 0xc5, 0x92, 0x60, 0xf7, + 0x25, 0x0c, 0x3d, 0xb5, 0x8c, 0xe6, 0x47, 0xf9, 0x8e, 0x12, + 0x60, 0xac, 0xce, 0x4a, 0xcd, 0xa3, 0xdd, 0x86, 0x9f, 0x74, + 0xe0, 0x1f, 0x8b, 0xa5, 0xe0, 0x32, 0x43, 0x09, 0xdb, 0x6a, + 0x98, 0x31, 0x49, 0x7a, 0xba, 0xc9, 0x66, 0x70), + .pub_i = chunk_from_chars( + 0x68, 0xb6, 0x65, 0xdd, 0x91, 0xc1, 0x95, 0x80, 0x06, 0x50, + 0xcd, 0xd3, 0x63, 0xc6, 0x25, 0xf4, 0xe7, 0x42, 0xe8, 0x13, + 0x46, 0x67, 0xb7, 0x67, 0xb1, 0xb4, 0x76, 0x79, 0x35, 0x88, + 0xf8, 0x85, 0xab, 0x69, 0x8c, 0x85, 0x2d, 0x4a, 0x6e, 0x77, + 0xa2, 0x52, 0xd6, 0x38, 0x0f, 0xca, 0xf0, 0x68, 0x55, 0xbc, + 0x91, 0xa3, 0x9c, 0x9e, 0xc0, 0x1d, 0xee, 0x36, 0x01, 0x7b, + 0x7d, 0x67, 0x3a, 0x93, 0x12, 0x36, 0xd2, 0xf1, 0xf5, 0xc8, + 0x39, 0x42, 0xd0, 0x49, 0xe3, 0xfa, 0x20, 0x60, 0x74, 0x93, + 0xe0, 0xd0, 0x38, 0xff, 0x2f, 0xd3, 0x0c, 0x2a, 0xb6, 0x7d, + 0x15, 0xc8, 0x5f, 0x7f, 0xaa, 0x59), + .pub_r = chunk_from_chars( + 0x4d, 0x44, 0x32, 0x6f, 0x26, 0x9a, 0x59, 0x7a, 0x5b, 0x58, + 0xbb, 0xa5, 0x65, 0xda, 0x55, 0x56, 0xed, 0x7f, 0xd9, 0xa8, + 0xa9, 0xeb, 0x76, 0xc2, 0x5f, 0x46, 0xdb, 0x69, 0xd1, 0x9d, + 0xc8, 0xce, 0x6a, 0xd1, 0x8e, 0x40, 0x4b, 0x15, 0x73, 0x8b, + 0x20, 0x86, 0xdf, 0x37, 0xe7, 0x1d, 0x1e, 0xb4, 0x62, 0xd6, + 0x92, 0x13, 0x6d, 0xe5, 0x6c, 0xbe, 0x93, 0xbf, 0x5f, 0xa3, + 0x18, 0x8e, 0xf5, 0x8b, 0xc8, 0xa3, 0xa0, 0xec, 0x6c, 0x1e, + 0x15, 0x1a, 0x21, 0x03, 0x8a, 0x42, 0xe9, 0x18, 0x53, 0x29, + 0xb5, 0xb2, 0x75, 0x90, 0x3d, 0x19, 0x2f, 0x8d, 0x4e, 0x1f, + 0x32, 0xfe, 0x9c, 0xc7, 0x8c, 0x48), + .shared = chunk_from_chars( + 0x0b, 0xd9, 0xd3, 0xa7, 0xea, 0x0b, 0x3d, 0x51, 0x9d, 0x09, + 0xd8, 0xe4, 0x8d, 0x07, 0x85, 0xfb, 0x74, 0x4a, 0x6b, 0x35, + 0x5e, 0x63, 0x04, 0xbc, 0x51, 0xc2, 0x29, 0xfb, 0xbc, 0xe2, + 0x39, 0xbb, 0xad, 0xf6, 0x40, 0x37, 0x15, 0xc3, 0x5d, 0x4f, + 0xb2, 0xa5, 0x44, 0x4f, 0x57, 0x5d, 0x4f, 0x42) }; ke_test_vector_t ecp512bp = { - .method = ECP_512_BP, .priv_len = 64, .pub_len = 128, .shared_len = 64, - .priv_a = "\x16\x30\x2f\xf0\xdb\xbb\x5a\x8d\x73\x3d\xab\x71\x41\xc1\xb4\x5a" - "\xcb\xc8\x71\x59\x39\x67\x7f\x6a\x56\x85\x0a\x38\xbd\x87\xbd\x59" - "\xb0\x9e\x80\x27\x96\x09\xff\x33\x3e\xb9\xd4\xc0\x61\x23\x1f\xb2" - "\x6f\x92\xee\xb0\x49\x82\xa5\xf1\xd1\x76\x4c\xad\x57\x66\x54\x22", - .priv_b = "\x23\x0e\x18\xe1\xbc\xc8\x8a\x36\x2f\xa5\x4e\x4e\xa3\x90\x20\x09" - "\x29\x2f\x7f\x80\x33\x62\x4f\xd4\x71\xb5\xd8\xac\xe4\x9d\x12\xcf" - "\xab\xbc\x19\x96\x3d\xab\x8e\x2f\x1e\xba\x00\xbf\xfb\x29\xe4\xd7" - "\x2d\x13\xf2\x22\x45\x62\xf4\x05\xcb\x80\x50\x36\x66\xb2\x54\x29", - .pub_a = "\x0a\x42\x05\x17\xe4\x06\xaa\xc0\xac\xdc\xe9\x0f\xcd\x71\x48\x77" - "\x18\xd3\xb9\x53\xef\xd7\xfb\xec\x5f\x7f\x27\xe2\x8c\x61\x49\x99" - "\x93\x97\xe9\x1e\x02\x9e\x06\x45\x7d\xb2\xd3\xe6\x40\x66\x8b\x39" - "\x2c\x2a\x7e\x73\x7a\x7f\x0b\xf0\x44\x36\xd1\x16\x40\xfd\x09\xfd" - "\x72\xe6\x88\x2e\x8d\xb2\x8a\xad\x36\x23\x7c\xd2\x5d\x58\x0d\xb2" - "\x37\x83\x96\x1c\x8d\xc5\x2d\xfa\x2e\xc1\x38\xad\x47\x2a\x0f\xce" - "\xf3\x88\x7c\xf6\x2b\x62\x3b\x2a\x87\xde\x5c\x58\x83\x01\xea\x3e" - "\x5f\xc2\x69\xb3\x73\xb6\x07\x24\xf5\xe8\x2a\x6a\xd1\x47\xfd\xe7", - .pub_b = "\x9d\x45\xf6\x6d\xe5\xd6\x7e\x2e\x6d\xb6\xe9\x3a\x59\xce\x0b\xb4" - "\x81\x06\x09\x7f\xf7\x8a\x08\x1d\xe7\x81\xcd\xb3\x1f\xce\x8c\xcb" - "\xaa\xea\x8d\xd4\x32\x0c\x41\x19\xf1\xe9\xcd\x43\x7a\x2e\xab\x37" - "\x31\xfa\x96\x68\xab\x26\x8d\x87\x1d\xed\xa5\x5a\x54\x73\x19\x9f" - "\x2f\xdc\x31\x30\x95\xbc\xdd\x5f\xb3\xa9\x16\x36\xf0\x7a\x95\x9c" - "\x8e\x86\xb5\x63\x6a\x1e\x93\x0e\x83\x96\x04\x9c\xb4\x81\x96\x1d" - "\x36\x5c\xc1\x14\x53\xa0\x6c\x71\x98\x35\x47\x5b\x12\xcb\x52\xfc" - "\x3c\x38\x3b\xce\x35\xe2\x7e\xf1\x94\x51\x2b\x71\x87\x62\x85\xfa", - .shared = "\xa7\x92\x70\x98\x65\x5f\x1f\x99\x76\xfa\x50\xa9\xd5\x66\x86\x5d" - "\xc5\x30\x33\x18\x46\x38\x1c\x87\x25\x6b\xaf\x32\x26\x24\x4b\x76" - "\xd3\x64\x03\xc0\x24\xd7\xbb\xf0\xaa\x08\x03\xea\xff\x40\x5d\x3d" - "\x24\xf1\x1a\x9b\x5c\x0b\xef\x67\x9f\xe1\x45\x4b\x21\xc4\xcd\x1f", + .method = ECP_512_BP, + .seed = chunk_from_chars( + 0x16, 0x30, 0x2f, 0xf0, 0xdb, 0xbb, 0x5a, 0x8d, 0x73, 0x3d, + 0xab, 0x71, 0x41, 0xc1, 0xb4, 0x5a, 0xcb, 0xc8, 0x71, 0x59, + 0x39, 0x67, 0x7f, 0x6a, 0x56, 0x85, 0x0a, 0x38, 0xbd, 0x87, + 0xbd, 0x59, 0xb0, 0x9e, 0x80, 0x27, 0x96, 0x09, 0xff, 0x33, + 0x3e, 0xb9, 0xd4, 0xc0, 0x61, 0x23, 0x1f, 0xb2, 0x6f, 0x92, + 0xee, 0xb0, 0x49, 0x82, 0xa5, 0xf1, 0xd1, 0x76, 0x4c, 0xad, + 0x57, 0x66, 0x54, 0x22, /* - */ + 0x23, 0x0e, 0x18, 0xe1, 0xbc, 0xc8, 0x8a, 0x36, 0x2f, 0xa5, + 0x4e, 0x4e, 0xa3, 0x90, 0x20, 0x09, 0x29, 0x2f, 0x7f, 0x80, + 0x33, 0x62, 0x4f, 0xd4, 0x71, 0xb5, 0xd8, 0xac, 0xe4, 0x9d, + 0x12, 0xcf, 0xab, 0xbc, 0x19, 0x96, 0x3d, 0xab, 0x8e, 0x2f, + 0x1e, 0xba, 0x00, 0xbf, 0xfb, 0x29, 0xe4, 0xd7, 0x2d, 0x13, + 0xf2, 0x22, 0x45, 0x62, 0xf4, 0x05, 0xcb, 0x80, 0x50, 0x36, + 0x66, 0xb2, 0x54, 0x29), + .pub_i = chunk_from_chars( + 0x0a, 0x42, 0x05, 0x17, 0xe4, 0x06, 0xaa, 0xc0, 0xac, 0xdc, + 0xe9, 0x0f, 0xcd, 0x71, 0x48, 0x77, 0x18, 0xd3, 0xb9, 0x53, + 0xef, 0xd7, 0xfb, 0xec, 0x5f, 0x7f, 0x27, 0xe2, 0x8c, 0x61, + 0x49, 0x99, 0x93, 0x97, 0xe9, 0x1e, 0x02, 0x9e, 0x06, 0x45, + 0x7d, 0xb2, 0xd3, 0xe6, 0x40, 0x66, 0x8b, 0x39, 0x2c, 0x2a, + 0x7e, 0x73, 0x7a, 0x7f, 0x0b, 0xf0, 0x44, 0x36, 0xd1, 0x16, + 0x40, 0xfd, 0x09, 0xfd, 0x72, 0xe6, 0x88, 0x2e, 0x8d, 0xb2, + 0x8a, 0xad, 0x36, 0x23, 0x7c, 0xd2, 0x5d, 0x58, 0x0d, 0xb2, + 0x37, 0x83, 0x96, 0x1c, 0x8d, 0xc5, 0x2d, 0xfa, 0x2e, 0xc1, + 0x38, 0xad, 0x47, 0x2a, 0x0f, 0xce, 0xf3, 0x88, 0x7c, 0xf6, /* 100 */ + 0x2b, 0x62, 0x3b, 0x2a, 0x87, 0xde, 0x5c, 0x58, 0x83, 0x01, + 0xea, 0x3e, 0x5f, 0xc2, 0x69, 0xb3, 0x73, 0xb6, 0x07, 0x24, + 0xf5, 0xe8, 0x2a, 0x6a, 0xd1, 0x47, 0xfd, 0xe7), + .pub_r = chunk_from_chars( + 0x9d, 0x45, 0xf6, 0x6d, 0xe5, 0xd6, 0x7e, 0x2e, 0x6d, 0xb6, + 0xe9, 0x3a, 0x59, 0xce, 0x0b, 0xb4, 0x81, 0x06, 0x09, 0x7f, + 0xf7, 0x8a, 0x08, 0x1d, 0xe7, 0x81, 0xcd, 0xb3, 0x1f, 0xce, + 0x8c, 0xcb, 0xaa, 0xea, 0x8d, 0xd4, 0x32, 0x0c, 0x41, 0x19, + 0xf1, 0xe9, 0xcd, 0x43, 0x7a, 0x2e, 0xab, 0x37, 0x31, 0xfa, + 0x96, 0x68, 0xab, 0x26, 0x8d, 0x87, 0x1d, 0xed, 0xa5, 0x5a, + 0x54, 0x73, 0x19, 0x9f, 0x2f, 0xdc, 0x31, 0x30, 0x95, 0xbc, + 0xdd, 0x5f, 0xb3, 0xa9, 0x16, 0x36, 0xf0, 0x7a, 0x95, 0x9c, + 0x8e, 0x86, 0xb5, 0x63, 0x6a, 0x1e, 0x93, 0x0e, 0x83, 0x96, + 0x04, 0x9c, 0xb4, 0x81, 0x96, 0x1d, 0x36, 0x5c, 0xc1, 0x14, /* 100 */ + 0x53, 0xa0, 0x6c, 0x71, 0x98, 0x35, 0x47, 0x5b, 0x12, 0xcb, + 0x52, 0xfc, 0x3c, 0x38, 0x3b, 0xce, 0x35, 0xe2, 0x7e, 0xf1, + 0x94, 0x51, 0x2b, 0x71, 0x87, 0x62, 0x85, 0xfa), + .shared = chunk_from_chars( + 0xa7, 0x92, 0x70, 0x98, 0x65, 0x5f, 0x1f, 0x99, 0x76, 0xfa, + 0x50, 0xa9, 0xd5, 0x66, 0x86, 0x5d, 0xc5, 0x30, 0x33, 0x18, + 0x46, 0x38, 0x1c, 0x87, 0x25, 0x6b, 0xaf, 0x32, 0x26, 0x24, + 0x4b, 0x76, 0xd3, 0x64, 0x03, 0xc0, 0x24, 0xd7, 0xbb, 0xf0, + 0xaa, 0x08, 0x03, 0xea, 0xff, 0x40, 0x5d, 0x3d, 0x24, 0xf1, + 0x1a, 0x9b, 0x5c, 0x0b, 0xef, 0x67, 0x9f, 0xe1, 0x45, 0x4b, + 0x21, 0xc4, 0xcd, 0x1f) }; diff --git a/src/libstrongswan/plugins/test_vectors/test_vectors/modp.c b/src/libstrongswan/plugins/test_vectors/test_vectors/modp.c index cf1ea2a9b..c95eed396 100644 --- a/src/libstrongswan/plugins/test_vectors/test_vectors/modp.c +++ b/src/libstrongswan/plugins/test_vectors/test_vectors/modp.c @@ -2,6 +2,9 @@ * Copyright (C) 2015 Martin Willi * Copyright (C) 2015 revosec AG * + * Copyright (C) 2019 Andreas Steffen + * HSR Hochschule fuer Technik Rapperswil + * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the Licenseor (at your @@ -21,711 +24,1171 @@ */ ke_test_vector_t modp768 = { - .method = MODP_768_BIT, .priv_len = 32, .pub_len = 96, .shared_len = 96, - .priv_a = "\x60\x91\xff\xc6\xde\x28\xc1\xcc\xc7\xc6\x5d\xa6\x11\xab\xfa\xe8" - "\x6a\x10\x74\xb2\x22\x43\xe3\x70\x6c\xb6\xde\x2f\xe2\x9d\x11\x42", - .priv_b = "\x76\xe0\x2f\xc3\xea\xbe\x6a\x0f\xce\xd6\xc3\x1e\x59\x45\xd1\x67" - "\xfa\xd0\x02\x00\xb4\xaf\x12\xcd\x6f\xc6\xd7\xe3\x81\x48\x62\x78", - .pub_a = "\xd7\xa2\x54\x62\x99\x01\xc8\x89\x53\x2c\x3e\x44\xda\x3d\x0b\x7e" - "\x92\x27\x37\x70\xc6\x26\xc3\x91\x90\x52\x2d\xab\x67\x07\xca\xff" - "\x36\x59\x10\x9f\x2f\x43\x24\xa4\x17\xeb\x7d\xc4\x56\x3a\x09\xba" - "\x04\xcd\x3c\x9b\x27\xd3\xc1\x22\x7e\xb1\x9d\xcb\x69\xfe\xf3\xb6" - "\xe2\xaa\x13\x81\x23\x24\x06\x64\x2d\xd1\x50\x78\x57\x07\xf4\x7c" - "\x3d\x74\x8a\x3d\x6b\x96\xd0\x00\xc5\x2c\x99\xd1\x0b\x65\xf2\xd1", - .pub_b = "\xf0\xe9\xdc\x78\x10\x4c\x97\x99\xb6\x70\x74\xb0\x7d\x8f\x09\x7a" - "\xa8\x82\xbd\xe4\x64\xc8\xeb\x9a\x0a\xcd\xef\x13\x86\x19\x4f\x49" - "\xc0\x63\xc6\x7d\x68\xf1\x4c\x5e\x3b\x04\x19\x57\x67\x8e\xa7\xcb" - "\x39\x7d\x87\x07\x20\x81\x9e\xa1\x08\x5a\x28\xd8\x13\xe3\x73\x9a" - "\x64\x00\x6f\x24\x66\xe8\x6c\x09\xe0\xc6\x9c\x2c\xa4\xf1\x0a\x04" - "\xc4\x9b\xb3\x01\x86\xbd\xfa\xb5\x4d\xf4\x20\x83\x14\xd9\x3c\x52", - .shared = "\x29\xcb\x14\x7d\x2a\x2b\x0d\x02\x59\x4d\xb0\x7b\xf0\x44\x70\x5c" - "\xb1\x44\x89\xd0\xf0\xa9\x32\xcc\x87\xf6\x04\x05\x1d\x1c\xb6\xe2" - "\xbe\x90\x39\x16\xe2\x5c\x65\x39\x93\xc8\x05\x5e\xd4\x37\x6c\xa4" - "\xdb\xa8\x40\x12\x39\x1a\x92\xa3\xf3\x42\x64\xaf\x64\x1f\xd8\x18" - "\xe1\xba\x4e\x99\x34\x30\x09\x97\xd7\x32\xd7\x0d\x0d\x73\x73\xcd" - "\x3d\xaa\xad\x22\xe8\x68\xb7\xe2\x50\x02\x9d\x30\x7e\xe5\x41\x48", + .method = MODP_768_BIT, + .seed = chunk_from_chars( + 0x60, 0x91, 0xff, 0xc6, 0xde, 0x28, 0xc1, 0xcc, 0xc7, 0xc6, + 0x5d, 0xa6, 0x11, 0xab, 0xfa, 0xe8, 0x6a, 0x10, 0x74, 0xb2, + 0x22, 0x43, 0xe3, 0x70, 0x6c, 0xb6, 0xde, 0x2f, 0xe2, 0x9d, + 0x11, 0x42, /* - */ + 0x76, 0xe0, 0x2f, 0xc3, 0xea, 0xbe, 0x6a, 0x0f, 0xce, 0xd6, + 0xc3, 0x1e, 0x59, 0x45, 0xd1, 0x67, 0xfa, 0xd0, 0x02, 0x00, + 0xb4, 0xaf, 0x12, 0xcd, 0x6f, 0xc6, 0xd7, 0xe3, 0x81, 0x48, + 0x62, 0x78), + .pub_i = chunk_from_chars( + 0xd7, 0xa2, 0x54, 0x62, 0x99, 0x01, 0xc8, 0x89, 0x53, 0x2c, + 0x3e, 0x44, 0xda, 0x3d, 0x0b, 0x7e, 0x92, 0x27, 0x37, 0x70, + 0xc6, 0x26, 0xc3, 0x91, 0x90, 0x52, 0x2d, 0xab, 0x67, 0x07, + 0xca, 0xff, 0x36, 0x59, 0x10, 0x9f, 0x2f, 0x43, 0x24, 0xa4, + 0x17, 0xeb, 0x7d, 0xc4, 0x56, 0x3a, 0x09, 0xba, 0x04, 0xcd, + 0x3c, 0x9b, 0x27, 0xd3, 0xc1, 0x22, 0x7e, 0xb1, 0x9d, 0xcb, + 0x69, 0xfe, 0xf3, 0xb6, 0xe2, 0xaa, 0x13, 0x81, 0x23, 0x24, + 0x06, 0x64, 0x2d, 0xd1, 0x50, 0x78, 0x57, 0x07, 0xf4, 0x7c, + 0x3d, 0x74, 0x8a, 0x3d, 0x6b, 0x96, 0xd0, 0x00, 0xc5, 0x2c, + 0x99, 0xd1, 0x0b, 0x65, 0xf2, 0xd1), + .pub_r = chunk_from_chars( + 0xf0, 0xe9, 0xdc, 0x78, 0x10, 0x4c, 0x97, 0x99, 0xb6, 0x70, + 0x74, 0xb0, 0x7d, 0x8f, 0x09, 0x7a, 0xa8, 0x82, 0xbd, 0xe4, + 0x64, 0xc8, 0xeb, 0x9a, 0x0a, 0xcd, 0xef, 0x13, 0x86, 0x19, + 0x4f, 0x49, 0xc0, 0x63, 0xc6, 0x7d, 0x68, 0xf1, 0x4c, 0x5e, + 0x3b, 0x04, 0x19, 0x57, 0x67, 0x8e, 0xa7, 0xcb, 0x39, 0x7d, + 0x87, 0x07, 0x20, 0x81, 0x9e, 0xa1, 0x08, 0x5a, 0x28, 0xd8, + 0x13, 0xe3, 0x73, 0x9a, 0x64, 0x00, 0x6f, 0x24, 0x66, 0xe8, + 0x6c, 0x09, 0xe0, 0xc6, 0x9c, 0x2c, 0xa4, 0xf1, 0x0a, 0x04, + 0xc4, 0x9b, 0xb3, 0x01, 0x86, 0xbd, 0xfa, 0xb5, 0x4d, 0xf4, + 0x20, 0x83, 0x14, 0xd9, 0x3c, 0x52), + .shared = chunk_from_chars( + 0x29, 0xcb, 0x14, 0x7d, 0x2a, 0x2b, 0x0d, 0x02, 0x59, 0x4d, + 0xb0, 0x7b, 0xf0, 0x44, 0x70, 0x5c, 0xb1, 0x44, 0x89, 0xd0, + 0xf0, 0xa9, 0x32, 0xcc, 0x87, 0xf6, 0x04, 0x05, 0x1d, 0x1c, + 0xb6, 0xe2, 0xbe, 0x90, 0x39, 0x16, 0xe2, 0x5c, 0x65, 0x39, + 0x93, 0xc8, 0x05, 0x5e, 0xd4, 0x37, 0x6c, 0xa4, 0xdb, 0xa8, + 0x40, 0x12, 0x39, 0x1a, 0x92, 0xa3, 0xf3, 0x42, 0x64, 0xaf, + 0x64, 0x1f, 0xd8, 0x18, 0xe1, 0xba, 0x4e, 0x99, 0x34, 0x30, + 0x09, 0x97, 0xd7, 0x32, 0xd7, 0x0d, 0x0d, 0x73, 0x73, 0xcd, + 0x3d, 0xaa, 0xad, 0x22, 0xe8, 0x68, 0xb7, 0xe2, 0x50, 0x02, + 0x9d, 0x30, 0x7e, 0xe5, 0x41, 0x48) }; ke_test_vector_t modp1024 = { - .method = MODP_1024_BIT, .priv_len = 32, .pub_len = 128, .shared_len = 128, - .priv_a = "\xe5\x3c\x20\x5d\xa0\xd8\xe4\xbf\xb4\x17\x49\x44\x32\x0f\xc6\xe4" - "\xea\x66\xfe\x44\xe3\xc9\x31\xac\x5d\xa1\x45\x0a\xea\x47\xeb\xcf", - .priv_b = "\x7f\x9a\xf7\x21\xeb\x7c\xd2\xa9\x00\xa3\x6e\x39\x9e\xbc\x5c\x65" - "\xee\xcc\xe6\x62\x9c\x8e\x1c\x5a\x7f\xf3\x32\x93\x64\x5f\xd3\xe3", - .pub_a = "\x66\x61\x7c\x9b\xbe\x91\xee\x99\x00\xd8\x06\x41\x5b\x73\x84\xec" - "\xb0\xb6\xb8\x0a\x39\xbd\x5b\x07\x03\x96\xee\x32\x37\x5a\x8f\x68" - "\x37\x6b\x35\x2b\x97\xba\xf3\x2f\x95\xc4\xd1\x8c\x06\xab\x96\xbf" - "\xe3\xf3\x75\x2d\xf1\xe3\xc5\x57\x41\xb6\xf4\x24\x41\x17\xee\xbd" - "\xa1\x01\x59\x83\xc6\xba\x00\x8f\xe8\x9f\xe5\x1c\xf4\xc9\x69\x25" - "\x92\xeb\xf7\x42\x43\x6c\x39\x3d\xf6\x1a\x60\xcc\xc6\x4f\xd7\x90" - "\x7a\x6d\x26\x26\x7c\x0f\x15\x56\x23\x0c\x3e\x33\x2b\x2e\x11\xd1" - "\x18\xa6\x98\x25\x89\x79\x3a\x2f\x6d\x66\xb8\x66\x76\xba\xe4\x7a", - .pub_b = "\x7b\x90\x10\x60\x9e\xbf\x2c\x49\x70\x17\x45\x8a\xfa\xab\x42\x02" - "\x88\x5d\x25\xde\x7b\x5e\x5c\xe9\xb0\x5b\xd4\x42\xa3\xe9\x7b\x52" - "\xce\xa7\x60\xd7\xdb\xcb\x21\xdd\x71\xd8\x0c\xd4\x34\x7c\xaa\x9e" - "\xdf\xbc\x2d\xf4\xc1\xcd\xc1\x66\x9b\x8a\xd2\x44\xeb\x34\x5b\x33" - "\x1d\x87\x54\x92\x88\x3d\xf0\x4a\x3d\x0b\x1a\x8b\x89\x27\xd5\x09" - "\x91\xfe\x03\xe7\x35\x7e\xb6\xbd\xfc\xe3\xd8\xc6\x84\xc9\x86\x1b" - "\xc5\xce\x03\x96\x2f\xfb\x87\xbf\x05\xda\xbd\x5a\x37\x27\x99\x4d" - "\xde\xe5\xd3\xc6\xec\xc5\x89\x85\x99\x91\xb9\x32\x55\x76\x1f\xd5", - .shared = "\x95\x79\x0f\x5c\x46\xae\x7c\xa1\xa4\x71\xdd\x78\x6a\xa8\xe4\x44" - "\x07\x3e\xce\xc9\x69\x5d\x00\x46\x20\xcd\x7c\x9d\x36\x09\xa6\x97" - "\x3c\x89\xa2\x30\x75\x09\x35\x63\x8b\x86\xd1\xe6\x5b\x27\xb7\x84" - "\x88\x81\xf9\x01\x3a\xbd\x03\x62\x80\xd1\x86\x2b\xb0\x3c\xa6\x0b" - "\xa9\x0b\x70\xf9\xae\x7e\xdf\x71\xff\x80\xf5\xa7\xee\xfb\xe2\x67" - "\x29\xb5\xbb\xb1\xbb\x1f\xeb\x0d\x24\x0e\x53\xc9\xd7\x4b\x4f\xe9" - "\xd2\x62\xb5\x3b\xd5\xd8\xa7\x38\x3f\x90\xf0\x1e\x35\x96\x47\xd0" - "\x48\x02\xd7\x4a\x4f\x75\x3b\x29\x4a\x96\x50\x3f\x26\x05\xd3\xf1", + .method = MODP_1024_BIT, + .seed = chunk_from_chars( + 0xe5, 0x3c, 0x20, 0x5d, 0xa0, 0xd8, 0xe4, 0xbf, 0xb4, 0x17, + 0x49, 0x44, 0x32, 0x0f, 0xc6, 0xe4, 0xea, 0x66, 0xfe, 0x44, + 0xe3, 0xc9, 0x31, 0xac, 0x5d, 0xa1, 0x45, 0x0a, 0xea, 0x47, + 0xeb, 0xcf, /* - */ + 0x7f, 0x9a, 0xf7, 0x21, 0xeb, 0x7c, 0xd2, 0xa9, 0x00, 0xa3, + 0x6e, 0x39, 0x9e, 0xbc, 0x5c, 0x65, 0xee, 0xcc, 0xe6, 0x62, + 0x9c, 0x8e, 0x1c, 0x5a, 0x7f, 0xf3, 0x32, 0x93, 0x64, 0x5f, + 0xd3, 0xe3), + .pub_i = chunk_from_chars( + 0x66, 0x61, 0x7c, 0x9b, 0xbe, 0x91, 0xee, 0x99, 0x00, 0xd8, + 0x06, 0x41, 0x5b, 0x73, 0x84, 0xec, 0xb0, 0xb6, 0xb8, 0x0a, + 0x39, 0xbd, 0x5b, 0x07, 0x03, 0x96, 0xee, 0x32, 0x37, 0x5a, + 0x8f, 0x68, 0x37, 0x6b, 0x35, 0x2b, 0x97, 0xba, 0xf3, 0x2f, + 0x95, 0xc4, 0xd1, 0x8c, 0x06, 0xab, 0x96, 0xbf, 0xe3, 0xf3, + 0x75, 0x2d, 0xf1, 0xe3, 0xc5, 0x57, 0x41, 0xb6, 0xf4, 0x24, + 0x41, 0x17, 0xee, 0xbd, 0xa1, 0x01, 0x59, 0x83, 0xc6, 0xba, + 0x00, 0x8f, 0xe8, 0x9f, 0xe5, 0x1c, 0xf4, 0xc9, 0x69, 0x25, + 0x92, 0xeb, 0xf7, 0x42, 0x43, 0x6c, 0x39, 0x3d, 0xf6, 0x1a, + 0x60, 0xcc, 0xc6, 0x4f, 0xd7, 0x90, 0x7a, 0x6d, 0x26, 0x26, /* 100 */ + 0x7c, 0x0f, 0x15, 0x56, 0x23, 0x0c, 0x3e, 0x33, 0x2b, 0x2e, + 0x11, 0xd1, 0x18, 0xa6, 0x98, 0x25, 0x89, 0x79, 0x3a, 0x2f, + 0x6d, 0x66, 0xb8, 0x66, 0x76, 0xba, 0xe4, 0x7a), + .pub_r = chunk_from_chars( + 0x7b, 0x90, 0x10, 0x60, 0x9e, 0xbf, 0x2c, 0x49, 0x70, 0x17, + 0x45, 0x8a, 0xfa, 0xab, 0x42, 0x02, 0x88, 0x5d, 0x25, 0xde, + 0x7b, 0x5e, 0x5c, 0xe9, 0xb0, 0x5b, 0xd4, 0x42, 0xa3, 0xe9, + 0x7b, 0x52, 0xce, 0xa7, 0x60, 0xd7, 0xdb, 0xcb, 0x21, 0xdd, + 0x71, 0xd8, 0x0c, 0xd4, 0x34, 0x7c, 0xaa, 0x9e, 0xdf, 0xbc, + 0x2d, 0xf4, 0xc1, 0xcd, 0xc1, 0x66, 0x9b, 0x8a, 0xd2, 0x44, + 0xeb, 0x34, 0x5b, 0x33, 0x1d, 0x87, 0x54, 0x92, 0x88, 0x3d, + 0xf0, 0x4a, 0x3d, 0x0b, 0x1a, 0x8b, 0x89, 0x27, 0xd5, 0x09, + 0x91, 0xfe, 0x03, 0xe7, 0x35, 0x7e, 0xb6, 0xbd, 0xfc, 0xe3, + 0xd8, 0xc6, 0x84, 0xc9, 0x86, 0x1b, 0xc5, 0xce, 0x03, 0x96, /* 100 */ + 0x2f, 0xfb, 0x87, 0xbf, 0x05, 0xda, 0xbd, 0x5a, 0x37, 0x27, + 0x99, 0x4d, 0xde, 0xe5, 0xd3, 0xc6, 0xec, 0xc5, 0x89, 0x85, + 0x99, 0x91, 0xb9, 0x32, 0x55, 0x76, 0x1f, 0xd5), + .shared = chunk_from_chars( + 0x95, 0x79, 0x0f, 0x5c, 0x46, 0xae, 0x7c, 0xa1, 0xa4, 0x71, + 0xdd, 0x78, 0x6a, 0xa8, 0xe4, 0x44, 0x07, 0x3e, 0xce, 0xc9, + 0x69, 0x5d, 0x00, 0x46, 0x20, 0xcd, 0x7c, 0x9d, 0x36, 0x09, + 0xa6, 0x97, 0x3c, 0x89, 0xa2, 0x30, 0x75, 0x09, 0x35, 0x63, + 0x8b, 0x86, 0xd1, 0xe6, 0x5b, 0x27, 0xb7, 0x84, 0x88, 0x81, + 0xf9, 0x01, 0x3a, 0xbd, 0x03, 0x62, 0x80, 0xd1, 0x86, 0x2b, + 0xb0, 0x3c, 0xa6, 0x0b, 0xa9, 0x0b, 0x70, 0xf9, 0xae, 0x7e, + 0xdf, 0x71, 0xff, 0x80, 0xf5, 0xa7, 0xee, 0xfb, 0xe2, 0x67, + 0x29, 0xb5, 0xbb, 0xb1, 0xbb, 0x1f, 0xeb, 0x0d, 0x24, 0x0e, + 0x53, 0xc9, 0xd7, 0x4b, 0x4f, 0xe9, 0xd2, 0x62, 0xb5, 0x3b, /* 100 */ + 0xd5, 0xd8, 0xa7, 0x38, 0x3f, 0x90, 0xf0, 0x1e, 0x35, 0x96, + 0x47, 0xd0, 0x48, 0x02, 0xd7, 0x4a, 0x4f, 0x75, 0x3b, 0x29, + 0x4a, 0x96, 0x50, 0x3f, 0x26, 0x05, 0xd3, 0xf1) }; ke_test_vector_t modp1536 = { - .method = MODP_1536_BIT, .priv_len = 32, .pub_len = 192, .shared_len = 192, - .priv_a = "\x22\xd9\xdc\xc7\x30\x79\x93\x6a\x85\x8c\x07\xaa\x85\xed\x07\xb3" - "\xd1\xe8\xb6\x70\xe7\xca\xaf\xa1\x92\x83\x76\x96\x07\x0f\xef\x29", - .priv_b = "\x32\x34\x74\xde\x77\x88\xe0\x03\x6b\x30\x95\x49\x56\x0b\x00\x0d" - "\x81\xf8\x2f\xdb\x69\x78\xf3\xc0\x3b\x70\x16\x80\xde\x6e\x28\x10", - .pub_a = "\x3d\x7d\x1d\xd1\xbc\xa7\x13\x7a\x64\x23\x73\xd5\xd9\xb8\x6e\xf9" - "\x95\x84\x9e\xa5\x1c\xb6\xcd\x51\xa6\xb9\x3e\x83\xb3\x4f\x96\x7d" - "\xbf\x7d\x66\xbc\x7c\xe5\xd9\x58\xbf\x01\x90\x2b\x60\xf1\xc3\x07" - "\x6c\xfe\x14\x7b\xeb\x45\xf0\x83\x97\xcf\xf4\xc3\xa8\x02\x7c\xaa" - "\xe1\x84\x78\x8e\xf3\xeb\x0d\xd5\x6e\x14\xc6\xdd\x2c\xe9\x54\xe3" - "\xd5\xcc\x80\xdb\x84\xde\xb5\x34\xce\x38\x24\x45\xe7\xa4\x41\xdb" - "\x97\x12\x30\x02\x0a\x1a\x45\xca\x00\x70\xd6\x94\xf0\x93\xc7\x16" - "\xd8\x07\x68\x33\x6e\x61\xb5\x6f\xf7\x8b\x35\x09\x39\xfe\x4e\x9e" - "\x03\x2c\x85\xbb\x58\x81\xc4\xc8\xd7\xdb\xd5\x30\xa6\xfc\x50\x13" - "\x00\xf7\xe9\xe6\x5b\xff\xb9\x83\x34\x8a\xd0\x5c\xc5\x6e\x2c\x19" - "\xf5\x97\xa9\x9f\xb9\x68\x91\x4b\xe9\xb5\x7a\xcf\x91\x11\xe7\x5b" - "\x57\x6a\x61\x37\x67\x15\x76\x57\x90\x0d\xcf\x22\xf4\x20\x0c\x3d", - .pub_b = "\xd6\x32\x58\xd5\x54\x35\x3d\x6b\x2b\xcc\x0b\x53\x53\xfa\x80\x00" - "\xb3\xa3\x54\xa2\x41\x1d\x7f\x17\xab\xca\x69\x1d\xe8\x22\x7c\xd7" - "\xd4\x3e\x7f\xef\x8b\x3e\xe7\xa0\xa9\x1a\x66\x3d\x30\xc5\x4f\x3c" - "\x5f\x4b\x95\xc9\xfe\x38\xc6\xcf\x19\x39\xb4\x80\x2b\xb6\xf0\xa9" - "\x51\x12\x8f\xdc\x39\x1d\x90\xfa\x8b\x40\x48\x4f\x45\xb6\xda\x02" - "\xc7\x6c\xf9\x1b\x43\x31\xc4\xcf\x78\x51\xe5\x50\xa2\xd1\xc0\x25" - "\x53\x14\x03\xe0\x40\x3a\xf4\x72\xb3\x83\x41\xdc\x56\x2b\xe9\x8d" - "\x1a\xa2\x80\x49\x4d\x62\x64\x31\x6a\x6f\x77\x4c\xe0\xee\xd4\x01" - "\x57\xb6\x37\xc5\x4e\x69\x50\x3b\xec\xb8\xf0\xd7\x57\xb2\x86\xe4" - "\xd8\x43\xc2\x24\x21\x9a\x92\x3f\x73\xab\x57\x83\x15\xaf\x44\x5a" - "\xfa\xd9\x56\x9d\xf2\x5a\xcf\xca\x3a\x9f\x7c\x93\xd3\x03\xf4\xef" - "\x24\x32\xbf\x62\xce\x52\x5c\x8a\x56\xba\xbd\x2f\xfb\x54\x38\x32", - .shared = "\x6e\x3d\xf6\xe2\x52\xba\x11\x53\xca\x45\xe9\xa8\xbb\xe5\x48\x33" - "\x7b\x69\x57\x2a\xff\x4e\x61\xb4\x6e\xc9\x86\xb8\x70\xa8\x63\xd3" - "\x85\x3a\xb9\xa5\x4d\x9c\x63\x2a\x09\x48\xce\x8c\x65\xf1\xa2\x9b" - "\x06\x7a\x14\x51\x19\x8d\xab\x9f\x24\x77\x6e\x86\x42\x5a\x06\xbd" - "\xaa\x9f\x26\xdc\xe9\xe8\x9e\x36\x8d\x0e\x16\x70\x27\x74\x01\x5a" - "\x14\x30\xaa\xa1\xe8\x33\x22\x7f\x9d\xea\x7a\x58\x18\xce\x47\x43" - "\x20\xb3\x9c\xe8\x67\xca\x79\xa4\x9b\x31\xe6\xab\xce\xa6\xc8\xda" - "\xff\x00\xb8\x06\x4e\x2a\x75\x73\x72\xd4\x0d\x58\xa5\x92\xe7\xa2" - "\xde\xb1\xf9\xa0\xd9\xab\xab\x1f\xc0\x81\x2e\xe1\xff\xa6\x2a\x20" - "\xff\x68\xce\x4d\x02\xac\xb8\x4a\x1a\x03\x3d\x03\xe4\xf0\x5e\x97" - "\xa4\xfa\xd8\x9e\xc2\x3a\xee\x34\x9e\x26\x4e\xfa\x61\xae\x59\xe9" - "\x38\x1b\x1e\x5b\x7a\xa5\xd0\x9a\xb6\x6b\x74\x99\x7c\xba\xed\x20", + .method = MODP_1536_BIT, + .seed = chunk_from_chars( + 0x22, 0xd9, 0xdc, 0xc7, 0x30, 0x79, 0x93, 0x6a, 0x85, 0x8c, + 0x07, 0xaa, 0x85, 0xed, 0x07, 0xb3, 0xd1, 0xe8, 0xb6, 0x70, + 0xe7, 0xca, 0xaf, 0xa1, 0x92, 0x83, 0x76, 0x96, 0x07, 0x0f, + 0xef, 0x29, /* - */ + 0x32, 0x34, 0x74, 0xde, 0x77, 0x88, 0xe0, 0x03, 0x6b, 0x30, + 0x95, 0x49, 0x56, 0x0b, 0x00, 0x0d, 0x81, 0xf8, 0x2f, 0xdb, + 0x69, 0x78, 0xf3, 0xc0, 0x3b, 0x70, 0x16, 0x80, 0xde, 0x6e, + 0x28, 0x10), + .pub_i = chunk_from_chars( + 0x3d, 0x7d, 0x1d, 0xd1, 0xbc, 0xa7, 0x13, 0x7a, 0x64, 0x23, + 0x73, 0xd5, 0xd9, 0xb8, 0x6e, 0xf9, 0x95, 0x84, 0x9e, 0xa5, + 0x1c, 0xb6, 0xcd, 0x51, 0xa6, 0xb9, 0x3e, 0x83, 0xb3, 0x4f, + 0x96, 0x7d, 0xbf, 0x7d, 0x66, 0xbc, 0x7c, 0xe5, 0xd9, 0x58, + 0xbf, 0x01, 0x90, 0x2b, 0x60, 0xf1, 0xc3, 0x07, 0x6c, 0xfe, + 0x14, 0x7b, 0xeb, 0x45, 0xf0, 0x83, 0x97, 0xcf, 0xf4, 0xc3, + 0xa8, 0x02, 0x7c, 0xaa, 0xe1, 0x84, 0x78, 0x8e, 0xf3, 0xeb, + 0x0d, 0xd5, 0x6e, 0x14, 0xc6, 0xdd, 0x2c, 0xe9, 0x54, 0xe3, + 0xd5, 0xcc, 0x80, 0xdb, 0x84, 0xde, 0xb5, 0x34, 0xce, 0x38, + 0x24, 0x45, 0xe7, 0xa4, 0x41, 0xdb, 0x97, 0x12, 0x30, 0x02, /* 100 */ + 0x0a, 0x1a, 0x45, 0xca, 0x00, 0x70, 0xd6, 0x94, 0xf0, 0x93, + 0xc7, 0x16, 0xd8, 0x07, 0x68, 0x33, 0x6e, 0x61, 0xb5, 0x6f, + 0xf7, 0x8b, 0x35, 0x09, 0x39, 0xfe, 0x4e, 0x9e, 0x03, 0x2c, + 0x85, 0xbb, 0x58, 0x81, 0xc4, 0xc8, 0xd7, 0xdb, 0xd5, 0x30, + 0xa6, 0xfc, 0x50, 0x13, 0x00, 0xf7, 0xe9, 0xe6, 0x5b, 0xff, + 0xb9, 0x83, 0x34, 0x8a, 0xd0, 0x5c, 0xc5, 0x6e, 0x2c, 0x19, + 0xf5, 0x97, 0xa9, 0x9f, 0xb9, 0x68, 0x91, 0x4b, 0xe9, 0xb5, + 0x7a, 0xcf, 0x91, 0x11, 0xe7, 0x5b, 0x57, 0x6a, 0x61, 0x37, + 0x67, 0x15, 0x76, 0x57, 0x90, 0x0d, 0xcf, 0x22, 0xf4, 0x20, + 0x0c, 0x3d), + .pub_r = chunk_from_chars( + 0xd6, 0x32, 0x58, 0xd5, 0x54, 0x35, 0x3d, 0x6b, 0x2b, 0xcc, + 0x0b, 0x53, 0x53, 0xfa, 0x80, 0x00, 0xb3, 0xa3, 0x54, 0xa2, + 0x41, 0x1d, 0x7f, 0x17, 0xab, 0xca, 0x69, 0x1d, 0xe8, 0x22, + 0x7c, 0xd7, 0xd4, 0x3e, 0x7f, 0xef, 0x8b, 0x3e, 0xe7, 0xa0, + 0xa9, 0x1a, 0x66, 0x3d, 0x30, 0xc5, 0x4f, 0x3c, 0x5f, 0x4b, + 0x95, 0xc9, 0xfe, 0x38, 0xc6, 0xcf, 0x19, 0x39, 0xb4, 0x80, + 0x2b, 0xb6, 0xf0, 0xa9, 0x51, 0x12, 0x8f, 0xdc, 0x39, 0x1d, + 0x90, 0xfa, 0x8b, 0x40, 0x48, 0x4f, 0x45, 0xb6, 0xda, 0x02, + 0xc7, 0x6c, 0xf9, 0x1b, 0x43, 0x31, 0xc4, 0xcf, 0x78, 0x51, + 0xe5, 0x50, 0xa2, 0xd1, 0xc0, 0x25, 0x53, 0x14, 0x03, 0xe0, /* 100 */ + 0x40, 0x3a, 0xf4, 0x72, 0xb3, 0x83, 0x41, 0xdc, 0x56, 0x2b, + 0xe9, 0x8d, 0x1a, 0xa2, 0x80, 0x49, 0x4d, 0x62, 0x64, 0x31, + 0x6a, 0x6f, 0x77, 0x4c, 0xe0, 0xee, 0xd4, 0x01, 0x57, 0xb6, + 0x37, 0xc5, 0x4e, 0x69, 0x50, 0x3b, 0xec, 0xb8, 0xf0, 0xd7, + 0x57, 0xb2, 0x86, 0xe4, 0xd8, 0x43, 0xc2, 0x24, 0x21, 0x9a, + 0x92, 0x3f, 0x73, 0xab, 0x57, 0x83, 0x15, 0xaf, 0x44, 0x5a, + 0xfa, 0xd9, 0x56, 0x9d, 0xf2, 0x5a, 0xcf, 0xca, 0x3a, 0x9f, + 0x7c, 0x93, 0xd3, 0x03, 0xf4, 0xef, 0x24, 0x32, 0xbf, 0x62, + 0xce, 0x52, 0x5c, 0x8a, 0x56, 0xba, 0xbd, 0x2f, 0xfb, 0x54, + 0x38, 0x32), + .shared = chunk_from_chars( + 0x6e, 0x3d, 0xf6, 0xe2, 0x52, 0xba, 0x11, 0x53, 0xca, 0x45, + 0xe9, 0xa8, 0xbb, 0xe5, 0x48, 0x33, 0x7b, 0x69, 0x57, 0x2a, + 0xff, 0x4e, 0x61, 0xb4, 0x6e, 0xc9, 0x86, 0xb8, 0x70, 0xa8, + 0x63, 0xd3, 0x85, 0x3a, 0xb9, 0xa5, 0x4d, 0x9c, 0x63, 0x2a, + 0x09, 0x48, 0xce, 0x8c, 0x65, 0xf1, 0xa2, 0x9b, 0x06, 0x7a, + 0x14, 0x51, 0x19, 0x8d, 0xab, 0x9f, 0x24, 0x77, 0x6e, 0x86, + 0x42, 0x5a, 0x06, 0xbd, 0xaa, 0x9f, 0x26, 0xdc, 0xe9, 0xe8, + 0x9e, 0x36, 0x8d, 0x0e, 0x16, 0x70, 0x27, 0x74, 0x01, 0x5a, + 0x14, 0x30, 0xaa, 0xa1, 0xe8, 0x33, 0x22, 0x7f, 0x9d, 0xea, + 0x7a, 0x58, 0x18, 0xce, 0x47, 0x43, 0x20, 0xb3, 0x9c, 0xe8, /* 100 */ + 0x67, 0xca, 0x79, 0xa4, 0x9b, 0x31, 0xe6, 0xab, 0xce, 0xa6, + 0xc8, 0xda, 0xff, 0x00, 0xb8, 0x06, 0x4e, 0x2a, 0x75, 0x73, + 0x72, 0xd4, 0x0d, 0x58, 0xa5, 0x92, 0xe7, 0xa2, 0xde, 0xb1, + 0xf9, 0xa0, 0xd9, 0xab, 0xab, 0x1f, 0xc0, 0x81, 0x2e, 0xe1, + 0xff, 0xa6, 0x2a, 0x20, 0xff, 0x68, 0xce, 0x4d, 0x02, 0xac, + 0xb8, 0x4a, 0x1a, 0x03, 0x3d, 0x03, 0xe4, 0xf0, 0x5e, 0x97, + 0xa4, 0xfa, 0xd8, 0x9e, 0xc2, 0x3a, 0xee, 0x34, 0x9e, 0x26, + 0x4e, 0xfa, 0x61, 0xae, 0x59, 0xe9, 0x38, 0x1b, 0x1e, 0x5b, + 0x7a, 0xa5, 0xd0, 0x9a, 0xb6, 0x6b, 0x74, 0x99, 0x7c, 0xba, + 0xed, 0x20) }; ke_test_vector_t modp2048 = { - .method = MODP_2048_BIT, .priv_len = 48, .pub_len = 256, .shared_len = 256, - .priv_a = "\xaf\x3b\xfd\x38\x62\xca\xa1\x17\x74\xce\x2b\x74\x84\x08\x07\xc1" - "\xde\x5c\xd6\xa7\x61\x9b\xb3\xa0\xc7\xaf\x39\xee\xda\xa6\xeb\x89" - "\xe2\xe9\xc1\x44\xb3\x62\x5b\x27\x31\x87\x9c\xb5\x8f\xa3\x76\x6d", - .priv_b = "\x77\xa4\x8e\x47\x72\xe2\x3e\x28\x4c\xe4\xaf\x81\x39\x9d\xcd\x58" - "\x9b\xeb\x7c\xef\xbc\xc9\xd1\x96\xf0\x6d\xcf\xdf\xc3\xa8\x8e\x3b" - "\x4c\x1c\x82\xbe\xfe\xc0\xe6\x4b\xa4\x95\xcc\xde\x32\x99\x36\xce", - .pub_a = "\x1a\x27\xc5\xa7\x23\x7a\xe8\xfe\x0a\x71\xc0\xaf\x64\x94\xfa\xec" - "\xcd\xd4\xa5\x03\x1d\x47\xa1\xa6\xb7\x16\x2d\xfc\xdf\x03\xbb\x17" - "\xb7\xbb\x08\x9b\xd6\x52\xa5\xf3\x1b\x36\x61\xbb\x11\x4d\x7c\x48" - "\xd8\x3d\x24\x4f\x46\xdb\x64\x87\x0c\x9c\x83\x27\xf1\xa8\x30\xab" - "\xf5\x31\xe5\x18\xdd\x52\x1a\x2e\x94\xe7\x06\x1e\x94\x42\x09\xba" - "\x53\x31\x01\x2b\x3d\xff\x00\x84\x9e\xaa\xb5\x8c\x7c\x7a\xf1\x52" - "\x65\x21\x0f\xbc\xf0\xf8\x7b\x9d\xd9\x32\xf8\xba\x4e\x9a\x9f\x91" - "\xb6\x32\x94\x53\x0a\x12\x00\xb8\x8b\x3a\x03\xe1\xa0\xc7\xfd\x34" - "\xde\xec\x6f\xad\x50\x1e\xde\x06\xce\x7e\xc9\xe2\x91\xd4\x7b\x69" - "\xb3\xa4\xb6\x1b\xb0\x87\x63\xb6\xd4\x6b\xfb\xda\xb9\x7b\xde\xce" - "\xa0\xff\x09\xa8\x72\x22\x1f\xb4\xb6\xcc\xca\x6b\x5c\x6f\xaa\xd8" - "\xeb\x87\x3b\x9a\x2f\x39\xb6\x3e\x62\xcf\xad\xd4\x76\x07\xe6\x8e" - "\x2c\x29\x05\x83\xf7\x26\x8f\xb4\x3f\xc0\x0a\x7d\xc8\x81\x0e\xcd" - "\xac\x1a\x59\xbd\x1b\x47\x7a\xaf\x41\xcb\x4b\x24\xad\xa3\xe5\xf7" - "\xb8\xcb\x98\x6f\x1a\xe4\x76\xaf\xc7\x67\x7a\xa6\x25\x70\xa1\xb1" - "\x83\x8d\xda\x26\xbe\x78\x63\xee\x2f\x40\xb5\xe5\x38\xa4\xe1\x81", - .pub_b = "\x66\x72\x82\x31\x8d\x65\xcb\x05\xcd\x32\x3c\x25\x09\x1e\x66\x4c" - "\xc7\x5a\x3a\x20\xc0\x14\xb2\xf6\x38\x9d\x3b\x27\xf5\xc1\xe9\x08" - "\xe0\xd4\x0f\xf8\x55\x2b\xd5\x87\x75\x25\x50\x30\x22\x85\xb4\x9f" - "\x75\xf8\xff\xae\xc9\x37\xfb\x2e\x69\xc8\x15\x0f\x88\xd6\x50\x8b" - "\xf0\xfb\x1f\x16\xe9\x67\x6f\x5e\xcf\x71\x8f\x87\x4f\x3d\x8d\xe3" - "\xc8\x68\x87\x49\xdb\xcf\x1a\xff\xd4\xd6\x2f\xf9\xea\x5d\x9e\x30" - "\x35\xb2\xce\x4a\x6e\xae\x28\x1c\x40\x8f\xc8\x08\x4a\xe2\x35\xd9" - "\x98\xa0\x37\x61\x0a\x8c\xb4\x8c\x87\x8c\xd0\x63\x5f\xa1\x36\x9f" - "\xc9\x0b\x86\x4c\x53\x23\x67\x38\x45\x97\xfd\xee\xfd\xb6\x74\x2b" - "\x00\x6a\xde\xda\xe2\x01\x5b\xc4\xce\x2f\x9c\x54\x51\xc9\x63\x6a" - "\x16\xed\x7d\x10\xb4\xe4\x0d\x82\x5b\x50\xaa\x76\x33\xa0\xe8\xfb" - "\x81\x3b\xeb\xc0\x49\xf7\xff\x6a\x71\xec\xfb\x14\xe8\x80\xf5\x09" - "\xd3\x8b\x57\x1a\x80\x98\x08\xa4\x96\xb4\x51\xb5\xb5\x56\x7a\x36" - "\x08\xb0\x1a\x22\xe4\x99\x83\x55\xf1\x81\xb8\x79\xde\x26\x23\x04" - "\xf2\x9d\xe1\x42\xff\x5e\x52\xcc\x56\x4f\x3a\x2d\x1e\x84\xa0\xc3" - "\x3d\x8f\x3d\xa7\xbf\x64\x12\xb3\xf0\x18\xe0\x0d\x90\xfa\x5b\x94", - .shared = "\x26\xf9\xe8\x45\x7c\xf2\xd7\xd5\x6d\xd8\x19\xc2\xa8\x67\xd7\xc3" - "\xa9\x0a\xa2\xb9\x44\xe2\x0b\x8b\xde\xd3\xa5\xbf\x91\xaa\x1f\xf8" - "\x1a\x7e\xa8\x9d\x52\x4c\x36\x5f\x38\x23\x51\x08\x35\xcd\x86\x44" - "\xc4\xd5\xda\xcf\x89\x3e\x61\x0d\x2c\x1a\x14\x06\x16\xd1\xc8\xc1" - "\xd3\x5f\x46\xde\x2c\x5f\xaa\xd9\xae\xce\xc6\xb6\x77\xac\xd9\x84" - "\x09\x81\x42\xa8\xaa\x0c\x85\x42\xe9\xac\x98\xb3\xbc\x7b\x57\x7c" - "\x59\xb8\xec\x53\x34\x6e\x15\x67\xa9\x00\x39\xac\x92\xb2\x24\x63" - "\x5a\xb2\x16\x73\x1b\x06\x35\x39\x25\x64\x2c\x33\x0a\x20\x1b\xa4" - "\xb3\x12\x84\xa9\x51\x58\x60\xf3\x5e\x93\x08\xf5\x51\x5a\x77\x99" - "\x84\xfb\xd9\xf5\xce\x41\x77\xdb\x78\xd1\xcb\x03\x84\xb6\x3c\x73" - "\x9c\x6d\x74\x4a\xd7\xa7\x00\xb9\x5a\x53\x1b\x29\xf3\xb7\x44\xed" - "\x38\xe6\x9a\xee\x67\x07\x2c\x45\xa9\x1c\xee\x6b\x14\x21\x5e\x04" - "\xf2\x7c\x31\x35\x8c\x86\xdc\xe4\x48\xd6\x0a\x22\x3b\xdc\x55\x4e" - "\xda\xa3\xe4\x07\x2e\xf6\x03\xa0\xf4\x61\x9f\x8d\xb3\x9c\xec\x29" - "\x1c\x86\x01\x74\x15\x5d\x8a\xbf\x9e\x10\x82\x93\x1d\xf5\x8e\xd9" - "\xee\x9c\x12\x15\xdd\x23\x93\xde\x02\xf5\xc1\x76\x7f\x07\x0e\x28", + .method = MODP_2048_BIT, + .seed = chunk_from_chars( + 0xaf, 0x3b, 0xfd, 0x38, 0x62, 0xca, 0xa1, 0x17, 0x74, 0xce, + 0x2b, 0x74, 0x84, 0x08, 0x07, 0xc1, 0xde, 0x5c, 0xd6, 0xa7, + 0x61, 0x9b, 0xb3, 0xa0, 0xc7, 0xaf, 0x39, 0xee, 0xda, 0xa6, + 0xeb, 0x89, 0xe2, 0xe9, 0xc1, 0x44, 0xb3, 0x62, 0x5b, 0x27, + 0x31, 0x87, 0x9c, 0xb5, 0x8f, 0xa3, 0x76, 0x6d, /* - */ + 0x77, 0xa4, 0x8e, 0x47, 0x72, 0xe2, 0x3e, 0x28, 0x4c, 0xe4, + 0xaf, 0x81, 0x39, 0x9d, 0xcd, 0x58, 0x9b, 0xeb, 0x7c, 0xef, + 0xbc, 0xc9, 0xd1, 0x96, 0xf0, 0x6d, 0xcf, 0xdf, 0xc3, 0xa8, + 0x8e, 0x3b, 0x4c, 0x1c, 0x82, 0xbe, 0xfe, 0xc0, 0xe6, 0x4b, + 0xa4, 0x95, 0xcc, 0xde, 0x32, 0x99, 0x36, 0xce), + .pub_i = chunk_from_chars( + 0x1a, 0x27, 0xc5, 0xa7, 0x23, 0x7a, 0xe8, 0xfe, 0x0a, 0x71, + 0xc0, 0xaf, 0x64, 0x94, 0xfa, 0xec, 0xcd, 0xd4, 0xa5, 0x03, + 0x1d, 0x47, 0xa1, 0xa6, 0xb7, 0x16, 0x2d, 0xfc, 0xdf, 0x03, + 0xbb, 0x17, 0xb7, 0xbb, 0x08, 0x9b, 0xd6, 0x52, 0xa5, 0xf3, + 0x1b, 0x36, 0x61, 0xbb, 0x11, 0x4d, 0x7c, 0x48, 0xd8, 0x3d, + 0x24, 0x4f, 0x46, 0xdb, 0x64, 0x87, 0x0c, 0x9c, 0x83, 0x27, + 0xf1, 0xa8, 0x30, 0xab, 0xf5, 0x31, 0xe5, 0x18, 0xdd, 0x52, + 0x1a, 0x2e, 0x94, 0xe7, 0x06, 0x1e, 0x94, 0x42, 0x09, 0xba, + 0x53, 0x31, 0x01, 0x2b, 0x3d, 0xff, 0x00, 0x84, 0x9e, 0xaa, + 0xb5, 0x8c, 0x7c, 0x7a, 0xf1, 0x52, 0x65, 0x21, 0x0f, 0xbc, /* 100 */ + 0xf0, 0xf8, 0x7b, 0x9d, 0xd9, 0x32, 0xf8, 0xba, 0x4e, 0x9a, + 0x9f, 0x91, 0xb6, 0x32, 0x94, 0x53, 0x0a, 0x12, 0x00, 0xb8, + 0x8b, 0x3a, 0x03, 0xe1, 0xa0, 0xc7, 0xfd, 0x34, 0xde, 0xec, + 0x6f, 0xad, 0x50, 0x1e, 0xde, 0x06, 0xce, 0x7e, 0xc9, 0xe2, + 0x91, 0xd4, 0x7b, 0x69, 0xb3, 0xa4, 0xb6, 0x1b, 0xb0, 0x87, + 0x63, 0xb6, 0xd4, 0x6b, 0xfb, 0xda, 0xb9, 0x7b, 0xde, 0xce, + 0xa0, 0xff, 0x09, 0xa8, 0x72, 0x22, 0x1f, 0xb4, 0xb6, 0xcc, + 0xca, 0x6b, 0x5c, 0x6f, 0xaa, 0xd8, 0xeb, 0x87, 0x3b, 0x9a, + 0x2f, 0x39, 0xb6, 0x3e, 0x62, 0xcf, 0xad, 0xd4, 0x76, 0x07, + 0xe6, 0x8e, 0x2c, 0x29, 0x05, 0x83, 0xf7, 0x26, 0x8f, 0xb4, /* 200 */ + 0x3f, 0xc0, 0x0a, 0x7d, 0xc8, 0x81, 0x0e, 0xcd, 0xac, 0x1a, + 0x59, 0xbd, 0x1b, 0x47, 0x7a, 0xaf, 0x41, 0xcb, 0x4b, 0x24, + 0xad, 0xa3, 0xe5, 0xf7, 0xb8, 0xcb, 0x98, 0x6f, 0x1a, 0xe4, + 0x76, 0xaf, 0xc7, 0x67, 0x7a, 0xa6, 0x25, 0x70, 0xa1, 0xb1, + 0x83, 0x8d, 0xda, 0x26, 0xbe, 0x78, 0x63, 0xee, 0x2f, 0x40, + 0xb5, 0xe5, 0x38, 0xa4, 0xe1, 0x81), + .pub_r = chunk_from_chars( + 0x66, 0x72, 0x82, 0x31, 0x8d, 0x65, 0xcb, 0x05, 0xcd, 0x32, + 0x3c, 0x25, 0x09, 0x1e, 0x66, 0x4c, 0xc7, 0x5a, 0x3a, 0x20, + 0xc0, 0x14, 0xb2, 0xf6, 0x38, 0x9d, 0x3b, 0x27, 0xf5, 0xc1, + 0xe9, 0x08, 0xe0, 0xd4, 0x0f, 0xf8, 0x55, 0x2b, 0xd5, 0x87, + 0x75, 0x25, 0x50, 0x30, 0x22, 0x85, 0xb4, 0x9f, 0x75, 0xf8, + 0xff, 0xae, 0xc9, 0x37, 0xfb, 0x2e, 0x69, 0xc8, 0x15, 0x0f, + 0x88, 0xd6, 0x50, 0x8b, 0xf0, 0xfb, 0x1f, 0x16, 0xe9, 0x67, + 0x6f, 0x5e, 0xcf, 0x71, 0x8f, 0x87, 0x4f, 0x3d, 0x8d, 0xe3, + 0xc8, 0x68, 0x87, 0x49, 0xdb, 0xcf, 0x1a, 0xff, 0xd4, 0xd6, + 0x2f, 0xf9, 0xea, 0x5d, 0x9e, 0x30, 0x35, 0xb2, 0xce, 0x4a, /* 100 */ + 0x6e, 0xae, 0x28, 0x1c, 0x40, 0x8f, 0xc8, 0x08, 0x4a, 0xe2, + 0x35, 0xd9, 0x98, 0xa0, 0x37, 0x61, 0x0a, 0x8c, 0xb4, 0x8c, + 0x87, 0x8c, 0xd0, 0x63, 0x5f, 0xa1, 0x36, 0x9f, 0xc9, 0x0b, + 0x86, 0x4c, 0x53, 0x23, 0x67, 0x38, 0x45, 0x97, 0xfd, 0xee, + 0xfd, 0xb6, 0x74, 0x2b, 0x00, 0x6a, 0xde, 0xda, 0xe2, 0x01, + 0x5b, 0xc4, 0xce, 0x2f, 0x9c, 0x54, 0x51, 0xc9, 0x63, 0x6a, + 0x16, 0xed, 0x7d, 0x10, 0xb4, 0xe4, 0x0d, 0x82, 0x5b, 0x50, + 0xaa, 0x76, 0x33, 0xa0, 0xe8, 0xfb, 0x81, 0x3b, 0xeb, 0xc0, + 0x49, 0xf7, 0xff, 0x6a, 0x71, 0xec, 0xfb, 0x14, 0xe8, 0x80, + 0xf5, 0x09, 0xd3, 0x8b, 0x57, 0x1a, 0x80, 0x98, 0x08, 0xa4, /* 200 */ + 0x96, 0xb4, 0x51, 0xb5, 0xb5, 0x56, 0x7a, 0x36, 0x08, 0xb0, + 0x1a, 0x22, 0xe4, 0x99, 0x83, 0x55, 0xf1, 0x81, 0xb8, 0x79, + 0xde, 0x26, 0x23, 0x04, 0xf2, 0x9d, 0xe1, 0x42, 0xff, 0x5e, + 0x52, 0xcc, 0x56, 0x4f, 0x3a, 0x2d, 0x1e, 0x84, 0xa0, 0xc3, + 0x3d, 0x8f, 0x3d, 0xa7, 0xbf, 0x64, 0x12, 0xb3, 0xf0, 0x18, + 0xe0, 0x0d, 0x90, 0xfa, 0x5b, 0x94), + .shared = chunk_from_chars( + 0x26, 0xf9, 0xe8, 0x45, 0x7c, 0xf2, 0xd7, 0xd5, 0x6d, 0xd8, + 0x19, 0xc2, 0xa8, 0x67, 0xd7, 0xc3, 0xa9, 0x0a, 0xa2, 0xb9, + 0x44, 0xe2, 0x0b, 0x8b, 0xde, 0xd3, 0xa5, 0xbf, 0x91, 0xaa, + 0x1f, 0xf8, 0x1a, 0x7e, 0xa8, 0x9d, 0x52, 0x4c, 0x36, 0x5f, + 0x38, 0x23, 0x51, 0x08, 0x35, 0xcd, 0x86, 0x44, 0xc4, 0xd5, + 0xda, 0xcf, 0x89, 0x3e, 0x61, 0x0d, 0x2c, 0x1a, 0x14, 0x06, + 0x16, 0xd1, 0xc8, 0xc1, 0xd3, 0x5f, 0x46, 0xde, 0x2c, 0x5f, + 0xaa, 0xd9, 0xae, 0xce, 0xc6, 0xb6, 0x77, 0xac, 0xd9, 0x84, + 0x09, 0x81, 0x42, 0xa8, 0xaa, 0x0c, 0x85, 0x42, 0xe9, 0xac, + 0x98, 0xb3, 0xbc, 0x7b, 0x57, 0x7c, 0x59, 0xb8, 0xec, 0x53, /* 100 */ + 0x34, 0x6e, 0x15, 0x67, 0xa9, 0x00, 0x39, 0xac, 0x92, 0xb2, + 0x24, 0x63, 0x5a, 0xb2, 0x16, 0x73, 0x1b, 0x06, 0x35, 0x39, + 0x25, 0x64, 0x2c, 0x33, 0x0a, 0x20, 0x1b, 0xa4, 0xb3, 0x12, + 0x84, 0xa9, 0x51, 0x58, 0x60, 0xf3, 0x5e, 0x93, 0x08, 0xf5, + 0x51, 0x5a, 0x77, 0x99, 0x84, 0xfb, 0xd9, 0xf5, 0xce, 0x41, + 0x77, 0xdb, 0x78, 0xd1, 0xcb, 0x03, 0x84, 0xb6, 0x3c, 0x73, + 0x9c, 0x6d, 0x74, 0x4a, 0xd7, 0xa7, 0x00, 0xb9, 0x5a, 0x53, + 0x1b, 0x29, 0xf3, 0xb7, 0x44, 0xed, 0x38, 0xe6, 0x9a, 0xee, + 0x67, 0x07, 0x2c, 0x45, 0xa9, 0x1c, 0xee, 0x6b, 0x14, 0x21, + 0x5e, 0x04, 0xf2, 0x7c, 0x31, 0x35, 0x8c, 0x86, 0xdc, 0xe4, /* 200 */ + 0x48, 0xd6, 0x0a, 0x22, 0x3b, 0xdc, 0x55, 0x4e, 0xda, 0xa3, + 0xe4, 0x07, 0x2e, 0xf6, 0x03, 0xa0, 0xf4, 0x61, 0x9f, 0x8d, + 0xb3, 0x9c, 0xec, 0x29, 0x1c, 0x86, 0x01, 0x74, 0x15, 0x5d, + 0x8a, 0xbf, 0x9e, 0x10, 0x82, 0x93, 0x1d, 0xf5, 0x8e, 0xd9, + 0xee, 0x9c, 0x12, 0x15, 0xdd, 0x23, 0x93, 0xde, 0x02, 0xf5, + 0xc1, 0x76, 0x7f, 0x07, 0x0e, 0x28) }; ke_test_vector_t modp3072 = { - .method = MODP_3072_BIT, .priv_len = 48, .pub_len = 384, .shared_len = 384, - .priv_a = "\x51\xf8\xaa\xb6\x63\x20\x1e\xb2\x86\xba\xd2\x99\x32\xb2\xe5\x8a" - "\x92\x96\xbf\x2a\xa7\x78\x79\xcc\x8c\x64\x29\xd5\xa6\x68\xad\xf7" - "\x60\x57\xad\xc3\x77\xcc\x75\xfd\x86\x47\x96\xb8\xfa\x7b\x42\x8c", - .priv_b = "\xaf\x7f\x44\x29\x0b\xaa\xc8\x81\x5e\x70\x75\x9b\x6b\x27\x42\x27" - "\x12\x22\x50\xea\x8d\x5a\x12\xef\x4b\x0a\x82\xcf\xe9\x1d\x52\x98" - "\x9d\x96\xc1\xa8\x40\x89\x2a\x9f\xfa\x9f\x3a\x65\xc7\x7c\x8c\xd9", - .pub_a = "\xae\x98\x27\xa0\x7a\x37\x2e\x16\x01\x67\x20\x63\x72\xc5\x5b\x61" - "\x5c\xd4\x9e\x8c\x43\xf7\x1a\x6e\x6b\x22\x83\x8c\x0f\x9b\x9d\x90" - "\x3a\xe5\x97\x97\xf3\x95\xc9\xca\x7c\x78\x0f\xa8\x8d\x79\x27\xa3" - "\xac\x48\xf1\xb5\x05\xe6\x7a\x0d\xb1\xeb\xad\x57\x8e\xb1\x57\x2b" - "\x86\x52\x5e\x84\x0c\x4c\xe2\x43\x5e\xd4\xcd\xe1\x75\x68\xa2\xcb" - "\x27\x08\x85\xc9\xd3\xa7\x24\xf8\x73\x46\xe5\x19\xa9\x47\x84\xee" - "\x88\xaf\xec\x27\x86\x68\x9f\x0b\xc1\x23\xe0\xe4\x65\x79\x57\xb4" - "\xf7\x5f\x24\xb5\x2d\xd4\x80\x39\x09\x3a\xe8\xeb\x5d\xa4\x0d\x1e" - "\x31\xfc\x53\xfd\x98\xa0\x58\xb0\x38\x9b\xd5\xc7\xaf\x5b\x0d\xf4" - "\x49\xd6\x13\x90\x1c\xa2\x71\xb5\x8e\x47\x0f\x88\xd3\x45\x93\x1f" - "\x3f\x64\xe8\x1f\x03\x1d\xe9\x5a\xda\xef\x78\xf6\x0e\x64\x5e\xca" - "\x7d\xd5\x61\x8a\xa6\xed\xd3\x9f\xa8\x91\x22\x46\x39\xa9\xae\x42" - "\xa8\xa9\x37\x4d\x68\x3f\xd3\xf4\x82\x6b\x97\x4c\x8d\x00\x39\x2f" - "\x31\x12\x45\xa7\x1c\x86\xdb\x4e\xb5\xef\xc4\x78\x34\xce\x6b\xaf" - "\xb2\x08\xaa\xba\xc6\x8c\x35\xe3\x4f\x79\x15\x78\x40\x1c\x7b\x75" - "\x01\x15\xb1\x6e\x5c\x3a\xc3\x62\x42\xf4\xa9\x0a\x99\x73\x4c\x08" - "\x36\x8d\x48\xab\x5d\x50\xec\x92\xf3\xf1\x26\x7e\x54\xb9\x33\x34" - "\xa5\x0b\x00\xd7\x57\x1d\x1c\xeb\x1e\x66\x21\x58\xd5\x66\x36\x20" - "\xd1\xf0\x22\x8a\x64\xf4\x92\xea\x8e\x1f\xe1\x81\x7e\x35\x83\x57" - "\x7f\x1e\x48\xa5\x84\x91\xc1\x0d\x98\xff\xa0\xea\xa8\x64\x05\xd0" - "\x2c\x94\xb4\x9f\x99\xfd\xdc\x6a\x3b\x7b\xd6\xe3\xbc\xe2\x26\x1e" - "\xa3\xcb\xbd\x82\x1f\x49\x5a\x2a\xa7\x1a\xe9\x09\xb3\xcd\x0d\x2c" - "\x9b\xec\x0b\x06\x8b\xa7\x26\x20\xff\x06\x32\x4c\xdb\x80\x0b\xf8" - "\x56\x5e\x4b\x78\x21\x84\x61\x0e\xf0\x77\xbc\x4e\x8f\xc5\x17\xf7", - .pub_b = "\x2b\x27\x0c\x8e\x66\x74\x09\x31\x45\xef\x84\xab\x0c\x34\x56\x0f" - "\x5c\x4f\x94\x82\xa5\x0f\x2f\x44\x72\xfd\xe9\x87\xb4\x6e\xb8\x40" - "\x34\x02\x03\xd6\x31\x10\x2f\x2c\x7f\x9e\xb4\x8d\x20\x74\x44\xfb" - "\x21\x71\x7d\xaf\x76\xf6\x60\x04\xa7\x9e\xa8\xee\xe7\x7c\xc9\x80" - "\x19\xba\x12\x34\xf1\x6f\xbf\xf7\xdd\xa9\x45\xa4\x46\x81\x1d\x28" - "\x5d\x31\xaf\xd3\x31\xdf\xa8\x0c\x87\x0e\xfb\x19\x96\x68\xbb\x38" - "\x76\x18\xe1\x16\x21\xf5\x32\x92\x90\x8f\xd3\x29\xaa\xdb\x91\x63" - "\x5e\x47\x5f\x33\x00\x4d\x9e\xff\xca\x65\xe7\x3f\xdf\xe5\x58\xf3" - "\x4b\xa9\xee\xf3\xcf\x96\x1d\xab\x56\x5c\x5a\x72\x2a\xfb\x22\x8c" - "\x26\xbf\x38\xd3\x9c\x84\xf7\xca\x70\xf8\x51\xbf\x21\x8a\x7e\x2c" - "\x2d\xb5\xd3\x56\x93\x7a\x01\x5a\x65\x50\x31\x13\xf6\xc0\xd5\x2d" - "\x3b\x2a\x21\x21\xa0\xca\x42\xc6\xcc\xde\xbb\x0b\x2c\xfc\x68\xaa" - "\x66\x2f\x3e\x08\xdd\x69\x82\x42\x7a\x0a\x11\xb2\xe1\x44\xe0\xf1" - "\xa3\x47\xd1\xd2\x7f\xf8\x96\xee\x56\xf5\xd9\xfb\x25\xf7\x40\xb5" - "\xc7\x09\x88\xfc\xdc\x91\x12\xdf\xce\xa2\xde\x11\x7c\x12\x87\xd3" - "\x2d\xa8\x42\x70\x49\xce\xef\x09\x7b\xf4\x57\x81\x84\x6a\x02\x1d" - "\x38\x3e\x73\x1a\xa6\xe5\xc3\xdc\x0a\x46\x22\x6e\x54\xc5\xa6\x36" - "\x7a\xd8\x90\x0b\x8e\xad\xba\x54\x09\x3e\xc6\xf7\x1c\x29\x74\x4a" - "\xdc\x73\x02\xe8\x11\x85\xed\x80\xdb\x14\xb3\xe4\x3f\x29\x36\x1a" - "\xf4\xe6\x1c\x33\x1e\x5d\x77\x4d\x76\x17\xbf\x31\x55\x71\x3b\x0d" - "\x4f\x90\x38\x97\x6f\x2f\xf8\x51\x99\xc1\xd7\x0d\xcb\x3e\xfa\x2b" - "\x63\xe0\xc7\x7c\xee\x78\x9f\xa0\x05\x8f\xdf\x52\x67\xc6\xb1\xbd" - "\xed\xc1\xd1\xef\x47\xca\x08\x22\x2a\x9a\x27\xe6\x5f\x89\x2e\xef" - "\xde\x06\x12\xf4\x6b\x51\xbe\x1a\x14\x77\x4d\x45\x14\xd7\xe7\xca", - .shared = "\x45\x3c\xaf\x89\xd6\xbf\xf3\x9b\xda\xe1\x85\x46\x17\x61\xd6\xde" - "\xf5\x89\xa5\x82\x66\x9c\x1a\xc8\x6b\x0b\x7e\xe4\x69\x56\xc9\xf9" - "\x4d\x74\x77\xdd\xd8\x1c\xde\x12\x75\x76\xda\xeb\xd3\x52\x95\x15" - "\xf0\x6a\xa7\xdf\x5e\xb1\x31\x27\x67\x5c\xe1\xb4\xdc\xa2\xac\xb6" - "\x47\xe3\x55\x76\xb9\x40\x50\xbc\xc3\x85\xb3\xb4\x89\x44\xdd\x1e" - "\xca\xbe\x6c\x76\x70\x45\xcd\xcd\xdd\x3a\x1d\x65\x83\x8c\xcc\xb0" - "\x82\xf5\x44\xf0\xfd\x9b\xe6\xc3\xd4\xff\xe7\x55\xe4\xd5\x6d\xfb" - "\xb4\x20\x93\x52\x3f\x45\xd2\x41\x5e\xad\xf3\x6a\x18\x5c\x87\xa6" - "\xe0\x14\x27\xbb\xcc\x98\x95\x68\xa2\x93\x66\xb1\xc6\x91\x72\x4d" - "\x81\x0e\x99\xfb\x05\x83\x00\x26\x72\xa5\x3e\x49\x9f\xf2\x30\x4a" - "\x4b\xcc\x10\xa3\xb8\x0b\xf4\x8a\x9e\x31\x5b\xe9\x98\xbf\x17\x0c" - "\xe9\x0e\xc4\xeb\x87\x05\x57\x0e\x5e\xc4\x80\xc2\x1c\x4d\xd0\xa5" - "\x3a\x1c\xb2\x06\xa3\x42\x45\x2e\xa8\xa6\x84\xd5\x69\xd8\x10\xf8" - "\xe9\x8f\xea\xd7\x03\x9c\x64\xef\xef\x59\x35\x24\xf5\x07\x5c\xb8" - "\x7e\x75\x63\xa4\x2a\xd1\xb5\x78\x19\xc7\xb0\x19\x96\x3d\x07\x0b" - "\x4c\xef\xe2\x2c\x59\x6b\x3a\x96\xa8\xba\x41\xbd\xab\xe0\x54\xa9" - "\xa9\xb4\xd1\xc4\x27\x8a\x83\x64\xea\xd9\x96\xa0\x39\xe8\xbd\xdc" - "\x00\x60\x1e\xcf\x10\x2d\x20\xd6\xab\xce\xd2\xff\x19\x29\x49\xf5" - "\xf8\x1c\x36\xfb\x47\x96\x44\x39\xcd\x44\x03\x6a\x23\xac\x30\x86" - "\x8c\xa5\x23\x25\x84\x7b\x31\x00\xd3\xd4\x28\x16\x76\xbf\x94\x84" - "\xa0\x05\x66\xf1\x3b\x6a\xe8\x9c\x57\xb7\x73\x2f\x8e\x60\x43\x4e" - "\x8e\x48\x85\xcb\x1b\xf9\x47\xce\xd1\x4d\x31\x53\xe1\xb6\xc8\x1b" - "\x33\x12\x0f\xfb\xd8\x45\x94\x91\xd2\xc5\x78\xaa\xb0\xa9\x7e\x83" - "\xdc\x87\x87\x5b\xe5\x88\xc0\xcd\xee\xee\xfd\x19\xcc\x4f\x1d\x40", + .method = MODP_3072_BIT, + .seed = chunk_from_chars( + 0x51, 0xf8, 0xaa, 0xb6, 0x63, 0x20, 0x1e, 0xb2, 0x86, 0xba, + 0xd2, 0x99, 0x32, 0xb2, 0xe5, 0x8a, 0x92, 0x96, 0xbf, 0x2a, + 0xa7, 0x78, 0x79, 0xcc, 0x8c, 0x64, 0x29, 0xd5, 0xa6, 0x68, + 0xad, 0xf7, 0x60, 0x57, 0xad, 0xc3, 0x77, 0xcc, 0x75, 0xfd, + 0x86, 0x47, 0x96, 0xb8, 0xfa, 0x7b, 0x42, 0x8c, /* - */ + 0xaf, 0x7f, 0x44, 0x29, 0x0b, 0xaa, 0xc8, 0x81, 0x5e, 0x70, + 0x75, 0x9b, 0x6b, 0x27, 0x42, 0x27, 0x12, 0x22, 0x50, 0xea, + 0x8d, 0x5a, 0x12, 0xef, 0x4b, 0x0a, 0x82, 0xcf, 0xe9, 0x1d, + 0x52, 0x98, 0x9d, 0x96, 0xc1, 0xa8, 0x40, 0x89, 0x2a, 0x9f, + 0xfa, 0x9f, 0x3a, 0x65, 0xc7, 0x7c, 0x8c, 0xd9), + .pub_i = chunk_from_chars( + 0xae, 0x98, 0x27, 0xa0, 0x7a, 0x37, 0x2e, 0x16, 0x01, 0x67, + 0x20, 0x63, 0x72, 0xc5, 0x5b, 0x61, 0x5c, 0xd4, 0x9e, 0x8c, + 0x43, 0xf7, 0x1a, 0x6e, 0x6b, 0x22, 0x83, 0x8c, 0x0f, 0x9b, + 0x9d, 0x90, 0x3a, 0xe5, 0x97, 0x97, 0xf3, 0x95, 0xc9, 0xca, + 0x7c, 0x78, 0x0f, 0xa8, 0x8d, 0x79, 0x27, 0xa3, 0xac, 0x48, + 0xf1, 0xb5, 0x05, 0xe6, 0x7a, 0x0d, 0xb1, 0xeb, 0xad, 0x57, + 0x8e, 0xb1, 0x57, 0x2b, 0x86, 0x52, 0x5e, 0x84, 0x0c, 0x4c, + 0xe2, 0x43, 0x5e, 0xd4, 0xcd, 0xe1, 0x75, 0x68, 0xa2, 0xcb, + 0x27, 0x08, 0x85, 0xc9, 0xd3, 0xa7, 0x24, 0xf8, 0x73, 0x46, + 0xe5, 0x19, 0xa9, 0x47, 0x84, 0xee, 0x88, 0xaf, 0xec, 0x27, /* 100 */ + 0x86, 0x68, 0x9f, 0x0b, 0xc1, 0x23, 0xe0, 0xe4, 0x65, 0x79, + 0x57, 0xb4, 0xf7, 0x5f, 0x24, 0xb5, 0x2d, 0xd4, 0x80, 0x39, + 0x09, 0x3a, 0xe8, 0xeb, 0x5d, 0xa4, 0x0d, 0x1e, 0x31, 0xfc, + 0x53, 0xfd, 0x98, 0xa0, 0x58, 0xb0, 0x38, 0x9b, 0xd5, 0xc7, + 0xaf, 0x5b, 0x0d, 0xf4, 0x49, 0xd6, 0x13, 0x90, 0x1c, 0xa2, + 0x71, 0xb5, 0x8e, 0x47, 0x0f, 0x88, 0xd3, 0x45, 0x93, 0x1f, + 0x3f, 0x64, 0xe8, 0x1f, 0x03, 0x1d, 0xe9, 0x5a, 0xda, 0xef, + 0x78, 0xf6, 0x0e, 0x64, 0x5e, 0xca, 0x7d, 0xd5, 0x61, 0x8a, + 0xa6, 0xed, 0xd3, 0x9f, 0xa8, 0x91, 0x22, 0x46, 0x39, 0xa9, + 0xae, 0x42, 0xa8, 0xa9, 0x37, 0x4d, 0x68, 0x3f, 0xd3, 0xf4, /* 200 */ + 0x82, 0x6b, 0x97, 0x4c, 0x8d, 0x00, 0x39, 0x2f, 0x31, 0x12, + 0x45, 0xa7, 0x1c, 0x86, 0xdb, 0x4e, 0xb5, 0xef, 0xc4, 0x78, + 0x34, 0xce, 0x6b, 0xaf, 0xb2, 0x08, 0xaa, 0xba, 0xc6, 0x8c, + 0x35, 0xe3, 0x4f, 0x79, 0x15, 0x78, 0x40, 0x1c, 0x7b, 0x75, + 0x01, 0x15, 0xb1, 0x6e, 0x5c, 0x3a, 0xc3, 0x62, 0x42, 0xf4, + 0xa9, 0x0a, 0x99, 0x73, 0x4c, 0x08, 0x36, 0x8d, 0x48, 0xab, + 0x5d, 0x50, 0xec, 0x92, 0xf3, 0xf1, 0x26, 0x7e, 0x54, 0xb9, + 0x33, 0x34, 0xa5, 0x0b, 0x00, 0xd7, 0x57, 0x1d, 0x1c, 0xeb, + 0x1e, 0x66, 0x21, 0x58, 0xd5, 0x66, 0x36, 0x20, 0xd1, 0xf0, + 0x22, 0x8a, 0x64, 0xf4, 0x92, 0xea, 0x8e, 0x1f, 0xe1, 0x81, /* 300 */ + 0x7e, 0x35, 0x83, 0x57, 0x7f, 0x1e, 0x48, 0xa5, 0x84, 0x91, + 0xc1, 0x0d, 0x98, 0xff, 0xa0, 0xea, 0xa8, 0x64, 0x05, 0xd0, + 0x2c, 0x94, 0xb4, 0x9f, 0x99, 0xfd, 0xdc, 0x6a, 0x3b, 0x7b, + 0xd6, 0xe3, 0xbc, 0xe2, 0x26, 0x1e, 0xa3, 0xcb, 0xbd, 0x82, + 0x1f, 0x49, 0x5a, 0x2a, 0xa7, 0x1a, 0xe9, 0x09, 0xb3, 0xcd, + 0x0d, 0x2c, 0x9b, 0xec, 0x0b, 0x06, 0x8b, 0xa7, 0x26, 0x20, + 0xff, 0x06, 0x32, 0x4c, 0xdb, 0x80, 0x0b, 0xf8, 0x56, 0x5e, + 0x4b, 0x78, 0x21, 0x84, 0x61, 0x0e, 0xf0, 0x77, 0xbc, 0x4e, + 0x8f, 0xc5, 0x17, 0xf7), + .pub_r = chunk_from_chars( + 0x2b, 0x27, 0x0c, 0x8e, 0x66, 0x74, 0x09, 0x31, 0x45, 0xef, + 0x84, 0xab, 0x0c, 0x34, 0x56, 0x0f, 0x5c, 0x4f, 0x94, 0x82, + 0xa5, 0x0f, 0x2f, 0x44, 0x72, 0xfd, 0xe9, 0x87, 0xb4, 0x6e, + 0xb8, 0x40, 0x34, 0x02, 0x03, 0xd6, 0x31, 0x10, 0x2f, 0x2c, + 0x7f, 0x9e, 0xb4, 0x8d, 0x20, 0x74, 0x44, 0xfb, 0x21, 0x71, + 0x7d, 0xaf, 0x76, 0xf6, 0x60, 0x04, 0xa7, 0x9e, 0xa8, 0xee, + 0xe7, 0x7c, 0xc9, 0x80, 0x19, 0xba, 0x12, 0x34, 0xf1, 0x6f, + 0xbf, 0xf7, 0xdd, 0xa9, 0x45, 0xa4, 0x46, 0x81, 0x1d, 0x28, + 0x5d, 0x31, 0xaf, 0xd3, 0x31, 0xdf, 0xa8, 0x0c, 0x87, 0x0e, + 0xfb, 0x19, 0x96, 0x68, 0xbb, 0x38, 0x76, 0x18, 0xe1, 0x16, /* 100 */ + 0x21, 0xf5, 0x32, 0x92, 0x90, 0x8f, 0xd3, 0x29, 0xaa, 0xdb, + 0x91, 0x63, 0x5e, 0x47, 0x5f, 0x33, 0x00, 0x4d, 0x9e, 0xff, + 0xca, 0x65, 0xe7, 0x3f, 0xdf, 0xe5, 0x58, 0xf3, 0x4b, 0xa9, + 0xee, 0xf3, 0xcf, 0x96, 0x1d, 0xab, 0x56, 0x5c, 0x5a, 0x72, + 0x2a, 0xfb, 0x22, 0x8c, 0x26, 0xbf, 0x38, 0xd3, 0x9c, 0x84, + 0xf7, 0xca, 0x70, 0xf8, 0x51, 0xbf, 0x21, 0x8a, 0x7e, 0x2c, + 0x2d, 0xb5, 0xd3, 0x56, 0x93, 0x7a, 0x01, 0x5a, 0x65, 0x50, + 0x31, 0x13, 0xf6, 0xc0, 0xd5, 0x2d, 0x3b, 0x2a, 0x21, 0x21, + 0xa0, 0xca, 0x42, 0xc6, 0xcc, 0xde, 0xbb, 0x0b, 0x2c, 0xfc, + 0x68, 0xaa, 0x66, 0x2f, 0x3e, 0x08, 0xdd, 0x69, 0x82, 0x42, /* 200 */ + 0x7a, 0x0a, 0x11, 0xb2, 0xe1, 0x44, 0xe0, 0xf1, 0xa3, 0x47, + 0xd1, 0xd2, 0x7f, 0xf8, 0x96, 0xee, 0x56, 0xf5, 0xd9, 0xfb, + 0x25, 0xf7, 0x40, 0xb5, 0xc7, 0x09, 0x88, 0xfc, 0xdc, 0x91, + 0x12, 0xdf, 0xce, 0xa2, 0xde, 0x11, 0x7c, 0x12, 0x87, 0xd3, + 0x2d, 0xa8, 0x42, 0x70, 0x49, 0xce, 0xef, 0x09, 0x7b, 0xf4, + 0x57, 0x81, 0x84, 0x6a, 0x02, 0x1d, 0x38, 0x3e, 0x73, 0x1a, + 0xa6, 0xe5, 0xc3, 0xdc, 0x0a, 0x46, 0x22, 0x6e, 0x54, 0xc5, + 0xa6, 0x36, 0x7a, 0xd8, 0x90, 0x0b, 0x8e, 0xad, 0xba, 0x54, + 0x09, 0x3e, 0xc6, 0xf7, 0x1c, 0x29, 0x74, 0x4a, 0xdc, 0x73, + 0x02, 0xe8, 0x11, 0x85, 0xed, 0x80, 0xdb, 0x14, 0xb3, 0xe4, /* 300 */ + 0x3f, 0x29, 0x36, 0x1a, 0xf4, 0xe6, 0x1c, 0x33, 0x1e, 0x5d, + 0x77, 0x4d, 0x76, 0x17, 0xbf, 0x31, 0x55, 0x71, 0x3b, 0x0d, + 0x4f, 0x90, 0x38, 0x97, 0x6f, 0x2f, 0xf8, 0x51, 0x99, 0xc1, + 0xd7, 0x0d, 0xcb, 0x3e, 0xfa, 0x2b, 0x63, 0xe0, 0xc7, 0x7c, + 0xee, 0x78, 0x9f, 0xa0, 0x05, 0x8f, 0xdf, 0x52, 0x67, 0xc6, + 0xb1, 0xbd, 0xed, 0xc1, 0xd1, 0xef, 0x47, 0xca, 0x08, 0x22, + 0x2a, 0x9a, 0x27, 0xe6, 0x5f, 0x89, 0x2e, 0xef, 0xde, 0x06, + 0x12, 0xf4, 0x6b, 0x51, 0xbe, 0x1a, 0x14, 0x77, 0x4d, 0x45, + 0x14, 0xd7, 0xe7, 0xca), + .shared = chunk_from_chars( + 0x45, 0x3c, 0xaf, 0x89, 0xd6, 0xbf, 0xf3, 0x9b, 0xda, 0xe1, + 0x85, 0x46, 0x17, 0x61, 0xd6, 0xde, 0xf5, 0x89, 0xa5, 0x82, + 0x66, 0x9c, 0x1a, 0xc8, 0x6b, 0x0b, 0x7e, 0xe4, 0x69, 0x56, + 0xc9, 0xf9, 0x4d, 0x74, 0x77, 0xdd, 0xd8, 0x1c, 0xde, 0x12, + 0x75, 0x76, 0xda, 0xeb, 0xd3, 0x52, 0x95, 0x15, 0xf0, 0x6a, + 0xa7, 0xdf, 0x5e, 0xb1, 0x31, 0x27, 0x67, 0x5c, 0xe1, 0xb4, + 0xdc, 0xa2, 0xac, 0xb6, 0x47, 0xe3, 0x55, 0x76, 0xb9, 0x40, + 0x50, 0xbc, 0xc3, 0x85, 0xb3, 0xb4, 0x89, 0x44, 0xdd, 0x1e, + 0xca, 0xbe, 0x6c, 0x76, 0x70, 0x45, 0xcd, 0xcd, 0xdd, 0x3a, + 0x1d, 0x65, 0x83, 0x8c, 0xcc, 0xb0, 0x82, 0xf5, 0x44, 0xf0, /* 100 */ + 0xfd, 0x9b, 0xe6, 0xc3, 0xd4, 0xff, 0xe7, 0x55, 0xe4, 0xd5, + 0x6d, 0xfb, 0xb4, 0x20, 0x93, 0x52, 0x3f, 0x45, 0xd2, 0x41, + 0x5e, 0xad, 0xf3, 0x6a, 0x18, 0x5c, 0x87, 0xa6, 0xe0, 0x14, + 0x27, 0xbb, 0xcc, 0x98, 0x95, 0x68, 0xa2, 0x93, 0x66, 0xb1, + 0xc6, 0x91, 0x72, 0x4d, 0x81, 0x0e, 0x99, 0xfb, 0x05, 0x83, + 0x00, 0x26, 0x72, 0xa5, 0x3e, 0x49, 0x9f, 0xf2, 0x30, 0x4a, + 0x4b, 0xcc, 0x10, 0xa3, 0xb8, 0x0b, 0xf4, 0x8a, 0x9e, 0x31, + 0x5b, 0xe9, 0x98, 0xbf, 0x17, 0x0c, 0xe9, 0x0e, 0xc4, 0xeb, + 0x87, 0x05, 0x57, 0x0e, 0x5e, 0xc4, 0x80, 0xc2, 0x1c, 0x4d, + 0xd0, 0xa5, 0x3a, 0x1c, 0xb2, 0x06, 0xa3, 0x42, 0x45, 0x2e, /* 200 */ + 0xa8, 0xa6, 0x84, 0xd5, 0x69, 0xd8, 0x10, 0xf8, 0xe9, 0x8f, + 0xea, 0xd7, 0x03, 0x9c, 0x64, 0xef, 0xef, 0x59, 0x35, 0x24, + 0xf5, 0x07, 0x5c, 0xb8, 0x7e, 0x75, 0x63, 0xa4, 0x2a, 0xd1, + 0xb5, 0x78, 0x19, 0xc7, 0xb0, 0x19, 0x96, 0x3d, 0x07, 0x0b, + 0x4c, 0xef, 0xe2, 0x2c, 0x59, 0x6b, 0x3a, 0x96, 0xa8, 0xba, + 0x41, 0xbd, 0xab, 0xe0, 0x54, 0xa9, 0xa9, 0xb4, 0xd1, 0xc4, + 0x27, 0x8a, 0x83, 0x64, 0xea, 0xd9, 0x96, 0xa0, 0x39, 0xe8, + 0xbd, 0xdc, 0x00, 0x60, 0x1e, 0xcf, 0x10, 0x2d, 0x20, 0xd6, + 0xab, 0xce, 0xd2, 0xff, 0x19, 0x29, 0x49, 0xf5, 0xf8, 0x1c, + 0x36, 0xfb, 0x47, 0x96, 0x44, 0x39, 0xcd, 0x44, 0x03, 0x6a, /* 300 */ + 0x23, 0xac, 0x30, 0x86, 0x8c, 0xa5, 0x23, 0x25, 0x84, 0x7b, + 0x31, 0x00, 0xd3, 0xd4, 0x28, 0x16, 0x76, 0xbf, 0x94, 0x84, + 0xa0, 0x05, 0x66, 0xf1, 0x3b, 0x6a, 0xe8, 0x9c, 0x57, 0xb7, + 0x73, 0x2f, 0x8e, 0x60, 0x43, 0x4e, 0x8e, 0x48, 0x85, 0xcb, + 0x1b, 0xf9, 0x47, 0xce, 0xd1, 0x4d, 0x31, 0x53, 0xe1, 0xb6, + 0xc8, 0x1b, 0x33, 0x12, 0x0f, 0xfb, 0xd8, 0x45, 0x94, 0x91, + 0xd2, 0xc5, 0x78, 0xaa, 0xb0, 0xa9, 0x7e, 0x83, 0xdc, 0x87, + 0x87, 0x5b, 0xe5, 0x88, 0xc0, 0xcd, 0xee, 0xee, 0xfd, 0x19, + 0xcc, 0x4f, 0x1d, 0x40) }; ke_test_vector_t modp4096 = { - .method = MODP_4096_BIT, .priv_len = 64, .pub_len = 512, .shared_len = 512, - .priv_a = "\xab\x69\xbc\xe9\x61\xf9\x8a\xa9\xd5\x91\xe3\xfd\x9a\xbc\x46\xc8" - "\x0d\xde\x39\x02\x84\xf1\x91\x42\xe8\x81\x5a\xb0\x80\x54\x72\x2b" - "\xbd\x2e\x14\x1e\x27\x9e\xc7\xfd\x30\xaa\xfa\xca\x66\x40\x93\x73" - "\x1e\xcc\x75\xa2\xbd\x07\xe4\xa5\x88\x3f\x56\x08\x93\xc8\x33\x50", - .priv_b = "\xef\x3e\xcb\x88\xf4\xf9\x88\xf7\x2a\xcd\x5a\xa2\x2e\xbe\xbf\x19" - "\x0f\xde\x7e\x8e\x4d\x0d\x50\xcc\xde\x80\xf9\x41\xb3\xbb\xd6\xa2" - "\xf9\xa1\x2a\xee\x9b\xb3\xe5\xc5\x80\x3f\x67\xaf\xfe\x27\xc8\x0d" - "\x05\x46\x9b\x52\x54\xeb\x1f\x32\x6c\x18\x73\x1f\xd3\x4a\xc2\xcd", - .pub_a = "\x3e\xc6\x3c\x0c\x68\x32\x05\xc3\x9d\x4b\x97\x72\x39\xfe\x7f\x96" - "\x17\x56\x0b\x1a\x56\xc4\x7f\xd9\x07\x02\x6a\xd8\x09\x0a\xa4\x4b" - "\xcc\x29\xd3\xc2\xb3\x8d\x34\xe1\x5c\x9e\x14\xc8\x05\x81\xa5\xc4" - "\x83\x2f\x5c\xd8\x8e\x43\x73\xbf\x59\x0e\xad\x63\x6f\x68\xc8\x99" - "\x59\xdf\xeb\xc4\x33\x03\x48\x97\x4e\xc4\x80\x7c\xa4\x4f\xb7\xd4" - "\x4f\x02\xb7\x97\x70\x9e\x16\x0e\x3c\x0e\xc4\x06\x1f\x75\x9a\xec" - "\x63\xd9\x96\xd2\x37\x7a\x18\xdc\xc5\x94\xc2\x08\xfa\x83\x7a\xeb" - "\xc1\x68\x9d\x5c\x0a\xb4\x30\x5c\x1b\xbe\x86\xb1\xd4\xa1\x6f\x4c" - "\xb5\x25\xfc\xcc\xf1\x00\x6e\x21\x23\xc7\x76\xb1\xff\xd1\xfe\xa2" - "\x97\x7b\x1e\xac\x82\xd1\xee\xec\x4c\x46\x73\xa5\x17\xdb\xc4\x2e" - "\x0f\x89\x30\xdb\x28\xd8\xc8\xe8\xb4\x0f\x8a\x49\x8d\xa5\x83\x05" - "\x5c\x9c\x12\x35\x34\xcc\x2c\x53\x34\xd0\xbe\xbe\xa3\x76\x26\x78" - "\xd1\xf5\x34\xba\x64\x6f\x75\x22\xf2\x68\x57\xa0\xff\x28\x8f\x7e" - "\xfc\x38\xc1\xdf\xa0\xa6\x4c\x3e\xb5\x31\x64\xc1\x8f\x6c\x2a\x4e" - "\x51\x5c\x13\xc1\xb7\x39\x35\xd9\xbd\xb4\x58\x27\x33\x55\x34\x29" - "\x67\xa8\x54\xc7\x8b\x16\x8b\x58\x90\xf7\xfe\x08\xd0\x8c\x2e\x4a" - "\x6f\x16\x63\x32\x2e\x7b\x52\xef\x02\x17\xc8\x15\x13\x72\x2f\x34" - "\xc0\x95\x48\x02\xe4\x2c\xfb\x6c\x9e\xe9\xd2\xc3\x98\x68\x71\x1f" - "\x1a\xfc\x4e\x47\x78\x52\x2d\x9c\x45\x09\x0b\x26\x23\xf4\xaf\xa3" - "\x88\x42\x6b\x89\x75\x64\x05\x93\xbe\x79\x2b\xb8\xa7\x15\xbe\xf2" - "\xc4\x6c\x2c\x50\xa6\x8a\xa6\x30\x13\x8a\xb2\x6d\xf9\xda\xe2\xb0" - "\xe2\xc4\xeb\xc1\x0a\x86\x36\xda\xd9\xbe\x2f\xfb\x79\x19\xcd\x52" - "\x78\x85\x84\x3c\xb7\x6c\x71\xf2\x8e\x71\xf6\xf8\x23\xd9\x9c\x2f" - "\xe3\x1a\xd7\xfb\xcc\x9a\xbb\x24\xef\x26\x66\xa1\x21\xcc\xf2\x1f" - "\x88\x1f\xa6\x6a\xb7\x18\xba\xf9\x2b\xef\x5c\xec\xaa\xcf\x4c\x92" - "\x9c\x9c\xb5\x44\x24\xd1\x7a\xb7\x73\x8c\xa6\x80\x7b\x4e\xfa\x49" - "\x36\x0a\x3d\xb6\x52\x7c\x72\x4c\x45\x31\x62\x9e\x9d\xb1\x84\x5c" - "\x6a\x1e\xb4\x63\x2e\x0c\x07\xab\x6c\x31\x37\x7c\x80\x83\x70\x49" - "\x46\x44\xa3\x5b\xd4\x78\x5f\x49\x5f\x60\x63\x8b\x98\x81\x71\xde" - "\xce\x5d\x5c\x44\x90\x35\x7d\x02\x89\xb3\x94\x4b\xc9\xf7\x85\x4d" - "\xb8\x06\x97\xd5\xf6\x3b\xf3\xe3\x1d\xb4\x4e\xfb\x9a\x43\xe1\xdc" - "\x9d\x17\xee\x47\x01\x2d\xfb\xac\xfd\xaf\x4d\xeb\xfe\xf0\x8b\x5c", - .pub_b = "\x20\xb7\xb4\x5f\x69\xe2\xc3\x0b\xcc\xf8\x41\xca\xe8\x04\x2c\x36" - "\x35\x37\x25\x42\x05\x99\x33\x5f\xa2\xe8\x7b\xbe\x59\xce\xbb\xc7" - "\xa7\xd3\xf6\x1e\xb6\x69\x82\x50\x3a\x75\x76\xc3\x47\x63\xdf\xef" - "\x6a\x6b\x18\x0a\x93\xaf\x66\xe4\xf7\x2f\x12\xd5\x8c\x93\x84\x6d" - "\x16\x05\x58\xb0\xd3\x16\x03\x9f\x6b\xa9\x9e\xa6\x4f\x00\x5b\xa1" - "\x1e\x59\xf3\xa9\xcb\x99\x3d\x28\x27\x1a\x4f\xb8\x30\xc3\xf6\xc4" - "\xce\xb9\xb0\x16\x2c\xcc\xa1\x97\xff\x65\x15\x78\x9d\x43\x6c\x94" - "\x7e\xb5\xd8\x01\x09\x74\xeb\xcd\x36\x6b\xc4\x76\x83\x41\x09\x0a" - "\x6f\xb5\x5c\xa8\x4e\x31\xd2\x48\x9e\x35\x27\xa2\x60\x77\x6f\x9b" - "\x8a\x58\x57\x7b\xdc\xd6\x89\xd8\xe4\xb7\x25\x14\xcf\x15\xee\xa5" - "\xa4\x96\x29\xa2\xf2\xc4\x86\xc5\x1b\x5d\x14\xd4\x9b\x11\x93\x09" - "\xbf\xe9\xc9\x32\xb6\x04\xc6\xf1\xc0\xe9\x2c\x44\x8d\xc1\x9f\x54" - "\xf4\x21\x11\x2f\x28\x87\x23\x8c\x91\x37\xc5\x59\xb6\x9a\x93\xac" - "\xf3\x6c\xc1\xf0\xbd\xfe\x4c\xca\x0b\x60\x47\x71\xee\x2a\xf1\x7c" - "\x34\x04\x5d\x42\x29\xb2\xb8\x0a\xcd\xfb\x7f\x56\xe4\xea\xee\x81" - "\xed\x6c\x88\x5a\x2e\x45\xaf\xc9\x8d\xe1\x21\x2e\x5f\x71\x4f\x5f" - "\x00\x88\x12\xd7\x17\x06\x89\x6d\x2d\x5e\xd8\x59\x0c\xee\x66\x41" - "\x08\x79\xdc\x31\x95\xa9\x21\xef\xe0\x85\xdb\x41\xd6\x87\xec\x2d" - "\xe9\x06\xa8\x10\x33\x6f\xa7\x57\x0d\x43\x11\x2d\xec\xf9\xff\xa4" - "\xae\x50\xf5\x4f\xad\x3e\xec\x2b\xb3\xed\x86\xdd\xa3\x66\x2b\xc0" - "\xfc\x1c\x28\x94\xd4\xde\x7d\xa9\x26\x0f\x74\x73\xbe\x67\x6d\xbf" - "\x60\x90\x33\x32\x0d\xba\xa4\x91\x72\x0c\xe2\xd3\x5d\x07\x8d\xbd" - "\xde\x84\x5b\x4a\x49\x5a\xd2\xec\xc2\xe6\xda\x5f\x1c\x0c\x89\x20" - "\xe4\xea\x0e\xcc\xa0\xe0\x77\xda\xc5\x9b\x97\xf0\xe9\x4b\x6c\xca" - "\xd3\xf4\x2a\x34\xb6\x63\x4e\xde\x83\xb2\x9d\x9c\x76\x15\xf7\x41" - "\x90\xdf\x33\xb2\x0e\x7d\x69\x08\xd6\x63\x69\x8a\xdb\x8a\x2d\xac" - "\xd9\x79\xf1\xca\x13\xf2\xcc\x84\x02\xf8\xf6\xcb\xf9\x11\x92\xf1" - "\x11\xdd\xf5\xad\x29\x39\x05\x95\x54\xac\x47\xb4\x78\x74\x7b\x78" - "\xa2\x71\x92\x97\xae\xda\x20\xe3\xd8\x53\x38\x26\x9b\x30\x80\xfc" - "\x3f\xd7\x8d\xe4\xac\xf3\x4e\x09\x47\x7a\x61\xca\xc7\xc1\xb7\xdc" - "\x76\x94\xed\x14\x1a\x51\x48\x0e\x6b\x2b\x43\xc0\x25\x56\xe8\xa8" - "\x49\x7c\x4f\xca\x56\xf7\xfd\x56\xc8\xeb\x36\xa1\xf8\xc3\xd1\x24", - .shared = "\x23\xb0\x6f\x49\x39\x60\x9b\x0f\x67\x08\x85\x2d\x4f\x87\xb3\x56" - "\x98\x8f\xb4\x5b\x1e\x4c\x95\x1b\x0b\x1d\x59\xbb\xa8\xca\x8b\x60" - "\xc2\x55\xa1\x8f\x37\x55\xa6\xdb\x05\xe4\x28\x5f\xe8\xf1\xf9\xd2" - "\x6a\xdd\x24\x14\x19\xf0\xfc\xa9\x82\x37\xfd\x7a\x5e\x52\x6d\x57" - "\xab\x5a\xd0\x69\xc3\xf1\x89\xf3\xc2\x91\x50\x11\x44\xa6\x55\x14" - "\xa5\x66\xb7\x4d\x0d\xc6\x41\x9c\x13\x06\xcf\xbf\xf3\x5d\xbe\xb4" - "\x3a\xbd\x5e\xd3\x9c\xe1\x37\x53\xb2\x8a\xe5\xe1\x05\xf7\x19\x1b" - "\xc6\xd7\x0a\xc3\x55\x2c\x82\x37\x3c\x6b\xd9\xdb\x8e\xd5\xee\x15" - "\x46\xfd\xb5\x49\x9a\xe7\x0a\x6b\xcb\xd1\x85\x9a\x31\xec\x43\xdc" - "\xcf\x05\x52\x5e\xe4\x0c\x94\x98\x87\xdd\x81\x68\xae\x29\xcc\x53" - "\x7a\x6f\x57\xa5\x26\xf4\x25\xdd\x07\x5f\x39\xd6\xee\x71\xcb\x49" - "\x7a\x57\x1f\xe5\x79\x58\xc7\xde\x32\x1d\x64\xf4\xe4\x89\x22\x43" - "\xe7\x8f\xef\x47\xb3\x31\xa6\x76\x84\x49\x89\x19\x1f\x97\xad\xf7" - "\x91\x32\x60\x7a\x14\x8f\x19\x3c\x7d\xd5\xe6\xd5\x99\x25\x7e\x1b" - "\xf1\x21\x93\x24\x68\xdb\xbe\x21\x60\xc9\x7a\xf0\x3f\x9d\x1b\x19" - "\xb1\x6b\x4f\x8f\xec\x5d\xcb\xc7\x98\x34\x4a\x87\xdb\xd4\x02\xa6" - "\x26\x6e\x10\xc0\xe8\xa7\x22\xfe\x9f\x67\xe8\x63\x6c\xb0\xa7\x3e" - "\x22\x4d\x53\x23\xde\x9b\x7f\xa7\xc6\x6c\x62\xa1\xf4\x00\x42\x04" - "\x1c\xba\xde\xf2\x4b\x4f\xaa\xfd\xa9\x14\x79\xec\x91\x97\x64\xb0" - "\xf4\x8b\x95\x9e\x67\x99\xf0\x94\x96\x6d\x24\x61\x27\xc0\x0e\x9c" - "\xc7\xd8\xf5\xa8\x43\xd1\xa4\xd6\x1c\x5c\x0a\x64\xb6\xb1\x6c\xa7" - "\x32\x44\x93\x75\xd9\xcf\x5d\x32\xd3\x99\xf6\x56\xfd\x51\x4f\xbf" - "\xe6\x6e\xea\x82\xe4\x79\xfc\x73\x18\x0b\x72\x1d\xd4\xc5\xbb\x20" - "\xd4\x50\xc5\xa1\x95\x9e\x1f\x8f\xed\x9d\xd2\x8c\x97\x05\x12\x72" - "\xf6\x64\x00\xcd\xd4\x13\x45\x7d\xdd\xe6\x9a\xc7\x43\x5e\xe4\xa4" - "\xf7\x2a\x37\x02\x49\x82\xb4\xa7\xf6\xf5\x5e\x03\x07\x03\x82\xb8" - "\x3b\x2c\xed\xb7\x75\x25\x17\xf0\x48\xb7\xc6\x91\xd1\xf1\xd7\xb8" - "\x52\xa5\xb7\xcd\x3b\x2b\xde\x97\x62\x0e\x9b\x2c\xd9\xc7\x7f\xd8" - "\xcc\xb6\x92\x5a\xde\xf7\x06\xa6\x77\x0a\x2e\xfb\x62\x1c\x93\xf1" - "\xca\x24\xf0\x9a\x68\x6e\x8b\x86\x05\x81\x49\x47\x39\x92\x15\x33" - "\x9a\x1f\x29\xfb\x57\xac\xf9\xce\x9e\xba\x2c\xbd\x49\x69\xc8\x9e" - "\x4f\xb9\x39\x02\x12\xb9\xb2\xa3\x5d\x4a\xfa\x17\xb3\xee\xc0\x8a", + .method = MODP_4096_BIT, + .seed = chunk_from_chars( + 0xab, 0x69, 0xbc, 0xe9, 0x61, 0xf9, 0x8a, 0xa9, 0xd5, 0x91, + 0xe3, 0xfd, 0x9a, 0xbc, 0x46, 0xc8, 0x0d, 0xde, 0x39, 0x02, + 0x84, 0xf1, 0x91, 0x42, 0xe8, 0x81, 0x5a, 0xb0, 0x80, 0x54, + 0x72, 0x2b, 0xbd, 0x2e, 0x14, 0x1e, 0x27, 0x9e, 0xc7, 0xfd, + 0x30, 0xaa, 0xfa, 0xca, 0x66, 0x40, 0x93, 0x73, 0x1e, 0xcc, + 0x75, 0xa2, 0xbd, 0x07, 0xe4, 0xa5, 0x88, 0x3f, 0x56, 0x08, + 0x93, 0xc8, 0x33, 0x50, /* - */ + 0xef, 0x3e, 0xcb, 0x88, 0xf4, 0xf9, 0x88, 0xf7, 0x2a, 0xcd, + 0x5a, 0xa2, 0x2e, 0xbe, 0xbf, 0x19, 0x0f, 0xde, 0x7e, 0x8e, + 0x4d, 0x0d, 0x50, 0xcc, 0xde, 0x80, 0xf9, 0x41, 0xb3, 0xbb, + 0xd6, 0xa2, 0xf9, 0xa1, 0x2a, 0xee, 0x9b, 0xb3, 0xe5, 0xc5, + 0x80, 0x3f, 0x67, 0xaf, 0xfe, 0x27, 0xc8, 0x0d, 0x05, 0x46, + 0x9b, 0x52, 0x54, 0xeb, 0x1f, 0x32, 0x6c, 0x18, 0x73, 0x1f, + 0xd3, 0x4a, 0xc2, 0xcd), + .pub_i = chunk_from_chars( + 0x3e, 0xc6, 0x3c, 0x0c, 0x68, 0x32, 0x05, 0xc3, 0x9d, 0x4b, + 0x97, 0x72, 0x39, 0xfe, 0x7f, 0x96, 0x17, 0x56, 0x0b, 0x1a, + 0x56, 0xc4, 0x7f, 0xd9, 0x07, 0x02, 0x6a, 0xd8, 0x09, 0x0a, + 0xa4, 0x4b, 0xcc, 0x29, 0xd3, 0xc2, 0xb3, 0x8d, 0x34, 0xe1, + 0x5c, 0x9e, 0x14, 0xc8, 0x05, 0x81, 0xa5, 0xc4, 0x83, 0x2f, + 0x5c, 0xd8, 0x8e, 0x43, 0x73, 0xbf, 0x59, 0x0e, 0xad, 0x63, + 0x6f, 0x68, 0xc8, 0x99, 0x59, 0xdf, 0xeb, 0xc4, 0x33, 0x03, + 0x48, 0x97, 0x4e, 0xc4, 0x80, 0x7c, 0xa4, 0x4f, 0xb7, 0xd4, + 0x4f, 0x02, 0xb7, 0x97, 0x70, 0x9e, 0x16, 0x0e, 0x3c, 0x0e, + 0xc4, 0x06, 0x1f, 0x75, 0x9a, 0xec, 0x63, 0xd9, 0x96, 0xd2, /* 100 */ + 0x37, 0x7a, 0x18, 0xdc, 0xc5, 0x94, 0xc2, 0x08, 0xfa, 0x83, + 0x7a, 0xeb, 0xc1, 0x68, 0x9d, 0x5c, 0x0a, 0xb4, 0x30, 0x5c, + 0x1b, 0xbe, 0x86, 0xb1, 0xd4, 0xa1, 0x6f, 0x4c, 0xb5, 0x25, + 0xfc, 0xcc, 0xf1, 0x00, 0x6e, 0x21, 0x23, 0xc7, 0x76, 0xb1, + 0xff, 0xd1, 0xfe, 0xa2, 0x97, 0x7b, 0x1e, 0xac, 0x82, 0xd1, + 0xee, 0xec, 0x4c, 0x46, 0x73, 0xa5, 0x17, 0xdb, 0xc4, 0x2e, + 0x0f, 0x89, 0x30, 0xdb, 0x28, 0xd8, 0xc8, 0xe8, 0xb4, 0x0f, + 0x8a, 0x49, 0x8d, 0xa5, 0x83, 0x05, 0x5c, 0x9c, 0x12, 0x35, + 0x34, 0xcc, 0x2c, 0x53, 0x34, 0xd0, 0xbe, 0xbe, 0xa3, 0x76, + 0x26, 0x78, 0xd1, 0xf5, 0x34, 0xba, 0x64, 0x6f, 0x75, 0x22, /* 200 */ + 0xf2, 0x68, 0x57, 0xa0, 0xff, 0x28, 0x8f, 0x7e, 0xfc, 0x38, + 0xc1, 0xdf, 0xa0, 0xa6, 0x4c, 0x3e, 0xb5, 0x31, 0x64, 0xc1, + 0x8f, 0x6c, 0x2a, 0x4e, 0x51, 0x5c, 0x13, 0xc1, 0xb7, 0x39, + 0x35, 0xd9, 0xbd, 0xb4, 0x58, 0x27, 0x33, 0x55, 0x34, 0x29, + 0x67, 0xa8, 0x54, 0xc7, 0x8b, 0x16, 0x8b, 0x58, 0x90, 0xf7, + 0xfe, 0x08, 0xd0, 0x8c, 0x2e, 0x4a, 0x6f, 0x16, 0x63, 0x32, + 0x2e, 0x7b, 0x52, 0xef, 0x02, 0x17, 0xc8, 0x15, 0x13, 0x72, + 0x2f, 0x34, 0xc0, 0x95, 0x48, 0x02, 0xe4, 0x2c, 0xfb, 0x6c, + 0x9e, 0xe9, 0xd2, 0xc3, 0x98, 0x68, 0x71, 0x1f, 0x1a, 0xfc, + 0x4e, 0x47, 0x78, 0x52, 0x2d, 0x9c, 0x45, 0x09, 0x0b, 0x26, /* 300 */ + 0x23, 0xf4, 0xaf, 0xa3, 0x88, 0x42, 0x6b, 0x89, 0x75, 0x64, + 0x05, 0x93, 0xbe, 0x79, 0x2b, 0xb8, 0xa7, 0x15, 0xbe, 0xf2, + 0xc4, 0x6c, 0x2c, 0x50, 0xa6, 0x8a, 0xa6, 0x30, 0x13, 0x8a, + 0xb2, 0x6d, 0xf9, 0xda, 0xe2, 0xb0, 0xe2, 0xc4, 0xeb, 0xc1, + 0x0a, 0x86, 0x36, 0xda, 0xd9, 0xbe, 0x2f, 0xfb, 0x79, 0x19, + 0xcd, 0x52, 0x78, 0x85, 0x84, 0x3c, 0xb7, 0x6c, 0x71, 0xf2, + 0x8e, 0x71, 0xf6, 0xf8, 0x23, 0xd9, 0x9c, 0x2f, 0xe3, 0x1a, + 0xd7, 0xfb, 0xcc, 0x9a, 0xbb, 0x24, 0xef, 0x26, 0x66, 0xa1, + 0x21, 0xcc, 0xf2, 0x1f, 0x88, 0x1f, 0xa6, 0x6a, 0xb7, 0x18, + 0xba, 0xf9, 0x2b, 0xef, 0x5c, 0xec, 0xaa, 0xcf, 0x4c, 0x92, /* 400 */ + 0x9c, 0x9c, 0xb5, 0x44, 0x24, 0xd1, 0x7a, 0xb7, 0x73, 0x8c, + 0xa6, 0x80, 0x7b, 0x4e, 0xfa, 0x49, 0x36, 0x0a, 0x3d, 0xb6, + 0x52, 0x7c, 0x72, 0x4c, 0x45, 0x31, 0x62, 0x9e, 0x9d, 0xb1, + 0x84, 0x5c, 0x6a, 0x1e, 0xb4, 0x63, 0x2e, 0x0c, 0x07, 0xab, + 0x6c, 0x31, 0x37, 0x7c, 0x80, 0x83, 0x70, 0x49, 0x46, 0x44, + 0xa3, 0x5b, 0xd4, 0x78, 0x5f, 0x49, 0x5f, 0x60, 0x63, 0x8b, + 0x98, 0x81, 0x71, 0xde, 0xce, 0x5d, 0x5c, 0x44, 0x90, 0x35, + 0x7d, 0x02, 0x89, 0xb3, 0x94, 0x4b, 0xc9, 0xf7, 0x85, 0x4d, + 0xb8, 0x06, 0x97, 0xd5, 0xf6, 0x3b, 0xf3, 0xe3, 0x1d, 0xb4, + 0x4e, 0xfb, 0x9a, 0x43, 0xe1, 0xdc, 0x9d, 0x17, 0xee, 0x47, /* 500 */ + 0x01, 0x2d, 0xfb, 0xac, 0xfd, 0xaf, 0x4d, 0xeb, 0xfe, 0xf0, + 0x8b, 0x5c), + .pub_r = chunk_from_chars( + 0x20, 0xb7, 0xb4, 0x5f, 0x69, 0xe2, 0xc3, 0x0b, 0xcc, 0xf8, + 0x41, 0xca, 0xe8, 0x04, 0x2c, 0x36, 0x35, 0x37, 0x25, 0x42, + 0x05, 0x99, 0x33, 0x5f, 0xa2, 0xe8, 0x7b, 0xbe, 0x59, 0xce, + 0xbb, 0xc7, 0xa7, 0xd3, 0xf6, 0x1e, 0xb6, 0x69, 0x82, 0x50, + 0x3a, 0x75, 0x76, 0xc3, 0x47, 0x63, 0xdf, 0xef, 0x6a, 0x6b, + 0x18, 0x0a, 0x93, 0xaf, 0x66, 0xe4, 0xf7, 0x2f, 0x12, 0xd5, + 0x8c, 0x93, 0x84, 0x6d, 0x16, 0x05, 0x58, 0xb0, 0xd3, 0x16, + 0x03, 0x9f, 0x6b, 0xa9, 0x9e, 0xa6, 0x4f, 0x00, 0x5b, 0xa1, + 0x1e, 0x59, 0xf3, 0xa9, 0xcb, 0x99, 0x3d, 0x28, 0x27, 0x1a, + 0x4f, 0xb8, 0x30, 0xc3, 0xf6, 0xc4, 0xce, 0xb9, 0xb0, 0x16, /* 100 */ + 0x2c, 0xcc, 0xa1, 0x97, 0xff, 0x65, 0x15, 0x78, 0x9d, 0x43, + 0x6c, 0x94, 0x7e, 0xb5, 0xd8, 0x01, 0x09, 0x74, 0xeb, 0xcd, + 0x36, 0x6b, 0xc4, 0x76, 0x83, 0x41, 0x09, 0x0a, 0x6f, 0xb5, + 0x5c, 0xa8, 0x4e, 0x31, 0xd2, 0x48, 0x9e, 0x35, 0x27, 0xa2, + 0x60, 0x77, 0x6f, 0x9b, 0x8a, 0x58, 0x57, 0x7b, 0xdc, 0xd6, + 0x89, 0xd8, 0xe4, 0xb7, 0x25, 0x14, 0xcf, 0x15, 0xee, 0xa5, + 0xa4, 0x96, 0x29, 0xa2, 0xf2, 0xc4, 0x86, 0xc5, 0x1b, 0x5d, + 0x14, 0xd4, 0x9b, 0x11, 0x93, 0x09, 0xbf, 0xe9, 0xc9, 0x32, + 0xb6, 0x04, 0xc6, 0xf1, 0xc0, 0xe9, 0x2c, 0x44, 0x8d, 0xc1, + 0x9f, 0x54, 0xf4, 0x21, 0x11, 0x2f, 0x28, 0x87, 0x23, 0x8c, /* 200 */ + 0x91, 0x37, 0xc5, 0x59, 0xb6, 0x9a, 0x93, 0xac, 0xf3, 0x6c, + 0xc1, 0xf0, 0xbd, 0xfe, 0x4c, 0xca, 0x0b, 0x60, 0x47, 0x71, + 0xee, 0x2a, 0xf1, 0x7c, 0x34, 0x04, 0x5d, 0x42, 0x29, 0xb2, + 0xb8, 0x0a, 0xcd, 0xfb, 0x7f, 0x56, 0xe4, 0xea, 0xee, 0x81, + 0xed, 0x6c, 0x88, 0x5a, 0x2e, 0x45, 0xaf, 0xc9, 0x8d, 0xe1, + 0x21, 0x2e, 0x5f, 0x71, 0x4f, 0x5f, 0x00, 0x88, 0x12, 0xd7, + 0x17, 0x06, 0x89, 0x6d, 0x2d, 0x5e, 0xd8, 0x59, 0x0c, 0xee, + 0x66, 0x41, 0x08, 0x79, 0xdc, 0x31, 0x95, 0xa9, 0x21, 0xef, + 0xe0, 0x85, 0xdb, 0x41, 0xd6, 0x87, 0xec, 0x2d, 0xe9, 0x06, + 0xa8, 0x10, 0x33, 0x6f, 0xa7, 0x57, 0x0d, 0x43, 0x11, 0x2d, /* 300 */ + 0xec, 0xf9, 0xff, 0xa4, 0xae, 0x50, 0xf5, 0x4f, 0xad, 0x3e, + 0xec, 0x2b, 0xb3, 0xed, 0x86, 0xdd, 0xa3, 0x66, 0x2b, 0xc0, + 0xfc, 0x1c, 0x28, 0x94, 0xd4, 0xde, 0x7d, 0xa9, 0x26, 0x0f, + 0x74, 0x73, 0xbe, 0x67, 0x6d, 0xbf, 0x60, 0x90, 0x33, 0x32, + 0x0d, 0xba, 0xa4, 0x91, 0x72, 0x0c, 0xe2, 0xd3, 0x5d, 0x07, + 0x8d, 0xbd, 0xde, 0x84, 0x5b, 0x4a, 0x49, 0x5a, 0xd2, 0xec, + 0xc2, 0xe6, 0xda, 0x5f, 0x1c, 0x0c, 0x89, 0x20, 0xe4, 0xea, + 0x0e, 0xcc, 0xa0, 0xe0, 0x77, 0xda, 0xc5, 0x9b, 0x97, 0xf0, + 0xe9, 0x4b, 0x6c, 0xca, 0xd3, 0xf4, 0x2a, 0x34, 0xb6, 0x63, + 0x4e, 0xde, 0x83, 0xb2, 0x9d, 0x9c, 0x76, 0x15, 0xf7, 0x41, /* 400 */ + 0x90, 0xdf, 0x33, 0xb2, 0x0e, 0x7d, 0x69, 0x08, 0xd6, 0x63, + 0x69, 0x8a, 0xdb, 0x8a, 0x2d, 0xac, 0xd9, 0x79, 0xf1, 0xca, + 0x13, 0xf2, 0xcc, 0x84, 0x02, 0xf8, 0xf6, 0xcb, 0xf9, 0x11, + 0x92, 0xf1, 0x11, 0xdd, 0xf5, 0xad, 0x29, 0x39, 0x05, 0x95, + 0x54, 0xac, 0x47, 0xb4, 0x78, 0x74, 0x7b, 0x78, 0xa2, 0x71, + 0x92, 0x97, 0xae, 0xda, 0x20, 0xe3, 0xd8, 0x53, 0x38, 0x26, + 0x9b, 0x30, 0x80, 0xfc, 0x3f, 0xd7, 0x8d, 0xe4, 0xac, 0xf3, + 0x4e, 0x09, 0x47, 0x7a, 0x61, 0xca, 0xc7, 0xc1, 0xb7, 0xdc, + 0x76, 0x94, 0xed, 0x14, 0x1a, 0x51, 0x48, 0x0e, 0x6b, 0x2b, + 0x43, 0xc0, 0x25, 0x56, 0xe8, 0xa8, 0x49, 0x7c, 0x4f, 0xca, /* 500 */ + 0x56, 0xf7, 0xfd, 0x56, 0xc8, 0xeb, 0x36, 0xa1, 0xf8, 0xc3, + 0xd1, 0x24), + .shared = chunk_from_chars( + 0x23, 0xb0, 0x6f, 0x49, 0x39, 0x60, 0x9b, 0x0f, 0x67, 0x08, + 0x85, 0x2d, 0x4f, 0x87, 0xb3, 0x56, 0x98, 0x8f, 0xb4, 0x5b, + 0x1e, 0x4c, 0x95, 0x1b, 0x0b, 0x1d, 0x59, 0xbb, 0xa8, 0xca, + 0x8b, 0x60, 0xc2, 0x55, 0xa1, 0x8f, 0x37, 0x55, 0xa6, 0xdb, + 0x05, 0xe4, 0x28, 0x5f, 0xe8, 0xf1, 0xf9, 0xd2, 0x6a, 0xdd, + 0x24, 0x14, 0x19, 0xf0, 0xfc, 0xa9, 0x82, 0x37, 0xfd, 0x7a, + 0x5e, 0x52, 0x6d, 0x57, 0xab, 0x5a, 0xd0, 0x69, 0xc3, 0xf1, + 0x89, 0xf3, 0xc2, 0x91, 0x50, 0x11, 0x44, 0xa6, 0x55, 0x14, + 0xa5, 0x66, 0xb7, 0x4d, 0x0d, 0xc6, 0x41, 0x9c, 0x13, 0x06, + 0xcf, 0xbf, 0xf3, 0x5d, 0xbe, 0xb4, 0x3a, 0xbd, 0x5e, 0xd3, /* 100 */ + 0x9c, 0xe1, 0x37, 0x53, 0xb2, 0x8a, 0xe5, 0xe1, 0x05, 0xf7, + 0x19, 0x1b, 0xc6, 0xd7, 0x0a, 0xc3, 0x55, 0x2c, 0x82, 0x37, + 0x3c, 0x6b, 0xd9, 0xdb, 0x8e, 0xd5, 0xee, 0x15, 0x46, 0xfd, + 0xb5, 0x49, 0x9a, 0xe7, 0x0a, 0x6b, 0xcb, 0xd1, 0x85, 0x9a, + 0x31, 0xec, 0x43, 0xdc, 0xcf, 0x05, 0x52, 0x5e, 0xe4, 0x0c, + 0x94, 0x98, 0x87, 0xdd, 0x81, 0x68, 0xae, 0x29, 0xcc, 0x53, + 0x7a, 0x6f, 0x57, 0xa5, 0x26, 0xf4, 0x25, 0xdd, 0x07, 0x5f, + 0x39, 0xd6, 0xee, 0x71, 0xcb, 0x49, 0x7a, 0x57, 0x1f, 0xe5, + 0x79, 0x58, 0xc7, 0xde, 0x32, 0x1d, 0x64, 0xf4, 0xe4, 0x89, + 0x22, 0x43, 0xe7, 0x8f, 0xef, 0x47, 0xb3, 0x31, 0xa6, 0x76, /* 200 */ + 0x84, 0x49, 0x89, 0x19, 0x1f, 0x97, 0xad, 0xf7, 0x91, 0x32, + 0x60, 0x7a, 0x14, 0x8f, 0x19, 0x3c, 0x7d, 0xd5, 0xe6, 0xd5, + 0x99, 0x25, 0x7e, 0x1b, 0xf1, 0x21, 0x93, 0x24, 0x68, 0xdb, + 0xbe, 0x21, 0x60, 0xc9, 0x7a, 0xf0, 0x3f, 0x9d, 0x1b, 0x19, + 0xb1, 0x6b, 0x4f, 0x8f, 0xec, 0x5d, 0xcb, 0xc7, 0x98, 0x34, + 0x4a, 0x87, 0xdb, 0xd4, 0x02, 0xa6, 0x26, 0x6e, 0x10, 0xc0, + 0xe8, 0xa7, 0x22, 0xfe, 0x9f, 0x67, 0xe8, 0x63, 0x6c, 0xb0, + 0xa7, 0x3e, 0x22, 0x4d, 0x53, 0x23, 0xde, 0x9b, 0x7f, 0xa7, + 0xc6, 0x6c, 0x62, 0xa1, 0xf4, 0x00, 0x42, 0x04, 0x1c, 0xba, + 0xde, 0xf2, 0x4b, 0x4f, 0xaa, 0xfd, 0xa9, 0x14, 0x79, 0xec, /* 300 */ + 0x91, 0x97, 0x64, 0xb0, 0xf4, 0x8b, 0x95, 0x9e, 0x67, 0x99, + 0xf0, 0x94, 0x96, 0x6d, 0x24, 0x61, 0x27, 0xc0, 0x0e, 0x9c, + 0xc7, 0xd8, 0xf5, 0xa8, 0x43, 0xd1, 0xa4, 0xd6, 0x1c, 0x5c, + 0x0a, 0x64, 0xb6, 0xb1, 0x6c, 0xa7, 0x32, 0x44, 0x93, 0x75, + 0xd9, 0xcf, 0x5d, 0x32, 0xd3, 0x99, 0xf6, 0x56, 0xfd, 0x51, + 0x4f, 0xbf, 0xe6, 0x6e, 0xea, 0x82, 0xe4, 0x79, 0xfc, 0x73, + 0x18, 0x0b, 0x72, 0x1d, 0xd4, 0xc5, 0xbb, 0x20, 0xd4, 0x50, + 0xc5, 0xa1, 0x95, 0x9e, 0x1f, 0x8f, 0xed, 0x9d, 0xd2, 0x8c, + 0x97, 0x05, 0x12, 0x72, 0xf6, 0x64, 0x00, 0xcd, 0xd4, 0x13, + 0x45, 0x7d, 0xdd, 0xe6, 0x9a, 0xc7, 0x43, 0x5e, 0xe4, 0xa4, /* 400 */ + 0xf7, 0x2a, 0x37, 0x02, 0x49, 0x82, 0xb4, 0xa7, 0xf6, 0xf5, + 0x5e, 0x03, 0x07, 0x03, 0x82, 0xb8, 0x3b, 0x2c, 0xed, 0xb7, + 0x75, 0x25, 0x17, 0xf0, 0x48, 0xb7, 0xc6, 0x91, 0xd1, 0xf1, + 0xd7, 0xb8, 0x52, 0xa5, 0xb7, 0xcd, 0x3b, 0x2b, 0xde, 0x97, + 0x62, 0x0e, 0x9b, 0x2c, 0xd9, 0xc7, 0x7f, 0xd8, 0xcc, 0xb6, + 0x92, 0x5a, 0xde, 0xf7, 0x06, 0xa6, 0x77, 0x0a, 0x2e, 0xfb, + 0x62, 0x1c, 0x93, 0xf1, 0xca, 0x24, 0xf0, 0x9a, 0x68, 0x6e, + 0x8b, 0x86, 0x05, 0x81, 0x49, 0x47, 0x39, 0x92, 0x15, 0x33, + 0x9a, 0x1f, 0x29, 0xfb, 0x57, 0xac, 0xf9, 0xce, 0x9e, 0xba, + 0x2c, 0xbd, 0x49, 0x69, 0xc8, 0x9e, 0x4f, 0xb9, 0x39, 0x02, /* 500 */ + 0x12, 0xb9, 0xb2, 0xa3, 0x5d, 0x4a, 0xfa, 0x17, 0xb3, 0xee, + 0xc0, 0x8a) }; ke_test_vector_t modp6144 = { - .method = MODP_6144_BIT, .priv_len = 64, .pub_len = 768, .shared_len = 768, - .priv_a = "\xab\x36\xf0\x65\x7c\x4f\xba\xdc\x2a\x3b\x07\xed\xd1\xc8\xaf\xcb" - "\x42\xaf\xcd\x7f\xf9\x1c\x57\x01\x37\x25\x50\x0d\x89\x42\x9f\x34" - "\x79\x8f\x99\xf5\xde\x53\xd1\x08\x8f\xd9\xf6\x60\xa1\xa5\x2b\xe4" - "\x54\xf9\x63\x4d\x15\xbb\x4e\x4c\xe0\x9e\x5a\x69\xe0\xf9\x9d\x59", - .priv_b = "\x59\xa5\x52\xa4\x0d\x17\x80\xaf\x64\x33\xbc\x9e\x8a\x9b\x6d\x48" - "\x30\xdd\xd3\x57\x53\x07\x40\x9a\x90\xc9\x2b\xda\x40\x4b\xb7\x99" - "\xf0\x09\x3e\xfe\x21\xbe\xad\x85\xf1\x6a\x23\x7b\x05\x90\xc3\x35" - "\x6d\x96\x8c\xc0\x9d\xcd\x5b\x2d\x96\x86\x07\xd6\xd1\xbf\x70\xc2", - .pub_a = "\x0a\x78\x01\x5c\x3e\x0d\x36\x2a\xff\xe5\xd9\x3a\x9c\x2d\xf2\xdf" - "\x5b\xb9\x6b\x7f\xf2\xfc\xc2\xdd\x96\x6c\x53\x9d\x1d\x4c\xdb\xac" - "\xec\xe2\x6d\x16\xab\x6d\x3d\xe8\x24\xe0\x75\x87\x29\x12\xeb\xa0" - "\x44\x33\x66\x11\x0e\x0d\x7e\x17\x27\x4b\x95\x78\xaf\x12\x46\x63" - "\xe6\x55\x17\x0b\xf7\xb7\xb2\xbd\xb4\xbf\xe4\x7a\x88\x97\x68\x95" - "\x6a\x98\xf1\xce\x1a\xc8\xc6\xc7\xc4\x8e\x13\xa3\x6c\x16\x1c\x82" - "\x00\x7c\x98\x35\xb2\x2e\x7b\x47\x99\x38\x92\xa1\x71\x2b\x27\x5d" - "\xdc\x84\x54\xf4\x33\x0b\xd1\xfc\x08\xab\xfc\x48\x8e\x71\x8b\x43" - "\xa6\x21\x3a\x09\xc5\x68\x74\xce\xef\xb3\xa9\xfa\xe7\xe1\x11\xc0" - "\x0a\x10\x43\x3f\x4b\x23\x75\xef\xab\x04\x2b\xd5\xc1\xc2\x9a\xaf" - "\x97\x0c\xeb\xae\xb5\x7f\x10\xf0\x10\x6e\xa6\x3d\x25\x72\x59\x93" - "\x0a\xf5\xb3\x3b\xc2\x64\x27\xe6\xef\x47\x32\xde\x43\xdc\xea\x0a" - "\x88\x72\x9b\x93\x7e\x6a\x9a\xfc\xf2\x92\xa2\x9f\x8b\xe9\x9b\x71" - "\x88\xd8\x2d\xfc\x13\x7e\x69\x19\x9a\x53\x5d\x92\xdc\x61\x37\x60" - "\x03\x38\x67\x1e\x6d\x46\x76\x31\xff\xc2\xbd\x69\x59\x42\xcd\x7e" - "\xbb\x40\x2c\x54\xea\x39\x1b\x9a\x02\xde\x1f\x28\x99\xfe\xd5\xbd" - "\xb7\x1f\x27\xab\x71\x0b\xba\xaa\x32\xb2\xc2\xe0\xec\x8d\x4b\xd4" - "\xca\x6c\xc5\x07\xd9\x72\x0b\x20\xaf\x9c\xce\xcd\x7f\x4e\x88\xed" - "\x55\x0a\xea\xbc\x43\xdd\x0b\x3d\xc0\x20\xdb\x3e\x14\x89\x76\xc7" - "\x61\xf5\x44\x21\x8a\x79\xb7\x3b\x37\x77\x24\x99\xf3\x61\xba\x0b" - "\x1d\x3c\xf2\x10\x23\x75\x36\xfb\x89\xd8\x57\x86\x51\xed\x67\x51" - "\xd1\xe8\x10\x95\x61\x2b\x0f\xcf\x65\x36\xbc\xb0\xff\x17\x2c\x3d" - "\x54\xdc\x07\x13\x19\x99\xd4\x11\x98\xf9\x7e\xa8\x32\x9a\xbb\x04" - "\xc3\x75\x3f\x83\xe1\xfd\x3b\x92\x78\x72\x3c\x98\x67\xf4\xc1\xff" - "\x19\xe1\xd2\xad\x7d\x34\x65\xf0\xb8\xc2\xdd\x9d\x4c\xcd\x36\x1a" - "\xbd\xf8\x56\x66\xd6\xfe\x04\x2c\x98\x04\x2b\xec\xa9\x4b\x66\x4b" - "\x71\xcf\x78\x07\x56\xe5\xba\x9c\x8a\x72\xb8\xc9\xe4\x82\xd6\x59" - "\x22\x59\x39\x75\xd6\xdd\x00\xf3\x16\xc7\xb2\x0c\x81\xeb\x67\x4f" - "\x0b\xbe\xa8\x1e\xed\xe6\x7b\xbf\xf1\x17\x38\x3f\xf4\x86\x0b\x97" - "\x75\xa7\x81\x86\x14\xb8\x6d\x48\x5e\x88\x98\xa9\x2f\x54\xfd\x7f" - "\x05\x45\xb4\x32\xcd\x5f\xab\xec\x2e\xa8\x42\xd8\x3b\x51\xc2\x18" - "\x91\x7a\xb6\x10\x5e\x26\x8b\xc8\x50\x08\x2c\x79\xa1\xd0\x74\x12" - "\xce\xc4\xd2\x3c\xb0\x04\x54\xa8\x87\x2b\x9f\xb3\x05\x4a\x89\x64" - "\xb5\xaf\x7f\x64\x4b\x45\xcd\xd7\xf2\xb8\xa8\x8c\xd8\x7c\x6e\xe6" - "\x19\xd9\xaf\x59\xb5\x2b\x07\x37\x1b\x8f\xb0\x57\xe7\x05\x9f\x21" - "\x52\x6d\xc4\x89\x4a\xff\xce\xda\xc8\x5b\x73\xf3\xd4\x07\xc7\x29" - "\x02\x7e\xa6\x79\x82\xd3\x01\xba\x93\x0e\x37\x17\x3d\xfc\x38\xd3" - "\x25\x7e\x52\xd2\x53\xba\x20\xe8\xe9\xef\xa2\x96\x38\x49\x14\xd2" - "\x83\x8b\x2c\x62\xb0\x27\xc6\x5d\x36\x34\xd4\x58\x14\x25\x6e\xc1" - "\xcf\xd0\x2d\x21\xa3\xc0\x9c\x9b\x14\x20\x83\xec\x1a\xeb\x14\x2a" - "\xd3\x97\x40\xad\xd0\xeb\x51\x8f\xa2\x10\x62\xb4\x50\x94\xff\x35" - "\x43\xc2\x29\x88\x0e\xf6\xb9\x4c\x85\x80\x13\xed\x2f\x56\x15\xdc" - "\x0f\x09\xd2\xe5\x40\x11\x70\x34\x76\x2c\xed\xb1\xac\xe5\x82\x77" - "\x45\x42\x3e\x8e\x8d\x08\x6e\x5b\xbe\x34\xf9\x93\x0f\x8a\x43\xec" - "\xa6\x9f\x7c\x56\xe6\x95\x31\x85\x9d\xb1\x97\xaf\x2d\xac\x76\x81" - "\x1f\xfb\x4d\x53\xfe\x04\xe2\x48\xbe\xac\x50\xe2\xb3\x74\x77\x5f" - "\x48\xec\x26\xd0\x9b\xb9\xa3\x28\x23\xa9\x2c\xc2\x0a\xb7\xd3\x80" - "\x87\x03\xa2\x3b\x74\x07\xaf\xa5\x5f\x2b\x9b\x90\xa2\xf8\x89\x3c", - .pub_b = "\x75\x3a\x06\x23\x48\x41\x6e\x90\x3b\x5b\x3b\x25\x89\x38\xf1\xa4" - "\x3f\xe0\x96\x2a\xcb\x3c\xd2\x7a\x71\xb3\xed\x8a\xd4\xa5\x62\x77" - "\x4b\x6f\xf4\xf2\x29\x31\x2a\xfc\xb4\x7b\x34\xfe\x9c\xb0\x83\x62" - "\xe7\x45\xc9\x93\x19\x89\xdb\x90\x99\xc5\x77\x85\x06\x97\xa6\x2f" - "\xde\x6d\x98\x01\xbc\x4f\x51\x92\x94\x6f\x10\x3a\x7a\x56\x14\x48" - "\xad\x7d\x1d\x15\x0c\x8c\xda\xc9\x01\xf1\x3b\xfd\x27\x09\x2e\xf7" - "\xec\x0f\x82\x1e\x0e\xa6\xb9\x1b\x63\x90\xc3\x3e\x7e\xf1\xad\x5c" - "\xaf\x6f\x6d\x9d\x3f\x25\x4f\xe9\x53\xaf\x03\x6e\xdc\x24\xf3\x2c" - "\x65\x67\xc7\x08\x61\x80\x18\x7c\x19\x97\x44\x56\x5e\xf0\xa2\x94" - "\x7c\x59\x01\x94\x5b\x46\xa8\x0b\x28\x6c\xa0\xfc\xa0\xad\xe4\x4a" - "\x2c\x87\x77\x7b\x44\x28\x25\xd4\xa2\x24\x70\x69\x9a\x83\xf7\x65" - "\xde\xe3\xeb\x03\x14\x00\x4c\xba\x87\x87\xf2\x47\x4c\x3e\x44\x67" - "\x66\x85\x48\xb4\x12\xa6\x15\x22\x0d\x39\x02\x07\x66\x59\x07\x3a" - "\x64\x9e\xba\x6e\xc4\xdc\x29\x07\x5b\x67\xff\x42\xca\xe0\x1d\xcd" - "\x39\x08\xff\x63\x03\xb1\x76\xc4\xa3\xdc\x81\x33\xfb\x4c\x28\xa1" - "\xe4\x7e\xbe\x5f\x73\x24\x92\x7a\x40\x8d\x75\xc5\x94\x13\x26\x91" - "\xef\x9a\xee\x45\xaa\xff\xfc\xae\x61\x34\xdb\x20\x96\x99\xe9\x18" - "\x30\x95\x37\x23\xaf\x3d\x2f\x3b\x03\x69\x4b\xfa\x92\x92\x57\x8e" - "\x66\xe2\x89\xf0\x62\xe5\x2b\x2c\x23\xca\xcd\x8d\xdd\x88\x92\xb4" - "\xc9\x8e\x9d\x57\x62\x69\x3e\xd1\xd7\xc8\x7e\x99\xac\x4e\x7c\x65" - "\xaf\xea\x99\xfa\x69\xd8\x46\xb2\xc7\x1f\x76\xf1\x3e\x99\xb7\x23" - "\x2c\x7c\x80\x8b\x3a\x5e\x86\x2c\x50\x5a\x36\x48\x0a\x23\x23\xdf" - "\x69\x95\xa0\x1b\xfd\x1f\x4e\x06\xc5\x0b\x17\x3c\x62\xce\x5a\x63" - "\x82\xcd\x14\x64\xb8\x60\x36\xb9\x74\x9c\xa4\xe1\xa5\x0c\xc0\x77" - "\x05\x41\x46\xac\x16\xdb\xb5\x16\x71\x71\x6e\x62\x93\x17\xd6\xdc" - "\xbb\xbd\xb3\x01\x5f\x08\xa9\x71\x91\x97\x92\xb1\x1d\xa8\x0a\xf9" - "\xc3\xaa\x4c\xc2\x63\x48\xd1\xae\x21\xbb\xf3\xb7\xda\x04\x5e\x6e" - "\x82\x89\x5d\xdc\xfb\xae\x76\xaf\x50\x42\x71\x06\x8b\x0c\xfd\xb9" - "\x0f\x00\x24\x97\xe0\x0c\x9f\xf2\x95\x11\x63\x6f\xcf\x59\xfb\xd2" - "\xcc\x10\xec\xaa\xef\x89\xff\x1b\x48\xc9\xce\x78\x22\x50\xf6\x31" - "\x47\x78\x38\x3b\xae\x32\xed\xf6\xaa\xa9\x7a\x53\x71\xc6\xbd\x10" - "\xcf\x17\xf4\x1b\x1e\xb0\x90\x4d\xd1\xd2\xa2\x9b\x5c\x37\xd3\x9c" - "\x31\xb2\xb8\x5b\x8c\xa2\xde\x11\xf7\x97\x03\xea\x45\x38\xc5\x5c" - "\x22\x8e\x3d\x60\x4a\xc7\x32\xaa\xee\x7a\x67\x9a\xa5\x85\x1f\x64" - "\xb1\x45\xe7\xe1\x69\x68\x5c\x65\x1e\x0a\xf3\xf3\x11\x26\x98\x7b" - "\xf8\x27\x23\xad\xf4\x25\x6f\xab\x83\x48\xc4\x5e\xba\xea\x73\x6a" - "\x2b\x82\x66\x02\xf5\x21\x5a\xbc\xf5\xbf\xf1\xa4\x72\x1c\xd9\x9d" - "\xb6\x46\xe9\xb5\x61\xbe\xe5\x59\x8a\xf9\x8e\xfa\x79\x2e\xa6\x02" - "\xad\x22\xea\x06\x2c\x42\x66\xb9\x0c\x6d\x4b\x2b\x8b\xd9\xa3\x8b" - "\x60\xe2\x63\xe0\x44\x54\x02\x2f\x75\xb7\x41\x81\x9c\xe7\xce\xc4" - "\x3e\x82\x05\x5e\x0e\x4c\x16\x0a\x59\xfa\xb1\x13\x02\x87\xb8\xd8" - "\xa7\xbc\x15\xb2\x5a\xb5\xea\x50\x76\x76\x73\xa1\xf4\xc2\x71\x88" - "\x5d\x0c\x8c\xbe\x32\x3d\x60\x15\xdb\xad\xde\x37\xf8\x8e\xb8\xd2" - "\x24\xc3\x3c\x97\xe7\x9c\xc6\xdc\xcd\xcd\x43\x93\x06\xd8\x64\x9f" - "\xca\x07\x15\x47\xca\x13\x39\x8d\xd6\x75\xe0\x61\x7f\x7f\x15\x28" - "\x8f\xe8\x4d\x19\xb6\x41\x20\x93\x17\x03\xaf\x1b\x16\x13\x07\xc7" - "\x50\xfe\xeb\x97\x7c\xe3\x72\x32\x9b\x87\xab\xab\x2d\x47\xa0\x93" - "\xc3\xc9\x17\x58\xc6\x2c\x8a\xa8\x78\x6e\x6c\x30\x6c\xbf\x3f\x66", - .shared = "\xfc\xe8\xe5\xeb\xf2\xb0\x07\xfc\x46\x60\x17\xa8\xed\xf0\xf1\xa6" - "\x9f\x5a\xf2\xea\x49\x2a\x09\xd8\x08\xd2\x84\xc2\x2d\x9b\x3d\x07" - "\x2b\x9f\x89\x1b\x0c\x0f\x09\xe4\x67\xd1\x6e\x33\x8d\x2e\x6d\xd1" - "\xf5\x1b\xdb\xc4\xe8\x64\x61\xf5\x49\x47\xd0\x07\x0f\xbe\xc1\xfc" - "\xe3\xe4\xf3\xd8\xa6\xeb\x73\x8c\xb1\xd5\xcf\xc6\x54\x6d\xe2\x07" - "\xba\x55\x17\xe8\x2b\x39\xc2\xab\x30\x8d\x2d\x48\xe1\xe7\x3f\x7f" - "\x5c\xf8\x4a\xfa\x7b\x71\xb3\xf2\x4c\x52\x45\x5d\xfd\xa0\x94\x98" - "\xe9\xde\x3f\x14\x52\x7f\xa5\xd6\xf7\xa4\x67\x27\x4d\x84\x4e\xaf" - "\x7f\x20\xef\xc6\xaf\x5d\xac\xaf\xd7\xe1\x52\x02\x6f\xd4\x84\x73" - "\x15\x7b\x74\x89\x65\xcd\xa7\xb8\xd5\x8d\x54\x94\x44\x88\xf6\xd2" - "\xa9\x7f\xa9\x12\xd1\x19\xa7\x75\x2f\xcf\x3c\xb9\xc2\xc7\x66\x18" - "\x91\x83\xd9\xa1\x69\xe2\x09\xc0\x38\x7f\x7b\xff\x5e\x44\x9d\x34" - "\x3c\xef\xb3\xbc\x86\x57\xaa\x28\x22\x09\x7a\xa1\x64\xad\xf0\x16" - "\xcb\x15\x8f\xaf\x9e\xb8\x0f\x9f\x53\x1c\x8a\xf9\xf3\x2d\xee\xf7" - "\x31\xa8\xcd\x44\x6a\x5f\xea\x66\x95\x81\x96\x49\x83\xd7\x1d\x54" - "\xaf\x34\x81\x5d\x3c\x4e\x4e\xc5\xe6\x5c\x04\x4d\x7a\x5c\x4b\x7b" - "\x54\x14\xa1\x19\x31\xe3\xda\x28\x4f\x8a\x3a\x99\x12\x3c\x22\xb5" - "\xce\xe7\x8b\x1c\xf0\x3a\xdf\x88\x5b\xe5\xdb\x0a\x88\xcd\x84\x9d" - "\x41\xdd\xf1\x63\x00\xf3\x6c\x23\xa4\x4b\x81\x04\x74\xd1\x35\x8f" - "\xef\x99\x9d\xf9\x46\x7f\x96\x98\x15\xbc\xa6\x25\x39\x6e\x32\xd1" - "\x7f\xa0\xcc\xe9\x60\x41\xc7\xcf\x0d\xd3\x16\x99\xee\xb7\x63\xbb" - "\xb2\x4c\x93\x7f\x50\xd0\xfe\x90\x39\x33\x87\xc6\x17\x97\x44\x83" - "\xad\x3c\x20\x2f\xd5\xc0\x30\xf4\xfa\xde\xdf\x42\x43\x16\x46\x6a" - "\x6b\x36\x59\xcd\xf1\x8c\x39\x82\xba\x54\xf6\x34\x3f\x6b\xf2\xf2" - "\x1f\x58\x58\xea\xdb\x8f\x80\xa2\x4d\x01\xe8\x2d\x70\x0c\x58\xf9" - "\x56\x4f\x6e\xea\xe2\x98\x0c\xc7\x01\x74\x40\x25\x24\xcc\x87\x16" - "\x98\x67\x5a\x7e\x95\x87\xa1\x41\x0e\xa6\x22\x89\x13\x26\x0f\x6f" - "\x81\xdc\xd5\x3d\x75\xe0\xd6\x71\xe7\xde\x0a\x6c\x62\x3b\x64\xab" - "\x2f\x67\xa0\xad\xdc\x32\x70\x1c\xa1\xfa\xe9\x08\xed\x5d\x90\x09" - "\xad\x42\x74\x5d\xcd\x12\x24\xfb\x14\xe8\xb9\x89\xa4\x4f\x0b\x07" - "\xa9\x4a\x7a\x27\xce\x19\x8d\x32\x6f\x74\x9a\xc5\x10\x91\xf1\xfc" - "\x03\xfa\x1c\x87\xe8\x70\x5c\x36\xa8\xef\x2c\xc7\xb6\xe4\x47\xac" - "\xb7\x3d\x0e\x44\x12\xbd\xa2\xf9\xdb\x49\x5f\xc5\xe6\xdf\x7a\x37" - "\x87\x32\x73\xb3\x6d\x08\xac\xef\xb8\xa3\x0a\x14\xb6\xd7\x7f\x76" - "\x0f\x02\x9b\x93\x45\x7b\xee\xd4\x92\x53\x40\x6c\x9e\xe1\x52\xe4" - "\x22\x31\xcf\xcb\xc5\x30\x11\xe0\xb6\xe4\x17\xad\x03\xe9\x8d\xaf" - "\x2e\xc8\x5a\x2c\x89\x49\x9d\xde\x67\xc4\x03\x1d\x91\x8f\x30\x7d" - "\x11\xd1\x93\x8c\x7b\xb9\x17\x71\x7c\x3b\x14\x34\x03\xba\x76\x8a" - "\x4b\xe0\xd0\x93\xc9\x25\x59\xce\x3f\xcc\x5d\x38\xfe\x18\xfa\xbb" - "\x0d\xde\xe0\xd4\x17\x3e\x18\x27\x58\x73\x86\x89\x71\xa0\x7f\xcd" - "\xd4\x8e\x54\xcc\x3f\x63\x1e\x44\x3d\xb9\x39\x77\x4c\xb8\xaa\x57" - "\x5f\x7b\xd2\xa9\x86\x9c\x15\xbe\xa7\xf1\xea\xa9\xdf\x95\x32\x2c" - "\xbf\x93\xb0\x31\xaf\x6e\x74\xe0\x37\x7c\x94\xf0\x4f\x6c\x44\x3c" - "\xd9\x1c\x3b\x48\x24\x8b\x28\x2f\x65\x54\xce\x69\xf4\x5b\xb6\x11" - "\xef\xab\xec\x45\x4d\x10\x58\xa7\xf2\xa7\xc7\x1a\x9f\xfa\xdc\xcd" - "\x54\xfa\x0d\xe8\x96\xbc\x0d\x55\x0a\x49\xf1\x2a\x31\x28\x15\x26" - "\x56\xf2\xa0\x6c\x84\x51\xbd\x6b\xee\x20\xc5\xd6\x4b\x36\x5f\x7b" - "\xb8\xd0\xeb\x41\xb6\x7c\xfb\x9d\x9d\xfd\x62\x0e\xb7\x99\xca\x17", + .method = MODP_6144_BIT, + .seed = chunk_from_chars( + 0xab, 0x36, 0xf0, 0x65, 0x7c, 0x4f, 0xba, 0xdc, 0x2a, 0x3b, + 0x07, 0xed, 0xd1, 0xc8, 0xaf, 0xcb, 0x42, 0xaf, 0xcd, 0x7f, + 0xf9, 0x1c, 0x57, 0x01, 0x37, 0x25, 0x50, 0x0d, 0x89, 0x42, + 0x9f, 0x34, 0x79, 0x8f, 0x99, 0xf5, 0xde, 0x53, 0xd1, 0x08, + 0x8f, 0xd9, 0xf6, 0x60, 0xa1, 0xa5, 0x2b, 0xe4, 0x54, 0xf9, + 0x63, 0x4d, 0x15, 0xbb, 0x4e, 0x4c, 0xe0, 0x9e, 0x5a, 0x69, + 0xe0, 0xf9, 0x9d, 0x59, /* - */ + 0x59, 0xa5, 0x52, 0xa4, 0x0d, 0x17, 0x80, 0xaf, 0x64, 0x33, + 0xbc, 0x9e, 0x8a, 0x9b, 0x6d, 0x48, 0x30, 0xdd, 0xd3, 0x57, + 0x53, 0x07, 0x40, 0x9a, 0x90, 0xc9, 0x2b, 0xda, 0x40, 0x4b, + 0xb7, 0x99, 0xf0, 0x09, 0x3e, 0xfe, 0x21, 0xbe, 0xad, 0x85, + 0xf1, 0x6a, 0x23, 0x7b, 0x05, 0x90, 0xc3, 0x35, 0x6d, 0x96, + 0x8c, 0xc0, 0x9d, 0xcd, 0x5b, 0x2d, 0x96, 0x86, 0x07, 0xd6, + 0xd1, 0xbf, 0x70, 0xc2), + .pub_i = chunk_from_chars( + 0x0a, 0x78, 0x01, 0x5c, 0x3e, 0x0d, 0x36, 0x2a, 0xff, 0xe5, + 0xd9, 0x3a, 0x9c, 0x2d, 0xf2, 0xdf, 0x5b, 0xb9, 0x6b, 0x7f, + 0xf2, 0xfc, 0xc2, 0xdd, 0x96, 0x6c, 0x53, 0x9d, 0x1d, 0x4c, + 0xdb, 0xac, 0xec, 0xe2, 0x6d, 0x16, 0xab, 0x6d, 0x3d, 0xe8, + 0x24, 0xe0, 0x75, 0x87, 0x29, 0x12, 0xeb, 0xa0, 0x44, 0x33, + 0x66, 0x11, 0x0e, 0x0d, 0x7e, 0x17, 0x27, 0x4b, 0x95, 0x78, + 0xaf, 0x12, 0x46, 0x63, 0xe6, 0x55, 0x17, 0x0b, 0xf7, 0xb7, + 0xb2, 0xbd, 0xb4, 0xbf, 0xe4, 0x7a, 0x88, 0x97, 0x68, 0x95, + 0x6a, 0x98, 0xf1, 0xce, 0x1a, 0xc8, 0xc6, 0xc7, 0xc4, 0x8e, + 0x13, 0xa3, 0x6c, 0x16, 0x1c, 0x82, 0x00, 0x7c, 0x98, 0x35, /* 100 */ + 0xb2, 0x2e, 0x7b, 0x47, 0x99, 0x38, 0x92, 0xa1, 0x71, 0x2b, + 0x27, 0x5d, 0xdc, 0x84, 0x54, 0xf4, 0x33, 0x0b, 0xd1, 0xfc, + 0x08, 0xab, 0xfc, 0x48, 0x8e, 0x71, 0x8b, 0x43, 0xa6, 0x21, + 0x3a, 0x09, 0xc5, 0x68, 0x74, 0xce, 0xef, 0xb3, 0xa9, 0xfa, + 0xe7, 0xe1, 0x11, 0xc0, 0x0a, 0x10, 0x43, 0x3f, 0x4b, 0x23, + 0x75, 0xef, 0xab, 0x04, 0x2b, 0xd5, 0xc1, 0xc2, 0x9a, 0xaf, + 0x97, 0x0c, 0xeb, 0xae, 0xb5, 0x7f, 0x10, 0xf0, 0x10, 0x6e, + 0xa6, 0x3d, 0x25, 0x72, 0x59, 0x93, 0x0a, 0xf5, 0xb3, 0x3b, + 0xc2, 0x64, 0x27, 0xe6, 0xef, 0x47, 0x32, 0xde, 0x43, 0xdc, + 0xea, 0x0a, 0x88, 0x72, 0x9b, 0x93, 0x7e, 0x6a, 0x9a, 0xfc, /* 200 */ + 0xf2, 0x92, 0xa2, 0x9f, 0x8b, 0xe9, 0x9b, 0x71, 0x88, 0xd8, + 0x2d, 0xfc, 0x13, 0x7e, 0x69, 0x19, 0x9a, 0x53, 0x5d, 0x92, + 0xdc, 0x61, 0x37, 0x60, 0x03, 0x38, 0x67, 0x1e, 0x6d, 0x46, + 0x76, 0x31, 0xff, 0xc2, 0xbd, 0x69, 0x59, 0x42, 0xcd, 0x7e, + 0xbb, 0x40, 0x2c, 0x54, 0xea, 0x39, 0x1b, 0x9a, 0x02, 0xde, + 0x1f, 0x28, 0x99, 0xfe, 0xd5, 0xbd, 0xb7, 0x1f, 0x27, 0xab, + 0x71, 0x0b, 0xba, 0xaa, 0x32, 0xb2, 0xc2, 0xe0, 0xec, 0x8d, + 0x4b, 0xd4, 0xca, 0x6c, 0xc5, 0x07, 0xd9, 0x72, 0x0b, 0x20, + 0xaf, 0x9c, 0xce, 0xcd, 0x7f, 0x4e, 0x88, 0xed, 0x55, 0x0a, + 0xea, 0xbc, 0x43, 0xdd, 0x0b, 0x3d, 0xc0, 0x20, 0xdb, 0x3e, /* 300 */ + 0x14, 0x89, 0x76, 0xc7, 0x61, 0xf5, 0x44, 0x21, 0x8a, 0x79, + 0xb7, 0x3b, 0x37, 0x77, 0x24, 0x99, 0xf3, 0x61, 0xba, 0x0b, + 0x1d, 0x3c, 0xf2, 0x10, 0x23, 0x75, 0x36, 0xfb, 0x89, 0xd8, + 0x57, 0x86, 0x51, 0xed, 0x67, 0x51, 0xd1, 0xe8, 0x10, 0x95, + 0x61, 0x2b, 0x0f, 0xcf, 0x65, 0x36, 0xbc, 0xb0, 0xff, 0x17, + 0x2c, 0x3d, 0x54, 0xdc, 0x07, 0x13, 0x19, 0x99, 0xd4, 0x11, + 0x98, 0xf9, 0x7e, 0xa8, 0x32, 0x9a, 0xbb, 0x04, 0xc3, 0x75, + 0x3f, 0x83, 0xe1, 0xfd, 0x3b, 0x92, 0x78, 0x72, 0x3c, 0x98, + 0x67, 0xf4, 0xc1, 0xff, 0x19, 0xe1, 0xd2, 0xad, 0x7d, 0x34, + 0x65, 0xf0, 0xb8, 0xc2, 0xdd, 0x9d, 0x4c, 0xcd, 0x36, 0x1a, /* 400 */ + 0xbd, 0xf8, 0x56, 0x66, 0xd6, 0xfe, 0x04, 0x2c, 0x98, 0x04, + 0x2b, 0xec, 0xa9, 0x4b, 0x66, 0x4b, 0x71, 0xcf, 0x78, 0x07, + 0x56, 0xe5, 0xba, 0x9c, 0x8a, 0x72, 0xb8, 0xc9, 0xe4, 0x82, + 0xd6, 0x59, 0x22, 0x59, 0x39, 0x75, 0xd6, 0xdd, 0x00, 0xf3, + 0x16, 0xc7, 0xb2, 0x0c, 0x81, 0xeb, 0x67, 0x4f, 0x0b, 0xbe, + 0xa8, 0x1e, 0xed, 0xe6, 0x7b, 0xbf, 0xf1, 0x17, 0x38, 0x3f, + 0xf4, 0x86, 0x0b, 0x97, 0x75, 0xa7, 0x81, 0x86, 0x14, 0xb8, + 0x6d, 0x48, 0x5e, 0x88, 0x98, 0xa9, 0x2f, 0x54, 0xfd, 0x7f, + 0x05, 0x45, 0xb4, 0x32, 0xcd, 0x5f, 0xab, 0xec, 0x2e, 0xa8, + 0x42, 0xd8, 0x3b, 0x51, 0xc2, 0x18, 0x91, 0x7a, 0xb6, 0x10, /* 500 */ + 0x5e, 0x26, 0x8b, 0xc8, 0x50, 0x08, 0x2c, 0x79, 0xa1, 0xd0, + 0x74, 0x12, 0xce, 0xc4, 0xd2, 0x3c, 0xb0, 0x04, 0x54, 0xa8, + 0x87, 0x2b, 0x9f, 0xb3, 0x05, 0x4a, 0x89, 0x64, 0xb5, 0xaf, + 0x7f, 0x64, 0x4b, 0x45, 0xcd, 0xd7, 0xf2, 0xb8, 0xa8, 0x8c, + 0xd8, 0x7c, 0x6e, 0xe6, 0x19, 0xd9, 0xaf, 0x59, 0xb5, 0x2b, + 0x07, 0x37, 0x1b, 0x8f, 0xb0, 0x57, 0xe7, 0x05, 0x9f, 0x21, + 0x52, 0x6d, 0xc4, 0x89, 0x4a, 0xff, 0xce, 0xda, 0xc8, 0x5b, + 0x73, 0xf3, 0xd4, 0x07, 0xc7, 0x29, 0x02, 0x7e, 0xa6, 0x79, + 0x82, 0xd3, 0x01, 0xba, 0x93, 0x0e, 0x37, 0x17, 0x3d, 0xfc, + 0x38, 0xd3, 0x25, 0x7e, 0x52, 0xd2, 0x53, 0xba, 0x20, 0xe8, /* 600 */ + 0xe9, 0xef, 0xa2, 0x96, 0x38, 0x49, 0x14, 0xd2, 0x83, 0x8b, + 0x2c, 0x62, 0xb0, 0x27, 0xc6, 0x5d, 0x36, 0x34, 0xd4, 0x58, + 0x14, 0x25, 0x6e, 0xc1, 0xcf, 0xd0, 0x2d, 0x21, 0xa3, 0xc0, + 0x9c, 0x9b, 0x14, 0x20, 0x83, 0xec, 0x1a, 0xeb, 0x14, 0x2a, + 0xd3, 0x97, 0x40, 0xad, 0xd0, 0xeb, 0x51, 0x8f, 0xa2, 0x10, + 0x62, 0xb4, 0x50, 0x94, 0xff, 0x35, 0x43, 0xc2, 0x29, 0x88, + 0x0e, 0xf6, 0xb9, 0x4c, 0x85, 0x80, 0x13, 0xed, 0x2f, 0x56, + 0x15, 0xdc, 0x0f, 0x09, 0xd2, 0xe5, 0x40, 0x11, 0x70, 0x34, + 0x76, 0x2c, 0xed, 0xb1, 0xac, 0xe5, 0x82, 0x77, 0x45, 0x42, + 0x3e, 0x8e, 0x8d, 0x08, 0x6e, 0x5b, 0xbe, 0x34, 0xf9, 0x93, /* 700 */ + 0x0f, 0x8a, 0x43, 0xec, 0xa6, 0x9f, 0x7c, 0x56, 0xe6, 0x95, + 0x31, 0x85, 0x9d, 0xb1, 0x97, 0xaf, 0x2d, 0xac, 0x76, 0x81, + 0x1f, 0xfb, 0x4d, 0x53, 0xfe, 0x04, 0xe2, 0x48, 0xbe, 0xac, + 0x50, 0xe2, 0xb3, 0x74, 0x77, 0x5f, 0x48, 0xec, 0x26, 0xd0, + 0x9b, 0xb9, 0xa3, 0x28, 0x23, 0xa9, 0x2c, 0xc2, 0x0a, 0xb7, + 0xd3, 0x80, 0x87, 0x03, 0xa2, 0x3b, 0x74, 0x07, 0xaf, 0xa5, + 0x5f, 0x2b, 0x9b, 0x90, 0xa2, 0xf8, 0x89, 0x3c), + .pub_r = chunk_from_chars( + 0x75, 0x3a, 0x06, 0x23, 0x48, 0x41, 0x6e, 0x90, 0x3b, 0x5b, + 0x3b, 0x25, 0x89, 0x38, 0xf1, 0xa4, 0x3f, 0xe0, 0x96, 0x2a, + 0xcb, 0x3c, 0xd2, 0x7a, 0x71, 0xb3, 0xed, 0x8a, 0xd4, 0xa5, + 0x62, 0x77, 0x4b, 0x6f, 0xf4, 0xf2, 0x29, 0x31, 0x2a, 0xfc, + 0xb4, 0x7b, 0x34, 0xfe, 0x9c, 0xb0, 0x83, 0x62, 0xe7, 0x45, + 0xc9, 0x93, 0x19, 0x89, 0xdb, 0x90, 0x99, 0xc5, 0x77, 0x85, + 0x06, 0x97, 0xa6, 0x2f, 0xde, 0x6d, 0x98, 0x01, 0xbc, 0x4f, + 0x51, 0x92, 0x94, 0x6f, 0x10, 0x3a, 0x7a, 0x56, 0x14, 0x48, + 0xad, 0x7d, 0x1d, 0x15, 0x0c, 0x8c, 0xda, 0xc9, 0x01, 0xf1, + 0x3b, 0xfd, 0x27, 0x09, 0x2e, 0xf7, 0xec, 0x0f, 0x82, 0x1e, /* 100 */ + 0x0e, 0xa6, 0xb9, 0x1b, 0x63, 0x90, 0xc3, 0x3e, 0x7e, 0xf1, + 0xad, 0x5c, 0xaf, 0x6f, 0x6d, 0x9d, 0x3f, 0x25, 0x4f, 0xe9, + 0x53, 0xaf, 0x03, 0x6e, 0xdc, 0x24, 0xf3, 0x2c, 0x65, 0x67, + 0xc7, 0x08, 0x61, 0x80, 0x18, 0x7c, 0x19, 0x97, 0x44, 0x56, + 0x5e, 0xf0, 0xa2, 0x94, 0x7c, 0x59, 0x01, 0x94, 0x5b, 0x46, + 0xa8, 0x0b, 0x28, 0x6c, 0xa0, 0xfc, 0xa0, 0xad, 0xe4, 0x4a, + 0x2c, 0x87, 0x77, 0x7b, 0x44, 0x28, 0x25, 0xd4, 0xa2, 0x24, + 0x70, 0x69, 0x9a, 0x83, 0xf7, 0x65, 0xde, 0xe3, 0xeb, 0x03, + 0x14, 0x00, 0x4c, 0xba, 0x87, 0x87, 0xf2, 0x47, 0x4c, 0x3e, + 0x44, 0x67, 0x66, 0x85, 0x48, 0xb4, 0x12, 0xa6, 0x15, 0x22, /* 200 */ + 0x0d, 0x39, 0x02, 0x07, 0x66, 0x59, 0x07, 0x3a, 0x64, 0x9e, + 0xba, 0x6e, 0xc4, 0xdc, 0x29, 0x07, 0x5b, 0x67, 0xff, 0x42, + 0xca, 0xe0, 0x1d, 0xcd, 0x39, 0x08, 0xff, 0x63, 0x03, 0xb1, + 0x76, 0xc4, 0xa3, 0xdc, 0x81, 0x33, 0xfb, 0x4c, 0x28, 0xa1, + 0xe4, 0x7e, 0xbe, 0x5f, 0x73, 0x24, 0x92, 0x7a, 0x40, 0x8d, + 0x75, 0xc5, 0x94, 0x13, 0x26, 0x91, 0xef, 0x9a, 0xee, 0x45, + 0xaa, 0xff, 0xfc, 0xae, 0x61, 0x34, 0xdb, 0x20, 0x96, 0x99, + 0xe9, 0x18, 0x30, 0x95, 0x37, 0x23, 0xaf, 0x3d, 0x2f, 0x3b, + 0x03, 0x69, 0x4b, 0xfa, 0x92, 0x92, 0x57, 0x8e, 0x66, 0xe2, + 0x89, 0xf0, 0x62, 0xe5, 0x2b, 0x2c, 0x23, 0xca, 0xcd, 0x8d, /* 300 */ + 0xdd, 0x88, 0x92, 0xb4, 0xc9, 0x8e, 0x9d, 0x57, 0x62, 0x69, + 0x3e, 0xd1, 0xd7, 0xc8, 0x7e, 0x99, 0xac, 0x4e, 0x7c, 0x65, + 0xaf, 0xea, 0x99, 0xfa, 0x69, 0xd8, 0x46, 0xb2, 0xc7, 0x1f, + 0x76, 0xf1, 0x3e, 0x99, 0xb7, 0x23, 0x2c, 0x7c, 0x80, 0x8b, + 0x3a, 0x5e, 0x86, 0x2c, 0x50, 0x5a, 0x36, 0x48, 0x0a, 0x23, + 0x23, 0xdf, 0x69, 0x95, 0xa0, 0x1b, 0xfd, 0x1f, 0x4e, 0x06, + 0xc5, 0x0b, 0x17, 0x3c, 0x62, 0xce, 0x5a, 0x63, 0x82, 0xcd, + 0x14, 0x64, 0xb8, 0x60, 0x36, 0xb9, 0x74, 0x9c, 0xa4, 0xe1, + 0xa5, 0x0c, 0xc0, 0x77, 0x05, 0x41, 0x46, 0xac, 0x16, 0xdb, + 0xb5, 0x16, 0x71, 0x71, 0x6e, 0x62, 0x93, 0x17, 0xd6, 0xdc, /* 400 */ + 0xbb, 0xbd, 0xb3, 0x01, 0x5f, 0x08, 0xa9, 0x71, 0x91, 0x97, + 0x92, 0xb1, 0x1d, 0xa8, 0x0a, 0xf9, 0xc3, 0xaa, 0x4c, 0xc2, + 0x63, 0x48, 0xd1, 0xae, 0x21, 0xbb, 0xf3, 0xb7, 0xda, 0x04, + 0x5e, 0x6e, 0x82, 0x89, 0x5d, 0xdc, 0xfb, 0xae, 0x76, 0xaf, + 0x50, 0x42, 0x71, 0x06, 0x8b, 0x0c, 0xfd, 0xb9, 0x0f, 0x00, + 0x24, 0x97, 0xe0, 0x0c, 0x9f, 0xf2, 0x95, 0x11, 0x63, 0x6f, + 0xcf, 0x59, 0xfb, 0xd2, 0xcc, 0x10, 0xec, 0xaa, 0xef, 0x89, + 0xff, 0x1b, 0x48, 0xc9, 0xce, 0x78, 0x22, 0x50, 0xf6, 0x31, + 0x47, 0x78, 0x38, 0x3b, 0xae, 0x32, 0xed, 0xf6, 0xaa, 0xa9, + 0x7a, 0x53, 0x71, 0xc6, 0xbd, 0x10, 0xcf, 0x17, 0xf4, 0x1b, /* 500 */ + 0x1e, 0xb0, 0x90, 0x4d, 0xd1, 0xd2, 0xa2, 0x9b, 0x5c, 0x37, + 0xd3, 0x9c, 0x31, 0xb2, 0xb8, 0x5b, 0x8c, 0xa2, 0xde, 0x11, + 0xf7, 0x97, 0x03, 0xea, 0x45, 0x38, 0xc5, 0x5c, 0x22, 0x8e, + 0x3d, 0x60, 0x4a, 0xc7, 0x32, 0xaa, 0xee, 0x7a, 0x67, 0x9a, + 0xa5, 0x85, 0x1f, 0x64, 0xb1, 0x45, 0xe7, 0xe1, 0x69, 0x68, + 0x5c, 0x65, 0x1e, 0x0a, 0xf3, 0xf3, 0x11, 0x26, 0x98, 0x7b, + 0xf8, 0x27, 0x23, 0xad, 0xf4, 0x25, 0x6f, 0xab, 0x83, 0x48, + 0xc4, 0x5e, 0xba, 0xea, 0x73, 0x6a, 0x2b, 0x82, 0x66, 0x02, + 0xf5, 0x21, 0x5a, 0xbc, 0xf5, 0xbf, 0xf1, 0xa4, 0x72, 0x1c, + 0xd9, 0x9d, 0xb6, 0x46, 0xe9, 0xb5, 0x61, 0xbe, 0xe5, 0x59, /* 600 */ + 0x8a, 0xf9, 0x8e, 0xfa, 0x79, 0x2e, 0xa6, 0x02, 0xad, 0x22, + 0xea, 0x06, 0x2c, 0x42, 0x66, 0xb9, 0x0c, 0x6d, 0x4b, 0x2b, + 0x8b, 0xd9, 0xa3, 0x8b, 0x60, 0xe2, 0x63, 0xe0, 0x44, 0x54, + 0x02, 0x2f, 0x75, 0xb7, 0x41, 0x81, 0x9c, 0xe7, 0xce, 0xc4, + 0x3e, 0x82, 0x05, 0x5e, 0x0e, 0x4c, 0x16, 0x0a, 0x59, 0xfa, + 0xb1, 0x13, 0x02, 0x87, 0xb8, 0xd8, 0xa7, 0xbc, 0x15, 0xb2, + 0x5a, 0xb5, 0xea, 0x50, 0x76, 0x76, 0x73, 0xa1, 0xf4, 0xc2, + 0x71, 0x88, 0x5d, 0x0c, 0x8c, 0xbe, 0x32, 0x3d, 0x60, 0x15, + 0xdb, 0xad, 0xde, 0x37, 0xf8, 0x8e, 0xb8, 0xd2, 0x24, 0xc3, + 0x3c, 0x97, 0xe7, 0x9c, 0xc6, 0xdc, 0xcd, 0xcd, 0x43, 0x93, /* 700 */ + 0x06, 0xd8, 0x64, 0x9f, 0xca, 0x07, 0x15, 0x47, 0xca, 0x13, + 0x39, 0x8d, 0xd6, 0x75, 0xe0, 0x61, 0x7f, 0x7f, 0x15, 0x28, + 0x8f, 0xe8, 0x4d, 0x19, 0xb6, 0x41, 0x20, 0x93, 0x17, 0x03, + 0xaf, 0x1b, 0x16, 0x13, 0x07, 0xc7, 0x50, 0xfe, 0xeb, 0x97, + 0x7c, 0xe3, 0x72, 0x32, 0x9b, 0x87, 0xab, 0xab, 0x2d, 0x47, + 0xa0, 0x93, 0xc3, 0xc9, 0x17, 0x58, 0xc6, 0x2c, 0x8a, 0xa8, + 0x78, 0x6e, 0x6c, 0x30, 0x6c, 0xbf, 0x3f, 0x66), + .shared = chunk_from_chars( + 0xfc, 0xe8, 0xe5, 0xeb, 0xf2, 0xb0, 0x07, 0xfc, 0x46, 0x60, + 0x17, 0xa8, 0xed, 0xf0, 0xf1, 0xa6, 0x9f, 0x5a, 0xf2, 0xea, + 0x49, 0x2a, 0x09, 0xd8, 0x08, 0xd2, 0x84, 0xc2, 0x2d, 0x9b, + 0x3d, 0x07, 0x2b, 0x9f, 0x89, 0x1b, 0x0c, 0x0f, 0x09, 0xe4, + 0x67, 0xd1, 0x6e, 0x33, 0x8d, 0x2e, 0x6d, 0xd1, 0xf5, 0x1b, + 0xdb, 0xc4, 0xe8, 0x64, 0x61, 0xf5, 0x49, 0x47, 0xd0, 0x07, + 0x0f, 0xbe, 0xc1, 0xfc, 0xe3, 0xe4, 0xf3, 0xd8, 0xa6, 0xeb, + 0x73, 0x8c, 0xb1, 0xd5, 0xcf, 0xc6, 0x54, 0x6d, 0xe2, 0x07, + 0xba, 0x55, 0x17, 0xe8, 0x2b, 0x39, 0xc2, 0xab, 0x30, 0x8d, + 0x2d, 0x48, 0xe1, 0xe7, 0x3f, 0x7f, 0x5c, 0xf8, 0x4a, 0xfa, /* 100 */ + 0x7b, 0x71, 0xb3, 0xf2, 0x4c, 0x52, 0x45, 0x5d, 0xfd, 0xa0, + 0x94, 0x98, 0xe9, 0xde, 0x3f, 0x14, 0x52, 0x7f, 0xa5, 0xd6, + 0xf7, 0xa4, 0x67, 0x27, 0x4d, 0x84, 0x4e, 0xaf, 0x7f, 0x20, + 0xef, 0xc6, 0xaf, 0x5d, 0xac, 0xaf, 0xd7, 0xe1, 0x52, 0x02, + 0x6f, 0xd4, 0x84, 0x73, 0x15, 0x7b, 0x74, 0x89, 0x65, 0xcd, + 0xa7, 0xb8, 0xd5, 0x8d, 0x54, 0x94, 0x44, 0x88, 0xf6, 0xd2, + 0xa9, 0x7f, 0xa9, 0x12, 0xd1, 0x19, 0xa7, 0x75, 0x2f, 0xcf, + 0x3c, 0xb9, 0xc2, 0xc7, 0x66, 0x18, 0x91, 0x83, 0xd9, 0xa1, + 0x69, 0xe2, 0x09, 0xc0, 0x38, 0x7f, 0x7b, 0xff, 0x5e, 0x44, + 0x9d, 0x34, 0x3c, 0xef, 0xb3, 0xbc, 0x86, 0x57, 0xaa, 0x28, /* 200 */ + 0x22, 0x09, 0x7a, 0xa1, 0x64, 0xad, 0xf0, 0x16, 0xcb, 0x15, + 0x8f, 0xaf, 0x9e, 0xb8, 0x0f, 0x9f, 0x53, 0x1c, 0x8a, 0xf9, + 0xf3, 0x2d, 0xee, 0xf7, 0x31, 0xa8, 0xcd, 0x44, 0x6a, 0x5f, + 0xea, 0x66, 0x95, 0x81, 0x96, 0x49, 0x83, 0xd7, 0x1d, 0x54, + 0xaf, 0x34, 0x81, 0x5d, 0x3c, 0x4e, 0x4e, 0xc5, 0xe6, 0x5c, + 0x04, 0x4d, 0x7a, 0x5c, 0x4b, 0x7b, 0x54, 0x14, 0xa1, 0x19, + 0x31, 0xe3, 0xda, 0x28, 0x4f, 0x8a, 0x3a, 0x99, 0x12, 0x3c, + 0x22, 0xb5, 0xce, 0xe7, 0x8b, 0x1c, 0xf0, 0x3a, 0xdf, 0x88, + 0x5b, 0xe5, 0xdb, 0x0a, 0x88, 0xcd, 0x84, 0x9d, 0x41, 0xdd, + 0xf1, 0x63, 0x00, 0xf3, 0x6c, 0x23, 0xa4, 0x4b, 0x81, 0x04, /* 300 */ + 0x74, 0xd1, 0x35, 0x8f, 0xef, 0x99, 0x9d, 0xf9, 0x46, 0x7f, + 0x96, 0x98, 0x15, 0xbc, 0xa6, 0x25, 0x39, 0x6e, 0x32, 0xd1, + 0x7f, 0xa0, 0xcc, 0xe9, 0x60, 0x41, 0xc7, 0xcf, 0x0d, 0xd3, + 0x16, 0x99, 0xee, 0xb7, 0x63, 0xbb, 0xb2, 0x4c, 0x93, 0x7f, + 0x50, 0xd0, 0xfe, 0x90, 0x39, 0x33, 0x87, 0xc6, 0x17, 0x97, + 0x44, 0x83, 0xad, 0x3c, 0x20, 0x2f, 0xd5, 0xc0, 0x30, 0xf4, + 0xfa, 0xde, 0xdf, 0x42, 0x43, 0x16, 0x46, 0x6a, 0x6b, 0x36, + 0x59, 0xcd, 0xf1, 0x8c, 0x39, 0x82, 0xba, 0x54, 0xf6, 0x34, + 0x3f, 0x6b, 0xf2, 0xf2, 0x1f, 0x58, 0x58, 0xea, 0xdb, 0x8f, + 0x80, 0xa2, 0x4d, 0x01, 0xe8, 0x2d, 0x70, 0x0c, 0x58, 0xf9, /* 400 */ + 0x56, 0x4f, 0x6e, 0xea, 0xe2, 0x98, 0x0c, 0xc7, 0x01, 0x74, + 0x40, 0x25, 0x24, 0xcc, 0x87, 0x16, 0x98, 0x67, 0x5a, 0x7e, + 0x95, 0x87, 0xa1, 0x41, 0x0e, 0xa6, 0x22, 0x89, 0x13, 0x26, + 0x0f, 0x6f, 0x81, 0xdc, 0xd5, 0x3d, 0x75, 0xe0, 0xd6, 0x71, + 0xe7, 0xde, 0x0a, 0x6c, 0x62, 0x3b, 0x64, 0xab, 0x2f, 0x67, + 0xa0, 0xad, 0xdc, 0x32, 0x70, 0x1c, 0xa1, 0xfa, 0xe9, 0x08, + 0xed, 0x5d, 0x90, 0x09, 0xad, 0x42, 0x74, 0x5d, 0xcd, 0x12, + 0x24, 0xfb, 0x14, 0xe8, 0xb9, 0x89, 0xa4, 0x4f, 0x0b, 0x07, + 0xa9, 0x4a, 0x7a, 0x27, 0xce, 0x19, 0x8d, 0x32, 0x6f, 0x74, + 0x9a, 0xc5, 0x10, 0x91, 0xf1, 0xfc, 0x03, 0xfa, 0x1c, 0x87, /* 500 */ + 0xe8, 0x70, 0x5c, 0x36, 0xa8, 0xef, 0x2c, 0xc7, 0xb6, 0xe4, + 0x47, 0xac, 0xb7, 0x3d, 0x0e, 0x44, 0x12, 0xbd, 0xa2, 0xf9, + 0xdb, 0x49, 0x5f, 0xc5, 0xe6, 0xdf, 0x7a, 0x37, 0x87, 0x32, + 0x73, 0xb3, 0x6d, 0x08, 0xac, 0xef, 0xb8, 0xa3, 0x0a, 0x14, + 0xb6, 0xd7, 0x7f, 0x76, 0x0f, 0x02, 0x9b, 0x93, 0x45, 0x7b, + 0xee, 0xd4, 0x92, 0x53, 0x40, 0x6c, 0x9e, 0xe1, 0x52, 0xe4, + 0x22, 0x31, 0xcf, 0xcb, 0xc5, 0x30, 0x11, 0xe0, 0xb6, 0xe4, + 0x17, 0xad, 0x03, 0xe9, 0x8d, 0xaf, 0x2e, 0xc8, 0x5a, 0x2c, + 0x89, 0x49, 0x9d, 0xde, 0x67, 0xc4, 0x03, 0x1d, 0x91, 0x8f, + 0x30, 0x7d, 0x11, 0xd1, 0x93, 0x8c, 0x7b, 0xb9, 0x17, 0x71, /* 600 */ + 0x7c, 0x3b, 0x14, 0x34, 0x03, 0xba, 0x76, 0x8a, 0x4b, 0xe0, + 0xd0, 0x93, 0xc9, 0x25, 0x59, 0xce, 0x3f, 0xcc, 0x5d, 0x38, + 0xfe, 0x18, 0xfa, 0xbb, 0x0d, 0xde, 0xe0, 0xd4, 0x17, 0x3e, + 0x18, 0x27, 0x58, 0x73, 0x86, 0x89, 0x71, 0xa0, 0x7f, 0xcd, + 0xd4, 0x8e, 0x54, 0xcc, 0x3f, 0x63, 0x1e, 0x44, 0x3d, 0xb9, + 0x39, 0x77, 0x4c, 0xb8, 0xaa, 0x57, 0x5f, 0x7b, 0xd2, 0xa9, + 0x86, 0x9c, 0x15, 0xbe, 0xa7, 0xf1, 0xea, 0xa9, 0xdf, 0x95, + 0x32, 0x2c, 0xbf, 0x93, 0xb0, 0x31, 0xaf, 0x6e, 0x74, 0xe0, + 0x37, 0x7c, 0x94, 0xf0, 0x4f, 0x6c, 0x44, 0x3c, 0xd9, 0x1c, + 0x3b, 0x48, 0x24, 0x8b, 0x28, 0x2f, 0x65, 0x54, 0xce, 0x69, /* 700 */ + 0xf4, 0x5b, 0xb6, 0x11, 0xef, 0xab, 0xec, 0x45, 0x4d, 0x10, + 0x58, 0xa7, 0xf2, 0xa7, 0xc7, 0x1a, 0x9f, 0xfa, 0xdc, 0xcd, + 0x54, 0xfa, 0x0d, 0xe8, 0x96, 0xbc, 0x0d, 0x55, 0x0a, 0x49, + 0xf1, 0x2a, 0x31, 0x28, 0x15, 0x26, 0x56, 0xf2, 0xa0, 0x6c, + 0x84, 0x51, 0xbd, 0x6b, 0xee, 0x20, 0xc5, 0xd6, 0x4b, 0x36, + 0x5f, 0x7b, 0xb8, 0xd0, 0xeb, 0x41, 0xb6, 0x7c, 0xfb, 0x9d, + 0x9d, 0xfd, 0x62, 0x0e, 0xb7, 0x99, 0xca, 0x17) }; ke_test_vector_t modp8192 = { - .method = MODP_8192_BIT, .priv_len = 64, .pub_len = 1024, .shared_len = 1024, - .priv_a = "\xa6\x48\x81\x47\x45\xfe\x1e\xd1\x98\x9b\x75\xba\x6d\xd5\x01\xe4" - "\x4e\x77\x6d\xc9\x97\xa0\xae\x27\x37\x64\x61\xb0\xee\x79\x65\x94" - "\xc2\xe6\xdb\x07\xe5\xf9\xd8\x7d\x94\x4d\x37\x01\x22\x38\xe5\x70" - "\xaf\x52\x3a\x47\xf3\xe8\x6e\x2a\x4c\xd0\xdb\x3a\x49\x40\xcf\x0b", - .priv_b = "\xd8\xf2\xb0\x9f\x17\xbe\x6f\x13\x64\x5c\xb4\x57\xbe\x0a\xa8\x02" - "\x02\xe8\x43\xf5\x10\xd2\x93\xf9\x32\x55\x98\x2f\x89\x87\x26\x61" - "\x79\xd6\x01\x90\x95\x70\xa3\xf9\xcc\x58\x50\x8b\x62\xf8\x8d\x64" - "\xe0\xd0\x59\xf1\xa2\xed\xea\xd4\x42\x82\x04\xcc\x09\x2a\x2d\x82", - .pub_a = "\x1f\x6d\x66\x0a\xfb\x04\x87\x42\x55\xe6\x83\xee\x89\x9a\xd2\xfd" - "\xbc\xf7\x35\x7f\xdf\xe2\x47\xef\x3b\x2f\xf9\x41\x19\x48\x45\x26" - "\x44\x53\x41\xc5\xdf\xea\x28\xa7\x45\xa0\xff\x56\x95\x13\x24\x72" - "\x34\x1b\x11\xb2\xe6\x9b\xd8\xe9\x98\x18\xf0\x5c\x22\x74\x26\x65" - "\x9c\xf0\x34\x81\x55\x50\x1d\xce\x5a\x7b\x5d\x11\xae\xaf\xfb\xd0" - "\x52\xb5\xff\x8a\xc8\xe3\x5e\x78\x50\x29\x79\x53\x9e\xf4\xe4\xa7" - "\xa9\x51\x55\x1a\xcc\x10\x02\x72\x6b\xa8\xee\x95\x95\x70\x19\x92" - "\x34\x15\xd8\xec\x61\x27\xbe\x25\x2c\x44\x65\xb0\xef\xae\x8a\xee" - "\xcd\x39\x0f\x33\x55\xcf\x94\x52\x5e\xef\x38\xdb\x92\x62\x79\xb8" - "\xfd\xce\xe1\x3c\x43\x8e\xdd\xb2\xa5\x22\x44\xa7\x1b\xda\x1e\x85" - "\x30\x91\x82\xfa\x8c\x57\xff\x0c\xd4\x06\x9d\x4f\xfb\xcc\x42\xe5" - "\xe6\x60\xc1\xf0\x07\x3c\x85\x6a\xc6\x11\xcb\xf7\xf9\xf3\x2c\x95" - "\x67\xa1\x8e\x44\x94\xed\xe7\x42\x7b\x1a\x18\x16\x55\xdb\xc7\x91" - "\xc7\x9d\x54\x7d\x88\xfd\x49\x45\x9b\xd3\x56\xee\x47\x26\xa9\x5c" - "\xd3\x7b\xf2\x42\xe4\x8a\x94\xd9\x22\xcc\x06\x66\xce\x4f\x29\x91" - "\x2a\x1e\x4e\xc8\x8e\x3e\x40\xde\xdc\x95\xe1\x2c\xe2\x50\x47\x2e" - "\x58\x37\x49\x32\xe4\x64\x81\xe7\x03\x11\x81\x13\xb7\xdd\x6f\xef" - "\xae\xf5\xc5\xe6\x1c\x13\x6b\x76\xa1\xb0\xbf\x4d\xf0\x01\xc3\x09" - "\xd8\x59\xff\x13\x34\x6d\x52\x11\x9b\xa6\xc9\xca\x38\xe6\x71\x80" - "\x39\xae\x37\x4b\x1c\xe1\x13\xfb\xc6\x91\x8f\x32\xc3\x6a\x04\xd8" - "\xc6\x80\x08\x4e\xef\xf6\x80\xf9\x8f\xda\xaf\x27\x79\x9b\x21\x2d" - "\x2d\xea\x87\x4b\x4d\xeb\x5a\x87\xfb\x72\x36\xe2\x3e\x9b\x42\xcf" - "\xa9\xeb\x49\x41\xe6\xc2\xb8\xc0\xad\xbd\xb3\x61\xc1\x61\x5f\x9c" - "\xb6\xbd\x8f\x99\x3a\xe8\xca\x86\xb8\xd8\x7f\x2f\xb2\x33\xc0\x9f" - "\xd3\x8e\x44\xdc\x6d\x0c\x19\x89\xb9\x05\xc6\x36\xf4\x7a\xc3\x06" - "\x46\xa4\x22\x6e\xef\x76\xba\x92\xfd\xaf\xce\x71\xbc\x0c\x05\xfe" - "\xec\x8f\x8d\xfb\x59\x46\xf9\x7c\xc1\x1f\x1c\x52\x62\x4d\x01\x57" - "\x4e\x86\x03\x94\x8b\xba\xf7\xbd\xca\xbb\x15\xaa\x61\xdd\xbc\x32" - "\xdf\x9e\x5f\xad\x3b\xf8\xf6\xfb\x4d\x1e\x9c\x86\x9e\x7e\x0f\xaf" - "\xf6\x91\x7e\x08\xf4\xfb\x55\xd8\xe0\x4b\xd9\xcd\x23\x57\x83\x58" - "\x59\xd7\x56\x93\xee\x14\x2f\x2b\xd2\x83\xa4\xce\x45\xa2\x90\xba" - "\x15\x4d\xca\x0c\x8b\x29\x7a\xe5\xbc\xba\xa0\x45\xd0\x08\x27\x75" - "\x61\x3a\x83\x99\x2f\x39\xc6\x41\x03\xc0\xb7\xd6\xfb\x5b\x94\x64" - "\xc3\xfe\xca\x32\x1c\xe3\x66\xc8\xb4\x49\x44\x1c\x63\xb0\xaa\x18" - "\x31\x4b\x15\x8a\xda\x77\xc5\xfd\xea\x33\x6c\x9a\x45\x4c\x24\xb5" - "\x1c\xd2\x5d\x56\x98\x3c\xdf\xb1\x5f\x10\xee\xc1\x17\xec\xbe\x7c" - "\xdb\x24\xdd\xdb\x22\xf6\x47\x8a\xfc\xc5\xb5\xa8\x9a\x8f\xb8\x27" - "\x72\xa1\xd4\x5e\x43\xcd\x7b\x33\x2e\xe3\x09\x94\x77\x20\xfe\xba" - "\xae\x2e\x9b\xc1\x43\xdd\x9d\x44\xd8\xd6\xfe\xff\xe3\x0f\xf6\xd3" - "\x71\xa1\xf8\xda\x1c\xff\x41\x21\x6f\x07\xc9\x55\x99\x6f\x0a\xef" - "\xd6\x5a\x6c\xa5\xdd\xba\x98\x46\x30\x43\xad\x27\xe4\xf1\x1e\x3a" - "\x89\x4a\xb3\xc8\x6d\xf7\xe9\x2f\x48\xd0\xd7\x29\x38\x5c\xe7\xac" - "\xbc\x3f\x65\x5e\x23\xdd\xc1\xad\x73\xed\x1a\xee\x81\xf3\x63\x29" - "\x7e\x72\x8f\x1a\xfc\x2d\x03\xf9\xbb\x3c\x38\x42\xc2\xfb\x53\x2f" - "\x56\xd6\xca\xb9\xeb\xa4\x17\x46\xdb\x53\x56\xf0\xdd\x1d\x8a\xfc" - "\x03\x06\x4d\x8c\x97\x7e\xf0\xc6\x5d\x6d\x5a\x23\xed\xee\xf9\x11" - "\xed\x04\x34\x0c\x04\xa0\x60\xf9\xa8\xfe\x8f\xfa\xd6\xf3\x27\x3d" - "\x32\x48\xbe\x3b\x56\x3a\xe8\x76\xe9\x54\xe7\x81\xef\xe3\x8f\xd9" - "\x03\x42\x5b\xa7\xd2\x69\x96\x39\x05\x8f\x41\x25\x35\x3a\x56\x66" - "\x5a\xc8\x36\xda\x84\xc5\xe9\x2e\x55\xac\xe9\xeb\xdc\x8f\xd8\x26" - "\x06\x3b\x61\x7f\xd7\x78\x4e\x5b\xe5\xd7\xca\x76\xf0\xd0\x71\xf6" - "\x45\x21\x30\xdf\xfc\x69\x82\xcf\xc3\x02\xda\x4f\x4e\x51\x59\x4f" - "\x56\xd1\x60\x5a\xd9\x12\x21\x7a\xa9\x99\x81\x5a\xa8\xa8\x10\x94" - "\xd7\x3e\x58\x7e\xd9\xde\xbc\xf5\x83\xf0\x92\x4f\xe6\xdd\x17\xb3" - "\x9c\xdd\xd5\x7b\xc0\xb4\xb5\x8c\xae\x7b\x63\x1a\xaa\xd0\x93\x55" - "\x31\x28\xd7\x8e\xec\x8c\x28\x64\x81\x9e\x2e\x47\xa9\xb3\xa0\x06" - "\x2a\x3d\xfe\x27\x40\x9c\x13\x96\xa0\xff\x65\xd9\x05\xd8\x92\xa2" - "\x63\x0e\xbf\xe2\xc5\xe3\x51\xbf\x20\x74\xdc\xbe\x5a\xfb\xd5\x5c" - "\x1b\x8f\x41\x21\x43\xaf\xdf\x35\xd1\x46\x80\x16\xf0\x28\x5d\x55" - "\x52\x0c\x05\x24\x63\x68\x5d\x50\x7a\x50\xde\x2d\xfa\xae\xd0\x71" - "\x9a\xad\x2a\x56\xb6\xa2\x52\xbc\xe1\x93\xc4\x93\x36\xc6\x08\xec" - "\xf3\x26\x14\x0b\xa5\x4c\x9e\x15\xf3\x48\xf6\xd1\xd4\x45\x41\xd7" - "\xb7\x5c\xd9\x89\x89\xe6\x62\xe6\x4b\x9f\x3a\xf7\xc7\x77\xd7\xc3" - "\xae\x18\x3c\x5c\xee\x2a\xf1\x80\x8a\x73\x83\xa4\x0e\x63\x12\x04", - .pub_b = "\x8e\x2b\x1b\xac\x90\x76\x05\x3f\xf4\xd5\xde\xa3\xad\xf0\xe9\x40" - "\x27\x69\xb2\x65\x1a\x54\x5c\x89\x0a\x82\xbd\x59\xc3\x4f\x55\x02" - "\x77\xdd\xac\x4c\x3b\x43\xb5\x34\xf5\xa2\x15\x85\xba\xa2\x40\x6f" - "\xb7\x37\x6c\xdb\x3d\xd1\xc0\xc9\xa0\x6c\x17\x3c\xa3\xc1\xcf\x7f" - "\x86\x86\xcb\xaf\x9a\x5c\x27\x36\x8e\x47\xac\x3f\x30\x46\xe7\xd9" - "\xd9\x56\x54\x22\xfe\x43\xb6\xc9\x04\xf9\xd0\x63\x02\x02\xcd\x7d" - "\x77\xcc\x21\x1b\x7b\xea\x4a\xc1\x9c\xdb\x68\x0e\x34\x00\x43\x4b" - "\xd1\x66\x03\x07\x42\xc9\x79\x7f\x81\x0f\xcc\xff\x4b\x2c\x00\xf9" - "\xb9\xd4\x70\xde\x92\x65\x45\x32\xac\x64\x76\x49\xe6\xc0\x26\x77" - "\xbc\xb8\x09\xa6\xbd\xa1\x22\x73\x13\x4b\x1c\x7c\xa8\x88\xe1\x69" - "\xb1\xe2\x64\x48\x3f\x4b\x2f\xd8\xa3\xb4\xf6\x4e\x5a\x79\x06\xf0" - "\xcb\x72\x9c\x72\x0e\xe6\x39\xa6\x69\x7b\xa3\x32\x9e\xa0\x81\xb0" - "\xd6\xa2\x10\xee\xbb\x5b\xd5\x51\xd0\xd6\xbf\x28\x80\x0c\x67\xf4" - "\x38\xf4\xc3\x16\x3b\x83\xd2\x6c\xd3\xf3\x02\x34\x64\xeb\xa1\x6c" - "\xb3\xa5\x13\x6a\x64\xb5\xa6\x3a\x1b\x63\x5e\xe7\x03\x96\xdb\x37" - "\x4f\xc8\xb8\x60\x86\x45\x30\x61\x97\xfa\x8e\x3d\xae\x48\xa4\x7d" - "\xfe\x72\x6a\xe9\x98\xeb\x77\x13\x4a\x4e\x6a\xae\x24\xf2\xd2\xad" - "\xa6\xca\x7e\x98\x38\x53\x24\xea\x98\x09\x2c\x5b\x0f\x46\x9c\x6a" - "\x50\x0c\x46\x27\x98\x51\x56\x06\x6e\xca\xe9\xb8\x47\xe7\x20\xd7" - "\x71\x38\xdc\x17\x74\x4e\x0b\x9d\xa6\xe3\x8e\x69\x28\x2a\x90\x45" - "\x3e\x72\xdf\x62\x88\x3a\x8a\x04\x59\x05\x43\x2a\xa3\x22\x90\x1f" - "\x62\xa2\x46\x03\x90\x81\xd8\x1a\x12\x77\x37\x08\x34\x58\x0d\x0b" - "\x5d\x02\x5f\xa3\x66\xfb\x6e\xeb\x22\x5c\xe3\xbc\xcc\x8d\xa5\x94" - "\xe8\x14\xd5\x08\xfe\x8b\x75\x6a\xf1\x9a\xde\x32\x26\x10\xb4\xb9" - "\x9f\x5d\x60\x83\x66\xdf\xfc\xfe\x4d\xdc\xd9\x95\xcf\xa9\x89\xc4" - "\xe6\x92\x8a\xd5\x99\x35\x7e\xc5\x5b\x42\x62\x92\x3f\x7e\x2a\x32" - "\xd0\x64\x8b\x0a\x61\x0f\x3d\xa8\x83\xb8\x95\x77\x34\x3c\xd0\x31" - "\xe6\xf9\x01\x69\x2f\x3f\xb4\xa1\x03\x18\x1b\xf1\xbd\xac\xe1\x8d" - "\x61\xb8\xd0\xf6\x7f\xd9\x7a\x3f\x26\xc1\x81\x16\x80\x93\xe6\x65" - "\x56\x5b\xc1\x56\xfb\xf1\x65\xd9\x5a\x21\xe9\xf2\xd2\xde\x7d\x89" - "\x12\xa2\x4f\x8f\xd9\x61\x0c\x51\xbf\xfc\x36\x65\x36\x5b\x51\x20" - "\x90\x42\x3a\x99\xd1\x88\x21\xf1\xd7\x1a\xe1\xed\xca\xdd\x08\x4e" - "\xb5\x29\xa3\x72\x83\xed\x85\x15\xe5\x20\x5c\x6e\xbb\x39\x2a\x38" - "\x12\xde\xe0\x5a\x1c\x10\x7b\xb2\x5b\x46\xa2\x80\xb4\x3e\x59\x1a" - "\x7d\x09\x70\x9d\xbc\x6f\x76\x8a\xf4\xb4\xc9\x35\x26\xfb\xcc\x7a" - "\xb5\x52\x8b\x06\xe3\x6f\x50\xb1\xf6\x4d\xf4\xbd\xa9\x1e\x39\x37" - "\x56\x1b\x25\x62\x0f\x7a\x4a\xfb\xe1\xff\xf5\x28\xf8\x40\xd4\xf2" - "\x99\xd1\xad\xd9\x23\x5b\x4e\x3b\x8a\x57\x87\x54\x23\xd7\x73\x54" - "\xf9\xa0\x0e\xa5\x49\x5f\x8e\x93\x8e\x41\xeb\x69\x7b\xef\x48\xeb" - "\x1b\xb6\x6b\x48\x29\xff\x4e\x89\xb1\xf2\xbd\xef\x77\x7a\x92\x71" - "\x97\xac\x21\x76\x6e\x54\xd3\x89\xe2\xca\x07\xbe\x00\xe8\xb4\xd4" - "\xd5\x63\xf1\x4b\xbb\x76\x16\xc8\xdb\xf1\x14\x18\x4b\xbe\x39\x00" - "\x75\xf2\x85\x2b\x8e\xd8\xc0\x81\x12\x9b\xe4\x9f\x98\x74\x6f\x70" - "\xa8\xa4\x7f\x14\x66\x21\x91\x61\x86\x2b\xa6\x01\xf5\xd1\x00\x6c" - "\x7b\x3a\x39\xb8\x3b\x6c\xe8\x4b\x16\xd0\x99\xcc\x2a\x9f\x63\xdd" - "\x77\xc1\x1d\x14\x98\x38\xca\x3f\x5a\xdf\xc4\x9d\xf5\xe6\xa8\x2a" - "\x4b\xfb\x53\x68\x6e\x31\x39\x12\x07\x2b\x7e\xe3\x78\x3d\x23\x79" - "\xc4\x2b\xc1\xac\x29\x20\x59\x91\xf0\xd8\xfb\x9d\x20\x5b\x21\x70" - "\x0e\xa8\x46\xca\xfc\x09\x38\x12\x1c\x2c\xa4\x67\xa8\x94\x04\x87" - "\xa4\xaa\x2c\x25\xea\x57\x35\xc2\x4e\xa9\x15\x0e\x7c\x46\xe3\xdf" - "\x40\x77\x81\xd6\xf3\x9c\xee\xd4\x22\x3b\xe9\x20\x98\x1a\x18\x4e" - "\xd3\x3d\xe6\xd0\xfc\xcc\x2d\x5c\x72\x69\xe7\xc4\xca\x12\xe9\xb7" - "\xbe\x84\x31\x9e\x5d\x6f\xcf\x91\x37\x15\xeb\xf8\x08\xba\x50\xc3" - "\xb4\xad\x36\x09\xe0\xd3\x61\xea\x9b\xe6\x28\x56\x33\x73\x2b\xe7" - "\x51\x52\xc5\x40\x66\x34\x47\x03\xe4\xd9\xff\x4b\x23\xaf\x80\x63" - "\xbd\x30\xe0\x2d\xe2\x08\x4a\x09\xd3\x04\x0a\x4d\xbc\x7b\xac\x80" - "\x94\x8c\x4d\xd7\x4a\x35\x72\xa4\x18\x66\xf2\x0e\x01\x6a\x0f\x31" - "\x17\x31\x07\xb9\x65\x68\xd6\xac\x2f\x53\x36\x01\x3f\x06\x18\x77" - "\xae\xbe\xb4\xac\x60\x9a\x73\x3d\x7d\x40\xdc\xed\x19\x27\x03\x57" - "\x0a\xca\xe4\xcc\xc6\xfe\x3b\x7a\x9d\x73\xb2\xa4\xf1\x21\x32\x11" - "\x21\x86\x77\x1e\x25\x96\xc8\xb0\xce\xd5\x1e\x4c\xea\xd0\x04\xde" - "\x67\xa8\x36\x23\x89\x85\x7b\xa9\x2a\x0c\x52\xd5\x63\xbe\x17\xdb" - "\x82\xd5\xf6\x51\xc3\x9a\x9f\xab\x58\x46\x87\x0c\xb3\xc1\x23\x87" - "\x61\xac\x00\xed\x46\xe5\x79\x2c\x5b\xd6\x6e\xaa\xee\x4b\x08\xb2", - .shared = "\x7d\xc5\xc9\x35\xc9\x62\x79\x93\x1d\xfc\x55\xc6\x20\x36\x95\x7c" - "\xa1\x5d\x9c\x0f\xdf\x95\xa7\x1f\x59\xae\xb7\xa6\x39\x0f\xd1\x7e" - "\x93\x34\x7f\xb6\x72\x96\xf2\xe3\x20\x30\x40\xe7\x77\x51\xc1\x0a" - "\x08\xf3\xad\x86\x40\xec\xf0\xd2\x9d\x88\xba\xff\x50\xf7\x4e\x88" - "\x1f\xf0\xdd\x12\x17\x05\x97\x1e\x3c\xe3\x91\x65\x10\xd9\x16\x32" - "\x21\x44\xd8\x81\xed\x17\x9a\x60\x34\xee\x4d\x81\x03\xbc\x05\x56" - "\xba\x7f\xa7\x31\xc9\x3b\x57\x5e\x38\x1c\x45\xbf\xfc\x51\x48\xf3" - "\x05\xa9\x74\x39\xdf\xa1\x34\x48\x62\x31\x5d\x58\x45\x16\xc1\x9e" - "\x26\x38\xb4\x59\x95\xdd\x92\x52\x1e\x26\x20\xed\xd2\xb2\xb3\x98" - "\x6b\xde\xbe\xf1\xa0\xbc\x52\xc9\xfe\x97\x65\x78\xd6\xce\x91\xb1" - "\x8e\x9b\x04\xfc\x74\xb9\x1d\x52\x7d\x0b\xf0\x1d\x2a\x3c\xde\x2e" - "\x4c\x49\xee\x62\x9c\x59\x09\x12\xd7\x4a\xd7\x0d\x03\x72\x3d\x04" - "\x58\xd5\x19\x9e\x42\x97\x2c\x32\xb9\xda\x5c\xee\xaf\x40\x44\xc9" - "\xfd\x69\xcf\x6e\x81\x6b\x2b\xa4\x21\x3b\xde\x2d\xc3\xb7\x03\xe3" - "\xa3\xf2\x77\xd8\x70\xf5\x6f\x24\x48\xbf\x48\xb5\xa5\xff\x86\x06" - "\x0c\x23\xc2\xc9\x8e\xfa\x0f\xa6\xaa\x77\x95\x1a\x1a\x91\xfe\x30" - "\x6b\x18\xc5\xfb\x13\x76\x7a\xa5\x29\xa3\x02\xce\x2b\x46\x74\x5a" - "\x1c\xe6\x7c\x3a\xb7\x43\xea\xf9\x3f\x53\xa9\xfb\x63\x94\x26\x42" - "\x82\xdc\x9a\x4a\xd6\xbb\xa9\xd1\x6e\xc2\xc7\x92\x28\x3b\x33\xc3" - "\x58\xf6\xfb\x44\x5c\x5d\xea\xe0\x62\xaa\x30\x97\x30\x38\x36\x47" - "\xb1\xae\x3b\x99\x35\xab\xc9\x45\x2a\x07\xec\x34\x88\x61\x70\xb0" - "\x47\xf9\xd6\x61\x23\x48\x71\x6f\x85\x3b\xf1\x8a\x17\x72\xc1\x99" - "\x6d\x4f\x94\x2b\x11\xf2\x75\x33\x08\x67\x08\xba\xa6\x50\x2a\x1f" - "\x6b\x0e\x38\x0e\x52\xea\xe0\xd8\xcd\xd0\x11\x80\xa7\xb9\x97\xd9" - "\x68\x1b\x21\x7c\xe2\x69\x8e\x14\x61\x39\x49\x65\xbb\xc2\x7c\x2e" - "\x8e\xb1\x83\x28\x7b\xf0\xf0\x62\xdc\x35\x33\xea\xc9\x14\x3f\x83" - "\x60\xd3\xec\x37\xd4\xe3\x87\x86\x2c\x43\x53\x80\x3f\x39\x36\x4d" - "\x1e\x73\x2a\x5c\x8c\xfb\x2d\x2e\x78\xd1\xf1\xe5\x8c\x89\x35\x1e" - "\x0a\xd3\x07\x3c\x05\x0d\x4e\xa0\x81\x6a\xee\xb5\x27\xef\xa6\x2e" - "\x04\x07\x01\xf7\x40\x9b\xbf\x7b\xf8\x3d\x0f\x68\x79\xc6\x96\x16" - "\x53\x5b\xb0\x8f\xb1\xbd\xd4\x28\xa7\x73\x37\x7b\x06\xbf\x9c\xd2" - "\xb4\x28\x82\xb4\xd2\x63\xf9\xb2\x56\x7c\x28\x02\x4b\x91\x63\x03" - "\xdc\x58\x6e\xb5\x88\x2e\x76\x3a\x53\x4a\xd4\x22\x7c\xa5\xca\xdc" - "\x96\x14\xa6\xfb\x64\xe9\xa5\x09\xf2\x3e\x4d\x7e\x40\x01\x93\x05" - "\xe0\xad\x2e\x20\x7c\x4e\x17\x45\xa8\x70\x7e\xd1\xc7\xbb\x10\x94" - "\x81\x36\x22\x62\x3f\x44\xe2\xfa\x36\x9e\x4e\x37\x75\xdf\x8d\x6f" - "\x15\x73\x41\xf0\x6f\x32\xce\xa9\xfc\x06\x8f\x39\xcf\xfb\x34\x16" - "\xba\x74\x7d\xe6\x02\x18\xd3\xe4\x8c\xee\xd1\xef\xdc\xd4\x59\x8d" - "\xeb\x25\x7a\x09\xc8\xcc\x38\x7b\xcb\x8b\x3c\xb8\x77\xb4\xad\x1a" - "\x9e\x78\x20\x58\x6b\x36\x4d\x5d\xbb\x07\x38\xba\x65\xf4\xfe\x4d" - "\x86\x94\xdf\x77\x52\x08\xb1\x75\x07\x85\xaf\x77\xe9\xb3\xab\x3a" - "\x35\x30\x8a\xfd\x34\x99\x3b\x8f\xfc\x9a\x9e\xe1\x46\xcb\xbf\xf3" - "\xbd\xb9\x9c\x8c\x4e\x29\x6d\xa3\x29\x5a\x1f\x88\x23\xdf\x89\xa7" - "\x88\x7c\x90\x75\x5a\xd5\x97\x60\x17\xdf\x5e\x96\x04\xf8\xae\x24" - "\xd8\xf1\xa3\x3a\xa1\x40\x40\xd1\x45\x8e\xa5\xe5\x32\x32\xcc\xcc" - "\x1c\x8a\x9f\x6d\xa0\xa8\x89\x9d\x75\x2b\xd2\xc2\x07\xb2\xe1\x1a" - "\xcd\x4f\x31\x80\xb2\x19\x5f\x06\x9d\x8e\x7a\xf1\x2e\x15\x1d\xbc" - "\x4c\xb4\x75\x6f\x7b\xb7\xe4\x70\xd6\x0c\xe1\x27\x93\xce\x4a\x63" - "\xde\xe7\x48\x87\x5c\x75\xae\x34\x82\x5a\x71\xda\x1f\x93\x72\x64" - "\x7c\x7b\xda\x6a\xd7\xf9\xe8\x1f\x72\x67\x71\x68\x6f\x85\x64\x53" - "\x72\x80\x8f\x1f\x7a\x15\x1c\x11\xfd\x11\xf7\x8c\xc4\x43\x41\x60" - "\x03\xf2\x79\x19\x27\xdf\x98\x37\xaf\x07\xb3\x8d\x0b\xee\x01\x85" - "\x6f\x6d\xa9\xbd\x0e\x1f\x79\xdf\x21\x78\x24\xbf\xc5\x09\x29\x9e" - "\x64\x0d\x8e\xff\xc9\xe7\xe8\x51\xd3\xe8\xfe\xa5\xe0\xa9\x8d\x54" - "\x17\x3a\x34\xaf\xd9\xbd\xfd\xaa\x8c\x81\x79\xfb\x65\x85\x67\x73" - "\x32\x2d\x32\x00\xcb\x3b\xe2\x0e\x43\xe8\x40\xf6\x42\xf2\x74\x00" - "\xa0\xfd\xe6\x96\x4a\x2b\xbb\xa9\xd9\x95\xc4\x42\x75\x12\x3f\xbb" - "\x79\x35\x9c\x91\xb5\x24\x10\xc4\xc5\xbd\x4a\x4c\x47\xd8\x89\x92" - "\x70\xa5\xe6\xc9\xed\x2e\xbd\x98\xc0\x17\xb0\xad\x8c\x31\x95\x81" - "\x84\x86\xb1\xaa\x42\xf6\x2e\x10\x92\x2f\x67\x73\x33\xb9\x02\x43" - "\x52\x24\x05\xdb\x9c\xec\xc5\xf1\x3e\x78\x05\xcb\x04\xd6\x91\xa8" - "\x51\x9e\x48\xa8\xae\xa8\x8d\x13\x2d\xcd\xa1\xbe\x23\x9e\x00\x4c" - "\x0a\x59\xf8\x18\xb0\x0a\x06\xe2\x0a\xb4\x16\x02\xa7\x21\x4c\xac" - "\x9a\x80\x62\x7f\xb6\xd6\xa0\x3b\x11\xd3\x30\xf9\x3d\xfd\x26\x27", + .method = MODP_8192_BIT, + .seed = chunk_from_chars( + 0xa6, 0x48, 0x81, 0x47, 0x45, 0xfe, 0x1e, 0xd1, 0x98, 0x9b, + 0x75, 0xba, 0x6d, 0xd5, 0x01, 0xe4, 0x4e, 0x77, 0x6d, 0xc9, + 0x97, 0xa0, 0xae, 0x27, 0x37, 0x64, 0x61, 0xb0, 0xee, 0x79, + 0x65, 0x94, 0xc2, 0xe6, 0xdb, 0x07, 0xe5, 0xf9, 0xd8, 0x7d, + 0x94, 0x4d, 0x37, 0x01, 0x22, 0x38, 0xe5, 0x70, 0xaf, 0x52, + 0x3a, 0x47, 0xf3, 0xe8, 0x6e, 0x2a, 0x4c, 0xd0, 0xdb, 0x3a, + 0x49, 0x40, 0xcf, 0x0b, /* - */ + 0xd8, 0xf2, 0xb0, 0x9f, 0x17, 0xbe, 0x6f, 0x13, 0x64, 0x5c, + 0xb4, 0x57, 0xbe, 0x0a, 0xa8, 0x02, 0x02, 0xe8, 0x43, 0xf5, + 0x10, 0xd2, 0x93, 0xf9, 0x32, 0x55, 0x98, 0x2f, 0x89, 0x87, + 0x26, 0x61, 0x79, 0xd6, 0x01, 0x90, 0x95, 0x70, 0xa3, 0xf9, + 0xcc, 0x58, 0x50, 0x8b, 0x62, 0xf8, 0x8d, 0x64, 0xe0, 0xd0, + 0x59, 0xf1, 0xa2, 0xed, 0xea, 0xd4, 0x42, 0x82, 0x04, 0xcc, + 0x09, 0x2a, 0x2d, 0x82), + .pub_i = chunk_from_chars( + 0x1f, 0x6d, 0x66, 0x0a, 0xfb, 0x04, 0x87, 0x42, 0x55, 0xe6, + 0x83, 0xee, 0x89, 0x9a, 0xd2, 0xfd, 0xbc, 0xf7, 0x35, 0x7f, + 0xdf, 0xe2, 0x47, 0xef, 0x3b, 0x2f, 0xf9, 0x41, 0x19, 0x48, + 0x45, 0x26, 0x44, 0x53, 0x41, 0xc5, 0xdf, 0xea, 0x28, 0xa7, + 0x45, 0xa0, 0xff, 0x56, 0x95, 0x13, 0x24, 0x72, 0x34, 0x1b, + 0x11, 0xb2, 0xe6, 0x9b, 0xd8, 0xe9, 0x98, 0x18, 0xf0, 0x5c, + 0x22, 0x74, 0x26, 0x65, 0x9c, 0xf0, 0x34, 0x81, 0x55, 0x50, + 0x1d, 0xce, 0x5a, 0x7b, 0x5d, 0x11, 0xae, 0xaf, 0xfb, 0xd0, + 0x52, 0xb5, 0xff, 0x8a, 0xc8, 0xe3, 0x5e, 0x78, 0x50, 0x29, + 0x79, 0x53, 0x9e, 0xf4, 0xe4, 0xa7, 0xa9, 0x51, 0x55, 0x1a, /* 100 */ + 0xcc, 0x10, 0x02, 0x72, 0x6b, 0xa8, 0xee, 0x95, 0x95, 0x70, + 0x19, 0x92, 0x34, 0x15, 0xd8, 0xec, 0x61, 0x27, 0xbe, 0x25, + 0x2c, 0x44, 0x65, 0xb0, 0xef, 0xae, 0x8a, 0xee, 0xcd, 0x39, + 0x0f, 0x33, 0x55, 0xcf, 0x94, 0x52, 0x5e, 0xef, 0x38, 0xdb, + 0x92, 0x62, 0x79, 0xb8, 0xfd, 0xce, 0xe1, 0x3c, 0x43, 0x8e, + 0xdd, 0xb2, 0xa5, 0x22, 0x44, 0xa7, 0x1b, 0xda, 0x1e, 0x85, + 0x30, 0x91, 0x82, 0xfa, 0x8c, 0x57, 0xff, 0x0c, 0xd4, 0x06, + 0x9d, 0x4f, 0xfb, 0xcc, 0x42, 0xe5, 0xe6, 0x60, 0xc1, 0xf0, + 0x07, 0x3c, 0x85, 0x6a, 0xc6, 0x11, 0xcb, 0xf7, 0xf9, 0xf3, + 0x2c, 0x95, 0x67, 0xa1, 0x8e, 0x44, 0x94, 0xed, 0xe7, 0x42, /* 200 */ + 0x7b, 0x1a, 0x18, 0x16, 0x55, 0xdb, 0xc7, 0x91, 0xc7, 0x9d, + 0x54, 0x7d, 0x88, 0xfd, 0x49, 0x45, 0x9b, 0xd3, 0x56, 0xee, + 0x47, 0x26, 0xa9, 0x5c, 0xd3, 0x7b, 0xf2, 0x42, 0xe4, 0x8a, + 0x94, 0xd9, 0x22, 0xcc, 0x06, 0x66, 0xce, 0x4f, 0x29, 0x91, + 0x2a, 0x1e, 0x4e, 0xc8, 0x8e, 0x3e, 0x40, 0xde, 0xdc, 0x95, + 0xe1, 0x2c, 0xe2, 0x50, 0x47, 0x2e, 0x58, 0x37, 0x49, 0x32, + 0xe4, 0x64, 0x81, 0xe7, 0x03, 0x11, 0x81, 0x13, 0xb7, 0xdd, + 0x6f, 0xef, 0xae, 0xf5, 0xc5, 0xe6, 0x1c, 0x13, 0x6b, 0x76, + 0xa1, 0xb0, 0xbf, 0x4d, 0xf0, 0x01, 0xc3, 0x09, 0xd8, 0x59, + 0xff, 0x13, 0x34, 0x6d, 0x52, 0x11, 0x9b, 0xa6, 0xc9, 0xca, /* 300 */ + 0x38, 0xe6, 0x71, 0x80, 0x39, 0xae, 0x37, 0x4b, 0x1c, 0xe1, + 0x13, 0xfb, 0xc6, 0x91, 0x8f, 0x32, 0xc3, 0x6a, 0x04, 0xd8, + 0xc6, 0x80, 0x08, 0x4e, 0xef, 0xf6, 0x80, 0xf9, 0x8f, 0xda, + 0xaf, 0x27, 0x79, 0x9b, 0x21, 0x2d, 0x2d, 0xea, 0x87, 0x4b, + 0x4d, 0xeb, 0x5a, 0x87, 0xfb, 0x72, 0x36, 0xe2, 0x3e, 0x9b, + 0x42, 0xcf, 0xa9, 0xeb, 0x49, 0x41, 0xe6, 0xc2, 0xb8, 0xc0, + 0xad, 0xbd, 0xb3, 0x61, 0xc1, 0x61, 0x5f, 0x9c, 0xb6, 0xbd, + 0x8f, 0x99, 0x3a, 0xe8, 0xca, 0x86, 0xb8, 0xd8, 0x7f, 0x2f, + 0xb2, 0x33, 0xc0, 0x9f, 0xd3, 0x8e, 0x44, 0xdc, 0x6d, 0x0c, + 0x19, 0x89, 0xb9, 0x05, 0xc6, 0x36, 0xf4, 0x7a, 0xc3, 0x06, /* 400 */ + 0x46, 0xa4, 0x22, 0x6e, 0xef, 0x76, 0xba, 0x92, 0xfd, 0xaf, + 0xce, 0x71, 0xbc, 0x0c, 0x05, 0xfe, 0xec, 0x8f, 0x8d, 0xfb, + 0x59, 0x46, 0xf9, 0x7c, 0xc1, 0x1f, 0x1c, 0x52, 0x62, 0x4d, + 0x01, 0x57, 0x4e, 0x86, 0x03, 0x94, 0x8b, 0xba, 0xf7, 0xbd, + 0xca, 0xbb, 0x15, 0xaa, 0x61, 0xdd, 0xbc, 0x32, 0xdf, 0x9e, + 0x5f, 0xad, 0x3b, 0xf8, 0xf6, 0xfb, 0x4d, 0x1e, 0x9c, 0x86, + 0x9e, 0x7e, 0x0f, 0xaf, 0xf6, 0x91, 0x7e, 0x08, 0xf4, 0xfb, + 0x55, 0xd8, 0xe0, 0x4b, 0xd9, 0xcd, 0x23, 0x57, 0x83, 0x58, + 0x59, 0xd7, 0x56, 0x93, 0xee, 0x14, 0x2f, 0x2b, 0xd2, 0x83, + 0xa4, 0xce, 0x45, 0xa2, 0x90, 0xba, 0x15, 0x4d, 0xca, 0x0c, /* 500 */ + 0x8b, 0x29, 0x7a, 0xe5, 0xbc, 0xba, 0xa0, 0x45, 0xd0, 0x08, + 0x27, 0x75, 0x61, 0x3a, 0x83, 0x99, 0x2f, 0x39, 0xc6, 0x41, + 0x03, 0xc0, 0xb7, 0xd6, 0xfb, 0x5b, 0x94, 0x64, 0xc3, 0xfe, + 0xca, 0x32, 0x1c, 0xe3, 0x66, 0xc8, 0xb4, 0x49, 0x44, 0x1c, + 0x63, 0xb0, 0xaa, 0x18, 0x31, 0x4b, 0x15, 0x8a, 0xda, 0x77, + 0xc5, 0xfd, 0xea, 0x33, 0x6c, 0x9a, 0x45, 0x4c, 0x24, 0xb5, + 0x1c, 0xd2, 0x5d, 0x56, 0x98, 0x3c, 0xdf, 0xb1, 0x5f, 0x10, + 0xee, 0xc1, 0x17, 0xec, 0xbe, 0x7c, 0xdb, 0x24, 0xdd, 0xdb, + 0x22, 0xf6, 0x47, 0x8a, 0xfc, 0xc5, 0xb5, 0xa8, 0x9a, 0x8f, + 0xb8, 0x27, 0x72, 0xa1, 0xd4, 0x5e, 0x43, 0xcd, 0x7b, 0x33, /* 600 */ + 0x2e, 0xe3, 0x09, 0x94, 0x77, 0x20, 0xfe, 0xba, 0xae, 0x2e, + 0x9b, 0xc1, 0x43, 0xdd, 0x9d, 0x44, 0xd8, 0xd6, 0xfe, 0xff, + 0xe3, 0x0f, 0xf6, 0xd3, 0x71, 0xa1, 0xf8, 0xda, 0x1c, 0xff, + 0x41, 0x21, 0x6f, 0x07, 0xc9, 0x55, 0x99, 0x6f, 0x0a, 0xef, + 0xd6, 0x5a, 0x6c, 0xa5, 0xdd, 0xba, 0x98, 0x46, 0x30, 0x43, + 0xad, 0x27, 0xe4, 0xf1, 0x1e, 0x3a, 0x89, 0x4a, 0xb3, 0xc8, + 0x6d, 0xf7, 0xe9, 0x2f, 0x48, 0xd0, 0xd7, 0x29, 0x38, 0x5c, + 0xe7, 0xac, 0xbc, 0x3f, 0x65, 0x5e, 0x23, 0xdd, 0xc1, 0xad, + 0x73, 0xed, 0x1a, 0xee, 0x81, 0xf3, 0x63, 0x29, 0x7e, 0x72, + 0x8f, 0x1a, 0xfc, 0x2d, 0x03, 0xf9, 0xbb, 0x3c, 0x38, 0x42, /* 700 */ + 0xc2, 0xfb, 0x53, 0x2f, 0x56, 0xd6, 0xca, 0xb9, 0xeb, 0xa4, + 0x17, 0x46, 0xdb, 0x53, 0x56, 0xf0, 0xdd, 0x1d, 0x8a, 0xfc, + 0x03, 0x06, 0x4d, 0x8c, 0x97, 0x7e, 0xf0, 0xc6, 0x5d, 0x6d, + 0x5a, 0x23, 0xed, 0xee, 0xf9, 0x11, 0xed, 0x04, 0x34, 0x0c, + 0x04, 0xa0, 0x60, 0xf9, 0xa8, 0xfe, 0x8f, 0xfa, 0xd6, 0xf3, + 0x27, 0x3d, 0x32, 0x48, 0xbe, 0x3b, 0x56, 0x3a, 0xe8, 0x76, + 0xe9, 0x54, 0xe7, 0x81, 0xef, 0xe3, 0x8f, 0xd9, 0x03, 0x42, + 0x5b, 0xa7, 0xd2, 0x69, 0x96, 0x39, 0x05, 0x8f, 0x41, 0x25, + 0x35, 0x3a, 0x56, 0x66, 0x5a, 0xc8, 0x36, 0xda, 0x84, 0xc5, + 0xe9, 0x2e, 0x55, 0xac, 0xe9, 0xeb, 0xdc, 0x8f, 0xd8, 0x26, /* 800 */ + 0x06, 0x3b, 0x61, 0x7f, 0xd7, 0x78, 0x4e, 0x5b, 0xe5, 0xd7, + 0xca, 0x76, 0xf0, 0xd0, 0x71, 0xf6, 0x45, 0x21, 0x30, 0xdf, + 0xfc, 0x69, 0x82, 0xcf, 0xc3, 0x02, 0xda, 0x4f, 0x4e, 0x51, + 0x59, 0x4f, 0x56, 0xd1, 0x60, 0x5a, 0xd9, 0x12, 0x21, 0x7a, + 0xa9, 0x99, 0x81, 0x5a, 0xa8, 0xa8, 0x10, 0x94, 0xd7, 0x3e, + 0x58, 0x7e, 0xd9, 0xde, 0xbc, 0xf5, 0x83, 0xf0, 0x92, 0x4f, + 0xe6, 0xdd, 0x17, 0xb3, 0x9c, 0xdd, 0xd5, 0x7b, 0xc0, 0xb4, + 0xb5, 0x8c, 0xae, 0x7b, 0x63, 0x1a, 0xaa, 0xd0, 0x93, 0x55, + 0x31, 0x28, 0xd7, 0x8e, 0xec, 0x8c, 0x28, 0x64, 0x81, 0x9e, + 0x2e, 0x47, 0xa9, 0xb3, 0xa0, 0x06, 0x2a, 0x3d, 0xfe, 0x27, /* 900 */ + 0x40, 0x9c, 0x13, 0x96, 0xa0, 0xff, 0x65, 0xd9, 0x05, 0xd8, + 0x92, 0xa2, 0x63, 0x0e, 0xbf, 0xe2, 0xc5, 0xe3, 0x51, 0xbf, + 0x20, 0x74, 0xdc, 0xbe, 0x5a, 0xfb, 0xd5, 0x5c, 0x1b, 0x8f, + 0x41, 0x21, 0x43, 0xaf, 0xdf, 0x35, 0xd1, 0x46, 0x80, 0x16, + 0xf0, 0x28, 0x5d, 0x55, 0x52, 0x0c, 0x05, 0x24, 0x63, 0x68, + 0x5d, 0x50, 0x7a, 0x50, 0xde, 0x2d, 0xfa, 0xae, 0xd0, 0x71, + 0x9a, 0xad, 0x2a, 0x56, 0xb6, 0xa2, 0x52, 0xbc, 0xe1, 0x93, + 0xc4, 0x93, 0x36, 0xc6, 0x08, 0xec, 0xf3, 0x26, 0x14, 0x0b, + 0xa5, 0x4c, 0x9e, 0x15, 0xf3, 0x48, 0xf6, 0xd1, 0xd4, 0x45, + 0x41, 0xd7, 0xb7, 0x5c, 0xd9, 0x89, 0x89, 0xe6, 0x62, 0xe6, /* 1000 */ + 0x4b, 0x9f, 0x3a, 0xf7, 0xc7, 0x77, 0xd7, 0xc3, 0xae, 0x18, + 0x3c, 0x5c, 0xee, 0x2a, 0xf1, 0x80, 0x8a, 0x73, 0x83, 0xa4, + 0x0e, 0x63, 0x12, 0x04), + .pub_r = chunk_from_chars( + 0x8e, 0x2b, 0x1b, 0xac, 0x90, 0x76, 0x05, 0x3f, 0xf4, 0xd5, + 0xde, 0xa3, 0xad, 0xf0, 0xe9, 0x40, 0x27, 0x69, 0xb2, 0x65, + 0x1a, 0x54, 0x5c, 0x89, 0x0a, 0x82, 0xbd, 0x59, 0xc3, 0x4f, + 0x55, 0x02, 0x77, 0xdd, 0xac, 0x4c, 0x3b, 0x43, 0xb5, 0x34, + 0xf5, 0xa2, 0x15, 0x85, 0xba, 0xa2, 0x40, 0x6f, 0xb7, 0x37, + 0x6c, 0xdb, 0x3d, 0xd1, 0xc0, 0xc9, 0xa0, 0x6c, 0x17, 0x3c, + 0xa3, 0xc1, 0xcf, 0x7f, 0x86, 0x86, 0xcb, 0xaf, 0x9a, 0x5c, + 0x27, 0x36, 0x8e, 0x47, 0xac, 0x3f, 0x30, 0x46, 0xe7, 0xd9, + 0xd9, 0x56, 0x54, 0x22, 0xfe, 0x43, 0xb6, 0xc9, 0x04, 0xf9, + 0xd0, 0x63, 0x02, 0x02, 0xcd, 0x7d, 0x77, 0xcc, 0x21, 0x1b, /* 100 */ + 0x7b, 0xea, 0x4a, 0xc1, 0x9c, 0xdb, 0x68, 0x0e, 0x34, 0x00, + 0x43, 0x4b, 0xd1, 0x66, 0x03, 0x07, 0x42, 0xc9, 0x79, 0x7f, + 0x81, 0x0f, 0xcc, 0xff, 0x4b, 0x2c, 0x00, 0xf9, 0xb9, 0xd4, + 0x70, 0xde, 0x92, 0x65, 0x45, 0x32, 0xac, 0x64, 0x76, 0x49, + 0xe6, 0xc0, 0x26, 0x77, 0xbc, 0xb8, 0x09, 0xa6, 0xbd, 0xa1, + 0x22, 0x73, 0x13, 0x4b, 0x1c, 0x7c, 0xa8, 0x88, 0xe1, 0x69, + 0xb1, 0xe2, 0x64, 0x48, 0x3f, 0x4b, 0x2f, 0xd8, 0xa3, 0xb4, + 0xf6, 0x4e, 0x5a, 0x79, 0x06, 0xf0, 0xcb, 0x72, 0x9c, 0x72, + 0x0e, 0xe6, 0x39, 0xa6, 0x69, 0x7b, 0xa3, 0x32, 0x9e, 0xa0, + 0x81, 0xb0, 0xd6, 0xa2, 0x10, 0xee, 0xbb, 0x5b, 0xd5, 0x51, /* 200 */ + 0xd0, 0xd6, 0xbf, 0x28, 0x80, 0x0c, 0x67, 0xf4, 0x38, 0xf4, + 0xc3, 0x16, 0x3b, 0x83, 0xd2, 0x6c, 0xd3, 0xf3, 0x02, 0x34, + 0x64, 0xeb, 0xa1, 0x6c, 0xb3, 0xa5, 0x13, 0x6a, 0x64, 0xb5, + 0xa6, 0x3a, 0x1b, 0x63, 0x5e, 0xe7, 0x03, 0x96, 0xdb, 0x37, + 0x4f, 0xc8, 0xb8, 0x60, 0x86, 0x45, 0x30, 0x61, 0x97, 0xfa, + 0x8e, 0x3d, 0xae, 0x48, 0xa4, 0x7d, 0xfe, 0x72, 0x6a, 0xe9, + 0x98, 0xeb, 0x77, 0x13, 0x4a, 0x4e, 0x6a, 0xae, 0x24, 0xf2, + 0xd2, 0xad, 0xa6, 0xca, 0x7e, 0x98, 0x38, 0x53, 0x24, 0xea, + 0x98, 0x09, 0x2c, 0x5b, 0x0f, 0x46, 0x9c, 0x6a, 0x50, 0x0c, + 0x46, 0x27, 0x98, 0x51, 0x56, 0x06, 0x6e, 0xca, 0xe9, 0xb8, /* 300 */ + 0x47, 0xe7, 0x20, 0xd7, 0x71, 0x38, 0xdc, 0x17, 0x74, 0x4e, + 0x0b, 0x9d, 0xa6, 0xe3, 0x8e, 0x69, 0x28, 0x2a, 0x90, 0x45, + 0x3e, 0x72, 0xdf, 0x62, 0x88, 0x3a, 0x8a, 0x04, 0x59, 0x05, + 0x43, 0x2a, 0xa3, 0x22, 0x90, 0x1f, 0x62, 0xa2, 0x46, 0x03, + 0x90, 0x81, 0xd8, 0x1a, 0x12, 0x77, 0x37, 0x08, 0x34, 0x58, + 0x0d, 0x0b, 0x5d, 0x02, 0x5f, 0xa3, 0x66, 0xfb, 0x6e, 0xeb, + 0x22, 0x5c, 0xe3, 0xbc, 0xcc, 0x8d, 0xa5, 0x94, 0xe8, 0x14, + 0xd5, 0x08, 0xfe, 0x8b, 0x75, 0x6a, 0xf1, 0x9a, 0xde, 0x32, + 0x26, 0x10, 0xb4, 0xb9, 0x9f, 0x5d, 0x60, 0x83, 0x66, 0xdf, + 0xfc, 0xfe, 0x4d, 0xdc, 0xd9, 0x95, 0xcf, 0xa9, 0x89, 0xc4, /* 400 */ + 0xe6, 0x92, 0x8a, 0xd5, 0x99, 0x35, 0x7e, 0xc5, 0x5b, 0x42, + 0x62, 0x92, 0x3f, 0x7e, 0x2a, 0x32, 0xd0, 0x64, 0x8b, 0x0a, + 0x61, 0x0f, 0x3d, 0xa8, 0x83, 0xb8, 0x95, 0x77, 0x34, 0x3c, + 0xd0, 0x31, 0xe6, 0xf9, 0x01, 0x69, 0x2f, 0x3f, 0xb4, 0xa1, + 0x03, 0x18, 0x1b, 0xf1, 0xbd, 0xac, 0xe1, 0x8d, 0x61, 0xb8, + 0xd0, 0xf6, 0x7f, 0xd9, 0x7a, 0x3f, 0x26, 0xc1, 0x81, 0x16, + 0x80, 0x93, 0xe6, 0x65, 0x56, 0x5b, 0xc1, 0x56, 0xfb, 0xf1, + 0x65, 0xd9, 0x5a, 0x21, 0xe9, 0xf2, 0xd2, 0xde, 0x7d, 0x89, + 0x12, 0xa2, 0x4f, 0x8f, 0xd9, 0x61, 0x0c, 0x51, 0xbf, 0xfc, + 0x36, 0x65, 0x36, 0x5b, 0x51, 0x20, 0x90, 0x42, 0x3a, 0x99, /* 500 */ + 0xd1, 0x88, 0x21, 0xf1, 0xd7, 0x1a, 0xe1, 0xed, 0xca, 0xdd, + 0x08, 0x4e, 0xb5, 0x29, 0xa3, 0x72, 0x83, 0xed, 0x85, 0x15, + 0xe5, 0x20, 0x5c, 0x6e, 0xbb, 0x39, 0x2a, 0x38, 0x12, 0xde, + 0xe0, 0x5a, 0x1c, 0x10, 0x7b, 0xb2, 0x5b, 0x46, 0xa2, 0x80, + 0xb4, 0x3e, 0x59, 0x1a, 0x7d, 0x09, 0x70, 0x9d, 0xbc, 0x6f, + 0x76, 0x8a, 0xf4, 0xb4, 0xc9, 0x35, 0x26, 0xfb, 0xcc, 0x7a, + 0xb5, 0x52, 0x8b, 0x06, 0xe3, 0x6f, 0x50, 0xb1, 0xf6, 0x4d, + 0xf4, 0xbd, 0xa9, 0x1e, 0x39, 0x37, 0x56, 0x1b, 0x25, 0x62, + 0x0f, 0x7a, 0x4a, 0xfb, 0xe1, 0xff, 0xf5, 0x28, 0xf8, 0x40, + 0xd4, 0xf2, 0x99, 0xd1, 0xad, 0xd9, 0x23, 0x5b, 0x4e, 0x3b, /* 600 */ + 0x8a, 0x57, 0x87, 0x54, 0x23, 0xd7, 0x73, 0x54, 0xf9, 0xa0, + 0x0e, 0xa5, 0x49, 0x5f, 0x8e, 0x93, 0x8e, 0x41, 0xeb, 0x69, + 0x7b, 0xef, 0x48, 0xeb, 0x1b, 0xb6, 0x6b, 0x48, 0x29, 0xff, + 0x4e, 0x89, 0xb1, 0xf2, 0xbd, 0xef, 0x77, 0x7a, 0x92, 0x71, + 0x97, 0xac, 0x21, 0x76, 0x6e, 0x54, 0xd3, 0x89, 0xe2, 0xca, + 0x07, 0xbe, 0x00, 0xe8, 0xb4, 0xd4, 0xd5, 0x63, 0xf1, 0x4b, + 0xbb, 0x76, 0x16, 0xc8, 0xdb, 0xf1, 0x14, 0x18, 0x4b, 0xbe, + 0x39, 0x00, 0x75, 0xf2, 0x85, 0x2b, 0x8e, 0xd8, 0xc0, 0x81, + 0x12, 0x9b, 0xe4, 0x9f, 0x98, 0x74, 0x6f, 0x70, 0xa8, 0xa4, + 0x7f, 0x14, 0x66, 0x21, 0x91, 0x61, 0x86, 0x2b, 0xa6, 0x01, /* 700 */ + 0xf5, 0xd1, 0x00, 0x6c, 0x7b, 0x3a, 0x39, 0xb8, 0x3b, 0x6c, + 0xe8, 0x4b, 0x16, 0xd0, 0x99, 0xcc, 0x2a, 0x9f, 0x63, 0xdd, + 0x77, 0xc1, 0x1d, 0x14, 0x98, 0x38, 0xca, 0x3f, 0x5a, 0xdf, + 0xc4, 0x9d, 0xf5, 0xe6, 0xa8, 0x2a, 0x4b, 0xfb, 0x53, 0x68, + 0x6e, 0x31, 0x39, 0x12, 0x07, 0x2b, 0x7e, 0xe3, 0x78, 0x3d, + 0x23, 0x79, 0xc4, 0x2b, 0xc1, 0xac, 0x29, 0x20, 0x59, 0x91, + 0xf0, 0xd8, 0xfb, 0x9d, 0x20, 0x5b, 0x21, 0x70, 0x0e, 0xa8, + 0x46, 0xca, 0xfc, 0x09, 0x38, 0x12, 0x1c, 0x2c, 0xa4, 0x67, + 0xa8, 0x94, 0x04, 0x87, 0xa4, 0xaa, 0x2c, 0x25, 0xea, 0x57, + 0x35, 0xc2, 0x4e, 0xa9, 0x15, 0x0e, 0x7c, 0x46, 0xe3, 0xdf, /* 800 */ + 0x40, 0x77, 0x81, 0xd6, 0xf3, 0x9c, 0xee, 0xd4, 0x22, 0x3b, + 0xe9, 0x20, 0x98, 0x1a, 0x18, 0x4e, 0xd3, 0x3d, 0xe6, 0xd0, + 0xfc, 0xcc, 0x2d, 0x5c, 0x72, 0x69, 0xe7, 0xc4, 0xca, 0x12, + 0xe9, 0xb7, 0xbe, 0x84, 0x31, 0x9e, 0x5d, 0x6f, 0xcf, 0x91, + 0x37, 0x15, 0xeb, 0xf8, 0x08, 0xba, 0x50, 0xc3, 0xb4, 0xad, + 0x36, 0x09, 0xe0, 0xd3, 0x61, 0xea, 0x9b, 0xe6, 0x28, 0x56, + 0x33, 0x73, 0x2b, 0xe7, 0x51, 0x52, 0xc5, 0x40, 0x66, 0x34, + 0x47, 0x03, 0xe4, 0xd9, 0xff, 0x4b, 0x23, 0xaf, 0x80, 0x63, + 0xbd, 0x30, 0xe0, 0x2d, 0xe2, 0x08, 0x4a, 0x09, 0xd3, 0x04, + 0x0a, 0x4d, 0xbc, 0x7b, 0xac, 0x80, 0x94, 0x8c, 0x4d, 0xd7, /* 900 */ + 0x4a, 0x35, 0x72, 0xa4, 0x18, 0x66, 0xf2, 0x0e, 0x01, 0x6a, + 0x0f, 0x31, 0x17, 0x31, 0x07, 0xb9, 0x65, 0x68, 0xd6, 0xac, + 0x2f, 0x53, 0x36, 0x01, 0x3f, 0x06, 0x18, 0x77, 0xae, 0xbe, + 0xb4, 0xac, 0x60, 0x9a, 0x73, 0x3d, 0x7d, 0x40, 0xdc, 0xed, + 0x19, 0x27, 0x03, 0x57, 0x0a, 0xca, 0xe4, 0xcc, 0xc6, 0xfe, + 0x3b, 0x7a, 0x9d, 0x73, 0xb2, 0xa4, 0xf1, 0x21, 0x32, 0x11, + 0x21, 0x86, 0x77, 0x1e, 0x25, 0x96, 0xc8, 0xb0, 0xce, 0xd5, + 0x1e, 0x4c, 0xea, 0xd0, 0x04, 0xde, 0x67, 0xa8, 0x36, 0x23, + 0x89, 0x85, 0x7b, 0xa9, 0x2a, 0x0c, 0x52, 0xd5, 0x63, 0xbe, + 0x17, 0xdb, 0x82, 0xd5, 0xf6, 0x51, 0xc3, 0x9a, 0x9f, 0xab, /* 1000 */ + 0x58, 0x46, 0x87, 0x0c, 0xb3, 0xc1, 0x23, 0x87, 0x61, 0xac, + 0x00, 0xed, 0x46, 0xe5, 0x79, 0x2c, 0x5b, 0xd6, 0x6e, 0xaa, + 0xee, 0x4b, 0x08, 0xb2), + .shared = chunk_from_chars( + 0x7d, 0xc5, 0xc9, 0x35, 0xc9, 0x62, 0x79, 0x93, 0x1d, 0xfc, + 0x55, 0xc6, 0x20, 0x36, 0x95, 0x7c, 0xa1, 0x5d, 0x9c, 0x0f, + 0xdf, 0x95, 0xa7, 0x1f, 0x59, 0xae, 0xb7, 0xa6, 0x39, 0x0f, + 0xd1, 0x7e, 0x93, 0x34, 0x7f, 0xb6, 0x72, 0x96, 0xf2, 0xe3, + 0x20, 0x30, 0x40, 0xe7, 0x77, 0x51, 0xc1, 0x0a, 0x08, 0xf3, + 0xad, 0x86, 0x40, 0xec, 0xf0, 0xd2, 0x9d, 0x88, 0xba, 0xff, + 0x50, 0xf7, 0x4e, 0x88, 0x1f, 0xf0, 0xdd, 0x12, 0x17, 0x05, + 0x97, 0x1e, 0x3c, 0xe3, 0x91, 0x65, 0x10, 0xd9, 0x16, 0x32, + 0x21, 0x44, 0xd8, 0x81, 0xed, 0x17, 0x9a, 0x60, 0x34, 0xee, + 0x4d, 0x81, 0x03, 0xbc, 0x05, 0x56, 0xba, 0x7f, 0xa7, 0x31, /* 100 */ + 0xc9, 0x3b, 0x57, 0x5e, 0x38, 0x1c, 0x45, 0xbf, 0xfc, 0x51, + 0x48, 0xf3, 0x05, 0xa9, 0x74, 0x39, 0xdf, 0xa1, 0x34, 0x48, + 0x62, 0x31, 0x5d, 0x58, 0x45, 0x16, 0xc1, 0x9e, 0x26, 0x38, + 0xb4, 0x59, 0x95, 0xdd, 0x92, 0x52, 0x1e, 0x26, 0x20, 0xed, + 0xd2, 0xb2, 0xb3, 0x98, 0x6b, 0xde, 0xbe, 0xf1, 0xa0, 0xbc, + 0x52, 0xc9, 0xfe, 0x97, 0x65, 0x78, 0xd6, 0xce, 0x91, 0xb1, + 0x8e, 0x9b, 0x04, 0xfc, 0x74, 0xb9, 0x1d, 0x52, 0x7d, 0x0b, + 0xf0, 0x1d, 0x2a, 0x3c, 0xde, 0x2e, 0x4c, 0x49, 0xee, 0x62, + 0x9c, 0x59, 0x09, 0x12, 0xd7, 0x4a, 0xd7, 0x0d, 0x03, 0x72, + 0x3d, 0x04, 0x58, 0xd5, 0x19, 0x9e, 0x42, 0x97, 0x2c, 0x32, /* 200 */ + 0xb9, 0xda, 0x5c, 0xee, 0xaf, 0x40, 0x44, 0xc9, 0xfd, 0x69, + 0xcf, 0x6e, 0x81, 0x6b, 0x2b, 0xa4, 0x21, 0x3b, 0xde, 0x2d, + 0xc3, 0xb7, 0x03, 0xe3, 0xa3, 0xf2, 0x77, 0xd8, 0x70, 0xf5, + 0x6f, 0x24, 0x48, 0xbf, 0x48, 0xb5, 0xa5, 0xff, 0x86, 0x06, + 0x0c, 0x23, 0xc2, 0xc9, 0x8e, 0xfa, 0x0f, 0xa6, 0xaa, 0x77, + 0x95, 0x1a, 0x1a, 0x91, 0xfe, 0x30, 0x6b, 0x18, 0xc5, 0xfb, + 0x13, 0x76, 0x7a, 0xa5, 0x29, 0xa3, 0x02, 0xce, 0x2b, 0x46, + 0x74, 0x5a, 0x1c, 0xe6, 0x7c, 0x3a, 0xb7, 0x43, 0xea, 0xf9, + 0x3f, 0x53, 0xa9, 0xfb, 0x63, 0x94, 0x26, 0x42, 0x82, 0xdc, + 0x9a, 0x4a, 0xd6, 0xbb, 0xa9, 0xd1, 0x6e, 0xc2, 0xc7, 0x92, /* 300 */ + 0x28, 0x3b, 0x33, 0xc3, 0x58, 0xf6, 0xfb, 0x44, 0x5c, 0x5d, + 0xea, 0xe0, 0x62, 0xaa, 0x30, 0x97, 0x30, 0x38, 0x36, 0x47, + 0xb1, 0xae, 0x3b, 0x99, 0x35, 0xab, 0xc9, 0x45, 0x2a, 0x07, + 0xec, 0x34, 0x88, 0x61, 0x70, 0xb0, 0x47, 0xf9, 0xd6, 0x61, + 0x23, 0x48, 0x71, 0x6f, 0x85, 0x3b, 0xf1, 0x8a, 0x17, 0x72, + 0xc1, 0x99, 0x6d, 0x4f, 0x94, 0x2b, 0x11, 0xf2, 0x75, 0x33, + 0x08, 0x67, 0x08, 0xba, 0xa6, 0x50, 0x2a, 0x1f, 0x6b, 0x0e, + 0x38, 0x0e, 0x52, 0xea, 0xe0, 0xd8, 0xcd, 0xd0, 0x11, 0x80, + 0xa7, 0xb9, 0x97, 0xd9, 0x68, 0x1b, 0x21, 0x7c, 0xe2, 0x69, + 0x8e, 0x14, 0x61, 0x39, 0x49, 0x65, 0xbb, 0xc2, 0x7c, 0x2e, /* 400 */ + 0x8e, 0xb1, 0x83, 0x28, 0x7b, 0xf0, 0xf0, 0x62, 0xdc, 0x35, + 0x33, 0xea, 0xc9, 0x14, 0x3f, 0x83, 0x60, 0xd3, 0xec, 0x37, + 0xd4, 0xe3, 0x87, 0x86, 0x2c, 0x43, 0x53, 0x80, 0x3f, 0x39, + 0x36, 0x4d, 0x1e, 0x73, 0x2a, 0x5c, 0x8c, 0xfb, 0x2d, 0x2e, + 0x78, 0xd1, 0xf1, 0xe5, 0x8c, 0x89, 0x35, 0x1e, 0x0a, 0xd3, + 0x07, 0x3c, 0x05, 0x0d, 0x4e, 0xa0, 0x81, 0x6a, 0xee, 0xb5, + 0x27, 0xef, 0xa6, 0x2e, 0x04, 0x07, 0x01, 0xf7, 0x40, 0x9b, + 0xbf, 0x7b, 0xf8, 0x3d, 0x0f, 0x68, 0x79, 0xc6, 0x96, 0x16, + 0x53, 0x5b, 0xb0, 0x8f, 0xb1, 0xbd, 0xd4, 0x28, 0xa7, 0x73, + 0x37, 0x7b, 0x06, 0xbf, 0x9c, 0xd2, 0xb4, 0x28, 0x82, 0xb4, /* 500 */ + 0xd2, 0x63, 0xf9, 0xb2, 0x56, 0x7c, 0x28, 0x02, 0x4b, 0x91, + 0x63, 0x03, 0xdc, 0x58, 0x6e, 0xb5, 0x88, 0x2e, 0x76, 0x3a, + 0x53, 0x4a, 0xd4, 0x22, 0x7c, 0xa5, 0xca, 0xdc, 0x96, 0x14, + 0xa6, 0xfb, 0x64, 0xe9, 0xa5, 0x09, 0xf2, 0x3e, 0x4d, 0x7e, + 0x40, 0x01, 0x93, 0x05, 0xe0, 0xad, 0x2e, 0x20, 0x7c, 0x4e, + 0x17, 0x45, 0xa8, 0x70, 0x7e, 0xd1, 0xc7, 0xbb, 0x10, 0x94, + 0x81, 0x36, 0x22, 0x62, 0x3f, 0x44, 0xe2, 0xfa, 0x36, 0x9e, + 0x4e, 0x37, 0x75, 0xdf, 0x8d, 0x6f, 0x15, 0x73, 0x41, 0xf0, + 0x6f, 0x32, 0xce, 0xa9, 0xfc, 0x06, 0x8f, 0x39, 0xcf, 0xfb, + 0x34, 0x16, 0xba, 0x74, 0x7d, 0xe6, 0x02, 0x18, 0xd3, 0xe4, /* 600 */ + 0x8c, 0xee, 0xd1, 0xef, 0xdc, 0xd4, 0x59, 0x8d, 0xeb, 0x25, + 0x7a, 0x09, 0xc8, 0xcc, 0x38, 0x7b, 0xcb, 0x8b, 0x3c, 0xb8, + 0x77, 0xb4, 0xad, 0x1a, 0x9e, 0x78, 0x20, 0x58, 0x6b, 0x36, + 0x4d, 0x5d, 0xbb, 0x07, 0x38, 0xba, 0x65, 0xf4, 0xfe, 0x4d, + 0x86, 0x94, 0xdf, 0x77, 0x52, 0x08, 0xb1, 0x75, 0x07, 0x85, + 0xaf, 0x77, 0xe9, 0xb3, 0xab, 0x3a, 0x35, 0x30, 0x8a, 0xfd, + 0x34, 0x99, 0x3b, 0x8f, 0xfc, 0x9a, 0x9e, 0xe1, 0x46, 0xcb, + 0xbf, 0xf3, 0xbd, 0xb9, 0x9c, 0x8c, 0x4e, 0x29, 0x6d, 0xa3, + 0x29, 0x5a, 0x1f, 0x88, 0x23, 0xdf, 0x89, 0xa7, 0x88, 0x7c, + 0x90, 0x75, 0x5a, 0xd5, 0x97, 0x60, 0x17, 0xdf, 0x5e, 0x96, /* 700 */ + 0x04, 0xf8, 0xae, 0x24, 0xd8, 0xf1, 0xa3, 0x3a, 0xa1, 0x40, + 0x40, 0xd1, 0x45, 0x8e, 0xa5, 0xe5, 0x32, 0x32, 0xcc, 0xcc, + 0x1c, 0x8a, 0x9f, 0x6d, 0xa0, 0xa8, 0x89, 0x9d, 0x75, 0x2b, + 0xd2, 0xc2, 0x07, 0xb2, 0xe1, 0x1a, 0xcd, 0x4f, 0x31, 0x80, + 0xb2, 0x19, 0x5f, 0x06, 0x9d, 0x8e, 0x7a, 0xf1, 0x2e, 0x15, + 0x1d, 0xbc, 0x4c, 0xb4, 0x75, 0x6f, 0x7b, 0xb7, 0xe4, 0x70, + 0xd6, 0x0c, 0xe1, 0x27, 0x93, 0xce, 0x4a, 0x63, 0xde, 0xe7, + 0x48, 0x87, 0x5c, 0x75, 0xae, 0x34, 0x82, 0x5a, 0x71, 0xda, + 0x1f, 0x93, 0x72, 0x64, 0x7c, 0x7b, 0xda, 0x6a, 0xd7, 0xf9, + 0xe8, 0x1f, 0x72, 0x67, 0x71, 0x68, 0x6f, 0x85, 0x64, 0x53, /* 800 */ + 0x72, 0x80, 0x8f, 0x1f, 0x7a, 0x15, 0x1c, 0x11, 0xfd, 0x11, + 0xf7, 0x8c, 0xc4, 0x43, 0x41, 0x60, 0x03, 0xf2, 0x79, 0x19, + 0x27, 0xdf, 0x98, 0x37, 0xaf, 0x07, 0xb3, 0x8d, 0x0b, 0xee, + 0x01, 0x85, 0x6f, 0x6d, 0xa9, 0xbd, 0x0e, 0x1f, 0x79, 0xdf, + 0x21, 0x78, 0x24, 0xbf, 0xc5, 0x09, 0x29, 0x9e, 0x64, 0x0d, + 0x8e, 0xff, 0xc9, 0xe7, 0xe8, 0x51, 0xd3, 0xe8, 0xfe, 0xa5, + 0xe0, 0xa9, 0x8d, 0x54, 0x17, 0x3a, 0x34, 0xaf, 0xd9, 0xbd, + 0xfd, 0xaa, 0x8c, 0x81, 0x79, 0xfb, 0x65, 0x85, 0x67, 0x73, + 0x32, 0x2d, 0x32, 0x00, 0xcb, 0x3b, 0xe2, 0x0e, 0x43, 0xe8, + 0x40, 0xf6, 0x42, 0xf2, 0x74, 0x00, 0xa0, 0xfd, 0xe6, 0x96, /* 900 */ + 0x4a, 0x2b, 0xbb, 0xa9, 0xd9, 0x95, 0xc4, 0x42, 0x75, 0x12, + 0x3f, 0xbb, 0x79, 0x35, 0x9c, 0x91, 0xb5, 0x24, 0x10, 0xc4, + 0xc5, 0xbd, 0x4a, 0x4c, 0x47, 0xd8, 0x89, 0x92, 0x70, 0xa5, + 0xe6, 0xc9, 0xed, 0x2e, 0xbd, 0x98, 0xc0, 0x17, 0xb0, 0xad, + 0x8c, 0x31, 0x95, 0x81, 0x84, 0x86, 0xb1, 0xaa, 0x42, 0xf6, + 0x2e, 0x10, 0x92, 0x2f, 0x67, 0x73, 0x33, 0xb9, 0x02, 0x43, + 0x52, 0x24, 0x05, 0xdb, 0x9c, 0xec, 0xc5, 0xf1, 0x3e, 0x78, + 0x05, 0xcb, 0x04, 0xd6, 0x91, 0xa8, 0x51, 0x9e, 0x48, 0xa8, + 0xae, 0xa8, 0x8d, 0x13, 0x2d, 0xcd, 0xa1, 0xbe, 0x23, 0x9e, + 0x00, 0x4c, 0x0a, 0x59, 0xf8, 0x18, 0xb0, 0x0a, 0x06, 0xe2, /* 1000 */ + 0x0a, 0xb4, 0x16, 0x02, 0xa7, 0x21, 0x4c, 0xac, 0x9a, 0x80, + 0x62, 0x7f, 0xb6, 0xd6, 0xa0, 0x3b, 0x11, 0xd3, 0x30, 0xf9, + 0x3d, 0xfd, 0x26, 0x27) }; diff --git a/src/libstrongswan/plugins/test_vectors/test_vectors/modpsub.c b/src/libstrongswan/plugins/test_vectors/test_vectors/modpsub.c index 31cf5614d..1b1561583 100644 --- a/src/libstrongswan/plugins/test_vectors/test_vectors/modpsub.c +++ b/src/libstrongswan/plugins/test_vectors/test_vectors/modpsub.c @@ -2,6 +2,9 @@ * Copyright (C) 2015 Martin Willi * Copyright (C) 2015 revosec AG * + * Copyright (C) 2019 Andreas Steffen + * HSR Hochschule fuer Technik Rapperswil + * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the Licenseor (at your @@ -20,145 +23,238 @@ */ ke_test_vector_t modp1024_160 = { - .method = MODP_1024_160, .priv_len = 20, .pub_len = 128, .shared_len = 128, - .priv_a = "\xB9\xA3\xB3\xAE\x8F\xEF\xC1\xA2\x93\x04\x96\x50\x70\x86\xF8\x45" - "\x5D\x48\x94\x3E", - .priv_b = "\x93\x92\xC9\xF9\xEB\x6A\x7A\x6A\x90\x22\xF7\xD8\x3E\x72\x23\xC6" - "\x83\x5B\xBD\xDA", - .pub_a = "\x2A\x85\x3B\x3D\x92\x19\x75\x01\xB9\x01\x5B\x2D\xEB\x3E\xD8\x4F" - "\x5E\x02\x1D\xCC\x3E\x52\xF1\x09\xD3\x27\x3D\x2B\x75\x21\x28\x1C" - "\xBA\xBE\x0E\x76\xFF\x57\x27\xFA\x8A\xCC\xE2\x69\x56\xBA\x9A\x1F" - "\xCA\x26\xF2\x02\x28\xD8\x69\x3F\xEB\x10\x84\x1D\x84\xA7\x36\x00" - "\x54\xEC\xE5\xA7\xF5\xB7\xA6\x1A\xD3\xDF\xB3\xC6\x0D\x2E\x43\x10" - "\x6D\x87\x27\xDA\x37\xDF\x9C\xCE\x95\xB4\x78\x75\x5D\x06\xBC\xEA" - "\x8F\x9D\x45\x96\x5F\x75\xA5\xF3\xD1\xDF\x37\x01\x16\x5F\xC9\xE5" - "\x0C\x42\x79\xCE\xB0\x7F\x98\x95\x40\xAE\x96\xD5\xD8\x8E\xD7\x76", - .pub_b = "\x71\x7A\x6C\xB0\x53\x37\x1F\xF4\xA3\xB9\x32\x94\x1C\x1E\x56\x63" - "\xF8\x61\xA1\xD6\xAD\x34\xAE\x66\x57\x6D\xFB\x98\xF6\xC6\xCB\xF9" - "\xDD\xD5\xA5\x6C\x78\x33\xF6\xBC\xFD\xFF\x09\x55\x82\xAD\x86\x8E" - "\x44\x0E\x8D\x09\xFD\x76\x9E\x3C\xEC\xCD\xC3\xD3\xB1\xE4\xCF\xA0" - "\x57\x77\x6C\xAA\xF9\x73\x9B\x6A\x9F\xEE\x8E\x74\x11\xF8\xD6\xDA" - "\xC0\x9D\x6A\x4E\xDB\x46\xCC\x2B\x5D\x52\x03\x09\x0E\xAE\x61\x26" - "\x31\x1E\x53\xFD\x2C\x14\xB5\x74\xE6\xA3\x10\x9A\x3D\xA1\xBE\x41" - "\xBD\xCE\xAA\x18\x6F\x5C\xE0\x67\x16\xA2\xB6\xA0\x7B\x3C\x33\xFE", - .shared = "\x5C\x80\x4F\x45\x4D\x30\xD9\xC4\xDF\x85\x27\x1F\x93\x52\x8C\x91" - "\xDF\x6B\x48\xAB\x5F\x80\xB3\xB5\x9C\xAA\xC1\xB2\x8F\x8A\xCB\xA9" - "\xCD\x3E\x39\xF3\xCB\x61\x45\x25\xD9\x52\x1D\x2E\x64\x4C\x53\xB8" - "\x07\xB8\x10\xF3\x40\x06\x2F\x25\x7D\x7D\x6F\xBF\xE8\xD5\xE8\xF0" - "\x72\xE9\xB6\xE9\xAF\xDA\x94\x13\xEA\xFB\x2E\x8B\x06\x99\xB1\xFB" - "\x5A\x0C\xAC\xED\xDE\xAE\xAD\x7E\x9C\xFB\xB3\x6A\xE2\xB4\x20\x83" - "\x5B\xD8\x3A\x19\xFB\x0B\x5E\x96\xBF\x8F\xA4\xD0\x9E\x34\x55\x25" - "\x16\x7E\xCD\x91\x55\x41\x6F\x46\xF4\x08\xED\x31\xB6\x3C\x6E\x6D", + .method = MODP_1024_160, + .seed = chunk_from_chars( + 0xB9, 0xA3, 0xB3, 0xAE, 0x8F, 0xEF, 0xC1, 0xA2, 0x93, 0x04, + 0x96, 0x50, 0x70, 0x86, 0xF8, 0x45, 0x5D, 0x48, 0x94, 0x3E, /* - */ + 0x93, 0x92, 0xC9, 0xF9, 0xEB, 0x6A, 0x7A, 0x6A, 0x90, 0x22, + 0xF7, 0xD8, 0x3E, 0x72, 0x23, 0xC6, 0x83, 0x5B, 0xBD, 0xDA), + .pub_i = chunk_from_chars( + 0x2A, 0x85, 0x3B, 0x3D, 0x92, 0x19, 0x75, 0x01, 0xB9, 0x01, + 0x5B, 0x2D, 0xEB, 0x3E, 0xD8, 0x4F, 0x5E, 0x02, 0x1D, 0xCC, + 0x3E, 0x52, 0xF1, 0x09, 0xD3, 0x27, 0x3D, 0x2B, 0x75, 0x21, + 0x28, 0x1C, 0xBA, 0xBE, 0x0E, 0x76, 0xFF, 0x57, 0x27, 0xFA, + 0x8A, 0xCC, 0xE2, 0x69, 0x56, 0xBA, 0x9A, 0x1F, 0xCA, 0x26, + 0xF2, 0x02, 0x28, 0xD8, 0x69, 0x3F, 0xEB, 0x10, 0x84, 0x1D, + 0x84, 0xA7, 0x36, 0x00, 0x54, 0xEC, 0xE5, 0xA7, 0xF5, 0xB7, + 0xA6, 0x1A, 0xD3, 0xDF, 0xB3, 0xC6, 0x0D, 0x2E, 0x43, 0x10, + 0x6D, 0x87, 0x27, 0xDA, 0x37, 0xDF, 0x9C, 0xCE, 0x95, 0xB4, + 0x78, 0x75, 0x5D, 0x06, 0xBC, 0xEA, 0x8F, 0x9D, 0x45, 0x96, /* 100 */ + 0x5F, 0x75, 0xA5, 0xF3, 0xD1, 0xDF, 0x37, 0x01, 0x16, 0x5F, + 0xC9, 0xE5, 0x0C, 0x42, 0x79, 0xCE, 0xB0, 0x7F, 0x98, 0x95, + 0x40, 0xAE, 0x96, 0xD5, 0xD8, 0x8E, 0xD7, 0x76), + .pub_r = chunk_from_chars( + 0x71, 0x7A, 0x6C, 0xB0, 0x53, 0x37, 0x1F, 0xF4, 0xA3, 0xB9, + 0x32, 0x94, 0x1C, 0x1E, 0x56, 0x63, 0xF8, 0x61, 0xA1, 0xD6, + 0xAD, 0x34, 0xAE, 0x66, 0x57, 0x6D, 0xFB, 0x98, 0xF6, 0xC6, + 0xCB, 0xF9, 0xDD, 0xD5, 0xA5, 0x6C, 0x78, 0x33, 0xF6, 0xBC, + 0xFD, 0xFF, 0x09, 0x55, 0x82, 0xAD, 0x86, 0x8E, 0x44, 0x0E, + 0x8D, 0x09, 0xFD, 0x76, 0x9E, 0x3C, 0xEC, 0xCD, 0xC3, 0xD3, + 0xB1, 0xE4, 0xCF, 0xA0, 0x57, 0x77, 0x6C, 0xAA, 0xF9, 0x73, + 0x9B, 0x6A, 0x9F, 0xEE, 0x8E, 0x74, 0x11, 0xF8, 0xD6, 0xDA, + 0xC0, 0x9D, 0x6A, 0x4E, 0xDB, 0x46, 0xCC, 0x2B, 0x5D, 0x52, + 0x03, 0x09, 0x0E, 0xAE, 0x61, 0x26, 0x31, 0x1E, 0x53, 0xFD, /* 100 */ + 0x2C, 0x14, 0xB5, 0x74, 0xE6, 0xA3, 0x10, 0x9A, 0x3D, 0xA1, + 0xBE, 0x41, 0xBD, 0xCE, 0xAA, 0x18, 0x6F, 0x5C, 0xE0, 0x67, + 0x16, 0xA2, 0xB6, 0xA0, 0x7B, 0x3C, 0x33, 0xFE), + .shared = chunk_from_chars( + 0x5C, 0x80, 0x4F, 0x45, 0x4D, 0x30, 0xD9, 0xC4, 0xDF, 0x85, + 0x27, 0x1F, 0x93, 0x52, 0x8C, 0x91, 0xDF, 0x6B, 0x48, 0xAB, + 0x5F, 0x80, 0xB3, 0xB5, 0x9C, 0xAA, 0xC1, 0xB2, 0x8F, 0x8A, + 0xCB, 0xA9, 0xCD, 0x3E, 0x39, 0xF3, 0xCB, 0x61, 0x45, 0x25, + 0xD9, 0x52, 0x1D, 0x2E, 0x64, 0x4C, 0x53, 0xB8, 0x07, 0xB8, + 0x10, 0xF3, 0x40, 0x06, 0x2F, 0x25, 0x7D, 0x7D, 0x6F, 0xBF, + 0xE8, 0xD5, 0xE8, 0xF0, 0x72, 0xE9, 0xB6, 0xE9, 0xAF, 0xDA, + 0x94, 0x13, 0xEA, 0xFB, 0x2E, 0x8B, 0x06, 0x99, 0xB1, 0xFB, + 0x5A, 0x0C, 0xAC, 0xED, 0xDE, 0xAE, 0xAD, 0x7E, 0x9C, 0xFB, + 0xB3, 0x6A, 0xE2, 0xB4, 0x20, 0x83, 0x5B, 0xD8, 0x3A, 0x19, /* 100 */ + 0xFB, 0x0B, 0x5E, 0x96, 0xBF, 0x8F, 0xA4, 0xD0, 0x9E, 0x34, + 0x55, 0x25, 0x16, 0x7E, 0xCD, 0x91, 0x55, 0x41, 0x6F, 0x46, + 0xF4, 0x08, 0xED, 0x31, 0xB6, 0x3C, 0x6E, 0x6D) }; ke_test_vector_t modp2048_224 = { - .method = MODP_2048_224, .priv_len = 28, .pub_len = 256, .shared_len = 256, - .priv_a = "\x22\xe6\x26\x01\xdb\xff\xd0\x67\x08\xa6\x80\xf7\x47\xf3\x61\xf7" - "\x6d\x8f\x4f\x72\x1a\x05\x48\xe4\x83\x29\x4b\x0c", - .priv_b = "\x4f\xf3\xbc\x96\xc7\xfc\x6a\x6d\x71\xd3\xb3\x63\x80\x0a\x7c\xdf" - "\xef\x6f\xc4\x1b\x44\x17\xea\x15\x35\x3b\x75\x90", - .pub_a = "\x1b\x3a\x63\x45\x1b\xd8\x86\xe6\x99\xe6\x7b\x49\x4e\x28\x8b\xd7" - "\xf8\xe0\xd3\x70\xba\xdd\xa7\xa0\xef\xd2\xfd\xe7\xd8\xf6\x61\x45" - "\xcc\x9f\x28\x04\x19\x97\x5e\xb8\x08\x87\x7c\x8a\x4c\x0c\x8e\x0b" - "\xd4\x8d\x4a\x54\x01\xeb\x1e\x87\x76\xbf\xee\xe1\x34\xc0\x38\x31" - "\xac\x27\x3c\xd9\xd6\x35\xab\x0c\xe0\x06\xa4\x2a\x88\x7e\x3f\x52" - "\xfb\x87\x66\xb6\x50\xf3\x80\x78\xbc\x8e\xe8\x58\x0c\xef\xe2\x43" - "\x96\x8c\xfc\x4f\x8d\xc3\xdb\x08\x45\x54\x17\x1d\x41\xbf\x2e\x86" - "\x1b\x7b\xb4\xd6\x9d\xd0\xe0\x1e\xa3\x87\xcb\xaa\x5c\xa6\x72\xaf" - "\xcb\xe8\xbd\xb9\xd6\x2d\x4c\xe1\x5f\x17\xdd\x36\xf9\x1e\xd1\xee" - "\xdd\x65\xca\x4a\x06\x45\x5c\xb9\x4c\xd4\x0a\x52\xec\x36\x0e\x84" - "\xb3\xc9\x26\xe2\x2c\x43\x80\xa3\xbf\x30\x9d\x56\x84\x97\x68\xb7" - "\xf5\x2c\xfd\xf6\x55\xfd\x05\x3a\x7e\xf7\x06\x97\x9e\x7e\x58\x06" - "\xb1\x7d\xfa\xe5\x3a\xd2\xa5\xbc\x56\x8e\xbb\x52\x9a\x7a\x61\xd6" - "\x8d\x25\x6f\x8f\xc9\x7c\x07\x4a\x86\x1d\x82\x7e\x2e\xbc\x8c\x61" - "\x34\x55\x31\x15\xb7\x0e\x71\x03\x92\x0a\xa1\x6d\x85\xe5\x2b\xcb" - "\xab\x8d\x78\x6a\x68\x17\x8f\xa8\xff\x7c\x2f\x5c\x71\x64\x8d\x6f", - .pub_b = "\x4d\xce\xe9\x92\xa9\x76\x2a\x13\xf2\xf8\x38\x44\xad\x3d\x77\xee" - "\x0e\x31\xc9\x71\x8b\x3d\xb6\xc2\x03\x5d\x39\x61\x18\x2c\x3e\x0b" - "\xa2\x47\xec\x41\x82\xd7\x60\xcd\x48\xd9\x95\x99\x97\x06\x22\xa1" - "\x88\x1b\xba\x2d\xc8\x22\x93\x9c\x78\xc3\x91\x2c\x66\x61\xfa\x54" - "\x38\xb2\x07\x66\x22\x2b\x75\xe2\x4c\x2e\x3a\xd0\xc7\x28\x72\x36" - "\x12\x95\x25\xee\x15\xb5\xdd\x79\x98\xaa\x04\xc4\xa9\x69\x6c\xac" - "\xd7\x17\x20\x83\xa9\x7a\x81\x66\x4e\xad\x2c\x47\x9e\x44\x4e\x4c" - "\x06\x54\xcc\x19\xe2\x8d\x77\x03\xce\xe8\xda\xcd\x61\x26\xf5\xd6" - "\x65\xec\x52\xc6\x72\x55\xdb\x92\x01\x4b\x03\x7e\xb6\x21\xa2\xac" - "\x8e\x36\x5d\xe0\x71\xff\xc1\x40\x0a\xcf\x07\x7a\x12\x91\x3d\xd8" - "\xde\x89\x47\x34\x37\xab\x7b\xa3\x46\x74\x3c\x1b\x21\x5d\xd9\xc1" - "\x21\x64\xa7\xe4\x05\x31\x18\xd1\x99\xbe\xc8\xef\x6f\xc5\x61\x17" - "\x0c\x84\xc8\x7d\x10\xee\x9a\x67\x4a\x1f\xa8\xff\xe1\x3b\xdf\xba" - "\x1d\x44\xde\x48\x94\x6d\x68\xdc\x0c\xdd\x77\x76\x35\xa7\xab\x5b" - "\xfb\x1e\x4b\xb7\xb8\x56\xf9\x68\x27\x73\x4c\x18\x41\x38\xe9\x15" - "\xd9\xc3\x00\x2e\xbc\xe5\x31\x20\x54\x6a\x7e\x20\x02\x14\x2b\x6c", - .shared = "\x34\xd9\xbd\xdc\x1b\x42\x17\x6c\x31\x3f\xea\x03\x4c\x21\x03\x4d" - "\x07\x4a\x63\x13\xbb\x4e\xcd\xb3\x70\x3f\xff\x42\x45\x67\xa4\x6b" - "\xdf\x75\x53\x0e\xde\x0a\x9d\xa5\x22\x9d\xe7\xd7\x67\x32\x28\x6c" - "\xbc\x0f\x91\xda\x4c\x3c\x85\x2f\xc0\x99\xc6\x79\x53\x1d\x94\xc7" - "\x8a\xb0\x3d\x9d\xec\xb0\xa4\xe4\xca\x8b\x2b\xb4\x59\x1c\x40\x21" - "\xcf\x8c\xe3\xa2\x0a\x54\x1d\x33\x99\x40\x17\xd0\x20\x0a\xe2\xc9" - "\x51\x6e\x2f\xf5\x14\x57\x79\x26\x9e\x86\x2b\x0f\xb4\x74\xa2\xd5" - "\x6d\xc3\x1e\xd5\x69\xa7\x70\x0b\x4c\x4a\xb1\x6b\x22\xa4\x55\x13" - "\x53\x1e\xf5\x23\xd7\x12\x12\x07\x7b\x5a\x16\x9b\xde\xff\xad\x7a" - "\xd9\x60\x82\x84\xc7\x79\x5b\x6d\x5a\x51\x83\xb8\x70\x66\xde\x17" - "\xd8\xd6\x71\xc9\xeb\xd8\xec\x89\x54\x4d\x45\xec\x06\x15\x93\xd4" - "\x42\xc6\x2a\xb9\xce\x3b\x1c\xb9\x94\x3a\x1d\x23\xa5\xea\x3b\xcf" - "\x21\xa0\x14\x71\xe6\x7e\x00\x3e\x7f\x8a\x69\xc7\x28\xbe\x49\x0b" - "\x2f\xc8\x8c\xfe\xb9\x2d\xb6\xa2\x15\xe5\xd0\x3c\x17\xc4\x64\xc9" - "\xac\x1a\x46\xe2\x03\xe1\x3f\x95\x29\x95\xfb\x03\xc6\x9d\x3c\xc4" - "\x7f\xcb\x51\x0b\x69\x98\xff\xd3\xaa\x6d\xe7\x3c\xf9\xf6\x38\x69", + .method = MODP_2048_224, + .seed = chunk_from_chars( + 0x22, 0xe6, 0x26, 0x01, 0xdb, 0xff, 0xd0, 0x67, 0x08, 0xa6, + 0x80, 0xf7, 0x47, 0xf3, 0x61, 0xf7, 0x6d, 0x8f, 0x4f, 0x72, + 0x1a, 0x05, 0x48, 0xe4, 0x83, 0x29, 0x4b, 0x0c, /* - */ + 0x4f, 0xf3, 0xbc, 0x96, 0xc7, 0xfc, 0x6a, 0x6d, 0x71, 0xd3, + 0xb3, 0x63, 0x80, 0x0a, 0x7c, 0xdf, 0xef, 0x6f, 0xc4, 0x1b, + 0x44, 0x17, 0xea, 0x15, 0x35, 0x3b, 0x75, 0x90), + .pub_i = chunk_from_chars( + 0x1b, 0x3a, 0x63, 0x45, 0x1b, 0xd8, 0x86, 0xe6, 0x99, 0xe6, + 0x7b, 0x49, 0x4e, 0x28, 0x8b, 0xd7, 0xf8, 0xe0, 0xd3, 0x70, + 0xba, 0xdd, 0xa7, 0xa0, 0xef, 0xd2, 0xfd, 0xe7, 0xd8, 0xf6, + 0x61, 0x45, 0xcc, 0x9f, 0x28, 0x04, 0x19, 0x97, 0x5e, 0xb8, + 0x08, 0x87, 0x7c, 0x8a, 0x4c, 0x0c, 0x8e, 0x0b, 0xd4, 0x8d, + 0x4a, 0x54, 0x01, 0xeb, 0x1e, 0x87, 0x76, 0xbf, 0xee, 0xe1, + 0x34, 0xc0, 0x38, 0x31, 0xac, 0x27, 0x3c, 0xd9, 0xd6, 0x35, + 0xab, 0x0c, 0xe0, 0x06, 0xa4, 0x2a, 0x88, 0x7e, 0x3f, 0x52, + 0xfb, 0x87, 0x66, 0xb6, 0x50, 0xf3, 0x80, 0x78, 0xbc, 0x8e, + 0xe8, 0x58, 0x0c, 0xef, 0xe2, 0x43, 0x96, 0x8c, 0xfc, 0x4f, /* 100 */ + 0x8d, 0xc3, 0xdb, 0x08, 0x45, 0x54, 0x17, 0x1d, 0x41, 0xbf, + 0x2e, 0x86, 0x1b, 0x7b, 0xb4, 0xd6, 0x9d, 0xd0, 0xe0, 0x1e, + 0xa3, 0x87, 0xcb, 0xaa, 0x5c, 0xa6, 0x72, 0xaf, 0xcb, 0xe8, + 0xbd, 0xb9, 0xd6, 0x2d, 0x4c, 0xe1, 0x5f, 0x17, 0xdd, 0x36, + 0xf9, 0x1e, 0xd1, 0xee, 0xdd, 0x65, 0xca, 0x4a, 0x06, 0x45, + 0x5c, 0xb9, 0x4c, 0xd4, 0x0a, 0x52, 0xec, 0x36, 0x0e, 0x84, + 0xb3, 0xc9, 0x26, 0xe2, 0x2c, 0x43, 0x80, 0xa3, 0xbf, 0x30, + 0x9d, 0x56, 0x84, 0x97, 0x68, 0xb7, 0xf5, 0x2c, 0xfd, 0xf6, + 0x55, 0xfd, 0x05, 0x3a, 0x7e, 0xf7, 0x06, 0x97, 0x9e, 0x7e, + 0x58, 0x06, 0xb1, 0x7d, 0xfa, 0xe5, 0x3a, 0xd2, 0xa5, 0xbc, /* 200 */ + 0x56, 0x8e, 0xbb, 0x52, 0x9a, 0x7a, 0x61, 0xd6, 0x8d, 0x25, + 0x6f, 0x8f, 0xc9, 0x7c, 0x07, 0x4a, 0x86, 0x1d, 0x82, 0x7e, + 0x2e, 0xbc, 0x8c, 0x61, 0x34, 0x55, 0x31, 0x15, 0xb7, 0x0e, + 0x71, 0x03, 0x92, 0x0a, 0xa1, 0x6d, 0x85, 0xe5, 0x2b, 0xcb, + 0xab, 0x8d, 0x78, 0x6a, 0x68, 0x17, 0x8f, 0xa8, 0xff, 0x7c, + 0x2f, 0x5c, 0x71, 0x64, 0x8d, 0x6f), + .pub_r = chunk_from_chars( + 0x4d, 0xce, 0xe9, 0x92, 0xa9, 0x76, 0x2a, 0x13, 0xf2, 0xf8, + 0x38, 0x44, 0xad, 0x3d, 0x77, 0xee, 0x0e, 0x31, 0xc9, 0x71, + 0x8b, 0x3d, 0xb6, 0xc2, 0x03, 0x5d, 0x39, 0x61, 0x18, 0x2c, + 0x3e, 0x0b, 0xa2, 0x47, 0xec, 0x41, 0x82, 0xd7, 0x60, 0xcd, + 0x48, 0xd9, 0x95, 0x99, 0x97, 0x06, 0x22, 0xa1, 0x88, 0x1b, + 0xba, 0x2d, 0xc8, 0x22, 0x93, 0x9c, 0x78, 0xc3, 0x91, 0x2c, + 0x66, 0x61, 0xfa, 0x54, 0x38, 0xb2, 0x07, 0x66, 0x22, 0x2b, + 0x75, 0xe2, 0x4c, 0x2e, 0x3a, 0xd0, 0xc7, 0x28, 0x72, 0x36, + 0x12, 0x95, 0x25, 0xee, 0x15, 0xb5, 0xdd, 0x79, 0x98, 0xaa, + 0x04, 0xc4, 0xa9, 0x69, 0x6c, 0xac, 0xd7, 0x17, 0x20, 0x83, /* 100 */ + 0xa9, 0x7a, 0x81, 0x66, 0x4e, 0xad, 0x2c, 0x47, 0x9e, 0x44, + 0x4e, 0x4c, 0x06, 0x54, 0xcc, 0x19, 0xe2, 0x8d, 0x77, 0x03, + 0xce, 0xe8, 0xda, 0xcd, 0x61, 0x26, 0xf5, 0xd6, 0x65, 0xec, + 0x52, 0xc6, 0x72, 0x55, 0xdb, 0x92, 0x01, 0x4b, 0x03, 0x7e, + 0xb6, 0x21, 0xa2, 0xac, 0x8e, 0x36, 0x5d, 0xe0, 0x71, 0xff, + 0xc1, 0x40, 0x0a, 0xcf, 0x07, 0x7a, 0x12, 0x91, 0x3d, 0xd8, + 0xde, 0x89, 0x47, 0x34, 0x37, 0xab, 0x7b, 0xa3, 0x46, 0x74, + 0x3c, 0x1b, 0x21, 0x5d, 0xd9, 0xc1, 0x21, 0x64, 0xa7, 0xe4, + 0x05, 0x31, 0x18, 0xd1, 0x99, 0xbe, 0xc8, 0xef, 0x6f, 0xc5, + 0x61, 0x17, 0x0c, 0x84, 0xc8, 0x7d, 0x10, 0xee, 0x9a, 0x67, /* 200 */ + 0x4a, 0x1f, 0xa8, 0xff, 0xe1, 0x3b, 0xdf, 0xba, 0x1d, 0x44, + 0xde, 0x48, 0x94, 0x6d, 0x68, 0xdc, 0x0c, 0xdd, 0x77, 0x76, + 0x35, 0xa7, 0xab, 0x5b, 0xfb, 0x1e, 0x4b, 0xb7, 0xb8, 0x56, + 0xf9, 0x68, 0x27, 0x73, 0x4c, 0x18, 0x41, 0x38, 0xe9, 0x15, + 0xd9, 0xc3, 0x00, 0x2e, 0xbc, 0xe5, 0x31, 0x20, 0x54, 0x6a, + 0x7e, 0x20, 0x02, 0x14, 0x2b, 0x6c), + .shared = chunk_from_chars( + 0x34, 0xd9, 0xbd, 0xdc, 0x1b, 0x42, 0x17, 0x6c, 0x31, 0x3f, + 0xea, 0x03, 0x4c, 0x21, 0x03, 0x4d, 0x07, 0x4a, 0x63, 0x13, + 0xbb, 0x4e, 0xcd, 0xb3, 0x70, 0x3f, 0xff, 0x42, 0x45, 0x67, + 0xa4, 0x6b, 0xdf, 0x75, 0x53, 0x0e, 0xde, 0x0a, 0x9d, 0xa5, + 0x22, 0x9d, 0xe7, 0xd7, 0x67, 0x32, 0x28, 0x6c, 0xbc, 0x0f, + 0x91, 0xda, 0x4c, 0x3c, 0x85, 0x2f, 0xc0, 0x99, 0xc6, 0x79, + 0x53, 0x1d, 0x94, 0xc7, 0x8a, 0xb0, 0x3d, 0x9d, 0xec, 0xb0, + 0xa4, 0xe4, 0xca, 0x8b, 0x2b, 0xb4, 0x59, 0x1c, 0x40, 0x21, + 0xcf, 0x8c, 0xe3, 0xa2, 0x0a, 0x54, 0x1d, 0x33, 0x99, 0x40, + 0x17, 0xd0, 0x20, 0x0a, 0xe2, 0xc9, 0x51, 0x6e, 0x2f, 0xf5, /* 100 */ + 0x14, 0x57, 0x79, 0x26, 0x9e, 0x86, 0x2b, 0x0f, 0xb4, 0x74, + 0xa2, 0xd5, 0x6d, 0xc3, 0x1e, 0xd5, 0x69, 0xa7, 0x70, 0x0b, + 0x4c, 0x4a, 0xb1, 0x6b, 0x22, 0xa4, 0x55, 0x13, 0x53, 0x1e, + 0xf5, 0x23, 0xd7, 0x12, 0x12, 0x07, 0x7b, 0x5a, 0x16, 0x9b, + 0xde, 0xff, 0xad, 0x7a, 0xd9, 0x60, 0x82, 0x84, 0xc7, 0x79, + 0x5b, 0x6d, 0x5a, 0x51, 0x83, 0xb8, 0x70, 0x66, 0xde, 0x17, + 0xd8, 0xd6, 0x71, 0xc9, 0xeb, 0xd8, 0xec, 0x89, 0x54, 0x4d, + 0x45, 0xec, 0x06, 0x15, 0x93, 0xd4, 0x42, 0xc6, 0x2a, 0xb9, + 0xce, 0x3b, 0x1c, 0xb9, 0x94, 0x3a, 0x1d, 0x23, 0xa5, 0xea, + 0x3b, 0xcf, 0x21, 0xa0, 0x14, 0x71, 0xe6, 0x7e, 0x00, 0x3e, /* 200 */ + 0x7f, 0x8a, 0x69, 0xc7, 0x28, 0xbe, 0x49, 0x0b, 0x2f, 0xc8, + 0x8c, 0xfe, 0xb9, 0x2d, 0xb6, 0xa2, 0x15, 0xe5, 0xd0, 0x3c, + 0x17, 0xc4, 0x64, 0xc9, 0xac, 0x1a, 0x46, 0xe2, 0x03, 0xe1, + 0x3f, 0x95, 0x29, 0x95, 0xfb, 0x03, 0xc6, 0x9d, 0x3c, 0xc4, + 0x7f, 0xcb, 0x51, 0x0b, 0x69, 0x98, 0xff, 0xd3, 0xaa, 0x6d, + 0xe7, 0x3c, 0xf9, 0xf6, 0x38, 0x69) }; ke_test_vector_t modp2048_256 = { - .method = MODP_2048_256, .priv_len = 32, .pub_len = 256, .shared_len = 256, - .priv_a = "\x08\x81\x38\x2c\xdb\x87\x66\x0c\x6d\xc1\x3e\x61\x49\x38\xd5\xb9" - "\xc8\xb2\xf2\x48\x58\x1c\xc5\xe3\x1b\x35\x45\x43\x97\xfc\xe5\x0e", - .priv_b = "\x7d\x62\xa7\xe3\xef\x36\xde\x61\x7b\x13\xd1\xaf\xb8\x2c\x78\x0d" - "\x83\xa2\x3b\xd4\xee\x67\x05\x64\x51\x21\xf3\x71\xf5\x46\xa5\x3d", - .pub_a = "\x2e\x93\x80\xc8\x32\x3a\xf9\x75\x45\xbc\x49\x41\xde\xb0\xec\x37" - "\x42\xc6\x2f\xe0\xec\xe8\x24\xa6\xab\xdb\xe6\x6c\x59\xbe\xe0\x24" - "\x29\x11\xbf\xb9\x67\x23\x5c\xeb\xa3\x5a\xe1\x3e\x4e\xc7\x52\xbe" - "\x63\x0b\x92\xdc\x4b\xde\x28\x47\xa9\xc6\x2c\xb8\x15\x27\x45\x42" - "\x1f\xb7\xeb\x60\xa6\x3c\x0f\xe9\x15\x9f\xcc\xe7\x26\xce\x7c\xd8" - "\x52\x3d\x74\x50\x66\x7e\xf8\x40\xe4\x91\x91\x21\xeb\x5f\x01\xc8" - "\xc9\xb0\xd3\xd6\x48\xa9\x3b\xfb\x75\x68\x9e\x82\x44\xac\x13\x4a" - "\xf5\x44\x71\x1c\xe7\x9a\x02\xdc\xc3\x42\x26\x68\x47\x80\xdd\xdc" - "\xb4\x98\x59\x41\x06\xc3\x7f\x5b\xc7\x98\x56\x48\x7a\xf5\xab\x02" - "\x2a\x2e\x5e\x42\xf0\x98\x97\xc1\xa8\x5a\x11\xea\x02\x12\xaf\x04" - "\xd9\xb4\xce\xbc\x93\x7c\x3c\x1a\x3e\x15\xa8\xa0\x34\x2e\x33\x76" - "\x15\xc8\x4e\x7f\xe3\xb8\xb9\xb8\x7f\xb1\xe7\x3a\x15\xaf\x12\xa3" - "\x0d\x74\x6e\x06\xdf\xc3\x4f\x29\x0d\x79\x7c\xe5\x1a\xa1\x3a\xa7" - "\x85\xbf\x66\x58\xaf\xf5\xe4\xb0\x93\x00\x3c\xbe\xaf\x66\x5b\x3c" - "\x2e\x11\x3a\x3a\x4e\x90\x52\x69\x34\x1d\xc0\x71\x14\x26\x68\x5f" - "\x4e\xf3\x7e\x86\x8a\x81\x26\xff\x3f\x22\x79\xb5\x7c\xa6\x7e\x29", - .pub_b = "\x57\x5f\x03\x51\xbd\x2b\x1b\x81\x74\x48\xbd\xf8\x7a\x6c\x36\x2c" - "\x1e\x28\x9d\x39\x03\xa3\x0b\x98\x32\xc5\x74\x1f\xa2\x50\x36\x3e" - "\x7a\xcb\xc7\xf7\x7f\x3d\xac\xbc\x1f\x13\x1a\xdd\x8e\x03\x36\x7e" - "\xff\x8f\xbb\xb3\xe1\xc5\x78\x44\x24\x80\x9b\x25\xaf\xe4\xd2\x26" - "\x2a\x1a\x6f\xd2\xfa\xb6\x41\x05\xca\x30\xa6\x74\xe0\x7f\x78\x09" - "\x85\x20\x88\x63\x2f\xc0\x49\x23\x37\x91\xad\x4e\xdd\x08\x3a\x97" - "\x8b\x88\x3e\xe6\x18\xbc\x5e\x0d\xd0\x47\x41\x5f\x2d\x95\xe6\x83" - "\xcf\x14\x82\x6b\x5f\xbe\x10\xd3\xce\x41\xc6\xc1\x20\xc7\x8a\xb2" - "\x00\x08\xc6\x98\xbf\x7f\x0b\xca\xb9\xd7\xf4\x07\xbe\xd0\xf4\x3a" - "\xfb\x29\x70\xf5\x7f\x8d\x12\x04\x39\x63\xe6\x6d\xdd\x32\x0d\x59" - "\x9a\xd9\x93\x6c\x8f\x44\x13\x7c\x08\xb1\x80\xec\x5e\x98\x5c\xeb" - "\xe1\x86\xf3\xd5\x49\x67\x7e\x80\x60\x73\x31\xee\x17\xaf\x33\x80" - "\xa7\x25\xb0\x78\x23\x17\xd7\xdd\x43\xf5\x9d\x7a\xf9\x56\x8a\x9b" - "\xb6\x3a\x84\xd3\x65\xf9\x22\x44\xed\x12\x09\x88\x21\x93\x02\xf4" - "\x29\x24\xc7\xca\x90\xb8\x9d\x24\xf7\x1b\x0a\xb6\x97\x82\x3d\x7d" - "\xeb\x1a\xff\x5b\x0e\x8e\x4a\x45\xd4\x9f\x7f\x53\x75\x7e\x19\x13", - .shared = "\x86\xc7\x0b\xf8\xd0\xbb\x81\xbb\x01\x07\x8a\x17\x21\x9c\xb7\xd2" - "\x72\x03\xdb\x2a\x19\xc8\x77\xf1\xd1\xf1\x9f\xd7\xd7\x7e\xf2\x25" - "\x46\xa6\x8f\x00\x5a\xd5\x2d\xc8\x45\x53\xb7\x8f\xc6\x03\x30\xbe" - "\x51\xea\x7c\x06\x72\xca\xc1\x51\x5e\x4b\x35\xc0\x47\xb9\xa5\x51" - "\xb8\x8f\x39\xdc\x26\xda\x14\xa0\x9e\xf7\x47\x74\xd4\x7c\x76\x2d" - "\xd1\x77\xf9\xed\x5b\xc2\xf1\x1e\x52\xc8\x79\xbd\x95\x09\x85\x04" - "\xcd\x9e\xec\xd8\xa8\xf9\xb3\xef\xbd\x1f\x00\x8a\xc5\x85\x30\x97" - "\xd9\xd1\x83\x7f\x2b\x18\xf7\x7c\xd7\xbe\x01\xaf\x80\xa7\xc7\xb5" - "\xea\x3c\xa5\x4c\xc0\x2d\x0c\x11\x6f\xee\x3f\x95\xbb\x87\x39\x93" - "\x85\x87\x5d\x7e\x86\x74\x7e\x67\x6e\x72\x89\x38\xac\xbf\xf7\x09" - "\x8e\x05\xbe\x4d\xcf\xb2\x40\x52\xb8\x3a\xef\xfb\x14\x78\x3f\x02" - "\x9a\xdb\xde\x7f\x53\xfa\xe9\x20\x84\x22\x40\x90\xe0\x07\xce\xe9" - "\x4d\x4b\xf2\xba\xce\x9f\xfd\x4b\x57\xd2\xaf\x7c\x72\x4d\x0c\xaa" - "\x19\xbf\x05\x01\xf6\xf1\x7b\x4a\xa1\x0f\x42\x5e\x3e\xa7\x60\x80" - "\xb4\xb9\xd6\xb3\xce\xfe\xa1\x15\xb2\xce\xb8\x78\x9b\xb8\xa3\xb0" - "\xea\x87\xfe\xbe\x63\xb6\xc8\xf8\x46\xec\x6d\xb0\xc2\x6c\x5d\x7c", + .method = MODP_2048_256, + .seed = chunk_from_chars( + 0x08, 0x81, 0x38, 0x2c, 0xdb, 0x87, 0x66, 0x0c, 0x6d, 0xc1, + 0x3e, 0x61, 0x49, 0x38, 0xd5, 0xb9, 0xc8, 0xb2, 0xf2, 0x48, + 0x58, 0x1c, 0xc5, 0xe3, 0x1b, 0x35, 0x45, 0x43, 0x97, 0xfc, + 0xe5, 0x0e, /* - */ + 0x7d, 0x62, 0xa7, 0xe3, 0xef, 0x36, 0xde, 0x61, 0x7b, 0x13, + 0xd1, 0xaf, 0xb8, 0x2c, 0x78, 0x0d, 0x83, 0xa2, 0x3b, 0xd4, + 0xee, 0x67, 0x05, 0x64, 0x51, 0x21, 0xf3, 0x71, 0xf5, 0x46, + 0xa5, 0x3d), + .pub_i = chunk_from_chars( + 0x2e, 0x93, 0x80, 0xc8, 0x32, 0x3a, 0xf9, 0x75, 0x45, 0xbc, + 0x49, 0x41, 0xde, 0xb0, 0xec, 0x37, 0x42, 0xc6, 0x2f, 0xe0, + 0xec, 0xe8, 0x24, 0xa6, 0xab, 0xdb, 0xe6, 0x6c, 0x59, 0xbe, + 0xe0, 0x24, 0x29, 0x11, 0xbf, 0xb9, 0x67, 0x23, 0x5c, 0xeb, + 0xa3, 0x5a, 0xe1, 0x3e, 0x4e, 0xc7, 0x52, 0xbe, 0x63, 0x0b, + 0x92, 0xdc, 0x4b, 0xde, 0x28, 0x47, 0xa9, 0xc6, 0x2c, 0xb8, + 0x15, 0x27, 0x45, 0x42, 0x1f, 0xb7, 0xeb, 0x60, 0xa6, 0x3c, + 0x0f, 0xe9, 0x15, 0x9f, 0xcc, 0xe7, 0x26, 0xce, 0x7c, 0xd8, + 0x52, 0x3d, 0x74, 0x50, 0x66, 0x7e, 0xf8, 0x40, 0xe4, 0x91, + 0x91, 0x21, 0xeb, 0x5f, 0x01, 0xc8, 0xc9, 0xb0, 0xd3, 0xd6, /* 100 */ + 0x48, 0xa9, 0x3b, 0xfb, 0x75, 0x68, 0x9e, 0x82, 0x44, 0xac, + 0x13, 0x4a, 0xf5, 0x44, 0x71, 0x1c, 0xe7, 0x9a, 0x02, 0xdc, + 0xc3, 0x42, 0x26, 0x68, 0x47, 0x80, 0xdd, 0xdc, 0xb4, 0x98, + 0x59, 0x41, 0x06, 0xc3, 0x7f, 0x5b, 0xc7, 0x98, 0x56, 0x48, + 0x7a, 0xf5, 0xab, 0x02, 0x2a, 0x2e, 0x5e, 0x42, 0xf0, 0x98, + 0x97, 0xc1, 0xa8, 0x5a, 0x11, 0xea, 0x02, 0x12, 0xaf, 0x04, + 0xd9, 0xb4, 0xce, 0xbc, 0x93, 0x7c, 0x3c, 0x1a, 0x3e, 0x15, + 0xa8, 0xa0, 0x34, 0x2e, 0x33, 0x76, 0x15, 0xc8, 0x4e, 0x7f, + 0xe3, 0xb8, 0xb9, 0xb8, 0x7f, 0xb1, 0xe7, 0x3a, 0x15, 0xaf, + 0x12, 0xa3, 0x0d, 0x74, 0x6e, 0x06, 0xdf, 0xc3, 0x4f, 0x29, /* 200 */ + 0x0d, 0x79, 0x7c, 0xe5, 0x1a, 0xa1, 0x3a, 0xa7, 0x85, 0xbf, + 0x66, 0x58, 0xaf, 0xf5, 0xe4, 0xb0, 0x93, 0x00, 0x3c, 0xbe, + 0xaf, 0x66, 0x5b, 0x3c, 0x2e, 0x11, 0x3a, 0x3a, 0x4e, 0x90, + 0x52, 0x69, 0x34, 0x1d, 0xc0, 0x71, 0x14, 0x26, 0x68, 0x5f, + 0x4e, 0xf3, 0x7e, 0x86, 0x8a, 0x81, 0x26, 0xff, 0x3f, 0x22, + 0x79, 0xb5, 0x7c, 0xa6, 0x7e, 0x29), + .pub_r = chunk_from_chars( + 0x57, 0x5f, 0x03, 0x51, 0xbd, 0x2b, 0x1b, 0x81, 0x74, 0x48, + 0xbd, 0xf8, 0x7a, 0x6c, 0x36, 0x2c, 0x1e, 0x28, 0x9d, 0x39, + 0x03, 0xa3, 0x0b, 0x98, 0x32, 0xc5, 0x74, 0x1f, 0xa2, 0x50, + 0x36, 0x3e, 0x7a, 0xcb, 0xc7, 0xf7, 0x7f, 0x3d, 0xac, 0xbc, + 0x1f, 0x13, 0x1a, 0xdd, 0x8e, 0x03, 0x36, 0x7e, 0xff, 0x8f, + 0xbb, 0xb3, 0xe1, 0xc5, 0x78, 0x44, 0x24, 0x80, 0x9b, 0x25, + 0xaf, 0xe4, 0xd2, 0x26, 0x2a, 0x1a, 0x6f, 0xd2, 0xfa, 0xb6, + 0x41, 0x05, 0xca, 0x30, 0xa6, 0x74, 0xe0, 0x7f, 0x78, 0x09, + 0x85, 0x20, 0x88, 0x63, 0x2f, 0xc0, 0x49, 0x23, 0x37, 0x91, + 0xad, 0x4e, 0xdd, 0x08, 0x3a, 0x97, 0x8b, 0x88, 0x3e, 0xe6, /* 100 */ + 0x18, 0xbc, 0x5e, 0x0d, 0xd0, 0x47, 0x41, 0x5f, 0x2d, 0x95, + 0xe6, 0x83, 0xcf, 0x14, 0x82, 0x6b, 0x5f, 0xbe, 0x10, 0xd3, + 0xce, 0x41, 0xc6, 0xc1, 0x20, 0xc7, 0x8a, 0xb2, 0x00, 0x08, + 0xc6, 0x98, 0xbf, 0x7f, 0x0b, 0xca, 0xb9, 0xd7, 0xf4, 0x07, + 0xbe, 0xd0, 0xf4, 0x3a, 0xfb, 0x29, 0x70, 0xf5, 0x7f, 0x8d, + 0x12, 0x04, 0x39, 0x63, 0xe6, 0x6d, 0xdd, 0x32, 0x0d, 0x59, + 0x9a, 0xd9, 0x93, 0x6c, 0x8f, 0x44, 0x13, 0x7c, 0x08, 0xb1, + 0x80, 0xec, 0x5e, 0x98, 0x5c, 0xeb, 0xe1, 0x86, 0xf3, 0xd5, + 0x49, 0x67, 0x7e, 0x80, 0x60, 0x73, 0x31, 0xee, 0x17, 0xaf, + 0x33, 0x80, 0xa7, 0x25, 0xb0, 0x78, 0x23, 0x17, 0xd7, 0xdd, /* 200 */ + 0x43, 0xf5, 0x9d, 0x7a, 0xf9, 0x56, 0x8a, 0x9b, 0xb6, 0x3a, + 0x84, 0xd3, 0x65, 0xf9, 0x22, 0x44, 0xed, 0x12, 0x09, 0x88, + 0x21, 0x93, 0x02, 0xf4, 0x29, 0x24, 0xc7, 0xca, 0x90, 0xb8, + 0x9d, 0x24, 0xf7, 0x1b, 0x0a, 0xb6, 0x97, 0x82, 0x3d, 0x7d, + 0xeb, 0x1a, 0xff, 0x5b, 0x0e, 0x8e, 0x4a, 0x45, 0xd4, 0x9f, + 0x7f, 0x53, 0x75, 0x7e, 0x19, 0x13), + .shared = chunk_from_chars( + 0x86, 0xc7, 0x0b, 0xf8, 0xd0, 0xbb, 0x81, 0xbb, 0x01, 0x07, + 0x8a, 0x17, 0x21, 0x9c, 0xb7, 0xd2, 0x72, 0x03, 0xdb, 0x2a, + 0x19, 0xc8, 0x77, 0xf1, 0xd1, 0xf1, 0x9f, 0xd7, 0xd7, 0x7e, + 0xf2, 0x25, 0x46, 0xa6, 0x8f, 0x00, 0x5a, 0xd5, 0x2d, 0xc8, + 0x45, 0x53, 0xb7, 0x8f, 0xc6, 0x03, 0x30, 0xbe, 0x51, 0xea, + 0x7c, 0x06, 0x72, 0xca, 0xc1, 0x51, 0x5e, 0x4b, 0x35, 0xc0, + 0x47, 0xb9, 0xa5, 0x51, 0xb8, 0x8f, 0x39, 0xdc, 0x26, 0xda, + 0x14, 0xa0, 0x9e, 0xf7, 0x47, 0x74, 0xd4, 0x7c, 0x76, 0x2d, + 0xd1, 0x77, 0xf9, 0xed, 0x5b, 0xc2, 0xf1, 0x1e, 0x52, 0xc8, + 0x79, 0xbd, 0x95, 0x09, 0x85, 0x04, 0xcd, 0x9e, 0xec, 0xd8, /* 100 */ + 0xa8, 0xf9, 0xb3, 0xef, 0xbd, 0x1f, 0x00, 0x8a, 0xc5, 0x85, + 0x30, 0x97, 0xd9, 0xd1, 0x83, 0x7f, 0x2b, 0x18, 0xf7, 0x7c, + 0xd7, 0xbe, 0x01, 0xaf, 0x80, 0xa7, 0xc7, 0xb5, 0xea, 0x3c, + 0xa5, 0x4c, 0xc0, 0x2d, 0x0c, 0x11, 0x6f, 0xee, 0x3f, 0x95, + 0xbb, 0x87, 0x39, 0x93, 0x85, 0x87, 0x5d, 0x7e, 0x86, 0x74, + 0x7e, 0x67, 0x6e, 0x72, 0x89, 0x38, 0xac, 0xbf, 0xf7, 0x09, + 0x8e, 0x05, 0xbe, 0x4d, 0xcf, 0xb2, 0x40, 0x52, 0xb8, 0x3a, + 0xef, 0xfb, 0x14, 0x78, 0x3f, 0x02, 0x9a, 0xdb, 0xde, 0x7f, + 0x53, 0xfa, 0xe9, 0x20, 0x84, 0x22, 0x40, 0x90, 0xe0, 0x07, + 0xce, 0xe9, 0x4d, 0x4b, 0xf2, 0xba, 0xce, 0x9f, 0xfd, 0x4b, /* 200 */ + 0x57, 0xd2, 0xaf, 0x7c, 0x72, 0x4d, 0x0c, 0xaa, 0x19, 0xbf, + 0x05, 0x01, 0xf6, 0xf1, 0x7b, 0x4a, 0xa1, 0x0f, 0x42, 0x5e, + 0x3e, 0xa7, 0x60, 0x80, 0xb4, 0xb9, 0xd6, 0xb3, 0xce, 0xfe, + 0xa1, 0x15, 0xb2, 0xce, 0xb8, 0x78, 0x9b, 0xb8, 0xa3, 0xb0, + 0xea, 0x87, 0xfe, 0xbe, 0x63, 0xb6, 0xc8, 0xf8, 0x46, 0xec, + 0x6d, 0xb0, 0xc2, 0x6c, 0x5d, 0x7c) }; diff --git a/src/libstrongswan/plugins/wolfssl/wolfssl_diffie_hellman.c b/src/libstrongswan/plugins/wolfssl/wolfssl_diffie_hellman.c index 9856e8d40..f1f7ac6e6 100644 --- a/src/libstrongswan/plugins/wolfssl/wolfssl_diffie_hellman.c +++ b/src/libstrongswan/plugins/wolfssl/wolfssl_diffie_hellman.c @@ -115,8 +115,8 @@ METHOD(key_exchange_t, set_public_key, bool, return TRUE; } -METHOD(key_exchange_t, set_private_key, bool, - private_wolfssl_diffie_hellman_t *this, chunk_t value) +METHOD(key_exchange_t, set_seed, bool, + private_wolfssl_diffie_hellman_t *this, chunk_t value, drbg_t *drbg) { bool success = FALSE; chunk_t g; @@ -213,7 +213,7 @@ static wolfssl_diffie_hellman_t *create_generic(key_exchange_method_t group, .get_shared_secret = _get_shared_secret, .set_public_key = _set_public_key, .get_public_key = _get_public_key, - .set_private_key = _set_private_key, + .set_seed = _set_seed, .get_method = _get_method, .destroy = _destroy, }, diff --git a/src/libstrongswan/plugins/wolfssl/wolfssl_ec_diffie_hellman.c b/src/libstrongswan/plugins/wolfssl/wolfssl_ec_diffie_hellman.c index d622e14db..784f3f7b7 100644 --- a/src/libstrongswan/plugins/wolfssl/wolfssl_ec_diffie_hellman.c +++ b/src/libstrongswan/plugins/wolfssl/wolfssl_ec_diffie_hellman.c @@ -210,8 +210,8 @@ METHOD(key_exchange_t, get_public_key, bool, return ecp2chunk(this->keysize, &this->key.pubkey, value, FALSE); } -METHOD(key_exchange_t, set_private_key, bool, - private_wolfssl_ec_diffie_hellman_t *this, chunk_t value) +METHOD(key_exchange_t, set_seed, bool, + private_wolfssl_ec_diffie_hellman_t *this, chunk_t value, drbg_t *drbg) { bool success = FALSE; ecc_point *base; @@ -287,7 +287,7 @@ wolfssl_ec_diffie_hellman_t *wolfssl_ec_diffie_hellman_create(key_exchange_metho .get_shared_secret = _get_shared_secret, .set_public_key = _set_public_key, .get_public_key = _get_public_key, - .set_private_key = _set_private_key, + .set_seed = _set_seed, .get_method = _get_method, .destroy = _destroy, }, diff --git a/src/libstrongswan/plugins/wolfssl/wolfssl_x_diffie_hellman.c b/src/libstrongswan/plugins/wolfssl/wolfssl_x_diffie_hellman.c index 0ff1ebca4..f92f07d5f 100644 --- a/src/libstrongswan/plugins/wolfssl/wolfssl_x_diffie_hellman.c +++ b/src/libstrongswan/plugins/wolfssl/wolfssl_x_diffie_hellman.c @@ -136,8 +136,8 @@ METHOD(key_exchange_t, get_public_key_25519, bool, return TRUE; } -METHOD(key_exchange_t, set_private_key_25519, bool, - private_diffie_hellman_t *this, chunk_t value) +METHOD(key_exchange_t, set_seed_25519, bool, + private_diffie_hellman_t *this, chunk_t value, drbg_t *drbg) { curve25519_key pub; u_char basepoint[CURVE25519_KEYSIZE] = {9}; @@ -228,8 +228,8 @@ METHOD(key_exchange_t, get_public_key_448, bool, return TRUE; } -METHOD(key_exchange_t, set_private_key_448, bool, - private_diffie_hellman_t *this, chunk_t value) +METHOD(key_exchange_t, set_seed_448, bool, + private_diffie_hellman_t *this, chunk_t value, drbg_t *drbg) { curve448_key pub; u_char basepoint[CURVE448_KEY_SIZE] = {5}; @@ -325,7 +325,7 @@ key_exchange_t *wolfssl_x_diffie_hellman_create(key_exchange_method_t group) #ifdef HAVE_CURVE25519 this->public.set_public_key = _set_public_key_25519; this->public.get_public_key = _get_public_key_25519; - this->public.set_private_key = _set_private_key_25519; + this->public.set_seed = _set_seed_25519; if (wc_curve25519_init(&this->key.key25519) != 0) { @@ -342,7 +342,7 @@ key_exchange_t *wolfssl_x_diffie_hellman_create(key_exchange_method_t group) #ifdef HAVE_CURVE448 this->public.set_public_key = _set_public_key_448; this->public.get_public_key = _get_public_key_448; - this->public.set_private_key = _set_private_key_448; + this->public.set_seed = _set_seed_448; if (wc_curve448_init(&this->key.key448) != 0) {