From 89af373a04915e4bbfdae39e9766db25346a7b4f Mon Sep 17 00:00:00 2001 From: Hakase Date: Fri, 6 Jul 2018 08:41:22 +0900 Subject: [PATCH] Update pre9 --- apps/s_server.c | 5 + crypto/chacha/asm/chacha-x86_64.pl | 295 +- crypto/conf/conf_lib.c | 11 +- crypto/ec/ec_mult.c | 46 +- crypto/evp/e_chacha20_poly1305.c | 158 +- crypto/modes/asm/ghash-armv4.pl | 7 +- crypto/pem/pem_lib.c | 1 + crypto/perlasm/x86_64-xlate.pl | 2 +- crypto/rand/rand_unix.c | 4 +- crypto/sha/asm/keccak1600-s390x.pl | 1 - crypto/sha/asm/keccak1600-x86_64.pl | 1 - doc/man1/ciphers.pod | 2 +- doc/man1/cms.pod | 7 +- doc/man1/dsa.pod | 2 +- doc/man1/gendsa.pod | 2 +- doc/man1/genpkey.pod | 12 +- doc/man1/genrsa.pod | 2 +- doc/man1/openssl.pod | 123 +- doc/man1/passwd.pod | 12 +- doc/man1/pkcs8.pod | 4 +- doc/man1/rsa.pod | 2 +- doc/man1/s_client.pod | 2 +- doc/man1/s_server.pod | 14 +- doc/man1/spkac.pod | 11 +- doc/man1/ts.pod | 10 +- doc/man3/EVP_DigestInit.pod | 52 +- doc/man3/SSL_CONF_cmd.pod | 21 + doc/man3/SSL_CTX_set_options.pod | 11 + doc/man3/SSL_read_early_data.pod | 35 +- doc/man3/X509_digest.pod | 2 + include/openssl/ssl.h | 16 +- ssl/ssl_conf.c | 11 +- ssl/ssl_lib.c | 22 +- ssl/ssl_locl.h | 9 + ssl/ssl_txt.c | 3 +- ssl/statem/extensions.c | 5 +- ssl/statem/extensions_srvr.c | 4 +- ssl/statem/statem_clnt.c | 12 + ssl/statem/statem_lib.c | 19 +- ssl/statem/statem_srvr.c | 13 +- ssl/t1_lib.c | 9 +- test/conf_include_test.c | 31 + test/recipes/30-test_evp.t | 2 +- test/recipes/30-test_evp_data/evpdigest.txt | 14 + test/recipes/30-test_evp_data/evppkey_ecc.txt | 4366 +++++++++++++++++ test/sslapitest.c | 140 +- util/libssl.num | 2 + util/private.num | 2 + 48 files changed, 5281 insertions(+), 256 deletions(-) create mode 100644 test/recipes/30-test_evp_data/evppkey_ecc.txt diff --git a/apps/s_server.c b/apps/s_server.c index df2bf02a..b0502005 100644 --- a/apps/s_server.c +++ b/apps/s_server.c @@ -749,6 +749,7 @@ typedef enum OPTION_choice { OPT_CERT2, OPT_KEY2, OPT_NEXTPROTONEG, OPT_ALPN, OPT_SRTP_PROFILES, OPT_KEYMATEXPORT, OPT_KEYMATEXPORTLEN, OPT_KEYLOG_FILE, OPT_MAX_EARLY, OPT_EARLY_DATA, OPT_S_NUM_TICKETS, + OPT_ANTI_REPLAY, OPT_NO_ANTI_REPLAY, OPT_R_ENUM, OPT_S_ENUM, OPT_V_ENUM, @@ -958,6 +959,8 @@ const OPTIONS s_server_options[] = { {"early_data", OPT_EARLY_DATA, '-', "Attempt to read early data"}, {"num_tickets", OPT_S_NUM_TICKETS, 'n', "The number of TLSv1.3 session tickets that a server will automatically issue" }, + {"anti_replay", OPT_ANTI_REPLAY, '-', "Switch on anti-replay protection (default)"}, + {"no_anti_replay", OPT_NO_ANTI_REPLAY, '-', "Switch off anti-replay protection"}, {NULL, OPT_EOF, 0, NULL} }; @@ -1258,6 +1261,8 @@ int s_server_main(int argc, char *argv[]) break; case OPT_S_CASES: case OPT_S_NUM_TICKETS: + case OPT_ANTI_REPLAY: + case OPT_NO_ANTI_REPLAY: if (ssl_args == NULL) ssl_args = sk_OPENSSL_STRING_new_null(); if (ssl_args == NULL diff --git a/crypto/chacha/asm/chacha-x86_64.pl b/crypto/chacha/asm/chacha-x86_64.pl index 51bb6a96..b54f3b15 100755 --- a/crypto/chacha/asm/chacha-x86_64.pl +++ b/crypto/chacha/asm/chacha-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -28,33 +28,32 @@ # # Performance in cycles per byte out of large buffer. # -# IALU/gcc 4.8(i) 1xSSSE3/SSE2 4xSSSE3 NxAVX(v) +# IALU/gcc 4.8(i) 1x/2xSSSE3(ii) 4xSSSE3 NxAVX(v) # -# P4 9.48/+99% -/22.7(ii) - -# Core2 7.83/+55% 7.90/8.08 4.35 -# Westmere 7.19/+50% 5.60/6.70 3.00 -# Sandy Bridge 8.31/+42% 5.45/6.76 2.72 -# Ivy Bridge 6.71/+46% 5.40/6.49 2.41 -# Haswell 5.92/+43% 5.20/6.45 2.42 1.23 -# Skylake[-X] 5.87/+39% 4.70/- 2.31 1.19[0.80(vi)] -# Silvermont 12.0/+33% 7.75/7.40 7.03(iii) -# Knights L 11.7/- - 9.60(iii) 0.80 -# Goldmont 10.6/+17% 5.10/- 3.28 -# Sledgehammer 7.28/+52% -/14.2(ii) - -# Bulldozer 9.66/+28% 9.85/11.1 3.06(iv) -# Ryzen 5.96/+50% 5.19/- 2.40 2.09 -# VIA Nano 10.5/+46% 6.72/8.60 6.05 +# P4 9.48/+99% - - +# Core2 7.83/+55% 7.90/5.76 4.35 +# Westmere 7.19/+50% 5.60/4.50 3.00 +# Sandy Bridge 8.31/+42% 5.45/4.00 2.72 +# Ivy Bridge 6.71/+46% 5.40/? 2.41 +# Haswell 5.92/+43% 5.20/3.45 2.42 1.23 +# Skylake[-X] 5.87/+39% 4.70/3.22 2.31 1.19[0.80(vi)] +# Silvermont 12.0/+33% 7.75/6.90 7.03(iii) +# Knights L 11.7/- ? 9.60(iii) 0.80 +# Goldmont 10.6/+17% 5.10/3.52 3.28 +# Sledgehammer 7.28/+52% - - +# Bulldozer 9.66/+28% 9.85/5.35(iv) 3.06(iv) +# Ryzen 5.96/+50% 5.19/3.00 2.40 2.09 +# VIA Nano 10.5/+46% 6.72/6.88 6.05 # # (i) compared to older gcc 3.x one can observe >2x improvement on # most platforms; -# (ii) as it can be seen, SSE2 performance is too low on legacy -# processors; NxSSE2 results are naturally better, but not -# impressively better than IALU ones, which is why you won't -# find SSE2 code below; +# (ii) 2xSSSE3 is code path optimized specifically for 128 bytes used +# by chacha20_poly1305_tls_cipher, results are EVP-free; # (iii) this is not optimal result for Atom because of MSROM # limitations, SSE2 can do better, but gain is considered too # low to justify the [maintenance] effort; -# (iv) Bulldozer actually executes 4xXOP code path that delivers 2.20; +# (iv) Bulldozer actually executes 4xXOP code path that delivers 2.20 +# and 4.85 for 128-byte inputs; # (v) 8xAVX2, 8xAVX512VL or 16xAVX512F, whichever best applicable; # (vi) even though Skylake-X can execute AVX512F code and deliver 0.57 # cpb in single thread, the corresponding capability is suppressed; @@ -489,6 +488,7 @@ $code.=<<___ if ($avx); ___ $code.=<<___; cmp \$128,$len # we might throw away some data, + je .LChaCha20_128 ja .LChaCha20_4x # but overall it won't be slower .Ldo_sse3_after_all: @@ -605,6 +605,172 @@ $code.=<<___; ___ } +######################################################################## +# SSSE3 code path that handles 128-byte inputs +{ +my ($a,$b,$c,$d,$t,$t1,$rot16,$rot24)=map("%xmm$_",(8,9,2..7)); +my ($a1,$b1,$c1,$d1)=map("%xmm$_",(10,11,0,1)); + +sub SSSE3ROUND_2x { + &paddd ($a,$b); + &pxor ($d,$a); + &paddd ($a1,$b1); + &pxor ($d1,$a1); + &pshufb ($d,$rot16); + &pshufb($d1,$rot16); + + &paddd ($c,$d); + &paddd ($c1,$d1); + &pxor ($b,$c); + &pxor ($b1,$c1); + &movdqa ($t,$b); + &psrld ($b,20); + &movdqa($t1,$b1); + &pslld ($t,12); + &psrld ($b1,20); + &por ($b,$t); + &pslld ($t1,12); + &por ($b1,$t1); + + &paddd ($a,$b); + &pxor ($d,$a); + &paddd ($a1,$b1); + &pxor ($d1,$a1); + &pshufb ($d,$rot24); + &pshufb($d1,$rot24); + + &paddd ($c,$d); + &paddd ($c1,$d1); + &pxor ($b,$c); + &pxor ($b1,$c1); + &movdqa ($t,$b); + &psrld ($b,25); + &movdqa($t1,$b1); + &pslld ($t,7); + &psrld ($b1,25); + &por ($b,$t); + &pslld ($t1,7); + &por ($b1,$t1); +} + +my $xframe = $win64 ? 0x68 : 8; + +$code.=<<___; +.type ChaCha20_128,\@function,5 +.align 32 +ChaCha20_128: +.cfi_startproc +.LChaCha20_128: + mov %rsp,%r9 # frame pointer +.cfi_def_cfa_register %r9 + sub \$64+$xframe,%rsp +___ +$code.=<<___ if ($win64); + movaps %xmm6,-0x68(%r9) + movaps %xmm7,-0x58(%r9) + movaps %xmm8,-0x48(%r9) + movaps %xmm9,-0x38(%r9) + movaps %xmm10,-0x28(%r9) + movaps %xmm11,-0x18(%r9) +.L128_body: +___ +$code.=<<___; + movdqa .Lsigma(%rip),$a + movdqu ($key),$b + movdqu 16($key),$c + movdqu ($counter),$d + movdqa .Lone(%rip),$d1 + movdqa .Lrot16(%rip),$rot16 + movdqa .Lrot24(%rip),$rot24 + + movdqa $a,$a1 + movdqa $a,0x00(%rsp) + movdqa $b,$b1 + movdqa $b,0x10(%rsp) + movdqa $c,$c1 + movdqa $c,0x20(%rsp) + paddd $d,$d1 + movdqa $d,0x30(%rsp) + mov \$10,$counter # reuse $counter + jmp .Loop_128 + +.align 32 +.Loop_128: +___ + &SSSE3ROUND_2x(); + &pshufd ($c,$c,0b01001110); + &pshufd ($b,$b,0b00111001); + &pshufd ($d,$d,0b10010011); + &pshufd ($c1,$c1,0b01001110); + &pshufd ($b1,$b1,0b00111001); + &pshufd ($d1,$d1,0b10010011); + + &SSSE3ROUND_2x(); + &pshufd ($c,$c,0b01001110); + &pshufd ($b,$b,0b10010011); + &pshufd ($d,$d,0b00111001); + &pshufd ($c1,$c1,0b01001110); + &pshufd ($b1,$b1,0b10010011); + &pshufd ($d1,$d1,0b00111001); + + &dec ($counter); + &jnz (".Loop_128"); + +$code.=<<___; + paddd 0x00(%rsp),$a + paddd 0x10(%rsp),$b + paddd 0x20(%rsp),$c + paddd 0x30(%rsp),$d + paddd .Lone(%rip),$d1 + paddd 0x00(%rsp),$a1 + paddd 0x10(%rsp),$b1 + paddd 0x20(%rsp),$c1 + paddd 0x30(%rsp),$d1 + + movdqu 0x00($inp),$t + movdqu 0x10($inp),$t1 + pxor $t,$a # xor with input + movdqu 0x20($inp),$t + pxor $t1,$b + movdqu 0x30($inp),$t1 + pxor $t,$c + movdqu 0x40($inp),$t + pxor $t1,$d + movdqu 0x50($inp),$t1 + pxor $t,$a1 + movdqu 0x60($inp),$t + pxor $t1,$b1 + movdqu 0x70($inp),$t1 + pxor $t,$c1 + pxor $t1,$d1 + + movdqu $a,0x00($out) # write output + movdqu $b,0x10($out) + movdqu $c,0x20($out) + movdqu $d,0x30($out) + movdqu $a1,0x40($out) + movdqu $b1,0x50($out) + movdqu $c1,0x60($out) + movdqu $d1,0x70($out) +___ +$code.=<<___ if ($win64); + movaps -0x68(%r9),%xmm6 + movaps -0x58(%r9),%xmm7 + movaps -0x48(%r9),%xmm8 + movaps -0x38(%r9),%xmm9 + movaps -0x28(%r9),%xmm10 + movaps -0x18(%r9),%xmm11 +___ +$code.=<<___; + lea (%r9),%rsp +.cfi_def_cfa_register %rsp +.L128_epilogue: + ret +.cfi_endproc +.size ChaCha20_128,.-ChaCha20_128 +___ +} + ######################################################################## # SSSE3 code path that handles longer messages. { @@ -3674,9 +3840,9 @@ se_handler: ret .size se_handler,.-se_handler -.type ssse3_handler,\@abi-omnipotent +.type simd_handler,\@abi-omnipotent .align 16 -ssse3_handler: +simd_handler: push %rsi push %rdi push %rbx @@ -3702,57 +3868,20 @@ ssse3_handler: mov 192($context),%rax # pull context->R9 mov 4(%r11),%r10d # HandlerData[1] + mov 8(%r11),%ecx # HandlerData[2] lea (%rsi,%r10),%r10 # epilogue label cmp %r10,%rbx # context->Rip>=epilogue label jae .Lcommon_seh_tail - lea -0x28(%rax),%rsi + neg %rcx + lea -8(%rax,%rcx),%rsi lea 512($context),%rdi # &context.Xmm6 - mov \$4,%ecx + neg %ecx + shr \$3,%ecx .long 0xa548f3fc # cld; rep movsq jmp .Lcommon_seh_tail -.size ssse3_handler,.-ssse3_handler - -.type full_handler,\@abi-omnipotent -.align 16 -full_handler: - push %rsi - push %rdi - push %rbx - push %rbp - push %r12 - push %r13 - push %r14 - push %r15 - pushfq - sub \$64,%rsp - - mov 120($context),%rax # pull context->Rax - mov 248($context),%rbx # pull context->Rip - - mov 8($disp),%rsi # disp->ImageBase - mov 56($disp),%r11 # disp->HandlerData - - mov 0(%r11),%r10d # HandlerData[0] - lea (%rsi,%r10),%r10 # prologue label - cmp %r10,%rbx # context->RipR9 - - mov 4(%r11),%r10d # HandlerData[1] - lea (%rsi,%r10),%r10 # epilogue label - cmp %r10,%rbx # context->Rip>=epilogue label - jae .Lcommon_seh_tail - - lea -0xa8(%rax),%rsi - lea 512($context),%rdi # &context.Xmm6 - mov \$20,%ecx - .long 0xa548f3fc # cld; rep movsq - - jmp .Lcommon_seh_tail -.size full_handler,.-full_handler +.size simd_handler,.-simd_handler .section .pdata .align 4 @@ -3764,6 +3893,10 @@ full_handler: .rva .LSEH_end_ChaCha20_ssse3 .rva .LSEH_info_ChaCha20_ssse3 + .rva .LSEH_begin_ChaCha20_128 + .rva .LSEH_end_ChaCha20_128 + .rva .LSEH_info_ChaCha20_128 + .rva .LSEH_begin_ChaCha20_4x .rva .LSEH_end_ChaCha20_4x .rva .LSEH_info_ChaCha20_4x @@ -3804,46 +3937,60 @@ $code.=<<___; .LSEH_info_ChaCha20_ssse3: .byte 9,0,0,0 - .rva ssse3_handler + .rva simd_handler .rva .Lssse3_body,.Lssse3_epilogue + .long 0x20,0 + +.LSEH_info_ChaCha20_128: + .byte 9,0,0,0 + .rva simd_handler + .rva .L128_body,.L128_epilogue + .long 0x60,0 .LSEH_info_ChaCha20_4x: .byte 9,0,0,0 - .rva full_handler + .rva simd_handler .rva .L4x_body,.L4x_epilogue + .long 0xa0,0 ___ $code.=<<___ if ($avx); .LSEH_info_ChaCha20_4xop: .byte 9,0,0,0 - .rva full_handler + .rva simd_handler .rva .L4xop_body,.L4xop_epilogue # HandlerData[] + .long 0xa0,0 ___ $code.=<<___ if ($avx>1); .LSEH_info_ChaCha20_8x: .byte 9,0,0,0 - .rva full_handler + .rva simd_handler .rva .L8x_body,.L8x_epilogue # HandlerData[] + .long 0xa0,0 ___ $code.=<<___ if ($avx>2); .LSEH_info_ChaCha20_avx512: .byte 9,0,0,0 - .rva ssse3_handler + .rva simd_handler .rva .Lavx512_body,.Lavx512_epilogue # HandlerData[] + .long 0x20,0 .LSEH_info_ChaCha20_avx512vl: .byte 9,0,0,0 - .rva ssse3_handler + .rva simd_handler .rva .Lavx512vl_body,.Lavx512vl_epilogue # HandlerData[] + .long 0x20,0 .LSEH_info_ChaCha20_16x: .byte 9,0,0,0 - .rva full_handler + .rva simd_handler .rva .L16x_body,.L16x_epilogue # HandlerData[] + .long 0xa0,0 .LSEH_info_ChaCha20_8xvl: .byte 9,0,0,0 - .rva full_handler + .rva simd_handler .rva .L8xvl_body,.L8xvl_epilogue # HandlerData[] + .long 0xa0,0 ___ } diff --git a/crypto/conf/conf_lib.c b/crypto/conf/conf_lib.c index c72511ba..5f976f35 100644 --- a/crypto/conf/conf_lib.c +++ b/crypto/conf/conf_lib.c @@ -292,10 +292,13 @@ int NCONF_get_number_e(const CONF *conf, const char *group, const char *name, if (str == NULL) return 0; - for (*result = 0; conf->meth->is_number(conf, *str);) { - *result = (*result) * 10 + conf->meth->to_int(conf, *str); - str++; - } + if (conf == NULL) + *result = strtol(str, &str, 10); + else + for (*result = 0; conf->meth->is_number(conf, *str);) { + *result = (*result) * 10 + conf->meth->to_int(conf, *str); + str++; + } return 1; } diff --git a/crypto/ec/ec_mult.c b/crypto/ec/ec_mult.c index c821cb82..663db57f 100644 --- a/crypto/ec/ec_mult.c +++ b/crypto/ec/ec_mult.c @@ -389,30 +389,32 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar, return EC_POINT_set_to_infinity(group, r); } - /*- - * Handle the common cases where the scalar is secret, enforcing a constant - * time scalar multiplication algorithm. - */ - if ((scalar != NULL) && (num == 0)) { + if (!BN_is_zero(group->order) && !BN_is_zero(group->cofactor)) { /*- - * In this case we want to compute scalar * GeneratorPoint: this - * codepath is reached most prominently by (ephemeral) key generation - * of EC cryptosystems (i.e. ECDSA keygen and sign setup, ECDH - * keygen/first half), where the scalar is always secret. This is why - * we ignore if BN_FLG_CONSTTIME is actually set and we always call the - * constant time version. + * Handle the common cases where the scalar is secret, enforcing a constant + * time scalar multiplication algorithm. */ - return ec_mul_consttime(group, r, scalar, NULL, ctx); - } - if ((scalar == NULL) && (num == 1)) { - /*- - * In this case we want to compute scalar * GenericPoint: this codepath - * is reached most prominently by the second half of ECDH, where the - * secret scalar is multiplied by the peer's public point. To protect - * the secret scalar, we ignore if BN_FLG_CONSTTIME is actually set and - * we always call the constant time version. - */ - return ec_mul_consttime(group, r, scalars[0], points[0], ctx); + if ((scalar != NULL) && (num == 0)) { + /*- + * In this case we want to compute scalar * GeneratorPoint: this + * codepath is reached most prominently by (ephemeral) key generation + * of EC cryptosystems (i.e. ECDSA keygen and sign setup, ECDH + * keygen/first half), where the scalar is always secret. This is why + * we ignore if BN_FLG_CONSTTIME is actually set and we always call the + * constant time version. + */ + return ec_mul_consttime(group, r, scalar, NULL, ctx); + } + if ((scalar == NULL) && (num == 1)) { + /*- + * In this case we want to compute scalar * GenericPoint: this codepath + * is reached most prominently by the second half of ECDH, where the + * secret scalar is multiplied by the peer's public point. To protect + * the secret scalar, we ignore if BN_FLG_CONSTTIME is actually set and + * we always call the constant time version. + */ + return ec_mul_consttime(group, r, scalars[0], points[0], ctx); + } } for (i = 0; i < num; i++) { diff --git a/crypto/evp/e_chacha20_poly1305.c b/crypto/evp/e_chacha20_poly1305.c index 9bf98f16..47d5e50d 100644 --- a/crypto/evp/e_chacha20_poly1305.c +++ b/crypto/evp/e_chacha20_poly1305.c @@ -150,6 +150,7 @@ typedef struct { EVP_CHACHA_KEY key; unsigned int nonce[12/4]; unsigned char tag[POLY1305_BLOCK_SIZE]; + unsigned char tls_aad[POLY1305_BLOCK_SIZE]; struct { uint64_t aad, text; } len; int aad, mac_inited, tag_len, nonce_len; size_t tls_payload_length; @@ -179,7 +180,8 @@ static int chacha20_poly1305_init_key(EVP_CIPHER_CTX *ctx, /* pad on the left */ if (actx->nonce_len <= CHACHA_CTR_SIZE) - memcpy(temp + CHACHA_CTR_SIZE - actx->nonce_len, iv, actx->nonce_len); + memcpy(temp + CHACHA_CTR_SIZE - actx->nonce_len, iv, + actx->nonce_len); chacha_init_key(ctx, inkey, temp, enc); @@ -193,23 +195,158 @@ static int chacha20_poly1305_init_key(EVP_CIPHER_CTX *ctx, return 1; } +# if !defined(OPENSSL_SMALL_FOOTPRINT) +static const unsigned char zero[2 * CHACHA_BLK_SIZE] = { 0 }; + +static int chacha20_poly1305_tls_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, + const unsigned char *in, size_t len) +{ + EVP_CHACHA_AEAD_CTX *actx = aead_data(ctx); + size_t i, tail, tohash_len, plen = actx->tls_payload_length; + unsigned char *buf, *tohash, *ctr, storage[2 * CHACHA_BLK_SIZE + 32]; + + if (len != plen + POLY1305_BLOCK_SIZE) + return -1; + + buf = storage + ((0 - (size_t)storage) & 15); /* align */ + ctr = buf + CHACHA_BLK_SIZE; + tohash = buf + CHACHA_BLK_SIZE - POLY1305_BLOCK_SIZE; + + if (plen <= CHACHA_BLK_SIZE) { + actx->key.counter[0] = 0; + ChaCha20_ctr32(buf, zero, 2 * CHACHA_BLK_SIZE, actx->key.key.d, + actx->key.counter); + Poly1305_Init(POLY1305_ctx(actx), buf); + actx->key.partial_len = 0; + memcpy(tohash, actx->tls_aad, POLY1305_BLOCK_SIZE); + tohash_len = POLY1305_BLOCK_SIZE; + actx->len.aad = EVP_AEAD_TLS1_AAD_LEN; + actx->len.text = plen; + + if (ctx->encrypt) { + for (i = 0; i < plen; i++) { + out[i] = ctr[i] ^= in[i]; + } + } else { + for (i = 0; i < plen; i++) { + unsigned char c = in[i]; + out[i] = ctr[i] ^ c; + ctr[i] = c; + } + } + + in += i; + out += i; + + tail = (0 - i) & (POLY1305_BLOCK_SIZE - 1); + memset(ctr + i, 0, tail); + ctr += i + tail; + tohash_len += i + tail; + } else { + actx->key.counter[0] = 0; + ChaCha20_ctr32(buf, zero, CHACHA_BLK_SIZE, actx->key.key.d, + actx->key.counter); + Poly1305_Init(POLY1305_ctx(actx), buf); + actx->key.counter[0] = 1; + actx->key.partial_len = 0; + Poly1305_Update(POLY1305_ctx(actx), actx->tls_aad, POLY1305_BLOCK_SIZE); + tohash = ctr; + tohash_len = 0; + actx->len.aad = EVP_AEAD_TLS1_AAD_LEN; + actx->len.text = plen; + + if (ctx->encrypt) { + ChaCha20_ctr32(out, in, plen, actx->key.key.d, actx->key.counter); + Poly1305_Update(POLY1305_ctx(actx), out, plen); + } else { + Poly1305_Update(POLY1305_ctx(actx), in, plen); + ChaCha20_ctr32(out, in, plen, actx->key.key.d, actx->key.counter); + } + + in += plen; + out += plen; + tail = (0 - plen) & (POLY1305_BLOCK_SIZE - 1); + Poly1305_Update(POLY1305_ctx(actx), zero, tail); + } + + { + const union { + long one; + char little; + } is_endian = { 1 }; + + if (is_endian.little) { + memcpy(ctr, (unsigned char *)&actx->len, POLY1305_BLOCK_SIZE); + } else { + ctr[0] = (unsigned char)(actx->len.aad); + ctr[1] = (unsigned char)(actx->len.aad>>8); + ctr[2] = (unsigned char)(actx->len.aad>>16); + ctr[3] = (unsigned char)(actx->len.aad>>24); + ctr[4] = (unsigned char)(actx->len.aad>>32); + ctr[5] = (unsigned char)(actx->len.aad>>40); + ctr[6] = (unsigned char)(actx->len.aad>>48); + ctr[7] = (unsigned char)(actx->len.aad>>56); + + ctr[8] = (unsigned char)(actx->len.text); + ctr[9] = (unsigned char)(actx->len.text>>8); + ctr[10] = (unsigned char)(actx->len.text>>16); + ctr[11] = (unsigned char)(actx->len.text>>24); + ctr[12] = (unsigned char)(actx->len.text>>32); + ctr[13] = (unsigned char)(actx->len.text>>40); + ctr[14] = (unsigned char)(actx->len.text>>48); + ctr[15] = (unsigned char)(actx->len.text>>56); + } + tohash_len += POLY1305_BLOCK_SIZE; + } + + Poly1305_Update(POLY1305_ctx(actx), tohash, tohash_len); + OPENSSL_cleanse(buf, 2 * CHACHA_BLK_SIZE); + Poly1305_Final(POLY1305_ctx(actx), ctx->encrypt ? actx->tag + : tohash); + + actx->tls_payload_length = NO_TLS_PAYLOAD_LENGTH; + + if (ctx->encrypt) { + memcpy(out, actx->tag, POLY1305_BLOCK_SIZE); + } else { + if (CRYPTO_memcmp(tohash, in, POLY1305_BLOCK_SIZE)) { + memset(out - (len - POLY1305_BLOCK_SIZE), 0, + len - POLY1305_BLOCK_SIZE); + return -1; + } + } + + return len; +} +# else +static const unsigned char zero[CHACHA_BLK_SIZE] = { 0 }; +# endif + static int chacha20_poly1305_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t len) { EVP_CHACHA_AEAD_CTX *actx = aead_data(ctx); size_t rem, plen = actx->tls_payload_length; - static const unsigned char zero[POLY1305_BLOCK_SIZE] = { 0 }; if (!actx->mac_inited) { +# if !defined(OPENSSL_SMALL_FOOTPRINT) + if (plen != NO_TLS_PAYLOAD_LENGTH && out != NULL) + return chacha20_poly1305_tls_cipher(ctx, out, in, len); +# endif actx->key.counter[0] = 0; - memset(actx->key.buf, 0, sizeof(actx->key.buf)); - ChaCha20_ctr32(actx->key.buf, actx->key.buf, CHACHA_BLK_SIZE, + ChaCha20_ctr32(actx->key.buf, zero, CHACHA_BLK_SIZE, actx->key.key.d, actx->key.counter); Poly1305_Init(POLY1305_ctx(actx), actx->key.buf); actx->key.counter[0] = 1; actx->key.partial_len = 0; actx->len.aad = actx->len.text = 0; actx->mac_inited = 1; + if (plen != NO_TLS_PAYLOAD_LENGTH) { + Poly1305_Update(POLY1305_ctx(actx), actx->tls_aad, + EVP_AEAD_TLS1_AAD_LEN); + actx->len.aad = EVP_AEAD_TLS1_AAD_LEN; + actx->aad = 1; + } } if (in) { /* aad or text */ @@ -341,6 +478,7 @@ static int chacha20_poly1305_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, actx->tag_len = 0; actx->nonce_len = 12; actx->tls_payload_length = NO_TLS_PAYLOAD_LENGTH; + memset(actx->tls_aad, 0, POLY1305_BLOCK_SIZE); return 1; case EVP_CTRL_COPY: @@ -393,18 +531,18 @@ static int chacha20_poly1305_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, return 0; { unsigned int len; - unsigned char *aad = ptr, temp[POLY1305_BLOCK_SIZE]; + unsigned char *aad = ptr; + memcpy(actx->tls_aad, ptr, EVP_AEAD_TLS1_AAD_LEN); len = aad[EVP_AEAD_TLS1_AAD_LEN - 2] << 8 | aad[EVP_AEAD_TLS1_AAD_LEN - 1]; + aad = actx->tls_aad; if (!ctx->encrypt) { if (len < POLY1305_BLOCK_SIZE) return 0; len -= POLY1305_BLOCK_SIZE; /* discount attached tag */ - memcpy(temp, aad, EVP_AEAD_TLS1_AAD_LEN - 2); - aad = temp; - temp[EVP_AEAD_TLS1_AAD_LEN - 2] = (unsigned char)(len >> 8); - temp[EVP_AEAD_TLS1_AAD_LEN - 1] = (unsigned char)len; + aad[EVP_AEAD_TLS1_AAD_LEN - 2] = (unsigned char)(len >> 8); + aad[EVP_AEAD_TLS1_AAD_LEN - 1] = (unsigned char)len; } actx->tls_payload_length = len; @@ -415,7 +553,7 @@ static int chacha20_poly1305_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, actx->key.counter[2] = actx->nonce[1] ^ CHACHA_U8TOU32(aad); actx->key.counter[3] = actx->nonce[2] ^ CHACHA_U8TOU32(aad+4); actx->mac_inited = 0; - chacha20_poly1305_cipher(ctx, NULL, aad, EVP_AEAD_TLS1_AAD_LEN); + return POLY1305_BLOCK_SIZE; /* tag length */ } diff --git a/crypto/modes/asm/ghash-armv4.pl b/crypto/modes/asm/ghash-armv4.pl index 9cc072e7..9d8c9883 100644 --- a/crypto/modes/asm/ghash-armv4.pl +++ b/crypto/modes/asm/ghash-armv4.pl @@ -145,6 +145,8 @@ $code=<<___; .text #if defined(__thumb2__) || defined(__clang__) .syntax unified +#define ldrplb ldrbpl +#define ldrneb ldrbne #endif #if defined(__thumb2__) .thumb @@ -152,11 +154,6 @@ $code=<<___; .code 32 #endif -#ifdef __clang__ -#define ldrplb ldrbpl -#define ldrneb ldrbne -#endif - .type rem_4bit,%object .align 5 rem_4bit: diff --git a/crypto/pem/pem_lib.c b/crypto/pem/pem_lib.c index 7c82561b..5c21a868 100644 --- a/crypto/pem/pem_lib.c +++ b/crypto/pem/pem_lib.c @@ -488,6 +488,7 @@ int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher) char *dekinfostart, c; cipher->cipher = NULL; + memset(cipher->iv, 0, sizeof(cipher->iv)); if ((header == NULL) || (*header == '\0') || (*header == '\n')) return 1; diff --git a/crypto/perlasm/x86_64-xlate.pl b/crypto/perlasm/x86_64-xlate.pl index eac21c1c..0bde5ee7 100755 --- a/crypto/perlasm/x86_64-xlate.pl +++ b/crypto/perlasm/x86_64-xlate.pl @@ -877,7 +877,7 @@ my %globals; $var=~s/^(0b[0-1]+)/oct($1)/eig; $var=~s/^0x([0-9a-f]+)/0$1h/ig if ($masm); if ($sz eq "D" && ($current_segment=~/.[px]data/ || $dir eq ".rva")) - { $var=~s/([_a-z\$\@][_a-z0-9\$\@]*)/$nasm?"$1 wrt ..imagebase":"imagerel $1"/egi; } + { $var=~s/^([_a-z\$\@][_a-z0-9\$\@]*)/$nasm?"$1 wrt ..imagebase":"imagerel $1"/egi; } $var; }; diff --git a/crypto/rand/rand_unix.c b/crypto/rand/rand_unix.c index b64cf278..f482de06 100644 --- a/crypto/rand/rand_unix.c +++ b/crypto/rand/rand_unix.c @@ -7,7 +7,9 @@ * https://www.openssl.org/source/license.html */ -#define _GNU_SOURCE +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif #include "e_os.h" #include #include "internal/cryptlib.h" diff --git a/crypto/sha/asm/keccak1600-s390x.pl b/crypto/sha/asm/keccak1600-s390x.pl index 4bd3619f..58c44d8a 100755 --- a/crypto/sha/asm/keccak1600-s390x.pl +++ b/crypto/sha/asm/keccak1600-s390x.pl @@ -335,7 +335,6 @@ ___ } { $code.=<<___; -.globl KeccakF1600 .type KeccakF1600,\@function .align 32 KeccakF1600: diff --git a/crypto/sha/asm/keccak1600-x86_64.pl b/crypto/sha/asm/keccak1600-x86_64.pl index d3f4c10a..42de5bf1 100755 --- a/crypto/sha/asm/keccak1600-x86_64.pl +++ b/crypto/sha/asm/keccak1600-x86_64.pl @@ -344,7 +344,6 @@ $code.=<<___; ret .size __KeccakF1600,.-__KeccakF1600 -.globl KeccakF1600 .type KeccakF1600,\@abi-omnipotent .align 32 KeccakF1600: diff --git a/doc/man1/ciphers.pod b/doc/man1/ciphers.pod index 8dd0d2c0..8e43cdd0 100644 --- a/doc/man1/ciphers.pod +++ b/doc/man1/ciphers.pod @@ -113,7 +113,7 @@ TLSv1.2 and below ciphersuites that have been configured. The format for this list is a simple colon (":") separated list of TLSv1.3 ciphersuite names. By default this value is: -"TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256" + TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 =item B diff --git a/doc/man1/cms.pod b/doc/man1/cms.pod index 46205611..60ee3b50 100644 --- a/doc/man1/cms.pod +++ b/doc/man1/cms.pod @@ -83,7 +83,8 @@ B B [B<-signer file>] [B<-recip file>] [B<-keyid>] -[B<-receipt_request_all -receipt_request_first>] +[B<-receipt_request_all>] +[B<-receipt_request_first>] [B<-receipt_request_from emailaddress>] [B<-receipt_request_to emailaddress>] [B<-receipt_request_print>] @@ -304,7 +305,7 @@ default digest algorithm for the signing key will be used (usually SHA1). The encryption algorithm to use. For example triple DES (168 bits) - B<-des3> or 256 bit AES - B<-aes256>. Any standard algorithm name (as used by the EVP_get_cipherbyname() function) can also be used preceded by a dash, for -example B<-aes-128-cbc>. See L|enc(1)> for a list of ciphers +example B<-aes-128-cbc>. See L for a list of ciphers supported by your version of OpenSSL. If not specified triple DES is used. Only used with B<-encrypt> and @@ -403,7 +404,7 @@ Use subject key identifier to identify certificates instead of issuer name and serial number. The supplied certificate B include a subject key identifier extension. Supported by B<-sign> and B<-encrypt> options. -=item B<-receipt_request_all -receipt_request_first> +=item B<-receipt_request_all>, B<-receipt_request_first> For B<-sign> option include a signed receipt request. Indicate requests should be provided by all recipient or first tier recipients (those mailed directly diff --git a/doc/man1/dsa.pod b/doc/man1/dsa.pod index 2428879e..a4dcc561 100644 --- a/doc/man1/dsa.pod +++ b/doc/man1/dsa.pod @@ -89,7 +89,7 @@ filename. The output file password source. For more information about the format of B see the B section in L. -=item B<-aes128|-aes192|-aes256|-aria128|-aria192|-aria256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea> +=item B<-aes128>, B<-aes192>, B<-aes256>, B<-aria128>, B<-aria192>, B<-aria256>, B<-camellia128>, B<-camellia192>, B<-camellia256>, B<-des>, B<-des3>, B<-idea> These options encrypt the private key with the specified cipher before outputting it. A pass phrase is prompted for. diff --git a/doc/man1/gendsa.pod b/doc/man1/gendsa.pod index 7984b74c..1cbd3f47 100644 --- a/doc/man1/gendsa.pod +++ b/doc/man1/gendsa.pod @@ -45,7 +45,7 @@ Print out a usage message. Output the key to the specified file. If this argument is not specified then standard output is used. -=item B<-aes128|-aes192|-aes256|-aria128|-aria192|-aria256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea> +=item B<-aes128>, B<-aes192>, B<-aes256>, B<-aria128>, B<-aria192>, B<-aria256>, B<-camellia128>, B<-camellia192>, B<-camellia256>, B<-des>, B<-des3>, B<-idea> These options encrypt the private key with specified cipher before outputting it. A pass phrase is prompted for. diff --git a/doc/man1/genpkey.pod b/doc/man1/genpkey.pod index cdf21733..fa62973a 100644 --- a/doc/man1/genpkey.pod +++ b/doc/man1/genpkey.pod @@ -261,13 +261,13 @@ Encrypt output private key using 128 bit AES and the passphrase "hello": Generate a 2048 bit RSA key using 3 as the public exponent: - openssl genpkey -algorithm RSA -out key.pem -pkeyopt rsa_keygen_bits:2048 \ - -pkeyopt rsa_keygen_pubexp:3 + openssl genpkey -algorithm RSA -out key.pem \ + -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:3 Generate 2048 bit DSA parameters: openssl genpkey -genparam -algorithm DSA -out dsap.pem \ - -pkeyopt dsa_paramgen_bits:2048 + -pkeyopt dsa_paramgen_bits:2048 Generate DSA key from parameters: @@ -276,13 +276,13 @@ Generate DSA key from parameters: Generate 2048 bit DH parameters: openssl genpkey -genparam -algorithm DH -out dhp.pem \ - -pkeyopt dh_paramgen_prime_len:2048 + -pkeyopt dh_paramgen_prime_len:2048 Generate 2048 bit X9.42 DH parameters: openssl genpkey -genparam -algorithm DH -out dhpx.pem \ - -pkeyopt dh_paramgen_prime_len:2048 \ - -pkeyopt dh_paramgen_type:1 + -pkeyopt dh_paramgen_prime_len:2048 \ + -pkeyopt dh_paramgen_type:1 Output RFC5114 2048 bit DH parameters with 224 bit subgroup: diff --git a/doc/man1/genrsa.pod b/doc/man1/genrsa.pod index 25562dc8..638debaa 100644 --- a/doc/man1/genrsa.pod +++ b/doc/man1/genrsa.pod @@ -53,7 +53,7 @@ standard output is used. The output file password source. For more information about the format of B see the B section in L. -=item B<-aes128|-aes192|-aes256|-aria128|-aria192|-aria256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea> +=item B<-aes128>, B<-aes192>, B<-aes256>, B<-aria128>, B<-aria192>, B<-aria256>, B<-camellia128>, B<-camellia192>, B<-camellia256>, B<-des>, B<-des3>, B<-idea> These options encrypt the private key with specified cipher before outputting it. If none of these options is diff --git a/doc/man1/openssl.pod b/doc/man1/openssl.pod index a7132691..c656a34e 100644 --- a/doc/man1/openssl.pod +++ b/doc/man1/openssl.pod @@ -77,161 +77,160 @@ B, or BI itself.) =over 4 -=item L|asn1parse(1)> +=item B Parse an ASN.1 sequence. -=item L|ca(1)> +=item B Certificate Authority (CA) Management. -=item L|ciphers(1)> +=item B Cipher Suite Description Determination. -=item L|cms(1)> +=item B CMS (Cryptographic Message Syntax) utility. -=item L|crl(1)> +=item B Certificate Revocation List (CRL) Management. -=item L|crl2pkcs7(1)> +=item B CRL to PKCS#7 Conversion. -=item L|dgst(1)> +=item B Message Digest Calculation. =item B Diffie-Hellman Parameter Management. -Obsoleted by L|dhparam(1)>. +Obsoleted by L. -=item L|dhparam(1)> +=item B Generation and Management of Diffie-Hellman Parameters. Superseded by -L|genpkey(1)> and L|pkeyparam(1)>. +L and L. -=item L|dsa(1)> +=item B DSA Data Management. -=item L|dsaparam(1)> +=item B DSA Parameter Generation and Management. Superseded by -L|genpkey(1)> and L|pkeyparam(1)>. +L and L. -=item L|ec(1)> +=item B EC (Elliptic curve) key processing. -=item L|ecparam(1)> +=item B EC parameter manipulation and generation. -=item L|enc(1)> +=item B Encoding with Ciphers. -=item L|engine(1)> +=item B Engine (loadable module) information and manipulation. -=item L|errstr(1)> +=item B Error Number to Error String Conversion. =item B Generation of Diffie-Hellman Parameters. -Obsoleted by L|dhparam(1)>. +Obsoleted by L. -=item L|gendsa(1)> +=item B Generation of DSA Private Key from Parameters. Superseded by -L|genpkey(1)> and L|pkey(1)>. +L and L. -=item L|genpkey(1)> +=item B Generation of Private Key or Parameters. -=item L|genrsa(1)> +=item B -Generation of RSA Private Key. Superseded by L|genpkey(1)>. +Generation of RSA Private Key. Superseded by L. -=item L|nseq(1)> +=item B Create or examine a Netscape certificate sequence. -=item L|ocsp(1)> +=item B Online Certificate Status Protocol utility. -=item L|passwd(1)> +=item B Generation of hashed passwords. -=item L|pkcs12(1)> +=item B PKCS#12 Data Management. -=item L|pkcs7(1)> +=item B PKCS#7 Data Management. -=item L|pkcs8(1)> +=item B PKCS#8 format private key conversion tool. -=item L|pkey(1)> +=item B Public and private key management. -=item L|pkeyparam(1)> +=item B Public key algorithm parameter management. -=item L|pkeyutl(1)> +=item B Public key algorithm cryptographic operation utility. -=item L|prime(1)> +=item B Compute prime numbers. -=item L|rand(1)> +=item B Generate pseudo-random bytes. -=item L|rehash(1)> +=item B Create symbolic links to certificate and CRL files named by the hash values. -=item L|req(1)> +=item B PKCS#10 X.509 Certificate Signing Request (CSR) Management. -=item L|rsa(1)> +=item B RSA key management. - -=item L|rsautl(1)> +=item B RSA utility for signing, verification, encryption, and decryption. Superseded -by L|pkeyutl(1)>. +by L. -=item L|s_client(1)> +=item B This implements a generic SSL/TLS client which can establish a transparent connection to a remote server speaking SSL/TLS. It's intended for testing purposes only and provides only rudimentary interface functionality but internally uses mostly all functionality of the OpenSSL B library. -=item L|s_server(1)> +=item B This implements a generic SSL/TLS server which accepts connections from remote clients speaking SSL/TLS. It's intended for testing purposes only and provides @@ -240,47 +239,47 @@ functionality of the OpenSSL B library. It provides both an own command line oriented protocol for testing SSL functions and a simple HTTP response facility to emulate an SSL/TLS-aware webserver. -=item L|s_time(1)> +=item B SSL Connection Timer. -=item L|sess_id(1)> +=item B SSL Session Data Management. -=item L|smime(1)> +=item B S/MIME mail processing. -=item L|speed(1)> +=item B Algorithm Speed Measurement. -=item L|spkac(1)> +=item B SPKAC printing and generating utility. -=item L|srp(1)> +=item B Maintain SRP password file. -=item L|storeutl(1)> +=item B Utility to list and display certificates, keys, CRLs, etc. -=item L|ts(1)> +=item B Time Stamping Authority tool (client/server). -=item L|verify(1)> +=item B X.509 Certificate Verification. -=item L|version(1)> +=item B OpenSSL Version Information. -=item L|x509(1)> +=item B X.509 Certificate Data Management. @@ -376,31 +375,31 @@ SM3 Digest Base64 Encoding -=item B +=item B, B, B, B, B Blowfish Cipher -=item B +=item B, B CAST Cipher -=item B +=item B, B, B, B CAST5 Cipher -=item B +=item B, B, B, B, B, B, B, B, B DES Cipher -=item B +=item B, B, B, B, B, B Triple-DES Cipher -=item B +=item B, B, B, B, B IDEA Cipher -=item B +=item B, B, B, B, B RC2 Cipher @@ -408,7 +407,7 @@ RC2 Cipher RC4 Cipher -=item B +=item B, B, B, B, B RC5 Cipher diff --git a/doc/man1/passwd.pod b/doc/man1/passwd.pod index 6c3d811e..bdfba2a0 100644 --- a/doc/man1/passwd.pod +++ b/doc/man1/passwd.pod @@ -108,13 +108,17 @@ This can be used with a subsequent B<-rand> flag. =head1 EXAMPLES -B prints B. + % openssl passwd -crypt -salt xx password + xxj31ZMTZzkVA -B prints B<$1$xxxxxxxx$UYCIxa628.9qXjpQCjM4a.>. + % openssl passwd -1 -salt xxxxxxxx password + $1$xxxxxxxx$UYCIxa628.9qXjpQCjM4a. -B prints B<$apr1$xxxxxxxx$dxHfLAsjHkDRmG83UXe8K0>. + % openssl passwd -apr1 -salt xxxxxxxx password + $apr1$xxxxxxxx$dxHfLAsjHkDRmG83UXe8K0 -B prints B. + % openssl passwd -aixmd5 -salt xxxxxxxx password + xxxxxxxx$8Oaipk/GPKhC64w/YVeFD/ =head1 COPYRIGHT diff --git a/doc/man1/pkcs8.pod b/doc/man1/pkcs8.pod index 84a10e88..65101150 100644 --- a/doc/man1/pkcs8.pod +++ b/doc/man1/pkcs8.pod @@ -223,14 +223,14 @@ below. These algorithms were included in the original PKCS#5 v1.5 specification. They only offer 56 bits of protection since they both use DES. -=item B +=item B, B, B, B These algorithms are not mentioned in the original PKCS#5 v1.5 specification but they use the same key derivation algorithm and are supported by some software. They are mentioned in PKCS#5 v2.0. They use either 64 bit RC2 or 56 bit DES. -=item B +=item B, B, B, B, B, B These algorithms use the PKCS#12 password based encryption algorithm and allow strong encryption algorithms like triple DES or 128 bit RC2 to be used. diff --git a/doc/man1/rsa.pod b/doc/man1/rsa.pod index 835f8445..0280d07d 100644 --- a/doc/man1/rsa.pod +++ b/doc/man1/rsa.pod @@ -90,7 +90,7 @@ filename. The output file password source. For more information about the format of B see the B section in L. -=item B<-aes128|-aes192|-aes256|-aria128|-aria192|-aria256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea> +=item B<-aes128>, B<-aes192>, B<-aes256>, B<-aria128>, B<-aria192>, B<-aria256>, B<-camellia128>, B<-camellia192>, B<-camellia256>, B<-des>, B<-des3>, B<-idea> These options encrypt the private key with the specified cipher before outputting it. A pass phrase is prompted for. diff --git a/doc/man1/s_client.pod b/doc/man1/s_client.pod index 69bae942..7d92dd82 100644 --- a/doc/man1/s_client.pod +++ b/doc/man1/s_client.pod @@ -804,7 +804,7 @@ information whenever a session is renegotiated. =head1 SEE ALSO L, L, L, L, -L, L +L, L, L =head1 HISTORY diff --git a/doc/man1/s_server.pod b/doc/man1/s_server.pod index 2b7db637..5399096b 100644 --- a/doc/man1/s_server.pod +++ b/doc/man1/s_server.pod @@ -180,6 +180,8 @@ B B [B<-keylogfile outfile>] [B<-max_early_data int>] [B<-early_data>] +[B<-anti_replay>] +[B<-no_anti_replay>] =head1 DESCRIPTION @@ -709,6 +711,15 @@ greater than or equal to 0. Accept early data where possible. +=item B<-anti_replay>, B<-no_anti_replay> + +Switches replay protection on or off, respectively. Replay protection is on by +default unless overridden by a configuration file. When it is on, OpenSSL will +automatically detect if a session ticket has been used more than once, TLSv1.3 +has been negotiated, and early data is enabled on the server. A full handshake +is forced if a session ticket is used a second or subsequent time. Any early +data that was sent will be rejected. + =back =head1 CONNECTED COMMANDS @@ -798,7 +809,8 @@ unknown cipher suites a client says it supports. =head1 SEE ALSO L, L, L, L -L, L +L, +L, L =head1 HISTORY diff --git a/doc/man1/spkac.pod b/doc/man1/spkac.pod index 75b12d85..9ad03c12 100644 --- a/doc/man1/spkac.pod +++ b/doc/man1/spkac.pod @@ -116,11 +116,12 @@ Create an SPKAC using the challenge string "hello": Example of an SPKAC, (long lines split up for clarity): - SPKAC=MIG5MGUwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA1cCoq2Wa3Ixs47uI7F\ - PVwHVIPDx5yso105Y6zpozam135a8R0CpoRvkkigIyXfcCjiVi5oWk+6FfPaD03u\ - PFoQIDAQABFgVoZWxsbzANBgkqhkiG9w0BAQQFAANBAFpQtY/FojdwkJh1bEIYuc\ - 2EeM2KHTWPEepWYeawvHD0gQ3DngSC75YCWnnDdq+NQ3F+X4deMx9AaEglZtULwV\ - 4= + SPKAC=MIG5MGUwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA\ + 1cCoq2Wa3Ixs47uI7FPVwHVIPDx5yso105Y6zpozam135a\ + 8R0CpoRvkkigIyXfcCjiVi5oWk+6FfPaD03uPFoQIDAQAB\ + FgVoZWxsbzANBgkqhkiG9w0BAQQFAANBAFpQtY/FojdwkJ\ + h1bEIYuc2EeM2KHTWPEepWYeawvHD0gQ3DngSC75YCWnnD\ + dq+NQ3F+X4deMx9AaEglZtULwV4= =head1 NOTES diff --git a/doc/man1/ts.pod b/doc/man1/ts.pod index 3ae320f2..3ec6e0d9 100644 --- a/doc/man1/ts.pod +++ b/doc/man1/ts.pod @@ -557,10 +557,12 @@ OID section of the config file): Before generating a response a signing certificate must be created for the TSA that contains the B critical extended key usage extension -without any other key usage extensions. You can add the -'extendedKeyUsage = critical,timeStamping' line to the user certificate section -of the config file to generate a proper certificate. See L, -L, L for instructions. The examples +without any other key usage extensions. You can add this line to the +user certificate section of the config file to generate a proper certificate; + + extendedKeyUsage = critical,timeStamping + +See L, L, and L for instructions. The examples below assume that cacert.pem contains the certificate of the CA, tsacert.pem is the signing certificate issued by cacert.pem and tsakey.pem is the private key of the TSA. diff --git a/doc/man3/EVP_DigestInit.pod b/doc/man3/EVP_DigestInit.pod index 45c361e6..808d7964 100644 --- a/doc/man3/EVP_DigestInit.pod +++ b/doc/man3/EVP_DigestInit.pod @@ -3,11 +3,13 @@ =head1 NAME EVP_MD_CTX_new, EVP_MD_CTX_reset, EVP_MD_CTX_free, EVP_MD_CTX_copy_ex, -EVP_MD_CTX_ctrl, EVP_DigestInit_ex, EVP_DigestInit, EVP_DigestUpdate, +EVP_MD_CTX_ctrl, EVP_MD_CTX_set_flags, EVP_MD_CTX_clear_flags, +EVP_MD_CTX_test_flags, EVP_DigestInit_ex, EVP_DigestInit, EVP_DigestUpdate, EVP_DigestFinal_ex, EVP_DigestFinalXOF, EVP_DigestFinal, EVP_MD_CTX_copy, EVP_MD_type, EVP_MD_pkey_type, EVP_MD_size, EVP_MD_block_size, EVP_MD_CTX_md, EVP_MD_CTX_size, -EVP_MD_CTX_block_size, EVP_MD_CTX_type, EVP_md_null, +EVP_MD_CTX_block_size, EVP_MD_CTX_type, EVP_MD_CTX_md_data, +EVP_md_null, EVP_get_digestbyname, EVP_get_digestbynid, EVP_get_digestbyobj - EVP digest routines @@ -19,6 +21,9 @@ EVP_get_digestbyobj - EVP digest routines int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); void EVP_MD_CTX_free(EVP_MD_CTX *ctx); void EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void* p2); + void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); + void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); + int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl); int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt); @@ -41,6 +46,7 @@ EVP_get_digestbyobj - EVP digest routines int EVP_MD_CTX_size(const EVP_MD *ctx); int EVP_MD_CTX_block_size(const EVP_MD *ctx); int EVP_MD_CTX_type(const EVP_MD *ctx); + void *EVP_MD_CTX_md_data(const EVP_MD_CTX *ctx); const EVP_MD *EVP_md_null(void); @@ -72,6 +78,10 @@ Cleans up digest context B and frees up the space allocated to it. Performs digest-specific control actions on context B. +=item EVP_MD_CTX_set_flags(), EVP_MD_CTX_clear_flags(), EVP_MD_CTX_test_flags() + +Sets, clears and tests B flags. See L below for more information. + =item EVP_DigestInit_ex() Sets up digest context B to use a digest B from ENGINE B. @@ -140,6 +150,12 @@ Return the NID of the OBJECT IDENTIFIER representing the given message digest when passed an B structure. For example, C returns B. This function is normally used when setting ASN1 OIDs. +=item EVP_MD_CTX_md_data() + +Return the digest method private data for the passed B. +The space is allocated by OpenSSL and has the size originally set with +EVP_MD_meth_set_app_datasize(). + =item EVP_MD_CTX_md() Returns the B structure corresponding to the passed B. @@ -165,6 +181,38 @@ B structure respectively. =back +=head1 FLAGS + +EVP_MD_CTX_set_flags(), EVP_MD_CTX_clear_flags() and EVP_MD_CTX_test_flags() +can be used the manipulate and test these B flags: + +=over 4 + +=item EVP_MD_CTX_FLAG_ONESHOT + +This flag instructs the digest to optimize for one update only, if possible. + +=for comment EVP_MD_CTX_FLAG_CLEANED is internal, don't mention it + +=for comment EVP_MD_CTX_FLAG_REUSE is internal, don't mention it + +=for comment We currently avoid documenting flags that are only bit holder: +EVP_MD_CTX_FLAG_NON_FIPS_ALLOW, EVP_MD_CTX_FLAGS_PAD_* + +=item EVP_MD_CTX_FLAG_NO_INIT + +This flag instructs EVP_DigestInit() and similar not to initialise the +implementation specific data. + +=item EVP_MD_CTX_FLAG_FINALISE + +Some functions such as EVP_DigestSign only finalise copies of internal +contexts so additional data can be included after the finalisation call. +This is inefficient if this functionality is not required, and can be +disabled with this flag. + +=back + =head1 RETURN VALUES =over 4 diff --git a/doc/man3/SSL_CONF_cmd.pod b/doc/man3/SSL_CONF_cmd.pod index 4d3e9c2b..4edd49ca 100644 --- a/doc/man3/SSL_CONF_cmd.pod +++ b/doc/man3/SSL_CONF_cmd.pod @@ -211,6 +211,18 @@ that there will be no forward secrecy for the resumed session. enables strict mode protocol handling. Equivalent to setting B. +=item B<-anti_replay>, B<-no_anti_replay> + +Switches replay protection, on or off respectively. With replay protection on, +OpenSSL will automatically detect if a session ticket has been used more than +once, TLSv1.3 has been negotiated, and early data is enabled on the server. A +full handshake is forced if a session ticket is used a second or subsequent +time. Anti-Replay is on by default unless overridden by a configuration file and +is only used by servers. Anti-replay measures are required for compliance with +the TLSv1.3 specification. Some applications may be able to mitigate the replay +risks in other ways and in such cases the built-in OpenSSL functionality is not +required. Switching off anti-replay is equivalent to B. + =back =head1 SUPPORTED CONFIGURATION FILE COMMANDS @@ -441,6 +453,15 @@ middleboxes that do not understand TLSv1.3 will not drop the connection. This option is set by default. A future version of OpenSSL may not set this by default. Equivalent to B. +B: If set then OpenSSL will automatically detect if a session ticket +has been used more than once, TLSv1.3 has been negotiated, and early data is +enabled on the server. A full handshake is forced if a session ticket is used a +second or subsequent time. This option is set by default and is only used by +servers. Anti-replay measures are required to comply with the TLSv1.3 +specification. Some applications may be able to mitigate the replay risks in +other ways and in such cases the built-in OpenSSL functionality is not required. +Disabling anti-replay is equivalent to setting B. + =item B The B argument is a comma separated list of flags to set. diff --git a/doc/man3/SSL_CTX_set_options.pod b/doc/man3/SSL_CTX_set_options.pod index f04de32f..ae5ca1bd 100644 --- a/doc/man3/SSL_CTX_set_options.pod +++ b/doc/man3/SSL_CTX_set_options.pod @@ -226,6 +226,17 @@ this option is set or not CCS messages received from the peer will always be ignored in TLSv1.3. This option is set by default. To switch it off use SSL_clear_options(). A future version of OpenSSL may not set this by default. +=item SSL_OP_NO_ANTI_REPLAY + +By default, when a server is configured for early data (i.e., max_early_data > 0), +OpenSSL will switch on replay protection. See L for a +description of the replay protection feature. Anti-replay measures are required +to comply with the TLSv1.3 specification. Some applications may be able to +mitigate the replay risks in other ways and in such cases the built in OpenSSL +functionality is not required. Those applications can turn this feature off by +setting this option. This is a server-side opton only. It is ignored by +clients. + =back The following options no longer have any effect but their identifiers are diff --git a/doc/man3/SSL_read_early_data.pod b/doc/man3/SSL_read_early_data.pod index 6a76ec29..cf6f7579 100644 --- a/doc/man3/SSL_read_early_data.pod +++ b/doc/man3/SSL_read_early_data.pod @@ -10,7 +10,10 @@ SSL_SESSION_get_max_early_data, SSL_SESSION_set_max_early_data, SSL_write_early_data, SSL_read_early_data, -SSL_get_early_data_status +SSL_get_early_data_status, +SSL_allow_early_data_cb_fn, +SSL_CTX_set_allow_early_data_cb, +SSL_set_allow_early_data_cb - functions for sending and receiving early data =head1 SYNOPSIS @@ -30,6 +33,16 @@ SSL_get_early_data_status int SSL_get_early_data_status(const SSL *s); + + typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); + + void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); + void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + =head1 DESCRIPTION These functions are used to send and receive early data where TLSv1.3 has been @@ -186,6 +199,20 @@ In the event that the current maximum early data setting for the server is different to that originally specified in a session that a client is resuming with then the lower of the two values will apply. +Some server applications may wish to have more control over whether early data +is accepted or not, for example to mitigate replay risks (see L +below) or to decline early_data when the server is heavily loaded. The functions +SSL_CTX_set_allow_early_data_cb() and SSL_set_allow_early_data_cb() set a +callback which is called at a point in the handshake immediately before a +decision is made to accept or reject early data. The callback is provided with a +pointer to the user data argument that was provided when the callback was first +set. Returning 1 from the callback will allow early data and returning 0 will +reject it. Note that the OpenSSL library may reject early data for other reasons +in which case this callback will not get called. Notably, the built-in replay +protection feature will still be used even if a callback is present unless it +has been explicitly disabled using the SSL_OP_NO_ANTI_REPLAY option. See +L below. + =head1 NOTES The whole purpose of early data is to enable a client to start sending data to @@ -252,6 +279,12 @@ The OpenSSL replay protection does not apply to external Pre Shared Keys (PSKs) (e.g. see SSL_CTX_set_psk_find_session_callback(3)). Therefore extreme caution should be applied when combining external PSKs with early data. +Some applications may mitigate the replay risks in other ways. For those +applications it is possible to turn off the built-in replay protection feature +using the B option. See L for +details. Applications can also set a callback to make decisions about accepting +early data or not. See SSL_CTX_set_allow_early_data_cb() above for details. + =head1 RETURN VALUES SSL_write_early_data() returns 1 for success or 0 for failure. In the event of a diff --git a/doc/man3/X509_digest.pod b/doc/man3/X509_digest.pod index ee393450..36b89a66 100644 --- a/doc/man3/X509_digest.pod +++ b/doc/man3/X509_digest.pod @@ -28,6 +28,8 @@ PKCS7_ISSUER_AND_SERIAL_digest int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, unsigned char *md, unsigned int *len); + #include + int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, const EVP_MD *type, unsigned char *md, unsigned int *len); diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index 943a8d6c..bbcfb3c0 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h @@ -368,6 +368,12 @@ typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); */ # define SSL_OP_TLS_ROLLBACK_BUG 0x00800000U +/* + * Switches off automatic TLSv1.3 anti-replay protection for early data. This + * is a server-side option only (no effect on the client). + */ +# define SSL_OP_NO_ANTI_REPLAY 0x01000000U + # define SSL_OP_NO_SSLv3 0x02000000U # define SSL_OP_NO_TLSv1 0x04000000U # define SSL_OP_NO_TLSv1_2 0x08000000U @@ -2383,13 +2389,19 @@ int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); extern const char SSL_version_str[]; - - typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); +typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + # ifdef __cplusplus } # endif diff --git a/ssl/ssl_conf.c b/ssl/ssl_conf.c index 758f0129..9c202708 100644 --- a/ssl/ssl_conf.c +++ b/ssl/ssl_conf.c @@ -383,7 +383,8 @@ static int cmd_Options(SSL_CONF_CTX *cctx, const char *value) SSL_FLAG_TBL("NoRenegotiation", SSL_OP_NO_RENEGOTIATION), SSL_FLAG_TBL("AllowNoDHEKEX", SSL_OP_ALLOW_NO_DHE_KEX), SSL_FLAG_TBL("PrioritizeChaCha", SSL_OP_PRIORITIZE_CHACHA), - SSL_FLAG_TBL("MiddleboxCompat", SSL_OP_ENABLE_MIDDLEBOX_COMPAT) + SSL_FLAG_TBL("MiddleboxCompat", SSL_OP_ENABLE_MIDDLEBOX_COMPAT), + SSL_FLAG_TBL_INV("AntiReplay", SSL_OP_NO_ANTI_REPLAY) }; if (value == NULL) return -3; @@ -626,6 +627,8 @@ static const ssl_conf_cmd_tbl ssl_conf_cmds[] = { SSL_CONF_CMD_SWITCH("prioritize_chacha", SSL_CONF_FLAG_SERVER), SSL_CONF_CMD_SWITCH("strict", 0), SSL_CONF_CMD_SWITCH("no_middlebox", 0), + SSL_CONF_CMD_SWITCH("anti_replay", SSL_CONF_FLAG_SERVER), + SSL_CONF_CMD_SWITCH("no_anti_replay", SSL_CONF_FLAG_SERVER), SSL_CONF_CMD_STRING(SignatureAlgorithms, "sigalgs", 0), SSL_CONF_CMD_STRING(ClientSignatureAlgorithms, "client_sigalgs", 0), SSL_CONF_CMD_STRING(Curves, "curves", 0), @@ -671,7 +674,7 @@ static const ssl_conf_cmd_tbl ssl_conf_cmds[] = { SSL_CONF_TYPE_FILE), #endif SSL_CONF_CMD_STRING(RecordPadding, "record_padding", 0), - SSL_CONF_CMD_STRING(NumTickets, "num_tickets", SSL_CONF_FLAG_SERVER) + SSL_CONF_CMD_STRING(NumTickets, "num_tickets", SSL_CONF_FLAG_SERVER), }; /* Supported switches: must match order of switches in ssl_conf_cmds */ @@ -704,6 +707,10 @@ static const ssl_switch_tbl ssl_cmd_switches[] = { {SSL_CERT_FLAG_TLS_STRICT, SSL_TFLAG_CERT}, /* strict */ /* no_middlebox */ {SSL_OP_ENABLE_MIDDLEBOX_COMPAT, SSL_TFLAG_INV}, + /* anti_replay */ + {SSL_OP_NO_ANTI_REPLAY, SSL_TFLAG_INV}, + /* no_anti_replay */ + {SSL_OP_NO_ANTI_REPLAY, 0}, }; static int ssl_conf_cmd_skip_prefix(SSL_CONF_CTX *cctx, const char **pcmd) diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 1260b1df..1dbc3613 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -805,6 +805,9 @@ SSL *SSL_new(SSL_CTX *ctx) s->key_update = SSL_KEY_UPDATE_NONE; + s->allow_early_data_cb = ctx->allow_early_data_cb; + s->allow_early_data_cb_data = ctx->allow_early_data_cb_data; + if (!s->method->ssl_new(s)) goto err; @@ -3447,7 +3450,8 @@ void ssl_update_cache(SSL *s, int mode) if ((i & SSL_SESS_CACHE_NO_INTERNAL_STORE) == 0 && (!SSL_IS_TLS13(s) || !s->server - || s->max_early_data > 0 + || (s->max_early_data > 0 + && (s->options & SSL_OP_NO_ANTI_REPLAY) == 0) || s->session_ctx->remove_session_cb != NULL || (s->options & SSL_OP_NO_TICKET) != 0)) SSL_CTX_add_session(s->session_ctx, s->session); @@ -5550,3 +5554,19 @@ int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, ctx->ticket_cb_data = arg; return 1; } + +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg) +{ + ctx->allow_early_data_cb = cb; + ctx->allow_early_data_cb_data = arg; +} + +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg) +{ + s->allow_early_data_cb = cb; + s->allow_early_data_cb_data = arg; +} diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h index cf5e2520..53dbbd59 100644 --- a/ssl/ssl_locl.h +++ b/ssl/ssl_locl.h @@ -1084,6 +1084,10 @@ struct ssl_ctx_st { /* The number of TLS1.3 tickets to automatically send */ size_t num_tickets; + + /* Callback to determine if early_data is acceptable or not */ + SSL_allow_early_data_cb_fn allow_early_data_cb; + void *allow_early_data_cb_data; }; struct ssl_st { @@ -1242,6 +1246,7 @@ struct ssl_st { # endif SSL_psk_find_session_cb_func psk_find_session_cb; SSL_psk_use_session_cb_func psk_use_session_cb; + SSL_CTX *ctx; /* Verified chain of peer */ STACK_OF(X509) *verified_chain; @@ -1461,6 +1466,10 @@ struct ssl_st { size_t sent_tickets; /* The next nonce value to use when we send a ticket on this connection */ uint64_t next_ticket_nonce; + + /* Callback to determine if early_data is acceptable or not */ + SSL_allow_early_data_cb_fn allow_early_data_cb; + void *allow_early_data_cb_data; }; /* diff --git a/ssl/ssl_txt.c b/ssl/ssl_txt.c index 3856491e..cf6e4c3c 100644 --- a/ssl/ssl_txt.c +++ b/ssl/ssl_txt.c @@ -33,10 +33,11 @@ int SSL_SESSION_print(BIO *bp, const SSL_SESSION *x) { size_t i; const char *s; - int istls13 = (x->ssl_version == TLS1_3_VERSION); + int istls13; if (x == NULL) goto err; + istls13 = (x->ssl_version == TLS1_3_VERSION); if (BIO_puts(bp, "SSL-Session:\n") <= 0) goto err; s = ssl_protocol_to_string(x->ssl_version); diff --git a/ssl/statem/extensions.c b/ssl/statem/extensions.c index 496039e3..5309b127 100644 --- a/ssl/statem/extensions.c +++ b/ssl/statem/extensions.c @@ -1622,7 +1622,10 @@ static int final_early_data(SSL *s, unsigned int context, int sent) || s->session->ext.tick_identity != 0 || s->early_data_state != SSL_EARLY_DATA_ACCEPTING || !s->ext.early_data_ok - || s->hello_retry_request != SSL_HRR_NONE) { + || s->hello_retry_request != SSL_HRR_NONE + || (s->ctx->allow_early_data_cb != NULL + && !s->ctx->allow_early_data_cb(s, + s->ctx->allow_early_data_cb_data))) { s->ext.early_data = SSL_EARLY_DATA_REJECTED; } else { s->ext.early_data = SSL_EARLY_DATA_ACCEPTED; diff --git a/ssl/statem/extensions_srvr.c b/ssl/statem/extensions_srvr.c index f58ed0b5..ab38a4f1 100644 --- a/ssl/statem/extensions_srvr.c +++ b/ssl/statem/extensions_srvr.c @@ -1165,7 +1165,8 @@ int tls_parse_ctos_psk(SSL *s, PACKET *pkt, unsigned int context, X509 *x, * is no point in using full stateless tickets. */ if ((s->options & SSL_OP_NO_TICKET) != 0 - || s->max_early_data > 0) + || (s->max_early_data > 0 + && (s->options & SSL_OP_NO_ANTI_REPLAY) == 0)) ret = tls_get_stateful_ticket(s, &identity, &sess); else ret = tls_decrypt_ticket(s, PACKET_data(&identity), @@ -1189,6 +1190,7 @@ int tls_parse_ctos_psk(SSL *s, PACKET *pkt, unsigned int context, X509 *x, /* Check for replay */ if (s->max_early_data > 0 + && (s->options & SSL_OP_NO_ANTI_REPLAY) == 0 && !SSL_CTX_remove_session(s->session_ctx, sess)) { SSL_SESSION_free(sess); sess = NULL; diff --git a/ssl/statem/statem_clnt.c b/ssl/statem/statem_clnt.c index ff353842..88c34376 100644 --- a/ssl/statem/statem_clnt.c +++ b/ssl/statem/statem_clnt.c @@ -2591,6 +2591,7 @@ MSG_PROCESS_RETURN tls_process_new_session_ticket(SSL *s, PACKET *pkt) */ if (SSL_IS_TLS13(s) || s->session->session_id_length > 0) { SSL_SESSION *new_sess; + /* * We reused an existing session, so we need to replace it with a new * one @@ -2602,6 +2603,16 @@ MSG_PROCESS_RETURN tls_process_new_session_ticket(SSL *s, PACKET *pkt) goto err; } + if ((s->session_ctx->session_cache_mode & SSL_SESS_CACHE_CLIENT) != 0 + && !SSL_IS_TLS13(s)) { + /* + * In TLSv1.2 and below the arrival of a new tickets signals that + * any old ticket we were using is now out of date, so we remove the + * old session from the cache. We carry on if this fails + */ + SSL_CTX_remove_session(s->session_ctx, s->session); + } + SSL_SESSION_free(s->session); s->session = new_sess; } @@ -2671,6 +2682,7 @@ MSG_PROCESS_RETURN tls_process_new_session_ticket(SSL *s, PACKET *pkt) goto err; } s->session->session_id_length = sess_len; + s->session->not_resumable = 0; /* This is a standalone message in TLSv1.3, so there is no more to read */ if (SSL_IS_TLS13(s)) { diff --git a/ssl/statem/statem_lib.c b/ssl/statem/statem_lib.c index 38a16847..68dd92a7 100644 --- a/ssl/statem/statem_lib.c +++ b/ssl/statem/statem_lib.c @@ -1068,12 +1068,21 @@ WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs, int stop) dtls1_start_timer(s); } } else { - /* - * In TLSv1.3 we update the cache as part of processing the - * NewSessionTicket - */ - if (!SSL_IS_TLS13(s)) + if (SSL_IS_TLS13(s)) { + /* + * We encourage applications to only use TLSv1.3 tickets once, + * so we remove this one from the cache. + */ + if ((s->session_ctx->session_cache_mode + & SSL_SESS_CACHE_CLIENT) != 0) + SSL_CTX_remove_session(s->session_ctx, s->session); + } else { + /* + * In TLSv1.3 we update the cache as part of processing the + * NewSessionTicket + */ ssl_update_cache(s, SSL_SESS_CACHE_CLIENT); + } if (s->hit) CRYPTO_atomic_add(&s->session_ctx->stats.sess_hit, 1, &discard, s->session_ctx->lock); diff --git a/ssl/statem/statem_srvr.c b/ssl/statem/statem_srvr.c index d0a16004..92ff9319 100644 --- a/ssl/statem/statem_srvr.c +++ b/ssl/statem/statem_srvr.c @@ -3130,14 +3130,13 @@ static int tls_process_cke_dhe(SSL *s, PACKET *pkt) SSL_R_BN_LIB); goto err; } + cdh = EVP_PKEY_get0_DH(ckey); pub_key = BN_bin2bn(data, i, NULL); - - if (pub_key == NULL || !DH_set0_key(cdh, pub_key, NULL)) { + if (pub_key == NULL || cdh == NULL || !DH_set0_key(cdh, pub_key, NULL)) { SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PROCESS_CKE_DHE, ERR_R_INTERNAL_ERROR); - if (pub_key != NULL) - BN_free(pub_key); + BN_free(pub_key); goto err; } @@ -4088,8 +4087,10 @@ int tls_construct_new_session_ticket(SSL *s, WPACKET *pkt) * SSL_OP_NO_TICKET is set - we are caching tickets anyway so there * is no point in using full stateless tickets. */ - if (((s->options & SSL_OP_NO_TICKET) != 0 || s->max_early_data > 0) - && SSL_IS_TLS13(s)) { + if (SSL_IS_TLS13(s) + && ((s->options & SSL_OP_NO_TICKET) != 0 + || (s->max_early_data > 0 + && (s->options & SSL_OP_NO_ANTI_REPLAY) == 0))) { if (!construct_stateful_ticket(s, pkt, age_add_u.age_add, tick_nonce)) { /* SSLfatal() already called */ goto err; diff --git a/ssl/t1_lib.c b/ssl/t1_lib.c index 1826dd2b..abf523e4 100644 --- a/ssl/t1_lib.c +++ b/ssl/t1_lib.c @@ -2309,13 +2309,16 @@ DH *ssl_get_auto_dh(SSL *s) if (dhp == NULL) return NULL; g = BN_new(); - if (g != NULL) - BN_set_word(g, 2); + if (g == NULL || !BN_set_word(g, 2)) { + DH_free(dhp); + BN_free(g); + return NULL; + } if (dh_secbits >= 192) p = BN_get_rfc3526_prime_8192(NULL); else p = BN_get_rfc3526_prime_3072(NULL); - if (p == NULL || g == NULL || !DH_set0_pqg(dhp, p, NULL, g)) { + if (p == NULL || !DH_set0_pqg(dhp, p, NULL, g)) { DH_free(dhp); BN_free(p); BN_free(g); diff --git a/test/conf_include_test.c b/test/conf_include_test.c index 7f99d3b1..ba79d2c2 100644 --- a/test/conf_include_test.c +++ b/test/conf_include_test.c @@ -123,6 +123,36 @@ static int test_load_config(void) return 1; } +static int test_check_null_numbers(void) +{ +#if defined(_BSD_SOURCE) \ + || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L) \ + || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 600) + long val = 0; + + /* Verify that a NULL config with a present environment variable returns + * success and the value. + */ + if (!TEST_int_eq(setenv("FNORD", "123", 1), 0) + || !TEST_true(NCONF_get_number(NULL, "missing", "FNORD", &val)) + || !TEST_long_eq(val, 123)) { + TEST_note("environment variable with NULL conf failed"); + return 0; + } + + /* + * Verify that a NULL config with a missing envrionment variable returns + * a failure code. + */ + if (!TEST_int_eq(unsetenv("FNORD"), 0) + || !TEST_false(NCONF_get_number(NULL, "missing", "FNORD", &val))) { + TEST_note("missing environment variable with NULL conf failed"); + return 0; + } +#endif + return 1; +} + int setup_tests(void) { const char *conf_file; @@ -150,6 +180,7 @@ int setup_tests(void) change_path(conf_file); ADD_TEST(test_load_config); + ADD_TEST(test_check_null_numbers); return 1; } diff --git a/test/recipes/30-test_evp.t b/test/recipes/30-test_evp.t index b4982440..4fca3662 100644 --- a/test/recipes/30-test_evp.t +++ b/test/recipes/30-test_evp.t @@ -15,7 +15,7 @@ use OpenSSL::Test qw/:DEFAULT data_file/; setup("test_evp"); my @files = ( "evpciph.txt", "evpdigest.txt", "evpencod.txt", "evpkdf.txt", - "evpmac.txt", "evppbe.txt", "evppkey.txt" ); + "evpmac.txt", "evppbe.txt", "evppkey.txt", "evppkey_ecc.txt" ); plan tests => scalar(@files); diff --git a/test/recipes/30-test_evp_data/evpdigest.txt b/test/recipes/30-test_evp_data/evpdigest.txt index c0b9d2d4..ae3f7e6a 100644 --- a/test/recipes/30-test_evp_data/evpdigest.txt +++ b/test/recipes/30-test_evp_data/evpdigest.txt @@ -257,6 +257,20 @@ Digest = MD5 Input = 3132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930 Output = 57edf4a22be3c955ac49da2e2107b67a +Title = MD5-SHA1 + +Digest = MD5-SHA1 +Input = +Output = d41d8cd98f00b204e9800998ecf8427eda39a3ee5e6b4b0d3255bfef95601890afd80709 + +Digest = MD5-SHA1 +Input = "abc" +Output = 900150983cd24fb0d6963f7d28e17f72a9993e364706816aba3e25717850c26c9cd0d89d + +Digest = MD5-SHA1 +Input = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +Output = 8215ef0796a20bcaaae116d3876c664a84983e441c3bd26ebaae4aa1f95129e5e54670f1 + Title = MD4 tests Digest = MD4 diff --git a/test/recipes/30-test_evp_data/evppkey_ecc.txt b/test/recipes/30-test_evp_data/evppkey_ecc.txt new file mode 100644 index 00000000..685af179 --- /dev/null +++ b/test/recipes/30-test_evp_data/evppkey_ecc.txt @@ -0,0 +1,4366 @@ +Title=brainpoolP160r1 curve tests + +PrivateKey=ALICE_cf_brainpoolP160r1 +-----BEGIN PRIVATE KEY----- +MDYCAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEBBBswGQIBAQQUo0UiM85512uHsr2DkIOYgyxSQxk= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP160r1_PUB +-----BEGIN PUBLIC KEY----- +MEIwFAYHKoZIzj0CAQYJKyQDAwIIAQEBAyoABI7OZhLqr+8c3D9Tn6++CqQtc9jG5a1COb1okeZb +wKJUkmWn6NvNCQQ= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP160r1:ALICE_cf_brainpoolP160r1_PUB + +PrivateKey=BOB_cf_brainpoolP160r1 +-----BEGIN PRIVATE KEY----- +MDYCAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEBBBswGQIBAQQUmr0Vq3Z/feXq9tg9s8dxJXne1dU= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP160r1_PUB +-----BEGIN PUBLIC KEY----- +MEIwFAYHKoZIzj0CAQYJKyQDAwIIAQEBAyoABAu+ovBXBFQuw3Rt9qeImT6mLh9rerLFnTRL0+LH +sptS1Mbd0R4+5HM= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP160r1:BOB_cf_brainpoolP160r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP160r1 +PeerKey=BOB_cf_brainpoolP160r1_PUB +SharedSecret=2e75cb6a8f13951b437e04a0ed1d714a610036cc + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP160r1 +PeerKey=ALICE_cf_brainpoolP160r1_PUB +SharedSecret=2e75cb6a8f13951b437e04a0ed1d714a610036cc + +Title=brainpoolP160t1 curve tests + +PrivateKey=ALICE_cf_brainpoolP160t1 +-----BEGIN PRIVATE KEY----- +MDYCAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQECBBswGQIBAQQU1P/o5GQx5PA0kQoiwUtaXBUASUY= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP160t1_PUB +-----BEGIN PUBLIC KEY----- +MEIwFAYHKoZIzj0CAQYJKyQDAwIIAQECAyoABANetsUNsxVmDo7X4LQ9yPYTcjN1HvLTo9GEEQtV +lG71NyzLPQwPDwM= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP160t1:ALICE_cf_brainpoolP160t1_PUB + +PrivateKey=BOB_cf_brainpoolP160t1 +-----BEGIN PRIVATE KEY----- +MDYCAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQECBBswGQIBAQQUck4Sh9X3JjSUIRoxxKv8qLM6Ijc= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP160t1_PUB +-----BEGIN PUBLIC KEY----- +MEIwFAYHKoZIzj0CAQYJKyQDAwIIAQECAyoABEtd7DRUMYXeoxhxpWgPz/esQkXtoTAAune8CAAo +HqNNlR11VDctfkw= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP160t1:BOB_cf_brainpoolP160t1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP160t1 +PeerKey=BOB_cf_brainpoolP160t1_PUB +SharedSecret=6ea603a6a1a83812b967c83ef1867bd807be761e + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP160t1 +PeerKey=ALICE_cf_brainpoolP160t1_PUB +SharedSecret=6ea603a6a1a83812b967c83ef1867bd807be761e + +Title=brainpoolP192r1 curve tests + +PrivateKey=ALICE_cf_brainpoolP192r1 +-----BEGIN PRIVATE KEY----- +MDoCAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEDBB8wHQIBAQQYlF5JxzV9Doezn3hLoiidvy5TnIA7 +aR+j +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP192r1_PUB +-----BEGIN PUBLIC KEY----- +MEowFAYHKoZIzj0CAQYJKyQDAwIIAQEDAzIABELUMqBZrH66DIJ1a3a42k86THdH1DevigK0dc57 +8XEZ3HcuSQ+ycrMmit1PUQItbg== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP192r1:ALICE_cf_brainpoolP192r1_PUB + +PrivateKey=BOB_cf_brainpoolP192r1 +-----BEGIN PRIVATE KEY----- +MDoCAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEDBB8wHQIBAQQYjdu95CL1DQMGpsOmsfYOAjF5cW99 +bQie +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP192r1_PUB +-----BEGIN PUBLIC KEY----- +MEowFAYHKoZIzj0CAQYJKyQDAwIIAQEDAzIABInqyC1mAfyF7LU5tX/dRF5S/S9uPlQjNAhTRP6/ +/kAbKsXmABQXFeM0+P3hMw4UxQ== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP192r1:BOB_cf_brainpoolP192r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP192r1 +PeerKey=BOB_cf_brainpoolP192r1_PUB +SharedSecret=2b34396d02a40df0b9f8f9c0b8623be05b41249fbd69e02a + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP192r1 +PeerKey=ALICE_cf_brainpoolP192r1_PUB +SharedSecret=2b34396d02a40df0b9f8f9c0b8623be05b41249fbd69e02a + +Title=brainpoolP192t1 curve tests + +PrivateKey=ALICE_cf_brainpoolP192t1 +-----BEGIN PRIVATE KEY----- +MDoCAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEEBB8wHQIBAQQYKkFNgJ5sJKNIyYPK1h+gdPw04bxa +zIV7 +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP192t1_PUB +-----BEGIN PUBLIC KEY----- +MEowFAYHKoZIzj0CAQYJKyQDAwIIAQEEAzIABAzDb+niXBQFn9f0zXf8z+kfdBIYTws8FSfdWFdU +NGo4haY9+fL8D40kNNShgBnlKw== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP192t1:ALICE_cf_brainpoolP192t1_PUB + +PrivateKey=BOB_cf_brainpoolP192t1 +-----BEGIN PRIVATE KEY----- +MDoCAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEEBB8wHQIBAQQYFpxTrRJBEpyCePM20Fmw0uYPoxTm +T/sq +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP192t1_PUB +-----BEGIN PUBLIC KEY----- +MEowFAYHKoZIzj0CAQYJKyQDAwIIAQEEAzIABC6CPE1t5PwHpXSS1u4R0JTs1IeDW8hiqarIn3pM +I9wh+oCRjVcqvB4WDaql1bHCYg== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP192t1:BOB_cf_brainpoolP192t1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP192t1 +PeerKey=BOB_cf_brainpoolP192t1_PUB +SharedSecret=84049068441a342d7c2951ff159cdc9d05c4bddf2a6e6309 + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP192t1 +PeerKey=ALICE_cf_brainpoolP192t1_PUB +SharedSecret=84049068441a342d7c2951ff159cdc9d05c4bddf2a6e6309 + +Title=brainpoolP224r1 curve tests + +PrivateKey=ALICE_cf_brainpoolP224r1 +-----BEGIN PRIVATE KEY----- +MD4CAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEFBCMwIQIBAQQcHhlSkNTFJbZSy79CADDwo855nH2+ +cWxwSl6BpQ== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP224r1_PUB +-----BEGIN PUBLIC KEY----- +MFIwFAYHKoZIzj0CAQYJKyQDAwIIAQEFAzoABBF4+KObaB0yJTPHPrCN6EOnr5M8zKb5CHa7SSyL +4L9nRjgA8TfoU03LQsrtE9beREkxK3EHc25Z +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP224r1:ALICE_cf_brainpoolP224r1_PUB + +PrivateKey=BOB_cf_brainpoolP224r1 +-----BEGIN PRIVATE KEY----- +MD4CAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEFBCMwIQIBAQQczslMgGENRTriMWvDfGrM/ilLpzy0 +Js79UiVzLA== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP224r1_PUB +-----BEGIN PUBLIC KEY----- +MFIwFAYHKoZIzj0CAQYJKyQDAwIIAQEFAzoABIGGu4+PPMwOihplm2tLO7dLcDqXZB1MQHloOU8a +taeDvYHIck4z08+1DATvPqpIDzyn9WtXRqmG +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP224r1:BOB_cf_brainpoolP224r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP224r1 +PeerKey=BOB_cf_brainpoolP224r1_PUB +SharedSecret=477240c0587dea6aecfcac5a154d7ba3a5d4eb1ab30a69012d4401de + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP224r1 +PeerKey=ALICE_cf_brainpoolP224r1_PUB +SharedSecret=477240c0587dea6aecfcac5a154d7ba3a5d4eb1ab30a69012d4401de + +Title=brainpoolP224t1 curve tests + +PrivateKey=ALICE_cf_brainpoolP224t1 +-----BEGIN PRIVATE KEY----- +MD4CAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEGBCMwIQIBAQQca9rhmcgHV6etILVB9ccK2jIFXw4N +YrvlljcGFw== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP224t1_PUB +-----BEGIN PUBLIC KEY----- +MFIwFAYHKoZIzj0CAQYJKyQDAwIIAQEGAzoABHA9XoULjM967710RPgT1ICW0b+y9pFpm2yCUq2m +kSiy/JZvuWXhTJ+KmXGnAOTIlyiOUG8tZm39 +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP224t1:ALICE_cf_brainpoolP224t1_PUB + +PrivateKey=BOB_cf_brainpoolP224t1 +-----BEGIN PRIVATE KEY----- +MD4CAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEGBCMwIQIBAQQcFaiqaheY0xBo5lUY8hOXMUICdOAu +NWP/Uw3l+Q== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP224t1_PUB +-----BEGIN PUBLIC KEY----- +MFIwFAYHKoZIzj0CAQYJKyQDAwIIAQEGAzoABLvPkrvyCeS/QdTX5D/AFfF0lTuPpXhSRPKocViS +nUIZAEziCuOsgx+BqAOxNg+CN/tNzHsG1srf +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP224t1:BOB_cf_brainpoolP224t1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP224t1 +PeerKey=BOB_cf_brainpoolP224t1_PUB +SharedSecret=2c8dd0dbf3a62a202150e12443461d348be57bc58db0f2f7d8938933 + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP224t1 +PeerKey=ALICE_cf_brainpoolP224t1_PUB +SharedSecret=2c8dd0dbf3a62a202150e12443461d348be57bc58db0f2f7d8938933 + +Title=brainpoolP256r1 curve tests + +PrivateKey=ALICE_cf_brainpoolP256r1 +-----BEGIN PRIVATE KEY----- +MEICAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEHBCcwJQIBAQQgcH7I5THTXm+bu+vwtyNt+XBxk/uJ +R5V/zzRyMoXjuek= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP256r1_PUB +-----BEGIN PUBLIC KEY----- +MFowFAYHKoZIzj0CAQYJKyQDAwIIAQEHA0IABDFYVAzLX03nHXeFY7aJspsp525bbgzfnT68kJXB +HhChZmPaa5BAV5Cn4DXJ5HQ5N/V8Z8Dz0aux0SWtl6ctENM= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP256r1:ALICE_cf_brainpoolP256r1_PUB + +PrivateKey=BOB_cf_brainpoolP256r1 +-----BEGIN PRIVATE KEY----- +MEICAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEHBCcwJQIBAQQgDEj/wLk/4z4Wcv8rOc9lNnRQ6hpr +XfiuUSRqgedZkRU= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP256r1_PUB +-----BEGIN PUBLIC KEY----- +MFowFAYHKoZIzj0CAQYJKyQDAwIIAQEHA0IABHJdRWXtaxwI0AdvDXEk+a6XuQp72Zi+wxCrxFFW +NgJbmH0yr4jDklp4oiC2UHkapvT6XanGMKFo2ZSziltas0A= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP256r1:BOB_cf_brainpoolP256r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP256r1 +PeerKey=BOB_cf_brainpoolP256r1_PUB +SharedSecret=2fdd9d97efdcba3f5b181df53331db0ee42a3b1072147325ce8521dbaeafc3e4 + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP256r1 +PeerKey=ALICE_cf_brainpoolP256r1_PUB +SharedSecret=2fdd9d97efdcba3f5b181df53331db0ee42a3b1072147325ce8521dbaeafc3e4 + +Title=brainpoolP256t1 curve tests + +PrivateKey=ALICE_cf_brainpoolP256t1 +-----BEGIN PRIVATE KEY----- +MEICAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEIBCcwJQIBAQQgBDlYKiUEsm+tEN/DDQBhlWKJhF4J +We+4fqVSaPNT3VY= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP256t1_PUB +-----BEGIN PUBLIC KEY----- +MFowFAYHKoZIzj0CAQYJKyQDAwIIAQEIA0IABE6XKfvmlGKrXKN/FHhW9cMThPFUIq6Au3cCujPI +rHejQQJnsz9mSRBtzRkMM1abUc4Mf9xhkWbrT+QuJ3FcLWI= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP256t1:ALICE_cf_brainpoolP256t1_PUB + +PrivateKey=BOB_cf_brainpoolP256t1 +-----BEGIN PRIVATE KEY----- +MEICAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEIBCcwJQIBAQQgDUCTqTrVwouIU3hFoO3hwiME17PF +X7ntzOWKS2ebqGs= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP256t1_PUB +-----BEGIN PUBLIC KEY----- +MFowFAYHKoZIzj0CAQYJKyQDAwIIAQEIA0IABBwxGpomQmgqgsUYHmpYt3qGKRVT/pJfyU+lpLXi +/XAibEp/IvX3oFMEolSoy39poO6Zkq6npAniBqer+bS9Jpw= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP256t1:BOB_cf_brainpoolP256t1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP256t1 +PeerKey=BOB_cf_brainpoolP256t1_PUB +SharedSecret=7f177af329a4b377aea6e80bddf14f09c17c4fe81598703898fb62c929cbff04 + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP256t1 +PeerKey=ALICE_cf_brainpoolP256t1_PUB +SharedSecret=7f177af329a4b377aea6e80bddf14f09c17c4fe81598703898fb62c929cbff04 + +Title=brainpoolP320r1 curve tests + +PrivateKey=ALICE_cf_brainpoolP320r1 +-----BEGIN PRIVATE KEY----- +MEoCAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEJBC8wLQIBAQQophG1zB+U2lRdetiZlk9C4+q7APJ9 +xqGQ0+GPq68+WmyZon1lDRQ5/g== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP320r1_PUB +-----BEGIN PUBLIC KEY----- +MGowFAYHKoZIzj0CAQYJKyQDAwIIAQEJA1IABM9TaT9Q2j+VTlQ1pfcXx9SjlU1fEk0RvEbaY1O8 +pq8OgkQeulcgSXiI1rJI0wjV/qJoi0coZUHhsJ7bXmdO8vSTdgCMbavZScCkN6iFsALm +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP320r1:ALICE_cf_brainpoolP320r1_PUB + +PrivateKey=BOB_cf_brainpoolP320r1 +-----BEGIN PRIVATE KEY----- +MEoCAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEJBC8wLQIBAQQoO6MtFhs8dwul0iRbyfssxtFF6Ubt +q2oHlzvkFL5q4uLSY7pRcDz4vw== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP320r1_PUB +-----BEGIN PUBLIC KEY----- +MGowFAYHKoZIzj0CAQYJKyQDAwIIAQEJA1IABM50yDpoBMhirlHQqjMmVj/KZR0dfvmudoDt02qY +3lKei94evfTHmPG/9BjMYQGQcRM4CDGHR0iUIUJa99e/rxj9IguPkkNiAmDZQaKsqmKB +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP320r1:BOB_cf_brainpoolP320r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP320r1 +PeerKey=BOB_cf_brainpoolP320r1_PUB +SharedSecret=4ee386c231d0a7c9bb6dc05362f56ca70bf7ba5dcb66d8c4574c0497fdab6a5b79818a64ff5dc87e + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP320r1 +PeerKey=ALICE_cf_brainpoolP320r1_PUB +SharedSecret=4ee386c231d0a7c9bb6dc05362f56ca70bf7ba5dcb66d8c4574c0497fdab6a5b79818a64ff5dc87e + +Title=brainpoolP320t1 curve tests + +PrivateKey=ALICE_cf_brainpoolP320t1 +-----BEGIN PRIVATE KEY----- +MEoCAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEKBC8wLQIBAQQoMsI2lsl5Sj0I4A3J0I5XStMSLT4P +hMxwrbFdtKQh+At6RN2s12W4Kg== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP320t1_PUB +-----BEGIN PUBLIC KEY----- +MGowFAYHKoZIzj0CAQYJKyQDAwIIAQEKA1IABAvtZgehjOIdjsYKMcK08LaS8zVb6znYb6Qa9Fzf +LhLUSH5S728KJHWXMh7RqZMI3yTC5I0ESqB0CvG5N0hR+3y8L3eQJisCNdnzAgMyy0ab +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP320t1:ALICE_cf_brainpoolP320t1_PUB + +PrivateKey=BOB_cf_brainpoolP320t1 +-----BEGIN PRIVATE KEY----- +MEoCAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEKBC8wLQIBAQQoNtZiGbwSl0NNHBmTaJKf7/VMqZjo +yWavjg6CPa6ZgpKRR7vIQt5d9Q== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP320t1_PUB +-----BEGIN PUBLIC KEY----- +MGowFAYHKoZIzj0CAQYJKyQDAwIIAQEKA1IABHlS/OtqhHctabDCsDexScvQ2DGXhBuypaEeKOUq +vbLUovatBoreEj1j5YrOl9mKpd9Hj6YqYGWH+7KKjua+5DBn9rlxlmmkst+gb+vm3UE/ +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP320t1:BOB_cf_brainpoolP320t1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP320t1 +PeerKey=BOB_cf_brainpoolP320t1_PUB +SharedSecret=079d62bad81ceeab9f213818faf249f7b29b87a81b56a33b774b2631860f90a25f5377da504cb619 + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP320t1 +PeerKey=ALICE_cf_brainpoolP320t1_PUB +SharedSecret=079d62bad81ceeab9f213818faf249f7b29b87a81b56a33b774b2631860f90a25f5377da504cb619 + +Title=brainpoolP384r1 curve tests + +PrivateKey=ALICE_cf_brainpoolP384r1 +-----BEGIN PRIVATE KEY----- +MFICAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQELBDcwNQIBAQQwUW3EKrK8Rr80Jn5wwvTLC+HDTApA +ndycbRYiQkew7SgijhNO+cV0pE0sNpMZY+Wo +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP384r1_PUB +-----BEGIN PUBLIC KEY----- +MHowFAYHKoZIzj0CAQYJKyQDAwIIAQELA2IABBvE/fg0tIrsrIiAL07MlREd5zYk52mW7oQ+jPky +PmGeUoZq1LtpEzQCE1uuruOuyQH1M2c7flVA8Gh3IbSCupwVBCR2QObolwk1w5qK/l/KR26tMeXI +qL2Sy85NCUpMDw== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP384r1:ALICE_cf_brainpoolP384r1_PUB + +PrivateKey=BOB_cf_brainpoolP384r1 +-----BEGIN PRIVATE KEY----- +MFICAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQELBDcwNQIBAQQwdG7bSygpM2GpxDPAb4hOTtFZrP2n +qbyf7v3jFe8/ERpzREPcSntkNDyu/iAsmQKj +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP384r1_PUB +-----BEGIN PUBLIC KEY----- +MHowFAYHKoZIzj0CAQYJKyQDAwIIAQELA2IABIIxQfeqZ+uWNKAwZtxAt4ieZW7lCg7Bezpn1dG/ +VDvy/Dd5YpAuDtVxFCLfCUVH+gXfC2wUpWj8j8lgPhP1wBat/hu/PN/AQPg9C/J2EcQRVQXwyZvQ +PzgiZeo1aWw2+w== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP384r1:BOB_cf_brainpoolP384r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP384r1 +PeerKey=BOB_cf_brainpoolP384r1_PUB +SharedSecret=35e9a3f86a38888d183cc343801dcdaecb664d5b37f7fbc0459fd4612da6b29831bd2d8e5b599376ca510fcc3ac78be6 + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP384r1 +PeerKey=ALICE_cf_brainpoolP384r1_PUB +SharedSecret=35e9a3f86a38888d183cc343801dcdaecb664d5b37f7fbc0459fd4612da6b29831bd2d8e5b599376ca510fcc3ac78be6 + +Title=brainpoolP384t1 curve tests + +PrivateKey=ALICE_cf_brainpoolP384t1 +-----BEGIN PRIVATE KEY----- +MFICAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEMBDcwNQIBAQQwGyCfuKlQDK4EflGVc01hBKW+OB/L +ojNz6kgnAWMuWoCyOM8SOkSTbOCimaVqZrlq +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP384t1_PUB +-----BEGIN PUBLIC KEY----- +MHowFAYHKoZIzj0CAQYJKyQDAwIIAQEMA2IABE1O0qNzgozAxaQC7qX2wS+HNfKIAMc7eX4G4Z0w +M30kgGyCn4CtWCBFgG15laf6OnYcdJgC8284B2smZiqHuvssw12SZwOlaXoLGyIsqygTitCO3Ebd +k2dmuYdWzxj5/g== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP384t1:ALICE_cf_brainpoolP384t1_PUB + +PrivateKey=BOB_cf_brainpoolP384t1 +-----BEGIN PRIVATE KEY----- +MFICAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEMBDcwNQIBAQQwbpabbL6g9HZUZ4VusnNGHsHujUsA +cDuviAZTBaHWJsCd5jA64hVFZXlZ9Jj/nSLs +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP384t1_PUB +-----BEGIN PUBLIC KEY----- +MHowFAYHKoZIzj0CAQYJKyQDAwIIAQEMA2IABAyawWqAcNlcwOauu2b93XXqpZQeRM26AYcDcHIf +tZahQrwFpLgt6Tn7tzA2CgRGvSvBGZTxkzuHasxJn+dBDGLraias3U/sLD3P4TQuP9v8cO6i7g4x +T+DZbNUQQ3ePDQ== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP384t1:BOB_cf_brainpoolP384t1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP384t1 +PeerKey=BOB_cf_brainpoolP384t1_PUB +SharedSecret=030113dd1662230f1e47418c3044a0852dcd74fa508dbabb02d1fe5d788aa49d8047d02a802f796af21473ab17f6f85f + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP384t1 +PeerKey=ALICE_cf_brainpoolP384t1_PUB +SharedSecret=030113dd1662230f1e47418c3044a0852dcd74fa508dbabb02d1fe5d788aa49d8047d02a802f796af21473ab17f6f85f + +Title=brainpoolP512r1 curve tests + +PrivateKey=ALICE_cf_brainpoolP512r1 +-----BEGIN PRIVATE KEY----- +MGICAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQENBEcwRQIBAQRAagAsEAU5t/T4yI0MvyTWuPcrQfaa +1xZr99hRfeY7+pDV4yooxTIXUESqk/dBQlFSrVUkdvMQHq/8vm5V/w97LQ== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP512r1_PUB +-----BEGIN PUBLIC KEY----- +MIGbMBQGByqGSM49AgEGCSskAwMCCAEBDQOBggAEJLmN88iMClNBtyLHzmSgIE9d+v/GRtBr1+r+ +Wvz5XOwsiHWWFTRO5Um+3HUVZH+S3nky6n/3Yjn4DFA4lhxV+y40g8p+kkXYKwpXTByQhERcPPPS +wKh/S7Y3k3KSLkphjiBExzlBcj9r3gLww9+0nVer/fnUgRz7YwWldv4PR2E= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP512r1:ALICE_cf_brainpoolP512r1_PUB + +PrivateKey=BOB_cf_brainpoolP512r1 +-----BEGIN PRIVATE KEY----- +MGICAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQENBEcwRQIBAQRAgHKjBCUMVJTF41vKv+Lp2xVz6bsF +P1Aqc+2ehlxlEoYL4H8CbUBh89F1QPjGjIOLEebJcN/KnnpyRGVdx4UV2g== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP512r1_PUB +-----BEGIN PUBLIC KEY----- +MIGbMBQGByqGSM49AgEGCSskAwMCCAEBDQOBggAElWuk6uPxVgBSLSK9Zfqbid/ipXbIFKVaetCI +YsYOdzkbjGIWLd2MFZIjZ9r7ePEcHXqQiwGvW+8itGM/xwLpA4qZ2QYazqtAbT187d5cdyZf4PQT +/kv/ZTvXTl7xHDtaujQ1re00Z3liEKgKstI80BkA6eA4Jfy4G2F7CX/WuSQ= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP512r1:BOB_cf_brainpoolP512r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP512r1 +PeerKey=BOB_cf_brainpoolP512r1_PUB +SharedSecret=84269a8f2932b7e09b23deabaeab26eda6bbdee8846153b0c62b7d2663506a9e71d32cf0cc127ec130f6880612f4e054bc79adb57ddbee97949508ce1eda0bb1 + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP512r1 +PeerKey=ALICE_cf_brainpoolP512r1_PUB +SharedSecret=84269a8f2932b7e09b23deabaeab26eda6bbdee8846153b0c62b7d2663506a9e71d32cf0cc127ec130f6880612f4e054bc79adb57ddbee97949508ce1eda0bb1 + +Title=brainpoolP512t1 curve tests + +PrivateKey=ALICE_cf_brainpoolP512t1 +-----BEGIN PRIVATE KEY----- +MGICAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEOBEcwRQIBAQRAd92o2JLX5lk2v6fGr1pH5TT8KUKR +6FaCm6CRk0dC/xK6h0rpONjx+37VuH3uS+HoRlru83maSoeHQneWCc32XA== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_brainpoolP512t1_PUB +-----BEGIN PUBLIC KEY----- +MIGbMBQGByqGSM49AgEGCSskAwMCCAEBDgOBggAEob+TJkhNP6D+HoQtlWcLITI3MM25Axi++awv +HnMoclRLLur7CjQsKd0v6aEzmG2+4WZSZFGLA9L8Z5sh9L916p5CD5nk1pNfy5QKNi2H5R3QC/oc +RfNNxhXdVVekfTaAiqhe8UF3aMngmDAc7sq794DVZvCf1sqq8v5cHrnqRcQ= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_brainpoolP512t1:ALICE_cf_brainpoolP512t1_PUB + +PrivateKey=BOB_cf_brainpoolP512t1 +-----BEGIN PRIVATE KEY----- +MGICAQAwFAYHKoZIzj0CAQYJKyQDAwIIAQEOBEcwRQIBAQRAVW4ZQKgDeHAkubwYYlp2JKklrbpp +gvez/prOdyHJXJbVriU4lCH/MpH2I+nXjaZ9zLcl9JbnrUOJ6xGPHfZJrw== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_brainpoolP512t1_PUB +-----BEGIN PUBLIC KEY----- +MIGbMBQGByqGSM49AgEGCSskAwMCCAEBDgOBggAEJbQFKxq27CuY7/mgNwEnH3GSYGXy9s6n48qq +gbMrp5uREi8JXZ+BuLQmzZuF15ZPOOmh+EJFjbD8i9NDiUkYLnm1oy/EuE1f5VUNoXFeFFIa21vZ +2kzPYYKYyUNOdG8p/s4rPBFyCMf6Tizt0D4XA4oLptKUUIX2SC1Sd+qakKA= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_brainpoolP512t1:BOB_cf_brainpoolP512t1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_brainpoolP512t1 +PeerKey=BOB_cf_brainpoolP512t1_PUB +SharedSecret=48bc4ebdb9a88ca38bed58f5e547eb11d803fd01b6eadff1761ecb48c54525cba43bdb0ee4a4d7aa6701985e0bc12fd32382c035d80acc7ec26adfcb108a07cb + +# ECDH Bob with Alice peer +Derive=BOB_cf_brainpoolP512t1 +PeerKey=ALICE_cf_brainpoolP512t1_PUB +SharedSecret=48bc4ebdb9a88ca38bed58f5e547eb11d803fd01b6eadff1761ecb48c54525cba43bdb0ee4a4d7aa6701985e0bc12fd32382c035d80acc7ec26adfcb108a07cb + +Title=c2pnb163v1 curve tests + +PrivateKey=ALICE_cf_c2pnb163v1 +-----BEGIN PRIVATE KEY----- +MDYCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAEEHDAaAgEBBBUD1JfG8cLNP9418YW+hVhriqH6O5Y= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2pnb163v1_PUB +-----BEGIN PUBLIC KEY----- +MEMwEwYHKoZIzj0CAQYIKoZIzj0DAAEDLAAEBXgoOgVlWTLQnrQZXgQuSBcIS3bQAlXQ+yJhS03B +4G8rKQXbrc0mvWsF +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2pnb163v1:ALICE_cf_c2pnb163v1_PUB + +PrivateKey=BOB_cf_c2pnb163v1 +-----BEGIN PRIVATE KEY----- +MDYCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAEEHDAaAgEBBBUAc3EaoMmMORTzQhMkhPIXY+/jUSI= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2pnb163v1_PUB +-----BEGIN PUBLIC KEY----- +MEMwEwYHKoZIzj0CAQYIKoZIzj0DAAEDLAAEBn9J0jo39aFVZqhBsAKZ6bViAu6zBC8WaFGExnpZ +KuBh8tP8VSTHPCHF +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2pnb163v1:BOB_cf_c2pnb163v1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2pnb163v1 +PeerKey=BOB_cf_c2pnb163v1_PUB +SharedSecret=065dd38fb6de7f394778e1bf65d840a2c0e7219acd + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2pnb163v1 +PeerKey=ALICE_cf_c2pnb163v1_PUB +SharedSecret=065dd38fb6de7f394778e1bf65d840a2c0e7219acd + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2pnb163v1 +PeerKey=BOB_cf_c2pnb163v1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=066fc46e8cc4327634dd127748020f2de6aab67585 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2pnb163v1 +PeerKey=ALICE_cf_c2pnb163v1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=066fc46e8cc4327634dd127748020f2de6aab67585 + +PublicKey=MALICE_cf_c2pnb163v1_PUB +-----BEGIN PUBLIC KEY----- +MEMwEwYHKoZIzj0CAQYIKoZIzj0DAAEDLAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8JxepS05nN +/piKdhDD3dDKXUih +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2pnb163v1 +PeerKey=MALICE_cf_c2pnb163v1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2pnb163v1 +PeerKey=MALICE_cf_c2pnb163v1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2pnb163v2 curve tests + +PrivateKey=ALICE_cf_c2pnb163v2 +-----BEGIN PRIVATE KEY----- +MDYCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAIEHDAaAgEBBBUA4KFv7c1dygtVbdp/g2z2TqLAHkI= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2pnb163v2_PUB +-----BEGIN PUBLIC KEY----- +MEMwEwYHKoZIzj0CAQYIKoZIzj0DAAIDLAAEAVnlL7lMBaASwCIJaf9x2LgNPVmEAb43huHQlo3Q +4PzawHXQoYm/qgDd +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2pnb163v2:ALICE_cf_c2pnb163v2_PUB + +PrivateKey=BOB_cf_c2pnb163v2 +-----BEGIN PRIVATE KEY----- +MDYCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAIEHDAaAgEBBBUCEdYqClRWIl2m+X34e+DB2iZSxmQ= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2pnb163v2_PUB +-----BEGIN PUBLIC KEY----- +MEMwEwYHKoZIzj0CAQYIKoZIzj0DAAIDLAAEAVWNIKn7/WMfzuNnd5ws9J0DI2CfBkEJizZHAFqy +kBF3juAQuARgxuT6 +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2pnb163v2:BOB_cf_c2pnb163v2_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2pnb163v2 +PeerKey=BOB_cf_c2pnb163v2_PUB +SharedSecret=0078ebb986d4f9b0aa0bc4af99e82c2bd24130f3f4 + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2pnb163v2 +PeerKey=ALICE_cf_c2pnb163v2_PUB +SharedSecret=0078ebb986d4f9b0aa0bc4af99e82c2bd24130f3f4 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2pnb163v2 +PeerKey=BOB_cf_c2pnb163v2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=069a80bcd45987fd1c874cd9dc5453207a09b61d41 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2pnb163v2 +PeerKey=ALICE_cf_c2pnb163v2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=069a80bcd45987fd1c874cd9dc5453207a09b61d41 + +PublicKey=MALICE_cf_c2pnb163v2_PUB +-----BEGIN PUBLIC KEY----- +MEMwEwYHKoZIzj0CAQYIKoZIzj0DAAIDLAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAABuVBl1V5uysY +n6HANPEoMoK+7Sv0 +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2pnb163v2 +PeerKey=MALICE_cf_c2pnb163v2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2pnb163v2 +PeerKey=MALICE_cf_c2pnb163v2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2pnb163v3 curve tests + +PrivateKey=ALICE_cf_c2pnb163v3 +-----BEGIN PRIVATE KEY----- +MDYCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAMEHDAaAgEBBBUBItB0y/QeJ+cCh9yoHf0zqLVyMZc= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2pnb163v3_PUB +-----BEGIN PUBLIC KEY----- +MEMwEwYHKoZIzj0CAQYIKoZIzj0DAAMDLAAEBx1HRyjuBMjt+vlbWaQbKOpNvWKFAslzEbPv6MpK +YnObLnq34LRuWznb +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2pnb163v3:ALICE_cf_c2pnb163v3_PUB + +PrivateKey=BOB_cf_c2pnb163v3 +-----BEGIN PRIVATE KEY----- +MDYCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAMEHDAaAgEBBBUAXVHUHeP8Ioz7IqXOWbjaUXEHE5M= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2pnb163v3_PUB +-----BEGIN PUBLIC KEY----- +MEMwEwYHKoZIzj0CAQYIKoZIzj0DAAMDLAAEAqXF7rsAZ40Z1PT4TeeC45RKTxP4AJBAdfuknJ/J +DZnBLhxBwtqnfUpA +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2pnb163v3:BOB_cf_c2pnb163v3_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2pnb163v3 +PeerKey=BOB_cf_c2pnb163v3_PUB +SharedSecret=07fd2ffe9b18973c51caeadbc2154b97a9a0390be9 + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2pnb163v3 +PeerKey=ALICE_cf_c2pnb163v3_PUB +SharedSecret=07fd2ffe9b18973c51caeadbc2154b97a9a0390be9 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2pnb163v3 +PeerKey=BOB_cf_c2pnb163v3_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=06f7daf1c963594e1a13f9f17b62aaab2934872c16 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2pnb163v3 +PeerKey=ALICE_cf_c2pnb163v3_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=06f7daf1c963594e1a13f9f17b62aaab2934872c16 + +PublicKey=MALICE_cf_c2pnb163v3_PUB +-----BEGIN PUBLIC KEY----- +MEMwEwYHKoZIzj0CAQYIKoZIzj0DAAMDLAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7jRlUg9oaLK +LwAuHF8g5Y0JjJnI +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2pnb163v3 +PeerKey=MALICE_cf_c2pnb163v3_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2pnb163v3 +PeerKey=MALICE_cf_c2pnb163v3_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2pnb176v1 curve tests + +PrivateKey=ALICE_cf_c2pnb176v1 +-----BEGIN PRIVATE KEY----- +MDYCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAQEHDAaAgEBBBUAaZ1jV1jM9meV5iiNGPU/WMSfWOM= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2pnb176v1_PUB +-----BEGIN PUBLIC KEY----- +MEUwEwYHKoZIzj0CAQYIKoZIzj0DAAQDLgAEPjME7IV6Tuz2P++wIT60hRxTkk0M0PNgvqYcUoCI +iw3girDLhNzOu3IQ8Ac= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2pnb176v1:ALICE_cf_c2pnb176v1_PUB + +PrivateKey=BOB_cf_c2pnb176v1 +-----BEGIN PRIVATE KEY----- +MDYCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAQEHDAaAgEBBBUAreyYbcF+ONIf64KmeSzV82OI/50= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2pnb176v1_PUB +-----BEGIN PUBLIC KEY----- +MEUwEwYHKoZIzj0CAQYIKoZIzj0DAAQDLgAEpJn1IDmFj5LceLGfY2wlhI1VHq5vJ+qNIAOXVZhX +uMtp6pzy63rCEK53bgs= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2pnb176v1:BOB_cf_c2pnb176v1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2pnb176v1 +PeerKey=BOB_cf_c2pnb176v1_PUB +SharedSecret=3a8021848ee0b2c1c377404267a515225781c181e6ab + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2pnb176v1 +PeerKey=ALICE_cf_c2pnb176v1_PUB +SharedSecret=3a8021848ee0b2c1c377404267a515225781c181e6ab + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2pnb176v1 +PeerKey=BOB_cf_c2pnb176v1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=b06cdc633b56e813d63326c69d2cfa335352279540ac + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2pnb176v1 +PeerKey=ALICE_cf_c2pnb176v1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=b06cdc633b56e813d63326c69d2cfa335352279540ac + +PublicKey=MALICE_cf_c2pnb176v1_PUB +-----BEGIN PUBLIC KEY----- +MEUwEwYHKoZIzj0CAQYIKoZIzj0DAAQDLgAE4ePri2opCoAUJIUQnaQlvDaxZd9bsdKnjWSvh+FL +zXV3l5j8K3pow+GJBE4= +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2pnb176v1 +PeerKey=MALICE_cf_c2pnb176v1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2pnb176v1 +PeerKey=MALICE_cf_c2pnb176v1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2pnb208w1 curve tests + +PrivateKey=ALICE_cf_c2pnb208w1 +-----BEGIN PRIVATE KEY----- +MDoCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAoEIDAeAgEBBBkAiENroXMYNbK/7DQQwCpbXk00gnVd +XF2k +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2pnb208w1_PUB +-----BEGIN PUBLIC KEY----- +ME0wEwYHKoZIzj0CAQYIKoZIzj0DAAoDNgAEL+IHOL2IfeLRiE6Wqsc0Frqjq7t/JnBmhN1lMB9Y +Yj3+Btcne4CPWf8KvfGjAdMs6JKP4A== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2pnb208w1:ALICE_cf_c2pnb208w1_PUB + +PrivateKey=BOB_cf_c2pnb208w1 +-----BEGIN PRIVATE KEY----- +MDoCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAoEIDAeAgEBBBkAY1GZLynO/IDWwOOjEWUE7k+I/MkP +cJot +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2pnb208w1_PUB +-----BEGIN PUBLIC KEY----- +ME0wEwYHKoZIzj0CAQYIKoZIzj0DAAoDNgAENBvdzCDOIvu9zo7reJq1ummhR+0jaDc+EoSlW984 +cl9FTi/JJznwC+RNgwVfJ1WKJun1YA== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2pnb208w1:BOB_cf_c2pnb208w1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2pnb208w1 +PeerKey=BOB_cf_c2pnb208w1_PUB +SharedSecret=ba32bf80c0f7ab53cb083f267a902a1ad6396eb283237fad91cd + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2pnb208w1 +PeerKey=ALICE_cf_c2pnb208w1_PUB +SharedSecret=ba32bf80c0f7ab53cb083f267a902a1ad6396eb283237fad91cd + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2pnb208w1 +PeerKey=BOB_cf_c2pnb208w1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=f09f5fc8bf20677558bc65939bf1b7fbbbe2579702729304258b + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2pnb208w1 +PeerKey=ALICE_cf_c2pnb208w1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=f09f5fc8bf20677558bc65939bf1b7fbbbe2579702729304258b + +PublicKey=MALICE_cf_c2pnb208w1_PUB +-----BEGIN PUBLIC KEY----- +ME0wEwYHKoZIzj0CAQYIKoZIzj0DAAoDNgAEfuWB9pBZQin+VnmqgYVpbUpKxSQsnXxNqiDtVwqJ +oPkHxRWnu5e7qI2idMcqaKDeeniUaA== +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2pnb208w1 +PeerKey=MALICE_cf_c2pnb208w1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2pnb208w1 +PeerKey=MALICE_cf_c2pnb208w1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2pnb272w1 curve tests + +PrivateKey=ALICE_cf_c2pnb272w1 +-----BEGIN PRIVATE KEY----- +MEICAQAwEwYHKoZIzj0CAQYIKoZIzj0DABAEKDAmAgEBBCEA0SoHwKAgKb7WQ+s0w1iNBemDZ3+f +StHU67fpP7YoF8U= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2pnb272w1_PUB +-----BEGIN PUBLIC KEY----- +MF0wEwYHKoZIzj0CAQYIKoZIzj0DABADRgAE0IH60bGi46FDzEprGZ8EBK5uMMcVke/txeBRNGHQ +DzG68r3EMLZkOfE1+g04MN7HgY7zt3jMYb8ImyLRmvqR2abjs6c= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2pnb272w1:ALICE_cf_c2pnb272w1_PUB + +PrivateKey=BOB_cf_c2pnb272w1 +-----BEGIN PRIVATE KEY----- +MEICAQAwEwYHKoZIzj0CAQYIKoZIzj0DABAEKDAmAgEBBCEAFqB5GbPJ4d+X7ye7m05l/OirDqfn +MOsOJ6xObBph3zQ= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2pnb272w1_PUB +-----BEGIN PUBLIC KEY----- +MF0wEwYHKoZIzj0CAQYIKoZIzj0DABADRgAEIeIkcMHAuOgvHt2Wp52vVe0DYPNnUX79t/mLSx03 +cUlDmcxL7vIXdx9hB4OmQBYbm+YLDNfTFGAIlDfr2tELpVVPWPo= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2pnb272w1:BOB_cf_c2pnb272w1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2pnb272w1 +PeerKey=BOB_cf_c2pnb272w1_PUB +SharedSecret=cfebd65006520a40f081d8940edf0ebb8e54491ba1499d9f3c63deecee84ddc07142 + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2pnb272w1 +PeerKey=ALICE_cf_c2pnb272w1_PUB +SharedSecret=cfebd65006520a40f081d8940edf0ebb8e54491ba1499d9f3c63deecee84ddc07142 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2pnb272w1 +PeerKey=BOB_cf_c2pnb272w1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=756fc20b27352ac74e5135359c63d375d2732c6d02f25cd526155bac0882a9211dd4 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2pnb272w1 +PeerKey=ALICE_cf_c2pnb272w1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=756fc20b27352ac74e5135359c63d375d2732c6d02f25cd526155bac0882a9211dd4 + +PublicKey=MALICE_cf_c2pnb272w1_PUB +-----BEGIN PUBLIC KEY----- +MF0wEwYHKoZIzj0CAQYIKoZIzj0DABADRgAEvID3AM7qzpKDnOLFY00+E7EKZz/vS/pXgsUA3bWN +oJF8ElXFXv59s/SykQBCTHPqzmUbVmrXmtD44Kt1wUBRJfuwxy4= +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2pnb272w1 +PeerKey=MALICE_cf_c2pnb272w1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2pnb272w1 +PeerKey=MALICE_cf_c2pnb272w1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2pnb304w1 curve tests + +PrivateKey=ALICE_cf_c2pnb304w1 +-----BEGIN PRIVATE KEY----- +MEYCAQAwEwYHKoZIzj0CAQYIKoZIzj0DABEELDAqAgEBBCUAqJxh50ZIUXOJ1HE3cVkech9OTTPJ +8jy/v5cFcO0X6dykHgnZ +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2pnb304w1_PUB +-----BEGIN PUBLIC KEY----- +MGUwEwYHKoZIzj0CAQYIKoZIzj0DABEDTgAEvoaqRX6qiNQiFH1BhgLCPTpYszoRhmlLirkvlw/Q +iXBlfQ7U4g+iRR/kmu2RlwwOHgNNL+mWcvLkFfS8Kr4jzv1EY1Ecx96n21l0YQ== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2pnb304w1:ALICE_cf_c2pnb304w1_PUB + +PrivateKey=BOB_cf_c2pnb304w1 +-----BEGIN PRIVATE KEY----- +MEYCAQAwEwYHKoZIzj0CAQYIKoZIzj0DABEELDAqAgEBBCUAOScHepX+IwqC8TjyAJI1bkR3cYYt +X9BbqYM9GQfVNSLHntTg +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2pnb304w1_PUB +-----BEGIN PUBLIC KEY----- +MGUwEwYHKoZIzj0CAQYIKoZIzj0DABEDTgAEYuAq/6Yw5HxMeMohlWmwl+ZK4ZQucfr1tWDKwhDb +kAOUO2P/Q/H+uelM3VVwxeu6A1kaX7K0UZpNa96NRBwI4aevc+vOxCgYkGt9BA== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2pnb304w1:BOB_cf_c2pnb304w1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2pnb304w1 +PeerKey=BOB_cf_c2pnb304w1_PUB +SharedSecret=bfddf9f923210e8231a702e3a1c987cf27661de1bc243c1890e437d67d9f49c6ccfadc035d9d + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2pnb304w1 +PeerKey=ALICE_cf_c2pnb304w1_PUB +SharedSecret=bfddf9f923210e8231a702e3a1c987cf27661de1bc243c1890e437d67d9f49c6ccfadc035d9d + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2pnb304w1 +PeerKey=BOB_cf_c2pnb304w1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=0c7afb3143f93ef2166c05437a1757a62c916ff1751c6d456dd7f2356dcbc75df48015eb5ce8 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2pnb304w1 +PeerKey=ALICE_cf_c2pnb304w1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=0c7afb3143f93ef2166c05437a1757a62c916ff1751c6d456dd7f2356dcbc75df48015eb5ce8 + +PublicKey=MALICE_cf_c2pnb304w1_PUB +-----BEGIN PUBLIC KEY----- +MGUwEwYHKoZIzj0CAQYIKoZIzj0DABEDTgAEBZ5FuthQt0mxTJ8NQWN2J37kYT8ySD893IXEmXYP +fMTr+CSNkf/sfF/13GEdVGnHmBgCH61sPWG69RgzdjRPprZFZxXjubIWYkp0DQ== +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2pnb304w1 +PeerKey=MALICE_cf_c2pnb304w1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2pnb304w1 +PeerKey=MALICE_cf_c2pnb304w1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2pnb368w1 curve tests + +PrivateKey=ALICE_cf_c2pnb368w1 +-----BEGIN PRIVATE KEY----- +ME4CAQAwEwYHKoZIzj0CAQYIKoZIzj0DABMENDAyAgEBBC0AXeSTXsHb2PEH12tZL8w2q6evA2mi +KfLLIa1c29BTmM//oWdKpqeuvwMIBto= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2pnb368w1_PUB +-----BEGIN PUBLIC KEY----- +MHUwEwYHKoZIzj0CAQYIKoZIzj0DABMDXgAEmEBXcvMgnHwJW7wAKM4cqboco6zF01J9ntUwoACI +euvf3cpPXBvxUawJXfO9FwFRQabDRagGP99Walidd2JW8nWDWZgZMKj15Wh+4bp2dZHc2tPIIHHd +3makbwQ= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2pnb368w1:ALICE_cf_c2pnb368w1_PUB + +PrivateKey=BOB_cf_c2pnb368w1 +-----BEGIN PRIVATE KEY----- +ME4CAQAwEwYHKoZIzj0CAQYIKoZIzj0DABMENDAyAgEBBC0Aq1R9M/mCMbJMj6VBUpBkS4HXywEz +Qun6d6uXgyU4LZRszA7Dz9+eKbXEMsk= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2pnb368w1_PUB +-----BEGIN PUBLIC KEY----- +MHUwEwYHKoZIzj0CAQYIKoZIzj0DABMDXgAEJOSnsaXA9wb5p8CGLPvYI47Yf3IdZSbWQ3Sn6G2v +At+zYlpzGax1oJ1CW8fGA0Gu0RnvAfDeW9vgrtzshH1Vy/Ni6a7LPho99PtUP2nzUBnv+hfhFSra +gqfRaOs= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2pnb368w1:BOB_cf_c2pnb368w1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2pnb368w1 +PeerKey=BOB_cf_c2pnb368w1_PUB +SharedSecret=008d20ede3961be3b01051d6fdae63db43865664804d432293a2edb13dcc8be0fe5b0c655297a84b9067a29c2a6f + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2pnb368w1 +PeerKey=ALICE_cf_c2pnb368w1_PUB +SharedSecret=008d20ede3961be3b01051d6fdae63db43865664804d432293a2edb13dcc8be0fe5b0c655297a84b9067a29c2a6f + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2pnb368w1 +PeerKey=BOB_cf_c2pnb368w1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=df32ddeeffa029aeadabad000a79c3154a0ddd0aeacf4e3de426f5c10096eff8912038c64d4c899131dcd4df2561 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2pnb368w1 +PeerKey=ALICE_cf_c2pnb368w1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=df32ddeeffa029aeadabad000a79c3154a0ddd0aeacf4e3de426f5c10096eff8912038c64d4c899131dcd4df2561 + +PublicKey=MALICE_cf_c2pnb368w1_PUB +-----BEGIN PUBLIC KEY----- +MHUwEwYHKoZIzj0CAQYIKoZIzj0DABMDXgAEWDn/U9rymClM/a0Q1mawHjQjvpxSehRWstSE+2Sd +ubcZowJ+rw5LsEZteQyeVrCpKYUiIBmIVuFb2LDjtNLIJD1lr8C+vdco24ciLS9RzF/Dc9X+tcIj +726e1BE= +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2pnb368w1 +PeerKey=MALICE_cf_c2pnb368w1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2pnb368w1 +PeerKey=MALICE_cf_c2pnb368w1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2tnb191v1 curve tests + +PrivateKey=ALICE_cf_c2tnb191v1 +-----BEGIN PRIVATE KEY----- +MDkCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAUEHzAdAgEBBBgXyG7A4BvSmjKEl3aU+FQUt02p9U7x +Jk4= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2tnb191v1_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAAUDMgAEG9iuZmnhz2H/YQKmVUaO//fm7hvV+CP5c2iszpR3 +7lRimqLWHPyvKgcP+PRCIUom +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2tnb191v1:ALICE_cf_c2tnb191v1_PUB + +PrivateKey=BOB_cf_c2tnb191v1 +-----BEGIN PRIVATE KEY----- +MDkCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAUEHzAdAgEBBBg4+2hv9x9HxFy0c2c1XESDdgOamHu0 +MTU= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2tnb191v1_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAAUDMgAEdO/4ii8gi8eQfBrv3XmsOETwIfT8OIpBW/kUoHD+ +adqalcB6SIWOfoJReDLcpxAD +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2tnb191v1:BOB_cf_c2tnb191v1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2tnb191v1 +PeerKey=BOB_cf_c2tnb191v1_PUB +SharedSecret=2ee8a85151c397600984285307c14f0ea0e4c2071d753a99 + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2tnb191v1 +PeerKey=ALICE_cf_c2tnb191v1_PUB +SharedSecret=2ee8a85151c397600984285307c14f0ea0e4c2071d753a99 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2tnb191v1 +PeerKey=BOB_cf_c2tnb191v1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=334051dfd62237e69e280ce2fab979bd77260f8dfe4df989 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2tnb191v1 +PeerKey=ALICE_cf_c2tnb191v1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=334051dfd62237e69e280ce2fab979bd77260f8dfe4df989 + +PublicKey=MALICE_cf_c2tnb191v1_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAAUDMgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcPEwZ1wj +iNoFyzyANZl8IDB0fF1RmZD6 +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2tnb191v1 +PeerKey=MALICE_cf_c2tnb191v1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2tnb191v1 +PeerKey=MALICE_cf_c2tnb191v1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2tnb191v2 curve tests + +PrivateKey=ALICE_cf_c2tnb191v2 +-----BEGIN PRIVATE KEY----- +MDkCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAYEHzAdAgEBBBgQZHIQIPrAsbJqq4ZX3JdMrZAkaIGP +jbo= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2tnb191v2_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAAYDMgAEAyQdwZYRIiv7O4/WRLDKJ249TM8dr2Y+Oz8rSxCI +UVvJT/Jv9m462J6Iz1XOohhP +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2tnb191v2:ALICE_cf_c2tnb191v2_PUB + +PrivateKey=BOB_cf_c2tnb191v2 +-----BEGIN PRIVATE KEY----- +MDkCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAYEHzAdAgEBBBgThhW6d5QDaqM8yhm16q6Pu/VFBpf7 +wcs= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2tnb191v2_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAAYDMgAEBVkB4O6fFvGzMHv4BF51muFA0npOGKoOdKbIIMQY +JBIoz1RNNXTcgdpguLcrvcPJ +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2tnb191v2:BOB_cf_c2tnb191v2_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2tnb191v2 +PeerKey=BOB_cf_c2tnb191v2_PUB +SharedSecret=711f90cb2aaea65e939065cbd1896affe1d490ba14571400 + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2tnb191v2 +PeerKey=ALICE_cf_c2tnb191v2_PUB +SharedSecret=711f90cb2aaea65e939065cbd1896affe1d490ba14571400 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2tnb191v2 +PeerKey=BOB_cf_c2tnb191v2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=1740db5b771fa2889d3ec7c1ba8eeffa7741f0ee62433dce + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2tnb191v2 +PeerKey=ALICE_cf_c2tnb191v2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=1740db5b771fa2889d3ec7c1ba8eeffa7741f0ee62433dce + +PublicKey=MALICE_cf_c2tnb191v2_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAAYDMgAEA3yPV6Ilx7PU7dWIDzgKzFV07LNsn1EhMyLQaa5U +2vqunpWef+/CaO2pFBcwwW+x +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2tnb191v2 +PeerKey=MALICE_cf_c2tnb191v2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2tnb191v2 +PeerKey=MALICE_cf_c2tnb191v2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2tnb191v3 curve tests + +PrivateKey=ALICE_cf_c2tnb191v3 +-----BEGIN PRIVATE KEY----- +MDkCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAcEHzAdAgEBBBgTPjf06B01Jq59qU1iczNuA29WfW+b +erU= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2tnb191v3_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAAcDMgAEL4NGEUX2CXY18MyoH1inKq5kde9RGr25ODm/0BEX +HWsGvDE2HC+6pL2BMl3MRCty +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2tnb191v3:ALICE_cf_c2tnb191v3_PUB + +PrivateKey=BOB_cf_c2tnb191v3 +-----BEGIN PRIVATE KEY----- +MDkCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAcEHzAdAgEBBBgUC2bC465JTXYLUaaET/r5n7X85gRH +iSQ= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2tnb191v3_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAAcDMgAEPKekNkT9mQ8KRCTR2RwCFkhNvsjL+/mLHYzbMrYe +QFIb5QwXAdbg2tEOl7yj9qkk +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2tnb191v3:BOB_cf_c2tnb191v3_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2tnb191v3 +PeerKey=BOB_cf_c2tnb191v3_PUB +SharedSecret=196200f7ea06c43c35516b995cf4a4dd4151dbd0ed998561 + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2tnb191v3 +PeerKey=ALICE_cf_c2tnb191v3_PUB +SharedSecret=196200f7ea06c43c35516b995cf4a4dd4151dbd0ed998561 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2tnb191v3 +PeerKey=BOB_cf_c2tnb191v3_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=311939377670a8a1ed1ee17f9dd182167da00c5a19e2e109 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2tnb191v3 +PeerKey=ALICE_cf_c2tnb191v3_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=311939377670a8a1ed1ee17f9dd182167da00c5a19e2e109 + +PublicKey=MALICE_cf_c2tnb191v3_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAAcDMgAESvPjWlLnANK2j38hHZ0uqueaniovkhwwdJZjrmUk +n5vQBTxUzkIkMjL33v6Lr3z7 +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2tnb191v3 +PeerKey=MALICE_cf_c2tnb191v3_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2tnb191v3 +PeerKey=MALICE_cf_c2tnb191v3_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2tnb239v1 curve tests + +PrivateKey=ALICE_cf_c2tnb239v1 +-----BEGIN PRIVATE KEY----- +MD8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAsEJTAjAgEBBB4fMJDhCEiuEf/RF6oGjHVcNwN+wCYG +rJMnJLIXiCI= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2tnb239v1_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAAsDPgAEUgG/uMWy4k0R/kbVJEapF6r5ik4Q9WPsDXAd0856 +dVL8PvBXgixk2tKfyY1xUVebcEVlgdZP1pN1Xyvi +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2tnb239v1:ALICE_cf_c2tnb239v1_PUB + +PrivateKey=BOB_cf_c2tnb239v1 +-----BEGIN PRIVATE KEY----- +MD8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAsEJTAjAgEBBB4JLDwVJQw3+00FiZBDWFErd7PXnchH +sfpZeV3i5FM= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2tnb239v1_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAAsDPgAEcwKt31cWaoFUd7QxYSdwgMDOqEhjPbD3Z9AfR3tc +G77/MY5z1oQegqImBog645vtPWI8lZd1zcl6QYRS +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2tnb239v1:BOB_cf_c2tnb239v1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2tnb239v1 +PeerKey=BOB_cf_c2tnb239v1_PUB +SharedSecret=413ea943cdf40c45795c77aeea7099b81cc42566067924d1fdbae42ddf99 + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2tnb239v1 +PeerKey=ALICE_cf_c2tnb239v1_PUB +SharedSecret=413ea943cdf40c45795c77aeea7099b81cc42566067924d1fdbae42ddf99 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2tnb239v1 +PeerKey=BOB_cf_c2tnb239v1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=1f1e5a6084492e895c35d76a5d2b4a3fafbd96c4b2230ea71cc1c711fa38 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2tnb239v1 +PeerKey=ALICE_cf_c2tnb239v1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=1f1e5a6084492e895c35d76a5d2b4a3fafbd96c4b2230ea71cc1c711fa38 + +PublicKey=MALICE_cf_c2tnb239v1_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAAsDPgAEJFn89FF7xaa5m+XGxWKFwCH+Mu4rbxwi6lvhuEuT +Itl/OAosALFh8xpt+N5gmKtUdhpjyok2udC4B/mY +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2tnb239v1 +PeerKey=MALICE_cf_c2tnb239v1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2tnb239v1 +PeerKey=MALICE_cf_c2tnb239v1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2tnb239v2 curve tests + +PrivateKey=ALICE_cf_c2tnb239v2 +-----BEGIN PRIVATE KEY----- +MD8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAwEJTAjAgEBBB4KU4YKdzFOkl6M1biHkxtVGD2uNXr6 +GbEcp4PbJKU= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2tnb239v2_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAAwDPgAEKzpycflUrsyqVV/+fzvC2+AuX3r0b0Syn8acvn78 +VnKA9mZKwPLWhnMJcLyzarIzc/6/UcfYGNmTyUlG +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2tnb239v2:ALICE_cf_c2tnb239v2_PUB + +PrivateKey=BOB_cf_c2tnb239v2 +-----BEGIN PRIVATE KEY----- +MD8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAAwEJTAjAgEBBB4HZQLKGKBpIKiyTq6XYZWQNph1oGP+ +JLwCwn7lYx0= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2tnb239v2_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAAwDPgAETPSkhMs3JW3BG66FSfCov76JKdcRiBhMCW453Wku +N7yBxBmWjeclHhnXIzfc4qM4qf9n3KzMSXejPVYg +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2tnb239v2:BOB_cf_c2tnb239v2_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2tnb239v2 +PeerKey=BOB_cf_c2tnb239v2_PUB +SharedSecret=2e738f14795b2e19ee791c1bf30c5e462ca6c6ed0ec5c6c6402d0730cf4c + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2tnb239v2 +PeerKey=ALICE_cf_c2tnb239v2_PUB +SharedSecret=2e738f14795b2e19ee791c1bf30c5e462ca6c6ed0ec5c6c6402d0730cf4c + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2tnb239v2 +PeerKey=BOB_cf_c2tnb239v2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=7662d8b94d3f0d20eb8e112ca8b7d5699d81f35902df5b77561977df3946 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2tnb239v2 +PeerKey=ALICE_cf_c2tnb239v2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=7662d8b94d3f0d20eb8e112ca8b7d5699d81f35902df5b77561977df3946 + +PublicKey=MALICE_cf_c2tnb239v2_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAAwDPgAES8fLc5mtVI0HqgKRJ7mN8MU1B0FBkiim6jCHYJf3 +JYUX3Gn3Ai11cHie+nVb3z51jSkpDQENHESTv5K2 +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2tnb239v2 +PeerKey=MALICE_cf_c2tnb239v2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2tnb239v2 +PeerKey=MALICE_cf_c2tnb239v2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2tnb239v3 curve tests + +PrivateKey=ALICE_cf_c2tnb239v3 +-----BEGIN PRIVATE KEY----- +MD8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAA0EJTAjAgEBBB4BZZXtcMw5GrpgHJLx4D8z7M6ocWdv +rDl2fV9ObC8= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2tnb239v3_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAA0DPgAEOu2HIAUX+r6IbRlrPUJUBDL814dR++maVAAkUIjD +H33ewqcI9ZLtpvuR8P8hgRNUTXlh1GWgrB6F21Eo +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2tnb239v3:ALICE_cf_c2tnb239v3_PUB + +PrivateKey=BOB_cf_c2tnb239v3 +-----BEGIN PRIVATE KEY----- +MD8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAA0EJTAjAgEBBB4BDxw3SA54y6uYOW1n4yZaUK22J9ef +XG3HcQX+4i0= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2tnb239v3_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAA0DPgAEVaEi76wyzlpzkkSElf4SmGZ7kf1ghHMP82HkGk7K +BC10zUyppoSOAr0eX4pHAkDUF1m/KGoJa7QcJJww +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2tnb239v3:BOB_cf_c2tnb239v3_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2tnb239v3 +PeerKey=BOB_cf_c2tnb239v3_PUB +SharedSecret=6a756022ec2ea89b0fa757824909707102acf3b7da39dc625c6252eb4c48 + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2tnb239v3 +PeerKey=ALICE_cf_c2tnb239v3_PUB +SharedSecret=6a756022ec2ea89b0fa757824909707102acf3b7da39dc625c6252eb4c48 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2tnb239v3 +PeerKey=BOB_cf_c2tnb239v3_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=3240e19dd8c290e5e1749df60ad0166dd9dbfad645e518b4948e14f774ce + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2tnb239v3 +PeerKey=ALICE_cf_c2tnb239v3_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=3240e19dd8c290e5e1749df60ad0166dd9dbfad645e518b4948e14f774ce + +PublicKey=MALICE_cf_c2tnb239v3_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAA0DPgAELe/znC87/2ucKX7mXUUyiUvg67slWRdH+WHDct9d +LcXDyB342ZN1nm0NCAmBMcLjohX0Zza0ji3YNjT1 +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2tnb239v3 +PeerKey=MALICE_cf_c2tnb239v3_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2tnb239v3 +PeerKey=MALICE_cf_c2tnb239v3_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2tnb359v1 curve tests + +PrivateKey=ALICE_cf_c2tnb359v1 +-----BEGIN PRIVATE KEY----- +ME4CAQAwEwYHKoZIzj0CAQYIKoZIzj0DABIENDAyAgEBBC0Afea/a1NrRf6rRRr/UDsI559ADTFP +Bd5HaS33laTZkCdNLITw1UUrESUIOiU= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2tnb359v1_PUB +-----BEGIN PUBLIC KEY----- +MHMwEwYHKoZIzj0CAQYIKoZIzj0DABIDXAAEZMJU3QF9UJJp2m6qyCnhPuVlPKPHtav3DCgH27SY +RLMN7C4rRmqiJakD11QtOforOgbPW5r/v7t4TUWIlq8jV7kapJNtxQtg/S87L0NQGgHBq/lnJL8x +fN3Y +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2tnb359v1:ALICE_cf_c2tnb359v1_PUB + +PrivateKey=BOB_cf_c2tnb359v1 +-----BEGIN PRIVATE KEY----- +ME4CAQAwEwYHKoZIzj0CAQYIKoZIzj0DABIENDAyAgEBBC0Aaw+yr7Atz8CXjLsbI5msXLqxFoMr +esHVfU53i6ucCsnPTWSDWSb5CePtI9g= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2tnb359v1_PUB +-----BEGIN PUBLIC KEY----- +MHMwEwYHKoZIzj0CAQYIKoZIzj0DABIDXAAEUQde0iyDHbsFJZ459d4zUhsrJYAkqndmEBRwSlg5 +ZNX8SSS79Zf2HsQl+LWIZyzeYzoHobKXufChw9/H4ThS58VwV5/0hoE929PIgJ1MSEqr5LvJXi+b +R8fe +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2tnb359v1:BOB_cf_c2tnb359v1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2tnb359v1 +PeerKey=BOB_cf_c2tnb359v1_PUB +SharedSecret=623a71122b5acad467d40d97ef8d8fd46541d8c41d7de6ba181c24e2714c1bc35bcefcf089af69c406eedecc12 + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2tnb359v1 +PeerKey=ALICE_cf_c2tnb359v1_PUB +SharedSecret=623a71122b5acad467d40d97ef8d8fd46541d8c41d7de6ba181c24e2714c1bc35bcefcf089af69c406eedecc12 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2tnb359v1 +PeerKey=BOB_cf_c2tnb359v1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=1c9c4cea3251dace2cb763eabf60f106cc1b03f2491e6f20d7bea78e062f8f14c4e82e4d43786eefa44d33f7e9 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2tnb359v1 +PeerKey=ALICE_cf_c2tnb359v1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=1c9c4cea3251dace2cb763eabf60f106cc1b03f2491e6f20d7bea78e062f8f14c4e82e4d43786eefa44d33f7e9 + +PublicKey=MALICE_cf_c2tnb359v1_PUB +-----BEGIN PUBLIC KEY----- +MHMwEwYHKoZIzj0CAQYIKoZIzj0DABIDXAAEDW1DxeJfyPPnxX4WiLM5ZnX9AypqqeKj7FTHxanl +++A6FgVFjUCatt8Sr4xnSc3zDE0kh6f/wS9SbtCAi74i8HAX5SJiccCMPRkw6kBuHZgiG8EmFJ53 +OEQw +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2tnb359v1 +PeerKey=MALICE_cf_c2tnb359v1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2tnb359v1 +PeerKey=MALICE_cf_c2tnb359v1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=c2tnb431r1 curve tests + +PrivateKey=ALICE_cf_c2tnb431r1 +-----BEGIN PRIVATE KEY----- +MFYCAQAwEwYHKoZIzj0CAQYIKoZIzj0DABQEPDA6AgEBBDUAG1rgUnH3+PSxqlzt9+QTWv7PrYxz +Qgqj5A2Mqi0LbdixVDciVSSgrU6keVu72oCmHVP+OQ== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_c2tnb431r1_PUB +-----BEGIN PUBLIC KEY----- +MIGFMBMGByqGSM49AgEGCCqGSM49AwAUA24ABFcQEDic9pYxtxStk/oBxafqyUux1kvEOOwR4FxJ +pGEMTh8B+YfkWuq+IDY5zSqNKtg7cRlAFX2dlHhRSvNxrN3DJCrhe/TQq8SIYawcqEQnM39F8hHM +7VQJLEsBpJ/WUonwMJXknjgfONP7GA== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_c2tnb431r1:ALICE_cf_c2tnb431r1_PUB + +PrivateKey=BOB_cf_c2tnb431r1 +-----BEGIN PRIVATE KEY----- +MFYCAQAwEwYHKoZIzj0CAQYIKoZIzj0DABQEPDA6AgEBBDUBOsZrpI6hTgImR8DBhKOOrh2SvcT/ +VwmzYnbuCRrtr/zwIQcqKKI1ztlrl+kxFxJfk5L7UQ== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_c2tnb431r1_PUB +-----BEGIN PUBLIC KEY----- +MIGFMBMGByqGSM49AgEGCCqGSM49AwAUA24ABHeTG6xjbsKKxn4oYQt9qUM9LrSPZfY11XsBmROc +fb9kEbBLU+QixSbYZOrqPasesDV9dApDXF+w6EfIeNyJEK5Lk+aXamrn7fRMUAQ2m7+Odp87GgA+ +8Cg6YpgbK314SK5STziqoZwzEISJ9w== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_c2tnb431r1:BOB_cf_c2tnb431r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_c2tnb431r1 +PeerKey=BOB_cf_c2tnb431r1_PUB +SharedSecret=1c9a64de0b706f0e562d5144ceeb4806ce8782865dc0e3fab694967955bd40afc79bf9241ef4a173fbf9baeac0d416392fb13bdc6978 + +# ECDH Bob with Alice peer +Derive=BOB_cf_c2tnb431r1 +PeerKey=ALICE_cf_c2tnb431r1_PUB +SharedSecret=1c9a64de0b706f0e562d5144ceeb4806ce8782865dc0e3fab694967955bd40afc79bf9241ef4a173fbf9baeac0d416392fb13bdc6978 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_c2tnb431r1 +PeerKey=BOB_cf_c2tnb431r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=059e2ea2d0d8bad5005a9401196ebb1633377c7ded8ec58a0398cf1d0f42ea82614f68cb836ecfc33612b8a705b4c3b7b4ed12eb6e22 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_c2tnb431r1 +PeerKey=ALICE_cf_c2tnb431r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=059e2ea2d0d8bad5005a9401196ebb1633377c7ded8ec58a0398cf1d0f42ea82614f68cb836ecfc33612b8a705b4c3b7b4ed12eb6e22 + +PublicKey=MALICE_cf_c2tnb431r1_PUB +-----BEGIN PUBLIC KEY----- +MIGFMBMGByqGSM49AgEGCCqGSM49AwAUA24ABA/cHJ1bNJ2l3GcrT67WEoU0w/Ajy28T9X4XLv8a +5EpnkembeFlRG8ILplDcZimE8kjNQWynAk+NbJRsIU/XLzcm7VXkkqEkx/yCQ/TOcbeB3qrpzWYr +F3Cls9x60wuFYNc9d6eIe4B+puz9IQ== +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_c2tnb431r1 +PeerKey=MALICE_cf_c2tnb431r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_c2tnb431r1 +PeerKey=MALICE_cf_c2tnb431r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=prime192v1 curve tests + +PrivateKey=ALICE_cf_prime192v1 +-----BEGIN PRIVATE KEY----- +MDkCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQEEHzAdAgEBBBhQFYLaobJ47BVWWZv/ByY8Ti69m/U9 +TeI= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_prime192v1_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAQEDMgAEHYbt14KzucSpmKMrlDx1IGz/a28nDs21OjKgx3BK +PZ78UrllIr69kgrYUKsRg4sd +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_prime192v1:ALICE_cf_prime192v1_PUB + +PrivateKey=BOB_cf_prime192v1 +-----BEGIN PRIVATE KEY----- +MDkCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQEEHzAdAgEBBBhsbmKHAtygIqirkmUXSbniDJOx0/fI +CWM= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_prime192v1_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAQEDMgAEJA+FQcXq5Axzv8pLDslxq1QVt1hjN2i0TgoO6Yxp +bAekMot69VorE8ibSzgJixXJ +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_prime192v1:BOB_cf_prime192v1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_prime192v1 +PeerKey=BOB_cf_prime192v1_PUB +SharedSecret=e36cad3b0f8d00f60f090440a76df47896713ae61421c354 + +# ECDH Bob with Alice peer +Derive=BOB_cf_prime192v1 +PeerKey=ALICE_cf_prime192v1_PUB +SharedSecret=e36cad3b0f8d00f60f090440a76df47896713ae61421c354 + +Title=prime192v2 curve tests + +PrivateKey=ALICE_cf_prime192v2 +-----BEGIN PRIVATE KEY----- +MDkCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQIEHzAdAgEBBBh6rcgPFDmA2P4CGSrC7ii9DAjepljX +sMM= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_prime192v2_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAQIDMgAET6wOPoDU3BeU7VKozsGEvDeJs//9Z/aNEcbbLQ0d +g5IzsS/XMJzifjCJZgNsb7mi +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_prime192v2:ALICE_cf_prime192v2_PUB + +PrivateKey=BOB_cf_prime192v2 +-----BEGIN PRIVATE KEY----- +MDkCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQIEHzAdAgEBBBja4R9iZuiu95XEuM1558ArTwNnAl7M +xqI= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_prime192v2_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAQIDMgAEcgWNAOL4pZCmouZl+be+rC0yLAJkm2YuPWs+FX2u +Y6OU1aHkkspZTC1uUVWjchy5 +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_prime192v2:BOB_cf_prime192v2_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_prime192v2 +PeerKey=BOB_cf_prime192v2_PUB +SharedSecret=ae2ff9f1f9f24e6d281dc78993d9f71913e1e105965000a1 + +# ECDH Bob with Alice peer +Derive=BOB_cf_prime192v2 +PeerKey=ALICE_cf_prime192v2_PUB +SharedSecret=ae2ff9f1f9f24e6d281dc78993d9f71913e1e105965000a1 + +Title=prime192v3 curve tests + +PrivateKey=ALICE_cf_prime192v3 +-----BEGIN PRIVATE KEY----- +MDkCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQMEHzAdAgEBBBij5blPQRKM1/9c57YDZXIIue80MDqx +Igw= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_prime192v3_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAQMDMgAE1+mLeiT/jjHO71IL/C/ZcnF6+yj9FV6eqfuPdHAi +MsDRFCB6/h8TcCUFuospu5l0 +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_prime192v3:ALICE_cf_prime192v3_PUB + +PrivateKey=BOB_cf_prime192v3 +-----BEGIN PRIVATE KEY----- +MDkCAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQMEHzAdAgEBBBhgFP4fFLtm/yk5tsosBUBKTg370FOu +92g= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_prime192v3_PUB +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAQMDMgAEv35bOz0xqLeJqpZdZ8LyiUgsJMBEtN2UMJm8blX2 +vMWAgEeLhzar86BUlS7dZwS7 +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_prime192v3:BOB_cf_prime192v3_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_prime192v3 +PeerKey=BOB_cf_prime192v3_PUB +SharedSecret=9e562ecbe29c510a13b0daea822ec864c2a9684d2a382812 + +# ECDH Bob with Alice peer +Derive=BOB_cf_prime192v3 +PeerKey=ALICE_cf_prime192v3_PUB +SharedSecret=9e562ecbe29c510a13b0daea822ec864c2a9684d2a382812 + +Title=prime239v1 curve tests + +PrivateKey=ALICE_cf_prime239v1 +-----BEGIN PRIVATE KEY----- +MD8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQQEJTAjAgEBBB5nH2mt/GUx+I/60NlcuQlrdupDXwMY +SF/w+SUTNqY= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_prime239v1_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAQQDPgAEMqQLCgDR9njkq9QELuOu+J/9YGcxJHULdvxHImLW +RXqBUM5Xea+Qk2SKIpWcogxr2zFeQyeLj2bQysuo +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_prime239v1:ALICE_cf_prime239v1_PUB + +PrivateKey=BOB_cf_prime239v1 +-----BEGIN PRIVATE KEY----- +MD8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQQEJTAjAgEBBB5RZgYV+j+zhwI12zCzB+mdPofMx0kB +jZ9gplgXxzk= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_prime239v1_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAQQDPgAEBR5m/kllh025oO4GvqALkjRliVv7q4x8ro/tkYnT +L2U4hkT6xUeRu9QC4KOz7KUVH+nBbQASL4XQg/3C +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_prime239v1:BOB_cf_prime239v1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_prime239v1 +PeerKey=BOB_cf_prime239v1_PUB +SharedSecret=196b1d0206d4f87c313c266bfb12c90dd1f1f64b89bfc16518086b9801b8 + +# ECDH Bob with Alice peer +Derive=BOB_cf_prime239v1 +PeerKey=ALICE_cf_prime239v1_PUB +SharedSecret=196b1d0206d4f87c313c266bfb12c90dd1f1f64b89bfc16518086b9801b8 + +Title=prime239v2 curve tests + +PrivateKey=ALICE_cf_prime239v2 +-----BEGIN PRIVATE KEY----- +MD8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQUEJTAjAgEBBB5uLCwofbD2Suc/iIRhXJsPqZ4me87h ++tFevsg1pPE= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_prime239v2_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAQUDPgAETH77jXHBItV673gTNK/HTFldo4VxPiscbideUgKd +CWjdVsXebgAZbqQwf0h9QWcIgM7K7ODdW5kCuZ1G +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_prime239v2:ALICE_cf_prime239v2_PUB + +PrivateKey=BOB_cf_prime239v2 +-----BEGIN PRIVATE KEY----- +MD8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQUEJTAjAgEBBB5nlF+ouuw3Ljkgy3pHkCN+/JoHAMyT +KY0wlvJdo/w= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_prime239v2_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAQUDPgAELUQYo0UH8HbK/RMD2jVphBU+iB4OTOfvaaTlHq06 +dcJ8a9a+mAQKhb1OZVEq1n4nQsgRiI1rPxugVERM +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_prime239v2:BOB_cf_prime239v2_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_prime239v2 +PeerKey=BOB_cf_prime239v2_PUB +SharedSecret=1d18ca6366bceba3c1477daa0e08202088abcf14fc2b8fbf98ba95858fcf + +# ECDH Bob with Alice peer +Derive=BOB_cf_prime239v2 +PeerKey=ALICE_cf_prime239v2_PUB +SharedSecret=1d18ca6366bceba3c1477daa0e08202088abcf14fc2b8fbf98ba95858fcf + +Title=prime239v3 curve tests + +PrivateKey=ALICE_cf_prime239v3 +-----BEGIN PRIVATE KEY----- +MD8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQYEJTAjAgEBBB5J95JRhBDTzlyAPAfu6T2Pb9vK0NKu +Y9AfhA2G+mI= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_prime239v3_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAQYDPgAEZEN48pqgLF08Yjj/8BLM2Nr5ZhpYxyBurbzKRuBb +GLpzZLteJN9vZjN7ouNpMxLVUFQxTOwpsvUw86Lk +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_prime239v3:ALICE_cf_prime239v3_PUB + +PrivateKey=BOB_cf_prime239v3 +-----BEGIN PRIVATE KEY----- +MD8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQYEJTAjAgEBBB5Z7rMZML1xeryBaYYr+QuMiQxHT44I +d9bmIVvG3dM= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_prime239v3_PUB +-----BEGIN PUBLIC KEY----- +MFUwEwYHKoZIzj0CAQYIKoZIzj0DAQYDPgAEQUWKqohAPAoIYEZOvc1QwSlcB+gW0febaNxGOy47 +LaIWdsNM7GJVP9xpdSwm/L+Dip/oH4E59f3SiOAd +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_prime239v3:BOB_cf_prime239v3_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_prime239v3 +PeerKey=BOB_cf_prime239v3_PUB +SharedSecret=4dcc2c67c5993162ed71ebb33077bbb85395b0d3eec2311aa404e45901a0 + +# ECDH Bob with Alice peer +Derive=BOB_cf_prime239v3 +PeerKey=ALICE_cf_prime239v3_PUB +SharedSecret=4dcc2c67c5993162ed71ebb33077bbb85395b0d3eec2311aa404e45901a0 + +Title=prime256v1 curve tests + +PrivateKey=ALICE_cf_prime256v1 +-----BEGIN PRIVATE KEY----- +MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCDZE0NZiGAFJX6JQxumKTFRT+XFCQqJ +gHCUxmU2fRcn9Q== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_prime256v1_PUB +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5kDOrX6kmk1/jHfEdMBluFos6dyCbzKVOX3v2aa2 +y5IhlhTKtCJdydX+XWLDXWW9sbtIRNP94R3iOOpRPBqpGg== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_prime256v1:ALICE_cf_prime256v1_PUB + +PrivateKey=BOB_cf_prime256v1 +-----BEGIN PRIVATE KEY----- +MEECAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQcEJzAlAgEBBCAxJgV1dLJw/o2Dmh1fIY1KpBd88WCP +23wZzR8DzhyCrA== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_prime256v1_PUB +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5J6yA+j0zrGi6RilUhjrcL7OUMzYTwpnw5DdRXr0 +creHgE03EFV//7xqadB4BDwFIGM9MV2sE6qREEomWhZFeg== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_prime256v1:BOB_cf_prime256v1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_prime256v1 +PeerKey=BOB_cf_prime256v1_PUB +SharedSecret=ee63690b553dcd9bccb066137725f0489395a83f4d280f309339d606c969734a + +# ECDH Bob with Alice peer +Derive=BOB_cf_prime256v1 +PeerKey=ALICE_cf_prime256v1_PUB +SharedSecret=ee63690b553dcd9bccb066137725f0489395a83f4d280f309339d606c969734a + +Title=secp112r1 curve tests + +PrivateKey=ALICE_cf_secp112r1 +-----BEGIN PRIVATE KEY----- +MCwCAQAwEAYHKoZIzj0CAQYFK4EEAAYEFTATAgEBBA6zC5ZzEIIdvY4Q7DS0uw== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_secp112r1_PUB +-----BEGIN PUBLIC KEY----- +MDIwEAYHKoZIzj0CAQYFK4EEAAYDHgAEYIawfjH3qRrJJWwuG3Ys5ZhDJsmdWi34aHgKAA== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_secp112r1:ALICE_cf_secp112r1_PUB + +PrivateKey=BOB_cf_secp112r1 +-----BEGIN PRIVATE KEY----- +MCwCAQAwEAYHKoZIzj0CAQYFK4EEAAYEFTATAgEBBA6WPx4YxBODium8BKDw0A== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_secp112r1_PUB +-----BEGIN PUBLIC KEY----- +MDIwEAYHKoZIzj0CAQYFK4EEAAYDHgAEchh3iQdPN1rrzrpdZRQ95G6tvdwEBQ+gfu1tvA== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_secp112r1:BOB_cf_secp112r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_secp112r1 +PeerKey=BOB_cf_secp112r1_PUB +SharedSecret=4ddd1d504b444d4be67ba2e4610a + +# ECDH Bob with Alice peer +Derive=BOB_cf_secp112r1 +PeerKey=ALICE_cf_secp112r1_PUB +SharedSecret=4ddd1d504b444d4be67ba2e4610a + +Title=secp112r2 curve tests + +PrivateKey=ALICE_cf_secp112r2 +-----BEGIN PRIVATE KEY----- +MCwCAQAwEAYHKoZIzj0CAQYFK4EEAAcEFTATAgEBBA4GcvIx97ePHdAiH0Z9EA== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_secp112r2_PUB +-----BEGIN PUBLIC KEY----- +MDIwEAYHKoZIzj0CAQYFK4EEAAcDHgAEHK9uNAILHBmPZdKKh79/nzYE0HbvC//rA7i0Xw== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_secp112r2:ALICE_cf_secp112r2_PUB + +PrivateKey=BOB_cf_secp112r2 +-----BEGIN PRIVATE KEY----- +MCwCAQAwEAYHKoZIzj0CAQYFK4EEAAcEFTATAgEBBA4WzpVFZnZv9mvtpnYNyw== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_secp112r2_PUB +-----BEGIN PUBLIC KEY----- +MDIwEAYHKoZIzj0CAQYFK4EEAAcDHgAEUzBLNQupqUpGgmZl9JVjKBpwusl52rFg5OVFJA== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_secp112r2:BOB_cf_secp112r2_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_secp112r2 +PeerKey=BOB_cf_secp112r2_PUB +SharedSecret=a6d05c7ba5128a9685c705b5030b + +# ECDH Bob with Alice peer +Derive=BOB_cf_secp112r2 +PeerKey=ALICE_cf_secp112r2_PUB +SharedSecret=a6d05c7ba5128a9685c705b5030b + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_secp112r2 +PeerKey=BOB_cf_secp112r2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=04f3280e92c269d794aa779efcef + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_secp112r2 +PeerKey=ALICE_cf_secp112r2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=04f3280e92c269d794aa779efcef + +PublicKey=MALICE_cf_secp112r2_PUB +-----BEGIN PUBLIC KEY----- +MDIwEAYHKoZIzj0CAQYFK4EEAAcDHgAEsf2N4SfUZWtXPrUTmEyr71I/JSn8VtzQsFHuqQ== +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_secp112r2 +PeerKey=MALICE_cf_secp112r2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_secp112r2 +PeerKey=MALICE_cf_secp112r2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=secp128r1 curve tests + +PrivateKey=ALICE_cf_secp128r1 +-----BEGIN PRIVATE KEY----- +MC4CAQAwEAYHKoZIzj0CAQYFK4EEABwEFzAVAgEBBBB+RX18d0+gKpdcKbJJTrEZ +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_secp128r1_PUB +-----BEGIN PUBLIC KEY----- +MDYwEAYHKoZIzj0CAQYFK4EEABwDIgAEG0XMAdrAZOPUW6L9ADU8XK8sZr7dtIcDinSWU1zSV9s= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_secp128r1:ALICE_cf_secp128r1_PUB + +PrivateKey=BOB_cf_secp128r1 +-----BEGIN PRIVATE KEY----- +MC4CAQAwEAYHKoZIzj0CAQYFK4EEABwEFzAVAgEBBBB/J9/eClt9mimGwOcOsjJF +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_secp128r1_PUB +-----BEGIN PUBLIC KEY----- +MDYwEAYHKoZIzj0CAQYFK4EEABwDIgAE82nknsOS+u8mybP0KJqQhvm83gbPNTZOcvm0ZDVR5sU= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_secp128r1:BOB_cf_secp128r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_secp128r1 +PeerKey=BOB_cf_secp128r1_PUB +SharedSecret=5020f1b759da1f737a61a29a268d7669 + +# ECDH Bob with Alice peer +Derive=BOB_cf_secp128r1 +PeerKey=ALICE_cf_secp128r1_PUB +SharedSecret=5020f1b759da1f737a61a29a268d7669 + +Title=secp128r2 curve tests + +PrivateKey=ALICE_cf_secp128r2 +-----BEGIN PRIVATE KEY----- +MC4CAQAwEAYHKoZIzj0CAQYFK4EEAB0EFzAVAgEBBBALPaUYCnPgNiLhez93Z1Gi +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_secp128r2_PUB +-----BEGIN PUBLIC KEY----- +MDYwEAYHKoZIzj0CAQYFK4EEAB0DIgAEOKiPRGtZXwxmvTr35NmUkNsAGGk9RKNA4D5BE9ZrjZQ= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_secp128r2:ALICE_cf_secp128r2_PUB + +PrivateKey=BOB_cf_secp128r2 +-----BEGIN PRIVATE KEY----- +MC4CAQAwEAYHKoZIzj0CAQYFK4EEAB0EFzAVAgEBBBARg3vb436QgyHdyt6l/b6G +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_secp128r2_PUB +-----BEGIN PUBLIC KEY----- +MDYwEAYHKoZIzj0CAQYFK4EEAB0DIgAELph7h27BYjIINC2EddcpIOxKbdz8Xe7h3Az1ZuR9bAI= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_secp128r2:BOB_cf_secp128r2_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_secp128r2 +PeerKey=BOB_cf_secp128r2_PUB +SharedSecret=8f4d8c75141e9b084328222440eb5dfa + +# ECDH Bob with Alice peer +Derive=BOB_cf_secp128r2 +PeerKey=ALICE_cf_secp128r2_PUB +SharedSecret=8f4d8c75141e9b084328222440eb5dfa + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_secp128r2 +PeerKey=BOB_cf_secp128r2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=baaa0c16e16eef291001475d638e4830 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_secp128r2 +PeerKey=ALICE_cf_secp128r2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=baaa0c16e16eef291001475d638e4830 + +PublicKey=MALICE_cf_secp128r2_PUB +-----BEGIN PUBLIC KEY----- +MDYwEAYHKoZIzj0CAQYFK4EEAB0DIgAE6h6RzJIp6HLR6RDOPtyzGDurkuE9aAaZqHosPTnkLxQ= +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_secp128r2 +PeerKey=MALICE_cf_secp128r2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_secp128r2 +PeerKey=MALICE_cf_secp128r2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=secp160k1 curve tests + +PrivateKey=ALICE_cf_secp160k1 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAAkEHDAaAgEBBBUAlxTBO50KwFwWKPtk1rutu68m+zI= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_secp160k1_PUB +-----BEGIN PUBLIC KEY----- +MD4wEAYHKoZIzj0CAQYFK4EEAAkDKgAEcVWIjtPZn1cHckclpn5jKDCphQUVHxFN5tSeFG9wsJZT +EvqPyLS64w== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_secp160k1:ALICE_cf_secp160k1_PUB + +PrivateKey=BOB_cf_secp160k1 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAAkEHDAaAgEBBBUAdrPkoNkRVUloiuwzruQszSUuwpY= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_secp160k1_PUB +-----BEGIN PUBLIC KEY----- +MD4wEAYHKoZIzj0CAQYFK4EEAAkDKgAESGN41cAj8Fg4pAJM7FUKHiawbCR0b9unMpZWxqOKeW1/ +bxT/CqEkyw== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_secp160k1:BOB_cf_secp160k1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_secp160k1 +PeerKey=BOB_cf_secp160k1_PUB +SharedSecret=b738a0bf17f3271a9a155bfdfe2f0f1d51494d42 + +# ECDH Bob with Alice peer +Derive=BOB_cf_secp160k1 +PeerKey=ALICE_cf_secp160k1_PUB +SharedSecret=b738a0bf17f3271a9a155bfdfe2f0f1d51494d42 + +Title=secp160r1 curve tests + +PrivateKey=ALICE_cf_secp160r1 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAAgEHDAaAgEBBBUAR6m1+jIBuJnSKx9fHmyAYhsnYe8= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_secp160r1_PUB +-----BEGIN PUBLIC KEY----- +MD4wEAYHKoZIzj0CAQYFK4EEAAgDKgAEO78GZuBaCfJjHK97c9N21z+4mm37b5x7/Hr3Xc4pUbtb +OoNj/A+W9w== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_secp160r1:ALICE_cf_secp160r1_PUB + +PrivateKey=BOB_cf_secp160r1 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAAgEHDAaAgEBBBUATqvd54Jj7TbnrLAd2dMYCpExLws= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_secp160r1_PUB +-----BEGIN PUBLIC KEY----- +MD4wEAYHKoZIzj0CAQYFK4EEAAgDKgAEBKDbBSPTwmb00MFvMtJMxQ2YDmcPOZHE8YbVr5hp8s5J +Jwy17FaNNg== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_secp160r1:BOB_cf_secp160r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_secp160r1 +PeerKey=BOB_cf_secp160r1_PUB +SharedSecret=1912ea7b9bb1de5b8d3cef83e7a6e7a917816541 + +# ECDH Bob with Alice peer +Derive=BOB_cf_secp160r1 +PeerKey=ALICE_cf_secp160r1_PUB +SharedSecret=1912ea7b9bb1de5b8d3cef83e7a6e7a917816541 + +Title=secp160r2 curve tests + +PrivateKey=ALICE_cf_secp160r2 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAB4EHDAaAgEBBBUA3IsVg4R4paXaPATDHvzfnvM+vjQ= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_secp160r2_PUB +-----BEGIN PUBLIC KEY----- +MD4wEAYHKoZIzj0CAQYFK4EEAB4DKgAE4V+25YCpVkKF6NF/UPc1SYxohYWcf3qT3JDoPRhnm/rj +mSqCCA6gUw== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_secp160r2:ALICE_cf_secp160r2_PUB + +PrivateKey=BOB_cf_secp160r2 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAB4EHDAaAgEBBBUAYT/5C7UpD17DnZm4ObswmGFMI1Q= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_secp160r2_PUB +-----BEGIN PUBLIC KEY----- +MD4wEAYHKoZIzj0CAQYFK4EEAB4DKgAEB7YVzBmzhnIdouvN/nb8VMXCqO8dkhmebyVzoD0oAzuH +nN+SfWr6aQ== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_secp160r2:BOB_cf_secp160r2_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_secp160r2 +PeerKey=BOB_cf_secp160r2_PUB +SharedSecret=ccb9cae5c9487ff60c487bd1b39a62eb4680e9b6 + +# ECDH Bob with Alice peer +Derive=BOB_cf_secp160r2 +PeerKey=ALICE_cf_secp160r2_PUB +SharedSecret=ccb9cae5c9487ff60c487bd1b39a62eb4680e9b6 + +Title=secp192k1 curve tests + +PrivateKey=ALICE_cf_secp192k1 +-----BEGIN PRIVATE KEY----- +MDYCAQAwEAYHKoZIzj0CAQYFK4EEAB8EHzAdAgEBBBikVZrCZQB7ZtkhNfQYpjKHZ9KxXgooJ90= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_secp192k1_PUB +-----BEGIN PUBLIC KEY----- +MEYwEAYHKoZIzj0CAQYFK4EEAB8DMgAEyV4EzMZglBXtYdn38hNTrCGflAsJprMkxkOlw58chZ25 +6EAu7gVvYDTpnRkymKyH +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_secp192k1:ALICE_cf_secp192k1_PUB + +PrivateKey=BOB_cf_secp192k1 +-----BEGIN PRIVATE KEY----- +MDYCAQAwEAYHKoZIzj0CAQYFK4EEAB8EHzAdAgEBBBiJQ/PunKGk9QPUyqIBGMgHKKg+yxJr5io= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_secp192k1_PUB +-----BEGIN PUBLIC KEY----- +MEYwEAYHKoZIzj0CAQYFK4EEAB8DMgAE990Tnmh9QQQHVHuLpfrAsgjvB9R2MJXzhBZN1WvtxLqF +OZ2oFMP0Kfcr7HbI7a5j +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_secp192k1:BOB_cf_secp192k1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_secp192k1 +PeerKey=BOB_cf_secp192k1_PUB +SharedSecret=a46a6bfb279d4dc30cffac585d1fbec905dbe46aca5e3c9d + +# ECDH Bob with Alice peer +Derive=BOB_cf_secp192k1 +PeerKey=ALICE_cf_secp192k1_PUB +SharedSecret=a46a6bfb279d4dc30cffac585d1fbec905dbe46aca5e3c9d + +Title=secp224k1 curve tests + +PrivateKey=ALICE_cf_secp224k1 +-----BEGIN PRIVATE KEY----- +MDsCAQAwEAYHKoZIzj0CAQYFK4EEACAEJDAiAgEBBB0AZPk3TzxGhX7TljBBhJDLBfulAMp6Bh3W +w40Qyg== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_secp224k1_PUB +-----BEGIN PUBLIC KEY----- +ME4wEAYHKoZIzj0CAQYFK4EEACADOgAE4o7LGdJDixqJZ5imnqaX4IeE55NG4W0HEe72LVC7pmn2 +e3m7uC92ZQhduF9lJli4dXD5en/1wkE= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_secp224k1:ALICE_cf_secp224k1_PUB + +PrivateKey=BOB_cf_secp224k1 +-----BEGIN PRIVATE KEY----- +MDsCAQAwEAYHKoZIzj0CAQYFK4EEACAEJDAiAgEBBB0AdQ02GguRy3yHOjLkpoWb27QA/L1abfWe +q2xUfA== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_secp224k1_PUB +-----BEGIN PUBLIC KEY----- +ME4wEAYHKoZIzj0CAQYFK4EEACADOgAEzp00m0DaADn1mGiDCT7K1LZnoj/vCxHPowUDC9yQd17K +KpJM5sGILrTkkgxqtt5pBeYE1NC1QUQ= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_secp224k1:BOB_cf_secp224k1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_secp224k1 +PeerKey=BOB_cf_secp224k1_PUB +SharedSecret=6f7b9d16c9c1d3a5c84b6028f2a4fed9ae8e02455e678a27243bcc48 + +# ECDH Bob with Alice peer +Derive=BOB_cf_secp224k1 +PeerKey=ALICE_cf_secp224k1_PUB +SharedSecret=6f7b9d16c9c1d3a5c84b6028f2a4fed9ae8e02455e678a27243bcc48 + +Title=secp224r1 curve tests + +PrivateKey=ALICE_cf_secp224r1 +-----BEGIN PRIVATE KEY----- +MDoCAQAwEAYHKoZIzj0CAQYFK4EEACEEIzAhAgEBBBzeo7Y0HMfrIqKNm3r997jcfVAa4osa0AR2 +JA28 +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_secp224r1_PUB +-----BEGIN PUBLIC KEY----- +ME4wEAYHKoZIzj0CAQYFK4EEACEDOgAExZc6o84XjBGLOosGj2t0QctgiyzF3NcVgy+DeW7stkVs +yS2tRzMPBpwnApRzoRsdJR99sb3eM2s= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_secp224r1:ALICE_cf_secp224r1_PUB + +PrivateKey=BOB_cf_secp224r1 +-----BEGIN PRIVATE KEY----- +MDoCAQAwEAYHKoZIzj0CAQYFK4EEACEEIzAhAgEBBBy2LsqxHhdlSiAmMYKQAEmjJWT22T42GYKo +ZvXM +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_secp224r1_PUB +-----BEGIN PUBLIC KEY----- +ME4wEAYHKoZIzj0CAQYFK4EEACEDOgAE71Eh6hwTKUrmyl2PdkY787GwxiohIcaqB4eK2Mwg6tU4 +LeJHWcgY18CgPKCaeldUgnkMcJzKj20= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_secp224r1:BOB_cf_secp224r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_secp224r1 +PeerKey=BOB_cf_secp224r1_PUB +SharedSecret=29d8b75934d74d5153bbb94e0370437c63ecc30bf3d2800ed1cb7eb5 + +# ECDH Bob with Alice peer +Derive=BOB_cf_secp224r1 +PeerKey=ALICE_cf_secp224r1_PUB +SharedSecret=29d8b75934d74d5153bbb94e0370437c63ecc30bf3d2800ed1cb7eb5 + +Title=secp256k1 curve tests + +PrivateKey=ALICE_cf_secp256k1 +-----BEGIN PRIVATE KEY----- +MD4CAQAwEAYHKoZIzj0CAQYFK4EEAAoEJzAlAgEBBCDV8jMZ/aJfiMEkW7HsYqbT57Y7vmvm5KN/ +QEXqsNCSpw== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_secp256k1_PUB +-----BEGIN PUBLIC KEY----- +MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAElytZZZHc9CelGzZkNGpzY2CHQ+3z6tUnfsQxUmtiZnUg +7oKfQC5BV8pZ5WYNPWnbT0RRg5kyBtzry9oQIhO5Lw== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_secp256k1:ALICE_cf_secp256k1_PUB + +PrivateKey=BOB_cf_secp256k1 +-----BEGIN PRIVATE KEY----- +MD4CAQAwEAYHKoZIzj0CAQYFK4EEAAoEJzAlAgEBBCBh7awFyPey/w4pKBycpAlhvT4DlLQsi1TT +BxJPHrAjrA== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_secp256k1_PUB +-----BEGIN PUBLIC KEY----- +MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAE2BQeSJOa7kJAQsAPUbLseHjHhMe3tUOAl3bqoDqtrfO+ +2m2MP/IC/R9Kof2nmaiQ6DostdbS8kB+CnnprK375w== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_secp256k1:BOB_cf_secp256k1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_secp256k1 +PeerKey=BOB_cf_secp256k1_PUB +SharedSecret=a4745cc4d19cabb9e5cb0abdd5c604cab2846a4638ad844ed9175f3cadda2da1 + +# ECDH Bob with Alice peer +Derive=BOB_cf_secp256k1 +PeerKey=ALICE_cf_secp256k1_PUB +SharedSecret=a4745cc4d19cabb9e5cb0abdd5c604cab2846a4638ad844ed9175f3cadda2da1 + +Title=secp384r1 curve tests + +PrivateKey=ALICE_cf_secp384r1 +-----BEGIN PRIVATE KEY----- +ME4CAQAwEAYHKoZIzj0CAQYFK4EEACIENzA1AgEBBDAp1ErG6wVjuJs90qVbUBxNpQK1wtV4ieX1 +bIU/4HssZK6WjOOTyYguyEBCOf/rUnw= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_secp384r1_PUB +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEx5rt+yujIuPoIXpHGmExKSi/P+58sGYoqgdpdOJUXzn2 +Rc4alCpSxVJeC55xvwaFHc3pzNyRGwnhPmN6oU/KMP6XjBvR4wq35mr/Sym5s0B2blAzkJU37idq +nTi3xGHx +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_secp384r1:ALICE_cf_secp384r1_PUB + +PrivateKey=BOB_cf_secp384r1 +-----BEGIN PRIVATE KEY----- +ME4CAQAwEAYHKoZIzj0CAQYFK4EEACIENzA1AgEBBDAUjVgPpiI+xXye0nfRhc8+12hLdWY4fpsO +Jq2MCp+W85xJwtXsEPrHj1XFnKVpM4c= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_secp384r1_PUB +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE+JUBXRSHixH0TrcvYvIzep7+/WNpEhWdCPsLMygigW5j +pzP30MF41GnQYgfJu5wI/gu1C/jFTv1X6Dgmla3JxBYlPeD+1L0lEMT3evmHKMM/BFe3WKBuXyhP +ilrNtfee +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_secp384r1:BOB_cf_secp384r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_secp384r1 +PeerKey=BOB_cf_secp384r1_PUB +SharedSecret=b3cfe488126e2731fb7c19f82e94fcc05e1dd303649a9257e858030b795c2d344a054b0c44a24fd7f5821f531a9b8cfb + +# ECDH Bob with Alice peer +Derive=BOB_cf_secp384r1 +PeerKey=ALICE_cf_secp384r1_PUB +SharedSecret=b3cfe488126e2731fb7c19f82e94fcc05e1dd303649a9257e858030b795c2d344a054b0c44a24fd7f5821f531a9b8cfb + +Title=secp521r1 curve tests + +PrivateKey=ALICE_cf_secp521r1 +-----BEGIN PRIVATE KEY----- +MGACAQAwEAYHKoZIzj0CAQYFK4EEACMESTBHAgEBBEIBsYIcUKeN2evB626LCdYWH/xzUiEDCdRP +rEENsC8//dowKnOCtlLtawh0DXTIZ/HhpUREuaoffdsmYb6+Oq1TRjc= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_secp521r1_PUB +-----BEGIN PUBLIC KEY----- +MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBufYxJf/4Ds6g7LlFRVS62ljm3xApV2T79hfWH8Lv +iroIaCFjLBIfOVDF8jvj2PO1ar3yCLiSA2RiLZz1Y+tv/tcATHE0nS7l3SfGiGmEnVycEnhgqlKM +UM3kpdd7eNkQn5/GO8KAPQqA/sOnvTavg5S01t0ub+PY/w0Y6oBgthaUAW0= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_secp521r1:ALICE_cf_secp521r1_PUB + +PrivateKey=BOB_cf_secp521r1 +-----BEGIN PRIVATE KEY----- +MGACAQAwEAYHKoZIzj0CAQYFK4EEACMESTBHAgEBBEIB+3/adZnNwr6GFUzZpi8So7pC/5FYQ0+0 +lMmoUjGvy8DNADcHaPpW68hX/M+z7LrK0Jpnonb9JSEXlgjOPVe4Ea8= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_secp521r1_PUB +-----BEGIN PUBLIC KEY----- +MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBLq2fjyCalnvr24tjaz87ijIWlLMoCH7Hmyq1t2l8 +PFbyBIZbngDC0gwFM5ZI582QSWlW79G3clJP9VxlJOsms50BYBYgd6o2JF4w8AnShVXxFSJU1py4 +klCDNhTFybRHFXpujfuUeNnFxAGIUb4edJ0fAqqc7kkERhYe8EPEZYMKp3Q= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_secp521r1:BOB_cf_secp521r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_secp521r1 +PeerKey=BOB_cf_secp521r1_PUB +SharedSecret=01dd4aa9037bb4ad298b420998dcd32b3a9af1cda8b7919e372aeb4e54ccfb4d2409a340ed896bfbc5dd462f8d96b8784bc17b29db3ca04700e6ec752f9bec777695 + +# ECDH Bob with Alice peer +Derive=BOB_cf_secp521r1 +PeerKey=ALICE_cf_secp521r1_PUB +SharedSecret=01dd4aa9037bb4ad298b420998dcd32b3a9af1cda8b7919e372aeb4e54ccfb4d2409a340ed896bfbc5dd462f8d96b8784bc17b29db3ca04700e6ec752f9bec777695 + +Title=sect113r1 curve tests + +PrivateKey=ALICE_cf_sect113r1 +-----BEGIN PRIVATE KEY----- +MC0CAQAwEAYHKoZIzj0CAQYFK4EEAAQEFjAUAgEBBA8ALw9CgsuNBkkhhUHE8bQ= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect113r1_PUB +-----BEGIN PUBLIC KEY----- +MDQwEAYHKoZIzj0CAQYFK4EEAAQDIAAEASO9jcamlg1pRE7JffrTAe9kyRZO2xrymHXoGdnA +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect113r1:ALICE_cf_sect113r1_PUB + +PrivateKey=BOB_cf_sect113r1 +-----BEGIN PRIVATE KEY----- +MC0CAQAwEAYHKoZIzj0CAQYFK4EEAAQEFjAUAgEBBA8A/9qbs8sTFNkjS9/4CuM= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect113r1_PUB +-----BEGIN PUBLIC KEY----- +MDQwEAYHKoZIzj0CAQYFK4EEAAQDIAAEATykaf/cvJzLOUto1EbbAEz/3++nut6q0dcJOQeV +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect113r1:BOB_cf_sect113r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect113r1 +PeerKey=BOB_cf_sect113r1_PUB +SharedSecret=01ed16f1948dcb368a54004237842d + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect113r1 +PeerKey=ALICE_cf_sect113r1_PUB +SharedSecret=01ed16f1948dcb368a54004237842d + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect113r1 +PeerKey=BOB_cf_sect113r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=012e5f3e348c2a8a88d9590a639219 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect113r1 +PeerKey=ALICE_cf_sect113r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=012e5f3e348c2a8a88d9590a639219 + +PublicKey=MALICE_cf_sect113r1_PUB +-----BEGIN PUBLIC KEY----- +MDQwEAYHKoZIzj0CAQYFK4EEAAQDIAAEAAAAAAAAAAAAAAAAAAAAAd+TqiBXnTd/lyA/OFsR +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect113r1 +PeerKey=MALICE_cf_sect113r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect113r1 +PeerKey=MALICE_cf_sect113r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect113r2 curve tests + +PrivateKey=ALICE_cf_sect113r2 +-----BEGIN PRIVATE KEY----- +MC0CAQAwEAYHKoZIzj0CAQYFK4EEAAUEFjAUAgEBBA8AvovirHrqTxoKJ3l+7y0= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect113r2_PUB +-----BEGIN PUBLIC KEY----- +MDQwEAYHKoZIzj0CAQYFK4EEAAUDIAAEAFvQ4JgQTS8kjGeVfuITAS81qNcOQvt3PYa1HuCk +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect113r2:ALICE_cf_sect113r2_PUB + +PrivateKey=BOB_cf_sect113r2 +-----BEGIN PRIVATE KEY----- +MC0CAQAwEAYHKoZIzj0CAQYFK4EEAAUEFjAUAgEBBA8ArUjgvp/goxRYb4WuQ80= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect113r2_PUB +-----BEGIN PUBLIC KEY----- +MDQwEAYHKoZIzj0CAQYFK4EEAAUDIAAEAUoS3of8y28meYu/NoI5AVdhJZCuDjMqFHTriWY4 +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect113r2:BOB_cf_sect113r2_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect113r2 +PeerKey=BOB_cf_sect113r2_PUB +SharedSecret=0057a287ba1ea05cb4735e673647e1 + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect113r2 +PeerKey=ALICE_cf_sect113r2_PUB +SharedSecret=0057a287ba1ea05cb4735e673647e1 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect113r2 +PeerKey=BOB_cf_sect113r2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=00fec2454e46732aca42b22b6d4f13 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect113r2 +PeerKey=ALICE_cf_sect113r2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=00fec2454e46732aca42b22b6d4f13 + +PublicKey=MALICE_cf_sect113r2_PUB +-----BEGIN PUBLIC KEY----- +MDQwEAYHKoZIzj0CAQYFK4EEAAUDIAAEAAAAAAAAAAAAAAAAAAAAAR3dbPHrhFekzJ7Azskr +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect113r2 +PeerKey=MALICE_cf_sect113r2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect113r2 +PeerKey=MALICE_cf_sect113r2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect131r1 curve tests + +PrivateKey=ALICE_cf_sect131r1 +-----BEGIN PRIVATE KEY----- +MC8CAQAwEAYHKoZIzj0CAQYFK4EEABYEGDAWAgEBBBEA5C6zHMQM7pXPZ6cJz72Niw== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect131r1_PUB +-----BEGIN PUBLIC KEY----- +MDgwEAYHKoZIzj0CAQYFK4EEABYDJAAEBXCuXD6wOOif91GUlJNKXf8FBNw8crgqi5aEJEZbCdBJ +Ag== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect131r1:ALICE_cf_sect131r1_PUB + +PrivateKey=BOB_cf_sect131r1 +-----BEGIN PRIVATE KEY----- +MC8CAQAwEAYHKoZIzj0CAQYFK4EEABYEGDAWAgEBBBEDYZmjiokBJ/SnTv8sskBR3A== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect131r1_PUB +-----BEGIN PUBLIC KEY----- +MDgwEAYHKoZIzj0CAQYFK4EEABYDJAAEB8vGy3OQXwWKcJUSSJbCtpMBjFgJeZxzAaI420+B1B+1 +5A== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect131r1:BOB_cf_sect131r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect131r1 +PeerKey=BOB_cf_sect131r1_PUB +SharedSecret=05346248f77f81fff50cc656e119976871 + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect131r1 +PeerKey=ALICE_cf_sect131r1_PUB +SharedSecret=05346248f77f81fff50cc656e119976871 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect131r1 +PeerKey=BOB_cf_sect131r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=01f151ae26efa507acc2597356baf7e8ab + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect131r1 +PeerKey=ALICE_cf_sect131r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=01f151ae26efa507acc2597356baf7e8ab + +PublicKey=MALICE_cf_sect131r1_PUB +-----BEGIN PUBLIC KEY----- +MDgwEAYHKoZIzj0CAQYFK4EEABYDJAAEAAAAAAAAAAAAAAAAAAAAAAABfiJEFG0vRzEGxk2BxjmK +zw== +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect131r1 +PeerKey=MALICE_cf_sect131r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect131r1 +PeerKey=MALICE_cf_sect131r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect131r2 curve tests + +PrivateKey=ALICE_cf_sect131r2 +-----BEGIN PRIVATE KEY----- +MC8CAQAwEAYHKoZIzj0CAQYFK4EEABcEGDAWAgEBBBEBnZRUKAQetk5kyUwhIaAyxg== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect131r2_PUB +-----BEGIN PUBLIC KEY----- +MDgwEAYHKoZIzj0CAQYFK4EEABcDJAAEA5+Y20L8q989I4jnKknZ7hcGlQ6RUIGni9RahT88kB/d +dw== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect131r2:ALICE_cf_sect131r2_PUB + +PrivateKey=BOB_cf_sect131r2 +-----BEGIN PRIVATE KEY----- +MC8CAQAwEAYHKoZIzj0CAQYFK4EEABcEGDAWAgEBBBEBnafx9vcMeoCqj/1YNuflzw== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect131r2_PUB +-----BEGIN PUBLIC KEY----- +MDgwEAYHKoZIzj0CAQYFK4EEABcDJAAEB2G2uNkhQNjjl0/Ov6UYpxoFaWNXO+qy7poV6cdrFN7z +pA== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect131r2:BOB_cf_sect131r2_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect131r2 +PeerKey=BOB_cf_sect131r2_PUB +SharedSecret=058d8a8be33068ed8c1dc9f551ef2c3f3c + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect131r2 +PeerKey=ALICE_cf_sect131r2_PUB +SharedSecret=058d8a8be33068ed8c1dc9f551ef2c3f3c + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect131r2 +PeerKey=BOB_cf_sect131r2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=037b16d85f27c2c878ef96c79a536f89a5 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect131r2 +PeerKey=ALICE_cf_sect131r2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=037b16d85f27c2c878ef96c79a536f89a5 + +PublicKey=MALICE_cf_sect131r2_PUB +-----BEGIN PUBLIC KEY----- +MDgwEAYHKoZIzj0CAQYFK4EEABcDJAAEAAAAAAAAAAAAAAAAAAAAAAAGG5fiIbgziwBZHVzTYqCY +1w== +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect131r2 +PeerKey=MALICE_cf_sect131r2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect131r2 +PeerKey=MALICE_cf_sect131r2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect163k1 curve tests + +PrivateKey=ALICE_cf_sect163k1 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAAEEHDAaAgEBBBUB905PYfmej8LzbzX6Bg51GJzXQjQ= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect163k1_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFK4EEAAEDLAAEBfvs5A1hD8YySP9O2ub8GEUfotVuBpfRx4GIHdAfx8wV +1UVeTRnyAlWU +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect163k1:ALICE_cf_sect163k1_PUB + +PrivateKey=BOB_cf_sect163k1 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAAEEHDAaAgEBBBUCHPtCjJ4/K8ylQBcLlb5VE0bkaUE= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect163k1_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFK4EEAAEDLAAEBvgfX1mTRlt6Z4TE1D1MNWo4loH4AoeYa6oowK104LKk +nsdg7isQ8XBD +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect163k1:BOB_cf_sect163k1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect163k1 +PeerKey=BOB_cf_sect163k1_PUB +SharedSecret=04d0e40788c5ce5220818055277cae53eac55c1e6b + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect163k1 +PeerKey=ALICE_cf_sect163k1_PUB +SharedSecret=04d0e40788c5ce5220818055277cae53eac55c1e6b + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect163k1 +PeerKey=BOB_cf_sect163k1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=04c902a91110244d89110034dd2b099c49cbab6c77 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect163k1 +PeerKey=ALICE_cf_sect163k1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=04c902a91110244d89110034dd2b099c49cbab6c77 + +PublicKey=MALICE_cf_sect163k1_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFK4EEAAEDLAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAB +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect163k1 +PeerKey=MALICE_cf_sect163k1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect163k1 +PeerKey=MALICE_cf_sect163k1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect163r1 curve tests + +PrivateKey=ALICE_cf_sect163r1 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAAIEHDAaAgEBBBUAlbn4x1UGJnAimsXufB/UvUaxU5U= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect163r1_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFK4EEAAIDLAAEA0f195HCcD4D+7wWyl3QuPkRovG/ATy5l7fpMl4BNIg/ +sbtEXluCzANF +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect163r1:ALICE_cf_sect163r1_PUB + +PrivateKey=BOB_cf_sect163r1 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAAIEHDAaAgEBBBUAoStq6Fjb7nB2PNL6WrzKKqhCGdE= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect163r1_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFK4EEAAIDLAAEAul/oBKr9B5MsPHWGF+q07j0JC+WAxj1JzfcIXR98n+r +9FHWU5LC5pDM +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect163r1:BOB_cf_sect163r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect163r1 +PeerKey=BOB_cf_sect163r1_PUB +SharedSecret=06135eef489fe613c0d8bd522a2a640ff7ae6fb73d + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect163r1 +PeerKey=ALICE_cf_sect163r1_PUB +SharedSecret=06135eef489fe613c0d8bd522a2a640ff7ae6fb73d + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect163r1 +PeerKey=BOB_cf_sect163r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=0580f5e8efb242a19ae1023acbcab8702c799751e7 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect163r1 +PeerKey=ALICE_cf_sect163r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=0580f5e8efb242a19ae1023acbcab8702c799751e7 + +PublicKey=MALICE_cf_sect163r1_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFK4EEAAIDLAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkXolVuGFa8fqmk +cs0Bv7iJuVg1 +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect163r1 +PeerKey=MALICE_cf_sect163r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect163r1 +PeerKey=MALICE_cf_sect163r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect163r2 curve tests + +PrivateKey=ALICE_cf_sect163r2 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAA8EHDAaAgEBBBUBjCs/M3N31jsAueYrOq21vdETwAI= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect163r2_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFK4EEAA8DLAAEBd8Z1/HpA+89hF4I98EST3svWns3BAEbhWmL/fgxk2uu +YwVrmqhgqH/C +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect163r2:ALICE_cf_sect163r2_PUB + +PrivateKey=BOB_cf_sect163r2 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFK4EEAA8EHDAaAgEBBBUBsiouT9Df+mwHWrpPg1JSrY9nqlI= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect163r2_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFK4EEAA8DLAAEBULqBZ+nhLhDEMYY8NEEzZ126MdxAcFXWv8zmPEH9505 +8vT5zU3aq6HV +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect163r2:BOB_cf_sect163r2_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect163r2 +PeerKey=BOB_cf_sect163r2_PUB +SharedSecret=019f829a53c4e6544bdec1395a23082169efaf369d + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect163r2 +PeerKey=ALICE_cf_sect163r2_PUB +SharedSecret=019f829a53c4e6544bdec1395a23082169efaf369d + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect163r2 +PeerKey=BOB_cf_sect163r2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=048870d39235ecbc16a000ee478833509b9318a53f + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect163r2 +PeerKey=ALICE_cf_sect163r2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=048870d39235ecbc16a000ee478833509b9318a53f + +PublicKey=MALICE_cf_sect163r2_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFK4EEAA8DLAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsJbhbrfiSdZPSHD +ZtqJwDlp802l +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect163r2 +PeerKey=MALICE_cf_sect163r2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect163r2 +PeerKey=MALICE_cf_sect163r2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect193r1 curve tests + +PrivateKey=ALICE_cf_sect193r1 +-----BEGIN PRIVATE KEY----- +MDcCAQAwEAYHKoZIzj0CAQYFK4EEABgEIDAeAgEBBBkACmcvidKWLtPFB2xqg76F8VhM1Njzrkgo +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect193r1_PUB +-----BEGIN PUBLIC KEY----- +MEgwEAYHKoZIzj0CAQYFK4EEABgDNAAEAeqP0VQobenduwtf4MPmlYQVDjUmxKq50QFHnaBfzwXY +1TYShZZgBr0R6a5dUGCbiF0= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect193r1:ALICE_cf_sect193r1_PUB + +PrivateKey=BOB_cf_sect193r1 +-----BEGIN PRIVATE KEY----- +MDcCAQAwEAYHKoZIzj0CAQYFK4EEABgEIDAeAgEBBBkAKlSknQ66vpuLjC1mbQyfHOTdJ5Kw5jMh +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect193r1_PUB +-----BEGIN PUBLIC KEY----- +MEgwEAYHKoZIzj0CAQYFK4EEABgDNAAEAaFZVIeqfV9wbPydaBSJKSWJjVyFVSB/QQB5rHonYQmK +f40zok8PJS6ratIcZwk/n20= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect193r1:BOB_cf_sect193r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect193r1 +PeerKey=BOB_cf_sect193r1_PUB +SharedSecret=012b8849991814f8c7ed9d40cf9dc204c3a83e0b10675543a5 + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect193r1 +PeerKey=ALICE_cf_sect193r1_PUB +SharedSecret=012b8849991814f8c7ed9d40cf9dc204c3a83e0b10675543a5 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect193r1 +PeerKey=BOB_cf_sect193r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=0110180a18844859c52f6f012909522a2d87b5ab143bc80a55 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect193r1 +PeerKey=ALICE_cf_sect193r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=0110180a18844859c52f6f012909522a2d87b5ab143bc80a55 + +PublicKey=MALICE_cf_sect193r1_PUB +-----BEGIN PUBLIC KEY----- +MEgwEAYHKoZIzj0CAQYFK4EEABgDNAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeX7PX3e5n +zROUg6/STkLp1D+L51L9+wY= +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect193r1 +PeerKey=MALICE_cf_sect193r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect193r1 +PeerKey=MALICE_cf_sect193r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect193r2 curve tests + +PrivateKey=ALICE_cf_sect193r2 +-----BEGIN PRIVATE KEY----- +MDcCAQAwEAYHKoZIzj0CAQYFK4EEABkEIDAeAgEBBBkAhjkv8lXK/nPp3Qc4IwL/29JUKWi2VBMp +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect193r2_PUB +-----BEGIN PUBLIC KEY----- +MEgwEAYHKoZIzj0CAQYFK4EEABkDNAAEAIn7oSu3adu4ChNXniHKkMIv9gT24rpzzwAeCTDPIkUT +kJ+Tit6e4RpgkB/dph4V+uI= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect193r2:ALICE_cf_sect193r2_PUB + +PrivateKey=BOB_cf_sect193r2 +-----BEGIN PRIVATE KEY----- +MDcCAQAwEAYHKoZIzj0CAQYFK4EEABkEIDAeAgEBBBkAwGkR3qSQdfh7Q6KbJ4lH5FShGsX8o/jD +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect193r2_PUB +-----BEGIN PUBLIC KEY----- +MEgwEAYHKoZIzj0CAQYFK4EEABkDNAAEAFdSLKI0tlwZDpkndutOLsnHii1aJO8snwEJ0m/AZgMp +xiDevOQ/xE9SpMX25W7YqkU= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect193r2:BOB_cf_sect193r2_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect193r2 +PeerKey=BOB_cf_sect193r2_PUB +SharedSecret=01e2f66a63c24c1de8a399c484228a5ad5b6d911c6e5e83ae3 + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect193r2 +PeerKey=ALICE_cf_sect193r2_PUB +SharedSecret=01e2f66a63c24c1de8a399c484228a5ad5b6d911c6e5e83ae3 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect193r2 +PeerKey=BOB_cf_sect193r2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=00bc82d393bd74406683aea003977a86a109f444a833652e43 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect193r2 +PeerKey=ALICE_cf_sect193r2_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=00bc82d393bd74406683aea003977a86a109f444a833652e43 + +PublicKey=MALICE_cf_sect193r2_PUB +-----BEGIN PUBLIC KEY----- +MEgwEAYHKoZIzj0CAQYFK4EEABkDNAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFfdLEkrvsO +Y7+6QpEvOay9A4MJCUZfZmI= +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect193r2 +PeerKey=MALICE_cf_sect193r2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect193r2 +PeerKey=MALICE_cf_sect193r2_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect233k1 curve tests + +PrivateKey=ALICE_cf_sect233k1 +-----BEGIN PRIVATE KEY----- +MDsCAQAwEAYHKoZIzj0CAQYFK4EEABoEJDAiAgEBBB0z/3heNFjJL+2sAT/38yRsN3kt2iXz7u+y +Gua8Kw== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect233k1_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEALQyn0zJmOrHm4S2EIjxRe899PadBnfpYjLKWGvpAIzf +MEG861Nv1IYJkmkO1xlfNHeeRtqFgsQVFKZh +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect233k1:ALICE_cf_sect233k1_PUB + +PrivateKey=BOB_cf_sect233k1 +-----BEGIN PRIVATE KEY----- +MDsCAQAwEAYHKoZIzj0CAQYFK4EEABoEJDAiAgEBBB1I0ucrC4d9i6Z+0cbar5r7uKpF5iiQkSJA +DFMTUA== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect233k1_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAatdqazxSghJ568CBFyMXhEvVeAiLewOY/jk9H5DAOB4 +ufNGbdd131KLaKPivB38a6n5Y+2BVSJangow +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect233k1:BOB_cf_sect233k1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect233k1 +PeerKey=BOB_cf_sect233k1_PUB +SharedSecret=012145026e8de65973c154e085456fc5539ba9e25663e7f5816abfcab310 + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect233k1 +PeerKey=ALICE_cf_sect233k1_PUB +SharedSecret=012145026e8de65973c154e085456fc5539ba9e25663e7f5816abfcab310 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect233k1 +PeerKey=BOB_cf_sect233k1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=00ff7d6c6b80f39d2ae68fbd00adbcd75fa599ed0bc1aac0e3f49c1c164d + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect233k1 +PeerKey=ALICE_cf_sect233k1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=00ff7d6c6b80f39d2ae68fbd00adbcd75fa599ed0bc1aac0e3f49c1c164d + +PublicKey=MALICE_cf_sect233k1_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect233k1 +PeerKey=MALICE_cf_sect233k1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect233k1 +PeerKey=MALICE_cf_sect233k1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect233r1 curve tests + +PrivateKey=ALICE_cf_sect233r1 +-----BEGIN PRIVATE KEY----- +MDwCAQAwEAYHKoZIzj0CAQYFK4EEABsEJTAjAgEBBB4ATcy7zVpIsJ9rl5EIDmzRz5wxjrDIQyDm +HP3Pt8Y= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect233r1_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABsDPgAEAQMQHiJ44LiCnZkEg1zyww1h+idTbsw8E07P33WUAUfD +NeQ4hWEhTXPnytIbEhFKpnd3j/FbyZnJqxh8 +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect233r1:ALICE_cf_sect233r1_PUB + +PrivateKey=BOB_cf_sect233r1 +-----BEGIN PRIVATE KEY----- +MDwCAQAwEAYHKoZIzj0CAQYFK4EEABsEJTAjAgEBBB4ALpOlFn4OfiIAkRAZGOsn7L6W3XoQBSV8 +mQVC2pw= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect233r1_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABsDPgAEAJQw+NWqFJXYw4dVMovzvw76OYnYOTaDaEPNW8ECAQbl +TzzbBSTp5iqM13mP0/Bo4OO66NS3lA9e/GTO +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect233r1:BOB_cf_sect233r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect233r1 +PeerKey=BOB_cf_sect233r1_PUB +SharedSecret=00209d2995a63f1e8b7a5c33dee5abb602e32e1835ae8bb57eb264d8d795 + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect233r1 +PeerKey=ALICE_cf_sect233r1_PUB +SharedSecret=00209d2995a63f1e8b7a5c33dee5abb602e32e1835ae8bb57eb264d8d795 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect233r1 +PeerKey=BOB_cf_sect233r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=00c3cd1d38a65f5e421399409a76cec1136bc84149f054a7f55e7980c612 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect233r1 +PeerKey=ALICE_cf_sect233r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=00c3cd1d38a65f5e421399409a76cec1136bc84149f054a7f55e7980c612 + +PublicKey=MALICE_cf_sect233r1_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEABsDPgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYf4 +Vie5eHTnR+4x4G1xyq7qUvISU+X5RtBh2pE4 +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect233r1 +PeerKey=MALICE_cf_sect233r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect233r1 +PeerKey=MALICE_cf_sect233r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect239k1 curve tests + +PrivateKey=ALICE_cf_sect239k1 +-----BEGIN PRIVATE KEY----- +MDwCAQAwEAYHKoZIzj0CAQYFK4EEAAMEJTAjAgEBBB4G4nbQDUtTnkrPOvDGIlhH9XdjirUSbTI5 +5z6lf7o= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect239k1_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEAAMDPgAEf5paOMjzcnpVAPMQnIkikE4K2jne3ubX2TD1P3aedknF +lUr6tOU4BsiUQJACF90rQ9/KdeR5mYvYHzvI +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect239k1:ALICE_cf_sect239k1_PUB + +PrivateKey=BOB_cf_sect239k1 +-----BEGIN PRIVATE KEY----- +MDwCAQAwEAYHKoZIzj0CAQYFK4EEAAMEJTAjAgEBBB4e0F0NpepAF+iNrEtoZeo4TrQFspkUNLcx +Ly4Klfg= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect239k1_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEAAMDPgAEKnjJ4RHe+EiElXMrF4ou7VGy1pn0ZiO17FouF31Zbvjc +TcbhfE6ziXM8sekQJBwcwRKQ9+G/Qzq/2A9x +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect239k1:BOB_cf_sect239k1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect239k1 +PeerKey=BOB_cf_sect239k1_PUB +SharedSecret=0ef54c7b7dbf55d4278e7a6924dc4833c63ec708e820d501cacdfb4935d5 + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect239k1 +PeerKey=ALICE_cf_sect239k1_PUB +SharedSecret=0ef54c7b7dbf55d4278e7a6924dc4833c63ec708e820d501cacdfb4935d5 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect239k1 +PeerKey=BOB_cf_sect239k1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=592e4b33ac99624fe7f2f879cf52f12a70f189c5d90785db26a12e0a46c0 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect239k1 +PeerKey=ALICE_cf_sect239k1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=592e4b33ac99624fe7f2f879cf52f12a70f189c5d90785db26a12e0a46c0 + +PublicKey=MALICE_cf_sect239k1_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFK4EEAAMDPgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect239k1 +PeerKey=MALICE_cf_sect239k1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect239k1 +PeerKey=MALICE_cf_sect239k1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect283k1 curve tests + +PrivateKey=ALICE_cf_sect283k1 +-----BEGIN PRIVATE KEY----- +MEICAQAwEAYHKoZIzj0CAQYFK4EEABAEKzApAgEBBCQAY1Mi9rST7PiP1t03qYRczV/kSZ+VjQu8 +5EFCgxyvkaLManw= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect283k1_PUB +-----BEGIN PUBLIC KEY----- +MF4wEAYHKoZIzj0CAQYFK4EEABADSgAEBMjBO8WoxHS/vz8po52WZGxS+RK5yolrUe6tfbAMA3Sd +5/JjBDVjOz95vM4gUnqzUWHN5nKBQtj6HiU9Q/R+zqg98OiQKTyA +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect283k1:ALICE_cf_sect283k1_PUB + +PrivateKey=BOB_cf_sect283k1 +-----BEGIN PRIVATE KEY----- +MEICAQAwEAYHKoZIzj0CAQYFK4EEABAEKzApAgEBBCQBCZC8Is+YSjgXJBBDioEl6gu14QpGHllD +1J6957vBTPSQdH0= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect283k1_PUB +-----BEGIN PUBLIC KEY----- +MF4wEAYHKoZIzj0CAQYFK4EEABADSgAEAGEQKZVHYAlvtjHrFyZVm12qUb5j+T5/WNoC962+kwUM +QkBYA5BpuG8Knlugq1iB31whPAgRCZfdLKHpHRPJSfXvKyUIdeUm +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect283k1:BOB_cf_sect283k1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect283k1 +PeerKey=BOB_cf_sect283k1_PUB +SharedSecret=03f67c88bdc230b43773d17fdb4d0a980556d074ceccee726932160e4ed965e3be72803c + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect283k1 +PeerKey=ALICE_cf_sect283k1_PUB +SharedSecret=03f67c88bdc230b43773d17fdb4d0a980556d074ceccee726932160e4ed965e3be72803c + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect283k1 +PeerKey=BOB_cf_sect283k1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=0677ba01c84d139609ca145cb5b6079fc9ca67f59c9c913e47cad1073f1d1dfaddde0169 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect283k1 +PeerKey=ALICE_cf_sect283k1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=0677ba01c84d139609ca145cb5b6079fc9ca67f59c9c913e47cad1073f1d1dfaddde0169 + +PublicKey=MALICE_cf_sect283k1_PUB +-----BEGIN PUBLIC KEY----- +MF4wEAYHKoZIzj0CAQYFK4EEABADSgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect283k1 +PeerKey=MALICE_cf_sect283k1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect283k1 +PeerKey=MALICE_cf_sect283k1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect283r1 curve tests + +PrivateKey=ALICE_cf_sect283r1 +-----BEGIN PRIVATE KEY----- +MEICAQAwEAYHKoZIzj0CAQYFK4EEABEEKzApAgEBBCQCQ5pqKvPxDysd1pi2Bv8Z11cFhsRZfuaf +4Pi0hpGr4ubZcHE= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect283r1_PUB +-----BEGIN PUBLIC KEY----- +MF4wEAYHKoZIzj0CAQYFK4EEABEDSgAEBcsrGDgO7pbGybQX/00gRHtQq3+X9XrGb7Uzv9Nabwc/ +kntnBMF0I2KU+aaTjQx1GVtmNf7CvFwPLEBnfKjJAjekjsGyIqoq +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect283r1:ALICE_cf_sect283r1_PUB + +PrivateKey=BOB_cf_sect283r1 +-----BEGIN PRIVATE KEY----- +MEICAQAwEAYHKoZIzj0CAQYFK4EEABEEKzApAgEBBCQDxItnY3cDCrX/jGnVuAKDPaySZCr3E83Q +UdFnP6YIykt7+Pg= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect283r1_PUB +-----BEGIN PUBLIC KEY----- +MF4wEAYHKoZIzj0CAQYFK4EEABEDSgAEBJ2C9BCkX0YRfs2ufgUKvreUXFWp2AGK+iHlZB4N3LqO +PKpmAkrAeCMty6mw2mEnOR5HA1d4Ee+z7/NJgJJ80Ra9bFnreOW3 +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect283r1:BOB_cf_sect283r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect283r1 +PeerKey=BOB_cf_sect283r1_PUB +SharedSecret=0424259cf09727574fb863cab7c27d8fe3835e96433110a45a951f94347fc81939ec4773 + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect283r1 +PeerKey=ALICE_cf_sect283r1_PUB +SharedSecret=0424259cf09727574fb863cab7c27d8fe3835e96433110a45a951f94347fc81939ec4773 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect283r1 +PeerKey=BOB_cf_sect283r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=01c2a542654ce85b17456ed75b6bca6b6eb761580913670debc426a3525f236df0e875c8 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect283r1 +PeerKey=ALICE_cf_sect283r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=01c2a542654ce85b17456ed75b6bca6b6eb761580913670debc426a3525f236df0e875c8 + +PublicKey=MALICE_cf_sect283r1_PUB +-----BEGIN PUBLIC KEY----- +MF4wEAYHKoZIzj0CAQYFK4EEABEDSgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAByvMnFeSsevoGYMIn7b4NaL9IgowRCTKF8CCrhdEKu3pubP2 +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect283r1 +PeerKey=MALICE_cf_sect283r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect283r1 +PeerKey=MALICE_cf_sect283r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect409k1 curve tests + +PrivateKey=ALICE_cf_sect409k1 +-----BEGIN PRIVATE KEY----- +MFECAQAwEAYHKoZIzj0CAQYFK4EEACQEOjA4AgEBBDMOthcLahkXFgM0wjOzm767D1A72sFRGlhb +bVH+EB7z2WpIcPX4OD+M4Y1pf/a7wSaoSAo= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect409k1_PUB +-----BEGIN PUBLIC KEY----- +MH4wEAYHKoZIzj0CAQYFK4EEACQDagAEAbiYYpeFgCMsZFMzQaiwMJDrC+mCMT7KmhYtD5EMMgLW +5OvhaqYdpRf49A8LOtVcRT7J5gGcMrXQgmQeS3FenA5owWnB2NIgrTNf5d8AAEtrOupsJ4c3kL6e +aAzayZ1+UCEj8skbC9U= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect409k1:ALICE_cf_sect409k1_PUB + +PrivateKey=BOB_cf_sect409k1 +-----BEGIN PRIVATE KEY----- +MFECAQAwEAYHKoZIzj0CAQYFK4EEACQEOjA4AgEBBDMO43ldQllTewdZwffH4OEXdzBrLwabKsn4 +6/hjgIAaYda/pt4yCEQLMp18QgtfMey5ENI= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect409k1_PUB +-----BEGIN PUBLIC KEY----- +MH4wEAYHKoZIzj0CAQYFK4EEACQDagAEAVTQj6hRizVmOx4Z6vroN/zMkmAY+QhkQ0CnFeJ0AydY +Fv+f+/420vMC1Mhqsc9VzPMmIAH6ZrgGKDsd4Ce9JUtYE0rVhGeiG2RaN1U5RlhVK4avkWhFlyQ5 +vuu4aApQiWE3yQd9v/I= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect409k1:BOB_cf_sect409k1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect409k1 +PeerKey=BOB_cf_sect409k1_PUB +SharedSecret=01fbe13188588c9d1ac3a8a2680ea9a009b28e4b7d7fa4efcb1a22553876fb7973616819fd87c75e5b8ce6e3628595e4ce12edb0 + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect409k1 +PeerKey=ALICE_cf_sect409k1_PUB +SharedSecret=01fbe13188588c9d1ac3a8a2680ea9a009b28e4b7d7fa4efcb1a22553876fb7973616819fd87c75e5b8ce6e3628595e4ce12edb0 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect409k1 +PeerKey=BOB_cf_sect409k1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=007e9485f7234bb2255bb40e51f4be867cb0ef31f8e489a697b31b51c4d5346daaee51e96ae6f9636e6e3af56095fe28755325ee + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect409k1 +PeerKey=ALICE_cf_sect409k1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=007e9485f7234bb2255bb40e51f4be867cb0ef31f8e489a697b31b51c4d5346daaee51e96ae6f9636e6e3af56095fe28755325ee + +PublicKey=MALICE_cf_sect409k1_PUB +-----BEGIN PUBLIC KEY----- +MH4wEAYHKoZIzj0CAQYFK4EEACQDagAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAA= +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect409k1 +PeerKey=MALICE_cf_sect409k1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect409k1 +PeerKey=MALICE_cf_sect409k1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect409r1 curve tests + +PrivateKey=ALICE_cf_sect409r1 +-----BEGIN PRIVATE KEY----- +MFICAQAwEAYHKoZIzj0CAQYFK4EEACUEOzA5AgEBBDQAxSC9lST5dtfXQI1Ug9VMMoue3GGni5ON ++gieyXK2KKbd29KAPs4/AOd8kX2wQDsZPO7E +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect409r1_PUB +-----BEGIN PUBLIC KEY----- +MH4wEAYHKoZIzj0CAQYFK4EEACUDagAEASAvXAM15DJerAu1JttpBuMJK1/fEfFohu2iEpt3r7Ui +iQoER6HUsWiw1hhcJyTv7WzpJQHFWrOlJMe/KjmQa/CygSc65YHDzG27oUL+KGdQUGc79ZRSwl/q +fGZqa3D+bDVMwrhmZto= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect409r1:ALICE_cf_sect409r1_PUB + +PrivateKey=BOB_cf_sect409r1 +-----BEGIN PRIVATE KEY----- +MFICAQAwEAYHKoZIzj0CAQYFK4EEACUEOzA5AgEBBDQARen+1P3JQzBgOv0pUYwsZTPRVLpqqDAU +7mKL2lk9eH7zSGmtNoMvP2m1S2dBnXxFY/bV +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect409r1_PUB +-----BEGIN PUBLIC KEY----- +MH4wEAYHKoZIzj0CAQYFK4EEACUDagAEAbDUw066TtdfOpDvrlKosEyqUNEG7rY+AKvDqKw+HOzf +sUTYee6cEf71oqJ1sCKPQiYzlwCu/HLQeWPxISE6Uo+53kkeJml2xpMBwoE25Gq/DSS61dR7SRTZ ++sUmumbIuGzbrjtMRmw= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect409r1:BOB_cf_sect409r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect409r1 +PeerKey=BOB_cf_sect409r1_PUB +SharedSecret=00a751259cdb3b445ce71a40a01a2189dfce70226111190505fc6eabe4e5a05bff7af55f2015e1ffcab6aea7ea9a6e74905da2a1 + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect409r1 +PeerKey=ALICE_cf_sect409r1_PUB +SharedSecret=00a751259cdb3b445ce71a40a01a2189dfce70226111190505fc6eabe4e5a05bff7af55f2015e1ffcab6aea7ea9a6e74905da2a1 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect409r1 +PeerKey=BOB_cf_sect409r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=0115a31aed416c5089d74a263ec300aff13a5329c6ad27de950ae0b0917b40a3464fccf5691ac9633a51e5177a82b15cfc434aad + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect409r1 +PeerKey=ALICE_cf_sect409r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=0115a31aed416c5089d74a263ec300aff13a5329c6ad27de950ae0b0917b40a3464fccf5691ac9633a51e5177a82b15cfc434aad + +PublicKey=MALICE_cf_sect409r1_PUB +-----BEGIN PUBLIC KEY----- +MH4wEAYHKoZIzj0CAQYFK4EEACUDagAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAACZNffkdo7i7yL5tKKfU8tdk6su0K185XwbJkn96JWVDPZXZ3My +bFKKSOJ7hyrM8Lwl1e8= +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect409r1 +PeerKey=MALICE_cf_sect409r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect409r1 +PeerKey=MALICE_cf_sect409r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect571k1 curve tests + +PrivateKey=ALICE_cf_sect571k1 +-----BEGIN PRIVATE KEY----- +MGYCAQAwEAYHKoZIzj0CAQYFK4EEACYETzBNAgEBBEgB4agvk7Qdf9bVb9aMVdtXL0MuVw6dTleB +zrpPMYty/piI5GWkQEGVp4OJSjF1BGgWmtYSYlV0oI8jJ7hfWTjVGfVWix4ipb8= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect571k1_PUB +-----BEGIN PUBLIC KEY----- +MIGnMBAGByqGSM49AgEGBSuBBAAmA4GSAAQDUZq0ZrgYpTXNpOptjExaur0K9FAYHv1j9cvAptwX +dcmQf3VqekMkGZCfNdqNeqCajG3QHRkBHe4FZhWr3FXi8whvvr463lUDf+t46un1kE6FTYfhILGa +sBZm7OdfkarYd9TXBbmnkFA+XkyPlkM1+6daM3/WmnegK+TYghFDXLgwiyF8s0ElllF7z38Gmc4= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect571k1:ALICE_cf_sect571k1_PUB + +PrivateKey=BOB_cf_sect571k1 +-----BEGIN PRIVATE KEY----- +MGYCAQAwEAYHKoZIzj0CAQYFK4EEACYETzBNAgEBBEgA3pINxGOI7L9M+Mil+bm/udPwI4xu7ubJ +p3aoOepTXW94laf8wjFLcQnRUwH87Vbq9VLQEfCAFvr2vZoBc+5asnNuDhRNNeQ= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect571k1_PUB +-----BEGIN PUBLIC KEY----- +MIGnMBAGByqGSM49AgEGBSuBBAAmA4GSAAQDZRr5GCSq2uzGxmWNB+bED7zye18Rr/KehwXrbn1r +rKtR8fe+dg2V15FieC3qZe/wCpMtyp79VmEabGi6iGLlAN/rUE81URsA/K7GVpmklslV5gmwryR0 +3E7jGKPFesun9iNtmpgM18P9y3aJd4Qr4hMlwW2Nyw187l6QB/W2e/i+8vKXFTLHlz5WLAyAcpA= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect571k1:BOB_cf_sect571k1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect571k1 +PeerKey=BOB_cf_sect571k1_PUB +SharedSecret=02b79c92cee50dc5b9fdddce36d4fa2e28d7d178cd74e575961f39429496305b38815c840c2e66327435c044ed885ec964068531251a2112717602532e8b6d5411db2fe05c1ac18c + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect571k1 +PeerKey=ALICE_cf_sect571k1_PUB +SharedSecret=02b79c92cee50dc5b9fdddce36d4fa2e28d7d178cd74e575961f39429496305b38815c840c2e66327435c044ed885ec964068531251a2112717602532e8b6d5411db2fe05c1ac18c + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect571k1 +PeerKey=BOB_cf_sect571k1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=063aea789492c9727a5a6b7f24e8d3d377c70ee8e86b13664e191a53b1905e90e78b85960b1881db5160c7c5cacca0d686d9e104140d565eeeec17426f93d3a7ba639ecd716b43d2 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect571k1 +PeerKey=ALICE_cf_sect571k1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=063aea789492c9727a5a6b7f24e8d3d377c70ee8e86b13664e191a53b1905e90e78b85960b1881db5160c7c5cacca0d686d9e104140d565eeeec17426f93d3a7ba639ecd716b43d2 + +PublicKey=MALICE_cf_sect571k1_PUB +-----BEGIN PUBLIC KEY----- +MIGnMBAGByqGSM49AgEGBSuBBAAmA4GSAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE= +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect571k1 +PeerKey=MALICE_cf_sect571k1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect571k1 +PeerKey=MALICE_cf_sect571k1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=sect571r1 curve tests + +PrivateKey=ALICE_cf_sect571r1 +-----BEGIN PRIVATE KEY----- +MGYCAQAwEAYHKoZIzj0CAQYFK4EEACcETzBNAgEBBEgAxfL2/gUsmJonvDMR95Azq1ySgXMlKSRk ++PL+WaS92ZyOo45HaC7RpH5sdkf4b948u6y1BXOxGZuORXy6lgbgZ1Zx2UgL3cI= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_sect571r1_PUB +-----BEGIN PUBLIC KEY----- +MIGnMBAGByqGSM49AgEGBSuBBAAnA4GSAAQBK5L9ccIWacU2A1srZ35opPu6kcbEOsBPmvj/rlMS +fFrdMOcagOYfcD0/ouYHPhvkHbr9k87IlQJfnV6ZNRA4PmWSp/FjkNwETm/fqTCUQHti/qqnKH7R +Ed4fYROLFGvz+PX6E20SryOt1vrmoRyC7Z5FVmgMVOQQ1AaBNAHi3+IPtKx41YdXdbqHJxuI5jE= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_sect571r1:ALICE_cf_sect571r1_PUB + +PrivateKey=BOB_cf_sect571r1 +-----BEGIN PRIVATE KEY----- +MGYCAQAwEAYHKoZIzj0CAQYFK4EEACcETzBNAgEBBEgAzcRvASPpWi0ybpOGlj0Lozz01C2a5oDA +G5alib1EmZKcpVULxJXn75FQlTKpkUEuWUgA4yk5X5DTiScUuh4LDhaF3AFhsEY= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_sect571r1_PUB +-----BEGIN PUBLIC KEY----- +MIGnMBAGByqGSM49AgEGBSuBBAAnA4GSAAQH3dnL22NajtqDWTX6qD14w1BOlpHFBUPTr24VySlh +kiiBlOF95u7hFr/hSb7gm/3f+IVKyE18Sh2kR4KaxWcPWKY5xKTiqiICT7hCistuzNRt8gR+kNOT +c1rETMV6ZruZinwzEWWWjwJf6612oy2HG3CX3B8Rm+a3sS0q6IzowEwqmDv6v9bMTFk8bsCv0Fk= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_sect571r1:BOB_cf_sect571r1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_sect571r1 +PeerKey=BOB_cf_sect571r1_PUB +SharedSecret=0031f9879fa75b8c67ba81ee861be634e2b53aa79f834e9a8ca4df7f4461bcb02f083d9fa5b4767f881a710caa6524b58eb626623ba394961d46535204c26d165089e7d4f7be1827 + +# ECDH Bob with Alice peer +Derive=BOB_cf_sect571r1 +PeerKey=ALICE_cf_sect571r1_PUB +SharedSecret=0031f9879fa75b8c67ba81ee861be634e2b53aa79f834e9a8ca4df7f4461bcb02f083d9fa5b4767f881a710caa6524b58eb626623ba394961d46535204c26d165089e7d4f7be1827 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_sect571r1 +PeerKey=BOB_cf_sect571r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=012e8c2c1554988fe20c5ae7d11cdcfe15c7c6e8d2b6f46a43a45d724bfc7b415ea7594d5c16f770a95d6e65bbcb1f34619db95e89f4fecbcb0bc6a3f92d52df6a49b0e7773e0ac0 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_sect571r1 +PeerKey=ALICE_cf_sect571r1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=012e8c2c1554988fe20c5ae7d11cdcfe15c7c6e8d2b6f46a43a45d724bfc7b415ea7594d5c16f770a95d6e65bbcb1f34619db95e89f4fecbcb0bc6a3f92d52df6a49b0e7773e0ac0 + +PublicKey=MALICE_cf_sect571r1_PUB +-----BEGIN PUBLIC KEY----- +MIGnMBAGByqGSM49AgEGBSuBBAAnA4GSAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHMtVWZAwgtd1zmgWN/9WC +aNQcWRNUKesEHXqhJVkC5jYsSACodKsLYFNrWEYM0gwG8DQONZSn93G+38EM45tkaZsIRDt2HEM= +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_sect571r1 +PeerKey=MALICE_cf_sect571r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_sect571r1 +PeerKey=MALICE_cf_sect571r1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=wap-wsg-idm-ecid-wtls10 curve tests + +PrivateKey=ALICE_cf_wap-wsg-idm-ecid-wtls10 +-----BEGIN PRIVATE KEY----- +MDsCAQAwEAYHKoZIzj0CAQYFZysBBAoEJDAiAgEBBB1zvDMHGgcytka5KvlvQvJzTA4l2ts2NzBp +SJiGyw== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_wap-wsg-idm-ecid-wtls10_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFZysBBAoDPgAEAZkrhWBz/Q4GB8DY4Ia114ew6H7Eg7ri2uxwxd3rAZs5 +/ShvunNyndjCt3Qaq8sulBM0nUyERSDakyD+ +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_wap-wsg-idm-ecid-wtls10:ALICE_cf_wap-wsg-idm-ecid-wtls10_PUB + +PrivateKey=BOB_cf_wap-wsg-idm-ecid-wtls10 +-----BEGIN PRIVATE KEY----- +MDsCAQAwEAYHKoZIzj0CAQYFZysBBAoEJDAiAgEBBB1SowkHU79PqokOfgllN53rNS8a3h1wFBY0 +dKPkQg== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_wap-wsg-idm-ecid-wtls10_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFZysBBAoDPgAEAGavw4ChHCoWplAumMEBwJgJ2aYtw+utu4vhWnscAPIT +IJ4IiIGj18rCFBap1sgVbpXjhEBLYg6Itwv2 +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_wap-wsg-idm-ecid-wtls10:BOB_cf_wap-wsg-idm-ecid-wtls10_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls10 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls10_PUB +SharedSecret=0194ef5d80fdfe9df366b2273b983c3dbd440faf76964fcfc06c509f289d + +# ECDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls10 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls10_PUB +SharedSecret=0194ef5d80fdfe9df366b2273b983c3dbd440faf76964fcfc06c509f289d + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls10 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls10_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=01bedc5cdf63fbf18c3e2bc9765e12f7990c0c0c64f0267ae7c37b9f49f0 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls10 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls10_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=01bedc5cdf63fbf18c3e2bc9765e12f7990c0c0c64f0267ae7c37b9f49f0 + +PublicKey=MALICE_cf_wap-wsg-idm-ecid-wtls10_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFZysBBAoDPgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls10 +PeerKey=MALICE_cf_wap-wsg-idm-ecid-wtls10_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls10 +PeerKey=MALICE_cf_wap-wsg-idm-ecid-wtls10_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=wap-wsg-idm-ecid-wtls11 curve tests + +PrivateKey=ALICE_cf_wap-wsg-idm-ecid-wtls11 +-----BEGIN PRIVATE KEY----- +MDwCAQAwEAYHKoZIzj0CAQYFZysBBAsEJTAjAgEBBB4AkzS3zoqHNCLug/nwoYMQW3UigmZ9t56k +5jp+FiY= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_wap-wsg-idm-ecid-wtls11_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFZysBBAsDPgAEABttgKKYeGZRmcH/5UZR56lOSgbU4TH2AuIhvj88AL6H +zTCX9elzXpck+u22bnmkuvL2A8XKB5+fabMR +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_wap-wsg-idm-ecid-wtls11:ALICE_cf_wap-wsg-idm-ecid-wtls11_PUB + +PrivateKey=BOB_cf_wap-wsg-idm-ecid-wtls11 +-----BEGIN PRIVATE KEY----- +MDwCAQAwEAYHKoZIzj0CAQYFZysBBAsEJTAjAgEBBB4AWU05mbqPxsB749llNON1//l0w8RJJ3z5 +h/kzfNM= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_wap-wsg-idm-ecid-wtls11_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFZysBBAsDPgAEAL6Xj/KCmXAQAAo847t0bl0wqBrteWRg93OvIJsPAAOE +ehdIgJyruc3KsH0RFlipu5QD8pnGSIXvif19 +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_wap-wsg-idm-ecid-wtls11:BOB_cf_wap-wsg-idm-ecid-wtls11_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls11 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls11_PUB +SharedSecret=01ac8a23ddeeafb4d3bb243fe409f2f9c8b1a3fc11d4690da583f2e21637 + +# ECDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls11 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls11_PUB +SharedSecret=01ac8a23ddeeafb4d3bb243fe409f2f9c8b1a3fc11d4690da583f2e21637 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls11 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls11_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=01b9992992572d3a59d424f8c9cc195576461ed6c1dadf6fb523717fab19 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls11 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls11_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=01b9992992572d3a59d424f8c9cc195576461ed6c1dadf6fb523717fab19 + +PublicKey=MALICE_cf_wap-wsg-idm-ecid-wtls11_PUB +-----BEGIN PUBLIC KEY----- +MFIwEAYHKoZIzj0CAQYFZysBBAsDPgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYf4 +Vie5eHTnR+4x4G1xyq7qUvISU+X5RtBh2pE4 +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls11 +PeerKey=MALICE_cf_wap-wsg-idm-ecid-wtls11_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls11 +PeerKey=MALICE_cf_wap-wsg-idm-ecid-wtls11_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=wap-wsg-idm-ecid-wtls12 curve tests + +PrivateKey=ALICE_cf_wap-wsg-idm-ecid-wtls12 +-----BEGIN PRIVATE KEY----- +MDoCAQAwEAYHKoZIzj0CAQYFZysBBAwEIzAhAgEBBBxwvll9Eb9mm2Xadq1evIi1zIK+6u0Nv8bP +LI9a +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_wap-wsg-idm-ecid-wtls12_PUB +-----BEGIN PUBLIC KEY----- +ME4wEAYHKoZIzj0CAQYFZysBBAwDOgAE0t0WqG/pFsiCt6agmebw3FCEWAzf9BpNLuzoCkPEe0Li +bqn5udrckL6s3stwCTVFaZUfY2qS9QE= +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_wap-wsg-idm-ecid-wtls12:ALICE_cf_wap-wsg-idm-ecid-wtls12_PUB + +PrivateKey=BOB_cf_wap-wsg-idm-ecid-wtls12 +-----BEGIN PRIVATE KEY----- +MDoCAQAwEAYHKoZIzj0CAQYFZysBBAwEIzAhAgEBBBz+5P6gpqXxbeXvvaD5W9Ft69BTxcn7zc6q +K3Ax +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_wap-wsg-idm-ecid-wtls12_PUB +-----BEGIN PUBLIC KEY----- +ME4wEAYHKoZIzj0CAQYFZysBBAwDOgAEvyxedqaWkoAOMjaV5W3/tJpheiHAR0zV6BlIeUuGP2mx ++xsOK9/QB7hzipq9cXx1K/dXu58EoSY= +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_wap-wsg-idm-ecid-wtls12:BOB_cf_wap-wsg-idm-ecid-wtls12_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls12 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls12_PUB +SharedSecret=a3b3f20af8c33a0f5c246b4b9d9dda1cd40c294d1f53365d18a8b54b + +# ECDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls12 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls12_PUB +SharedSecret=a3b3f20af8c33a0f5c246b4b9d9dda1cd40c294d1f53365d18a8b54b + +Title=wap-wsg-idm-ecid-wtls1 curve tests + +PrivateKey=ALICE_cf_wap-wsg-idm-ecid-wtls1 +-----BEGIN PRIVATE KEY----- +MCwCAQAwEAYHKoZIzj0CAQYFZysBBAEEFTATAgEBBA5ZNASTt4/g6XPQwRiQ0Q== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_wap-wsg-idm-ecid-wtls1_PUB +-----BEGIN PUBLIC KEY----- +MDQwEAYHKoZIzj0CAQYFZysBBAEDIAAEACBNPI48xxsPVQBy07jRAAcWzbIkMo8BQotxpfGJ +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_wap-wsg-idm-ecid-wtls1:ALICE_cf_wap-wsg-idm-ecid-wtls1_PUB + +PrivateKey=BOB_cf_wap-wsg-idm-ecid-wtls1 +-----BEGIN PRIVATE KEY----- +MCwCAQAwEAYHKoZIzj0CAQYFZysBBAEEFTATAgEBBA6+0x9qk0NIKHSRvlTemQ== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_wap-wsg-idm-ecid-wtls1_PUB +-----BEGIN PUBLIC KEY----- +MDQwEAYHKoZIzj0CAQYFZysBBAEDIAAEAEeHMSBTx/EtOu+bjBinALHSkQuJyiP3mg1tu+I2 +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_wap-wsg-idm-ecid-wtls1:BOB_cf_wap-wsg-idm-ecid-wtls1_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls1 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls1_PUB +SharedSecret=0040ba2fadc1da97c973e5e59ade31 + +# ECDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls1 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls1_PUB +SharedSecret=0040ba2fadc1da97c973e5e59ade31 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls1 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=008919696215a89e03d6c4c9265d6b + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls1 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls1_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=008919696215a89e03d6c4c9265d6b + +PublicKey=MALICE_cf_wap-wsg-idm-ecid-wtls1_PUB +-----BEGIN PUBLIC KEY----- +MDQwEAYHKoZIzj0CAQYFZysBBAEDIAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls1 +PeerKey=MALICE_cf_wap-wsg-idm-ecid-wtls1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls1 +PeerKey=MALICE_cf_wap-wsg-idm-ecid-wtls1_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=wap-wsg-idm-ecid-wtls3 curve tests + +PrivateKey=ALICE_cf_wap-wsg-idm-ecid-wtls3 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFZysBBAMEHDAaAgEBBBUDO2cHbqQBUxuJBl6UT9UrasuRVrI= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_wap-wsg-idm-ecid-wtls3_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFZysBBAMDLAAEBRIzvK9o7eO2NGmtPFV/zo9/1mlvBwjG7+e6hbPG1KdI +01f8oGBuXMQH +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_wap-wsg-idm-ecid-wtls3:ALICE_cf_wap-wsg-idm-ecid-wtls3_PUB + +PrivateKey=BOB_cf_wap-wsg-idm-ecid-wtls3 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFZysBBAMEHDAaAgEBBBUAhZv9WZ00bDnU9MOaqEegP771nes= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_wap-wsg-idm-ecid-wtls3_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFZysBBAMDLAAEAYOspjEbzyZw61jCtUrxARr+w66nBH+73QIvlaRVSG/4 +hlBUf5kmG4Yn +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_wap-wsg-idm-ecid-wtls3:BOB_cf_wap-wsg-idm-ecid-wtls3_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls3 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls3_PUB +SharedSecret=0311924428a839b7dcada662722945e62bf1131f4f + +# ECDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls3 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls3_PUB +SharedSecret=0311924428a839b7dcada662722945e62bf1131f4f + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls3 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls3_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=047f1aee6a1a1d7c9c1f0e8dce4349429f737aa658 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls3 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls3_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=047f1aee6a1a1d7c9c1f0e8dce4349429f737aa658 + +PublicKey=MALICE_cf_wap-wsg-idm-ecid-wtls3_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFZysBBAMDLAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAB +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls3 +PeerKey=MALICE_cf_wap-wsg-idm-ecid-wtls3_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls3 +PeerKey=MALICE_cf_wap-wsg-idm-ecid-wtls3_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=wap-wsg-idm-ecid-wtls4 curve tests + +PrivateKey=ALICE_cf_wap-wsg-idm-ecid-wtls4 +-----BEGIN PRIVATE KEY----- +MC0CAQAwEAYHKoZIzj0CAQYFZysBBAQEFjAUAgEBBA8ACFOrBbOh5LjNtJQCuEE= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_wap-wsg-idm-ecid-wtls4_PUB +-----BEGIN PUBLIC KEY----- +MDQwEAYHKoZIzj0CAQYFZysBBAQDIAAEAW3K4Mus5+KAJVGLzEYrAYuCJSEYXFTo17aW0TwN +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_wap-wsg-idm-ecid-wtls4:ALICE_cf_wap-wsg-idm-ecid-wtls4_PUB + +PrivateKey=BOB_cf_wap-wsg-idm-ecid-wtls4 +-----BEGIN PRIVATE KEY----- +MC0CAQAwEAYHKoZIzj0CAQYFZysBBAQEFjAUAgEBBA8Auz4XRc3Rg0bNcbrray8= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_wap-wsg-idm-ecid-wtls4_PUB +-----BEGIN PUBLIC KEY----- +MDQwEAYHKoZIzj0CAQYFZysBBAQDIAAEAI0F7ixGqOhnYpsuR80nAdTdSXM+YbcUbLe/U/xG +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_wap-wsg-idm-ecid-wtls4:BOB_cf_wap-wsg-idm-ecid-wtls4_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls4 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls4_PUB +SharedSecret=0077378ddfdadff704a0b6646949e7 + +# ECDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls4 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls4_PUB +SharedSecret=0077378ddfdadff704a0b6646949e7 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls4 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls4_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=008f3713fe1ff1fa5d5041899817d1 + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls4 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls4_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=008f3713fe1ff1fa5d5041899817d1 + +PublicKey=MALICE_cf_wap-wsg-idm-ecid-wtls4_PUB +-----BEGIN PUBLIC KEY----- +MDQwEAYHKoZIzj0CAQYFZysBBAQDIAAEAAAAAAAAAAAAAAAAAAAAAd+TqiBXnTd/lyA/OFsR +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls4 +PeerKey=MALICE_cf_wap-wsg-idm-ecid-wtls4_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls4 +PeerKey=MALICE_cf_wap-wsg-idm-ecid-wtls4_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=wap-wsg-idm-ecid-wtls5 curve tests + +PrivateKey=ALICE_cf_wap-wsg-idm-ecid-wtls5 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFZysBBAUEHDAaAgEBBBUD9gVh3zbLTA7BuRVVi9T8QKZ1uco= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_wap-wsg-idm-ecid-wtls5_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFZysBBAUDLAAEAH5xyUrvbuN+tWmRhwqrQfFHPHNUBKtAGvJuvSFVwTKk +uFzn9fPvIDe6 +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_wap-wsg-idm-ecid-wtls5:ALICE_cf_wap-wsg-idm-ecid-wtls5_PUB + +PrivateKey=BOB_cf_wap-wsg-idm-ecid-wtls5 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFZysBBAUEHDAaAgEBBBUAr9ZlmuO7bNfqB42xUivJXyVHKNI= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_wap-wsg-idm-ecid-wtls5_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFZysBBAUDLAAEBdXxEk0L2XAVzRNLPcnMxGXXyDfZAoA1Qw2XpOfVWIVR +jdoMGRgUuJmO +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_wap-wsg-idm-ecid-wtls5:BOB_cf_wap-wsg-idm-ecid-wtls5_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls5 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls5_PUB +SharedSecret=0190c68d80e94fbe9f193ae7d9a156bf0b8d097c23 + +# ECDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls5 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls5_PUB +SharedSecret=0190c68d80e94fbe9f193ae7d9a156bf0b8d097c23 + +# ECC CDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls5 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls5_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=00aabc9b45c200e41294aa922ab06da6655731e0ea + +# ECC CDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls5 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls5_PUB +Ctrl=ecdh_cofactor_mode:1 +SharedSecret=00aabc9b45c200e41294aa922ab06da6655731e0ea + +PublicKey=MALICE_cf_wap-wsg-idm-ecid-wtls5_PUB +-----BEGIN PUBLIC KEY----- +MEAwEAYHKoZIzj0CAQYFZysBBAUDLAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8JxepS05nN/piK +dhDD3dDKXUih +-----END PUBLIC KEY----- + +# ECC CDH Bob with Malice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls5 +PeerKey=MALICE_cf_wap-wsg-idm-ecid-wtls5_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +# ECC CDH Alice with Malice peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls5 +PeerKey=MALICE_cf_wap-wsg-idm-ecid-wtls5_PUB +Ctrl=ecdh_cofactor_mode:1 +Result=DERIVE_ERROR + +Title=wap-wsg-idm-ecid-wtls6 curve tests + +PrivateKey=ALICE_cf_wap-wsg-idm-ecid-wtls6 +-----BEGIN PRIVATE KEY----- +MCwCAQAwEAYHKoZIzj0CAQYFZysBBAYEFTATAgEBBA4ayMbswPbvYMwpwo80jA== +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_wap-wsg-idm-ecid-wtls6_PUB +-----BEGIN PUBLIC KEY----- +MDIwEAYHKoZIzj0CAQYFZysBBAYDHgAERPw/8Ip/RrXr0gMgLGRQeiQ4Qd6W+Li0ylGKzg== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_wap-wsg-idm-ecid-wtls6:ALICE_cf_wap-wsg-idm-ecid-wtls6_PUB + +PrivateKey=BOB_cf_wap-wsg-idm-ecid-wtls6 +-----BEGIN PRIVATE KEY----- +MCwCAQAwEAYHKoZIzj0CAQYFZysBBAYEFTATAgEBBA6kbCpFt3tX2hYBQHMXbg== +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_wap-wsg-idm-ecid-wtls6_PUB +-----BEGIN PUBLIC KEY----- +MDIwEAYHKoZIzj0CAQYFZysBBAYDHgAEhJXqpYGxE/l1X/LiBeyRbIcyzqPxUP5Tkv3U3w== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_wap-wsg-idm-ecid-wtls6:BOB_cf_wap-wsg-idm-ecid-wtls6_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls6 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls6_PUB +SharedSecret=b4cae255268f11a1e46fecad04c2 + +# ECDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls6 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls6_PUB +SharedSecret=b4cae255268f11a1e46fecad04c2 + +Title=wap-wsg-idm-ecid-wtls7 curve tests + +PrivateKey=ALICE_cf_wap-wsg-idm-ecid-wtls7 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFZysBBAcEHDAaAgEBBBUABcyzh4ot9ck/j4/3ehK0aYngYoM= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_wap-wsg-idm-ecid-wtls7_PUB +-----BEGIN PUBLIC KEY----- +MD4wEAYHKoZIzj0CAQYFZysBBAcDKgAEwQLnZ70n45RLqRtAGNzEa3Rl/9nwyjqYUtw2eeHhnNLT +feGY4CNH0w== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_wap-wsg-idm-ecid-wtls7:ALICE_cf_wap-wsg-idm-ecid-wtls7_PUB + +PrivateKey=BOB_cf_wap-wsg-idm-ecid-wtls7 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFZysBBAcEHDAaAgEBBBUAPyrGRY1SR13hKQswS6yXs8w8PUQ= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_wap-wsg-idm-ecid-wtls7_PUB +-----BEGIN PUBLIC KEY----- +MD4wEAYHKoZIzj0CAQYFZysBBAcDKgAEZGN44YbN5r3zcNtOHrvbQLt8/lE7BHp4D/9eKLmwFDn1 +QneRu3xwPA== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_wap-wsg-idm-ecid-wtls7:BOB_cf_wap-wsg-idm-ecid-wtls7_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls7 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls7_PUB +SharedSecret=ae9f5bcc6457c0422866bf855921eabc42b7121a + +# ECDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls7 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls7_PUB +SharedSecret=ae9f5bcc6457c0422866bf855921eabc42b7121a + +Title=wap-wsg-idm-ecid-wtls8 curve tests + +PrivateKey=ALICE_cf_wap-wsg-idm-ecid-wtls8 +-----BEGIN PRIVATE KEY----- +MC0CAQAwEAYHKoZIzj0CAQYFZysBBAgEFjAUAgEBBA8AnkC18b3pH2O5TIYIqAQ= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_wap-wsg-idm-ecid-wtls8_PUB +-----BEGIN PUBLIC KEY----- +MDIwEAYHKoZIzj0CAQYFZysBBAgDHgAEJD0h4HEfchwxqhp9eMHh9gczQKHX4MtWVoAxKQ== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_wap-wsg-idm-ecid-wtls8:ALICE_cf_wap-wsg-idm-ecid-wtls8_PUB + +PrivateKey=BOB_cf_wap-wsg-idm-ecid-wtls8 +-----BEGIN PRIVATE KEY----- +MC0CAQAwEAYHKoZIzj0CAQYFZysBBAgEFjAUAgEBBA8AXxPMnqbl3rOuIM5nsvc= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_wap-wsg-idm-ecid-wtls8_PUB +-----BEGIN PUBLIC KEY----- +MDIwEAYHKoZIzj0CAQYFZysBBAgDHgAEZawmRmzr9P+jihImUi6ykOzaSH484JhMKNdrgw== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_wap-wsg-idm-ecid-wtls8:BOB_cf_wap-wsg-idm-ecid-wtls8_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls8 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls8_PUB +SharedSecret=48baf4f1f5e8a0eb5dae28ef6290 + +# ECDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls8 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls8_PUB +SharedSecret=48baf4f1f5e8a0eb5dae28ef6290 + +Title=wap-wsg-idm-ecid-wtls9 curve tests + +PrivateKey=ALICE_cf_wap-wsg-idm-ecid-wtls9 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFZysBBAkEHDAaAgEBBBUALwvuKs3RLthMAsChbqKjXw6vTYo= +-----END PRIVATE KEY----- + +PublicKey=ALICE_cf_wap-wsg-idm-ecid-wtls9_PUB +-----BEGIN PUBLIC KEY----- +MD4wEAYHKoZIzj0CAQYFZysBBAkDKgAET0ppOvd9DU4v+tkKDQ5wRBrN1FwD9+F9t5l3Im+mz3rw +DB/RYdZuUg== +-----END PUBLIC KEY----- + +PrivPubKeyPair=ALICE_cf_wap-wsg-idm-ecid-wtls9:ALICE_cf_wap-wsg-idm-ecid-wtls9_PUB + +PrivateKey=BOB_cf_wap-wsg-idm-ecid-wtls9 +-----BEGIN PRIVATE KEY----- +MDMCAQAwEAYHKoZIzj0CAQYFZysBBAkEHDAaAgEBBBUAgeb/vqEM7X5AAAxyBu3M+C8pWLM= +-----END PRIVATE KEY----- + +PublicKey=BOB_cf_wap-wsg-idm-ecid-wtls9_PUB +-----BEGIN PUBLIC KEY----- +MD4wEAYHKoZIzj0CAQYFZysBBAkDKgAEWc37LGt6lt90iF4lhtDYNFdjAqoczebuNgzGff/Uq8ov +a3EVJ9yK1A== +-----END PUBLIC KEY----- + +PrivPubKeyPair=BOB_cf_wap-wsg-idm-ecid-wtls9:BOB_cf_wap-wsg-idm-ecid-wtls9_PUB + +# ECDH Alice with Bob peer +Derive=ALICE_cf_wap-wsg-idm-ecid-wtls9 +PeerKey=BOB_cf_wap-wsg-idm-ecid-wtls9_PUB +SharedSecret=948d3030e95cead39a1bb3d8a01c2be178517ba7 + +# ECDH Bob with Alice peer +Derive=BOB_cf_wap-wsg-idm-ecid-wtls9 +PeerKey=ALICE_cf_wap-wsg-idm-ecid-wtls9_PUB +SharedSecret=948d3030e95cead39a1bb3d8a01c2be178517ba7 + +# tests: 484 diff --git a/test/sslapitest.c b/test/sslapitest.c index baf0881c..64f8f597 100644 --- a/test/sslapitest.c +++ b/test/sslapitest.c @@ -944,11 +944,12 @@ static int execute_test_session(int maxprot, int use_int_cache, if (maxprot == TLS1_3_VERSION) { /* * In TLSv1.3 we should have created a new session even though we have - * resumed. + * resumed. Since we attempted a resume we should also have removed the + * old ticket from the cache so that we try to only use tickets once. */ if (use_ext_cache && (!TEST_int_eq(new_called, 1) - || !TEST_int_eq(remove_called, 0))) + || !TEST_int_eq(remove_called, 1))) goto end; } else { /* @@ -1847,11 +1848,14 @@ static unsigned int psk_server_cb(SSL *ssl, const char *identity, static int setupearly_data_test(SSL_CTX **cctx, SSL_CTX **sctx, SSL **clientssl, SSL **serverssl, SSL_SESSION **sess, int idx) { - if (!TEST_true(create_ssl_ctx_pair(TLS_server_method(), TLS_client_method(), - TLS1_VERSION, TLS_MAX_VERSION, - sctx, cctx, cert, privkey)) - || !TEST_true(SSL_CTX_set_max_early_data(*sctx, - SSL3_RT_MAX_PLAIN_LENGTH))) + if (*sctx == NULL + && !TEST_true(create_ssl_ctx_pair(TLS_server_method(), + TLS_client_method(), + TLS1_VERSION, TLS_MAX_VERSION, + sctx, cctx, cert, privkey))) + return 0; + + if (!TEST_true(SSL_CTX_set_max_early_data(*sctx, SSL3_RT_MAX_PLAIN_LENGTH))) return 0; if (idx == 1) { @@ -2156,12 +2160,65 @@ static int test_early_data_read_write(int idx) return testresult; } -static int test_early_data_replay(int idx) +static int allow_ed_cb_called = 0; + +static int allow_early_data_cb(SSL *s, void *arg) +{ + int *usecb = (int *)arg; + + allow_ed_cb_called++; + + if (*usecb == 1) + return 0; + + return 1; +} + +/* + * idx == 0: Standard early_data setup + * idx == 1: early_data setup using read_ahead + * usecb == 0: Don't use a custom early data callback + * usecb == 1: Use a custom early data callback and reject the early data + * usecb == 2: Use a custom early data callback and accept the early data + * confopt == 0: Configure anti-replay directly + * confopt == 1: Configure anti-replay using SSL_CONF + */ +static int test_early_data_replay_int(int idx, int usecb, int confopt) { SSL_CTX *cctx = NULL, *sctx = NULL; SSL *clientssl = NULL, *serverssl = NULL; int testresult = 0; SSL_SESSION *sess = NULL; + size_t readbytes, written; + unsigned char buf[20]; + + allow_ed_cb_called = 0; + + if (!TEST_true(create_ssl_ctx_pair(TLS_server_method(), TLS_client_method(), + TLS1_VERSION, TLS_MAX_VERSION, &sctx, + &cctx, cert, privkey))) + return 0; + + if (usecb > 0) { + if (confopt == 0) { + SSL_CTX_set_options(sctx, SSL_OP_NO_ANTI_REPLAY); + } else { + SSL_CONF_CTX *confctx = SSL_CONF_CTX_new(); + + if (!TEST_ptr(confctx)) + goto end; + SSL_CONF_CTX_set_flags(confctx, SSL_CONF_FLAG_FILE + | SSL_CONF_FLAG_SERVER); + SSL_CONF_CTX_set_ssl_ctx(confctx, sctx); + if (!TEST_int_eq(SSL_CONF_cmd(confctx, "Options", "-AntiReplay"), + 2)) { + SSL_CONF_CTX_free(confctx); + goto end; + } + SSL_CONF_CTX_free(confctx); + } + SSL_CTX_set_allow_early_data_cb(sctx, allow_early_data_cb, &usecb); + } if (!TEST_true(setupearly_data_test(&cctx, &sctx, &clientssl, &serverssl, &sess, idx))) @@ -2183,14 +2240,49 @@ static int test_early_data_replay(int idx) if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl, NULL, NULL)) - || !TEST_true(SSL_set_session(clientssl, sess)) - || !TEST_true(create_ssl_connection(serverssl, clientssl, - SSL_ERROR_NONE)) - /* - * This time we should not have resumed the session because we - * already used it once. - */ - || !TEST_false(SSL_session_reused(clientssl))) + || !TEST_true(SSL_set_session(clientssl, sess))) + goto end; + + /* Write and read some early data */ + if (!TEST_true(SSL_write_early_data(clientssl, MSG1, strlen(MSG1), + &written)) + || !TEST_size_t_eq(written, strlen(MSG1))) + goto end; + + if (usecb <= 1) { + if (!TEST_int_eq(SSL_read_early_data(serverssl, buf, sizeof(buf), + &readbytes), + SSL_READ_EARLY_DATA_FINISH) + /* + * The ticket was reused, so the we should have rejected the + * early data + */ + || !TEST_int_eq(SSL_get_early_data_status(serverssl), + SSL_EARLY_DATA_REJECTED)) + goto end; + } else { + /* In this case the callback decides to accept the early data */ + if (!TEST_int_eq(SSL_read_early_data(serverssl, buf, sizeof(buf), + &readbytes), + SSL_READ_EARLY_DATA_SUCCESS) + || !TEST_mem_eq(MSG1, strlen(MSG1), buf, readbytes) + /* + * Server will have sent its flight so client can now send + * end of early data and complete its half of the handshake + */ + || !TEST_int_gt(SSL_connect(clientssl), 0) + || !TEST_int_eq(SSL_read_early_data(serverssl, buf, sizeof(buf), + &readbytes), + SSL_READ_EARLY_DATA_FINISH) + || !TEST_int_eq(SSL_get_early_data_status(serverssl), + SSL_EARLY_DATA_ACCEPTED)) + goto end; + } + + /* Complete the connection */ + if (!TEST_true(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE)) + || !TEST_int_eq(SSL_session_reused(clientssl), (usecb > 0) ? 1 : 0) + || !TEST_int_eq(allow_ed_cb_called, usecb > 0 ? 1 : 0)) goto end; testresult = 1; @@ -2207,6 +2299,18 @@ static int test_early_data_replay(int idx) return testresult; } +static int test_early_data_replay(int idx) +{ + int ret = 1, usecb, confopt; + + for (usecb = 0; usecb < 3; usecb++) { + for (confopt = 0; confopt < 2; confopt++) + ret &= test_early_data_replay_int(idx, usecb, confopt); + } + + return ret; +} + /* * Helper function to test that a server attempting to read early data can * handle a connection from a client where the early data should be skipped. @@ -4993,11 +5097,11 @@ static int test_shutdown(int tst) size_t written, readbytes; #ifdef OPENSSL_NO_TLS1_2 - if (tst == 0) + if (tst <= 1) return 1; #endif #ifdef OPENSSL_NO_TLS1_3 - if (tst != 0) + if (tst >= 2) return 1; #endif diff --git a/util/libssl.num b/util/libssl.num index 3495903e..df6a71e1 100644 --- a/util/libssl.num +++ b/util/libssl.num @@ -490,3 +490,5 @@ SSL_set_num_tickets 490 1_1_1 EXIST::FUNCTION: SSL_CTX_get_num_tickets 491 1_1_1 EXIST::FUNCTION: SSL_get_num_tickets 492 1_1_1 EXIST::FUNCTION: SSL_CTX_set_num_tickets 493 1_1_1 EXIST::FUNCTION: +SSL_CTX_set_allow_early_data_cb 494 1_1_1 EXIST::FUNCTION: +SSL_set_allow_early_data_cb 495 1_1_1 EXIST::FUNCTION: diff --git a/util/private.num b/util/private.num index ac536a56..b90e33db 100644 --- a/util/private.num +++ b/util/private.num @@ -48,7 +48,9 @@ RAND_DRBG_cleanup_nonce_fn datatype RAND_DRBG_get_entropy_fn datatype RAND_DRBG_get_nonce_fn datatype RAND_poll_cb datatype +SSL_CTX_allow_early_data_cb_fn datatype SSL_CTX_keylog_cb_func datatype +SSL_allow_early_data_cb_fn datatype SSL_client_hello_cb_fn datatype SSL_psk_client_cb_func datatype SSL_psk_find_session_cb_func datatype