From levitte at openssl.org Fri Feb 1 08:23:39 2019 From: levitte at openssl.org (Richard Levitte) Date: Fri, 01 Feb 2019 08:23:39 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549009419.876756.17453.nullmailer@dev.openssl.org> The branch master has been updated via a28e4890eed847e6122a1c4d50653566e0813f45 (commit) via f8f3d624b7c71e8f5acbe373479a5b0f6b73d13f (commit) from 5dc40a83c74be579575a512b30d9c1e0364e6a7b (commit) - Log ----------------------------------------------------------------- commit a28e4890eed847e6122a1c4d50653566e0813f45 Author: Andy Polyakov Date: Wed Jan 23 14:56:19 2019 +0100 poly1305/asm/poly1305-ppc.pl: add vector base 2^26 implementation. Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8120) commit f8f3d624b7c71e8f5acbe373479a5b0f6b73d13f Author: Andy Polyakov Date: Wed Jan 23 15:03:23 2019 +0100 perlasm/ppc-xlate.pl: add VSX word load/store instructions. Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8120) ----------------------------------------------------------------------- Summary of changes: crypto/perlasm/ppc-xlate.pl | 2 + crypto/poly1305/asm/poly1305-ppc.pl | 1552 ++++++++++++++++++++++++++++++++--- crypto/ppccap.c | 11 +- 3 files changed, 1454 insertions(+), 111 deletions(-) diff --git a/crypto/perlasm/ppc-xlate.pl b/crypto/perlasm/ppc-xlate.pl index 1c972a1..e52f2f6 100755 --- a/crypto/perlasm/ppc-xlate.pl +++ b/crypto/perlasm/ppc-xlate.pl @@ -273,6 +273,8 @@ my $mtvrwz = sub { my ($f, $vrt, $ra) = @_; " .long ".sprintf "0x%X",(31<<26)|($vrt<<21)|($ra<<16)|(243<<1)|1; }; +my $lvwzx_u = sub { vsxmem_op(@_, 12); }; # lxsiwzx +my $stvwx_u = sub { vsxmem_op(@_, 140); }; # stxsiwx # PowerISA 3.0 stuff my $maddhdu = sub { vfour(@_,49); }; diff --git a/crypto/poly1305/asm/poly1305-ppc.pl b/crypto/poly1305/asm/poly1305-ppc.pl index e9118ba..9f15c0d 100755 --- a/crypto/poly1305/asm/poly1305-ppc.pl +++ b/crypto/poly1305/asm/poly1305-ppc.pl @@ -8,10 +8,10 @@ # # ==================================================================== -# Written by Andy Polyakov for the OpenSSL -# project. The module is, however, dual licensed under OpenSSL and -# CRYPTOGAMS licenses depending on where you obtain it. For further -# details see http://www.openssl.org/~appro/cryptogams/. +# Written by Andy Polyakov, @dot-asm, initially for use in the OpenSSL +# project. The module is dual licensed under OpenSSL and CRYPTOGAMS +# licenses depending on where you obtain it. For further details see +# https://github.com/dot-asm/cryptogams/. # ==================================================================== # # This module implements Poly1305 hash for PowerPC. @@ -44,6 +44,13 @@ # # On side note, Power ISA 2.07 enables vector base 2^26 implementation, # and POWER8 might have capacity to break 1.0 cycle per byte barrier... +# +# January 2019 +# +# ... Unfortunately not:-( Estimate was a projection of ARM result, +# but ARM has vector multiply-n-add instruction, while PowerISA does +# not, not one usable in the context. Improvement is ~40% over -m64 +# result above and is ~1.43 on little-endian systems. $flavour = shift; @@ -99,6 +106,7 @@ $code.=<<___; std r0,0($ctx) # zero hash value std r0,8($ctx) std r0,16($ctx) + stw r0,24($ctx) # clear is_base2_26 $UCMP $inp,r0 beq- Lno_key @@ -140,6 +148,7 @@ Lno_key: .globl .poly1305_blocks .align 4 .poly1305_blocks: +Lpoly1305_blocks: srdi. $len,$len,4 beq- Labort @@ -238,60 +247,120 @@ Labort: .long 0 .byte 0,12,4,1,0x80,5,4,0 .size .poly1305_blocks,.-.poly1305_blocks +___ +{ +my ($h0,$h1,$h2,$h3,$h4,$t0) = map("r$_",(7..12)); +$code.=<<___; .globl .poly1305_emit -.align 4 +.align 5 .poly1305_emit: - ld $h0,0($ctx) # load hash - ld $h1,8($ctx) - ld $h2,16($ctx) - ld $padbit,0($nonce) # load nonce - ld $nonce,8($nonce) - - addic $d0,$h0,5 # compare to modulus - addze $d1,$h1 - addze $d2,$h2 - - srdi $mask,$d2,2 # did it carry/borrow? - neg $mask,$mask + lwz $h0,0($ctx) # load hash value base 2^26 + lwz $h1,4($ctx) + lwz $h2,8($ctx) + lwz $h3,12($ctx) + lwz $h4,16($ctx) + lwz r0,24($ctx) # is_base2_26 + + sldi $h1,$h1,26 # base 2^26 -> base 2^64 + sldi $t0,$h2,52 + srdi $h2,$h2,12 + sldi $h3,$h3,14 + add $h0,$h0,$h1 + addc $h0,$h0,$t0 + sldi $t0,$h4,40 + srdi $h4,$h4,24 + adde $h1,$h2,$h3 + addc $h1,$h1,$t0 + addze $h2,$h4 + + ld $h3,0($ctx) # load hash value base 2^64 + ld $h4,8($ctx) + ld $t0,16($ctx) + + neg r0,r0 + xor $h0,$h0,$h3 # choose between radixes + xor $h1,$h1,$h4 + xor $h2,$h2,$t0 + and $h0,$h0,r0 + and $h1,$h1,r0 + and $h2,$h2,r0 + xor $h0,$h0,$h3 + xor $h1,$h1,$h4 + xor $h2,$h2,$t0 + + addic $h3,$h0,5 # compare to modulus + addze $h4,$h1 + addze $t0,$h2 + + srdi $t0,$t0,2 # see if it carried/borrowed + neg $t0,$t0 + + andc $h0,$h0,$t0 + and $h3,$h3,$t0 + andc $h1,$h1,$t0 + and $h4,$h4,$t0 + or $h0,$h0,$h3 + or $h1,$h1,$h4 + + lwz $t0,4($nonce) + lwz $h2,12($nonce) + lwz $h3,0($nonce) + lwz $h4,8($nonce) + + insrdi $h3,$t0,32,0 + insrdi $h4,$h2,32,0 + + addc $h0,$h0,$h3 # accumulate nonce + adde $h1,$h1,$h4 + + addi $ctx,$mac,-1 + addi $mac,$mac,7 + + stbu $h0,1($ctx) # write [little-endian] result + srdi $h0,$h0,8 + stbu $h1,1($mac) + srdi $h1,$h1,8 + + stbu $h0,1($ctx) + srdi $h0,$h0,8 + stbu $h1,1($mac) + srdi $h1,$h1,8 + + stbu $h0,1($ctx) + srdi $h0,$h0,8 + stbu $h1,1($mac) + srdi $h1,$h1,8 + + stbu $h0,1($ctx) + srdi $h0,$h0,8 + stbu $h1,1($mac) + srdi $h1,$h1,8 + + stbu $h0,1($ctx) + srdi $h0,$h0,8 + stbu $h1,1($mac) + srdi $h1,$h1,8 + + stbu $h0,1($ctx) + srdi $h0,$h0,8 + stbu $h1,1($mac) + srdi $h1,$h1,8 + + stbu $h0,1($ctx) + srdi $h0,$h0,8 + stbu $h1,1($mac) + srdi $h1,$h1,8 + + stbu $h0,1($ctx) + stbu $h1,1($mac) - andc $h0,$h0,$mask - and $d0,$d0,$mask - andc $h1,$h1,$mask - and $d1,$d1,$mask - or $h0,$h0,$d0 - or $h1,$h1,$d1 -___ -$code.=<<___ if (!$LITTLE_ENDIAN); - rotldi $padbit,$padbit,32 # flip nonce words - rotldi $nonce,$nonce,32 -___ -$code.=<<___; - addc $h0,$h0,$padbit # accumulate nonce - adde $h1,$h1,$nonce -___ -$code.=<<___ if ($LITTLE_ENDIAN); - std $h0,0($mac) # write result - std $h1,8($mac) -___ -$code.=<<___ if (!$LITTLE_ENDIAN); - extrdi r0,$h0,32,0 - li $d0,4 - stwbrx $h0,0,$mac # write result - extrdi $h0,$h1,32,0 - li $d1,8 - stwbrx r0,$d0,$mac - li $d2,12 - stwbrx $h1,$d1,$mac - stwbrx $h0,$d2,$mac -___ -$code.=<<___; blr .long 0 .byte 0,12,0x14,0,0,0,3,0 .size .poly1305_emit,.-.poly1305_emit ___ - } else { +} } else { ############################################################################### # base 2^32 implementation @@ -309,6 +378,7 @@ $code.=<<___; stw r0,8($ctx) stw r0,12($ctx) stw r0,16($ctx) + stw r0,24($ctx) # clear is_base2_26 $UCMP $inp,r0 beq- Lno_key @@ -353,6 +423,7 @@ Lno_key: .globl .poly1305_blocks .align 4 .poly1305_blocks: +Lpoly1305_blocks: srwi. $len,$len,4 beq- Labort @@ -560,17 +631,389 @@ Labort: .long 0 .byte 0,12,4,1,0x80,18,4,0 .size .poly1305_blocks,.-.poly1305_blocks +___ +{ +my ($h0,$h1,$h2,$h3,$h4,$t0,$t1) = map("r$_",(6..12)); +$code.=<<___; .globl .poly1305_emit -.align 4 +.align 5 .poly1305_emit: - $STU $sp,-$FRAME($sp) + lwz r0,24($ctx) # is_base2_26 + lwz $h0,0($ctx) # load hash value + lwz $h1,4($ctx) + lwz $h2,8($ctx) + lwz $h3,12($ctx) + lwz $h4,16($ctx) + cmplwi r0,0 + beq Lemit_base2_32 + + slwi $t0,$h1,26 # base 2^26 -> base 2^32 + srwi $h1,$h1,6 + slwi $t1,$h2,20 + srwi $h2,$h2,12 + addc $h0,$h0,$t0 + slwi $t0,$h3,14 + srwi $h3,$h3,18 + adde $h1,$h1,$t1 + slwi $t1,$h4,8 + srwi $h4,$h4,24 + adde $h2,$h2,$t0 + adde $h3,$h3,$t1 + addze $h4,$h4 + +Lemit_base2_32: + addic r0,$h0,5 # compare to modulus + addze r0,$h1 + addze r0,$h2 + addze r0,$h3 + addze r0,$h4 + + srwi r0,r0,2 # see if it carried/borrowed + neg r0,r0 + andi. r0,r0,5 + + addc $h0,$h0,r0 + lwz r0,0($nonce) + addze $h1,$h1 + lwz $t0,4($nonce) + addze $h2,$h2 + lwz $t1,8($nonce) + addze $h3,$h3 + lwz $h4,12($nonce) + + addc $h0,$h0,r0 # accumulate nonce + adde $h1,$h1,$t0 + adde $h2,$h2,$t1 + adde $h3,$h3,$h4 + + addi $ctx,$mac,-1 + addi $mac,$mac,7 + + stbu $h0,1($ctx) # write [little-endian] result + srwi $h0,$h0,8 + stbu $h2,1($mac) + srwi $h2,$h2,8 + + stbu $h0,1($ctx) + srwi $h0,$h0,8 + stbu $h2,1($mac) + srwi $h2,$h2,8 + + stbu $h0,1($ctx) + srwi $h0,$h0,8 + stbu $h2,1($mac) + srwi $h2,$h2,8 + + stbu $h0,1($ctx) + stbu $h2,1($mac) + + stbu $h1,1($ctx) + srwi $h1,$h1,8 + stbu $h3,1($mac) + srwi $h3,$h3,8 + + stbu $h1,1($ctx) + srwi $h1,$h1,8 + stbu $h3,1($mac) + srwi $h3,$h3,8 + + stbu $h1,1($ctx) + srwi $h1,$h1,8 + stbu $h3,1($mac) + srwi $h3,$h3,8 + + stbu $h1,1($ctx) + stbu $h3,1($mac) + + blr + .long 0 + .byte 0,12,0x14,0,0,0,3,0 +.size .poly1305_emit,.-.poly1305_emit +___ +} } +{{{ +######################################################################## +# PowerISA 2.07/VSX section # +######################################################################## + +my $LOCALS= 6*$SIZE_T; +my $VSXFRAME = $LOCALS + 6*$SIZE_T; + $VSXFRAME += 128; # local variables + $VSXFRAME += 13*16; # v20-v31 offload + +my $BIG_ENDIAN = ($flavour !~ /le/) ? 4 : 0; + +######################################################################## +# Layout of opaque area is following: +# +# unsigned __int32 h[5]; # current hash value base 2^26 +# unsigned __int32 pad; +# unsigned __int32 is_base2_26, pad; +# unsigned __int64 r[2]; # key value base 2^64 +# struct { unsigned __int32 r^2, r^4, r^1, r^3; } r[9]; +# +# where r^n are base 2^26 digits of powers of multiplier key. There are +# 5 digits, but last four are interleaved with multiples of 5, totalling +# in 9 elements: r0, r1, 5*r1, r2, 5*r2, r3, 5*r3, r4, 5*r4. Order of +# powers is as they appear in register, not memory. + +my ($H0, $H1, $H2, $H3, $H4) = map("v$_",(0..4)); +my ($I0, $I1, $I2, $I3, $I4) = map("v$_",(5..9)); +my ($R0, $R1, $S1, $R2, $S2) = map("v$_",(10..14)); +my ($R3, $S3, $R4, $S4) = ($R1, $S1, $R2, $S2); +my ($ACC0, $ACC1, $ACC2, $ACC3, $ACC4) = map("v$_",(15..19)); +my ($T0, $T1, $T2, $T3, $T4) = map("v$_",(20..24)); +my ($_26,$_4,$_40,$_14,$mask26,$padbits,$I2perm) = map("v$_",(25..31)); +my ($x00,$x60,$x70,$x10,$x20,$x30,$x40,$x50) = (0, map("r$_",(7,8,27..31))); +my ($ctx_,$_ctx,$const) = map("r$_",(10..12)); + + if ($flavour =~ /64/) { +############################################################################### +# setup phase of poly1305_blocks_vsx is different on 32- and 64-bit platforms, +# but the base 2^26 computational part is same... + +my ($h0,$h1,$h2,$d0,$d1,$d2, $r0,$r1,$s1, $t0,$t1) = map("r$_",(6..11,27..31)); +my $mask = "r0"; + +$code.=<<___; +.globl .poly1305_blocks_vsx +.align 5 +.poly1305_blocks_vsx: + lwz r7,24($ctx) # is_base2_26 + cmpldi $len,128 + bge __poly1305_blocks_vsx + + neg r0,r7 # is_base2_26 as mask + lwz r7,0($ctx) # load hash base 2^26 + lwz r8,4($ctx) + lwz r9,8($ctx) + lwz r10,12($ctx) + lwz r11,16($ctx) + + sldi r8,r8,26 # base 2^26 -> base 2^64 + sldi r12,r9,52 + add r7,r7,r8 + srdi r9,r9,12 + sldi r10,r10,14 + addc r7,r7,r12 + sldi r8,r11,40 + adde r9,r9,r10 + srdi r11,r11,24 + addc r9,r9,r8 + addze r11,r11 + + ld r8,0($ctx) # load hash base 2^64 + ld r10,8($ctx) + ld r12,16($ctx) + + xor r7,r7,r8 # select between radixes + xor r9,r9,r10 + xor r11,r11,r12 + and r7,r7,r0 + and r9,r9,r0 + and r11,r11,r0 + xor r7,r7,r8 + xor r9,r9,r10 + xor r11,r11,r12 + + li r0,0 + std r7,0($ctx) # store hash base 2^64 + std r9,8($ctx) + std r11,16($ctx) + stw r0,24($ctx) # clear is_base2_26 + + b Lpoly1305_blocks + .long 0 + .byte 0,12,0x14,0,0,0,4,0 +.size .poly1305_blocks_vsx,.-.poly1305_blocks_vsx + +.align 5 +__poly1305_mul: + mulld $d0,$h0,$r0 # h0*r0 + mulhdu $d1,$h0,$r0 + + mulld $t0,$h1,$s1 # h1*5*r1 + mulhdu $t1,$h1,$s1 + addc $d0,$d0,$t0 + adde $d1,$d1,$t1 + + mulld $t0,$h0,$r1 # h0*r1 + mulhdu $d2,$h0,$r1 + addc $d1,$d1,$t0 + addze $d2,$d2 + + mulld $t0,$h1,$r0 # h1*r0 + mulhdu $t1,$h1,$r0 + addc $d1,$d1,$t0 + adde $d2,$d2,$t1 + + mulld $t0,$h2,$s1 # h2*5*r1 + mulld $t1,$h2,$r0 # h2*r0 + addc $d1,$d1,$t0 + adde $d2,$d2,$t1 + + andc $t0,$d2,$mask # final reduction step + and $h2,$d2,$mask + srdi $t1,$t0,2 + add $t0,$t0,$t1 + addc $h0,$d0,$t0 + addze $h1,$d1 + addze $h2,$h2 + + blr + .long 0 + .byte 0,12,0x14,0,0,0,0,0 +.size __poly1305_mul,.-__poly1305_mul + +.align 5 +__poly1305_splat: + extrdi $d0,$h0,26,38 + extrdi $d1,$h0,26,12 + stw $d0,0x00($t1) + + extrdi $d2,$h0,12,0 + slwi $d0,$d1,2 + stw $d1,0x10($t1) + add $d0,$d0,$d1 # * 5 + stw $d0,0x20($t1) + + insrdi $d2,$h1,14,38 + slwi $d0,$d2,2 + stw $d2,0x30($t1) + add $d0,$d0,$d2 # * 5 + stw $d0,0x40($t1) + + extrdi $d1,$h1,26,24 + extrdi $d2,$h1,24,0 + slwi $d0,$d1,2 + stw $d1,0x50($t1) + add $d0,$d0,$d1 # * 5 + stw $d0,0x60($t1) + + insrdi $d2,$h2,3,37 + slwi $d0,$d2,2 + stw $d2,0x70($t1) + add $d0,$d0,$d2 # * 5 + stw $d0,0x80($t1) + + blr + .long 0 + .byte 0,12,0x14,0,0,0,0,0 +.size __poly1305_splat,.-__poly1305_splat + +.align 5 +__poly1305_blocks_vsx: + $STU $sp,-$VSXFRAME($sp) mflr r0 - $PUSH r28,`$FRAME-$SIZE_T*4`($sp) - $PUSH r29,`$FRAME-$SIZE_T*3`($sp) - $PUSH r30,`$FRAME-$SIZE_T*2`($sp) - $PUSH r31,`$FRAME-$SIZE_T*1`($sp) - $PUSH r0,`$FRAME+$LRSAVE`($sp) + li r10,`15+$LOCALS+128` + li r11,`31+$LOCALS+128` + mfspr r12,256 + stvx v20,r10,$sp + addi r10,r10,32 + stvx v21,r11,$sp + addi r11,r11,32 + stvx v22,r10,$sp + addi r10,r10,32 + stvx v23,r10,$sp + addi r10,r10,32 + stvx v24,r11,$sp + addi r11,r11,32 + stvx v25,r10,$sp + addi r10,r10,32 + stvx v26,r10,$sp + addi r10,r10,32 + stvx v27,r11,$sp + addi r11,r11,32 + stvx v28,r10,$sp + addi r10,r10,32 + stvx v29,r11,$sp + addi r11,r11,32 + stvx v30,r10,$sp + stvx v31,r11,$sp + stw r12,`$VSXFRAME-$SIZE_T*5-4`($sp)# save vrsave + li r12,-1 + mtspr 256,r12 # preserve all AltiVec registers + $PUSH r27,`$VSXFRAME-$SIZE_T*5`($sp) + $PUSH r28,`$VSXFRAME-$SIZE_T*4`($sp) + $PUSH r29,`$VSXFRAME-$SIZE_T*3`($sp) + $PUSH r30,`$VSXFRAME-$SIZE_T*2`($sp) + $PUSH r31,`$VSXFRAME-$SIZE_T*1`($sp) + $PUSH r0,`$VSXFRAME+$LRSAVE`($sp) + + bl LPICmeup + + li $x10,0x10 + li $x20,0x20 + li $x30,0x30 + li $x40,0x40 + li $x50,0x50 + lvx_u $mask26,$x00,$const + lvx_u $_26,$x10,$const + lvx_u $_40,$x20,$const + lvx_u $I2perm,$x30,$const + lvx_u $padbits,$x40,$const + + cmplwi r7,0 # is_base2_26? + bne Lskip_init_vsx + + ld $r0,32($ctx) # load key base 2^64 + ld $r1,40($ctx) + srdi $s1,$r1,2 + li $mask,3 + add $s1,$s1,$r1 # s1 = r1 + r1>>2 + + mr $h0,$r0 # "calculate" r^1 + mr $h1,$r1 + li $h2,0 + addi $t1,$ctx,`48+(12^$BIG_ENDIAN)` + bl __poly1305_splat + + bl __poly1305_mul # caclulate r^2 + addi $t1,$ctx,`48+(4^$BIG_ENDIAN)` + bl __poly1305_splat + + bl __poly1305_mul # caclulate r^3 + addi $t1,$ctx,`48+(8^$BIG_ENDIAN)` + bl __poly1305_splat + + bl __poly1305_mul # caclulate r^4 + addi $t1,$ctx,`48+(0^$BIG_ENDIAN)` + bl __poly1305_splat + + ld $h0,0($ctx) # load hash + ld $h1,8($ctx) + ld $h2,16($ctx) + + extrdi $d0,$h0,26,38 # base 2^64 -> base 2^26 + extrdi $d1,$h0,26,12 + extrdi $d2,$h0,12,0 + mtvrwz $H0,$d0 + insrdi $d2,$h1,14,38 + mtvrwz $H1,$d1 + extrdi $d1,$h1,26,24 + mtvrwz $H2,$d2 + extrdi $d2,$h1,24,0 + mtvrwz $H3,$d1 + insrdi $d2,$h2,3,37 + mtvrwz $H4,$d2 +___ + } else { +############################################################################### +# 32-bit initialization + +my ($h0,$h1,$h2,$h3,$h4,$t0,$t1) = map("r$_",(7..11,0,12)); +my ($R3,$S3,$R4,$S4)=($I1,$I2,$I3,$I4); + +$code.=<<___; +.globl .poly1305_blocks_vsx +.align 5 +.poly1305_blocks_vsx: + lwz r7,24($ctx) # is_base2_26 + cmplwi $len,128 + bge __poly1305_blocks_vsx + cmplwi r7,0 + beq Lpoly1305_blocks lwz $h0,0($ctx) # load hash lwz $h1,4($ctx) @@ -578,68 +1021,957 @@ Labort: lwz $h3,12($ctx) lwz $h4,16($ctx) - addic $d0,$h0,5 # compare to modulus - addze $d1,$h1 - addze $d2,$h2 - addze $d3,$h3 - addze $mask,$h4 + slwi $t0,$h1,26 # base 2^26 -> base 2^32 + srwi $h1,$h1,6 + slwi $t1,$h2,20 + srwi $h2,$h2,12 + addc $h0,$h0,$t0 + slwi $t0,$h3,14 + srwi $h3,$h3,18 + adde $h1,$h1,$t1 + slwi $t1,$h4,8 + srwi $h4,$h4,24 + adde $h2,$h2,$t0 + li $t0,0 + adde $h3,$h3,$t1 + addze $h4,$h4 - srwi $mask,$mask,2 # did it carry/borrow? - neg $mask,$mask + stw $h0,0($ctx) # store hash base 2^32 + stw $h1,4($ctx) + stw $h2,8($ctx) + stw $h3,12($ctx) + stw $h4,16($ctx) + stw $t0,24($ctx) # clear is_base2_26 - andc $h0,$h0,$mask - and $d0,$d0,$mask - andc $h1,$h1,$mask - and $d1,$d1,$mask - or $h0,$h0,$d0 - lwz $d0,0($nonce) # load nonce - andc $h2,$h2,$mask - and $d2,$d2,$mask - or $h1,$h1,$d1 - lwz $d1,4($nonce) - andc $h3,$h3,$mask - and $d3,$d3,$mask - or $h2,$h2,$d2 - lwz $d2,8($nonce) - or $h3,$h3,$d3 - lwz $d3,12($nonce) - - addc $h0,$h0,$d0 # accumulate nonce - adde $h1,$h1,$d1 - adde $h2,$h2,$d2 - adde $h3,$h3,$d3 -___ -$code.=<<___ if ($LITTLE_ENDIAN); - stw $h0,0($mac) # write result - stw $h1,4($mac) - stw $h2,8($mac) - stw $h3,12($mac) -___ -$code.=<<___ if (!$LITTLE_ENDIAN); - li $d1,4 - stwbrx $h0,0,$mac # write result - li $d2,8 - stwbrx $h1,$d1,$mac - li $d3,12 - stwbrx $h2,$d2,$mac - stwbrx $h3,$d3,$mac + b Lpoly1305_blocks + .long 0 + .byte 0,12,0x14,0,0,0,4,0 +.size .poly1305_blocks_vsx,.-.poly1305_blocks_vsx + +.align 5 +__poly1305_mul: + vmulouw $ACC0,$H0,$R0 + vmulouw $ACC1,$H1,$R0 + vmulouw $ACC2,$H2,$R0 + vmulouw $ACC3,$H3,$R0 + vmulouw $ACC4,$H4,$R0 + + vmulouw $T0,$H4,$S1 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H0,$R1 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H1,$R1 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H2,$R1 + vaddudm $ACC3,$ACC3,$T0 + vmulouw $T0,$H3,$R1 + vaddudm $ACC4,$ACC4,$T0 + + vmulouw $T0,$H3,$S2 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H4,$S2 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H0,$R2 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H1,$R2 + vaddudm $ACC3,$ACC3,$T0 + vmulouw $T0,$H2,$R2 + vaddudm $ACC4,$ACC4,$T0 + + vmulouw $T0,$H2,$S3 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H3,$S3 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H4,$S3 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H0,$R3 + vaddudm $ACC3,$ACC3,$T0 + vmulouw $T0,$H1,$R3 + vaddudm $ACC4,$ACC4,$T0 + + vmulouw $T0,$H1,$S4 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H2,$S4 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H3,$S4 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H4,$S4 + vaddudm $ACC3,$ACC3,$T0 + vmulouw $T0,$H0,$R4 + vaddudm $ACC4,$ACC4,$T0 + + ################################################################ + # lazy reduction + + vspltisb $T0,2 + vsrd $H4,$ACC3,$_26 + vsrd $H1,$ACC0,$_26 + vand $H3,$ACC3,$mask26 + vand $H0,$ACC0,$mask26 + vaddudm $H4,$H4,$ACC4 # h3 -> h4 + vaddudm $H1,$H1,$ACC1 # h0 -> h1 + + vsrd $ACC4,$H4,$_26 + vsrd $ACC1,$H1,$_26 + vand $H4,$H4,$mask26 + vand $H1,$H1,$mask26 + vaddudm $H0,$H0,$ACC4 + vaddudm $H2,$ACC2,$ACC1 # h1 -> h2 + + vsld $ACC4,$ACC4,$T0 # <<2 + vsrd $ACC2,$H2,$_26 + vand $H2,$H2,$mask26 + vaddudm $H0,$H0,$ACC4 # h4 -> h0 + vaddudm $H3,$H3,$ACC2 # h2 -> h3 + + vsrd $ACC0,$H0,$_26 + vsrd $ACC3,$H3,$_26 + vand $H0,$H0,$mask26 + vand $H3,$H3,$mask26 + vaddudm $H1,$H1,$ACC0 # h0 -> h1 + vaddudm $H4,$H4,$ACC3 # h3 -> h4 + + blr + .long 0 + .byte 0,12,0x14,0,0,0,0,0 +.size __poly1305_mul,.-__poly1305_mul + +.align 5 +__poly1305_blocks_vsx: + $STU $sp,-$VSXFRAME($sp) + mflr r0 + li r10,`15+$LOCALS+128` + li r11,`31+$LOCALS+128` + mfspr r12,256 + stvx v20,r10,$sp + addi r10,r10,32 + stvx v21,r11,$sp + addi r11,r11,32 + stvx v22,r10,$sp + addi r10,r10,32 + stvx v23,r10,$sp + addi r10,r10,32 + stvx v24,r11,$sp + addi r11,r11,32 + stvx v25,r10,$sp + addi r10,r10,32 + stvx v26,r10,$sp + addi r10,r10,32 + stvx v27,r11,$sp + addi r11,r11,32 + stvx v28,r10,$sp + addi r10,r10,32 + stvx v29,r11,$sp + addi r11,r11,32 + stvx v30,r10,$sp + stvx v31,r11,$sp + stw r12,`$VSXFRAME-$SIZE_T*5-4`($sp)# save vrsave + li r12,-1 + mtspr 256,r12 # preserve all AltiVec registers + $PUSH r27,`$VSXFRAME-$SIZE_T*5`($sp) + $PUSH r28,`$VSXFRAME-$SIZE_T*4`($sp) + $PUSH r29,`$VSXFRAME-$SIZE_T*3`($sp) + $PUSH r30,`$VSXFRAME-$SIZE_T*2`($sp) + $PUSH r31,`$VSXFRAME-$SIZE_T*1`($sp) + $PUSH r0,`$VSXFRAME+$LRSAVE`($sp) + + bl LPICmeup + + li $x10,0x10 + li $x20,0x20 + li $x30,0x30 + li $x40,0x40 + li $x50,0x50 + lvx_u $mask26,$x00,$const + lvx_u $_26,$x10,$const + lvx_u $_40,$x20,$const + lvx_u $I2perm,$x30,$const + lvx_u $padbits,$x40,$const + + cmplwi r7,0 # is_base2_26? + bne Lskip_init_vsx + + lwz $h1,32($ctx) # load key base 2^32 + lwz $h2,36($ctx) + lwz $h3,40($ctx) + lwz $h4,44($ctx) + + extrwi $h0,$h1,26,6 # base 2^32 -> base 2^26 + extrwi $h1,$h1,6,0 + insrwi $h1,$h2,20,6 + extrwi $h2,$h2,12,0 + insrwi $h2,$h3,14,6 + extrwi $h3,$h3,18,0 + insrwi $h3,$h4,8,6 + extrwi $h4,$h4,24,0 + + mtvrwz $R0,$h0 + slwi $h0,$h1,2 + mtvrwz $R1,$h1 + add $h1,$h1,$h0 + mtvrwz $S1,$h1 + slwi $h1,$h2,2 + mtvrwz $R2,$h2 + add $h2,$h2,$h1 + mtvrwz $S2,$h2 + slwi $h2,$h3,2 + mtvrwz $R3,$h3 + add $h3,$h3,$h2 + mtvrwz $S3,$h3 + slwi $h3,$h4,2 + mtvrwz $R4,$h4 + add $h4,$h4,$h3 + mtvrwz $S4,$h4 + + vmr $H0,$R0 + vmr $H1,$R1 + vmr $H2,$R2 + vmr $H3,$R3 + vmr $H4,$R4 + + bl __poly1305_mul # r^1:- * r^1:- + + vpermdi $R0,$H0,$R0,0b00 + vpermdi $R1,$H1,$R1,0b00 + vpermdi $R2,$H2,$R2,0b00 + vpermdi $R3,$H3,$R3,0b00 + vpermdi $R4,$H4,$R4,0b00 + vpermdi $H0,$H0,$H0,0b00 + vpermdi $H1,$H1,$H1,0b00 + vpermdi $H2,$H2,$H2,0b00 + vpermdi $H3,$H3,$H3,0b00 + vpermdi $H4,$H4,$H4,0b00 + vsld $S1,$R1,$T0 # <<2 + vsld $S2,$R2,$T0 + vsld $S3,$R3,$T0 + vsld $S4,$R4,$T0 + vaddudm $S1,$S1,$R1 + vaddudm $S2,$S2,$R2 + vaddudm $S3,$S3,$R3 + vaddudm $S4,$S4,$R4 + + bl __poly1305_mul # r^2:r^2 * r^2:r^1 + + addi $h0,$ctx,0x60 + lwz $h1,0($ctx) # load hash + lwz $h2,4($ctx) + lwz $h3,8($ctx) + lwz $h4,12($ctx) + lwz $t0,16($ctx) + + vmrgow $R0,$R0,$H0 # r^2:r^4:r^1:r^3 + vmrgow $R1,$R1,$H1 + vmrgow $R2,$R2,$H2 + vmrgow $R3,$R3,$H3 + vmrgow $R4,$R4,$H4 + vslw $S1,$R1,$T0 # <<2 + vslw $S2,$R2,$T0 + vslw $S3,$R3,$T0 + vslw $S4,$R4,$T0 + vadduwm $S1,$S1,$R1 + vadduwm $S2,$S2,$R2 + vadduwm $S3,$S3,$R3 + vadduwm $S4,$S4,$R4 + + stvx_u $R0,$x30,$ctx + stvx_u $R1,$x40,$ctx + stvx_u $S1,$x50,$ctx + stvx_u $R2,$x00,$h0 + stvx_u $S2,$x10,$h0 + stvx_u $R3,$x20,$h0 + stvx_u $S3,$x30,$h0 + stvx_u $R4,$x40,$h0 + stvx_u $S4,$x50,$h0 + + extrwi $h0,$h1,26,6 # base 2^32 -> base 2^26 + extrwi $h1,$h1,6,0 + mtvrwz $H0,$h0 + insrwi $h1,$h2,20,6 + extrwi $h2,$h2,12,0 + mtvrwz $H1,$h1 + insrwi $h2,$h3,14,6 + extrwi $h3,$h3,18,0 + mtvrwz $H2,$h2 + insrwi $h3,$h4,8,6 + extrwi $h4,$h4,24,0 + mtvrwz $H3,$h3 + insrwi $h4,$t0,3,5 + mtvrwz $H4,$h4 ___ + } $code.=<<___; - $POP r28,`$FRAME-$SIZE_T*4`($sp) - $POP r29,`$FRAME-$SIZE_T*3`($sp) - $POP r30,`$FRAME-$SIZE_T*2`($sp) - $POP r31,`$FRAME-$SIZE_T*1`($sp) - addi $sp,$sp,$FRAME + li r0,1 + stw r0,24($ctx) # set is_base2_26 + b Loaded_vsx + +.align 4 +Lskip_init_vsx: + li $x10,4 + li $x20,8 + li $x30,12 + li $x40,16 + lvwzx_u $H0,$x00,$ctx + lvwzx_u $H1,$x10,$ctx + lvwzx_u $H2,$x20,$ctx + lvwzx_u $H3,$x30,$ctx + lvwzx_u $H4,$x40,$ctx + +Loaded_vsx: + li $x10,0x10 + li $x20,0x20 + li $x30,0x30 + li $x40,0x40 + li $x50,0x50 + li $x60,0x60 + li $x70,0x70 + addi $ctx_,$ctx,64 # &ctx->r[1] + addi $_ctx,$sp,`$LOCALS+15` # &ctx->r[1], r^2:r^4 shadow + + vxor $T0,$T0,$T0 # ensure second half is zero + vpermdi $H0,$H0,$T0,0b00 + vpermdi $H1,$H1,$T0,0b00 + vpermdi $H2,$H2,$T0,0b00 + vpermdi $H3,$H3,$T0,0b00 + vpermdi $H4,$H4,$T0,0b00 + + be?lvx_u $_4,$x50,$const # byte swap mask + lvx_u $T1,$x00,$inp # load first input block + lvx_u $T2,$x10,$inp + lvx_u $T3,$x20,$inp + lvx_u $T4,$x30,$inp + be?vperm $T1,$T1,$T1,$_4 + be?vperm $T2,$T2,$T2,$_4 + be?vperm $T3,$T3,$T3,$_4 + be?vperm $T4,$T4,$T4,$_4 + + vpermdi $I0,$T1,$T2,0b00 # smash input to base 2^26 + vspltisb $_4,4 + vperm $I2,$T1,$T2,$I2perm # 0x...0e0f0001...1e1f1011 + vspltisb $_14,14 + vpermdi $I3,$T1,$T2,0b11 + + vsrd $I1,$I0,$_26 + vsrd $I2,$I2,$_4 + vsrd $I4,$I3,$_40 + vsrd $I3,$I3,$_14 + vand $I0,$I0,$mask26 + vand $I1,$I1,$mask26 + vand $I2,$I2,$mask26 + vand $I3,$I3,$mask26 + + vpermdi $T1,$T3,$T4,0b00 + vperm $T2,$T3,$T4,$I2perm # 0x...0e0f0001...1e1f1011 + vpermdi $T3,$T3,$T4,0b11 + + vsrd $T0,$T1,$_26 + vsrd $T2,$T2,$_4 + vsrd $T4,$T3,$_40 + vsrd $T3,$T3,$_14 + vand $T1,$T1,$mask26 + vand $T0,$T0,$mask26 + vand $T2,$T2,$mask26 + vand $T3,$T3,$mask26 + + # inp[2]:inp[0]:inp[3]:inp[1] + vmrgow $I4,$T4,$I4 + vmrgow $I0,$T1,$I0 + vmrgow $I1,$T0,$I1 + vmrgow $I2,$T2,$I2 + vmrgow $I3,$T3,$I3 + vor $I4,$I4,$padbits + + lvx_splt $R0,$x30,$ctx # taking lvx_vsplt out of loop + lvx_splt $R1,$x00,$ctx_ # gives ~8% improvement + lvx_splt $S1,$x10,$ctx_ + lvx_splt $R2,$x20,$ctx_ + lvx_splt $S2,$x30,$ctx_ + lvx_splt $T1,$x40,$ctx_ + lvx_splt $T2,$x50,$ctx_ + lvx_splt $T3,$x60,$ctx_ + lvx_splt $T4,$x70,$ctx_ + stvx $R1,$x00,$_ctx + stvx $S1,$x10,$_ctx + stvx $R2,$x20,$_ctx + stvx $S2,$x30,$_ctx + stvx $T1,$x40,$_ctx + stvx $T2,$x50,$_ctx + stvx $T3,$x60,$_ctx + stvx $T4,$x70,$_ctx + + addi $inp,$inp,0x40 + addi $const,$const,0x50 + addi r0,$len,-64 + srdi r0,r0,6 + mtctr r0 + b Loop_vsx + +.align 4 +Loop_vsx: + ################################################################ + ## ((inp[0]*r^4+inp[2]*r^2+inp[4])*r^4+inp[6]*r^2 + ## ((inp[1]*r^4+inp[3]*r^2+inp[5])*r^3+inp[7]*r + ## \___________________/ + ## + ## Note that we start with inp[2:3]*r^2. This is because it + ## doesn't depend on reduction in previous iteration. + ################################################################ + ## d4 = h4*r0 + h3*r1 + h2*r2 + h1*r3 + h0*r4 + ## d3 = h3*r0 + h2*r1 + h1*r2 + h0*r3 + h4*5*r4 + ## d2 = h2*r0 + h1*r1 + h0*r2 + h4*5*r3 + h3*5*r4 + ## d1 = h1*r0 + h0*r1 + h4*5*r2 + h3*5*r3 + h2*5*r4 + ## d0 = h0*r0 + h4*5*r1 + h3*5*r2 + h2*5*r3 + h1*5*r4 + + vmuleuw $ACC0,$I0,$R0 + vmuleuw $ACC1,$I0,$R1 + vmuleuw $ACC2,$I0,$R2 + vmuleuw $ACC3,$I1,$R2 + + vmuleuw $T0,$I1,$R0 + vaddudm $ACC1,$ACC1,$T0 + vmuleuw $T0,$I1,$R1 + vaddudm $ACC2,$ACC2,$T0 + vmuleuw $ACC4,$I2,$R2 + vmuleuw $T0,$I4,$S1 + vaddudm $ACC0,$ACC0,$T0 + vmuleuw $T0,$I2,$R1 + vaddudm $ACC3,$ACC3,$T0 + lvx $S3,$x50,$_ctx + vmuleuw $T0,$I3,$R1 + vaddudm $ACC4,$ACC4,$T0 + lvx $R3,$x40,$_ctx + + vaddudm $H2,$H2,$I2 + vaddudm $H0,$H0,$I0 + vaddudm $H3,$H3,$I3 + vaddudm $H1,$H1,$I1 + vaddudm $H4,$H4,$I4 + + vmuleuw $T0,$I3,$S2 + vaddudm $ACC0,$ACC0,$T0 + vmuleuw $T0,$I4,$S2 + vaddudm $ACC1,$ACC1,$T0 + vmuleuw $T0,$I2,$R0 + vaddudm $ACC2,$ACC2,$T0 + vmuleuw $T0,$I3,$R0 + vaddudm $ACC3,$ACC3,$T0 + lvx $S4,$x70,$_ctx + vmuleuw $T0,$I4,$R0 + vaddudm $ACC4,$ACC4,$T0 + lvx $R4,$x60,$_ctx + + vmuleuw $T0,$I2,$S3 + vaddudm $ACC0,$ACC0,$T0 + vmuleuw $T0,$I3,$S3 + vaddudm $ACC1,$ACC1,$T0 + vmuleuw $T0,$I4,$S3 + vaddudm $ACC2,$ACC2,$T0 + vmuleuw $T0,$I0,$R3 + vaddudm $ACC3,$ACC3,$T0 + vmuleuw $T0,$I1,$R3 + vaddudm $ACC4,$ACC4,$T0 + + be?lvx_u $_4,$x00,$const # byte swap mask + lvx_u $T1,$x00,$inp # load next input block + lvx_u $T2,$x10,$inp + lvx_u $T3,$x20,$inp + lvx_u $T4,$x30,$inp + be?vperm $T1,$T1,$T1,$_4 + be?vperm $T2,$T2,$T2,$_4 + be?vperm $T3,$T3,$T3,$_4 + be?vperm $T4,$T4,$T4,$_4 + + vmuleuw $T0,$I1,$S4 + vaddudm $ACC0,$ACC0,$T0 + vmuleuw $T0,$I2,$S4 + vaddudm $ACC1,$ACC1,$T0 + vmuleuw $T0,$I3,$S4 + vaddudm $ACC2,$ACC2,$T0 + vmuleuw $T0,$I4,$S4 + vaddudm $ACC3,$ACC3,$T0 + vmuleuw $T0,$I0,$R4 + vaddudm $ACC4,$ACC4,$T0 + + vpermdi $I0,$T1,$T2,0b00 # smash input to base 2^26 + vspltisb $_4,4 + vperm $I2,$T1,$T2,$I2perm # 0x...0e0f0001...1e1f1011 + vpermdi $I3,$T1,$T2,0b11 + + # (hash + inp[0:1]) * r^4 + vmulouw $T0,$H0,$R0 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H1,$R0 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H2,$R0 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H3,$R0 + vaddudm $ACC3,$ACC3,$T0 + vmulouw $T0,$H4,$R0 + vaddudm $ACC4,$ACC4,$T0 + + vpermdi $T1,$T3,$T4,0b00 + vperm $T2,$T3,$T4,$I2perm # 0x...0e0f0001...1e1f1011 + vpermdi $T3,$T3,$T4,0b11 + + vmulouw $T0,$H2,$S3 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H3,$S3 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H4,$S3 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H0,$R3 + vaddudm $ACC3,$ACC3,$T0 + lvx $S1,$x10,$_ctx + vmulouw $T0,$H1,$R3 + vaddudm $ACC4,$ACC4,$T0 + lvx $R1,$x00,$_ctx + + vsrd $I1,$I0,$_26 + vsrd $I2,$I2,$_4 + vsrd $I4,$I3,$_40 + vsrd $I3,$I3,$_14 + + vmulouw $T0,$H1,$S4 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H2,$S4 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H3,$S4 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H4,$S4 + vaddudm $ACC3,$ACC3,$T0 + lvx $S2,$x30,$_ctx + vmulouw $T0,$H0,$R4 + vaddudm $ACC4,$ACC4,$T0 + lvx $R2,$x20,$_ctx + + vand $I0,$I0,$mask26 + vand $I1,$I1,$mask26 + vand $I2,$I2,$mask26 + vand $I3,$I3,$mask26 + + vmulouw $T0,$H4,$S1 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H0,$R1 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H1,$R1 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H2,$R1 + vaddudm $ACC3,$ACC3,$T0 + vmulouw $T0,$H3,$R1 + vaddudm $ACC4,$ACC4,$T0 + + vsrd $T2,$T2,$_4 + vsrd $_4,$T1,$_26 + vsrd $T4,$T3,$_40 + vsrd $T3,$T3,$_14 + + vmulouw $T0,$H3,$S2 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H4,$S2 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H0,$R2 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H1,$R2 + vaddudm $ACC3,$ACC3,$T0 + vmulouw $T0,$H2,$R2 + vaddudm $ACC4,$ACC4,$T0 + + vand $T1,$T1,$mask26 + vand $_4,$_4,$mask26 + vand $T2,$T2,$mask26 + vand $T3,$T3,$mask26 + + ################################################################ + # lazy reduction as discussed in "NEON crypto" by D.J. Bernstein + # and P. Schwabe + + vspltisb $T0,2 + vsrd $H4,$ACC3,$_26 + vsrd $H1,$ACC0,$_26 + vand $H3,$ACC3,$mask26 + vand $H0,$ACC0,$mask26 + vaddudm $H4,$H4,$ACC4 # h3 -> h4 + vaddudm $H1,$H1,$ACC1 # h0 -> h1 + + vmrgow $I4,$T4,$I4 + vmrgow $I0,$T1,$I0 + vmrgow $I1,$_4,$I1 + vmrgow $I2,$T2,$I2 + vmrgow $I3,$T3,$I3 + vor $I4,$I4,$padbits + + vsrd $ACC4,$H4,$_26 + vsrd $ACC1,$H1,$_26 + vand $H4,$H4,$mask26 + vand $H1,$H1,$mask26 + vaddudm $H0,$H0,$ACC4 + vaddudm $H2,$ACC2,$ACC1 # h1 -> h2 + + vsld $ACC4,$ACC4,$T0 # <<2 + vsrd $ACC2,$H2,$_26 + vand $H2,$H2,$mask26 + vaddudm $H0,$H0,$ACC4 # h4 -> h0 + vaddudm $H3,$H3,$ACC2 # h2 -> h3 + + vsrd $ACC0,$H0,$_26 + vsrd $ACC3,$H3,$_26 + vand $H0,$H0,$mask26 + vand $H3,$H3,$mask26 + vaddudm $H1,$H1,$ACC0 # h0 -> h1 + vaddudm $H4,$H4,$ACC3 # h3 -> h4 + + addi $inp,$inp,0x40 + bdnz Loop_vsx + + neg $len,$len + andi. $len,$len,0x30 + sub $inp,$inp,$len + + lvx_u $R0,$x30,$ctx # load all powers + lvx_u $R1,$x00,$ctx_ + lvx_u $S1,$x10,$ctx_ + lvx_u $R2,$x20,$ctx_ + lvx_u $S2,$x30,$ctx_ + +Last_vsx: + vmuleuw $ACC0,$I0,$R0 + vmuleuw $ACC1,$I1,$R0 + vmuleuw $ACC2,$I2,$R0 + vmuleuw $ACC3,$I3,$R0 + vmuleuw $ACC4,$I4,$R0 + + vmuleuw $T0,$I4,$S1 + vaddudm $ACC0,$ACC0,$T0 + vmuleuw $T0,$I0,$R1 + vaddudm $ACC1,$ACC1,$T0 + vmuleuw $T0,$I1,$R1 + vaddudm $ACC2,$ACC2,$T0 + vmuleuw $T0,$I2,$R1 + vaddudm $ACC3,$ACC3,$T0 + lvx_u $S3,$x50,$ctx_ + vmuleuw $T0,$I3,$R1 + vaddudm $ACC4,$ACC4,$T0 + lvx_u $R3,$x40,$ctx_ + + vaddudm $H2,$H2,$I2 + vaddudm $H0,$H0,$I0 + vaddudm $H3,$H3,$I3 + vaddudm $H1,$H1,$I1 + vaddudm $H4,$H4,$I4 + + vmuleuw $T0,$I3,$S2 + vaddudm $ACC0,$ACC0,$T0 + vmuleuw $T0,$I4,$S2 + vaddudm $ACC1,$ACC1,$T0 + vmuleuw $T0,$I0,$R2 + vaddudm $ACC2,$ACC2,$T0 + vmuleuw $T0,$I1,$R2 + vaddudm $ACC3,$ACC3,$T0 + lvx_u $S4,$x70,$ctx_ + vmuleuw $T0,$I2,$R2 + vaddudm $ACC4,$ACC4,$T0 + lvx_u $R4,$x60,$ctx_ + + vmuleuw $T0,$I2,$S3 + vaddudm $ACC0,$ACC0,$T0 + vmuleuw $T0,$I3,$S3 + vaddudm $ACC1,$ACC1,$T0 + vmuleuw $T0,$I4,$S3 + vaddudm $ACC2,$ACC2,$T0 + vmuleuw $T0,$I0,$R3 + vaddudm $ACC3,$ACC3,$T0 + vmuleuw $T0,$I1,$R3 + vaddudm $ACC4,$ACC4,$T0 + + vmuleuw $T0,$I1,$S4 + vaddudm $ACC0,$ACC0,$T0 + vmuleuw $T0,$I2,$S4 + vaddudm $ACC1,$ACC1,$T0 + vmuleuw $T0,$I3,$S4 + vaddudm $ACC2,$ACC2,$T0 + vmuleuw $T0,$I4,$S4 + vaddudm $ACC3,$ACC3,$T0 + vmuleuw $T0,$I0,$R4 + vaddudm $ACC4,$ACC4,$T0 + + # (hash + inp[0:1]) * r^4 + vmulouw $T0,$H0,$R0 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H1,$R0 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H2,$R0 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H3,$R0 + vaddudm $ACC3,$ACC3,$T0 + vmulouw $T0,$H4,$R0 + vaddudm $ACC4,$ACC4,$T0 + + vmulouw $T0,$H2,$S3 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H3,$S3 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H4,$S3 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H0,$R3 + vaddudm $ACC3,$ACC3,$T0 + lvx_u $S1,$x10,$ctx_ + vmulouw $T0,$H1,$R3 + vaddudm $ACC4,$ACC4,$T0 + lvx_u $R1,$x00,$ctx_ + + vmulouw $T0,$H1,$S4 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H2,$S4 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H3,$S4 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H4,$S4 + vaddudm $ACC3,$ACC3,$T0 + lvx_u $S2,$x30,$ctx_ + vmulouw $T0,$H0,$R4 + vaddudm $ACC4,$ACC4,$T0 + lvx_u $R2,$x20,$ctx_ + + vmulouw $T0,$H4,$S1 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H0,$R1 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H1,$R1 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H2,$R1 + vaddudm $ACC3,$ACC3,$T0 + vmulouw $T0,$H3,$R1 + vaddudm $ACC4,$ACC4,$T0 + + vmulouw $T0,$H3,$S2 + vaddudm $ACC0,$ACC0,$T0 + vmulouw $T0,$H4,$S2 + vaddudm $ACC1,$ACC1,$T0 + vmulouw $T0,$H0,$R2 + vaddudm $ACC2,$ACC2,$T0 + vmulouw $T0,$H1,$R2 + vaddudm $ACC3,$ACC3,$T0 + vmulouw $T0,$H2,$R2 + vaddudm $ACC4,$ACC4,$T0 + + ################################################################ + # horizontal addition + + vpermdi $H0,$ACC0,$ACC0,0b10 + vpermdi $H1,$ACC1,$ACC1,0b10 + vpermdi $H2,$ACC2,$ACC2,0b10 + vpermdi $H3,$ACC3,$ACC3,0b10 + vpermdi $H4,$ACC4,$ACC4,0b10 + vaddudm $ACC0,$ACC0,$H0 + vaddudm $ACC1,$ACC1,$H1 + vaddudm $ACC2,$ACC2,$H2 + vaddudm $ACC3,$ACC3,$H3 + vaddudm $ACC4,$ACC4,$H4 + + ################################################################ + # lazy reduction + + vspltisb $T0,2 + vsrd $H4,$ACC3,$_26 + vsrd $H1,$ACC0,$_26 + vand $H3,$ACC3,$mask26 + vand $H0,$ACC0,$mask26 + vaddudm $H4,$H4,$ACC4 # h3 -> h4 + vaddudm $H1,$H1,$ACC1 # h0 -> h1 + + vsrd $ACC4,$H4,$_26 + vsrd $ACC1,$H1,$_26 + vand $H4,$H4,$mask26 + vand $H1,$H1,$mask26 + vaddudm $H0,$H0,$ACC4 + vaddudm $H2,$ACC2,$ACC1 # h1 -> h2 + + vsld $ACC4,$ACC4,$T0 # <<2 + vsrd $ACC2,$H2,$_26 + vand $H2,$H2,$mask26 + vaddudm $H0,$H0,$ACC4 # h4 -> h0 + vaddudm $H3,$H3,$ACC2 # h2 -> h3 + + vsrd $ACC0,$H0,$_26 + vsrd $ACC3,$H3,$_26 + vand $H0,$H0,$mask26 + vand $H3,$H3,$mask26 + vaddudm $H1,$H1,$ACC0 # h0 -> h1 + vaddudm $H4,$H4,$ACC3 # h3 -> h4 + + beq Ldone_vsx + + add r6,$const,$len + + be?lvx_u $_4,$x00,$const # byte swap mask + lvx_u $T1,$x00,$inp # load last partial input block + lvx_u $T2,$x10,$inp + lvx_u $T3,$x20,$inp + lvx_u $T4,$x30,$inp + be?vperm $T1,$T1,$T1,$_4 + be?vperm $T2,$T2,$T2,$_4 + be?vperm $T3,$T3,$T3,$_4 + be?vperm $T4,$T4,$T4,$_4 + + vpermdi $I0,$T1,$T2,0b00 # smash input to base 2^26 + vspltisb $_4,4 + vperm $I2,$T1,$T2,$I2perm # 0x...0e0f0001...1e1f1011 + vpermdi $I3,$T1,$T2,0b11 + + vsrd $I1,$I0,$_26 + vsrd $I2,$I2,$_4 + vsrd $I4,$I3,$_40 + vsrd $I3,$I3,$_14 + vand $I0,$I0,$mask26 + vand $I1,$I1,$mask26 + vand $I2,$I2,$mask26 + vand $I3,$I3,$mask26 + + vpermdi $T0,$T3,$T4,0b00 + vperm $T1,$T3,$T4,$I2perm # 0x...0e0f0001...1e1f1011 + vpermdi $T2,$T3,$T4,0b11 + + lvx_u $ACC0,$x00,r6 + lvx_u $ACC1,$x30,r6 + + vsrd $T3,$T0,$_26 + vsrd $T1,$T1,$_4 + vsrd $T4,$T2,$_40 + vsrd $T2,$T2,$_14 + vand $T0,$T0,$mask26 + vand $T3,$T3,$mask26 + vand $T1,$T1,$mask26 + vand $T2,$T2,$mask26 + + # inp[2]:inp[0]:inp[3]:inp[1] + vmrgow $I4,$T4,$I4 + vmrgow $I0,$T0,$I0 + vmrgow $I1,$T3,$I1 + vmrgow $I2,$T1,$I2 + vmrgow $I3,$T2,$I3 + vor $I4,$I4,$padbits + + vperm $H0,$H0,$H0,$ACC0 # move hash to right lane + vand $I0,$I0, $ACC1 # mask redundant input lane[s] + vperm $H1,$H1,$H1,$ACC0 + vand $I1,$I1, $ACC1 + vperm $H2,$H2,$H2,$ACC0 + vand $I2,$I2, $ACC1 + vperm $H3,$H3,$H3,$ACC0 + vand $I3,$I3, $ACC1 + vperm $H4,$H4,$H4,$ACC0 + vand $I4,$I4, $ACC1 + + vaddudm $I0,$I0,$H0 # accumulate hash + vxor $H0,$H0,$H0 # wipe hash value + vaddudm $I1,$I1,$H1 + vxor $H1,$H1,$H1 + vaddudm $I2,$I2,$H2 + vxor $H2,$H2,$H2 + vaddudm $I3,$I3,$H3 + vxor $H3,$H3,$H3 + vaddudm $I4,$I4,$H4 + vxor $H4,$H4,$H4 + + xor. $len,$len,$len + b Last_vsx + +.align 4 +Ldone_vsx: + $POP r0,`$VSXFRAME+$LRSAVE`($sp) + li $x10,4 + li $x20,8 + li $x30,12 + li $x40,16 + stvwx_u $H0,$x00,$ctx # store hash + stvwx_u $H1,$x10,$ctx + stvwx_u $H2,$x20,$ctx + stvwx_u $H3,$x30,$ctx + stvwx_u $H4,$x40,$ctx + + lwz r12,`$VSXFRAME-$SIZE_T*5-4`($sp)# pull vrsave + mtlr r0 + li r10,`15+$LOCALS+128` + li r11,`31+$LOCALS+128` + mtspr 256,r12 # restore vrsave + lvx v20,r10,$sp + addi r10,r10,32 + lvx v21,r10,$sp + addi r10,r10,32 + lvx v22,r11,$sp + addi r11,r11,32 + lvx v23,r10,$sp + addi r10,r10,32 + lvx v24,r11,$sp + addi r11,r11,32 + lvx v25,r10,$sp + addi r10,r10,32 + lvx v26,r11,$sp + addi r11,r11,32 + lvx v27,r10,$sp + addi r10,r10,32 + lvx v28,r11,$sp + addi r11,r11,32 + lvx v29,r10,$sp + addi r10,r10,32 + lvx v30,r11,$sp + lvx v31,r10,$sp + $POP r27,`$VSXFRAME-$SIZE_T*5`($sp) + $POP r28,`$VSXFRAME-$SIZE_T*4`($sp) + $POP r29,`$VSXFRAME-$SIZE_T*3`($sp) + $POP r30,`$VSXFRAME-$SIZE_T*2`($sp) + $POP r31,`$VSXFRAME-$SIZE_T*1`($sp) + addi $sp,$sp,$VSXFRAME blr .long 0 - .byte 0,12,4,1,0x80,4,3,0 -.size .poly1305_emit,.-.poly1305_emit + .byte 0,12,0x04,1,0x80,5,4,0 + .long 0 +.size __poly1305_blocks_vsx,.-__poly1305_blocks_vsx + +.align 6 +LPICmeup: + mflr r0 + bcl 20,31,\$+4 + mflr $const # vvvvvv "distance" between . and 1st data entry + addi $const,$const,`64-8` + mtlr r0 + blr + .long 0 + .byte 0,12,0x14,0,0,0,0,0 + .space `64-9*4` + +.quad 0x0000000003ffffff,0x0000000003ffffff # mask26 +.quad 0x000000000000001a,0x000000000000001a # _26 +.quad 0x0000000000000028,0x0000000000000028 # _40 +.quad 0x000000000e0f0001,0x000000001e1f1011 # I2perm +.quad 0x0100000001000000,0x0100000001000000 # padbits +.quad 0x0706050403020100,0x0f0e0d0c0b0a0908 # byte swap for big-endian + +.quad 0x0000000000000000,0x0000000004050607 # magic tail masks +.quad 0x0405060700000000,0x0000000000000000 +.quad 0x0000000000000000,0x0405060700000000 + +.quad 0xffffffff00000000,0xffffffffffffffff +.quad 0xffffffff00000000,0xffffffff00000000 +.quad 0x0000000000000000,0xffffffff00000000 ___ - } +}}} $code.=<<___; -.asciz "Poly1305 for PPC, CRYPTOGAMS by " +.asciz "Poly1305 for PPC, CRYPTOGAMS by \@dot-asm" ___ -$code =~ s/\`([^\`]*)\`/eval $1/gem; -print $code; +foreach (split("\n",$code)) { + s/\`([^\`]*)\`/eval($1)/ge; + + # instructions prefixed with '?' are endian-specific and need + # to be adjusted accordingly... + if ($flavour !~ /le$/) { # big-endian + s/be\?// or + s/le\?/#le#/ + } else { # little-endian + s/le\?// or + s/be\?/#be#/ + } + + print $_,"\n"; +} close STDOUT; diff --git a/crypto/ppccap.c b/crypto/ppccap.c index 70829e4..9601674 100644 --- a/crypto/ppccap.c +++ b/crypto/ppccap.c @@ -116,10 +116,19 @@ void poly1305_blocks_fpu(void *ctx, const unsigned char *inp, size_t len, unsigned int padbit); void poly1305_emit_fpu(void *ctx, unsigned char mac[16], const unsigned int nonce[4]); +void poly1305_init_vsx(void *ctx, const unsigned char key[16]); +void poly1305_blocks_vsx(void *ctx, const unsigned char *inp, size_t len, + unsigned int padbit); +void poly1305_emit_vsx(void *ctx, unsigned char mac[16], + const unsigned int nonce[4]); int poly1305_init(void *ctx, const unsigned char key[16], void *func[2]); int poly1305_init(void *ctx, const unsigned char key[16], void *func[2]) { - if (sizeof(size_t) == 4 && (OPENSSL_ppccap_P & PPC_FPU)) { + if (OPENSSL_ppccap_P & PPC_CRYPTO207) { + poly1305_init_int(ctx, key); + func[0] = (void*)(uintptr_t)poly1305_blocks_vsx; + func[1] = (void*)(uintptr_t)poly1305_emit; + } else if (sizeof(size_t) == 4 && (OPENSSL_ppccap_P & PPC_FPU)) { poly1305_init_fpu(ctx, key); func[0] = (void*)(uintptr_t)poly1305_blocks_fpu; func[1] = (void*)(uintptr_t)poly1305_emit_fpu; From matt at openssl.org Fri Feb 1 12:13:10 2019 From: matt at openssl.org (Matt Caswell) Date: Fri, 01 Feb 2019 12:13:10 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549023190.435794.26507.nullmailer@dev.openssl.org> The branch master has been updated via 09d62b336d9e2a11b330d45d4f0f3f37cbb0d674 (commit) from a28e4890eed847e6122a1c4d50653566e0813f45 (commit) - Log ----------------------------------------------------------------- commit 09d62b336d9e2a11b330d45d4f0f3f37cbb0d674 Author: Michael Tuexen Date: Wed Dec 26 12:44:53 2018 +0100 Fix end-point shared secret for DTLS/SCTP When computing the end-point shared secret, don't take the terminating NULL character into account. Please note that this fix breaks interoperability with older versions of OpenSSL, which are not fixed. Fixes #7956 Reviewed-by: Kurt Roeckx Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7957) ----------------------------------------------------------------------- Summary of changes: CHANGES | 7 ++ apps/s_client.c | 15 +++ apps/s_server.c | 17 ++- doc/man1/s_client.pod | 9 ++ doc/man1/s_server.pod | 9 ++ doc/man3/SSL_CTX_set_mode.pod | 9 ++ include/openssl/ssl.h | 12 +++ ssl/statem/statem_clnt.c | 16 ++- ssl/statem/statem_srvr.c | 16 ++- test/handshake_helper.c | 33 +++++- test/recipes/80-test_ssl_new.t | 3 +- test/ssl-tests/29-dtls-sctp-label-bug.conf | 116 +++++++++++++++++++++ ...atus.conf.in => 29-dtls-sctp-label-bug.conf.in} | 57 ++++------ test/ssl_test_ctx.c | 4 + test/ssl_test_ctx.h | 4 + 15 files changed, 286 insertions(+), 41 deletions(-) create mode 100644 test/ssl-tests/29-dtls-sctp-label-bug.conf copy test/ssl-tests/{16-dtls-certstatus.conf.in => 29-dtls-sctp-label-bug.conf.in} (54%) diff --git a/CHANGES b/CHANGES index 311d6c6..20b1f5c 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,13 @@ Changes between 1.1.1 and 3.0.0 [xx XXX xxxx] + *) Fix a bug in the computation of the endpoint-pair shared secret used + by DTLS over SCTP. This breaks interoperability with older versions + of OpenSSL like OpenSSL 1.1.0 and OpenSSL 1.0.2. There is a runtime + switch SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG (off by default) enabling + interoperability with such broken implementations. However, enabling + this switch breaks interoperability with correct implementations. + *) Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0(). [Richard Levitte] diff --git a/apps/s_client.c b/apps/s_client.c index 6e06f15..872496c 100644 --- a/apps/s_client.c +++ b/apps/s_client.c @@ -598,6 +598,7 @@ typedef enum OPTION_choice { #endif OPT_DANE_TLSA_RRDATA, OPT_DANE_EE_NO_NAME, OPT_ENABLE_PHA, + OPT_SCTP_LABEL_BUG, OPT_R_ENUM } OPTION_CHOICE; @@ -754,6 +755,7 @@ const OPTIONS s_client_options[] = { #endif #ifndef OPENSSL_NO_SCTP {"sctp", OPT_SCTP, '-', "Use SCTP"}, + {"sctp_label_bug", OPT_SCTP_LABEL_BUG, '-', "Enable SCTP label length bug"}, #endif #ifndef OPENSSL_NO_SSL_TRACE {"trace", OPT_TRACE, '-', "Show trace output of protocol messages"}, @@ -982,6 +984,9 @@ int s_client_main(int argc, char **argv) #endif char *psksessf = NULL; int enable_pha = 0; +#ifndef OPENSSL_NO_SCTP + int sctp_label_bug = 0; +#endif FD_ZERO(&readfds); FD_ZERO(&writefds); @@ -1335,6 +1340,11 @@ int s_client_main(int argc, char **argv) protocol = IPPROTO_SCTP; #endif break; + case OPT_SCTP_LABEL_BUG: +#ifndef OPENSSL_NO_SCTP + sctp_label_bug = 1; +#endif + break; case OPT_TIMEOUT: #ifndef OPENSSL_NO_DTLS enable_timeouts = 1; @@ -1729,6 +1739,11 @@ int s_client_main(int argc, char **argv) } } +#ifndef OPENSSL_NO_SCTP + if (protocol == IPPROTO_SCTP && sctp_label_bug == 1) + SSL_CTX_set_mode(ctx, SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG); +#endif + if (min_version != 0 && SSL_CTX_set_min_proto_version(ctx, min_version) == 0) goto end; diff --git a/apps/s_server.c b/apps/s_server.c index 8565a3a..fbbfd6c 100644 --- a/apps/s_server.c +++ b/apps/s_server.c @@ -751,7 +751,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_RECV_MAX_EARLY, OPT_EARLY_DATA, - OPT_S_NUM_TICKETS, OPT_ANTI_REPLAY, OPT_NO_ANTI_REPLAY, + OPT_S_NUM_TICKETS, OPT_ANTI_REPLAY, OPT_NO_ANTI_REPLAY, OPT_SCTP_LABEL_BUG, OPT_R_ENUM, OPT_S_ENUM, OPT_V_ENUM, @@ -938,6 +938,7 @@ const OPTIONS s_server_options[] = { #endif #ifndef OPENSSL_NO_SCTP {"sctp", OPT_SCTP, '-', "Use SCTP"}, + {"sctp_label_bug", OPT_SCTP_LABEL_BUG, '-', "Enable SCTP label length bug"}, #endif #ifndef OPENSSL_NO_DH {"no_dhe", OPT_NO_DHE, '-', "Disable ephemeral DH"}, @@ -1047,6 +1048,9 @@ int s_server_main(int argc, char *argv[]) const char *keylog_file = NULL; int max_early_data = -1, recv_max_early_data = -1; char *psksessf = NULL; +#ifndef OPENSSL_NO_SCTP + int sctp_label_bug = 0; +#endif /* Init of few remaining global variables */ local_argc = argc; @@ -1490,6 +1494,11 @@ int s_server_main(int argc, char *argv[]) protocol = IPPROTO_SCTP; #endif break; + case OPT_SCTP_LABEL_BUG: +#ifndef OPENSSL_NO_SCTP + sctp_label_bug = 1; +#endif + break; case OPT_TIMEOUT: #ifndef OPENSSL_NO_DTLS enable_timeouts = 1; @@ -1792,6 +1801,12 @@ int s_server_main(int argc, char *argv[]) goto end; } } + +#ifndef OPENSSL_NO_SCTP + if (protocol == IPPROTO_SCTP && sctp_label_bug == 1) + SSL_CTX_set_mode(ctx, SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG); +#endif + if (min_version != 0 && SSL_CTX_set_min_proto_version(ctx, min_version) == 0) goto end; diff --git a/doc/man1/s_client.pod b/doc/man1/s_client.pod index 70b97bf..e16450b 100644 --- a/doc/man1/s_client.pod +++ b/doc/man1/s_client.pod @@ -102,6 +102,7 @@ B B [B<-dtls1>] [B<-dtls1_2>] [B<-sctp>] +[B<-sctp_label_bug>] [B<-fallback_scsv>] [B<-async>] [B<-max_send_frag>] @@ -506,6 +507,14 @@ Use SCTP for the transport protocol instead of UDP in DTLS. Must be used in conjunction with B<-dtls>, B<-dtls1> or B<-dtls1_2>. This option is only available where OpenSSL has support for SCTP enabled. +=item B<-sctp_label_bug> + +Use the incorrect behaviour of older OpenSSL implementations when computing +endpoint-pair shared secrets for DTLS/SCTP. This allows communication with +older broken implementations but breaks interoperability with correct +implementations. Must be used in conjunction with B<-sctp>. This option is only +available where OpenSSL has support for SCTP enabled. + =item B<-fallback_scsv> Send TLS_FALLBACK_SCSV in the ClientHello. diff --git a/doc/man1/s_server.pod b/doc/man1/s_server.pod index e86c2b3..c4f1bba 100644 --- a/doc/man1/s_server.pod +++ b/doc/man1/s_server.pod @@ -173,6 +173,7 @@ B B [B<-dtls1>] [B<-dtls1_2>] [B<-sctp>] +[B<-sctp_label_bug>] [B<-no_dhe>] [B<-nextprotoneg val>] [B<-use_srtp val>] @@ -685,6 +686,14 @@ Use SCTP for the transport protocol instead of UDP in DTLS. Must be used in conjunction with B<-dtls>, B<-dtls1> or B<-dtls1_2>. This option is only available where OpenSSL has support for SCTP enabled. +=item B<-sctp_label_bug> + +Use the incorrect behaviour of older OpenSSL implementations when computing +endpoint-pair shared secrets for DTLS/SCTP. This allows communication with +older broken implementations but breaks interoperability with correct +implementations. Must be used in conjunction with B<-sctp>. This option is only +available where OpenSSL has support for SCTP enabled. + =item B<-no_dhe> If this option is set then no DH parameters will be loaded effectively diff --git a/doc/man3/SSL_CTX_set_mode.pod b/doc/man3/SSL_CTX_set_mode.pod index 06e9a29..a4997c9 100644 --- a/doc/man3/SSL_CTX_set_mode.pod +++ b/doc/man3/SSL_CTX_set_mode.pod @@ -121,6 +121,15 @@ Kernel TLS might not support all the features of OpenSSL. For instance, renegotiation, and setting the maximum fragment size is not possible as of Linux 4.20. +=item SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG + +Older versions of OpenSSL had a bug in the computation of the label length +used for computing the endpoint-pair shared secret. The bug was that the +terminating zero was included in the length of the label. Setting this option +enables this behaviour to allow interoperability with such broken +implementations. Please note that setting this option breaks interoperability +with correct implementations. This option only applies to DTLS over SCTP. + =back All modes are off by default except for SSL_MODE_AUTO_RETRY which is on by diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index c7a8304..dc7285f 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h @@ -500,6 +500,18 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * Use the kernel TLS transmission data-path. */ # define SSL_MODE_NO_KTLS_TX 0x00000200U +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +# define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U /* Cert related flags */ /* diff --git a/ssl/statem/statem_clnt.c b/ssl/statem/statem_clnt.c index 53bc5ef..1f55113 100644 --- a/ssl/statem/statem_clnt.c +++ b/ssl/statem/statem_clnt.c @@ -1707,6 +1707,7 @@ MSG_PROCESS_RETURN tls_process_server_hello(SSL *s, PACKET *pkt) if (SSL_IS_DTLS(s) && s->hit) { unsigned char sctpauthkey[64]; char labelbuffer[sizeof(DTLS1_SCTP_AUTH_LABEL)]; + size_t labellen; /* * Add new shared key for SCTP-Auth, will be ignored if @@ -1715,10 +1716,15 @@ MSG_PROCESS_RETURN tls_process_server_hello(SSL *s, PACKET *pkt) memcpy(labelbuffer, DTLS1_SCTP_AUTH_LABEL, sizeof(DTLS1_SCTP_AUTH_LABEL)); + /* Don't include the terminating zero. */ + labellen = sizeof(labelbuffer) - 1; + if (s->mode & SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG) + labellen += 1; + if (SSL_export_keying_material(s, sctpauthkey, sizeof(sctpauthkey), labelbuffer, - sizeof(labelbuffer), NULL, 0, 0) <= 0) { + labellen, NULL, 0, 0) <= 0) { SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PROCESS_SERVER_HELLO, ERR_R_INTERNAL_ERROR); goto err; @@ -3397,6 +3403,7 @@ int tls_client_key_exchange_post_work(SSL *s) if (SSL_IS_DTLS(s)) { unsigned char sctpauthkey[64]; char labelbuffer[sizeof(DTLS1_SCTP_AUTH_LABEL)]; + size_t labellen; /* * Add new shared key for SCTP-Auth, will be ignored if no SCTP @@ -3405,9 +3412,14 @@ int tls_client_key_exchange_post_work(SSL *s) memcpy(labelbuffer, DTLS1_SCTP_AUTH_LABEL, sizeof(DTLS1_SCTP_AUTH_LABEL)); + /* Don't include the terminating zero. */ + labellen = sizeof(labelbuffer) - 1; + if (s->mode & SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG) + labellen += 1; + if (SSL_export_keying_material(s, sctpauthkey, sizeof(sctpauthkey), labelbuffer, - sizeof(labelbuffer), NULL, 0, 0) <= 0) { + labellen, NULL, 0, 0) <= 0) { SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK, ERR_R_INTERNAL_ERROR); diff --git a/ssl/statem/statem_srvr.c b/ssl/statem/statem_srvr.c index b0dd549..f76568c 100644 --- a/ssl/statem/statem_srvr.c +++ b/ssl/statem/statem_srvr.c @@ -830,6 +830,7 @@ WORK_STATE ossl_statem_server_post_work(SSL *s, WORK_STATE wst) if (SSL_IS_DTLS(s) && s->hit) { unsigned char sctpauthkey[64]; char labelbuffer[sizeof(DTLS1_SCTP_AUTH_LABEL)]; + size_t labellen; /* * Add new shared key for SCTP-Auth, will be ignored if no @@ -838,9 +839,14 @@ WORK_STATE ossl_statem_server_post_work(SSL *s, WORK_STATE wst) memcpy(labelbuffer, DTLS1_SCTP_AUTH_LABEL, sizeof(DTLS1_SCTP_AUTH_LABEL)); + /* Don't include the terminating zero. */ + labellen = sizeof(labelbuffer) - 1; + if (s->mode & SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG) + labellen += 1; + if (SSL_export_keying_material(s, sctpauthkey, sizeof(sctpauthkey), labelbuffer, - sizeof(labelbuffer), NULL, 0, + labellen, NULL, 0, 0) <= 0) { SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_OSSL_STATEM_SERVER_POST_WORK, @@ -3500,6 +3506,7 @@ WORK_STATE tls_post_process_client_key_exchange(SSL *s, WORK_STATE wst) if (SSL_IS_DTLS(s)) { unsigned char sctpauthkey[64]; char labelbuffer[sizeof(DTLS1_SCTP_AUTH_LABEL)]; + size_t labellen; /* * Add new shared key for SCTP-Auth, will be ignored if no SCTP * used. @@ -3507,9 +3514,14 @@ WORK_STATE tls_post_process_client_key_exchange(SSL *s, WORK_STATE wst) memcpy(labelbuffer, DTLS1_SCTP_AUTH_LABEL, sizeof(DTLS1_SCTP_AUTH_LABEL)); + /* Don't include the terminating zero. */ + labellen = sizeof(labelbuffer) - 1; + if (s->mode & SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG) + labellen += 1; + if (SSL_export_keying_material(s, sctpauthkey, sizeof(sctpauthkey), labelbuffer, - sizeof(labelbuffer), NULL, 0, + labellen, NULL, 0, 0) <= 0) { SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE, diff --git a/test/handshake_helper.c b/test/handshake_helper.c index a9ef753..a85d22e 100644 --- a/test/handshake_helper.c +++ b/test/handshake_helper.c @@ -22,6 +22,10 @@ #include "handshake_helper.h" #include "testutil.h" +#if !defined(OPENSSL_NO_SCTP) && !defined(OPENSSL_NO_SOCK) +#include +#endif + HANDSHAKE_RESULT *HANDSHAKE_RESULT_new(void) { HANDSHAKE_RESULT *ret; @@ -1282,13 +1286,33 @@ static int peer_pkey_type(SSL *s) #if !defined(OPENSSL_NO_SCTP) && !defined(OPENSSL_NO_SOCK) static int set_sock_as_sctp(int sock) { + struct sctp_assocparams assocparams; + struct sctp_rtoinfo rto_info; + BIO *tmpbio; + + /* + * To allow tests to fail fast (within a second or so), reduce the + * retransmission timeouts and the number of retransmissions. + */ + memset(&rto_info, 0, sizeof(struct sctp_rtoinfo)); + rto_info.srto_initial = 100; + rto_info.srto_max = 200; + rto_info.srto_min = 50; + (void)setsockopt(sock, IPPROTO_SCTP, SCTP_RTOINFO, + (const void *)&rto_info, sizeof(struct sctp_rtoinfo)); + memset(&assocparams, 0, sizeof(struct sctp_assocparams)); + assocparams.sasoc_asocmaxrxt = 2; + (void)setsockopt(sock, IPPROTO_SCTP, SCTP_ASSOCINFO, + (const void *)&assocparams, + sizeof(struct sctp_assocparams)); + /* * For SCTP we have to set various options on the socket prior to * connecting. This is done automatically by BIO_new_dgram_sctp(). * We don't actually need the created BIO though so we free it again * immediately. */ - BIO *tmpbio = BIO_new_dgram_sctp(sock, BIO_NOCLOSE); + tmpbio = BIO_new_dgram_sctp(sock, BIO_NOCLOSE); if (tmpbio == NULL) return 0; @@ -1438,6 +1462,13 @@ static HANDSHAKE_RESULT *do_handshake_internal( return NULL; } +#if !defined(OPENSSL_NO_SCTP) && !defined(OPENSSL_NO_SOCK) + if (test_ctx->enable_client_sctp_label_bug) + SSL_CTX_set_mode(client_ctx, SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG); + if (test_ctx->enable_server_sctp_label_bug) + SSL_CTX_set_mode(server_ctx, SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG); +#endif + /* Setup SSL and buffers; additional configuration happens below. */ if (!create_peer(&server, server_ctx)) { TEST_note("creating server context"); diff --git a/test/recipes/80-test_ssl_new.t b/test/recipes/80-test_ssl_new.t index ecec3c9..fa98f24 100644 --- a/test/recipes/80-test_ssl_new.t +++ b/test/recipes/80-test_ssl_new.t @@ -28,7 +28,7 @@ map { s/\^// } @conf_files if $^O eq "VMS"; # We hard-code the number of tests to double-check that the globbing above # finds all files as expected. -plan tests => 28; # = scalar @conf_srcs +plan tests => 29; # = scalar @conf_srcs # Some test results depend on the configuration of enabled protocols. We only # verify generated sources in the default configuration. @@ -102,6 +102,7 @@ my %skip = ( "24-padding.conf" => disabled("tls1_3"), "25-cipher.conf" => disabled("ec") || disabled("tls1_2"), "26-tls13_client_auth.conf" => disabled("tls1_3"), + "29-dtls-sctp-label-bug.conf" => disabled("sctp") || disabled("sock"), ); foreach my $conf (@conf_files) { diff --git a/test/ssl-tests/29-dtls-sctp-label-bug.conf b/test/ssl-tests/29-dtls-sctp-label-bug.conf new file mode 100644 index 0000000..24f9e04 --- /dev/null +++ b/test/ssl-tests/29-dtls-sctp-label-bug.conf @@ -0,0 +1,116 @@ +# Generated with generate_ssl_tests.pl + +num_tests = 4 + +test-0 = 0-SCTPLabelBug-good1 +test-1 = 1-SCTPLabelBug-good2 +test-2 = 2-SCTPLabelBug-bad1 +test-3 = 3-SCTPLabelBug-bad2 +# =========================================================== + +[0-SCTPLabelBug-good1] +ssl_conf = 0-SCTPLabelBug-good1-ssl + +[0-SCTPLabelBug-good1-ssl] +server = 0-SCTPLabelBug-good1-server +client = 0-SCTPLabelBug-good1-client + +[0-SCTPLabelBug-good1-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[0-SCTPLabelBug-good1-client] +CipherString = DEFAULT +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-0] +EnableClientSCTPLabelBug = No +EnableServerSCTPLabelBug = No +ExpectedResult = Success +Method = DTLS +UseSCTP = Yes + + +# =========================================================== + +[1-SCTPLabelBug-good2] +ssl_conf = 1-SCTPLabelBug-good2-ssl + +[1-SCTPLabelBug-good2-ssl] +server = 1-SCTPLabelBug-good2-server +client = 1-SCTPLabelBug-good2-client + +[1-SCTPLabelBug-good2-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[1-SCTPLabelBug-good2-client] +CipherString = DEFAULT +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-1] +EnableClientSCTPLabelBug = Yes +EnableServerSCTPLabelBug = Yes +ExpectedResult = Success +Method = DTLS +UseSCTP = Yes + + +# =========================================================== + +[2-SCTPLabelBug-bad1] +ssl_conf = 2-SCTPLabelBug-bad1-ssl + +[2-SCTPLabelBug-bad1-ssl] +server = 2-SCTPLabelBug-bad1-server +client = 2-SCTPLabelBug-bad1-client + +[2-SCTPLabelBug-bad1-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[2-SCTPLabelBug-bad1-client] +CipherString = DEFAULT +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-2] +EnableClientSCTPLabelBug = Yes +EnableServerSCTPLabelBug = No +ExpectedResult = ClientFail +Method = DTLS +UseSCTP = Yes + + +# =========================================================== + +[3-SCTPLabelBug-bad2] +ssl_conf = 3-SCTPLabelBug-bad2-ssl + +[3-SCTPLabelBug-bad2-ssl] +server = 3-SCTPLabelBug-bad2-server +client = 3-SCTPLabelBug-bad2-client + +[3-SCTPLabelBug-bad2-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[3-SCTPLabelBug-bad2-client] +CipherString = DEFAULT +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-3] +EnableClientSCTPLabelBug = No +EnableServerSCTPLabelBug = Yes +ExpectedResult = ClientFail +Method = DTLS +UseSCTP = Yes + + diff --git a/test/ssl-tests/16-dtls-certstatus.conf.in b/test/ssl-tests/29-dtls-sctp-label-bug.conf.in similarity index 54% copy from test/ssl-tests/16-dtls-certstatus.conf.in copy to test/ssl-tests/29-dtls-sctp-label-bug.conf.in index 742de63..ab04d05 100644 --- a/test/ssl-tests/16-dtls-certstatus.conf.in +++ b/test/ssl-tests/29-dtls-sctp-label-bug.conf.in @@ -1,5 +1,5 @@ # -*- mode: perl; -*- -# Copyright 2016-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2019-2019 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -7,7 +7,7 @@ # https://www.openssl.org/source/license.html -## Test DTLS CertStatus messages +## Test SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG handling use strict; use warnings; @@ -17,62 +17,51 @@ use OpenSSL::Test::Utils; our @tests = ( { - name => "certstatus-good", - server => { - extra => { - "CertStatus" => "GoodResponse", - }, - }, + name => "SCTPLabelBug-good1", + server => {}, client => {}, test => { "Method" => "DTLS", + "UseSCTP" => "Yes", + "EnableClientSCTPLabelBug" => "No", + "EnableServerSCTPLabelBug" => "No", "ExpectedResult" => "Success" } }, { - name => "certstatus-bad", - server => { - extra => { - "CertStatus" => "BadResponse", - }, - }, + name => "SCTPLabelBug-good2", + server => {}, client => {}, test => { "Method" => "DTLS", - "ExpectedResult" => "ClientFail" + "UseSCTP" => "Yes", + "EnableClientSCTPLabelBug" => "Yes", + "EnableServerSCTPLabelBug" => "Yes", + "ExpectedResult" => "Success" } - } -); - -our @tests_sctp = ( + }, { - name => "certstatus-good", - server => { - extra => { - "CertStatus" => "GoodResponse", - }, - }, + name => "SCTPLabelBug-bad1", + server => {}, client => {}, test => { "Method" => "DTLS", "UseSCTP" => "Yes", - "ExpectedResult" => "Success" + "EnableClientSCTPLabelBug" => "Yes", + "EnableServerSCTPLabelBug" => "No", + "ExpectedResult" => "ClientFail" } }, { - name => "certstatus-bad", - server => { - extra => { - "CertStatus" => "BadResponse", - }, - }, + name => "SCTPLabelBug-bad2", + server => {}, client => {}, test => { "Method" => "DTLS", "UseSCTP" => "Yes", + "EnableClientSCTPLabelBug" => "No", + "EnableServerSCTPLabelBug" => "Yes", "ExpectedResult" => "ClientFail" } }, ); - -push @tests, @tests_sctp unless disabled("sctp") || disabled("sock"); diff --git a/test/ssl_test_ctx.c b/test/ssl_test_ctx.c index 3b7cc3e..6a3b66b 100644 --- a/test/ssl_test_ctx.c +++ b/test/ssl_test_ctx.c @@ -446,6 +446,8 @@ const char *ssl_ct_validation_name(ssl_ct_validation_t mode) IMPLEMENT_SSL_TEST_BOOL_OPTION(SSL_TEST_CTX, test, resumption_expected) IMPLEMENT_SSL_TEST_BOOL_OPTION(SSL_TEST_SERVER_CONF, server, broken_session_ticket) IMPLEMENT_SSL_TEST_BOOL_OPTION(SSL_TEST_CTX, test, use_sctp) +IMPLEMENT_SSL_TEST_BOOL_OPTION(SSL_TEST_CTX, test, enable_client_sctp_label_bug) +IMPLEMENT_SSL_TEST_BOOL_OPTION(SSL_TEST_CTX, test, enable_server_sctp_label_bug) /* CertStatus */ @@ -669,6 +671,8 @@ static const ssl_test_ctx_option ssl_test_ctx_options[] = { { "ExpectedClientSignType", &parse_expected_client_sign_type }, { "ExpectedClientCANames", &parse_expected_client_ca_names }, { "UseSCTP", &parse_test_use_sctp }, + { "EnableClientSCTPLabelBug", &parse_test_enable_client_sctp_label_bug }, + { "EnableServerSCTPLabelBug", &parse_test_enable_server_sctp_label_bug }, { "ExpectedCipher", &parse_test_expected_cipher }, { "ExpectedSessionTicketAppData", &parse_test_expected_session_ticket_app_data }, }; diff --git a/test/ssl_test_ctx.h b/test/ssl_test_ctx.h index 8fa3af0..3a21ac5 100644 --- a/test/ssl_test_ctx.h +++ b/test/ssl_test_ctx.h @@ -214,6 +214,10 @@ typedef struct { STACK_OF(X509_NAME) *expected_client_ca_names; /* Whether to use SCTP for the transport */ int use_sctp; + /* Enable SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG on client side */ + int enable_client_sctp_label_bug; + /* Enable SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG on server side */ + int enable_server_sctp_label_bug; /* Whether to expect a session id from the server */ ssl_session_id_t session_id_expected; char *expected_cipher; From matt at openssl.org Fri Feb 1 12:13:24 2019 From: matt at openssl.org (Matt Caswell) Date: Fri, 01 Feb 2019 12:13:24 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549023204.963818.27566.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 243ff51cc6757ab56cda4a7f69fbdcddf81141b6 (commit) from 1b66fc87da7c3851d7229993219336afa587f325 (commit) - Log ----------------------------------------------------------------- commit 243ff51cc6757ab56cda4a7f69fbdcddf81141b6 Author: Michael Tuexen Date: Wed Dec 26 12:44:53 2018 +0100 Fix end-point shared secret for DTLS/SCTP When computing the end-point shared secret, don't take the terminating NULL character into account. Please note that this fix breaks interoperability with older versions of OpenSSL, which are not fixed. Fixes #7956 Reviewed-by: Kurt Roeckx Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7957) (cherry picked from commit 09d62b336d9e2a11b330d45d4f0f3f37cbb0d674) ----------------------------------------------------------------------- Summary of changes: CHANGES | 7 ++ apps/s_client.c | 15 +++ apps/s_server.c | 17 ++- doc/man1/s_client.pod | 9 ++ doc/man1/s_server.pod | 9 ++ doc/man3/SSL_CTX_set_mode.pod | 9 ++ include/openssl/ssl.h | 13 +++ ssl/statem/statem_clnt.c | 16 ++- ssl/statem/statem_srvr.c | 16 ++- test/handshake_helper.c | 33 +++++- test/recipes/80-test_ssl_new.t | 3 +- test/ssl-tests/29-dtls-sctp-label-bug.conf | 116 +++++++++++++++++++++ ...atus.conf.in => 29-dtls-sctp-label-bug.conf.in} | 59 +++++------ test/ssl_test_ctx.c | 4 + test/ssl_test_ctx.h | 4 + 15 files changed, 288 insertions(+), 42 deletions(-) create mode 100644 test/ssl-tests/29-dtls-sctp-label-bug.conf copy test/ssl-tests/{16-dtls-certstatus.conf.in => 29-dtls-sctp-label-bug.conf.in} (50%) diff --git a/CHANGES b/CHANGES index d3ad3f6..261299d 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,13 @@ Changes between 1.1.1a and 1.1.1b [xx XXX xxxx] + *) Fix a bug in the computation of the endpoint-pair shared secret used + by DTLS over SCTP. This breaks interoperability with older versions + of OpenSSL like OpenSSL 1.1.0 and OpenSSL 1.0.2. There is a runtime + switch SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG (off by default) enabling + interoperability with such broken implementations. However, enabling + this switch breaks interoperability with correct implementations. + *) Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0(). [Richard Levitte] diff --git a/apps/s_client.c b/apps/s_client.c index 5925814..fb2ff47 100644 --- a/apps/s_client.c +++ b/apps/s_client.c @@ -596,6 +596,7 @@ typedef enum OPTION_choice { #endif OPT_DANE_TLSA_RRDATA, OPT_DANE_EE_NO_NAME, OPT_ENABLE_PHA, + OPT_SCTP_LABEL_BUG, OPT_R_ENUM } OPTION_CHOICE; @@ -750,6 +751,7 @@ const OPTIONS s_client_options[] = { #endif #ifndef OPENSSL_NO_SCTP {"sctp", OPT_SCTP, '-', "Use SCTP"}, + {"sctp_label_bug", OPT_SCTP_LABEL_BUG, '-', "Enable SCTP label length bug"}, #endif #ifndef OPENSSL_NO_SSL_TRACE {"trace", OPT_TRACE, '-', "Show trace output of protocol messages"}, @@ -976,6 +978,9 @@ int s_client_main(int argc, char **argv) #endif char *psksessf = NULL; int enable_pha = 0; +#ifndef OPENSSL_NO_SCTP + int sctp_label_bug = 0; +#endif FD_ZERO(&readfds); FD_ZERO(&writefds); @@ -1323,6 +1328,11 @@ int s_client_main(int argc, char **argv) protocol = IPPROTO_SCTP; #endif break; + case OPT_SCTP_LABEL_BUG: +#ifndef OPENSSL_NO_SCTP + sctp_label_bug = 1; +#endif + break; case OPT_TIMEOUT: #ifndef OPENSSL_NO_DTLS enable_timeouts = 1; @@ -1707,6 +1717,11 @@ int s_client_main(int argc, char **argv) } } +#ifndef OPENSSL_NO_SCTP + if (protocol == IPPROTO_SCTP && sctp_label_bug == 1) + SSL_CTX_set_mode(ctx, SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG); +#endif + if (min_version != 0 && SSL_CTX_set_min_proto_version(ctx, min_version) == 0) goto end; diff --git a/apps/s_server.c b/apps/s_server.c index aa0c9ae..caf47b3 100644 --- a/apps/s_server.c +++ b/apps/s_server.c @@ -751,7 +751,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_RECV_MAX_EARLY, OPT_EARLY_DATA, - OPT_S_NUM_TICKETS, OPT_ANTI_REPLAY, OPT_NO_ANTI_REPLAY, + OPT_S_NUM_TICKETS, OPT_ANTI_REPLAY, OPT_NO_ANTI_REPLAY, OPT_SCTP_LABEL_BUG, OPT_R_ENUM, OPT_S_ENUM, OPT_V_ENUM, @@ -938,6 +938,7 @@ const OPTIONS s_server_options[] = { #endif #ifndef OPENSSL_NO_SCTP {"sctp", OPT_SCTP, '-', "Use SCTP"}, + {"sctp_label_bug", OPT_SCTP_LABEL_BUG, '-', "Enable SCTP label length bug"}, #endif #ifndef OPENSSL_NO_DH {"no_dhe", OPT_NO_DHE, '-', "Disable ephemeral DH"}, @@ -1047,6 +1048,9 @@ int s_server_main(int argc, char *argv[]) const char *keylog_file = NULL; int max_early_data = -1, recv_max_early_data = -1; char *psksessf = NULL; +#ifndef OPENSSL_NO_SCTP + int sctp_label_bug = 0; +#endif /* Init of few remaining global variables */ local_argc = argc; @@ -1490,6 +1494,11 @@ int s_server_main(int argc, char *argv[]) protocol = IPPROTO_SCTP; #endif break; + case OPT_SCTP_LABEL_BUG: +#ifndef OPENSSL_NO_SCTP + sctp_label_bug = 1; +#endif + break; case OPT_TIMEOUT: #ifndef OPENSSL_NO_DTLS enable_timeouts = 1; @@ -1792,6 +1801,12 @@ int s_server_main(int argc, char *argv[]) goto end; } } + +#ifndef OPENSSL_NO_SCTP + if (protocol == IPPROTO_SCTP && sctp_label_bug == 1) + SSL_CTX_set_mode(ctx, SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG); +#endif + if (min_version != 0 && SSL_CTX_set_min_proto_version(ctx, min_version) == 0) goto end; diff --git a/doc/man1/s_client.pod b/doc/man1/s_client.pod index 8517987..58fe37a 100644 --- a/doc/man1/s_client.pod +++ b/doc/man1/s_client.pod @@ -100,6 +100,7 @@ B B [B<-dtls1>] [B<-dtls1_2>] [B<-sctp>] +[B<-sctp_label_bug>] [B<-fallback_scsv>] [B<-async>] [B<-max_send_frag>] @@ -489,6 +490,14 @@ Use SCTP for the transport protocol instead of UDP in DTLS. Must be used in conjunction with B<-dtls>, B<-dtls1> or B<-dtls1_2>. This option is only available where OpenSSL has support for SCTP enabled. +=item B<-sctp_label_bug> + +Use the incorrect behaviour of older OpenSSL implementations when computing +endpoint-pair shared secrets for DTLS/SCTP. This allows communication with +older broken implementations but breaks interoperability with correct +implementations. Must be used in conjunction with B<-sctp>. This option is only +available where OpenSSL has support for SCTP enabled. + =item B<-fallback_scsv> Send TLS_FALLBACK_SCSV in the ClientHello. diff --git a/doc/man1/s_server.pod b/doc/man1/s_server.pod index 57f2405..254bfe7 100644 --- a/doc/man1/s_server.pod +++ b/doc/man1/s_server.pod @@ -173,6 +173,7 @@ B B [B<-dtls1>] [B<-dtls1_2>] [B<-sctp>] +[B<-sctp_label_bug>] [B<-no_dhe>] [B<-nextprotoneg val>] [B<-use_srtp val>] @@ -685,6 +686,14 @@ Use SCTP for the transport protocol instead of UDP in DTLS. Must be used in conjunction with B<-dtls>, B<-dtls1> or B<-dtls1_2>. This option is only available where OpenSSL has support for SCTP enabled. +=item B<-sctp_label_bug> + +Use the incorrect behaviour of older OpenSSL implementations when computing +endpoint-pair shared secrets for DTLS/SCTP. This allows communication with +older broken implementations but breaks interoperability with correct +implementations. Must be used in conjunction with B<-sctp>. This option is only +available where OpenSSL has support for SCTP enabled. + =item B<-no_dhe> If this option is set then no DH parameters will be loaded effectively diff --git a/doc/man3/SSL_CTX_set_mode.pod b/doc/man3/SSL_CTX_set_mode.pod index 76ed717..4e06eb5 100644 --- a/doc/man3/SSL_CTX_set_mode.pod +++ b/doc/man3/SSL_CTX_set_mode.pod @@ -105,6 +105,15 @@ Enable asynchronous processing. TLS I/O operations may indicate a retry with SSL_ERROR_WANT_ASYNC with this mode set if an asynchronous capable engine is used to perform cryptographic operations. See L. +=item SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG + +Older versions of OpenSSL had a bug in the computation of the label length +used for computing the endpoint-pair shared secret. The bug was that the +terminating zero was included in the length of the label. Setting this option +enables this behaviour to allow interoperability with such broken +implementations. Please note that setting this option breaks interoperability +with correct implementations. This option only applies to DTLS over SCTP. + =back All modes are off by default except for SSL_MODE_AUTO_RETRY which is on by diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index d6b1b4e..e68efa8 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h @@ -494,6 +494,19 @@ typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); */ # define SSL_MODE_ASYNC 0x00000100U +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +# define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U + /* Cert related flags */ /* * Many implementations ignore some aspects of the TLS standards such as diff --git a/ssl/statem/statem_clnt.c b/ssl/statem/statem_clnt.c index bb2d98e..bb64036 100644 --- a/ssl/statem/statem_clnt.c +++ b/ssl/statem/statem_clnt.c @@ -1707,6 +1707,7 @@ MSG_PROCESS_RETURN tls_process_server_hello(SSL *s, PACKET *pkt) if (SSL_IS_DTLS(s) && s->hit) { unsigned char sctpauthkey[64]; char labelbuffer[sizeof(DTLS1_SCTP_AUTH_LABEL)]; + size_t labellen; /* * Add new shared key for SCTP-Auth, will be ignored if @@ -1715,10 +1716,15 @@ MSG_PROCESS_RETURN tls_process_server_hello(SSL *s, PACKET *pkt) memcpy(labelbuffer, DTLS1_SCTP_AUTH_LABEL, sizeof(DTLS1_SCTP_AUTH_LABEL)); + /* Don't include the terminating zero. */ + labellen = sizeof(labelbuffer) - 1; + if (s->mode & SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG) + labellen += 1; + if (SSL_export_keying_material(s, sctpauthkey, sizeof(sctpauthkey), labelbuffer, - sizeof(labelbuffer), NULL, 0, 0) <= 0) { + labellen, NULL, 0, 0) <= 0) { SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PROCESS_SERVER_HELLO, ERR_R_INTERNAL_ERROR); goto err; @@ -3397,6 +3403,7 @@ int tls_client_key_exchange_post_work(SSL *s) if (SSL_IS_DTLS(s)) { unsigned char sctpauthkey[64]; char labelbuffer[sizeof(DTLS1_SCTP_AUTH_LABEL)]; + size_t labellen; /* * Add new shared key for SCTP-Auth, will be ignored if no SCTP @@ -3405,9 +3412,14 @@ int tls_client_key_exchange_post_work(SSL *s) memcpy(labelbuffer, DTLS1_SCTP_AUTH_LABEL, sizeof(DTLS1_SCTP_AUTH_LABEL)); + /* Don't include the terminating zero. */ + labellen = sizeof(labelbuffer) - 1; + if (s->mode & SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG) + labellen += 1; + if (SSL_export_keying_material(s, sctpauthkey, sizeof(sctpauthkey), labelbuffer, - sizeof(labelbuffer), NULL, 0, 0) <= 0) { + labellen, NULL, 0, 0) <= 0) { SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK, ERR_R_INTERNAL_ERROR); diff --git a/ssl/statem/statem_srvr.c b/ssl/statem/statem_srvr.c index a8e862c..91c1120 100644 --- a/ssl/statem/statem_srvr.c +++ b/ssl/statem/statem_srvr.c @@ -830,6 +830,7 @@ WORK_STATE ossl_statem_server_post_work(SSL *s, WORK_STATE wst) if (SSL_IS_DTLS(s) && s->hit) { unsigned char sctpauthkey[64]; char labelbuffer[sizeof(DTLS1_SCTP_AUTH_LABEL)]; + size_t labellen; /* * Add new shared key for SCTP-Auth, will be ignored if no @@ -838,9 +839,14 @@ WORK_STATE ossl_statem_server_post_work(SSL *s, WORK_STATE wst) memcpy(labelbuffer, DTLS1_SCTP_AUTH_LABEL, sizeof(DTLS1_SCTP_AUTH_LABEL)); + /* Don't include the terminating zero. */ + labellen = sizeof(labelbuffer) - 1; + if (s->mode & SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG) + labellen += 1; + if (SSL_export_keying_material(s, sctpauthkey, sizeof(sctpauthkey), labelbuffer, - sizeof(labelbuffer), NULL, 0, + labellen, NULL, 0, 0) <= 0) { SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_OSSL_STATEM_SERVER_POST_WORK, @@ -3500,6 +3506,7 @@ WORK_STATE tls_post_process_client_key_exchange(SSL *s, WORK_STATE wst) if (SSL_IS_DTLS(s)) { unsigned char sctpauthkey[64]; char labelbuffer[sizeof(DTLS1_SCTP_AUTH_LABEL)]; + size_t labellen; /* * Add new shared key for SCTP-Auth, will be ignored if no SCTP * used. @@ -3507,9 +3514,14 @@ WORK_STATE tls_post_process_client_key_exchange(SSL *s, WORK_STATE wst) memcpy(labelbuffer, DTLS1_SCTP_AUTH_LABEL, sizeof(DTLS1_SCTP_AUTH_LABEL)); + /* Don't include the terminating zero. */ + labellen = sizeof(labelbuffer) - 1; + if (s->mode & SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG) + labellen += 1; + if (SSL_export_keying_material(s, sctpauthkey, sizeof(sctpauthkey), labelbuffer, - sizeof(labelbuffer), NULL, 0, + labellen, NULL, 0, 0) <= 0) { SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE, diff --git a/test/handshake_helper.c b/test/handshake_helper.c index 40bfd3e..d1842fa 100644 --- a/test/handshake_helper.c +++ b/test/handshake_helper.c @@ -22,6 +22,10 @@ #include "handshake_helper.h" #include "testutil.h" +#if !defined(OPENSSL_NO_SCTP) && !defined(OPENSSL_NO_SOCK) +#include +#endif + HANDSHAKE_RESULT *HANDSHAKE_RESULT_new(void) { HANDSHAKE_RESULT *ret; @@ -1282,13 +1286,33 @@ static int peer_pkey_type(SSL *s) #if !defined(OPENSSL_NO_SCTP) && !defined(OPENSSL_NO_SOCK) static int set_sock_as_sctp(int sock) { + struct sctp_assocparams assocparams; + struct sctp_rtoinfo rto_info; + BIO *tmpbio; + + /* + * To allow tests to fail fast (within a second or so), reduce the + * retransmission timeouts and the number of retransmissions. + */ + memset(&rto_info, 0, sizeof(struct sctp_rtoinfo)); + rto_info.srto_initial = 100; + rto_info.srto_max = 200; + rto_info.srto_min = 50; + (void)setsockopt(sock, IPPROTO_SCTP, SCTP_RTOINFO, + (const void *)&rto_info, sizeof(struct sctp_rtoinfo)); + memset(&assocparams, 0, sizeof(struct sctp_assocparams)); + assocparams.sasoc_asocmaxrxt = 2; + (void)setsockopt(sock, IPPROTO_SCTP, SCTP_ASSOCINFO, + (const void *)&assocparams, + sizeof(struct sctp_assocparams)); + /* * For SCTP we have to set various options on the socket prior to * connecting. This is done automatically by BIO_new_dgram_sctp(). * We don't actually need the created BIO though so we free it again * immediately. */ - BIO *tmpbio = BIO_new_dgram_sctp(sock, BIO_NOCLOSE); + tmpbio = BIO_new_dgram_sctp(sock, BIO_NOCLOSE); if (tmpbio == NULL) return 0; @@ -1438,6 +1462,13 @@ static HANDSHAKE_RESULT *do_handshake_internal( return NULL; } +#if !defined(OPENSSL_NO_SCTP) && !defined(OPENSSL_NO_SOCK) + if (test_ctx->enable_client_sctp_label_bug) + SSL_CTX_set_mode(client_ctx, SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG); + if (test_ctx->enable_server_sctp_label_bug) + SSL_CTX_set_mode(server_ctx, SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG); +#endif + /* Setup SSL and buffers; additional configuration happens below. */ if (!create_peer(&server, server_ctx)) { TEST_note("creating server context"); diff --git a/test/recipes/80-test_ssl_new.t b/test/recipes/80-test_ssl_new.t index db2271c..7222059 100644 --- a/test/recipes/80-test_ssl_new.t +++ b/test/recipes/80-test_ssl_new.t @@ -28,7 +28,7 @@ map { s/\^// } @conf_files if $^O eq "VMS"; # We hard-code the number of tests to double-check that the globbing above # finds all files as expected. -plan tests => 28; # = scalar @conf_srcs +plan tests => 29; # = scalar @conf_srcs # Some test results depend on the configuration of enabled protocols. We only # verify generated sources in the default configuration. @@ -102,6 +102,7 @@ my %skip = ( "24-padding.conf" => disabled("tls1_3"), "25-cipher.conf" => disabled("ec") || disabled("tls1_2"), "26-tls13_client_auth.conf" => disabled("tls1_3"), + "29-dtls-sctp-label-bug.conf" => disabled("sctp") || disabled("sock"), ); foreach my $conf (@conf_files) { diff --git a/test/ssl-tests/29-dtls-sctp-label-bug.conf b/test/ssl-tests/29-dtls-sctp-label-bug.conf new file mode 100644 index 0000000..24f9e04 --- /dev/null +++ b/test/ssl-tests/29-dtls-sctp-label-bug.conf @@ -0,0 +1,116 @@ +# Generated with generate_ssl_tests.pl + +num_tests = 4 + +test-0 = 0-SCTPLabelBug-good1 +test-1 = 1-SCTPLabelBug-good2 +test-2 = 2-SCTPLabelBug-bad1 +test-3 = 3-SCTPLabelBug-bad2 +# =========================================================== + +[0-SCTPLabelBug-good1] +ssl_conf = 0-SCTPLabelBug-good1-ssl + +[0-SCTPLabelBug-good1-ssl] +server = 0-SCTPLabelBug-good1-server +client = 0-SCTPLabelBug-good1-client + +[0-SCTPLabelBug-good1-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[0-SCTPLabelBug-good1-client] +CipherString = DEFAULT +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-0] +EnableClientSCTPLabelBug = No +EnableServerSCTPLabelBug = No +ExpectedResult = Success +Method = DTLS +UseSCTP = Yes + + +# =========================================================== + +[1-SCTPLabelBug-good2] +ssl_conf = 1-SCTPLabelBug-good2-ssl + +[1-SCTPLabelBug-good2-ssl] +server = 1-SCTPLabelBug-good2-server +client = 1-SCTPLabelBug-good2-client + +[1-SCTPLabelBug-good2-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[1-SCTPLabelBug-good2-client] +CipherString = DEFAULT +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-1] +EnableClientSCTPLabelBug = Yes +EnableServerSCTPLabelBug = Yes +ExpectedResult = Success +Method = DTLS +UseSCTP = Yes + + +# =========================================================== + +[2-SCTPLabelBug-bad1] +ssl_conf = 2-SCTPLabelBug-bad1-ssl + +[2-SCTPLabelBug-bad1-ssl] +server = 2-SCTPLabelBug-bad1-server +client = 2-SCTPLabelBug-bad1-client + +[2-SCTPLabelBug-bad1-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[2-SCTPLabelBug-bad1-client] +CipherString = DEFAULT +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-2] +EnableClientSCTPLabelBug = Yes +EnableServerSCTPLabelBug = No +ExpectedResult = ClientFail +Method = DTLS +UseSCTP = Yes + + +# =========================================================== + +[3-SCTPLabelBug-bad2] +ssl_conf = 3-SCTPLabelBug-bad2-ssl + +[3-SCTPLabelBug-bad2-ssl] +server = 3-SCTPLabelBug-bad2-server +client = 3-SCTPLabelBug-bad2-client + +[3-SCTPLabelBug-bad2-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[3-SCTPLabelBug-bad2-client] +CipherString = DEFAULT +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-3] +EnableClientSCTPLabelBug = No +EnableServerSCTPLabelBug = Yes +ExpectedResult = ClientFail +Method = DTLS +UseSCTP = Yes + + diff --git a/test/ssl-tests/16-dtls-certstatus.conf.in b/test/ssl-tests/29-dtls-sctp-label-bug.conf.in similarity index 50% copy from test/ssl-tests/16-dtls-certstatus.conf.in copy to test/ssl-tests/29-dtls-sctp-label-bug.conf.in index 2d1766d..ab04d05 100644 --- a/test/ssl-tests/16-dtls-certstatus.conf.in +++ b/test/ssl-tests/29-dtls-sctp-label-bug.conf.in @@ -1,13 +1,13 @@ # -*- mode: perl; -*- -# Copyright 2016-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2019-2019 The OpenSSL Project Authors. All Rights Reserved. # -# Licensed under the OpenSSL license (the "License"). You may not use +# Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy # in the file LICENSE in the source distribution or at # https://www.openssl.org/source/license.html -## Test DTLS CertStatus messages +## Test SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG handling use strict; use warnings; @@ -17,62 +17,51 @@ use OpenSSL::Test::Utils; our @tests = ( { - name => "certstatus-good", - server => { - extra => { - "CertStatus" => "GoodResponse", - }, - }, + name => "SCTPLabelBug-good1", + server => {}, client => {}, test => { "Method" => "DTLS", + "UseSCTP" => "Yes", + "EnableClientSCTPLabelBug" => "No", + "EnableServerSCTPLabelBug" => "No", "ExpectedResult" => "Success" } }, { - name => "certstatus-bad", - server => { - extra => { - "CertStatus" => "BadResponse", - }, - }, + name => "SCTPLabelBug-good2", + server => {}, client => {}, test => { "Method" => "DTLS", - "ExpectedResult" => "ClientFail" + "UseSCTP" => "Yes", + "EnableClientSCTPLabelBug" => "Yes", + "EnableServerSCTPLabelBug" => "Yes", + "ExpectedResult" => "Success" } - } -); - -our @tests_sctp = ( + }, { - name => "certstatus-good", - server => { - extra => { - "CertStatus" => "GoodResponse", - }, - }, + name => "SCTPLabelBug-bad1", + server => {}, client => {}, test => { "Method" => "DTLS", "UseSCTP" => "Yes", - "ExpectedResult" => "Success" + "EnableClientSCTPLabelBug" => "Yes", + "EnableServerSCTPLabelBug" => "No", + "ExpectedResult" => "ClientFail" } }, { - name => "certstatus-bad", - server => { - extra => { - "CertStatus" => "BadResponse", - }, - }, + name => "SCTPLabelBug-bad2", + server => {}, client => {}, test => { "Method" => "DTLS", "UseSCTP" => "Yes", + "EnableClientSCTPLabelBug" => "No", + "EnableServerSCTPLabelBug" => "Yes", "ExpectedResult" => "ClientFail" } }, ); - -push @tests, @tests_sctp unless disabled("sctp") || disabled("sock"); diff --git a/test/ssl_test_ctx.c b/test/ssl_test_ctx.c index 7533385..cc98da2 100644 --- a/test/ssl_test_ctx.c +++ b/test/ssl_test_ctx.c @@ -446,6 +446,8 @@ const char *ssl_ct_validation_name(ssl_ct_validation_t mode) IMPLEMENT_SSL_TEST_BOOL_OPTION(SSL_TEST_CTX, test, resumption_expected) IMPLEMENT_SSL_TEST_BOOL_OPTION(SSL_TEST_SERVER_CONF, server, broken_session_ticket) IMPLEMENT_SSL_TEST_BOOL_OPTION(SSL_TEST_CTX, test, use_sctp) +IMPLEMENT_SSL_TEST_BOOL_OPTION(SSL_TEST_CTX, test, enable_client_sctp_label_bug) +IMPLEMENT_SSL_TEST_BOOL_OPTION(SSL_TEST_CTX, test, enable_server_sctp_label_bug) /* CertStatus */ @@ -669,6 +671,8 @@ static const ssl_test_ctx_option ssl_test_ctx_options[] = { { "ExpectedClientSignType", &parse_expected_client_sign_type }, { "ExpectedClientCANames", &parse_expected_client_ca_names }, { "UseSCTP", &parse_test_use_sctp }, + { "EnableClientSCTPLabelBug", &parse_test_enable_client_sctp_label_bug }, + { "EnableServerSCTPLabelBug", &parse_test_enable_server_sctp_label_bug }, { "ExpectedCipher", &parse_test_expected_cipher }, { "ExpectedSessionTicketAppData", &parse_test_expected_session_ticket_app_data }, }; diff --git a/test/ssl_test_ctx.h b/test/ssl_test_ctx.h index 86d227d..4120b8d 100644 --- a/test/ssl_test_ctx.h +++ b/test/ssl_test_ctx.h @@ -214,6 +214,10 @@ typedef struct { STACK_OF(X509_NAME) *expected_client_ca_names; /* Whether to use SCTP for the transport */ int use_sctp; + /* Enable SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG on client side */ + int enable_client_sctp_label_bug; + /* Enable SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG on server side */ + int enable_server_sctp_label_bug; /* Whether to expect a session id from the server */ ssl_session_id_t session_id_expected; char *expected_cipher; From levitte at openssl.org Fri Feb 1 14:58:54 2019 From: levitte at openssl.org (Richard Levitte) Date: Fri, 01 Feb 2019 14:58:54 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549033134.643629.20155.nullmailer@dev.openssl.org> The branch master has been updated via 1050f687226d43720da59a22b9afe45a4840659e (commit) from 09d62b336d9e2a11b330d45d4f0f3f37cbb0d674 (commit) - Log ----------------------------------------------------------------- commit 1050f687226d43720da59a22b9afe45a4840659e Author: Richard Levitte Date: Fri Feb 1 10:51:20 2019 +0100 VMS: Clean away stray debugging prints from descrip.mms.tmpl Reviewed-by: Tim Hudson Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8140) ----------------------------------------------------------------------- Summary of changes: Configurations/descrip.mms.tmpl | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl index 46b9ffc..a0bc93d 100644 --- a/Configurations/descrip.mms.tmpl +++ b/Configurations/descrip.mms.tmpl @@ -102,9 +102,6 @@ return "$target : build_generated\n\t\pipe \$(MMS) \$(MMSQUALIFIERS) depend && \$(MMS) \$(MMSQUALIFIERS) _$target\n_$target"; } - #use Data::Dumper; - #print STDERR "DEBUG: before:\n", Dumper($unified_info{before}); - #print STDERR "DEBUG: after:\n", Dumper($unified_info{after}); ""; -} PLATFORM={- $config{target} -} @@ -1097,10 +1094,8 @@ EOF join("\n\t", "WRITE OPT_FILE \"CASE_SENSITIVE=YES\"", map { my @lines = (); use Data::Dumper; - print STDERR "DEBUG: ",Dumper($_); my $x = $_->{lib} =~ /\[/ ? $_->{lib} : "[]".$_->{lib}; - print STDERR "DEBUG: ",Dumper($x); if ($x =~ m|\.EXE$|) { push @lines, "\@ WRITE OPT_FILE \"$x/SHARE\""; } elsif ($x =~ m|\.OLB$|) { From bernd.edlinger at hotmail.de Fri Feb 1 16:06:03 2019 From: bernd.edlinger at hotmail.de (bernd.edlinger at hotmail.de) Date: Fri, 01 Feb 2019 16:06:03 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_0-stable update Message-ID: <1549037163.605783.30224.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_0-stable has been updated via 152abc5522d869668f50deeb99cd0d948d0df4c1 (commit) from 47c55f881ffef8aa5fafcb88d4230700bb279449 (commit) - Log ----------------------------------------------------------------- commit 152abc5522d869668f50deeb99cd0d948d0df4c1 Author: Bernd Edlinger Date: Wed Jan 30 16:20:31 2019 +0100 Fix a crash in reuse of d2i_X509_PUBKEY If the second PUBKEY is malformed there is use after free. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8135) ----------------------------------------------------------------------- Summary of changes: CHANGES | 4 ++++ crypto/x509/x_pubkey.c | 1 + 2 files changed, 5 insertions(+) diff --git a/CHANGES b/CHANGES index b810a12..d634252 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,10 @@ Changes between 1.1.0j and 1.1.0k [xx XXX xxxx] + *) Fix a use after free bug in d2i_X509_PUBKEY when overwriting a + re-used X509_PUBKEY object if the second PUBKEY is malformed. + [Bernd Edlinger] + *) Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0(). [Richard Levitte] diff --git a/crypto/x509/x_pubkey.c b/crypto/x509/x_pubkey.c index cc69283..03271cb 100644 --- a/crypto/x509/x_pubkey.c +++ b/crypto/x509/x_pubkey.c @@ -36,6 +36,7 @@ static int pubkey_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, /* Attempt to decode public key and cache in pubkey structure. */ X509_PUBKEY *pubkey = (X509_PUBKEY *)*pval; EVP_PKEY_free(pubkey->pkey); + pubkey->pkey = NULL; /* * Opportunistically decode the key but remove any non fatal errors * from the queue. Subsequent explicit attempts to decode/use the key From no-reply at appveyor.com Fri Feb 1 22:57:54 2019 From: no-reply at appveyor.com (AppVeyor) Date: Fri, 01 Feb 2019 22:57:54 +0000 Subject: [openssl-commits] Build failed: openssl master.22189 Message-ID: <20190201225754.1.2DAC0050CD9C98FA@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Fri Feb 1 23:47:21 2019 From: no-reply at appveyor.com (AppVeyor) Date: Fri, 01 Feb 2019 23:47:21 +0000 Subject: [openssl-commits] Build completed: openssl master.22190 Message-ID: <20190201234721.1.24D49CAF385C3DAA@appveyor.com> An HTML attachment was scrubbed... URL: From bernd.edlinger at hotmail.de Sat Feb 2 07:08:23 2019 From: bernd.edlinger at hotmail.de (bernd.edlinger at hotmail.de) Date: Sat, 02 Feb 2019 07:08:23 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549091303.095623.24782.nullmailer@dev.openssl.org> The branch master has been updated via b2aea0e3d9a15e30ebce8b6da213df4a3f346155 (commit) from 1050f687226d43720da59a22b9afe45a4840659e (commit) - Log ----------------------------------------------------------------- commit b2aea0e3d9a15e30ebce8b6da213df4a3f346155 Author: Bernd Edlinger Date: Wed Jan 30 16:20:31 2019 +0100 Add an entry to the CHANGES for the d2i_X509_PUBKEY fix The commit 5dc40a83c74be579575a512b30d9c1e0364e6a7b forgot to add a short description to the CHANGES file. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8144) ----------------------------------------------------------------------- Summary of changes: CHANGES | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES b/CHANGES index 20b1f5c..a72daba 100644 --- a/CHANGES +++ b/CHANGES @@ -16,6 +16,10 @@ interoperability with such broken implementations. However, enabling this switch breaks interoperability with correct implementations. + *) Fix a use after free bug in d2i_X509_PUBKEY when overwriting a + re-used X509_PUBKEY object if the second PUBKEY is malformed. + [Bernd Edlinger] + *) Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0(). [Richard Levitte] From bernd.edlinger at hotmail.de Sat Feb 2 07:09:38 2019 From: bernd.edlinger at hotmail.de (bernd.edlinger at hotmail.de) Date: Sat, 02 Feb 2019 07:09:38 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549091378.698176.10055.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 63b596e38df603c983da188c6ace3e335a116730 (commit) from 243ff51cc6757ab56cda4a7f69fbdcddf81141b6 (commit) - Log ----------------------------------------------------------------- commit 63b596e38df603c983da188c6ace3e335a116730 Author: Bernd Edlinger Date: Wed Jan 30 16:20:31 2019 +0100 Add an entry to the CHANGES for the d2i_X509_PUBKEY fix The commit 5dc40a83c74be579575a512b30d9c1e0364e6a7b forgot to add a short description to the CHANGES file. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8144) (cherry picked from commit b2aea0e3d9a15e30ebce8b6da213df4a3f346155) ----------------------------------------------------------------------- Summary of changes: CHANGES | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES b/CHANGES index 261299d..81e3f84 100644 --- a/CHANGES +++ b/CHANGES @@ -16,6 +16,10 @@ interoperability with such broken implementations. However, enabling this switch breaks interoperability with correct implementations. + *) Fix a use after free bug in d2i_X509_PUBKEY when overwriting a + re-used X509_PUBKEY object if the second PUBKEY is malformed. + [Bernd Edlinger] + *) Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0(). [Richard Levitte] From levitte at openssl.org Mon Feb 4 20:35:00 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 04 Feb 2019 20:35:00 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549312500.271059.15892.nullmailer@dev.openssl.org> The branch master has been updated via 1039c7825535d8219b88372b7ad4a3b94c42605d (commit) from b2aea0e3d9a15e30ebce8b6da213df4a3f346155 (commit) - Log ----------------------------------------------------------------- commit 1039c7825535d8219b88372b7ad4a3b94c42605d Author: Richard Levitte Date: Mon Feb 4 07:55:56 2019 +0100 Build: correct assembler generation in crypto/rc4/build.info In the removal of BEGINRAW / ENDRAW, attention to the difference between capital .S and lowercase .s wasn't duly paid. This corrects the error. Fixes #8155 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8157) ----------------------------------------------------------------------- Summary of changes: crypto/rc4/build.info | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crypto/rc4/build.info b/crypto/rc4/build.info index 9941e6e..8d272e4 100644 --- a/crypto/rc4/build.info +++ b/crypto/rc4/build.info @@ -10,5 +10,5 @@ GENERATE[rc4-x86_64.s]=asm/rc4-x86_64.pl $(PERLASM_SCHEME) GENERATE[rc4-md5-x86_64.s]=asm/rc4-md5-x86_64.pl $(PERLASM_SCHEME) GENERATE[rc4-parisc.s]=asm/rc4-parisc.pl $(PERLASM_SCHEME) -GENERATE[rc4-c64xplus.S]=asm/rc4-c64xplus.pl $(PERLASM_SCHEME) -GENERATE[rc4-s390x.S]=asm/rc4-s390x.pl $(PERLASM_SCHEME) +GENERATE[rc4-c64xplus.s]=asm/rc4-c64xplus.pl $(PERLASM_SCHEME) +GENERATE[rc4-s390x.s]=asm/rc4-s390x.pl $(PERLASM_SCHEME) From levitte at openssl.org Mon Feb 4 20:37:27 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 04 Feb 2019 20:37:27 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549312647.629790.16864.nullmailer@dev.openssl.org> The branch master has been updated via adc7e221f12462c6e10bc7c2c7afaf52490cb292 (commit) from 1039c7825535d8219b88372b7ad4a3b94c42605d (commit) - Log ----------------------------------------------------------------- commit adc7e221f12462c6e10bc7c2c7afaf52490cb292 Author: batist73 Date: Sat Feb 2 13:45:06 2019 +0300 Android build: fix usage of NDK home variable ($ndk_var) CLA: trivial Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8153) ----------------------------------------------------------------------- Summary of changes: Configurations/15-android.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Configurations/15-android.conf b/Configurations/15-android.conf index c94da41..7b496a4 100644 --- a/Configurations/15-android.conf +++ b/Configurations/15-android.conf @@ -24,7 +24,8 @@ my $ndk_var; my $ndk; - foreach $ndk_var (qw(ANDROID_NDK_HOME ANDROID_NDK)) { + foreach (qw(ANDROID_NDK_HOME ANDROID_NDK)) { + $ndk_var = $_; $ndk = $ENV{$ndk_var}; last if defined $ndk; } From levitte at openssl.org Mon Feb 4 20:38:25 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 04 Feb 2019 20:38:25 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549312705.083095.17754.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 453eccd63ad6ba19f6a3fcac37df05daf6cc1021 (commit) from 63b596e38df603c983da188c6ace3e335a116730 (commit) - Log ----------------------------------------------------------------- commit 453eccd63ad6ba19f6a3fcac37df05daf6cc1021 Author: batist73 Date: Sat Feb 2 13:45:06 2019 +0300 Android build: fix usage of NDK home variable ($ndk_var) CLA: trivial Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8153) (cherry picked from commit adc7e221f12462c6e10bc7c2c7afaf52490cb292) ----------------------------------------------------------------------- Summary of changes: Configurations/15-android.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Configurations/15-android.conf b/Configurations/15-android.conf index c94da41..7b496a4 100644 --- a/Configurations/15-android.conf +++ b/Configurations/15-android.conf @@ -24,7 +24,8 @@ my $ndk_var; my $ndk; - foreach $ndk_var (qw(ANDROID_NDK_HOME ANDROID_NDK)) { + foreach (qw(ANDROID_NDK_HOME ANDROID_NDK)) { + $ndk_var = $_; $ndk = $ENV{$ndk_var}; last if defined $ndk; } From levitte at openssl.org Mon Feb 4 20:51:34 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 04 Feb 2019 20:51:34 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549313494.418973.19735.nullmailer@dev.openssl.org> The branch master has been updated via 66a60003719240399f6596e58c239df0465a4f70 (commit) from adc7e221f12462c6e10bc7c2c7afaf52490cb292 (commit) - Log ----------------------------------------------------------------- commit 66a60003719240399f6596e58c239df0465a4f70 Author: Matthias Kraft Date: Mon Feb 4 09:55:07 2019 +0100 Fix Invalid Argument return code from IP_Factory in connect_to_server(). Fixes #7732 Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8158) ----------------------------------------------------------------------- Summary of changes: util/perl/TLSProxy/Proxy.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/perl/TLSProxy/Proxy.pm b/util/perl/TLSProxy/Proxy.pm index 3821385..a583e63 100644 --- a/util/perl/TLSProxy/Proxy.pm +++ b/util/perl/TLSProxy/Proxy.pm @@ -44,7 +44,7 @@ BEGIN $s->close(); }; if ($@ eq "") { - $IP_factory = sub { IO::Socket::INET6->new(@_); }; + $IP_factory = sub { IO::Socket::INET6->new(Domain => AF_INET6, @_); }; $have_IPv6 = 1; } else { eval { From levitte at openssl.org Mon Feb 4 20:52:30 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 04 Feb 2019 20:52:30 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549313550.463569.20614.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 5dc422c7abbd243a5a665f81d7f1e589b646967d (commit) from 453eccd63ad6ba19f6a3fcac37df05daf6cc1021 (commit) - Log ----------------------------------------------------------------- commit 5dc422c7abbd243a5a665f81d7f1e589b646967d Author: Matthias Kraft Date: Mon Feb 4 09:55:07 2019 +0100 Fix Invalid Argument return code from IP_Factory in connect_to_server(). Fixes #7732 Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8158) (cherry picked from commit 66a60003719240399f6596e58c239df0465a4f70) ----------------------------------------------------------------------- Summary of changes: util/perl/TLSProxy/Proxy.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/perl/TLSProxy/Proxy.pm b/util/perl/TLSProxy/Proxy.pm index 8c13520..89c8c1d 100644 --- a/util/perl/TLSProxy/Proxy.pm +++ b/util/perl/TLSProxy/Proxy.pm @@ -44,7 +44,7 @@ BEGIN $s->close(); }; if ($@ eq "") { - $IP_factory = sub { IO::Socket::INET6->new(@_); }; + $IP_factory = sub { IO::Socket::INET6->new(Domain => AF_INET6, @_); }; $have_IPv6 = 1; } else { eval { From matt at openssl.org Tue Feb 5 14:01:47 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 05 Feb 2019 14:01:47 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549375307.282468.3954.nullmailer@dev.openssl.org> The branch master has been updated via 3499327bad401eb510d76266428923d06c9c7bb7 (commit) from 66a60003719240399f6596e58c239df0465a4f70 (commit) - Log ----------------------------------------------------------------- commit 3499327bad401eb510d76266428923d06c9c7bb7 Author: Sam Roberts Date: Fri Feb 1 15:06:26 2019 -0800 Make some simple getters take const SSL/SSL_CTX Reviewed-by: Kurt Roeckx Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8145) ----------------------------------------------------------------------- Summary of changes: doc/man3/SSL_CTX_set_record_padding_callback.pod | 4 ++-- doc/man3/SSL_CTX_set_ssl_version.pod | 2 +- doc/man3/SSL_key_update.pod | 4 ++-- include/openssl/ssl.h | 20 ++++++++++---------- ssl/ssl_lib.c | 20 ++++++++++---------- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/doc/man3/SSL_CTX_set_record_padding_callback.pod b/doc/man3/SSL_CTX_set_record_padding_callback.pod index 4bf87c8..3df6621 100644 --- a/doc/man3/SSL_CTX_set_record_padding_callback.pod +++ b/doc/man3/SSL_CTX_set_record_padding_callback.pod @@ -19,10 +19,10 @@ SSL_set_block_padding - install callback to specify TLS 1.3 record padding void SSL_set_record_padding_callback(SSL *ssl, size_t (*cb)(SSL *s, int type, size_t len, void *arg)); void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); - void *SSL_CTX_get_record_padding_callback_arg(SSL_CTX *ctx); + void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); - void *SSL_get_record_padding_callback_arg(SSL *ssl); + void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); int SSL_set_block_padding(SSL *ssl, size_t block_size); diff --git a/doc/man3/SSL_CTX_set_ssl_version.pod b/doc/man3/SSL_CTX_set_ssl_version.pod index 0671b53..b410731 100644 --- a/doc/man3/SSL_CTX_set_ssl_version.pod +++ b/doc/man3/SSL_CTX_set_ssl_version.pod @@ -11,7 +11,7 @@ SSL_CTX_set_ssl_version, SSL_set_ssl_method, SSL_get_ssl_method int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *method); int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); - const SSL_METHOD *SSL_get_ssl_method(SSL *ssl); + const SSL_METHOD *SSL_get_ssl_method(const SSL *ssl); =head1 DESCRIPTION diff --git a/doc/man3/SSL_key_update.pod b/doc/man3/SSL_key_update.pod index 6102143..f95d89e 100644 --- a/doc/man3/SSL_key_update.pod +++ b/doc/man3/SSL_key_update.pod @@ -14,11 +14,11 @@ SSL_renegotiate_pending #include int SSL_key_update(SSL *s, int updatetype); - int SSL_get_key_update_type(SSL *s); + int SSL_get_key_update_type(const SSL *s); int SSL_renegotiate(SSL *s); int SSL_renegotiate_abbreviated(SSL *s); - int SSL_renegotiate_pending(SSL *s); + int SSL_renegotiate_pending(const SSL *s); =head1 DESCRIPTION diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index dc7285f..35311ac 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h @@ -1931,17 +1931,17 @@ __owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); __owur int SSL_do_handshake(SSL *s); int SSL_key_update(SSL *s, int updatetype); -int SSL_get_key_update_type(SSL *s); +int SSL_get_key_update_type(const SSL *s); int SSL_renegotiate(SSL *s); int SSL_renegotiate_abbreviated(SSL *s); -__owur int SSL_renegotiate_pending(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); int SSL_shutdown(SSL *s); __owur int SSL_verify_client_post_handshake(SSL *s); void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); void SSL_set_post_handshake_auth(SSL *s, int val); -__owur const SSL_METHOD *SSL_CTX_get_ssl_method(SSL_CTX *ctx); -__owur const SSL_METHOD *SSL_get_ssl_method(SSL *s); +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); __owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); __owur const char *SSL_alert_type_string_long(int value); __owur const char *SSL_alert_type_string(int value); @@ -2089,8 +2089,8 @@ void SSL_set_tmp_dh_callback(SSL *ssl, int keylength)); # endif -__owur const COMP_METHOD *SSL_get_current_compression(SSL *s); -__owur const COMP_METHOD *SSL_get_current_expansion(SSL *s); +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); __owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); __owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); __owur int SSL_COMP_get_id(const SSL_COMP *comp); @@ -2134,20 +2134,20 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, size_t (*cb) (SSL *ssl, int type, size_t len, void *arg)); void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); -void *SSL_CTX_get_record_padding_callback_arg(SSL_CTX *ctx); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); void SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, size_t len, void *arg)); void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); -void *SSL_get_record_padding_callback_arg(SSL *ssl); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); -size_t SSL_get_num_tickets(SSL *s); +size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); -size_t SSL_CTX_get_num_tickets(SSL_CTX *ctx); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); # if !OPENSSL_API_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 6d6060a..b001da7 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -2174,7 +2174,7 @@ int SSL_key_update(SSL *s, int updatetype) return 1; } -int SSL_get_key_update_type(SSL *s) +int SSL_get_key_update_type(const SSL *s) { return s->key_update; } @@ -2215,7 +2215,7 @@ int SSL_renegotiate_abbreviated(SSL *s) return s->method->ssl_renegotiate(s); } -int SSL_renegotiate_pending(SSL *s) +int SSL_renegotiate_pending(const SSL *s) { /* * becomes true when negotiation is requested; false again once a @@ -3499,12 +3499,12 @@ void ssl_update_cache(SSL *s, int mode) } } -const SSL_METHOD *SSL_CTX_get_ssl_method(SSL_CTX *ctx) +const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx) { return ctx->method; } -const SSL_METHOD *SSL_get_ssl_method(SSL *s) +const SSL_METHOD *SSL_get_ssl_method(const SSL *s) { return s->method; } @@ -3942,7 +3942,7 @@ const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s) return s->s3->tmp.new_cipher; } -const COMP_METHOD *SSL_get_current_compression(SSL *s) +const COMP_METHOD *SSL_get_current_compression(const SSL *s) { #ifndef OPENSSL_NO_COMP return s->compress ? COMP_CTX_get_method(s->compress) : NULL; @@ -3951,7 +3951,7 @@ const COMP_METHOD *SSL_get_current_compression(SSL *s) #endif } -const COMP_METHOD *SSL_get_current_expansion(SSL *s) +const COMP_METHOD *SSL_get_current_expansion(const SSL *s) { #ifndef OPENSSL_NO_COMP return s->expand ? COMP_CTX_get_method(s->expand) : NULL; @@ -4399,7 +4399,7 @@ void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg) ctx->record_padding_arg = arg; } -void *SSL_CTX_get_record_padding_callback_arg(SSL_CTX *ctx) +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx) { return ctx->record_padding_arg; } @@ -4428,7 +4428,7 @@ void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg) ssl->record_padding_arg = arg; } -void *SSL_get_record_padding_callback_arg(SSL *ssl) +void *SSL_get_record_padding_callback_arg(const SSL *ssl) { return ssl->record_padding_arg; } @@ -4452,7 +4452,7 @@ int SSL_set_num_tickets(SSL *s, size_t num_tickets) return 1; } -size_t SSL_get_num_tickets(SSL *s) +size_t SSL_get_num_tickets(const SSL *s) { return s->num_tickets; } @@ -4464,7 +4464,7 @@ int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets) return 1; } -size_t SSL_CTX_get_num_tickets(SSL_CTX *ctx) +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx) { return ctx->num_tickets; } From matt at openssl.org Tue Feb 5 14:02:07 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 05 Feb 2019 14:02:07 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549375327.949561.5495.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 00f2bafec16b5981cc35c721dae35533c918cb0d (commit) from 5dc422c7abbd243a5a665f81d7f1e589b646967d (commit) - Log ----------------------------------------------------------------- commit 00f2bafec16b5981cc35c721dae35533c918cb0d Author: Sam Roberts Date: Fri Feb 1 15:06:26 2019 -0800 Make some simple getters take const SSL/SSL_CTX Reviewed-by: Kurt Roeckx Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8145) (cherry picked from commit 3499327bad401eb510d76266428923d06c9c7bb7) ----------------------------------------------------------------------- Summary of changes: doc/man3/SSL_CTX_set_record_padding_callback.pod | 4 ++-- doc/man3/SSL_CTX_set_ssl_version.pod | 2 +- doc/man3/SSL_key_update.pod | 4 ++-- include/openssl/ssl.h | 20 ++++++++++---------- ssl/ssl_lib.c | 20 ++++++++++---------- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/doc/man3/SSL_CTX_set_record_padding_callback.pod b/doc/man3/SSL_CTX_set_record_padding_callback.pod index d0b2e30..3e25307 100644 --- a/doc/man3/SSL_CTX_set_record_padding_callback.pod +++ b/doc/man3/SSL_CTX_set_record_padding_callback.pod @@ -19,10 +19,10 @@ SSL_set_block_padding - install callback to specify TLS 1.3 record padding void SSL_set_record_padding_callback(SSL *ssl, size_t (*cb)(SSL *s, int type, size_t len, void *arg)); void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); - void *SSL_CTX_get_record_padding_callback_arg(SSL_CTX *ctx); + void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); - void *SSL_get_record_padding_callback_arg(SSL *ssl); + void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); int SSL_set_block_padding(SSL *ssl, size_t block_size); diff --git a/doc/man3/SSL_CTX_set_ssl_version.pod b/doc/man3/SSL_CTX_set_ssl_version.pod index 901c057..9c192d7 100644 --- a/doc/man3/SSL_CTX_set_ssl_version.pod +++ b/doc/man3/SSL_CTX_set_ssl_version.pod @@ -11,7 +11,7 @@ SSL_CTX_set_ssl_version, SSL_set_ssl_method, SSL_get_ssl_method int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *method); int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); - const SSL_METHOD *SSL_get_ssl_method(SSL *ssl); + const SSL_METHOD *SSL_get_ssl_method(const SSL *ssl); =head1 DESCRIPTION diff --git a/doc/man3/SSL_key_update.pod b/doc/man3/SSL_key_update.pod index 7772b70..a9302a3 100644 --- a/doc/man3/SSL_key_update.pod +++ b/doc/man3/SSL_key_update.pod @@ -14,11 +14,11 @@ SSL_renegotiate_pending #include int SSL_key_update(SSL *s, int updatetype); - int SSL_get_key_update_type(SSL *s); + int SSL_get_key_update_type(const SSL *s); int SSL_renegotiate(SSL *s); int SSL_renegotiate_abbreviated(SSL *s); - int SSL_renegotiate_pending(SSL *s); + int SSL_renegotiate_pending(const SSL *s); =head1 DESCRIPTION diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index e68efa8..4b77573 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h @@ -1917,17 +1917,17 @@ __owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); __owur int SSL_do_handshake(SSL *s); int SSL_key_update(SSL *s, int updatetype); -int SSL_get_key_update_type(SSL *s); +int SSL_get_key_update_type(const SSL *s); int SSL_renegotiate(SSL *s); int SSL_renegotiate_abbreviated(SSL *s); -__owur int SSL_renegotiate_pending(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); int SSL_shutdown(SSL *s); __owur int SSL_verify_client_post_handshake(SSL *s); void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); void SSL_set_post_handshake_auth(SSL *s, int val); -__owur const SSL_METHOD *SSL_CTX_get_ssl_method(SSL_CTX *ctx); -__owur const SSL_METHOD *SSL_get_ssl_method(SSL *s); +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); __owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); __owur const char *SSL_alert_type_string_long(int value); __owur const char *SSL_alert_type_string(int value); @@ -2075,8 +2075,8 @@ void SSL_set_tmp_dh_callback(SSL *ssl, int keylength)); # endif -__owur const COMP_METHOD *SSL_get_current_compression(SSL *s); -__owur const COMP_METHOD *SSL_get_current_expansion(SSL *s); +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); __owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); __owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); __owur int SSL_COMP_get_id(const SSL_COMP *comp); @@ -2120,20 +2120,20 @@ void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, size_t (*cb) (SSL *ssl, int type, size_t len, void *arg)); void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); -void *SSL_CTX_get_record_padding_callback_arg(SSL_CTX *ctx); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); void SSL_set_record_padding_callback(SSL *ssl, size_t (*cb) (SSL *ssl, int type, size_t len, void *arg)); void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); -void *SSL_get_record_padding_callback_arg(SSL *ssl); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); int SSL_set_block_padding(SSL *ssl, size_t block_size); int SSL_set_num_tickets(SSL *s, size_t num_tickets); -size_t SSL_get_num_tickets(SSL *s); +size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); -size_t SSL_CTX_get_num_tickets(SSL_CTX *ctx); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); # if OPENSSL_API_COMPAT < 0x10100000L # define SSL_cache_hit(s) SSL_session_reused(s) diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 61a0ea2..4b9e1d6 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -2107,7 +2107,7 @@ int SSL_key_update(SSL *s, int updatetype) return 1; } -int SSL_get_key_update_type(SSL *s) +int SSL_get_key_update_type(const SSL *s) { return s->key_update; } @@ -2148,7 +2148,7 @@ int SSL_renegotiate_abbreviated(SSL *s) return s->method->ssl_renegotiate(s); } -int SSL_renegotiate_pending(SSL *s) +int SSL_renegotiate_pending(const SSL *s) { /* * becomes true when negotiation is requested; false again once a @@ -3428,12 +3428,12 @@ void ssl_update_cache(SSL *s, int mode) } } -const SSL_METHOD *SSL_CTX_get_ssl_method(SSL_CTX *ctx) +const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx) { return ctx->method; } -const SSL_METHOD *SSL_get_ssl_method(SSL *s) +const SSL_METHOD *SSL_get_ssl_method(const SSL *s) { return s->method; } @@ -3871,7 +3871,7 @@ const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s) return s->s3->tmp.new_cipher; } -const COMP_METHOD *SSL_get_current_compression(SSL *s) +const COMP_METHOD *SSL_get_current_compression(const SSL *s) { #ifndef OPENSSL_NO_COMP return s->compress ? COMP_CTX_get_method(s->compress) : NULL; @@ -3880,7 +3880,7 @@ const COMP_METHOD *SSL_get_current_compression(SSL *s) #endif } -const COMP_METHOD *SSL_get_current_expansion(SSL *s) +const COMP_METHOD *SSL_get_current_expansion(const SSL *s) { #ifndef OPENSSL_NO_COMP return s->expand ? COMP_CTX_get_method(s->expand) : NULL; @@ -4328,7 +4328,7 @@ void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg) ctx->record_padding_arg = arg; } -void *SSL_CTX_get_record_padding_callback_arg(SSL_CTX *ctx) +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx) { return ctx->record_padding_arg; } @@ -4357,7 +4357,7 @@ void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg) ssl->record_padding_arg = arg; } -void *SSL_get_record_padding_callback_arg(SSL *ssl) +void *SSL_get_record_padding_callback_arg(const SSL *ssl) { return ssl->record_padding_arg; } @@ -4381,7 +4381,7 @@ int SSL_set_num_tickets(SSL *s, size_t num_tickets) return 1; } -size_t SSL_get_num_tickets(SSL *s) +size_t SSL_get_num_tickets(const SSL *s) { return s->num_tickets; } @@ -4393,7 +4393,7 @@ int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets) return 1; } -size_t SSL_CTX_get_num_tickets(SSL_CTX *ctx) +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx) { return ctx->num_tickets; } From levitte at openssl.org Tue Feb 5 14:44:07 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 05 Feb 2019 14:44:07 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549377847.168240.12006.nullmailer@dev.openssl.org> The branch master has been updated via d6f4b0a8bfbe901c72294d8923eb5b6f54ca7732 (commit) from 3499327bad401eb510d76266428923d06c9c7bb7 (commit) - Log ----------------------------------------------------------------- commit d6f4b0a8bfbe901c72294d8923eb5b6f54ca7732 Author: Patrick Steuer Date: Mon Feb 6 10:54:54 2017 +0100 crypto/poly1305/asm/poly1305-s390x.pl: add vx code path. Signed-off-by: Patrick Steuer Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/7991) ----------------------------------------------------------------------- Summary of changes: crypto/poly1305/asm/poly1305-s390x.pl | 944 ++++++++++++++++++++++++++++------ 1 file changed, 780 insertions(+), 164 deletions(-) diff --git a/crypto/poly1305/asm/poly1305-s390x.pl b/crypto/poly1305/asm/poly1305-s390x.pl index 21ca860..390f9ee 100755 --- a/crypto/poly1305/asm/poly1305-s390x.pl +++ b/crypto/poly1305/asm/poly1305-s390x.pl @@ -24,204 +24,820 @@ # # On side note, z13 enables vector base 2^26 implementation... -$flavour = shift; +# +# January 2019 +# +# Add vx code path (base 2^26). +# +# Copyright IBM Corp. 2019 +# Author: Patrick Steuer +use strict; +use FindBin qw($Bin); +use lib "$Bin/../.."; +use perlasm::s390x qw(:DEFAULT :VX AUTOLOAD LABEL); + +my $flavour = shift; + +my ($z,$SIZE_T); if ($flavour =~ /3[12]/) { + $z=0; # S/390 ABI $SIZE_T=4; - $g=""; } else { + $z=1; # zSeries ABI $SIZE_T=8; - $g="g"; } +my $output; while (($output=shift) && ($output!~/\w[\w\-]*\.\w+$/)) {} -open STDOUT,">$output"; -$sp="%r15"; +my $sp="%r15"; + +# novx code path ctx layout +# --------------------------------- +# var value base off +# --------------------------------- +# u64 h[3] hash 2^64 0 +# u32 pad[2] +# u64 r[2] key 2^64 32 + +# vx code path ctx layout +# --------------------------------- +# var value base off +# --------------------------------- +# u32 acc1[5] r^2-acc 2^26 0 +# u32 pad +# u32 acc2[5] r-acc 2^26 24 +# u32 pad +# u32 r1[5] r 2^26 48 +# u32 r15[5] 5*r 2^26 68 +# u32 r2[5] r^2 2^26 88 +# u32 r25[5] 5*r^2 2^26 108 +# u32 r4[5] r^4 2^26 128 +# u32 r45[5] 5*r^4 2^26 148 + +PERLASM_BEGIN($output); + +TEXT (); + +################ +# static void poly1305_init(void *ctx, const unsigned char key[16]) +{ +my ($ctx,$key)=map("%r$_",(2..3)); +my ($r0,$r1,$r2)=map("%r$_",(9,11,13)); -my ($ctx,$inp,$len,$padbit) = map("%r$_",(2..5)); +sub MUL_RKEY { # r*=key +my ($d0hi,$d0lo,$d1hi,$d1lo)=map("%r$_",(4..7)); +my ($t0,$t1,$s1)=map("%r$_",(8,10,12)); + + lg ("%r0","32($ctx)"); + lg ("%r1","40($ctx)"); + + srlg ($s1,"%r1",2); + algr ($s1,"%r1"); + + lgr ($d0lo,$r0); + lgr ($d1lo,$r1); + + mlgr ($d0hi,"%r0"); + lgr ($r1,$d1lo); + mlgr ($d1hi,$s1); + + mlgr ($t0,"%r1"); + mlgr ($t1,"%r0"); + + algr ($d0lo,$d1lo); + lgr ($d1lo,$r2); + alcgr ($d0hi,$d1hi); + lghi ($d1hi,0); + + algr ($r1,$r0); + alcgr ($t1,$t0); + + msgr ($d1lo,$s1); + msgr ($r2,"%r0"); + + algr ($r1,$d1lo); + alcgr ($t1,$d1hi); + + algr ($r1,$d0hi); + alcgr ($r2,$t1); + + lghi ($r0,-4); + ngr ($r0,$r2); + srlg ($t0,$r2,2); + algr ($r0,$t0); + lghi ($t1,3); + ngr ($r2,$t1); + + algr ($r0,$d0lo); + alcgr ($r1,$d1hi); + alcgr ($r2,$d1hi); +} + +sub ST_R5R { # store r,5*r -> base 2^26 +my @d=map("%r$_",(4..8)); +my @off=@_; + + lgr (@d[2],$r0); + lr ("%r1", at d[2]); + nilh ("%r1",1023); + lgr (@d[3],$r1); + lr (@d[0],"%r1"); + srlg ("%r1", at d[2],52); + lgr (@d[4],$r2); + srlg ("%r0", at d[2],26); + sll (@d[4],24); + lr (@d[2], at d[3]); + nilh ("%r0",1023); + sll (@d[2],12); + lr (@d[1],"%r0"); + &or (@d[2],"%r1"); + srlg ("%r1", at d[3],40); + nilh (@d[2],1023); + &or (@d[4],"%r1"); + srlg (@d[3], at d[3],14); + nilh (@d[4],1023); + nilh (@d[3],1023); + + stm (@d[0], at d[4],"@off[0]($ctx)"); + mhi (@d[$_],5) for (0..4); + stm (@d[0], at d[4],"@off[1]($ctx)"); +} -$code.=<<___; -.text - -.globl poly1305_init -.type poly1305_init,\@function -.align 16 -poly1305_init: - lghi %r0,0 - lghi %r1,-1 - stg %r0,0($ctx) # zero hash value - stg %r0,8($ctx) - stg %r0,16($ctx) - - cl${g}r $inp,%r0 - je .Lno_key - - lrvg %r4,0($inp) # load little-endian key - lrvg %r5,8($inp) - - nihl %r1,0xffc0 # 0xffffffc0ffffffff - srlg %r0,%r1,4 # 0x0ffffffc0fffffff - srlg %r1,%r1,4 - nill %r1,0xfffc # 0x0ffffffc0ffffffc - - ngr %r4,%r0 - ngr %r5,%r1 - - stg %r4,32($ctx) - stg %r5,40($ctx) - -.Lno_key: - lghi %r2,0 - br %r14 -.size poly1305_init,.-poly1305_init -___ +GLOBL ("poly1305_init"); +TYPE ("poly1305_init","\@function"); +ALIGN (16); +LABEL ("poly1305_init"); + lghi ("%r0",0); + lghi ("%r1",-1); + stg ("%r0","0($ctx)"); # zero hash value / acc1 + stg ("%r0","8($ctx)"); + stg ("%r0","16($ctx)"); + +&{$z? \&clgr:\&clr} ($key,"%r0"); + je (".Ldone"); + + lrvg ("%r4","0($key)"); # load little-endian key + lrvg ("%r5","8($key)"); + + nihl ("%r1",0xffc0); # 0xffffffc0ffffffff + srlg ("%r0","%r1",4); # 0x0ffffffc0fffffff + srlg ("%r1","%r1",4); + nill ("%r1",0xfffc); # 0x0ffffffc0ffffffc + + ngr ("%r4","%r0"); + ngr ("%r5","%r1"); + + stg ("%r4","32($ctx)"); + stg ("%r5","40($ctx)"); + + larl ("%r1","OPENSSL_s390xcap_P"); + lg ("%r0","16(%r1)"); + tmhh ("%r0",0x4000); # check for vector facility + jz (".Ldone"); + + larl ("%r4","poly1305_blocks_vx"); + larl ("%r5","poly1305_emit_vx"); + +&{$z? \&stmg:\&stm} ("%r6","%r13","6*$SIZE_T($sp)"); +&{$z? \&stmg:\&stm} ("%r4","%r5","4*$z+228($ctx)"); + + lg ($r0,"32($ctx)"); + lg ($r1,"40($ctx)"); + lghi ($r2,0); + + ST_R5R (48,68); # store r,5*r + + MUL_RKEY(); + ST_R5R (88,108); # store r^2,5*r^2 + + MUL_RKEY(); + MUL_RKEY(); + ST_R5R (128,148); # store r^4,5*r^4 + + lghi ("%r0",0); + stg ("%r0","24($ctx)"); # zero acc2 + stg ("%r0","32($ctx)"); + stg ("%r0","40($ctx)"); + +&{$z? \&lmg:\&lm} ("%r6","%r13","6*$SIZE_T($sp)"); + lghi ("%r2",1); + br ("%r14"); + +LABEL (".Ldone"); + lghi ("%r2",0); + br ("%r14"); +SIZE ("poly1305_init",".-poly1305_init"); +} + +# VX CODE PATH { -my ($d0hi,$d0lo,$d1hi,$d1lo,$t0,$h0,$t1,$h1,$h2) = map("%r$_",(6..14)); -my ($r0,$r1,$s1) = map("%r$_",(0..2)); +my $frame=8*16; +my @m01=map("%v$_",(0..4)); +my @m23=map("%v$_",(5..9)); +my @tmp=@m23; +my @acc=map("%v$_",(10..14)); +my @r=map("%v$_",(15..19)); +my @r5=map("%v$_",(20..24)); +my $padvec="%v26"; +my $mask4="%v27"; +my @vperm=map("%v$_",(28..30)); +my $mask="%v31"; + +sub REDUCE { + vesrlg (@tmp[0], at acc[0],26); + vesrlg (@tmp[3], at acc[3],26); + vn (@acc[0], at acc[0],$mask); + vn (@acc[3], at acc[3],$mask); + vag (@acc[1], at acc[1], at tmp[0]); # carry 0->1 + vag (@acc[4], at acc[4], at tmp[3]); # carry 3->4 + + vesrlg (@tmp[1], at acc[1],26); + vesrlg (@tmp[4], at acc[4],26); + vn (@acc[1], at acc[1],$mask); + vn (@acc[4], at acc[4],$mask); + veslg (@tmp[0], at tmp[4],2); + vag (@tmp[4], at tmp[4], at tmp[0]); # h[4]*=5 + vag (@acc[2], at acc[2], at tmp[1]); # carry 1->2 + vag (@acc[0], at acc[0], at tmp[4]); # carry 4->0 + + vesrlg (@tmp[2], at acc[2],26); + vesrlg (@tmp[0], at acc[0],26); + vn (@acc[2], at acc[2],$mask); + vn (@acc[0], at acc[0],$mask); + vag (@acc[3], at acc[3], at tmp[2]); # carry 2->3 + vag (@acc[1], at acc[1], at tmp[0]); # carry 0->1 + + vesrlg (@tmp[3], at acc[3],26); + vn (@acc[3], at acc[3],$mask); + vag (@acc[4], at acc[4], at tmp[3]); # carry 3->4 +} -$code.=<<___; -.globl poly1305_blocks -.type poly1305_blocks,\@function -.align 16 -poly1305_blocks: - srl${g} $len,4 # fixed-up in 64-bit build - lghi %r0,0 - cl${g}r $len,%r0 - je .Lno_data +################ +# static void poly1305_blocks_vx(void *ctx, const unsigned char *inp, +# size_t len, u32 padbit) +{ +my ($ctx,$inp,$len) = map("%r$_",(2..4)); +my $padbit="%r0"; + +GLOBL ("poly1305_blocks_vx"); +TYPE ("poly1305_blocks_vx","\@function"); +ALIGN (16); +LABEL ("poly1305_blocks_vx"); +if ($z) { + aghi ($sp,-$frame); + vstm ("%v8","%v15","0($sp)"); +} else { + std ("%f4","16*$SIZE_T+2*8($sp)"); + std ("%f6","16*$SIZE_T+3*8($sp)"); + llgfr ($len,$len); +} + llgfr ($padbit,"%r5"); + vlef (@acc[$_],"4*$_($ctx)",1) for (0..4); # load acc1 + larl ("%r5",".Lconst"); + vlef (@acc[$_],"24+4*$_($ctx)",3) for (0..4); # load acc2 + sllg ($padbit,$padbit,24); + vlm (@vperm[0],$mask,"0(%r5)"); # load vperm ops, mask + vgbm ($mask4,0x0707); + vlvgp ($padvec,$padbit,$padbit); + + srlg ("%r1",$len,6); + ltgr ("%r1","%r1"); + jz (".Lvx_4x_done"); + +ALIGN (16); +LABEL (".Lvx_4x"); + vlm ("%v20","%v23","0($inp)"); # load m0,m1,m2,m3 + + # m01,m23 -> base 2^26 + + vperm (@m01[0],"%v20","%v21", at vperm[0]); + vperm (@m23[0],"%v22","%v23", at vperm[0]); + vperm (@m01[2],"%v20","%v21", at vperm[1]); + vperm (@m23[2],"%v22","%v23", at vperm[1]); + vperm (@m01[4],"%v20","%v21", at vperm[2]); + vperm (@m23[4],"%v22","%v23", at vperm[2]); + + vesrlg (@m01[1], at m01[0],26); + vesrlg (@m23[1], at m23[0],26); + vesrlg (@m01[3], at m01[2],30); + vesrlg (@m23[3], at m23[2],30); + vesrlg (@m01[2], at m01[2],4); + vesrlg (@m23[2], at m23[2],4); + + vn (@m01[4], at m01[4],$mask4); + vn (@m23[4], at m23[4],$mask4); +for (0..3) { + vn (@m01[$_], at m01[$_],$mask); + vn (@m23[$_], at m23[$_],$mask); +} + vaf (@m01[4], at m01[4],$padvec); # pad m01 + vaf (@m23[4], at m23[4],$padvec); # pad m23 + + # acc = acc * r^4 + m01 * r^2 + m23 + + vlrepf (@r5[$_],"4*$_+108($ctx)") for (0..4); # load 5*r^2 + vlrepf (@r[$_],"4*$_+88($ctx)") for (0..4); # load r^2 + + vmalof (@tmp[0], at m01[4], at r5[1], at m23[0]); + vmalof (@tmp[1], at m01[4], at r5[2], at m23[1]); + vmalof (@tmp[2], at m01[4], at r5[3], at m23[2]); + vmalof (@tmp[3], at m01[4], at r5[4], at m23[3]); + vmalof (@tmp[4], at m01[4], at r[0], at m23[4]); + + vmalof (@tmp[0], at m01[3], at r5[2], at tmp[0]); + vmalof (@tmp[1], at m01[3], at r5[3], at tmp[1]); + vmalof (@tmp[2], at m01[3], at r5[4], at tmp[2]); + vmalof (@tmp[3], at m01[3], at r[0], at tmp[3]); + vmalof (@tmp[4], at m01[3], at r[1], at tmp[4]); + + vmalof (@tmp[0], at m01[2], at r5[3], at tmp[0]); + vmalof (@tmp[1], at m01[2], at r5[4], at tmp[1]); + vmalof (@tmp[2], at m01[2], at r[0], at tmp[2]); + vmalof (@tmp[3], at m01[2], at r[1], at tmp[3]); + vmalof (@tmp[4], at m01[2], at r[2], at tmp[4]); + + vmalof (@tmp[0], at m01[1], at r5[4], at tmp[0]); + vmalof (@tmp[1], at m01[1], at r[0], at tmp[1]); + vmalof (@tmp[2], at m01[1], at r[1], at tmp[2]); + vmalof (@tmp[3], at m01[1], at r[2], at tmp[3]); + vmalof (@tmp[4], at m01[1], at r[3], at tmp[4]); + + vmalof (@tmp[0], at m01[0], at r[0], at tmp[0]); + vmalof (@tmp[1], at m01[0], at r[1], at tmp[1]); + vmalof (@tmp[2], at m01[0], at r[2], at tmp[2]); + vmalof (@tmp[3], at m01[0], at r[3], at tmp[3]); + vmalof (@tmp[4], at m01[0], at r[4], at tmp[4]); + + vlrepf (@r5[$_],"4*$_+148($ctx)") for (0..4); # load 5*r^4 + vlrepf (@r[$_],"4*$_+128($ctx)") for (0..4); # load r^4 + + vmalof (@tmp[0], at acc[4], at r5[1], at tmp[0]); + vmalof (@tmp[1], at acc[4], at r5[2], at tmp[1]); + vmalof (@tmp[2], at acc[4], at r5[3], at tmp[2]); + vmalof (@tmp[3], at acc[4], at r5[4], at tmp[3]); + vmalof (@tmp[4], at acc[4], at r[0], at tmp[4]); + + vmalof (@tmp[0], at acc[3], at r5[2], at tmp[0]); + vmalof (@tmp[1], at acc[3], at r5[3], at tmp[1]); + vmalof (@tmp[2], at acc[3], at r5[4], at tmp[2]); + vmalof (@tmp[3], at acc[3], at r[0], at tmp[3]); + vmalof (@tmp[4], at acc[3], at r[1], at tmp[4]); + + vmalof (@tmp[0], at acc[2], at r5[3], at tmp[0]); + vmalof (@tmp[1], at acc[2], at r5[4], at tmp[1]); + vmalof (@tmp[2], at acc[2], at r[0], at tmp[2]); + vmalof (@tmp[3], at acc[2], at r[1], at tmp[3]); + vmalof (@tmp[4], at acc[2], at r[2], at tmp[4]); + + vmalof (@tmp[0], at acc[1], at r5[4], at tmp[0]); + vmalof (@tmp[1], at acc[1], at r[0], at tmp[1]); + vmalof (@tmp[2], at acc[1], at r[1], at tmp[2]); + vmalof (@tmp[3], at acc[1], at r[2], at tmp[3]); + vmalof (@tmp[4], at acc[1], at r[3], at tmp[4]); + + vmalof (@acc[1], at acc[0], at r[1], at tmp[1]); + vmalof (@acc[2], at acc[0], at r[2], at tmp[2]); + vmalof (@acc[3], at acc[0], at r[3], at tmp[3]); + vmalof (@acc[4], at acc[0], at r[4], at tmp[4]); + vmalof (@acc[0], at acc[0], at r[0], at tmp[0]); + + REDUCE (); + + la ($inp,"64($inp)"); + brctg ("%r1",".Lvx_4x"); + +ALIGN (16); +LABEL (".Lvx_4x_done"); + tml ($len,32); + jz (".Lvx_2x_done"); + + vlm ("%v20","%v21","0($inp)"); # load m0,m1 + + # m01 -> base 2^26 + + vperm (@m01[0],"%v20","%v21", at vperm[0]); + vperm (@m01[2],"%v20","%v21", at vperm[1]); + vperm (@m01[4],"%v20","%v21", at vperm[2]); + + vesrlg (@m01[1], at m01[0],26); + vesrlg (@m01[3], at m01[2],30); + vesrlg (@m01[2], at m01[2],4); + + vn (@m01[4], at m01[4],$mask4); + vn (@m01[$_], at m01[$_],$mask) for (0..3); + + vaf (@m01[4], at m01[4],$padvec); # pad m01 + + # acc = acc * r^2+ m01 + + vlrepf (@r5[$_],"4*$_+108($ctx)") for (0..4); # load 5*r^2 + vlrepf (@r[$_],"4*$_+88($ctx)") for (0..4); # load r^2 + + vmalof (@tmp[0], at acc[4], at r5[1], at m01[0]); + vmalof (@tmp[1], at acc[4], at r5[2], at m01[1]); + vmalof (@tmp[2], at acc[4], at r5[3], at m01[2]); + vmalof (@tmp[3], at acc[4], at r5[4], at m01[3]); + vmalof (@tmp[4], at acc[4], at r[0], at m01[4]); + + vmalof (@tmp[0], at acc[3], at r5[2], at tmp[0]); + vmalof (@tmp[1], at acc[3], at r5[3], at tmp[1]); + vmalof (@tmp[2], at acc[3], at r5[4], at tmp[2]); + vmalof (@tmp[3], at acc[3], at r[0], at tmp[3]); + vmalof (@tmp[4], at acc[3], at r[1], at tmp[4]); + + vmalof (@tmp[0], at acc[2], at r5[3], at tmp[0]); + vmalof (@tmp[1], at acc[2], at r5[4], at tmp[1]); + vmalof (@tmp[2], at acc[2], at r[0], at tmp[2]); + vmalof (@tmp[3], at acc[2], at r[1], at tmp[3]); + vmalof (@tmp[4], at acc[2], at r[2], at tmp[4]); + + vmalof (@tmp[0], at acc[1], at r5[4], at tmp[0]); + vmalof (@tmp[1], at acc[1], at r[0], at tmp[1]); + vmalof (@tmp[2], at acc[1], at r[1], at tmp[2]); + vmalof (@tmp[3], at acc[1], at r[2], at tmp[3]); + vmalof (@tmp[4], at acc[1], at r[3], at tmp[4]); + + vmalof (@acc[1], at acc[0], at r[1], at tmp[1]); + vmalof (@acc[2], at acc[0], at r[2], at tmp[2]); + vmalof (@acc[3], at acc[0], at r[3], at tmp[3]); + vmalof (@acc[4], at acc[0], at r[4], at tmp[4]); + vmalof (@acc[0], at acc[0], at r[0], at tmp[0]); + + REDUCE (); + + la ($inp,"32($inp)"); + +ALIGN (16); +LABEL (".Lvx_2x_done"); + tml ($len,16); + jz (".Lvx_done"); + + vleig ($padvec,0,0); + + vzero ("%v20"); + vl ("%v21","0($inp)"); # load m0 + + # m0 -> base 2^26 + + vperm (@m01[0],"%v20","%v21", at vperm[0]); + vperm (@m01[2],"%v20","%v21", at vperm[1]); + vperm (@m01[4],"%v20","%v21", at vperm[2]); + + vesrlg (@m01[1], at m01[0],26); + vesrlg (@m01[3], at m01[2],30); + vesrlg (@m01[2], at m01[2],4); + + vn (@m01[4], at m01[4],$mask4); + vn (@m01[$_], at m01[$_],$mask) for (0..3); + + vaf (@m01[4], at m01[4],$padvec); # pad m0 + + # acc = acc * r + m01 + + vlrepf (@r5[$_],"4*$_+68($ctx)") for (0..4); # load 5*r + vlrepf (@r[$_],"4*$_+48($ctx)") for (0..4); # load r + + vmalof (@tmp[0], at acc[4], at r5[1], at m01[0]); + vmalof (@tmp[1], at acc[4], at r5[2], at m01[1]); + vmalof (@tmp[2], at acc[4], at r5[3], at m01[2]); + vmalof (@tmp[3], at acc[4], at r5[4], at m01[3]); + vmalof (@tmp[4], at acc[4], at r[0], at m01[4]); + + vmalof (@tmp[0], at acc[3], at r5[2], at tmp[0]); + vmalof (@tmp[1], at acc[3], at r5[3], at tmp[1]); + vmalof (@tmp[2], at acc[3], at r5[4], at tmp[2]); + vmalof (@tmp[3], at acc[3], at r[0], at tmp[3]); + vmalof (@tmp[4], at acc[3], at r[1], at tmp[4]); + + vmalof (@tmp[0], at acc[2], at r5[3], at tmp[0]); + vmalof (@tmp[1], at acc[2], at r5[4], at tmp[1]); + vmalof (@tmp[2], at acc[2], at r[0], at tmp[2]); + vmalof (@tmp[3], at acc[2], at r[1], at tmp[3]); + vmalof (@tmp[4], at acc[2], at r[2], at tmp[4]); + + vmalof (@tmp[0], at acc[1], at r5[4], at tmp[0]); + vmalof (@tmp[1], at acc[1], at r[0], at tmp[1]); + vmalof (@tmp[2], at acc[1], at r[1], at tmp[2]); + vmalof (@tmp[3], at acc[1], at r[2], at tmp[3]); + vmalof (@tmp[4], at acc[1], at r[3], at tmp[4]); + + vmalof (@acc[1], at acc[0], at r[1], at tmp[1]); + vmalof (@acc[2], at acc[0], at r[2], at tmp[2]); + vmalof (@acc[3], at acc[0], at r[3], at tmp[3]); + vmalof (@acc[4], at acc[0], at r[4], at tmp[4]); + vmalof (@acc[0], at acc[0], at r[0], at tmp[0]); + + REDUCE (); + +ALIGN (16); +LABEL (".Lvx_done"); + vstef (@acc[$_],"4*$_($ctx)",1) for (0..4); # store acc + vstef (@acc[$_],"24+4*$_($ctx)",3) for (0..4); + +if ($z) { + vlm ("%v8","%v15","0($sp)"); + la ($sp,"$frame($sp)"); +} else { + ld ("%f4","16*$SIZE_T+2*8($sp)"); + ld ("%f6","16*$SIZE_T+3*8($sp)"); +} + br ("%r14"); +SIZE ("poly1305_blocks_vx",".-poly1305_blocks_vx"); +} - stm${g} %r6,%r14,`6*$SIZE_T`($sp) +################ +# static void poly1305_emit_vx(void *ctx, unsigned char mac[16], +# const u32 nonce[4]) +{ +my ($ctx,$mac,$nonce) = map("%r$_",(2..4)); + +GLOBL ("poly1305_emit_vx"); +TYPE ("poly1305_emit_vx","\@function"); +ALIGN (16); +LABEL ("poly1305_emit_vx"); +if ($z) { + aghi ($sp,-$frame); + vstm ("%v8","%v15","0($sp)"); +} else { + std ("%f4","16*$SIZE_T+2*8($sp)"); + std ("%f6","16*$SIZE_T+3*8($sp)"); +} + larl ("%r5",".Lconst"); - llgfr $padbit,$padbit # clear upper half, much needed with + vlef (@acc[$_],"4*$_($ctx)",1) for (0..4); # load acc1 + vlef (@acc[$_],"24+4*$_($ctx)",3) for (0..4); # load acc2 + vlef (@r5[$_],"108+4*$_($ctx)",1) for (0..4); # load 5*r^2 + vlef (@r[$_],"88+4*$_($ctx)",1) for (0..4); # load r^2 + vlef (@r5[$_],"68+4*$_($ctx)",3) for (0..4); # load 5*r + vlef (@r[$_],"48+4*$_($ctx)",3) for (0..4); # load r + vl ($mask,"48(%r5)"); # load mask + + # acc = acc1 * r^2 + acc2 * r + + vmlof (@tmp[0], at acc[4], at r5[1]); + vmlof (@tmp[1], at acc[4], at r5[2]); + vmlof (@tmp[2], at acc[4], at r5[3]); + vmlof (@tmp[3], at acc[4], at r5[4]); + vmlof (@tmp[4], at acc[4], at r[0]); + + vmalof (@tmp[0], at acc[3], at r5[2], at tmp[0]); + vmalof (@tmp[1], at acc[3], at r5[3], at tmp[1]); + vmalof (@tmp[2], at acc[3], at r5[4], at tmp[2]); + vmalof (@tmp[3], at acc[3], at r[0], at tmp[3]); + vmalof (@tmp[4], at acc[3], at r[1], at tmp[4]); + + vmalof (@tmp[0], at acc[2], at r5[3], at tmp[0]); + vmalof (@tmp[1], at acc[2], at r5[4], at tmp[1]); + vmalof (@tmp[2], at acc[2], at r[0], at tmp[2]); + vmalof (@tmp[3], at acc[2], at r[1], at tmp[3]); + vmalof (@tmp[4], at acc[2], at r[2], at tmp[4]); + + vmalof (@tmp[0], at acc[1], at r5[4], at tmp[0]); + vmalof (@tmp[1], at acc[1], at r[0], at tmp[1]); + vmalof (@tmp[2], at acc[1], at r[1], at tmp[2]); + vmalof (@tmp[3], at acc[1], at r[2], at tmp[3]); + vmalof (@tmp[4], at acc[1], at r[3], at tmp[4]); + + vmalof (@acc[1], at acc[0], at r[1], at tmp[1]); + vmalof (@acc[2], at acc[0], at r[2], at tmp[2]); + vmalof (@acc[3], at acc[0], at r[3], at tmp[3]); + vmalof (@acc[4], at acc[0], at r[4], at tmp[4]); + vmalof (@acc[0], at acc[0], at r[0], at tmp[0]); + + vzero ("%v27"); + vsumqg (@acc[$_], at acc[$_],"%v27") for (0..4); + + REDUCE (); + + vesrlg (@tmp[1], at acc[1],26); + vn (@acc[1], at acc[1],$mask); + vag (@acc[2], at acc[2], at tmp[1]); # carry 1->2 + + vesrlg (@tmp[2], at acc[2],26); + vn (@acc[2], at acc[2],$mask); + vag (@acc[3], at acc[3], at tmp[2]); # carry 2->3 + + vesrlg (@tmp[3], at acc[3],26); + vn (@acc[3], at acc[3],$mask); + vag (@acc[4], at acc[4], at tmp[3]); # carry 3->4 + + # acc -> base 2^64 + vleib ("%v30",6*8,7); + vleib ("%v29",13*8,7); + vleib ("%v28",3*8,7); + + veslg (@acc[1], at acc[1],26); + veslg (@acc[3], at acc[3],26); + vo (@acc[0], at acc[0], at acc[1]); + vo (@acc[2], at acc[2], at acc[3]); + + veslg (@acc[2], at acc[2],4); + vslb (@acc[2], at acc[2],"%v30"); # <<52 + vo (@acc[0], at acc[0], at acc[2]); + + vslb (@tmp[4], at acc[4],"%v29"); # <<104 + vo (@acc[0], at acc[0], at tmp[4]); + + vsrlb (@acc[1], at acc[4],"%v28"); # >>24 + + # acc %= 2^130-5 + vone ("%v26"); + vleig ("%v27",5,1); + vone ("%v29"); + vleig ("%v26",-4,1); + + vaq (@tmp[0], at acc[0],"%v27"); + vaccq (@tmp[1], at acc[0],"%v27"); + + vaq (@tmp[1], at tmp[1],"%v26"); + vaccq (@tmp[1], at tmp[1], at acc[1]); + + vaq (@tmp[1], at tmp[1],"%v29"); + + vn (@tmp[2], at tmp[1], at acc[0]); + vnc (@tmp[3], at tmp[0], at tmp[1]); + vo (@acc[0], at tmp[2], at tmp[3]); + + # acc += nonce + vl (@vperm[0],"64(%r5)"); + vlef (@tmp[0],"4*$_($nonce)",3-$_) for (0..3); + + vaq (@acc[0], at acc[0], at tmp[0]); + + vperm (@acc[0], at acc[0], at acc[0], at vperm[0]); + vst (@acc[0],"0($mac)"); # store mac + +if ($z) { + vlm ("%v8","%v15","0($sp)"); + la ($sp,"$frame($sp)"); +} else { + ld ("%f4","16*$SIZE_T+2*8($sp)"); + ld ("%f6","16*$SIZE_T+3*8($sp)"); +} + br ("%r14"); +SIZE ("poly1305_emit_vx",".-poly1305_emit_vx"); +} +} + +# NOVX CODE PATH +{ +################ +# static void poly1305_blocks(void *ctx, const unsigned char *inp, size_t len, +# u32 padbit) +{ +my ($ctx,$inp,$len,$padbit) = map("%r$_",(2..5)); + +my ($d0hi,$d0lo,$d1hi,$d1lo,$t0,$h0,$t1,$h1,$h2) = map("%r$_",(6..14)); +my ($r0,$r1,$s1) = map("%r$_",(0..2)); +GLOBL ("poly1305_blocks"); +TYPE ("poly1305_blocks","\@function"); +ALIGN (16); +LABEL ("poly1305_blocks"); +$z? srlg ($len,$len,4) :srl ($len,4); + lghi ("%r0",0); +&{$z? \&clgr:\&clr} ($len,"%r0"); + je (".Lno_data"); + +&{$z? \&stmg:\&stm} ("%r6","%r14","6*$SIZE_T($sp)"); + + llgfr ($padbit,$padbit); # clear upper half, much needed with # non-64-bit ABI - lg $r0,32($ctx) # load key - lg $r1,40($ctx) + lg ($r0,"32($ctx)"); # load key + lg ($r1,"40($ctx)"); - lg $h0,0($ctx) # load hash value - lg $h1,8($ctx) - lg $h2,16($ctx) + lg ($h0,"0($ctx)"); # load hash value + lg ($h1,"8($ctx)"); + lg ($h2,"16($ctx)"); - st$g $ctx,`2*$SIZE_T`($sp) # off-load $ctx - srlg $s1,$r1,2 - algr $s1,$r1 # s1 = r1 + r1>>2 - j .Loop +&{$z? \&stg:\&st} ($ctx,"2*$SIZE_T($sp)"); # off-load $ctx + srlg ($s1,$r1,2); + algr ($s1,$r1); # s1 = r1 + r1>>2 + j (".Loop"); -.align 16 -.Loop: - lrvg $d0lo,0($inp) # load little-endian input - lrvg $d1lo,8($inp) - la $inp,16($inp) +ALIGN (16); +LABEL (".Loop"); + lrvg ($d0lo,"0($inp)"); # load little-endian input + lrvg ($d1lo,"8($inp)"); + la ($inp,"16($inp)"); - algr $d0lo,$h0 # accumulate input - alcgr $d1lo,$h1 + algr ($d0lo,$h0); # accumulate input + alcgr ($d1lo,$h1); - lgr $h0,$d0lo - mlgr $d0hi,$r0 # h0*r0 -> $d0hi:$d0lo - lgr $h1,$d1lo - mlgr $d1hi,$s1 # h1*5*r1 -> $d1hi:$d1lo + lgr ($h0,$d0lo); + mlgr ($d0hi,$r0); # h0*r0 -> $d0hi:$d0lo + lgr ($h1,$d1lo); + mlgr ($d1hi,$s1); # h1*5*r1 -> $d1hi:$d1lo - mlgr $t0,$r1 # h0*r1 -> $t0:$h0 - mlgr $t1,$r0 # h1*r0 -> $t1:$h1 - alcgr $h2,$padbit + mlgr ($t0,$r1); # h0*r1 -> $t0:$h0 + mlgr ($t1,$r0); # h1*r0 -> $t1:$h1 + alcgr ($h2,$padbit); - algr $d0lo,$d1lo - lgr $d1lo,$h2 - alcgr $d0hi,$d1hi - lghi $d1hi,0 + algr ($d0lo,$d1lo); + lgr ($d1lo,$h2); + alcgr ($d0hi,$d1hi); + lghi ($d1hi,0); - algr $h1,$h0 - alcgr $t1,$t0 + algr ($h1,$h0); + alcgr ($t1,$t0); - msgr $d1lo,$s1 # h2*s1 - msgr $h2,$r0 # h2*r0 + msgr ($d1lo,$s1); # h2*s1 + msgr ($h2,$r0); # h2*r0 - algr $h1,$d1lo - alcgr $t1,$d1hi # $d1hi is zero + algr ($h1,$d1lo); + alcgr ($t1,$d1hi); # $d1hi is zero - algr $h1,$d0hi - alcgr $h2,$t1 + algr ($h1,$d0hi); + alcgr ($h2,$t1); - lghi $h0,-4 # final reduction step - ngr $h0,$h2 - srlg $t0,$h2,2 - algr $h0,$t0 - lghi $t1,3 - ngr $h2,$t1 + lghi ($h0,-4); # final reduction step + ngr ($h0,$h2); + srlg ($t0,$h2,2); + algr ($h0,$t0); + lghi ($t1,3); + ngr ($h2,$t1); - algr $h0,$d0lo - alcgr $h1,$d1hi # $d1hi is still zero - alcgr $h2,$d1hi # $d1hi is still zero + algr ($h0,$d0lo); + alcgr ($h1,$d1hi); # $d1hi is still zero + alcgr ($h2,$d1hi); # $d1hi is still zero - brct$g $len,.Loop +&{$z? \&brctg:\&brct} ($len,".Loop"); - l$g $ctx,`2*$SIZE_T`($sp) # restore $ctx +&{$z? \&lg:\&l} ($ctx,"2*$SIZE_T($sp)");# restore $ctx - stg $h0,0($ctx) # store hash value - stg $h1,8($ctx) - stg $h2,16($ctx) + stg ($h0,"0($ctx)"); # store hash value + stg ($h1,"8($ctx)"); + stg ($h2,"16($ctx)"); - lm${g} %r6,%r14,`6*$SIZE_T`($sp) -.Lno_data: - br %r14 -.size poly1305_blocks,.-poly1305_blocks -___ +&{$z? \&lmg:\&lm} ("%r6","%r14","6*$SIZE_T($sp)"); +LABEL (".Lno_data"); + br ("%r14"); +SIZE ("poly1305_blocks",".-poly1305_blocks"); } + +################ +# static void poly1305_emit(void *ctx, unsigned char mac[16], +# const u32 nonce[4]) { -my ($mac,$nonce)=($inp,$len); +my ($ctx,$mac,$nonce) = map("%r$_",(2..4)); my ($h0,$h1,$h2,$d0,$d1)=map("%r$_",(5..9)); -$code.=<<___; -.globl poly1305_emit -.type poly1305_emit,\@function -.align 16 -poly1305_emit: - stm${g} %r6,%r9,`6*$SIZE_T`($sp) - - lg $h0,0($ctx) - lg $h1,8($ctx) - lg $h2,16($ctx) - - lghi %r0,5 - lghi %r1,0 - lgr $d0,$h0 - lgr $d1,$h1 - - algr $h0,%r0 # compare to modulus - alcgr $h1,%r1 - alcgr $h2,%r1 - - srlg $h2,$h2,2 # did it borrow/carry? - slgr %r1,$h2 # 0-$h2>>2 - lg $h2,0($nonce) # load nonce - lghi %r0,-1 - lg $ctx,8($nonce) - xgr %r0,%r1 # ~%r1 - - ngr $h0,%r1 - ngr $d0,%r0 - ngr $h1,%r1 - ngr $d1,%r0 - ogr $h0,$d0 - rllg $d0,$h2,32 # flip nonce words - ogr $h1,$d1 - rllg $d1,$ctx,32 - - algr $h0,$d0 # accumulate nonce - alcgr $h1,$d1 - - strvg $h0,0($mac) # write little-endian result - strvg $h1,8($mac) - - lm${g} %r6,%r9,`6*$SIZE_T`($sp) - br %r14 -.size poly1305_emit,.-poly1305_emit - -.string "Poly1305 for s390x, CRYPTOGAMS by " -___ -} - -$code =~ s/\`([^\`]*)\`/eval $1/gem; -$code =~ s/\b(srlg\s+)(%r[0-9]+\s*,)\s*([0-9]+)/$1$2$2$3/gm; - -print $code; -close STDOUT; +GLOBL ("poly1305_emit"); +TYPE ("poly1305_emit","\@function"); +ALIGN (16); +LABEL ("poly1305_emit"); +&{$z? \&stmg:\&stm} ("%r6","%r9","6*$SIZE_T($sp)"); + + lg ($h0,"0($ctx)"); + lg ($h1,"8($ctx)"); + lg ($h2,"16($ctx)"); + + lghi ("%r0",5); + lghi ("%r1",0); + lgr ($d0,$h0); + lgr ($d1,$h1); + + algr ($h0,"%r0"); # compare to modulus + alcgr ($h1,"%r1"); + alcgr ($h2,"%r1"); + + srlg ($h2,$h2,2); # did it borrow/carry? + slgr ("%r1",$h2); # 0-$h2>>2 + lg ($h2,"0($nonce)"); # load nonce + lghi ("%r0",-1); + lg ($ctx,"8($nonce)"); + xgr ("%r0","%r1"); # ~%r1 + + ngr ($h0,"%r1"); + ngr ($d0,"%r0"); + ngr ($h1,"%r1"); + ngr ($d1,"%r0"); + ogr ($h0,$d0); + rllg ($d0,$h2,32); # flip nonce words + ogr ($h1,$d1); + rllg ($d1,$ctx,32); + + algr ($h0,$d0); # accumulate nonce + alcgr ($h1,$d1); + + strvg ($h0,"0($mac)"); # write little-endian result + strvg ($h1,"8($mac)"); + +&{$z? \&lmg:\&lm} ("%r6","%r9","6*$SIZE_T($sp)"); + br ("%r14"); +SIZE ("poly1305_emit",".-poly1305_emit"); +} +} +################ + +ALIGN (128); +LABEL (".Lconst"); +LONG (0x00060504,0x03020100,0x00161514,0x13121110); # vperm op[m[1],m[0]] +LONG (0x000c0b0a,0x09080706,0x001c1b1a,0x19181716); # vperm op[m[3],m[2]] +LONG (0x00000000,0x000f0e0d,0x00000000,0x001f1e1d); # vperm op[ - ,m[4]] +LONG (0x00000000,0x03ffffff,0x00000000,0x03ffffff); # [0,2^26-1,0,2^26-1] +LONG (0x0f0e0d0c,0x0b0a0908,0x07060504,0x03020100); # vperm op endian +STRING ("\"Poly1305 for s390x, CRYPTOGAMS by \""); + +PERLASM_END(); From levitte at openssl.org Tue Feb 5 15:27:04 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 05 Feb 2019 15:27:04 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549380424.620459.17284.nullmailer@dev.openssl.org> The branch master has been updated via df4439186fb70ce72668d472943dbcd057df8f30 (commit) from d6f4b0a8bfbe901c72294d8923eb5b6f54ca7732 (commit) - Log ----------------------------------------------------------------- commit df4439186fb70ce72668d472943dbcd057df8f30 Author: Sam Roberts Date: Thu Jan 31 09:55:30 2019 -0800 Remove unnecessary trailing whitespace Trim trailing whitespace. It doesn't match OpenSSL coding standards, AFAICT, and it can cause problems with git tooling. Trailing whitespace remains in test data and external source. Reviewed-by: Kurt Roeckx Reviewed-by: Matthias St. Pierre Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8092) ----------------------------------------------------------------------- Summary of changes: CHANGES | 2 +- CONTRIBUTING | 2 +- Configurations/00-base-templates.conf | 2 +- Configurations/50-win-onecore.conf | 2 +- Configurations/README | 2 +- Configurations/README.design | 8 ++++---- Configurations/descrip.mms.tmpl | 2 +- Configurations/unix-Makefile.tmpl | 2 +- NOTES.ANDROID | 2 +- NOTES.DJGPP | 4 ++-- NOTES.VMS | 2 +- apps/ct_log_list.cnf | 4 ++-- apps/demoSRP/srp_verifier.txt | 2 +- apps/dh1024.pem | 2 +- apps/dh2048.pem | 4 ++-- apps/dh4096.pem | 4 ++-- apps/openssl-vms.cnf | 4 ++-- apps/openssl.cnf | 4 ++-- apps/s_client.c | 4 ++-- config | 16 ++++++++-------- crypto/bn/asm/ia64.S | 4 ++-- crypto/bn/asm/sparcv8plus.S | 4 ++-- crypto/bn/bn_ctx.c | 4 ++-- crypto/cryptlib.c | 6 +++--- crypto/des/asm/des_enc.m4 | 4 ++-- crypto/ec/curve448/point_448.h | 14 +++++++------- crypto/engine/README | 2 +- crypto/engine/eng_lib.c | 2 +- crypto/evp/e_aes.c | 2 +- crypto/objects/objects.txt | 2 +- crypto/pem/pem_info.c | 2 +- crypto/srp/srp_vfy.c | 2 +- demos/bio/accept.cnf | 2 +- demos/bio/connect.cnf | 2 +- demos/bio/descrip.mms | 2 +- demos/certs/README | 2 +- demos/certs/apps/mkxcerts.sh | 2 +- demos/certs/mkcerts.sh | 2 +- doc/HOWTO/certificates.txt | 2 +- doc/HOWTO/proxy_certificates.txt | 2 +- doc/fingerprints.txt | 2 +- doc/man1/ca.pod | 2 +- doc/man1/s_server.pod | 2 +- doc/man3/EVP_PKEY_asn1_get_count.pod | 2 +- doc/man3/HMAC.pod | 2 +- doc/man3/SSL_CTX_set0_CA_list.pod | 2 +- doc/man3/SSL_CTX_set_ctlog_list_file.pod | 2 +- doc/man3/SSL_read_early_data.pod | 2 +- include/internal/thread_once.h | 12 ++++++------ include/internal/tsan_assist.h | 2 +- test/README.external | 2 +- test/build.info | 2 +- test/rdrand_sanitytest.c | 4 ++-- test/servername_test.c | 2 +- test/testutil/main.c | 2 +- test/tls13secretstest.c | 2 +- util/indent.pro | 2 +- util/openssl-format-source | 28 ++++++++++++++-------------- util/perl/TLSProxy/Alert.pm | 2 +- util/perl/TLSProxy/Message.pm | 4 ++-- util/perl/TLSProxy/Record.pm | 2 +- util/perl/TLSProxy/ServerHello.pm | 4 ++-- util/perl/TLSProxy/ServerKeyExchange.pm | 2 +- 63 files changed, 113 insertions(+), 113 deletions(-) diff --git a/CHANGES b/CHANGES index a72daba..7c678b4 100644 --- a/CHANGES +++ b/CHANGES @@ -74,7 +74,7 @@ implementations. This includes a generic EVP_PKEY to EVP_MAC bridge, to facilitate the continued use of MACs through raw private keys in functionality such as EVP_DigestSign* and EVP_DigestVerify*. - [Richard Levitte] + [Richard Levitte] *) Deprecate ECDH_KDF_X9_62() and mark its replacement as internal. Users should use the EVP interface instead (EVP_PKEY_CTX_set_ecdh_kdf_type). diff --git a/CONTRIBUTING b/CONTRIBUTING index 639c3cf..250bbdb 100644 --- a/CONTRIBUTING +++ b/CONTRIBUTING @@ -57,7 +57,7 @@ guidelines: 7. For user visible changes (API changes, behaviour changes, ...), consider adding a note in CHANGES. This could be a summarising description of the change, and could explain the grander details. - Have a look through existing entries for inspiration. + Have a look through existing entries for inspiration. Please note that this is NOT simply a copy of git-log oneliners. Also note that security fixes get an entry in CHANGES. This file helps users get more in depth information of what comes diff --git a/Configurations/00-base-templates.conf b/Configurations/00-base-templates.conf index eb9feae..c92d640 100644 --- a/Configurations/00-base-templates.conf +++ b/Configurations/00-base-templates.conf @@ -305,7 +305,7 @@ my %targets=( sha1_asm_src => "sha1-armv4-large.S sha256-armv4.S sha512-armv4.S", modes_asm_src => "ghash-armv4.S ghashv8-armx.S", chacha_asm_src => "chacha-armv4.S", - poly1305_asm_src=> "poly1305-armv4.S", + poly1305_asm_src=> "poly1305-armv4.S", keccak1600_asm_src => "keccak1600-armv4.S", perlasm_scheme => "void" }, diff --git a/Configurations/50-win-onecore.conf b/Configurations/50-win-onecore.conf index c71d364..51cb381 100644 --- a/Configurations/50-win-onecore.conf +++ b/Configurations/50-win-onecore.conf @@ -4,7 +4,7 @@ # Mobile[?] Windows editions. It's a set up "umbrella" libraries that # export subset of Win32 API that are common to all Windows 10 devices. # -# OneCore Configuration temporarly dedicated for console applications +# OneCore Configuration temporarly dedicated for console applications # due to disabled event logging, which is incompatible with one core. # Error messages are provided via standard error only. # TODO: extend error handling to use ETW based eventing diff --git a/Configurations/README b/Configurations/README index 1e4d545..a106f8c 100644 --- a/Configurations/README +++ b/Configurations/README @@ -118,7 +118,7 @@ In each table entry, the following keys are significant: ''. This is very rarely needed. shared_extension => File name extension used for shared - libraries. + libraries. obj_extension => File name extension used for object files. On unix, this defaults to ".o" (NOTE: this is here for future use, it's not diff --git a/Configurations/README.design b/Configurations/README.design index 43b6a66..75c19a6 100644 --- a/Configurations/README.design +++ b/Configurations/README.design @@ -87,7 +87,7 @@ depends on the library 'libssl' to function properly. LIBS=../libcrypto SOURCE[../libcrypto]=aes.c evp.c cversion.c DEPEND[cversion.o]=buildinf.h - + GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(CFLAGS)" "$(PLATFORM)" DEPEND[buildinf.h]=../Makefile DEPEND[../util/mkbuildinf.pl]=../util/Foo.pm @@ -102,7 +102,7 @@ show that duplicate information isn't an issue. This build.info file informs us that 'libcrypto' is built from a few source files, 'crypto/aes.c', 'crypto/evp.c' and 'crypto/cversion.c'. It also shows us that building the object file inferred from -'crypto/cversion.c' depends on 'crypto/buildinf.h'. Finally, it +'crypto/cversion.c' depends on 'crypto/buildinf.h'. Finally, it also shows the possibility to declare how some files are generated using some script, in this case a perl script, and how such scripts can be declared to depend on other files, in this case a perl module. @@ -150,7 +150,7 @@ information comes down to this: SOURCE[libssl]=ssl/tls.c INCLUDE[libssl]=include DEPEND[libssl]=libcrypto - + PROGRAMS=apps/openssl SOURCE[apps/openssl]=apps/openssl.c INCLUDE[apps/openssl]=. include @@ -165,7 +165,7 @@ information comes down to this: SOURCE[engines/ossltest]=engines/e_ossltest.c DEPEND[engines/ossltest]=libcrypto.a INCLUDE[engines/ossltest]=include - + GENERATE[crypto/buildinf.h]=util/mkbuildinf.pl "$(CC) $(CFLAGS)" "$(PLATFORM)" DEPEND[crypto/buildinf.h]=Makefile DEPEND[util/mkbuildinf.pl]=util/Foo.pm diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl index a0bc93d..ae365c6 100644 --- a/Configurations/descrip.mms.tmpl +++ b/Configurations/descrip.mms.tmpl @@ -1105,7 +1105,7 @@ EOF # object modules already. my $main = $_->{attrs}->{has_main} ? '/INCLUDE=main' : ''; - push @lines, + push @lines, "\@ IF nomain THEN WRITE OPT_FILE \"$x/LIB$main\"", "\@ IF .NOT. nomain THEN WRITE OPT_FILE \"$x/LIB\"" } diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 90f469f..36286f6 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -800,7 +800,7 @@ errors: include/internal/o_str.h include/internal/err.h include/internal/sslconf.h ); - our @cryptoskipheaders = ( @sslheaders, + our @cryptoskipheaders = ( @sslheaders, qw( include/openssl/conf_api.h include/openssl/ebcdic.h include/openssl/opensslconf.h diff --git a/NOTES.ANDROID b/NOTES.ANDROID index eeacdad..8645977 100644 --- a/NOTES.ANDROID +++ b/NOTES.ANDROID @@ -26,7 +26,7 @@ you need to set ANDROID_NDK_HOME environment to point at NDK directory as /some/where/android-ndk-. Both variables are significant at both configuration and compilation times. NDK customarily supports multiple - Android API levels, e.g. android-14, android-21, etc. By default latest + Android API levels, e.g. android-14, android-21, etc. By default latest one available is chosen. If you need to target older platform, pass additional -D__ANDROID_API__=N to Configure. N is numeric value of the target platform version. For example, to compile for ICS on ARM with diff --git a/NOTES.DJGPP b/NOTES.DJGPP index bbe63dc..d43d4e8 100644 --- a/NOTES.DJGPP +++ b/NOTES.DJGPP @@ -1,5 +1,5 @@ - + INSTALLATION ON THE DOS PLATFORM WITH DJGPP ------------------------------------------- @@ -29,7 +29,7 @@ running "./Configure" with appropriate arguments: ./Configure no-threads --prefix=/dev/env/DJDIR DJGPP - + And finally fire up "make". You may run out of DPMI selectors when running in a DOS box under Windows. If so, just close the BASH shell, go back to Windows, and restart BASH. Then run "make" again. diff --git a/NOTES.VMS b/NOTES.VMS index 98def06..d6a336f 100644 --- a/NOTES.VMS +++ b/NOTES.VMS @@ -42,7 +42,7 @@ for now is to rename the OpenSSL source directory, as follows (please adjust for the actual source directory name you have): - $ rename openssl-1^.1^.0.DIR openssl-1_1_0.DIR + $ rename openssl-1^.1^.0.DIR openssl-1_1_0.DIR About MMS and DCL diff --git a/apps/ct_log_list.cnf b/apps/ct_log_list.cnf index 650aa22..e643cfd 100644 --- a/apps/ct_log_list.cnf +++ b/apps/ct_log_list.cnf @@ -2,8 +2,8 @@ # that are to be trusted. # Google's list of logs can be found here: -# www.certificate-transparency.org/known-logs +# www.certificate-transparency.org/known-logs # A Python program to convert the log list to OpenSSL's format can be # found here: -# https://github.com/google/certificate-transparency/blob/master/python/utilities/log_list/print_log_list.py +# https://github.com/google/certificate-transparency/blob/master/python/utilities/log_list/print_log_list.py # Use the "--openssl_output" flag. diff --git a/apps/demoSRP/srp_verifier.txt b/apps/demoSRP/srp_verifier.txt index ccae629..c2d5c60 100644 --- a/apps/demoSRP/srp_verifier.txt +++ b/apps/demoSRP/srp_verifier.txt @@ -3,4 +3,4 @@ # records starting with a I followed by the g and N values and the id. # The exact values ... you have to dig this out from the source of srp.c # or srp_vfy.c -# The last value of an I is used as the default group for new users. +# The last value of an I is used as the default group for new users. diff --git a/apps/dh1024.pem b/apps/dh1024.pem index f1a5e18..813e8a4 100644 --- a/apps/dh1024.pem +++ b/apps/dh1024.pem @@ -4,7 +4,7 @@ Sgh5jjQE3e+VGbPNOkMbMCsKbfJfFDdP4TVtbVHCReSFtXZiXn7G9ExC6aY37WsL /1y29Aa37e44a/taiZ+lrp8kEXxLH+ZJKGZR7OZTgf//////////AgEC -----END DH PARAMETERS----- -These are the 1024-bit DH parameters from "Internet Key Exchange +These are the 1024-bit DH parameters from "Internet Key Exchange Protocol Version 2 (IKEv2)": https://tools.ietf.org/html/rfc5996 See https://tools.ietf.org/html/rfc2412 for how they were generated. diff --git a/apps/dh2048.pem b/apps/dh2048.pem index e899f2e..288a209 100644 --- a/apps/dh2048.pem +++ b/apps/dh2048.pem @@ -7,8 +7,8 @@ fDKQXkYuNs474553LBgOhgObJ4Oi7Aeij7XFXfBvTFLJ3ivL9pVYFxg5lUl86pVq 5RXSJhiY+gUQFXKOWoqsqmj//////////wIBAg== -----END DH PARAMETERS----- -These are the 2048-bit DH parameters from "More Modular Exponential -(MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)": +These are the 2048-bit DH parameters from "More Modular Exponential +(MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)": https://tools.ietf.org/html/rfc3526 See https://tools.ietf.org/html/rfc2412 for how they were generated. diff --git a/apps/dh4096.pem b/apps/dh4096.pem index adada2b..08560e1 100644 --- a/apps/dh4096.pem +++ b/apps/dh4096.pem @@ -12,8 +12,8 @@ ARpyPBKnh+bXiHGaEL26WyaZwycYavTiPBqUaDS2FQvaJYPpyirUTOjbu8LbBN6O HNAGkSfVsFqpk7TqmI2P3cGG/7fckKbAj030Nck0BjGZ//////////8CAQI= -----END DH PARAMETERS----- -These are the 4096-bit DH parameters from "More Modular Exponential -(MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)": +These are the 4096-bit DH parameters from "More Modular Exponential +(MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)": https://tools.ietf.org/html/rfc3526 See https://tools.ietf.org/html/rfc2412 for how they were generated. diff --git a/apps/openssl-vms.cnf b/apps/openssl-vms.cnf index 178a0b0..e64cc9f 100644 --- a/apps/openssl-vms.cnf +++ b/apps/openssl-vms.cnf @@ -18,7 +18,7 @@ oid_section = new_oids # To use this configuration file with the "-extfile" option of the # "openssl x509" utility, name here the section containing the # X.509v3 extensions to use: -# extensions = +# extensions = # (Alternatively, use a configuration file that has only # X.509v3 extensions in its main [= default] section.) @@ -115,7 +115,7 @@ x509_extensions = v3_ca # The extensions to add to the self signed cert # input_password = secret # output_password = secret -# This sets a mask for permitted string types. There are several options. +# This sets a mask for permitted string types. There are several options. # default: PrintableString, T61String, BMPString. # pkix : PrintableString, BMPString (PKIX recommendation before 2004) # utf8only: only UTF8Strings (PKIX recommendation after 2004). diff --git a/apps/openssl.cnf b/apps/openssl.cnf index 6df2878..4acca4b 100644 --- a/apps/openssl.cnf +++ b/apps/openssl.cnf @@ -18,7 +18,7 @@ oid_section = new_oids # To use this configuration file with the "-extfile" option of the # "openssl x509" utility, name here the section containing the # X.509v3 extensions to use: -# extensions = +# extensions = # (Alternatively, use a configuration file that has only # X.509v3 extensions in its main [= default] section.) @@ -115,7 +115,7 @@ x509_extensions = v3_ca # The extensions to add to the self signed cert # input_password = secret # output_password = secret -# This sets a mask for permitted string types. There are several options. +# This sets a mask for permitted string types. There are several options. # default: PrintableString, T61String, BMPString. # pkix : PrintableString, BMPString (PKIX recommendation before 2004) # utf8only: only UTF8Strings (PKIX recommendation after 2004). diff --git a/apps/s_client.c b/apps/s_client.c index 872496c..2a8313d 100644 --- a/apps/s_client.c +++ b/apps/s_client.c @@ -2360,7 +2360,7 @@ int s_client_main(int argc, char **argv) BIO_push(fbio, sbio); BIO_printf(fbio, "CONNECT %s HTTP/1.0\r\n", connectstr); - /* + /* * Workaround for broken proxies which would otherwise close * the connection when entering tunnel mode (eg Squid 2.6) */ @@ -3549,7 +3549,7 @@ static char *base64encode (const void *buf, size_t len) i = EVP_EncodeBlock((unsigned char *)out, buf, len); assert(i <= (int)outl); if (i < 0) - *out = '\0'; + *out = '\0'; return out; } diff --git a/config b/config index 27d2f61..0755961 100755 --- a/config +++ b/config @@ -19,7 +19,7 @@ THERE=`dirname $0` # pick up any command line args to config for i do -case "$i" in +case "$i" in -d*) options=$options" --debug";; -t*) DRYRUN="true" VERBOSE="true";; -v*) VERBOSE="true";; @@ -59,7 +59,7 @@ __CNF_LDLIBS= # Now test for ISC and SCO, since it is has a braindamaged uname. # -# We need to work around FreeBSD 1.1.5.1 +# We need to work around FreeBSD 1.1.5.1 ( XREL=`uname -X 2>/dev/null | grep "^Release" | awk '{print $3}'` if [ "x$XREL" != "x" ]; then @@ -363,7 +363,7 @@ esac # At this point we gone through all the one's # we know of: Punt -echo "${MACHINE}-whatever-${SYSTEM}" +echo "${MACHINE}-whatever-${SYSTEM}" exit 0 ) 2>/dev/null | ( @@ -433,7 +433,7 @@ fi CCVER=${CCVER:-0} -# read the output of the embedded GuessOS +# read the output of the embedded GuessOS read GUESSOS echo Operating system: $GUESSOS @@ -732,7 +732,7 @@ case "$GUESSOS" in *-*-[Uu]nix[Ww]are7) if [ "$CC" = "gcc" ]; then OUT="unixware-7-gcc" ; options="$options no-sse2" - else + else OUT="unixware-7" ; options="$options no-sse2" __CNF_CPPFLAGS="$__CNF_CPPFLAGS -D__i386__" fi @@ -793,7 +793,7 @@ case "$GUESSOS" in OUT="aix64-gcc" fi elif [ $OBJECT_MODE -eq 64 ]; then - echo 'Your $OBJECT_MODE was found to be set to 64' + echo 'Your $OBJECT_MODE was found to be set to 64' OUT="aix64-cc" else OUT="aix-cc" @@ -897,7 +897,7 @@ if [ ".$PERL" = . ] ; then exit 1 fi -# run Configure to check to see if we need to specify the +# run Configure to check to see if we need to specify the # compiler for the platform ... in which case we add it on # the end ... otherwise we leave it off @@ -920,7 +920,7 @@ if [ $? = "0" ]; then __CNF_LDFLAGS="'$__CNF_LDFLAGS'" \ __CNF_LDLIBS="'$__CNF_LDLIBS'" \ $PERL $THERE/Configure $OUT $options - fi + fi if [ "$DRYRUN" = "false" ]; then # eval to make sure quoted options, possibly with spaces inside, # are treated right diff --git a/crypto/bn/asm/ia64.S b/crypto/bn/asm/ia64.S index f5312a3..0d64e98 100644 --- a/crypto/bn/asm/ia64.S +++ b/crypto/bn/asm/ia64.S @@ -47,7 +47,7 @@ // on Itanium2! What to do? Reschedule loops for Itanium2? But then // Itanium would exhibit anti-scalability. So I've chosen to reschedule // for worst latency for every instruction aiming for best *all-round* -// performance. +// performance. // Q. How much faster does it get? // A. Here is the output from 'openssl speed rsa dsa' for vanilla @@ -471,7 +471,7 @@ bn_mul_add_words: .global bn_sqr_words# .proc bn_sqr_words# .align 64 -.skip 32 // makes the loop body aligned at 64-byte boundary +.skip 32 // makes the loop body aligned at 64-byte boundary bn_sqr_words: .prologue .save ar.pfs,r2 diff --git a/crypto/bn/asm/sparcv8plus.S b/crypto/bn/asm/sparcv8plus.S index df41904..696dc7b 100644 --- a/crypto/bn/asm/sparcv8plus.S +++ b/crypto/bn/asm/sparcv8plus.S @@ -154,9 +154,9 @@ .register %g2,#scratch .register %g3,#scratch # define FRAME_SIZE -192 -#else +#else # define FRAME_SIZE -96 -#endif +#endif /* * GNU assembler can't stand stuw:-( */ diff --git a/crypto/bn/bn_ctx.c b/crypto/bn/bn_ctx.c index 61348bd..5106878 100644 --- a/crypto/bn/bn_ctx.c +++ b/crypto/bn/bn_ctx.c @@ -256,7 +256,7 @@ static int BN_STACK_push(BN_STACK *st, unsigned int idx) unsigned int newsize = st->size ? (st->size * 3 / 2) : BN_CTX_START_FRAMES; unsigned int *newitems; - + if ((newitems = OPENSSL_malloc(sizeof(*newitems) * newsize)) == NULL) { BNerr(BN_F_BN_STACK_PUSH, ERR_R_MALLOC_FAILURE); return 0; @@ -310,7 +310,7 @@ static BIGNUM *BN_POOL_get(BN_POOL *p, int flag) /* Full; allocate a new pool item and link it in. */ if (p->used == p->size) { BN_POOL_ITEM *item; - + if ((item = OPENSSL_malloc(sizeof(*item))) == NULL) { BNerr(BN_F_BN_POOL_GET, ERR_R_MALLOC_FAILURE); return NULL; diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c index 9018358..6e5e65e 100644 --- a/crypto/cryptlib.c +++ b/crypto/cryptlib.c @@ -352,9 +352,9 @@ void OPENSSL_showfatal(const char *fmta, ...) /* * TODO: (For non GUI and no std error cases) - * Add event logging feature here. + * Add event logging feature here. */ - + # if !defined(NDEBUG) /* * We are in a situation where we tried to report a critical @@ -393,7 +393,7 @@ void OPENSSL_showfatal(const char *fmta, ...) # endif # else MessageBox(NULL, buf, _T("OpenSSL: FATAL"), MB_OK | MB_ICONERROR); -# endif +# endif } #else void OPENSSL_showfatal(const char *fmta, ...) diff --git a/crypto/des/asm/des_enc.m4 b/crypto/des/asm/des_enc.m4 index 9a17fac..c6661fe 100644 --- a/crypto/des/asm/des_enc.m4 +++ b/crypto/des/asm/des_enc.m4 @@ -311,7 +311,7 @@ $4: sll out1, 28, out1 ! rotate xor $1, local1, $1 ! 1 finished, local1 now sbox 7 - ld [global2+local2], local2 ! 2 + ld [global2+local2], local2 ! 2 srl out0, 24, local1 ! 7 or out1, local0, out1 ! rotate @@ -1390,7 +1390,7 @@ DES_ncbc_encrypt: add %o7,global1,global1 sub global1,.PIC.DES_SPtrans-.des_and,out2 - cmp in5, 0 ! enc + cmp in5, 0 ! enc be .ncbc.dec STPTR in4, IVEC diff --git a/crypto/ec/curve448/point_448.h b/crypto/ec/curve448/point_448.h index 02b287c..1708b57 100644 --- a/crypto/ec/curve448/point_448.h +++ b/crypto/ec/curve448/point_448.h @@ -116,7 +116,7 @@ void curve448_scalar_encode(unsigned char ser[C448_SCALAR_BYTES], /* * Add two scalars. |a|, |b| and |out| may alias each other. - * + * * a (in): One scalar. * b (in): Another scalar. * out (out): a+b. @@ -135,7 +135,7 @@ void curve448_scalar_sub(curve448_scalar_t out, /* * Multiply two scalars. |a|, |b| and |out| may alias each other. - * + * * a (in): One scalar. * b (in): Another scalar. * out (out): a*b. @@ -145,7 +145,7 @@ void curve448_scalar_mul(curve448_scalar_t out, /* * Halve a scalar. |a| and |out| may alias each other. -* +* * a (in): A scalar. * out (out): a/2. */ @@ -154,7 +154,7 @@ void curve448_scalar_halve(curve448_scalar_t out, const curve448_scalar_t a); /* * Copy a scalar. The scalars may alias each other, in which case this * function does nothing. - * + * * a (in): A scalar. * out (out): Will become a copy of a. */ @@ -183,7 +183,7 @@ static ossl_inline void curve448_point_copy(curve448_point_t a, * * a (in): A point. * b (in): Another point. - * + * * Returns: * C448_TRUE: The points are equal. * C448_FALSE: The points are not equal. @@ -243,7 +243,7 @@ void curve448_point_mul_by_ratio_and_encode_like_x448( /* * RFC 7748 Diffie-Hellman base point scalarmul. This function uses a different * (non-Decaf) encoding. - * + * * out (out): The scaled point base*scalar * scalar (in): The scalar to multiply by. */ @@ -273,7 +273,7 @@ void curve448_precomputed_scalarmul(curve448_point_t scaled, * base2 (in): A second point to be scaled. * scalar2 (in) A second scalar to multiply by. * - * Warning: This function takes variable time, and may leak the scalars used. + * Warning: This function takes variable time, and may leak the scalars used. * It is designed for signature verification. */ void curve448_base_double_scalarmul_non_secret(curve448_point_t combo, diff --git a/crypto/engine/README b/crypto/engine/README index 0050b9e..c7a5696 100644 --- a/crypto/engine/README +++ b/crypto/engine/README @@ -26,7 +26,7 @@ algorithm/mode pair are; EVP_EncryptInit(&ctx, cipher, key, iv); [ ... use EVP_EncryptUpdate() and EVP_EncryptFinal() ...] -(ii) indirectly; +(ii) indirectly; OpenSSL_add_all_ciphers(); cipher = EVP_get_cipherbyname("des_cbc"); EVP_EncryptInit(&ctx, cipher, key, iv); diff --git a/crypto/engine/eng_lib.c b/crypto/engine/eng_lib.c index a266a70..be893fe 100644 --- a/crypto/engine/eng_lib.c +++ b/crypto/engine/eng_lib.c @@ -124,7 +124,7 @@ static int int_cleanup_check(int create) static ENGINE_CLEANUP_ITEM *int_cleanup_item(ENGINE_CLEANUP_CB *cb) { ENGINE_CLEANUP_ITEM *item; - + if ((item = OPENSSL_malloc(sizeof(*item))) == NULL) { ENGINEerr(ENGINE_F_INT_CLEANUP_ITEM, ERR_R_MALLOC_FAILURE); return NULL; diff --git a/crypto/evp/e_aes.c b/crypto/evp/e_aes.c index 8dc5235..3d2068c 100644 --- a/crypto/evp/e_aes.c +++ b/crypto/evp/e_aes.c @@ -3081,7 +3081,7 @@ static int aes_gcm_tls_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, if (out != in || len < (EVP_GCM_TLS_EXPLICIT_IV_LEN + EVP_GCM_TLS_TAG_LEN)) return -1; - + /* * Check for too many keys as per FIPS 140-2 IG A.5 "Key/IV Pair Uniqueness * Requirements from SP 800-38D". The requirements is for one party to the diff --git a/crypto/objects/objects.txt b/crypto/objects/objects.txt index 851e31e..fc32606 100644 --- a/crypto/objects/objects.txt +++ b/crypto/objects/objects.txt @@ -17,7 +17,7 @@ iso 0 9797 3 4 : GMAC : gmac # There are no OIDs for these yet... : KMAC128 : kmac128 : KMAC256 : kmac256 - + # HMAC OIDs identified-organization 6 1 5 5 8 1 1 : HMAC-MD5 : hmac-md5 identified-organization 6 1 5 5 8 1 2 : HMAC-SHA1 : hmac-sha1 diff --git a/crypto/pem/pem_info.c b/crypto/pem/pem_info.c index bfe1744..ad1dba3 100644 --- a/crypto/pem/pem_info.c +++ b/crypto/pem/pem_info.c @@ -297,7 +297,7 @@ int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, goto err; } - /* Create the right magic header stuff */ + /* Create the right magic header stuff */ buf[0] = '\0'; PEM_proc_type(buf, PEM_TYPE_ENCRYPTED); PEM_dek_info(buf, objstr, EVP_CIPHER_iv_length(enc), diff --git a/crypto/srp/srp_vfy.c b/crypto/srp/srp_vfy.c index d69e330..79e76c9 100644 --- a/crypto/srp/srp_vfy.c +++ b/crypto/srp/srp_vfy.c @@ -187,7 +187,7 @@ void SRP_user_pwd_free(SRP_user_pwd *user_pwd) SRP_user_pwd *SRP_user_pwd_new(void) { SRP_user_pwd *ret; - + if ((ret = OPENSSL_malloc(sizeof(*ret))) == NULL) { /* SRPerr(SRP_F_SRP_USER_PWD_NEW, ERR_R_MALLOC_FAILURE); */ /*ckerr_ignore*/ return NULL; diff --git a/demos/bio/accept.cnf b/demos/bio/accept.cnf index eb69658..cb0cefb 100644 --- a/demos/bio/accept.cnf +++ b/demos/bio/accept.cnf @@ -6,7 +6,7 @@ Port = 4433 # Only support 3 curves Curves = P-521:P-384:P-256 # Restricted signature algorithms -SignatureAlgorithms = RSA+SHA512:ECDSA+SHA512 +SignatureAlgorithms = RSA+SHA512:ECDSA+SHA512 Certificate=server.pem PrivateKey=server.pem ChainCAFile=root.pem diff --git a/demos/bio/connect.cnf b/demos/bio/connect.cnf index 4dee03c..ab76440 100644 --- a/demos/bio/connect.cnf +++ b/demos/bio/connect.cnf @@ -6,4 +6,4 @@ Connect = localhost:4433 # Only support 3 curves Curves = P-521:P-384:P-256 # Restricted signature algorithms -SignatureAlgorithms = RSA+SHA512:ECDSA+SHA512 +SignatureAlgorithms = RSA+SHA512:ECDSA+SHA512 diff --git a/demos/bio/descrip.mms b/demos/bio/descrip.mms index 8e127b0..d49725f 100644 --- a/demos/bio/descrip.mms +++ b/demos/bio/descrip.mms @@ -23,7 +23,7 @@ SHARED = TRUE @ ! # Because we use an option file, we need to redefine this -.obj.exe : +.obj.exe : $(LINK) $(LINKFLAGS) $<,OPT:/OPT all : client-arg.exe client-conf.exe saccept.exe sconnect.exe - diff --git a/demos/certs/README b/demos/certs/README index 126663a..fde832e 100644 --- a/demos/certs/README +++ b/demos/certs/README @@ -8,7 +8,7 @@ automatically using scripts. Example creates a root CA, an intermediate CA signed by the root and several certificates signed by the intermediate CA. The script then creates an empty index.txt file and adds entries for the -certificates and generates a CRL. Then one certificate is revoked and a +certificates and generates a CRL. Then one certificate is revoked and a second CRL generated. The script ocsprun.sh runs the test responder on port 8888 covering the diff --git a/demos/certs/apps/mkxcerts.sh b/demos/certs/apps/mkxcerts.sh index 0f88a48..ebe1920 100644 --- a/demos/certs/apps/mkxcerts.sh +++ b/demos/certs/apps/mkxcerts.sh @@ -13,7 +13,7 @@ CN="OpenSSL Test RSA SHA-512 cert" $OPENSSL req \ -config apps.cnf -extensions usr_cert -x509 -nodes \ -keyout tsha512.pem -out tsha512.pem -new -days 3650 -sha512 -# Create EC parameters +# Create EC parameters $OPENSSL ecparam -name P-256 -out ecp256.pem $OPENSSL ecparam -name P-384 -out ecp384.pem diff --git a/demos/certs/mkcerts.sh b/demos/certs/mkcerts.sh index 18daa6b..2d14a95 100644 --- a/demos/certs/mkcerts.sh +++ b/demos/certs/mkcerts.sh @@ -42,7 +42,7 @@ CN="Test OCSP Responder Cert" $OPENSSL req -config ca.cnf -nodes \ $OPENSSL x509 -req -in respreq.pem -CA intca.pem -CAkey intkey.pem -days 3600 \ -extfile ca.cnf -extensions ocsp_cert -CAcreateserial -out resp.pem -# Example creating a PKCS#3 DH certificate. +# Example creating a PKCS#3 DH certificate. # First DH parameters diff --git a/doc/HOWTO/certificates.txt b/doc/HOWTO/certificates.txt index c2efdca..cfd2bda 100644 --- a/doc/HOWTO/certificates.txt +++ b/doc/HOWTO/certificates.txt @@ -106,5 +106,5 @@ some applications, you don't even have to do that. By now, you have your certificate and your private key and can start using applications that depend on it. --- +-- Richard Levitte diff --git a/doc/HOWTO/proxy_certificates.txt b/doc/HOWTO/proxy_certificates.txt index 18b3e03..2936cd6 100644 --- a/doc/HOWTO/proxy_certificates.txt +++ b/doc/HOWTO/proxy_certificates.txt @@ -315,5 +315,5 @@ certificates checked properly, using the code above: SSL_CTX_set_cert_verify_callback(s_ctx, my_X509_verify_cert, &needed_rights); --- +-- Richard Levitte diff --git a/doc/fingerprints.txt b/doc/fingerprints.txt index 2cb74ae..51e76c8 100644 --- a/doc/fingerprints.txt +++ b/doc/fingerprints.txt @@ -18,7 +18,7 @@ uid Richard Levitte uid Richard Levitte uid Richard Levitte -pub 2048R/0E604491 2013-04-30 +pub 2048R/0E604491 2013-04-30 Key fingerprint = 8657 ABB2 60F0 56B1 E519 0839 D9C4 D26D 0E60 4491 uid Matt Caswell uid Matt Caswell diff --git a/doc/man1/ca.pod b/doc/man1/ca.pod index cf6fe7e..d1e5a99 100644 --- a/doc/man1/ca.pod +++ b/doc/man1/ca.pod @@ -475,7 +475,7 @@ the B<-selfsign> command line option. Note that it is valid in some circumstances for certificates to be created without any subject. In the case where there are multiple certificates without -subjects this does not count as a duplicate. +subjects this does not count as a duplicate. =item B diff --git a/doc/man1/s_server.pod b/doc/man1/s_server.pod index c4f1bba..b15ccdf 100644 --- a/doc/man1/s_server.pod +++ b/doc/man1/s_server.pod @@ -834,7 +834,7 @@ unknown cipher suites a client says it supports. L, L, L, L L, L, -L +L =head1 HISTORY diff --git a/doc/man3/EVP_PKEY_asn1_get_count.pod b/doc/man3/EVP_PKEY_asn1_get_count.pod index 24e14fe..19d1e36 100644 --- a/doc/man3/EVP_PKEY_asn1_get_count.pod +++ b/doc/man3/EVP_PKEY_asn1_get_count.pod @@ -48,7 +48,7 @@ engine that implements it. EVP_PKEY_asn1_get0_info() returns the public key ID, base public key ID (both NIDs), any flags, the method description and PEM type string -associated with the public key ASN.1 method B<*ameth>. +associated with the public key ASN.1 method B<*ameth>. EVP_PKEY_asn1_count(), EVP_PKEY_asn1_get0(), EVP_PKEY_asn1_find() and EVP_PKEY_asn1_find_str() are not thread safe, but as long as all diff --git a/doc/man3/HMAC.pod b/doc/man3/HMAC.pod index 5c851c1..10a7250 100644 --- a/doc/man3/HMAC.pod +++ b/doc/man3/HMAC.pod @@ -91,7 +91,7 @@ because reuse of an existing key with a different digest is not supported. HMAC_Init() initializes a B structure to use the hash function B and the key B which is B bytes -long. +long. HMAC_Update() can be called repeatedly with chunks of the message to be authenticated (B bytes at B). diff --git a/doc/man3/SSL_CTX_set0_CA_list.pod b/doc/man3/SSL_CTX_set0_CA_list.pod index 6760158..64e8117 100644 --- a/doc/man3/SSL_CTX_set0_CA_list.pod +++ b/doc/man3/SSL_CTX_set0_CA_list.pod @@ -101,7 +101,7 @@ set CA names using the "client CA list" functions and then get them using the used on the server side then the "client CA list" functions take precedence. Typically, on the server side, the "client CA list " functions should be used in preference. As noted above in most cases it is not necessary to set CA names on -the client side. +the client side. SSL_CTX_set0_CA_list() sets the list of CAs to be sent to the peer to B. Ownership of B is transferred to B and diff --git a/doc/man3/SSL_CTX_set_ctlog_list_file.pod b/doc/man3/SSL_CTX_set_ctlog_list_file.pod index 98ddb97..d99659b 100644 --- a/doc/man3/SSL_CTX_set_ctlog_list_file.pod +++ b/doc/man3/SSL_CTX_set_ctlog_list_file.pod @@ -24,7 +24,7 @@ See L for the file format. =head1 NOTES These functions will not clear the existing CT log list - it will be appended -to. To replace the existing list, use L first. +to. To replace the existing list, use L first. If an error occurs whilst parsing a particular log entry in the file, that log entry will be skipped. diff --git a/doc/man3/SSL_read_early_data.pod b/doc/man3/SSL_read_early_data.pod index e87c145..91a79bd 100644 --- a/doc/man3/SSL_read_early_data.pod +++ b/doc/man3/SSL_read_early_data.pod @@ -93,7 +93,7 @@ the server. A client uses the function SSL_write_early_data() to send early data. This function is similar to the L function, but with the following differences. See L for information on how to write bytes to -the underlying connection, and how to handle any errors that may arise. This +the underlying connection, and how to handle any errors that may arise. This page describes the differences between SSL_write_early_data() and L. diff --git a/include/internal/thread_once.h b/include/internal/thread_once.h index dcb0c68..033e970 100644 --- a/include/internal/thread_once.h +++ b/include/internal/thread_once.h @@ -13,7 +13,7 @@ * DEFINE_RUN_ONCE: Define an initialiser function that should be run exactly * once. It takes no arguments and returns and int result (1 for success or * 0 for failure). Typical usage might be: - * + * * DEFINE_RUN_ONCE(myinitfunc) * { * do_some_initialisation(); @@ -45,7 +45,7 @@ * exactly once. This function will be declared as static within the file. It * takes no arguments and returns and int result (1 for success or 0 for * failure). Typical usage might be: - * + * * DEFINE_RUN_ONCE_STATIC(myinitfunc) * { * do_some_initialisation(); @@ -74,10 +74,10 @@ * is used only one of the primary or the alternative initialiser function will * ever be called - and that function will be called exactly once. Definitition * of an alternative initialiser function MUST occur AFTER the definition of the - * primiary initialiser function. - * + * primiary initialiser function. + * * Typical usage might be: - * + * * DEFINE_RUN_ONCE_STATIC(myinitfunc) * { * do_some_initialisation(); @@ -86,7 +86,7 @@ * * return 0; * } - * + * * DEFINE_RUN_ONCE_STATIC_ALT(myaltinitfunc, myinitfunc) * { * do_some_alternative_initialisation(); diff --git a/include/internal/tsan_assist.h b/include/internal/tsan_assist.h index b166465..5bf30c4 100644 --- a/include/internal/tsan_assist.h +++ b/include/internal/tsan_assist.h @@ -6,7 +6,7 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ - + /* * Contemporary compilers implement lock-free atomic memory access * primitives that facilitate writing "thread-opportunistic" or even real diff --git a/test/README.external b/test/README.external index f836b1b..2f5423c 100644 --- a/test/README.external +++ b/test/README.external @@ -145,7 +145,7 @@ To update the commit for any of the above test suites: - Enter subdirectory and pull from the repository (use a specific branch/tag if required): - $ cd + $ cd $ git pull origin master - Go to root directory, there should be a new git status: diff --git a/test/build.info b/test/build.info index c2be761..0ac2fa7 100644 --- a/test/build.info +++ b/test/build.info @@ -343,7 +343,7 @@ IF[{- !$disabled{tests} -}] SOURCE[drbg_cavs_test]=drbg_cavs_test.c drbg_cavs_data_ctr.c \ drbg_cavs_data_hash.c drbg_cavs_data_hmac.c - + INCLUDE[drbg_cavs_test]=../include . .. DEPEND[drbg_cavs_test]=../libcrypto libtestutil.a diff --git a/test/rdrand_sanitytest.c b/test/rdrand_sanitytest.c index 0f2b70e..851e14c 100644 --- a/test/rdrand_sanitytest.c +++ b/test/rdrand_sanitytest.c @@ -1,6 +1,6 @@ /* * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. - * + * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at @@ -24,7 +24,7 @@ void OPENSSL_cpuid_setup(void); extern unsigned int OPENSSL_ia32cap_P[4]; -static int sanity_check_bytes(size_t (*rng)(unsigned char *, size_t), +static int sanity_check_bytes(size_t (*rng)(unsigned char *, size_t), int rounds, int min_failures, int max_retries, int max_zero_words) { int testresult = 0; diff --git a/test/servername_test.c b/test/servername_test.c index 0614d4b..f84c187 100644 --- a/test/servername_test.c +++ b/test/servername_test.c @@ -203,7 +203,7 @@ static int server_setup_sni(void) /* SNI should have been cleared during handshake */ goto end; } - + testresult = 1; end: SSL_free(serverssl); diff --git a/test/testutil/main.c b/test/testutil/main.c index 9dc651b..8b30ac6 100644 --- a/test/testutil/main.c +++ b/test/testutil/main.c @@ -54,7 +54,7 @@ int main(int argc, char *argv[]) ret = pulldown_test_framework(ret); test_close_streams(); - return ret; + return ret; } const char *test_get_program_name(void) diff --git a/test/tls13secretstest.c b/test/tls13secretstest.c index e079b8d..490e7c9 100644 --- a/test/tls13secretstest.c +++ b/test/tls13secretstest.c @@ -18,7 +18,7 @@ /* * Based on the test vectors availble in: - * https://tools.ietf.org/html/draft-ietf-tls-tls13-vectors-06 + * https://tools.ietf.org/html/draft-ietf-tls-tls13-vectors-06 */ static unsigned char hs_start_hash[] = { diff --git a/util/indent.pro b/util/indent.pro index 443bddb..3d3f747 100644 --- a/util/indent.pro +++ b/util/indent.pro @@ -26,7 +26,7 @@ -nprs -npsl -nsc --ppi1 +-ppi1 -saf -sai -saw diff --git a/util/openssl-format-source b/util/openssl-format-source index 5f63a70..dc6a65d 100755 --- a/util/openssl-format-source +++ b/util/openssl-format-source @@ -8,18 +8,18 @@ # https://www.openssl.org/source/license.html # -# openssl-format-source +# openssl-format-source # - format source tree according to OpenSSL coding style using indent # # usage: # openssl-format-source [-v] [-n] [file|directory] ... # # note: the indent options assume GNU indent v2.2.10 which was released -# Feb-2009 so if you have an older indent the options may not +# Feb-2009 so if you have an older indent the options may not # match what is expected # # any marked block comment blocks have to be moved to align manually after -# the reformatting has been completed as marking a block causes indent to +# the reformatting has been completed as marking a block causes indent to # not move it at all ... # @@ -55,17 +55,17 @@ fi # Extra arguments; for adding the comment-formatting INDENT_ARGS="" -for i +for i do if [ "$STOPARGS" != "true" ]; then case $i in --) STOPARGS="true"; continue;; -n) DONT="true"; continue;; - -v) VERBOSE="true"; + -v) VERBOSE="true"; echo "INDENT_PROFILE=$INDENT_PROFILE"; continue;; - -c) COMMENTS="true"; - INDENT_ARGS="-fc1 -fca -cdb -sc"; + -c) COMMENTS="true"; + INDENT_ARGS="-fc1 -fca -cdb -sc"; continue;; -nc) COMMENTS="true"; continue;; @@ -76,14 +76,14 @@ do if [ -d "$i" ]; then LIST=`find "$i" -name '*.[ch]' -print` - else + else if [ ! -f "$i" ]; then echo "$0: source file not found: $i" >&2 exit 1 fi LIST="$i" fi - + for j in $LIST do # ignore symlinks - we only ever process the base file - so if we @@ -98,7 +98,7 @@ do tmp=$(mktemp /tmp/indent.XXXXXX) trap 'rm -f "$tmp"' HUP INT TERM EXIT - case `basename $j` in + case `basename $j` in # the list of files that indent is unable to handle correctly # that we simply leave alone for manual formatting now obj_dat.h|aes_core.c|aes_x86core.c|ecp_nistz256.c) @@ -108,11 +108,11 @@ do if [ "$COMMENTS" = "true" ]; then # we have to mark single line comments as /*- ...*/ to stop indent # messing with them, run expand then indent as usual but with the - # the process-comments options and then undo that marking, and then + # the process-comments options and then undo that marking, and then # finally re-run indent without process-comments so the marked-to- - # be-ignored comments we did automatically end up getting moved - # into the right position within the code as indent leaves marked - # comments entirely untouched - we appear to have no way to avoid + # be-ignored comments we did automatically end up getting moved + # into the right position within the code as indent leaves marked + # comments entirely untouched - we appear to have no way to avoid # the double processing and get the desired output cat "$j" | \ expand | \ diff --git a/util/perl/TLSProxy/Alert.pm b/util/perl/TLSProxy/Alert.pm index e4cff59..f63eeac 100644 --- a/util/perl/TLSProxy/Alert.pm +++ b/util/perl/TLSProxy/Alert.pm @@ -16,7 +16,7 @@ sub new $encrypted, $level, $description) = @_; - + my $self = { server => $server, encrypted => $encrypted, diff --git a/util/perl/TLSProxy/Message.pm b/util/perl/TLSProxy/Message.pm index 7180369..bc5561c 100644 --- a/util/perl/TLSProxy/Message.pm +++ b/util/perl/TLSProxy/Message.pm @@ -238,7 +238,7 @@ sub get_messages $startoffset = $recoffset; $recoffset += 4; $payload = ""; - + if ($recoffset <= $record->decrypt_len) { #Some payload data is present in this record if ($record->decrypt_len - $recoffset >= $messlen) { @@ -410,7 +410,7 @@ sub new $records, $startoffset, $message_frag_lens) = @_; - + my $self = { server => $server, data => $data, diff --git a/util/perl/TLSProxy/Record.pm b/util/perl/TLSProxy/Record.pm index 18ee98d..183aa05 100644 --- a/util/perl/TLSProxy/Record.pm +++ b/util/perl/TLSProxy/Record.pm @@ -173,7 +173,7 @@ sub new $decrypt_len, $data, $decrypt_data) = @_; - + my $self = { flight => $flight, content_type => $content_type, diff --git a/util/perl/TLSProxy/ServerHello.pm b/util/perl/TLSProxy/ServerHello.pm index 14eb813..ab7f2c8 100644 --- a/util/perl/TLSProxy/ServerHello.pm +++ b/util/perl/TLSProxy/ServerHello.pm @@ -25,7 +25,7 @@ sub new $records, $startoffset, $message_frag_lens) = @_; - + my $self = $class->SUPER::new( $server, TLSProxy::Message::MT_SERVER_HELLO, @@ -78,7 +78,7 @@ sub parse my $extension_data; if ($extensions_len != 0) { $extension_data = substr($self->data, $ptr); - + if (length($extension_data) != $extensions_len) { die "Invalid extension length\n"; } diff --git a/util/perl/TLSProxy/ServerKeyExchange.pm b/util/perl/TLSProxy/ServerKeyExchange.pm index 11768a9..e694c15 100644 --- a/util/perl/TLSProxy/ServerKeyExchange.pm +++ b/util/perl/TLSProxy/ServerKeyExchange.pm @@ -20,7 +20,7 @@ sub new $records, $startoffset, $message_frag_lens) = @_; - + my $self = $class->SUPER::new( $server, TLSProxy::Message::MT_SERVER_KEY_EXCHANGE, From levitte at openssl.org Tue Feb 5 15:29:30 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 05 Feb 2019 15:29:30 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549380570.377989.9252.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 3b09585bd67c41445be4be8a84233e5d9a699264 (commit) from 00f2bafec16b5981cc35c721dae35533c918cb0d (commit) - Log ----------------------------------------------------------------- commit 3b09585bd67c41445be4be8a84233e5d9a699264 Author: Sam Roberts Date: Thu Jan 31 10:31:35 2019 -0800 Remove unnecessary trailing whitespace Trim trailing whitespace. It doesn't match OpenSSL coding standards, AFAICT, and it can cause problems with git tooling. Trailing whitespace remains in test data and external source. Backport-of: https://github.com/openssl/openssl/pull/8092 Reviewed-by: Matthias St. Pierre Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8134) ----------------------------------------------------------------------- Summary of changes: CONTRIBUTING | 2 +- Configurations/00-base-templates.conf | 2 +- Configurations/50-win-onecore.conf | 2 +- Configurations/README | 4 ++-- Configurations/README.design | 8 ++++---- Configurations/descrip.mms.tmpl | 2 +- LICENSE | 14 +++++++------- NOTES.ANDROID | 2 +- NOTES.DJGPP | 4 ++-- NOTES.VMS | 2 +- apps/ct_log_list.cnf | 4 ++-- apps/demoSRP/srp_verifier.txt | 2 +- apps/dh1024.pem | 2 +- apps/dh2048.pem | 4 ++-- apps/dh4096.pem | 4 ++-- apps/openssl-vms.cnf | 4 ++-- apps/openssl.cnf | 4 ++-- config | 16 ++++++++-------- crypto/bn/asm/ia64.S | 4 ++-- crypto/bn/asm/sparcv8plus.S | 4 ++-- crypto/bn/bn_ctx.c | 4 ++-- crypto/cryptlib.c | 6 +++--- crypto/des/asm/des_enc.m4 | 4 ++-- crypto/ec/curve448/point_448.h | 14 +++++++------- crypto/engine/README | 2 +- crypto/engine/eng_lib.c | 2 +- crypto/pem/pem_info.c | 2 +- crypto/srp/srp_vfy.c | 2 +- demos/bio/accept.cnf | 2 +- demos/bio/connect.cnf | 2 +- demos/bio/descrip.mms | 2 +- demos/certs/README | 2 +- demos/certs/apps/mkxcerts.sh | 2 +- demos/certs/mkcerts.sh | 2 +- doc/HOWTO/certificates.txt | 2 +- doc/HOWTO/proxy_certificates.txt | 2 +- doc/fingerprints.txt | 2 +- doc/man1/ca.pod | 2 +- doc/man1/s_server.pod | 2 +- doc/man3/EVP_PKEY_asn1_get_count.pod | 2 +- doc/man3/HMAC.pod | 2 +- doc/man3/SSL_CTX_set0_CA_list.pod | 2 +- doc/man3/SSL_CTX_set_ctlog_list_file.pod | 2 +- doc/man3/SSL_read_early_data.pod | 2 +- include/internal/tsan_assist.h | 2 +- test/README.external | 2 +- test/rdrand_sanitytest.c | 4 ++-- test/servername_test.c | 2 +- test/testutil/main.c | 2 +- test/tls13secretstest.c | 2 +- util/indent.pro | 2 +- util/local_shlib.com.in | 2 +- util/openssl-format-source | 28 ++++++++++++++-------------- util/perl/TLSProxy/Alert.pm | 2 +- util/perl/TLSProxy/Message.pm | 4 ++-- util/perl/TLSProxy/Record.pm | 2 +- util/perl/TLSProxy/ServerHello.pm | 4 ++-- util/perl/TLSProxy/ServerKeyExchange.pm | 2 +- 58 files changed, 109 insertions(+), 109 deletions(-) diff --git a/CONTRIBUTING b/CONTRIBUTING index c0eed39..5d71776 100644 --- a/CONTRIBUTING +++ b/CONTRIBUTING @@ -57,7 +57,7 @@ guidelines: 7. For user visible changes (API changes, behaviour changes, ...), consider adding a note in CHANGES. This could be a summarising description of the change, and could explain the grander details. - Have a look through existing entries for inspiration. + Have a look through existing entries for inspiration. Please note that this is NOT simply a copy of git-log oneliners. Also note that security fixes get an entry in CHANGES. This file helps users get more in depth information of what comes diff --git a/Configurations/00-base-templates.conf b/Configurations/00-base-templates.conf index 8555ba1..5fd995c 100644 --- a/Configurations/00-base-templates.conf +++ b/Configurations/00-base-templates.conf @@ -306,7 +306,7 @@ my %targets=( sha1_asm_src => "sha1-armv4-large.S sha256-armv4.S sha512-armv4.S", modes_asm_src => "ghash-armv4.S ghashv8-armx.S", chacha_asm_src => "chacha-armv4.S", - poly1305_asm_src=> "poly1305-armv4.S", + poly1305_asm_src=> "poly1305-armv4.S", keccak1600_asm_src => "keccak1600-armv4.S", perlasm_scheme => "void" }, diff --git a/Configurations/50-win-onecore.conf b/Configurations/50-win-onecore.conf index c71d364..51cb381 100644 --- a/Configurations/50-win-onecore.conf +++ b/Configurations/50-win-onecore.conf @@ -4,7 +4,7 @@ # Mobile[?] Windows editions. It's a set up "umbrella" libraries that # export subset of Win32 API that are common to all Windows 10 devices. # -# OneCore Configuration temporarly dedicated for console applications +# OneCore Configuration temporarly dedicated for console applications # due to disabled event logging, which is incompatible with one core. # Error messages are provided via standard error only. # TODO: extend error handling to use ETW based eventing diff --git a/Configurations/README b/Configurations/README index d2d893d..0b85628 100644 --- a/Configurations/README +++ b/Configurations/README @@ -118,7 +118,7 @@ In each table entry, the following keys are significant: ''. This is very rarely needed. shared_extension => File name extension used for shared - libraries. + libraries. obj_extension => File name extension used for object files. On unix, this defaults to ".o" (NOTE: this is here for future use, it's not @@ -518,7 +518,7 @@ clash with those generated by Configure, it's possible to tell it not to generate them with the use of OVERRIDES, for example: SOURCE[libfoo]=foo.c bar.c - + OVERRIDES=bar.o BEGINRAW[Makefile(unix)] bar.o: bar.c diff --git a/Configurations/README.design b/Configurations/README.design index cae08fc..5fb2737 100644 --- a/Configurations/README.design +++ b/Configurations/README.design @@ -86,7 +86,7 @@ depends on the library 'libssl' to function properly. LIBS=../libcrypto SOURCE[../libcrypto]=aes.c evp.c cversion.c DEPEND[cversion.o]=buildinf.h - + GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(CFLAGS)" "$(PLATFORM)" DEPEND[buildinf.h]=../Makefile DEPEND[../util/mkbuildinf.pl]=../util/Foo.pm @@ -101,7 +101,7 @@ show that duplicate information isn't an issue. This build.info file informs us that 'libcrypto' is built from a few source files, 'crypto/aes.c', 'crypto/evp.c' and 'crypto/cversion.c'. It also shows us that building the object file inferred from -'crypto/cversion.c' depends on 'crypto/buildinf.h'. Finally, it +'crypto/cversion.c' depends on 'crypto/buildinf.h'. Finally, it also shows the possibility to declare how some files are generated using some script, in this case a perl script, and how such scripts can be declared to depend on other files, in this case a perl module. @@ -152,7 +152,7 @@ information comes down to this: SOURCE[libssl]=ssl/tls.c INCLUDE[libssl]=include DEPEND[libssl]=libcrypto - + PROGRAMS=apps/openssl SOURCE[apps/openssl]=apps/openssl.c INCLUDE[apps/openssl]=. include @@ -167,7 +167,7 @@ information comes down to this: SOURCE[engines/ossltest]=engines/e_ossltest.c DEPEND[engines/ossltest]=libcrypto.a INCLUDE[engines/ossltest]=include - + GENERATE[crypto/buildinf.h]=util/mkbuildinf.pl "$(CC) $(CFLAGS)" "$(PLATFORM)" DEPEND[crypto/buildinf.h]=Makefile DEPEND[util/mkbuildinf.pl]=util/Foo.pm diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl index 1f2776a..0ccd5f0 100644 --- a/Configurations/descrip.mms.tmpl +++ b/Configurations/descrip.mms.tmpl @@ -1046,7 +1046,7 @@ EOF push @lines, "\@ WRITE OPT_FILE \"$x/SHARE\""; } elsif ($x =~ m|\.OLB$|) { (my $l = $x) =~ s/\W/_/g; - push @lines, + push @lines, "\@ IF nomain THEN WRITE OPT_FILE \"$x/LIB\$(INCLUDE_MAIN_$l)\"", "\@ IF .NOT. nomain THEN WRITE OPT_FILE \"$x/LIB\"" } diff --git a/LICENSE b/LICENSE index e953f59..0511f2e 100644 --- a/LICENSE +++ b/LICENSE @@ -17,7 +17,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in @@ -72,21 +72,21 @@ * This package is an SSL implementation written * by Eric Young (eay at cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. - * + * * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to. The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code. The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh at cryptsoft.com). - * + * * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -101,10 +101,10 @@ * Eric Young (eay at cryptsoft.com)" * The word 'cryptographic' can be left out if the rouines from the library * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from + * 4. If you include any Windows specific code (or a derivative thereof) from * the apps directory (application code) you must include an acknowledgement: * "This product includes software written by Tim Hudson (tjh at cryptsoft.com)" - * + * * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -116,7 +116,7 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * + * * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed. i.e. this code cannot simply be * copied and put under another distribution licence diff --git a/NOTES.ANDROID b/NOTES.ANDROID index eeacdad..8645977 100644 --- a/NOTES.ANDROID +++ b/NOTES.ANDROID @@ -26,7 +26,7 @@ you need to set ANDROID_NDK_HOME environment to point at NDK directory as /some/where/android-ndk-. Both variables are significant at both configuration and compilation times. NDK customarily supports multiple - Android API levels, e.g. android-14, android-21, etc. By default latest + Android API levels, e.g. android-14, android-21, etc. By default latest one available is chosen. If you need to target older platform, pass additional -D__ANDROID_API__=N to Configure. N is numeric value of the target platform version. For example, to compile for ICS on ARM with diff --git a/NOTES.DJGPP b/NOTES.DJGPP index bbe63dc..d43d4e8 100644 --- a/NOTES.DJGPP +++ b/NOTES.DJGPP @@ -1,5 +1,5 @@ - + INSTALLATION ON THE DOS PLATFORM WITH DJGPP ------------------------------------------- @@ -29,7 +29,7 @@ running "./Configure" with appropriate arguments: ./Configure no-threads --prefix=/dev/env/DJDIR DJGPP - + And finally fire up "make". You may run out of DPMI selectors when running in a DOS box under Windows. If so, just close the BASH shell, go back to Windows, and restart BASH. Then run "make" again. diff --git a/NOTES.VMS b/NOTES.VMS index 98def06..d6a336f 100644 --- a/NOTES.VMS +++ b/NOTES.VMS @@ -42,7 +42,7 @@ for now is to rename the OpenSSL source directory, as follows (please adjust for the actual source directory name you have): - $ rename openssl-1^.1^.0.DIR openssl-1_1_0.DIR + $ rename openssl-1^.1^.0.DIR openssl-1_1_0.DIR About MMS and DCL diff --git a/apps/ct_log_list.cnf b/apps/ct_log_list.cnf index 650aa22..e643cfd 100644 --- a/apps/ct_log_list.cnf +++ b/apps/ct_log_list.cnf @@ -2,8 +2,8 @@ # that are to be trusted. # Google's list of logs can be found here: -# www.certificate-transparency.org/known-logs +# www.certificate-transparency.org/known-logs # A Python program to convert the log list to OpenSSL's format can be # found here: -# https://github.com/google/certificate-transparency/blob/master/python/utilities/log_list/print_log_list.py +# https://github.com/google/certificate-transparency/blob/master/python/utilities/log_list/print_log_list.py # Use the "--openssl_output" flag. diff --git a/apps/demoSRP/srp_verifier.txt b/apps/demoSRP/srp_verifier.txt index ccae629..c2d5c60 100644 --- a/apps/demoSRP/srp_verifier.txt +++ b/apps/demoSRP/srp_verifier.txt @@ -3,4 +3,4 @@ # records starting with a I followed by the g and N values and the id. # The exact values ... you have to dig this out from the source of srp.c # or srp_vfy.c -# The last value of an I is used as the default group for new users. +# The last value of an I is used as the default group for new users. diff --git a/apps/dh1024.pem b/apps/dh1024.pem index f1a5e18..813e8a4 100644 --- a/apps/dh1024.pem +++ b/apps/dh1024.pem @@ -4,7 +4,7 @@ Sgh5jjQE3e+VGbPNOkMbMCsKbfJfFDdP4TVtbVHCReSFtXZiXn7G9ExC6aY37WsL /1y29Aa37e44a/taiZ+lrp8kEXxLH+ZJKGZR7OZTgf//////////AgEC -----END DH PARAMETERS----- -These are the 1024-bit DH parameters from "Internet Key Exchange +These are the 1024-bit DH parameters from "Internet Key Exchange Protocol Version 2 (IKEv2)": https://tools.ietf.org/html/rfc5996 See https://tools.ietf.org/html/rfc2412 for how they were generated. diff --git a/apps/dh2048.pem b/apps/dh2048.pem index e899f2e..288a209 100644 --- a/apps/dh2048.pem +++ b/apps/dh2048.pem @@ -7,8 +7,8 @@ fDKQXkYuNs474553LBgOhgObJ4Oi7Aeij7XFXfBvTFLJ3ivL9pVYFxg5lUl86pVq 5RXSJhiY+gUQFXKOWoqsqmj//////////wIBAg== -----END DH PARAMETERS----- -These are the 2048-bit DH parameters from "More Modular Exponential -(MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)": +These are the 2048-bit DH parameters from "More Modular Exponential +(MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)": https://tools.ietf.org/html/rfc3526 See https://tools.ietf.org/html/rfc2412 for how they were generated. diff --git a/apps/dh4096.pem b/apps/dh4096.pem index adada2b..08560e1 100644 --- a/apps/dh4096.pem +++ b/apps/dh4096.pem @@ -12,8 +12,8 @@ ARpyPBKnh+bXiHGaEL26WyaZwycYavTiPBqUaDS2FQvaJYPpyirUTOjbu8LbBN6O HNAGkSfVsFqpk7TqmI2P3cGG/7fckKbAj030Nck0BjGZ//////////8CAQI= -----END DH PARAMETERS----- -These are the 4096-bit DH parameters from "More Modular Exponential -(MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)": +These are the 4096-bit DH parameters from "More Modular Exponential +(MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)": https://tools.ietf.org/html/rfc3526 See https://tools.ietf.org/html/rfc2412 for how they were generated. diff --git a/apps/openssl-vms.cnf b/apps/openssl-vms.cnf index 178a0b0..e64cc9f 100644 --- a/apps/openssl-vms.cnf +++ b/apps/openssl-vms.cnf @@ -18,7 +18,7 @@ oid_section = new_oids # To use this configuration file with the "-extfile" option of the # "openssl x509" utility, name here the section containing the # X.509v3 extensions to use: -# extensions = +# extensions = # (Alternatively, use a configuration file that has only # X.509v3 extensions in its main [= default] section.) @@ -115,7 +115,7 @@ x509_extensions = v3_ca # The extensions to add to the self signed cert # input_password = secret # output_password = secret -# This sets a mask for permitted string types. There are several options. +# This sets a mask for permitted string types. There are several options. # default: PrintableString, T61String, BMPString. # pkix : PrintableString, BMPString (PKIX recommendation before 2004) # utf8only: only UTF8Strings (PKIX recommendation after 2004). diff --git a/apps/openssl.cnf b/apps/openssl.cnf index 6df2878..4acca4b 100644 --- a/apps/openssl.cnf +++ b/apps/openssl.cnf @@ -18,7 +18,7 @@ oid_section = new_oids # To use this configuration file with the "-extfile" option of the # "openssl x509" utility, name here the section containing the # X.509v3 extensions to use: -# extensions = +# extensions = # (Alternatively, use a configuration file that has only # X.509v3 extensions in its main [= default] section.) @@ -115,7 +115,7 @@ x509_extensions = v3_ca # The extensions to add to the self signed cert # input_password = secret # output_password = secret -# This sets a mask for permitted string types. There are several options. +# This sets a mask for permitted string types. There are several options. # default: PrintableString, T61String, BMPString. # pkix : PrintableString, BMPString (PKIX recommendation before 2004) # utf8only: only UTF8Strings (PKIX recommendation after 2004). diff --git a/config b/config index b8adf34..35e70f8 100755 --- a/config +++ b/config @@ -19,7 +19,7 @@ THERE=`dirname $0` # pick up any command line args to config for i do -case "$i" in +case "$i" in -d*) options=$options" --debug";; -t*) DRYRUN="true" VERBOSE="true";; -v*) VERBOSE="true";; @@ -59,7 +59,7 @@ __CNF_LDLIBS= # Now test for ISC and SCO, since it is has a braindamaged uname. # -# We need to work around FreeBSD 1.1.5.1 +# We need to work around FreeBSD 1.1.5.1 ( XREL=`uname -X 2>/dev/null | grep "^Release" | awk '{print $3}'` if [ "x$XREL" != "x" ]; then @@ -363,7 +363,7 @@ esac # At this point we gone through all the one's # we know of: Punt -echo "${MACHINE}-whatever-${SYSTEM}" +echo "${MACHINE}-whatever-${SYSTEM}" exit 0 ) 2>/dev/null | ( @@ -433,7 +433,7 @@ fi CCVER=${CCVER:-0} -# read the output of the embedded GuessOS +# read the output of the embedded GuessOS read GUESSOS echo Operating system: $GUESSOS @@ -732,7 +732,7 @@ case "$GUESSOS" in *-*-[Uu]nix[Ww]are7) if [ "$CC" = "gcc" ]; then OUT="unixware-7-gcc" ; options="$options no-sse2" - else + else OUT="unixware-7" ; options="$options no-sse2" __CNF_CPPFLAGS="$__CNF_CPPFLAGS -D__i386__" fi @@ -793,7 +793,7 @@ case "$GUESSOS" in OUT="aix64-gcc" fi elif [ $OBJECT_MODE -eq 64 ]; then - echo 'Your $OBJECT_MODE was found to be set to 64' + echo 'Your $OBJECT_MODE was found to be set to 64' OUT="aix64-cc" else OUT="aix-cc" @@ -897,7 +897,7 @@ if [ ".$PERL" = . ] ; then exit 1 fi -# run Configure to check to see if we need to specify the +# run Configure to check to see if we need to specify the # compiler for the platform ... in which case we add it on # the end ... otherwise we leave it off @@ -920,7 +920,7 @@ if [ $? = "0" ]; then __CNF_LDFLAGS="'$__CNF_LDFLAGS'" \ __CNF_LDLIBS="'$__CNF_LDLIBS'" \ $PERL $THERE/Configure $OUT $options - fi + fi if [ "$DRYRUN" = "false" ]; then # eval to make sure quoted options, possibly with spaces inside, # are treated right diff --git a/crypto/bn/asm/ia64.S b/crypto/bn/asm/ia64.S index d235c45..f7e5491 100644 --- a/crypto/bn/asm/ia64.S +++ b/crypto/bn/asm/ia64.S @@ -48,7 +48,7 @@ // on Itanium2! What to do? Reschedule loops for Itanium2? But then // Itanium would exhibit anti-scalability. So I've chosen to reschedule // for worst latency for every instruction aiming for best *all-round* -// performance. +// performance. // Q. How much faster does it get? // A. Here is the output from 'openssl speed rsa dsa' for vanilla @@ -472,7 +472,7 @@ bn_mul_add_words: .global bn_sqr_words# .proc bn_sqr_words# .align 64 -.skip 32 // makes the loop body aligned at 64-byte boundary +.skip 32 // makes the loop body aligned at 64-byte boundary bn_sqr_words: .prologue .save ar.pfs,r2 diff --git a/crypto/bn/asm/sparcv8plus.S b/crypto/bn/asm/sparcv8plus.S index fe4699b..831cf21 100644 --- a/crypto/bn/asm/sparcv8plus.S +++ b/crypto/bn/asm/sparcv8plus.S @@ -154,9 +154,9 @@ .register %g2,#scratch .register %g3,#scratch # define FRAME_SIZE -192 -#else +#else # define FRAME_SIZE -96 -#endif +#endif /* * GNU assembler can't stand stuw:-( */ diff --git a/crypto/bn/bn_ctx.c b/crypto/bn/bn_ctx.c index aa08b31..228c853 100644 --- a/crypto/bn/bn_ctx.c +++ b/crypto/bn/bn_ctx.c @@ -256,7 +256,7 @@ static int BN_STACK_push(BN_STACK *st, unsigned int idx) unsigned int newsize = st->size ? (st->size * 3 / 2) : BN_CTX_START_FRAMES; unsigned int *newitems; - + if ((newitems = OPENSSL_malloc(sizeof(*newitems) * newsize)) == NULL) { BNerr(BN_F_BN_STACK_PUSH, ERR_R_MALLOC_FAILURE); return 0; @@ -310,7 +310,7 @@ static BIGNUM *BN_POOL_get(BN_POOL *p, int flag) /* Full; allocate a new pool item and link it in. */ if (p->used == p->size) { BN_POOL_ITEM *item; - + if ((item = OPENSSL_malloc(sizeof(*item))) == NULL) { BNerr(BN_F_BN_POOL_GET, ERR_R_MALLOC_FAILURE); return NULL; diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c index fb314e3..06fff16 100644 --- a/crypto/cryptlib.c +++ b/crypto/cryptlib.c @@ -352,9 +352,9 @@ void OPENSSL_showfatal(const char *fmta, ...) /* * TODO: (For non GUI and no std error cases) - * Add event logging feature here. + * Add event logging feature here. */ - + # if !defined(NDEBUG) /* * We are in a situation where we tried to report a critical @@ -393,7 +393,7 @@ void OPENSSL_showfatal(const char *fmta, ...) # endif # else MessageBox(NULL, buf, _T("OpenSSL: FATAL"), MB_OK | MB_ICONERROR); -# endif +# endif } #else void OPENSSL_showfatal(const char *fmta, ...) diff --git a/crypto/des/asm/des_enc.m4 b/crypto/des/asm/des_enc.m4 index 4a0d156..dad14d4 100644 --- a/crypto/des/asm/des_enc.m4 +++ b/crypto/des/asm/des_enc.m4 @@ -313,7 +313,7 @@ $4: sll out1, 28, out1 ! rotate xor $1, local1, $1 ! 1 finished, local1 now sbox 7 - ld [global2+local2], local2 ! 2 + ld [global2+local2], local2 ! 2 srl out0, 24, local1 ! 7 or out1, local0, out1 ! rotate @@ -1392,7 +1392,7 @@ DES_ncbc_encrypt: add %o7,global1,global1 sub global1,.PIC.DES_SPtrans-.des_and,out2 - cmp in5, 0 ! enc + cmp in5, 0 ! enc be .ncbc.dec STPTR in4, IVEC diff --git a/crypto/ec/curve448/point_448.h b/crypto/ec/curve448/point_448.h index 0ef3b87..9dabb89 100644 --- a/crypto/ec/curve448/point_448.h +++ b/crypto/ec/curve448/point_448.h @@ -116,7 +116,7 @@ void curve448_scalar_encode(unsigned char ser[C448_SCALAR_BYTES], /* * Add two scalars. |a|, |b| and |out| may alias each other. - * + * * a (in): One scalar. * b (in): Another scalar. * out (out): a+b. @@ -135,7 +135,7 @@ void curve448_scalar_sub(curve448_scalar_t out, /* * Multiply two scalars. |a|, |b| and |out| may alias each other. - * + * * a (in): One scalar. * b (in): Another scalar. * out (out): a*b. @@ -145,7 +145,7 @@ void curve448_scalar_mul(curve448_scalar_t out, /* * Halve a scalar. |a| and |out| may alias each other. -* +* * a (in): A scalar. * out (out): a/2. */ @@ -154,7 +154,7 @@ void curve448_scalar_halve(curve448_scalar_t out, const curve448_scalar_t a); /* * Copy a scalar. The scalars may alias each other, in which case this * function does nothing. - * + * * a (in): A scalar. * out (out): Will become a copy of a. */ @@ -183,7 +183,7 @@ static ossl_inline void curve448_point_copy(curve448_point_t a, * * a (in): A point. * b (in): Another point. - * + * * Returns: * C448_TRUE: The points are equal. * C448_FALSE: The points are not equal. @@ -243,7 +243,7 @@ void curve448_point_mul_by_ratio_and_encode_like_x448( /* * RFC 7748 Diffie-Hellman base point scalarmul. This function uses a different * (non-Decaf) encoding. - * + * * out (out): The scaled point base*scalar * scalar (in): The scalar to multiply by. */ @@ -273,7 +273,7 @@ void curve448_precomputed_scalarmul(curve448_point_t scaled, * base2 (in): A second point to be scaled. * scalar2 (in) A second scalar to multiply by. * - * Warning: This function takes variable time, and may leak the scalars used. + * Warning: This function takes variable time, and may leak the scalars used. * It is designed for signature verification. */ void curve448_base_double_scalarmul_non_secret(curve448_point_t combo, diff --git a/crypto/engine/README b/crypto/engine/README index 0050b9e..c7a5696 100644 --- a/crypto/engine/README +++ b/crypto/engine/README @@ -26,7 +26,7 @@ algorithm/mode pair are; EVP_EncryptInit(&ctx, cipher, key, iv); [ ... use EVP_EncryptUpdate() and EVP_EncryptFinal() ...] -(ii) indirectly; +(ii) indirectly; OpenSSL_add_all_ciphers(); cipher = EVP_get_cipherbyname("des_cbc"); EVP_EncryptInit(&ctx, cipher, key, iv); diff --git a/crypto/engine/eng_lib.c b/crypto/engine/eng_lib.c index 3ef3aae..9e00f2d 100644 --- a/crypto/engine/eng_lib.c +++ b/crypto/engine/eng_lib.c @@ -124,7 +124,7 @@ static int int_cleanup_check(int create) static ENGINE_CLEANUP_ITEM *int_cleanup_item(ENGINE_CLEANUP_CB *cb) { ENGINE_CLEANUP_ITEM *item; - + if ((item = OPENSSL_malloc(sizeof(*item))) == NULL) { ENGINEerr(ENGINE_F_INT_CLEANUP_ITEM, ERR_R_MALLOC_FAILURE); return NULL; diff --git a/crypto/pem/pem_info.c b/crypto/pem/pem_info.c index a45fe83..25dd55e 100644 --- a/crypto/pem/pem_info.c +++ b/crypto/pem/pem_info.c @@ -297,7 +297,7 @@ int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, goto err; } - /* Create the right magic header stuff */ + /* Create the right magic header stuff */ buf[0] = '\0'; PEM_proc_type(buf, PEM_TYPE_ENCRYPTED); PEM_dek_info(buf, objstr, EVP_CIPHER_iv_length(enc), diff --git a/crypto/srp/srp_vfy.c b/crypto/srp/srp_vfy.c index f47f6d9..f9988ab 100644 --- a/crypto/srp/srp_vfy.c +++ b/crypto/srp/srp_vfy.c @@ -187,7 +187,7 @@ void SRP_user_pwd_free(SRP_user_pwd *user_pwd) static SRP_user_pwd *SRP_user_pwd_new(void) { SRP_user_pwd *ret; - + if ((ret = OPENSSL_malloc(sizeof(*ret))) == NULL) { /* SRPerr(SRP_F_SRP_USER_PWD_NEW, ERR_R_MALLOC_FAILURE); */ /*ckerr_ignore*/ return NULL; diff --git a/demos/bio/accept.cnf b/demos/bio/accept.cnf index eb69658..cb0cefb 100644 --- a/demos/bio/accept.cnf +++ b/demos/bio/accept.cnf @@ -6,7 +6,7 @@ Port = 4433 # Only support 3 curves Curves = P-521:P-384:P-256 # Restricted signature algorithms -SignatureAlgorithms = RSA+SHA512:ECDSA+SHA512 +SignatureAlgorithms = RSA+SHA512:ECDSA+SHA512 Certificate=server.pem PrivateKey=server.pem ChainCAFile=root.pem diff --git a/demos/bio/connect.cnf b/demos/bio/connect.cnf index 4dee03c..ab76440 100644 --- a/demos/bio/connect.cnf +++ b/demos/bio/connect.cnf @@ -6,4 +6,4 @@ Connect = localhost:4433 # Only support 3 curves Curves = P-521:P-384:P-256 # Restricted signature algorithms -SignatureAlgorithms = RSA+SHA512:ECDSA+SHA512 +SignatureAlgorithms = RSA+SHA512:ECDSA+SHA512 diff --git a/demos/bio/descrip.mms b/demos/bio/descrip.mms index 8e127b0..d49725f 100644 --- a/demos/bio/descrip.mms +++ b/demos/bio/descrip.mms @@ -23,7 +23,7 @@ SHARED = TRUE @ ! # Because we use an option file, we need to redefine this -.obj.exe : +.obj.exe : $(LINK) $(LINKFLAGS) $<,OPT:/OPT all : client-arg.exe client-conf.exe saccept.exe sconnect.exe - diff --git a/demos/certs/README b/demos/certs/README index 126663a..fde832e 100644 --- a/demos/certs/README +++ b/demos/certs/README @@ -8,7 +8,7 @@ automatically using scripts. Example creates a root CA, an intermediate CA signed by the root and several certificates signed by the intermediate CA. The script then creates an empty index.txt file and adds entries for the -certificates and generates a CRL. Then one certificate is revoked and a +certificates and generates a CRL. Then one certificate is revoked and a second CRL generated. The script ocsprun.sh runs the test responder on port 8888 covering the diff --git a/demos/certs/apps/mkxcerts.sh b/demos/certs/apps/mkxcerts.sh index 0f88a48..ebe1920 100644 --- a/demos/certs/apps/mkxcerts.sh +++ b/demos/certs/apps/mkxcerts.sh @@ -13,7 +13,7 @@ CN="OpenSSL Test RSA SHA-512 cert" $OPENSSL req \ -config apps.cnf -extensions usr_cert -x509 -nodes \ -keyout tsha512.pem -out tsha512.pem -new -days 3650 -sha512 -# Create EC parameters +# Create EC parameters $OPENSSL ecparam -name P-256 -out ecp256.pem $OPENSSL ecparam -name P-384 -out ecp384.pem diff --git a/demos/certs/mkcerts.sh b/demos/certs/mkcerts.sh index 18daa6b..2d14a95 100644 --- a/demos/certs/mkcerts.sh +++ b/demos/certs/mkcerts.sh @@ -42,7 +42,7 @@ CN="Test OCSP Responder Cert" $OPENSSL req -config ca.cnf -nodes \ $OPENSSL x509 -req -in respreq.pem -CA intca.pem -CAkey intkey.pem -days 3600 \ -extfile ca.cnf -extensions ocsp_cert -CAcreateserial -out resp.pem -# Example creating a PKCS#3 DH certificate. +# Example creating a PKCS#3 DH certificate. # First DH parameters diff --git a/doc/HOWTO/certificates.txt b/doc/HOWTO/certificates.txt index c2efdca..cfd2bda 100644 --- a/doc/HOWTO/certificates.txt +++ b/doc/HOWTO/certificates.txt @@ -106,5 +106,5 @@ some applications, you don't even have to do that. By now, you have your certificate and your private key and can start using applications that depend on it. --- +-- Richard Levitte diff --git a/doc/HOWTO/proxy_certificates.txt b/doc/HOWTO/proxy_certificates.txt index 18b3e03..2936cd6 100644 --- a/doc/HOWTO/proxy_certificates.txt +++ b/doc/HOWTO/proxy_certificates.txt @@ -315,5 +315,5 @@ certificates checked properly, using the code above: SSL_CTX_set_cert_verify_callback(s_ctx, my_X509_verify_cert, &needed_rights); --- +-- Richard Levitte diff --git a/doc/fingerprints.txt b/doc/fingerprints.txt index 2cb74ae..51e76c8 100644 --- a/doc/fingerprints.txt +++ b/doc/fingerprints.txt @@ -18,7 +18,7 @@ uid Richard Levitte uid Richard Levitte uid Richard Levitte -pub 2048R/0E604491 2013-04-30 +pub 2048R/0E604491 2013-04-30 Key fingerprint = 8657 ABB2 60F0 56B1 E519 0839 D9C4 D26D 0E60 4491 uid Matt Caswell uid Matt Caswell diff --git a/doc/man1/ca.pod b/doc/man1/ca.pod index 1b5f657..98f5dba 100644 --- a/doc/man1/ca.pod +++ b/doc/man1/ca.pod @@ -475,7 +475,7 @@ the B<-selfsign> command line option. Note that it is valid in some circumstances for certificates to be created without any subject. In the case where there are multiple certificates without -subjects this does not count as a duplicate. +subjects this does not count as a duplicate. =item B diff --git a/doc/man1/s_server.pod b/doc/man1/s_server.pod index 254bfe7..471afb9 100644 --- a/doc/man1/s_server.pod +++ b/doc/man1/s_server.pod @@ -834,7 +834,7 @@ unknown cipher suites a client says it supports. L, L, L, L L, L, -L +L =head1 HISTORY diff --git a/doc/man3/EVP_PKEY_asn1_get_count.pod b/doc/man3/EVP_PKEY_asn1_get_count.pod index 9ad2dae..a190f5e 100644 --- a/doc/man3/EVP_PKEY_asn1_get_count.pod +++ b/doc/man3/EVP_PKEY_asn1_get_count.pod @@ -48,7 +48,7 @@ engine that implements it. EVP_PKEY_asn1_get0_info() returns the public key ID, base public key ID (both NIDs), any flags, the method description and PEM type string -associated with the public key ASN.1 method B<*ameth>. +associated with the public key ASN.1 method B<*ameth>. EVP_PKEY_asn1_count(), EVP_PKEY_asn1_get0(), EVP_PKEY_asn1_find() and EVP_PKEY_asn1_find_str() are not thread safe, but as long as all diff --git a/doc/man3/HMAC.pod b/doc/man3/HMAC.pod index c480a9c..0e8439b 100644 --- a/doc/man3/HMAC.pod +++ b/doc/man3/HMAC.pod @@ -91,7 +91,7 @@ because reuse of an existing key with a different digest is not supported. HMAC_Init() initializes a B structure to use the hash function B and the key B which is B bytes -long. +long. HMAC_Update() can be called repeatedly with chunks of the message to be authenticated (B bytes at B). diff --git a/doc/man3/SSL_CTX_set0_CA_list.pod b/doc/man3/SSL_CTX_set0_CA_list.pod index d7ed897..e68e260 100644 --- a/doc/man3/SSL_CTX_set0_CA_list.pod +++ b/doc/man3/SSL_CTX_set0_CA_list.pod @@ -101,7 +101,7 @@ set CA names using the "client CA list" functions and then get them using the used on the server side then the "client CA list" functions take precedence. Typically, on the server side, the "client CA list " functions should be used in preference. As noted above in most cases it is not necessary to set CA names on -the client side. +the client side. SSL_CTX_set0_CA_list() sets the list of CAs to be sent to the peer to B. Ownership of B is transferred to B and diff --git a/doc/man3/SSL_CTX_set_ctlog_list_file.pod b/doc/man3/SSL_CTX_set_ctlog_list_file.pod index 275831a..296f6e2 100644 --- a/doc/man3/SSL_CTX_set_ctlog_list_file.pod +++ b/doc/man3/SSL_CTX_set_ctlog_list_file.pod @@ -24,7 +24,7 @@ See L for the file format. =head1 NOTES These functions will not clear the existing CT log list - it will be appended -to. To replace the existing list, use L first. +to. To replace the existing list, use L first. If an error occurs whilst parsing a particular log entry in the file, that log entry will be skipped. diff --git a/doc/man3/SSL_read_early_data.pod b/doc/man3/SSL_read_early_data.pod index 9769aa7..85de887 100644 --- a/doc/man3/SSL_read_early_data.pod +++ b/doc/man3/SSL_read_early_data.pod @@ -93,7 +93,7 @@ the server. A client uses the function SSL_write_early_data() to send early data. This function is similar to the L function, but with the following differences. See L for information on how to write bytes to -the underlying connection, and how to handle any errors that may arise. This +the underlying connection, and how to handle any errors that may arise. This page describes the differences between SSL_write_early_data() and L. diff --git a/include/internal/tsan_assist.h b/include/internal/tsan_assist.h index f30ffe3..29409ff 100644 --- a/include/internal/tsan_assist.h +++ b/include/internal/tsan_assist.h @@ -6,7 +6,7 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ - + /* * Contemporary compilers implement lock-free atomic memory access * primitives that facilitate writing "thread-opportunistic" or even real diff --git a/test/README.external b/test/README.external index f836b1b..2f5423c 100644 --- a/test/README.external +++ b/test/README.external @@ -145,7 +145,7 @@ To update the commit for any of the above test suites: - Enter subdirectory and pull from the repository (use a specific branch/tag if required): - $ cd + $ cd $ git pull origin master - Go to root directory, there should be a new git status: diff --git a/test/rdrand_sanitytest.c b/test/rdrand_sanitytest.c index 0e67b37..781827b 100644 --- a/test/rdrand_sanitytest.c +++ b/test/rdrand_sanitytest.c @@ -1,6 +1,6 @@ /* * Copyright 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 * in the file LICENSE in the source distribution or at @@ -24,7 +24,7 @@ void OPENSSL_cpuid_setup(void); extern unsigned int OPENSSL_ia32cap_P[4]; -static int sanity_check_bytes(size_t (*rng)(unsigned char *, size_t), +static int sanity_check_bytes(size_t (*rng)(unsigned char *, size_t), int rounds, int min_failures, int max_retries, int max_zero_words) { int testresult = 0; diff --git a/test/servername_test.c b/test/servername_test.c index 1a73bf0..6606948 100644 --- a/test/servername_test.c +++ b/test/servername_test.c @@ -203,7 +203,7 @@ static int server_setup_sni(void) /* SNI should have been cleared during handshake */ goto end; } - + testresult = 1; end: SSL_free(serverssl); diff --git a/test/testutil/main.c b/test/testutil/main.c index 6781a52..80c5183 100644 --- a/test/testutil/main.c +++ b/test/testutil/main.c @@ -54,7 +54,7 @@ int main(int argc, char *argv[]) ret = pulldown_test_framework(ret); test_close_streams(); - return ret; + return ret; } const char *test_get_program_name(void) diff --git a/test/tls13secretstest.c b/test/tls13secretstest.c index 66a0582..7ca6b3d 100644 --- a/test/tls13secretstest.c +++ b/test/tls13secretstest.c @@ -28,7 +28,7 @@ /* * Based on the test vectors availble in: - * https://tools.ietf.org/html/draft-ietf-tls-tls13-vectors-06 + * https://tools.ietf.org/html/draft-ietf-tls-tls13-vectors-06 */ static unsigned char hs_start_hash[] = { diff --git a/util/indent.pro b/util/indent.pro index 443bddb..3d3f747 100644 --- a/util/indent.pro +++ b/util/indent.pro @@ -26,7 +26,7 @@ -nprs -npsl -nsc --ppi1 +-ppi1 -saf -sai -saw diff --git a/util/local_shlib.com.in b/util/local_shlib.com.in index e49aa15..a381872 100644 --- a/util/local_shlib.com.in +++ b/util/local_shlib.com.in @@ -16,7 +16,7 @@ $ $ NAMES := {- join(",", keys %names); -} {- join("\n", map { "\$ __$_ = \"".$names{$_}."\"" } keys %names); --} +-} $ I = 0 $ LOOP: $ E = F$ELEMENT(I,",",NAMES) diff --git a/util/openssl-format-source b/util/openssl-format-source index 2655e9c..d629ec4 100755 --- a/util/openssl-format-source +++ b/util/openssl-format-source @@ -8,18 +8,18 @@ # https://www.openssl.org/source/license.html # -# openssl-format-source +# openssl-format-source # - format source tree according to OpenSSL coding style using indent # # usage: # openssl-format-source [-v] [-n] [file|directory] ... # # note: the indent options assume GNU indent v2.2.10 which was released -# Feb-2009 so if you have an older indent the options may not +# Feb-2009 so if you have an older indent the options may not # match what is expected # # any marked block comment blocks have to be moved to align manually after -# the reformatting has been completed as marking a block causes indent to +# the reformatting has been completed as marking a block causes indent to # not move it at all ... # @@ -55,17 +55,17 @@ fi # Extra arguments; for adding the comment-formatting INDENT_ARGS="" -for i +for i do if [ "$STOPARGS" != "true" ]; then case $i in --) STOPARGS="true"; continue;; -n) DONT="true"; continue;; - -v) VERBOSE="true"; + -v) VERBOSE="true"; echo "INDENT_PROFILE=$INDENT_PROFILE"; continue;; - -c) COMMENTS="true"; - INDENT_ARGS="-fc1 -fca -cdb -sc"; + -c) COMMENTS="true"; + INDENT_ARGS="-fc1 -fca -cdb -sc"; continue;; -nc) COMMENTS="true"; continue;; @@ -76,14 +76,14 @@ do if [ -d "$i" ]; then LIST=`find "$i" -name '*.[ch]' -print` - else + else if [ ! -f "$i" ]; then echo "$0: source file not found: $i" >&2 exit 1 fi LIST="$i" fi - + for j in $LIST do # ignore symlinks - we only ever process the base file - so if we @@ -98,7 +98,7 @@ do tmp=$(mktemp /tmp/indent.XXXXXX) trap 'rm -f "$tmp"' HUP INT TERM EXIT - case `basename $j` in + case `basename $j` in # the list of files that indent is unable to handle correctly # that we simply leave alone for manual formatting now obj_dat.h|aes_core.c|aes_x86core.c|ecp_nistz256.c) @@ -108,11 +108,11 @@ do if [ "$COMMENTS" = "true" ]; then # we have to mark single line comments as /*- ...*/ to stop indent # messing with them, run expand then indent as usual but with the - # the process-comments options and then undo that marking, and then + # the process-comments options and then undo that marking, and then # finally re-run indent without process-comments so the marked-to- - # be-ignored comments we did automatically end up getting moved - # into the right position within the code as indent leaves marked - # comments entirely untouched - we appear to have no way to avoid + # be-ignored comments we did automatically end up getting moved + # into the right position within the code as indent leaves marked + # comments entirely untouched - we appear to have no way to avoid # the double processing and get the desired output cat "$j" | \ expand | \ diff --git a/util/perl/TLSProxy/Alert.pm b/util/perl/TLSProxy/Alert.pm index e66883d..1c8a7f8 100644 --- a/util/perl/TLSProxy/Alert.pm +++ b/util/perl/TLSProxy/Alert.pm @@ -16,7 +16,7 @@ sub new $encrypted, $level, $description) = @_; - + my $self = { server => $server, encrypted => $encrypted, diff --git a/util/perl/TLSProxy/Message.pm b/util/perl/TLSProxy/Message.pm index ee507f9..9eebfaa 100644 --- a/util/perl/TLSProxy/Message.pm +++ b/util/perl/TLSProxy/Message.pm @@ -238,7 +238,7 @@ sub get_messages $startoffset = $recoffset; $recoffset += 4; $payload = ""; - + if ($recoffset <= $record->decrypt_len) { #Some payload data is present in this record if ($record->decrypt_len - $recoffset >= $messlen) { @@ -410,7 +410,7 @@ sub new $records, $startoffset, $message_frag_lens) = @_; - + my $self = { server => $server, data => $data, diff --git a/util/perl/TLSProxy/Record.pm b/util/perl/TLSProxy/Record.pm index 0a280cb..add7720 100644 --- a/util/perl/TLSProxy/Record.pm +++ b/util/perl/TLSProxy/Record.pm @@ -173,7 +173,7 @@ sub new $decrypt_len, $data, $decrypt_data) = @_; - + my $self = { flight => $flight, content_type => $content_type, diff --git a/util/perl/TLSProxy/ServerHello.pm b/util/perl/TLSProxy/ServerHello.pm index c95bbee..8f662d0 100644 --- a/util/perl/TLSProxy/ServerHello.pm +++ b/util/perl/TLSProxy/ServerHello.pm @@ -25,7 +25,7 @@ sub new $records, $startoffset, $message_frag_lens) = @_; - + my $self = $class->SUPER::new( $server, TLSProxy::Message::MT_SERVER_HELLO, @@ -78,7 +78,7 @@ sub parse my $extension_data; if ($extensions_len != 0) { $extension_data = substr($self->data, $ptr); - + if (length($extension_data) != $extensions_len) { die "Invalid extension length\n"; } diff --git a/util/perl/TLSProxy/ServerKeyExchange.pm b/util/perl/TLSProxy/ServerKeyExchange.pm index cb4cc7c..57b8377 100644 --- a/util/perl/TLSProxy/ServerKeyExchange.pm +++ b/util/perl/TLSProxy/ServerKeyExchange.pm @@ -20,7 +20,7 @@ sub new $records, $startoffset, $message_frag_lens) = @_; - + my $self = $class->SUPER::new( $server, TLSProxy::Message::MT_SERVER_KEY_EXCHANGE, From no-reply at appveyor.com Tue Feb 5 16:15:38 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 05 Feb 2019 16:15:38 +0000 Subject: [openssl-commits] Build failed: openssl master.22218 Message-ID: <20190205161538.1.81945A278C3B59FA@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 5 16:15:43 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 05 Feb 2019 16:15:43 +0000 Subject: [openssl-commits] Build failed: openssl master.22219 Message-ID: <20190205161543.1.22C8CA94E57F6F3B@appveyor.com> An HTML attachment was scrubbed... URL: From builds at travis-ci.org Tue Feb 5 16:19:00 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 05 Feb 2019 16:19:00 +0000 Subject: [openssl-commits] Errored: openssl/openssl#22827 (OpenSSL_1_1_1-stable - 3b09585) In-Reply-To: Message-ID: <5c59b773a99de_43fa363e2005476344f@48c0f24a-fb8a-4c95-ac7c-0e6d958fc323.mail> Build Update for openssl/openssl ------------------------------------- Build: #22827 Status: Errored Duration: 21 mins and 43 secs Commit: 3b09585 (OpenSSL_1_1_1-stable) Author: Sam Roberts Message: Remove unnecessary trailing whitespace Trim trailing whitespace. It doesn't match OpenSSL coding standards, AFAICT, and it can cause problems with git tooling. Trailing whitespace remains in test data and external source. Backport-of: https://github.com/openssl/openssl/pull/8092 Reviewed-by: Matthias St. Pierre Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8134) View the changeset: https://github.com/openssl/openssl/compare/00f2bafec16b...3b09585bd67c View the full build log and details: https://travis-ci.org/openssl/openssl/builds/489097094?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 5 17:21:37 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 05 Feb 2019 17:21:37 +0000 Subject: [openssl-commits] Build completed: openssl master.22220 Message-ID: <20190205172137.1.49561203584D1870@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 5 17:26:10 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 05 Feb 2019 17:26:10 +0000 Subject: [openssl-commits] Build failed: openssl master.22221 Message-ID: <20190205172610.1.08609A3E9266AC86@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 5 18:30:09 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 05 Feb 2019 18:30:09 +0000 Subject: [openssl-commits] Build completed: openssl OpenSSL_1_1_1-stable.22222 Message-ID: <20190205183009.1.9D55CECCB6BC63F8@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 5 18:43:14 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 05 Feb 2019 18:43:14 +0000 Subject: [openssl-commits] Build failed: openssl master.22223 Message-ID: <20190205184314.1.662B61A1F6B70221@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 5 19:14:46 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 05 Feb 2019 19:14:46 +0000 Subject: [openssl-commits] Build completed: openssl master.22224 Message-ID: <20190205191446.1.07E32A36EA713446@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 5 20:41:21 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 05 Feb 2019 20:41:21 +0000 Subject: [openssl-commits] Build failed: openssl master.22227 Message-ID: <20190205204121.1.11A03ECCFF96285A@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 6 05:07:07 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 06 Feb 2019 05:07:07 +0000 Subject: [openssl-commits] Build completed: openssl master.22228 Message-ID: <20190206050707.1.DD7CB51EF1C0BF58@appveyor.com> An HTML attachment was scrubbed... URL: From matt at openssl.org Wed Feb 6 09:31:22 2019 From: matt at openssl.org (Matt Caswell) Date: Wed, 06 Feb 2019 09:31:22 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549445482.713317.12977.nullmailer@dev.openssl.org> The branch master has been updated via 8269e44f9e40831a497fe9f31ba1d65aeb49a5c1 (commit) via b215db236c6668c785bd99787b3fd07d5b2e6a10 (commit) via 33e113b0cbd9a0845f6f8a63e8aad558a897cac6 (commit) via 13b3cd7bc77d5d9297a755727100aee22d3e22b6 (commit) via d1ad7c834e10543b3d1ecb36ccbd110384063b8f (commit) via c3a261f8d31c1d04db01de36eccfe001b4ca0368 (commit) via fc3c0223e8a70bfe8f8aefc98b819f7d852f3594 (commit) via 18568864169d970bcbda300e76f6fb1a1015a0d5 (commit) from df4439186fb70ce72668d472943dbcd057df8f30 (commit) - Log ----------------------------------------------------------------- commit 8269e44f9e40831a497fe9f31ba1d65aeb49a5c1 Author: Antoine Salon Date: Mon Jan 7 15:09:55 2019 -0800 blake2: avoid writing to output buffer when using default digest length Signed-off-by: Antoine Salon Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7726) commit b215db236c6668c785bd99787b3fd07d5b2e6a10 Author: Antoine Salon Date: Thu Dec 20 15:36:40 2018 -0800 blake2: add evpmac test vectors Signed-off-by: Antoine Salon Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7726) commit 33e113b0cbd9a0845f6f8a63e8aad558a897cac6 Author: Antoine Salon Date: Thu Dec 20 15:36:07 2018 -0800 blake2: backport changes to blake2s Signed-off-by: Antoine Salon Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7726) commit 13b3cd7bc77d5d9297a755727100aee22d3e22b6 Author: Antoine Salon Date: Thu Dec 20 15:34:22 2018 -0800 blake2: add EVP_MAC man page Signed-off-by: Antoine Salon Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7726) commit d1ad7c834e10543b3d1ecb36ccbd110384063b8f Author: Antoine Salon Date: Thu Dec 20 15:32:58 2018 -0800 blake2: register MAC objects Signed-off-by: Antoine Salon Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7726) commit c3a261f8d31c1d04db01de36eccfe001b4ca0368 Author: Antoine Salon Date: Thu Dec 20 15:28:10 2018 -0800 blake2b: add EVP_MAC API Signed-off-by: Antoine Salon Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7726) commit fc3c0223e8a70bfe8f8aefc98b819f7d852f3594 Author: Antoine Salon Date: Thu Dec 20 15:20:00 2018 -0800 blake2b: add support for parameter setting and keyed hash The param block structure is used as a container for parameter values Added blake2b keyed init Signed-off-by: Antoine Salon Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7726) commit 18568864169d970bcbda300e76f6fb1a1015a0d5 Author: Antoine Salon Date: Thu Dec 20 15:08:23 2018 -0800 blake2: add implementation support for variable digest length Signed-off-by: Antoine Salon Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7726) ----------------------------------------------------------------------- Summary of changes: crypto/blake2/blake2_locl.h | 27 ++- crypto/blake2/blake2b.c | 78 +++++++- crypto/blake2/blake2b_mac.c | 190 ++++++++++++++++++ crypto/blake2/blake2s.c | 81 ++++++-- crypto/blake2/blake2s_mac.c | 190 ++++++++++++++++++ crypto/blake2/build.info | 2 +- crypto/blake2/m_blake2b.c | 8 +- crypto/blake2/m_blake2s.c | 8 +- crypto/err/openssl.txt | 5 + crypto/evp/c_allm.c | 4 + crypto/evp/evp_err.c | 6 + crypto/include/internal/evp_int.h | 2 + crypto/objects/obj_dat.h | 12 +- crypto/objects/obj_mac.num | 2 + crypto/objects/objects.txt | 2 + doc/man3/EVP_MAC.pod | 17 +- doc/man7/{EVP_MAC_KMAC.pod => EVP_MAC_BLAKE2.pod} | 52 +++-- include/openssl/evp.h | 3 + include/openssl/evperr.h | 5 + include/openssl/obj_mac.h | 8 + test/evp_test.c | 26 ++- test/recipes/30-test_evp_data/evpmac.txt | 230 ++++++++++++++++++++++ 22 files changed, 897 insertions(+), 61 deletions(-) create mode 100644 crypto/blake2/blake2b_mac.c create mode 100644 crypto/blake2/blake2s_mac.c copy doc/man7/{EVP_MAC_KMAC.pod => EVP_MAC_BLAKE2.pod} (51%) diff --git a/crypto/blake2/blake2_locl.h b/crypto/blake2/blake2_locl.h index 892a1af..e8c86db 100644 --- a/crypto/blake2/blake2_locl.h +++ b/crypto/blake2/blake2_locl.h @@ -1,5 +1,5 @@ /* - * Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -49,6 +49,7 @@ struct blake2s_ctx_st { uint32_t f[2]; uint8_t buf[BLAKE2S_BLOCKBYTES]; size_t buflen; + size_t outlen; }; struct blake2b_param_st { @@ -73,6 +74,7 @@ struct blake2b_ctx_st { uint64_t f[2]; uint8_t buf[BLAKE2B_BLOCKBYTES]; size_t buflen; + size_t outlen; }; #define BLAKE2B_DIGEST_LENGTH 64 @@ -81,10 +83,29 @@ struct blake2b_ctx_st { typedef struct blake2s_ctx_st BLAKE2S_CTX; typedef struct blake2b_ctx_st BLAKE2B_CTX; -int BLAKE2b_Init(BLAKE2B_CTX *c); +int BLAKE2b_Init(BLAKE2B_CTX *c, const BLAKE2B_PARAM *P); +int BLAKE2b_Init_key(BLAKE2B_CTX *c, const BLAKE2B_PARAM *P, const void *key); int BLAKE2b_Update(BLAKE2B_CTX *c, const void *data, size_t datalen); int BLAKE2b_Final(unsigned char *md, BLAKE2B_CTX *c); -int BLAKE2s_Init(BLAKE2S_CTX *c); +/* + * These setters are internal and do not check the validity of their parameters. + * See blake2b_mac_ctrl for validation logic. + */ + +void blake2b_param_init(BLAKE2B_PARAM *P); +void blake2b_param_set_digest_length(BLAKE2B_PARAM *P, uint8_t outlen); +void blake2b_param_set_key_length(BLAKE2B_PARAM *P, uint8_t keylen); +void blake2b_param_set_personal(BLAKE2B_PARAM *P, const uint8_t *personal, size_t length); +void blake2b_param_set_salt(BLAKE2B_PARAM *P, const uint8_t *salt, size_t length); + +int BLAKE2s_Init(BLAKE2S_CTX *c, const BLAKE2S_PARAM *P); +int BLAKE2s_Init_key(BLAKE2S_CTX *c, const BLAKE2S_PARAM *P, const void *key); int BLAKE2s_Update(BLAKE2S_CTX *c, const void *data, size_t datalen); int BLAKE2s_Final(unsigned char *md, BLAKE2S_CTX *c); + +void blake2s_param_init(BLAKE2S_PARAM *P); +void blake2s_param_set_digest_length(BLAKE2S_PARAM *P, uint8_t outlen); +void blake2s_param_set_key_length(BLAKE2S_PARAM *P, uint8_t keylen); +void blake2s_param_set_personal(BLAKE2S_PARAM *P, const uint8_t *personal, size_t length); +void blake2s_param_set_salt(BLAKE2S_PARAM *P, const uint8_t *salt, size_t length); diff --git a/crypto/blake2/blake2b.c b/crypto/blake2/blake2b.c index d4e5326..73ba0b6 100644 --- a/crypto/blake2/blake2b.c +++ b/crypto/blake2/blake2b.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -62,12 +62,14 @@ static ossl_inline void blake2b_init0(BLAKE2B_CTX *S) } } -/* init xors IV with input parameter block */ +/* init xors IV with input parameter block and sets the output length */ static void blake2b_init_param(BLAKE2B_CTX *S, const BLAKE2B_PARAM *P) { size_t i; const uint8_t *p = (const uint8_t *)(P); + blake2b_init0(S); + S->outlen = P->digest_length; /* The param struct is carefully hand packed, and should be 64 bytes on * every platform. */ @@ -78,10 +80,9 @@ static void blake2b_init_param(BLAKE2B_CTX *S, const BLAKE2B_PARAM *P) } } -/* Initialize the hashing context. Always returns 1. */ -int BLAKE2b_Init(BLAKE2B_CTX *c) +/* Initialize the parameter block with default values */ +void blake2b_param_init(BLAKE2B_PARAM *P) { - BLAKE2B_PARAM P[1]; P->digest_length = BLAKE2B_DIGEST_LENGTH; P->key_length = 0; P->fanout = 1; @@ -93,10 +94,60 @@ int BLAKE2b_Init(BLAKE2B_CTX *c) memset(P->reserved, 0, sizeof(P->reserved)); memset(P->salt, 0, sizeof(P->salt)); memset(P->personal, 0, sizeof(P->personal)); +} + +void blake2b_param_set_digest_length(BLAKE2B_PARAM *P, uint8_t outlen) +{ + P->digest_length = outlen; +} + +void blake2b_param_set_key_length(BLAKE2B_PARAM *P, uint8_t keylen) +{ + P->key_length = keylen; +} + +void blake2b_param_set_personal(BLAKE2B_PARAM *P, const uint8_t *personal, size_t len) +{ + memcpy(P->personal, personal, len); + memset(P->personal + len, 0, BLAKE2B_PERSONALBYTES - len); +} + +void blake2b_param_set_salt(BLAKE2B_PARAM *P, const uint8_t *salt, size_t len) +{ + memcpy(P->salt, salt, len); + memset(P->salt + len, 0, BLAKE2B_SALTBYTES - len); +} + +/* + * Initialize the hashing context with the given parameter block. + * Always returns 1. + */ +int BLAKE2b_Init(BLAKE2B_CTX *c, const BLAKE2B_PARAM *P) +{ blake2b_init_param(c, P); return 1; } +/* + * Initialize the hashing context with the given parameter block and key. + * Always returns 1. + */ +int BLAKE2b_Init_key(BLAKE2B_CTX *c, const BLAKE2B_PARAM *P, const void *key) +{ + blake2b_init_param(c, P); + + /* Pad the key to form first data block */ + { + uint8_t block[BLAKE2B_BLOCKBYTES] = {0}; + + memcpy(block, key, P->key_length); + BLAKE2b_Update(c, block, BLAKE2B_BLOCKBYTES); + OPENSSL_cleanse(block, BLAKE2B_BLOCKBYTES); + } + + return 1; +} + /* Permute the state while xoring in the block of data. */ static void blake2b_compress(BLAKE2B_CTX *S, const uint8_t *blocks, @@ -252,17 +303,26 @@ int BLAKE2b_Update(BLAKE2B_CTX *c, const void *data, size_t datalen) */ int BLAKE2b_Final(unsigned char *md, BLAKE2B_CTX *c) { + uint8_t outbuffer[BLAKE2B_OUTBYTES] = {0}; + uint8_t *target = outbuffer; + int iter = (c->outlen + 7) / 8; int i; + /* Avoid writing to the temporary buffer if possible */ + if ((c->outlen % sizeof(c->h[0])) == 0) + target = md; + blake2b_set_lastblock(c); /* Padding */ memset(c->buf + c->buflen, 0, sizeof(c->buf) - c->buflen); blake2b_compress(c, c->buf, c->buflen); - /* Output full hash to message digest */ - for (i = 0; i < 8; ++i) { - store64(md + sizeof(c->h[i]) * i, c->h[i]); - } + /* Output full hash to buffer */ + for (i = 0; i < iter; ++i) + store64(target + sizeof(c->h[i]) * i, c->h[i]); + + if (target != md) + memcpy(md, target, c->outlen); OPENSSL_cleanse(c, sizeof(BLAKE2B_CTX)); return 1; diff --git a/crypto/blake2/blake2b_mac.c b/crypto/blake2/blake2b_mac.c new file mode 100644 index 0000000..71b8517 --- /dev/null +++ b/crypto/blake2/blake2b_mac.c @@ -0,0 +1,190 @@ +/* + * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_NO_BLAKE2 + +# include +# include "blake2_locl.h" +# include "internal/cryptlib.h" +# include "internal/evp_int.h" + +/* typedef EVP_MAC_IMPL */ +struct evp_mac_impl_st { + BLAKE2B_CTX ctx; + BLAKE2B_PARAM params; + unsigned char key[BLAKE2B_KEYBYTES]; +}; + +static EVP_MAC_IMPL *blake2b_mac_new(void) +{ + EVP_MAC_IMPL *macctx = OPENSSL_zalloc(sizeof(*macctx)); + if (macctx != NULL) { + blake2b_param_init(&macctx->params); + /* ctx initialization is deferred to BLAKE2b_Init() */ + } + return macctx; +} + +static void blake2b_mac_free(EVP_MAC_IMPL *macctx) +{ + if (macctx != NULL) { + OPENSSL_cleanse(macctx->key, sizeof(macctx->key)); + OPENSSL_free(macctx); + } +} + +static int blake2b_mac_copy(EVP_MAC_IMPL *dst, EVP_MAC_IMPL *src) +{ + *dst = *src; + return 1; +} + +static int blake2b_mac_init(EVP_MAC_IMPL *macctx) +{ + /* Check key has been set */ + if (macctx->params.key_length == 0) { + EVPerr(EVP_F_BLAKE2B_MAC_INIT, EVP_R_NO_KEY_SET); + return 0; + } + + return BLAKE2b_Init_key(&macctx->ctx, &macctx->params, macctx->key); +} + +static int blake2b_mac_update(EVP_MAC_IMPL *macctx, const unsigned char *data, + size_t datalen) +{ + return BLAKE2b_Update(&macctx->ctx, data, datalen); +} + +static int blake2b_mac_final(EVP_MAC_IMPL *macctx, unsigned char *out) +{ + return BLAKE2b_Final(out, &macctx->ctx); +} + +/* + * ALL Ctrl functions should be set before init(). + */ +static int blake2b_mac_ctrl(EVP_MAC_IMPL *macctx, int cmd, va_list args) +{ + const unsigned char *p; + size_t len; + size_t size; + + switch (cmd) { + case EVP_MAC_CTRL_SET_SIZE: + size = va_arg(args, size_t); + if (size < 1 || size > BLAKE2B_OUTBYTES) { + EVPerr(EVP_F_BLAKE2B_MAC_CTRL, EVP_R_NOT_XOF_OR_INVALID_LENGTH); + return 0; + } + blake2b_param_set_digest_length(&macctx->params, (uint8_t)size); + return 1; + + case EVP_MAC_CTRL_SET_KEY: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + if (len < 1 || len > BLAKE2B_KEYBYTES) { + EVPerr(EVP_F_BLAKE2B_MAC_CTRL, EVP_R_INVALID_KEY_LENGTH); + return 0; + } + blake2b_param_set_key_length(&macctx->params, (uint8_t)len); + memcpy(macctx->key, p, len); + memset(macctx->key + len, 0, BLAKE2B_KEYBYTES - len); + return 1; + + case EVP_MAC_CTRL_SET_CUSTOM: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + if (len > BLAKE2B_PERSONALBYTES) { + EVPerr(EVP_F_BLAKE2B_MAC_CTRL, EVP_R_INVALID_CUSTOM_LENGTH); + return 0; + } + blake2b_param_set_personal(&macctx->params, p, len); + return 1; + + case EVP_MAC_CTRL_SET_SALT: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + if (len > BLAKE2B_SALTBYTES) { + EVPerr(EVP_F_BLAKE2B_MAC_CTRL, EVP_R_INVALID_SALT_LENGTH); + return 0; + } + blake2b_param_set_salt(&macctx->params, p, len); + return 1; + + default: + return -2; + } +} + +static int blake2b_mac_ctrl_int(EVP_MAC_IMPL *macctx, int cmd, ...) +{ + int rv; + va_list args; + + va_start(args, cmd); + rv = blake2b_mac_ctrl(macctx, cmd, args); + va_end(args); + + return rv; +} + +static int blake2b_mac_ctrl_str_cb(void *macctx, int cmd, void *buf, size_t buflen) +{ + return blake2b_mac_ctrl_int(macctx, cmd, buf, buflen); +} + +static int blake2b_mac_ctrl_str(EVP_MAC_IMPL *macctx, const char *type, + const char *value) +{ + if (value == NULL) + return 0; + + if (strcmp(type, "outlen") == 0) + return blake2b_mac_ctrl_int(macctx, EVP_MAC_CTRL_SET_SIZE, (size_t)atoi(value)); + if (strcmp(type, "key") == 0) + return EVP_str2ctrl(blake2b_mac_ctrl_str_cb, macctx, EVP_MAC_CTRL_SET_KEY, + value); + if (strcmp(type, "hexkey") == 0) + return EVP_hex2ctrl(blake2b_mac_ctrl_str_cb, macctx, EVP_MAC_CTRL_SET_KEY, + value); + if (strcmp(type, "custom") == 0) + return EVP_str2ctrl(blake2b_mac_ctrl_str_cb, macctx, EVP_MAC_CTRL_SET_CUSTOM, + value); + if (strcmp(type, "hexcustom") == 0) + return EVP_hex2ctrl(blake2b_mac_ctrl_str_cb, macctx, EVP_MAC_CTRL_SET_CUSTOM, + value); + if (strcmp(type, "salt") == 0) + return EVP_str2ctrl(blake2b_mac_ctrl_str_cb, macctx, EVP_MAC_CTRL_SET_SALT, + value); + if (strcmp(type, "hexsalt") == 0) + return EVP_hex2ctrl(blake2b_mac_ctrl_str_cb, macctx, EVP_MAC_CTRL_SET_SALT, + value); + return -2; +} + +static size_t blake2b_mac_size(EVP_MAC_IMPL *macctx) +{ + return macctx->params.digest_length; +} + +const EVP_MAC blake2b_mac_meth = { + EVP_MAC_BLAKE2B, + blake2b_mac_new, + blake2b_mac_copy, + blake2b_mac_free, + blake2b_mac_size, + blake2b_mac_init, + blake2b_mac_update, + blake2b_mac_final, + blake2b_mac_ctrl, + blake2b_mac_ctrl_str +}; + +#endif diff --git a/crypto/blake2/blake2s.c b/crypto/blake2/blake2s.c index c0f0f26..121f0d1 100644 --- a/crypto/blake2/blake2s.c +++ b/crypto/blake2/blake2s.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -58,27 +58,26 @@ static ossl_inline void blake2s_init0(BLAKE2S_CTX *S) } } -/* init2 xors IV with input parameter block */ +/* init xors IV with input parameter block and sets the output length */ static void blake2s_init_param(BLAKE2S_CTX *S, const BLAKE2S_PARAM *P) { - const uint8_t *p = (const uint8_t *)(P); size_t i; + const uint8_t *p = (const uint8_t *)(P); + + blake2s_init0(S); + S->outlen = P->digest_length; /* The param struct is carefully hand packed, and should be 32 bytes on * every platform. */ assert(sizeof(BLAKE2S_PARAM) == 32); - blake2s_init0(S); /* IV XOR ParamBlock */ for (i = 0; i < 8; ++i) { S->h[i] ^= load32(&p[i*4]); } } -/* Initialize the hashing context. Always returns 1. */ -int BLAKE2s_Init(BLAKE2S_CTX *c) +void blake2s_param_init(BLAKE2S_PARAM *P) { - BLAKE2S_PARAM P[1]; - P->digest_length = BLAKE2S_DIGEST_LENGTH; P->key_length = 0; P->fanout = 1; @@ -89,10 +88,59 @@ int BLAKE2s_Init(BLAKE2S_CTX *c) P->inner_length = 0; memset(P->salt, 0, sizeof(P->salt)); memset(P->personal, 0, sizeof(P->personal)); +} + +void blake2s_param_set_digest_length(BLAKE2S_PARAM *P, uint8_t outlen) +{ + P->digest_length = outlen; +} + +void blake2s_param_set_key_length(BLAKE2S_PARAM *P, uint8_t keylen) +{ + P->key_length = keylen; +} + +void blake2s_param_set_personal(BLAKE2S_PARAM *P, const uint8_t *personal, size_t len) +{ + memcpy(P->personal, personal, len); + memset(P->personal + len, 0, BLAKE2S_PERSONALBYTES - len); +} + +void blake2s_param_set_salt(BLAKE2S_PARAM *P, const uint8_t *salt, size_t len) +{ + memcpy(P->salt, salt, len); + memset(P->salt + len, 0, BLAKE2S_SALTBYTES - len);} + +/* + * Initialize the hashing context with the given parameter block. + * Always returns 1. + */ +int BLAKE2s_Init(BLAKE2S_CTX *c, const BLAKE2S_PARAM *P) +{ blake2s_init_param(c, P); return 1; } +/* + * Initialize the hashing context with the given parameter block and key. + * Always returns 1. + */ +int BLAKE2s_Init_key(BLAKE2S_CTX *c, const BLAKE2S_PARAM *P, const void *key) +{ + blake2s_init_param(c, P); + + /* Pad the key to form first data block */ + { + uint8_t block[BLAKE2S_BLOCKBYTES] = {0}; + + memcpy(block, key, P->key_length); + BLAKE2s_Update(c, block, BLAKE2S_BLOCKBYTES); + OPENSSL_cleanse(block, BLAKE2S_BLOCKBYTES); + } + + return 1; +} + /* Permute the state while xoring in the block of data. */ static void blake2s_compress(BLAKE2S_CTX *S, const uint8_t *blocks, @@ -246,17 +294,26 @@ int BLAKE2s_Update(BLAKE2S_CTX *c, const void *data, size_t datalen) */ int BLAKE2s_Final(unsigned char *md, BLAKE2S_CTX *c) { + uint8_t outbuffer[BLAKE2S_OUTBYTES] = {0}; + uint8_t *target = outbuffer; + int iter = (c->outlen + 3) / 4; int i; + /* Avoid writing to the temporary buffer if possible */ + if ((c->outlen % sizeof(c->h[0])) == 0) + target = md; + blake2s_set_lastblock(c); /* Padding */ memset(c->buf + c->buflen, 0, sizeof(c->buf) - c->buflen); blake2s_compress(c, c->buf, c->buflen); - /* Output full hash to temp buffer */ - for (i = 0; i < 8; ++i) { - store32(md + sizeof(c->h[i]) * i, c->h[i]); - } + /* Output full hash to buffer */ + for (i = 0; i < iter; ++i) + store32(target + sizeof(c->h[i]) * i, c->h[i]); + + if (target != md) + memcpy(md, target, c->outlen); OPENSSL_cleanse(c, sizeof(BLAKE2S_CTX)); return 1; diff --git a/crypto/blake2/blake2s_mac.c b/crypto/blake2/blake2s_mac.c new file mode 100644 index 0000000..d40778c --- /dev/null +++ b/crypto/blake2/blake2s_mac.c @@ -0,0 +1,190 @@ +/* + * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_NO_BLAKE2 + +# include +# include "blake2_locl.h" +# include "internal/cryptlib.h" +# include "internal/evp_int.h" + +/* typedef EVP_MAC_IMPL */ +struct evp_mac_impl_st { + BLAKE2S_CTX ctx; + BLAKE2S_PARAM params; + unsigned char key[BLAKE2S_KEYBYTES]; +}; + +static EVP_MAC_IMPL *blake2s_mac_new(void) +{ + EVP_MAC_IMPL *macctx = OPENSSL_zalloc(sizeof(*macctx)); + if (macctx != NULL) { + blake2s_param_init(&macctx->params); + /* ctx initialization is deferred to BLAKE2s_Init() */ + } + return macctx; +} + +static void blake2s_mac_free(EVP_MAC_IMPL *macctx) +{ + if (macctx != NULL) { + OPENSSL_cleanse(macctx->key, sizeof(macctx->key)); + OPENSSL_free(macctx); + } +} + +static int blake2s_mac_copy(EVP_MAC_IMPL *dst, EVP_MAC_IMPL *src) +{ + *dst = *src; + return 1; +} + +static int blake2s_mac_init(EVP_MAC_IMPL *macctx) +{ + /* Check key has been set */ + if (macctx->params.key_length == 0) { + EVPerr(EVP_F_BLAKE2S_MAC_INIT, EVP_R_NO_KEY_SET); + return 0; + } + + return BLAKE2s_Init_key(&macctx->ctx, &macctx->params, macctx->key); +} + +static int blake2s_mac_update(EVP_MAC_IMPL *macctx, const unsigned char *data, + size_t datalen) +{ + return BLAKE2s_Update(&macctx->ctx, data, datalen); +} + +static int blake2s_mac_final(EVP_MAC_IMPL *macctx, unsigned char *out) +{ + return BLAKE2s_Final(out, &macctx->ctx); +} + +/* + * ALL Ctrl functions should be set before init(). + */ +static int blake2s_mac_ctrl(EVP_MAC_IMPL *macctx, int cmd, va_list args) +{ + const unsigned char *p; + size_t len; + size_t size; + + switch (cmd) { + case EVP_MAC_CTRL_SET_SIZE: + size = va_arg(args, size_t); + if (size < 1 || size > BLAKE2S_OUTBYTES) { + EVPerr(EVP_F_BLAKE2S_MAC_CTRL, EVP_R_NOT_XOF_OR_INVALID_LENGTH); + return 0; + } + blake2s_param_set_digest_length(&macctx->params, (uint8_t)size); + return 1; + + case EVP_MAC_CTRL_SET_KEY: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + if (len < 1 || len > BLAKE2S_KEYBYTES) { + EVPerr(EVP_F_BLAKE2S_MAC_CTRL, EVP_R_INVALID_KEY_LENGTH); + return 0; + } + blake2s_param_set_key_length(&macctx->params, (uint8_t)len); + memcpy(macctx->key, p, len); + memset(macctx->key + len, 0, BLAKE2S_KEYBYTES - len); + return 1; + + case EVP_MAC_CTRL_SET_CUSTOM: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + if (len > BLAKE2S_PERSONALBYTES) { + EVPerr(EVP_F_BLAKE2S_MAC_CTRL, EVP_R_INVALID_CUSTOM_LENGTH); + return 0; + } + blake2s_param_set_personal(&macctx->params, p, len); + return 1; + + case EVP_MAC_CTRL_SET_SALT: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + if (len > BLAKE2S_SALTBYTES) { + EVPerr(EVP_F_BLAKE2S_MAC_CTRL, EVP_R_INVALID_SALT_LENGTH); + return 0; + } + blake2s_param_set_salt(&macctx->params, p, len); + return 1; + + default: + return -2; + } +} + +static int blake2s_mac_ctrl_int(EVP_MAC_IMPL *macctx, int cmd, ...) +{ + int rv; + va_list args; + + va_start(args, cmd); + rv = blake2s_mac_ctrl(macctx, cmd, args); + va_end(args); + + return rv; +} + +static int blake2s_mac_ctrl_str_cb(void *macctx, int cmd, void *buf, size_t buflen) +{ + return blake2s_mac_ctrl_int(macctx, cmd, buf, buflen); +} + +static int blake2s_mac_ctrl_str(EVP_MAC_IMPL *macctx, const char *type, + const char *value) +{ + if (value == NULL) + return 0; + + if (strcmp(type, "outlen") == 0) + return blake2s_mac_ctrl_int(macctx, EVP_MAC_CTRL_SET_SIZE, (size_t)atoi(value)); + if (strcmp(type, "key") == 0) + return EVP_str2ctrl(blake2s_mac_ctrl_str_cb, macctx, EVP_MAC_CTRL_SET_KEY, + value); + if (strcmp(type, "hexkey") == 0) + return EVP_hex2ctrl(blake2s_mac_ctrl_str_cb, macctx, EVP_MAC_CTRL_SET_KEY, + value); + if (strcmp(type, "custom") == 0) + return EVP_str2ctrl(blake2s_mac_ctrl_str_cb, macctx, EVP_MAC_CTRL_SET_CUSTOM, + value); + if (strcmp(type, "hexcustom") == 0) + return EVP_hex2ctrl(blake2s_mac_ctrl_str_cb, macctx, EVP_MAC_CTRL_SET_CUSTOM, + value); + if (strcmp(type, "salt") == 0) + return EVP_str2ctrl(blake2s_mac_ctrl_str_cb, macctx, EVP_MAC_CTRL_SET_SALT, + value); + if (strcmp(type, "hexsalt") == 0) + return EVP_hex2ctrl(blake2s_mac_ctrl_str_cb, macctx, EVP_MAC_CTRL_SET_SALT, + value); + return -2; +} + +static size_t blake2s_mac_size(EVP_MAC_IMPL *macctx) +{ + return macctx->params.digest_length; +} + +const EVP_MAC blake2s_mac_meth = { + EVP_MAC_BLAKE2S, + blake2s_mac_new, + blake2s_mac_copy, + blake2s_mac_free, + blake2s_mac_size, + blake2s_mac_init, + blake2s_mac_update, + blake2s_mac_final, + blake2s_mac_ctrl, + blake2s_mac_ctrl_str +}; + +#endif diff --git a/crypto/blake2/build.info b/crypto/blake2/build.info index 0036f08..ab72ef2 100644 --- a/crypto/blake2/build.info +++ b/crypto/blake2/build.info @@ -1,3 +1,3 @@ LIBS=../../libcrypto SOURCE[../../libcrypto]=\ - blake2b.c blake2s.c m_blake2b.c m_blake2s.c + blake2b.c blake2s.c blake2b_mac.c blake2s_mac.c m_blake2b.c m_blake2s.c diff --git a/crypto/blake2/m_blake2b.c b/crypto/blake2/m_blake2b.c index a37ab89..2fb80f8 100644 --- a/crypto/blake2/m_blake2b.c +++ b/crypto/blake2/m_blake2b.c @@ -1,5 +1,5 @@ /* - * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,7 +25,9 @@ static int init(EVP_MD_CTX *ctx) { - return BLAKE2b_Init(EVP_MD_CTX_md_data(ctx)); + BLAKE2B_PARAM P; + blake2b_param_init(&P); + return BLAKE2b_Init(EVP_MD_CTX_md_data(ctx), &P); } static int update(EVP_MD_CTX *ctx, const void *data, size_t count) @@ -49,7 +51,7 @@ static const EVP_MD blake2b_md = { NULL, NULL, BLAKE2B_BLOCKBYTES, - sizeof(EVP_MD *) + sizeof(BLAKE2B_CTX), + sizeof(BLAKE2B_CTX), }; const EVP_MD *EVP_blake2b512(void) diff --git a/crypto/blake2/m_blake2s.c b/crypto/blake2/m_blake2s.c index 2c5f42b..8ff1727 100644 --- a/crypto/blake2/m_blake2s.c +++ b/crypto/blake2/m_blake2s.c @@ -1,5 +1,5 @@ /* - * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,7 +25,9 @@ static int init(EVP_MD_CTX *ctx) { - return BLAKE2s_Init(EVP_MD_CTX_md_data(ctx)); + BLAKE2S_PARAM P; + blake2s_param_init(&P); + return BLAKE2s_Init(EVP_MD_CTX_md_data(ctx), &P); } static int update(EVP_MD_CTX *ctx, const void *data, size_t count) @@ -49,7 +51,7 @@ static const EVP_MD blake2s_md = { NULL, NULL, BLAKE2S_BLOCKBYTES, - sizeof(EVP_MD *) + sizeof(BLAKE2S_CTX), + sizeof(BLAKE2S_CTX), }; const EVP_MD *EVP_blake2s256(void) diff --git a/crypto/err/openssl.txt b/crypto/err/openssl.txt index 0e133d6..aaea598 100644 --- a/crypto/err/openssl.txt +++ b/crypto/err/openssl.txt @@ -730,6 +730,10 @@ EVP_F_ARIA_GCM_CTRL:197:aria_gcm_ctrl EVP_F_ARIA_GCM_INIT_KEY:176:aria_gcm_init_key EVP_F_ARIA_INIT_KEY:185:aria_init_key EVP_F_B64_NEW:198:b64_new +EVP_F_BLAKE2B_MAC_CTRL:220:blake2b_mac_ctrl +EVP_F_BLAKE2B_MAC_INIT:221:blake2b_mac_init +EVP_F_BLAKE2S_MAC_CTRL:222:blake2s_mac_ctrl +EVP_F_BLAKE2S_MAC_INIT:223:blake2s_mac_init EVP_F_CAMELLIA_INIT_KEY:159:camellia_init_key EVP_F_CHACHA20_POLY1305_CTRL:182:chacha20_poly1305_ctrl EVP_F_CMLL_T4_INIT_KEY:179:cmll_t4_init_key @@ -2263,6 +2267,7 @@ EVP_R_INVALID_FIPS_MODE:168:invalid fips mode EVP_R_INVALID_KEY:163:invalid key EVP_R_INVALID_KEY_LENGTH:130:invalid key length EVP_R_INVALID_OPERATION:148:invalid operation +EVP_R_INVALID_SALT_LENGTH:186:invalid salt length EVP_R_KEYGEN_FAILURE:120:keygen failure EVP_R_KEY_SETUP_FAILED:180:key setup failed EVP_R_MEMORY_LIMIT_EXCEEDED:172:memory limit exceeded diff --git a/crypto/evp/c_allm.c b/crypto/evp/c_allm.c index 2cc0694..f5442df 100644 --- a/crypto/evp/c_allm.c +++ b/crypto/evp/c_allm.c @@ -12,6 +12,10 @@ void openssl_add_all_macs_int(void) { +#ifndef OPENSSL_NO_BLAKE2 + EVP_add_mac(&blake2b_mac_meth); + EVP_add_mac(&blake2s_mac_meth); +#endif #ifndef OPENSSL_NO_CMAC EVP_add_mac(&cmac_meth); #endif diff --git a/crypto/evp/evp_err.c b/crypto/evp/evp_err.c index 14e5ed6..a4dd97b 100644 --- a/crypto/evp/evp_err.c +++ b/crypto/evp/evp_err.c @@ -27,6 +27,10 @@ static const ERR_STRING_DATA EVP_str_functs[] = { {ERR_PACK(ERR_LIB_EVP, EVP_F_ARIA_GCM_INIT_KEY, 0), "aria_gcm_init_key"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_ARIA_INIT_KEY, 0), "aria_init_key"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_B64_NEW, 0), "b64_new"}, + {ERR_PACK(ERR_LIB_EVP, EVP_F_BLAKE2B_MAC_CTRL, 0), "blake2b_mac_ctrl"}, + {ERR_PACK(ERR_LIB_EVP, EVP_F_BLAKE2B_MAC_INIT, 0), "blake2b_mac_init"}, + {ERR_PACK(ERR_LIB_EVP, EVP_F_BLAKE2S_MAC_CTRL, 0), "blake2s_mac_ctrl"}, + {ERR_PACK(ERR_LIB_EVP, EVP_F_BLAKE2S_MAC_INIT, 0), "blake2s_mac_init"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_CAMELLIA_INIT_KEY, 0), "camellia_init_key"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_CHACHA20_POLY1305_CTRL, 0), "chacha20_poly1305_ctrl"}, @@ -226,6 +230,8 @@ static const ERR_STRING_DATA EVP_str_reasons[] = { {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_KEY), "invalid key"}, {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_KEY_LENGTH), "invalid key length"}, {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_OPERATION), "invalid operation"}, + {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_SALT_LENGTH), + "invalid salt length"}, {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_KEYGEN_FAILURE), "keygen failure"}, {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_KEY_SETUP_FAILED), "key setup failed"}, {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_MEMORY_LIMIT_EXCEEDED), diff --git a/crypto/include/internal/evp_int.h b/crypto/include/internal/evp_int.h index 82d1a6b..189d8aa 100644 --- a/crypto/include/internal/evp_int.h +++ b/crypto/include/internal/evp_int.h @@ -128,6 +128,8 @@ struct evp_mac_st { int (*ctrl_str) (EVP_MAC_IMPL *macctx, const char *type, const char *value); }; +extern const EVP_MAC blake2b_mac_meth; +extern const EVP_MAC blake2s_mac_meth; extern const EVP_MAC cmac_meth; extern const EVP_MAC gmac_meth; extern const EVP_MAC hmac_meth; diff --git a/crypto/objects/obj_dat.h b/crypto/objects/obj_dat.h index 859795f..78a9e7a 100644 --- a/crypto/objects/obj_dat.h +++ b/crypto/objects/obj_dat.h @@ -1079,7 +1079,7 @@ static const unsigned char so[7767] = { 0x28,0xCC,0x45,0x03,0x04, /* [ 7761] OBJ_gmac */ }; -#define NUM_NID 1201 +#define NUM_NID 1203 static const ASN1_OBJECT nid_objs[NUM_NID] = { {"UNDEF", "undefined", NID_undef}, {"rsadsi", "RSA Data Security, Inc.", NID_rsadsi, 6, &so[0]}, @@ -2282,9 +2282,11 @@ static const ASN1_OBJECT nid_objs[NUM_NID] = { {"AES-128-SIV", "aes-128-siv", NID_aes_128_siv}, {"AES-192-SIV", "aes-192-siv", NID_aes_192_siv}, {"AES-256-SIV", "aes-256-siv", NID_aes_256_siv}, + {"BLAKE2BMAC", "blake2bmac", NID_blake2bmac}, + {"BLAKE2SMAC", "blake2smac", NID_blake2smac}, }; -#define NUM_SN 1192 +#define NUM_SN 1194 static const unsigned int sn_objs[NUM_SN] = { 364, /* "AD_DVCS" */ 419, /* "AES-128-CBC" */ @@ -2362,6 +2364,8 @@ static const unsigned int sn_objs[NUM_SN] = { 93, /* "BF-CFB" */ 92, /* "BF-ECB" */ 94, /* "BF-OFB" */ + 1201, /* "BLAKE2BMAC" */ + 1202, /* "BLAKE2SMAC" */ 1056, /* "BLAKE2b512" */ 1057, /* "BLAKE2s256" */ 14, /* "C" */ @@ -3480,7 +3484,7 @@ static const unsigned int sn_objs[NUM_SN] = { 1093, /* "x509ExtAdmission" */ }; -#define NUM_LN 1192 +#define NUM_LN 1194 static const unsigned int ln_objs[NUM_LN] = { 363, /* "AD Time Stamping" */ 405, /* "ANSI X9.62" */ @@ -3782,7 +3786,9 @@ static const unsigned int ln_objs[NUM_LN] = { 92, /* "bf-ecb" */ 94, /* "bf-ofb" */ 1056, /* "blake2b512" */ + 1201, /* "blake2bmac" */ 1057, /* "blake2s256" */ + 1202, /* "blake2smac" */ 921, /* "brainpoolP160r1" */ 922, /* "brainpoolP160t1" */ 923, /* "brainpoolP192r1" */ diff --git a/crypto/objects/obj_mac.num b/crypto/objects/obj_mac.num index 021875d..8779020 100644 --- a/crypto/objects/obj_mac.num +++ b/crypto/objects/obj_mac.num @@ -1198,3 +1198,5 @@ kmac256 1197 aes_128_siv 1198 aes_192_siv 1199 aes_256_siv 1200 +blake2bmac 1201 +blake2smac 1202 diff --git a/crypto/objects/objects.txt b/crypto/objects/objects.txt index fc32606..344b67b 100644 --- a/crypto/objects/objects.txt +++ b/crypto/objects/objects.txt @@ -17,6 +17,8 @@ iso 0 9797 3 4 : GMAC : gmac # There are no OIDs for these yet... : KMAC128 : kmac128 : KMAC256 : kmac256 + : BLAKE2BMAC : blake2bmac + : BLAKE2SMAC : blake2smac # HMAC OIDs identified-organization 6 1 5 5 8 1 1 : HMAC-MD5 : hmac-md5 diff --git a/doc/man3/EVP_MAC.pod b/doc/man3/EVP_MAC.pod index 0e0d749..32bf589 100644 --- a/doc/man3/EVP_MAC.pod +++ b/doc/man3/EVP_MAC.pod @@ -87,9 +87,6 @@ through diverse controls. This should be called before calling EVP_MAC_update() and EVP_MAC_final(). -EVP_MAC_reset() resets the computation for the given context. -This may not be supported by the MAC implementation. - EVP_MAC_update() adds C bytes from C to the MAC input. EVP_MAC_final() does the final computation and stores the result in @@ -171,18 +168,23 @@ Some MAC implementations require an IV, this control sets the IV. =item B -This control expects two arguments: C, C +This control expects two arguments: C, C -Some MAC implementations (KMAC) require an Customization String, +Some MAC implementations (KMAC, BLAKE2) accept a Customization String, this control sets the Customization String. The default value is "". +=item B + +This control expects two arguments: C, C + +This option is used by BLAKE2 MAC. + =item B This control expects one argument: C This option is used by KMAC. - =item B This control expects one argument: C @@ -231,7 +233,7 @@ created EVP_MAC_CTX, or NULL if allocation failed. EVP_MAC_CTX_free() returns nothing at all. -EVP_MAC_CTX_copy(), EVP_MAC_reset(), EVP_MAC_init(), EVP_MAC_update(), +EVP_MAC_CTX_copy(), EVP_MAC_init(), EVP_MAC_update(), and EVP_MAC_final() return 1 on success, 0 on error. EVP_MAC_ctrl(), EVP_MAC_ctrl_str(), EVP_MAC_str2ctrl() and @@ -346,6 +348,7 @@ F<./foo>) =head1 SEE ALSO +L, L, L, L, diff --git a/doc/man7/EVP_MAC_KMAC.pod b/doc/man7/EVP_MAC_BLAKE2.pod similarity index 51% copy from doc/man7/EVP_MAC_KMAC.pod copy to doc/man7/EVP_MAC_BLAKE2.pod index 4ccaabe..58b4f99 100644 --- a/doc/man7/EVP_MAC_KMAC.pod +++ b/doc/man7/EVP_MAC_BLAKE2.pod @@ -2,15 +2,15 @@ =head1 NAME -EVP_MAC_KMAC - The KMAC EVP_MAC implementation +EVP_MAC_BLAKE2 - The BLAKE2 EVP_MAC implementation =head1 DESCRIPTION -Support for computing KMAC MACs through the B API. +Support for computing BLAKE2 MACs through the B API. =head2 Numeric identity -B and B are the numeric identities for this +B and B are the numeric identities for this implementation, and can be used in functions like EVP_MAC_CTX_new_id() and EVP_get_macbynid(). @@ -22,6 +22,8 @@ The supported controls are: =item B +This is a string value of at most 64 bytes for EVP_MAC_BLAKE2B +or 32 for EVP_MAC_BLAKE2S and at least 1 byte in both cases. This must be set before calling EVP_MAC_init(). EVP_MAC_ctrl_str() takes two type strings for this control: @@ -41,8 +43,9 @@ decoded before passing on as control value. =item B -This is an optional string value that can be set before calling EVP_MAC_init(). -If it is not set it uses the default value "". +This is an optional string value of at most 16 bytes for EVP_MAC_BLAKE2B +or 8 for EVP_MAC_BLAKE2S, set to all-NULL by default. +If used this must be set before calling EVP_MAC_init(). EVP_MAC_ctrl_str() takes two type strings for this control: @@ -59,22 +62,35 @@ decoded before passing on as control value. =back -=item B +=item B -EVP_MAC_ctrl_str() type string: "outlen" +This is an optional string value of at most 16 bytes for EVP_MAC_BLAKE2B +or 8 for EVP_MAC_BLAKE2S, set to all-NULL by default. +If used this must be set before calling EVP_MAC_init(). + +EVP_MAC_ctrl_str() takes two type strings for this control: + +=over 4 + +=item "salt" + +The value string is used as is. -This is an optional value string containing a decimal number. If it is not set -it uses the default value of 32 for EVP_MAC_KMAC128 and 64 for EVP_MAC_KMAC256. -This can be called any time before EVP_MAC_final(). +=item "hexsalt" -=item B +The value string is expected to be a hexadecimal number, which will be +decoded before passing on as control value. -EVP_MAC_ctrl_str() type string: "xof" +=back -The value string is expected to be an integer value of 1 or 0. Use 1 to enable -XOF mode. If XOF is enabled then the output len that is encoded as part of the -input stream is set to zero. -This can be called any time before EVP_MAC_final(). +=item B + +EVP_MAC_ctrl_str() type string: "outlen" + +This is an optional value string containing a decimal number between 1 and +32 for EVP_MAC_BLAKE2S or 64 for EVP_MAC_BLAKE2B. +If it is not set it uses the default digest size of 32 and 64 respectively. +If used this must be set before calling EVP_MAC_init(). =back @@ -82,6 +98,10 @@ This can be called any time before EVP_MAC_final(). L, L +=head1 HISTORY + +The macros and functions described here were added to OpenSSL 3.0.0. + =head1 COPYRIGHT Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. diff --git a/include/openssl/evp.h b/include/openssl/evp.h index 940a4b1..23f07ea 100644 --- a/include/openssl/evp.h +++ b/include/openssl/evp.h @@ -993,6 +993,8 @@ void EVP_MD_do_all_sorted(void (*fn) /* MAC stuff */ +# define EVP_MAC_BLAKE2B NID_blake2bmac +# define EVP_MAC_BLAKE2S NID_blake2smac # define EVP_MAC_CMAC NID_cmac # define EVP_MAC_GMAC NID_gmac # define EVP_MAC_HMAC NID_hmac @@ -1037,6 +1039,7 @@ void EVP_MAC_do_all_sorted(void (*fn) # define EVP_MAC_CTRL_SET_IV 0x07 /* unsigned char *, size_t */ # define EVP_MAC_CTRL_SET_CUSTOM 0x08 /* unsigned char *, size_t */ # define EVP_MAC_CTRL_SET_XOF 0x09 /* int */ +# define EVP_MAC_CTRL_SET_SALT 0x0a /* unsigned char *, size_t */ /* PKEY stuff */ int EVP_PKEY_decrypt_old(unsigned char *dec_key, diff --git a/include/openssl/evperr.h b/include/openssl/evperr.h index 0f78d36..d3ed5b5 100644 --- a/include/openssl/evperr.h +++ b/include/openssl/evperr.h @@ -32,6 +32,10 @@ int ERR_load_EVP_strings(void); # define EVP_F_ARIA_GCM_INIT_KEY 176 # define EVP_F_ARIA_INIT_KEY 185 # define EVP_F_B64_NEW 198 +# define EVP_F_BLAKE2B_MAC_CTRL 220 +# define EVP_F_BLAKE2B_MAC_INIT 221 +# define EVP_F_BLAKE2S_MAC_CTRL 222 +# define EVP_F_BLAKE2S_MAC_INIT 223 # define EVP_F_CAMELLIA_INIT_KEY 159 # define EVP_F_CHACHA20_POLY1305_CTRL 182 # define EVP_F_CMLL_T4_INIT_KEY 179 @@ -168,6 +172,7 @@ int ERR_load_EVP_strings(void); # define EVP_R_INVALID_KEY 163 # define EVP_R_INVALID_KEY_LENGTH 130 # define EVP_R_INVALID_OPERATION 148 +# define EVP_R_INVALID_SALT_LENGTH 186 # define EVP_R_KEYGEN_FAILURE 120 # define EVP_R_KEY_SETUP_FAILED 180 # define EVP_R_MEMORY_LIMIT_EXCEEDED 172 diff --git a/include/openssl/obj_mac.h b/include/openssl/obj_mac.h index 242eaeb..97b2204 100644 --- a/include/openssl/obj_mac.h +++ b/include/openssl/obj_mac.h @@ -57,6 +57,14 @@ #define LN_kmac256 "kmac256" #define NID_kmac256 1197 +#define SN_blake2bmac "BLAKE2BMAC" +#define LN_blake2bmac "blake2bmac" +#define NID_blake2bmac 1201 + +#define SN_blake2smac "BLAKE2SMAC" +#define LN_blake2smac "blake2smac" +#define NID_blake2smac 1202 + #define SN_hmac_md5 "HMAC-MD5" #define LN_hmac_md5 "hmac-md5" #define NID_hmac_md5 780 diff --git a/test/evp_test.c b/test/evp_test.c index eaedab2..932b03c 100644 --- a/test/evp_test.c +++ b/test/evp_test.c @@ -864,6 +864,9 @@ typedef struct mac_data_st { size_t output_len; unsigned char *custom; size_t custom_len; + /* MAC salt (blake2) */ + unsigned char *salt; + size_t salt_len; /* Collection of controls */ STACK_OF(OPENSSL_STRING) *controls; } MAC_DATA; @@ -947,6 +950,7 @@ static void mac_test_cleanup(EVP_TEST *t) OPENSSL_free(mdat->key); OPENSSL_free(mdat->iv); OPENSSL_free(mdat->custom); + OPENSSL_free(mdat->salt); OPENSSL_free(mdat->input); OPENSSL_free(mdat->output); } @@ -962,6 +966,8 @@ static int mac_test_parse(EVP_TEST *t, return parse_bin(value, &mdata->iv, &mdata->iv_len); if (strcmp(keyword, "Custom") == 0) return parse_bin(value, &mdata->custom, &mdata->custom_len); + if (strcmp(keyword, "Salt") == 0) + return parse_bin(value, &mdata->salt, &mdata->salt_len); if (strcmp(keyword, "Algorithm") == 0) { mdata->alg = OPENSSL_strdup(value); if (!mdata->alg) @@ -1156,6 +1162,18 @@ static int mac_test_run_mac(EVP_TEST *t) } } + if (expected->salt != NULL) { + rv = EVP_MAC_ctrl(ctx, EVP_MAC_CTRL_SET_SALT, + expected->salt, expected->salt_len); + if (rv == -2) { + t->err = "MAC_CTRL_INVALID"; + goto err; + } else if (rv <= 0) { + t->err = "MAC_CTRL_ERROR"; + goto err; + } + } + if (expected->iv != NULL) { rv = EVP_MAC_ctrl(ctx, EVP_MAC_CTRL_SET_IV, expected->iv, expected->iv_len); @@ -1168,10 +1186,6 @@ static int mac_test_run_mac(EVP_TEST *t) } } - if (!EVP_MAC_init(ctx)) { - t->err = "MAC_INIT_ERROR"; - goto err; - } for (i = 0; i < sk_OPENSSL_STRING_num(expected->controls); i++) { char *p, *tmpval; char *value = sk_OPENSSL_STRING_value(expected->controls, i); @@ -1193,6 +1207,10 @@ static int mac_test_run_mac(EVP_TEST *t) goto err; } } + if (!EVP_MAC_init(ctx)) { + t->err = "MAC_INIT_ERROR"; + goto err; + } if (!EVP_MAC_update(ctx, expected->input, expected->input_len)) { t->err = "MAC_UPDATE_ERROR"; goto err; diff --git a/test/recipes/30-test_evp_data/evpmac.txt b/test/recipes/30-test_evp_data/evpmac.txt index ba691c5..732c8c4 100644 --- a/test/recipes/30-test_evp_data/evpmac.txt +++ b/test/recipes/30-test_evp_data/evpmac.txt @@ -167,6 +167,236 @@ Ctrl = digestsize:13 Key = 000102030405060708090A0B0C0D0E0F Result = EVPPKEYCTXCTRL_ERROR +Title = Keyed BLAKE2 tests (Test vectors from reference implementation) + +MAC = BLAKE2BMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +Input = +Output = 10ebb67700b1868efb4417987acf4690ae9d972fb7a590c2f02871799aaa4786b5e996e8f0f4eb981fc214b005f42d2ff4233499391653df7aefcbc13fc51568 + +MAC = BLAKE2BMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +Input = 00 +Output = 961f6dd1e4dd30f63901690c512e78e4b45e4742ed197c3c5e45c549fd25f2e4187b0bc9fe30492b16b0d0bc4ef9b0f34c7003fac09a5ef1532e69430234cebd + +MAC = BLAKE2BMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +Input = 0001 +Output = da2cfbe2d8409a0f38026113884f84b50156371ae304c4430173d08a99d9fb1b983164a3770706d537f49e0c916d9f32b95cc37a95b99d857436f0232c88a965 + +MAC = BLAKE2BMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +Input = 000102 +Output = 33d0825dddf7ada99b0e7e307104ad07ca9cfd9692214f1561356315e784f3e5a17e364ae9dbb14cb2036df932b77f4b292761365fb328de7afdc6d8998f5fc1 + +MAC = BLAKE2BMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +Input = 00010203 +Output = beaa5a3d08f3807143cf621d95cd690514d0b49efff9c91d24b59241ec0eefa5f60196d407048bba8d2146828ebcb0488d8842fd56bb4f6df8e19c4b4daab8ac + +MAC = BLAKE2BMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +Input = 0001020304 +Output = 098084b51fd13deae5f4320de94a688ee07baea2800486689a8636117b46c1f4c1f6af7f74ae7c857600456a58a3af251dc4723a64cc7c0a5ab6d9cac91c20bb + +MAC = BLAKE2BMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +Input = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9 +Output = 1085d78307b1c4b008c57a2e7e5b234658a0a82e4ff1e4aaac72b312fda0fe27d233bc5b10e9cc17fdc7697b540c7d95eb215a19a1a0e20e1abfa126efd568c7 + +MAC = BLAKE2BMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +Input = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa +Output = 4e5c734c7dde011d83eac2b7347b373594f92d7091b9ca34cb9c6f39bdf5a8d2f134379e16d822f6522170ccf2ddd55c84b9e6c64fc927ac4cf8dfb2a17701f2 + +MAC = BLAKE2BMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +Input = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafb +Output = 695d83bd990a1117b3d0ce06cc888027d12a054c2677fd82f0d4fbfc93575523e7991a5e35a3752e9b70ce62992e268a877744cdd435f5f130869c9a2074b338 + +MAC = BLAKE2BMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +Input = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfc +Output = a6213743568e3b3158b9184301f3690847554c68457cb40fc9a4b8cfd8d4a118c301a07737aeda0f929c68913c5f51c80394f53bff1c3e83b2e40ca97eba9e15 + +MAC = BLAKE2BMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +Input = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfd +Output = d444bfa2362a96df213d070e33fa841f51334e4e76866b8139e8af3bb3398be2dfaddcbc56b9146de9f68118dc5829e74b0c28d7711907b121f9161cb92b69a9 + +MAC = BLAKE2BMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f +Input = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfe +Output = 142709d62e28fcccd0af97fad0f8465b971e82201dc51070faa0372aa43e92484be1c1e73ba10906d5d1853db6a4106e0a7bf9800d373d6dee2d46d62ef2a461 + +MAC = BLAKE2SMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +Input = +Output = 48a8997da407876b3d79c0d92325ad3b89cbb754d86ab71aee047ad345fd2c49 + +MAC = BLAKE2SMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +Input = 00 +Output = 40d15fee7c328830166ac3f918650f807e7e01e177258cdc0a39b11f598066f1 + +MAC = BLAKE2SMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +Input = 0001 +Output = 6bb71300644cd3991b26ccd4d274acd1adeab8b1d7914546c1198bbe9fc9d803 + +MAC = BLAKE2SMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +Input = 000102 +Output = 1d220dbe2ee134661fdf6d9e74b41704710556f2f6e5a091b227697445dbea6b + +MAC = BLAKE2SMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +Input = 00010203 +Output = f6c3fbadb4cc687a0064a5be6e791bec63b868ad62fba61b3757ef9ca52e05b2 + +MAC = BLAKE2SMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +Input = 0001020304 +Output = 49c1f21188dfd769aea0e911dd6b41f14dab109d2b85977aa3088b5c707e8598 + +MAC = BLAKE2SMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +Input = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9 +Output = 9fc5450109e1b779f6c7ae79d56c27635c8dd426c5a9d54e2578db989b8c3b4e + +MAC = BLAKE2SMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +Input = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa +Output = d12bf3732ef4af5c22fa90356af8fc50fcb40f8f2ea5c8594737a3b3d5abdbd7 + +MAC = BLAKE2SMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +Input = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafb +Output = 11030b9289bba5af65260672ab6fee88b87420acef4a1789a2073b7ec2f2a09e + +MAC = BLAKE2SMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +Input = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfc +Output = 69cb192b8444005c8c0ceb12c846860768188cda0aec27a9c8a55cdee2123632 + +MAC = BLAKE2SMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +Input = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfd +Output = db444c15597b5f1a03d1f9edd16e4a9f43a667cc275175dfa2b704e3bb1a9b83 + +MAC = BLAKE2SMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +Input = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfe +Output = 3fb735061abc519dfe979e54c1ee5bfad0a9d858b3315bad34bde999efd724dd + +Title = Custom keyed BLAKE2 tests + +MAC = BLAKE2BMAC +Key = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f +Custom = "email" +Input = "Sample input for keylen The branch master has been updated via f2ed96dac01421f1e660e353e8e257f2d0b7424a (commit) from 8269e44f9e40831a497fe9f31ba1d65aeb49a5c1 (commit) - Log ----------------------------------------------------------------- commit f2ed96dac01421f1e660e353e8e257f2d0b7424a Author: Antoine Salon Date: Wed Feb 6 11:49:19 2019 -0800 Add CHANGES entry for blake2mac Signed-off-by: Antoine Salon Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8172) ----------------------------------------------------------------------- Summary of changes: CHANGES | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES b/CHANGES index 7c678b4..9d712f0 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,9 @@ Changes between 1.1.1 and 3.0.0 [xx XXX xxxx] + *) Add keyed BLAKE2 to EVP_MAC. + [Antoine Salon] + *) Fix a bug in the computation of the endpoint-pair shared secret used by DTLS over SCTP. This breaks interoperability with older versions of OpenSSL like OpenSSL 1.1.0 and OpenSSL 1.0.2. There is a runtime From matt at openssl.org Thu Feb 7 14:29:58 2019 From: matt at openssl.org (Matt Caswell) Date: Thu, 07 Feb 2019 14:29:58 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549549798.356705.25977.nullmailer@dev.openssl.org> The branch master has been updated via ef45aa14c5af024fcb8bef1c9007f3d1c115bd85 (commit) from f2ed96dac01421f1e660e353e8e257f2d0b7424a (commit) - Log ----------------------------------------------------------------- commit ef45aa14c5af024fcb8bef1c9007f3d1c115bd85 Author: Matt Caswell Date: Tue Feb 5 14:25:18 2019 +0000 Make OPENSSL_malloc_init() a no-op Making this a no-op removes a potential infinite loop than can occur in some situations. Fixes #2865 Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8167) ----------------------------------------------------------------------- Summary of changes: doc/man3/OPENSSL_malloc.pod | 6 ++---- include/openssl/crypto.h | 9 ++------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/doc/man3/OPENSSL_malloc.pod b/doc/man3/OPENSSL_malloc.pod index e17ff63..f1de27a 100644 --- a/doc/man3/OPENSSL_malloc.pod +++ b/doc/man3/OPENSSL_malloc.pod @@ -90,10 +90,8 @@ generally macro's that add the standard C B<__FILE__> and B<__LINE__> parameters and call a lower-level B API. Some functions do not add those parameters, but exist for consistency. -OPENSSL_malloc_init() sets the lower-level memory allocation functions -to their default implementation. -It is generally not necessary to call this, except perhaps in certain -shared-library situations. +OPENSSL_malloc_init() does nothing and does not need to be called. It is +included for compatibility with older versions of OpenSSL. OPENSSL_malloc(), OPENSSL_realloc(), and OPENSSL_free() are like the C malloc(), realloc(), and free() functions. diff --git a/include/openssl/crypto.h b/include/openssl/crypto.h index f912302..cbde3d5 100644 --- a/include/openssl/crypto.h +++ b/include/openssl/crypto.h @@ -109,13 +109,8 @@ DEFINE_STACK_OF(void) # define CRYPTO_EX_INDEX_DRBG 15 # define CRYPTO_EX_INDEX__COUNT 16 -/* - * This is the default callbacks, but we can have others as well: this is - * needed in Win32 where the application malloc and the library malloc may - * not be the same. - */ -#define OPENSSL_malloc_init() \ - CRYPTO_set_mem_functions(CRYPTO_malloc, CRYPTO_realloc, CRYPTO_free) +/* No longer needed, so this is a no-op */ +#define OPENSSL_malloc_init() while(0) continue int CRYPTO_mem_ctrl(int mode); From matt at openssl.org Thu Feb 7 14:30:12 2019 From: matt at openssl.org (Matt Caswell) Date: Thu, 07 Feb 2019 14:30:12 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549549812.544946.26899.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via e1cce612a6520555805c25be2539f231c22696d9 (commit) from 3b09585bd67c41445be4be8a84233e5d9a699264 (commit) - Log ----------------------------------------------------------------- commit e1cce612a6520555805c25be2539f231c22696d9 Author: Matt Caswell Date: Tue Feb 5 14:25:18 2019 +0000 Make OPENSSL_malloc_init() a no-op Making this a no-op removes a potential infinite loop than can occur in some situations. Fixes #2865 Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8167) (cherry picked from commit ef45aa14c5af024fcb8bef1c9007f3d1c115bd85) ----------------------------------------------------------------------- Summary of changes: doc/man3/OPENSSL_malloc.pod | 6 ++---- include/openssl/crypto.h | 9 ++------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/doc/man3/OPENSSL_malloc.pod b/doc/man3/OPENSSL_malloc.pod index 049a125..57dc163 100644 --- a/doc/man3/OPENSSL_malloc.pod +++ b/doc/man3/OPENSSL_malloc.pod @@ -90,10 +90,8 @@ generally macro's that add the standard C B<__FILE__> and B<__LINE__> parameters and call a lower-level B API. Some functions do not add those parameters, but exist for consistency. -OPENSSL_malloc_init() sets the lower-level memory allocation functions -to their default implementation. -It is generally not necessary to call this, except perhaps in certain -shared-library situations. +OPENSSL_malloc_init() does nothing and does not need to be called. It is +included for compatibility with older versions of OpenSSL. OPENSSL_malloc(), OPENSSL_realloc(), and OPENSSL_free() are like the C malloc(), realloc(), and free() functions. diff --git a/include/openssl/crypto.h b/include/openssl/crypto.h index 150fc1a..22ad042 100644 --- a/include/openssl/crypto.h +++ b/include/openssl/crypto.h @@ -109,13 +109,8 @@ DEFINE_STACK_OF(void) # define CRYPTO_EX_INDEX_DRBG 15 # define CRYPTO_EX_INDEX__COUNT 16 -/* - * This is the default callbacks, but we can have others as well: this is - * needed in Win32 where the application malloc and the library malloc may - * not be the same. - */ -#define OPENSSL_malloc_init() \ - CRYPTO_set_mem_functions(CRYPTO_malloc, CRYPTO_realloc, CRYPTO_free) +/* No longer needed, so this is a no-op */ +#define OPENSSL_malloc_init() while(0) continue int CRYPTO_mem_ctrl(int mode); From builds at travis-ci.org Thu Feb 7 15:04:55 2019 From: builds at travis-ci.org (Travis CI) Date: Thu, 07 Feb 2019 15:04:55 +0000 Subject: [openssl-commits] Passed: openssl/openssl#22850 (OpenSSL_1_1_1-stable - e1cce61) In-Reply-To: Message-ID: <5c5c4917531aa_43ffa074d53a0225841@4872b5e6-968e-41ba-82ef-aeabc0e28076.mail> Build Update for openssl/openssl ------------------------------------- Build: #22850 Status: Passed Duration: 34 mins and 2 secs Commit: e1cce61 (OpenSSL_1_1_1-stable) Author: Matt Caswell Message: Make OPENSSL_malloc_init() a no-op Making this a no-op removes a potential infinite loop than can occur in some situations. Fixes #2865 Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8167) (cherry picked from commit ef45aa14c5af024fcb8bef1c9007f3d1c115bd85) View the changeset: https://github.com/openssl/openssl/compare/3b09585bd67c...e1cce612a652 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/490078321?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From levitte at openssl.org Thu Feb 7 19:15:34 2019 From: levitte at openssl.org (Richard Levitte) Date: Thu, 07 Feb 2019 19:15:34 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549566934.981941.20261.nullmailer@dev.openssl.org> The branch master has been updated via 03cdfe1efaf2a3b5192b8cb3ef331939af7bfeb8 (commit) from ef45aa14c5af024fcb8bef1c9007f3d1c115bd85 (commit) - Log ----------------------------------------------------------------- commit 03cdfe1efaf2a3b5192b8cb3ef331939af7bfeb8 Author: Richard Levitte Date: Wed Feb 6 20:51:47 2019 +0100 test/drbgtest.c: call OPENSSL_thread_stop() explicitly The manual says this in its notes: ... and therefore applications using static linking should also call OPENSSL_thread_stop() on each thread. ... Fixes #8171 Reviewed-by: Matthias St. Pierre (Merged from https://github.com/openssl/openssl/pull/8173) ----------------------------------------------------------------------- Summary of changes: test/drbgtest.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/drbgtest.c b/test/drbgtest.c index 4546f63..c788f19 100644 --- a/test/drbgtest.c +++ b/test/drbgtest.c @@ -839,6 +839,11 @@ typedef HANDLE thread_t; static DWORD WINAPI thread_run(LPVOID arg) { run_multi_thread_test(); + /* + * Because we're linking with a static library, we must stop each + * thread explicitly, or so says OPENSSL_thread_stop(3) + */ + OPENSSL_thread_stop(); return 0; } @@ -860,6 +865,11 @@ typedef pthread_t thread_t; static void *thread_run(void *arg) { run_multi_thread_test(); + /* + * Because we're linking with a static library, we must stop each + * thread explicitly, or so says OPENSSL_thread_stop(3) + */ + OPENSSL_thread_stop(); return NULL; } From levitte at openssl.org Thu Feb 7 19:16:31 2019 From: levitte at openssl.org (Richard Levitte) Date: Thu, 07 Feb 2019 19:16:31 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549566991.885612.21126.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via eaacc2475044b624a7b3b1ecd9ebe5953a6ff45d (commit) from e1cce612a6520555805c25be2539f231c22696d9 (commit) - Log ----------------------------------------------------------------- commit eaacc2475044b624a7b3b1ecd9ebe5953a6ff45d Author: Richard Levitte Date: Wed Feb 6 20:51:47 2019 +0100 test/drbgtest.c: call OPENSSL_thread_stop() explicitly The manual says this in its notes: ... and therefore applications using static linking should also call OPENSSL_thread_stop() on each thread. ... Fixes #8171 Reviewed-by: Matthias St. Pierre (Merged from https://github.com/openssl/openssl/pull/8173) (cherry picked from commit 03cdfe1efaf2a3b5192b8cb3ef331939af7bfeb8) ----------------------------------------------------------------------- Summary of changes: test/drbgtest.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/drbgtest.c b/test/drbgtest.c index b690475..67fc1aa 100644 --- a/test/drbgtest.c +++ b/test/drbgtest.c @@ -830,6 +830,11 @@ typedef HANDLE thread_t; static DWORD WINAPI thread_run(LPVOID arg) { run_multi_thread_test(); + /* + * Because we're linking with a static library, we must stop each + * thread explicitly, or so says OPENSSL_thread_stop(3) + */ + OPENSSL_thread_stop(); return 0; } @@ -851,6 +856,11 @@ typedef pthread_t thread_t; static void *thread_run(void *arg) { run_multi_thread_test(); + /* + * Because we're linking with a static library, we must stop each + * thread explicitly, or so says OPENSSL_thread_stop(3) + */ + OPENSSL_thread_stop(); return NULL; } From builds at travis-ci.org Thu Feb 7 19:51:32 2019 From: builds at travis-ci.org (Travis CI) Date: Thu, 07 Feb 2019 19:51:32 +0000 Subject: [openssl-commits] Errored: openssl/openssl#22856 (OpenSSL_1_1_1-stable - eaacc24) In-Reply-To: Message-ID: <5c5c8c4473de_43fc6e5d12554723b@1b119410-046b-4325-b48d-ca2e1572b173.mail> Build Update for openssl/openssl ------------------------------------- Build: #22856 Status: Errored Duration: 28 mins and 45 secs Commit: eaacc24 (OpenSSL_1_1_1-stable) Author: Richard Levitte Message: test/drbgtest.c: call OPENSSL_thread_stop() explicitly The manual says this in its notes: ... and therefore applications using static linking should also call OPENSSL_thread_stop() on each thread. ... Fixes #8171 Reviewed-by: Matthias St. Pierre (Merged from https://github.com/openssl/openssl/pull/8173) (cherry picked from commit 03cdfe1efaf2a3b5192b8cb3ef331939af7bfeb8) View the changeset: https://github.com/openssl/openssl/compare/e1cce612a652...eaacc2475044 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/490208022?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Fri Feb 8 04:09:01 2019 From: no-reply at appveyor.com (AppVeyor) Date: Fri, 08 Feb 2019 04:09:01 +0000 Subject: [openssl-commits] Build failed: openssl master.22255 Message-ID: <20190208040901.1.0A79605A6C8CBEFA@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Fri Feb 8 04:42:43 2019 From: no-reply at appveyor.com (AppVeyor) Date: Fri, 08 Feb 2019 04:42:43 +0000 Subject: [openssl-commits] Build failed: openssl master.22256 Message-ID: <20190208044243.1.4A2B5AEF9837F44C@appveyor.com> An HTML attachment was scrubbed... URL: From pauli at openssl.org Fri Feb 8 06:14:17 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Fri, 08 Feb 2019 06:14:17 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549606457.747316.1246.nullmailer@dev.openssl.org> The branch master has been updated via b1522fa5ef676b7af0128eab3eee608af3416182 (commit) from 03cdfe1efaf2a3b5192b8cb3ef331939af7bfeb8 (commit) - Log ----------------------------------------------------------------- commit b1522fa5ef676b7af0128eab3eee608af3416182 Author: Pauli Date: Fri Dec 21 12:03:19 2018 +1000 Address a bug in the DRBG tests where the reseeding wasn't properly reinstantiating the DRBG. Bug reported by Doug Gibbons. Reviewed-by: Paul Yang (Merged from https://github.com/openssl/openssl/pull/8184) ----------------------------------------------------------------------- Summary of changes: test/drbgtest.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/drbgtest.c b/test/drbgtest.c index c788f19..362a1d2 100644 --- a/test/drbgtest.c +++ b/test/drbgtest.c @@ -429,7 +429,7 @@ static int error_check(DRBG_SELFTEST_DATA *td) */ /* Test explicit reseed with too large additional input */ - if (!init(drbg, td, &t) + if (!instantiate(drbg, td, &t) || RAND_DRBG_reseed(drbg, td->adin, drbg->max_adinlen + 1, 0) > 0) goto err; @@ -440,7 +440,7 @@ static int error_check(DRBG_SELFTEST_DATA *td) goto err; /* Test explicit reseed with too much entropy */ - if (!init(drbg, td, &t)) + if (!instantiate(drbg, td, &t)) goto err; t.entropylen = drbg->max_entropylen + 1; if (!TEST_int_le(RAND_DRBG_reseed(drbg, td->adin, td->adinlen, 0), 0) @@ -448,7 +448,7 @@ static int error_check(DRBG_SELFTEST_DATA *td) goto err; /* Test explicit reseed with too little entropy */ - if (!init(drbg, td, &t)) + if (!instantiate(drbg, td, &t)) goto err; t.entropylen = drbg->min_entropylen - 1; if (!TEST_int_le(RAND_DRBG_reseed(drbg, td->adin, td->adinlen, 0), 0) From pauli at openssl.org Fri Feb 8 06:15:16 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Fri, 08 Feb 2019 06:15:16 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549606516.648601.2148.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via ee774d5d3cb38455e8c9d4d73612bf6eebdfa335 (commit) from eaacc2475044b624a7b3b1ecd9ebe5953a6ff45d (commit) - Log ----------------------------------------------------------------- commit ee774d5d3cb38455e8c9d4d73612bf6eebdfa335 Author: Pauli Date: Fri Dec 21 12:03:19 2018 +1000 Address a bug in the DRBG tests where the reseeding wasn't properly reinstantiating the DRBG. Bug reported by Doug Gibbons. Reviewed-by: Paul Yang (Merged from https://github.com/openssl/openssl/pull/8184) (cherry picked from commit b1522fa5ef676b7af0128eab3eee608af3416182) ----------------------------------------------------------------------- Summary of changes: test/drbgtest.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/drbgtest.c b/test/drbgtest.c index 67fc1aa..23556fd 100644 --- a/test/drbgtest.c +++ b/test/drbgtest.c @@ -420,7 +420,7 @@ static int error_check(DRBG_SELFTEST_DATA *td) */ /* Test explicit reseed with too large additional input */ - if (!init(drbg, td, &t) + if (!instantiate(drbg, td, &t) || RAND_DRBG_reseed(drbg, td->adin, drbg->max_adinlen + 1, 0) > 0) goto err; @@ -431,7 +431,7 @@ static int error_check(DRBG_SELFTEST_DATA *td) goto err; /* Test explicit reseed with too much entropy */ - if (!init(drbg, td, &t)) + if (!instantiate(drbg, td, &t)) goto err; t.entropylen = drbg->max_entropylen + 1; if (!TEST_int_le(RAND_DRBG_reseed(drbg, td->adin, td->adinlen, 0), 0) @@ -439,7 +439,7 @@ static int error_check(DRBG_SELFTEST_DATA *td) goto err; /* Test explicit reseed with too little entropy */ - if (!init(drbg, td, &t)) + if (!instantiate(drbg, td, &t)) goto err; t.entropylen = drbg->min_entropylen - 1; if (!TEST_int_le(RAND_DRBG_reseed(drbg, td->adin, td->adinlen, 0), 0) From builds at travis-ci.org Fri Feb 8 06:46:28 2019 From: builds at travis-ci.org (Travis CI) Date: Fri, 08 Feb 2019 06:46:28 +0000 Subject: [openssl-commits] Passed: openssl/openssl#22863 (OpenSSL_1_1_1-stable - ee774d5) In-Reply-To: Message-ID: <5c5d25c3c6c9a_43fc6e5d12644217729@1b119410-046b-4325-b48d-ca2e1572b173.mail> Build Update for openssl/openssl ------------------------------------- Build: #22863 Status: Passed Duration: 26 mins and 9 secs Commit: ee774d5 (OpenSSL_1_1_1-stable) Author: Pauli Message: Address a bug in the DRBG tests where the reseeding wasn't properly reinstantiating the DRBG. Bug reported by Doug Gibbons. Reviewed-by: Paul Yang (Merged from https://github.com/openssl/openssl/pull/8184) (cherry picked from commit b1522fa5ef676b7af0128eab3eee608af3416182) View the changeset: https://github.com/openssl/openssl/compare/eaacc2475044...ee774d5d3cb3 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/490404919?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Fri Feb 8 07:15:34 2019 From: no-reply at appveyor.com (AppVeyor) Date: Fri, 08 Feb 2019 07:15:34 +0000 Subject: [openssl-commits] Build completed: openssl master.22257 Message-ID: <20190208071534.1.78625F472801AF15@appveyor.com> An HTML attachment was scrubbed... URL: From matt at openssl.org Fri Feb 8 10:08:03 2019 From: matt at openssl.org (Matt Caswell) Date: Fri, 08 Feb 2019 10:08:03 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549620483.244220.24437.nullmailer@dev.openssl.org> The branch master has been updated via 1980ce45d6bdd2b57df7003d6b56b5df560b9064 (commit) via 2aa2beb06cc25c1f8accdc3d87b946205becfd86 (commit) from b1522fa5ef676b7af0128eab3eee608af3416182 (commit) - Log ----------------------------------------------------------------- commit 1980ce45d6bdd2b57df7003d6b56b5df560b9064 Author: Todd Short Date: Wed Feb 6 09:28:22 2019 -0500 Update d2i_PrivateKey documentation Reviewed-by: Paul Yang Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8168) commit 2aa2beb06cc25c1f8accdc3d87b946205becfd86 Author: Todd Short Date: Mon Feb 4 16:04:11 2019 -0500 Fix d2i_PublicKey() for EC keys o2i_ECPublicKey() requires an EC_KEY structure filled with an EC_GROUP. o2i_ECPublicKey() is called by d2i_PublicKey(). In order to fulfill the o2i_ECPublicKey()'s requirement, d2i_PublicKey() needs to be called with an EVP_PKEY with an EC_KEY containing an EC_GROUP. However, the call to EVP_PKEY_set_type() frees any existing key structure inside the EVP_PKEY, thus freeing the EC_KEY with the EC_GROUP that o2i_ECPublicKey() needs. This means you can't d2i_PublicKey() for an EC key... The fix is to check to see if the type is already set appropriately, and if so, not call EVP_PKEY_set_type(). Reviewed-by: Paul Yang Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8168) ----------------------------------------------------------------------- Summary of changes: crypto/asn1/d2i_pu.c | 2 +- doc/man3/d2i_PrivateKey.pod | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/crypto/asn1/d2i_pu.c b/crypto/asn1/d2i_pu.c index 73093a6..8876878 100644 --- a/crypto/asn1/d2i_pu.c +++ b/crypto/asn1/d2i_pu.c @@ -32,7 +32,7 @@ EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, } else ret = *a; - if (!EVP_PKEY_set_type(ret, type)) { + if (type != EVP_PKEY_id(ret) && !EVP_PKEY_set_type(ret, type)) { ASN1err(ASN1_F_D2I_PUBLICKEY, ERR_R_EVP_LIB); goto err; } diff --git a/doc/man3/d2i_PrivateKey.pod b/doc/man3/d2i_PrivateKey.pod index 87ac8a8..eab98b3 100644 --- a/doc/man3/d2i_PrivateKey.pod +++ b/doc/man3/d2i_PrivateKey.pod @@ -50,15 +50,19 @@ If the B<*a> is not NULL when calling d2i_PrivateKey() or d2i_AutoPrivateKey() (i.e. an existing structure is being reused) and the key format is PKCS#8 then B<*a> will be freed and replaced on a successful call. +To decode a key with type B, d2i_PublicKey() requires B<*a> to be +a non-NULL EVP_PKEY structure assigned an EC_KEY structure referencing the proper +EC_GROUP. + =head1 RETURN VALUES -d2i_PrivateKey() and d2i_AutoPrivateKey() return a valid B structure -or B if an error occurs. The error code can be obtained by calling -L. +The d2i_PrivateKey(), d2i_AutoPrivateKey(), d2i_PrivateKey_bio(), d2i_PrivateKey_fp(), +and d2i_PublicKey() functions return a valid B structure or B if an +error occurs. The error code can be obtained by calling L. -i2d_PrivateKey() returns the number of bytes successfully encoded or a -negative value if an error occurs. The error code can be obtained by calling -L. +i2d_PrivateKey() and i2d_PublicKey() return the number of bytes successfully +encoded or a negative value if an error occurs. The error code can be obtained +by calling L. =head1 SEE ALSO @@ -67,7 +71,7 @@ L =head1 COPYRIGHT -Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy From matt at openssl.org Fri Feb 8 10:08:15 2019 From: matt at openssl.org (Matt Caswell) Date: Fri, 08 Feb 2019 10:08:15 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549620495.682578.25340.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 25ca718150cef41e1c1d9c2c8c58e2b1e2cad3fa (commit) via 3dbec21b4603eb0fde6cd97202d8a374415e1da8 (commit) from ee774d5d3cb38455e8c9d4d73612bf6eebdfa335 (commit) - Log ----------------------------------------------------------------- commit 25ca718150cef41e1c1d9c2c8c58e2b1e2cad3fa Author: Todd Short Date: Wed Feb 6 09:28:22 2019 -0500 Update d2i_PrivateKey documentation Reviewed-by: Paul Yang Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8168) (cherry picked from commit 1980ce45d6bdd2b57df7003d6b56b5df560b9064) commit 3dbec21b4603eb0fde6cd97202d8a374415e1da8 Author: Todd Short Date: Mon Feb 4 16:04:11 2019 -0500 Fix d2i_PublicKey() for EC keys o2i_ECPublicKey() requires an EC_KEY structure filled with an EC_GROUP. o2i_ECPublicKey() is called by d2i_PublicKey(). In order to fulfill the o2i_ECPublicKey()'s requirement, d2i_PublicKey() needs to be called with an EVP_PKEY with an EC_KEY containing an EC_GROUP. However, the call to EVP_PKEY_set_type() frees any existing key structure inside the EVP_PKEY, thus freeing the EC_KEY with the EC_GROUP that o2i_ECPublicKey() needs. This means you can't d2i_PublicKey() for an EC key... The fix is to check to see if the type is already set appropriately, and if so, not call EVP_PKEY_set_type(). Reviewed-by: Paul Yang Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8168) (cherry picked from commit 2aa2beb06cc25c1f8accdc3d87b946205becfd86) ----------------------------------------------------------------------- Summary of changes: crypto/asn1/d2i_pu.c | 2 +- doc/man3/d2i_PrivateKey.pod | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/crypto/asn1/d2i_pu.c b/crypto/asn1/d2i_pu.c index 9452e08..778114d 100644 --- a/crypto/asn1/d2i_pu.c +++ b/crypto/asn1/d2i_pu.c @@ -32,7 +32,7 @@ EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, } else ret = *a; - if (!EVP_PKEY_set_type(ret, type)) { + if (type != EVP_PKEY_id(ret) && !EVP_PKEY_set_type(ret, type)) { ASN1err(ASN1_F_D2I_PUBLICKEY, ERR_R_EVP_LIB); goto err; } diff --git a/doc/man3/d2i_PrivateKey.pod b/doc/man3/d2i_PrivateKey.pod index 13415d5..4e3f20f 100644 --- a/doc/man3/d2i_PrivateKey.pod +++ b/doc/man3/d2i_PrivateKey.pod @@ -50,15 +50,19 @@ If the B<*a> is not NULL when calling d2i_PrivateKey() or d2i_AutoPrivateKey() (i.e. an existing structure is being reused) and the key format is PKCS#8 then B<*a> will be freed and replaced on a successful call. +To decode a key with type B, d2i_PublicKey() requires B<*a> to be +a non-NULL EVP_PKEY structure assigned an EC_KEY structure referencing the proper +EC_GROUP. + =head1 RETURN VALUES -d2i_PrivateKey() and d2i_AutoPrivateKey() return a valid B structure -or B if an error occurs. The error code can be obtained by calling -L. +The d2i_PrivateKey(), d2i_AutoPrivateKey(), d2i_PrivateKey_bio(), d2i_PrivateKey_fp(), +and d2i_PublicKey() functions return a valid B structure or B if an +error occurs. The error code can be obtained by calling L. -i2d_PrivateKey() returns the number of bytes successfully encoded or a -negative value if an error occurs. The error code can be obtained by calling -L. +i2d_PrivateKey() and i2d_PublicKey() return the number of bytes successfully +encoded or a negative value if an error occurs. The error code can be obtained +by calling L. =head1 SEE ALSO @@ -67,7 +71,7 @@ L =head1 COPYRIGHT -Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2017-2019 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 From no-reply at appveyor.com Fri Feb 8 17:33:04 2019 From: no-reply at appveyor.com (AppVeyor) Date: Fri, 08 Feb 2019 17:33:04 +0000 Subject: [openssl-commits] Build failed: openssl master.22269 Message-ID: <20190208173304.1.F457C7434F71578F@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Fri Feb 8 18:08:46 2019 From: no-reply at appveyor.com (AppVeyor) Date: Fri, 08 Feb 2019 18:08:46 +0000 Subject: [openssl-commits] Build completed: openssl master.22270 Message-ID: <20190208180846.1.879AB976B1EECCFB@appveyor.com> An HTML attachment was scrubbed... URL: From pauli at openssl.org Sun Feb 10 22:30:52 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Sun, 10 Feb 2019 22:30:52 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549837852.632671.11892.nullmailer@dev.openssl.org> The branch master has been updated via 758229f7d22775d7547e3b3b886b7f6a289c6897 (commit) from 1980ce45d6bdd2b57df7003d6b56b5df560b9064 (commit) - Log ----------------------------------------------------------------- commit 758229f7d22775d7547e3b3b886b7f6a289c6897 Author: Daniel DeFreez Date: Thu Feb 7 09:55:14 2019 -0800 Fix null pointer dereference in ssl_module_init CLA: Trivial Reviewed-by: Paul Yang Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8183) ----------------------------------------------------------------------- Summary of changes: crypto/conf/conf_ssl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crypto/conf/conf_ssl.c b/crypto/conf/conf_ssl.c index a1b24b2..d703f73 100644 --- a/crypto/conf/conf_ssl.c +++ b/crypto/conf/conf_ssl.c @@ -78,6 +78,8 @@ static int ssl_module_init(CONF_IMODULE *md, const CONF *cnf) cnt = sk_CONF_VALUE_num(cmd_lists); ssl_module_free(md); ssl_names = OPENSSL_zalloc(sizeof(*ssl_names) * cnt); + if (ssl_names == NULL) + goto err; ssl_names_count = cnt; for (i = 0; i < ssl_names_count; i++) { struct ssl_conf_name_st *ssl_name = ssl_names + i; From pauli at openssl.org Sun Feb 10 22:33:17 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Sun, 10 Feb 2019 22:33:17 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549837997.815980.12860.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via a12b338f06442573a04932dbedaad3023113ee25 (commit) from 25ca718150cef41e1c1d9c2c8c58e2b1e2cad3fa (commit) - Log ----------------------------------------------------------------- commit a12b338f06442573a04932dbedaad3023113ee25 Author: Daniel DeFreez Date: Thu Feb 7 09:55:14 2019 -0800 Fix null pointer dereference in ssl_module_init CLA: Trivial Reviewed-by: Paul Yang Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8183) (cherry picked from commit 758229f7d22775d7547e3b3b886b7f6a289c6897) ----------------------------------------------------------------------- Summary of changes: crypto/conf/conf_ssl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crypto/conf/conf_ssl.c b/crypto/conf/conf_ssl.c index 024bdb4..8508d2e 100644 --- a/crypto/conf/conf_ssl.c +++ b/crypto/conf/conf_ssl.c @@ -78,6 +78,8 @@ static int ssl_module_init(CONF_IMODULE *md, const CONF *cnf) cnt = sk_CONF_VALUE_num(cmd_lists); ssl_module_free(md); ssl_names = OPENSSL_zalloc(sizeof(*ssl_names) * cnt); + if (ssl_names == NULL) + goto err; ssl_names_count = cnt; for (i = 0; i < ssl_names_count; i++) { struct ssl_conf_name_st *ssl_name = ssl_names + i; From no-reply at appveyor.com Sun Feb 10 22:41:40 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sun, 10 Feb 2019 22:41:40 +0000 Subject: [openssl-commits] Build failed: openssl master.22284 Message-ID: <20190210224140.1.A8355B4DBCA69FA4@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Sun Feb 10 23:36:21 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sun, 10 Feb 2019 23:36:21 +0000 Subject: [openssl-commits] Build completed: openssl master.22285 Message-ID: <20190210233621.1.435044079930A151@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 11 00:45:31 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 11 Feb 2019 00:45:31 +0000 Subject: [openssl-commits] Build failed: openssl master.22287 Message-ID: <20190211004531.1.B6619746A51216F4@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 11 01:26:12 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 11 Feb 2019 01:26:12 +0000 Subject: [openssl-commits] Build failed: openssl master.22291 Message-ID: <20190211012612.1.FBA439469D0541E3@appveyor.com> An HTML attachment was scrubbed... URL: From pauli at openssl.org Mon Feb 11 01:27:01 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Mon, 11 Feb 2019 01:27:01 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549848421.206216.28019.nullmailer@dev.openssl.org> The branch master has been updated via 2beb004b24ff524d1f27e71994cdcfffb85d7075 (commit) from 758229f7d22775d7547e3b3b886b7f6a289c6897 (commit) - Log ----------------------------------------------------------------- commit 2beb004b24ff524d1f27e71994cdcfffb85d7075 Author: Pauli Date: Thu Jan 24 12:22:48 2019 +1000 Fix comment typo Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8196) ----------------------------------------------------------------------- Summary of changes: crypto/rsa/rsa_lib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crypto/rsa/rsa_lib.c b/crypto/rsa/rsa_lib.c index 994978b..0848936 100644 --- a/crypto/rsa/rsa_lib.c +++ b/crypto/rsa/rsa_lib.c @@ -181,7 +181,7 @@ static const unsigned int c1_923 = 0x07b126; /* scale * 1.923 */ static const unsigned int c4_690 = 0x12c28f; /* scale * 4.690 */ /* - * Multiply two scale integers together and rescale the result. + * Multiply two scaled integers together and rescale the result. */ static ossl_inline uint64_t mul2(uint64_t a, uint64_t b) { From no-reply at appveyor.com Mon Feb 11 01:53:47 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 11 Feb 2019 01:53:47 +0000 Subject: [openssl-commits] Build failed: openssl master.22292 Message-ID: <20190211015347.1.61161C77F135C41D@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 11 03:03:52 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 11 Feb 2019 03:03:52 +0000 Subject: [openssl-commits] Build failed: openssl master.22296 Message-ID: <20190211030352.1.B2445B5E23183878@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 11 03:27:21 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 11 Feb 2019 03:27:21 +0000 Subject: [openssl-commits] Build completed: openssl master.22297 Message-ID: <20190211032721.1.A535732B24F6B099@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 11 12:10:54 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 11 Feb 2019 12:10:54 +0000 Subject: [openssl-commits] Build failed: openssl master.22325 Message-ID: <20190211121054.1.EC010AADD26F3A58@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 11 12:42:23 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 11 Feb 2019 12:42:23 +0000 Subject: [openssl-commits] Build completed: openssl master.22326 Message-ID: <20190211124223.1.8688EF7F67CA0A1A@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Mon Feb 11 14:24:26 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 14:24:26 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549895066.875635.20052.nullmailer@dev.openssl.org> The branch master has been updated via 9d5560331d86c6463e965321f774e4eed582ce0b (commit) from 2beb004b24ff524d1f27e71994cdcfffb85d7075 (commit) - Log ----------------------------------------------------------------- commit 9d5560331d86c6463e965321f774e4eed582ce0b Author: Tomas Mraz Date: Fri Feb 1 14:32:36 2019 +0100 Allow the syntax of the .include directive to optionally have '=' If the old openssl versions not supporting the .include directive load a config file with it, they will bail out with error. This change allows using the .include = syntax which is interpreted as variable assignment by the old openssl config file parser. Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8141) ----------------------------------------------------------------------- Summary of changes: crypto/conf/conf_def.c | 7 ++++++- doc/man5/config.pod | 7 +++++++ test/recipes/90-test_includes.t | 4 +++- .../{includes-file.cnf => includes-eq-ws.cnf} | 2 +- .../90-test_includes_data/{includes-file.cnf => includes-eq.cnf} | 2 +- 5 files changed, 18 insertions(+), 4 deletions(-) copy test/recipes/90-test_includes_data/{includes-file.cnf => includes-eq-ws.cnf} (66%) copy test/recipes/90-test_includes_data/{includes-file.cnf => includes-eq.cnf} (68%) diff --git a/crypto/conf/conf_def.c b/crypto/conf/conf_def.c index 8a34218..594f7c5 100644 --- a/crypto/conf/conf_def.c +++ b/crypto/conf/conf_def.c @@ -348,10 +348,15 @@ static int def_load_bio(CONF *conf, BIO *in, long *line) psection = section; } p = eat_ws(conf, end); - if (strncmp(pname, ".include", 8) == 0 && p != pname + 8) { + if (strncmp(pname, ".include", 8) == 0 + && (p != pname + 8 || *p == '=')) { char *include = NULL; BIO *next; + if (*p == '=') { + p++; + p = eat_ws(conf, p); + } trim_ws(conf, p); if (!str_copy(conf, psection, &include, p)) goto err; diff --git a/doc/man5/config.pod b/doc/man5/config.pod index 275d96c..3d0842c 100644 --- a/doc/man5/config.pod +++ b/doc/man5/config.pod @@ -42,6 +42,13 @@ working directory so unless the configuration file containing the B<.include> directive is application specific the inclusion will not work as expected. +There can be optional B<=> character and whitespace characters between +B<.include> directive and the path which can be useful in cases the +configuration file needs to be loaded by old OpenSSL versions which do +not support the B<.include> syntax. They would bail out with error +if the B<=> character is not present but with it they just ignore +the include. + Each section in a configuration file consists of a number of name and value pairs of the form B diff --git a/test/recipes/90-test_includes.t b/test/recipes/90-test_includes.t index 5169700..c6a86fc 100644 --- a/test/recipes/90-test_includes.t +++ b/test/recipes/90-test_includes.t @@ -11,11 +11,13 @@ plan skip_all => "test_includes doesn't work without posix-io" if disabled("posix-io"); plan tests => # The number of tests being performed - 3 + 5 + ($^O eq "VMS" ? 2 : 0); ok(run(test(["conf_include_test", data_file("includes.cnf")])), "test directory includes"); ok(run(test(["conf_include_test", data_file("includes-file.cnf")])), "test file includes"); +ok(run(test(["conf_include_test", data_file("includes-eq.cnf")])), "test includes with equal character"); +ok(run(test(["conf_include_test", data_file("includes-eq-ws.cnf")])), "test includes with equal and whitespaces"); if ($^O eq "VMS") { ok(run(test(["conf_include_test", data_file("vms-includes.cnf")])), "test directory includes, VMS syntax"); diff --git a/test/recipes/90-test_includes_data/includes-file.cnf b/test/recipes/90-test_includes_data/includes-eq-ws.cnf similarity index 66% copy from test/recipes/90-test_includes_data/includes-file.cnf copy to test/recipes/90-test_includes_data/includes-eq-ws.cnf index 1737b70..38109a7 100644 --- a/test/recipes/90-test_includes_data/includes-file.cnf +++ b/test/recipes/90-test_includes_data/includes-eq-ws.cnf @@ -2,4 +2,4 @@ # Example configuration file using includes. # -.include includes.cnf +.include = conf-includes diff --git a/test/recipes/90-test_includes_data/includes-file.cnf b/test/recipes/90-test_includes_data/includes-eq.cnf similarity index 68% copy from test/recipes/90-test_includes_data/includes-file.cnf copy to test/recipes/90-test_includes_data/includes-eq.cnf index 1737b70..9d37158 100644 --- a/test/recipes/90-test_includes_data/includes-file.cnf +++ b/test/recipes/90-test_includes_data/includes-eq.cnf @@ -2,4 +2,4 @@ # Example configuration file using includes. # -.include includes.cnf +.include=conf-includes From levitte at openssl.org Mon Feb 11 14:25:11 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 14:25:11 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549895111.546559.9205.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 95f59d398c3f28f7ee50f092106c5910d25f9e30 (commit) from a12b338f06442573a04932dbedaad3023113ee25 (commit) - Log ----------------------------------------------------------------- commit 95f59d398c3f28f7ee50f092106c5910d25f9e30 Author: Tomas Mraz Date: Fri Feb 1 14:32:36 2019 +0100 Allow the syntax of the .include directive to optionally have '=' If the old openssl versions not supporting the .include directive load a config file with it, they will bail out with error. This change allows using the .include = syntax which is interpreted as variable assignment by the old openssl config file parser. Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8141) (cherry picked from commit 9d5560331d86c6463e965321f774e4eed582ce0b) ----------------------------------------------------------------------- Summary of changes: crypto/conf/conf_def.c | 7 ++++++- doc/man5/config.pod | 7 +++++++ test/recipes/90-test_includes.t | 4 +++- .../{includes-file.cnf => includes-eq-ws.cnf} | 2 +- .../90-test_includes_data/{includes-file.cnf => includes-eq.cnf} | 2 +- 5 files changed, 18 insertions(+), 4 deletions(-) copy test/recipes/90-test_includes_data/{includes-file.cnf => includes-eq-ws.cnf} (66%) copy test/recipes/90-test_includes_data/{includes-file.cnf => includes-eq.cnf} (68%) diff --git a/crypto/conf/conf_def.c b/crypto/conf/conf_def.c index 7f0d70e..450eeb9 100644 --- a/crypto/conf/conf_def.c +++ b/crypto/conf/conf_def.c @@ -348,10 +348,15 @@ static int def_load_bio(CONF *conf, BIO *in, long *line) psection = section; } p = eat_ws(conf, end); - if (strncmp(pname, ".include", 8) == 0 && p != pname + 8) { + if (strncmp(pname, ".include", 8) == 0 + && (p != pname + 8 || *p == '=')) { char *include = NULL; BIO *next; + if (*p == '=') { + p++; + p = eat_ws(conf, p); + } trim_ws(conf, p); if (!str_copy(conf, psection, &include, p)) goto err; diff --git a/doc/man5/config.pod b/doc/man5/config.pod index 3e110b0..7f21cdc 100644 --- a/doc/man5/config.pod +++ b/doc/man5/config.pod @@ -42,6 +42,13 @@ working directory so unless the configuration file containing the B<.include> directive is application specific the inclusion will not work as expected. +There can be optional B<=> character and whitespace characters between +B<.include> directive and the path which can be useful in cases the +configuration file needs to be loaded by old OpenSSL versions which do +not support the B<.include> syntax. They would bail out with error +if the B<=> character is not present but with it they just ignore +the include. + Each section in a configuration file consists of a number of name and value pairs of the form B diff --git a/test/recipes/90-test_includes.t b/test/recipes/90-test_includes.t index 5169700..c6a86fc 100644 --- a/test/recipes/90-test_includes.t +++ b/test/recipes/90-test_includes.t @@ -11,11 +11,13 @@ plan skip_all => "test_includes doesn't work without posix-io" if disabled("posix-io"); plan tests => # The number of tests being performed - 3 + 5 + ($^O eq "VMS" ? 2 : 0); ok(run(test(["conf_include_test", data_file("includes.cnf")])), "test directory includes"); ok(run(test(["conf_include_test", data_file("includes-file.cnf")])), "test file includes"); +ok(run(test(["conf_include_test", data_file("includes-eq.cnf")])), "test includes with equal character"); +ok(run(test(["conf_include_test", data_file("includes-eq-ws.cnf")])), "test includes with equal and whitespaces"); if ($^O eq "VMS") { ok(run(test(["conf_include_test", data_file("vms-includes.cnf")])), "test directory includes, VMS syntax"); diff --git a/test/recipes/90-test_includes_data/includes-file.cnf b/test/recipes/90-test_includes_data/includes-eq-ws.cnf similarity index 66% copy from test/recipes/90-test_includes_data/includes-file.cnf copy to test/recipes/90-test_includes_data/includes-eq-ws.cnf index 1737b70..38109a7 100644 --- a/test/recipes/90-test_includes_data/includes-file.cnf +++ b/test/recipes/90-test_includes_data/includes-eq-ws.cnf @@ -2,4 +2,4 @@ # Example configuration file using includes. # -.include includes.cnf +.include = conf-includes diff --git a/test/recipes/90-test_includes_data/includes-file.cnf b/test/recipes/90-test_includes_data/includes-eq.cnf similarity index 68% copy from test/recipes/90-test_includes_data/includes-file.cnf copy to test/recipes/90-test_includes_data/includes-eq.cnf index 1737b70..9d37158 100644 --- a/test/recipes/90-test_includes_data/includes-file.cnf +++ b/test/recipes/90-test_includes_data/includes-eq.cnf @@ -2,4 +2,4 @@ # Example configuration file using includes. # -.include includes.cnf +.include=conf-includes From levitte at openssl.org Mon Feb 11 14:33:09 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 14:33:09 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549895589.099495.17885.nullmailer@dev.openssl.org> The branch master has been updated via a43ce58f5569a160272c492c680f2e42d38ec769 (commit) from 9d5560331d86c6463e965321f774e4eed582ce0b (commit) - Log ----------------------------------------------------------------- commit a43ce58f5569a160272c492c680f2e42d38ec769 Author: Shane Lontis Date: Thu Aug 16 12:36:01 2018 +1000 Updated test command line parsing to support commmon commands Reviewed-by: Paul Dale Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/6975) ----------------------------------------------------------------------- Summary of changes: apps/apps.c | 270 ++++---------------------- apps/apps.h | 362 +---------------------------------- apps/apps_ui.c | 197 +++++++++++++++++++ apps/apps_ui.h | 28 +++ apps/build.info | 3 +- crypto/conf/conf_lcl.h => apps/fmt.c | 8 +- apps/fmt.h | 44 +++++ apps/opt.c | 190 +++++++++++------- apps/{apps.h => opt.h} | 316 ++---------------------------- test/asynciotest.c | 2 + test/bftest.c | 47 +++-- test/bioprinttest.c | 33 +++- test/bntest.c | 11 ++ test/build.info | 11 +- test/clienthellotest.c | 2 + test/cmsapitest.c | 11 ++ test/conf_include_test.c | 36 +++- test/curve448_internal_test.c | 52 +++-- test/d2i_test.c | 6 +- test/danetest.c | 6 +- test/dtlstest.c | 2 + test/ecstresstest.c | 62 +++--- test/evp_test.c | 6 +- test/fatalerrtest.c | 2 + test/gosttest.c | 2 + test/ocspapitest.c | 4 +- test/recipes/90-test_includes.t | 2 +- test/recordlentest.c | 2 + test/ssl_test.c | 2 + test/ssl_test_ctx_test.c | 6 +- test/sslapitest.c | 3 + test/sslbuffertest.c | 2 + test/sslcorrupttest.c | 6 +- test/testutil.h | 95 +++++++-- test/testutil/driver.c | 179 +++++++++++++++-- test/testutil/main.c | 86 +-------- test/testutil/options.c | 64 +++++++ test/testutil/test_options.c | 21 ++ test/testutil/tu_local.h | 12 +- test/tls13ccstest.c | 2 + test/uitest.c | 6 +- test/v3ext.c | 4 +- test/verify_extra_test.c | 6 +- test/x509_check_cert_pkey_test.c | 17 +- test/x509_dup_cert_test.c | 8 +- test/x509aux.c | 7 +- 46 files changed, 1061 insertions(+), 1182 deletions(-) create mode 100644 apps/apps_ui.c create mode 100644 apps/apps_ui.h copy crypto/conf/conf_lcl.h => apps/fmt.c (59%) create mode 100644 apps/fmt.h copy apps/{apps.h => opt.h} (56%) create mode 100644 test/testutil/options.c create mode 100644 test/testutil/test_options.c diff --git a/apps/apps.c b/apps/apps.c index 39535e9..44a90a3 100644 --- a/apps/apps.c +++ b/apps/apps.c @@ -54,9 +54,6 @@ typedef struct { unsigned long mask; } NAME_EX_TBL; -static UI_METHOD *ui_method = NULL; -static const UI_METHOD *ui_fallback_method = NULL; - static int set_table_opts(unsigned long *flags, const char *arg, const NAME_EX_TBL * in_tbl); static int set_multi_opts(unsigned long *flags, const char *arg, @@ -173,179 +170,12 @@ int dump_cert_text(BIO *out, X509 *x) return 0; } -static int ui_open(UI *ui) -{ - int (*opener)(UI *ui) = UI_method_get_opener(ui_fallback_method); - - if (opener) - return opener(ui); - return 1; -} - -static int ui_read(UI *ui, UI_STRING *uis) -{ - int (*reader)(UI *ui, UI_STRING *uis) = NULL; - - if (UI_get_input_flags(uis) & UI_INPUT_FLAG_DEFAULT_PWD - && UI_get0_user_data(ui)) { - switch (UI_get_string_type(uis)) { - case UIT_PROMPT: - case UIT_VERIFY: - { - const char *password = - ((PW_CB_DATA *)UI_get0_user_data(ui))->password; - if (password && password[0] != '\0') { - UI_set_result(ui, uis, password); - return 1; - } - } - break; - case UIT_NONE: - case UIT_BOOLEAN: - case UIT_INFO: - case UIT_ERROR: - break; - } - } - - reader = UI_method_get_reader(ui_fallback_method); - if (reader) - return reader(ui, uis); - return 1; -} - -static int ui_write(UI *ui, UI_STRING *uis) -{ - int (*writer)(UI *ui, UI_STRING *uis) = NULL; - - if (UI_get_input_flags(uis) & UI_INPUT_FLAG_DEFAULT_PWD - && UI_get0_user_data(ui)) { - switch (UI_get_string_type(uis)) { - case UIT_PROMPT: - case UIT_VERIFY: - { - const char *password = - ((PW_CB_DATA *)UI_get0_user_data(ui))->password; - if (password && password[0] != '\0') - return 1; - } - break; - case UIT_NONE: - case UIT_BOOLEAN: - case UIT_INFO: - case UIT_ERROR: - break; - } - } - - writer = UI_method_get_writer(ui_fallback_method); - if (writer) - return writer(ui, uis); - return 1; -} - -static int ui_close(UI *ui) -{ - int (*closer)(UI *ui) = UI_method_get_closer(ui_fallback_method); - - if (closer) - return closer(ui); - return 1; -} - -int setup_ui_method(void) -{ - ui_fallback_method = UI_null(); -#ifndef OPENSSL_NO_UI_CONSOLE - ui_fallback_method = UI_OpenSSL(); -#endif - ui_method = UI_create_method("OpenSSL application user interface"); - UI_method_set_opener(ui_method, ui_open); - UI_method_set_reader(ui_method, ui_read); - UI_method_set_writer(ui_method, ui_write); - UI_method_set_closer(ui_method, ui_close); - return 0; -} - -void destroy_ui_method(void) -{ - if (ui_method) { - UI_destroy_method(ui_method); - ui_method = NULL; - } -} - -const UI_METHOD *get_ui_method(void) -{ - return ui_method; -} - -int password_callback(char *buf, int bufsiz, int verify, PW_CB_DATA *cb_data) -{ - int res = 0; - UI *ui; - int ok = 0; - char *buff = NULL; - int ui_flags = 0; - const char *prompt_info = NULL; - char *prompt; - - if ((ui = UI_new_method(ui_method)) == NULL) - return 0; - - if (cb_data != NULL && cb_data->prompt_info != NULL) - prompt_info = cb_data->prompt_info; - prompt = UI_construct_prompt(ui, "pass phrase", prompt_info); - if (prompt == NULL) { - BIO_printf(bio_err, "Out of memory\n"); - UI_free(ui); - return 0; - } - - ui_flags |= UI_INPUT_FLAG_DEFAULT_PWD; - UI_ctrl(ui, UI_CTRL_PRINT_ERRORS, 1, 0, 0); - - /* We know that there is no previous user data to return to us */ - (void)UI_add_user_data(ui, cb_data); - - ok = UI_add_input_string(ui, prompt, ui_flags, buf, - PW_MIN_LENGTH, bufsiz - 1); - - if (ok >= 0 && verify) { - buff = app_malloc(bufsiz, "password buffer"); - ok = UI_add_verify_string(ui, prompt, ui_flags, buff, - PW_MIN_LENGTH, bufsiz - 1, buf); - } - if (ok >= 0) - do { - ok = UI_process(ui); - } while (ok < 0 && UI_ctrl(ui, UI_CTRL_IS_REDOABLE, 0, 0, 0)); - - OPENSSL_clear_free(buff, (unsigned int)bufsiz); - - if (ok >= 0) - res = strlen(buf); - if (ok == -1) { - BIO_printf(bio_err, "User interface error\n"); - ERR_print_errors(bio_err); - OPENSSL_cleanse(buf, (unsigned int)bufsiz); - res = 0; - } - if (ok == -2) { - BIO_printf(bio_err, "aborted!\n"); - OPENSSL_cleanse(buf, (unsigned int)bufsiz); - res = 0; - } - UI_free(ui); - OPENSSL_free(prompt); - return res; -} - int wrap_password_callback(char *buf, int bufsiz, int verify, void *userdata) { return password_callback(buf, bufsiz, verify, (PW_CB_DATA *)userdata); } + static char *app_get_pass(const char *arg, int keepbio); int app_passwd(const char *arg1, const char *arg2, char **pass1, char **pass2) @@ -725,7 +555,9 @@ EVP_PKEY *load_key(const char *file, int format, int maybe_stdin, } else { #ifndef OPENSSL_NO_ENGINE if (ENGINE_init(e)) { - pkey = ENGINE_load_private_key(e, file, ui_method, &cb_data); + pkey = ENGINE_load_private_key(e, file, + (UI_METHOD *)get_ui_method(), + &cb_data); ENGINE_finish(e); } if (pkey == NULL) { @@ -792,7 +624,8 @@ EVP_PKEY *load_pubkey(const char *file, int format, int maybe_stdin, BIO_printf(bio_err, "no engine specified\n"); } else { #ifndef OPENSSL_NO_ENGINE - pkey = ENGINE_load_public_key(e, file, ui_method, &cb_data); + pkey = ENGINE_load_public_key(e, file, (UI_METHOD *)get_ui_method(), + &cb_data); if (pkey == NULL) { BIO_printf(bio_err, "cannot load %s from engine\n", key_descrip); ERR_print_errors(bio_err); @@ -1295,7 +1128,8 @@ ENGINE *setup_engine(const char *engine, int debug) if (debug) { ENGINE_ctrl(e, ENGINE_CTRL_SET_LOGSTREAM, 0, bio_err, 0); } - ENGINE_ctrl_cmd(e, "SET_USER_INTERFACE", 0, ui_method, 0, 1); + ENGINE_ctrl_cmd(e, "SET_USER_INTERFACE", 0, (void *)get_ui_method(), + 0, 1); if (!ENGINE_set_default(e, ENGINE_METHOD_ALL)) { BIO_printf(bio_err, "can't use that engine\n"); ERR_print_errors(bio_err); @@ -2321,56 +2155,10 @@ int app_access(const char* name, int flag) #endif } -/* app_isdir section */ -#ifdef _WIN32 int app_isdir(const char *name) { - DWORD attr; -# if defined(UNICODE) || defined(_UNICODE) - size_t i, len_0 = strlen(name) + 1; - WCHAR tempname[MAX_PATH]; - - if (len_0 > MAX_PATH) - return -1; - -# if !defined(_WIN32_WCE) || _WIN32_WCE>=101 - if (!MultiByteToWideChar(CP_ACP, 0, name, len_0, tempname, MAX_PATH)) -# endif - for (i = 0; i < len_0; i++) - tempname[i] = (WCHAR)name[i]; - - attr = GetFileAttributes(tempname); -# else - attr = GetFileAttributes(name); -# endif - if (attr == INVALID_FILE_ATTRIBUTES) - return -1; - return ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0); + return opt_isdir(name); } -#else -# include -# ifndef S_ISDIR -# if defined(_S_IFMT) && defined(_S_IFDIR) -# define S_ISDIR(a) (((a) & _S_IFMT) == _S_IFDIR) -# else -# define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR) -# endif -# endif - -int app_isdir(const char *name) -{ -# if defined(S_ISDIR) - struct stat st; - - if (stat(name, &st) == 0) - return S_ISDIR(st.st_mode); - else - return -1; -# else - return -1; -# endif -} -#endif /* raw_read|write section */ #if defined(__VMS) @@ -2443,21 +2231,16 @@ int raw_write_stdout(const void *buf, int siz) #endif /* - * Centralized handling if input and output files with format specification + * Centralized handling of input and output files with format specification * The format is meant to show what the input and output is supposed to be, * and is therefore a show of intent more than anything else. However, it - * does impact behavior on some platform, such as differentiating between + * does impact behavior on some platforms, such as differentiating between * text and binary input/output on non-Unix platforms */ -static int istext(int format) -{ - return (format & B_FORMAT_TEXT) == B_FORMAT_TEXT; -} - BIO *dup_bio_in(int format) { return BIO_new_fp(stdin, - BIO_NOCLOSE | (istext(format) ? BIO_FP_TEXT : 0)); + BIO_NOCLOSE | (FMT_istext(format) ? BIO_FP_TEXT : 0)); } static BIO_METHOD *prefix_method = NULL; @@ -2465,15 +2248,15 @@ static BIO_METHOD *prefix_method = NULL; BIO *dup_bio_out(int format) { BIO *b = BIO_new_fp(stdout, - BIO_NOCLOSE | (istext(format) ? BIO_FP_TEXT : 0)); + BIO_NOCLOSE | (FMT_istext(format) ? BIO_FP_TEXT : 0)); void *prefix = NULL; #ifdef OPENSSL_SYS_VMS - if (istext(format)) + if (FMT_istext(format)) b = BIO_push(BIO_new(BIO_f_linebuffer()), b); #endif - if (istext(format) && (prefix = getenv("HARNESS_OSSL_PREFIX")) != NULL) { + if (FMT_istext(format) && (prefix = getenv("HARNESS_OSSL_PREFIX")) != NULL) { if (prefix_method == NULL) prefix_method = apps_bf_prefix(); b = BIO_push(BIO_new(prefix_method), b); @@ -2486,9 +2269,9 @@ BIO *dup_bio_out(int format) BIO *dup_bio_err(int format) { BIO *b = BIO_new_fp(stderr, - BIO_NOCLOSE | (istext(format) ? BIO_FP_TEXT : 0)); + BIO_NOCLOSE | (FMT_istext(format) ? BIO_FP_TEXT : 0)); #ifdef OPENSSL_SYS_VMS - if (istext(format)) + if (FMT_istext(format)) b = BIO_push(BIO_new(BIO_f_linebuffer()), b); #endif return b; @@ -2525,11 +2308,11 @@ static const char *modestr(char mode, int format) switch (mode) { case 'a': - return istext(format) ? "a" : "ab"; + return FMT_istext(format) ? "a" : "ab"; case 'r': - return istext(format) ? "r" : "rb"; + return FMT_istext(format) ? "r" : "rb"; case 'w': - return istext(format) ? "w" : "wb"; + return FMT_istext(format) ? "w" : "wb"; } /* The assert above should make sure we never reach this point */ return NULL; @@ -2567,7 +2350,7 @@ BIO *bio_open_owner(const char *filename, int format, int private) #ifdef O_TRUNC mode |= O_TRUNC; #endif - textmode = istext(format); + textmode = FMT_istext(format); if (!textmode) { #ifdef O_BINARY mode |= O_BINARY; @@ -2746,3 +2529,14 @@ void make_uppercase(char *string) for (i = 0; string[i] != '\0'; i++) string[i] = toupper((unsigned char)string[i]); } + +int opt_printf_stderr(const char *fmt, ...) +{ + va_list ap; + int ret; + + va_start(ap, fmt); + ret = BIO_vprintf(bio_err, fmt, ap); + va_end(ap); + return ret; +} diff --git a/apps/apps.h b/apps/apps.h index 460188d..da8eae2 100644 --- a/apps/apps.h +++ b/apps/apps.h @@ -29,6 +29,9 @@ # include # include # include +# include "apps_ui.h" +# include "opt.h" +# include "fmt.h" # if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WINCE) # define openssl_fdset(a,b) FD_SET((unsigned int)a, b) @@ -88,330 +91,6 @@ void corrupt_signature(const ASN1_STRING *signature); int set_cert_times(X509 *x, const char *startdate, const char *enddate, int days); -/* - * Common verification options. - */ -# define OPT_V_ENUM \ - OPT_V__FIRST=2000, \ - OPT_V_POLICY, OPT_V_PURPOSE, OPT_V_VERIFY_NAME, OPT_V_VERIFY_DEPTH, \ - OPT_V_ATTIME, OPT_V_VERIFY_HOSTNAME, OPT_V_VERIFY_EMAIL, \ - OPT_V_VERIFY_IP, OPT_V_IGNORE_CRITICAL, OPT_V_ISSUER_CHECKS, \ - OPT_V_CRL_CHECK, OPT_V_CRL_CHECK_ALL, OPT_V_POLICY_CHECK, \ - OPT_V_EXPLICIT_POLICY, OPT_V_INHIBIT_ANY, OPT_V_INHIBIT_MAP, \ - OPT_V_X509_STRICT, OPT_V_EXTENDED_CRL, OPT_V_USE_DELTAS, \ - OPT_V_POLICY_PRINT, OPT_V_CHECK_SS_SIG, OPT_V_TRUSTED_FIRST, \ - OPT_V_SUITEB_128_ONLY, OPT_V_SUITEB_128, OPT_V_SUITEB_192, \ - OPT_V_PARTIAL_CHAIN, OPT_V_NO_ALT_CHAINS, OPT_V_NO_CHECK_TIME, \ - OPT_V_VERIFY_AUTH_LEVEL, OPT_V_ALLOW_PROXY_CERTS, \ - OPT_V__LAST - -# define OPT_V_OPTIONS \ - { "policy", OPT_V_POLICY, 's', "adds policy to the acceptable policy set"}, \ - { "purpose", OPT_V_PURPOSE, 's', \ - "certificate chain purpose"}, \ - { "verify_name", OPT_V_VERIFY_NAME, 's', "verification policy name"}, \ - { "verify_depth", OPT_V_VERIFY_DEPTH, 'n', \ - "chain depth limit" }, \ - { "auth_level", OPT_V_VERIFY_AUTH_LEVEL, 'n', \ - "chain authentication security level" }, \ - { "attime", OPT_V_ATTIME, 'M', "verification epoch time" }, \ - { "verify_hostname", OPT_V_VERIFY_HOSTNAME, 's', \ - "expected peer hostname" }, \ - { "verify_email", OPT_V_VERIFY_EMAIL, 's', \ - "expected peer email" }, \ - { "verify_ip", OPT_V_VERIFY_IP, 's', \ - "expected peer IP address" }, \ - { "ignore_critical", OPT_V_IGNORE_CRITICAL, '-', \ - "permit unhandled critical extensions"}, \ - { "issuer_checks", OPT_V_ISSUER_CHECKS, '-', "(deprecated)"}, \ - { "crl_check", OPT_V_CRL_CHECK, '-', "check leaf certificate revocation" }, \ - { "crl_check_all", OPT_V_CRL_CHECK_ALL, '-', "check full chain revocation" }, \ - { "policy_check", OPT_V_POLICY_CHECK, '-', "perform rfc5280 policy checks"}, \ - { "explicit_policy", OPT_V_EXPLICIT_POLICY, '-', \ - "set policy variable require-explicit-policy"}, \ - { "inhibit_any", OPT_V_INHIBIT_ANY, '-', \ - "set policy variable inhibit-any-policy"}, \ - { "inhibit_map", OPT_V_INHIBIT_MAP, '-', \ - "set policy variable inhibit-policy-mapping"}, \ - { "x509_strict", OPT_V_X509_STRICT, '-', \ - "disable certificate compatibility work-arounds"}, \ - { "extended_crl", OPT_V_EXTENDED_CRL, '-', \ - "enable extended CRL features"}, \ - { "use_deltas", OPT_V_USE_DELTAS, '-', \ - "use delta CRLs"}, \ - { "policy_print", OPT_V_POLICY_PRINT, '-', \ - "print policy processing diagnostics"}, \ - { "check_ss_sig", OPT_V_CHECK_SS_SIG, '-', \ - "check root CA self-signatures"}, \ - { "trusted_first", OPT_V_TRUSTED_FIRST, '-', \ - "search trust store first (default)" }, \ - { "suiteB_128_only", OPT_V_SUITEB_128_ONLY, '-', "Suite B 128-bit-only mode"}, \ - { "suiteB_128", OPT_V_SUITEB_128, '-', \ - "Suite B 128-bit mode allowing 192-bit algorithms"}, \ - { "suiteB_192", OPT_V_SUITEB_192, '-', "Suite B 192-bit-only mode" }, \ - { "partial_chain", OPT_V_PARTIAL_CHAIN, '-', \ - "accept chains anchored by intermediate trust-store CAs"}, \ - { "no_alt_chains", OPT_V_NO_ALT_CHAINS, '-', "(deprecated)" }, \ - { "no_check_time", OPT_V_NO_CHECK_TIME, '-', "ignore certificate validity time" }, \ - { "allow_proxy_certs", OPT_V_ALLOW_PROXY_CERTS, '-', "allow the use of proxy certificates" } - -# define OPT_V_CASES \ - OPT_V__FIRST: case OPT_V__LAST: break; \ - case OPT_V_POLICY: \ - case OPT_V_PURPOSE: \ - case OPT_V_VERIFY_NAME: \ - case OPT_V_VERIFY_DEPTH: \ - case OPT_V_VERIFY_AUTH_LEVEL: \ - case OPT_V_ATTIME: \ - case OPT_V_VERIFY_HOSTNAME: \ - case OPT_V_VERIFY_EMAIL: \ - case OPT_V_VERIFY_IP: \ - case OPT_V_IGNORE_CRITICAL: \ - case OPT_V_ISSUER_CHECKS: \ - case OPT_V_CRL_CHECK: \ - case OPT_V_CRL_CHECK_ALL: \ - case OPT_V_POLICY_CHECK: \ - case OPT_V_EXPLICIT_POLICY: \ - case OPT_V_INHIBIT_ANY: \ - case OPT_V_INHIBIT_MAP: \ - case OPT_V_X509_STRICT: \ - case OPT_V_EXTENDED_CRL: \ - case OPT_V_USE_DELTAS: \ - case OPT_V_POLICY_PRINT: \ - case OPT_V_CHECK_SS_SIG: \ - case OPT_V_TRUSTED_FIRST: \ - case OPT_V_SUITEB_128_ONLY: \ - case OPT_V_SUITEB_128: \ - case OPT_V_SUITEB_192: \ - case OPT_V_PARTIAL_CHAIN: \ - case OPT_V_NO_ALT_CHAINS: \ - case OPT_V_NO_CHECK_TIME: \ - case OPT_V_ALLOW_PROXY_CERTS - -/* - * Common "extended validation" options. - */ -# define OPT_X_ENUM \ - OPT_X__FIRST=1000, \ - OPT_X_KEY, OPT_X_CERT, OPT_X_CHAIN, OPT_X_CHAIN_BUILD, \ - OPT_X_CERTFORM, OPT_X_KEYFORM, \ - OPT_X__LAST - -# define OPT_X_OPTIONS \ - { "xkey", OPT_X_KEY, '<', "key for Extended certificates"}, \ - { "xcert", OPT_X_CERT, '<', "cert for Extended certificates"}, \ - { "xchain", OPT_X_CHAIN, '<', "chain for Extended certificates"}, \ - { "xchain_build", OPT_X_CHAIN_BUILD, '-', \ - "build certificate chain for the extended certificates"}, \ - { "xcertform", OPT_X_CERTFORM, 'F', \ - "format of Extended certificate (PEM or DER) PEM default " }, \ - { "xkeyform", OPT_X_KEYFORM, 'F', \ - "format of Extended certificate's key (PEM or DER) PEM default"} - -# define OPT_X_CASES \ - OPT_X__FIRST: case OPT_X__LAST: break; \ - case OPT_X_KEY: \ - case OPT_X_CERT: \ - case OPT_X_CHAIN: \ - case OPT_X_CHAIN_BUILD: \ - case OPT_X_CERTFORM: \ - case OPT_X_KEYFORM - -/* - * Common SSL options. - * Any changes here must be coordinated with ../ssl/ssl_conf.c - */ -# define OPT_S_ENUM \ - OPT_S__FIRST=3000, \ - OPT_S_NOSSL3, OPT_S_NOTLS1, OPT_S_NOTLS1_1, OPT_S_NOTLS1_2, \ - OPT_S_NOTLS1_3, OPT_S_BUGS, OPT_S_NO_COMP, OPT_S_NOTICKET, \ - OPT_S_SERVERPREF, OPT_S_LEGACYRENEG, OPT_S_LEGACYCONN, \ - OPT_S_ONRESUMP, OPT_S_NOLEGACYCONN, OPT_S_ALLOW_NO_DHE_KEX, \ - OPT_S_PRIORITIZE_CHACHA, \ - OPT_S_STRICT, OPT_S_SIGALGS, OPT_S_CLIENTSIGALGS, OPT_S_GROUPS, \ - OPT_S_CURVES, OPT_S_NAMEDCURVE, OPT_S_CIPHER, OPT_S_CIPHERSUITES, \ - OPT_S_RECORD_PADDING, OPT_S_DEBUGBROKE, OPT_S_COMP, \ - OPT_S_MINPROTO, OPT_S_MAXPROTO, \ - OPT_S_NO_RENEGOTIATION, OPT_S_NO_MIDDLEBOX, OPT_S__LAST - -# define OPT_S_OPTIONS \ - {"no_ssl3", OPT_S_NOSSL3, '-',"Just disable SSLv3" }, \ - {"no_tls1", OPT_S_NOTLS1, '-', "Just disable TLSv1"}, \ - {"no_tls1_1", OPT_S_NOTLS1_1, '-', "Just disable TLSv1.1" }, \ - {"no_tls1_2", OPT_S_NOTLS1_2, '-', "Just disable TLSv1.2"}, \ - {"no_tls1_3", OPT_S_NOTLS1_3, '-', "Just disable TLSv1.3"}, \ - {"bugs", OPT_S_BUGS, '-', "Turn on SSL bug compatibility"}, \ - {"no_comp", OPT_S_NO_COMP, '-', "Disable SSL/TLS compression (default)" }, \ - {"comp", OPT_S_COMP, '-', "Use SSL/TLS-level compression" }, \ - {"no_ticket", OPT_S_NOTICKET, '-', \ - "Disable use of TLS session tickets"}, \ - {"serverpref", OPT_S_SERVERPREF, '-', "Use server's cipher preferences"}, \ - {"legacy_renegotiation", OPT_S_LEGACYRENEG, '-', \ - "Enable use of legacy renegotiation (dangerous)"}, \ - {"no_renegotiation", OPT_S_NO_RENEGOTIATION, '-', \ - "Disable all renegotiation."}, \ - {"legacy_server_connect", OPT_S_LEGACYCONN, '-', \ - "Allow initial connection to servers that don't support RI"}, \ - {"no_resumption_on_reneg", OPT_S_ONRESUMP, '-', \ - "Disallow session resumption on renegotiation"}, \ - {"no_legacy_server_connect", OPT_S_NOLEGACYCONN, '-', \ - "Disallow initial connection to servers that don't support RI"}, \ - {"allow_no_dhe_kex", OPT_S_ALLOW_NO_DHE_KEX, '-', \ - "In TLSv1.3 allow non-(ec)dhe based key exchange on resumption"}, \ - {"prioritize_chacha", OPT_S_PRIORITIZE_CHACHA, '-', \ - "Prioritize ChaCha ciphers when preferred by clients"}, \ - {"strict", OPT_S_STRICT, '-', \ - "Enforce strict certificate checks as per TLS standard"}, \ - {"sigalgs", OPT_S_SIGALGS, 's', \ - "Signature algorithms to support (colon-separated list)" }, \ - {"client_sigalgs", OPT_S_CLIENTSIGALGS, 's', \ - "Signature algorithms to support for client certificate" \ - " authentication (colon-separated list)" }, \ - {"groups", OPT_S_GROUPS, 's', \ - "Groups to advertise (colon-separated list)" }, \ - {"curves", OPT_S_CURVES, 's', \ - "Groups to advertise (colon-separated list)" }, \ - {"named_curve", OPT_S_NAMEDCURVE, 's', \ - "Elliptic curve used for ECDHE (server-side only)" }, \ - {"cipher", OPT_S_CIPHER, 's', "Specify TLSv1.2 and below cipher list to be used"}, \ - {"ciphersuites", OPT_S_CIPHERSUITES, 's', "Specify TLSv1.3 ciphersuites to be used"}, \ - {"min_protocol", OPT_S_MINPROTO, 's', "Specify the minimum protocol version to be used"}, \ - {"max_protocol", OPT_S_MAXPROTO, 's', "Specify the maximum protocol version to be used"}, \ - {"record_padding", OPT_S_RECORD_PADDING, 's', \ - "Block size to pad TLS 1.3 records to."}, \ - {"debug_broken_protocol", OPT_S_DEBUGBROKE, '-', \ - "Perform all sorts of protocol violations for testing purposes"}, \ - {"no_middlebox", OPT_S_NO_MIDDLEBOX, '-', \ - "Disable TLSv1.3 middlebox compat mode" } - -# define OPT_S_CASES \ - OPT_S__FIRST: case OPT_S__LAST: break; \ - case OPT_S_NOSSL3: \ - case OPT_S_NOTLS1: \ - case OPT_S_NOTLS1_1: \ - case OPT_S_NOTLS1_2: \ - case OPT_S_NOTLS1_3: \ - case OPT_S_BUGS: \ - case OPT_S_NO_COMP: \ - case OPT_S_COMP: \ - case OPT_S_NOTICKET: \ - case OPT_S_SERVERPREF: \ - case OPT_S_LEGACYRENEG: \ - case OPT_S_LEGACYCONN: \ - case OPT_S_ONRESUMP: \ - case OPT_S_NOLEGACYCONN: \ - case OPT_S_ALLOW_NO_DHE_KEX: \ - case OPT_S_PRIORITIZE_CHACHA: \ - case OPT_S_STRICT: \ - case OPT_S_SIGALGS: \ - case OPT_S_CLIENTSIGALGS: \ - case OPT_S_GROUPS: \ - case OPT_S_CURVES: \ - case OPT_S_NAMEDCURVE: \ - case OPT_S_CIPHER: \ - case OPT_S_CIPHERSUITES: \ - case OPT_S_RECORD_PADDING: \ - case OPT_S_NO_RENEGOTIATION: \ - case OPT_S_MINPROTO: \ - case OPT_S_MAXPROTO: \ - case OPT_S_DEBUGBROKE: \ - case OPT_S_NO_MIDDLEBOX - -#define IS_NO_PROT_FLAG(o) \ - (o == OPT_S_NOSSL3 || o == OPT_S_NOTLS1 || o == OPT_S_NOTLS1_1 \ - || o == OPT_S_NOTLS1_2 || o == OPT_S_NOTLS1_3) - -/* - * Random state options. - */ -# define OPT_R_ENUM \ - OPT_R__FIRST=1500, OPT_R_RAND, OPT_R_WRITERAND, OPT_R__LAST - -# define OPT_R_OPTIONS \ - {"rand", OPT_R_RAND, 's', "Load the file(s) into the random number generator"}, \ - {"writerand", OPT_R_WRITERAND, '>', "Write random data to the specified file"} - -# define OPT_R_CASES \ - OPT_R__FIRST: case OPT_R__LAST: break; \ - case OPT_R_RAND: case OPT_R_WRITERAND - -/* - * Option parsing. - */ -extern const char OPT_HELP_STR[]; -extern const char OPT_MORE_STR[]; -typedef struct options_st { - const char *name; - int retval; - /* - * value type: - no value (also the value zero), n number, p positive - * number, u unsigned, l long, s string, < input file, > output file, - * f any format, F der/pem format, E der/pem/engine format identifier. - * l, n and u include zero; p does not. - */ - int valtype; - const char *helpstr; -} OPTIONS; - -/* - * A string/int pairing; widely use for option value lookup, hence the - * name OPT_PAIR. But that name is misleading in s_cb.c, so we also use - * the "generic" name STRINT_PAIR. - */ -typedef struct string_int_pair_st { - const char *name; - int retval; -} OPT_PAIR, STRINT_PAIR; - -/* Flags to pass into opt_format; see FORMAT_xxx, below. */ -# define OPT_FMT_PEMDER (1L << 1) -# define OPT_FMT_PKCS12 (1L << 2) -# define OPT_FMT_SMIME (1L << 3) -# define OPT_FMT_ENGINE (1L << 4) -# define OPT_FMT_MSBLOB (1L << 5) -/* (1L << 6) was OPT_FMT_NETSCAPE, but wasn't used */ -# define OPT_FMT_NSS (1L << 7) -# define OPT_FMT_TEXT (1L << 8) -# define OPT_FMT_HTTP (1L << 9) -# define OPT_FMT_PVK (1L << 10) -# define OPT_FMT_PDE (OPT_FMT_PEMDER | OPT_FMT_ENGINE) -# define OPT_FMT_PDS (OPT_FMT_PEMDER | OPT_FMT_SMIME) -# define OPT_FMT_ANY ( \ - OPT_FMT_PEMDER | OPT_FMT_PKCS12 | OPT_FMT_SMIME | \ - OPT_FMT_ENGINE | OPT_FMT_MSBLOB | OPT_FMT_NSS | \ - OPT_FMT_TEXT | OPT_FMT_HTTP | OPT_FMT_PVK) - -char *opt_progname(const char *argv0); -char *opt_getprog(void); -char *opt_init(int ac, char **av, const OPTIONS * o); -int opt_next(void); -int opt_format(const char *s, unsigned long flags, int *result); -int opt_int(const char *arg, int *result); -int opt_ulong(const char *arg, unsigned long *result); -int opt_long(const char *arg, long *result); -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && \ - defined(INTMAX_MAX) && defined(UINTMAX_MAX) -int opt_imax(const char *arg, intmax_t *result); -int opt_umax(const char *arg, uintmax_t *result); -#else -# define opt_imax opt_long -# define opt_umax opt_ulong -# define intmax_t long -# define uintmax_t unsigned long -#endif -int opt_pair(const char *arg, const OPT_PAIR * pairs, int *result); -int opt_cipher(const char *name, const EVP_CIPHER **cipherp); -int opt_md(const char *name, const EVP_MD **mdp); -char *opt_arg(void); -char *opt_flag(void); -char *opt_unknown(void); -char **opt_rest(void); -int opt_num_rest(void); -int opt_verify(int i, X509_VERIFY_PARAM *vpm); -int opt_rand(int i); -void opt_help(const OPTIONS * list); -int opt_format_error(const char *s, unsigned long flags); - typedef struct args_st { int size; int argc; @@ -430,20 +109,8 @@ char **copy_argv(int *argc, char *argv[]); */ void win32_utf8argv(int *argc, char **argv[]); - -# define PW_MIN_LENGTH 4 -typedef struct pw_cb_data { - const void *password; - const char *prompt_info; -} PW_CB_DATA; - /* We need both wrap and the "real" function because libcrypto uses both. */ int wrap_password_callback(char *buf, int bufsiz, int verify, void *cb_data); -int password_callback(char *buf, int bufsiz, int verify, PW_CB_DATA *cb_data); - -int setup_ui_method(void); -void destroy_ui_method(void); -const UI_METHOD *get_ui_method(void); int chopup_args(ARGS *arg, char *buf); # ifdef HEADER_X509_H @@ -573,29 +240,6 @@ void print_cert_checks(BIO *bio, X509 *x, void store_setup_crl_download(X509_STORE *st); -/* See OPT_FMT_xxx, above. */ -/* On some platforms, it's important to distinguish between text and binary - * files. On some, there might even be specific file formats for different - * contents. The FORMAT_xxx macros are meant to express an intent with the - * file being read or created. - */ -# define B_FORMAT_TEXT 0x8000 -# define FORMAT_UNDEF 0 -# define FORMAT_TEXT (1 | B_FORMAT_TEXT) /* Generic text */ -# define FORMAT_BINARY 2 /* Generic binary */ -# define FORMAT_BASE64 (3 | B_FORMAT_TEXT) /* Base64 */ -# define FORMAT_ASN1 4 /* ASN.1/DER */ -# define FORMAT_PEM (5 | B_FORMAT_TEXT) -# define FORMAT_PKCS12 6 -# define FORMAT_SMIME (7 | B_FORMAT_TEXT) -# define FORMAT_ENGINE 8 /* Not really a file format */ -# define FORMAT_PEMRSA (9 | B_FORMAT_TEXT) /* PEM RSAPubicKey format */ -# define FORMAT_ASN1RSA 10 /* DER RSAPubicKey format */ -# define FORMAT_MSBLOB 11 /* MS Key blob format */ -# define FORMAT_PVK 12 /* MS PVK file format */ -# define FORMAT_HTTP 13 /* Download using HTTP */ -# define FORMAT_NSS 14 /* NSS keylog format */ - # define EXT_COPY_NONE 0 # define EXT_COPY_ADD 1 # define EXT_COPY_ALL 2 diff --git a/apps/apps_ui.c b/apps/apps_ui.c new file mode 100644 index 0000000..bcfe555 --- /dev/null +++ b/apps/apps_ui.c @@ -0,0 +1,197 @@ +/* + * Copyright 1995-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 + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include +#include +#include "apps_ui.h" + +static UI_METHOD *ui_method = NULL; +static const UI_METHOD *ui_fallback_method = NULL; + + +static int ui_open(UI *ui) +{ + int (*opener)(UI *ui) = UI_method_get_opener(ui_fallback_method); + + if (opener) + return opener(ui); + return 1; +} + +static int ui_read(UI *ui, UI_STRING *uis) +{ + int (*reader)(UI *ui, UI_STRING *uis) = NULL; + + if (UI_get_input_flags(uis) & UI_INPUT_FLAG_DEFAULT_PWD + && UI_get0_user_data(ui)) { + switch (UI_get_string_type(uis)) { + case UIT_PROMPT: + case UIT_VERIFY: + { + const char *password = + ((PW_CB_DATA *)UI_get0_user_data(ui))->password; + if (password && password[0] != '\0') { + UI_set_result(ui, uis, password); + return 1; + } + } + break; + case UIT_NONE: + case UIT_BOOLEAN: + case UIT_INFO: + case UIT_ERROR: + break; + } + } + + reader = UI_method_get_reader(ui_fallback_method); + if (reader) + return reader(ui, uis); + return 1; +} + +static int ui_write(UI *ui, UI_STRING *uis) +{ + int (*writer)(UI *ui, UI_STRING *uis) = NULL; + + if (UI_get_input_flags(uis) & UI_INPUT_FLAG_DEFAULT_PWD + && UI_get0_user_data(ui)) { + switch (UI_get_string_type(uis)) { + case UIT_PROMPT: + case UIT_VERIFY: + { + const char *password = + ((PW_CB_DATA *)UI_get0_user_data(ui))->password; + if (password && password[0] != '\0') + return 1; + } + break; + case UIT_NONE: + case UIT_BOOLEAN: + case UIT_INFO: + case UIT_ERROR: + break; + } + } + + writer = UI_method_get_writer(ui_fallback_method); + if (writer) + return writer(ui, uis); + return 1; +} + +static int ui_close(UI *ui) +{ + int (*closer)(UI *ui) = UI_method_get_closer(ui_fallback_method); + + if (closer) + return closer(ui); + return 1; +} + +int setup_ui_method(void) +{ + ui_fallback_method = UI_null(); +#ifndef OPENSSL_NO_UI_CONSOLE + ui_fallback_method = UI_OpenSSL(); +#endif + ui_method = UI_create_method("OpenSSL application user interface"); + UI_method_set_opener(ui_method, ui_open); + UI_method_set_reader(ui_method, ui_read); + UI_method_set_writer(ui_method, ui_write); + UI_method_set_closer(ui_method, ui_close); + return 0; +} + +void destroy_ui_method(void) +{ + if (ui_method) { + UI_destroy_method(ui_method); + ui_method = NULL; + } +} + +const UI_METHOD *get_ui_method(void) +{ + return ui_method; +} + +static void *ui_malloc(int sz, const char *what) +{ + void *vp = OPENSSL_malloc(sz); + + if (vp == NULL) { + BIO_printf(bio_err, "Could not allocate %d bytes for %s\n", sz, what); + ERR_print_errors(bio_err); + exit(1); + } + return vp; +} + +int password_callback(char *buf, int bufsiz, int verify, PW_CB_DATA *cb_data) +{ + int res = 0; + UI *ui; + int ok = 0; + char *buff = NULL; + int ui_flags = 0; + const char *prompt_info = NULL; + char *prompt; + + if ((ui = UI_new_method(ui_method)) == NULL) + return 0; + + if (cb_data != NULL && cb_data->prompt_info != NULL) + prompt_info = cb_data->prompt_info; + prompt = UI_construct_prompt(ui, "pass phrase", prompt_info); + if (prompt == NULL) { + BIO_printf(bio_err, "Out of memory\n"); + UI_free(ui); + return 0; + } + + ui_flags |= UI_INPUT_FLAG_DEFAULT_PWD; + UI_ctrl(ui, UI_CTRL_PRINT_ERRORS, 1, 0, 0); + + /* We know that there is no previous user data to return to us */ + (void)UI_add_user_data(ui, cb_data); + + ok = UI_add_input_string(ui, prompt, ui_flags, buf, + PW_MIN_LENGTH, bufsiz - 1); + + if (ok >= 0 && verify) { + buff = ui_malloc(bufsiz, "password buffer"); + ok = UI_add_verify_string(ui, prompt, ui_flags, buff, + PW_MIN_LENGTH, bufsiz - 1, buf); + } + if (ok >= 0) + do { + ok = UI_process(ui); + } while (ok < 0 && UI_ctrl(ui, UI_CTRL_IS_REDOABLE, 0, 0, 0)); + + OPENSSL_clear_free(buff, (unsigned int)bufsiz); + + if (ok >= 0) + res = strlen(buf); + if (ok == -1) { + BIO_printf(bio_err, "User interface error\n"); + ERR_print_errors(bio_err); + OPENSSL_cleanse(buf, (unsigned int)bufsiz); + res = 0; + } + if (ok == -2) { + BIO_printf(bio_err, "aborted!\n"); + OPENSSL_cleanse(buf, (unsigned int)bufsiz); + res = 0; + } + UI_free(ui); + OPENSSL_free(prompt); + return res; +} diff --git a/apps/apps_ui.h b/apps/apps_ui.h new file mode 100644 index 0000000..36e0864 --- /dev/null +++ b/apps/apps_ui.h @@ -0,0 +1,28 @@ +/* + * Copyright 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 + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_APPS_UI_H +# define HEADER_APPS_UI_H + + +# define PW_MIN_LENGTH 4 +typedef struct pw_cb_data { + const void *password; + const char *prompt_info; +} PW_CB_DATA; + +int password_callback(char *buf, int bufsiz, int verify, PW_CB_DATA *cb_data); + +int setup_ui_method(void); +void destroy_ui_method(void); +const UI_METHOD *get_ui_method(void); + +extern BIO *bio_err; + +#endif diff --git a/apps/build.info b/apps/build.info index 0577f76..7a5e876 100644 --- a/apps/build.info +++ b/apps/build.info @@ -7,7 +7,8 @@ s_client.c s_server.c s_time.c sess_id.c smime.c speed.c spkac.c srp.c ts.c verify.c version.c x509.c rehash.c storeutl.c); our @apps_lib_src = - ( qw(apps.c opt.c s_cb.c s_socket.c app_rand.c bf_prefix.c), + ( qw(apps.c apps_ui.c opt.c fmt.c s_cb.c s_socket.c app_rand.c + bf_prefix.c), split(/\s+/, $target{apps_aux_src}) ); our @apps_init_src = split(/\s+/, $target{apps_init_src}); "" -} diff --git a/crypto/conf/conf_lcl.h b/apps/fmt.c similarity index 59% copy from crypto/conf/conf_lcl.h copy to apps/fmt.c index 1bc9c70..5cb4c04 100644 --- a/crypto/conf/conf_lcl.h +++ b/apps/fmt.c @@ -1,11 +1,15 @@ /* * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. * - * Licensed under the Apache License 2.0 (the "License"). You may not use + * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -void conf_add_ssl_module(void); +#include "fmt.h" +int FMT_istext(int format) +{ + return (format & B_FORMAT_TEXT) == B_FORMAT_TEXT; +} diff --git a/apps/fmt.h b/apps/fmt.h new file mode 100644 index 0000000..538a20a --- /dev/null +++ b/apps/fmt.h @@ -0,0 +1,44 @@ +/* + * Copyright 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 + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Options are shared by apps (see apps.h) and the test system + * (see test/testutil.h'). + * In order to remove the dependency between apps and options, the following + * shared fields have been moved into this file. + */ + +#ifndef HEADER_FMT_H +#define HEADER_FMT_H + +/* On some platforms, it's important to distinguish between text and binary + * files. On some, there might even be specific file formats for different + * contents. The FORMAT_xxx macros are meant to express an intent with the + * file being read or created. + */ +# define B_FORMAT_TEXT 0x8000 +# define FORMAT_UNDEF 0 +# define FORMAT_TEXT (1 | B_FORMAT_TEXT) /* Generic text */ +# define FORMAT_BINARY 2 /* Generic binary */ +# define FORMAT_BASE64 (3 | B_FORMAT_TEXT) /* Base64 */ +# define FORMAT_ASN1 4 /* ASN.1/DER */ +# define FORMAT_PEM (5 | B_FORMAT_TEXT) +# define FORMAT_PKCS12 6 +# define FORMAT_SMIME (7 | B_FORMAT_TEXT) +# define FORMAT_ENGINE 8 /* Not really a file format */ +# define FORMAT_PEMRSA (9 | B_FORMAT_TEXT) /* PEM RSAPubicKey format */ +# define FORMAT_ASN1RSA 10 /* DER RSAPubicKey format */ +# define FORMAT_MSBLOB 11 /* MS Key blob format */ +# define FORMAT_PVK 12 /* MS PVK file format */ +# define FORMAT_HTTP 13 /* Download using HTTP */ +# define FORMAT_NSS 14 /* NSS keylog format */ + +int FMT_istext(int format); + +#endif /* HEADER_FMT_H_ */ diff --git a/apps/opt.c b/apps/opt.c index c6cccee..439f271 100644 --- a/apps/opt.c +++ b/apps/opt.c @@ -6,7 +6,13 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -#include "apps.h" + +/* + * This file is also used by the test suite. Do not #include "apps.h". + */ +#include "opt.h" +#include "fmt.h" +#include "internal/nelem.h" #include #if !defined(OPENSSL_SYS_MSDOS) # include OPENSSL_UNISTD @@ -116,7 +122,7 @@ char *opt_init(int ac, char **av, const OPTIONS *o) /* Store state. */ argc = ac; argv = av; - opt_index = 1; + opt_begin(); opts = o; opt_progname(av[0]); unknown = NULL; @@ -133,15 +139,15 @@ char *opt_init(int ac, char **av, const OPTIONS *o) i = o->valtype; /* Make sure options are legit. */ - assert(o->name[0] != '-'); - assert(o->retval > 0); + OPENSSL_assert(o->name[0] != '-'); + OPENSSL_assert(o->retval > 0); switch (i) { case 0: case '-': case '/': case '<': case '>': case 'E': case 'F': case 'M': case 'U': case 'f': case 'l': case 'n': case 'p': case 's': case 'u': case 'c': break; default: - assert(0); + OPENSSL_assert(0); } /* Make sure there are no duplicates. */ @@ -150,13 +156,13 @@ char *opt_init(int ac, char **av, const OPTIONS *o) * Some compilers inline strcmp and the assert string is too long. */ duplicated = strcmp(o->name, next->name) == 0; - assert(!duplicated); + OPENSSL_assert(!duplicated); } #endif if (o->name[0] == '\0') { - assert(unknown == NULL); + OPENSSL_assert(unknown == NULL); unknown = o; - assert(unknown->valtype == 0 || unknown->valtype == '-'); + OPENSSL_assert(unknown->valtype == 0 || unknown->valtype == '-'); } } return prog; @@ -181,14 +187,14 @@ int opt_format_error(const char *s, unsigned long flags) OPT_PAIR *ap; if (flags == OPT_FMT_PEMDER) { - BIO_printf(bio_err, "%s: Bad format \"%s\"; must be pem or der\n", - prog, s); + opt_printf_stderr("%s: Bad format \"%s\"; must be pem or der\n", + prog, s); } else { - BIO_printf(bio_err, "%s: Bad format \"%s\"; must be one of:\n", - prog, s); + opt_printf_stderr("%s: Bad format \"%s\"; must be one of:\n", + prog, s); for (ap = formats; ap->name; ap++) if (flags & ap->retval) - BIO_printf(bio_err, " %s\n", ap->name); + opt_printf_stderr(" %s\n", ap->name); } return 0; } @@ -277,7 +283,7 @@ int opt_cipher(const char *name, const EVP_CIPHER **cipherp) *cipherp = EVP_get_cipherbyname(name); if (*cipherp != NULL) return 1; - BIO_printf(bio_err, "%s: Unrecognized flag %s\n", prog, name); + opt_printf_stderr("%s: Unrecognized flag %s\n", prog, name); return 0; } @@ -289,7 +295,7 @@ int opt_md(const char *name, const EVP_MD **mdp) *mdp = EVP_get_digestbyname(name); if (*mdp != NULL) return 1; - BIO_printf(bio_err, "%s: Unrecognized flag %s\n", prog, name); + opt_printf_stderr("%s: Unrecognized flag %s\n", prog, name); return 0; } @@ -303,9 +309,9 @@ int opt_pair(const char *name, const OPT_PAIR* pairs, int *result) *result = pp->retval; return 1; } - BIO_printf(bio_err, "%s: Value must be one of:\n", prog); + opt_printf_stderr("%s: Value must be one of:\n", prog); for (pp = pairs; pp->name; pp++) - BIO_printf(bio_err, "\t%s\n", pp->name); + opt_printf_stderr("\t%s\n", pp->name); return 0; } @@ -318,8 +324,8 @@ int opt_int(const char *value, int *result) return 0; *result = (int)l; if (*result != l) { - BIO_printf(bio_err, "%s: Value \"%s\" outside integer range\n", - prog, value); + opt_printf_stderr("%s: Value \"%s\" outside integer range\n", + prog, value); return 0; } return 1; @@ -339,13 +345,12 @@ static void opt_number_error(const char *v) for (i = 0; i < OSSL_NELEM(b); i++) { if (strncmp(v, b[i].prefix, strlen(b[i].prefix)) == 0) { - BIO_printf(bio_err, - "%s: Can't parse \"%s\" as %s number\n", - prog, v, b[i].name); + opt_printf_stderr("%s: Can't parse \"%s\" as %s number\n", + prog, v, b[i].name); return; } } - BIO_printf(bio_err, "%s: Can't parse \"%s\" as a number\n", prog, v); + opt_printf_stderr("%s: Can't parse \"%s\" as a number\n", prog, v); return; } @@ -458,9 +463,9 @@ int opt_verify(int opt, X509_VERIFY_PARAM *vpm) X509_PURPOSE *xptmp; const X509_VERIFY_PARAM *vtmp; - assert(vpm != NULL); - assert(opt > OPT_V__FIRST); - assert(opt < OPT_V__LAST); + OPENSSL_assert(vpm != NULL); + OPENSSL_assert(opt > OPT_V__FIRST); + OPENSSL_assert(opt < OPT_V__LAST); switch ((enum range)opt) { case OPT_V__FIRST: @@ -469,7 +474,7 @@ int opt_verify(int opt, X509_VERIFY_PARAM *vpm) case OPT_V_POLICY: otmp = OBJ_txt2obj(opt_arg(), 0); if (otmp == NULL) { - BIO_printf(bio_err, "%s: Invalid Policy %s\n", prog, opt_arg()); + opt_printf_stderr("%s: Invalid Policy %s\n", prog, opt_arg()); return 0; } X509_VERIFY_PARAM_add0_policy(vpm, otmp); @@ -478,7 +483,7 @@ int opt_verify(int opt, X509_VERIFY_PARAM *vpm) /* purpose name -> purpose index */ i = X509_PURPOSE_get_by_sname(opt_arg()); if (i < 0) { - BIO_printf(bio_err, "%s: Invalid purpose %s\n", prog, opt_arg()); + opt_printf_stderr("%s: Invalid purpose %s\n", prog, opt_arg()); return 0; } @@ -489,17 +494,16 @@ int opt_verify(int opt, X509_VERIFY_PARAM *vpm) i = X509_PURPOSE_get_id(xptmp); if (!X509_VERIFY_PARAM_set_purpose(vpm, i)) { - BIO_printf(bio_err, - "%s: Internal error setting purpose %s\n", - prog, opt_arg()); + opt_printf_stderr("%s: Internal error setting purpose %s\n", + prog, opt_arg()); return 0; } break; case OPT_V_VERIFY_NAME: vtmp = X509_VERIFY_PARAM_lookup(opt_arg()); if (vtmp == NULL) { - BIO_printf(bio_err, "%s: Invalid verify name %s\n", - prog, opt_arg()); + opt_printf_stderr("%s: Invalid verify name %s\n", + prog, opt_arg()); return 0; } X509_VERIFY_PARAM_set1(vpm, vtmp); @@ -518,8 +522,8 @@ int opt_verify(int opt, X509_VERIFY_PARAM *vpm) if (!opt_imax(opt_arg(), &t)) return 0; if (t != (time_t)t) { - BIO_printf(bio_err, "%s: epoch time out of range %s\n", - prog, opt_arg()); + opt_printf_stderr("%s: epoch time out of range %s\n", + prog, opt_arg()); return 0; } X509_VERIFY_PARAM_set_time(vpm, (time_t)t); @@ -606,6 +610,13 @@ int opt_verify(int opt, X509_VERIFY_PARAM *vpm) } +void opt_begin(void) +{ + opt_index = 1; + arg = NULL; + flag = NULL; +} + /* * Parse the next flag (and value if specified), return 0 if done, -1 on * error, otherwise the flag's retval. @@ -651,8 +662,8 @@ int opt_next(void) /* If it doesn't take a value, make sure none was given. */ if (o->valtype == 0 || o->valtype == '-') { if (arg) { - BIO_printf(bio_err, - "%s: Option -%s does not take a value\n", prog, p); + opt_printf_stderr("%s: Option -%s does not take a value\n", + prog, p); return -1; } return o->retval; @@ -661,8 +672,8 @@ int opt_next(void) /* Want a value; get the next param if =foo not used. */ if (arg == NULL) { if (argv[opt_index] == NULL) { - BIO_printf(bio_err, - "%s: Option -%s needs a value\n", prog, o->name); + opt_printf_stderr("%s: Option -%s needs a value\n", + prog, o->name); return -1; } arg = argv[opt_index++]; @@ -675,9 +686,9 @@ int opt_next(void) /* Just a string. */ break; case '/': - if (app_isdir(arg) > 0) + if (opt_isdir(arg) > 0) break; - BIO_printf(bio_err, "%s: Not a directory: %s\n", prog, arg); + opt_printf_stderr("%s: Not a directory: %s\n", prog, arg); return -1; case '<': /* Input file. */ @@ -689,41 +700,36 @@ int opt_next(void) case 'n': if (!opt_int(arg, &ival) || (o->valtype == 'p' && ival <= 0)) { - BIO_printf(bio_err, - "%s: Non-positive number \"%s\" for -%s\n", - prog, arg, o->name); + opt_printf_stderr("%s: Non-positive number \"%s\" for -%s\n", + prog, arg, o->name); return -1; } break; case 'M': if (!opt_imax(arg, &imval)) { - BIO_printf(bio_err, - "%s: Invalid number \"%s\" for -%s\n", - prog, arg, o->name); + opt_printf_stderr("%s: Invalid number \"%s\" for -%s\n", + prog, arg, o->name); return -1; } break; case 'U': if (!opt_umax(arg, &umval)) { - BIO_printf(bio_err, - "%s: Invalid number \"%s\" for -%s\n", - prog, arg, o->name); + opt_printf_stderr("%s: Invalid number \"%s\" for -%s\n", + prog, arg, o->name); return -1; } break; case 'l': if (!opt_long(arg, &lval)) { - BIO_printf(bio_err, - "%s: Invalid number \"%s\" for -%s\n", - prog, arg, o->name); + opt_printf_stderr("%s: Invalid number \"%s\" for -%s\n", + prog, arg, o->name); return -1; } break; case 'u': if (!opt_ulong(arg, &ulval)) { - BIO_printf(bio_err, - "%s: Invalid number \"%s\" for -%s\n", - prog, arg, o->name); + opt_printf_stderr("%s: Invalid number \"%s\" for -%s\n", + prog, arg, o->name); return -1; } break; @@ -737,9 +743,8 @@ int opt_next(void) o->valtype == 'F' ? OPT_FMT_PEMDER : OPT_FMT_ANY, &ival)) break; - BIO_printf(bio_err, - "%s: Invalid format \"%s\" for -%s\n", - prog, arg, o->name); + opt_printf_stderr("%s: Invalid format \"%s\" for -%s\n", + prog, arg, o->name); return -1; } @@ -750,7 +755,7 @@ int opt_next(void) dunno = p; return unknown->retval; } - BIO_printf(bio_err, "%s: Option unknown option -%s\n", prog, p); + opt_printf_stderr("%s: Option unknown option -%s\n", prog, p); return -1; } @@ -848,18 +853,17 @@ void opt_help(const OPTIONS *list) i += 1 + strlen(valtype2param(o)); if (i < MAX_OPT_HELP_WIDTH && i > width) width = i; - assert(i < (int)sizeof(start)); + OPENSSL_assert(i < (int)sizeof(start)); } if (standard_prolog) - BIO_printf(bio_err, "Usage: %s [options]\nValid options are:\n", - prog); + opt_printf_stderr("Usage: %s [options]\nValid options are:\n", prog); /* Now let's print. */ for (o = list; o->name; o++) { help = o->helpstr ? o->helpstr : "(No additional info)"; if (o->name == OPT_HELP_STR) { - BIO_printf(bio_err, help, prog); + opt_printf_stderr(help, prog); continue; } @@ -870,7 +874,7 @@ void opt_help(const OPTIONS *list) if (o->name == OPT_MORE_STR) { /* Continuation of previous line; pad and print. */ start[width] = '\0'; - BIO_printf(bio_err, "%s %s\n", start, help); + opt_printf_stderr("%s %s\n", start, help); continue; } @@ -889,10 +893,62 @@ void opt_help(const OPTIONS *list) *p = ' '; if ((int)(p - start) >= MAX_OPT_HELP_WIDTH) { *p = '\0'; - BIO_printf(bio_err, "%s\n", start); + opt_printf_stderr("%s\n", start); memset(start, ' ', sizeof(start)); } start[width] = '\0'; - BIO_printf(bio_err, "%s %s\n", start, help); + opt_printf_stderr("%s %s\n", start, help); } } + +/* opt_isdir section */ +#ifdef _WIN32 +# include +int opt_isdir(const char *name) +{ + DWORD attr; +# if defined(UNICODE) || defined(_UNICODE) + size_t i, len_0 = strlen(name) + 1; + WCHAR tempname[MAX_PATH]; + + if (len_0 > MAX_PATH) + return -1; + +# if !defined(_WIN32_WCE) || _WIN32_WCE>=101 + if (!MultiByteToWideChar(CP_ACP, 0, name, len_0, tempname, MAX_PATH)) +# endif + for (i = 0; i < len_0; i++) + tempname[i] = (WCHAR)name[i]; + + attr = GetFileAttributes(tempname); +# else + attr = GetFileAttributes(name); +# endif + if (attr == INVALID_FILE_ATTRIBUTES) + return -1; + return ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0); +} +#else +# include +# ifndef S_ISDIR +# if defined(_S_IFMT) && defined(_S_IFDIR) +# define S_ISDIR(a) (((a) & _S_IFMT) == _S_IFDIR) +# else +# define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR) +# endif +# endif + +int opt_isdir(const char *name) +{ +# if defined(S_ISDIR) + struct stat st; + + if (stat(name, &st) == 0) + return S_ISDIR(st.st_mode); + else + return -1; +# else + return -1; +# endif +} +#endif diff --git a/apps/apps.h b/apps/opt.h similarity index 56% copy from apps/apps.h copy to apps/opt.h index 460188d..ecfa06e 100644 --- a/apps/apps.h +++ b/apps/opt.h @@ -1,92 +1,18 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. * - * Licensed under the Apache License 2.0 (the "License"). You may not use + * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ +#ifndef HEADER_OPT_H +#define HEADER_OPT_H -#ifndef HEADER_APPS_H -# define HEADER_APPS_H - -# include "e_os.h" /* struct timeval for DTLS */ -# include "internal/nelem.h" -# include - -# include -# ifndef OPENSSL_NO_POSIX_IO -# include -# include -# endif - -# include -# include -# include -# include -# include -# include -# include -# include -# include - -# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WINCE) -# define openssl_fdset(a,b) FD_SET((unsigned int)a, b) -# else -# define openssl_fdset(a,b) FD_SET(a, b) -# endif - -/* - * quick macro when you need to pass an unsigned char instead of a char. - * this is true for some implementations of the is*() functions, for - * example. - */ -#define _UC(c) ((unsigned char)(c)) - -void app_RAND_load_conf(CONF *c, const char *section); -void app_RAND_write(void); - -extern char *default_config_file; -extern BIO *bio_in; -extern BIO *bio_out; -extern BIO *bio_err; -extern const unsigned char tls13_aes128gcmsha256_id[]; -extern const unsigned char tls13_aes256gcmsha384_id[]; -extern BIO_ADDR *ourpeer; - -BIO_METHOD *apps_bf_prefix(void); -/* - * The control used to set the prefix with BIO_ctrl() - * We make it high enough so the chance of ever clashing with the BIO library - * remains unlikely for the foreseeable future and beyond. - */ -#define PREFIX_CTRL_SET_PREFIX (1 << 15) -/* - * apps_bf_prefix() returns a dynamically created BIO_METHOD, which we - * need to destroy at some point. When created internally, it's stored - * in an internal pointer which can be freed with the following function - */ -void destroy_prefix_method(void); - -BIO *dup_bio_in(int format); -BIO *dup_bio_out(int format); -BIO *dup_bio_err(int format); -BIO *bio_open_owner(const char *filename, int format, int private); -BIO *bio_open_default(const char *filename, char mode, int format); -BIO *bio_open_default_quiet(const char *filename, char mode, int format); -CONF *app_load_config_bio(BIO *in, const char *filename); -CONF *app_load_config(const char *filename); -CONF *app_load_config_quiet(const char *filename); -int app_load_modules(const CONF *config); -void unbuffer(FILE *fp); -void wait_for_async(SSL *s); -# if defined(OPENSSL_SYS_MSDOS) -int has_stdin_waiting(void); -# endif - -void corrupt_signature(const ASN1_STRING *signature); -int set_cert_times(X509 *x, const char *startdate, const char *enddate, - int days); +#include +#include +#include +#include /* * Common verification options. @@ -385,6 +311,7 @@ char *opt_progname(const char *argv0); char *opt_getprog(void); char *opt_init(int ac, char **av, const OPTIONS * o); int opt_next(void); +void opt_begin(void); int opt_format(const char *s, unsigned long flags, int *result); int opt_int(const char *arg, int *result); int opt_ulong(const char *arg, unsigned long *result); @@ -411,226 +338,7 @@ int opt_verify(int i, X509_VERIFY_PARAM *vpm); int opt_rand(int i); void opt_help(const OPTIONS * list); int opt_format_error(const char *s, unsigned long flags); +int opt_isdir(const char *name); +int opt_printf_stderr(const char *fmt, ...); -typedef struct args_st { - int size; - int argc; - char **argv; -} ARGS; - -/* - * VMS C only for now, implemented in vms_decc_init.c - * If other C compilers forget to terminate argv with NULL, this function - * can be re-used. - */ -char **copy_argv(int *argc, char *argv[]); -/* - * Win32-specific argv initialization that splits OS-supplied UNICODE - * command line string to array of UTF8-encoded strings. - */ -void win32_utf8argv(int *argc, char **argv[]); - - -# define PW_MIN_LENGTH 4 -typedef struct pw_cb_data { - const void *password; - const char *prompt_info; -} PW_CB_DATA; - -/* We need both wrap and the "real" function because libcrypto uses both. */ -int wrap_password_callback(char *buf, int bufsiz, int verify, void *cb_data); -int password_callback(char *buf, int bufsiz, int verify, PW_CB_DATA *cb_data); - -int setup_ui_method(void); -void destroy_ui_method(void); -const UI_METHOD *get_ui_method(void); - -int chopup_args(ARGS *arg, char *buf); -# ifdef HEADER_X509_H -int dump_cert_text(BIO *out, X509 *x); -void print_name(BIO *out, const char *title, X509_NAME *nm, - unsigned long lflags); -# endif -void print_bignum_var(BIO *, const BIGNUM *, const char*, - int, unsigned char *); -void print_array(BIO *, const char *, int, const unsigned char *); -int set_nameopt(const char *arg); -unsigned long get_nameopt(void); -int set_cert_ex(unsigned long *flags, const char *arg); -int set_name_ex(unsigned long *flags, const char *arg); -int set_ext_copy(int *copy_type, const char *arg); -int copy_extensions(X509 *x, X509_REQ *req, int copy_type); -int app_passwd(const char *arg1, const char *arg2, char **pass1, char **pass2); -int add_oid_section(CONF *conf); -X509 *load_cert(const char *file, int format, const char *cert_descrip); -X509_CRL *load_crl(const char *infile, int format); -EVP_PKEY *load_key(const char *file, int format, int maybe_stdin, - const char *pass, ENGINE *e, const char *key_descrip); -EVP_PKEY *load_pubkey(const char *file, int format, int maybe_stdin, - const char *pass, ENGINE *e, const char *key_descrip); -int load_certs(const char *file, STACK_OF(X509) **certs, int format, - const char *pass, const char *cert_descrip); -int load_crls(const char *file, STACK_OF(X509_CRL) **crls, int format, - const char *pass, const char *cert_descrip); -X509_STORE *setup_verify(const char *CAfile, const char *CApath, - int noCAfile, int noCApath); -__owur int ctx_set_verify_locations(SSL_CTX *ctx, const char *CAfile, - const char *CApath, int noCAfile, - int noCApath); - -#ifndef OPENSSL_NO_CT - -/* - * Sets the file to load the Certificate Transparency log list from. - * If path is NULL, loads from the default file path. - * Returns 1 on success, 0 otherwise. - */ -__owur int ctx_set_ctlog_list_file(SSL_CTX *ctx, const char *path); - -#endif - -ENGINE *setup_engine(const char *engine, int debug); -void release_engine(ENGINE *e); - -# ifndef OPENSSL_NO_OCSP -OCSP_RESPONSE *process_responder(OCSP_REQUEST *req, - const char *host, const char *path, - const char *port, int use_ssl, - STACK_OF(CONF_VALUE) *headers, - int req_timeout); -# endif - -/* Functions defined in ca.c and also used in ocsp.c */ -int unpack_revinfo(ASN1_TIME **prevtm, int *preason, ASN1_OBJECT **phold, - ASN1_GENERALIZEDTIME **pinvtm, const char *str); - -# define DB_type 0 -# define DB_exp_date 1 -# define DB_rev_date 2 -# define DB_serial 3 /* index - unique */ -# define DB_file 4 -# define DB_name 5 /* index - unique when active and not - * disabled */ -# define DB_NUMBER 6 - -# define DB_TYPE_REV 'R' /* Revoked */ -# define DB_TYPE_EXP 'E' /* Expired */ -# define DB_TYPE_VAL 'V' /* Valid ; inserted with: ca ... -valid */ -# define DB_TYPE_SUSP 'S' /* Suspended */ - -typedef struct db_attr_st { - int unique_subject; -} DB_ATTR; -typedef struct ca_db_st { - DB_ATTR attributes; - TXT_DB *db; - char *dbfname; -# ifndef OPENSSL_NO_POSIX_IO - struct stat dbst; -# endif -} CA_DB; - -void* app_malloc(int sz, const char *what); -BIGNUM *load_serial(const char *serialfile, int create, ASN1_INTEGER **retai); -int save_serial(const char *serialfile, const char *suffix, const BIGNUM *serial, - ASN1_INTEGER **retai); -int rotate_serial(const char *serialfile, const char *new_suffix, - const char *old_suffix); -int rand_serial(BIGNUM *b, ASN1_INTEGER *ai); -CA_DB *load_index(const char *dbfile, DB_ATTR *dbattr); -int index_index(CA_DB *db); -int save_index(const char *dbfile, const char *suffix, CA_DB *db); -int rotate_index(const char *dbfile, const char *new_suffix, - const char *old_suffix); -void free_index(CA_DB *db); -# define index_name_cmp_noconst(a, b) \ - index_name_cmp((const OPENSSL_CSTRING *)CHECKED_PTR_OF(OPENSSL_STRING, a), \ - (const OPENSSL_CSTRING *)CHECKED_PTR_OF(OPENSSL_STRING, b)) -int index_name_cmp(const OPENSSL_CSTRING *a, const OPENSSL_CSTRING *b); -int parse_yesno(const char *str, int def); - -X509_NAME *parse_name(const char *str, long chtype, int multirdn); -void policies_print(X509_STORE_CTX *ctx); -int bio_to_mem(unsigned char **out, int maxlen, BIO *in); -int pkey_ctrl_string(EVP_PKEY_CTX *ctx, const char *value); -int init_gen_str(EVP_PKEY_CTX **pctx, - const char *algname, ENGINE *e, int do_param); -int do_X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md, - STACK_OF(OPENSSL_STRING) *sigopts); -int do_X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md, - STACK_OF(OPENSSL_STRING) *sigopts); -int do_X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md, - STACK_OF(OPENSSL_STRING) *sigopts); - -extern char *psk_key; - - -unsigned char *next_protos_parse(size_t *outlen, const char *in); - -void print_cert_checks(BIO *bio, X509 *x, - const char *checkhost, - const char *checkemail, const char *checkip); - -void store_setup_crl_download(X509_STORE *st); - -/* See OPT_FMT_xxx, above. */ -/* On some platforms, it's important to distinguish between text and binary - * files. On some, there might even be specific file formats for different - * contents. The FORMAT_xxx macros are meant to express an intent with the - * file being read or created. - */ -# define B_FORMAT_TEXT 0x8000 -# define FORMAT_UNDEF 0 -# define FORMAT_TEXT (1 | B_FORMAT_TEXT) /* Generic text */ -# define FORMAT_BINARY 2 /* Generic binary */ -# define FORMAT_BASE64 (3 | B_FORMAT_TEXT) /* Base64 */ -# define FORMAT_ASN1 4 /* ASN.1/DER */ -# define FORMAT_PEM (5 | B_FORMAT_TEXT) -# define FORMAT_PKCS12 6 -# define FORMAT_SMIME (7 | B_FORMAT_TEXT) -# define FORMAT_ENGINE 8 /* Not really a file format */ -# define FORMAT_PEMRSA (9 | B_FORMAT_TEXT) /* PEM RSAPubicKey format */ -# define FORMAT_ASN1RSA 10 /* DER RSAPubicKey format */ -# define FORMAT_MSBLOB 11 /* MS Key blob format */ -# define FORMAT_PVK 12 /* MS PVK file format */ -# define FORMAT_HTTP 13 /* Download using HTTP */ -# define FORMAT_NSS 14 /* NSS keylog format */ - -# define EXT_COPY_NONE 0 -# define EXT_COPY_ADD 1 -# define EXT_COPY_ALL 2 - -# define NETSCAPE_CERT_HDR "certificate" - -# define APP_PASS_LEN 1024 - -/* - * IETF RFC 5280 says serial number must be <= 20 bytes. Use 159 bits - * so that the first bit will never be one, so that the DER encoding - * rules won't force a leading octet. - */ -# define SERIAL_RAND_BITS 159 - -int app_isdir(const char *); -int app_access(const char *, int flag); -int fileno_stdin(void); -int fileno_stdout(void); -int raw_read_stdin(void *, int); -int raw_write_stdout(const void *, int); - -# define TM_START 0 -# define TM_STOP 1 -double app_tminterval(int stop, int usertime); - -void make_uppercase(char *string); - -typedef struct verify_options_st { - int depth; - int quiet; - int error; - int return_error; -} VERIFY_CB_ARGS; - -extern VERIFY_CB_ARGS verify_args; - -#endif +#endif /* HEADER_OPT_H */ diff --git a/test/asynciotest.c b/test/asynciotest.c index 1085b4a..3bba098 100644 --- a/test/asynciotest.c +++ b/test/asynciotest.c @@ -393,6 +393,8 @@ static int test_asyncio(int test) return testresult; } +OPT_TEST_DECLARE_USAGE("certname privkey\n") + int setup_tests(void) { if (!TEST_ptr(cert = test_get_argument(0)) diff --git a/test/bftest.c b/test/bftest.c index 2f9b293..5b48925 100644 --- a/test/bftest.c +++ b/test/bftest.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -434,28 +434,53 @@ static int test_bf_ofb64(void) } #endif +typedef enum OPTION_choice { + OPT_ERR = -1, + OPT_EOF = 0, + OPT_PRINT, + OPT_TEST_ENUM +} OPTION_CHOICE; + +const OPTIONS *test_get_options(void) +{ + static const OPTIONS test_options[] = { + OPT_TEST_OPTIONS_DEFAULT_USAGE, + { "print", OPT_PRINT, '-', "Output test tables instead of running tests"}, + { NULL } + }; + return test_options; +} + int setup_tests(void) { #ifndef OPENSSL_NO_BF + OPTION_CHOICE o; # ifdef CHARSET_EBCDIC int n; - ebcdic2ascii(cbc_data, cbc_data, strlen(cbc_data)); for (n = 0; n < 2; n++) { ebcdic2ascii(bf_key[n], bf_key[n], strlen(bf_key[n])); } # endif - if (test_get_argument(0) != NULL) { - print_test_data(); - } else { - ADD_ALL_TESTS(test_bf_ecb_raw, 2); - ADD_ALL_TESTS(test_bf_ecb, NUM_TESTS); - ADD_ALL_TESTS(test_bf_set_key, KEY_TEST_NUM-1); - ADD_TEST(test_bf_cbc); - ADD_TEST(test_bf_cfb64); - ADD_TEST(test_bf_ofb64); + while ((o = opt_next()) != OPT_EOF) { + switch(o) { + case OPT_PRINT: + print_test_data(); + return 1; + case OPT_TEST_CASES: + break; + default: + return 0; + } } + + ADD_ALL_TESTS(test_bf_ecb_raw, 2); + ADD_ALL_TESTS(test_bf_ecb, NUM_TESTS); + ADD_ALL_TESTS(test_bf_set_key, KEY_TEST_NUM-1); + ADD_TEST(test_bf_cbc); + ADD_TEST(test_bf_cfb64); + ADD_TEST(test_bf_ofb64); #endif return 1; } diff --git a/test/bioprinttest.c b/test/bioprinttest.c index aa06039..97151cd 100644 --- a/test/bioprinttest.c +++ b/test/bioprinttest.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -252,10 +252,38 @@ static int test_big(void) return 1; } +typedef enum OPTION_choice { + OPT_ERR = -1, + OPT_EOF = 0, + OPT_PRINT, + OPT_TEST_ENUM +} OPTION_CHOICE; + +const OPTIONS *test_get_options(void) +{ + static const OPTIONS options[] = { + OPT_TEST_OPTIONS_DEFAULT_USAGE, + { "expected", OPT_PRINT, '-', "Output values" }, + { NULL } + }; + return options; +} int setup_tests(void) { - justprint = test_has_option("-expected"); + OPTION_CHOICE o; + + while ((o = opt_next()) != OPT_EOF) { + switch (o) { + case OPT_PRINT: + justprint = 1; + break; + case OPT_TEST_CASES: + break; + default: + return 0; + } + } ADD_TEST(test_big); ADD_ALL_TESTS(test_fp, nelem(pw_params)); @@ -300,3 +328,4 @@ int test_flush_stderr(void) { return fflush(stderr); } + diff --git a/test/bntest.c b/test/bntest.c index d042a3e..e4b71e2 100644 --- a/test/bntest.c +++ b/test/bntest.c @@ -2261,6 +2261,17 @@ static int run_file_tests(int i) return c == 0; } +const OPTIONS *test_get_options(void) +{ + enum { OPT_TEST_ENUM }; + static const OPTIONS test_options[] = { + OPT_TEST_OPTIONS_WITH_EXTRA_USAGE("[file...]\n"), + { OPT_HELP_STR, 1, '-', + "file\tFile to run tests on. Normal tests are not run\n" }, + { NULL } + }; + return test_options; +} int setup_tests(void) { diff --git a/test/build.info b/test/build.info index 0ac2fa7..4c29beb 100644 --- a/test/build.info +++ b/test/build.info @@ -13,8 +13,9 @@ IF[{- !$disabled{tests} -}] SOURCE[libtestutil.a]=testutil/basic_output.c testutil/output_helpers.c \ testutil/driver.c testutil/tests.c testutil/cb.c testutil/stanza.c \ testutil/format_output.c testutil/tap_bio.c \ - testutil/test_cleanup.c testutil/main.c testutil/init.c - INCLUDE[libtestutil.a]=../include + testutil/test_cleanup.c testutil/main.c testutil/init.c \ + testutil/options.c testutil/test_options.c ../apps/opt.c + INCLUDE[libtestutil.a]=../include .. DEPEND[libtestutil.a]=../libcrypto PROGRAMS{noinst}=\ @@ -398,11 +399,9 @@ IF[{- !$disabled{tests} -}] DEPEND[cipher_overhead_test]=../libcrypto ../libssl libtestutil.a ENDIF - SOURCE[uitest]=uitest.c \ - {- rebase_files("../apps", - split(/\s+/, $target{apps_init_src})) -} + SOURCE[uitest]=uitest.c ../apps/apps_ui.c INCLUDE[uitest]=.. ../include ../apps - DEPEND[uitest]=../apps/libapps.a ../libcrypto ../libssl libtestutil.a + DEPEND[uitest]=../libcrypto ../libssl libtestutil.a SOURCE[cipherbytes_test]=cipherbytes_test.c INCLUDE[cipherbytes_test]=../include diff --git a/test/clienthellotest.c b/test/clienthellotest.c index 6c77831..2c1110b 100644 --- a/test/clienthellotest.c +++ b/test/clienthellotest.c @@ -240,6 +240,8 @@ end: return testresult; } +OPT_TEST_DECLARE_USAGE("sessionfile\n") + int setup_tests(void) { if (!TEST_ptr(sessionfile = test_get_argument(0))) diff --git a/test/cmsapitest.c b/test/cmsapitest.c index a79ae8c..2ea8af5 100644 --- a/test/cmsapitest.c +++ b/test/cmsapitest.c @@ -1,3 +1,12 @@ +/* + * Copyright 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 + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + #include #include @@ -49,6 +58,8 @@ static int test_encrypt_decrypt(void) return testresult; } +OPT_TEST_DECLARE_USAGE("certfile privkeyfile\n") + int setup_tests(void) { char *certin = NULL, *privkeyin = NULL; diff --git a/test/conf_include_test.c b/test/conf_include_test.c index 16939ed..ba40aa1 100644 --- a/test/conf_include_test.c +++ b/test/conf_include_test.c @@ -178,26 +178,50 @@ static int test_check_overflow(void) return 1; } +typedef enum OPTION_choice { + OPT_ERR = -1, + OPT_EOF = 0, + OPT_FAIL, + OPT_TEST_ENUM +} OPTION_CHOICE; + +const OPTIONS *test_get_options(void) +{ + static const OPTIONS test_options[] = { + OPT_TEST_OPTIONS_WITH_EXTRA_USAGE("conf_file\n"), + { "f", OPT_FAIL, '-', "A failure is expected" }, + { NULL } + }; + return test_options; +} + int setup_tests(void) { const char *conf_file; - const char *arg2; + OPTION_CHOICE o; if (!TEST_ptr(conf = NCONF_new(NULL))) return 0; - conf_file = test_get_argument(0); + while ((o = opt_next()) != OPT_EOF) { + switch (o) { + case OPT_FAIL: + expect_failure = 1; + break; + case OPT_TEST_CASES: + break; + default: + return 0; + } + } + conf_file = test_get_argument(0); if (!TEST_ptr(conf_file) || !TEST_ptr(in = BIO_new_file(conf_file, "r"))) { TEST_note("Unable to open the file argument"); return 0; } - if ((arg2 = test_get_argument(1)) != NULL && *arg2 == 'f') { - expect_failure = 1; - } - /* * For this test we need to chdir as we use relative * path names in the config files. diff --git a/test/curve448_internal_test.c b/test/curve448_internal_test.c index 92332b3..85c0b0e 100644 --- a/test/curve448_internal_test.c +++ b/test/curve448_internal_test.c @@ -682,19 +682,49 @@ static int test_x448(void) return 1; } +typedef enum OPTION_choice { + OPT_ERR = -1, + OPT_EOF = 0, + OPT_PROGRESS, + OPT_SLOW, + OPT_TEST_ENUM +} OPTION_CHOICE; + +const OPTIONS *test_get_options(void) +{ + static const OPTIONS test_options[] = { + OPT_TEST_OPTIONS_WITH_EXTRA_USAGE("conf_file\n"), + { "f", OPT_SLOW, '-', "Enables a slow test" }, + { "v", OPT_PROGRESS, '-', + "Enables verbose mode (prints progress dots)" }, + { NULL } + }; + return test_options; +} + int setup_tests(void) { - /* - * The test vectors contain one test which takes a very long time to run, - * so we don't do that be default. Using the -f option will cause it to be - * run. - */ - if (test_has_option("-f")) - max = 1000000; - - /* Print progress dots */ - if (test_has_option("-v")) - verbose = 1; + OPTION_CHOICE o; + + while ((o = opt_next()) != OPT_EOF) { + switch (o) { + case OPT_TEST_CASES: + break; + default: + return 0; + /* + * The test vectors contain one test which takes a very long time to run + * so we don't do that be default. Using the -f option will cause it to + * be run. + */ + case OPT_SLOW: + max = 1000000; + break; + case OPT_PROGRESS: + verbose = 1; /* Print progress dots */ + break; + } + } ADD_TEST(test_x448); ADD_TEST(test_ed448); diff --git a/test/d2i_test.c b/test/d2i_test.c index 13f6c0c..3ce3848 100644 --- a/test/d2i_test.c +++ b/test/d2i_test.c @@ -106,6 +106,8 @@ static int test_bad_asn1(void) return ret; } +OPT_TEST_DECLARE_USAGE("item_name expected_error test_file.der\n") + /* * Usage: d2i_test , e.g. * d2i_test generalname bad_generalname.der @@ -127,10 +129,8 @@ int setup_tests(void) if (!TEST_ptr(test_type_name = test_get_argument(0)) || !TEST_ptr(expected_error_string = test_get_argument(1)) - || !TEST_ptr(test_file = test_get_argument(2))) { - TEST_note("Usage: d2i_test item_name expected_error file.der"); + || !TEST_ptr(test_file = test_get_argument(2))) return 0; - } item_type = ASN1_ITEM_lookup(test_type_name); diff --git a/test/danetest.c b/test/danetest.c index 0496618..26745f9 100644 --- a/test/danetest.c +++ b/test/danetest.c @@ -409,14 +409,14 @@ end: return ret; } +OPT_TEST_DECLARE_USAGE("basedomain CAfile tlsafile\n") + int setup_tests(void) { if (!TEST_ptr(basedomain = test_get_argument(0)) || !TEST_ptr(CAfile = test_get_argument(1)) - || !TEST_ptr(tlsafile = test_get_argument(2))) { - TEST_error("Usage error: danetest basedomain CAfile tlsafile"); + || !TEST_ptr(tlsafile = test_get_argument(2))) return 0; - } ADD_TEST(run_tlsatest); return 1; diff --git a/test/dtlstest.c b/test/dtlstest.c index d196fb5..98a23f8 100644 --- a/test/dtlstest.c +++ b/test/dtlstest.c @@ -328,6 +328,8 @@ static int test_dtls_duplicate_records(void) return testresult; } +OPT_TEST_DECLARE_USAGE("certfile privkeyfile\n") + int setup_tests(void) { if (!TEST_ptr(cert = test_get_argument(0)) diff --git a/test/ecstresstest.c b/test/ecstresstest.c index 8cb43e6..a589103 100644 --- a/test/ecstresstest.c +++ b/test/ecstresstest.c @@ -18,7 +18,7 @@ #define NUM_REPEATS "1000000" -static int64_t num_repeats; +static intmax_t num_repeats; static int print_mode = 0; #ifndef OPENSSL_NO_EC @@ -39,10 +39,10 @@ static const char *kP256DefaultResult = * point multiplication. * Returns the X-coordinate of the end result or NULL on error. */ -static BIGNUM *walk_curve(const EC_GROUP *group, EC_POINT *point, int64_t num) +static BIGNUM *walk_curve(const EC_GROUP *group, EC_POINT *point, intmax_t num) { BIGNUM *scalar = NULL; - int64_t i; + intmax_t i; if (!TEST_ptr(scalar = BN_new()) || !TEST_true(EC_POINT_get_affine_coordinates(group, point, scalar, @@ -101,20 +101,21 @@ err: } #endif -static int atoi64(const char *in, int64_t *result) -{ - int64_t ret = 0; - - for ( ; *in != '\0'; in++) { - char c = *in; +typedef enum OPTION_choice { + OPT_ERR = -1, + OPT_EOF = 0, + OPT_NUM_REPEATS, + OPT_TEST_ENUM +} OPTION_CHOICE; - if (!isdigit((unsigned char)c)) - return 0; - ret *= 10; - ret += (c - '0'); - } - *result = ret; - return 1; +const OPTIONS *test_get_options(void) +{ + static const OPTIONS test_options[] = { + OPT_TEST_OPTIONS_DEFAULT_USAGE, + { "num", OPT_NUM_REPEATS, 'M', "Number of repeats" }, + { NULL } + }; + return test_options; } /* @@ -124,22 +125,27 @@ static int atoi64(const char *in, int64_t *result) */ int setup_tests(void) { - const char *p; + OPTION_CHOICE o; - if (!atoi64(NUM_REPEATS, &num_repeats)) { + if (!opt_imax(NUM_REPEATS, &num_repeats)) { TEST_error("Cannot parse " NUM_REPEATS); return 0; } - /* - * TODO(openssl-team): code under test/ should be able to reuse the option - * parsing framework currently in apps/. - */ - p = test_get_option_argument("-num"); - if (p != NULL) { - if (!atoi64(p, &num_repeats) - || num_repeats < 0) - return 0; - print_mode = 1; + + while ((o = opt_next()) != OPT_EOF) { + switch (o) { + case OPT_NUM_REPEATS: + if (!opt_imax(opt_arg(), &num_repeats) + || num_repeats < 0) + return 0; + print_mode = 1; + break; + case OPT_TEST_CASES: + break; + default: + case OPT_ERR: + return 0; + } } #ifndef OPENSSL_NO_EC diff --git a/test/evp_test.c b/test/evp_test.c index 932b03c..49d254d 100644 --- a/test/evp_test.c +++ b/test/evp_test.c @@ -2901,14 +2901,14 @@ static int run_file_tests(int i) return c == 0; } +OPT_TEST_DECLARE_USAGE("file...\n") + int setup_tests(void) { size_t n = test_get_argument_count(); - if (n == 0) { - TEST_error("Usage: %s file...", test_get_program_name()); + if (n == 0) return 0; - } ADD_ALL_TESTS(run_file_tests, n); return 1; diff --git a/test/fatalerrtest.c b/test/fatalerrtest.c index 3291914..0f18c1b 100644 --- a/test/fatalerrtest.c +++ b/test/fatalerrtest.c @@ -82,6 +82,8 @@ static int test_fatalerr(void) return ret; } +OPT_TEST_DECLARE_USAGE("certfile privkeyfile\n") + int setup_tests(void) { if (!TEST_ptr(cert = test_get_argument(0)) diff --git a/test/gosttest.c b/test/gosttest.c index 398effa..a03521d 100644 --- a/test/gosttest.c +++ b/test/gosttest.c @@ -78,6 +78,8 @@ static int test_tls13(int idx) return testresult; } +OPT_TEST_DECLARE_USAGE("certfile1 privkeyfile1 certfile2 privkeyfile2\n") + int setup_tests(void) { if (!TEST_ptr(cert1 = test_get_argument(0)) diff --git a/test/ocspapitest.c b/test/ocspapitest.c index 5525f92..03b88e0 100644 --- a/test/ocspapitest.c +++ b/test/ocspapitest.c @@ -1,5 +1,5 @@ /* - * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -133,6 +133,8 @@ static int test_resp_signer(void) } #endif +OPT_TEST_DECLARE_USAGE("certfile privkeyfile\n") + int setup_tests(void) { if (!TEST_ptr(certstr = test_get_argument(0)) diff --git a/test/recipes/90-test_includes.t b/test/recipes/90-test_includes.t index c6a86fc..301f6c1 100644 --- a/test/recipes/90-test_includes.t +++ b/test/recipes/90-test_includes.t @@ -24,4 +24,4 @@ if ($^O eq "VMS") { ok(run(test(["conf_include_test", data_file("vms-includes-file.cnf")])), "test file includes, VMS syntax"); } -ok(run(test(["conf_include_test", data_file("includes-broken.cnf"), "f"])), "test broken includes"); +ok(run(test(["conf_include_test", "-f", data_file("includes-broken.cnf")])), "test broken includes"); diff --git a/test/recordlentest.c b/test/recordlentest.c index a73e443..9be354b 100644 --- a/test/recordlentest.c +++ b/test/recordlentest.c @@ -181,6 +181,8 @@ static int test_record_overflow(int idx) return testresult; } +OPT_TEST_DECLARE_USAGE("certfile privkeyfile\n") + int setup_tests(void) { if (!TEST_ptr(cert = test_get_argument(0)) diff --git a/test/ssl_test.c b/test/ssl_test.c index 4f82bf7..e54e841 100644 --- a/test/ssl_test.c +++ b/test/ssl_test.c @@ -500,6 +500,8 @@ err: return ret; } +OPT_TEST_DECLARE_USAGE("conf_file\n") + int setup_tests(void) { long num_tests; diff --git a/test/ssl_test_ctx_test.c b/test/ssl_test_ctx_test.c index fef6166..5f54d1e 100644 --- a/test/ssl_test_ctx_test.c +++ b/test/ssl_test_ctx_test.c @@ -240,15 +240,15 @@ static int test_bad_configuration(int idx) return 1; } +OPT_TEST_DECLARE_USAGE("conf_file\n") + int setup_tests(void) { if (!TEST_ptr(conf = NCONF_new(NULL))) return 0; /* argument should point to test/ssl_test_ctx_test.conf */ - if (!TEST_int_gt(NCONF_load(conf, test_get_argument(0), NULL), 0)) { - TEST_note("Missing file argument"); + if (!TEST_int_gt(NCONF_load(conf, test_get_argument(0), NULL), 0)) return 0; - } ADD_TEST(test_empty_configuration); ADD_TEST(test_good_configuration); diff --git a/test/sslapitest.c b/test/sslapitest.c index 69520d7..6b44c16 100644 --- a/test/sslapitest.c +++ b/test/sslapitest.c @@ -6030,6 +6030,9 @@ static int test_ca_names(int tst) return testresult; } + +OPT_TEST_DECLARE_USAGE("certfile privkeyfile srpvfile tmpfile\n") + int setup_tests(void) { if (!TEST_ptr(cert = test_get_argument(0)) diff --git a/test/sslbuffertest.c b/test/sslbuffertest.c index 0ee7bdb..9a5ec2b 100644 --- a/test/sslbuffertest.c +++ b/test/sslbuffertest.c @@ -157,6 +157,8 @@ int global_init(void) return 1; } +OPT_TEST_DECLARE_USAGE("certfile privkeyfile\n") + int setup_tests(void) { char *cert, *pkey; diff --git a/test/sslcorrupttest.c b/test/sslcorrupttest.c index 1ca899d..bffccc8 100644 --- a/test/sslcorrupttest.c +++ b/test/sslcorrupttest.c @@ -244,15 +244,15 @@ static int test_ssl_corrupt(int testidx) return testresult; } +OPT_TEST_DECLARE_USAGE("certfile privkeyfile\n") + int setup_tests(void) { int n; if (!TEST_ptr(cert = test_get_argument(0)) - || !TEST_ptr(privkey = test_get_argument(1))) { - TEST_note("Usage error: require cert and private key files"); + || !TEST_ptr(privkey = test_get_argument(1))) return 0; - } n = setup_cipher_list(); if (n > 0) diff --git a/test/testutil.h b/test/testutil.h index 10a4b6a..9e08a42 100644 --- a/test/testutil.h +++ b/test/testutil.h @@ -1,5 +1,5 @@ /* - * Copyright 2014-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -15,6 +15,7 @@ #include #include #include +#include "../apps/opt.h" /*- * Simple unit tests should implement setup_tests(). @@ -117,22 +118,80 @@ # define TEST_CASE_NAME __func__ # endif /* __STDC_VERSION__ */ + +/* The default test enum which should be common to all tests */ +#define OPT_TEST_ENUM \ + OPT_TEST_HELP = 500, \ + OPT_TEST_LIST, \ + OPT_TEST_SINGLE, \ + OPT_TEST_ITERATION, \ + OPT_TEST_INDENT, \ + OPT_TEST_SEED + +/* The Default test OPTIONS common to all tests (without a usage string) */ +#define OPT_TEST_OPTIONS \ + { OPT_HELP_STR, 1, '-', "Valid options are:\n" }, \ + { "help", OPT_TEST_HELP, '-', "Display this summary" }, \ + { "list", OPT_TEST_LIST, '-', "Display the list of tests available" }, \ + { "test", OPT_TEST_SINGLE, 's', "Run a single test by id or name" }, \ + { "iter", OPT_TEST_ITERATION, 'n', "Run a single iteration of a test" }, \ + { "indent", OPT_TEST_INDENT,'p', "Number of tabs added to output" }, \ + { "seed", OPT_TEST_SEED, 'n', "Seed value to randomize tests with" } + +/* The Default test OPTIONS common to all tests starting with an additional usage string */ +#define OPT_TEST_OPTIONS_WITH_EXTRA_USAGE(usage) \ + { OPT_HELP_STR, 1, '-', "Usage: %s [options] " usage }, \ + OPT_TEST_OPTIONS + +/* The Default test OPTIONS common to all tests with an default usage string */ +#define OPT_TEST_OPTIONS_DEFAULT_USAGE \ + { OPT_HELP_STR, 1, '-', "Usage: %s [options]\n" }, \ + OPT_TEST_OPTIONS + +/* + * Optional Cases that need to be ignored by the test app when using opt_next(), + * (that are handled internally). + */ +#define OPT_TEST_CASES \ + OPT_TEST_HELP: \ + case OPT_TEST_LIST: \ + case OPT_TEST_SINGLE: \ + case OPT_TEST_ITERATION: \ + case OPT_TEST_INDENT: \ + case OPT_TEST_SEED + +/* + * Tests that use test_get_argument() that dont have any additional options + * (i.e- dont use opt_next()) can use this to set the usage string. + * It embeds test_get_options() which gives default command line options for + * the test system. + * + * Tests that need to use opt_next() need to specify + * (1) test_get_options() containing an options[] (Which should include either + * OPT_TEST_OPTIONS_DEFAULT_USAGE OR + * OPT_TEST_OPTIONS_WITH_EXTRA_USAGE). + * (2) An enum outside the test_get_options() which contains OPT_TEST_ENUM, as + * well as the additional options that need to be handled. + * (3) case OPT_TEST_CASES: break; inside the opt_next() handling code. + */ +#define OPT_TEST_DECLARE_USAGE(usage_str) \ +const OPTIONS *test_get_options(void) \ +{ \ + enum { OPT_TEST_ENUM }; \ + static const OPTIONS options[] = { \ + OPT_TEST_OPTIONS_WITH_EXTRA_USAGE(usage_str), \ + { NULL } \ + }; \ + return options; \ +} + /* - * Tests that need access to command line arguments should use the functions: - * test_get_argument(int n) to get the nth argument, the first argument is - * argument 0. This function returns NULL on error. - * test_get_argument_count() to get the count of the arguments. - * test_has_option(const char *) to check if the specified option was passed. - * test_get_option_argument(const char *) to get an option which includes an - * argument. NULL is returns if the option is not found. - * const char *test_get_program_name(void) returns the name of the test program - * being executed. + * Used to read non optional command line values that follow after the options. + * Returns NULL if there is no argument. */ -const char *test_get_program_name(void); char *test_get_argument(size_t n); +/* Return the number of additional non optional command line arguments */ size_t test_get_argument_count(void); -int test_has_option(const char *option); -const char *test_get_option_argument(const char *option); /* * Internal helpers. Test programs shouldn't use these directly, but should @@ -150,6 +209,16 @@ void add_all_tests(const char *test_case_name, int (*test_fn)(int idx), int num, int global_init(void); int setup_tests(void); void cleanup_tests(void); +/* + * Used to supply test specific command line options, + * If non optional parameters are used, then the first entry in the OPTIONS[] + * should contain: + * { OPT_HELP_STR, 1, '-', "list of non optional commandline params\n"}, + * The last entry should always be { NULL }. + * + * Run the test locally using './test/test_name -help' to check the usage. + */ +const OPTIONS *test_get_options(void); /* * Test assumption verification helpers. diff --git a/test/testutil/driver.c b/test/testutil/driver.c index 3e80a7c..df62625 100644 --- a/test/testutil/driver.c +++ b/test/testutil/driver.c @@ -21,6 +21,7 @@ # define strdup _strdup #endif + /* * Declares the structures needed to register each test case function. */ @@ -36,14 +37,21 @@ typedef struct test_info { static TEST_INFO all_tests[1024]; static int num_tests = 0; +static int show_list = 0; +static int single_test = -1; +static int single_iter = -1; +static int level = 0; static int seed = 0; /* - * A parameterised tests runs a loop of test cases. + * A parameterised test runs a loop of test cases. * |num_test_cases| counts the total number of test cases * across all tests. */ static int num_test_cases = 0; +static int process_shared_options(void); + + void add_test(const char *test_case_name, int (*test_fn) (void)) { assert(num_tests != OSSL_NELEM(all_tests)); @@ -66,8 +74,6 @@ void add_all_tests(const char *test_case_name, int(*test_fn)(int idx), num_test_cases += num; } -static int level = 0; - int subtest_level(void) { return level; @@ -99,21 +105,26 @@ static int gcd(int a, int b) return a; } -void setup_test_framework(void) +static void set_seed(int s) { - char *TAP_levels = getenv("HARNESS_OSSL_LEVEL"); - char *test_seed = getenv("OPENSSL_TEST_RAND_ORDER"); + seed = s; + if (seed <= 0) + seed = (int)time(NULL); + test_printf_stdout("%*s# RAND SEED %d\n", subtest_level(), "", seed); + test_flush_stdout(); + srand(seed); +} - level = TAP_levels != NULL ? 4 * atoi(TAP_levels) : 0; - if (test_seed != NULL) { - seed = atoi(test_seed); - if (seed <= 0) - seed = (int)time(NULL); - test_printf_stdout("%*s# RAND SEED %d\n", subtest_level(), "", seed); - test_flush_stdout(); - srand(seed); - } +int setup_test_framework(int argc, char *argv[]) +{ + char *test_seed = getenv("OPENSSL_TEST_RAND_ORDER"); + char *TAP_levels = getenv("HARNESS_OSSL_LEVEL"); + + if (TAP_levels != NULL) + level = 4 * atoi(TAP_levels); + if (test_seed != NULL) + set_seed(atoi(test_seed)); #ifndef OPENSSL_NO_CRYPTO_MDEBUG if (should_report_leaks()) { @@ -121,8 +132,115 @@ void setup_test_framework(void) CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); } #endif + if (!opt_init(argc, argv, test_get_options())) + return 0; + return 1; } + +/* + * This can only be called after setup() has run, since num_tests and + * all_tests[] are setup at this point + */ +static int check_single_test_params(char *name, char *testname, char *itname) +{ + if (name != NULL) { + int i; + for (i = 0; i < num_tests; ++i) { + if (strcmp(name, all_tests[i].test_case_name) == 0) { + single_test = 1 + i; + break; + } + } + if (i >= num_tests) + single_test = atoi(name); + } + + + /* if only iteration is specified, assume we want the first test */ + if (single_test == -1 && single_iter != -1) + single_test = 1; + + if (single_test != -1) { + if (single_test < 1 || single_test > num_tests) { + test_printf_stderr("Invalid -%s value " + "(Value must be a valid test name OR a value between %d..%d)\n", + testname, 1, num_tests); + return 0; + } + } + if (single_iter != -1) { + if (all_tests[single_test - 1].num == -1) { + test_printf_stderr("-%s option is not valid for test %d:%s\n", + itname, + single_test, + all_tests[single_test - 1].test_case_name); + return 0; + } else if (single_iter < 1 + || single_iter > all_tests[single_test - 1].num) { + test_printf_stderr("Invalid -%s value for test %d:%s\t" + "(Value must be in the range %d..%d)\n", + itname, single_test, + all_tests[single_test - 1].test_case_name, + 1, all_tests[single_test - 1].num); + return 0; + } + } + return 1; +} + +static int process_shared_options(void) +{ + OPTION_CHOICE_DEFAULT o; + int value; + int ret = -1; + char *flag_test = ""; + char *flag_iter = ""; + char *testname = NULL; + + opt_begin(); + while ((o = opt_next()) != OPT_EOF) { + switch (o) { + /* Ignore any test options at this level */ + default: + break; + case OPT_ERR: + return ret; + case OPT_TEST_HELP: + opt_help(test_get_options()); + return 0; + case OPT_TEST_LIST: + show_list = 1; + break; + case OPT_TEST_SINGLE: + flag_test = opt_flag(); + testname = opt_arg(); + break; + case OPT_TEST_ITERATION: + flag_iter = opt_flag(); + if (!opt_int(opt_arg(), &single_iter)) + goto end; + break; + case OPT_TEST_INDENT: + if (!opt_int(opt_arg(), &value)) + goto end; + level = 4 * value; + break; + case OPT_TEST_SEED: + if (!opt_int(opt_arg(), &value)) + goto end; + set_seed(value); + break; + } + } + if (!check_single_test_params(testname, flag_test, flag_iter)) + goto end; + ret = 1; +end: + return ret; +} + + int pulldown_test_framework(int ret) { set_test_title(NULL); @@ -131,7 +249,6 @@ int pulldown_test_framework(int ret) && CRYPTO_mem_leaks_cb(openssl_error_cb, NULL) <= 0) return EXIT_FAILURE; #endif - return ret; } @@ -176,14 +293,21 @@ int run_tests(const char *test_prog_name) int ii, i, jj, j, jstep; int permute[OSSL_NELEM(all_tests)]; + i = process_shared_options(); + if (i == 0) + return EXIT_SUCCESS; + if (i == -1) + return EXIT_FAILURE; + if (num_tests < 1) { test_printf_stdout("%*s1..0 # Skipped: %s\n", level, "", test_prog_name); - } else { + } else if (show_list == 0 && single_test == -1) { if (level > 0) test_printf_stdout("%*s# Subtest: %s\n", level, "", test_prog_name); test_printf_stdout("%*s1..%d\n", level, "", num_tests); } + test_flush_stdout(); for (i = 0; i < num_tests; i++) @@ -198,12 +322,25 @@ int run_tests(const char *test_prog_name) for (ii = 0; ii != num_tests; ++ii) { i = permute[ii]; - if (all_tests[i].num == -1) { + + if (single_test != -1 && ((i+1) != single_test)) { + continue; + } + else if (show_list) { + if (all_tests[i].num != -1) { + test_printf_stdout("%d - %s (%d..%d)\n", ii + 1, + all_tests[i].test_case_name, 1, + all_tests[i].num); + } else { + test_printf_stdout("%d - %s\n", ii + 1, + all_tests[i].test_case_name); + } + test_flush_stdout(); + } else if (all_tests[i].num == -1) { int ret = 0; set_test_title(all_tests[i].test_case_name); ret = all_tests[i].test_fn(); - verdict = 1; if (!ret) { verdict = 0; @@ -215,7 +352,7 @@ int run_tests(const char *test_prog_name) int num_failed_inner = 0; level += 4; - if (all_tests[i].subtest) { + if (all_tests[i].subtest && single_iter == -1) { test_printf_stdout("%*s# Subtest: %s\n", level, "", all_tests[i].test_case_name); test_printf_stdout("%*s%d..%d\n", level, "", 1, @@ -235,6 +372,8 @@ int run_tests(const char *test_prog_name) int ret; j = (j + jstep) % all_tests[i].num; + if (single_iter != -1 && ((jj + 1) != single_iter)) + continue; set_test_title(NULL); ret = all_tests[i].param_test_fn(j); diff --git a/test/testutil/main.c b/test/testutil/main.c index 8b30ac6..6716750 100644 --- a/test/testutil/main.c +++ b/test/testutil/main.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,28 +8,9 @@ */ #include "../testutil.h" -#include "internal/nelem.h" #include "output.h" #include "tu_local.h" -#include - -static size_t arg_count; -static char **args; -static unsigned char arg_used[1000]; - -static void check_arg_usage(void) -{ - size_t i, n = arg_count < OSSL_NELEM(arg_used) ? arg_count - : OSSL_NELEM(arg_used); - - for (i = 0; i < n; i++) - if (!arg_used[i+1]) - test_printf_stderr("Warning ignored command-line argument %zu: %s\n", - i, args[i+1]); - if (i < arg_count) - test_printf_stderr("Warning arguments %zu and later unchecked\n", i); -} int main(int argc, char *argv[]) { @@ -42,65 +23,18 @@ int main(int argc, char *argv[]) return ret; } - arg_count = argc - 1; - args = argv; - - setup_test_framework(); + if (!setup_test_framework(argc, argv)) + goto end; - if (setup_tests()) + if (setup_tests()) { ret = run_tests(argv[0]); - cleanup_tests(); - check_arg_usage(); - + cleanup_tests(); + opt_check_usage(); + } else { + opt_help(test_get_options()); + } +end: ret = pulldown_test_framework(ret); test_close_streams(); return ret; } - -const char *test_get_program_name(void) -{ - return args[0]; -} - -char *test_get_argument(size_t n) -{ - if (n > arg_count) - return NULL; - if (n + 1 < OSSL_NELEM(arg_used)) - arg_used[n + 1] = 1; - return args[n + 1]; -} - -size_t test_get_argument_count(void) -{ - return arg_count; -} - -int test_has_option(const char *option) -{ - size_t i; - - for (i = 1; i <= arg_count; i++) - if (strcmp(args[i], option) == 0) { - arg_used[i] = 1; - return 1; - } - return 0; -} - -const char *test_get_option_argument(const char *option) -{ - size_t i, n = strlen(option); - - for (i = 1; i <= arg_count; i++) - if (strncmp(args[i], option, n) == 0) { - arg_used[i] = 1; - if (args[i][n] == '\0' && i + 1 < arg_count) { - arg_used[++i] = 1; - return args[i]; - } - return args[i] + n; - } - return NULL; -} - diff --git a/test/testutil/options.c b/test/testutil/options.c new file mode 100644 index 0000000..9a32d1f --- /dev/null +++ b/test/testutil/options.c @@ -0,0 +1,64 @@ +/* + * Copyright 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 + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "../testutil.h" +#include "internal/nelem.h" +#include "tu_local.h" +#include "output.h" + + +static int used[100] = { 0 }; + + +size_t test_get_argument_count(void) +{ + return opt_num_rest(); +} + +char *test_get_argument(size_t n) +{ + char **argv = opt_rest(); + + OPENSSL_assert(n < sizeof(used)); + if ((int)n >= opt_num_rest() || argv == NULL) + return NULL; + used[n] = 1; + return argv[n]; +} + +void opt_check_usage(void) +{ + int i; + char **argv = opt_rest(); + int n, arg_count = opt_num_rest(); + + if (arg_count > (int)OSSL_NELEM(used)) + n = (int)OSSL_NELEM(used); + else + n = arg_count; + for (i = 0; i < n; i++) { + if (used[i] == 0) + test_printf_stderr("Warning ignored command-line argument %d: %s\n", + i, argv[i]); + } + if (i < arg_count) + test_printf_stderr("Warning arguments %d and later unchecked\n", i); +} + +int opt_printf_stderr(const char *fmt, ...) +{ + va_list ap; + int ret; + + va_start(ap, fmt); + ret = test_vprintf_stderr(fmt, ap); + va_end(ap); + return ret; +} + diff --git a/test/testutil/test_options.c b/test/testutil/test_options.c new file mode 100644 index 0000000..99e6d29 --- /dev/null +++ b/test/testutil/test_options.c @@ -0,0 +1,21 @@ +/* + * Copyright 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 + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "../testutil.h" +#include "tu_local.h" + +/* An overridable list of command line options */ +const OPTIONS *test_get_options(void) +{ + static const OPTIONS default_options[] = { + OPT_TEST_OPTIONS_DEFAULT_USAGE, + { NULL } + }; + return default_options; +} diff --git a/test/testutil/tu_local.h b/test/testutil/tu_local.h index 98cfae6..049d7b1 100644 --- a/test/testutil/tu_local.h +++ b/test/testutil/tu_local.h @@ -1,5 +1,5 @@ /* - * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -44,8 +44,16 @@ void test_fail_memory_message(const char *prefix, const char *file, const unsigned char *m1, size_t l1, const unsigned char *m2, size_t l2); -void setup_test_framework(void); +__owur int setup_test_framework(int argc, char *argv[]); __owur int pulldown_test_framework(int ret); __owur int run_tests(const char *test_prog_name); void set_test_title(const char *title); + +typedef enum OPTION_choice_default { + OPT_ERR = -1, + OPT_EOF = 0, + OPT_TEST_ENUM +} OPTION_CHOICE_DEFAULT; +void opt_check_usage(void); + diff --git a/test/tls13ccstest.c b/test/tls13ccstest.c index 521a992..d89354c 100644 --- a/test/tls13ccstest.c +++ b/test/tls13ccstest.c @@ -481,6 +481,8 @@ static int test_tls13ccs(int tst) return ret; } +OPT_TEST_DECLARE_USAGE("certfile privkeyfile\n") + int setup_tests(void) { if (!TEST_ptr(cert = test_get_argument(0)) diff --git a/test/uitest.c b/test/uitest.c index ba40f52..289f32b 100644 --- a/test/uitest.c +++ b/test/uitest.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -11,11 +11,9 @@ #include #include #include -#include "apps.h" +#include "apps_ui.h" #include "testutil.h" -/* apps/apps.c depend on these */ -char *default_config_file = NULL; #include diff --git a/test/v3ext.c b/test/v3ext.c index 80e81e5..2c8ac6b 100644 --- a/test/v3ext.c +++ b/test/v3ext.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -37,6 +37,8 @@ end: return ret; } +OPT_TEST_DECLARE_USAGE("cert.pem\n") + int setup_tests(void) { if (!TEST_ptr(infile = test_get_argument(0))) diff --git a/test/verify_extra_test.c b/test/verify_extra_test.c index 25212dd..468de62 100644 --- a/test/verify_extra_test.c +++ b/test/verify_extra_test.c @@ -175,14 +175,14 @@ static int test_store_ctx(void) return testresult; } +OPT_TEST_DECLARE_USAGE("roots.pem untrusted.pem bad.pem\n") + int setup_tests(void) { if (!TEST_ptr(roots_f = test_get_argument(0)) || !TEST_ptr(untrusted_f = test_get_argument(1)) - || !TEST_ptr(bad_f = test_get_argument(2))) { - TEST_error("usage: verify_extra_test roots.pem untrusted.pem bad.pem\n"); + || !TEST_ptr(bad_f = test_get_argument(2))) return 0; - } ADD_TEST(test_alt_chains_cert_forgery); ADD_TEST(test_store_ctx); diff --git a/test/x509_check_cert_pkey_test.c b/test/x509_check_cert_pkey_test.c index 92a7777..434054f 100644 --- a/test/x509_check_cert_pkey_test.c +++ b/test/x509_check_cert_pkey_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -106,14 +106,25 @@ failed: return ret; } +const OPTIONS *test_get_options(void) +{ + enum { OPT_TEST_ENUM }; + static const OPTIONS test_options[] = { + OPT_TEST_OPTIONS_WITH_EXTRA_USAGE("certname key.pem type expected\n"), + { OPT_HELP_STR, 1, '-', "certname\tCertificate filename .pem/.req\n" }, + { OPT_HELP_STR, 1, '-', "type\t\tvalue must be 'pem' or 'req'\n" }, + { OPT_HELP_STR, 1, '-', "expected\tthe expected return value\n" }, + { NULL } + }; + return test_options; +} + int setup_tests(void) { if (!TEST_ptr(c = test_get_argument(0)) || !TEST_ptr(k = test_get_argument(1)) || !TEST_ptr(t = test_get_argument(2)) || !TEST_ptr(e = test_get_argument(3))) { - TEST_note("usage: x509_check_cert_pkey cert.pem|cert.req" - " key.pem cert|req "); return 0; } diff --git a/test/x509_dup_cert_test.c b/test/x509_dup_cert_test.c index 6f766b9..ebea488 100644 --- a/test/x509_dup_cert_test.c +++ b/test/x509_dup_cert_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -33,14 +33,14 @@ static int test_509_dup_cert(int n) return ret; } +OPT_TEST_DECLARE_USAGE("cert.pem...\n") + int setup_tests(void) { size_t n = test_get_argument_count(); - if (!TEST_int_gt(n, 0)) { - TEST_note("usage: x509_dup_cert_test cert.pem..."); + if (!TEST_int_gt(n, 0)) return 0; - } ADD_ALL_TESTS(test_509_dup_cert, n); return 1; diff --git a/test/x509aux.c b/test/x509aux.c index 4488aa6..ec2618d 100644 --- a/test/x509aux.c +++ b/test/x509aux.c @@ -161,14 +161,13 @@ static int test_certs(int num) return 0; } +OPT_TEST_DECLARE_USAGE("certfile...\n") + int setup_tests(void) { size_t n = test_get_argument_count(); - - if (n == 0) { - TEST_error("usage: %s certfile...", test_get_program_name()); + if (n == 0) return 0; - } ADD_ALL_TESTS(test_certs, (int)n); return 1; From levitte at openssl.org Mon Feb 11 15:04:41 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 15:04:41 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549897481.668211.29796.nullmailer@dev.openssl.org> The branch master has been updated via 1842f369e5541d8ed9b2716cdd7d516005994733 (commit) from a43ce58f5569a160272c492c680f2e42d38ec769 (commit) - Log ----------------------------------------------------------------- commit 1842f369e5541d8ed9b2716cdd7d516005994733 Author: Richard Levitte Date: Thu Jan 31 00:06:50 2019 +0100 ENGINE modules aren't special, so call them MODULES The only thing that makes an ENGINE module special is its entry points. Other than that, it's a normal dynamically loadable module, nothing special about it. This change has us stop pretending anything else. We retain using ENGINE as a term for installation, because it's related to a specific installation directory, and we therefore also mark ENGINE modules specifically as such with an attribute in the build.info files. Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8147) ----------------------------------------------------------------------- Summary of changes: Configurations/README | 8 ++++---- Configurations/README.design | 36 ++++++++++++++++++------------------ Configurations/common.tmpl | 8 ++++---- Configurations/descrip.mms.tmpl | 29 +++++++++++++++-------------- Configurations/unix-Makefile.tmpl | 23 ++++++++++++----------- Configurations/windows-makefile.tmpl | 32 +++++++++++++++++--------------- Configure | 27 +++++++++++++++------------ doc/man1/version.pod | 2 +- engines/build.info | 8 ++++---- 9 files changed, 90 insertions(+), 83 deletions(-) diff --git a/Configurations/README b/Configurations/README index a106f8c..8efabb3 100644 --- a/Configurations/README +++ b/Configurations/README @@ -159,7 +159,7 @@ In each table entry, the following keys are significant: below [2]. dso_scheme => The type of dynamic shared objects to build for. This mostly comes into play with - engines, but can be used for other purposes + modules, but can be used for other purposes as well. Valid values are "DLFCN" (dlopen() et al), "DLFCN_NO_H" (for systems that use dlopen() et al but do not have @@ -350,7 +350,7 @@ In each table entry, the following keys are significant: - shared libraries; that would be libcrypto and libssl. - shared objects (sometimes called dynamic libraries); that would - be the engines. + be the modules. - applications; those are apps/openssl and all the test apps. Very roughly speaking, linking is done like this (words in braces @@ -411,10 +411,10 @@ variables: PROGRAMS=foo bar LIBS=libsomething - ENGINES=libeng + MODULES=libeng SCRIPTS=myhack -Note that the files mentioned for PROGRAMS, LIBS and ENGINES *must* be +Note that the files mentioned for PROGRAMS, LIBS and MODULES *must* be without extensions. The build file templates will figure them out. For each thing to be built, it is then possible to say what sources diff --git a/Configurations/README.design b/Configurations/README.design index 75c19a6..b79d0b2 100644 --- a/Configurations/README.design +++ b/Configurations/README.design @@ -36,7 +36,7 @@ in build.info. Their file name extensions will be inferred by the build-file templates, adapted for the platform they are meant for (see sections on %unified_info and build-file templates further down). -The variables PROGRAMS, LIBS, ENGINES and SCRIPTS are used to declare +The variables PROGRAMS, LIBS, MODULES and SCRIPTS are used to declare end products. There are variants for them with '_NO_INST' as suffix (PROGRAM_NO_INST etc) to specify end products that shouldn't get installed. @@ -47,12 +47,12 @@ particular produced file, extra dependencies, include directories needed, or C macros to be defined. All their values in all the build.info throughout the source tree are -collected together and form a set of programs, libraries, engines and +collected together and form a set of programs, libraries, modules and scripts to be produced, source files, dependencies, etc etc etc. Let's have a pretend example, a very limited contraption of OpenSSL, composed of the program 'apps/openssl', the libraries 'libssl' and -'libcrypto', an engine 'engines/ossltest' and their sources and +'libcrypto', an module 'engines/ossltest' and their sources and dependencies. # build.info @@ -120,22 +120,22 @@ This is the build.info file in 'ssl/', and it tells us that the library 'libssl' is built from the source file 'ssl/tls.c'. # engines/build.info - ENGINES=dasync + MODULES=dasync SOURCE[dasync]=e_dasync.c DEPEND[dasync]=../libcrypto INCLUDE[dasync]=../include - ENGINES_NO_INST=ossltest + MODULES_NO_INST=ossltest SOURCE[ossltest]=e_ossltest.c DEPEND[ossltest]=../libcrypto.a INCLUDE[ossltest]=../include -This is the build.info file in 'engines/', telling us that two engines +This is the build.info file in 'engines/', telling us that two modules called 'engines/dasync' and 'engines/ossltest' shall be built, that dasync's source is 'engines/e_dasync.c' and ossltest's source is 'engines/e_ossltest.c' and that the include directory 'include/' may -be used when building anything that will be part of these engines. -Also, both engines depend on the library 'libcrypto' to function +be used when building anything that will be part of these modules. +Also, both modules depend on the library 'libcrypto' to function properly. ossltest is explicitly linked with the static variant of the library 'libcrypto'. Finally, only dasync is being installed, as ossltest is only for internal testing. @@ -156,12 +156,12 @@ information comes down to this: INCLUDE[apps/openssl]=. include DEPEND[apps/openssl]=libssl - ENGINES=engines/dasync + MODULES=engines/dasync SOURCE[engines/dasync]=engines/e_dasync.c DEPEND[engines/dasync]=libcrypto INCLUDE[engines/dasync]=include - ENGINES_NO_INST=engines/ossltest + MODULES_NO_INST=engines/ossltest SOURCE[engines/ossltest]=engines/e_ossltest.c DEPEND[engines/ossltest]=libcrypto.a INCLUDE[engines/ossltest]=include @@ -177,10 +177,10 @@ LIBS may be used to declare routine libraries only. PROGRAMS may be used to declare programs only. -ENGINES may be used to declare engines only. +MODULES may be used to declare modules only. The indexes for SOURCE must only be end product files, such as -libraries, programs or engines. The values of SOURCE variables must +libraries, programs or modules. The values of SOURCE variables must only be source files (possibly generated). INCLUDE and DEPEND shows a relationship between different files @@ -209,8 +209,8 @@ indexes: pairs. These are directly inferred from the DEPEND variables in build.info files. - engines => a list of engines. These are directly inferred from - the ENGINES variable in build.info files. + modules => a list of modules. These are directly inferred from + the MODULES variable in build.info files. generate => a hash table containing 'file' => [ 'generator' ... ] pairs. These are directly inferred from the GENERATE @@ -221,7 +221,7 @@ indexes: variables in build.info files. install => a hash table containing 'type' => [ 'file' ... ] pairs. - The types are 'programs', 'libraries', 'engines' and + The types are 'programs', 'libraries', 'modules' and 'scripts', and the array of files list the files of that type that should be installed. @@ -280,7 +280,7 @@ section above would be digested into a %unified_info table: "util/Foo.pm", ], }, - "engines" => + "modules" => [ "engines/dasync", "engines/ossltest", @@ -321,7 +321,7 @@ section above would be digested into a %unified_info table: } "install" => { - "engines" => + "modules" => [ "engines/dasync", ], @@ -556,7 +556,7 @@ etc. 'sources' has the list of source files to build the resulting script from. -Along with the build-file templates is the driving engine +Along with the build-file templates is the driving template Configurations/common.tmpl, which looks through all the information in %unified_info and generates all the rulesets to build libraries, programs and all intermediate files, using the rule generating diff --git a/Configurations/common.tmpl b/Configurations/common.tmpl index a15971e..5ca0d56 100644 --- a/Configurations/common.tmpl +++ b/Configurations/common.tmpl @@ -143,10 +143,10 @@ $cache{$lib} = 1; } - # doengine is responsible for building engines. It will call + # domodule is responsible for building modules. It will call # obj2dso, and also makes sure all object files for the library # are built. - sub doengine { + sub domodule { my $lib = shift; return "" if $cache{$lib}; $OUT .= obj2dso(lib => $lib, @@ -209,10 +209,10 @@ # Build mandatory generated headers foreach (@{$unified_info{depends}->{""}}) { dogenerate($_); } - # Build all known libraries, engines, programs and scripts. + # Build all known libraries, modules, programs and scripts. # Everything else will be handled as a consequence. foreach (@{$unified_info{libraries}}) { dolib($_); } - foreach (@{$unified_info{engines}}) { doengine($_); } + foreach (@{$unified_info{modules}}) { domodule($_); } foreach (@{$unified_info{programs}}) { dobin($_); } foreach (@{$unified_info{scripts}}) { doscript($_); } diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl index ae365c6..8efdeb7 100644 --- a/Configurations/descrip.mms.tmpl +++ b/Configurations/descrip.mms.tmpl @@ -55,8 +55,9 @@ grep { !$unified_info{attributes}->{$_}->{noinst} } @{$unified_info{libraries}}; our @install_engines = - grep { !$unified_info{attributes}->{$_}->{noinst} } - @{$unified_info{engines}}; + grep { !$unified_info{attributes}->{$_}->{noinst} + && $unified_info{attributes}->{$_}->{engine} } + @{$unified_info{modules}}; our @install_programs = grep { !$unified_info{attributes}->{$_}->{noinst} } @{$unified_info{programs}}; @@ -122,7 +123,7 @@ SHLIB_TARGET={- $target{shared_target} -} LIBS={- join(", ", map { "-\n\t".$_.".OLB" } @libs) -} SHLIBS={- join(", ", map { "-\n\t".$_.".EXE" } @shlibs) -} -ENGINES={- join(", ", map { "-\n\t".$_.".EXE" } @{$unified_info{engines}}) -} +MODULES={- join(", ", map { "-\n\t".$_.".EXE" } @{$unified_info{modules}}) -} PROGRAMS={- join(", ", map { "-\n\t".$_.".EXE" } @{$unified_info{programs}}) -} SCRIPTS={- join(", ", map { "-\n\t".$_ } @{$unified_info{scripts}}) -} {- output_off() if $disabled{makedepend}; "" -} @@ -164,7 +165,7 @@ OPENSSLDIR={- catdir($config{openssldir}) or : "SYS\$COMMON:[OPENSSL-COMMON]" -} # The same, but for C OPENSSLDIR_C={- platform->osslprefix() -}DATAROOT:[000000] -# Where installed engines reside, for C +# Where installed ENGINE modules reside, for C ENGINESDIR_C={- platform->osslprefix() -}ENGINES{- $sover_dirname.$target{pointer_size} -}: ##### User defined commands and flags ################################ @@ -400,14 +401,14 @@ NODEBUG=@ # The main targets ################################################### -{- dependmagic('all'); -} : build_libs_nodep, build_engines_nodep, build_programs_nodep +{- dependmagic('all'); -} : build_libs_nodep, build_modules_nodep, build_programs_nodep {- dependmagic('build_libs'); -} : build_libs_nodep -{- dependmagic('build_engines'); -} : build_engines_nodep +{- dependmagic('build_modules'); -} : build_modules_nodep {- dependmagic('build_programs'); -} : build_programs_nodep build_generated : $(GENERATED_MANDATORY) build_libs_nodep : $(LIBS), $(SHLIBS) -build_engines_nodep : $(ENGINES) +build_modules_nodep : $(MODULES) build_programs_nodep : $(PROGRAMS), $(SCRIPTS) # Kept around for backward compatibility @@ -423,7 +424,7 @@ build_all_generated : $(GENERATED_MANDATORY) $(GENERATED) @ ! {- output_on() if $disabled{makedepend}; "" -} test : tests -{- dependmagic('tests'); -} : build_programs_nodep, build_engines_nodep +{- dependmagic('tests'); -} : build_programs_nodep, build_modules_nodep @ ! {- output_off() if $disabled{tests}; "" -} SET DEFAULT [.test]{- move("test") -} CREATE/DIR [.test-runs] @@ -483,14 +484,14 @@ check_install : uninstall : uninstall_docs uninstall_sw # Because VMS wants the generation number (or *) to delete files, we can't -# use $(LIBS), $(PROGRAMS), $(GENERATED) and $(ENGINES)directly. +# use $(LIBS), $(PROGRAMS), $(GENERATED) and $(MODULES) directly. libclean : {- join("\n\t", map { "- DELETE $_.OLB;*" } @libs) || "@ !" -} {- join("\n\t", map { "- DELETE $_.EXE;*,$_.MAP;*" } @shlibs) || "@ !" -} clean : libclean {- join("\n\t", map { "- DELETE $_.EXE;*,$_.OPT;*" } @{$unified_info{programs}}) || "@ !" -} - {- join("\n\t", map { "- DELETE $_.EXE;*,$_.OPT;*" } @{$unified_info{engines}}) || "@ !" -} + {- join("\n\t", map { "- DELETE $_.EXE;*,$_.OPT;*" } @{$unified_info{modules}}) || "@ !" -} {- join("\n\t", map { "- DELETE $_;*" } @{$unified_info{scripts}}) || "@ !" -} {- join("\n\t", map { "- DELETE $_;*" } @{$unified_info{depends}->{""}}) || "@ !" -} {- join("\n\t", map { "- DELETE $_;*" } @generated) || "@ !" -} @@ -557,14 +558,14 @@ install_dev : check_INSTALLTOP install_runtime_libs map { "COPY/PROT=W:R $_.OLB ossl_installroot:[LIB.'arch']" } @install_libs) -} -install_engines : check_INSTALLTOP install_runtime_libs build_engines - @ {- output_off() unless scalar @{$unified_info{engines}}; "" -} ! - @ WRITE SYS$OUTPUT "*** Installing engines" +install_engines : check_INSTALLTOP install_runtime_libs build_modules + @ {- output_off() unless scalar @install_engines; "" -} ! + @ WRITE SYS$OUTPUT "*** Installing ENGINE modules" - CREATE/DIR ossl_installroot:[ENGINES{- $sover_dirname.$target{pointer_size} -}.'arch'] {- join("\n ", map { "COPY/PROT=W:RE $_.EXE ossl_installroot:[ENGINES$sover_dirname$target{pointer_size}.'arch']" } @install_engines) -} - @ {- output_on() unless scalar @{$unified_info{engines}}; "" -} ! + @ {- output_on() unless scalar @install_engines; "" -} ! install_runtime : install_programs diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 36286f6..41794f0 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -40,7 +40,7 @@ SHLIB_INFO={- join(" ", map { my $x = platform->sharedlib($_); my $y = platform->sharedlib_simple($_); $x ? "\"$x;$y\"" : () } @{$unified_info{libraries}}) -} -ENGINES={- join(" ", map { platform->dso($_) } @{$unified_info{engines}}) -} +MODULES={- join(" ", map { platform->dso($_) } @{$unified_info{modules}}) -} PROGRAMS={- join(" ", map { platform->bin($_) } @{$unified_info{programs}}) -} SCRIPTS={- join(" ", @{$unified_info{scripts}}) -} {- output_off() if $disabled{makedepend}; "" -} @@ -71,8 +71,9 @@ INSTALL_SHLIB_INFO={- -} INSTALL_ENGINES={- join(" ", map { platform->dso($_) } - grep { !$unified_info{attributes}->{$_}->{noinst} } - @{$unified_info{engines}}) + grep { !$unified_info{attributes}->{$_}->{noinst} + && $unified_info{attributes}->{$_}->{engine} } + @{$unified_info{modules}}) -} INSTALL_PROGRAMS={- join(" ", map { platform->bin($_) } @@ -312,14 +313,14 @@ LANG=C # The main targets ################################################### -{- dependmagic('all'); -}: build_libs_nodep build_engines_nodep build_programs_nodep link-utils +{- dependmagic('all'); -}: build_libs_nodep build_modules_nodep build_programs_nodep link-utils {- dependmagic('build_libs'); -}: build_libs_nodep -{- dependmagic('build_engines'); -}: build_engines_nodep +{- dependmagic('build_modules'); -}: build_modules_nodep {- dependmagic('build_programs'); -}: build_programs_nodep build_generated: $(GENERATED_MANDATORY) build_libs_nodep: libcrypto.pc libssl.pc openssl.pc -build_engines_nodep: $(ENGINES) +build_modules_nodep: $(MODULES) build_programs_nodep: $(PROGRAMS) $(SCRIPTS) # Kept around for backward compatibility @@ -335,7 +336,7 @@ build_all_generated: $(GENERATED_MANDATORY) $(GENERATED) @ : {- output_on() if $disabled{makedepend}; "" -} test: tests -{- dependmagic('tests'); -}: build_programs_nodep build_engines_nodep link-utils +{- dependmagic('tests'); -}: build_programs_nodep build_modules_nodep link-utils @ : {- output_off() if $disabled{tests}; "" -} ( cd test; \ mkdir -p test-runs; \ @@ -382,7 +383,7 @@ libclean: $(RM) *{- platform->defext() -} clean: libclean - $(RM) $(PROGRAMS) $(TESTPROGS) $(ENGINES) $(SCRIPTS) + $(RM) $(PROGRAMS) $(TESTPROGS) $(MODULES) $(SCRIPTS) $(RM) $(GENERATED_MANDATORY) $(GENERATED) -$(RM) `find . -name .git -prune -o -name '*{- platform->depext() -}' -print` -$(RM) `find . -name .git -prune -o -name '*{- platform->objext() -}' -print` @@ -578,10 +579,10 @@ uninstall_dev: uninstall_runtime_libs -$(RMDIR) $(DESTDIR)$(libdir)/pkgconfig -$(RMDIR) $(DESTDIR)$(libdir) -install_engines: install_runtime_libs build_engines +install_engines: install_runtime_libs build_modules @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(ENGINESDIR)/ - @$(ECHO) "*** Installing engines" + @$(ECHO) "*** Installing ENGINE modules" @set -e; for e in dummy $(INSTALL_ENGINES); do \ if [ "$$e" = "dummy" ]; then continue; fi; \ fn=`basename $$e`; \ @@ -593,7 +594,7 @@ install_engines: install_runtime_libs build_engines done uninstall_engines: - @$(ECHO) "*** Uninstalling engines" + @$(ECHO) "*** Uninstalling ENGINE modules" @set -e; for e in dummy $(INSTALL_ENGINES); do \ if [ "$$e" = "dummy" ]; then continue; fi; \ fn=`basename $$e`; \ diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl index 0cd1e86..6d38cfe 100644 --- a/Configurations/windows-makefile.tmpl +++ b/Configurations/windows-makefile.tmpl @@ -45,8 +45,8 @@ SHLIB_VERSION_NUMBER={- $config{shlib_version} -} LIBS={- join(" ", map { ( platform->sharedlib_import($_), platform->staticlib($_) ) } @{$unified_info{libraries}}) -} SHLIBS={- join(" ", map { platform->sharedlib($_) // () } @{$unified_info{libraries}}) -} SHLIBPDBS={- join(" ", map { platform->sharedlibpdb($_) // () } @{$unified_info{libraries}}) -} -ENGINES={- join(" ", map { platform->dso($_) } @{$unified_info{engines}}) -} -ENGINEPDBS={- join(" ", map { platform->dsopdb($_) } @{$unified_info{engines}}) -} +MODULES={- join(" ", map { platform->dso($_) } @{$unified_info{modules}}) -} +MODULEPDBS={- join(" ", map { platform->dsopdb($_) } @{$unified_info{modules}}) -} PROGRAMS={- our @PROGRAMS = map { platform->bin($_) } @{$unified_info{programs}}; join(" ", @PROGRAMS) -} PROGRAMPDBS={- join(" ", map { $_.".pdb" } @{$unified_info{programs}}) -} SCRIPTS={- join(" ", @{$unified_info{scripts}}) -} @@ -79,13 +79,15 @@ INSTALL_SHLIBPDBS={- -} INSTALL_ENGINES={- join(" ", map { quotify1(platform->dso($_)) } - grep { !$unified_info{attributes}->{$_}->{noinst} } - @{$unified_info{engines}}) + grep { !$unified_info{attributes}->{$_}->{noinst} + && $unified_info{attributes}->{$_}->{engine} } + @{$unified_info{modules}}) -} INSTALL_ENGINEPDBS={- join(" ", map { quotify1(platform->dsopdb($_)) } - grep { !$unified_info{attributes}->{$_}->{noinst} } - @{$unified_info{engines}}) + grep { !$unified_info{attributes}->{$_}->{noinst} + && $unified_info{attributes}->{$_}->{engine} } + @{$unified_info{modules}}) -} INSTALL_PROGRAMS={- join(" ", map { quotify1(platform->bin($_)) } @@ -311,14 +313,14 @@ PROCESSOR= {- $config{processor} -} # The main targets ################################################### -{- dependmagic('all'); -}: build_libs_nodep build_engines_nodep build_programs_nodep +{- dependmagic('all'); -}: build_libs_nodep build_modules_nodep build_programs_nodep {- dependmagic('build_libs'); -}: build_libs_nodep -{- dependmagic('build_engines'); -}: build_engines_nodep +{- dependmagic('build_modules'); -}: build_modules_nodep {- dependmagic('build_programs'); -}: build_programs_nodep build_generated: $(GENERATED_MANDATORY) build_libs_nodep: $(LIBS) {- join(" ",map { platform->sharedlib_import($_) // () } @{$unified_info{libraries}}) -} -build_engines_nodep: $(ENGINES) +build_modules_nodep: $(MODULES) build_programs_nodep: $(PROGRAMS) $(SCRIPTS) # Kept around for backward compatibility @@ -334,7 +336,7 @@ build_all_generated: $(GENERATED_MANDATORY) $(GENERATED) @{- output_on() if $disabled{makedepend}; "" -} test: tests -{- dependmagic('tests'); -}: build_programs_nodep build_engines_nodep +{- dependmagic('tests'); -}: build_programs_nodep build_modules_nodep @{- output_off() if $disabled{tests}; "" -} -mkdir $(BLDDIR)\test\test-runs set SRCTOP=$(SRCDIR) @@ -366,7 +368,7 @@ libclean: clean: libclean {- join("\n\t", map { "-del /Q /F $_" } @PROGRAMS) -} - -del /Q /F $(ENGINES) + -del /Q /F $(MODULES) -del /Q /F $(SCRIPTS) -del /Q /F $(GENERATED_MANDATORY) -del /Q /F $(GENERATED) @@ -432,13 +434,13 @@ install_dev: install_runtime_libs uninstall_dev: -install_engines: install_runtime_libs build_engines +install_engines: install_runtime_libs build_modules @if "$(INSTALLTOP)"=="" ( $(ECHO) "INSTALLTOP should not be empty" & exit 1 ) - @$(ECHO) "*** Installing engines" + @$(ECHO) "*** Installing ENGINE modules" @"$(PERL)" "$(SRCDIR)\util\mkdir-p.pl" "$(ENGINESDIR)" - @if not "$(ENGINES)"=="" \ + @if not "$(INSTALL_ENGINES)"=="" \ "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_ENGINES) "$(ENGINESDIR)" - @if not "$(ENGINES)"=="" \ + @if not "$(INSTALL_ENGINES)"=="" \ "$(PERL)" "$(SRCDIR)\util\copy.pl" $(INSTALL_ENGINEPDBS) "$(ENGINESDIR)" uninstall_engines: diff --git a/Configure b/Configure index 8a178df..d6ae2be 100755 --- a/Configure +++ b/Configure @@ -1711,7 +1711,7 @@ if ($builder eq "unified") { # The basic things we're trying to build my @programs = (); my @libraries = (); - my @engines = (); + my @modules = (); my @scripts = (); my %attributes = (); @@ -1823,12 +1823,12 @@ if ($builder eq "unified") { } } }, - qr/^\s*ENGINES(?:{([\w=]+(?:\s*,\s*[\w=]+)*)})?\s*=\s*(.*)\s*$/ + qr/^\s*MODULES(?:{([\w=]+(?:\s*,\s*[\w=]+)*)})?\s*=\s*(.*)\s*$/ => sub { if (!@skip || $skip[$#skip] > 0) { my @a = tokenize($1, qr|\s*,\s*|); - my @e = tokenize($2); - push @engines, @e; + my @m = tokenize($2); + push @modules, @m; foreach my $a (@a) { my $ak = $a; my $av = 1; @@ -1836,8 +1836,8 @@ if ($builder eq "unified") { $ak = $1; $av = $2; } - foreach my $e (@e) { - $attributes{$e}->{$ak} = $av; + foreach my $m (@m) { + $attributes{$m}->{$ak} = $av; } } } @@ -1899,10 +1899,13 @@ if ($builder eq "unified") { ); die "runaway IF?" if (@skip); - die <<"EOF" if scalar @engines and !$config{dynamic_engines}; + if (grep { defined $attributes{$_}->{engine} } keys %attributes + and !$config{dynamic_engines}) { + die <<"EOF" ENGINES can only be used if configured with 'dynamic-engine'. This is usually a fault in a build.info file. EOF + } foreach (keys %attributes) { my $dest = $_; @@ -1916,7 +1919,7 @@ EOF { my %infos = ( programs => [ @programs ], libraries => [ @libraries ], - engines => [ @engines ], + modules => [ @modules ], scripts => [ @scripts ] ); foreach my $k (keys %infos) { foreach (@{$infos{$k}}) { @@ -2142,7 +2145,7 @@ EOF if defined($unified_info{$_}); delete $unified_info{$_}; } - foreach my $prodtype (('programs', 'libraries', 'engines', 'scripts')) { + foreach my $prodtype (('programs', 'libraries', 'modules', 'scripts')) { # $intent serves multi purposes: # - give a prefix for the new object files names # - in the case of libraries, rearrange the object files so static @@ -2158,7 +2161,7 @@ EOF src => [ 'sources', 'shared_sources' ], dst => 'shared_sources' } }, - engines => { dso => { src => [ 'sources', + modules => { dso => { src => [ 'sources', 'shared_sources' ], dst => 'shared_sources' } }, scripts => { script => { src => [ 'sources' ], @@ -2220,7 +2223,7 @@ EOF ### Make unified_info a bit more efficient # One level structures - foreach (("programs", "libraries", "engines", "scripts")) { + foreach (("programs", "libraries", "modules", "scripts")) { $unified_info{$_} = [ sort keys %{$unified_info{$_}} ]; } # Two level structures @@ -2268,7 +2271,7 @@ EOF # they end up in where applicable. Then, add build rules for those # directories my %loopinfo = ( "lib" => [ @{$unified_info{libraries}} ], - "dso" => [ @{$unified_info{engines}} ], + "dso" => [ @{$unified_info{modules}} ], "bin" => [ @{$unified_info{programs}} ], "script" => [ @{$unified_info{scripts}} ] ); foreach my $type (keys %loopinfo) { diff --git a/doc/man1/version.pod b/doc/man1/version.pod index 2d2e4aa..6d58f9d 100644 --- a/doc/man1/version.pod +++ b/doc/man1/version.pod @@ -60,7 +60,7 @@ OPENSSLDIR setting. =item B<-e> -ENGINESDIR setting. +ENGINESDIR settings. =back diff --git a/engines/build.info b/engines/build.info index a4a4d93..27f1cec 100644 --- a/engines/build.info +++ b/engines/build.info @@ -11,7 +11,7 @@ IF[{- !$disabled{"engine"} -}] SOURCE[../libcrypto]=e_afalg.c ENDIF ELSE - ENGINES=padlock + MODULES{engine}=padlock SOURCE[padlock]=e_padlock.c {- $target{padlock_asm_src} -} DEPEND[padlock]=../libcrypto INCLUDE[padlock]=../include @@ -20,7 +20,7 @@ IF[{- !$disabled{"engine"} -}] GENERATE[padlock.ld]=../util/engines.num ENDIF IF[{- !$disabled{capieng} -}] - ENGINES=capi + MODULES{engine}=capi SOURCE[capi]=e_capi.c DEPEND[capi]=../libcrypto INCLUDE[capi]=../include @@ -30,7 +30,7 @@ IF[{- !$disabled{"engine"} -}] ENDIF ENDIF IF[{- !$disabled{afalgeng} -}] - ENGINES=afalg + MODULES{engine}=afalg SOURCE[afalg]=e_afalg.c DEPEND[afalg]=../libcrypto INCLUDE[afalg]= ../include @@ -40,7 +40,7 @@ IF[{- !$disabled{"engine"} -}] ENDIF ENDIF - ENGINES{noinst}=ossltest dasync + MODULES{noinst,engine}=ossltest dasync SOURCE[dasync]=e_dasync.c DEPEND[dasync]=../libcrypto INCLUDE[dasync]=../include From levitte at openssl.org Mon Feb 11 15:27:55 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 15:27:55 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549898875.808099.18449.nullmailer@dev.openssl.org> The branch master has been updated via 61db9961417e74cbd4a285fe482f1f2b30c5536b (commit) from 1842f369e5541d8ed9b2716cdd7d516005994733 (commit) - Log ----------------------------------------------------------------- commit 61db9961417e74cbd4a285fe482f1f2b30c5536b Author: Richard Levitte Date: Sat Feb 2 09:47:16 2019 +0100 Build: correct BASE shlib_version_as_filename This function is designed to use $config{shlib_version} directly instead of taking an input argument, yet the BASE variant didn't do this. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8146) ----------------------------------------------------------------------- Summary of changes: Configurations/platform/BASE.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Configurations/platform/BASE.pm b/Configurations/platform/BASE.pm index b7fec11..fcd7b70 100644 --- a/Configurations/platform/BASE.pm +++ b/Configurations/platform/BASE.pm @@ -28,8 +28,8 @@ sub sharedname { return __isshared($_[1]) ? $_[1] : undef } # Name of shared li sub staticname { return __base($_[1], '.a') } # Name of static lib # Convenience function to convert the shlib version to an acceptable part -# of a file or directory name. -sub shlib_version_as_filename { return $_[1] } +# of a file or directory name. By default, we consider it acceptable as is. +sub shlib_version_as_filename { return $config{shlib_version} } # Convenience functions to convert the possible extension of an input file name sub bin { return $_[0]->binname($_[1]) . $_[0]->binext() } From levitte at openssl.org Mon Feb 11 15:30:18 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 15:30:18 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549899018.897777.19472.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 0e1b0e510dfe078b3fb2586d987d7b49ff8ef0b2 (commit) from 95f59d398c3f28f7ee50f092106c5910d25f9e30 (commit) - Log ----------------------------------------------------------------- commit 0e1b0e510dfe078b3fb2586d987d7b49ff8ef0b2 Author: Richard Levitte Date: Fri Jan 25 23:57:09 2019 +0100 test/recipes/02-err_errstr: skip errors that may not be loaded on Windows Fixes #8091 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8094) ----------------------------------------------------------------------- Summary of changes: test/recipes/02-test_errstr.t | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/recipes/02-test_errstr.t b/test/recipes/02-test_errstr.t index ef5e2fa..35a802f 100644 --- a/test/recipes/02-test_errstr.t +++ b/test/recipes/02-test_errstr.t @@ -38,6 +38,43 @@ plan skip_all => 'OpenSSL is configured "no-autoerrinit" or "no-err"' # (this is documented) my @posix_errors = @{$Errno::EXPORT_TAGS{POSIX}}; +if ($^O eq 'MSWin32') { + # On Windows, these errors have been observed to not always be loaded by + # apps/openssl, while they are in perl, which causes a difference that we + # consider a false alarm. So we skip checking these errors. + # Because we can't know exactly what symbols exist in a perticular perl + # version, we resort to discovering them directly in the Errno package + # symbol table. + my @error_skiplist = qw( + ENETDOWN + ENETUNREACH + ENETRESET + ECONNABORTED + EISCONN + ENOTCONN + ESHUTDOWN + ETOOMANYREFS + ETIMEDOUT + EHOSTDOWN + EHOSTUNREACH + EALREADY + EINPROGRESS + ESTALE + EUCLEAN + ENOTNAM + ENAVAIL + ENOMEDIUM + ENOKEY + ); + @posix_errors = + grep { + my $x = $_; + ! grep { + exists $Errno::{$_} && $x == $Errno::{$_} + } @error_skiplist + } @posix_errors; +} + plan tests => scalar @posix_errors +1 # Checking that error 128 gives 'reason(128)' +1 # Checking that error 0 gives the library name From levitte at openssl.org Mon Feb 11 15:30:59 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 15:30:59 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549899059.478668.20363.nullmailer@dev.openssl.org> The branch master has been updated via 6e68f244f48bd7118b9262ff5905da1c3b15cae9 (commit) from 61db9961417e74cbd4a285fe482f1f2b30c5536b (commit) - Log ----------------------------------------------------------------- commit 6e68f244f48bd7118b9262ff5905da1c3b15cae9 Author: Richard Levitte Date: Fri Jan 25 23:57:09 2019 +0100 test/recipes/02-err_errstr: skip errors that may not be loaded on Windows Fixes #8091 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8094) (cherry picked from commit 0e1b0e510dfe078b3fb2586d987d7b49ff8ef0b2) ----------------------------------------------------------------------- Summary of changes: test/recipes/02-test_errstr.t | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/recipes/02-test_errstr.t b/test/recipes/02-test_errstr.t index ce2792b..a9e8ed4 100644 --- a/test/recipes/02-test_errstr.t +++ b/test/recipes/02-test_errstr.t @@ -38,6 +38,43 @@ plan skip_all => 'OpenSSL is configured "no-autoerrinit" or "no-err"' # (this is documented) my @posix_errors = @{$Errno::EXPORT_TAGS{POSIX}}; +if ($^O eq 'MSWin32') { + # On Windows, these errors have been observed to not always be loaded by + # apps/openssl, while they are in perl, which causes a difference that we + # consider a false alarm. So we skip checking these errors. + # Because we can't know exactly what symbols exist in a perticular perl + # version, we resort to discovering them directly in the Errno package + # symbol table. + my @error_skiplist = qw( + ENETDOWN + ENETUNREACH + ENETRESET + ECONNABORTED + EISCONN + ENOTCONN + ESHUTDOWN + ETOOMANYREFS + ETIMEDOUT + EHOSTDOWN + EHOSTUNREACH + EALREADY + EINPROGRESS + ESTALE + EUCLEAN + ENOTNAM + ENAVAIL + ENOMEDIUM + ENOKEY + ); + @posix_errors = + grep { + my $x = $_; + ! grep { + exists $Errno::{$_} && $x == $Errno::{$_} + } @error_skiplist + } @posix_errors; +} + plan tests => scalar @posix_errors +1 # Checking that error 128 gives 'reason(128)' +1 # Checking that error 0 gives the library name From builds at travis-ci.org Mon Feb 11 15:30:17 2019 From: builds at travis-ci.org (Travis CI) Date: Mon, 11 Feb 2019 15:30:17 +0000 Subject: [openssl-commits] Broken: openssl/openssl#22942 (master - 1842f36) In-Reply-To: Message-ID: <5c6195092786e_43fed88f59884233353@c4b87748-2a88-4b46-81e8-5722b56f0bf3.mail> Build Update for openssl/openssl ------------------------------------- Build: #22942 Status: Broken Duration: 45 mins and 42 secs Commit: 1842f36 (master) Author: Richard Levitte Message: ENGINE modules aren't special, so call them MODULES The only thing that makes an ENGINE module special is its entry points. Other than that, it's a normal dynamically loadable module, nothing special about it. This change has us stop pretending anything else. We retain using ENGINE as a term for installation, because it's related to a specific installation directory, and we therefore also mark ENGINE modules specifically as such with an attribute in the build.info files. Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8147) View the changeset: https://github.com/openssl/openssl/compare/a43ce58f5569...1842f369e554 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/491672728?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From levitte at openssl.org Mon Feb 11 15:46:03 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 15:46:03 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549899963.230374.22436.nullmailer@dev.openssl.org> The branch master has been updated via ca811248d838058c13236a6c3b688e0ac98c02c8 (commit) from 6e68f244f48bd7118b9262ff5905da1c3b15cae9 (commit) - Log ----------------------------------------------------------------- commit ca811248d838058c13236a6c3b688e0ac98c02c8 Author: Richard Levitte Date: Mon Nov 12 18:16:27 2018 +0100 apps/ocsp.c Use the same HAVE_FORK / NO_FORK as in speed.c This allows the user to override our defaults if needed, and in a consistent manner. Partial fix for #7607 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7624) ----------------------------------------------------------------------- Summary of changes: apps/ocsp.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/apps/ocsp.c b/apps/ocsp.c index 7c2a904..09eeb9c 100644 --- a/apps/ocsp.c +++ b/apps/ocsp.c @@ -36,7 +36,21 @@ NON_EMPTY_TRANSLATION_UNIT # include # include -# if defined(OPENSSL_SYS_UNIX) && !defined(OPENSSL_NO_SOCK) \ +#ifndef HAVE_FORK +# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) +# define HAVE_FORK 0 +# else +# define HAVE_FORK 1 +# endif +#endif + +#if HAVE_FORK +# undef NO_FORK +#else +# define NO_FORK +#endif + +# if !defined(NO_FORK) && !defined(OPENSSL_NO_SOCK) \ && !defined(OPENSSL_NO_POSIX_IO) # define OCSP_DAEMON # include From levitte at openssl.org Mon Feb 11 15:46:50 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 15:46:50 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1549900010.844281.23371.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via af250b36eb537bc2b185e35e24f187380a98ebb4 (commit) from 0e1b0e510dfe078b3fb2586d987d7b49ff8ef0b2 (commit) - Log ----------------------------------------------------------------- commit af250b36eb537bc2b185e35e24f187380a98ebb4 Author: Richard Levitte Date: Mon Nov 12 18:16:27 2018 +0100 apps/ocsp.c Use the same HAVE_FORK / NO_FORK as in speed.c This allows the user to override our defaults if needed, and in a consistent manner. Partial fix for #7607 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7624) (cherry picked from commit ca811248d838058c13236a6c3b688e0ac98c02c8) ----------------------------------------------------------------------- Summary of changes: apps/ocsp.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/apps/ocsp.c b/apps/ocsp.c index d38b4a1..5ea92f3 100644 --- a/apps/ocsp.c +++ b/apps/ocsp.c @@ -36,7 +36,21 @@ NON_EMPTY_TRANSLATION_UNIT # include # include -# if defined(OPENSSL_SYS_UNIX) && !defined(OPENSSL_NO_SOCK) \ +#ifndef HAVE_FORK +# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) +# define HAVE_FORK 0 +# else +# define HAVE_FORK 1 +# endif +#endif + +#if HAVE_FORK +# undef NO_FORK +#else +# define NO_FORK +#endif + +# if !defined(NO_FORK) && !defined(OPENSSL_NO_SOCK) \ && !defined(OPENSSL_NO_POSIX_IO) # define OCSP_DAEMON # include From levitte at openssl.org Mon Feb 11 15:51:38 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 15:51:38 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549900298.272308.24575.nullmailer@dev.openssl.org> The branch master has been updated via dff298135b9b8bbaac1f452a219bb446e50728d1 (commit) via fb82cbfe3da846d61e1d4c6d14bf7f4111cccbb2 (commit) from ca811248d838058c13236a6c3b688e0ac98c02c8 (commit) - Log ----------------------------------------------------------------- commit dff298135b9b8bbaac1f452a219bb446e50728d1 Author: Richard Levitte Date: Tue Feb 5 16:21:59 2019 +0100 Rework build: small correction in unix-Makefile.tmpl Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8162) commit fb82cbfe3da846d61e1d4c6d14bf7f4111cccbb2 Author: Richard Levitte Date: Mon Feb 4 21:28:43 2019 +0100 Rework build: add special cases for AIX When reworking the way library file names and extensions were formed, AIX was lost in the process. This restores the previous functionality. Fixes #8156 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8162) ----------------------------------------------------------------------- Summary of changes: Configurations/10-main.conf | 3 +-- Configurations/platform/AIX.pm | 27 +++++++++++++++++++++++++++ Configurations/unix-Makefile.tmpl | 2 +- 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 Configurations/platform/AIX.pm diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf index 859e3d9..1e49118 100644 --- a/Configurations/10-main.conf +++ b/Configurations/10-main.conf @@ -1100,8 +1100,7 @@ my %targets = ( module_ldflags => "-Wl,-G,-bsymbolic,-bexpall", shared_ldflag => "-Wl,-G,-bsymbolic", shared_defflag => "-Wl,-bE:", - lib_extension => shared("_a.a"), - shared_extension_simple => shared(".a"), + perl_platform => 'AIX', }, "aix-gcc" => { inherit_from => [ "aix-common", asm("ppc32_asm") ], diff --git a/Configurations/platform/AIX.pm b/Configurations/platform/AIX.pm new file mode 100644 index 0000000..f441c15 --- /dev/null +++ b/Configurations/platform/AIX.pm @@ -0,0 +1,27 @@ +package platform::AIX; + +use strict; +use warnings; +use Carp; + +use vars qw(@ISA); + +require platform::Unix; + at ISA = qw(platform::Unix); + +# Assume someone set @INC right before loading this module +use configdata; + +sub shlibextsimple { '.a' } + +# In shared mode, the default static library names clashes with the final +# "simple" full shared library name, so we add '_a' to the basename of the +# static libraries in that case. +sub staticname { + # Non-installed libraries are *always* static, and their names remain + # the same, except for the mandatory extension + my $in_libname = platform::BASE->staticname($_[1]); + return $in_libname if $unified_info{attributes}->{$_[1]}->{noinst}; + + return platform::BASE->staticname($_[1]) . '_a'; +} diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 41794f0..7705b03 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -1194,7 +1194,7 @@ EOF push @linkdirs, $d unless grep { $d eq $_ } @linkdirs; } my $linkflags = join("", map { "-L$_ " } @linkdirs); - my $linklibs = join("", map { if ($_ =~ s/\.a$//) { + my $linklibs = join("", map { if ($_ =~ m/\.a$/) { " ".platform->staticlib($_); } else { my $f = basename($_); From builds at travis-ci.org Mon Feb 11 16:20:51 2019 From: builds at travis-ci.org (Travis CI) Date: Mon, 11 Feb 2019 16:20:51 +0000 Subject: [openssl-commits] Fixed: openssl/openssl#22946 (master - 6e68f24) In-Reply-To: Message-ID: <5c61a0e377a9_43fa780498c54213039@3efac18d-cb81-4947-ba35-9971ba31423a.mail> Build Update for openssl/openssl ------------------------------------- Build: #22946 Status: Fixed Duration: 30 mins and 36 secs Commit: 6e68f24 (master) Author: Richard Levitte Message: test/recipes/02-err_errstr: skip errors that may not be loaded on Windows Fixes #8091 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8094) (cherry picked from commit 0e1b0e510dfe078b3fb2586d987d7b49ff8ef0b2) View the changeset: https://github.com/openssl/openssl/compare/61db9961417e...6e68f244f48b View the full build log and details: https://travis-ci.org/openssl/openssl/builds/491687410?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From builds at travis-ci.org Mon Feb 11 16:27:16 2019 From: builds at travis-ci.org (Travis CI) Date: Mon, 11 Feb 2019 16:27:16 +0000 Subject: [openssl-commits] Fixed: openssl/openssl#22947 (master - ca81124) In-Reply-To: Message-ID: <5c61a2646ab48_43faf74b6d510386591@5f60639d-5bae-4522-b982-16c2eede5c66.mail> Build Update for openssl/openssl ------------------------------------- Build: #22947 Status: Fixed Duration: 24 mins and 48 secs Commit: ca81124 (master) Author: Richard Levitte Message: apps/ocsp.c Use the same HAVE_FORK / NO_FORK as in speed.c This allows the user to override our defaults if needed, and in a consistent manner. Partial fix for #7607 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7624) View the changeset: https://github.com/openssl/openssl/compare/6e68f244f48b...ca811248d838 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/491695790?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From builds at travis-ci.org Mon Feb 11 16:40:38 2019 From: builds at travis-ci.org (Travis CI) Date: Mon, 11 Feb 2019 16:40:38 +0000 Subject: [openssl-commits] Broken: openssl/openssl#22948 (OpenSSL_1_1_1-stable - af250b3) In-Reply-To: Message-ID: <5c61a58676564_43ffa6fca359c2581d@2f03b23e-cd2d-428c-b78b-9d8081117022.mail> Build Update for openssl/openssl ------------------------------------- Build: #22948 Status: Broken Duration: 24 mins and 33 secs Commit: af250b3 (OpenSSL_1_1_1-stable) Author: Richard Levitte Message: apps/ocsp.c Use the same HAVE_FORK / NO_FORK as in speed.c This allows the user to override our defaults if needed, and in a consistent manner. Partial fix for #7607 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7624) (cherry picked from commit ca811248d838058c13236a6c3b688e0ac98c02c8) View the changeset: https://github.com/openssl/openssl/compare/0e1b0e510dfe...af250b36eb53 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/491696298?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 11 18:43:36 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 11 Feb 2019 18:43:36 +0000 Subject: [openssl-commits] Build failed: openssl master.22346 Message-ID: <20190211184336.1.22FA6E52AE0F0530@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 11 19:13:27 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 11 Feb 2019 19:13:27 +0000 Subject: [openssl-commits] Build completed: openssl master.22347 Message-ID: <20190211191327.1.21612EA9979D9638@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Mon Feb 11 21:19:32 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 21:19:32 +0000 Subject: [openssl-commits] [web] master update Message-ID: <1549919972.204359.23370.nullmailer@dev.openssl.org> The branch master has been updated via e56baa71b5cc8028e08e8a3027ea9ecf3f27dbd0 (commit) via 6065450b21d016b775b31e091d32c20be5bfecc7 (commit) via 2a9b4633145732c5e50fa9848d5e87380d2dc5ea (commit) via 653652e64822e3c199efb861e9c15bca8d174e19 (commit) via 37e9a53cb53ca592f669ab7d08e816177220d949 (commit) from 86790fc138e335918125ccd51941958785e840d5 (commit) - Log ----------------------------------------------------------------- commit e56baa71b5cc8028e08e8a3027ea9ecf3f27dbd0 Author: Richard Levitte Date: Fri Feb 1 16:42:51 2019 +0100 OpenSSL 3.0.0 Design: make the state uppercase Reviewed-by: Tim Hudson Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/113) commit 6065450b21d016b775b31e091d32c20be5bfecc7 Author: Richard Levitte Date: Fri Feb 1 16:41:43 2019 +0100 Allow extra header stuff, and use it to correct the list style type Reviewed-by: Tim Hudson Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/113) commit 2a9b4633145732c5e50fa9848d5e87380d2dc5ea Author: Richard Levitte Date: Wed Jan 30 13:31:16 2019 +0100 Add the OpenSSL 3.0.0 Design document (draft) Reviewed-by: Tim Hudson Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/113) commit 653652e64822e3c199efb861e9c15bca8d174e19 Author: Richard Levitte Date: Fri Feb 1 16:42:26 2019 +0100 MD to HTML: add a mechanism to show a document state If the YAML metadata of a document contains a 'state:' attribute, it will be rendered with large sans-serif in a 45 degree angle. Requires CSS3 Reviewed-by: Tim Hudson Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/113) commit 37e9a53cb53ca592f669ab7d08e816177220d949 Author: Richard Levitte Date: Fri Feb 1 16:41:43 2019 +0100 MD to HTML: allow extra header stuff Reviewed-by: Tim Hudson Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/113) ----------------------------------------------------------------------- Summary of changes: Makefile | 4 + bin/md-to-html5.tmpl.html5 | 20 +- docs/OpenSSL300Design.md | 3193 +++++++++++++++++++++++ docs/images/300Component.png | Bin 0 -> 67941 bytes docs/images/300FIPSStateMachine.png | Bin 0 -> 63762 bytes docs/images/300Packaging.png | Bin 0 -> 67311 bytes docs/images/300PropDefinition.png | Bin 0 -> 9390 bytes docs/images/300PropNumberLiteral.png | Bin 0 -> 25821 bytes docs/images/300PropPropertyName.png | Bin 0 -> 13569 bytes docs/images/300PropQuery.png | Bin 0 -> 16653 bytes docs/images/300PropQuotedString.png | Bin 0 -> 14064 bytes docs/images/300PropStringLiteral.png | Bin 0 -> 7343 bytes docs/images/300PropUnquotedString.png | Bin 0 -> 5440 bytes docs/images/300PropValue.png | Bin 0 -> 6558 bytes docs/images/300ProviderCollab.png | Bin 0 -> 45613 bytes docs/images/DigestExplicit.png | Bin 0 -> 61671 bytes docs/images/DigestSignFIPSExplicit.png | Bin 0 -> 125685 bytes docs/images/DigestSignFIPSModulePerspective.png | Bin 0 -> 82601 bytes docs/images/ToBeComponent.png | Bin 73449 -> 67941 bytes docs/images/ToBePackaging.png | Bin 65063 -> 67311 bytes 20 files changed, 3216 insertions(+), 1 deletion(-) create mode 100644 docs/OpenSSL300Design.md create mode 100644 docs/images/300Component.png create mode 100644 docs/images/300FIPSStateMachine.png create mode 100644 docs/images/300Packaging.png create mode 100644 docs/images/300PropDefinition.png create mode 100644 docs/images/300PropNumberLiteral.png create mode 100644 docs/images/300PropPropertyName.png create mode 100644 docs/images/300PropQuery.png create mode 100644 docs/images/300PropQuotedString.png create mode 100644 docs/images/300PropStringLiteral.png create mode 100644 docs/images/300PropUnquotedString.png create mode 100644 docs/images/300PropValue.png create mode 100644 docs/images/300ProviderCollab.png create mode 100644 docs/images/DigestExplicit.png create mode 100644 docs/images/DigestSignFIPSExplicit.png create mode 100644 docs/images/DigestSignFIPSModulePerspective.png diff --git a/Makefile b/Makefile index f799e85..a8dbae6 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,7 @@ SIMPLE = newsflash.inc sitemap.txt \ community/omc.inc community/omc-alumni.inc \ docs/faq.inc docs/fips.inc \ docs/OpenSSLStrategicArchitecture.html \ + docs/OpenSSL300Design.html \ news/changelog.inc news/changelog.txt \ news/cl102.txt news/cl110.txt news/cl111.txt \ news/openssl-1.0.2-notes.inc \ @@ -110,6 +111,9 @@ docs/fips.inc: $(wildcard docs/fips/*) bin/mk-filelist docs/OpenSSLStrategicArchitecture.html: docs/OpenSSLStrategicArchitecture.md @rm -f $@ ./bin/md-to-html5 $< +docs/OpenSSL300Design.html: docs/OpenSSL300Design.md + @rm -f $@ + ./bin/md-to-html5 $< news/changelog.inc: news/changelog.txt bin/mk-changelog @rm -f $@ diff --git a/bin/md-to-html5.tmpl.html5 b/bin/md-to-html5.tmpl.html5 index b1fbe38..d784305 100644 --- a/bin/md-to-html5.tmpl.html5 +++ b/bin/md-to-html5.tmpl.html5 @@ -1,14 +1,32 @@ + +$for(header-includes)$ + $header-includes$ +$endfor$ + + -
+$if(state)$ +$state$ +$endif$ $if(title)$

$title$

diff --git a/docs/OpenSSL300Design.md b/docs/OpenSSL300Design.md new file mode 100644 index 0000000..30a02eb --- /dev/null +++ b/docs/OpenSSL300Design.md @@ -0,0 +1,3193 @@ +--- +title: OpenSSL 3.0.0 Design +author: OpenSSL Management Committee (OMC) +date: January, 2019 +state: DRAFT +header-includes: +- | + +--- +## Introduction + + +This document outlines the design of OpenSSL 3.0, the next version of +OpenSSL after 1.1.1. It assumes familiarity with the document entitled +_OpenSSL Strategic Architecture_ and a working knowledge of OpenSSL +1.1.x. + +The OpenSSL 3.0 release will have minimal impact to the vast majority +of existing applications; almost all well-behaved applications will +just need to be recompiled. + +The majority of the changes in OpenSSL 3.0 are internal architectural +restructuring to facilitate a long-term supportable cryptographic +framework that enables better separation of algorithm implementations +from algorithm APIs. These structural changes also support a more +maintainable OpenSSL FIPS Cryptographic Module 3.0. + +No currently marked deprecated APIs will be removed in OpenSSL 3.0. + +Many additional low-level functions will be marked as deprecated APIs +in OpenSSL 3.0. + +OpenSSL 3.0 will support an application having TLS connections that +are in FIPS mode (using the OpenSSL FIPS Cryptographic Module 3.0) and +TLS connections that are in non-FIPS mode simultaneously. + +## Terms Used in This Document {#terms-used-in-this-document} + +The following terms, in alphabetical order, are used in this +document. A brief (summary) definition is provided. + + + +* **Algorithm**, or sometimes **cryptographic algorithm**, is a + method to perform a set of operations (such as encryption or + decryption). Our use of the term is abstract, and usually + represents an algorithm by its name, such as "aes-128-cbc". +* **Algorithm implementation**, or sometimes just + **implementation**, is a concrete implementation of an algorithm. + This is mainly represented in code in the form of a set of + functions. +* **CAVS** is the Cryptographic Algorithm Validation System. A tool + used to test that a cryptographic implementation conforms to FIPS + standards. +* **CMVP** is the Cryptographic Module Validation Program. A process + that validates that cryptographic implementations conform to FIPS + standards. +* **EVP** is a family of APIs implemented by libcrypto that enables + applications to perform cryptographic operations. The + implementation of the EVP API uses the Core and Provider + components. +* The **Core** is a component in libcrypto that enables applications + to access the algorithm implementations offered by providers. +* **CSP** is Critical Security Parameters. This includes any information (e.g. + private keys, passwords, pin numbers etc) that might compromise the security + of a module in the event of their unauthorised disclosure or modification. +* **Explicit Fetch** is a method for finding an algorithm + implementation where the application makes an explicit call to + locate the implementation and supplies search criteria. +* **FIPS** is the Federal Information Processing Standards. This is + a set of standards defined by the US government. In particular, + FIPS standard 140-2 is applicable to cryptographic software. +* A **FIPS module** is an implementation of cryptographic algorithms + that has been validated by the CMVP as conforming to FIPS + standards. In OpenSSL the FIPS module is implemented as a provider + and is available in dynamically loadable module form. +* **Implicit Fetch** is a method for finding an algorithm + implementation where the application does not explicitly make a + call to locate the implementation and therefore default search + criteria are used. +* The **Integrity Check** is a test that is automatically run when + the FIPS module is loaded. The module checksums itself and + verifies that it hasn't been inadvertently altered. +* **KAS** is Key Agreement Scheme. A method by which two communicating parties + can agree a shared key between them. +* **KAT**s are Known Answer Tests. A set of tests used to perform a + health-check of a FIPS module. +* **libcrypto** is a shared library implemented by OpenSSL that + provides applications with access to various cryptography related + capabilities. +* **libssl** is a shared library implemented by OpenSSL that + provides applications with the ability to create SSL/TLS + connections either as a client or as a server. +* A **Library Context** is an opaque structure that holds library + "global" data. +* **Operation** is a class of functions to be performed on data, + such as calculating a digest, encrypting, decrypting, etc. An + algorithm may offer one or more operations. For example RSA + provides asymmetric encryption, asymmetric decryption, signing, + verifying, etc +* **Parameters** are an implementation agnostic set of key-value + pairs that are used to communicate object data between the Core + and providers. For example they could be used to transfer private + key data. +* **POST** refers to the FIPS module Power-Up Self-Tests + (a.k.a. Power-On Self-Tests) that are run at installation time, at + power up (i.e. each time the FIPS module is loaded for an + application) or on demand. These tests include the Integrity Check + and the KATs. If the KATs were run successfully at installation + time then they don't need to be run again at power up, however the + Integrity Check is always performed. +* **Properties** are used by providers to describe the features of + their algorithm implementations. They are also used in application + queries to find specific implementations. +* **Provider** is a unit that provides one or more algorithm + implementations. +* **Provider module** is a provider in dynamically loadable module + form. + +## Architecture {#architecture} + +The architecture shall have the following features: + +* Common Services form the building blocks usable by applications + and providers. (e.g. BIO, X509, SECMEM, ASN.1, etc). +* Providers implement cryptographic algorithms and supporting + services. An algorithm may consist of multiple operations (for + example RSA may have "encrypt", "decrypt", "sign", "verify" + etc). Similarly an operation (for example "sign") can be + implemented by multiple algorithms such as RSA and ECDSA. A + provider has implementations of the cryptographic primitives for + an algorithm. This release will include the following providers: + a. Default, which contains the current non-legacy OpenSSL + cryptographic algorithms; this will be built-in (i.e., part of + libcrypto) + b. Legacy, with implementations of older algorithms (e.g, DES, + MDC2, MD2, Blowfish, CAST) + c. Engines, which include a compatibility layer between engines + designed for older versions of OpenSSL, and the new Provider + based approach. + d. FIPS, which implements the OpenSSL FIPS Cryptographic Module + 3.0; this can be loaded dynamically at runtime. +* The Core enables access to the operations offered by providers to + applications (and other providers). The Core is the mechanism via + which concrete implementations of operations are located. +* Protocol implementations. E.g. TLS, DTLS. + +This document has many references to the "EVP API." This refers to +"application-level" operations, such as public-key signing, generating +a digest and so on. These functions include `EVP_DigestSign`, +`EVP_Digest`, `EVP_MAC_init` and the like. The EVP API also +encapsulates the cryptographic objects used to perform those services, +such as `EVP_PKEY`, `EVP_CIPHER`, `EVP_MD`, `EVP_MAC` and so +forth. Providers implement the backend functionality for the latter +set. Instances of these objects can be bound to providers implicitly +or explicitly, depending on the application's needs. This is discussed +in more detail in the [Provider Design](#core-and-provider-design), +below. + +The architecture has the following characteristics: + +* The EVP layer is a thin wrapper for operations implemented in the + providers. Most calls are passed straight through with little/no + pre- or post-processing. +* New EVP APIs will be provided to affect how the Core selects (or + finds) the implementation of an operation to be used for any given + EVP call. +* Information will be passed between libcrypto and the providers in + an implementation agnostic manner. +* Legacy APIs (e.g. low level cryptographic APIs that do not go via + the EVP layer) will be deprecated. Note that there are legacy APIs + to non legacy algorithms (e.g. AES is not a legacy algorithm but + `AES_encrypt` is a legacy API). +* The OpenSSL FIPS Cryptographic Module will be implemented as a + dynamically loaded provider. It will be self-contained (i.e. can + only depend on system runtime libraries and services provided by + the Core). + +### Conceptual Component View {#conceptual-component-view} + +An overview of the conceptual components in the OpenSSL architecture +is as shown in the diagram below. Note that the existence of a +component in the diagram does not indicate that the component is a +public API or intended for end-user direct access or usage. + +![](images/ToBeComponent.png) + +The new components (not present in the previous architecture) shown +here are as follows: + +* Core: This is a fundamental component that connects requests for + an operation (such as encryption) to a provider of that + operation. It provides the ability to locate an implementation of + an algorithm offering specified operations given a set of + properties that the implementation must fulfil. For example, + properties of an encryption algorithm may include at a minimum + "fips". +* Default Provider: Implements a set of default algorithms. +* FIPS Provider: Implements a set of algorithms that are FIPS + validated and are made available via the Core. This includes the + following supporting services: + * POST: Power On Self Test + * KAT: Known Answer Tests + * Integrity Check + * Low Level Implementations: This is the set of components that + actually implement the cryptographic primitives (to meet the + FIPS-mandated self-contained requirement). +* Engines Provider: A shim that allows existing engines to work + when called via the Core. +* Legacy Provider: Provides implementations of older algorithms that + will be exposed via EVP-level APIs. +* 3rd Party Providers: Eventually, third-parties may provide their + own providers. A third-party provider, like any other provider, + implements a set of algorithms that will be accessible to + applications and other providers via the Core. + +### Packaging View {#package-view} + +The various components described in the conceptual component view +above are physically packaged into: + +* Executable application(s) for use by users +* Libraries for use by application(s) +* Dynamically loadable module(s) for use by the Core. + +There will be multiple different packaging options provided with +OpenSSL 3.0 (for example a single library libcrypto containing +everything except the FIPS Provider, and all providers as separate +dynamically loadable modules). + +Which dynamically loadable modules are registered, used, or available +will be able to be configured at runtime. + +The following figure describes the architecture in terms of physical +packages. + +![](images/ToBePackaging.png) + +The physical packages new to this release are: + +* FIPS module. This contains the FIPS Provider that implements a set + of algorithms that are FIPS validated and are available via the + Core. The FIPS Provider is the OpenSSL FIPS Cryptographic Module + 3.0. + + We will not attempt to preclude users from making errors, however + we will keep in mind the typical user usage and "safety". By + default the FIPS provider will be built and installed. + + We will be able to perform a safety check that detects if the user + has modified the source in a FIPS-impactful manner from the + release distribution and block building the FIPS provider (on best + effort basis) unless an override option is provided. + + We need to ensure there is a mechanism that enables the end user + to determine whether or not their usage of the FIPS module is + within the allowed uses under a formal validation. + + Versioning of the FIPS module will be aligned with the base + OpenSSL version number at the point in time of the + validation. Not all OpenSSL releases will need an update to the + FIPS module. Therefore when a new FIPS module version is released + there may be gaps/jumps in its version number since the previous + release. + +* Legacy module. This contains implementations of legacy + algorithms. + +Engines will be built with a provider shim, to allow them to work as +usual for cases when an ENGINE pointer is passed to some functions, +and as providers when acting as default implementations. Engines +compiled for pre-3.0.0 OpenSSL will need to be recompiled to work with +OpenSSL 3.0.0. Details in +[The ENGINE API](#the-engine-api) further down. + +## Core and Provider Design {#core-and-provider-design} + +The interactions relevant for the Core and provider design are shown +in the diagram below. There are four major components: User +Application, EVP component, the Core, and a cryptographic +Provider. (There may be multiple providers, but that is not relevant +here). + +![](images/300ProviderCollab.png) + +The Core has the following characteristics: + +* It enables Provider discovery, loading, initialisation and + unloading +* It enables property-based algorithm queries +* It implements caching of algorithm queries and implementation + details +* It operates within a library context that contains data such as + global properties, search cache and dispatch tables. + +Providers have the following characteristics: + +* They provide for access to specific algorithm implementations +* They associate algorithm implementations with a set of well + defined properties +* They support parameter passing in an implementation agnostic + manner +* They can be loaded at any point in time +* They have a well-known module entry point + +The subsections that follow describe the flow an application uses to +load a provider, fetch an algorithm implementation, and use it. In +addition, this section describes in detail how algorithms, properties, +and parameters are named; how algorithm queries are handled; how +algorithms are registered and initialized; and how providers are +loaded. + +In order for an application to be able to use an algorithm it must +first "fetch" an implementation of it through an algorithm query. Our +design objective is to be able to support both explicit (up front) +fetching of algorithms and fetching of algorithms on use. By default +we expect to do fetching on use (e.g. using `EVP_sha256()`) so that +algorithms are typically fetched during an "init" function and bound +to a context object (often named `ctx`). The explicit fetching option +will be implemented via new API calls (e.g. `EVP_MD_fetch()`). + +The diagram above shows the explicit fetch approach. The steps are as +follows: + + + +1. Every provider needs to be loaded. This will happen implicitly + (default provider or specified via configuration) and may also be + explicitly requested by the application. Load encompases both + dynamic shared object loading (as needed) and initialisation. + 1. The Core physically loads the module into memory (not required + if default provider is already in memory). + 2. The Core calls the provider's entry point for the provider to + initialise itself. + 1. Within the entry point function, the provider initialises + some provider variables using values passed in from the + Core. A provider algorithm implementation query callback + is returned to the Core if initialization succeeds. +2. User application requests algorithm by calling a fetch routine. + 1. The search by EVP will combine global properties with + call-specific ones and an algorithm identity to find the + corresponding algorithm implementation, and then create and + return a library handle (e.g. `EVP_MD`, `EVP_CIPHER`) to the + application. + 1. The first search of the implementation dispatch table is + made in an internal cache. + 2. Should the first search fail, a second search is made by + asking the providers if they have an implementation of + said algorithm with the queried properties. When this + search is done, the resulting data is cached unless the + provider opts out of caching, to be used in the first + search (2.1.1). For example a PKCS#11 provider may opt out + of caching because its algorithms may become available and + unavailable over time. +3. The user application then uses the algorithm via EVP APIs (e.g., + `EVP_DigestInit()`, `EVP_DigestUpdate()`, `EVP_DigestFinal()`, + etc). + 1. The function pointer is invoked and ends up in the provider + for the implementation to perform the requested cryptographic + algorithm. + +For the existing `EVP_{algorithm}()` functions (e.g. `EVP_sha256()`, +etc) things remain mostly unchanged. In particular, the fetch call is +not performed when the `EVP_{algorithm}()` call returns, but rather it +happens implicitly when the context object (e.g. `EVP_MD_CTX`) is +bound within the respective EVP init function. Specifically, step 2.1 +happens just before step 3.1. This is known as "implicit +fetch". Implicit fetch always operates within a default library +context (see [Library Context](#library-context) below). + +The method dispatch table is a list of `` pairs ? where the `function-id`s are publically +defined and known by OpenSSL ? put together with a set of properties +that can be used to identify each particular implementation. The Core +can take a property query and find the corresponding dispatch table, +to be used for applicable operations. This approach allows providers +to flexibly pass references to functions that the OpenSSL code can use +to create its method structures dynamically. + +Providers can be loaded at any point in time. Unload at any point in +time can be requested. It is up to the application to ensure that a +provider is not currently being used or referenced when it is +unloaded. If an attempt is made to use an implementation that is no +longer available then an error will be returned. + +The assumptions an application can currently make about the return +from `EVP_{algorithm}()` and not the new fetch approach are: + +* const pointer +* does not need to be freed by the application +* can safely be compared for checking algorithms are the same + (i.e. specifically comparing pointers to `EVP_CIPHER`, `EVP_MD`, + etc) + +For a direct use of explicit fetch by the application (rather than +using the existing `EVP_{algorithm}()` functions) the semantics will +be different: + +* non-const pointer +* needs to be freed by the application +* pointers can't be safely compared with each other (more on that in + the next paragraph) + +There will be new APIs to test the equality of objects that can be +used for both explicitly fetched objects and static variant ones +These APIs will enable comparison of just the algorithm identity, +or of specific algorithm implementations. + +### Library Context {#library-context} + +A library context is an opaque structure that holds library "global" +data. OpenSSL will provide such a structure, limited to the global +data that the Core has to keep. Future expansion may come to include +other existing global data. An application will be able to create and +destroy one or more library context(s) within which all subsequent +interactions with the Core operate within. If the application does not +create and provide its own library context, an internal default one +will be used. + + +``` +OPENSSL_CTX *OPENSSL_CTX_new(); +void OPENSSL_CTX_free(OPENSSL_CTX *ctx); +``` + +A library context can be passed to the explicit fetch functions. If +`NULL` is passed to them, the internal default context will be used. + +More than one library context may be allocated, which implies that any +provider module may be initialized more than once. This permits an +application to both be directly linked with libcrypto and loading +providers it's interested in, as well as being linked with other +libraries that use their own provider modules, independently. + +### Naming {#naming} + +Names are required for algorithms, parameters, and properties. In +order to ensure consistency and to enable external Provider +implementers to define new names in a consistent way there will be a +registry of recommended or used names. It will be maintained +separately from the sources. + +The ability to define aliases for names is required because there are +contexts where there are more than one name for the same thing +(e.g. EC curves with general names and NIST names for the same +thing). + +### Properties for Algorithm Implementation Selection {#properties-for-algorithm-implementation-selection} + +Algorithm implementations (cryptographic and non-cryptographic) will +have some properties which will be used to select an implementation +from amongst those available. For 3.0, two properties are defined: + +* _is this implementation the default implementation?_ +* _is this implementation FIPS validated_? + +The valid input and their meaning are: + ++---------------------+-----------------------------+------------------------+ +| **Property String** | **Meaning in a definition** | **Meaning in a query** | ++=====================+=============================+========================+ +| `default` | This is the default | Request the default | +| | implementation | implementation | ++---------------------+-----------------------------+------------------------+ +| `default=yes` | This is the default | Request the default | +| | implementation | implementation | ++---------------------+-----------------------------+------------------------+ +| `default=no` | This is not the default | Request a non-default | +| | implementation | implementation | ++---------------------+-----------------------------+------------------------+ +| `fips` | This implementation is FIPS | Request an | +| | validated. | implementation that is | +| | | FIPS validated | ++---------------------+-----------------------------+------------------------+ +| `fips=yes` | This implementation is FIPS | Request an | +| | validated. | implementation that is | +| | | FIPS validated | ++---------------------+-----------------------------+------------------------+ +| `fips=no` | This implementation is not | Request an | +| | FIPS validated. | implementation that is | +| | | not FIPS validated | +| | | | ++---------------------+-----------------------------+------------------------+ + +In all cases property names will be defined as printable ASCII +characters and are case insensitive. Property values may be quoted or +unquoted. Unquoted values will also always be printable ASCII +characters and are case insensitive. Quoted values are tested for +equality on a raw byte comparison basis only. + +Providers will be able to provide their own names or values. The full +syntax of property definitions and queries appear in +[Appendix 1 - Property Syntax](#appendix-1---property-syntax). + +OpenSSL reserves all property names that do not have a period; +vendor-provided property names must have a period in the name. It is +expected (but not enforced) that the part of the property name before +the first period is or relates to the provider's name, to provide some +level of conflict avoidance via namespacing. + +It is likely that additional properties will be defined during the +development of this release. A likely candidate is `provider` being +the name of the provider that is supplying the implementation. +Another possibility is `engine`, meaning that this algorithm is +implemented by an OpenSSL 1.1.1 dynamically loaded engine masquerading +as a provider. + +There will be a built in global property query string, which will be +"default". + +#### Property-based Algorithm Selection {#property-based-algorithmselection} + +Algorithm implementation selection is based on properties. + +The provider sets properties on the algorithms it offers. The +application sets which properties that it wants to see used as a +filter during algorithm selection - the query. + +The desired properties for fetching algorithm implementations can be +specified in the following places: + +1. globally, based on configuration files. +2. globally, based on API calls. +3. on a per-object basis for specific objects. E.g. SSL_CTX, SSL. + +Properties will be used during algorithm lookup (parameter +specification of property values). + +The sets of properties will be evaluated in a manner that resolves to +a single value of a property for each specified property +(keyword). The precedence order for keyword evaluation is: + + + +1. The per-object or directly specified API parameter to fetch +1. The global (default) properties set by API calls +1. The global (default) properties set in configuration files + +It is possible that additional property setting methods and evaluation +approaches will be defined during the development of this release. + +By default, OpenSSL 3.0 will load a configuration file (which contains +global properties and other settings) automatically without explicit +application API calls. This will occur in libcrypto. Note that in +OpenSSL 1.1.1 the configuration file is automatically loaded only by +the default (automatic) initialisation of libssl. + +### Parameter Definition {#parameter-definition} + +The OpenSSL Core and providers have to exchange data while keeping +OpenSSL and provider structures opaque. All composite values will be +passed as an array of items, using the public data structure defined +in +[Appendix 2 - OpenSSL parameter passing](#openssl-parameter-passing). +Parameters will be identified using their name (as a string) and each +contains its own type and size information. + +The Core will define an API to pass an array of parameter values or +requests for values to a provider or a specific algorithm +implementation, and for the latter, an associated object handled by +that implementation. In the cases of the basic machine types, macros +could be developed to assist in the construction and extraction of +values. + +### Operation and Operation Function Definitions {#operation-and-operation-function-definitions} + +While algorithm and parameter names are essentially controlled and +allocated by the providers, the operations and associated functions +that are going to be called by libcrypto are essentially controlled +and allocated by the Core. + +For things that are only controlled by the Core, we will use macros to +name them, with numbers as values to be used as indexes. Allocation +will be incremental, i.e. for any new operation or function, the next +number available will be picked. + +### Algorithm Query {#algorithm-query} + +Each algorithm type (e.g. `EVP_MD`, `EVP_CIPHER` etc) with have a +"fetch" function available (e.g. `EVP_MD_fetch()`, +`EVP_CIPHER_fetch()`). Algorithm implementations are identified using +their name and properties + +Each fetch function will use services provided by the Core to find an +appropriate implementation as described in the introduction of +[Core and Provider Design](#core-and-provider-design). If an appropriate +implementation has been found then it is constructed into a suitable +algorithm structure (e.g. `EVP_MD`, `EVP_CIPHER`) and returned to the +calling application. + +If multiple implementations are equally good matches for the passed +name and properties, one of these will be returned on retrieval but +exactly which one is not defined. Furthermore, there is no guarantee +that the same match would be returned every time. + +### Algorithm Query Caching {#algorithm-query-caching} + + +Algorithm queries will be cached together with their result. + +The algorithm query cache can be flushed to remove: + +* All queries returning a specific algorithm implementation +* All algorithm implementations from a specific provider +* All algorithm implementations + +### Multilevel Queries {#multilevel-queries} + +In order to handle both global properties and properties passed to +specific calls (such as fetch calls), the global property query +settings will be merged with the passed property settings except where +there is a conflict, specifically: + + ++--------------------+---------------------+---------------------+ +| **Global Setting** | **Passed Settings** | **Resulting Query** | ++====================+=====================+=====================+ +| `fips=yes` | `fips=yes` | `fips=yes` | ++--------------------+---------------------+---------------------+ +| `fips=yes` | `fips=no` | `fips=no` | ++--------------------+---------------------+---------------------+ +| `fips=yes` | `-fips` | *fips is not | +| | | specified* | ++--------------------+---------------------+---------------------+ +| `fips=yes` | *fips is not | `fips=yes` | +| | specified* | | ++--------------------+---------------------+---------------------+ +| `fips=no` | `fips=yes` | `fips=yes` | ++--------------------+---------------------+---------------------+ +| `fips=no` | `fips=no` | `fips=no` | ++--------------------+---------------------+---------------------+ +| `fips=no` | `-fips` | *fips is not | +| | | specified* | ++--------------------+---------------------+---------------------+ +| `fips=no` | *fips is not | `fips=no` | +| | specified* | | ++--------------------+---------------------+---------------------+ +| *fips is not | `fips=yes` | `fips=yes` | +| specified* | | | ++--------------------+---------------------+---------------------+ +| *fips is not | `fips=no` | `fips=no` | +| specified* | | | ++--------------------+---------------------+---------------------+ +| *fips is not | `-fips` | *fips stays not | +| specified* | | specified* | ++--------------------+---------------------+---------------------+ +| *fips is not | *fips is not | *fips stays not | +| specified* | specified* | specified* | ++--------------------+---------------------+---------------------+ + + +### Provider Module Loading {#provider-module-loading} + + +Providers can either be built-in or dynamically loadable modules. + +All algorithms are implemented by providers. The OpenSSL Core will +initially have no providers loaded, and therefore will have no +algorithms available. Providers will need to be discovered and +loaded. The algorithm implementations contained within them can then +be queried by the Core at a later time, with those queries possibly +becoming cached. + +If no provider has been loaded at the time of the first fetch +(implicit as well as explicit), the built in default provider will be +automatically loaded. + +Note that a provider may be written against an older version of the +Core API than the current version in libcrypto. For example, it will +have to be possible for users to run a different FIPS provider module +version than the main OpenSSL version. This means the Core API will +have to remain stable and backwards compatible (just like any other +public API). + +All of the command line applications supplied as part of the OpenSSL +build will gain a `-provider xxx` option which loads a provider. This +option can be specified multiple times on the command line (as +multiple providers can always be loaded) and it isn't an error if the +provider remains unused for any specific operation (e.g. loading a +provider that only supplies AES when doing a SHA256 digest). + +#### Finding and loading dynamic provider modules {#finding-and-loading-dynamic-provider-modules} + +Dynamic provider modules are `.so` files on UNIX type operating +systems, or a `.dll` file on Windows type operating systems, or +whatever corresponds on other operating systems. By default, they +will be installed in a well known directory. + +Provider module loading can occur several ways: + +* **On demand**, the application will have to specify exactly what + provider modules should be loaded. +* **By configuration**, the set of provider modules to load would be + specified in a configuration file. + +Some of these methods may be combined. + +A provider module can be specified by full path, and can therefore be +loaded even if it isn't located in the well known directory. + +After the Core loads a provider module, it calls the provider module +entry point. + +#### Provider Module Entry Point {#provider-module-entry-point} + +A provider module _must_ have the following well known entry point: + +``` +int OSSL_provider_init(const OSSL_PROVIDER *provider, + const OSSL_DISPATCH *in, + const OSSL_DISPATCH **out); +``` + +If the entry point does not exist in the dynamically loaded object, +then it is not a valid module and loading it will fail. + +`in` is an array of functions that the Core passes to the provider. + +`out` is an array of provider functions that the provider passes back +to the Core. + +`provider` is a handle to a provider object belonging to the Core. +This can serve as a unique provider identity which may be required in +some API calls. This object will also be populated with diverse data, +such as module path, NCONF configuration structure for the provider +(see [CONF / NCONF values as parameters](#conf-nconf-values-as-parameters) +below for an idea on how that would be implemented), and these diverse +values can then be retrieved by the provider using a params getter +callback that the Core provides. The type `OSSL_PROVIDER` is opaque. + +`OSSL_DISPATCH` is an open structure that implements the `< function-id, +function-pointer >` tuple mentioned in the introduction of +[Core and Provider Design](#core-and-provider-design): + + +``` +typedef struct ossl_dispatch_st { + int function_id; + void *(*function)(); +} OSSL_DISPATCH; +``` + + +The `funcion_id` identifies a specific function, and `function` is the +pointer to that function. An array of these is terminated with +`function_id` set to zero. + +The provider module may or may not be linked against libcrypto. If it +is not then it will have no direct access to any libcrypto +functions. All essential communication back to libcrypto will be via +callback functions provided by the Core. It is important that memory +allocated by specific providers is freed by the same +providers. Similarly memory allocated in libcrypto should be freed by +libcrypto. + +The API will specify a well known set of callback function +numbers. More function numbers can be added in later releases as +required without breaking backwards compatibility. + + +``` +/* Functions provided by the Core to the provider */ +#define OSSL_FUNC_ERR_PUT_ERROR 1 +#define OSSL_FUNC_GET_PARAMS 2 +/* Functions provided by the provider to the Core */ +#define OSSL_FUNC_PROVIDER_QUERY_OPERATION 3 +#define OSSL_FUNC_PROVIDER_TEARDOWN 4 +``` + + +The Core will set up an array of the well known callback functions: + + +``` +static OSSL_DISPATCH core_callbacks[] = { + { OSSL_FUNC_ERR_PUT_ERROR, ERR_put_error }, + /* int ossl_get_params(OSSL_PROVIDER *prov, OSSL_PARAM params[]); */ + { OSSL_FUNC_GET_PARAMS, ossl_get_params, } + /* ... and more */ +}; +``` + +This is only a few of the functions that the Core may see fit to pass +to a provider. We may also pass functions to help with logging, +testing, instrumentation etc as the need comes up. + +Once the module is loaded and the well known entry point located, the +init entry point can be invoked by the Core: + +``` +/* + * NOTE: this code is meant as a simple demonstration of what could happen + * in the core. This is an area where the OSSL_PROVIDER type is not opaque. + */ +OSSL_PROVIDER *provider = OSSL_PROVIDER_new(); +const OSSL_DISPATCH *provider_callbacks; +/* + * The following are diverse parameters that the provider can get the values + * of with ossl_get_params. + */ +/* reference to the loaded module, or NULL if built in */ +provider->module = dso; +/* reference to the path of the loaded module */ +provider->module_path = dso_path; +/* reference to the NCONF structure used for this provider */ +provider->conf_module = conf_module; + +if (!OSSL_provider_init(provider, core_callbacks, &provider_callbacks)) + goto err; + +/* populate |provider| with functions passed by the provider */ +while (provider_callbacks->func_num > 0) { + switch (provider_callbacks->func_num) { + case OSSL_FUNC_PROVIDER_QUERY_OPERATION: + provider->query_operation = provider_callbacks->func; + break; + case OSSL_FUNC_PROVIDER_TEARDOWN: + provider->teardown = provider_callbacks->func; + break; + } + provider_callbacks++; +} +``` + + +The `OSSL_provider_init` entry point does not register any algorithms +that will be needed, but it will return at least these two callbacks +to enable this process: + + + +1. `OSSL_FUNC_QUERY_OPERATION`, which is used to find out what + implementations of an operation are available. This must return + an array of `OSSL_ALGORITHM` (see further down), which maps + algorithm names and property definition strings to implementation + dispatch tables. This function must also be able to indicate if + the resulting array may be cached by the Core or not. This is + explained in further detail below. +1. `OSSL_FUNC_TEARDOWN`, which is used when the provider is unloaded. + +The provider register callback can only be run after the +`OSSL_provider_init()` call succeeds. + +#### Provider Initialisation and Algorithm Registration {#provider-initialisation-and-algorithm-registration} + + +An algorithm offers a set of operations (capabilities, features, +etc). The operations are invoked via functions. For example, the RSA +algorithm offers signing and encryption (two operations) which are +invoked via the _init_, _update_, _final_ functions for signing and +_init_, _update_, _final _ functions for encryption. The set of +functions is determined by the implementation of the upper-level EVP +code. + +Operations are identified by a unique number. For example: + + +``` +#define OSSL_OP_DIGEST 1 +#define OSSL_OP_SYM_ENCRYPT 2 +#define OSSL_OP_SEAL 3 +#define OSSL_OP_DIGEST_SIGN 4 +#define OSSL_OP_SIGN 5 +#define OSSL_OP_ASYM_KEYGEN 6 +#define OSSL_OP_ASYM_PARAMGEN 7 +#define OSSL_OP_ASYM_ENCRYPT 8 +#define OSSL_OP_ASYM_SIGN 9 +#define OSSL_OP_ASYM_DERIVE 10 +``` + +For a provider to make an algorithm usable by libcrypto, it must +register an operation querying callback, which returns an array of +implementation descriptors, given an operation identity: + + + < algorithm name, property definition string, implementation `OSSL_DISPATCH*` > + +So for example, this query callback will return the list of all its +digests if the given operation is `OSSL_OP_DIGEST`. + +Algorithms are identified by a string. + +The Core provides a set of services for the provider to use in the +form of a function table. + +A provider will also offer a service for returning information (in the +form of parameters as specified in +[Appendix 2 - Parameter Passing](#appendix-2---parameter-passing)) via a callback provided by the +provider, such as: + + +* version number +* Build strings - as per the current OpenSSL related build + information (only at the provider level) +* Provider name + + +An individual operation may require multiple function callbacks to be +defined in order to implement the operation. Each function will be +identified by a numeric function identity. Each of the identities are +unique for the combination of operation and function, i.e. the number +assigned to the init function of the digest operation cannot be reused +for init functions for other operations, those will have their own +unique numbers. For example, for the digest operation, these functions +are required: + +``` +#define OSSL_OP_DIGEST_NEWCTX_FUNC 1 +#define OSSL_OP_DIGEST_INIT_FUNC 2 +#define OSSL_OP_DIGEST_UPDATE_FUNC 3 +#define OSSL_OP_DIGEST_FINAL_FUNC 4 +#define OSSL_OP_DIGEST_FREECTX_FUNC 5 +typedef void *(*OSSL_OP_digest_newctx_fn)(const OSSL_PROVIDER *prov); +typedef int (*OSSL_OP_digest_init_fn)(void *ctx); +typedef int (*OSSL_OP_digest_update_fn)(void *ctx, void *data, size_t len); +typedef int (*OSSL_OP_digest_final_fn)(void *ctx, void *md, size_t mdsize, + size_t *outlen); +typedef void (*OSSL_OP_digest_freectx_fn)(void *ctx); +``` + +An all in one version is also advisable for devices that cannot handle +multi-part operations: + +``` +#define OSSL_OP_DIGEST_FUNC 6 +typedef int (*OSSL_OP_digest)(const OSSL_PROVIDER *prov, + const void *data, size_t len, + unsigned char *md, size_t mdsize, + size_t *outlen); +``` + + +A provider then defines arrays containing the set of functions for +each algorithm implementation and one array of algorithm descriptors +for each operation. The algorithm descriptor was mentioned higher up, +and would be publically defined like this: + + +``` +typedef struct ossl_algorithm_st { + const char *name; + const char *properties; + OSSL_DISPATCH *impl; +} OSSL_ALGORITHM; +``` + +For example (and it is only an example, providers may arrange these +things any way they want, the important thing is what the algorithm +querying function such as `fips_query_operation` below returns) the +FIPS module may define arrays like this for the SHA1 algorithm: + + +``` +static OSSL_DISPATCH fips_sha1_callbacks[] = { + { OSSL_OP_DIGEST_NEWCTX_FUNC, fips_sha1_newctx }, + { OSSL_OP_DIGEST_INIT_FUNC, fips_sha1_init }, + { OSSL_OP_DIGEST_UPDATE_FUNC, fips_sha1_update }, + { OSSL_OP_DIGEST_FINAL_FUNC, fips_sha1_final }, + { OSSL_OP_DIGEST_FUNC, fips_sha1_digest }, + { OSSL_OP_DIGEST_FREECTX_FUNC, fips_sha1_freectx }, + { 0, NULL } +}; +static const char prop_fips[] = "fips"; +static const OSSL_ALGORITHM fips_digests[] = { + { "sha1", prop_fips, fips_sha1_callbacks }, + { "SHA-1", prop_fips, fips_sha1_callbacks }, /* alias for "sha1" */ + { NULL, NULL, NULL } +}; +``` + +The FIPS provider init module entry point function might look like +this: + +``` C +static int fips_query_operation(const OSSL_PROVIDER *provider, + int op_id, const OSSL_ALGORITHM **map) +{ + *map = NULL; + switch (op_id) { + case OSSL_OP_DIGEST: + *map = fips_digests; + break; + } + return *map != NULL; +} + +#define param_set_string(o,s) do { \ + (o)->buffer = (s); \ + (o)->data_type = OSSL_PARAM_UTF8_STRING_PTR; \ + if ((o)->result_size != NULL) *(o)->result_size = sizeof(s); \ +} while(0) +static int fips_get_parms(const OSSL_PROVIDER *provider, + OSSL_PARAM *outparams) +{ + while (outparams->key != NULL) { + if (strcmp(outparams->key, "provider.name") == 0) { + param_set_string(outparams, "OPENSSL_FIPS"); + } else if if (strcmp(outparams->key, "provider.build") == 0) { + param_set_string(outparams, OSSL_FIPS_PROV_BUILD_STRING); + } + } + return 1; +} + +OSSL_DISPATCH provider_dispatch[] = { + { OSSL_FUNC_PROVIDER_QUERY_OPERATION, fips_query_operation }, + { OSSL_FUNC_PROVIDER_GET_PARAMS, fips_get_params }, + { OSSL_FUNC_PROVIDER_STATUS, fips_get_status }, + { OSSL_FUNC_PROVIDER_TEARDOWN, fips_teardown }, + { 0, NULL } +}; +static core_put_error_fn *core_put_error = NULL; +static core_get_params_fn *core_get_params = NULL; + +int OSSL_provider_init(const OSSL_PROVIDER *provider, + const OSSL_DISPATCH *in, + const OSSL_DISPATCH **out) +{ + int ret = 0; + + /* + * Start with collecting the functions provided by the core + * (we could write it more elegantly, but ...) + */ + while (in->func_num > 0) { + switch (in->func_num) { + case OSSL_FUNC_ERR_PUT_ERROR: + core_put_error = in->func; + break; + case OSSL_FUNC_GET_PARAMS: + core_get_params = in->func; + Break; + } + in++; + } + + /* Get all parameters required for self tests */ + { + /* + * All these parameters come from a configuration saying this: + * + * [provider] + * selftest_i = 4 + * selftest_path = "foo" + * selftest_bool = true + * selftest_name = "bar" + */ + OSSL_PARAM selftest_params[] = { + { "provider.selftest_i", OSSL_PARAM_NUMBER, + &selftest_i, sizeof(selftest_i), NULL }, + { "provider.selftest_path", OSSL_PARAM_STRING, + &selftest_path, sizeof(selftest_path), &selftest_path_ln }, + { "provider.selftest_bool", OSSL_PARAM_BOOLEAN, + &selftest_bool, sizeof(selftest_bool), NULL }, + { "provider.selftest_name", OSSL_PARAM_STRING, + &selftest_name, sizeof(selftest_name), &selftest_name_ln }, + { NULL, 0, NULL, 0, NULL } + } + core_get_params(provider, selftest_params); + } + + /* Perform the FIPS self test - only return params if it succeeds. */ + if (OSSL_FIPS_self_test()) { + *out = provider_dispatch; + return 1; + } + return 0; +} +``` + +### Algorithm Selection {#algorithm-selection} + + +Multiple providers may be available at any one time. Existing +application code re-compiled for this version should continue to +work. At the same time it should be possible with minor code +adjustments to be able to find and use algorithms using the new +property based algorithm lookup capability. + +To illustrate how this might work, the code below is an example of how +a simple AES-CBC-128 encryption might be done using OpenSSL 1.1.1. All +error handling has been stripped out for simplicity. + +``` C +EVP_CIPHER_CTX *ctx; +EVP_CIPHER *ciph; + +ctx = EVP_CIPHER_CTX_new(); +ciph = EVP_aes_128_cbc(); +EVP_EncryptInit_ex(ctx, ciph, NULL, key, iv); +EVP_EncryptUpdate(ctx, ciphertext, &clen, plaintext, plen); +EVP_EncryptFinal_ex(ctx, ciphertext + clen, &clentmp); +clen += clentmp; + +EVP_CIPHER_CTX_free(ctx); +``` + +In OpenSSL 3.0, such code would continue to work and would use +algorithms from a provider (assuming nothing else has been configured, +it will be the default provider). It could also be rewritten using +explicit fetching as follows. Explicit fetching also enables the +application to specify a non-default library context if required +(`osslctx` in this example): + + +``` + +EVP_CIPHER_CTX *ctx; +EVP_CIPHER *ciph; + +ctx = EVP_CIPHER_CTX_new(); +ciph = EVP_CIPHER_fetch(osslctx, "aes-128-cbc", NULL); /* <=== */ +EVP_EncryptInit_ex(ctx, ciph, NULL, key, iv); +EVP_EncryptUpdate(ctx, ciphertext, &clen, plaintext, plen); +EVP_EncryptFinal_ex(ctx, ciphertext + clen, &clentmp); +clen += clentmp; + +EVP_CIPHER_CTX_free(ctx); +EVP_CIPHER_free(ciph); /* <=== */ +``` + + +An application may wish to use algorithms from a different provider. + +For example, consider the scenario where an application wishes to use +some algorithms from the FIPS provider, but still use the default +algorithms in certain cases. This could be implemented in different +ways, e.g. + + + +1. Only use FIPS algorithms. +2. Default to using FIPS algorithms. Be able to override it on an "as + needed" basis to get access to a non FIPS algorithm. +3. Default to not caring about FIPS algorithms. Be able to override + it on an "as needed" basis to get a FIPS algorithm. + +#### Only FIPS {#only-fips} + +Compared to code written for pre-3.0.0 OpenSSL, all you need to do to +only get FIPS implementations is something like this: + +``` C +int main(void) +{ + EVP_set_default_alg_properties(NULL, "fips=yes"); /* <=== */ + ... +} +``` + +Then the above encryption code that uses `EVP_aes_128_cbc() `would +continue to work as before. The `EVP_EncryptInit_ex()` call would use +those default algorithm properties, and then look it up via the Core +in order to get a handle to the FIPS implementation. This +implementation would then be associated with the `EVP_CIPHER_CTX` +object. If there isn't a suitable algorithm implementation available +then the the `EVP_Encrypt_init_ex()` call will fail. + +The first parameter to `EVP_set_default_alg_properties` is the library +context, NULL being the default internal one. + +#### Default to FIPS but allow an override {#default-to-fips-but-allow-an-override} + +To default to using FIPS algorithms but override it on an _as needed_ +basis to non-FIPS algorithms, the application might instead do this, +compared to code written for pre-3.0.0 OpenSSL: + +``` C +int main(void) +{ + EVP_set_default_alg_properties(osslctx, "fips=yes"); /* <=== */ + ... +} + +EVP_CIPHER_CTX *ctx; +EVP_CIPHER *ciph; + +ctx = EVP_CIPHER_CTX_new(); +ciph = EVP_CIPHER_fetch(osslctx, "aes-128-cbc", "fips!=yes"); /* <=== */ +EVP_EncryptInit_ex(ctx, ciph, NULL, key, iv); +EVP_EncryptUpdate(ctx, ciphertext, &clen, plaintext, plen); +EVP_EncryptFinal_ex(ctx, ciphertext + clen, &clentmp); +clen += clentmp; + +EVP_CIPHER_CTX_free(ctx); +EVP_CIPHER_free(ciph); /* <=== */ +``` + +Here the `EVP_CIPHER_fetch()` call would combine properties from: + +1. The default algorithm properties +2. The properties passed in as a parameter (with the passed in + properties taking precedence). + +Because the `EVP_CIPHER_fetch()` call overrides the default "fips" +property it will look for an implementation of AES-CBC-128 that is not +"fips". + +In this example, we see a non-default library context being used. +This is only possible with explicitly fetched implementations. + +(note for the attentive: `"fips!=yes"` could as well be `"fips=no"`, +but is provided here as an example of the "not equal to" operator) + +#### Default to not caring and allow override for FIPS {#default-to-not-caring-and-allow-override-for-fips} + +To default to not using FIPS algorithms but override it on an _as +needed_ basis to use FIPS, the application code might look like this, +compared to code written for pre-3.0.0 OpenSSL: + +``` C +EVP_CIPHER_CTX *ctx; +EVP_CIPHER *ciph; + +ctx = EVP_CIPHER_CTX_new(); +ciph = EVP_CIPHER_fetch(osslctx, "aes-128-cbc", "fips=yes"); /* <=== */ +EVP_EncryptInit_ex(ctx, ciph, NULL, key, iv); +EVP_EncryptUpdate(ctx, ciphertext, &clen, plaintext, plen); +EVP_EncryptFinal_ex(ctx, ciphertext + clen, &clentmp); +clen += clentmp; + +EVP_CIPHER_CTX_free(ctx); +EVP_CIPHER_free(ciph); /* <=== */ +``` + +In this version we have not overridden the default algorithm +properties in "main", and therefore you get the standard +out-of-the-box defaults which are to not mandate the use of +FIPS. However we've explicitly set the "fips" property at the +`EVP_CIPHER_fetch()` level, and so that overrides the default. When +`EVP_CIPHER_fetch()` looks up the algorithm using the Core it will get +a reference to the FIPS one (or fail if no such algorithm is +available). + +#### Asymmetric algorithm selection {#asymmetric-algorithm-selection} + +Note that for symmetric encryption/decryption and for message digests +there are existing OpenSSL objects that can be used to represent an +algorithm, i.e. `EVP_CIPHER` and `EVP_MD`. For asymmetric algorithms +there is no equivalent object. The algorithm in use is inferred +implicitly from the type of the `EVP_PKEY`. + +In order to solve this problem a new asymmetric algorithm object will +be introduced. In the example below an ECDH key derivation is +performed. We lookup a FIPS ECDH implementation (assuming we _know_ +that the given private key is an ECC one, of course) using a new +algorithm object, `EVP_ASYM`: + +``` C +EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new(privkey, NULL); +EVP_ASYM *asym = EVP_ASYM_fetch(osslctx, EVP_PKEY_EC, "fips=yes"); +EVP_PKEY_CTX_set_alg(pctx, asym)); +EVP_PKEY_derive_init(pctx); +EVP_PKEY_derive_set_peer(pctx, pubkey); +EVP_PKEY_derive(pctx, out, &outlen); +EVP_PKEY_CTX_free(pctx); +``` + +### Example dynamic views of algorithm selection {#example-dynamic-views-of-algorithm-selection} + +The sequence diagram below shows an example of how the SHA256 +algorithm might be selected and invoked from the default provider. + +![](images/DigestExplicit.png) + +Note that each EVP layer call is implemented by thin wrappers in the +EVP layer, which invoke similarly named functions within the provider +on an algorithm by algorithm basis. The specific provider functions to +be used will be looked up in the Core Dispatcher tables via an +explicit `EVP_MD_fetch()` call that specifies the message digest name as a +string and any other relevant properties. The returned "md" object contains +function pointers to the implementation of the algorithm in the selected +provider. + +The `EVP_MD_CTX` object is not passed through to the provider since we +do not know whether any specific provider module is linked against +libcrypto. Instead we simply pass through a black box handle (`void *` +pointer), which the provider will associate with whatever structure it +requires. This is allocated during an explicit `digestNewCtx()` call +to the provider at the beginning of the operation, and freed at the +end with a `digestFreeCtx()` call. + +The next diagram shows a slightly more complex scenario, i.e. an +`EVP_DigestSign*` operation using RSA and SHA256. This diagram is +drawn from the perspective of libcrypto with algorithms being provided +by the FIPS module. A later section will examine this scenario from +the perspective of the FIPS module. + +![](images/DigestSignFIPSExplicit.png) + +An `EVP_DigestSign*` operation is more complicated because it involves +two algorithms: a signing algorithm, and a digest algorithm. In +general those two algorithms may come from different providers or the +same one. In the case of the FIPS module the algorithms must both come +from the same FIPS module provider. The operation will fail if an +attempt is made to do otherwise. + +In spite of the added complexity of having two algorithms the same +concepts apply as for the simpler `EVP_Digest*` operation shown in the +earlier diagram. There are two contexts produced: an `EVP_MD_CTX` and +an `EVP_PKEY_CTX`. Neither of these are passed through to the +provider. Instead black box (`void *`) handles are created via +explicit "newCtx" provider calls, and then those handles are passed +through during subsequent "init", "update" and "final" operations. + +The algorithms are looked up in the Core dispatch tables using +explicit `EVP_MD_fetch()` and `EVP_ASYM_fetch()` calls in advance. + +## FIPS Module {#fips-module} + +This is a +[FIPS 140-2](https://csrc.nist.gov/publications/detail/fips/140/2/final) +validated cryptographic module. It is a +[provider](#core-and-provider-design) that contains FIPS +validated/approved cryptographic algorithms only. Non FIPS algorithms +will be supplied by the default provider (not the FIPS module). + +The module is dynamically loadable - static linking is not supported. + +The FIPS Module will itself not have a "FIPS mode". The OpenSSL that +can use the FIPS provider will have a "mode" concept that is +compatible with the FIPS Module 2.0.0. + +### FIPS Module Version Numbering {#fips-module-version-numbering} + + +The version will be FIPS module 3.0 + +Any subsequent revisions will be labelled in a similar manner to +previous releases i.e 3.0.x. + +For change letters or revalidations the version number of the FIPS +Module will be updated to match the current version of the OpenSSL +library. + +### Detection of Changes inside the FIPS Boundary {#detection-of-changes-inside-the-fips-boundary} + +For the sake of validation, we need to detect if any relevant source +has changed. + +This can be done with a script that tokenizes the C sources the same +way a C preprocessor does, but that is also taught to ignore certain +parts of the source: + + + +* System `#include` directives. +* Code that is conditioned away in FIPS mode (as described in + [Conditional Code](#conditional-code) below). + +(reminder: a C preprocessor can, but doesn't not have to, collapse all +non-newline whitespace and leave a standard single space between every +token, and comments are considered to be whitespace for this purpose) + +The result of the tokenization process can then go through a checksum, +which is stored in a file parallel to the source file and ultimately +version controlled. + +The process will be something like this (not exactly, this is a code +example to show the overall process): + +``` shell + for f in $(FIPS_SOURCES); do + perl ./util/fips-tokenize $f | openssl sha256 -r + done | openssl sha256 -hex -out fips.checksum +``` + +There will also be some mechanism that alerts us of changes so we can take appropriate action. For example: + + +``` shell + git diff --quiet fips.checksum || \ + (git rev-parse HEAD > fips.commit; scream) +``` + + +What `scream` should actually do is still to be determined. + +Updating `fips.checksum` should happen as part of a normal `make +update`, which is the usual method to change and check changes on +files that are version controlled. OpenSSL's CIs already run this to +see that nothing was forgotten, and breaks the build if something was +changed by this command. Running `make update` is also part of the +normal OpenSSL release process. + +#### How to react to a change of the signed checksum {#how-to-react-to-a-change-of-the-signed-checksum} + + +In spite of `scream`, a changed checksum in our repo isn't very +dramatic per se, it simply notifies us that we need to pay some extra +attention to the FIPS source. + +Two possibilities: + +1. _When it's soon time for a release_ and `fips.checksum` no longer + contains the checksum from the last validated source, send the + FIPS source to the lab and get the update validation process + started. +2. _At the same time as a release is made_ `fips.checksum` no longer + contains the checksum from the last validated source, send the + FIPS source to the lab (including diff files and a change list) + and get the appropriate update validation process started. + +The list of validated checksums will be listed _somewhere else_ (to be +specified later) + +#### Compiling {#compiling} + +For each FIPS provider source file, we calculate that file's checksum +and check it against the collected checksum in `fips.checksum`, and +refuse to compile if there's a mismatch. + +### FIPS Mode {#fips-mode} + +The FIPS module only contains FIPS validated cryptographic +algorithms. Any FIPS mode 'switching logic' will be outside the FIPS +module boundary - this will be handled by the "fips" property. + +[Conditional code](#conditional-code) related to FIPS mode is +discussed in a separate section. + +The following FIPS API's will continue to be available for application +use (for consistency the same names present in 1.1.1 are used): + +* `int FIPS_mode_set(int on)` + + Ensures that "fips=yes" is set (for `on != 0`) or "fips" is unset + (for `on == 0`) in the current global property setting. This will + also attempt to fetch the `HMAC-SHA256` algorithm with the + property "fips=yes" and ensure that it successfully returns. + +* `int FIPS_mode(void)` + + Returns 1 if the current global property string contains the + property "fips=yes" (or "fips"), 0 otherwise. + + We could check if there is any provider available that offers a + FIPS algorithm currently and handle this a little differently. + +* `int FIPS_self_test(void)` + + If the `FIPS_mode()` returns true then this runs the KATs. + + The integrity test will not be covered. That will be a separate + function if we decide to provide it. + + Returns 1 on success; 0 on failure or there being no OpenSSL FIPS + provider. + +Note: these functions will only operate in the context of the OpenSSL +FIPS provider - not in the context of any other FIPS provider. These +are legacy, deprecated interfaces. The +`EVP_set_default_alg_properties()` function(s) should be used for +non-legacy configuration. + +### Roles and Authentication {#roles-and-authentication} + +There are two implied roles - Cryptographic Officer (CO) and +User. Both roles support all the same services. The only difference is +that the CO installs the software. The module should not support user +authentication (it is not required for level 1). This can all be +explained in the security policy without any specific code. + +### Finite State Model (FIPS 140-2 section 4.4) {#finite-state-model} + +A state machine needs to be defined. + +We will require the following: + +* Self test states - initialisation, running, self test, error, + shutdown, (and potentially post_triggered) +* Error States - If a self test fails the module should return an + error for that operation. It is permissible to try to clear the + error and repeat the operation. If failure persists, the module + should enter an error state. This can either be a hard error + state where all cryptographic operations fail or a reduced + functionality state where the failing components only return error + when used. + + Failing a self test can be triggered by: + + 1. Continuous tests (key pair gen pairwise test (sign/verify) and + random number compare test from entropy source to verify + random number inputs into the DRBG are not the same). + 2. DRBG health tests - this can be made to cause an error always + just in the RNG (rather than setting a global error + state)[^1]. + 3. POST Integrity test failure either at install, startup, or on + demand. + 4. POST KAT failure at startup, or on demand. + + An internal API will be supplied to set the failure state for the above cases. + +#### State Machine {#state-machine} + +States which are not present in the state machine are shown dotted. +The edges into and out of the error state are dashed to indicate that +they are not expected to be traversed. + +![](images/300FIPSStateMachine.png){style="float: right"} + +The state model consists of these states: + +1. **Power Off**: the FIPS module is not loaded into an application + and the shared library is not in memory. +2. **Power On**: the FIPS module has been loaded by an application + and the shared library is in memory. Default Entry Point + Constructors will be initiated. +3. **Initialisation**: `OSSL_provider_init` is called. +4. **Integrity Check (POST Integrity)**: the module checksums itself + and verifies that it hasn't been inadvertently altered. + + (This is run during the FIPS providers `OSSL_provider_init()`). + +5. **Self Test (POST KAT)**: the FIPS module is performing its POST + during installation or the POST on demand from an API call. +6. **Running**: the FIPS module is in its normal operating state. + All APIs can be used and continuous testing is in force. +7. **Error**: the FIPS module has entered an error state. All + cryptographic APIs will return an error when called. +8. **Shutdown**: the FIPS module is being terminated and unloaded + from the using application. + +The edges between states are: + +1. **Power Off** to **Power On**: this transition is performed by the + operating system when loading the shared library into an + application. +2. **Power On** to **Initialisation**: this transition occurs when + the shared library constructor is called. +3. **Power On** to **Shutdown**: this transition is triggered if the + constructor cannot be called or if it fails. +4. **Initialisation **to **Integrity Check**: this transition occurs + when the initialisation code has completed. The module integrity + checksum is computed and compared to the expected value. +5. **Initialisation **to **Error**: this transition is triggered if + the initialisation code encounters an error before the self tests + are initiated. +6. **Integrity Check** to **Running**: this transition occurs for all + startup where the integrity checks succeed after initial + installation. +7. **Integrity Check** to **Self Test**: this transition occurs + during installation when the integrity checks succeed. +8. **Integrity Check** to **Error**: this transition is triggered if + the integrity check fails. +9. **Running **to **Shutdown**: this transition occurs when the FIPS + module is being finalised. +10. **Running **to **Error**: this transition is triggered if one of + the continuous tests fail. +11. **Running **to **Self Test**: this transition is triggered by the + application when it initiates the self tests manually. The + integrity checks are not rerun. +12. **Self Test** to **Running**: this transition occurs when the + self tests pass. +13. **Self Test** to **Error**: this transition is triggered if the + self tests fail. +14. **Shutdown **to **Power Off**: this transition occurs when the + FIPS module is unloaded from the memory of the application. +15. **Error **to **Shutdown**: this transition occurs when the FIPS + module is being finalised. + +If possible, we should aim to have algorithms registered only in the +running state. Any transition into the running state should allow +registration / caching of cryptographic algorithms and any transition +into the error or shutdown states should flush all cached algorithms +from libcrypto. By taking this approach, we obviate the need to check +the state in all the cryptographic factory functions. This avoids +special case access for the self tests (when started manually) while +denying access to external callers. + +### Services {#services} + +The FIPS module provides the following services. + +* Show status. This returns 1 if the 'Running' state is active + otherwise it returns 0. +* Cryptographic services such as HMAC, SHS, Encryption. See + [Algorithms](#appendix-3---algorithms). +* Self Test (POST On Demand) - A public API FIPS_self_test() in + libcrypto will be used to access this method. The method used must + be the same one that is triggered during initialization. The + Security Policy will state that this may only be accessed while no + other cryptographic services are running. +* Key Zeroization. See [CSP/Key Zeroization](#csp-key-zeroization). + +Services are only operational in the running state. Any attempts to +access services in any other state will result in an error being +returned. If the POST fails then any attempt to access any service +should result in an error being returned. + +### Self Testing {#self-testing} + +Self-testing consists of power-on self-tests (POST) and run-time tests +(such as ensuring entropy isn't repeated as input to the RNG). + +The POST consists of a module integrity check (which runs each time a +FIPS-using application runs) as well as algorithm KATs (which can be +run once at installation time). + +The POST tests run during the call to the FIPS modules +`OSSL_provider_init()` entry point. + +In order to implement the Integrity Test and KAT in the proper order, +the module needs access to the following data items: + +1. Path to the library; +2. HMAC-SHA256 of the library contents (or path to the file with + that); +3. An indication that the library has been installed and the KAT has + passed; and +4. HMAC-SHA256 of that indicator. + +These values will be part of the parameters that can be retrieved +through the `OSSL_PROVIDER` object and associated `OSSL_PARAM` +getter. A "safer" get-value function that doesn't expand environment +variables, etc. will be used to fetch the values. In addition, +functions to access and return the library contents (probably +BIO-based by having the Core pass a select number of BIO functions in +its dispatch table) will also have to be passed into the module so +that it can generate its own digest of the library. + +A new OpenSSL "fips" application will provide install (run the KAT and +output data for the config file) and check (see if the values in the +config file are valid) capabilities. + +The module's Default Entry Point (DEP), the ".init" function in Linux +libraries, will set a module variable (probably the state +variable). This variable will be checked in the OSSL_provider_init() +and, if set (which it always will be), will verify the values in the +file. This two-step process meets the FIPS requirement of having the +DEP ensure the tests are run, but allows us to implement the tests +when the rest of the module is being initialized during normal +operation. + +As part of the build process the integrity checksum of the FIPS module +must be saved to a file. This could be done as a script. It is just a +HMAC_SHA256 of the entire FIPS module file with a known fixed key. If +the library is signed then the checksum would have to be calculated +after the signature is applied. + +A fixed key of at least 112 bits will be embedded in the FIPS module +for all HMAC integrity operation(s), this key will also be made +available to the external build script. + +For testing purposes all active POST tests run even if one or more of +them fail. + +#### Integrity Checksum Location {#integrity-checksum-location} + +The integrity checksum will be saved into a seperate file during +installation. This file will be in the same location as the FIPS module +itself by default, but may be configured to be in a different +location. + +#### Known Answer Tests {#known-answer-tests} + +The purpose of a KAT is to perform a health-check of the cryptographic +module to identify catastrophic failures or alterations of the module +between power cycles and not that the implementation is correct. + +There are +[FIPS 140-2 IG](https://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/fips140-2/fips1402ig.pdf)'s +rules that specify that each supported algorithm (not each mode) need +to be tested, and that if an algorithm is tested as a component of +another test then it does not need separate tests. Here is the list of +algorithms that 'need' to be tested. + +* Cipher encrypt/decrypt + * AES_128_GCM[^2] + * TDES_CBC +* Digests + * SHA1 + * _SHA256 is required but tested elsewhere_ + * SHA512 + * SHA3-256 +* Sign/Verify tests + * DSA_2048 + * RSA_SHA256 (with PKCS #1 v1.5 padding) + * ECDSA P256 +* DRBG Health Tests for any supported DRBG mechanisms + * CTR (AES_128_CTR) + * HASH - SHA256[^3] + * HMAC - SHA256 +* Derived Tests (Compute Z) + * ECDSA P256 + * ECDH +* KDF's + * KBKDF (HKDF for TLS) + +Note: HMAC-SHA-256 is used by the integrity test, so there is no need +for a seperate HMAC test. + +##### API access {#api-access} + +In order to easily modify and change the self tests that are run - the +self tests should be data driven. The POST tests are run before any +methods are registered but the method tables can still be used +indirectly. Lower level API's will still be required to set up keys +(params, public/private) - the key loading code should be isolated in +a separate function. + +An init method that sets up any required dependencies for the high +level functions will be required i.e. `set_cpuid` may need to be +called before doing primitive calls. + +API's for different types of self tests should be provided for +digests, ciphers, signatures, DRBGs, KDFs, HMACs. + +The parameter passed into each of these tests is KAT data. + +### Security Strength {#security-strength} + +[SP 800-131A rev2](https://csrc.nist.gov/publications/detail/sp/800-131a/rev-2/draft) +disallows certain algorithms and key lengths after certain dates. +Security strengths are associated with these items. + +Algorithms with at least 112 bits of security strength are allowed. + +For signature verification, security strengths of at least 80 and +below 112 are allowed for legacy purposes. + +These two values could be defined and enforced in the FIPS module for +keys, or it can be handled more simply in the Security Policy +Document. + +They could be defined by public API's that allow setting of these +minimum values. + +A concept of target security strength should also be added, this value +would be used during key generation algorithms, which have an input +target security strength parameter specified by their standards. + +### SP800-56A & 56B {#sp800-56a-and-56b} + +These standards contain Key Agreement protocols. In order to test the +protocols the following low level primitives would need to be in the +cryptographic module. + +* Compute key methods - These already exist. (e.g `DH_compute_key()`). +* Key Generation - (RSA + [FIPS 186-4](https://csrc.nist.gov/publications/detail/fips/186/4/final) + Keygen is currently missing). +* Key Validation - (Mostly implemented). + +#### FIPS 186-4 RSA Key Generation {#fips-186-4-rsa-key-generation} + +* Initial Code for RSA key generation has been written + ([https://github.com/openssl/openssl/pull/6652](https://github.com/openssl/openssl/pull/6652)) + + Outstanding work is to plumb this into the FIPS module. The + OpenSSL FIPs provider will have the logic that enforces the key size + limits. +* A pairwise consistency test (Conditional Self Test) is required + for RSA, DSA & ECDSA key pair generation. As the purpose of keys + is not known during key generation, + [FIPS 140-2 IG](https://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/fips140-2/fips1402ig.pdf) + states that the same pairwise tests can be used for both modes + i.e Signatures and Encryption. +* 1024 bit keys are not allowed for RSA key generation. +* The Key generation algorithms have the concept of a + target_security_strength. i.e- the code in key generation needs + the following check for RSA for example + + ``` C + if (target_strength < 112 + || target_strength > 256 + || BN_security_bits(nbits) < target_strength) + return 0; + + ``` + +#### DH Key Generation {#dh-key-generation} + +* DH Key generation - This could possibly be broken up so that it + matches the standard steps. It is currently a fairly complex + monolithic function that is also used for validation. + +#### Key Validation {#key-validation} + + +* RSA + [SP 800-56B](https://csrc.nist.gov/publications/detail/sp/800-56b/rev-1/final) + Key validation - public key, private key and key-pair checks that + conform to the standard have been added to + [PR #6652](https://github.com/openssl/openssl/pull/6652). +* DH key validation checks need to be checked that they match the + standard. +* EC key validation matches the standards checks. +* AES-XTS mode requires a tweak key check. + +For KAS DH Params - two types are supported: + +1. Approved Safe Prime groups given by the following: + + (where g=2, q=(p-1)/2, priv=[1, q-1], pub=[2, p-2]) + + TLS: (ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192) + + IKE: (modp-2048, modp-3072, modp-4096, modp-6144, modp-8192) + + Only the above safe primes can be validated - any others should fail. + + Safe primes can be used for security strengths of at least 112 + bits. FIPS specific checks to validate the group may be required. + +2. [FIPS 186-4](https://csrc.nist.gov/publications/detail/fips/186/4/final) + param sets can be used for backwards compatibility with security + strength of 112 bits only. The groups are + + FB (2048, 224) & + + FC (2048, 256). + + This requires the seed and counter to be saved for validation purposes. + +If both types need to be supported then different key validation code +will be required. + +The existing `DH_Check()` will require FIPS specific checks for the +approved types. + +Keygen is the same for both (the security strength and max bitlen of +private key are inputs). + +DSA = 'FFC' in +[FIPS 186-4](https://csrc.nist.gov/publications/detail/fips/186/4/final). +The DSA key generation/key validation could be reworked so that it +matches the standard steps better. The key validation would benefit +from this and can possibly be reused for the DH case if required. + +### GCM IV Generation {#gcm-iv-generation} + +For the FIPS module AES GCM has requirements related to unique key/IV +pairs i.e. + + + +* Key/IV pair's must be unique for encryption. +* The IV's must be generated inside the FIPS boundary. +* For TLS the counter portion of the IV must be set by the + module. The module must ensure that when the counter is exhausted + an error is returned. +* For a given key (for any IV length) the total number of + invocations of the authenticated encryption function must be less + than 2^32^. +* A loss of power to the module should not cause the repetition of IVs. + +The Random Construction method for IV generation +(from [SP 800-38D](https://csrc.nist.gov/publications/detail/sp/800-38d/final)) +will be used (except for TLS which will behave the same way it +currently does). The Random Construction consists of a free field +(which will be NULL) and a random field which will use a DRBG that can +return at least 96 bits of entropy strength. This DRBG needs to be +seeded by the module. + +The existing code needs to be modified so that an IV is generated if +it is not set during the init() phase. The do_cipher() method can then +be used to generate an iv if required.. + + +``` C +int aes_gcm_cipher() +{ + .... + /* old code just returned -1 if iv_set was zero */ + if (!gctx->iv_set) { + if (ctx->encrypt) { + if (!aes_gcm_iv_generate(gctx, 0)) + return -1; + } else { + return -1; + } + } + } +} +``` + +The generate code would look like the following: + +``` C +#define AES_GCM_IV_GENERATE(gctx, offset) \ + if (!gctx->iv_set) { \ + int sz = gctx->ivlen - offset; \ + if (sz <= 0) \ + return -1; \ + /* Must be at least 96 bits */ \ + if (gctx->ivlen < 12) \ + return -1; \ + /* Use DRBG to generate random iv */ \ + if (RAND_bytes(gctx->iv + offset, sz) <= 0) \ + return -1; \ + gctx->iv_set = 1; \ + } +``` + +The generated IV can be retrieved via `EVP_CIPHER_CTX_iv()` so a ctrl +id should not be needed. + +Ideally in FIPS mode trying to set the GCM IV parameter would result +in an error. In practice there may be some applications that still +require setting of the IV, so it is recommended that this is +specified as a security policy item. + +The security policy would also need to state the following: (See +[FIPS 140-2 IG](https://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/fips140-2/fips1402ig.pdf) +A.5) + + + +* When the power is lost and then restored, a new key for use with + AES GCM encryption shall be established. +* The total number of invocations using the same key must be less + than 2^32^. +* Scenario 1: IV gen is in compliance with the TLS protocol. +* Scenario 2: IV gen using + [NIST SP 800-38D](https://csrc.nist.gov/publications/detail/sp/800-38d/final) + (Section 8.2.2). + +### CSP/Key Zeroization {#csp-key-zeroization} + +We must set all Critical Security Parameters (CSPs) to zero when they +are no longer needed. This might happen at different times dependent +on the context: + +* Temporary copies of CSPs may be stack or heap allocated, and will + be zeroized within the relevant function for the scope within + which they are used. +* Some CSPs will have a lifetime associated with an OpenSSL object + such as an `EVP_PKEY`, or an `EVP_CIPHER_CTX`. In this case the + CSPs will be zeroized at the point that these objects are + freed. In some cases objects may be reused (e.g. an + `EVP_CIPHER_CTX` can be reused for multiple encryption + operations), in which case any CSPs still present in the object + will be zeroized at the point that it is reinitialized for the new + operation. +* Some CSPs (e.g. internal DRBG state) may live for the entire time + that the OpenSSL FIPS Module is loaded. In this case the state + will be encapsulated within OpenSSL objects. All OpenSSL Providers + (including the FIPS Module Provider) will have the ability to + register an "unload" function which is to be called when OpenSSL + is closed down (or the module is unloaded for any other + reason). The objects containing CSPs will be freed (and hence + zeroized) by this unload function. +* According to + [FIPS 140-2 IG](https://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/fips140-2/fips1402ig.pdf) + 4.7: Cryptographic keys used by a cryptographic module ONLY to perform + [FIPS 140-2](https://csrc.nist.gov/publications/detail/fips/140/2/final) + Section 4.9.1 Power-Up Tests are not considered CSPs and therefore + do not need to meet the + [FIPS 140-2](https://csrc.nist.gov/publications/detail/fips/140/2/final) + Section 4.7.6 zeroization requirements. + +The OpenSSL FIPS Module will contain its own copy of the standard +`OPENSSL_cleanse()` function to perform the zeroization. This is +implemented using platform specific assembler. + +### DRBG {#drbg} + + +The following API's existed in the old FIPS module and may need to be +re-added: + +* **FIPS_drbg_health_check**: runs the DRBG KAT tests on demand. We + will need this available. +* **FIPS_drbg_set_check_interval**: sets the interval (number of + generate calls) between running the DRBG KATs. This doesn't seem + like it is necessary, these tests are run at power up but are not + required to be run later, however this call is useful for failure + testing. + +#### Derivation Function {#derivation-function} + +As per #2 in +[FIPS 140-2 IG 14.5](https://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/fips140-2/fips1402ig.pdf), +CTR DRBG will need to support the derivation function unconditionally. +With the derivation function disabled, the current code has issues +reseeding. Moreover, without a derivation function, additional +justification is required from the lab. + +#### Test Requirements {#test-requirements} + +* The `uninstantiate()` needs to demonstrate that the internal state + has been zeroized. +* Failure testing requires a function for DRBG's to always produce the same + output. + +#### Other Items to Consider {#other-items-to-consider} + +In addition to entropy, described below, the following items need to be +considered: + +* The entropy expansion in + [NIST SP 800-90C](https://csrc.nist.gov/publications/detail/sp/800-90c/draft) + 10.1.2 should be considered for implementation. +* A better DRBG selection mechanism to choose between the available + DRBGs. +* Support for prediction resistance. I.e. attempt to collect more + entropy from our sources when requested. +* We need to figure out what the DRBG layer is going to look like. A + fair portion of the code will need to sit inside the FIPS + module. This code currently accesses EVP functionality which might + not be exposed inside the module. e.g. `drbg_ctr_init()` resolves + the `EVP_CIPHER` from a NID, and then sets up an `EVP_CIPHER_CTX`. + +### Entropy {#entropy} + +For all platforms, the operating system will provide entropy. For +some platforms, built in hardware random number generators can also be +used, although this introduces additional justification needs. + +For UNIX-like systems, one of the system calls `getrandom` or +`getentropy` or the random device, `/dev/random`, will be used as +entropy sources. Preference to be given to the system calls. Other +strong random devices that can be used instead of `/dev/random` +include: `/dev/srandom` and `/dev/hwrng`. Note, `/dev/urandom`, +`/dev/prandom`, `/dev/wrandom` and `/dev/arandom` are not useable for +FIPS operations without additional justification. + +On Windows, `BCryptGenRandom` or `CryptGenRandom` will be used as +entropy sources. + +On VMS, various pieces of system status information will be used as +entropy sources. Note, this will require justification and analysis +to attest to the quality of the sources. + +For iOS, +[SecRandomCopyBytes](https://developer.apple.com/documentation/security/1399291-secrandomcopybytes) +which produces +[cryptographically secure random bytes](https://developer.apple.com/documentation/security/secrandomref). + +FIPS only allows one entropy source to be credited so the FIPS module +will rely solely on the aforementioned operating system sources. +Other sources, e.g. egd, hardware devices and the like, will not be +used. + +#### Work to do to Complete the Entropy Solution {#work-to-do-to-complete-the-entropy-solution} + +The DRBG health tests need to be added to the random framework so that +the seed material being fed into the DRBGs is checked. The check is +for no two sequential blocks of seed material being identical. The +check is made after all entropy sources are coalesced together and if +it fails, reseeding the DRBGs fails forever more. We get to define +the block size used: 64 bits. This is a balance between the +probability of accidentally receiving a duplicate block +(2^-64^) and grabbing too much entropy from the operating +system (since the first block is discarded). Other obvious block +sizes that could be used are 128 and 256 bits. + +The initial block of data must be zeroed and discarded after it is +used. + +##### GCM IV {#gcm-iv} + + +A recent update to +[FIPS 140-2 IG](https://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/fips140-2/fips1402ig.pdf) +A.5 states that justification is required if the module claims to +generate a random IV for GCM. We would need to substantiate that the +module can obtain the required 96 bits of entropy from the operating +system. This should not be an insurmountable problem if the blocking +calls to the operating system's randomness source are used and at +least this amount is used as seed material for the DRBGs. + +### FIPS Module Boundary {#fips-module-boundary} + +Once in a FIPS module provided algorithm, we must remain within the +FIPS module for any other cryptographic operations. It would be +allowed by the FIPS rules for one FIPS module to use another FIPS +module. However, for the purposes of the 3.0 design we are making the +simplifying assumption that we will not allow this. For example an +`EVP_DigestSign*` implementation uses both a signing algorithm and +digest algorithm. We will not allow one of those algorithms to come +from the FIPS module, and one to come from some other provider. + +All providers are assigned a unique `OSSL_PROVIDER` object when they +are initialised. When the FIPS module is asked to use an algorithm it +will verify that the implementation `OSSL_PROVIDER` object for that +algorithm is the same as its own `OSSL_PROVIDER` object (i.e. the one +that was passed to `OSSL_provider_init`). For example consider the +case of an `EVP_DigestSign*` using RSA and SHA256. Both algorithms +will be looked up externally to the FIPS module using the +Core. The RSA signing algorithm is the first entry point and the +"init" call will be passed references to the SHA256 algorithm to be +used. The FIPS module implementation will check that the +`OSSL_PROVIDER` object associated that the SHA256 implementation that +it has been asked to use is also within the FIPS module boundary. If +it is not then the "init" operation will fail. This is illustrated in +the diagram below, which shows this operation from the perspective of +the FIPS module. + +![](images/DigestSignFIPSModulePerspective.png) + +Note that within the FIPS module we are using EVP concepts +(EVP_MD_CTX, EVP_PKEY_CTX, etc) in order to implement this. These are +**copies** of the EVP implementation found in libcrypto. The FIPS +module is **not** linked against libcrypto. This is to ensure that the +complete operation stays within the boundary of the FIPS module +without calling code that is external to it. + +### ASN.1 code {#asn.1-code} + +ASN.1 DER (distinguished encoding rules) is used to: + +* serialize **keys **and **parameters** +* serialize **DSA and ECDSA signatures**, which consist of two + values, r and s +* encode the signature digest OBJECT IDENTIFIER (OID) that is placed + in **RSA PKCS #1 padding** +* serialize X.509 certificates and CRLs +* other PDUs, such as PKCS #7/CMS, OCSP, PKCS #12, etc. + +The FIPS module will not have a copy of the ASN.1 DER encoder/parser +and there will be no requirement for any provider to perform ASN.1 +serialization/deserialization for algorithms implemented by OpenSSL. + +All ASN.1 serialization/deserialization will be performed in +libcrypto, with composite-value **key, parameter and signature** +structures crossing the Core/provider boundary as an array of items, +using the public data structure defined in +[Appendix 2 - OpenSSL parameter passing](#appendix-2---openssl-parameter-passing). + +The encoded digest OIDs used for **RSA PKCS #1 padding** will either +be pre-generated (as was done in the old FIPS module using the SHA_DATA macro) +or generated on demand using a simple function that only generates +encoded OIDs for the small set of digests supported by PKCS #1 +padding. These digest OIDs occur in the "OID tree" under a common +node. Verifying the padding will include getting the encoded OID for +the expected digest and comparing the bytes with what occurs in the +padding; no DER parsing/decoding is required. + + + +## Code Maintenance {#code-maintenance} + +### Source code structure/tree clean-up {#source-code-structure-tree-clean-up} + +Cryptographic implementations (`crypto/evp/e_*.c` and most of +`crypto/evp/m_*.c`; essentially any code that defines an `EVP_CIPHER`, +`EVP_MD`, `EVP_PKEY_METHOD`, `EVP_MAC`, or `EVP_KDF`) must move out of +the evp directory. They will all end up being part of one or two +providers, so they should end up in a provider specific sub-tree. + +There will be a new directory `providers/`, where provider specific +code is moved. `providers/build.info` defines exactly what source is +used in what provider module(s). + +### Shared source code {#shared-source-code} + +The FIPS provider module and the default provider will share the same +source, under different conditions, such as different include paths or +different macros being defined (the latter requires added support in +the build system). An example `build.info` that does this: + +``` +PROVIDERS=p_fips p_default + +SOURCE[p_fips]=foo.c +INCLUDE[p_fips]=include/fips + +SOURCE[p_default]=foo.c +INCLUDE[p_default]=include/default +``` + +Or, using macros: + +``` +PROVIDERS=p_fips p_default + +SOURCE[p_fips]=foo.c +DEFINE[p_fips]=FIPS_MODE + +SOURCE[p_default]=foo.c +``` + +Note: some keywords aren't yet part of the `build.info` language. + +### Conditional Code {#conditional-code} + +We need a consistent approach to the compile-time inclusion of +FIPS-specific code, and in some cases the exclusion of code that FIPS +does not permit. + +Compile-time controls will be done via `#ifdef FIPS_MODE`. This +ensures that all relevant files are compiled explicitly for non-FIPS +or for use within the FIPS module. Since every file will be compiled +twice (in the default provider, and in the FIPS module), once with +each setting, there is no benefit to using a run-time if statement +with constant value. (Further, a runtime setting will not always work +(such as when expanding macros like BLOCK_CIPHER_custom, which create +a global variable of function pointers.) + +The build system will support this by building FIPS provider object +files with `-DFIPS_MODE` and default provider object files, which come +from the same source, without the command line define. + +For runtime checks, a test for a TLS connection being in FIPS mode +will be required. This can be done in a generic way by checking the +property query string that is associated with a specific `SSL_CTX` or +`SSL` object, to see if the "fips" property was set. + +## FIPS Testing {#fips-testing} + +The following types of tests are required: + +* CAVS testing for CMVP validated algorithms +* FIPS Test Suite that can run all FIPS module algorithms. +* POST failure testing. + +Acumen will write applications that use libcrypto to gain access to +the FIPS provider via the EVP layer. + +Any special case code needed to return intermediate values (say for +CAVS key generation), to display info (self test states), or change +the normal flow of FIPS module code (e.g - self test failure or +failing a keygen loop that supplies fixed rand values) will be +controlled by embedding callbacks into the FIPS module code. + +It is recommended that this callback code would be conditionally +compiled into the module, since some of the values should not be +returned (e.g- intermediate values in keygen are not supposed to be +output by the FIPS module). + +rand_bytes() will be overridden for tests that require fixed +rand_bytes to be used. + +### FIPS Test callbacks {#fips-test-callbacks} + + +The application can optionally supply a single callback function that +can be used to process values received from the FIPS module. (Multiple +callbacks could be registered if this is required). + +The optional application callback would be of the form: + +``` C +static int fips_test_callback(const char *type, void *arg) +{ + return 1; +} +``` + +The return value can be used to control flow in special cases inside +the FIPS module code. + +The type is passed in from the FIPS module hook. Each different hook +in the FIPS module should have a unique type. The type determines +what the arg param contains (either a struct (e.g- intermediate +values), a name, or int. + +The callback in the FIPS module will be of the form + +``` C +MY_STRUCT data; /* values that need to be returned to the application */ +data.i = 1; +..... +if (FIPS_test_cb != NULL) + FIPS_test_cb(FIPS_TEST_CB_RSA_KEYGEN_GET, (void *)&data); +``` + +### POST Failure Testing and Logging. {#post-failure-testing-and-logging.} + +In order to support the failure of multiple tests all tests will +always be run without early exiting (the failure is just flagged). A +failure status will be returned after all the tests have completed. + +For logging or failure, the args would be: + +``` C +struct { + const char *desc; + const char *state; + const char *fail_reason; +}; +``` + +Where: + +* type is one of "post_integrity", "post_cipher", "post_digest", + "post_signature", "post_drbg", .. +* desc is the identifying name: e.g AES_128_CBC +* state is one of +* "start" - indicates the test is starting +* "corrupt" - if this returns 0 then the test will fail +* "pass" - indicates the test passed +* "fail" - indicates the test failed +* fail_reason - is the specific reason for failure (e.g- unable to + read the integrity module file, or integrity checksum file.) + +### CAVS Testing {#cavs-testing} + +CAVS testing will be performed by the lab. + +However each CAVS tests file could also be sampled and added to the +unit tests. This would mean converting the file data of a single test +into binary data inside a unit test. + +(DRBG_ctr is an example that does this already). + +This will ensure the following: + + + +* The required interfaces will be available to the CAVS tests (some + CAVS tests require access to internals, that are not normally + needed). +* That the algorithm works. +* Coverage. + +We could skip doing this if there is good communication with the lab, +but there may be some extra callback hooks required in the code if the +labs finds missing accessors for internals. + +## Legacy {#legacy} + +### EVP to low level API bridges {#evp-to-low-level-api-bridges} + +There are places where low level API structures are assigned to an `EVP_PKEY` +object. The impact on the public `EVP_PKEY` is that it will have to keep a +pointer to a possible low level structure and the type of that low +level structure must be known internally in `libcrypto`. Any time the +`EVP_PKEY` with such a pointer is used for any computation, it must +check if the low level structure has changed and convert its data to +parameters that can be used with the new providers. + +The exact mechanism to check if the contents of a low level structure +has changed is to be determined. One possibility would be to have a +dirty counter in the low level structure and a copy in the `EVP_PKEY` +structure. The dirty counter gets incremented any time the low level +structure is changed (functions such as `RSA_set0_key` would have to +do the increment), and any time the `EVP_PKEY` is used for +computations, its copy of the counter get checked against the low +level dirty counter, and if they differ, the `EVP_PKEY` provider +parameters get modified with data from the low level structure. + +(yet another idea is to have a callback function placed in the +`EVP_PKEY` by the legacy functions, which does the update of +parameters if it detects that low level changes have been made) + +### EVP method creators {#evp-method-creators} + +There is functionality to create diverse EVP method structures in +OpenSSL 1.1.x, easily found like this: + + +``` +grep EVP_CIPHER_meth util/libcrypto.num +grep EVP_MD_meth util/libcrypto.num +grep EVP_PKEY_meth util/libcrypto.num +``` + +### Associated types {#associated-types} + +The low level APIs are fairly standalone, so all low level API types +will remain unchanged apart from an added dirty flag in some of the +types. Associated `EVP_CIPHER`, `EVP_MD`, `EVP_PKEY_METHOD`, +`EVP_MAC`, or `EVP_KDF` instances are handled separately through the +implementation of dispatch tables in the Legacy provider module (see +below). + + + +## Legacy Provider Module {#legacy-provider-module} + +Some algorithms that are considered "legacy" (an example could be +IDEA) and that have current `EVP_CIPHER`, `EVP_MD`, `EVP_PKEY_METHOD`, +`EVP_MAC`, or `EVP_KDF` implementations will move to a Legacy provider +module rather than our default provider module. + +The methods for the following algorithms will become dispatch tables +in the Legacy provider module: + +1. Blowfish +2. CAST +3. DES (but not 3DES) +4. DSA +5. IDEA +6. MD2 +7. MD4 +8. MDC2 +9. RC2 +10. RC4 +11. RC5 +12. RIPEMD160 +13. SEED +14. Whirlpool + +(note: this is not meant to be an exhaustive list, even though fairly +complete _for the moment_) + +## The ENGINE API {#the-engine-api} + +The whole ENGINE API will be deprecated and removed in the major +release after this one. By then, people will have to have learned how +to create provider modules instead. In the meantime, it will be +transformed into a tool to help implementers to transition from an +ENGINE module implementation to a provider module implementation. + +Because algorithm constructors will be changed to construct dispatch +tables, the ENGINE type will change into a collection of dispatch +tables, and the ENGINE constructor functionality will change to +collect the dispatch tables they get into the given ENGINE. + +Dispatch tables registered this way will get the added property +_engine_ with the ENGINE identity as provider name property. That +will make it possible for `ENGINE_by_id` and similar functionality to +find the correct provider. + +The ENGINE module entry point `bind_engine` will be replaced with the +provider module entry point, and the macro `IMPLEMENT_DYNAMIC_BIND_FN` +will be changed to construct such an entry point. This entry point +will create a provider style ENGINE structure, call the binding +function which will fill it up with dispatch tables using the same +method creation functions it has always used, then register all those +dispatch tables collected in the ENGINE structure just like any +provider module would, using the same method setting functions as +before. + +As with the rest of this release, our goal is source-level +compatibility. + +With OpenSSL 1.1.x and older, it's possible to hook in ENGINE provided +methods to be used instead of the functions built into `libcrypto`, +using functions like `ENGINE_get_default_RSA` and `ENGINE_get_RSA`. +The first of the two needs no modification, while the latter will be +changed to create the old-style methods (such as `RSA_METHOD`) from +the corresponding dispatch table attached to the engine. + +# Appendix 1 - Property Syntax {#appendix-1---property-syntax} + +Property definitions and queries have a well defined syntax. This +section presents this in both eBNF and as railroad diagrams. Okay, +almost eBNF but using regular expression extensions in places. + +![](images/300PropDefinition.png){style="float: right; padding-left: 20px"} + +**Definition** + +``` +Definition + ::= SingleDefinition ( ',' SingleDefinition )* + +SingleDefinition + ::= PropertyName ( '=' Value )? +``` + +
+ +----- + +![](images/300PropQuery.png){style="float: right; padding-left: 20px"} + +**Query** + +``` +Query ::= SingleQuery ( ',' SingleQuery )* + +SingleQuery + ::= '-'? PropertyName + | PropertyName ( '=' | '!=' ) Value ) +``` + +
+ +----- + +![](images/300PropValue.png){style="float: right; padding-left: 20px"} + +**Value** + +``` +Value ::= NumberLiteral + | StringLiteral +``` + +
+ +----- + +![](images/300PropStringLiteral.png){style="float: right; padding-left: 20px"} + +**StringLiteral** + +``` +StringLiteral + ::= QuotedString + | UnquotedString +``` + +
+ +----- + +![](images/300PropQuotedString.png){style="float: right; padding-left: 20px"} + +**QuotedString**[^4] + +``` +QuotedString + ::= '"' [^"]* '"' + | "'" [^']* "'" +``` + +
+ +----- + +![](images/300PropUnquotedString.png){style="float: right; padding-left: 20px"} + +**UnquotedString**[^5] + +``` +UnquotedString + ::= [^{space},]+ +``` + +
+ +----- + +![](images/300PropNumberLiteral.png){style="float: right; padding-left: 20px"} + +**NumberLiteral** + +``` +NumberLiteral + ::= '0' ( [0-7]+ | 'x' [0-9A-Fa-f]+ ) + | '-'? [1-9] [0-9]+ +``` + +
+ +----- + +![](images/300PropPropertyName.png){style="float: right; padding-left: 20px"} + +**PropertyName**[^6] + +``` +PropertyName + ::= [A-Z] [A-Z0-9_]* ( '.' [A-Z] [A-Z0-9_]* )* +``` + +
+ +# Appendix 2 - Parameter Passing {#appendix-2---parameter-passing} + +Core or provider objects are supposed to be opaque to everything +outside, and yet, we will need to be able to get parameters from them, +or to pass parameters to them in a uniform way. We therefore need an +intermediary non-opaque structure to support this. + +The types of data passed need to remain simple: + +* Numbers (integers of arbitrary size) +* Character strings (assume UTF-8 encoding) +* Octet strings (byte arrays of arbitrary size) + +Any parameter that's passing values to a module will need the +following items: + +* An identifier, to indicate what parameter is being passed +* The type of the value (from the list above) +* The size of the value +* The value itself + +Any parameters that are used to request values _from_ a module will +need the following items: + +* An identifier to indicate what is being requested +* The type of the value (from the list above) +* The size of the buffer +* A buffer where the values get filled in +* The resultant output size, to be filled in by the function we ask + for parameters from + +These two structure are similar enough to be expressed as one and the same: + +``` C +typedef struct ossl_param_st { + const char *key; + unsigned char data_type; /* declare what kind of content is sent or + expected */ + void *buffer; /* value being passed in + or out */ + size_t buffer_size; /* buffer size */ + size_t *return_size; /* OPTIONAL: address to + content size */ +} OSSL_PARAM; +``` + +Usage examples: + +``` C + /* passing parameters to a module */ + unsigned char *rsa_n = /* memory allocation */ +#if __BYTE_ORDER == __LITTLE_ENDIAN + size_t rsa_n_size = BN_bn2lebinpad(N, rsa_n, BN_num_bytes(rsa_n)); +#else + size_t rsa_n_size = BN_bn2bin(N, rsa_n); +#endif + struct OSSL_PARAM rsa_params[] = { + { RSA_N, OSSL_PARAM_INTEGER, rsa_n, rsa_n_size, NULL }, + { 0, 0, 0, 0, 0 }, + }; + + EVP_set_params(pkey, rsa_params); + + /* requesting parameters from a module */ + size_t rsa_n_buffer_size = BITS / 2 / 8 + 1; + unsigned char *rsa_n_buffer = + OPENSSL_malloc(rsa_n_size); + size_t rsa_n_size = 0; + OSSL_PARAM rsa_params[] = { + { RSA_N, OSSL_PARAM_INTEGER, rsa_n_buffer, rsa_n_buffer_size, + &rsa_n_size }, + { 0, 0, 0, 0, 0 }, + }; + + EVP_get_params(pkey, rsa_params); + + /* + * Note: we could also have a ctrl functionality: + * EVP_ctrl(pkey, EVP_CTRL_SET_PARAMS, rsa_params); + * EVP_ctrl(pkey, EVP_CTRL_GET_PARAMS, rsa_params); + * + * This would allow other controls using the same API. + * For added flexibility, the signature could be something like: + * + * int EVP_ctrl(EVP_CTX *ctx, int cmd, ...); + */ +``` + +## Data types {#data-types} + + +This specification supports the following parameter types: + + + +* `INTEGER` +* `UNSIGNED_INTEGER` + * These are arbitrary length and may therefore require an + arbitrarily sized buffer. + * The number is stored in native form, i.e. MSB first on big + endian systems and LSB first on little endian systems. This + means that arbitrary native integers can be stored in the + buffer, just make sure that the buffer size is correct and + properly aligned. +* `REAL` + * These store C binary floating point values in their native + format and alignment. +* `UTF8_STRING` + * This type of string is expected to be printable as is. +* `OCTET_STRING` + * When printed, this is expected to become a hexdump. + +We also support pointer variants of the same types (which means that +the `OSSL_PARAM` `buffer` only has to have space for a `void *`). +This use is _fragile_ unless the pointed at values are constant over +time. + +We have macros to declare the type of content in `data_type`: + +``` +#define OSSL_PARAM_INTEGER 1 +#define OSSL_PARAM_UNSIGNED_INTEGER 2 +#define OSSL_PARAM_UTF8_STRING 3 +#define OSSL_PARAM_OCTET_STRING 4 +/* + * This one is combined with one of the above, i.e. to get a string pointer: + * OSSL_PARAM_POINTER | OSSL_PARAM_UTF8_STRING + */ +#define OSSL_PARAM_POINTER 0x80 +``` + +## Implementation details {#implementation-details} + +### Determining the size of the buffer {#determining-the-size-of-the-buffer} + +When requesting parameter values, the caller may choose to assign +`NULL` to `buffer` in one or more parameter structures. The called +getter should answer such a request by filling in the size pointed at +by `return_size` and return, at which point the caller can allocate +appropriately sized buffers and make a second call, at which point the +getter can fill in the buffer with no problem. + +If the programmer wants, `return_size` could be made to point at +`buffer_size` in the same `OSSL_PARAM`. + +## Uses beyond the immediately obvious {#uses-beyond-the-immediately-obvious} + +### CONF / NCONF values as parameters {#conf-nconf-values-as-parameters} + +Configuration values are interesting to providers! And yet, just +passing a CONF pointer between the Core and the provider may not be +feasible, even though it's _currently_ a non-opaque structure. + +Another method could be to make the CONF / NCONF values into +parameters, with a bit of inspiration from git config value names. + +Let's start with imagining a provider configuration along the same +lines as the what the current ENGINE configuration module supports: + +``` +[provider_section] +# Configure provider named "foo" +foo = foo_section +# Configure provider named "bar" +bar = bar_section + +[foo_section] +provider_id = myfoo +module_path = /usr/share/openssl/providers/foo.so +selftests = foo_selftest_section +algorithms = RSA, DSA, DH + +[foo_selftest_section] +doodah = 1 +cookie = 0 +``` + +The Core side provider structure for the provider "foo" could then +answer to these requested parameter keys: + +* `"provider_id"` (value is `"myfoo"`) +* `"module_path"` (value is `"/usr/share/openssl/providers/foo.so"`) +* `"selftests.doodah"` (value is `1`) +* `"selftests.cookie"` (value is `0`) +* `"algorithms"` (value is `"RSA, DSA, DH"`) + +Note that the section names themselves never appear in the parameter +key, but that the key that lead to the section does instead. This is +suggested because OpenSSL allows arbitrarily named section names. + +## The tooth of time {#the-tooth-of-time} + +The parameter structure defined above isn't something that's been +invented on the spot. It's highly inspired from OpenVMS programming +paradigms that have proven stable over time. The actual inspiring +structure is called "item_list_3", which is documented here: +[OpenVMS Programming Concepts Manual, Volume I](https://support.hpe.com/hpsc/doc/public/display?docId=emr_na-c04621447) + +# Appendix 3 - Algorithms {#appendix-3---algorithms} + +The algorithms which are to be included in the FIPS module are: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Requirement + Standard + Compliant[^7] + Notes +
TDES + CBC + FIPS 81 + ? + Refer also to SP 800-67rev2. \ + \ +TDES support being decryption only (from 2020) and banned (from 2025). \ + \ +Limits to data length imposed. +

+Security Policy statement regarding the SP 800-67rev1 transition and limitations will be required. +

+ ECB + FIPS 81 + ? +
AES + CBC + SP 800-38A + ? + All AES cipher modes supporting 128, 192 and 256 bits. +
+ CCM + SP 800-38C + ? + It's likely easier to include all of these than to remove some of them. +
+ CTR + SP 800-38A + ? + +
+ ECB + SP 800-38A + ? + +
+ GCM + SP 800-38D + ? + Changes in IV. Module must generate the IV. +
+ GMAC + SP 800-38D + ? + +
+ XTS + SP 800-38E + ? + See FIPS 140-2 I.G. A.9. Needs key check added. This mode does not support 192 bits. Check added by #7120. +
+ KW + SP 800-38F + ? + Differences from standard but within it. +
+ KWP + SP 800-38F + ? +
Hash + SHA-1 + FIPS 180-4 + ? + +
+ SHA-2 + FIPS 180-4 + ? + 224, 256, 384, 512. +
+ SHA-2 + FIPS 180-4 + ? + 512/224, 512/256. Appear to be compliant. +
+ SHA-3 + FIPS 202 + ? + 224, 256, 384, 512. Appear to be compliant. +
HMAC + SHA-1 + FIPS 198-1 + ? + +
+ SHA-2 + FIPS 198-1 + ? + 224, 256, 384, 512. +
+ SHA-3 + FIPS 198-1 + ? + +
DRBG + AES CTR + SP 800-90A + ? + Issues with SP 800-90C. +

+All comply with SP 800-90A. +

+ Hash + SP 800-90A + ? +
+ HMAC + SP 800-90A + ? +
DRBG + Testing + SP 800-90 + ? + Support DRBG health test as per current version of these standards: A, B & C. +
RSA + + FIPS 186-4 + ? + Refer also to SP 800-56B. PKCS#1.5, PSS, Key pair generation. Modulus size changes. +
+ Key wrap (transport) + SP 800-56B + ? + OAEP. Update to SP 800-56B rev-1 standard. +
DH + KAS + SP 800-56A + ? + Update to SP 800-56A rev-3 standard. +
+ KAS + KASVS + ? + Additional testing to meet ZZonly. CVL/KAS. +
DSA + + FIPS 186-4 + ? + PQG generation & verification, signature generation & verification, key pair generation. +
ECDSA + + FIPS 186-4 + ? + Key pair generation, public key generation, signature generation & verification. +
ECC + KAS + SP 800-56A + ? + B-233, 283, 409, 571; K-233, 283, 409, 571; P-224, 256, 384, 521. Update to SP 800-56A rev-3 standard. +
+ KAS + KASVS + ? + Additional testing to meet ZZonly. CVL/KAS. +
KDF + PBKDF2 + SP 800-132 + ? + Verify conformance with standards. See #6674. +
TLS + PRF + + ? + For TLS 1.2 and 1.3. +
+ RSA + + N/A + These two are not algorithms, they serve as a reminder that the custom code for these in libssl would need to move to libcrypto and then be incorporated into the FIPS module. +
+ CBC + + N/A +
+ + +# Notes {#notes} + +[^1]: The output of the DRBGs are not required to be tested because of + [FIPS 140-2 IG](https://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/fips140-2/fips1402ig.pdf) + 9.8. However, the seed material being fed into the master DRBG + still requires the RCT or stuck bit testing. + +[^2]: The draft guidance has changed. The alternatives are: AES_GMAC, + AES_128_CCM, AES_256_GCM and AES_256_CCM. GMAC is arguably the + simplest of the three and thus might be preferable. + +[^3]: Using a different digest algorithm for HASH and HMAC DRBGs would + obviate the need to test the digest independently. + +[^4]: Quoted strings can contain UTF-8 characters. + +[^5]: Unquoted strings are passed through a lower case conversion and + can only contain ASCII characters. + +[^6]: Property names are case insensitive even though only upper case + is depicted here. + +[^7]: Current from a CMVP perspective. + diff --git a/docs/images/300Component.png b/docs/images/300Component.png new file mode 100644 index 0000000..84d3c3c Binary files /dev/null and b/docs/images/300Component.png differ diff --git a/docs/images/300FIPSStateMachine.png b/docs/images/300FIPSStateMachine.png new file mode 100644 index 0000000..b76a20a Binary files /dev/null and b/docs/images/300FIPSStateMachine.png differ diff --git a/docs/images/300Packaging.png b/docs/images/300Packaging.png new file mode 100644 index 0000000..5674860 Binary files /dev/null and b/docs/images/300Packaging.png differ diff --git a/docs/images/300PropDefinition.png b/docs/images/300PropDefinition.png new file mode 100644 index 0000000..6a5ae38 Binary files /dev/null and b/docs/images/300PropDefinition.png differ diff --git a/docs/images/300PropNumberLiteral.png b/docs/images/300PropNumberLiteral.png new file mode 100644 index 0000000..bf9d7ca Binary files /dev/null and b/docs/images/300PropNumberLiteral.png differ diff --git a/docs/images/300PropPropertyName.png b/docs/images/300PropPropertyName.png new file mode 100644 index 0000000..b8a9e7b Binary files /dev/null and b/docs/images/300PropPropertyName.png differ diff --git a/docs/images/300PropQuery.png b/docs/images/300PropQuery.png new file mode 100644 index 0000000..aa25b07 Binary files /dev/null and b/docs/images/300PropQuery.png differ diff --git a/docs/images/300PropQuotedString.png b/docs/images/300PropQuotedString.png new file mode 100644 index 0000000..c9b776e Binary files /dev/null and b/docs/images/300PropQuotedString.png differ diff --git a/docs/images/300PropStringLiteral.png b/docs/images/300PropStringLiteral.png new file mode 100644 index 0000000..ecd640b Binary files /dev/null and b/docs/images/300PropStringLiteral.png differ diff --git a/docs/images/300PropUnquotedString.png b/docs/images/300PropUnquotedString.png new file mode 100644 index 0000000..a8504b0 Binary files /dev/null and b/docs/images/300PropUnquotedString.png differ diff --git a/docs/images/300PropValue.png b/docs/images/300PropValue.png new file mode 100644 index 0000000..56fd980 Binary files /dev/null and b/docs/images/300PropValue.png differ diff --git a/docs/images/300ProviderCollab.png b/docs/images/300ProviderCollab.png new file mode 100644 index 0000000..3c5f44f Binary files /dev/null and b/docs/images/300ProviderCollab.png differ diff --git a/docs/images/DigestExplicit.png b/docs/images/DigestExplicit.png new file mode 100644 index 0000000..c683440 Binary files /dev/null and b/docs/images/DigestExplicit.png differ diff --git a/docs/images/DigestSignFIPSExplicit.png b/docs/images/DigestSignFIPSExplicit.png new file mode 100644 index 0000000..70b845e Binary files /dev/null and b/docs/images/DigestSignFIPSExplicit.png differ diff --git a/docs/images/DigestSignFIPSModulePerspective.png b/docs/images/DigestSignFIPSModulePerspective.png new file mode 100644 index 0000000..c8cfaee Binary files /dev/null and b/docs/images/DigestSignFIPSModulePerspective.png differ diff --git a/docs/images/ToBeComponent.png b/docs/images/ToBeComponent.png index 91306d7..84d3c3c 100644 Binary files a/docs/images/ToBeComponent.png and b/docs/images/ToBeComponent.png differ diff --git a/docs/images/ToBePackaging.png b/docs/images/ToBePackaging.png index 340cd04..5674860 100644 Binary files a/docs/images/ToBePackaging.png and b/docs/images/ToBePackaging.png differ From levitte at openssl.org Mon Feb 11 21:21:25 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 21:21:25 +0000 Subject: [openssl-commits] [web] master update Message-ID: <1549920085.646731.2846.nullmailer@dev.openssl.org> The branch master has been updated via 2377ab72410b9c117e9a88cecbad83c6a2827220 (commit) via e9ab2edffc56f8a840347ef7c35cc55cc6879744 (commit) from e56baa71b5cc8028e08e8a3027ea9ecf3f27dbd0 (commit) - Log ----------------------------------------------------------------- commit 2377ab72410b9c117e9a88cecbad83c6a2827220 Author: Richard Levitte Date: Mon Feb 11 20:49:51 2019 +0100 Make a general rule for converting markdown to html5 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/114) commit e9ab2edffc56f8a840347ef7c35cc55cc6879744 Author: Richard Levitte Date: Mon Feb 11 20:49:13 2019 +0100 Publish the Strategic Architecture and 3.0.0 Design (draft) documents Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/114) ----------------------------------------------------------------------- Summary of changes: Makefile | 13 ++++++------- docs/index.html | 11 ++++++++++- news/newsflash.txt | 2 ++ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index a8dbae6..37ffb75 100644 --- a/Makefile +++ b/Makefile @@ -43,6 +43,12 @@ SRCLISTS = \ source/old/fips/index.inc \ +.SUFFIXES: .md .html + +.md.html: + @rm -f $@ + ./bin/md-to-html5 $< + all: suball manmaster mancross suball: $(SIMPLE) $(SRCLISTS) @@ -108,13 +114,6 @@ docs/fips.inc: $(wildcard docs/fips/*) bin/mk-filelist @rm -f $@ ./bin/mk-filelist docs/fips fips/ '*' >$@ -docs/OpenSSLStrategicArchitecture.html: docs/OpenSSLStrategicArchitecture.md - @rm -f $@ - ./bin/md-to-html5 $< -docs/OpenSSL300Design.html: docs/OpenSSL300Design.md - @rm -f $@ - ./bin/md-to-html5 $< - news/changelog.inc: news/changelog.txt bin/mk-changelog @rm -f $@ ./bin/mk-changelog $@ diff --git a/docs/index.html b/docs/index.html index 7fcbc9a..1279b6d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -11,6 +11,15 @@

Documentation

+

+ We have a + Strategic + Architecture for the development of OpenSSL from + 3.0.0 and going forward, as well as a + design for 3.0.0 (draft) + specifically. +

+

The frequently-asked questions (FAQ) is available. So is an incomplete list of @@ -37,7 +46,7 @@ It is highly recommended.

-
+q
You are here: Home : Documentation
Sitemap diff --git a/news/newsflash.txt b/news/newsflash.txt index 07229f2..d5d6e56 100644 --- a/news/newsflash.txt +++ b/news/newsflash.txt @@ -4,6 +4,8 @@ # Format is two fields, colon-separated; the first line is the column # headings. URL paths must all be absolute. Date: Item +11-Feb-2019: 3.0.0 Design (draft) is now available +11-Feb-2019: Strategic Architecture for OpenSSL 3.0.0 and beyond is now available 20-Nov-2018: OpenSSL 1.1.1a is now available, including bug and security fixes 20-Nov-2018: OpenSSL 1.1.0j is now available, including bug and security fixes 20-Nov-2018: OpenSSL 1.0.2q is now available, including bug and security fixes From levitte at openssl.org Mon Feb 11 22:03:30 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 22:03:30 +0000 Subject: [openssl-commits] [web] master update Message-ID: <1549922610.556976.30906.nullmailer@dev.openssl.org> The branch master has been updated via f758bad1d2241ae88a3065b974313d78a8978200 (commit) from 2377ab72410b9c117e9a88cecbad83c6a2827220 (commit) - Log ----------------------------------------------------------------- commit f758bad1d2241ae88a3065b974313d78a8978200 Author: Richard Levitte Date: Mon Feb 11 22:41:12 2019 +0100 Stray 'q' begone! Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/web/pull/115) ----------------------------------------------------------------------- Summary of changes: docs/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.html b/docs/index.html index 1279b6d..a0297d0 100644 --- a/docs/index.html +++ b/docs/index.html @@ -46,7 +46,7 @@ It is highly recommended.

-q
+
You are here: Home : Documentation
Sitemap From no-reply at appveyor.com Mon Feb 11 22:48:44 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 11 Feb 2019 22:48:44 +0000 Subject: [openssl-commits] Build failed: openssl master.22356 Message-ID: <20190211224844.1.318A64A6F30F5ACF@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Mon Feb 11 23:13:49 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 11 Feb 2019 23:13:49 +0000 Subject: [openssl-commits] [web] master update Message-ID: <1549926829.989546.30605.nullmailer@dev.openssl.org> The branch master has been updated via 5c98cb9a57ad617454a721aa640cb096e09b5e7b (commit) from f758bad1d2241ae88a3065b974313d78a8978200 (commit) - Log ----------------------------------------------------------------- commit 5c98cb9a57ad617454a721aa640cb096e09b5e7b Author: Richard Levitte Date: Mon Feb 11 23:59:21 2019 +0100 Fix CSS props for code color The 'pre' CSS is enough, we have no need for variants for 'p code', 'li code', 'p pre code' and 'li pre code'... Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/web/pull/116) ----------------------------------------------------------------------- Summary of changes: inc/screen.css | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/inc/screen.css b/inc/screen.css index 9938bcc..29b74b9 100644 --- a/inc/screen.css +++ b/inc/screen.css @@ -1084,27 +1084,27 @@ h3.filename + pre { border-top-right-radius: 0px; } -p code, li code { - display: inline-block; - white-space: no-wrap; - background: #fff; - font-size: .8em; - line-height: 1.5em; - color: #555; - border: 1px solid #ddd; - -webkit-border-radius: 0.4em; - -moz-border-radius: 0.4em; - -ms-border-radius: 0.4em; - -o-border-radius: 0.4em; - border-radius: 0.4em; - padding: 0 .3em; - margin: -1px 0; -} -p pre code, li pre code { - font-size: 1em !important; - background: none; - border: none; -} +//p code, li code { +// display: inline-block; +// white-space: no-wrap; +// background: #fff; +// font-size: .8em; +// line-height: 1.5em; +// color: #555; +// border: 1px solid #ddd; +// -webkit-border-radius: 0.4em; +// -moz-border-radius: 0.4em; +// -ms-border-radius: 0.4em; +// -o-border-radius: 0.4em; +// border-radius: 0.4em; +// padding: 0 .3em; +// margin: -1px 0; +//} +//p pre code, li pre code { +// font-size: 1em !important; +// background: none; +// border: none; +//} .pre-code, html .highlight pre, .highlight code { font-family: Menlo, Monaco, "Andale Mono", "lucida console", "Courier New", monospace !important; From no-reply at appveyor.com Tue Feb 12 02:28:16 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 02:28:16 +0000 Subject: [openssl-commits] Build completed: openssl master.22357 Message-ID: <20190212022816.1.0F3759DE58B157C0@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Tue Feb 12 09:41:46 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 12 Feb 2019 09:41:46 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_0-stable update Message-ID: <1549964506.216018.6539.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_0-stable has been updated via 54a622697eced33a6029fd5e7dd452cfb99bb72e (commit) from 152abc5522d869668f50deeb99cd0d948d0df4c1 (commit) - Log ----------------------------------------------------------------- commit 54a622697eced33a6029fd5e7dd452cfb99bb72e Author: Richard Levitte Date: Mon Feb 11 12:22:02 2019 +0100 crypto/engine/eng_cryptodev.c: fix bignum<->crp conversion bn2crparam() incorrectly delivered a big endian byte string to cryptodev. Using BN_bn2lebinpad() instead of BN_bn2bin() fixes this. crparam2bn() had a hack that avoided this issue in the other direction, but allocated an intermediary chunk of memory to get correct endianness. Using BN_lebin2bn() avoids this allocation. Fixes #8202 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8204) ----------------------------------------------------------------------- Summary of changes: crypto/engine/eng_cryptodev.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/crypto/engine/eng_cryptodev.c b/crypto/engine/eng_cryptodev.c index 5572735..1450fdd 100644 --- a/crypto/engine/eng_cryptodev.c +++ b/crypto/engine/eng_cryptodev.c @@ -1228,14 +1228,14 @@ static int bn2crparam(const BIGNUM *a, struct crparam *crp) crp->crp_p = (caddr_t) b; crp->crp_nbits = bits; - BN_bn2bin(a, b); + BN_bn2lebinpad(a, b, bytes); return (0); } /* Convert a /dev/crypto parameter to a BIGNUM */ static int crparam2bn(struct crparam *crp, BIGNUM *a) { - u_int8_t *pd; + u_int8_t *b; int i, bytes; bytes = (crp->crp_nbits + 7) / 8; @@ -1243,15 +1243,9 @@ static int crparam2bn(struct crparam *crp, BIGNUM *a) if (bytes == 0) return (-1); - if ((pd = OPENSSL_malloc(bytes)) == NULL) - return (-1); - - for (i = 0; i < bytes; i++) - pd[i] = crp->crp_p[bytes - i - 1]; - - BN_bin2bn(pd, bytes, a); - free(pd); + b = (u_int8_t *)crp->crp_p; + BN_lebin2bn(b, bytes, a); return (0); } From pauli at openssl.org Tue Feb 12 11:08:16 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Tue, 12 Feb 2019 11:08:16 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549969696.652026.15578.nullmailer@dev.openssl.org> The branch master has been updated via a40f0f6475711f01d32c4cdc39e54311b7e9c876 (commit) from dff298135b9b8bbaac1f452a219bb446e50728d1 (commit) - Log ----------------------------------------------------------------- commit a40f0f6475711f01d32c4cdc39e54311b7e9c876 Author: Pauli Date: Thu Jan 24 12:15:54 2019 +1000 Add sparse array data type. This commit adds a space and time efficient sparse array data structure. The structure's raw API is wrapped by inline functions which provide type safety. Reviewed-by: Richard Levitte Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8197) ----------------------------------------------------------------------- Summary of changes: crypto/README.sparse_array | 155 +++++++++++++++ crypto/build.info | 4 +- crypto/include/internal/sparse_array.h | 78 ++++++++ crypto/sparse_array.c | 213 +++++++++++++++++++++ doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod | 112 +++++++++++ test/build.info | 6 +- .../{02-test_lhash.t => 02-test_sparse_array.t} | 6 +- test/sparse_array_test.c | 103 ++++++++++ 8 files changed, 671 insertions(+), 6 deletions(-) create mode 100644 crypto/README.sparse_array create mode 100644 crypto/include/internal/sparse_array.h create mode 100644 crypto/sparse_array.c create mode 100644 doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod copy test/recipes/{02-test_lhash.t => 02-test_sparse_array.t} (63%) create mode 100644 test/sparse_array_test.c diff --git a/crypto/README.sparse_array b/crypto/README.sparse_array new file mode 100644 index 0000000..947c34d --- /dev/null +++ b/crypto/README.sparse_array @@ -0,0 +1,155 @@ +The sparse_array.c file contains an implementation of a sparse array that +attempts to be both space and time efficient. + +The sparse array is represented using a tree structure. Each node in the +tree contains a block of pointers to either the user supplied leaf values or +to another node. + +There are a number of parameters used to define the block size: + + OPENSSL_SA_BLOCK_BITS Specifies the number of bits covered by each block + SA_BLOCK_MAX Specifies the number of pointers in each block + SA_BLOCK_MASK Specifies a bit mask to perform modulo block size + SA_BLOCK_MAX_LEVELS Indicates the maximum possible height of the tree + +These constants are inter-related: + SA_BLOCK_MAX = 2 ^ OPENSSL_SA_BLOCK_BITS + SA_BLOCK_MASK = SA_BLOCK_MAX - 1 + SA_BLOCK_MAX_LEVELS = number of bits in size_t divided by + OPENSSL_SA_BLOCK_BITS rounded up to the next multiple + of OPENSSL_SA_BLOCK_BITS + +OPENSSL_SA_BLOCK_BITS can be defined at compile time and this overrides the +built in setting. + +As a space and performance optimisation, the height of the tree is usually +less than the maximum possible height. Only sufficient height is allocated to +accommodate the largest index added to the data structure. + +The largest index used to add a value to the array determines the tree height: + + +----------------------+---------------------+ + | Largest Added Index | Height of Tree | + +----------------------+---------------------+ + | SA_BLOCK_MAX - 1 | 1 | + | SA_BLOCK_MAX ^ 2 - 1 | 2 | + | SA_BLOCK_MAX ^ 3 - 1 | 3 | + | ... | ... | + | size_t max | SA_BLOCK_MAX_LEVELS | + +----------------------+---------------------+ + +The tree height is dynamically increased as needed based on additions. + +An empty tree is represented by a NULL root pointer. Inserting a value at +index 0 results in the allocation of a top level node full of null pointers +except for the single pointer to the user's data (N = SA_BLOCK_MAX for +breviety): + + +----+ + |Root| + |Node| + +-+--+ + | + | + | + v + +-+-+---+---+---+---+ + | 0 | 1 | 2 |...|N-1| + | |nil|nil|...|nil| + +-+-+---+---+---+---+ + | + | + | + v + +-+--+ + |User| + |Data| + +----+ + Index 0 + + +Inserting at element 2N+1 creates a new root node and pushes down the old root +node. It then creates a second second level node to hold the pointer to the +user's new data: + + +----+ + |Root| + |Node| + +-+--+ + | + | + | + v + +-+-+---+---+---+---+ + | 0 | 1 | 2 |...|N-1| + | |nil| |...|nil| + +-+-+---+-+-+---+---+ + | | + | +------------------+ + | | + v v + +-+-+---+---+---+---+ +-+-+---+---+---+---+ + | 0 | 1 | 2 |...|N-1| | 0 | 1 | 2 |...|N-1| + |nil| |nil|...|nil| |nil| |nil|...|nil| + +-+-+---+---+---+---+ +---+-+-+---+---+---+ + | | + | | + | | + v v + +-+--+ +-+--+ + |User| |User| + |Data| |Data| + +----+ +----+ + Index 0 Index 2N+1 + + +The nodes themselves are allocated in a sparse manner. Only nodes which exist +along a path from the root of the tree to an added leaf will be allocated. +The complexity is hidden and nodes are allocated on an as needed basis. +Because the data is expected to be sparse this doesn't result in a large waste +of space. + +Values can be removed from the sparse array by setting their index position to +NULL. The data structure does not attempt to reclaim nodes or reduce the +height of the tree on removal. For example, now setting index 0 to NULL would +result in: + + +----+ + |Root| + |Node| + +-+--+ + | + | + | + v + +-+-+---+---+---+---+ + | 0 | 1 | 2 |...|N-1| + | |nil| |...|nil| + +-+-+---+-+-+---+---+ + | | + | +------------------+ + | | + v v + +-+-+---+---+---+---+ +-+-+---+---+---+---+ + | 0 | 1 | 2 |...|N-1| | 0 | 1 | 2 |...|N-1| + |nil|nil|nil|...|nil| |nil| |nil|...|nil| + +---+---+---+---+---+ +---+-+-+---+---+---+ + | + | + | + v + +-+--+ + |User| + |Data| + +----+ + Index 2N+1 + + +Accesses to elements in the sparse array take O(log n) time where n is the +largest element. The base of the logarithm is SA_BLOCK_MAX, so for moderately +small indices (e.g. NIDs), single level (constant time) access is achievable. +Space usage is O(minimum(m, n log(n)) where m is the number of elements in the +array. + +Note: sparse arrays only include pointers to types. Thus, SPARSE_ARRAY_OF(char) +can be used to store a string. diff --git a/crypto/build.info b/crypto/build.info index 5e879ea..3b67315 100644 --- a/crypto/build.info +++ b/crypto/build.info @@ -12,8 +12,8 @@ SOURCE[../libcrypto]=\ cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c cpt_err.c \ ebcdic.c uid.c o_time.c o_str.c o_dir.c o_fopen.c ctype.c \ threads_pthread.c threads_win.c threads_none.c getenv.c \ - o_init.c o_fips.c mem_sec.c init.c {- $target{cpuid_asm_src} -} \ - {- $target{uplink_aux_src} -} + o_init.c o_fips.c mem_sec.c init.c sparse_array.c \ + {- $target{cpuid_asm_src} -} {- $target{uplink_aux_src} -} DEPEND[cversion.o]=buildinf.h GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(LIB_CFLAGS) $(CPPFLAGS_Q)" "$(PLATFORM)" diff --git a/crypto/include/internal/sparse_array.h b/crypto/include/internal/sparse_array.h new file mode 100644 index 0000000..bf0a996 --- /dev/null +++ b/crypto/include/internal/sparse_array.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SPARSE_ARRAY_H +# define HEADER_SPARSE_ARRAY_H + +# ifdef __cplusplus +extern "C" { +# endif + +# define SPARSE_ARRAY_OF(type) struct sparse_array_st_ ## type + +# define DEFINE_SPARSE_ARRAY_OF(type) \ + SPARSE_ARRAY_OF(type); \ + static ossl_inline SPARSE_ARRAY_OF(type) * \ + ossl_sa_##type##_new(void) \ + { \ + return (SPARSE_ARRAY_OF(type) *)OPENSSL_SA_new(); \ + } \ + static ossl_inline void ossl_sa_##type##_free(SPARSE_ARRAY_OF(type) *sa) \ + { \ + OPENSSL_SA_free((OPENSSL_SA *)sa); \ + } \ + static ossl_inline void ossl_sa_##type##_free_leaves(SPARSE_ARRAY_OF(type) *sa) \ + { \ + OPENSSL_SA_free_leaves((OPENSSL_SA *)sa); \ + } \ + static ossl_inline size_t ossl_sa_##type##_num(const SPARSE_ARRAY_OF(type) *sa) \ + { \ + return OPENSSL_SA_num((OPENSSL_SA *)sa); \ + } \ + static ossl_inline void ossl_sa_##type##_doall(const SPARSE_ARRAY_OF(type) *sa, \ + void (*leaf)(type *)) \ + { \ + OPENSSL_SA_doall((OPENSSL_SA *)sa, (void (*)(void *))leaf); \ + } \ + static ossl_inline void ossl_sa_##type##_doall_arg(const SPARSE_ARRAY_OF(type) *sa, \ + void (*leaf)(type *, \ + void *),\ + void *arg) \ + { \ + OPENSSL_SA_doall_arg((OPENSSL_SA *)sa, (void (*)(void *, void *))leaf, \ + arg); \ + } \ + static ossl_inline type *ossl_sa_##type##_get(const SPARSE_ARRAY_OF(type) *sa, \ + size_t n) \ + { \ + return (type *)OPENSSL_SA_get((OPENSSL_SA *)sa, n); \ + } \ + static ossl_inline int ossl_sa_##type##_set(SPARSE_ARRAY_OF(type) *sa, \ + size_t n, type *val) \ + { \ + return OPENSSL_SA_set((OPENSSL_SA *)sa, n, (void *)val); \ + } \ + SPARSE_ARRAY_OF(type) + +typedef struct sparse_array_st OPENSSL_SA; +OPENSSL_SA *OPENSSL_SA_new(void); +void OPENSSL_SA_free(OPENSSL_SA *sa); +void OPENSSL_SA_free_leaves(OPENSSL_SA *sa); +size_t OPENSSL_SA_num(const OPENSSL_SA *sa); +void OPENSSL_SA_doall(const OPENSSL_SA *sa, void (*leaf)(void *)); +void OPENSSL_SA_doall_arg(const OPENSSL_SA *sa, void (*leaf)(void *, void *), + void *); +void *OPENSSL_SA_get(const OPENSSL_SA *sa, size_t n); +int OPENSSL_SA_set(OPENSSL_SA *sa, size_t n, void *val); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/crypto/sparse_array.c b/crypto/sparse_array.c new file mode 100644 index 0000000..8b56b25 --- /dev/null +++ b/crypto/sparse_array.c @@ -0,0 +1,213 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include "internal/sparse_array.h" + +/* + * How many bits are used to index each level in the tree structre? + * This setting determines the number of pointers stored in each node of the + * tree used to represent the sparse array. Having more pointers reduces the + * depth of the tree but potentially wastes more memory. That is, this is a + * direct space versus time tradeoff. + * + * The large memory model uses twelve bits which means that the are 4096 + * pointers in each tree node. This is more than sufficient to hold the + * largest defined NID (as of Feb 2019). This means that using a NID to + * index a sparse array becomes a constant time single array look up. + * + * The small memory model uses four bits which means the tree nodes contain + * sixteen pointers. This reduces the amount of unused space significantly + * at a cost in time. + * + * The library builder is also permitted to define other sizes in the closed + * interval [2, sizeof(size_t) * 8]. + */ +#ifndef OPENSSL_SA_BLOCK_BITS +# ifdef OPENSSL_SMALL_FOOTPRINT +# define OPENSSL_SA_BLOCK_BITS 4 +# else +# define OPENSSL_SA_BLOCK_BITS 12 +# endif +#elif OPENSSL_SA_BLOCK_BITS < 2 || OPENSSL_SA_BLOCK_BITS > BN_BITS2 +# error OPENSSL_SA_BLOCK_BITS is out of range +#endif + +/* + * From the number of bits, work out: + * the number of pointers in a tree node; + * a bit mask to quickly extra an index and + * the maximum depth of the tree structure. + */ +#define SA_BLOCK_MAX (1 << OPENSSL_SA_BLOCK_BITS) +#define SA_BLOCK_MASK (SA_BLOCK_MAX - 1) +#define SA_BLOCK_MAX_LEVELS (((int)sizeof(size_t) * 8 \ + + OPENSSL_SA_BLOCK_BITS - 1) \ + / OPENSSL_SA_BLOCK_BITS) + +struct sparse_array_st { + int levels; + size_t top; + size_t nelem; + void **nodes; +}; + +OPENSSL_SA *OPENSSL_SA_new(void) +{ + OPENSSL_SA *res = OPENSSL_zalloc(sizeof(*res)); + + return res; +} + +static void sa_doall(const OPENSSL_SA *sa, void (*node)(void **), + void (*leaf)(void *, void *), void *arg) +{ + int i[SA_BLOCK_MAX_LEVELS]; + void *nodes[SA_BLOCK_MAX_LEVELS]; + int l = 0; + + i[0] = 0; + nodes[0] = sa->nodes; + while (l >= 0) { + const int n = i[l]; + void ** const p = nodes[l]; + + if (n >= SA_BLOCK_MAX) { + if (p != NULL && node != NULL) + (*node)(p); + l--; + } else { + i[l] = n + 1; + if (p != NULL && p[n] != NULL) { + if (l < sa->levels - 1) { + i[++l] = 0; + nodes[l] = p[n]; + } else if (leaf != NULL) { + (*leaf)(p[n], arg); + } + } + } + } +} + +static void sa_free_node(void **p) +{ + OPENSSL_free(p); +} + +static void sa_free_leaf(void *p, void *arg) +{ + OPENSSL_free(p); +} + +void OPENSSL_SA_free(OPENSSL_SA *sa) +{ + sa_doall(sa, &sa_free_node, NULL, NULL); + OPENSSL_free(sa); +} + +void OPENSSL_SA_free_leaves(OPENSSL_SA *sa) +{ + sa_doall(sa, &sa_free_node, &sa_free_leaf, NULL); + OPENSSL_free(sa); +} + +/* Wrap this in a structure to avoid compiler warnings */ +struct trampoline_st { + void (*func)(void *); +}; + +static void trampoline(void *l, void *arg) +{ + ((const struct trampoline_st *)arg)->func(l); +} + +void OPENSSL_SA_doall(const OPENSSL_SA *sa, void (*leaf)(void *)) +{ + struct trampoline_st tramp; + + tramp.func = leaf; + if (sa != NULL) + sa_doall(sa, NULL, &trampoline, &tramp); +} + +void OPENSSL_SA_doall_arg(const OPENSSL_SA *sa, void (*leaf)(void *, void *), + void *arg) +{ + if (sa != NULL) + sa_doall(sa, NULL, leaf, arg); +} + +size_t OPENSSL_SA_num(const OPENSSL_SA *sa) +{ + return sa == NULL ? 0 : sa->nelem; +} + +void *OPENSSL_SA_get(const OPENSSL_SA *sa, size_t n) +{ + int level; + void **p, *r = NULL; + + if (sa == NULL) + return NULL; + + if (n <= sa->top) { + p = sa->nodes; + for (level = sa->levels - 1; p != NULL && level > 0; level--) + p = (void **)p[(n >> (OPENSSL_SA_BLOCK_BITS * level)) + & SA_BLOCK_MASK]; + r = p == NULL ? NULL : p[n & SA_BLOCK_MASK]; + } + return r; +} + +static ossl_inline void **alloc_node(void) +{ + return OPENSSL_zalloc(SA_BLOCK_MAX * sizeof(void *)); +} + +int OPENSSL_SA_set(OPENSSL_SA *sa, size_t posn, void *val) +{ + int i, level = 1; + size_t n = posn; + void **p; + + if (sa == NULL) + return 0; + + for (level = 1; level <= SA_BLOCK_MAX_LEVELS; level++) + if ((n >>= OPENSSL_SA_BLOCK_BITS) == 0) + break; + + for (;sa->levels < level; sa->levels++) { + p = alloc_node(); + if (p == NULL) + return 0; + p[0] = sa->nodes; + sa->nodes = p; + } + if (sa->top < posn) + sa->top = posn; + + p = sa->nodes; + for (level = sa->levels - 1; level > 0; level--) { + i = (posn >> (OPENSSL_SA_BLOCK_BITS * level)) & SA_BLOCK_MASK; + if (p[i] == NULL && (p[i] = alloc_node()) == NULL) + return 0; + p = p[i]; + } + p += posn & SA_BLOCK_MASK; + if (val == NULL && *p != NULL) + sa->nelem--; + else if (val != NULL && *p == NULL) + sa->nelem++; + *p = val; + return 1; +} diff --git a/doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod b/doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod new file mode 100644 index 0000000..146f02d --- /dev/null +++ b/doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod @@ -0,0 +1,112 @@ +=pod + +=head1 NAME + +DEFINE_SPARSE_ARRAY_OF, ossl_sa_TYPE_new, ossl_sa_TYPE_free, +ossl_sa_TYPE_free_leaves, ossl_sa_TYPE_num, ossl_sa_TYPE_doall, +ossl_sa_TYPE_doall_arg, ossl_sa_TYPE_get, ossl_sa_TYPE_set +- sparse array container + +=head1 SYNOPSIS + + #include "internal/sparse_array.h" + + typedef struct sparse_array_st OPENSSL_SA; + + SPARSE_ARRAY_OF(TYPE) + DEFINE_SPARSE_ARRAY_OF(TYPE) + + SPARSE_ARRAY_OF(TYPE) *ossl_sa_TYPE_new(void); + void ossl_sa_TYPE_free(const SPARSE_ARRAY_OF(TYPE) *sa); + void ossl_sa_TYPE_free_leaves(const SPARSE_ARRAY_OF(TYPE) *sa); + int ossl_sa_TYPE_num(const SPARSE_ARRAY_OF(TYPE) *sa); + void ossl_sa_TYPE_doall(const OPENSSL_SA *sa, void (*leaf)(void *)); + void ossl_sa_TYPE_doall_arg(const OPENSSL_SA *sa, void (*leaf)(void *), void *arg); + TYPE *ossl_sa_TYPE_get(const SPARSE_ARRAY_OF(TYPE) *sa, size_t idx); + int ossl_sa_TYPE_set(SPARSE_ARRAY_OF(TYPE) *sa, size_t idx, TYPE *value); + +=head1 DESCRIPTION + +SPARSE_ARRAY_OF() returns the name for a sparse array of the specified +B. DEFINE_STACK_OF() creates set of functions for a sparse array of +B. This will mean that a pointer to type B is stored in each +element of a sparse array, the type is referenced by SPARSE_ARRAY_OF(TYPE) and +each function name begins with I. For example: + + TYPE *ossl_sa_TYPE_get(SPARSE_ARRAY_OF(TYPE) *sa, size_t idx); + +ossl_sa_TYPE_num() returns the number of elements in B or 0 if B is +B. + +ossl_sa_TYPE_get() returns element B in B, where B starts at +zero. If B refers to a value that has not been set then B is +returned. + +ossl_sa_TYPE_set() sets element B in B to B, where B +starts at zero. The sparse array will be resized as required. + +ossl_sa_TYPE_new() allocates a new empty sparse array. + +ossl_sa_TYPE_free() frees up the B structure. It does B free up any +elements of B. After this call B is no longer valid. + +ossl_sa_TYPE_free_leaves() frees up the B structure and all of its +elements. After this call B is no longer valid. + +ossl_sa_TYPE_doall() calls the function B for each element in B in +ascending index order. + +ossl_sa_TYPE_doall_arg() calls the function B for each element in B +in ascending index order. The argument B is passed to each call of +B. + +=head1 NOTES + +Sparse arrays are an internal data structure and should B be used by user +applications. + +Care should be taken when accessing sparse arrays in multi-threaded +environments. The ossl_sa_TYPE_set operation can cause the internal structure +of the sparse array to change which causes race conditions if the sparse array +is accessed in a different thread. + +SPARSE_ARRAY_OF() and DEFINE_SPARSE_ARRAY_OF() are implemented as macros. + +The underlying utility B API should not be used directly. It +defines these functions: OPENSSL_SA_doall, OPENSSL_SA_doall_arg, +OPENSSL_SA_free, OPENSSL_SA_free_leaves, OPENSSL_SA_get, OPENSSL_SA_new, +OPENSSL_SA_num and OPENSSL_SA_set. + +=head1 RETURN VALUES + +ossl_sa_TYPE_num() returns the number of elements in the sparse array or B<0> +if the passed sparse array is B. + +ossl_sa_TYPE_get() returns a pointer to a sparse array element or B if +the element has not be set. + +ossl_sa_TYPE_set() return B<1> on success and B<0> on error. In the latter +case, the elements of the sparse array remain unchanged, although the internal +structures might have. + +ossl_sa_TYPE_new() returns an empty sparse array or B if an error +occurs. + +ossl_sa_TYPE_doall, ossl_sa_TYPE_doall_arg, ossl_sa_TYPE_free() and +ossl_sa_TYPE_free_leaves() do not return values. + +=head1 HISTORY + +This functionality was added to OpenSSL 3.0.0. + +=head1 COPYRIGHT + +Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. Copyright +(c) 2019, Oracle and/or its affiliates. All rights reserved. + +Licensed under the Apache License 2.0 (the "License"). You may not use this +file except in compliance with the License. You can obtain a copy in the file +LICENSE in the source distribution or at +L. + +=cut diff --git a/test/build.info b/test/build.info index 4c29beb..b2b7375 100644 --- a/test/build.info +++ b/test/build.info @@ -30,7 +30,7 @@ IF[{- !$disabled{tests} -}] dhtest enginetest casttest \ bftest ssltest_old dsatest dsa_no_digest_size_test exptest rsa_test \ evp_test evp_extra_test igetest v3nametest v3ext \ - crltest danetest bad_dtls_test lhash_test \ + crltest danetest bad_dtls_test lhash_test sparse_array_test \ conf_include_test \ constant_time_test verify_extra_test clienthellotest \ packettest asynctest secmemtest srptest memleaktest stack_test \ @@ -488,6 +488,10 @@ IF[{- !$disabled{tests} -}] INCLUDE[ctype_internal_test]=.. ../crypto/include ../include DEPEND[ctype_internal_test]=../libcrypto.a libtestutil.a + SOURCE[sparse_array_test]=sparse_array_test.c + INCLUDE[sparse_array_test]=../crypto/include ../include + DEPEND[sparse_array_test]=../libcrypto.a libtestutil.a + SOURCE[siphash_internal_test]=siphash_internal_test.c INCLUDE[siphash_internal_test]=.. ../include ../crypto/include DEPEND[siphash_internal_test]=../libcrypto.a libtestutil.a diff --git a/test/recipes/02-test_lhash.t b/test/recipes/02-test_sparse_array.t similarity index 63% copy from test/recipes/02-test_lhash.t copy to test/recipes/02-test_sparse_array.t index 5f1f1b6..ee4a63e 100644 --- a/test/recipes/02-test_lhash.t +++ b/test/recipes/02-test_sparse_array.t @@ -1,6 +1,6 @@ #! /usr/bin/env perl -# Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. -# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -9,4 +9,4 @@ use OpenSSL::Test::Simple; -simple_test("test_lhash", "lhash_test"); +simple_test("test_sparse_array", "sparse_array_test"); diff --git a/test/sparse_array_test.c b/test/sparse_array_test.c new file mode 100644 index 0000000..295ccb0 --- /dev/null +++ b/test/sparse_array_test.c @@ -0,0 +1,103 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include +#include + +#include +#include + +#include "internal/sparse_array.h" +#include "testutil.h" + +/* The macros below generate unused functions which error out one of the clang + * builds. We disable this check here. + */ +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wunused-function" +#endif + +DEFINE_SPARSE_ARRAY_OF(char); + +static int test_sparse_array(void) +{ + static const struct { + size_t n; + char *v; + } cases[] = { + { 22, "a" }, { 0, "z" }, { 1, "b" }, { 290, "c" }, + { INT_MAX, "m" }, { 6666666, "d" }, { (size_t)-1, "H" }, + { 99, "e" } + }; + SPARSE_ARRAY_OF(char) *sa; + size_t i, j; + int res = 0; + + if (!TEST_ptr(sa = ossl_sa_char_new()) + || !TEST_ptr_null(ossl_sa_char_get(sa, 3)) + || !TEST_ptr_null(ossl_sa_char_get(sa, 0)) + || !TEST_ptr_null(ossl_sa_char_get(sa, UINT_MAX))) + goto err; + + for (i = 0; i < OSSL_NELEM(cases); i++) { + if (!TEST_true(ossl_sa_char_set(sa, cases[i].n, cases[i].v))) { + TEST_note("iteration %zu", i + 1); + goto err; + } + for (j = 0; j <= i; j++) + if (!TEST_str_eq(ossl_sa_char_get(sa, cases[j].n), cases[j].v)) { + TEST_note("iteration %zu / %zu", i + 1, j + 1); + goto err; + } + } + + res = 1; +err: + ossl_sa_char_free(sa); + return res; +} + +static int test_sparse_array_num(void) +{ + static const struct { + size_t num; + size_t n; + char *v; + } cases[] = { + { 1, 22, "a" }, { 2, 1021, "b" }, { 3, 3, "c" }, { 2, 22, NULL }, + { 2, 3, "d" }, { 3, 22, "e" }, { 3, 666, NULL }, { 4, 666, "f" }, + { 3, 3, NULL }, { 2, 22, NULL }, { 1, 666, NULL }, { 2, 64000, "g" }, + { 1, 1021, NULL }, { 0, 64000, NULL }, { 1, 23, "h" }, { 0, 23, NULL } + }; + SPARSE_ARRAY_OF(char) *sa = NULL; + size_t i; + int res = 0; + + if (!TEST_size_t_eq(ossl_sa_char_num(NULL), 0) + || !TEST_ptr(sa = ossl_sa_char_new()) + || !TEST_size_t_eq(ossl_sa_char_num(sa), 0)) + goto err; + for (i = 0; i < OSSL_NELEM(cases); i++) + if (!TEST_true(ossl_sa_char_set(sa, cases[i].n, cases[i].v)) + || !TEST_size_t_eq(ossl_sa_char_num(sa), cases[i].num)) + goto err; + res = 1; +err: + ossl_sa_char_free(sa); + return res; +} + +int setup_tests(void) +{ + ADD_TEST(test_sparse_array); + ADD_TEST(test_sparse_array_num); + return 1; +} From builds at travis-ci.org Tue Feb 12 11:42:20 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 12 Feb 2019 11:42:20 +0000 Subject: [openssl-commits] Broken: openssl/openssl#22974 (master - a40f0f6) In-Reply-To: Message-ID: <5c62b11cb639b_43f9d4dd169cc1917a7@9aa2016c-d928-4a45-8c36-92ef0ae94013.mail> Build Update for openssl/openssl ------------------------------------- Build: #22974 Status: Broken Duration: 22 mins and 12 secs Commit: a40f0f6 (master) Author: Pauli Message: Add sparse array data type. This commit adds a space and time efficient sparse array data structure. The structure's raw API is wrapped by inline functions which provide type safety. Reviewed-by: Richard Levitte Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8197) View the changeset: https://github.com/openssl/openssl/compare/dff298135b9b...a40f0f647571 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/492105455?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 12 17:10:35 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 17:10:35 +0000 Subject: [openssl-commits] Build failed: openssl master.22375 Message-ID: <20190212171035.1.5AB6CFAC2F187C9E@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 12 17:47:52 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 17:47:52 +0000 Subject: [openssl-commits] Build completed: openssl master.22376 Message-ID: <20190212174752.1.293D31048CB53DE9@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 12 17:54:28 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 17:54:28 +0000 Subject: [openssl-commits] Build failed: openssl master.22377 Message-ID: <20190212175428.1.F619DDE88FA39DFB@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Tue Feb 12 18:00:55 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 12 Feb 2019 18:00:55 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549994455.732652.27797.nullmailer@dev.openssl.org> The branch master has been updated via 9a18aae5f21efc59da8b697ad67d5d37b95ab322 (commit) from a40f0f6475711f01d32c4cdc39e54311b7e9c876 (commit) - Log ----------------------------------------------------------------- commit 9a18aae5f21efc59da8b697ad67d5d37b95ab322 Author: Andy Polyakov Date: Mon Feb 11 15:33:43 2019 +0100 AArch64 assembly pack: authenticate return addresses. ARMv8.3 adds pointer authentication extension, which in this case allows to ensure that, when offloaded to stack, return address is same at return as at entry to the subroutine. The new instructions are nops on processors that don't implement the extension, so that the vetification is backward compatible. Reviewed-by: Kurt Roeckx Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8205) ----------------------------------------------------------------------- Summary of changes: crypto/aes/asm/aesv8-armx.pl | 2 ++ crypto/aes/asm/vpaes-armv8.pl | 18 ++++++++++++++++++ crypto/bn/asm/armv8-mont.pl | 4 ++++ crypto/chacha/asm/chacha-armv8.pl | 8 ++++++++ crypto/ec/asm/ecp_nistz256-armv8.pl | 28 +++++++++++++++++++++++++++- crypto/poly1305/asm/poly1305-armv8.pl | 2 ++ crypto/sha/asm/keccak1600-armv8.pl | 14 ++++++++++++++ crypto/sha/asm/sha512-armv8.pl | 2 ++ 8 files changed, 77 insertions(+), 1 deletion(-) diff --git a/crypto/aes/asm/aesv8-armx.pl b/crypto/aes/asm/aesv8-armx.pl index b61bdba..9ab2158 100755 --- a/crypto/aes/asm/aesv8-armx.pl +++ b/crypto/aes/asm/aesv8-armx.pl @@ -262,6 +262,7 @@ $code.=<<___; ${prefix}_set_decrypt_key: ___ $code.=<<___ if ($flavour =~ /64/); + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 ___ @@ -305,6 +306,7 @@ $code.=<<___ if ($flavour !~ /64/); ___ $code.=<<___ if ($flavour =~ /64/); ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret ___ $code.=<<___; diff --git a/crypto/aes/asm/vpaes-armv8.pl b/crypto/aes/asm/vpaes-armv8.pl index 1fce0c5..ece9f20 100755 --- a/crypto/aes/asm/vpaes-armv8.pl +++ b/crypto/aes/asm/vpaes-armv8.pl @@ -255,6 +255,7 @@ _vpaes_encrypt_core: .type vpaes_encrypt,%function .align 4 vpaes_encrypt: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -264,6 +265,7 @@ vpaes_encrypt: st1 {v0.16b}, [$out] ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_encrypt,.-vpaes_encrypt @@ -486,6 +488,7 @@ _vpaes_decrypt_core: .type vpaes_decrypt,%function .align 4 vpaes_decrypt: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -495,6 +498,7 @@ vpaes_decrypt: st1 {v0.16b}, [$out] ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_decrypt,.-vpaes_decrypt @@ -665,6 +669,7 @@ _vpaes_key_preheat: .type _vpaes_schedule_core,%function .align 4 _vpaes_schedule_core: + .inst 0xd503233f // paciasp stp x29, x30, [sp,#-16]! add x29,sp,#0 @@ -829,6 +834,7 @@ _vpaes_schedule_core: eor v6.16b, v6.16b, v6.16b // vpxor %xmm6, %xmm6, %xmm6 eor v7.16b, v7.16b, v7.16b // vpxor %xmm7, %xmm7, %xmm7 ldp x29, x30, [sp],#16 + .inst 0xd50323bf // autiasp ret .size _vpaes_schedule_core,.-_vpaes_schedule_core @@ -1041,6 +1047,7 @@ _vpaes_schedule_mangle: .type vpaes_set_encrypt_key,%function .align 4 vpaes_set_encrypt_key: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1056,6 +1063,7 @@ vpaes_set_encrypt_key: ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key @@ -1063,6 +1071,7 @@ vpaes_set_encrypt_key: .type vpaes_set_decrypt_key,%function .align 4 vpaes_set_decrypt_key: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1082,6 +1091,7 @@ vpaes_set_decrypt_key: ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key ___ @@ -1098,6 +1108,7 @@ vpaes_cbc_encrypt: cmp w5, #0 // check direction b.eq vpaes_cbc_decrypt + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -1120,6 +1131,7 @@ vpaes_cbc_encrypt: st1 {v0.16b}, [$ivec] // write ivec ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp .Lcbc_abort: ret .size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt @@ -1127,6 +1139,7 @@ vpaes_cbc_encrypt: .type vpaes_cbc_decrypt,%function .align 4 vpaes_cbc_decrypt: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1168,6 +1181,7 @@ vpaes_cbc_decrypt: ldp d10,d11,[sp],#16 ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_cbc_decrypt,.-vpaes_cbc_decrypt ___ @@ -1177,6 +1191,7 @@ $code.=<<___; .type vpaes_ecb_encrypt,%function .align 4 vpaes_ecb_encrypt: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1210,6 +1225,7 @@ vpaes_ecb_encrypt: ldp d10,d11,[sp],#16 ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_ecb_encrypt,.-vpaes_ecb_encrypt @@ -1217,6 +1233,7 @@ vpaes_ecb_encrypt: .type vpaes_ecb_decrypt,%function .align 4 vpaes_ecb_decrypt: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1250,6 +1267,7 @@ vpaes_ecb_decrypt: ldp d10,d11,[sp],#16 ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_ecb_decrypt,.-vpaes_ecb_decrypt ___ diff --git a/crypto/bn/asm/armv8-mont.pl b/crypto/bn/asm/armv8-mont.pl index 9a8ff6b..c09c783 100755 --- a/crypto/bn/asm/armv8-mont.pl +++ b/crypto/bn/asm/armv8-mont.pl @@ -287,6 +287,7 @@ __bn_sqr8x_mont: cmp $ap,$bp b.ne __bn_mul4x_mont .Lsqr8x_mont: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -1040,6 +1041,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldr x29,[sp],#128 + .inst 0xd50323bf // autiasp ret .size __bn_sqr8x_mont,.-__bn_sqr8x_mont ___ @@ -1063,6 +1065,7 @@ $code.=<<___; .type __bn_mul4x_mont,%function .align 5 __bn_mul4x_mont: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -1496,6 +1499,7 @@ __bn_mul4x_mont: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldr x29,[sp],#128 + .inst 0xd50323bf // autiasp ret .size __bn_mul4x_mont,.-__bn_mul4x_mont ___ diff --git a/crypto/chacha/asm/chacha-armv8.pl b/crypto/chacha/asm/chacha-armv8.pl index 20cd707..cee787d 100755 --- a/crypto/chacha/asm/chacha-armv8.pl +++ b/crypto/chacha/asm/chacha-armv8.pl @@ -157,6 +157,7 @@ ChaCha20_ctr32: b.ne ChaCha20_neon .Lshort: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-96]! add x29,sp,#0 @@ -276,6 +277,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 + .inst 0xd50323bf // autiasp .Labort: ret @@ -332,6 +334,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 + .inst 0xd50323bf // autiasp ret .size ChaCha20_ctr32,.-ChaCha20_ctr32 ___ @@ -377,6 +380,7 @@ $code.=<<___; .type ChaCha20_neon,%function .align 5 ChaCha20_neon: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-96]! add x29,sp,#0 @@ -575,6 +579,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 + .inst 0xd50323bf // autiasp ret .Ltail_neon: @@ -684,6 +689,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 + .inst 0xd50323bf // autiasp ret .size ChaCha20_neon,.-ChaCha20_neon ___ @@ -696,6 +702,7 @@ $code.=<<___; .type ChaCha20_512_neon,%function .align 5 ChaCha20_512_neon: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-96]! add x29,sp,#0 @@ -1114,6 +1121,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 + .inst 0xd50323bf // autiasp ret .size ChaCha20_512_neon,.-ChaCha20_512_neon ___ diff --git a/crypto/ec/asm/ecp_nistz256-armv8.pl b/crypto/ec/asm/ecp_nistz256-armv8.pl index 87364e8..d84f523 100644 --- a/crypto/ec/asm/ecp_nistz256-armv8.pl +++ b/crypto/ec/asm/ecp_nistz256-armv8.pl @@ -119,6 +119,7 @@ $code.=<<___; .type ecp_nistz256_to_mont,%function .align 6 ecp_nistz256_to_mont: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -134,6 +135,7 @@ ecp_nistz256_to_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_to_mont,.-ecp_nistz256_to_mont @@ -142,6 +144,7 @@ ecp_nistz256_to_mont: .type ecp_nistz256_from_mont,%function .align 4 ecp_nistz256_from_mont: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -157,6 +160,7 @@ ecp_nistz256_from_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_from_mont,.-ecp_nistz256_from_mont @@ -166,6 +170,7 @@ ecp_nistz256_from_mont: .type ecp_nistz256_mul_mont,%function .align 4 ecp_nistz256_mul_mont: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -180,6 +185,7 @@ ecp_nistz256_mul_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont @@ -188,6 +194,7 @@ ecp_nistz256_mul_mont: .type ecp_nistz256_sqr_mont,%function .align 4 ecp_nistz256_sqr_mont: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -201,6 +208,7 @@ ecp_nistz256_sqr_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont @@ -210,6 +218,7 @@ ecp_nistz256_sqr_mont: .type ecp_nistz256_add,%function .align 4 ecp_nistz256_add: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -223,6 +232,7 @@ ecp_nistz256_add: bl __ecp_nistz256_add ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_add,.-ecp_nistz256_add @@ -231,6 +241,7 @@ ecp_nistz256_add: .type ecp_nistz256_div_by_2,%function .align 4 ecp_nistz256_div_by_2: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -242,6 +253,7 @@ ecp_nistz256_div_by_2: bl __ecp_nistz256_div_by_2 ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_div_by_2,.-ecp_nistz256_div_by_2 @@ -250,6 +262,7 @@ ecp_nistz256_div_by_2: .type ecp_nistz256_mul_by_2,%function .align 4 ecp_nistz256_mul_by_2: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -265,6 +278,7 @@ ecp_nistz256_mul_by_2: bl __ecp_nistz256_add // ret = a+a // 2*a ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_mul_by_2,.-ecp_nistz256_mul_by_2 @@ -273,6 +287,7 @@ ecp_nistz256_mul_by_2: .type ecp_nistz256_mul_by_3,%function .align 4 ecp_nistz256_mul_by_3: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -299,6 +314,7 @@ ecp_nistz256_mul_by_3: bl __ecp_nistz256_add // ret += a // 2*a+a=3*a ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_mul_by_3,.-ecp_nistz256_mul_by_3 @@ -308,6 +324,7 @@ ecp_nistz256_mul_by_3: .type ecp_nistz256_sub,%function .align 4 ecp_nistz256_sub: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -319,6 +336,7 @@ ecp_nistz256_sub: bl __ecp_nistz256_sub_from ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_sub,.-ecp_nistz256_sub @@ -327,6 +345,7 @@ ecp_nistz256_sub: .type ecp_nistz256_neg,%function .align 4 ecp_nistz256_neg: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -341,6 +360,7 @@ ecp_nistz256_neg: bl __ecp_nistz256_sub_from ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_neg,.-ecp_nistz256_neg @@ -701,6 +721,7 @@ $code.=<<___; .type ecp_nistz256_point_double,%function .align 5 ecp_nistz256_point_double: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -835,6 +856,7 @@ ecp_nistz256_point_double: ldp x19,x20,[x29,#16] ldp x21,x22,[x29,#32] ldp x29,x30,[sp],#80 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_double,.-ecp_nistz256_point_double ___ @@ -857,6 +879,7 @@ $code.=<<___; .type ecp_nistz256_point_add,%function .align 5 ecp_nistz256_point_add: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -1094,12 +1117,13 @@ $code.=<<___; stp $acc2,$acc3,[$rp_real,#$i+16] .Ladd_done: - add sp,x29,#0 // destroy frame + add sp,x29,#0 // destroy frame ldp x19,x20,[x29,#16] ldp x21,x22,[x29,#32] ldp x23,x24,[x29,#48] ldp x25,x26,[x29,#64] ldp x29,x30,[sp],#80 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_add,.-ecp_nistz256_point_add ___ @@ -1121,6 +1145,7 @@ $code.=<<___; .type ecp_nistz256_point_add_affine,%function .align 5 ecp_nistz256_point_add_affine: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -1309,6 +1334,7 @@ $code.=<<___; ldp x23,x24,[x29,#48] ldp x25,x26,[x29,#64] ldp x29,x30,[sp],#80 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_add_affine,.-ecp_nistz256_point_add_affine ___ diff --git a/crypto/poly1305/asm/poly1305-armv8.pl b/crypto/poly1305/asm/poly1305-armv8.pl index 31b3110..1aded5a 100755 --- a/crypto/poly1305/asm/poly1305-armv8.pl +++ b/crypto/poly1305/asm/poly1305-armv8.pl @@ -291,6 +291,7 @@ poly1305_blocks_neon: cbz $is_base2_26,poly1305_blocks .Lblocks_neon: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 @@ -859,6 +860,7 @@ poly1305_blocks_neon: st1 {$ACC4}[0],[$ctx] .Lno_data_neon: + .inst 0xd50323bf // autiasp ldr x29,[sp],#80 ret .size poly1305_blocks_neon,.-poly1305_blocks_neon diff --git a/crypto/sha/asm/keccak1600-armv8.pl b/crypto/sha/asm/keccak1600-armv8.pl index 7baf046..bd15a52 100755 --- a/crypto/sha/asm/keccak1600-armv8.pl +++ b/crypto/sha/asm/keccak1600-armv8.pl @@ -121,6 +121,7 @@ $code.=<<___; .align 5 KeccakF1600_int: adr $C[2],iotas + .inst 0xd503233f // paciasp stp $C[2],x30,[sp,#16] // 32 bytes on top are mine b .Loop .align 4 @@ -292,12 +293,14 @@ $code.=<<___; bne .Loop ldr x30,[sp,#24] + .inst 0xd50323bf // autiasp ret .size KeccakF1600_int,.-KeccakF1600_int .type KeccakF1600,%function .align 5 KeccakF1600: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -347,6 +350,7 @@ KeccakF1600: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#128 + .inst 0xd50323bf // autiasp ret .size KeccakF1600,.-KeccakF1600 @@ -354,6 +358,7 @@ KeccakF1600: .type SHA3_absorb,%function .align 5 SHA3_absorb: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -451,6 +456,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#128 + .inst 0xd50323bf // autiasp ret .size SHA3_absorb,.-SHA3_absorb ___ @@ -461,6 +467,7 @@ $code.=<<___; .type SHA3_squeeze,%function .align 5 SHA3_squeeze: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-48]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -523,6 +530,7 @@ SHA3_squeeze: ldp x19,x20,[sp,#16] ldp x21,x22,[sp,#32] ldp x29,x30,[sp],#48 + .inst 0xd50323bf // autiasp ret .size SHA3_squeeze,.-SHA3_squeeze ___ @@ -641,6 +649,7 @@ KeccakF1600_ce: .type KeccakF1600_cext,%function .align 5 KeccakF1600_cext: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp d8,d9,[sp,#16] // per ABI requirement @@ -673,6 +682,7 @@ $code.=<<___; ldp d12,d13,[sp,#48] ldp d14,d15,[sp,#64] ldr x29,[sp],#80 + .inst 0xd50323bf // autiasp ret .size KeccakF1600_cext,.-KeccakF1600_cext ___ @@ -685,6 +695,7 @@ $code.=<<___; .type SHA3_absorb_cext,%function .align 5 SHA3_absorb_cext: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp d8,d9,[sp,#16] // per ABI requirement @@ -756,6 +767,7 @@ $code.=<<___; ldp d12,d13,[sp,#48] ldp d14,d15,[sp,#64] ldp x29,x30,[sp],#80 + .inst 0xd50323bf // autiasp ret .size SHA3_absorb_cext,.-SHA3_absorb_cext ___ @@ -767,6 +779,7 @@ $code.=<<___; .type SHA3_squeeze_cext,%function .align 5 SHA3_squeeze_cext: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 mov x9,$ctx @@ -822,6 +835,7 @@ SHA3_squeeze_cext: .Lsqueeze_done_ce: ldr x29,[sp],#16 + .inst 0xd50323bf // autiasp ret .size SHA3_squeeze_cext,.-SHA3_squeeze_cext ___ diff --git a/crypto/sha/asm/sha512-armv8.pl b/crypto/sha/asm/sha512-armv8.pl index c787ea8..6540a9f 100644 --- a/crypto/sha/asm/sha512-armv8.pl +++ b/crypto/sha/asm/sha512-armv8.pl @@ -219,6 +219,7 @@ $code.=<<___ if ($SZ==8); ___ $code.=<<___; #endif + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 @@ -280,6 +281,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#128 + .inst 0xd50323bf // autiasp ret .size $func,.-$func From builds at travis-ci.org Tue Feb 12 18:20:54 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 12 Feb 2019 18:20:54 +0000 Subject: [openssl-commits] Still Failing: openssl/openssl#22983 (master - 9a18aae) In-Reply-To: Message-ID: <5c630e859dadf_43fc5dbf164a04529d9@ac0b134c-0dbe-41cc-8da9-6b8e0b6657d2.mail> Build Update for openssl/openssl ------------------------------------- Build: #22983 Status: Still Failing Duration: 19 mins and 6 secs Commit: 9a18aae (master) Author: Andy Polyakov Message: AArch64 assembly pack: authenticate return addresses. ARMv8.3 adds pointer authentication extension, which in this case allows to ensure that, when offloaded to stack, return address is same at return as at entry to the subroutine. The new instructions are nops on processors that don't implement the extension, so that the vetification is backward compatible. Reviewed-by: Kurt Roeckx Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8205) View the changeset: https://github.com/openssl/openssl/compare/a40f0f647571...9a18aae5f21e View the full build log and details: https://travis-ci.org/openssl/openssl/builds/492295430?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 12 18:58:22 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 18:58:22 +0000 Subject: [openssl-commits] Build completed: openssl master.22378 Message-ID: <20190212185822.1.82C5F852F64EAF92@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Tue Feb 12 19:08:21 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 12 Feb 2019 19:08:21 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1549998501.675224.6041.nullmailer@dev.openssl.org> The branch master has been updated via c703a808a1394fea7f77067db20c9508e6964d0b (commit) via c244aa7bdac4eb26504b68e430557ed3e5a12ae9 (commit) via 2afebe0bab5e03c9ae1555fd79044940245d7235 (commit) from 9a18aae5f21efc59da8b697ad67d5d37b95ab322 (commit) - Log ----------------------------------------------------------------- commit c703a808a1394fea7f77067db20c9508e6964d0b Author: Eneas U de Queiroz Date: Tue Feb 12 10:44:19 2019 -0200 eng_devcrypto.c: close open session on init cipher_init may be called on an already initialized context, without a necessary cleanup. This separates cleanup from initialization, closing an eventual open session before creating a new one. Signed-off-by: Eneas U de Queiroz Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/7859) commit c244aa7bdac4eb26504b68e430557ed3e5a12ae9 Author: Eneas U de Queiroz Date: Thu Nov 8 11:07:44 2018 -0200 CHANGES: add note about building devcrypto dynamic Signed-off-by: Eneas U de Queiroz Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/7859) commit 2afebe0bab5e03c9ae1555fd79044940245d7235 Author: Eneas U de Queiroz Date: Tue Nov 6 10:57:03 2018 -0200 e_devcrypto: make the /dev/crypto engine dynamic Engine has been moved from crypto/engine/eng_devcrypto.c to engines/e_devcrypto.c. Signed-off-by: Eneas U de Queiroz Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/7859) ----------------------------------------------------------------------- Summary of changes: CHANGES | 3 + crypto/engine/build.info | 3 - crypto/init.c | 34 ++--- engines/build.info | 13 ++ .../eng_devcrypto.c => engines/e_devcrypto.c | 160 ++++++++++++++------- 5 files changed, 144 insertions(+), 69 deletions(-) rename crypto/engine/eng_devcrypto.c => engines/e_devcrypto.c (94%) diff --git a/CHANGES b/CHANGES index 9d712f0..02258ce 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,9 @@ Changes between 1.1.1 and 3.0.0 [xx XXX xxxx] + *) Build devcrypto engine as a dynamic engine. + [Eneas U de Queiroz] + *) Add keyed BLAKE2 to EVP_MAC. [Antoine Salon] diff --git a/crypto/engine/build.info b/crypto/engine/build.info index e00802a..47fe948 100644 --- a/crypto/engine/build.info +++ b/crypto/engine/build.info @@ -6,6 +6,3 @@ SOURCE[../../libcrypto]=\ tb_cipher.c tb_digest.c tb_pkmeth.c tb_asnmth.c tb_eckey.c \ eng_openssl.c eng_cnf.c eng_dyn.c \ eng_rdrand.c -IF[{- !$disabled{devcryptoeng} -}] - SOURCE[../../libcrypto]=eng_devcrypto.c -ENDIF diff --git a/crypto/init.c b/crypto/init.c index 22d28a9..ddea63a 100644 --- a/crypto/init.c +++ b/crypto/init.c @@ -353,18 +353,6 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_engine_openssl) engine_load_openssl_int(); return 1; } -# ifndef OPENSSL_NO_DEVCRYPTOENG -static CRYPTO_ONCE engine_devcrypto = CRYPTO_ONCE_STATIC_INIT; -DEFINE_RUN_ONCE_STATIC(ossl_init_engine_devcrypto) -{ -# ifdef OPENSSL_INIT_DEBUG - fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_devcrypto: " - "engine_load_devcrypto_int()\n"); -# endif - engine_load_devcrypto_int(); - return 1; -} -# endif # ifndef OPENSSL_NO_RDRAND static CRYPTO_ONCE engine_rdrand = CRYPTO_ONCE_STATIC_INIT; @@ -389,6 +377,18 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_engine_dynamic) return 1; } # ifndef OPENSSL_NO_STATIC_ENGINE +# ifndef OPENSSL_NO_DEVCRYPTOENG +static CRYPTO_ONCE engine_devcrypto = CRYPTO_ONCE_STATIC_INIT; +DEFINE_RUN_ONCE_STATIC(ossl_init_engine_devcrypto) +{ +# ifdef OPENSSL_INIT_DEBUG + fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_devcrypto: " + "engine_load_devcrypto_int()\n"); +# endif + engine_load_devcrypto_int(); + return 1; +} +# endif # if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK) static CRYPTO_ONCE engine_padlock = CRYPTO_ONCE_STATIC_INIT; DEFINE_RUN_ONCE_STATIC(ossl_init_engine_padlock) @@ -747,11 +747,6 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) if ((opts & OPENSSL_INIT_ENGINE_OPENSSL) && !RUN_ONCE(&engine_openssl, ossl_init_engine_openssl)) return 0; -# if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_DEVCRYPTOENG) - if ((opts & OPENSSL_INIT_ENGINE_CRYPTODEV) - && !RUN_ONCE(&engine_devcrypto, ossl_init_engine_devcrypto)) - return 0; -# endif # ifndef OPENSSL_NO_RDRAND if ((opts & OPENSSL_INIT_ENGINE_RDRAND) && !RUN_ONCE(&engine_rdrand, ossl_init_engine_rdrand)) @@ -761,6 +756,11 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) && !RUN_ONCE(&engine_dynamic, ossl_init_engine_dynamic)) return 0; # ifndef OPENSSL_NO_STATIC_ENGINE +# ifndef OPENSSL_NO_DEVCRYPTOENG + if ((opts & OPENSSL_INIT_ENGINE_CRYPTODEV) + && !RUN_ONCE(&engine_devcrypto, ossl_init_engine_devcrypto)) + return 0; +# endif # if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK) if ((opts & OPENSSL_INIT_ENGINE_PADLOCK) && !RUN_ONCE(&engine_padlock, ossl_init_engine_padlock)) diff --git a/engines/build.info b/engines/build.info index 27f1cec..f94e620 100644 --- a/engines/build.info +++ b/engines/build.info @@ -10,6 +10,9 @@ IF[{- !$disabled{"engine"} -}] IF[{- !$disabled{afalgeng} -}] SOURCE[../libcrypto]=e_afalg.c ENDIF + IF[{- !$disabled{"devcryptoeng"} -}] + SOURCE[../libcrypto]=e_devcrypto.c + ENDIF ELSE MODULES{engine}=padlock SOURCE[padlock]=e_padlock.c {- $target{padlock_asm_src} -} @@ -39,6 +42,16 @@ IF[{- !$disabled{"engine"} -}] GENERATE[afalg.ld]=../util/engines.num ENDIF ENDIF + IF[{- !$disabled{"devcryptoeng"} -}] + ENGINES=devcrypto + SOURCE[devcrypto]=e_devcrypto.c + DEPEND[devcrypto]=../libcrypto + INCLUDE[devcrypto]=../include + IF[{- defined $target{shared_defflag} -}] + SHARED_SOURCE[devcrypto]=devcrypto.ld + GENERATE[devcrypto.ld]=../util/engines.num + ENDIF + ENDIF MODULES{noinst,engine}=ossltest dasync SOURCE[dasync]=e_dasync.c diff --git a/crypto/engine/eng_devcrypto.c b/engines/e_devcrypto.c similarity index 94% rename from crypto/engine/eng_devcrypto.c rename to engines/e_devcrypto.c index ec6337d..1d733e5 100644 --- a/crypto/engine/eng_devcrypto.c +++ b/engines/e_devcrypto.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "e_os.h" +#include "../e_os.h" #include #include #include @@ -23,26 +23,26 @@ #include #include -#include "internal/engine.h" - /* #define ENGINE_DEVCRYPTO_DEBUG */ #ifdef CRYPTO_ALGORITHM_MIN # define CHECK_BSD_STYLE_MACROS #endif +#define engine_devcrypto_id "devcrypto" + /* * ONE global file descriptor for all sessions. This allows operations * such as digest session data copying (see digest_copy()), but is also * saner... why re-open /dev/crypto for every session? */ -static int cfd; +static int cfd = -1; #define DEVCRYPTO_REQUIRE_ACCELERATED 0 /* require confirmation of acceleration */ #define DEVCRYPTO_USE_SOFTWARE 1 /* allow software drivers */ #define DEVCRYPTO_REJECT_SOFTWARE 2 /* only disallow confirmed software drivers */ -#define DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS DEVCRYPTO_REJECT_SOFTWARE -static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS; +#define DEVCRYPTO_DEFAULT_USE_SOFTDRIVERS DEVCRYPTO_REJECT_SOFTWARE +static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFTDRIVERS; /* * cipher/digest status & acceleration definitions @@ -66,6 +66,10 @@ struct driver_info_st { char *driver_name; }; +#ifdef OPENSSL_NO_DYNAMIC_ENGINE +void engine_load_devcrypto_int(void); +#endif + /****************************************************************************** * * Ciphers @@ -182,8 +186,13 @@ static int cipher_init(EVP_CIPHER_CTX *ctx, const unsigned char *key, (struct cipher_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx); const struct cipher_data_st *cipher_d = get_cipher_data(EVP_CIPHER_CTX_nid(ctx)); + int sess = cipher_ctx->sess.ses; + + /* close a previous open session */ + if (cipher_ctx->sess.ses != 0 && + ioctl(cfd, CIOCFSESSION, &cipher_ctx->sess.ses) <0) + SYSerr(SYS_F_IOCTL, errno); - memset(&cipher_ctx->sess, 0, sizeof(cipher_ctx->sess)); cipher_ctx->sess.cipher = cipher_d->devcryptoid; cipher_ctx->sess.keylen = cipher_d->keylen; cipher_ctx->sess.key = (void *)key; @@ -325,10 +334,17 @@ static int cipher_ctrl(EVP_CIPHER_CTX *ctx, int type, int p1, void* p2) EVP_CIPHER_CTX *to_ctx = (EVP_CIPHER_CTX *)p2; struct cipher_ctx *cipher_ctx; - if (type == EVP_CTRL_COPY) { - /* when copying the context, a new session needs to be initialized */ + if (type == EVP_CTRL_COPY || type == EVP_CTRL_INIT) { cipher_ctx = (struct cipher_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx); - return (cipher_ctx == NULL) + + if (cipher_ctx == NULL) /* OK for copy, error for init */ + return (type == EVP_CTRL_COPY); + + /* both COPY & INIT need a clean context */ + memset(&cipher_ctx->sess, 0, sizeof(cipher_ctx->sess)); + + /* when copying the context, a new session needs to be open as well */ + return (type == EVP_CTRL_INIT) || cipher_init(to_ctx, cipher_ctx->sess.key, EVP_CIPHER_CTX_iv(ctx), (cipher_ctx->op == COP_ENCRYPT)); } @@ -345,6 +361,7 @@ static int cipher_cleanup(EVP_CIPHER_CTX *ctx) SYSerr(SYS_F_IOCTL, errno); return 0; } + memset(&cipher_ctx->sess, 0, sizeof(cipher_ctx->sess)); return 1; } @@ -414,6 +431,7 @@ static void prepare_cipher_methods(void) || !EVP_CIPHER_meth_set_flags(known_cipher_methods[i], cipher_data[i].flags | EVP_CIPH_CUSTOM_COPY + | EVP_CIPH_CTRL_INIT | EVP_CIPH_FLAG_DEFAULT_ASN1) || !EVP_CIPHER_meth_set_init(known_cipher_methods[i], cipher_init) || !EVP_CIPHER_meth_set_do_cipher(known_cipher_methods[i], @@ -1138,55 +1156,67 @@ static int devcrypto_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void)) * *****/ -static int devcrypto_unload(ENGINE *e) -{ - destroy_all_cipher_methods(); -#ifdef IMPLEMENT_DIGEST - destroy_all_digest_methods(); -#endif - - close(cfd); - - return 1; -} /* - * This engine is always built into libcrypto, so it doesn't offer any - * ability to be dynamically loadable. + * Opens /dev/crypto */ -void engine_load_devcrypto_int() +static int open_devcrypto(void) { - ENGINE *e = NULL; + if (cfd >= 0) + return 1; if ((cfd = open("/dev/crypto", O_RDWR, 0)) < 0) { #ifndef ENGINE_DEVCRYPTO_DEBUG if (errno != ENOENT) #endif fprintf(stderr, "Could not open /dev/crypto: %s\n", strerror(errno)); - return; + return 0; } - if ((e = ENGINE_new()) == NULL - || !ENGINE_set_destroy_function(e, devcrypto_unload)) { - ENGINE_free(e); - /* - * We know that devcrypto_unload() won't be called when one of the - * above two calls have failed, so we close cfd explicitly here to - * avoid leaking resources. - */ - close(cfd); - return; + return 1; +} + +static int close_devcrypto(void) +{ + if (cfd < 0) + return 1; + cfd = -1; + if (close(cfd) == 0) { + fprintf(stderr, "Error closing /dev/crypto: %s\n", strerror(errno)); + return 0; } + return 1; +} - prepare_cipher_methods(); +static int devcrypto_unload(ENGINE *e) +{ + destroy_all_cipher_methods(); #ifdef IMPLEMENT_DIGEST - prepare_digest_methods(); + destroy_all_digest_methods(); #endif - if (!ENGINE_set_id(e, "devcrypto") + close_devcrypto(); + + return 1; +} + +static int bind_devcrypto(ENGINE *e) { + + if (!ENGINE_set_id(e, engine_devcrypto_id) || !ENGINE_set_name(e, "/dev/crypto engine") + || !ENGINE_set_destroy_function(e, devcrypto_unload) || !ENGINE_set_cmd_defns(e, devcrypto_cmds) - || !ENGINE_set_ctrl_function(e, devcrypto_ctrl) + || !ENGINE_set_ctrl_function(e, devcrypto_ctrl)) + return 0; + prepare_cipher_methods(); +#ifdef IMPLEMENT_DIGEST + prepare_digest_methods(); +#endif + + return (ENGINE_set_ciphers(e, devcrypto_ciphers) +#ifdef IMPLEMENT_DIGEST + && ENGINE_set_digests(e, devcrypto_digests) +#endif /* * Asymmetric ciphers aren't well supported with /dev/crypto. Among the BSD * implementations, it seems to only exist in FreeBSD, and regarding the @@ -1209,23 +1239,36 @@ void engine_load_devcrypto_int() */ #if 0 # ifndef OPENSSL_NO_RSA - || !ENGINE_set_RSA(e, devcrypto_rsa) + && ENGINE_set_RSA(e, devcrypto_rsa) # endif # ifndef OPENSSL_NO_DSA - || !ENGINE_set_DSA(e, devcrypto_dsa) + && ENGINE_set_DSA(e, devcrypto_dsa) # endif # ifndef OPENSSL_NO_DH - || !ENGINE_set_DH(e, devcrypto_dh) + && ENGINE_set_DH(e, devcrypto_dh) # endif # ifndef OPENSSL_NO_EC - || !ENGINE_set_EC(e, devcrypto_ec) + && ENGINE_set_EC(e, devcrypto_ec) # endif #endif - || !ENGINE_set_ciphers(e, devcrypto_ciphers) -#ifdef IMPLEMENT_DIGEST - || !ENGINE_set_digests(e, devcrypto_digests) -#endif - ) { + ); +} + +#ifdef OPENSSL_NO_DYNAMIC_ENGINE +/* + * In case this engine is built into libcrypto, then it doesn't offer any + * ability to be dynamically loadable. + */ +void engine_load_devcrypto_int(void) +{ + ENGINE *e = NULL; + + if (!open_devcrypto()) + return; + + if ((e = ENGINE_new()) == NULL + || !bind_devcrypto(e)) { + close_devcrypto(); ENGINE_free(e); return; } @@ -1234,3 +1277,22 @@ void engine_load_devcrypto_int() ENGINE_free(e); /* Loose our local reference */ ERR_clear_error(); } + +#else + +static int bind_helper(ENGINE *e, const char *id) +{ + if ((id && (strcmp(id, engine_devcrypto_id) != 0)) + || !open_devcrypto()) + return 0; + if (!bind_devcrypto(e)) { + close_devcrypto(); + return 0; + } + return 1; +} + +IMPLEMENT_DYNAMIC_CHECK_FN() +IMPLEMENT_DYNAMIC_BIND_FN(bind_helper) + +#endif From no-reply at appveyor.com Tue Feb 12 19:13:14 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 19:13:14 +0000 Subject: [openssl-commits] Build failed: openssl master.22380 Message-ID: <20190212191314.1.6B78E3515462EC60@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 12 19:17:04 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 19:17:04 +0000 Subject: [openssl-commits] Build failed: openssl master.22382 Message-ID: <20190212191704.1.8138E2EC0E3A3F19@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 12 19:20:39 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 19:20:39 +0000 Subject: [openssl-commits] Build failed: openssl master.22384 Message-ID: <20190212192039.1.7F11212F518B59AF@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Tue Feb 12 19:34:46 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 12 Feb 2019 19:34:46 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550000086.284500.27263.nullmailer@dev.openssl.org> The branch master has been updated via 54b5fb2dab8b216c11adfbe6320c27e18a44ffb3 (commit) from c703a808a1394fea7f77067db20c9508e6964d0b (commit) - Log ----------------------------------------------------------------- commit 54b5fb2dab8b216c11adfbe6320c27e18a44ffb3 Author: Richard Levitte Date: Tue Feb 12 19:54:08 2019 +0100 To use BN_BITS2, we'd better include openssl/bn.h Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8212) ----------------------------------------------------------------------- Summary of changes: crypto/sparse_array.c | 1 + 1 file changed, 1 insertion(+) diff --git a/crypto/sparse_array.c b/crypto/sparse_array.c index 8b56b25..b256478 100644 --- a/crypto/sparse_array.c +++ b/crypto/sparse_array.c @@ -9,6 +9,7 @@ */ #include +#include #include "internal/sparse_array.h" /* From builds at travis-ci.org Tue Feb 12 19:20:18 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 12 Feb 2019 19:20:18 +0000 Subject: [openssl-commits] Errored: openssl/openssl#22989 (master - c703a80) In-Reply-To: Message-ID: <5c631c7052268_43fd1395b9efc36749d@8bd95766-45a2-4832-9ded-1c39ab25d216.mail> Build Update for openssl/openssl ------------------------------------- Build: #22989 Status: Errored Duration: 7 mins and 50 secs Commit: c703a80 (master) Author: Eneas U de Queiroz Message: eng_devcrypto.c: close open session on init cipher_init may be called on an already initialized context, without a necessary cleanup. This separates cleanup from initialization, closing an eventual open session before creating a new one. Signed-off-by: Eneas U de Queiroz Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/7859) View the changeset: https://github.com/openssl/openssl/compare/9a18aae5f21e...c703a808a139 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/492325199?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 12 19:38:57 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 19:38:57 +0000 Subject: [openssl-commits] Build failed: openssl master.22386 Message-ID: <20190212193857.1.8C503E189775601F@appveyor.com> An HTML attachment was scrubbed... URL: From builds at travis-ci.org Tue Feb 12 19:40:32 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 12 Feb 2019 19:40:32 +0000 Subject: [openssl-commits] Errored: openssl/openssl#22991 (master - 54b5fb2) In-Reply-To: Message-ID: <5c63212fd6012_43fa3803e575c31568b@5ecc9ff7-7999-4a3f-86dc-1e9fc0753ad8.mail> Build Update for openssl/openssl ------------------------------------- Build: #22991 Status: Errored Duration: 4 mins and 59 secs Commit: 54b5fb2 (master) Author: Richard Levitte Message: To use BN_BITS2, we'd better include openssl/bn.h Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8212) View the changeset: https://github.com/openssl/openssl/compare/c703a808a139...54b5fb2dab8b View the full build log and details: https://travis-ci.org/openssl/openssl/builds/492337649?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 12 19:58:29 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 19:58:29 +0000 Subject: [openssl-commits] Build failed: openssl master.22387 Message-ID: <20190212195829.1.8BC4C26F66D45065@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 12 20:45:05 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 20:45:05 +0000 Subject: [openssl-commits] Build failed: openssl master.22390 Message-ID: <20190212204505.1.8BD9B25DD491B78A@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 12 21:58:59 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 21:58:59 +0000 Subject: [openssl-commits] Build failed: openssl master.22391 Message-ID: <20190212215859.1.057F82A5C6430446@appveyor.com> An HTML attachment was scrubbed... URL: From openssl at openssl.org Tue Feb 12 22:02:15 2019 From: openssl at openssl.org (OpenSSL run-checker) Date: Tue, 12 Feb 2019 22:02:15 +0000 Subject: [openssl-commits] FAILED build of OpenSSL branch master with options -d --strict-warnings Message-ID: <1550008935.356664.21212.nullmailer@run.openssl.org> Platform and configuration command: $ uname -a Linux run 4.4.0-135-generic #161-Ubuntu SMP Mon Aug 27 10:45:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ CC=clang ../openssl/config -d --strict-warnings Commit log since last time: 54b5fb2dab To use BN_BITS2, we'd better include openssl/bn.h c703a808a1 eng_devcrypto.c: close open session on init c244aa7bda CHANGES: add note about building devcrypto dynamic 2afebe0bab e_devcrypto: make the /dev/crypto engine dynamic 9a18aae5f2 AArch64 assembly pack: authenticate return addresses. a40f0f6475 Add sparse array data type. Build log ended with (last 100 lines): $ CC=clang ../openssl/config -d --strict-warnings Operating system: x86_64-whatever-linux2 Configuring OpenSSL version 3.0.0-dev for target linux-x86_64-clang Using os-specific seed configuration Failure! Makefile wasn't produced. Please read INSTALL and associated NOTES files. You may also have to look over your available compiler tool chain or change your configuration. Something wrong with this line: ENGINES=devcrypto at /home/openssl/run-checker/openssl/engines/build.info at ../openssl/Configure line 1887. $ make clean make: *** No rule to make target 'clean'. Stop. From no-reply at appveyor.com Tue Feb 12 22:37:29 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 22:37:29 +0000 Subject: [openssl-commits] Build failed: openssl master.22392 Message-ID: <20190212223729.1.F9C721104C97F13A@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 12 23:28:31 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 12 Feb 2019 23:28:31 +0000 Subject: [openssl-commits] Build failed: openssl master.22393 Message-ID: <20190212232831.1.ABEFCB0F801BB264@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 00:00:35 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 00:00:35 +0000 Subject: [openssl-commits] Build completed: openssl master.22394 Message-ID: <20190213000035.1.AECF9B0C3183824D@appveyor.com> An HTML attachment was scrubbed... URL: From pauli at openssl.org Wed Feb 13 00:57:56 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Wed, 13 Feb 2019 00:57:56 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550019476.732160.25812.nullmailer@dev.openssl.org> The branch master has been updated via e5fee28f0e49fe2e07b2088985eee2d0ffaaf17e (commit) from 54b5fb2dab8b216c11adfbe6320c27e18a44ffb3 (commit) - Log ----------------------------------------------------------------- commit e5fee28f0e49fe2e07b2088985eee2d0ffaaf17e Author: Pauli Date: Wed Feb 13 09:22:36 2019 +1000 Fix typo in comment Reviewed-by: Paul Yang (Merged from https://github.com/openssl/openssl/pull/8218) ----------------------------------------------------------------------- Summary of changes: crypto/sparse_array.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crypto/sparse_array.c b/crypto/sparse_array.c index b256478..9255f9d 100644 --- a/crypto/sparse_array.c +++ b/crypto/sparse_array.c @@ -44,7 +44,7 @@ /* * From the number of bits, work out: * the number of pointers in a tree node; - * a bit mask to quickly extra an index and + * a bit mask to quickly extract an index and * the maximum depth of the tree structure. */ #define SA_BLOCK_MAX (1 << OPENSSL_SA_BLOCK_BITS) From pauli at openssl.org Wed Feb 13 01:00:18 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Wed, 13 Feb 2019 01:00:18 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550019618.724064.26900.nullmailer@dev.openssl.org> The branch master has been updated via 583fd0c1085c6297e3dd632ac588afee723aae5a (commit) from e5fee28f0e49fe2e07b2088985eee2d0ffaaf17e (commit) - Log ----------------------------------------------------------------- commit 583fd0c1085c6297e3dd632ac588afee723aae5a Author: Pauli Date: Wed Feb 13 08:30:49 2019 +1000 Macro typo fix not propagated Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/8217) ----------------------------------------------------------------------- Summary of changes: engines/e_devcrypto.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/e_devcrypto.c b/engines/e_devcrypto.c index 1d733e5..77f0e48 100644 --- a/engines/e_devcrypto.c +++ b/engines/e_devcrypto.c @@ -1048,7 +1048,7 @@ static const ENGINE_CMD_DEFN devcrypto_cmds[] = { OPENSSL_MSTR(DEVCRYPTO_USE_SOFTWARE) "=allow all drivers, " OPENSSL_MSTR(DEVCRYPTO_REJECT_SOFTWARE) "=use if acceleration can't be determined) [default=" - OPENSSL_MSTR(DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS) "]", + OPENSSL_MSTR(DEVCRYPTO_DEFAULT_USE_SOFTDRIVERS) "]", ENGINE_CMD_FLAG_NUMERIC}, #endif From builds at travis-ci.org Wed Feb 13 01:02:36 2019 From: builds at travis-ci.org (Travis CI) Date: Wed, 13 Feb 2019 01:02:36 +0000 Subject: [openssl-commits] Errored: openssl/openssl#23000 (master - e5fee28) In-Reply-To: Message-ID: <5c636cac91f7d_43ffaab6a20bc1091af@a68b7538-3f27-4fb9-a878-5d69ea80e654.mail> Build Update for openssl/openssl ------------------------------------- Build: #23000 Status: Errored Duration: 3 mins and 55 secs Commit: e5fee28 (master) Author: Pauli Message: Fix typo in comment Reviewed-by: Paul Yang (Merged from https://github.com/openssl/openssl/pull/8218) View the changeset: https://github.com/openssl/openssl/compare/54b5fb2dab8b...e5fee28f0e49 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/492472326?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From pauli at openssl.org Wed Feb 13 01:03:49 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Wed, 13 Feb 2019 01:03:49 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550019829.905497.28518.nullmailer@dev.openssl.org> The branch master has been updated via 7f4268bff3cf49b96d25bfd83013ee310c31520b (commit) from 583fd0c1085c6297e3dd632ac588afee723aae5a (commit) - Log ----------------------------------------------------------------- commit 7f4268bff3cf49b96d25bfd83013ee310c31520b Author: Pauli Date: Wed Feb 13 09:30:20 2019 +1000 Fix master build. The recent change from ENGINES to MODULES broke the configure it seems. Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/8219) ----------------------------------------------------------------------- Summary of changes: engines/build.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/build.info b/engines/build.info index f94e620..e493ced 100644 --- a/engines/build.info +++ b/engines/build.info @@ -43,7 +43,7 @@ IF[{- !$disabled{"engine"} -}] ENDIF ENDIF IF[{- !$disabled{"devcryptoeng"} -}] - ENGINES=devcrypto + MODULES=devcrypto SOURCE[devcrypto]=e_devcrypto.c DEPEND[devcrypto]=../libcrypto INCLUDE[devcrypto]=../include From builds at travis-ci.org Wed Feb 13 01:05:51 2019 From: builds at travis-ci.org (Travis CI) Date: Wed, 13 Feb 2019 01:05:51 +0000 Subject: [openssl-commits] Errored: openssl/openssl#23001 (master - 583fd0c) In-Reply-To: Message-ID: <5c636d6e9c7c4_43f992f00fa986785a@9867a58f-53bb-4537-be92-77aa5868c812.mail> Build Update for openssl/openssl ------------------------------------- Build: #23001 Status: Errored Duration: 4 mins and 45 secs Commit: 583fd0c (master) Author: Pauli Message: Macro typo fix not propagated Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/8217) View the changeset: https://github.com/openssl/openssl/compare/e5fee28f0e49...583fd0c1085c View the full build log and details: https://travis-ci.org/openssl/openssl/builds/492473350?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From levitte at openssl.org Wed Feb 13 01:39:44 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 13 Feb 2019 01:39:44 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550021984.446908.869.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 2cf7fd698ec1375421f91338ff8a44e7da5238b6 (commit) from af250b36eb537bc2b185e35e24f187380a98ebb4 (commit) - Log ----------------------------------------------------------------- commit 2cf7fd698ec1375421f91338ff8a44e7da5238b6 Author: Andy Polyakov Date: Mon Feb 11 15:33:43 2019 +0100 AArch64 assembly pack: authenticate return addresses. ARMv8.3 adds pointer authentication extension, which in this case allows to ensure that, when offloaded to stack, return address is same at return as at entry to the subroutine. The new instructions are nops on processors that don't implement the extension, so that the vetification is backward compatible. Reviewed-by: Kurt Roeckx Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8205) (cherry picked from commit 9a18aae5f21efc59da8b697ad67d5d37b95ab322) ----------------------------------------------------------------------- Summary of changes: crypto/aes/asm/aesv8-armx.pl | 2 ++ crypto/aes/asm/vpaes-armv8.pl | 18 ++++++++++++++++++ crypto/bn/asm/armv8-mont.pl | 4 ++++ crypto/chacha/asm/chacha-armv8.pl | 8 ++++++++ crypto/ec/asm/ecp_nistz256-armv8.pl | 28 +++++++++++++++++++++++++++- crypto/poly1305/asm/poly1305-armv8.pl | 2 ++ crypto/sha/asm/keccak1600-armv8.pl | 14 ++++++++++++++ crypto/sha/asm/sha512-armv8.pl | 2 ++ 8 files changed, 77 insertions(+), 1 deletion(-) diff --git a/crypto/aes/asm/aesv8-armx.pl b/crypto/aes/asm/aesv8-armx.pl index 8b37cfc..ffa52ab 100755 --- a/crypto/aes/asm/aesv8-armx.pl +++ b/crypto/aes/asm/aesv8-armx.pl @@ -262,6 +262,7 @@ $code.=<<___; ${prefix}_set_decrypt_key: ___ $code.=<<___ if ($flavour =~ /64/); + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 ___ @@ -305,6 +306,7 @@ $code.=<<___ if ($flavour !~ /64/); ___ $code.=<<___ if ($flavour =~ /64/); ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret ___ $code.=<<___; diff --git a/crypto/aes/asm/vpaes-armv8.pl b/crypto/aes/asm/vpaes-armv8.pl index 5131e13..5758133 100755 --- a/crypto/aes/asm/vpaes-armv8.pl +++ b/crypto/aes/asm/vpaes-armv8.pl @@ -255,6 +255,7 @@ _vpaes_encrypt_core: .type vpaes_encrypt,%function .align 4 vpaes_encrypt: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -264,6 +265,7 @@ vpaes_encrypt: st1 {v0.16b}, [$out] ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_encrypt,.-vpaes_encrypt @@ -486,6 +488,7 @@ _vpaes_decrypt_core: .type vpaes_decrypt,%function .align 4 vpaes_decrypt: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -495,6 +498,7 @@ vpaes_decrypt: st1 {v0.16b}, [$out] ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_decrypt,.-vpaes_decrypt @@ -665,6 +669,7 @@ _vpaes_key_preheat: .type _vpaes_schedule_core,%function .align 4 _vpaes_schedule_core: + .inst 0xd503233f // paciasp stp x29, x30, [sp,#-16]! add x29,sp,#0 @@ -829,6 +834,7 @@ _vpaes_schedule_core: eor v6.16b, v6.16b, v6.16b // vpxor %xmm6, %xmm6, %xmm6 eor v7.16b, v7.16b, v7.16b // vpxor %xmm7, %xmm7, %xmm7 ldp x29, x30, [sp],#16 + .inst 0xd50323bf // autiasp ret .size _vpaes_schedule_core,.-_vpaes_schedule_core @@ -1041,6 +1047,7 @@ _vpaes_schedule_mangle: .type vpaes_set_encrypt_key,%function .align 4 vpaes_set_encrypt_key: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1056,6 +1063,7 @@ vpaes_set_encrypt_key: ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key @@ -1063,6 +1071,7 @@ vpaes_set_encrypt_key: .type vpaes_set_decrypt_key,%function .align 4 vpaes_set_decrypt_key: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1082,6 +1091,7 @@ vpaes_set_decrypt_key: ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key ___ @@ -1098,6 +1108,7 @@ vpaes_cbc_encrypt: cmp w5, #0 // check direction b.eq vpaes_cbc_decrypt + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -1120,6 +1131,7 @@ vpaes_cbc_encrypt: st1 {v0.16b}, [$ivec] // write ivec ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp .Lcbc_abort: ret .size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt @@ -1127,6 +1139,7 @@ vpaes_cbc_encrypt: .type vpaes_cbc_decrypt,%function .align 4 vpaes_cbc_decrypt: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1168,6 +1181,7 @@ vpaes_cbc_decrypt: ldp d10,d11,[sp],#16 ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_cbc_decrypt,.-vpaes_cbc_decrypt ___ @@ -1177,6 +1191,7 @@ $code.=<<___; .type vpaes_ecb_encrypt,%function .align 4 vpaes_ecb_encrypt: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1210,6 +1225,7 @@ vpaes_ecb_encrypt: ldp d10,d11,[sp],#16 ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_ecb_encrypt,.-vpaes_ecb_encrypt @@ -1217,6 +1233,7 @@ vpaes_ecb_encrypt: .type vpaes_ecb_decrypt,%function .align 4 vpaes_ecb_decrypt: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1250,6 +1267,7 @@ vpaes_ecb_decrypt: ldp d10,d11,[sp],#16 ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size vpaes_ecb_decrypt,.-vpaes_ecb_decrypt ___ diff --git a/crypto/bn/asm/armv8-mont.pl b/crypto/bn/asm/armv8-mont.pl index 5d5af1b..ed419c3 100755 --- a/crypto/bn/asm/armv8-mont.pl +++ b/crypto/bn/asm/armv8-mont.pl @@ -287,6 +287,7 @@ __bn_sqr8x_mont: cmp $ap,$bp b.ne __bn_mul4x_mont .Lsqr8x_mont: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -1040,6 +1041,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldr x29,[sp],#128 + .inst 0xd50323bf // autiasp ret .size __bn_sqr8x_mont,.-__bn_sqr8x_mont ___ @@ -1063,6 +1065,7 @@ $code.=<<___; .type __bn_mul4x_mont,%function .align 5 __bn_mul4x_mont: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -1496,6 +1499,7 @@ __bn_mul4x_mont: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldr x29,[sp],#128 + .inst 0xd50323bf // autiasp ret .size __bn_mul4x_mont,.-__bn_mul4x_mont ___ diff --git a/crypto/chacha/asm/chacha-armv8.pl b/crypto/chacha/asm/chacha-armv8.pl index 4a838bc..ae50fc9 100755 --- a/crypto/chacha/asm/chacha-armv8.pl +++ b/crypto/chacha/asm/chacha-armv8.pl @@ -157,6 +157,7 @@ ChaCha20_ctr32: b.ne ChaCha20_neon .Lshort: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-96]! add x29,sp,#0 @@ -276,6 +277,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 + .inst 0xd50323bf // autiasp .Labort: ret @@ -332,6 +334,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 + .inst 0xd50323bf // autiasp ret .size ChaCha20_ctr32,.-ChaCha20_ctr32 ___ @@ -377,6 +380,7 @@ $code.=<<___; .type ChaCha20_neon,%function .align 5 ChaCha20_neon: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-96]! add x29,sp,#0 @@ -575,6 +579,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 + .inst 0xd50323bf // autiasp ret .Ltail_neon: @@ -684,6 +689,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 + .inst 0xd50323bf // autiasp ret .size ChaCha20_neon,.-ChaCha20_neon ___ @@ -696,6 +702,7 @@ $code.=<<___; .type ChaCha20_512_neon,%function .align 5 ChaCha20_512_neon: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-96]! add x29,sp,#0 @@ -1114,6 +1121,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 + .inst 0xd50323bf // autiasp ret .size ChaCha20_512_neon,.-ChaCha20_512_neon ___ diff --git a/crypto/ec/asm/ecp_nistz256-armv8.pl b/crypto/ec/asm/ecp_nistz256-armv8.pl index 1361cb3..d39bbe1 100644 --- a/crypto/ec/asm/ecp_nistz256-armv8.pl +++ b/crypto/ec/asm/ecp_nistz256-armv8.pl @@ -119,6 +119,7 @@ $code.=<<___; .type ecp_nistz256_to_mont,%function .align 6 ecp_nistz256_to_mont: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -134,6 +135,7 @@ ecp_nistz256_to_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_to_mont,.-ecp_nistz256_to_mont @@ -142,6 +144,7 @@ ecp_nistz256_to_mont: .type ecp_nistz256_from_mont,%function .align 4 ecp_nistz256_from_mont: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -157,6 +160,7 @@ ecp_nistz256_from_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_from_mont,.-ecp_nistz256_from_mont @@ -166,6 +170,7 @@ ecp_nistz256_from_mont: .type ecp_nistz256_mul_mont,%function .align 4 ecp_nistz256_mul_mont: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -180,6 +185,7 @@ ecp_nistz256_mul_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont @@ -188,6 +194,7 @@ ecp_nistz256_mul_mont: .type ecp_nistz256_sqr_mont,%function .align 4 ecp_nistz256_sqr_mont: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -201,6 +208,7 @@ ecp_nistz256_sqr_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont @@ -210,6 +218,7 @@ ecp_nistz256_sqr_mont: .type ecp_nistz256_add,%function .align 4 ecp_nistz256_add: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -223,6 +232,7 @@ ecp_nistz256_add: bl __ecp_nistz256_add ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_add,.-ecp_nistz256_add @@ -231,6 +241,7 @@ ecp_nistz256_add: .type ecp_nistz256_div_by_2,%function .align 4 ecp_nistz256_div_by_2: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -242,6 +253,7 @@ ecp_nistz256_div_by_2: bl __ecp_nistz256_div_by_2 ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_div_by_2,.-ecp_nistz256_div_by_2 @@ -250,6 +262,7 @@ ecp_nistz256_div_by_2: .type ecp_nistz256_mul_by_2,%function .align 4 ecp_nistz256_mul_by_2: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -265,6 +278,7 @@ ecp_nistz256_mul_by_2: bl __ecp_nistz256_add // ret = a+a // 2*a ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_mul_by_2,.-ecp_nistz256_mul_by_2 @@ -273,6 +287,7 @@ ecp_nistz256_mul_by_2: .type ecp_nistz256_mul_by_3,%function .align 4 ecp_nistz256_mul_by_3: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -299,6 +314,7 @@ ecp_nistz256_mul_by_3: bl __ecp_nistz256_add // ret += a // 2*a+a=3*a ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_mul_by_3,.-ecp_nistz256_mul_by_3 @@ -308,6 +324,7 @@ ecp_nistz256_mul_by_3: .type ecp_nistz256_sub,%function .align 4 ecp_nistz256_sub: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -319,6 +336,7 @@ ecp_nistz256_sub: bl __ecp_nistz256_sub_from ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_sub,.-ecp_nistz256_sub @@ -327,6 +345,7 @@ ecp_nistz256_sub: .type ecp_nistz256_neg,%function .align 4 ecp_nistz256_neg: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -341,6 +360,7 @@ ecp_nistz256_neg: bl __ecp_nistz256_sub_from ldp x29,x30,[sp],#16 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_neg,.-ecp_nistz256_neg @@ -701,6 +721,7 @@ $code.=<<___; .type ecp_nistz256_point_double,%function .align 5 ecp_nistz256_point_double: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -835,6 +856,7 @@ ecp_nistz256_point_double: ldp x19,x20,[x29,#16] ldp x21,x22,[x29,#32] ldp x29,x30,[sp],#80 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_double,.-ecp_nistz256_point_double ___ @@ -857,6 +879,7 @@ $code.=<<___; .type ecp_nistz256_point_add,%function .align 5 ecp_nistz256_point_add: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -1094,12 +1117,13 @@ $code.=<<___; stp $acc2,$acc3,[$rp_real,#$i+16] .Ladd_done: - add sp,x29,#0 // destroy frame + add sp,x29,#0 // destroy frame ldp x19,x20,[x29,#16] ldp x21,x22,[x29,#32] ldp x23,x24,[x29,#48] ldp x25,x26,[x29,#64] ldp x29,x30,[sp],#80 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_add,.-ecp_nistz256_point_add ___ @@ -1121,6 +1145,7 @@ $code.=<<___; .type ecp_nistz256_point_add_affine,%function .align 5 ecp_nistz256_point_add_affine: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -1309,6 +1334,7 @@ $code.=<<___; ldp x23,x24,[x29,#48] ldp x25,x26,[x29,#64] ldp x29,x30,[sp],#80 + .inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_add_affine,.-ecp_nistz256_point_add_affine ___ diff --git a/crypto/poly1305/asm/poly1305-armv8.pl b/crypto/poly1305/asm/poly1305-armv8.pl index ac06457..21897fe 100755 --- a/crypto/poly1305/asm/poly1305-armv8.pl +++ b/crypto/poly1305/asm/poly1305-armv8.pl @@ -291,6 +291,7 @@ poly1305_blocks_neon: cbz $is_base2_26,poly1305_blocks .Lblocks_neon: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 @@ -859,6 +860,7 @@ poly1305_blocks_neon: st1 {$ACC4}[0],[$ctx] .Lno_data_neon: + .inst 0xd50323bf // autiasp ldr x29,[sp],#80 ret .size poly1305_blocks_neon,.-poly1305_blocks_neon diff --git a/crypto/sha/asm/keccak1600-armv8.pl b/crypto/sha/asm/keccak1600-armv8.pl index 704ab4a..768d036 100755 --- a/crypto/sha/asm/keccak1600-armv8.pl +++ b/crypto/sha/asm/keccak1600-armv8.pl @@ -121,6 +121,7 @@ $code.=<<___; .align 5 KeccakF1600_int: adr $C[2],iotas + .inst 0xd503233f // paciasp stp $C[2],x30,[sp,#16] // 32 bytes on top are mine b .Loop .align 4 @@ -292,12 +293,14 @@ $code.=<<___; bne .Loop ldr x30,[sp,#24] + .inst 0xd50323bf // autiasp ret .size KeccakF1600_int,.-KeccakF1600_int .type KeccakF1600,%function .align 5 KeccakF1600: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -347,6 +350,7 @@ KeccakF1600: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#128 + .inst 0xd50323bf // autiasp ret .size KeccakF1600,.-KeccakF1600 @@ -354,6 +358,7 @@ KeccakF1600: .type SHA3_absorb,%function .align 5 SHA3_absorb: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -451,6 +456,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#128 + .inst 0xd50323bf // autiasp ret .size SHA3_absorb,.-SHA3_absorb ___ @@ -461,6 +467,7 @@ $code.=<<___; .type SHA3_squeeze,%function .align 5 SHA3_squeeze: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-48]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -523,6 +530,7 @@ SHA3_squeeze: ldp x19,x20,[sp,#16] ldp x21,x22,[sp,#32] ldp x29,x30,[sp],#48 + .inst 0xd50323bf // autiasp ret .size SHA3_squeeze,.-SHA3_squeeze ___ @@ -649,6 +657,7 @@ $code.=<<___; .type KeccakF1600_cext,%function .align 5 KeccakF1600_cext: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp d8,d9,[sp,#16] // per ABI requirement @@ -681,6 +690,7 @@ $code.=<<___; ldp d12,d13,[sp,#48] ldp d14,d15,[sp,#64] ldr x29,[sp],#80 + .inst 0xd50323bf // autiasp ret .size KeccakF1600_cext,.-KeccakF1600_cext ___ @@ -693,6 +703,7 @@ $code.=<<___; .type SHA3_absorb_cext,%function .align 5 SHA3_absorb_cext: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp d8,d9,[sp,#16] // per ABI requirement @@ -764,6 +775,7 @@ $code.=<<___; ldp d12,d13,[sp,#48] ldp d14,d15,[sp,#64] ldp x29,x30,[sp],#80 + .inst 0xd50323bf // autiasp ret .size SHA3_absorb_cext,.-SHA3_absorb_cext ___ @@ -775,6 +787,7 @@ $code.=<<___; .type SHA3_squeeze_cext,%function .align 5 SHA3_squeeze_cext: + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 mov x9,$ctx @@ -830,6 +843,7 @@ SHA3_squeeze_cext: .Lsqueeze_done_ce: ldr x29,[sp],#16 + .inst 0xd50323bf // autiasp ret .size SHA3_squeeze_cext,.-SHA3_squeeze_cext ___ diff --git a/crypto/sha/asm/sha512-armv8.pl b/crypto/sha/asm/sha512-armv8.pl index ac84ebb..60df899f 100644 --- a/crypto/sha/asm/sha512-armv8.pl +++ b/crypto/sha/asm/sha512-armv8.pl @@ -219,6 +219,7 @@ $code.=<<___ if ($SZ==8); ___ $code.=<<___; #endif + .inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 @@ -280,6 +281,7 @@ $code.=<<___; ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#128 + .inst 0xd50323bf // autiasp ret .size $func,.-$func From builds at travis-ci.org Wed Feb 13 01:23:40 2019 From: builds at travis-ci.org (Travis CI) Date: Wed, 13 Feb 2019 01:23:40 +0000 Subject: [openssl-commits] Passed: openssl/openssl#23002 (master - 7f4268b) In-Reply-To: Message-ID: <5c63719c5227c_43faf56d957c0258522@f19c87cc-20b3-4464-a79c-00678a560c1d.mail> Build Update for openssl/openssl ------------------------------------- Build: #23002 Status: Passed Duration: 19 mins and 11 secs Commit: 7f4268b (master) Author: Pauli Message: Fix master build. The recent change from ENGINES to MODULES broke the configure it seems. Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/8219) View the changeset: https://github.com/openssl/openssl/compare/583fd0c1085c...7f4268bff3cf View the full build log and details: https://travis-ci.org/openssl/openssl/builds/492474315?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From builds at travis-ci.org Wed Feb 13 01:57:08 2019 From: builds at travis-ci.org (Travis CI) Date: Wed, 13 Feb 2019 01:57:08 +0000 Subject: [openssl-commits] Fixed: openssl/openssl#23004 (OpenSSL_1_1_1-stable - 2cf7fd6) In-Reply-To: Message-ID: <5c6379742c776_43faf56d95fcc27479b@f19c87cc-20b3-4464-a79c-00678a560c1d.mail> Build Update for openssl/openssl ------------------------------------- Build: #23004 Status: Fixed Duration: 16 mins and 40 secs Commit: 2cf7fd6 (OpenSSL_1_1_1-stable) Author: Andy Polyakov Message: AArch64 assembly pack: authenticate return addresses. ARMv8.3 adds pointer authentication extension, which in this case allows to ensure that, when offloaded to stack, return address is same at return as at entry to the subroutine. The new instructions are nops on processors that don't implement the extension, so that the vetification is backward compatible. Reviewed-by: Kurt Roeckx Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8205) (cherry picked from commit 9a18aae5f21efc59da8b697ad67d5d37b95ab322) View the changeset: https://github.com/openssl/openssl/compare/af250b36eb53...2cf7fd698ec1 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/492485010?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From levitte at openssl.org Wed Feb 13 03:48:30 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 13 Feb 2019 03:48:30 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550029710.757402.14618.nullmailer@dev.openssl.org> The branch master has been updated via 5674466e007d892ec55441059b3763abd5dd5440 (commit) from 7f4268bff3cf49b96d25bfd83013ee310c31520b (commit) - Log ----------------------------------------------------------------- commit 5674466e007d892ec55441059b3763abd5dd5440 Author: Richard Levitte Date: Tue Feb 12 11:37:43 2019 +0100 Move libapps headers into their own directory This got triggered by test/testutil.h including ../apps/opt.h. Some compilers do all inclusions from the directory of the C file being compiled, so when a C file includes a header file with a relative file spec, and that header file also includes another header file with a relative file spec, the compiler no longer follows. As a specific example, test/testutil/basic_output.c included ../testutil.h. Fine so far, but then, test/testutil.h includes ../apps/opt.h, and the compiler ends up trying to include (seen from the source top) test/apps/opt.h rather than apps/opt.h, and fails. The solution could have been to simply add apps/ as an inclusion directory. However, that directory also has header files that have nothing to do with libapps, so we take this a bit further, create apps/include and move libapps specific headers there, and then add apps/include as inclusion directory in the build.info files where needed. Reviewed-by: Paul Yang (Merged from https://github.com/openssl/openssl/pull/8210) ----------------------------------------------------------------------- Summary of changes: apps/build.info | 4 +- apps/{ => include}/apps.h | 0 apps/{ => include}/apps_ui.h | 0 apps/{ => include}/fmt.h | 0 apps/{ => include}/opt.h | 0 apps/{ => include}/s_apps.h | 0 test/build.info | 226 +++++++++++++++++++++---------------------- test/testutil.h | 2 +- 8 files changed, 116 insertions(+), 116 deletions(-) rename apps/{ => include}/apps.h (100%) rename apps/{ => include}/apps_ui.h (100%) rename apps/{ => include}/fmt.h (100%) rename apps/{ => include}/opt.h (100%) rename apps/{ => include}/s_apps.h (100%) diff --git a/apps/build.info b/apps/build.info index 7a5e876..9b77c46 100644 --- a/apps/build.info +++ b/apps/build.info @@ -15,12 +15,12 @@ IF[{- !$disabled{apps} -}] LIBS{noinst}=libapps.a SOURCE[libapps.a]={- join(" ", @apps_lib_src) -} - INCLUDE[libapps.a]=.. ../include + INCLUDE[libapps.a]=.. ../include include PROGRAMS=openssl SOURCE[openssl]={- join(" ", @apps_init_src) -} SOURCE[openssl]={- join(" ", @apps_openssl_src) -} - INCLUDE[openssl]=.. ../include + INCLUDE[openssl]=.. ../include include DEPEND[openssl]=libapps.a ../libssl IF[{- $config{target} =~ /^(?:Cygwin|mingw|VC-)/ -}] diff --git a/apps/apps.h b/apps/include/apps.h similarity index 100% rename from apps/apps.h rename to apps/include/apps.h diff --git a/apps/apps_ui.h b/apps/include/apps_ui.h similarity index 100% rename from apps/apps_ui.h rename to apps/include/apps_ui.h diff --git a/apps/fmt.h b/apps/include/fmt.h similarity index 100% rename from apps/fmt.h rename to apps/include/fmt.h diff --git a/apps/opt.h b/apps/include/opt.h similarity index 100% rename from apps/opt.h rename to apps/include/opt.h diff --git a/apps/s_apps.h b/apps/include/s_apps.h similarity index 100% rename from apps/s_apps.h rename to apps/include/s_apps.h diff --git a/test/build.info b/test/build.info index b2b7375..7d4f953 100644 --- a/test/build.info +++ b/test/build.info @@ -15,7 +15,7 @@ IF[{- !$disabled{tests} -}] testutil/format_output.c testutil/tap_bio.c \ testutil/test_cleanup.c testutil/main.c testutil/init.c \ testutil/options.c testutil/test_options.c ../apps/opt.c - INCLUDE[libtestutil.a]=../include .. + INCLUDE[libtestutil.a]=../include ../apps/include .. DEPEND[libtestutil.a]=../libcrypto PROGRAMS{noinst}=\ @@ -48,234 +48,234 @@ IF[{- !$disabled{tests} -}] sysdefaulttest errtest gosttest SOURCE[versions]=versions.c - INCLUDE[versions]=../include + INCLUDE[versions]=../include ../apps/include DEPEND[versions]=../libcrypto SOURCE[aborttest]=aborttest.c - INCLUDE[aborttest]=../include + INCLUDE[aborttest]=../include ../apps/include DEPEND[aborttest]=../libcrypto SOURCE[sanitytest]=sanitytest.c - INCLUDE[sanitytest]=../include + INCLUDE[sanitytest]=../include ../apps/include DEPEND[sanitytest]=../libcrypto libtestutil.a SOURCE[rsa_complex]=rsa_complex.c - INCLUDE[rsa_complex]=../include + INCLUDE[rsa_complex]=../include ../apps/include SOURCE[test_test]=test_test.c - INCLUDE[test_test]=../include + INCLUDE[test_test]=../include ../apps/include DEPEND[test_test]=../libcrypto libtestutil.a SOURCE[exdatatest]=exdatatest.c - INCLUDE[exdatatest]=../include + INCLUDE[exdatatest]=../include ../apps/include DEPEND[exdatatest]=../libcrypto libtestutil.a SOURCE[bntest]=bntest.c - INCLUDE[bntest]=../include + INCLUDE[bntest]=../include ../apps/include DEPEND[bntest]=../libcrypto libtestutil.a SOURCE[ectest]=ectest.c - INCLUDE[ectest]=../include + INCLUDE[ectest]=../include ../apps/include DEPEND[ectest]=../libcrypto libtestutil.a SOURCE[ecstresstest]=ecstresstest.c - INCLUDE[ecstresstest]=../include + INCLUDE[ecstresstest]=../include ../apps/include DEPEND[ecstresstest]=../libcrypto libtestutil.a SOURCE[ecdsatest]=ecdsatest.c - INCLUDE[ecdsatest]=../include + INCLUDE[ecdsatest]=../include ../apps/include DEPEND[ecdsatest]=../libcrypto libtestutil.a SOURCE[gmdifftest]=gmdifftest.c - INCLUDE[gmdifftest]=../include + INCLUDE[gmdifftest]=../include ../apps/include DEPEND[gmdifftest]=../libcrypto libtestutil.a SOURCE[pbelutest]=pbelutest.c - INCLUDE[pbelutest]=../include + INCLUDE[pbelutest]=../include ../apps/include DEPEND[pbelutest]=../libcrypto libtestutil.a SOURCE[ideatest]=ideatest.c - INCLUDE[ideatest]=../include + INCLUDE[ideatest]=../include ../apps/include DEPEND[ideatest]=../libcrypto libtestutil.a SOURCE[md2test]=md2test.c - INCLUDE[md2test]=../include + INCLUDE[md2test]=../include ../apps/include DEPEND[md2test]=../libcrypto libtestutil.a SOURCE[hmactest]=hmactest.c - INCLUDE[hmactest]=../include + INCLUDE[hmactest]=../include ../apps/include DEPEND[hmactest]=../libcrypto libtestutil.a SOURCE[rc2test]=rc2test.c - INCLUDE[rc2test]=../include + INCLUDE[rc2test]=../include ../apps/include DEPEND[rc2test]=../libcrypto libtestutil.a SOURCE[rc4test]=rc4test.c - INCLUDE[rc4test]=../include + INCLUDE[rc4test]=../include ../apps/include DEPEND[rc4test]=../libcrypto libtestutil.a SOURCE[rc5test]=rc5test.c - INCLUDE[rc5test]=../include + INCLUDE[rc5test]=../include ../apps/include DEPEND[rc5test]=../libcrypto libtestutil.a SOURCE[destest]=destest.c - INCLUDE[destest]=../include + INCLUDE[destest]=../include ../apps/include DEPEND[destest]=../libcrypto libtestutil.a SOURCE[mdc2test]=mdc2test.c - INCLUDE[mdc2test]=../include + INCLUDE[mdc2test]=../include ../apps/include DEPEND[mdc2test]=../libcrypto libtestutil.a SOURCE[dhtest]=dhtest.c - INCLUDE[dhtest]=../include + INCLUDE[dhtest]=../include ../apps/include DEPEND[dhtest]=../libcrypto libtestutil.a SOURCE[enginetest]=enginetest.c - INCLUDE[enginetest]=../include + INCLUDE[enginetest]=../include ../apps/include DEPEND[enginetest]=../libcrypto libtestutil.a SOURCE[casttest]=casttest.c - INCLUDE[casttest]=../include + INCLUDE[casttest]=../include ../apps/include DEPEND[casttest]=../libcrypto libtestutil.a SOURCE[bftest]=bftest.c - INCLUDE[bftest]=../include + INCLUDE[bftest]=../include ../apps/include DEPEND[bftest]=../libcrypto libtestutil.a SOURCE[ssltest_old]=ssltest_old.c - INCLUDE[ssltest_old]=.. ../include + INCLUDE[ssltest_old]=.. ../include ../apps/include DEPEND[ssltest_old]=../libcrypto ../libssl SOURCE[dsatest]=dsatest.c - INCLUDE[dsatest]=../include + INCLUDE[dsatest]=../include ../apps/include DEPEND[dsatest]=../libcrypto libtestutil.a SOURCE[dsa_no_digest_size_test]=dsa_no_digest_size_test.c - INCLUDE[dsa_no_digest_size_test]=../include + INCLUDE[dsa_no_digest_size_test]=../include ../apps/include DEPEND[dsa_no_digest_size_test]=../libcrypto libtestutil.a SOURCE[exptest]=exptest.c - INCLUDE[exptest]=../include + INCLUDE[exptest]=../include ../apps/include DEPEND[exptest]=../libcrypto libtestutil.a SOURCE[rsa_test]=rsa_test.c - INCLUDE[rsa_test]=../include + INCLUDE[rsa_test]=../include ../apps/include DEPEND[rsa_test]=../libcrypto libtestutil.a SOURCE[rsa_mp_test]=rsa_mp_test.c - INCLUDE[rsa_mp_test]=../include + INCLUDE[rsa_mp_test]=../include ../apps/include DEPEND[rsa_mp_test]=../libcrypto libtestutil.a SOURCE[fatalerrtest]=fatalerrtest.c ssltestlib.c - INCLUDE[fatalerrtest]=../include + INCLUDE[fatalerrtest]=../include ../apps/include DEPEND[fatalerrtest]=../libcrypto ../libssl libtestutil.a SOURCE[tls13ccstest]=tls13ccstest.c ssltestlib.c - INCLUDE[tls13ccstest]=../include + INCLUDE[tls13ccstest]=../include ../apps/include DEPEND[tls13ccstest]=../libcrypto ../libssl libtestutil.a SOURCE[evp_test]=evp_test.c - INCLUDE[evp_test]=../include + INCLUDE[evp_test]=../include ../apps/include DEPEND[evp_test]=../libcrypto libtestutil.a SOURCE[evp_extra_test]=evp_extra_test.c - INCLUDE[evp_extra_test]=../include ../crypto/include + INCLUDE[evp_extra_test]=../include ../apps/include ../crypto/include DEPEND[evp_extra_test]=../libcrypto libtestutil.a SOURCE[igetest]=igetest.c - INCLUDE[igetest]=../include + INCLUDE[igetest]=../include ../apps/include DEPEND[igetest]=../libcrypto libtestutil.a SOURCE[v3nametest]=v3nametest.c - INCLUDE[v3nametest]=../include + INCLUDE[v3nametest]=../include ../apps/include DEPEND[v3nametest]=../libcrypto libtestutil.a SOURCE[crltest]=crltest.c - INCLUDE[crltest]=../include + INCLUDE[crltest]=../include ../apps/include DEPEND[crltest]=../libcrypto libtestutil.a SOURCE[v3ext]=v3ext.c - INCLUDE[v3ext]=../include + INCLUDE[v3ext]=../include ../apps/include DEPEND[v3ext]=../libcrypto libtestutil.a SOURCE[danetest]=danetest.c - INCLUDE[danetest]=../include + INCLUDE[danetest]=../include ../apps/include DEPEND[danetest]=../libcrypto ../libssl libtestutil.a SOURCE[constant_time_test]=constant_time_test.c - INCLUDE[constant_time_test]=../include + INCLUDE[constant_time_test]=../include ../apps/include DEPEND[constant_time_test]=../libcrypto libtestutil.a SOURCE[verify_extra_test]=verify_extra_test.c - INCLUDE[verify_extra_test]=../include + INCLUDE[verify_extra_test]=../include ../apps/include DEPEND[verify_extra_test]=../libcrypto libtestutil.a SOURCE[clienthellotest]=clienthellotest.c - INCLUDE[clienthellotest]=../include + INCLUDE[clienthellotest]=../include ../apps/include DEPEND[clienthellotest]=../libcrypto ../libssl libtestutil.a SOURCE[bad_dtls_test]=bad_dtls_test.c - INCLUDE[bad_dtls_test]=../include + INCLUDE[bad_dtls_test]=../include ../apps/include DEPEND[bad_dtls_test]=../libcrypto ../libssl libtestutil.a SOURCE[packettest]=packettest.c - INCLUDE[packettest]=../include + INCLUDE[packettest]=../include ../apps/include DEPEND[packettest]=../libcrypto libtestutil.a SOURCE[asynctest]=asynctest.c - INCLUDE[asynctest]=../include + INCLUDE[asynctest]=../include ../apps/include DEPEND[asynctest]=../libcrypto SOURCE[secmemtest]=secmemtest.c - INCLUDE[secmemtest]=../include + INCLUDE[secmemtest]=../include ../apps/include DEPEND[secmemtest]=../libcrypto libtestutil.a SOURCE[srptest]=srptest.c - INCLUDE[srptest]=../include + INCLUDE[srptest]=../include ../apps/include DEPEND[srptest]=../libcrypto libtestutil.a SOURCE[memleaktest]=memleaktest.c - INCLUDE[memleaktest]=../include + INCLUDE[memleaktest]=../include ../apps/include DEPEND[memleaktest]=../libcrypto libtestutil.a SOURCE[stack_test]=stack_test.c - INCLUDE[stack_test]=../include + INCLUDE[stack_test]=../include ../apps/include DEPEND[stack_test]=../libcrypto libtestutil.a SOURCE[lhash_test]=lhash_test.c - INCLUDE[lhash_test]=../include + INCLUDE[lhash_test]=../include ../apps/include DEPEND[lhash_test]=../libcrypto libtestutil.a SOURCE[dtlsv1listentest]=dtlsv1listentest.c - INCLUDE[dtlsv1listentest]=../include + INCLUDE[dtlsv1listentest]=../include ../apps/include DEPEND[dtlsv1listentest]=../libssl libtestutil.a SOURCE[ct_test]=ct_test.c - INCLUDE[ct_test]=../include + INCLUDE[ct_test]=../include ../apps/include DEPEND[ct_test]=../libcrypto libtestutil.a SOURCE[threadstest]=threadstest.c - INCLUDE[threadstest]=../include + INCLUDE[threadstest]=../include ../apps/include DEPEND[threadstest]=../libcrypto libtestutil.a SOURCE[afalgtest]=afalgtest.c - INCLUDE[afalgtest]=../include + INCLUDE[afalgtest]=../include ../apps/include DEPEND[afalgtest]=../libcrypto libtestutil.a SOURCE[d2i_test]=d2i_test.c - INCLUDE[d2i_test]=../include + INCLUDE[d2i_test]=../include ../apps/include DEPEND[d2i_test]=../libcrypto libtestutil.a SOURCE[ssl_test_ctx_test]=ssl_test_ctx_test.c ssl_test_ctx.c - INCLUDE[ssl_test_ctx_test]=../include + INCLUDE[ssl_test_ctx_test]=../include ../apps/include DEPEND[ssl_test_ctx_test]=../libcrypto ../libssl libtestutil.a SOURCE[ssl_test]=ssl_test.c ssl_test_ctx.c handshake_helper.c - INCLUDE[ssl_test]=../include + INCLUDE[ssl_test]=../include ../apps/include DEPEND[ssl_test]=../libcrypto ../libssl libtestutil.a SOURCE[cipherlist_test]=cipherlist_test.c - INCLUDE[cipherlist_test]=../include + INCLUDE[cipherlist_test]=../include ../apps/include DEPEND[cipherlist_test]=../libcrypto ../libssl libtestutil.a INCLUDE[ssl_test_ctx.o]=../include @@ -283,148 +283,148 @@ IF[{- !$disabled{tests} -}] INCLUDE[ssltestlib.o]=.. ../include SOURCE[x509aux]=x509aux.c - INCLUDE[x509aux]=../include + INCLUDE[x509aux]=../include ../apps/include DEPEND[x509aux]=../libcrypto libtestutil.a SOURCE[asynciotest]=asynciotest.c ssltestlib.c - INCLUDE[asynciotest]=../include + INCLUDE[asynciotest]=../include ../apps/include DEPEND[asynciotest]=../libcrypto ../libssl libtestutil.a SOURCE[bio_callback_test]=bio_callback_test.c - INCLUDE[bio_callback_test]=../include + INCLUDE[bio_callback_test]=../include ../apps/include DEPEND[bio_callback_test]=../libcrypto libtestutil.a SOURCE[bio_memleak_test]=bio_memleak_test.c - INCLUDE[bio_memleak_test]=../include + INCLUDE[bio_memleak_test]=../include ../apps/include DEPEND[bio_memleak_test]=../libcrypto libtestutil.a SOURCE[bioprinttest]=bioprinttest.c - INCLUDE[bioprinttest]=../include + INCLUDE[bioprinttest]=../include ../apps/include DEPEND[bioprinttest]=../libcrypto libtestutil.a SOURCE[sslapitest]=sslapitest.c ssltestlib.c - INCLUDE[sslapitest]=../include .. + INCLUDE[sslapitest]=../include ../apps/include .. DEPEND[sslapitest]=../libcrypto ../libssl libtestutil.a SOURCE[ocspapitest]=ocspapitest.c - INCLUDE[ocspapitest]=../include + INCLUDE[ocspapitest]=../include ../apps/include DEPEND[ocspapitest]=../libcrypto libtestutil.a SOURCE[dtlstest]=dtlstest.c ssltestlib.c - INCLUDE[dtlstest]=../include + INCLUDE[dtlstest]=../include ../apps/include DEPEND[dtlstest]=../libcrypto ../libssl libtestutil.a SOURCE[sslcorrupttest]=sslcorrupttest.c ssltestlib.c - INCLUDE[sslcorrupttest]=../include + INCLUDE[sslcorrupttest]=../include ../apps/include DEPEND[sslcorrupttest]=../libcrypto ../libssl libtestutil.a SOURCE[bio_enc_test]=bio_enc_test.c - INCLUDE[bio_enc_test]=../include + INCLUDE[bio_enc_test]=../include ../apps/include DEPEND[bio_enc_test]=../libcrypto libtestutil.a SOURCE[pkey_meth_test]=pkey_meth_test.c - INCLUDE[pkey_meth_test]=../include + INCLUDE[pkey_meth_test]=../include ../apps/include DEPEND[pkey_meth_test]=../libcrypto libtestutil.a SOURCE[pkey_meth_kdf_test]=pkey_meth_kdf_test.c - INCLUDE[pkey_meth_kdf_test]=../include + INCLUDE[pkey_meth_kdf_test]=../include ../apps/include DEPEND[pkey_meth_kdf_test]=../libcrypto libtestutil.a SOURCE[x509_time_test]=x509_time_test.c - INCLUDE[x509_time_test]=../include + INCLUDE[x509_time_test]=../include ../apps/include DEPEND[x509_time_test]=../libcrypto libtestutil.a SOURCE[recordlentest]=recordlentest.c ssltestlib.c - INCLUDE[recordlentest]=../include + INCLUDE[recordlentest]=../include ../apps/include DEPEND[recordlentest]=../libcrypto ../libssl libtestutil.a SOURCE[drbgtest]=drbgtest.c - INCLUDE[drbgtest]=../include + INCLUDE[drbgtest]=../include ../apps/include DEPEND[drbgtest]=../libcrypto.a libtestutil.a SOURCE[drbg_cavs_test]=drbg_cavs_test.c drbg_cavs_data_ctr.c \ drbg_cavs_data_hash.c drbg_cavs_data_hmac.c - INCLUDE[drbg_cavs_test]=../include . .. + INCLUDE[drbg_cavs_test]=../include ../apps/include . .. DEPEND[drbg_cavs_test]=../libcrypto libtestutil.a SOURCE[x509_dup_cert_test]=x509_dup_cert_test.c - INCLUDE[x509_dup_cert_test]=../include + INCLUDE[x509_dup_cert_test]=../include ../apps/include DEPEND[x509_dup_cert_test]=../libcrypto libtestutil.a SOURCE[x509_check_cert_pkey_test]=x509_check_cert_pkey_test.c - INCLUDE[x509_check_cert_pkey_test]=../include + INCLUDE[x509_check_cert_pkey_test]=../include ../apps/include DEPEND[x509_check_cert_pkey_test]=../libcrypto libtestutil.a SOURCE[pemtest]=pemtest.c - INCLUDE[pemtest]=../include + INCLUDE[pemtest]=../include ../apps/include DEPEND[pemtest]=../libcrypto libtestutil.a SOURCE[ssl_cert_table_internal_test]=ssl_cert_table_internal_test.c - INCLUDE[ssl_cert_table_internal_test]=.. ../include + INCLUDE[ssl_cert_table_internal_test]=.. ../include ../apps/include DEPEND[ssl_cert_table_internal_test]=../libcrypto libtestutil.a SOURCE[ciphername_test]=ciphername_test.c - INCLUDE[ciphername_test]=../include + INCLUDE[ciphername_test]=../include ../apps/include DEPEND[ciphername_test]=../libcrypto ../libssl libtestutil.a SOURCE[servername_test]=servername_test.c ssltestlib.c - INCLUDE[servername_test]=../include + INCLUDE[servername_test]=../include ../apps/include DEPEND[servername_test]=../libcrypto ../libssl libtestutil.a IF[{- !$disabled{cms} -}] PROGRAMS{noinst}=cmsapitest SOURCE[cmsapitest]=cmsapitest.c - INCLUDE[cmsapitest]=../include + INCLUDE[cmsapitest]=../include ../apps/include DEPEND[cmsapitest]=../libcrypto libtestutil.a ENDIF IF[{- !$disabled{psk} -}] PROGRAMS{noinst}=dtls_mtu_test SOURCE[dtls_mtu_test]=dtls_mtu_test.c ssltestlib.c - INCLUDE[dtls_mtu_test]=.. ../include + INCLUDE[dtls_mtu_test]=.. ../include ../apps/include DEPEND[dtls_mtu_test]=../libcrypto ../libssl libtestutil.a ENDIF IF[{- !$disabled{shared} -}] PROGRAMS{noinst}=shlibloadtest SOURCE[shlibloadtest]=shlibloadtest.c - INCLUDE[shlibloadtest]=../include ../crypto/include + INCLUDE[shlibloadtest]=../include ../apps/include ../crypto/include ENDIF IF[{- $disabled{shared} -}] PROGRAMS{noinst}=cipher_overhead_test SOURCE[cipher_overhead_test]=cipher_overhead_test.c - INCLUDE[cipher_overhead_test]=.. ../include + INCLUDE[cipher_overhead_test]=.. ../include ../apps/include DEPEND[cipher_overhead_test]=../libcrypto ../libssl libtestutil.a ENDIF SOURCE[uitest]=uitest.c ../apps/apps_ui.c - INCLUDE[uitest]=.. ../include ../apps + INCLUDE[uitest]=.. ../include ../apps/include DEPEND[uitest]=../libcrypto ../libssl libtestutil.a SOURCE[cipherbytes_test]=cipherbytes_test.c - INCLUDE[cipherbytes_test]=../include + INCLUDE[cipherbytes_test]=../include ../apps/include DEPEND[cipherbytes_test]=../libcrypto ../libssl libtestutil.a SOURCE[asn1_encode_test]=asn1_encode_test.c - INCLUDE[asn1_encode_test]=../include + INCLUDE[asn1_encode_test]=../include ../apps/include DEPEND[asn1_encode_test]=../libcrypto libtestutil.a SOURCE[asn1_decode_test]=asn1_decode_test.c - INCLUDE[asn1_decode_test]=../include + INCLUDE[asn1_decode_test]=../include ../apps/include DEPEND[asn1_decode_test]=../libcrypto libtestutil.a SOURCE[asn1_string_table_test]=asn1_string_table_test.c - INCLUDE[asn1_string_table_test]=../include + INCLUDE[asn1_string_table_test]=../include ../apps/include DEPEND[asn1_string_table_test]=../libcrypto libtestutil.a SOURCE[time_offset_test]=time_offset_test.c - INCLUDE[time_offset_test]=../include + INCLUDE[time_offset_test]=../include ../apps/include DEPEND[time_offset_test]=../libcrypto libtestutil.a SOURCE[conf_include_test]=conf_include_test.c - INCLUDE[conf_include_test]=../include + INCLUDE[conf_include_test]=../include ../apps/include DEPEND[conf_include_test]=../libcrypto libtestutil.a # Internal test programs. These are essentially a collection of internal @@ -457,59 +457,59 @@ IF[{- !$disabled{tests} -}] ENDIF SOURCE[poly1305_internal_test]=poly1305_internal_test.c - INCLUDE[poly1305_internal_test]=.. ../include ../crypto/include + INCLUDE[poly1305_internal_test]=.. ../include ../apps/include ../crypto/include DEPEND[poly1305_internal_test]=../libcrypto.a libtestutil.a SOURCE[chacha_internal_test]=chacha_internal_test.c - INCLUDE[chacha_internal_test]=.. ../include ../crypto/include + INCLUDE[chacha_internal_test]=.. ../include ../apps/include ../crypto/include DEPEND[chacha_internal_test]=../libcrypto.a libtestutil.a SOURCE[asn1_internal_test]=asn1_internal_test.c - INCLUDE[asn1_internal_test]=.. ../include ../crypto/include + INCLUDE[asn1_internal_test]=.. ../include ../apps/include ../crypto/include DEPEND[asn1_internal_test]=../libcrypto.a libtestutil.a SOURCE[modes_internal_test]=modes_internal_test.c - INCLUDE[modes_internal_test]=.. ../include + INCLUDE[modes_internal_test]=.. ../include ../apps/include DEPEND[modes_internal_test]=../libcrypto.a libtestutil.a SOURCE[x509_internal_test]=x509_internal_test.c - INCLUDE[x509_internal_test]=.. ../include + INCLUDE[x509_internal_test]=.. ../include ../apps/include DEPEND[x509_internal_test]=../libcrypto.a libtestutil.a SOURCE[tls13encryptiontest]=tls13encryptiontest.c - INCLUDE[tls13encryptiontest]=.. ../include + INCLUDE[tls13encryptiontest]=.. ../include ../apps/include DEPEND[tls13encryptiontest]=../libcrypto ../libssl.a libtestutil.a SOURCE[wpackettest]=wpackettest.c - INCLUDE[wpackettest]=../include + INCLUDE[wpackettest]=../include ../apps/include DEPEND[wpackettest]=../libcrypto ../libssl.a libtestutil.a SOURCE[ctype_internal_test]=ctype_internal_test.c - INCLUDE[ctype_internal_test]=.. ../crypto/include ../include + INCLUDE[ctype_internal_test]=.. ../crypto/include ../include ../apps/include DEPEND[ctype_internal_test]=../libcrypto.a libtestutil.a SOURCE[sparse_array_test]=sparse_array_test.c - INCLUDE[sparse_array_test]=../crypto/include ../include + INCLUDE[sparse_array_test]=../crypto/include ../include ../apps/include DEPEND[sparse_array_test]=../libcrypto.a libtestutil.a SOURCE[siphash_internal_test]=siphash_internal_test.c - INCLUDE[siphash_internal_test]=.. ../include ../crypto/include + INCLUDE[siphash_internal_test]=.. ../include ../apps/include ../crypto/include DEPEND[siphash_internal_test]=../libcrypto.a libtestutil.a SOURCE[sm2_internal_test]=sm2_internal_test.c - INCLUDE[sm2_internal_test]=../include ../crypto/include + INCLUDE[sm2_internal_test]=../include ../apps/include ../crypto/include DEPEND[sm2_internal_test]=../libcrypto.a libtestutil.a SOURCE[sm4_internal_test]=sm4_internal_test.c - INCLUDE[sm4_internal_test]=.. ../include ../crypto/include + INCLUDE[sm4_internal_test]=.. ../include ../apps/include ../crypto/include DEPEND[sm4_internal_test]=../libcrypto.a libtestutil.a SOURCE[curve448_internal_test]=curve448_internal_test.c - INCLUDE[curve448_internal_test]=.. ../include ../crypto/ec/curve448 + INCLUDE[curve448_internal_test]=.. ../include ../apps/include ../crypto/ec/curve448 DEPEND[curve448_internal_test]=../libcrypto.a libtestutil.a SOURCE[rdrand_sanitytest]=rdrand_sanitytest.c - INCLUDE[rdrand_sanitytest]=../include + INCLUDE[rdrand_sanitytest]=../include ../apps/include DEPEND[rdrand_sanitytest]=../libcrypto.a libtestutil.a ENDIF @@ -518,12 +518,12 @@ IF[{- !$disabled{tests} -}] ENDIF SOURCE[mdc2_internal_test]=mdc2_internal_test.c - INCLUDE[mdc2_internal_test]=.. ../include + INCLUDE[mdc2_internal_test]=.. ../include ../apps/include DEPEND[mdc2_internal_test]=../libcrypto libtestutil.a PROGRAMS{noinst}=asn1_time_test SOURCE[asn1_time_test]=asn1_time_test.c - INCLUDE[asn1_time_test]=../include + INCLUDE[asn1_time_test]=../include ../apps/include DEPEND[asn1_time_test]=../libcrypto libtestutil.a # We disable this test completely in a shared build because it deliberately @@ -533,24 +533,24 @@ IF[{- !$disabled{tests} -}] PROGRAMS{noinst}=tls13secretstest SOURCE[tls13secretstest]=tls13secretstest.c SOURCE[tls13secretstest]= ../ssl/tls13_enc.c ../ssl/packet.c - INCLUDE[tls13secretstest]=.. ../include + INCLUDE[tls13secretstest]=.. ../include ../apps/include DEPEND[tls13secretstest]=../libcrypto ../libssl libtestutil.a ENDIF SOURCE[sslbuffertest]=sslbuffertest.c ssltestlib.c - INCLUDE[sslbuffertest]=../include + INCLUDE[sslbuffertest]=../include ../apps/include DEPEND[sslbuffertest]=../libcrypto ../libssl libtestutil.a SOURCE[sysdefaulttest]=sysdefaulttest.c - INCLUDE[sysdefaulttest]=../include + INCLUDE[sysdefaulttest]=../include ../apps/include DEPEND[sysdefaulttest]=../libcrypto ../libssl libtestutil.a SOURCE[errtest]=errtest.c - INCLUDE[errtest]=../include + INCLUDE[errtest]=../include ../apps/include DEPEND[errtest]=../libcrypto libtestutil.a SOURCE[gosttest]=gosttest.c ssltestlib.c - INCLUDE[gosttest]=../include .. + INCLUDE[gosttest]=../include ../apps/include .. DEPEND[gosttest]=../libcrypto ../libssl libtestutil.a ENDIF diff --git a/test/testutil.h b/test/testutil.h index 9e08a42..ec2f532 100644 --- a/test/testutil.h +++ b/test/testutil.h @@ -15,7 +15,7 @@ #include #include #include -#include "../apps/opt.h" +#include "opt.h" /*- * Simple unit tests should implement setup_tests(). From yang.yang at baishancloud.com Wed Feb 13 06:31:26 2019 From: yang.yang at baishancloud.com (yang.yang at baishancloud.com) Date: Wed, 13 Feb 2019 06:31:26 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550039486.100676.732.nullmailer@dev.openssl.org> The branch master has been updated via b754a8a1590b8c5c9662c8a0ba49573991488b20 (commit) from 5674466e007d892ec55441059b3763abd5dd5440 (commit) - Log ----------------------------------------------------------------- commit b754a8a1590b8c5c9662c8a0ba49573991488b20 Author: Daniel DeFreez Date: Wed Feb 13 14:26:14 2019 +0800 Fix null pointer dereference in cms_RecipientInfo_kari_init CLA: trivial Reviewed-by: Bernd Edlinger Reviewed-by: Paul Yang Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8137) ----------------------------------------------------------------------- Summary of changes: crypto/cms/cms_kari.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crypto/cms/cms_kari.c b/crypto/cms/cms_kari.c index 4ee7017..9f1f5d5 100644 --- a/crypto/cms/cms_kari.c +++ b/crypto/cms/cms_kari.c @@ -282,7 +282,7 @@ static int cms_kari_create_ephemeral_key(CMS_KeyAgreeRecipientInfo *kari, return rv; } -/* Initialise a ktri based on passed certificate and key */ +/* Initialise a kari based on passed certificate and key */ int cms_RecipientInfo_kari_init(CMS_RecipientInfo *ri, X509 *recip, EVP_PKEY *pk, unsigned int flags) @@ -299,6 +299,9 @@ int cms_RecipientInfo_kari_init(CMS_RecipientInfo *ri, X509 *recip, kari->version = 3; rek = M_ASN1_new_of(CMS_RecipientEncryptedKey); + if (rek == NULL) + return 0; + if (!sk_CMS_RecipientEncryptedKey_push(kari->recipientEncryptedKeys, rek)) { M_ASN1_free_of(rek, CMS_RecipientEncryptedKey); return 0; From yang.yang at baishancloud.com Wed Feb 13 06:31:42 2019 From: yang.yang at baishancloud.com (yang.yang at baishancloud.com) Date: Wed, 13 Feb 2019 06:31:42 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550039502.904956.1572.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 851437094aca6067d425f7869751df41cde775fe (commit) from 2cf7fd698ec1375421f91338ff8a44e7da5238b6 (commit) - Log ----------------------------------------------------------------- commit 851437094aca6067d425f7869751df41cde775fe Author: Daniel DeFreez Date: Wed Feb 13 14:26:14 2019 +0800 Fix null pointer dereference in cms_RecipientInfo_kari_init CLA: trivial Reviewed-by: Bernd Edlinger Reviewed-by: Paul Yang Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8137) (cherry picked from commit b754a8a1590b8c5c9662c8a0ba49573991488b20) ----------------------------------------------------------------------- Summary of changes: crypto/cms/cms_kari.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crypto/cms/cms_kari.c b/crypto/cms/cms_kari.c index 3bc46fe..f104eec 100644 --- a/crypto/cms/cms_kari.c +++ b/crypto/cms/cms_kari.c @@ -282,7 +282,7 @@ static int cms_kari_create_ephemeral_key(CMS_KeyAgreeRecipientInfo *kari, return rv; } -/* Initialise a ktri based on passed certificate and key */ +/* Initialise a kari based on passed certificate and key */ int cms_RecipientInfo_kari_init(CMS_RecipientInfo *ri, X509 *recip, EVP_PKEY *pk, unsigned int flags) @@ -299,6 +299,9 @@ int cms_RecipientInfo_kari_init(CMS_RecipientInfo *ri, X509 *recip, kari->version = 3; rek = M_ASN1_new_of(CMS_RecipientEncryptedKey); + if (rek == NULL) + return 0; + if (!sk_CMS_RecipientEncryptedKey_push(kari->recipientEncryptedKeys, rek)) { M_ASN1_free_of(rek, CMS_RecipientEncryptedKey); return 0; From pauli at openssl.org Wed Feb 13 09:02:30 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Wed, 13 Feb 2019 09:02:30 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550048550.165672.17827.nullmailer@dev.openssl.org> The branch master has been updated via e0ae0585bee898184cbbe8144d2fa8ce25e8ca72 (commit) from b754a8a1590b8c5c9662c8a0ba49573991488b20 (commit) - Log ----------------------------------------------------------------- commit e0ae0585bee898184cbbe8144d2fa8ce25e8ca72 Author: Pauli Date: Wed Feb 13 16:11:16 2019 +1000 Sparse array limit testing: reduce the range limit for the number of bits in a sparse array pointer block. Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/8221) ----------------------------------------------------------------------- Summary of changes: crypto/sparse_array.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crypto/sparse_array.c b/crypto/sparse_array.c index 9255f9d..8c9efed 100644 --- a/crypto/sparse_array.c +++ b/crypto/sparse_array.c @@ -37,7 +37,7 @@ # else # define OPENSSL_SA_BLOCK_BITS 12 # endif -#elif OPENSSL_SA_BLOCK_BITS < 2 || OPENSSL_SA_BLOCK_BITS > BN_BITS2 +#elif OPENSSL_SA_BLOCK_BITS < 2 || OPENSSL_SA_BLOCK_BITS > (BN_BITS2 - 1) # error OPENSSL_SA_BLOCK_BITS is out of range #endif From levitte at openssl.org Wed Feb 13 11:12:12 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 13 Feb 2019 11:12:12 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550056332.383018.1790.nullmailer@dev.openssl.org> The branch master has been updated via 5a285addbf39f91d567f95f04b2b41764127950d (commit) from e0ae0585bee898184cbbe8144d2fa8ce25e8ca72 (commit) - Log ----------------------------------------------------------------- commit 5a285addbf39f91d567f95f04b2b41764127950d Author: David Makepeace Date: Fri Jun 22 07:16:18 2018 +1000 Added new EVP/KDF API. Changed PKEY/KDF API to call the new API. Added wrappers for PKCS5_PBKDF2_HMAC() and EVP_PBE_scrypt() to call the new EVP KDF APIs. Documentation updated. Reviewed-by: Paul Dale Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/6674) ----------------------------------------------------------------------- Summary of changes: CHANGES | 7 + crypto/err/openssl.txt | 25 ++ crypto/evp/build.info | 3 +- crypto/evp/e_chacha20_poly1305.c | 2 +- crypto/evp/encode.c | 2 +- crypto/evp/evp_err.c | 9 +- crypto/evp/evp_locl.h | 5 + crypto/evp/evp_pbe.c | 1 + crypto/evp/kdf_lib.c | 165 ++++++++ crypto/evp/p5_crpt2.c | 110 ++--- crypto/evp/pbe_scrypt.c | 242 ++--------- crypto/evp/pkey_kdf.c | 255 +++++++++++ crypto/include/internal/evp_int.h | 18 + crypto/kdf/build.info | 2 +- crypto/kdf/hkdf.c | 324 +++++++------- crypto/kdf/kdf_err.c | 28 +- crypto/kdf/kdf_local.h | 22 + crypto/kdf/kdf_util.c | 73 ++++ crypto/kdf/pbkdf2.c | 264 ++++++++++++ crypto/kdf/scrypt.c | 466 ++++++++++++++++----- crypto/kdf/tls1_prf.c | 193 +++++---- doc/man3/EVP_KDF_CTX.pod | 217 ++++++++++ doc/man7/EVP_KDF_HKDF.pod | 180 ++++++++ doc/man7/EVP_KDF_PBKDF2.pod | 78 ++++ doc/man7/{scrypt.pod => EVP_KDF_SCRYPT.pod} | 100 +++-- doc/man7/EVP_KDF_TLS1_PRF.pod | 142 +++++++ include/openssl/evperr.h | 8 +- include/openssl/kdf.h | 55 ++- include/openssl/kdferr.h | 21 +- include/openssl/ossl_typ.h | 2 + test/build.info | 7 +- test/evp_kdf_test.c | 237 +++++++++++ test/evp_test.c | 152 ++++++- test/pkey_meth_kdf_test.c | 80 ++-- test/recipes/30-test_evp.t | 4 +- test/recipes/30-test_evp_data/evpkdf.txt | 194 +++++++-- .../{evpkdf.txt => evppkey_kdf.txt} | 82 ++-- test/recipes/30-test_evp_kdf.t | 13 + util/libcrypto.num | 8 + util/private.num | 1 + 40 files changed, 2947 insertions(+), 850 deletions(-) create mode 100644 crypto/evp/kdf_lib.c create mode 100644 crypto/evp/pkey_kdf.c create mode 100644 crypto/kdf/kdf_local.h create mode 100644 crypto/kdf/kdf_util.c create mode 100644 crypto/kdf/pbkdf2.c create mode 100644 doc/man3/EVP_KDF_CTX.pod create mode 100644 doc/man7/EVP_KDF_HKDF.pod create mode 100644 doc/man7/EVP_KDF_PBKDF2.pod rename doc/man7/{scrypt.pod => EVP_KDF_SCRYPT.pod} (53%) create mode 100644 doc/man7/EVP_KDF_TLS1_PRF.pod create mode 100644 test/evp_kdf_test.c copy test/recipes/30-test_evp_data/{evpkdf.txt => evppkey_kdf.txt} (94%) create mode 100644 test/recipes/30-test_evp_kdf.t diff --git a/CHANGES b/CHANGES index 02258ce..d9a2e1b 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,13 @@ Changes between 1.1.1 and 3.0.0 [xx XXX xxxx] + *) Added EVP_KDF, an EVP layer KDF API, to simplify adding KDF and PRF + implementations. This includes an EVP_PKEY to EVP_KDF bridge for + those algorithms that were already supported through the EVP_PKEY API + (scrypt, TLS1 PRF and HKDF). The low-level KDF functions for PBKDF2 + and scrypt are now wrappers that call EVP_KDF. + [David Makepeace] + *) Build devcrypto engine as a dynamic engine. [Eneas U de Queiroz] diff --git a/crypto/err/openssl.txt b/crypto/err/openssl.txt index aaea598..a269ac6 100644 --- a/crypto/err/openssl.txt +++ b/crypto/err/openssl.txt @@ -753,6 +753,9 @@ EVP_F_EVP_DIGESTINIT_EX:128:EVP_DigestInit_ex EVP_F_EVP_ENCRYPTDECRYPTUPDATE:219:evp_EncryptDecryptUpdate EVP_F_EVP_ENCRYPTFINAL_EX:127:EVP_EncryptFinal_ex EVP_F_EVP_ENCRYPTUPDATE:167:EVP_EncryptUpdate +EVP_F_EVP_KDF_CTRL:224:EVP_KDF_ctrl +EVP_F_EVP_KDF_CTRL_STR:225:EVP_KDF_ctrl_str +EVP_F_EVP_KDF_CTX_NEW_ID:226:EVP_KDF_CTX_new_id EVP_F_EVP_MAC_CTRL:209:EVP_MAC_ctrl EVP_F_EVP_MAC_CTRL_STR:210:EVP_MAC_ctrl_str EVP_F_EVP_MAC_CTX_COPY:211:EVP_MAC_CTX_copy @@ -823,6 +826,7 @@ EVP_F_PKCS5_PBE_KEYIVGEN:117:PKCS5_PBE_keyivgen EVP_F_PKCS5_V2_PBE_KEYIVGEN:118:PKCS5_v2_PBE_keyivgen EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN:164:PKCS5_v2_PBKDF2_keyivgen EVP_F_PKCS5_V2_SCRYPT_KEYIVGEN:180:PKCS5_v2_scrypt_keyivgen +EVP_F_PKEY_KDF_CTRL:227:pkey_kdf_ctrl EVP_F_PKEY_MAC_INIT:214:pkey_mac_init EVP_F_PKEY_SET_TYPE:158:pkey_set_type EVP_F_POLY1305_CTRL:216:poly1305_ctrl @@ -830,7 +834,25 @@ EVP_F_RC2_MAGIC_TO_METH:109:rc2_magic_to_meth EVP_F_RC5_CTRL:125:rc5_ctrl EVP_F_S390X_AES_GCM_CTRL:201:s390x_aes_gcm_ctrl EVP_F_S390X_AES_GCM_TLS_CIPHER:208:s390x_aes_gcm_tls_cipher +EVP_F_SCRYPT_ALG:228:scrypt_alg EVP_F_UPDATE:173:update +KDF_F_HKDF_EXTRACT:112:HKDF_Extract +KDF_F_KDF_HKDF_DERIVE:113:kdf_hkdf_derive +KDF_F_KDF_HKDF_NEW:114:kdf_hkdf_new +KDF_F_KDF_HKDF_SIZE:115:kdf_hkdf_size +KDF_F_KDF_MD2CTRL:116:kdf_md2ctrl +KDF_F_KDF_PBKDF2_CTRL_STR:117:kdf_pbkdf2_ctrl_str +KDF_F_KDF_PBKDF2_DERIVE:118:kdf_pbkdf2_derive +KDF_F_KDF_PBKDF2_NEW:119:kdf_pbkdf2_new +KDF_F_KDF_SCRYPT_CTRL_STR:120:kdf_scrypt_ctrl_str +KDF_F_KDF_SCRYPT_CTRL_UINT32:121:kdf_scrypt_ctrl_uint32 +KDF_F_KDF_SCRYPT_CTRL_UINT64:122:kdf_scrypt_ctrl_uint64 +KDF_F_KDF_SCRYPT_DERIVE:123:kdf_scrypt_derive +KDF_F_KDF_SCRYPT_NEW:124:kdf_scrypt_new +KDF_F_KDF_TLS1_PRF_CTRL_STR:125:kdf_tls1_prf_ctrl_str +KDF_F_KDF_TLS1_PRF_DERIVE:126:kdf_tls1_prf_derive +KDF_F_KDF_TLS1_PRF_NEW:127:kdf_tls1_prf_new +KDF_F_PBKDF2_SET_MEMBUF:128:pbkdf2_set_membuf KDF_F_PKEY_HKDF_CTRL_STR:103:pkey_hkdf_ctrl_str KDF_F_PKEY_HKDF_DERIVE:102:pkey_hkdf_derive KDF_F_PKEY_HKDF_INIT:108:pkey_hkdf_init @@ -842,6 +864,7 @@ KDF_F_PKEY_SCRYPT_SET_MEMBUF:107:pkey_scrypt_set_membuf KDF_F_PKEY_TLS1_PRF_CTRL_STR:100:pkey_tls1_prf_ctrl_str KDF_F_PKEY_TLS1_PRF_DERIVE:101:pkey_tls1_prf_derive KDF_F_PKEY_TLS1_PRF_INIT:110:pkey_tls1_prf_init +KDF_F_SCRYPT_SET_MEMBUF:129:scrypt_set_membuf KDF_F_TLS1_PRF_ALG:111:tls1_prf_alg OBJ_F_OBJ_ADD_OBJECT:105:OBJ_add_object OBJ_F_OBJ_ADD_SIGID:107:OBJ_add_sigid @@ -2284,6 +2307,7 @@ EVP_R_ONLY_ONESHOT_SUPPORTED:177:only oneshot supported EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE:150:\ operation not supported for this keytype EVP_R_OPERATON_NOT_INITIALIZED:151:operaton not initialized +EVP_R_PARAMETER_TOO_LARGE:187:parameter too large EVP_R_PARTIALLY_OVERLAPPING:162:partially overlapping buffers EVP_R_PBKDF2_ERROR:181:pbkdf2 error EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED:179:\ @@ -2320,6 +2344,7 @@ KDF_R_MISSING_SEED:106:missing seed KDF_R_UNKNOWN_PARAMETER_TYPE:103:unknown parameter type KDF_R_VALUE_ERROR:108:value error KDF_R_VALUE_MISSING:102:value missing +KDF_R_WRONG_OUTPUT_BUFFER_SIZE:112:wrong output buffer size OBJ_R_OID_EXISTS:102:oid exists OBJ_R_UNKNOWN_NID:101:unknown nid OCSP_R_CERTIFICATE_VERIFY_ERROR:101:certificate verify error diff --git a/crypto/evp/build.info b/crypto/evp/build.info index 84193b0..862afa8 100644 --- a/crypto/evp/build.info +++ b/crypto/evp/build.info @@ -9,7 +9,8 @@ SOURCE[../../libcrypto]=\ p_open.c p_seal.c p_sign.c p_verify.c p_lib.c p_enc.c p_dec.c \ bio_md.c bio_b64.c bio_enc.c evp_err.c e_null.c \ c_allc.c c_alld.c evp_lib.c bio_ok.c \ - evp_pkey.c evp_pbe.c p5_crpt.c p5_crpt2.c pbe_scrypt.c \ + evp_pkey.c kdf_lib.c evp_pbe.c p5_crpt.c p5_crpt2.c pbe_scrypt.c \ + pkey_kdf.c \ e_old.c pmeth_lib.c pmeth_fn.c pmeth_gn.c m_sigver.c \ e_aes_cbc_hmac_sha1.c e_aes_cbc_hmac_sha256.c e_rc4_hmac_md5.c \ e_chacha20_poly1305.c cmeth_lib.c \ diff --git a/crypto/evp/e_chacha20_poly1305.c b/crypto/evp/e_chacha20_poly1305.c index 0d4612f..e8a323f 100644 --- a/crypto/evp/e_chacha20_poly1305.c +++ b/crypto/evp/e_chacha20_poly1305.c @@ -14,8 +14,8 @@ # include # include -# include "evp_locl.h" # include "internal/evp_int.h" +# include "evp_locl.h" # include "internal/chacha.h" typedef struct { diff --git a/crypto/evp/encode.c b/crypto/evp/encode.c index 5a54a9f..3519e3b 100644 --- a/crypto/evp/encode.c +++ b/crypto/evp/encode.c @@ -11,8 +11,8 @@ #include #include "internal/cryptlib.h" #include -#include "evp_locl.h" #include "internal/evp_int.h" +#include "evp_locl.h" static unsigned char conv_ascii2bin(unsigned char a, const unsigned char *table); diff --git a/crypto/evp/evp_err.c b/crypto/evp/evp_err.c index a4dd97b..ef889b0 100644 --- a/crypto/evp/evp_err.c +++ b/crypto/evp/evp_err.c @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -60,6 +60,9 @@ static const ERR_STRING_DATA EVP_str_functs[] = { {ERR_PACK(ERR_LIB_EVP, EVP_F_EVP_ENCRYPTFINAL_EX, 0), "EVP_EncryptFinal_ex"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_EVP_ENCRYPTUPDATE, 0), "EVP_EncryptUpdate"}, + {ERR_PACK(ERR_LIB_EVP, EVP_F_EVP_KDF_CTRL, 0), "EVP_KDF_ctrl"}, + {ERR_PACK(ERR_LIB_EVP, EVP_F_EVP_KDF_CTRL_STR, 0), "EVP_KDF_ctrl_str"}, + {ERR_PACK(ERR_LIB_EVP, EVP_F_EVP_KDF_CTX_NEW_ID, 0), "EVP_KDF_CTX_new_id"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_EVP_MAC_CTRL, 0), "EVP_MAC_ctrl"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_EVP_MAC_CTRL_STR, 0), "EVP_MAC_ctrl_str"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_EVP_MAC_CTX_COPY, 0), "EVP_MAC_CTX_copy"}, @@ -159,6 +162,7 @@ static const ERR_STRING_DATA EVP_str_functs[] = { "PKCS5_v2_PBKDF2_keyivgen"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_PKCS5_V2_SCRYPT_KEYIVGEN, 0), "PKCS5_v2_scrypt_keyivgen"}, + {ERR_PACK(ERR_LIB_EVP, EVP_F_PKEY_KDF_CTRL, 0), "pkey_kdf_ctrl"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_PKEY_MAC_INIT, 0), "pkey_mac_init"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_PKEY_SET_TYPE, 0), "pkey_set_type"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_POLY1305_CTRL, 0), "poly1305_ctrl"}, @@ -167,6 +171,7 @@ static const ERR_STRING_DATA EVP_str_functs[] = { {ERR_PACK(ERR_LIB_EVP, EVP_F_S390X_AES_GCM_CTRL, 0), "s390x_aes_gcm_ctrl"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_S390X_AES_GCM_TLS_CIPHER, 0), "s390x_aes_gcm_tls_cipher"}, + {ERR_PACK(ERR_LIB_EVP, EVP_F_SCRYPT_ALG, 0), "scrypt_alg"}, {ERR_PACK(ERR_LIB_EVP, EVP_F_UPDATE, 0), "update"}, {0, NULL} }; @@ -254,6 +259,8 @@ static const ERR_STRING_DATA EVP_str_reasons[] = { "operation not supported for this keytype"}, {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_OPERATON_NOT_INITIALIZED), "operaton not initialized"}, + {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_PARAMETER_TOO_LARGE), + "parameter too large"}, {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_PARTIALLY_OVERLAPPING), "partially overlapping buffers"}, {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_PBKDF2_ERROR), "pbkdf2 error"}, diff --git a/crypto/evp/evp_locl.h b/crypto/evp/evp_locl.h index fe69067..95a9d5c 100644 --- a/crypto/evp/evp_locl.h +++ b/crypto/evp/evp_locl.h @@ -46,6 +46,11 @@ struct evp_mac_ctx_st { void *data; /* Individual method data */ } /* EVP_MAC_CTX */; +struct evp_kdf_ctx_st { + const EVP_KDF_METHOD *kmeth; + EVP_KDF_IMPL *impl; /* Algorithm-specific data */ +} /* EVP_KDF_CTX */ ; + int PKCS5_v2_PBKDF2_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, ASN1_TYPE *param, const EVP_CIPHER *c, const EVP_MD *md, diff --git a/crypto/evp/evp_pbe.c b/crypto/evp/evp_pbe.c index eb099ab..8162a5e 100644 --- a/crypto/evp/evp_pbe.c +++ b/crypto/evp/evp_pbe.c @@ -12,6 +12,7 @@ #include #include #include +#include "internal/evp_int.h" #include "evp_locl.h" /* Password based encryption (PBE) functions */ diff --git a/crypto/evp/kdf_lib.c b/crypto/evp/kdf_lib.c new file mode 100644 index 0000000..05f5cec --- /dev/null +++ b/crypto/evp/kdf_lib.c @@ -0,0 +1,165 @@ +/* + * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include +#include "internal/cryptlib.h" +#include +#include +#include +#include +#include "internal/asn1_int.h" +#include "internal/evp_int.h" +#include "internal/numbers.h" +#include "evp_locl.h" + +typedef int sk_cmp_fn_type(const char *const *a, const char *const *b); + +/* This array needs to be in order of NIDs */ +static const EVP_KDF_METHOD *standard_methods[] = { + &pbkdf2_kdf_meth, +#ifndef OPENSSL_NO_SCRYPT + &scrypt_kdf_meth, +#endif + &tls1_prf_kdf_meth, + &hkdf_kdf_meth +}; + +DECLARE_OBJ_BSEARCH_CMP_FN(const EVP_KDF_METHOD *, const EVP_KDF_METHOD *, + kmeth); + +static int kmeth_cmp(const EVP_KDF_METHOD *const *a, + const EVP_KDF_METHOD *const *b) +{ + return ((*a)->type - (*b)->type); +} + +IMPLEMENT_OBJ_BSEARCH_CMP_FN(const EVP_KDF_METHOD *, const EVP_KDF_METHOD *, + kmeth); + +static const EVP_KDF_METHOD *kdf_meth_find(int type) +{ + EVP_KDF_METHOD tmp; + const EVP_KDF_METHOD *t = &tmp, **ret; + + tmp.type = type; + ret = OBJ_bsearch_kmeth(&t, standard_methods, + OSSL_NELEM(standard_methods)); + if (ret == NULL || *ret == NULL) + return NULL; + + return *ret; +} + +EVP_KDF_CTX *EVP_KDF_CTX_new_id(int id) +{ + EVP_KDF_CTX *ret; + const EVP_KDF_METHOD *kmeth; + + kmeth = kdf_meth_find(id); + if (kmeth == NULL) { + EVPerr(EVP_F_EVP_KDF_CTX_NEW_ID, EVP_R_UNSUPPORTED_ALGORITHM); + return NULL; + } + + ret = OPENSSL_zalloc(sizeof(*ret)); + if (ret == NULL) { + EVPerr(EVP_F_EVP_KDF_CTX_NEW_ID, ERR_R_MALLOC_FAILURE); + return NULL; + } + + if (kmeth->new != NULL && (ret->impl = kmeth->new()) == NULL) { + EVP_KDF_CTX_free(ret); + return NULL; + } + + ret->kmeth = kmeth; + return ret; +} + +void EVP_KDF_CTX_free(EVP_KDF_CTX *ctx) +{ + if (ctx == NULL) + return; + + ctx->kmeth->free(ctx->impl); + OPENSSL_free(ctx); +} + +void EVP_KDF_reset(EVP_KDF_CTX *ctx) +{ + if (ctx == NULL) + return; + + if (ctx->kmeth->reset != NULL) + ctx->kmeth->reset(ctx->impl); +} + +int EVP_KDF_ctrl(EVP_KDF_CTX *ctx, int cmd, ...) +{ + int ret; + va_list args; + + va_start(args, cmd); + ret = EVP_KDF_vctrl(ctx, cmd, args); + va_end(args); + + if (ret == -2) + EVPerr(EVP_F_EVP_KDF_CTRL, EVP_R_COMMAND_NOT_SUPPORTED); + + return ret; +} + +int EVP_KDF_vctrl(EVP_KDF_CTX *ctx, int cmd, va_list args) +{ + if (ctx == NULL) + return 0; + + return ctx->kmeth->ctrl(ctx->impl, cmd, args); +} + +int EVP_KDF_ctrl_str(EVP_KDF_CTX *ctx, const char *type, const char *value) +{ + int ret; + + if (ctx == NULL) + return 0; + + if (ctx->kmeth->ctrl_str == NULL) { + EVPerr(EVP_F_EVP_KDF_CTRL_STR, EVP_R_COMMAND_NOT_SUPPORTED); + return -2; + } + + ret = ctx->kmeth->ctrl_str(ctx->impl, type, value); + if (ret == -2) + EVPerr(EVP_F_EVP_KDF_CTRL_STR, EVP_R_COMMAND_NOT_SUPPORTED); + + return ret; +} + +size_t EVP_KDF_size(EVP_KDF_CTX *ctx) +{ + if (ctx == NULL) + return 0; + + if (ctx->kmeth->size == NULL) + return SIZE_MAX; + + return ctx->kmeth->size(ctx->impl); +} + +int EVP_KDF_derive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen) +{ + if (ctx == NULL) + return 0; + + return ctx->kmeth->derive(ctx->impl, key, keylen); +} + diff --git a/crypto/evp/p5_crpt2.c b/crypto/evp/p5_crpt2.c index a5a1559..4210e51 100644 --- a/crypto/evp/p5_crpt2.c +++ b/crypto/evp/p5_crpt2.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -10,105 +10,51 @@ #include #include #include "internal/cryptlib.h" -# include -# include -# include -# include "evp_locl.h" +#include +#include +#include +#include +#include "internal/evp_int.h" +#include "evp_locl.h" /* set this to print out info about the keygen algorithm */ /* #define OPENSSL_DEBUG_PKCS5V2 */ -# ifdef OPENSSL_DEBUG_PKCS5V2 +#ifdef OPENSSL_DEBUG_PKCS5V2 static void h__dump(const unsigned char *p, int len); -# endif - -/* - * This is an implementation of PKCS#5 v2.0 password based encryption key - * derivation function PBKDF2. SHA1 version verified against test vectors - * posted by Peter Gutmann to the PKCS-TNG mailing list. - */ +#endif int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, const unsigned char *salt, int saltlen, int iter, const EVP_MD *digest, int keylen, unsigned char *out) { const char *empty = ""; - unsigned char digtmp[EVP_MAX_MD_SIZE], *p, itmp[4]; - int cplen, j, k, tkeylen, mdlen; - unsigned long i = 1; - HMAC_CTX *hctx_tpl = NULL, *hctx = NULL; - - mdlen = EVP_MD_size(digest); - if (mdlen < 0) - return 0; + int rv = 1; + EVP_KDF_CTX *kctx; - hctx_tpl = HMAC_CTX_new(); - if (hctx_tpl == NULL) - return 0; - p = out; - tkeylen = keylen; + /* Keep documented behaviour. */ if (pass == NULL) { pass = empty; passlen = 0; } else if (passlen == -1) { passlen = strlen(pass); } - if (!HMAC_Init_ex(hctx_tpl, pass, passlen, digest, NULL)) { - HMAC_CTX_free(hctx_tpl); - return 0; - } - hctx = HMAC_CTX_new(); - if (hctx == NULL) { - HMAC_CTX_free(hctx_tpl); + if (salt == NULL && saltlen == 0) + salt = (unsigned char *)empty; + + kctx = EVP_KDF_CTX_new_id(EVP_KDF_PBKDF2); + if (kctx == NULL) return 0; - } - while (tkeylen) { - if (tkeylen > mdlen) - cplen = mdlen; - else - cplen = tkeylen; - /* - * We are unlikely to ever use more than 256 blocks (5120 bits!) but - * just in case... - */ - itmp[0] = (unsigned char)((i >> 24) & 0xff); - itmp[1] = (unsigned char)((i >> 16) & 0xff); - itmp[2] = (unsigned char)((i >> 8) & 0xff); - itmp[3] = (unsigned char)(i & 0xff); - if (!HMAC_CTX_copy(hctx, hctx_tpl)) { - HMAC_CTX_free(hctx); - HMAC_CTX_free(hctx_tpl); - return 0; - } - if (!HMAC_Update(hctx, salt, saltlen) - || !HMAC_Update(hctx, itmp, 4) - || !HMAC_Final(hctx, digtmp, NULL)) { - HMAC_CTX_free(hctx); - HMAC_CTX_free(hctx_tpl); - return 0; - } - memcpy(p, digtmp, cplen); - for (j = 1; j < iter; j++) { - if (!HMAC_CTX_copy(hctx, hctx_tpl)) { - HMAC_CTX_free(hctx); - HMAC_CTX_free(hctx_tpl); - return 0; - } - if (!HMAC_Update(hctx, digtmp, mdlen) - || !HMAC_Final(hctx, digtmp, NULL)) { - HMAC_CTX_free(hctx); - HMAC_CTX_free(hctx_tpl); - return 0; - } - for (k = 0; k < cplen; k++) - p[k] ^= digtmp[k]; - } - tkeylen -= cplen; - i++; - p += cplen; - } - HMAC_CTX_free(hctx); - HMAC_CTX_free(hctx_tpl); + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_PASS, pass, (size_t)passlen) != 1 + || EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SALT, + salt, (size_t)saltlen) != 1 + || EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_ITER, iter) != 1 + || EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_MD, digest) != 1 + || EVP_KDF_derive(kctx, out, keylen) != 1) + rv = 0; + + EVP_KDF_CTX_free(kctx); + # ifdef OPENSSL_DEBUG_PKCS5V2 fprintf(stderr, "Password:\n"); h__dump(pass, passlen); @@ -118,7 +64,7 @@ int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, fprintf(stderr, "Key:\n"); h__dump(out, keylen); # endif - return 1; + return rv; } int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, diff --git a/crypto/evp/pbe_scrypt.c b/crypto/evp/pbe_scrypt.c index 0a39432..f8ea1fa 100644 --- a/crypto/evp/pbe_scrypt.c +++ b/crypto/evp/pbe_scrypt.c @@ -7,135 +7,12 @@ * https://www.openssl.org/source/license.html */ -#include -#include -#include #include #include -#include "internal/numbers.h" +#include #ifndef OPENSSL_NO_SCRYPT -#define R(a,b) (((a) << (b)) | ((a) >> (32 - (b)))) -static void salsa208_word_specification(uint32_t inout[16]) -{ - int i; - uint32_t x[16]; - memcpy(x, inout, sizeof(x)); - for (i = 8; i > 0; i -= 2) { - x[4] ^= R(x[0] + x[12], 7); - x[8] ^= R(x[4] + x[0], 9); - x[12] ^= R(x[8] + x[4], 13); - x[0] ^= R(x[12] + x[8], 18); - x[9] ^= R(x[5] + x[1], 7); - x[13] ^= R(x[9] + x[5], 9); - x[1] ^= R(x[13] + x[9], 13); - x[5] ^= R(x[1] + x[13], 18); - x[14] ^= R(x[10] + x[6], 7); - x[2] ^= R(x[14] + x[10], 9); - x[6] ^= R(x[2] + x[14], 13); - x[10] ^= R(x[6] + x[2], 18); - x[3] ^= R(x[15] + x[11], 7); - x[7] ^= R(x[3] + x[15], 9); - x[11] ^= R(x[7] + x[3], 13); - x[15] ^= R(x[11] + x[7], 18); - x[1] ^= R(x[0] + x[3], 7); - x[2] ^= R(x[1] + x[0], 9); - x[3] ^= R(x[2] + x[1], 13); - x[0] ^= R(x[3] + x[2], 18); - x[6] ^= R(x[5] + x[4], 7); - x[7] ^= R(x[6] + x[5], 9); - x[4] ^= R(x[7] + x[6], 13); - x[5] ^= R(x[4] + x[7], 18); - x[11] ^= R(x[10] + x[9], 7); - x[8] ^= R(x[11] + x[10], 9); - x[9] ^= R(x[8] + x[11], 13); - x[10] ^= R(x[9] + x[8], 18); - x[12] ^= R(x[15] + x[14], 7); - x[13] ^= R(x[12] + x[15], 9); - x[14] ^= R(x[13] + x[12], 13); - x[15] ^= R(x[14] + x[13], 18); - } - for (i = 0; i < 16; ++i) - inout[i] += x[i]; - OPENSSL_cleanse(x, sizeof(x)); -} - -static void scryptBlockMix(uint32_t *B_, uint32_t *B, uint64_t r) -{ - uint64_t i, j; - uint32_t X[16], *pB; - - memcpy(X, B + (r * 2 - 1) * 16, sizeof(X)); - pB = B; - for (i = 0; i < r * 2; i++) { - for (j = 0; j < 16; j++) - X[j] ^= *pB++; - salsa208_word_specification(X); - memcpy(B_ + (i / 2 + (i & 1) * r) * 16, X, sizeof(X)); - } - OPENSSL_cleanse(X, sizeof(X)); -} - -static void scryptROMix(unsigned char *B, uint64_t r, uint64_t N, - uint32_t *X, uint32_t *T, uint32_t *V) -{ - unsigned char *pB; - uint32_t *pV; - uint64_t i, k; - - /* Convert from little endian input */ - for (pV = V, i = 0, pB = B; i < 32 * r; i++, pV++) { - *pV = *pB++; - *pV |= *pB++ << 8; - *pV |= *pB++ << 16; - *pV |= (uint32_t)*pB++ << 24; - } - - for (i = 1; i < N; i++, pV += 32 * r) - scryptBlockMix(pV, pV - 32 * r, r); - - scryptBlockMix(X, V + (N - 1) * 32 * r, r); - - for (i = 0; i < N; i++) { - uint32_t j; - j = X[16 * (2 * r - 1)] % N; - pV = V + 32 * r * j; - for (k = 0; k < 32 * r; k++) - T[k] = X[k] ^ *pV++; - scryptBlockMix(X, T, r); - } - /* Convert output to little endian */ - for (i = 0, pB = B; i < 32 * r; i++) { - uint32_t xtmp = X[i]; - *pB++ = xtmp & 0xff; - *pB++ = (xtmp >> 8) & 0xff; - *pB++ = (xtmp >> 16) & 0xff; - *pB++ = (xtmp >> 24) & 0xff; - } -} - -#ifndef SIZE_MAX -# define SIZE_MAX ((size_t)-1) -#endif - -/* - * Maximum power of two that will fit in uint64_t: this should work on - * most (all?) platforms. - */ - -#define LOG2_UINT64_MAX (sizeof(uint64_t) * 8 - 1) - -/* - * Maximum value of p * r: - * p <= ((2^32-1) * hLen) / MFLen => - * p <= ((2^32-1) * 32) / (128 * r) => - * p * r <= (2^30-1) - * - */ - -#define SCRYPT_PR_MAX ((1 << 30) - 1) - /* * Maximum permitted memory allow this to be overridden with Configuration * option: e.g. -DSCRYPT_MAX_MEM=0 for maximum possible. @@ -160,107 +37,38 @@ int EVP_PBE_scrypt(const char *pass, size_t passlen, uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, unsigned char *key, size_t keylen) { - int rv = 0; - unsigned char *B; - uint32_t *X, *V, *T; - uint64_t i, Blen, Vlen; - - /* Sanity check parameters */ - /* initial check, r,p must be non zero, N >= 2 and a power of 2 */ - if (r == 0 || p == 0 || N < 2 || (N & (N - 1))) - return 0; - /* Check p * r < SCRYPT_PR_MAX avoiding overflow */ - if (p > SCRYPT_PR_MAX / r) { - EVPerr(EVP_F_EVP_PBE_SCRYPT, EVP_R_MEMORY_LIMIT_EXCEEDED); - return 0; - } - - /* - * Need to check N: if 2^(128 * r / 8) overflows limit this is - * automatically satisfied since N <= UINT64_MAX. - */ - - if (16 * r <= LOG2_UINT64_MAX) { - if (N >= (((uint64_t)1) << (16 * r))) { - EVPerr(EVP_F_EVP_PBE_SCRYPT, EVP_R_MEMORY_LIMIT_EXCEEDED); - return 0; - } + const char *empty = ""; + int rv = 1; + EVP_KDF_CTX *kctx; + + /* Maintain existing behaviour. */ + if (pass == NULL) { + pass = empty; + passlen = 0; } - - /* Memory checks: check total allocated buffer size fits in uint64_t */ - - /* - * B size in section 5 step 1.S - * Note: we know p * 128 * r < UINT64_MAX because we already checked - * p * r < SCRYPT_PR_MAX - */ - Blen = p * 128 * r; - /* - * Yet we pass it as integer to PKCS5_PBKDF2_HMAC... [This would - * have to be revised when/if PKCS5_PBKDF2_HMAC accepts size_t.] - */ - if (Blen > INT_MAX) { - EVPerr(EVP_F_EVP_PBE_SCRYPT, EVP_R_MEMORY_LIMIT_EXCEEDED); - return 0; - } - - /* - * Check 32 * r * (N + 2) * sizeof(uint32_t) fits in uint64_t - * This is combined size V, X and T (section 4) - */ - i = UINT64_MAX / (32 * sizeof(uint32_t)); - if (N + 2 > i / r) { - EVPerr(EVP_F_EVP_PBE_SCRYPT, EVP_R_MEMORY_LIMIT_EXCEEDED); - return 0; - } - Vlen = 32 * r * (N + 2) * sizeof(uint32_t); - - /* check total allocated size fits in uint64_t */ - if (Blen > UINT64_MAX - Vlen) { - EVPerr(EVP_F_EVP_PBE_SCRYPT, EVP_R_MEMORY_LIMIT_EXCEEDED); - return 0; - } - if (maxmem == 0) maxmem = SCRYPT_MAX_MEM; - /* Check that the maximum memory doesn't exceed a size_t limits */ - if (maxmem > SIZE_MAX) - maxmem = SIZE_MAX; - - if (Blen + Vlen > maxmem) { - EVPerr(EVP_F_EVP_PBE_SCRYPT, EVP_R_MEMORY_LIMIT_EXCEEDED); + kctx = EVP_KDF_CTX_new_id(EVP_KDF_SCRYPT); + if (kctx == NULL) return 0; - } - - /* If no key return to indicate parameters are OK */ - if (key == NULL) - return 1; - B = OPENSSL_malloc((size_t)(Blen + Vlen)); - if (B == NULL) { - EVPerr(EVP_F_EVP_PBE_SCRYPT, ERR_R_MALLOC_FAILURE); + if (r > UINT32_MAX || p > UINT32_MAX) { + EVPerr(EVP_F_EVP_PBE_SCRYPT, EVP_R_PARAMETER_TOO_LARGE); return 0; } - X = (uint32_t *)(B + Blen); - T = X + 32 * r; - V = T + 32 * r; - if (PKCS5_PBKDF2_HMAC(pass, passlen, salt, saltlen, 1, EVP_sha256(), - (int)Blen, B) == 0) - goto err; - - for (i = 0; i < p; i++) - scryptROMix(B + 128 * r * i, r, N, X, T, V); - - if (PKCS5_PBKDF2_HMAC(pass, passlen, B, (int)Blen, 1, EVP_sha256(), - keylen, key) == 0) - goto err; - rv = 1; - err: - if (rv == 0) - EVPerr(EVP_F_EVP_PBE_SCRYPT, EVP_R_PBKDF2_ERROR); - - OPENSSL_clear_free(B, (size_t)(Blen + Vlen)); + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_PASS, pass, (size_t)passlen) != 1 + || EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SALT, + salt, (size_t)saltlen) != 1 + || EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SCRYPT_N, N) != 1 + || EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SCRYPT_R, (uint32_t)r) != 1 + || EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SCRYPT_P, (uint32_t)p) != 1 + || EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_MAXMEM_BYTES, maxmem) != 1 + || EVP_KDF_derive(kctx, key, keylen) != 1) + rv = 0; + + EVP_KDF_CTX_free(kctx); return rv; } + #endif diff --git a/crypto/evp/pkey_kdf.c b/crypto/evp/pkey_kdf.c new file mode 100644 index 0000000..ddb682c --- /dev/null +++ b/crypto/evp/pkey_kdf.c @@ -0,0 +1,255 @@ +/* + * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include +#include +#include +#include "internal/evp_int.h" + +static int pkey_kdf_init(EVP_PKEY_CTX *ctx) +{ + EVP_KDF_CTX *kctx; + + kctx = EVP_KDF_CTX_new_id(ctx->pmeth->pkey_id); + if (kctx == NULL) + return 0; + + ctx->data = kctx; + return 1; +} + +static void pkey_kdf_cleanup(EVP_PKEY_CTX *ctx) +{ + EVP_KDF_CTX *kctx = ctx->data; + + EVP_KDF_CTX_free(kctx); +} + +static int pkey_kdf_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) +{ + EVP_KDF_CTX *kctx = ctx->data; + uint64_t u64_value; + int cmd; + int ret; + + switch (type) { + case EVP_PKEY_CTRL_PASS: + cmd = EVP_KDF_CTRL_SET_PASS; + break; + case EVP_PKEY_CTRL_HKDF_SALT: + case EVP_PKEY_CTRL_SCRYPT_SALT: + cmd = EVP_KDF_CTRL_SET_SALT; + break; + case EVP_PKEY_CTRL_TLS_MD: + case EVP_PKEY_CTRL_HKDF_MD: + cmd = EVP_KDF_CTRL_SET_MD; + break; + case EVP_PKEY_CTRL_TLS_SECRET: + cmd = EVP_KDF_CTRL_SET_TLS_SECRET; + ret = EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_RESET_TLS_SEED); + if (ret < 1) + return ret; + break; + case EVP_PKEY_CTRL_TLS_SEED: + cmd = EVP_KDF_CTRL_ADD_TLS_SEED; + break; + case EVP_PKEY_CTRL_HKDF_KEY: + cmd = EVP_KDF_CTRL_SET_KEY; + break; + case EVP_PKEY_CTRL_HKDF_INFO: + cmd = EVP_KDF_CTRL_ADD_HKDF_INFO; + break; + case EVP_PKEY_CTRL_HKDF_MODE: + cmd = EVP_KDF_CTRL_SET_HKDF_MODE; + break; + case EVP_PKEY_CTRL_SCRYPT_N: + cmd = EVP_KDF_CTRL_SET_SCRYPT_N; + break; + case EVP_PKEY_CTRL_SCRYPT_R: + cmd = EVP_KDF_CTRL_SET_SCRYPT_R; + break; + case EVP_PKEY_CTRL_SCRYPT_P: + cmd = EVP_KDF_CTRL_SET_SCRYPT_P; + break; + case EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES: + cmd = EVP_KDF_CTRL_SET_MAXMEM_BYTES; + break; + default: + return -2; + } + + switch (cmd) { + case EVP_KDF_CTRL_SET_PASS: + case EVP_KDF_CTRL_SET_SALT: + case EVP_KDF_CTRL_SET_KEY: + case EVP_KDF_CTRL_SET_TLS_SECRET: + case EVP_KDF_CTRL_ADD_TLS_SEED: + case EVP_KDF_CTRL_ADD_HKDF_INFO: + return EVP_KDF_ctrl(kctx, cmd, (const unsigned char *)p2, (size_t)p1); + + case EVP_KDF_CTRL_SET_MD: + return EVP_KDF_ctrl(kctx, cmd, (const EVP_MD *)p2); + + case EVP_KDF_CTRL_SET_HKDF_MODE: + return EVP_KDF_ctrl(kctx, cmd, (int)p1); + + case EVP_KDF_CTRL_SET_SCRYPT_R: + case EVP_KDF_CTRL_SET_SCRYPT_P: + u64_value = *(uint64_t *)p2; + if (u64_value > UINT32_MAX) { + EVPerr(EVP_F_PKEY_KDF_CTRL, EVP_R_PARAMETER_TOO_LARGE); + return 0; + } + + return EVP_KDF_ctrl(kctx, cmd, (uint32_t)u64_value); + + case EVP_KDF_CTRL_SET_SCRYPT_N: + case EVP_KDF_CTRL_SET_MAXMEM_BYTES: + return EVP_KDF_ctrl(kctx, cmd, *(uint64_t *)p2); + + default: + return 0; + } +} + +static int pkey_kdf_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, + const char *value) +{ + EVP_KDF_CTX *kctx = ctx->data; + + if (strcmp(type, "md") == 0) + return EVP_KDF_ctrl_str(kctx, "digest", value); + return EVP_KDF_ctrl_str(kctx, type, value); +} + +static int pkey_kdf_derive_init(EVP_PKEY_CTX *ctx) +{ + EVP_KDF_CTX *kctx = ctx->data; + + EVP_KDF_reset(kctx); + return 1; +} + +/* + * For fixed-output algorithms the keylen parameter is an "out" parameter + * otherwise it is an "in" parameter. + */ +static int pkey_kdf_derive(EVP_PKEY_CTX *ctx, unsigned char *key, + size_t *keylen) +{ + EVP_KDF_CTX *kctx = ctx->data; + size_t outlen = EVP_KDF_size(kctx); + + if (outlen == 0 || outlen == SIZE_MAX) { + /* Variable-output algorithm */ + if (key == NULL) + return 0; + } else { + /* Fixed-output algorithm */ + *keylen = outlen; + if (key == NULL) + return 1; + } + return EVP_KDF_derive(kctx, key, *keylen); +} + +#ifndef OPENSSL_NO_SCRYPT +const EVP_PKEY_METHOD scrypt_pkey_meth = { + EVP_PKEY_SCRYPT, + 0, + pkey_kdf_init, + 0, + pkey_kdf_cleanup, + + 0, 0, + 0, 0, + + 0, + 0, + + 0, + 0, + + 0, 0, + + 0, 0, 0, 0, + + 0, 0, + + 0, 0, + + pkey_kdf_derive_init, + pkey_kdf_derive, + pkey_kdf_ctrl, + pkey_kdf_ctrl_str +}; +#endif + +const EVP_PKEY_METHOD tls1_prf_pkey_meth = { + EVP_PKEY_TLS1_PRF, + 0, + pkey_kdf_init, + 0, + pkey_kdf_cleanup, + + 0, 0, + 0, 0, + + 0, + 0, + + 0, + 0, + + 0, 0, + + 0, 0, 0, 0, + + 0, 0, + + 0, 0, + + pkey_kdf_derive_init, + pkey_kdf_derive, + pkey_kdf_ctrl, + pkey_kdf_ctrl_str +}; + +const EVP_PKEY_METHOD hkdf_pkey_meth = { + EVP_PKEY_HKDF, + 0, + pkey_kdf_init, + 0, + pkey_kdf_cleanup, + + 0, 0, + 0, 0, + + 0, + 0, + + 0, + 0, + + 0, 0, + + 0, 0, 0, 0, + + 0, 0, + + 0, 0, + + pkey_kdf_derive_init, + pkey_kdf_derive, + pkey_kdf_ctrl, + pkey_kdf_ctrl_str +}; + diff --git a/crypto/include/internal/evp_int.h b/crypto/include/internal/evp_int.h index 189d8aa..b3dbbe2 100644 --- a/crypto/include/internal/evp_int.h +++ b/crypto/include/internal/evp_int.h @@ -151,6 +151,24 @@ const EVP_MD *evp_keccak_kmac256(void); */ int EVP_add_mac(const EVP_MAC *mac); +/* struct evp_kdf_impl_st is defined by the implementation */ +typedef struct evp_kdf_impl_st EVP_KDF_IMPL; +typedef struct { + int type; + EVP_KDF_IMPL *(*new) (void); + void (*free) (EVP_KDF_IMPL *impl); + void (*reset) (EVP_KDF_IMPL *impl); + int (*ctrl) (EVP_KDF_IMPL *impl, int cmd, va_list args); + int (*ctrl_str) (EVP_KDF_IMPL *impl, const char *type, const char *value); + size_t (*size) (EVP_KDF_IMPL *impl); + int (*derive) (EVP_KDF_IMPL *impl, unsigned char *key, size_t keylen); +} EVP_KDF_METHOD; + +extern const EVP_KDF_METHOD pbkdf2_kdf_meth; +extern const EVP_KDF_METHOD scrypt_kdf_meth; +extern const EVP_KDF_METHOD tls1_prf_kdf_meth; +extern const EVP_KDF_METHOD hkdf_kdf_meth; + struct evp_md_st { int type; int pkey_type; diff --git a/crypto/kdf/build.info b/crypto/kdf/build.info index c166399..dce960e 100644 --- a/crypto/kdf/build.info +++ b/crypto/kdf/build.info @@ -1,3 +1,3 @@ LIBS=../../libcrypto SOURCE[../../libcrypto]=\ - tls1_prf.c kdf_err.c hkdf.c scrypt.c + tls1_prf.c kdf_err.c kdf_util.c hkdf.c scrypt.c pbkdf2.c diff --git a/crypto/kdf/hkdf.c b/crypto/kdf/hkdf.c index dc2ead6..5540da3 100644 --- a/crypto/kdf/hkdf.c +++ b/crypto/kdf/hkdf.c @@ -8,32 +8,33 @@ */ #include +#include #include #include -#include #include +#include #include "internal/cryptlib.h" #include "internal/evp_int.h" +#include "kdf_local.h" #define HKDF_MAXBUF 1024 -static unsigned char *HKDF(const EVP_MD *evp_md, - const unsigned char *salt, size_t salt_len, - const unsigned char *key, size_t key_len, - const unsigned char *info, size_t info_len, - unsigned char *okm, size_t okm_len); - -static unsigned char *HKDF_Extract(const EVP_MD *evp_md, - const unsigned char *salt, size_t salt_len, - const unsigned char *key, size_t key_len, - unsigned char *prk, size_t *prk_len); - -static unsigned char *HKDF_Expand(const EVP_MD *evp_md, - const unsigned char *prk, size_t prk_len, - const unsigned char *info, size_t info_len, - unsigned char *okm, size_t okm_len); - -typedef struct { +static void kdf_hkdf_reset(EVP_KDF_IMPL *impl); +static int HKDF(const EVP_MD *evp_md, + const unsigned char *salt, size_t salt_len, + const unsigned char *key, size_t key_len, + const unsigned char *info, size_t info_len, + unsigned char *okm, size_t okm_len); +static int HKDF_Extract(const EVP_MD *evp_md, + const unsigned char *salt, size_t salt_len, + const unsigned char *key, size_t key_len, + unsigned char *prk, size_t prk_len); +static int HKDF_Expand(const EVP_MD *evp_md, + const unsigned char *prk, size_t prk_len, + const unsigned char *info, size_t info_len, + unsigned char *okm, size_t okm_len); + +struct evp_kdf_impl_st { int mode; const EVP_MD *md; unsigned char *salt; @@ -42,230 +43,208 @@ typedef struct { size_t key_len; unsigned char info[HKDF_MAXBUF]; size_t info_len; -} HKDF_PKEY_CTX; +}; -static int pkey_hkdf_init(EVP_PKEY_CTX *ctx) +static EVP_KDF_IMPL *kdf_hkdf_new(void) { - HKDF_PKEY_CTX *kctx; + EVP_KDF_IMPL *impl; - if ((kctx = OPENSSL_zalloc(sizeof(*kctx))) == NULL) { - KDFerr(KDF_F_PKEY_HKDF_INIT, ERR_R_MALLOC_FAILURE); - return 0; - } - - ctx->data = kctx; + if ((impl = OPENSSL_zalloc(sizeof(*impl))) == NULL) + KDFerr(KDF_F_KDF_HKDF_NEW, ERR_R_MALLOC_FAILURE); + return impl; +} - return 1; +static void kdf_hkdf_free(EVP_KDF_IMPL *impl) +{ + kdf_hkdf_reset(impl); + OPENSSL_free(impl); } -static void pkey_hkdf_cleanup(EVP_PKEY_CTX *ctx) +static void kdf_hkdf_reset(EVP_KDF_IMPL *impl) { - HKDF_PKEY_CTX *kctx = ctx->data; - OPENSSL_clear_free(kctx->salt, kctx->salt_len); - OPENSSL_clear_free(kctx->key, kctx->key_len); - OPENSSL_cleanse(kctx->info, kctx->info_len); - OPENSSL_free(kctx); + OPENSSL_free(impl->salt); + OPENSSL_clear_free(impl->key, impl->key_len); + OPENSSL_cleanse(impl->info, impl->info_len); + memset(impl, 0, sizeof(*impl)); } -static int pkey_hkdf_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) +static int kdf_hkdf_ctrl(EVP_KDF_IMPL *impl, int cmd, va_list args) { - HKDF_PKEY_CTX *kctx = ctx->data; + const unsigned char *p; + size_t len; + const EVP_MD *md; - switch (type) { - case EVP_PKEY_CTRL_HKDF_MD: - if (p2 == NULL) + switch (cmd) { + case EVP_KDF_CTRL_SET_MD: + md = va_arg(args, const EVP_MD *); + if (md == NULL) return 0; - kctx->md = p2; + impl->md = md; return 1; - case EVP_PKEY_CTRL_HKDF_MODE: - kctx->mode = p1; + case EVP_KDF_CTRL_SET_HKDF_MODE: + impl->mode = va_arg(args, int); return 1; - case EVP_PKEY_CTRL_HKDF_SALT: - if (p1 == 0 || p2 == NULL) + case EVP_KDF_CTRL_SET_SALT: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + if (len == 0 || p == NULL) return 1; - if (p1 < 0) + OPENSSL_free(impl->salt); + impl->salt = OPENSSL_memdup(p, len); + if (impl->salt == NULL) return 0; - if (kctx->salt != NULL) - OPENSSL_clear_free(kctx->salt, kctx->salt_len); - - kctx->salt = OPENSSL_memdup(p2, p1); - if (kctx->salt == NULL) - return 0; - - kctx->salt_len = p1; + impl->salt_len = len; return 1; - case EVP_PKEY_CTRL_HKDF_KEY: - if (p1 < 0) + case EVP_KDF_CTRL_SET_KEY: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + OPENSSL_clear_free(impl->key, impl->key_len); + impl->key = OPENSSL_memdup(p, len); + if (impl->key == NULL) return 0; - if (kctx->key != NULL) - OPENSSL_clear_free(kctx->key, kctx->key_len); - - kctx->key = OPENSSL_memdup(p2, p1); - if (kctx->key == NULL) - return 0; + impl->key_len = len; + return 1; - kctx->key_len = p1; + case EVP_KDF_CTRL_RESET_HKDF_INFO: + OPENSSL_cleanse(impl->info, impl->info_len); + impl->info_len = 0; return 1; - case EVP_PKEY_CTRL_HKDF_INFO: - if (p1 == 0 || p2 == NULL) + case EVP_KDF_CTRL_ADD_HKDF_INFO: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + if (len == 0 || p == NULL) return 1; - if (p1 < 0 || p1 > (int)(HKDF_MAXBUF - kctx->info_len)) + if (len > (HKDF_MAXBUF - impl->info_len)) return 0; - memcpy(kctx->info + kctx->info_len, p2, p1); - kctx->info_len += p1; + memcpy(impl->info + impl->info_len, p, len); + impl->info_len += len; return 1; default: return -2; - } } -static int pkey_hkdf_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, - const char *value) +static int kdf_hkdf_ctrl_str(EVP_KDF_IMPL *impl, const char *type, + const char *value) { if (strcmp(type, "mode") == 0) { int mode; if (strcmp(value, "EXTRACT_AND_EXPAND") == 0) - mode = EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND; + mode = EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND; else if (strcmp(value, "EXTRACT_ONLY") == 0) - mode = EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY; + mode = EVP_KDF_HKDF_MODE_EXTRACT_ONLY; else if (strcmp(value, "EXPAND_ONLY") == 0) - mode = EVP_PKEY_HKDEF_MODE_EXPAND_ONLY; + mode = EVP_KDF_HKDF_MODE_EXPAND_ONLY; else return 0; - return EVP_PKEY_CTX_hkdf_mode(ctx, mode); + return call_ctrl(kdf_hkdf_ctrl, impl, EVP_KDF_CTRL_SET_HKDF_MODE, mode); } - if (strcmp(type, "md") == 0) - return EVP_PKEY_CTX_md(ctx, EVP_PKEY_OP_DERIVE, - EVP_PKEY_CTRL_HKDF_MD, value); + if (strcmp(type, "digest") == 0) + return kdf_md2ctrl(impl, kdf_hkdf_ctrl, EVP_KDF_CTRL_SET_MD, value); if (strcmp(type, "salt") == 0) - return EVP_PKEY_CTX_str2ctrl(ctx, EVP_PKEY_CTRL_HKDF_SALT, value); + return kdf_str2ctrl(impl, kdf_hkdf_ctrl, EVP_KDF_CTRL_SET_SALT, value); if (strcmp(type, "hexsalt") == 0) - return EVP_PKEY_CTX_hex2ctrl(ctx, EVP_PKEY_CTRL_HKDF_SALT, value); + return kdf_hex2ctrl(impl, kdf_hkdf_ctrl, EVP_KDF_CTRL_SET_SALT, value); if (strcmp(type, "key") == 0) - return EVP_PKEY_CTX_str2ctrl(ctx, EVP_PKEY_CTRL_HKDF_KEY, value); + return kdf_str2ctrl(impl, kdf_hkdf_ctrl, EVP_KDF_CTRL_SET_KEY, value); if (strcmp(type, "hexkey") == 0) - return EVP_PKEY_CTX_hex2ctrl(ctx, EVP_PKEY_CTRL_HKDF_KEY, value); + return kdf_hex2ctrl(impl, kdf_hkdf_ctrl, EVP_KDF_CTRL_SET_KEY, value); if (strcmp(type, "info") == 0) - return EVP_PKEY_CTX_str2ctrl(ctx, EVP_PKEY_CTRL_HKDF_INFO, value); + return kdf_str2ctrl(impl, kdf_hkdf_ctrl, EVP_KDF_CTRL_ADD_HKDF_INFO, + value); if (strcmp(type, "hexinfo") == 0) - return EVP_PKEY_CTX_hex2ctrl(ctx, EVP_PKEY_CTRL_HKDF_INFO, value); + return kdf_hex2ctrl(impl, kdf_hkdf_ctrl, EVP_KDF_CTRL_ADD_HKDF_INFO, + value); - KDFerr(KDF_F_PKEY_HKDF_CTRL_STR, KDF_R_UNKNOWN_PARAMETER_TYPE); return -2; } -static int pkey_hkdf_derive_init(EVP_PKEY_CTX *ctx) +static size_t kdf_hkdf_size(EVP_KDF_IMPL *impl) { - HKDF_PKEY_CTX *kctx = ctx->data; - - OPENSSL_clear_free(kctx->key, kctx->key_len); - OPENSSL_clear_free(kctx->salt, kctx->salt_len); - OPENSSL_cleanse(kctx->info, kctx->info_len); - memset(kctx, 0, sizeof(*kctx)); + if (impl->mode != EVP_KDF_HKDF_MODE_EXTRACT_ONLY) + return SIZE_MAX; - return 1; + if (impl->md == NULL) { + KDFerr(KDF_F_KDF_HKDF_SIZE, KDF_R_MISSING_MESSAGE_DIGEST); + return 0; + } + return EVP_MD_size(impl->md); } -static int pkey_hkdf_derive(EVP_PKEY_CTX *ctx, unsigned char *key, - size_t *keylen) +static int kdf_hkdf_derive(EVP_KDF_IMPL *impl, unsigned char *key, + size_t keylen) { - HKDF_PKEY_CTX *kctx = ctx->data; - - if (kctx->md == NULL) { - KDFerr(KDF_F_PKEY_HKDF_DERIVE, KDF_R_MISSING_MESSAGE_DIGEST); + if (impl->md == NULL) { + KDFerr(KDF_F_KDF_HKDF_DERIVE, KDF_R_MISSING_MESSAGE_DIGEST); return 0; } - if (kctx->key == NULL) { - KDFerr(KDF_F_PKEY_HKDF_DERIVE, KDF_R_MISSING_KEY); + if (impl->key == NULL) { + KDFerr(KDF_F_KDF_HKDF_DERIVE, KDF_R_MISSING_KEY); return 0; } - switch (kctx->mode) { - case EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND: - return HKDF(kctx->md, kctx->salt, kctx->salt_len, kctx->key, - kctx->key_len, kctx->info, kctx->info_len, key, - *keylen) != NULL; + switch (impl->mode) { + case EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND: + return HKDF(impl->md, impl->salt, impl->salt_len, impl->key, + impl->key_len, impl->info, impl->info_len, key, + keylen); - case EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY: - if (key == NULL) { - *keylen = EVP_MD_size(kctx->md); - return 1; - } - return HKDF_Extract(kctx->md, kctx->salt, kctx->salt_len, kctx->key, - kctx->key_len, key, keylen) != NULL; + case EVP_KDF_HKDF_MODE_EXTRACT_ONLY: + return HKDF_Extract(impl->md, impl->salt, impl->salt_len, impl->key, + impl->key_len, key, keylen); - case EVP_PKEY_HKDEF_MODE_EXPAND_ONLY: - return HKDF_Expand(kctx->md, kctx->key, kctx->key_len, kctx->info, - kctx->info_len, key, *keylen) != NULL; + case EVP_KDF_HKDF_MODE_EXPAND_ONLY: + return HKDF_Expand(impl->md, impl->key, impl->key_len, impl->info, + impl->info_len, key, keylen); default: return 0; } } -const EVP_PKEY_METHOD hkdf_pkey_meth = { - EVP_PKEY_HKDF, - 0, - pkey_hkdf_init, - 0, - pkey_hkdf_cleanup, - - 0, 0, - 0, 0, - - 0, - 0, - - 0, - 0, - - 0, 0, - - 0, 0, 0, 0, - - 0, 0, - - 0, 0, - - pkey_hkdf_derive_init, - pkey_hkdf_derive, - pkey_hkdf_ctrl, - pkey_hkdf_ctrl_str +const EVP_KDF_METHOD hkdf_kdf_meth = { + EVP_KDF_HKDF, + kdf_hkdf_new, + kdf_hkdf_free, + kdf_hkdf_reset, + kdf_hkdf_ctrl, + kdf_hkdf_ctrl_str, + kdf_hkdf_size, + kdf_hkdf_derive }; -static unsigned char *HKDF(const EVP_MD *evp_md, - const unsigned char *salt, size_t salt_len, - const unsigned char *key, size_t key_len, - const unsigned char *info, size_t info_len, - unsigned char *okm, size_t okm_len) +static int HKDF(const EVP_MD *evp_md, + const unsigned char *salt, size_t salt_len, + const unsigned char *key, size_t key_len, + const unsigned char *info, size_t info_len, + unsigned char *okm, size_t okm_len) { unsigned char prk[EVP_MAX_MD_SIZE]; - unsigned char *ret; - size_t prk_len; + int ret; + size_t prk_len = EVP_MD_size(evp_md); - if (!HKDF_Extract(evp_md, salt, salt_len, key, key_len, prk, &prk_len)) - return NULL; + if (!HKDF_Extract(evp_md, salt, salt_len, key, key_len, prk, prk_len)) + return 0; ret = HKDF_Expand(evp_md, prk, prk_len, info, info_len, okm, okm_len); OPENSSL_cleanse(prk, sizeof(prk)); @@ -273,43 +252,38 @@ static unsigned char *HKDF(const EVP_MD *evp_md, return ret; } -static unsigned char *HKDF_Extract(const EVP_MD *evp_md, - const unsigned char *salt, size_t salt_len, - const unsigned char *key, size_t key_len, - unsigned char *prk, size_t *prk_len) +static int HKDF_Extract(const EVP_MD *evp_md, + const unsigned char *salt, size_t salt_len, + const unsigned char *key, size_t key_len, + unsigned char *prk, size_t prk_len) { - unsigned int tmp_len; - - if (!HMAC(evp_md, salt, salt_len, key, key_len, prk, &tmp_len)) - return NULL; - - *prk_len = tmp_len; - return prk; + if (prk_len != (size_t)EVP_MD_size(evp_md)) { + KDFerr(KDF_F_HKDF_EXTRACT, KDF_R_WRONG_OUTPUT_BUFFER_SIZE); + return 0; + } + return HMAC(evp_md, salt, salt_len, key, key_len, prk, NULL) != NULL; } -static unsigned char *HKDF_Expand(const EVP_MD *evp_md, - const unsigned char *prk, size_t prk_len, - const unsigned char *info, size_t info_len, - unsigned char *okm, size_t okm_len) +static int HKDF_Expand(const EVP_MD *evp_md, + const unsigned char *prk, size_t prk_len, + const unsigned char *info, size_t info_len, + unsigned char *okm, size_t okm_len) { HMAC_CTX *hmac; - unsigned char *ret = NULL; - + int ret = 0; unsigned int i; - unsigned char prev[EVP_MAX_MD_SIZE]; - size_t done_len = 0, dig_len = EVP_MD_size(evp_md); - size_t n = okm_len / dig_len; + if (okm_len % dig_len) n++; if (n > 255 || okm == NULL) - return NULL; + return 0; if ((hmac = HMAC_CTX_new()) == NULL) - return NULL; + return 0; if (!HMAC_Init_ex(hmac, prk, prk_len, evp_md, NULL)) goto err; @@ -343,7 +317,7 @@ static unsigned char *HKDF_Expand(const EVP_MD *evp_md, done_len += copy_len; } - ret = okm; + ret = 1; err: OPENSSL_cleanse(prev, sizeof(prev)); diff --git a/crypto/kdf/kdf_err.c b/crypto/kdf/kdf_err.c index 92e6a0c..b62c25f 100644 --- a/crypto/kdf/kdf_err.c +++ b/crypto/kdf/kdf_err.c @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -14,6 +14,29 @@ #ifndef OPENSSL_NO_ERR static const ERR_STRING_DATA KDF_str_functs[] = { + {ERR_PACK(ERR_LIB_KDF, KDF_F_HKDF_EXTRACT, 0), "HKDF_Extract"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_HKDF_DERIVE, 0), "kdf_hkdf_derive"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_HKDF_NEW, 0), "kdf_hkdf_new"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_HKDF_SIZE, 0), "kdf_hkdf_size"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_MD2CTRL, 0), "kdf_md2ctrl"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_PBKDF2_CTRL_STR, 0), + "kdf_pbkdf2_ctrl_str"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_PBKDF2_DERIVE, 0), "kdf_pbkdf2_derive"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_PBKDF2_NEW, 0), "kdf_pbkdf2_new"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_SCRYPT_CTRL_STR, 0), + "kdf_scrypt_ctrl_str"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_SCRYPT_CTRL_UINT32, 0), + "kdf_scrypt_ctrl_uint32"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_SCRYPT_CTRL_UINT64, 0), + "kdf_scrypt_ctrl_uint64"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_SCRYPT_DERIVE, 0), "kdf_scrypt_derive"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_SCRYPT_NEW, 0), "kdf_scrypt_new"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_TLS1_PRF_CTRL_STR, 0), + "kdf_tls1_prf_ctrl_str"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_TLS1_PRF_DERIVE, 0), + "kdf_tls1_prf_derive"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_TLS1_PRF_NEW, 0), "kdf_tls1_prf_new"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_PBKDF2_SET_MEMBUF, 0), "pbkdf2_set_membuf"}, {ERR_PACK(ERR_LIB_KDF, KDF_F_PKEY_HKDF_CTRL_STR, 0), "pkey_hkdf_ctrl_str"}, {ERR_PACK(ERR_LIB_KDF, KDF_F_PKEY_HKDF_DERIVE, 0), "pkey_hkdf_derive"}, {ERR_PACK(ERR_LIB_KDF, KDF_F_PKEY_HKDF_INIT, 0), "pkey_hkdf_init"}, @@ -30,6 +53,7 @@ static const ERR_STRING_DATA KDF_str_functs[] = { {ERR_PACK(ERR_LIB_KDF, KDF_F_PKEY_TLS1_PRF_DERIVE, 0), "pkey_tls1_prf_derive"}, {ERR_PACK(ERR_LIB_KDF, KDF_F_PKEY_TLS1_PRF_INIT, 0), "pkey_tls1_prf_init"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_SCRYPT_SET_MEMBUF, 0), "scrypt_set_membuf"}, {ERR_PACK(ERR_LIB_KDF, KDF_F_TLS1_PRF_ALG, 0), "tls1_prf_alg"}, {0, NULL} }; @@ -50,6 +74,8 @@ static const ERR_STRING_DATA KDF_str_reasons[] = { "unknown parameter type"}, {ERR_PACK(ERR_LIB_KDF, 0, KDF_R_VALUE_ERROR), "value error"}, {ERR_PACK(ERR_LIB_KDF, 0, KDF_R_VALUE_MISSING), "value missing"}, + {ERR_PACK(ERR_LIB_KDF, 0, KDF_R_WRONG_OUTPUT_BUFFER_SIZE), + "wrong output buffer size"}, {0, NULL} }; diff --git a/crypto/kdf/kdf_local.h b/crypto/kdf/kdf_local.h new file mode 100644 index 0000000..4956dad --- /dev/null +++ b/crypto/kdf/kdf_local.h @@ -0,0 +1,22 @@ +/* + * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +int call_ctrl(int (*ctrl)(EVP_KDF_IMPL *impl, int cmd, va_list args), + EVP_KDF_IMPL *impl, int cmd, ...); +int kdf_str2ctrl(EVP_KDF_IMPL *impl, + int (*ctrl)(EVP_KDF_IMPL *impl, int cmd, va_list args), + int cmd, const char *str); +int kdf_hex2ctrl(EVP_KDF_IMPL *impl, + int (*ctrl)(EVP_KDF_IMPL *impl, int cmd, va_list args), + int cmd, const char *hex); +int kdf_md2ctrl(EVP_KDF_IMPL *impl, + int (*ctrl)(EVP_KDF_IMPL *impl, int cmd, va_list args), + int cmd, const char *md_name); + diff --git a/crypto/kdf/kdf_util.c b/crypto/kdf/kdf_util.c new file mode 100644 index 0000000..8eb6d26 --- /dev/null +++ b/crypto/kdf/kdf_util.c @@ -0,0 +1,73 @@ +/* + * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include +#include +#include +#include "internal/cryptlib.h" +#include "internal/evp_int.h" +#include "internal/numbers.h" +#include "kdf_local.h" + +int call_ctrl(int (*ctrl)(EVP_KDF_IMPL *impl, int cmd, va_list args), + EVP_KDF_IMPL *impl, int cmd, ...) +{ + int ret; + va_list args; + + va_start(args, cmd); + ret = ctrl(impl, cmd, args); + va_end(args); + + return ret; +} + +/* Utility functions to send a string or hex string to a ctrl */ + +int kdf_str2ctrl(EVP_KDF_IMPL *impl, + int (*ctrl)(EVP_KDF_IMPL *impl, int cmd, va_list args), + int cmd, const char *str) +{ + return call_ctrl(ctrl, impl, cmd, (const unsigned char *)str, strlen(str)); +} + +int kdf_hex2ctrl(EVP_KDF_IMPL *impl, + int (*ctrl)(EVP_KDF_IMPL *impl, int cmd, va_list args), + int cmd, const char *hex) +{ + unsigned char *bin; + long binlen; + int ret = -1; + + bin = OPENSSL_hexstr2buf(hex, &binlen); + if (bin == NULL) + return 0; + + if (binlen <= INT_MAX) + ret = call_ctrl(ctrl, impl, cmd, bin, (size_t)binlen); + OPENSSL_free(bin); + return ret; +} + +/* Pass a message digest to a ctrl */ +int kdf_md2ctrl(EVP_KDF_IMPL *impl, + int (*ctrl)(EVP_KDF_IMPL *impl, int cmd, va_list args), + int cmd, const char *md_name) +{ + const EVP_MD *md; + + if (md_name == NULL || (md = EVP_get_digestbyname(md_name)) == NULL) { + KDFerr(KDF_F_KDF_MD2CTRL, KDF_R_INVALID_DIGEST); + return 0; + } + return call_ctrl(ctrl, impl, cmd, md); +} + diff --git a/crypto/kdf/pbkdf2.c b/crypto/kdf/pbkdf2.c new file mode 100644 index 0000000..bf1ac6d --- /dev/null +++ b/crypto/kdf/pbkdf2.c @@ -0,0 +1,264 @@ +/* + * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include +#include +#include +#include +#include +#include "internal/cryptlib.h" +#include "internal/evp_int.h" +#include "kdf_local.h" + +static void kdf_pbkdf2_reset(EVP_KDF_IMPL *impl); +static void kdf_pbkdf2_init(EVP_KDF_IMPL *impl); +static int pkcs5_pbkdf2_alg(const char *pass, size_t passlen, + const unsigned char *salt, int saltlen, int iter, + const EVP_MD *digest, unsigned char *key, + size_t keylen); + +struct evp_kdf_impl_st { + unsigned char *pass; + size_t pass_len; + unsigned char *salt; + size_t salt_len; + int iter; + const EVP_MD *md; +}; + +static EVP_KDF_IMPL *kdf_pbkdf2_new(void) +{ + EVP_KDF_IMPL *impl; + + impl = OPENSSL_zalloc(sizeof(*impl)); + if (impl == NULL) { + KDFerr(KDF_F_KDF_PBKDF2_NEW, ERR_R_MALLOC_FAILURE); + return NULL; + } + kdf_pbkdf2_init(impl); + return impl; +} + +static void kdf_pbkdf2_free(EVP_KDF_IMPL *impl) +{ + kdf_pbkdf2_reset(impl); + OPENSSL_free(impl); +} + +static void kdf_pbkdf2_reset(EVP_KDF_IMPL *impl) +{ + OPENSSL_free(impl->salt); + OPENSSL_clear_free(impl->pass, impl->pass_len); + memset(impl, 0, sizeof(*impl)); + kdf_pbkdf2_init(impl); +} + +static void kdf_pbkdf2_init(EVP_KDF_IMPL *impl) +{ + impl->iter = PKCS5_DEFAULT_ITER; + impl->md = EVP_sha1(); +} + +static int pbkdf2_set_membuf(unsigned char **buffer, size_t *buflen, + const unsigned char *new_buffer, + size_t new_buflen) +{ + if (new_buffer == NULL) + return 1; + + OPENSSL_clear_free(*buffer, *buflen); + + if (new_buflen > 0) { + *buffer = OPENSSL_memdup(new_buffer, new_buflen); + } else { + *buffer = OPENSSL_malloc(1); + } + if (*buffer == NULL) { + KDFerr(KDF_F_PBKDF2_SET_MEMBUF, ERR_R_MALLOC_FAILURE); + return 0; + } + + *buflen = new_buflen; + return 1; +} + +static int kdf_pbkdf2_ctrl(EVP_KDF_IMPL *impl, int cmd, va_list args) +{ + int iter; + const unsigned char *p; + size_t len; + const EVP_MD *md; + + switch (cmd) { + case EVP_KDF_CTRL_SET_PASS: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + return pbkdf2_set_membuf(&impl->pass, &impl->pass_len, p, len); + + case EVP_KDF_CTRL_SET_SALT: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + return pbkdf2_set_membuf(&impl->salt, &impl->salt_len, p, len); + + case EVP_KDF_CTRL_SET_ITER: + iter = va_arg(args, int); + if (iter < 1) + return 0; + + impl->iter = iter; + return 1; + + case EVP_KDF_CTRL_SET_MD: + md = va_arg(args, const EVP_MD *); + if (md == NULL) + return 0; + + impl->md = md; + return 1; + + default: + return -2; + } +} + +static int kdf_pbkdf2_ctrl_str(EVP_KDF_IMPL *impl, const char *type, + const char *value) +{ + if (value == NULL) { + KDFerr(KDF_F_KDF_PBKDF2_CTRL_STR, KDF_R_VALUE_MISSING); + return 0; + } + + if (strcmp(type, "pass") == 0) + return kdf_str2ctrl(impl, kdf_pbkdf2_ctrl, EVP_KDF_CTRL_SET_PASS, + value); + + if (strcmp(type, "hexpass") == 0) + return kdf_hex2ctrl(impl, kdf_pbkdf2_ctrl, EVP_KDF_CTRL_SET_PASS, + value); + + if (strcmp(type, "salt") == 0) + return kdf_str2ctrl(impl, kdf_pbkdf2_ctrl, EVP_KDF_CTRL_SET_SALT, + value); + + if (strcmp(type, "hexsalt") == 0) + return kdf_hex2ctrl(impl, kdf_pbkdf2_ctrl, EVP_KDF_CTRL_SET_SALT, + value); + + if (strcmp(type, "iter") == 0) + return call_ctrl(kdf_pbkdf2_ctrl, impl, EVP_KDF_CTRL_SET_ITER, + atoi(value)); + + if (strcmp(type, "digest") == 0) + return kdf_md2ctrl(impl, kdf_pbkdf2_ctrl, EVP_KDF_CTRL_SET_MD, value); + + return -2; +} + +static int kdf_pbkdf2_derive(EVP_KDF_IMPL *impl, unsigned char *key, + size_t keylen) +{ + if (impl->pass == NULL) { + KDFerr(KDF_F_KDF_PBKDF2_DERIVE, KDF_R_MISSING_PASS); + return 0; + } + + if (impl->salt == NULL) { + KDFerr(KDF_F_KDF_PBKDF2_DERIVE, KDF_R_MISSING_SALT); + return 0; + } + + return pkcs5_pbkdf2_alg((char *)impl->pass, impl->pass_len, + impl->salt, impl->salt_len, impl->iter, + impl->md, key, keylen); +} + +const EVP_KDF_METHOD pbkdf2_kdf_meth = { + EVP_KDF_PBKDF2, + kdf_pbkdf2_new, + kdf_pbkdf2_free, + kdf_pbkdf2_reset, + kdf_pbkdf2_ctrl, + kdf_pbkdf2_ctrl_str, + NULL, + kdf_pbkdf2_derive +}; + +/* + * This is an implementation of PKCS#5 v2.0 password based encryption key + * derivation function PBKDF2. SHA1 version verified against test vectors + * posted by Peter Gutmann to the PKCS-TNG mailing list. + */ + +static int pkcs5_pbkdf2_alg(const char *pass, size_t passlen, + const unsigned char *salt, int saltlen, int iter, + const EVP_MD *digest, unsigned char *key, + size_t keylen) +{ + int ret = 0; + unsigned char digtmp[EVP_MAX_MD_SIZE], *p, itmp[4]; + int cplen, j, k, tkeylen, mdlen; + unsigned long i = 1; + HMAC_CTX *hctx_tpl = NULL, *hctx = NULL; + + mdlen = EVP_MD_size(digest); + if (mdlen < 0) + return 0; + + hctx_tpl = HMAC_CTX_new(); + if (hctx_tpl == NULL) + return 0; + p = key; + tkeylen = keylen; + if (!HMAC_Init_ex(hctx_tpl, pass, passlen, digest, NULL)) + goto err; + hctx = HMAC_CTX_new(); + if (hctx == NULL) + goto err; + while (tkeylen) { + if (tkeylen > mdlen) + cplen = mdlen; + else + cplen = tkeylen; + /* + * We are unlikely to ever use more than 256 blocks (5120 bits!) but + * just in case... + */ + itmp[0] = (unsigned char)((i >> 24) & 0xff); + itmp[1] = (unsigned char)((i >> 16) & 0xff); + itmp[2] = (unsigned char)((i >> 8) & 0xff); + itmp[3] = (unsigned char)(i & 0xff); + if (!HMAC_CTX_copy(hctx, hctx_tpl)) + goto err; + if (!HMAC_Update(hctx, salt, saltlen) + || !HMAC_Update(hctx, itmp, 4) + || !HMAC_Final(hctx, digtmp, NULL)) + goto err; + memcpy(p, digtmp, cplen); + for (j = 1; j < iter; j++) { + if (!HMAC_CTX_copy(hctx, hctx_tpl)) + goto err; + if (!HMAC_Update(hctx, digtmp, mdlen) + || !HMAC_Final(hctx, digtmp, NULL)) + goto err; + for (k = 0; k < cplen; k++) + p[k] ^= digtmp[k]; + } + tkeylen -= cplen; + i++; + p += cplen; + } + ret = 1; + +err: + HMAC_CTX_free(hctx); + HMAC_CTX_free(hctx_tpl); + return ret; +} diff --git a/crypto/kdf/scrypt.c b/crypto/kdf/scrypt.c index 6b35b77..ee77f1e 100644 --- a/crypto/kdf/scrypt.c +++ b/crypto/kdf/scrypt.c @@ -8,25 +8,34 @@ */ #include +#include #include -#include -#include #include -#include "internal/cryptlib.h" +#include +#include #include "internal/evp_int.h" +#include "internal/numbers.h" +#include "kdf_local.h" #ifndef OPENSSL_NO_SCRYPT +static void kdf_scrypt_reset(EVP_KDF_IMPL *impl); +static void kdf_scrypt_init(EVP_KDF_IMPL *impl); static int atou64(const char *nptr, uint64_t *result); +static int scrypt_alg(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen); -typedef struct { +struct evp_kdf_impl_st { unsigned char *pass; size_t pass_len; unsigned char *salt; size_t salt_len; - uint64_t N, r, p; + uint64_t N; + uint32_t r, p; uint64_t maxmem_bytes; -} SCRYPT_PKEY_CTX; +}; /* Custom uint64_t parser since we do not have strtoull */ static int atou64(const char *nptr, uint64_t *result) @@ -53,51 +62,53 @@ static int atou64(const char *nptr, uint64_t *result) return 1; } -static int pkey_scrypt_init(EVP_PKEY_CTX *ctx) +static EVP_KDF_IMPL *kdf_scrypt_new(void) { - SCRYPT_PKEY_CTX *kctx; + EVP_KDF_IMPL *impl; - kctx = OPENSSL_zalloc(sizeof(*kctx)); - if (kctx == NULL) { - KDFerr(KDF_F_PKEY_SCRYPT_INIT, ERR_R_MALLOC_FAILURE); - return 0; + impl = OPENSSL_zalloc(sizeof(*impl)); + if (impl == NULL) { + KDFerr(KDF_F_KDF_SCRYPT_NEW, ERR_R_MALLOC_FAILURE); + return NULL; } + kdf_scrypt_init(impl); + return impl; +} - /* Default values are the most conservative recommendation given in the - * original paper of C. Percival. Derivation uses roughly 1 GiB of memory - * for this parameter choice (approx. 128 * r * (N + p) bytes). - */ - kctx->N = 1 << 20; - kctx->r = 8; - kctx->p = 1; - kctx->maxmem_bytes = 1025 * 1024 * 1024; - - ctx->data = kctx; - - return 1; +static void kdf_scrypt_free(EVP_KDF_IMPL *impl) +{ + kdf_scrypt_reset(impl); + OPENSSL_free(impl); } -static void pkey_scrypt_cleanup(EVP_PKEY_CTX *ctx) +static void kdf_scrypt_reset(EVP_KDF_IMPL *impl) { - SCRYPT_PKEY_CTX *kctx = ctx->data; + OPENSSL_free(impl->salt); + OPENSSL_clear_free(impl->pass, impl->pass_len); + memset(impl, 0, sizeof(*impl)); + kdf_scrypt_init(impl); +} - OPENSSL_clear_free(kctx->salt, kctx->salt_len); - OPENSSL_clear_free(kctx->pass, kctx->pass_len); - OPENSSL_free(kctx); +static void kdf_scrypt_init(EVP_KDF_IMPL *impl) +{ + /* Default values are the most conservative recommendation given in the + * original paper of C. Percival. Derivation uses roughly 1 GiB of memory + * for this parameter choice (approx. 128 * r * N * p bytes). + */ + impl->N = 1 << 20; + impl->r = 8; + impl->p = 1; + impl->maxmem_bytes = 1025 * 1024 * 1024; } -static int pkey_scrypt_set_membuf(unsigned char **buffer, size_t *buflen, - const unsigned char *new_buffer, - const int new_buflen) +static int scrypt_set_membuf(unsigned char **buffer, size_t *buflen, + const unsigned char *new_buffer, + size_t new_buflen) { if (new_buffer == NULL) return 1; - if (new_buflen < 0) - return 0; - - if (*buffer != NULL) - OPENSSL_clear_free(*buffer, *buflen); + OPENSSL_clear_free(*buffer, *buflen); if (new_buflen > 0) { *buffer = OPENSSL_memdup(new_buffer, new_buflen); @@ -105,7 +116,7 @@ static int pkey_scrypt_set_membuf(unsigned char **buffer, size_t *buflen, *buffer = OPENSSL_malloc(1); } if (*buffer == NULL) { - KDFerr(KDF_F_PKEY_SCRYPT_SET_MEMBUF, ERR_R_MALLOC_FAILURE); + KDFerr(KDF_F_SCRYPT_SET_MEMBUF, ERR_R_MALLOC_FAILURE); return 0; } @@ -118,149 +129,378 @@ static int is_power_of_two(uint64_t value) return (value != 0) && ((value & (value - 1)) == 0); } -static int pkey_scrypt_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) +static int kdf_scrypt_ctrl(EVP_KDF_IMPL *impl, int cmd, va_list args) { - SCRYPT_PKEY_CTX *kctx = ctx->data; uint64_t u64_value; - - switch (type) { - case EVP_PKEY_CTRL_PASS: - return pkey_scrypt_set_membuf(&kctx->pass, &kctx->pass_len, p2, p1); - - case EVP_PKEY_CTRL_SCRYPT_SALT: - return pkey_scrypt_set_membuf(&kctx->salt, &kctx->salt_len, p2, p1); - - case EVP_PKEY_CTRL_SCRYPT_N: - u64_value = *((uint64_t *)p2); + uint32_t value; + const unsigned char *p; + size_t len; + + switch (cmd) { + case EVP_KDF_CTRL_SET_PASS: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + return scrypt_set_membuf(&impl->pass, &impl->pass_len, p, len); + + case EVP_KDF_CTRL_SET_SALT: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + return scrypt_set_membuf(&impl->salt, &impl->salt_len, p, len); + + case EVP_KDF_CTRL_SET_SCRYPT_N: + u64_value = va_arg(args, uint64_t); if ((u64_value <= 1) || !is_power_of_two(u64_value)) return 0; - kctx->N = u64_value; + + impl->N = u64_value; return 1; - case EVP_PKEY_CTRL_SCRYPT_R: - u64_value = *((uint64_t *)p2); - if (u64_value < 1) + case EVP_KDF_CTRL_SET_SCRYPT_R: + value = va_arg(args, uint32_t); + if (value < 1) return 0; - kctx->r = u64_value; + + impl->r = value; return 1; - case EVP_PKEY_CTRL_SCRYPT_P: - u64_value = *((uint64_t *)p2); - if (u64_value < 1) + case EVP_KDF_CTRL_SET_SCRYPT_P: + value = va_arg(args, uint32_t); + if (value < 1) return 0; - kctx->p = u64_value; + + impl->p = value; return 1; - case EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES: - u64_value = *((uint64_t *)p2); + case EVP_KDF_CTRL_SET_MAXMEM_BYTES: + u64_value = va_arg(args, uint64_t); if (u64_value < 1) return 0; - kctx->maxmem_bytes = u64_value; + + impl->maxmem_bytes = u64_value; return 1; default: return -2; + } +} + +static int kdf_scrypt_ctrl_uint32(EVP_KDF_IMPL *impl, int cmd, + const char *value) +{ + int int_value = atoi(value); + if (int_value < 0 || (uint64_t)int_value > UINT32_MAX) { + KDFerr(KDF_F_KDF_SCRYPT_CTRL_UINT32, KDF_R_VALUE_ERROR); + return 0; } + return call_ctrl(kdf_scrypt_ctrl, impl, cmd, (uint32_t)int_value); } -static int pkey_scrypt_ctrl_uint64(EVP_PKEY_CTX *ctx, int type, - const char *value) +static int kdf_scrypt_ctrl_uint64(EVP_KDF_IMPL *impl, int cmd, + const char *value) { - uint64_t int_value; + uint64_t u64_value; - if (!atou64(value, &int_value)) { - KDFerr(KDF_F_PKEY_SCRYPT_CTRL_UINT64, KDF_R_VALUE_ERROR); + if (!atou64(value, &u64_value)) { + KDFerr(KDF_F_KDF_SCRYPT_CTRL_UINT64, KDF_R_VALUE_ERROR); return 0; } - return pkey_scrypt_ctrl(ctx, type, 0, &int_value); + return call_ctrl(kdf_scrypt_ctrl, impl, cmd, u64_value); } -static int pkey_scrypt_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, - const char *value) +static int kdf_scrypt_ctrl_str(EVP_KDF_IMPL *impl, const char *type, + const char *value) { if (value == NULL) { - KDFerr(KDF_F_PKEY_SCRYPT_CTRL_STR, KDF_R_VALUE_MISSING); + KDFerr(KDF_F_KDF_SCRYPT_CTRL_STR, KDF_R_VALUE_MISSING); return 0; } if (strcmp(type, "pass") == 0) - return EVP_PKEY_CTX_str2ctrl(ctx, EVP_PKEY_CTRL_PASS, value); + return kdf_str2ctrl(impl, kdf_scrypt_ctrl, EVP_KDF_CTRL_SET_PASS, + value); if (strcmp(type, "hexpass") == 0) - return EVP_PKEY_CTX_hex2ctrl(ctx, EVP_PKEY_CTRL_PASS, value); + return kdf_hex2ctrl(impl, kdf_scrypt_ctrl, EVP_KDF_CTRL_SET_PASS, + value); if (strcmp(type, "salt") == 0) - return EVP_PKEY_CTX_str2ctrl(ctx, EVP_PKEY_CTRL_SCRYPT_SALT, value); + return kdf_str2ctrl(impl, kdf_scrypt_ctrl, EVP_KDF_CTRL_SET_SALT, + value); if (strcmp(type, "hexsalt") == 0) - return EVP_PKEY_CTX_hex2ctrl(ctx, EVP_PKEY_CTRL_SCRYPT_SALT, value); + return kdf_hex2ctrl(impl, kdf_scrypt_ctrl, EVP_KDF_CTRL_SET_SALT, + value); if (strcmp(type, "N") == 0) - return pkey_scrypt_ctrl_uint64(ctx, EVP_PKEY_CTRL_SCRYPT_N, value); + return kdf_scrypt_ctrl_uint64(impl, EVP_KDF_CTRL_SET_SCRYPT_N, value); if (strcmp(type, "r") == 0) - return pkey_scrypt_ctrl_uint64(ctx, EVP_PKEY_CTRL_SCRYPT_R, value); + return kdf_scrypt_ctrl_uint32(impl, EVP_KDF_CTRL_SET_SCRYPT_R, value); if (strcmp(type, "p") == 0) - return pkey_scrypt_ctrl_uint64(ctx, EVP_PKEY_CTRL_SCRYPT_P, value); + return kdf_scrypt_ctrl_uint32(impl, EVP_KDF_CTRL_SET_SCRYPT_P, value); if (strcmp(type, "maxmem_bytes") == 0) - return pkey_scrypt_ctrl_uint64(ctx, EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES, - value); + return kdf_scrypt_ctrl_uint64(impl, EVP_KDF_CTRL_SET_MAXMEM_BYTES, + value); - KDFerr(KDF_F_PKEY_SCRYPT_CTRL_STR, KDF_R_UNKNOWN_PARAMETER_TYPE); return -2; } -static int pkey_scrypt_derive(EVP_PKEY_CTX *ctx, unsigned char *key, - size_t *keylen) +static int kdf_scrypt_derive(EVP_KDF_IMPL *impl, unsigned char *key, + size_t keylen) { - SCRYPT_PKEY_CTX *kctx = ctx->data; - - if (kctx->pass == NULL) { - KDFerr(KDF_F_PKEY_SCRYPT_DERIVE, KDF_R_MISSING_PASS); + if (impl->pass == NULL) { + KDFerr(KDF_F_KDF_SCRYPT_DERIVE, KDF_R_MISSING_PASS); return 0; } - if (kctx->salt == NULL) { - KDFerr(KDF_F_PKEY_SCRYPT_DERIVE, KDF_R_MISSING_SALT); + if (impl->salt == NULL) { + KDFerr(KDF_F_KDF_SCRYPT_DERIVE, KDF_R_MISSING_SALT); return 0; } - return EVP_PBE_scrypt((char *)kctx->pass, kctx->pass_len, kctx->salt, - kctx->salt_len, kctx->N, kctx->r, kctx->p, - kctx->maxmem_bytes, key, *keylen); + return scrypt_alg((char *)impl->pass, impl->pass_len, impl->salt, + impl->salt_len, impl->N, impl->r, impl->p, + impl->maxmem_bytes, key, keylen); +} + +const EVP_KDF_METHOD scrypt_kdf_meth = { + EVP_KDF_SCRYPT, + kdf_scrypt_new, + kdf_scrypt_free, + kdf_scrypt_reset, + kdf_scrypt_ctrl, + kdf_scrypt_ctrl_str, + NULL, + kdf_scrypt_derive +}; + +#define R(a,b) (((a) << (b)) | ((a) >> (32 - (b)))) +static void salsa208_word_specification(uint32_t inout[16]) +{ + int i; + uint32_t x[16]; + + memcpy(x, inout, sizeof(x)); + for (i = 8; i > 0; i -= 2) { + x[4] ^= R(x[0] + x[12], 7); + x[8] ^= R(x[4] + x[0], 9); + x[12] ^= R(x[8] + x[4], 13); + x[0] ^= R(x[12] + x[8], 18); + x[9] ^= R(x[5] + x[1], 7); + x[13] ^= R(x[9] + x[5], 9); + x[1] ^= R(x[13] + x[9], 13); + x[5] ^= R(x[1] + x[13], 18); + x[14] ^= R(x[10] + x[6], 7); + x[2] ^= R(x[14] + x[10], 9); + x[6] ^= R(x[2] + x[14], 13); + x[10] ^= R(x[6] + x[2], 18); + x[3] ^= R(x[15] + x[11], 7); + x[7] ^= R(x[3] + x[15], 9); + x[11] ^= R(x[7] + x[3], 13); + x[15] ^= R(x[11] + x[7], 18); + x[1] ^= R(x[0] + x[3], 7); + x[2] ^= R(x[1] + x[0], 9); + x[3] ^= R(x[2] + x[1], 13); + x[0] ^= R(x[3] + x[2], 18); + x[6] ^= R(x[5] + x[4], 7); + x[7] ^= R(x[6] + x[5], 9); + x[4] ^= R(x[7] + x[6], 13); + x[5] ^= R(x[4] + x[7], 18); + x[11] ^= R(x[10] + x[9], 7); + x[8] ^= R(x[11] + x[10], 9); + x[9] ^= R(x[8] + x[11], 13); + x[10] ^= R(x[9] + x[8], 18); + x[12] ^= R(x[15] + x[14], 7); + x[13] ^= R(x[12] + x[15], 9); + x[14] ^= R(x[13] + x[12], 13); + x[15] ^= R(x[14] + x[13], 18); + } + for (i = 0; i < 16; ++i) + inout[i] += x[i]; + OPENSSL_cleanse(x, sizeof(x)); +} + +static void scryptBlockMix(uint32_t *B_, uint32_t *B, uint64_t r) +{ + uint64_t i, j; + uint32_t X[16], *pB; + + memcpy(X, B + (r * 2 - 1) * 16, sizeof(X)); + pB = B; + for (i = 0; i < r * 2; i++) { + for (j = 0; j < 16; j++) + X[j] ^= *pB++; + salsa208_word_specification(X); + memcpy(B_ + (i / 2 + (i & 1) * r) * 16, X, sizeof(X)); + } + OPENSSL_cleanse(X, sizeof(X)); +} + +static void scryptROMix(unsigned char *B, uint64_t r, uint64_t N, + uint32_t *X, uint32_t *T, uint32_t *V) +{ + unsigned char *pB; + uint32_t *pV; + uint64_t i, k; + + /* Convert from little endian input */ + for (pV = V, i = 0, pB = B; i < 32 * r; i++, pV++) { + *pV = *pB++; + *pV |= *pB++ << 8; + *pV |= *pB++ << 16; + *pV |= (uint32_t)*pB++ << 24; + } + + for (i = 1; i < N; i++, pV += 32 * r) + scryptBlockMix(pV, pV - 32 * r, r); + + scryptBlockMix(X, V + (N - 1) * 32 * r, r); + + for (i = 0; i < N; i++) { + uint32_t j; + j = X[16 * (2 * r - 1)] % N; + pV = V + 32 * r * j; + for (k = 0; k < 32 * r; k++) + T[k] = X[k] ^ *pV++; + scryptBlockMix(X, T, r); + } + /* Convert output to little endian */ + for (i = 0, pB = B; i < 32 * r; i++) { + uint32_t xtmp = X[i]; + *pB++ = xtmp & 0xff; + *pB++ = (xtmp >> 8) & 0xff; + *pB++ = (xtmp >> 16) & 0xff; + *pB++ = (xtmp >> 24) & 0xff; + } } -const EVP_PKEY_METHOD scrypt_pkey_meth = { - EVP_PKEY_SCRYPT, - 0, - pkey_scrypt_init, - 0, - pkey_scrypt_cleanup, +#ifndef SIZE_MAX +# define SIZE_MAX ((size_t)-1) +#endif - 0, 0, - 0, 0, +/* + * Maximum power of two that will fit in uint64_t: this should work on + * most (all?) platforms. + */ - 0, - 0, +#define LOG2_UINT64_MAX (sizeof(uint64_t) * 8 - 1) - 0, - 0, +/* + * Maximum value of p * r: + * p <= ((2^32-1) * hLen) / MFLen => + * p <= ((2^32-1) * 32) / (128 * r) => + * p * r <= (2^30-1) + */ - 0, 0, +#define SCRYPT_PR_MAX ((1 << 30) - 1) - 0, 0, 0, 0, +static int scrypt_alg(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen) +{ + int rv = 0; + unsigned char *B; + uint32_t *X, *V, *T; + uint64_t i, Blen, Vlen; + + /* Sanity check parameters */ + /* initial check, r,p must be non zero, N >= 2 and a power of 2 */ + if (r == 0 || p == 0 || N < 2 || (N & (N - 1))) + return 0; + /* Check p * r < SCRYPT_PR_MAX avoiding overflow */ + if (p > SCRYPT_PR_MAX / r) { + EVPerr(EVP_F_SCRYPT_ALG, EVP_R_MEMORY_LIMIT_EXCEEDED); + return 0; + } - 0, 0, + /* + * Need to check N: if 2^(128 * r / 8) overflows limit this is + * automatically satisfied since N <= UINT64_MAX. + */ - 0, 0, + if (16 * r <= LOG2_UINT64_MAX) { + if (N >= (((uint64_t)1) << (16 * r))) { + EVPerr(EVP_F_SCRYPT_ALG, EVP_R_MEMORY_LIMIT_EXCEEDED); + return 0; + } + } - 0, - pkey_scrypt_derive, - pkey_scrypt_ctrl, - pkey_scrypt_ctrl_str -}; + /* Memory checks: check total allocated buffer size fits in uint64_t */ + + /* + * B size in section 5 step 1.S + * Note: we know p * 128 * r < UINT64_MAX because we already checked + * p * r < SCRYPT_PR_MAX + */ + Blen = p * 128 * r; + /* + * Yet we pass it as integer to PKCS5_PBKDF2_HMAC... [This would + * have to be revised when/if PKCS5_PBKDF2_HMAC accepts size_t.] + */ + if (Blen > INT_MAX) { + EVPerr(EVP_F_SCRYPT_ALG, EVP_R_MEMORY_LIMIT_EXCEEDED); + return 0; + } + + /* + * Check 32 * r * (N + 2) * sizeof(uint32_t) fits in uint64_t + * This is combined size V, X and T (section 4) + */ + i = UINT64_MAX / (32 * sizeof(uint32_t)); + if (N + 2 > i / r) { + EVPerr(EVP_F_SCRYPT_ALG, EVP_R_MEMORY_LIMIT_EXCEEDED); + return 0; + } + Vlen = 32 * r * (N + 2) * sizeof(uint32_t); + + /* check total allocated size fits in uint64_t */ + if (Blen > UINT64_MAX - Vlen) { + EVPerr(EVP_F_SCRYPT_ALG, EVP_R_MEMORY_LIMIT_EXCEEDED); + return 0; + } + + /* Check that the maximum memory doesn't exceed a size_t limits */ + if (maxmem > SIZE_MAX) + maxmem = SIZE_MAX; + + if (Blen + Vlen > maxmem) { + EVPerr(EVP_F_SCRYPT_ALG, EVP_R_MEMORY_LIMIT_EXCEEDED); + return 0; + } + + /* If no key return to indicate parameters are OK */ + if (key == NULL) + return 1; + + B = OPENSSL_malloc((size_t)(Blen + Vlen)); + if (B == NULL) { + EVPerr(EVP_F_SCRYPT_ALG, ERR_R_MALLOC_FAILURE); + return 0; + } + X = (uint32_t *)(B + Blen); + T = X + 32 * r; + V = T + 32 * r; + if (PKCS5_PBKDF2_HMAC(pass, passlen, salt, saltlen, 1, EVP_sha256(), + (int)Blen, B) == 0) + goto err; + + for (i = 0; i < p; i++) + scryptROMix(B + 128 * r * i, r, N, X, T, V); + + if (PKCS5_PBKDF2_HMAC(pass, passlen, B, (int)Blen, 1, EVP_sha256(), + keylen, key) == 0) + goto err; + rv = 1; + err: + if (rv == 0) + EVPerr(EVP_F_SCRYPT_ALG, EVP_R_PBKDF2_ERROR); + + OPENSSL_clear_free(B, (size_t)(Blen + Vlen)); + return rv; +} #endif diff --git a/crypto/kdf/tls1_prf.c b/crypto/kdf/tls1_prf.c index 24ad59b..1f8374f 100644 --- a/crypto/kdf/tls1_prf.c +++ b/crypto/kdf/tls1_prf.c @@ -8,11 +8,15 @@ */ #include +#include +#include #include "internal/cryptlib.h" -#include #include +#include #include "internal/evp_int.h" +#include "kdf_local.h" +static void kdf_tls1_prf_reset(EVP_KDF_IMPL *impl); static int tls1_prf_alg(const EVP_MD *md, const unsigned char *sec, size_t slen, const unsigned char *seed, size_t seed_len, @@ -20,9 +24,9 @@ static int tls1_prf_alg(const EVP_MD *md, #define TLS1_PRF_MAXBUF 1024 -/* TLS KDF pkey context structure */ +/* TLS KDF kdf context structure */ -typedef struct { +struct evp_kdf_impl_st { /* Digest to use for PRF */ const EVP_MD *md; /* Secret value to use for PRF */ @@ -31,145 +35,137 @@ typedef struct { /* Buffer of concatenated seed data */ unsigned char seed[TLS1_PRF_MAXBUF]; size_t seedlen; -} TLS1_PRF_PKEY_CTX; +}; -static int pkey_tls1_prf_init(EVP_PKEY_CTX *ctx) +static EVP_KDF_IMPL *kdf_tls1_prf_new(void) { - TLS1_PRF_PKEY_CTX *kctx; + EVP_KDF_IMPL *impl; - if ((kctx = OPENSSL_zalloc(sizeof(*kctx))) == NULL) { - KDFerr(KDF_F_PKEY_TLS1_PRF_INIT, ERR_R_MALLOC_FAILURE); - return 0; - } - ctx->data = kctx; + if ((impl = OPENSSL_zalloc(sizeof(*impl))) == NULL) + KDFerr(KDF_F_KDF_TLS1_PRF_NEW, ERR_R_MALLOC_FAILURE); + return impl; +} - return 1; +static void kdf_tls1_prf_free(EVP_KDF_IMPL *impl) +{ + kdf_tls1_prf_reset(impl); + OPENSSL_free(impl); } -static void pkey_tls1_prf_cleanup(EVP_PKEY_CTX *ctx) +static void kdf_tls1_prf_reset(EVP_KDF_IMPL *impl) { - TLS1_PRF_PKEY_CTX *kctx = ctx->data; - OPENSSL_clear_free(kctx->sec, kctx->seclen); - OPENSSL_cleanse(kctx->seed, kctx->seedlen); - OPENSSL_free(kctx); + OPENSSL_clear_free(impl->sec, impl->seclen); + OPENSSL_cleanse(impl->seed, impl->seedlen); + memset(impl, 0, sizeof(*impl)); } -static int pkey_tls1_prf_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) +static int kdf_tls1_prf_ctrl(EVP_KDF_IMPL *impl, int cmd, va_list args) { - TLS1_PRF_PKEY_CTX *kctx = ctx->data; - switch (type) { - case EVP_PKEY_CTRL_TLS_MD: - kctx->md = p2; - return 1; + const unsigned char *p; + size_t len; + const EVP_MD *md; - case EVP_PKEY_CTRL_TLS_SECRET: - if (p1 < 0) + switch (cmd) { + case EVP_KDF_CTRL_SET_MD: + md = va_arg(args, const EVP_MD *); + if (md == NULL) return 0; - if (kctx->sec != NULL) - OPENSSL_clear_free(kctx->sec, kctx->seclen); - OPENSSL_cleanse(kctx->seed, kctx->seedlen); - kctx->seedlen = 0; - kctx->sec = OPENSSL_memdup(p2, p1); - if (kctx->sec == NULL) + + impl->md = md; + return 1; + + case EVP_KDF_CTRL_SET_TLS_SECRET: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + OPENSSL_clear_free(impl->sec, impl->seclen); + impl->sec = OPENSSL_memdup(p, len); + if (impl->sec == NULL) return 0; - kctx->seclen = p1; + + impl->seclen = len; return 1; - case EVP_PKEY_CTRL_TLS_SEED: - if (p1 == 0 || p2 == NULL) + case EVP_KDF_CTRL_RESET_TLS_SEED: + OPENSSL_cleanse(impl->seed, impl->seedlen); + impl->seedlen = 0; + return 1; + + case EVP_KDF_CTRL_ADD_TLS_SEED: + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + if (len == 0 || p == NULL) return 1; - if (p1 < 0 || p1 > (int)(TLS1_PRF_MAXBUF - kctx->seedlen)) + + if (len > (TLS1_PRF_MAXBUF - impl->seedlen)) return 0; - memcpy(kctx->seed + kctx->seedlen, p2, p1); - kctx->seedlen += p1; + + memcpy(impl->seed + impl->seedlen, p, len); + impl->seedlen += len; return 1; default: return -2; - } } -static int pkey_tls1_prf_ctrl_str(EVP_PKEY_CTX *ctx, - const char *type, const char *value) +static int kdf_tls1_prf_ctrl_str(EVP_KDF_IMPL *impl, + const char *type, const char *value) { if (value == NULL) { - KDFerr(KDF_F_PKEY_TLS1_PRF_CTRL_STR, KDF_R_VALUE_MISSING); + KDFerr(KDF_F_KDF_TLS1_PRF_CTRL_STR, KDF_R_VALUE_MISSING); return 0; } - if (strcmp(type, "md") == 0) { - TLS1_PRF_PKEY_CTX *kctx = ctx->data; + if (strcmp(type, "digest") == 0) + return kdf_md2ctrl(impl, kdf_tls1_prf_ctrl, EVP_KDF_CTRL_SET_MD, value); - const EVP_MD *md = EVP_get_digestbyname(value); - if (md == NULL) { - KDFerr(KDF_F_PKEY_TLS1_PRF_CTRL_STR, KDF_R_INVALID_DIGEST); - return 0; - } - kctx->md = md; - return 1; - } if (strcmp(type, "secret") == 0) - return EVP_PKEY_CTX_str2ctrl(ctx, EVP_PKEY_CTRL_TLS_SECRET, value); + return kdf_str2ctrl(impl, kdf_tls1_prf_ctrl, + EVP_KDF_CTRL_SET_TLS_SECRET, value); + if (strcmp(type, "hexsecret") == 0) - return EVP_PKEY_CTX_hex2ctrl(ctx, EVP_PKEY_CTRL_TLS_SECRET, value); + return kdf_hex2ctrl(impl, kdf_tls1_prf_ctrl, + EVP_KDF_CTRL_SET_TLS_SECRET, value); + if (strcmp(type, "seed") == 0) - return EVP_PKEY_CTX_str2ctrl(ctx, EVP_PKEY_CTRL_TLS_SEED, value); + return kdf_str2ctrl(impl, kdf_tls1_prf_ctrl, EVP_KDF_CTRL_ADD_TLS_SEED, + value); + if (strcmp(type, "hexseed") == 0) - return EVP_PKEY_CTX_hex2ctrl(ctx, EVP_PKEY_CTRL_TLS_SEED, value); + return kdf_hex2ctrl(impl, kdf_tls1_prf_ctrl, EVP_KDF_CTRL_ADD_TLS_SEED, + value); - KDFerr(KDF_F_PKEY_TLS1_PRF_CTRL_STR, KDF_R_UNKNOWN_PARAMETER_TYPE); return -2; } -static int pkey_tls1_prf_derive(EVP_PKEY_CTX *ctx, unsigned char *key, - size_t *keylen) +static int kdf_tls1_prf_derive(EVP_KDF_IMPL *impl, unsigned char *key, + size_t keylen) { - TLS1_PRF_PKEY_CTX *kctx = ctx->data; - if (kctx->md == NULL) { - KDFerr(KDF_F_PKEY_TLS1_PRF_DERIVE, KDF_R_MISSING_MESSAGE_DIGEST); + if (impl->md == NULL) { + KDFerr(KDF_F_KDF_TLS1_PRF_DERIVE, KDF_R_MISSING_MESSAGE_DIGEST); return 0; } - if (kctx->sec == NULL) { - KDFerr(KDF_F_PKEY_TLS1_PRF_DERIVE, KDF_R_MISSING_SECRET); + if (impl->sec == NULL) { + KDFerr(KDF_F_KDF_TLS1_PRF_DERIVE, KDF_R_MISSING_SECRET); return 0; } - if (kctx->seedlen == 0) { - KDFerr(KDF_F_PKEY_TLS1_PRF_DERIVE, KDF_R_MISSING_SEED); + if (impl->seedlen == 0) { + KDFerr(KDF_F_KDF_TLS1_PRF_DERIVE, KDF_R_MISSING_SEED); return 0; } - return tls1_prf_alg(kctx->md, kctx->sec, kctx->seclen, - kctx->seed, kctx->seedlen, - key, *keylen); + return tls1_prf_alg(impl->md, impl->sec, impl->seclen, + impl->seed, impl->seedlen, + key, keylen); } -const EVP_PKEY_METHOD tls1_prf_pkey_meth = { - EVP_PKEY_TLS1_PRF, - 0, - pkey_tls1_prf_init, - 0, - pkey_tls1_prf_cleanup, - - 0, 0, - 0, 0, - - 0, - 0, - - 0, - 0, - - 0, 0, - - 0, 0, 0, 0, - - 0, 0, - - 0, 0, - - 0, - pkey_tls1_prf_derive, - pkey_tls1_prf_ctrl, - pkey_tls1_prf_ctrl_str +const EVP_KDF_METHOD tls1_prf_kdf_meth = { + EVP_KDF_TLS1_PRF, + kdf_tls1_prf_new, + kdf_tls1_prf_free, + kdf_tls1_prf_reset, + kdf_tls1_prf_ctrl, + kdf_tls1_prf_ctrl_str, + NULL, + kdf_tls1_prf_derive }; static int tls1_prf_P_hash(const EVP_MD *md, @@ -249,12 +245,11 @@ static int tls1_prf_alg(const EVP_MD *md, const unsigned char *seed, size_t seed_len, unsigned char *out, size_t olen) { - if (EVP_MD_type(md) == NID_md5_sha1) { size_t i; unsigned char *tmp; if (!tls1_prf_P_hash(EVP_md5(), sec, slen/2 + (slen & 1), - seed, seed_len, out, olen)) + seed, seed_len, out, olen)) return 0; if ((tmp = OPENSSL_malloc(olen)) == NULL) { @@ -262,7 +257,7 @@ static int tls1_prf_alg(const EVP_MD *md, return 0; } if (!tls1_prf_P_hash(EVP_sha1(), sec + slen/2, slen/2 + (slen & 1), - seed, seed_len, tmp, olen)) { + seed, seed_len, tmp, olen)) { OPENSSL_clear_free(tmp, olen); return 0; } diff --git a/doc/man3/EVP_KDF_CTX.pod b/doc/man3/EVP_KDF_CTX.pod new file mode 100644 index 0000000..b01c719 --- /dev/null +++ b/doc/man3/EVP_KDF_CTX.pod @@ -0,0 +1,217 @@ +=pod + +=head1 NAME + +EVP_KDF_CTX, EVP_KDF_CTX_new_id, EVP_KDF_CTX_free, EVP_KDF_reset, +EVP_KDF_ctrl, EVP_KDF_vctrl, EVP_KDF_ctrl_str, EVP_KDF_size, +EVP_KDF_derive - EVP KDF routines + +=head1 SYNOPSIS + + #include + + typedef struct evp_kdf_ctx_st EVP_KDF_CTX; + + EVP_KDF_CTX *EVP_KDF_CTX_new_id(int id); + void EVP_KDF_CTX_free(EVP_KDF_CTX *ctx); + void EVP_KDF_reset(EVP_KDF_CTX *ctx); + int EVP_KDF_ctrl(EVP_KDF_CTX *ctx, int cmd, ...); + int EVP_KDF_vctrl(EVP_KDF_CTX *ctx, int cmd, va_list args); + int EVP_KDF_ctrl_str(EVP_KDF_CTX *ctx, const char *type, const char *value); + size_t EVP_KDF_size(EVP_KDF_CTX *ctx); + int EVP_KDF_derive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen); + +=head1 DESCRIPTION + +The EVP KDF routines are a high level interface to Key Derivation Function +algorithms and should be used instead of algorithm-specific functions. + +After creating a C for the required algorithm using +EVP_KDF_CTX_new_id(), inputs to the algorithm are supplied using calls to +EVP_KDF_ctrl(), EVP_KDF_vctrl() or EVP_KDF_ctrl_str() before calling +EVP_KDF_derive() to derive the key. + +=head2 Types + +B is a context type that holds the algorithm inputs. + +=head2 Context manipulation functions + +EVP_KDF_CTX_new_id() creates a KDF context for the algorithm identified by the +specified NID. + +EVP_KDF_CTX_free() frees up the context C. If C is C, nothing +is done. + +=head2 Computing functions + +EVP_KDF_reset() resets the context to the default state as if the context +had just been created. + +EVP_KDF_ctrl() is used to provide inputs to the KDF algorithm prior to +EVP_KDF_derive() being called. The inputs that may be provided will vary +depending on the KDF algorithm or its implementation. This functions takes +variable arguments, the exact expected arguments depend on C. +See L below for a description of standard controls. + +EVP_KDF_vctrl() is the variant of EVP_KDF_ctrl() that takes a C +argument instead of variadic arguments. + +EVP_KDF_ctrl_str() allows an application to send an algorithm specific control +operation to a context C in string form. This is intended to be used for +options specified on the command line or in text files. + +EVP_KDF_size() returns the output size if the algorithm produces a fixed amount +of output and C otherwise. If an error occurs then 0 is returned. +For some algorithms an error may result if input parameters necessary to +calculate a fixed output size have not yet been supplied. + +EVP_KDF_derive() derives C bytes of key material and places it in the +C buffer. If the algorithm produces a fixed amount of output then an +error will occur unless the C parameter is equal to that output size, +as returned by EVP_KDF_size(). + +=head1 CONTROLS + +The standard controls are: + +=over 4 + +=item B + +This control expects two arguments: C, C + +Some KDF implementations require a password. For those KDF implementations +that support it, this control sets the password. + +EVP_KDF_ctrl_str() takes two type strings for this control: + +=over 4 + +=item "pass" + +The value string is used as is. + +=item "hexpass" + +The value string is expected to be a hexadecimal number, which will be +decoded before being passed on as the control value. + +=back + +=item B + +This control expects two arguments: C, C + +Some KDF implementations can take a salt. For those KDF implementations that +support it, this control sets the salt. + +The default value, if any, is implementation dependent. + +EVP_KDF_ctrl_str() takes two type strings for this control: + +=over 4 + +=item "salt" + +The value string is used as is. + +=item "hexsalt" + +The value string is expected to be a hexadecimal number, which will be +decoded before being passed on as the control value. + +=back + +=item B + +This control expects one argument: C + +Some KDF implementations require an iteration count. For those KDF implementations that support it, this control sets the iteration count. + +The default value, if any, is implementation dependent. + +EVP_KDF_ctrl_str() type string: "iter" + +The value string is expected to be a decimal number. + +=item B + +This control expects one argument: C + +For MAC implementations that use a message digest as an underlying computation +algorithm, this control set what the digest algorithm should be. + +EVP_KDF_ctrl_str() type string: "md" + +The value string is expected to be the name of a digest. + +=item B + +This control expects two arguments: C, C + +Some KDF implementations require a key. For those KDF implementations that +support it, this control sets the key. + +EVP_KDF_ctrl_str() takes two type strings for this control: + +=over 4 + +=item "key" + +The value string is used as is. + +=item "hexkey" + +The value string is expected to be a hexadecimal number, which will be +decoded before being passed on as the control value. + +=back + +=item B + +This control expects one argument: C + +Memory-hard password-based KDF algorithms, such as scrypt, use an amount of +memory that depends on the load factors provided as input. For those KDF +implementations that support it, this control sets an upper limit on the amount +of memory that may be consumed while performing a key derivation. If this +memory usage limit is exceeded because the load factors are chosen too high, +the key derivation will fail. + +The default value is implementation dependent. + +EVP_KDF_ctrl_str() type string: "maxmem_bytes" + +The value string is expected to be a decimal number. + +=back + +=head1 RETURN VALUES + +EVP_KDF_CTX_new_id() returns either the newly allocated C +structure or C if an error occurred. + +EVP_KDF_CTX_free() and EVP_KDF_reset() do not return a value. + +EVP_KDF_size() returns the output size. C is returned to indicate +that the algorithm produces a variable amount of output; 0 to indicate failure. + +The remaining functions return 1 for success and 0 or a negative value for +failure. In particular, a return value of -2 indicates the operation is not +supported by the KDF algorithm. + +=head1 SEE ALSO + +L + +=head1 COPYRIGHT + +Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + +Licensed under the Apache License 2.0 (the "License"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file LICENSE in the source distribution or at +L. + +=cut diff --git a/doc/man7/EVP_KDF_HKDF.pod b/doc/man7/EVP_KDF_HKDF.pod new file mode 100644 index 0000000..2188b13 --- /dev/null +++ b/doc/man7/EVP_KDF_HKDF.pod @@ -0,0 +1,180 @@ +=pod + +=head1 NAME + +EVP_KDF_HKDF - The HKDF EVP_KDF implementation + +=head1 DESCRIPTION + +Support for computing the B KDF through the B API. + +The EVP_KDF_HKDF algorithm implements the HKDF key derivation function. +HKDF follows the "extract-then-expand" paradigm, where the KDF logically +consists of two modules. The first stage takes the input keying material +and "extracts" from it a fixed-length pseudorandom key K. The second stage +"expands" the key K into several additional pseudorandom keys (the output +of the KDF). + +=head2 Numeric identity + +B is the numeric identity for this implementation; it +can be used with the EVP_KDF_CTX_new_id() function. + +=head2 Supported controls + +The supported controls are: + +=over 4 + +=item B + +=item B + +=item B + +These controls work as described in L. + +=item B + +This control does not expect any arguments. + +Resets the context info buffer to zero length. + +=item B + +This control expects two arguments: C, C + +Sets the info value to the first B bytes of the buffer B. If a +value is already set, the contents of the buffer are appended to the existing +value. + +The total length of the context info buffer cannot exceed 1024 bytes; +this should be more than enough for any normal use of HKDF. + +EVP_KDF_ctrl_str() takes two type strings for this control: + +=over 4 + +=item "info" + +The value string is used as is. + +=item "hexinfo" + +The value string is expected to be a hexadecimal number, which will be +decoded before being passed on as the control value. + +=back + +=item B + +This control expects one argument: C + +Sets the mode for the HKDF operation. There are three modes that are currently +defined: + +=over 4 + +=item EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND + +This is the default mode. Calling L on an EVP_KDF_CTX set +up for HKDF will perform an extract followed by an expand operation in one go. +The derived key returned will be the result after the expand operation. The +intermediate fixed-length pseudorandom key K is not returned. + +In this mode the digest, key, salt and info values must be set before a key is +derived otherwise an error will occur. + +=item EVP_KDF_HKDF_MODE_EXTRACT_ONLY + +In this mode calling L will just perform the extract +operation. The value returned will be the intermediate fixed-length pseudorandom +key K. The C parameter must match the size of K, which can be looked +up by calling EVP_KDF_size() after setting the mode and digest. + +The digest, key and salt values must be set before a key is derived otherwise +an error will occur. + +=item EVP_KDF_HKDF_MODE_EXPAND_ONLY + +In this mode calling L will just perform the expand +operation. The input key should be set to the intermediate fixed-length +pseudorandom key K returned from a previous extract operation. + +The digest, key and info values must be set before a key is derived otherwise +an error will occur. + +=back + +EVP_KDF_ctrl_str() type string: "mode" + +The value string is expected to be one of: "EXTRACT_AND_EXPAND", "EXTRACT_ONLY" +or "EXPAND_ONLY". + +=back + +=head1 NOTES + +A context for HKDF can be obtained by calling: + + EVP_KDF_CTX *kctx = EVP_KDF_CTX_new_id(EVP_KDF_HKDF); + +The output length of an HKDF expand operation is specified via the C +parameter to the L function. When using +EVP_KDF_HKDF_MODE_EXTRACT_ONLY the C parameter must equal the size of +the intermediate fixed-length pseudorandom key otherwise an error will occur. +For that mode, the fixed output size can be looked up by calling EVP_KDF_size() +after setting the mode and digest on the C. + +=head1 EXAMPLE + +This example derives 10 bytes using SHA-256 with the secret key "secret", +salt value "salt" and info value "label": + + EVP_KDF_CTX *kctx; + unsigned char out[10]; + + kctx = EVP_KDF_CTX_new_id(EVP_KDF_HKDF); + + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_MD, EVP_sha256()) <= 0) { + error("EVP_KDF_CTRL_SET_MD"); + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SALT, "salt", (size_t)4) <= 0) { + error("EVP_KDF_CTRL_SET_SALT"); + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_KEY, "secret", (size_t)6) <= 0) { + error("EVP_KDF_CTRL_SET_KEY"); + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_ADD_HKDF_INFO, "label", (size_t)5) <= 0) { + error("EVP_KDF_CTRL_ADD_HKDF_INFO"); + } + if (EVP_KDF_derive(kctx, out, sizeof(out)) <= 0) { + error("EVP_KDF_derive"); + } + + EVP_KDF_CTX_free(kctx); + +=head1 CONFORMING TO + +RFC 5869 + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L + +=head1 COPYRIGHT + +Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + +Licensed under the Apache License 2.0 (the "License"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file LICENSE in the source distribution or at +L. + +=cut diff --git a/doc/man7/EVP_KDF_PBKDF2.pod b/doc/man7/EVP_KDF_PBKDF2.pod new file mode 100644 index 0000000..ba322d4 --- /dev/null +++ b/doc/man7/EVP_KDF_PBKDF2.pod @@ -0,0 +1,78 @@ +=pod + +=head1 NAME + +EVP_KDF_PBKDF2 - The PBKDF2 EVP_KDF implementation + +=head1 DESCRIPTION + +Support for computing the B password-based KDF through the B +API. + +The EVP_KDF_PBKDF2 algorithm implements the PBKDF2 password-based key +derivation function, as described in RFC 2898; it derives a key from a password +using a salt and iteration count. + +=head2 Numeric identity + +B is the numeric identity for this implementation; it +can be used with the EVP_KDF_CTX_new_id() function. + +=head2 Supported controls + +The supported controls are: + +=over 4 + +=item B + +=item B + +=item B + +=item B + +These controls work as described in L. + +B is the iteration count and its value should be greater than or equal to +1. RFC 2898 suggests an iteration count of at least 1000. The default value is +2048. Any B less than 1 is treated as a single iteration. + +=back + +=head1 NOTES + +A typical application of this algorithm is to derive keying material for an +encryption algorithm from a password in the B, a salt in B, +and an iteration count. + +Increasing the B parameter slows down the algorithm which makes it +harder for an attacker to perform a brute force attack using a large number +of candidate passwords. + +No assumption is made regarding the given password; it is simply treated as a +byte sequence. + +=head1 CONFORMING TO + +RFC 2898 + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L + +=head1 COPYRIGHT + +Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + +Licensed under the Apache License 2.0 (the "License"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file LICENSE in the source distribution or at +L. + +=cut diff --git a/doc/man7/scrypt.pod b/doc/man7/EVP_KDF_SCRYPT.pod similarity index 53% rename from doc/man7/scrypt.pod rename to doc/man7/EVP_KDF_SCRYPT.pod index eabad5b..a44dc63 100644 --- a/doc/man7/scrypt.pod +++ b/doc/man7/EVP_KDF_SCRYPT.pod @@ -2,11 +2,14 @@ =head1 NAME -scrypt - EVP_PKEY scrypt KDF support +EVP_KDF_SCRYPT - The scrypt EVP_KDF implementation =head1 DESCRIPTION -The EVP_PKEY_SCRYPT algorithm implements the scrypt password based key +Support for computing the B password-based KDF through the B +API. + +The EVP_KDF_SCRYPT algorithm implements the scrypt password-based key derivation function, as described in RFC 7914. It is memory-hard in the sense that it deliberately requires a significant amount of RAM for efficient computation. The intention of this is to render brute forcing of passwords on @@ -26,49 +29,82 @@ computation time of less than 5 seconds on a 2.5 GHz Intel Core 2 Duo are N = 2^20 = 1048576, r = 8, p = 1. Consequently, the required amount of memory for this computation is roughly 1 GiB. On a more recent CPU (Intel i7-5930K at 3.5 GHz), this computation takes about 3 seconds. When N, r or p are not specified, -they default to 1048576, 8, and 1, respectively. The default amount of RAM that +they default to 1048576, 8, and 1, respectively. The maximum amount of RAM that may be used by scrypt defaults to 1025 MiB. +=head2 Numeric identity + +B is the numeric identity for this implementation; it +can be used with the EVP_KDF_CTX_new_id() function. + +=head2 Supported controls + +The supported controls are: + +=over 4 + +=item B + +=item B + +These controls work as described in L. + +=item B + +=item B + +=item B + +B expects one argument: C + +B expects one argument: C + +B expects one argument: C + +These controls configure the scrypt work factors N, r and p. + +EVP_KDF_ctrl_str() type strings: "N", "r" and "p", respectively. + +The corresponding value strings are expected to be decimal numbers. + +=back + =head1 NOTES A context for scrypt can be obtained by calling: - EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_SCRYPT, NULL); + EVP_KDF_CTX *kctx = EVP_KDF_CTX_new_id(EVP_KDF_SCRYPT); The output length of an scrypt key derivation is specified via the -length parameter to the L function. +B parameter to the L function. =head1 EXAMPLE -This example derives a 64-byte long test vector using scrypt using the password +This example derives a 64-byte long test vector using scrypt with the password "password", salt "NaCl" and N = 1024, r = 8, p = 16. - EVP_PKEY_CTX *pctx; + EVP_KDF_CTX *kctx; unsigned char out[64]; - size_t outlen = sizeof(out); - pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_SCRYPT, NULL); + kctx = EVP_KDF_CTX_new_id(EVP_KDF_SCRYPT); - if (EVP_PKEY_derive_init(pctx) <= 0) { - error("EVP_PKEY_derive_init"); - } - if (EVP_PKEY_CTX_set1_pbe_pass(pctx, "password", 8) <= 0) { - error("EVP_PKEY_CTX_set1_pbe_pass"); + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_PASS, "password", (size_t)8) <= 0) { + error("EVP_KDF_CTRL_SET_PASS"); } - if (EVP_PKEY_CTX_set1_scrypt_salt(pctx, "NaCl", 4) <= 0) { - error("EVP_PKEY_CTX_set1_scrypt_salt"); + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SALT, "NaCl", (size_t)4) <= 0) { + error("EVP_KDF_CTRL_SET_SALT"); } - if (EVP_PKEY_CTX_set_scrypt_N(pctx, 1024) <= 0) { - error("EVP_PKEY_CTX_set_scrypt_N"); + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SCRYPT_N, (uint64_t)1024) <= 0) { + error("EVP_KDF_CTRL_SET_SCRYPT_N"); } - if (EVP_PKEY_CTX_set_scrypt_r(pctx, 8) <= 0) { - error("EVP_PKEY_CTX_set_scrypt_r"); + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SCRYPT_R, (uint32_t)8) <= 0) { + error("EVP_KDF_CTRL_SET_SCRYPT_R"); } - if (EVP_PKEY_CTX_set_scrypt_p(pctx, 16) <= 0) { - error("EVP_PKEY_CTX_set_scrypt_p"); + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SCRYPT_P, (uint32_t)16) <= 0) { + error("EVP_KDF_CTRL_SET_SCRYPT_P"); } - if (EVP_PKEY_derive(pctx, out, &outlen) <= 0) { - error("EVP_PKEY_derive"); + if (EVP_KDF_derive(kctx, out, sizeof(out)) <= 0) { + error("EVP_KDF_derive"); } { @@ -86,7 +122,7 @@ This example derives a 64-byte long test vector using scrypt using the password assert(!memcmp(out, expected, sizeof(out))); } - EVP_PKEY_CTX_free(pctx); + EVP_KDF_CTX_free(kctx); =head1 CONFORMING TO @@ -94,14 +130,12 @@ RFC 7914 =head1 SEE ALSO -L, -L, -L, -L, -L, -L, -L, -L +L, +L, +L, +L, +L, +L =head1 COPYRIGHT diff --git a/doc/man7/EVP_KDF_TLS1_PRF.pod b/doc/man7/EVP_KDF_TLS1_PRF.pod new file mode 100644 index 0000000..e6cbe09 --- /dev/null +++ b/doc/man7/EVP_KDF_TLS1_PRF.pod @@ -0,0 +1,142 @@ +=pod + +=head1 NAME + +EVP_KDF_TLS1_PRF - The TLS1 PRF EVP_KDF implementation + +=head1 DESCRIPTION + +Support for computing the B PRF through the B API. + +The EVP_KDF_TLS1_PRF algorithm implements the PRF used by TLS versions up to +and including TLS 1.2. + +=head2 Numeric identity + +B is the numeric identity for this implementation; it +can be used with the EVP_KDF_CTX_new_id() function. + +=head2 Supported controls + +The supported controls are: + +=over 4 + +=item B + +This control works as described in L. + +The C control is used to set the message digest associated +with the TLS PRF. EVP_md5_sha1() is treated as a special case which uses the +PRF algorithm using both B and B as used in TLS 1.0 and 1.1. + +=item B + +This control expects two arguments: C, C + +Sets the secret value of the TLS PRF to B bytes of the buffer B. +Any existing secret value is replaced. + +EVP_KDF_ctrl_str() takes two type strings for this control: + +=over 4 + +=item "secret" + +The value string is used as is. + +=item "hexsecret" + +The value string is expected to be a hexadecimal number, which will be +decoded before being passed on as the control value. + +=back + +=item B + +This control does not expect any arguments. + +Resets the context seed buffer to zero length. + +=item B + +This control expects two arguments: C, C + +Sets the seed to B bytes of B. If a seed is already set it is +appended to the existing value. + +The total length of the context seed buffer cannot exceed 1024 bytes; +this should be more than enough for any normal use of the TLS PRF. + +EVP_KDF_ctrl_str() takes two type strings for this control: + +=over 4 + +=item "seed" + +The value string is used as is. + +=item "hexseed" + +The value string is expected to be a hexadecimal number, which will be +decoded before being passed on as the control value. + +=back + +=back + +=head1 NOTES + +A context for the TLS PRF can be obtained by calling: + + EVP_KDF_CTX *kctx = EVP_KDF_CTX_new_id(EVP_KDF_TLS1_PRF, NULL); + +The digest, secret value and seed must be set before a key is derived otherwise +an error will occur. + +The output length of the PRF is specified by the C parameter to the +EVP_KDF_derive() function. + +=head1 EXAMPLE + +This example derives 10 bytes using SHA-256 with the secret key "secret" +and seed value "seed": + + EVP_KDF_CTX *kctx; + unsigned char out[10]; + + kctx = EVP_KDF_CTX_new_id(EVP_KDF_TLS1_PRF); + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_MD, EVP_sha256()) <= 0) { + error("EVP_KDF_CTRL_SET_MD"); + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_TLS_SECRET, + "secret", (size_t)6) <= 0) { + error("EVP_KDF_CTRL_SET_TLS_SECRET"); + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_ADD_TLS_SEED, "seed", (size_t)4) <= 0) { + error("EVP_KDF_CTRL_ADD_TLS_SEED"); + } + if (EVP_KDF_derive(kctx, out, sizeof(out)) <= 0) { + error("EVP_KDF_derive"); + } + EVP_KDF_CTX_free(kctx); + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L + +=head1 COPYRIGHT + +Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + +Licensed under the Apache License 2.0 (the "License"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file LICENSE in the source distribution or at +L. + +=cut diff --git a/include/openssl/evperr.h b/include/openssl/evperr.h index d3ed5b5..7da602d 100644 --- a/include/openssl/evperr.h +++ b/include/openssl/evperr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -55,6 +55,9 @@ int ERR_load_EVP_strings(void); # define EVP_F_EVP_ENCRYPTDECRYPTUPDATE 219 # define EVP_F_EVP_ENCRYPTFINAL_EX 127 # define EVP_F_EVP_ENCRYPTUPDATE 167 +# define EVP_F_EVP_KDF_CTRL 224 +# define EVP_F_EVP_KDF_CTRL_STR 225 +# define EVP_F_EVP_KDF_CTX_NEW_ID 226 # define EVP_F_EVP_MAC_CTRL 209 # define EVP_F_EVP_MAC_CTRL_STR 210 # define EVP_F_EVP_MAC_CTX_COPY 211 @@ -125,6 +128,7 @@ int ERR_load_EVP_strings(void); # define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 # define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164 # define EVP_F_PKCS5_V2_SCRYPT_KEYIVGEN 180 +# define EVP_F_PKEY_KDF_CTRL 227 # define EVP_F_PKEY_MAC_INIT 214 # define EVP_F_PKEY_SET_TYPE 158 # define EVP_F_POLY1305_CTRL 216 @@ -132,6 +136,7 @@ int ERR_load_EVP_strings(void); # define EVP_F_RC5_CTRL 125 # define EVP_F_S390X_AES_GCM_CTRL 201 # define EVP_F_S390X_AES_GCM_TLS_CIPHER 208 +# define EVP_F_SCRYPT_ALG 228 # define EVP_F_UPDATE 173 /* @@ -188,6 +193,7 @@ int ERR_load_EVP_strings(void); # define EVP_R_ONLY_ONESHOT_SUPPORTED 177 # define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 # define EVP_R_OPERATON_NOT_INITIALIZED 151 +# define EVP_R_PARAMETER_TOO_LARGE 187 # define EVP_R_PARTIALLY_OVERLAPPING 162 # define EVP_R_PBKDF2_ERROR 181 # define EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED 179 diff --git a/include/openssl/kdf.h b/include/openssl/kdf.h index b9e7824..0f39a14 100644 --- a/include/openssl/kdf.h +++ b/include/openssl/kdf.h @@ -10,10 +10,50 @@ #ifndef HEADER_KDF_H # define HEADER_KDF_H +# include # include -#ifdef __cplusplus +# ifdef __cplusplus extern "C" { -#endif +# endif + +# define EVP_KDF_PBKDF2 NID_id_pbkdf2 +# define EVP_KDF_SCRYPT NID_id_scrypt +# define EVP_KDF_TLS1_PRF NID_tls1_prf +# define EVP_KDF_HKDF NID_hkdf + +EVP_KDF_CTX *EVP_KDF_CTX_new_id(int id); +void EVP_KDF_CTX_free(EVP_KDF_CTX *ctx); + +void EVP_KDF_reset(EVP_KDF_CTX *ctx); +int EVP_KDF_ctrl(EVP_KDF_CTX *ctx, int cmd, ...); +int EVP_KDF_vctrl(EVP_KDF_CTX *ctx, int cmd, va_list args); +int EVP_KDF_ctrl_str(EVP_KDF_CTX *ctx, const char *type, const char *value); +size_t EVP_KDF_size(EVP_KDF_CTX *ctx); +int EVP_KDF_derive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen); + + +# define EVP_KDF_CTRL_SET_PASS 0x01 /* unsigned char *, size_t */ +# define EVP_KDF_CTRL_SET_SALT 0x02 /* unsigned char *, size_t */ +# define EVP_KDF_CTRL_SET_ITER 0x03 /* int */ +# define EVP_KDF_CTRL_SET_MD 0x04 /* EVP_MD * */ +# define EVP_KDF_CTRL_SET_KEY 0x05 /* unsigned char *, size_t */ +# define EVP_KDF_CTRL_SET_MAXMEM_BYTES 0x06 /* uint64_t */ +# define EVP_KDF_CTRL_SET_TLS_SECRET 0x07 /* unsigned char *, size_t */ +# define EVP_KDF_CTRL_RESET_TLS_SEED 0x08 +# define EVP_KDF_CTRL_ADD_TLS_SEED 0x09 /* unsigned char *, size_t */ +# define EVP_KDF_CTRL_RESET_HKDF_INFO 0x0a +# define EVP_KDF_CTRL_ADD_HKDF_INFO 0x0b /* unsigned char *, size_t */ +# define EVP_KDF_CTRL_SET_HKDF_MODE 0x0c /* int */ +# define EVP_KDF_CTRL_SET_SCRYPT_N 0x0d /* uint64_t */ +# define EVP_KDF_CTRL_SET_SCRYPT_R 0x0e /* uint32_t */ +# define EVP_KDF_CTRL_SET_SCRYPT_P 0x0f /* uint32_t */ + +# define EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND 0 +# define EVP_KDF_HKDF_MODE_EXTRACT_ONLY 1 +# define EVP_KDF_HKDF_MODE_EXPAND_ONLY 2 + + +/**** The legacy PKEY-based KDF API follows. ****/ # define EVP_PKEY_CTRL_TLS_MD (EVP_PKEY_ALG_CTRL) # define EVP_PKEY_CTRL_TLS_SECRET (EVP_PKEY_ALG_CTRL + 1) @@ -30,9 +70,12 @@ extern "C" { # define EVP_PKEY_CTRL_SCRYPT_P (EVP_PKEY_ALG_CTRL + 12) # define EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES (EVP_PKEY_ALG_CTRL + 13) -# define EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND 0 -# define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY 1 -# define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY 2 +# define EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND \ + EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND +# define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY \ + EVP_KDF_HKDF_MODE_EXTRACT_ONLY +# define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY \ + EVP_KDF_HKDF_MODE_EXPAND_ONLY # define EVP_PKEY_CTX_set_tls1_prf_md(pctx, md) \ EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ @@ -91,7 +134,7 @@ extern "C" { EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES, maxmem_bytes) -# ifdef __cplusplus +# ifdef __cplusplus } # endif #endif diff --git a/include/openssl/kdferr.h b/include/openssl/kdferr.h index 0fddea0..a143959 100644 --- a/include/openssl/kdferr.h +++ b/include/openssl/kdferr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -19,6 +19,23 @@ int ERR_load_KDF_strings(void); /* * KDF function codes. */ +# define KDF_F_HKDF_EXTRACT 112 +# define KDF_F_KDF_HKDF_DERIVE 113 +# define KDF_F_KDF_HKDF_NEW 114 +# define KDF_F_KDF_HKDF_SIZE 115 +# define KDF_F_KDF_MD2CTRL 116 +# define KDF_F_KDF_PBKDF2_CTRL_STR 117 +# define KDF_F_KDF_PBKDF2_DERIVE 118 +# define KDF_F_KDF_PBKDF2_NEW 119 +# define KDF_F_KDF_SCRYPT_CTRL_STR 120 +# define KDF_F_KDF_SCRYPT_CTRL_UINT32 121 +# define KDF_F_KDF_SCRYPT_CTRL_UINT64 122 +# define KDF_F_KDF_SCRYPT_DERIVE 123 +# define KDF_F_KDF_SCRYPT_NEW 124 +# define KDF_F_KDF_TLS1_PRF_CTRL_STR 125 +# define KDF_F_KDF_TLS1_PRF_DERIVE 126 +# define KDF_F_KDF_TLS1_PRF_NEW 127 +# define KDF_F_PBKDF2_SET_MEMBUF 128 # define KDF_F_PKEY_HKDF_CTRL_STR 103 # define KDF_F_PKEY_HKDF_DERIVE 102 # define KDF_F_PKEY_HKDF_INIT 108 @@ -30,6 +47,7 @@ int ERR_load_KDF_strings(void); # define KDF_F_PKEY_TLS1_PRF_CTRL_STR 100 # define KDF_F_PKEY_TLS1_PRF_DERIVE 101 # define KDF_F_PKEY_TLS1_PRF_INIT 110 +# define KDF_F_SCRYPT_SET_MEMBUF 129 # define KDF_F_TLS1_PRF_ALG 111 /* @@ -47,5 +65,6 @@ int ERR_load_KDF_strings(void); # define KDF_R_UNKNOWN_PARAMETER_TYPE 103 # define KDF_R_VALUE_ERROR 108 # define KDF_R_VALUE_MISSING 102 +# define KDF_R_WRONG_OUTPUT_BUFFER_SIZE 112 #endif diff --git a/include/openssl/ossl_typ.h b/include/openssl/ossl_typ.h index 51171d5..1c6acce 100644 --- a/include/openssl/ossl_typ.h +++ b/include/openssl/ossl_typ.h @@ -99,6 +99,8 @@ typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; typedef struct evp_pkey_method_st EVP_PKEY_METHOD; typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; +typedef struct evp_kdf_ctx_st EVP_KDF_CTX; + typedef struct evp_Encode_Ctx_st EVP_ENCODE_CTX; typedef struct hmac_ctx_st HMAC_CTX; diff --git a/test/build.info b/test/build.info index 7d4f953..5904267 100644 --- a/test/build.info +++ b/test/build.info @@ -38,7 +38,8 @@ IF[{- !$disabled{tests} -}] ssl_test_ctx_test ssl_test x509aux cipherlist_test asynciotest \ bio_callback_test bio_memleak_test \ bioprinttest sslapitest dtlstest sslcorrupttest bio_enc_test \ - pkey_meth_test pkey_meth_kdf_test uitest cipherbytes_test \ + pkey_meth_test pkey_meth_kdf_test evp_kdf_test uitest \ + cipherbytes_test \ asn1_encode_test asn1_decode_test asn1_string_table_test \ x509_time_test x509_dup_cert_test x509_check_cert_pkey_test \ recordlentest drbgtest sslbuffertest \ @@ -330,6 +331,10 @@ IF[{- !$disabled{tests} -}] INCLUDE[pkey_meth_kdf_test]=../include ../apps/include DEPEND[pkey_meth_kdf_test]=../libcrypto libtestutil.a + SOURCE[evp_kdf_test]=evp_kdf_test.c + INCLUDE[evp_kdf_test]=../include + DEPEND[evp_kdf_test]=../libcrypto libtestutil.a + SOURCE[x509_time_test]=x509_time_test.c INCLUDE[x509_time_test]=../include ../apps/include DEPEND[x509_time_test]=../libcrypto libtestutil.a diff --git a/test/evp_kdf_test.c b/test/evp_kdf_test.c new file mode 100644 index 0000000..923e9ae --- /dev/null +++ b/test/evp_kdf_test.c @@ -0,0 +1,237 @@ +/* + * Copyright 2018-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2018-2019, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* Tests of the EVP_KDF_CTX APIs */ + +#include +#include + +#include +#include +#include "testutil.h" + +static int test_kdf_tls1_prf(void) +{ + int ret = 0; + EVP_KDF_CTX *kctx; + unsigned char out[16]; + + if ((kctx = EVP_KDF_CTX_new_id(EVP_KDF_TLS1_PRF)) == NULL) { + TEST_error("EVP_KDF_TLS1_PRF"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_MD, EVP_sha256()) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_MD"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_TLS_SECRET, + "secret", (size_t)6) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_TLS_SECRET"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_ADD_TLS_SEED, "seed", (size_t)4) <= 0) { + TEST_error("EVP_KDF_CTRL_ADD_TLS_SEED"); + goto err; + } + if (EVP_KDF_derive(kctx, out, sizeof(out)) <= 0) { + TEST_error("EVP_KDF_derive"); + goto err; + } + + { + const unsigned char expected[sizeof(out)] = { + 0x8e, 0x4d, 0x93, 0x25, 0x30, 0xd7, 0x65, 0xa0, + 0xaa, 0xe9, 0x74, 0xc3, 0x04, 0x73, 0x5e, 0xcc + }; + if (!TEST_mem_eq(out, sizeof(out), expected, sizeof(expected))) { + goto err; + } + } + ret = 1; +err: + EVP_KDF_CTX_free(kctx); + return ret; +} + +static int test_kdf_hkdf(void) +{ + int ret = 0; + EVP_KDF_CTX *kctx; + unsigned char out[10]; + + if ((kctx = EVP_KDF_CTX_new_id(EVP_KDF_HKDF)) == NULL) { + TEST_error("EVP_KDF_HKDF"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_MD, EVP_sha256()) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_MD"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SALT, "salt", (size_t)4) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_SALT"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_KEY, "secret", (size_t)6) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_KEY"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_ADD_HKDF_INFO, + "label", (size_t)5) <= 0) { + TEST_error("EVP_KDF_CTRL_ADD_HKDF_INFO"); + goto err; + } + if (EVP_KDF_derive(kctx, out, sizeof(out)) <= 0) { + TEST_error("EVP_KDF_derive"); + goto err; + } + + { + const unsigned char expected[sizeof(out)] = { + 0x2a, 0xc4, 0x36, 0x9f, 0x52, 0x59, 0x96, 0xf8, 0xde, 0x13 + }; + if (!TEST_mem_eq(out, sizeof(out), expected, sizeof(expected))) { + goto err; + } + } + ret = 1; +err: + EVP_KDF_CTX_free(kctx); + return ret; +} + +static int test_kdf_pbkdf2(void) +{ + int ret = 0; + EVP_KDF_CTX *kctx; + unsigned char out[32]; + + if ((kctx = EVP_KDF_CTX_new_id(EVP_KDF_PBKDF2)) == NULL) { + TEST_error("EVP_KDF_PBKDF2"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_PASS, "password", (size_t)8) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_PASS"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SALT, "salt", (size_t)4) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_SALT"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_ITER, 2) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_ITER"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_MD, EVP_sha256()) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_MD"); + goto err; + } + if (EVP_KDF_derive(kctx, out, sizeof(out)) <= 0) { + TEST_error("EVP_KDF_derive"); + goto err; + } + + { + const unsigned char expected[sizeof(out)] = { + 0xae, 0x4d, 0x0c, 0x95, 0xaf, 0x6b, 0x46, 0xd3, + 0x2d, 0x0a, 0xdf, 0xf9, 0x28, 0xf0, 0x6d, 0xd0, + 0x2a, 0x30, 0x3f, 0x8e, 0xf3, 0xc2, 0x51, 0xdf, + 0xd6, 0xe2, 0xd8, 0x5a, 0x95, 0x47, 0x4c, 0x43 + }; + if (!TEST_mem_eq(out, sizeof(out), expected, sizeof(expected))) { + goto err; + } + } + ret = 1; +err: + EVP_KDF_CTX_free(kctx); + return ret; +} + +#ifndef OPENSSL_NO_SCRYPT +static int test_kdf_scrypt(void) +{ + int ret = 0; + EVP_KDF_CTX *kctx; + unsigned char out[64]; + + if ((kctx = EVP_KDF_CTX_new_id(EVP_KDF_SCRYPT)) == NULL) { + TEST_error("EVP_KDF_SCRYPT"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_PASS, "password", (size_t)8) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_PASS"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SALT, "NaCl", (size_t)4) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_SALT"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SCRYPT_N, (uint64_t)1024) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_SCRYPT_N"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SCRYPT_R, (uint32_t)8) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_SCRYPT_R"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SCRYPT_P, (uint32_t)16) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_SCRYPT_P"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_MAXMEM_BYTES, (uint64_t)16) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_MAXMEM_BYTES"); + goto err; + } + if (EVP_KDF_derive(kctx, out, sizeof(out)) > 0) { + TEST_error("EVP_KDF_derive should have failed"); + goto err; + } + if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_MAXMEM_BYTES, + (uint64_t)(10 * 1024 * 1024)) <= 0) { + TEST_error("EVP_KDF_CTRL_SET_MAXMEM_BYTES"); + goto err; + } + if (EVP_KDF_derive(kctx, out, sizeof(out)) <= 0) { + TEST_error("EVP_KDF_derive"); + goto err; + } + + { + const unsigned char expected[sizeof(out)] = { + 0xfd, 0xba, 0xbe, 0x1c, 0x9d, 0x34, 0x72, 0x00, + 0x78, 0x56, 0xe7, 0x19, 0x0d, 0x01, 0xe9, 0xfe, + 0x7c, 0x6a, 0xd7, 0xcb, 0xc8, 0x23, 0x78, 0x30, + 0xe7, 0x73, 0x76, 0x63, 0x4b, 0x37, 0x31, 0x62, + 0x2e, 0xaf, 0x30, 0xd9, 0x2e, 0x22, 0xa3, 0x88, + 0x6f, 0xf1, 0x09, 0x27, 0x9d, 0x98, 0x30, 0xda, + 0xc7, 0x27, 0xaf, 0xb9, 0x4a, 0x83, 0xee, 0x6d, + 0x83, 0x60, 0xcb, 0xdf, 0xa2, 0xcc, 0x06, 0x40 + }; + if (!TEST_mem_eq(out, sizeof(out), expected, sizeof(expected))) { + goto err; + } + } + ret = 1; +err: + EVP_KDF_CTX_free(kctx); + return ret; +} +#endif + +int setup_tests(void) +{ + ADD_TEST(test_kdf_tls1_prf); + ADD_TEST(test_kdf_hkdf); + ADD_TEST(test_kdf_pbkdf2); +#ifndef OPENSSL_NO_SCRYPT + ADD_TEST(test_kdf_scrypt); +#endif + return 1; +} diff --git a/test/evp_test.c b/test/evp_test.c index 49d254d..cad580e 100644 --- a/test/evp_test.c +++ b/test/evp_test.c @@ -1892,13 +1892,14 @@ static const EVP_TEST_METHOD encode_test_method = { encode_test_run, }; + /** *** KDF TESTS **/ typedef struct kdf_data_st { /* Context for this operation */ - EVP_PKEY_CTX *ctx; + EVP_KDF_CTX *ctx; /* Expected output */ unsigned char *output; size_t output_len; @@ -1925,16 +1926,11 @@ static int kdf_test_init(EVP_TEST *t, const char *name) if (!TEST_ptr(kdata = OPENSSL_zalloc(sizeof(*kdata)))) return 0; - kdata->ctx = EVP_PKEY_CTX_new_id(kdf_nid, NULL); + kdata->ctx = EVP_KDF_CTX_new_id(kdf_nid); if (kdata->ctx == NULL) { OPENSSL_free(kdata); return 0; } - if (EVP_PKEY_derive_init(kdata->ctx) <= 0) { - EVP_PKEY_CTX_free(kdata->ctx); - OPENSSL_free(kdata); - return 0; - } t->data = kdata; return 1; } @@ -1943,7 +1939,42 @@ static void kdf_test_cleanup(EVP_TEST *t) { KDF_DATA *kdata = t->data; OPENSSL_free(kdata->output); - EVP_PKEY_CTX_free(kdata->ctx); + EVP_KDF_CTX_free(kdata->ctx); +} + +static int kdf_test_ctrl(EVP_TEST *t, EVP_KDF_CTX *kctx, + const char *value) +{ + int rv; + char *p, *tmpval; + + if (!TEST_ptr(tmpval = OPENSSL_strdup(value))) + return 0; + p = strchr(tmpval, ':'); + if (p != NULL) + *p++ = '\0'; + rv = EVP_KDF_ctrl_str(kctx, tmpval, p); + if (rv == -2) { + t->err = "KDF_CTRL_INVALID"; + rv = 1; + } else if (p != NULL && rv <= 0) { + /* If p has an OID and lookup fails assume disabled algorithm */ + int nid = OBJ_sn2nid(p); + + if (nid == NID_undef) + nid = OBJ_ln2nid(p); + if (nid != NID_undef + && EVP_get_digestbynid(nid) == NULL + && EVP_get_cipherbynid(nid) == NULL) { + t->skip = 1; + rv = 1; + } else { + t->err = "KDF_CTRL_ERROR"; + rv = 1; + } + } + OPENSSL_free(tmpval); + return rv > 0; } static int kdf_test_parse(EVP_TEST *t, @@ -1954,7 +1985,7 @@ static int kdf_test_parse(EVP_TEST *t, if (strcmp(keyword, "Output") == 0) return parse_bin(value, &kdata->output, &kdata->output_len); if (strncmp(keyword, "Ctrl", 4) == 0) - return pkey_test_ctrl(t, kdata->ctx, value); + return kdf_test_ctrl(t, kdata->ctx, value); return 0; } @@ -1968,7 +1999,7 @@ static int kdf_test_run(EVP_TEST *t) t->err = "INTERNAL_ERROR"; goto err; } - if (EVP_PKEY_derive(expected->ctx, got, &got_len) <= 0) { + if (EVP_KDF_derive(expected->ctx, got, got_len) <= 0) { t->err = "KDF_DERIVE_ERROR"; goto err; } @@ -1994,6 +2025,106 @@ static const EVP_TEST_METHOD kdf_test_method = { /** +*** PKEY KDF TESTS +**/ + +typedef struct pkey_kdf_data_st { + /* Context for this operation */ + EVP_PKEY_CTX *ctx; + /* Expected output */ + unsigned char *output; + size_t output_len; +} PKEY_KDF_DATA; + +/* + * Perform public key operation setup: lookup key, allocated ctx and call + * the appropriate initialisation function + */ +static int pkey_kdf_test_init(EVP_TEST *t, const char *name) +{ + PKEY_KDF_DATA *kdata; + int kdf_nid = OBJ_sn2nid(name); + +#ifdef OPENSSL_NO_SCRYPT + if (strcmp(name, "scrypt") == 0) { + t->skip = 1; + return 1; + } +#endif + + if (kdf_nid == NID_undef) + kdf_nid = OBJ_ln2nid(name); + + if (!TEST_ptr(kdata = OPENSSL_zalloc(sizeof(*kdata)))) + return 0; + kdata->ctx = EVP_PKEY_CTX_new_id(kdf_nid, NULL); + if (kdata->ctx == NULL) { + OPENSSL_free(kdata); + return 0; + } + if (EVP_PKEY_derive_init(kdata->ctx) <= 0) { + EVP_PKEY_CTX_free(kdata->ctx); + OPENSSL_free(kdata); + return 0; + } + t->data = kdata; + return 1; +} + +static void pkey_kdf_test_cleanup(EVP_TEST *t) +{ + PKEY_KDF_DATA *kdata = t->data; + OPENSSL_free(kdata->output); + EVP_PKEY_CTX_free(kdata->ctx); +} + +static int pkey_kdf_test_parse(EVP_TEST *t, + const char *keyword, const char *value) +{ + PKEY_KDF_DATA *kdata = t->data; + + if (strcmp(keyword, "Output") == 0) + return parse_bin(value, &kdata->output, &kdata->output_len); + if (strncmp(keyword, "Ctrl", 4) == 0) + return pkey_test_ctrl(t, kdata->ctx, value); + return 0; +} + +static int pkey_kdf_test_run(EVP_TEST *t) +{ + PKEY_KDF_DATA *expected = t->data; + unsigned char *got = NULL; + size_t got_len = expected->output_len; + + if (!TEST_ptr(got = OPENSSL_malloc(got_len))) { + t->err = "INTERNAL_ERROR"; + goto err; + } + if (EVP_PKEY_derive(expected->ctx, got, &got_len) <= 0) { + t->err = "KDF_DERIVE_ERROR"; + goto err; + } + if (!TEST_mem_eq(expected->output, expected->output_len, got, got_len)) { + t->err = "KDF_MISMATCH"; + goto err; + } + t->err = NULL; + + err: + OPENSSL_free(got); + return 1; +} + +static const EVP_TEST_METHOD pkey_kdf_test_method = { + "PKEYKDF", + pkey_kdf_test_init, + pkey_kdf_test_cleanup, + pkey_kdf_test_parse, + pkey_kdf_test_run +}; + + +/** *** KEYPAIR TESTS **/ @@ -2497,6 +2628,7 @@ static const EVP_TEST_METHOD *evp_test_list[] = { &digestverify_test_method, &encode_test_method, &kdf_test_method, + &pkey_kdf_test_method, &keypair_test_method, &keygen_test_method, &mac_test_method, diff --git a/test/pkey_meth_kdf_test.c b/test/pkey_meth_kdf_test.c index ad75425..cdc3d9f 100644 --- a/test/pkey_meth_kdf_test.c +++ b/test/pkey_meth_kdf_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -18,30 +18,34 @@ static int test_kdf_tls1_prf(void) { + int ret = 0; EVP_PKEY_CTX *pctx; unsigned char out[16]; size_t outlen = sizeof(out); - pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_TLS1_PRF, NULL); + if ((pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_TLS1_PRF, NULL)) == NULL) { + TEST_error("EVP_PKEY_TLS1_PRF"); + goto err; + } if (EVP_PKEY_derive_init(pctx) <= 0) { TEST_error("EVP_PKEY_derive_init"); - return 0; + goto err; } if (EVP_PKEY_CTX_set_tls1_prf_md(pctx, EVP_sha256()) <= 0) { TEST_error("EVP_PKEY_CTX_set_tls1_prf_md"); - return 0; + goto err; } if (EVP_PKEY_CTX_set1_tls1_prf_secret(pctx, "secret", 6) <= 0) { TEST_error("EVP_PKEY_CTX_set1_tls1_prf_secret"); - return 0; + goto err; } if (EVP_PKEY_CTX_add1_tls1_prf_seed(pctx, "seed", 4) <= 0) { TEST_error("EVP_PKEY_CTX_add1_tls1_prf_seed"); - return 0; + goto err; } if (EVP_PKEY_derive(pctx, out, &outlen) <= 0) { TEST_error("EVP_PKEY_derive"); - return 0; + goto err; } { @@ -50,43 +54,49 @@ static int test_kdf_tls1_prf(void) 0xaa, 0xe9, 0x74, 0xc3, 0x04, 0x73, 0x5e, 0xcc }; if (!TEST_mem_eq(out, sizeof(out), expected, sizeof(expected))) { - return 0; + goto err; } } + ret = 1; +err: EVP_PKEY_CTX_free(pctx); - return 1; + return ret; } static int test_kdf_hkdf(void) { + int ret = 0; EVP_PKEY_CTX *pctx; unsigned char out[10]; size_t outlen = sizeof(out); - pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_HKDF, NULL); + if ((pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_HKDF, NULL)) == NULL) { + TEST_error("EVP_PKEY_HKDF"); + goto err; + } if (EVP_PKEY_derive_init(pctx) <= 0) { TEST_error("EVP_PKEY_derive_init"); - return 0; + goto err; } if (EVP_PKEY_CTX_set_hkdf_md(pctx, EVP_sha256()) <= 0) { TEST_error("EVP_PKEY_CTX_set_hkdf_md"); - return 0; + goto err; } if (EVP_PKEY_CTX_set1_hkdf_salt(pctx, "salt", 4) <= 0) { TEST_error("EVP_PKEY_CTX_set1_hkdf_salt"); - return 0; + goto err; } if (EVP_PKEY_CTX_set1_hkdf_key(pctx, "secret", 6) <= 0) { TEST_error("EVP_PKEY_CTX_set1_hkdf_key"); - return 0; + goto err; } if (EVP_PKEY_CTX_add1_hkdf_info(pctx, "label", 5) <= 0) { TEST_error("EVP_PKEY_CTX_set1_hkdf_info"); - return 0; + goto err; } if (EVP_PKEY_derive(pctx, out, &outlen) <= 0) { TEST_error("EVP_PKEY_derive"); - return 0; + goto err; } { @@ -94,60 +104,66 @@ static int test_kdf_hkdf(void) 0x2a, 0xc4, 0x36, 0x9f, 0x52, 0x59, 0x96, 0xf8, 0xde, 0x13 }; if (!TEST_mem_eq(out, sizeof(out), expected, sizeof(expected))) { - return 0; + goto err; } } + ret = 1; +err: EVP_PKEY_CTX_free(pctx); - return 1; + return ret; } #ifndef OPENSSL_NO_SCRYPT static int test_kdf_scrypt(void) { + int ret = 0; EVP_PKEY_CTX *pctx; unsigned char out[64]; size_t outlen = sizeof(out); - pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_SCRYPT, NULL); + if ((pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_SCRYPT, NULL)) == NULL) { + TEST_error("EVP_PKEY_SCRYPT"); + goto err; + } if (EVP_PKEY_derive_init(pctx) <= 0) { TEST_error("EVP_PKEY_derive_init"); - return 0; + goto err; } if (EVP_PKEY_CTX_set1_pbe_pass(pctx, "password", 8) <= 0) { TEST_error("EVP_PKEY_CTX_set1_pbe_pass"); - return 0; + goto err; } if (EVP_PKEY_CTX_set1_scrypt_salt(pctx, "NaCl", 4) <= 0) { TEST_error("EVP_PKEY_CTX_set1_scrypt_salt"); - return 0; + goto err; } if (EVP_PKEY_CTX_set_scrypt_N(pctx, 1024) <= 0) { TEST_error("EVP_PKEY_CTX_set_scrypt_N"); - return 0; + goto err; } if (EVP_PKEY_CTX_set_scrypt_r(pctx, 8) <= 0) { TEST_error("EVP_PKEY_CTX_set_scrypt_r"); - return 0; + goto err; } if (EVP_PKEY_CTX_set_scrypt_p(pctx, 16) <= 0) { TEST_error("EVP_PKEY_CTX_set_scrypt_p"); - return 0; + goto err; } if (EVP_PKEY_CTX_set_scrypt_maxmem_bytes(pctx, 16) <= 0) { TEST_error("EVP_PKEY_CTX_set_maxmem_bytes"); - return 0; + goto err; } if (EVP_PKEY_derive(pctx, out, &outlen) > 0) { TEST_error("EVP_PKEY_derive should have failed"); - return 0; + goto err; } if (EVP_PKEY_CTX_set_scrypt_maxmem_bytes(pctx, 10 * 1024 * 1024) <= 0) { TEST_error("EVP_PKEY_CTX_set_maxmem_bytes"); - return 0; + goto err; } if (EVP_PKEY_derive(pctx, out, &outlen) <= 0) { TEST_error("EVP_PKEY_derive"); - return 0; + goto err; } { @@ -162,11 +178,13 @@ static int test_kdf_scrypt(void) 0x83, 0x60, 0xcb, 0xdf, 0xa2, 0xcc, 0x06, 0x40 }; if (!TEST_mem_eq(out, sizeof(out), expected, sizeof(expected))) { - return 0; + goto err; } } + ret = 1; +err: EVP_PKEY_CTX_free(pctx); - return 1; + return ret; } #endif diff --git a/test/recipes/30-test_evp.t b/test/recipes/30-test_evp.t index c2079bd..24aa3a3 100644 --- a/test/recipes/30-test_evp.t +++ b/test/recipes/30-test_evp.t @@ -15,8 +15,8 @@ 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", "evppkey_ecc.txt", - "evpcase.txt", "evpaessiv.txt" ); + "evppkey_kdf.txt", "evpmac.txt", "evppbe.txt", "evppkey.txt", + "evppkey_ecc.txt", "evpcase.txt", "evpaessiv.txt" ); plan tests => scalar(@files); diff --git a/test/recipes/30-test_evp_data/evpkdf.txt b/test/recipes/30-test_evp_data/evpkdf.txt index 16f439f..6e34d38 100644 --- a/test/recipes/30-test_evp_data/evpkdf.txt +++ b/test/recipes/30-test_evp_data/evpkdf.txt @@ -1,5 +1,5 @@ # -# Copyright 2001-2017 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -15,7 +15,7 @@ Title = TLS1 PRF tests (from NIST test vectors) KDF=TLS1-PRF -Ctrl.md = md:MD5-SHA1 +Ctrl.digest = digest:MD5-SHA1 Ctrl.Secret = hexsecret:bded7fa5c1699c010be23dd06ada3a48349f21e5f86263d512c0c5cc379f0e780ec55d9844b2f1db02a96453513568d0 Ctrl.label = seed:master secret Ctrl.client_random = hexseed:e5acaf549cd25c22d964c0d930fa4b5261d2507fad84c33715b7b9a864020693 @@ -23,7 +23,7 @@ Ctrl.server_random = hexseed:135e4d557fdf3aa6406d82975d5c606a9734c9334b42136e969 Output = 2f6962dfbc744c4b2138bb6b3d33054c5ecc14f24851d9896395a44ab3964efc2090c5bf51a0891209f46c1e1e998f62 KDF=TLS1-PRF -Ctrl.md = md:MD5-SHA1 +Ctrl.digest = digest:MD5-SHA1 Ctrl.Secret = hexsecret:2f6962dfbc744c4b2138bb6b3d33054c5ecc14f24851d9896395a44ab3964efc2090c5bf51a0891209f46c1e1e998f62 Ctrl.label = seed:key expansion Ctrl.server_random = hexseed:67267e650eb32444119d222a368c191af3082888dc35afe8368e638c828874be @@ -31,7 +31,7 @@ Ctrl.client_random = hexseed:d58a7b1cd4fedaa232159df652ce188f9d997e061b9bf48e83b Output = 3088825988e77fce68d19f756e18e43eb7fe672433504feaf99b3c503d9091b164f166db301d70c9fc0870b4a94563907bee1a61fb786cb717576890bcc51cb9ead97e01d0a2fea99c953377b195205ff07b369589178796edc963fd80fdbe518a2fc1c35c18ae8d KDF=TLS1-PRF -Ctrl.md = md:SHA256 +Ctrl.digest = digest:SHA256 Ctrl.Secret = hexsecret:f8938ecc9edebc5030c0c6a441e213cd24e6f770a50dda07876f8d55da062bcadb386b411fd4fe4313a604fce6c17fbc Ctrl.label = seed:master secret Ctrl.client_random = hexseed:36c129d01a3200894b9179faac589d9835d58775f9b5ea3587cb8fd0364cae8c @@ -39,7 +39,7 @@ Ctrl.server_random = hexseed:f6c9575ed7ddd73e1f7d16eca115415812a43c2b747daaaae04 Output = 202c88c00f84a17a20027079604787461176455539e705be730890602c289a5001e34eeb3a043e5d52a65e66125188bf KDF=TLS1-PRF -Ctrl.md = md:SHA256 +Ctrl.digest = digest:SHA256 Ctrl.Secret = hexsecret:202c88c00f84a17a20027079604787461176455539e705be730890602c289a5001e34eeb3a043e5d52a65e66125188bf Ctrl.label = seed:key expansion Ctrl.server_random = hexseed:ae6c806f8ad4d80784549dff28a4b58fd837681a51d928c3e30ee5ff14f39868 @@ -48,7 +48,7 @@ Output = d06139889fffac1e3a71865f504aa5d0d2a2e89506c6f2279b670c3e1b74f531016a253 # As above but use long name for KDF KDF=tls1-prf -Ctrl.md = md:SHA256 +Ctrl.digest = digest:SHA256 Ctrl.Secret = hexsecret:202c88c00f84a17a20027079604787461176455539e705be730890602c289a5001e34eeb3a043e5d52a65e66125188bf Ctrl.label = seed:key expansion Ctrl.server_random = hexseed:ae6c806f8ad4d80784549dff28a4b58fd837681a51d928c3e30ee5ff14f39868 @@ -64,7 +64,7 @@ Result = KDF_DERIVE_ERROR # Missing secret. KDF=TLS1-PRF -Ctrl.md = md:MD5-SHA1 +Ctrl.digest = digest:MD5-SHA1 Ctrl.Seed = hexseed:02 Output = 03 Result = KDF_DERIVE_ERROR @@ -72,7 +72,7 @@ Result = KDF_DERIVE_ERROR Title = HKDF tests (from RFC5869 test vectors) KDF = HKDF -Ctrl.md = md:SHA256 +Ctrl.digest = digest:SHA256 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = hexsalt:000102030405060708090a0b0c Ctrl.info = hexinfo:f0f1f2f3f4f5f6f7f8f9 @@ -80,20 +80,20 @@ Output = 3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf3400720 KDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY -Ctrl.md = md:SHA256 +Ctrl.digest = digest:SHA256 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = hexsalt:000102030405060708090a0b0c Output = 077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5 KDF = HKDF Ctrl.mode = mode:EXPAND_ONLY -Ctrl.md = md:SHA256 +Ctrl.digest = digest:SHA256 Ctrl.IKM = hexkey:077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5 Ctrl.info = hexinfo:f0f1f2f3f4f5f6f7f8f9 Output = 3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865 KDF = HKDF -Ctrl.md = md:SHA256 +Ctrl.digest = digest:SHA256 Ctrl.IKM = hexkey:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f Ctrl.salt = hexsalt:606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf Ctrl.info = hexinfo:b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff @@ -101,20 +101,20 @@ Output = b11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a9 KDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY -Ctrl.md = md:SHA256 +Ctrl.digest = digest:SHA256 Ctrl.IKM = hexkey:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f Ctrl.salt = hexsalt:606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf Output = 06a6b88c5853361a06104c9ceb35b45cef760014904671014a193f40c15fc244 KDF = HKDF Ctrl.mode = mode:EXPAND_ONLY -Ctrl.md = md:SHA256 +Ctrl.digest = digest:SHA256 Ctrl.IKM = hexkey:06a6b88c5853361a06104c9ceb35b45cef760014904671014a193f40c15fc244 Ctrl.info = hexinfo:b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff Output = b11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a99cac7827271cb41c65e590e09da3275600c2f09b8367793a9aca3db71cc30c58179ec3e87c14c01d5c1f3434f1d87 KDF = HKDF -Ctrl.md = md:SHA256 +Ctrl.digest = digest:SHA256 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = salt: Ctrl.info = info: @@ -122,7 +122,7 @@ Output = 8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d20139 KDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY -Ctrl.md = md:SHA256 +Ctrl.digest = digest:SHA256 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = salt: Ctrl.info = info: @@ -130,13 +130,13 @@ Output = 19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04 KDF = HKDF Ctrl.mode = mode:EXPAND_ONLY -Ctrl.md = md:SHA256 +Ctrl.digest = digest:SHA256 Ctrl.IKM = hexkey:19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04 Ctrl.info = info: Output = 8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c8 KDF = HKDF -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = hexsalt:000102030405060708090a0b0c Ctrl.info = hexinfo:f0f1f2f3f4f5f6f7f8f9 @@ -144,20 +144,20 @@ Output = 085a01ea1b10f36933068b56efa5ad81a4f14b822f5b091568a9cdd4f155fda2c22e422 KDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = hexsalt:000102030405060708090a0b0c Output = 9b6c18c432a7bf8f0e71c8eb88f4b30baa2ba243 KDF = HKDF Ctrl.mode = mode:EXPAND_ONLY -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:9b6c18c432a7bf8f0e71c8eb88f4b30baa2ba243 Ctrl.info = hexinfo:f0f1f2f3f4f5f6f7f8f9 Output = 085a01ea1b10f36933068b56efa5ad81a4f14b822f5b091568a9cdd4f155fda2c22e422478d305f3f896 KDF = HKDF -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f Ctrl.salt = hexsalt:606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf Ctrl.info = hexinfo:b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff @@ -165,20 +165,20 @@ Output = 0bd770a74d1160f7c9f12cd5912a06ebff6adcae899d92191fe4305673ba2ffe8fa3f1a KDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f Ctrl.salt = hexsalt:606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf Output = 8adae09a2a307059478d309b26c4115a224cfaf6 KDF = HKDF Ctrl.mode = mode:EXPAND_ONLY -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:8adae09a2a307059478d309b26c4115a224cfaf6 Ctrl.info = hexinfo:b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff Output = 0bd770a74d1160f7c9f12cd5912a06ebff6adcae899d92191fe4305673ba2ffe8fa3f1a4e5ad79f3f334b3b202b2173c486ea37ce3d397ed034c7f9dfeb15c5e927336d0441f4c4300e2cff0d0900b52d3b4 KDF = HKDF -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = salt: Ctrl.info = info: @@ -186,20 +186,20 @@ Output = 0ac1af7002b3d761d1e55298da9d0506b9ae52057220a306e07b6b87e8df21d0ea00033 KDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = salt: Output = da8c8a73c7fa77288ec6f5e7c297786aa0d32d01 KDF = HKDF Ctrl.mode = mode:EXPAND_ONLY -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:da8c8a73c7fa77288ec6f5e7c297786aa0d32d01 Ctrl.info = info: Output = 0ac1af7002b3d761d1e55298da9d0506b9ae52057220a306e07b6b87e8df21d0ea00033de03984d34918 KDF = HKDF -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c Ctrl.salt = salt: Ctrl.info = info: @@ -207,14 +207,14 @@ Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081 KDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c Ctrl.salt = salt: Output = 2adccada18779e7c2077ad2eb19d3f3e731385dd KDF = HKDF Ctrl.mode = mode:EXPAND_ONLY -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:2adccada18779e7c2077ad2eb19d3f3e731385dd Ctrl.info = info: Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48 @@ -227,27 +227,27 @@ Output = 00 Result = KDF_DERIVE_ERROR KDF = HKDF -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.salt = salt: Ctrl.info = info: Output = 00 Result = KDF_DERIVE_ERROR KDF = HKDF -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c Ctrl.info = info: Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48 KDF = HKDF -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c Ctrl.salt = salt: Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48 KDF = HKDF Ctrl.mode = mode:EXTRACT_AND_EXPAND -Ctrl.md = md:SHA1 +Ctrl.digest = digest:SHA1 Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c Ctrl.salt = salt: Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48 @@ -303,3 +303,133 @@ Ctrl.r = r:8 Ctrl.p = p:1 Result = INTERNAL_ERROR +Title = PBKDF2 tests + +KDF = PBKDF2 +Ctrl.pass = pass:password +Ctrl.salt = salt:salt +Ctrl.iter = iter:1 +Ctrl.digest = digest:sha1 +Output = 0c60c80f961f0e71f3a9b524af6012062fe037a6 + +KDF = PBKDF2 +Ctrl.pass = pass:password +Ctrl.salt = salt:salt +Ctrl.iter = iter:1 +Ctrl.digest = digest:sha256 +Output = 120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17b + +KDF = PBKDF2 +Ctrl.pass = pass:password +Ctrl.salt = salt:salt +Ctrl.iter = iter:1 +Ctrl.digest = digest:sha512 +Output = 867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5d513554e1c8cf252c02d470a285a0501bad999bfe943c08f050235d7d68b1da55e63f73b60a57fce + +KDF = PBKDF2 +Ctrl.pass = pass:password +Ctrl.salt = salt:salt +Ctrl.iter = iter:2 +Ctrl.digest = digest:sha1 +Output = ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957 + +KDF = PBKDF2 +Ctrl.pass = pass:password +Ctrl.salt = salt:salt +Ctrl.iter = iter:2 +Ctrl.digest = digest:sha256 +Output = ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43 + +KDF = PBKDF2 +Ctrl.pass = pass:password +Ctrl.salt = salt:salt +Ctrl.iter = iter:2 +Ctrl.digest = digest:sha512 +Output = e1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f0040713f18aefdb866d53cf76cab2868a39b9f7840edce4fef5a82be67335c77a6068e04112754f27ccf4e + +KDF = PBKDF2 +Ctrl.pass = pass:password +Ctrl.salt = salt:salt +Ctrl.iter = iter:4096 +Ctrl.digest = digest:sha1 +Output = 4b007901b765489abead49d926f721d065a429c1 + +KDF = PBKDF2 +Ctrl.pass = pass:password +Ctrl.salt = salt:salt +Ctrl.iter = iter:4096 +Ctrl.digest = digest:sha256 +Output = c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134a + +KDF = PBKDF2 +Ctrl.pass = pass:password +Ctrl.salt = salt:salt +Ctrl.iter = iter:4096 +Ctrl.digest = digest:sha512 +Output = d197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f87f6902e072f457b5143f30602641b3d55cd335988cb36b84376060ecd532e039b742a239434af2d5 + +KDF = PBKDF2 +Ctrl.pass = pass:passwordPASSWORDpassword +Ctrl.salt = salt:saltSALTsaltSALTsaltSALTsaltSALTsalt +Ctrl.iter = iter:4096 +Ctrl.digest = digest:sha1 +Output = 3d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038 + +KDF = PBKDF2 +Ctrl.pass = pass:passwordPASSWORDpassword +Ctrl.salt = salt:saltSALTsaltSALTsaltSALTsaltSALTsalt +Ctrl.iter = iter:4096 +Ctrl.digest = digest:sha256 +Output = 348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9 + +KDF = PBKDF2 +Ctrl.pass = pass:passwordPASSWORDpassword +Ctrl.salt = salt:saltSALTsaltSALTsaltSALTsaltSALTsalt +Ctrl.iter = iter:4096 +Ctrl.digest = digest:sha512 +Output = 8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b868c005174dc4ee71115b59f9e60cd9532fa33e0f75aefe30225c583a186cd82bd4daea9724a3d3b8 + +KDF = PBKDF2 +Ctrl.hexpass = hexpass:7061737300776f7264 +Ctrl.hexsalt = hexsalt:7361006c74 +Ctrl.iter = iter:4096 +Ctrl.digest = digest:sha1 +Output = 56fa6aa75548099dcc37d7f03425e0c3 + +KDF = PBKDF2 +Ctrl.hexpass = hexpass:7061737300776f7264 +Ctrl.hexsalt = hexsalt:7361006c74 +Ctrl.iter = iter:4096 +Ctrl.digest = digest:sha256 +Output = 89b69d0516f829893c696226650a8687 + +KDF = PBKDF2 +Ctrl.hexpass = hexpass:7061737300776f7264 +Ctrl.hexsalt = hexsalt:7361006c74 +Ctrl.iter = iter:4096 +Ctrl.digest = digest:sha512 +Output = 9d9e9c4cd21fe4be24d5b8244c759665 + +Title = PBKDF2 tests for empty inputs + +KDF = PBKDF2 +Ctrl.pass = pass: +Ctrl.salt = salt:salt +Ctrl.iter = iter:1 +Ctrl.digest = digest:sha1 +Output = a33dddc30478185515311f8752895d36ea4363a2 + +KDF = PBKDF2 +Ctrl.pass = pass: +Ctrl.salt = salt:salt +Ctrl.iter = iter:1 +Ctrl.digest = digest:sha256 +Output = f135c27993baf98773c5cdb40a5706ce6a345cde + +KDF = PBKDF2 +Ctrl.pass = pass: +Ctrl.salt = salt:salt +Ctrl.iter = iter:1 +Ctrl.digest = digest:sha512 +Output = 00ef42cdbfc98d29db20976608e455567fdddf14 + diff --git a/test/recipes/30-test_evp_data/evpkdf.txt b/test/recipes/30-test_evp_data/evppkey_kdf.txt similarity index 94% copy from test/recipes/30-test_evp_data/evpkdf.txt copy to test/recipes/30-test_evp_data/evppkey_kdf.txt index 16f439f..c619efd 100644 --- a/test/recipes/30-test_evp_data/evpkdf.txt +++ b/test/recipes/30-test_evp_data/evppkey_kdf.txt @@ -1,5 +1,5 @@ # -# Copyright 2001-2017 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -7,14 +7,14 @@ # https://www.openssl.org/source/license.html # Tests start with one of these keywords -# Cipher Decrypt Derive Digest Encoding KDF MAC PBE +# Cipher Decrypt Derive Digest Encoding KDF PKEYKDF MAC PBE # PrivPubKeyPair Sign Verify VerifyRecover # and continue until a blank line. Lines starting with a pound sign, # like this prolog, are ignored. Title = TLS1 PRF tests (from NIST test vectors) -KDF=TLS1-PRF +PKEYKDF=TLS1-PRF Ctrl.md = md:MD5-SHA1 Ctrl.Secret = hexsecret:bded7fa5c1699c010be23dd06ada3a48349f21e5f86263d512c0c5cc379f0e780ec55d9844b2f1db02a96453513568d0 Ctrl.label = seed:master secret @@ -22,7 +22,7 @@ Ctrl.client_random = hexseed:e5acaf549cd25c22d964c0d930fa4b5261d2507fad84c33715b Ctrl.server_random = hexseed:135e4d557fdf3aa6406d82975d5c606a9734c9334b42136e96990fbd5358cdb2 Output = 2f6962dfbc744c4b2138bb6b3d33054c5ecc14f24851d9896395a44ab3964efc2090c5bf51a0891209f46c1e1e998f62 -KDF=TLS1-PRF +PKEYKDF=TLS1-PRF Ctrl.md = md:MD5-SHA1 Ctrl.Secret = hexsecret:2f6962dfbc744c4b2138bb6b3d33054c5ecc14f24851d9896395a44ab3964efc2090c5bf51a0891209f46c1e1e998f62 Ctrl.label = seed:key expansion @@ -30,7 +30,7 @@ Ctrl.server_random = hexseed:67267e650eb32444119d222a368c191af3082888dc35afe8368 Ctrl.client_random = hexseed:d58a7b1cd4fedaa232159df652ce188f9d997e061b9bf48e83b62990440931f6 Output = 3088825988e77fce68d19f756e18e43eb7fe672433504feaf99b3c503d9091b164f166db301d70c9fc0870b4a94563907bee1a61fb786cb717576890bcc51cb9ead97e01d0a2fea99c953377b195205ff07b369589178796edc963fd80fdbe518a2fc1c35c18ae8d -KDF=TLS1-PRF +PKEYKDF=TLS1-PRF Ctrl.md = md:SHA256 Ctrl.Secret = hexsecret:f8938ecc9edebc5030c0c6a441e213cd24e6f770a50dda07876f8d55da062bcadb386b411fd4fe4313a604fce6c17fbc Ctrl.label = seed:master secret @@ -38,7 +38,7 @@ Ctrl.client_random = hexseed:36c129d01a3200894b9179faac589d9835d58775f9b5ea3587c Ctrl.server_random = hexseed:f6c9575ed7ddd73e1f7d16eca115415812a43c2b747daaaae043abfb50053fce Output = 202c88c00f84a17a20027079604787461176455539e705be730890602c289a5001e34eeb3a043e5d52a65e66125188bf -KDF=TLS1-PRF +PKEYKDF=TLS1-PRF Ctrl.md = md:SHA256 Ctrl.Secret = hexsecret:202c88c00f84a17a20027079604787461176455539e705be730890602c289a5001e34eeb3a043e5d52a65e66125188bf Ctrl.label = seed:key expansion @@ -47,7 +47,7 @@ Ctrl.client_random = hexseed:62e1fd91f23f558a605f28478c58cf72637b89784d959df7e94 Output = d06139889fffac1e3a71865f504aa5d0d2a2e89506c6f2279b670c3e1b74f531016a2530c51a3a0f7e1d6590d0f0566b2f387f8d11fd4f731cdd572d2eae927f6f2f81410b25e6960be68985add6c38445ad9f8c64bf8068bf9a6679485d966f1ad6f68b43495b10a683755ea2b858d70ccac7ec8b053c6bd41ca299d4e51928 # As above but use long name for KDF -KDF=tls1-prf +PKEYKDF=tls1-prf Ctrl.md = md:SHA256 Ctrl.Secret = hexsecret:202c88c00f84a17a20027079604787461176455539e705be730890602c289a5001e34eeb3a043e5d52a65e66125188bf Ctrl.label = seed:key expansion @@ -56,14 +56,14 @@ Ctrl.client_random = hexseed:62e1fd91f23f558a605f28478c58cf72637b89784d959df7e94 Output = d06139889fffac1e3a71865f504aa5d0d2a2e89506c6f2279b670c3e1b74f531016a2530c51a3a0f7e1d6590d0f0566b2f387f8d11fd4f731cdd572d2eae927f6f2f81410b25e6960be68985add6c38445ad9f8c64bf8068bf9a6679485d966f1ad6f68b43495b10a683755ea2b858d70ccac7ec8b053c6bd41ca299d4e51928 # Missing digest. -KDF=TLS1-PRF +PKEYKDF=TLS1-PRF Ctrl.Secret = hexsecret:01 Ctrl.Seed = hexseed:02 Output = 03 Result = KDF_DERIVE_ERROR # Missing secret. -KDF=TLS1-PRF +PKEYKDF=TLS1-PRF Ctrl.md = md:MD5-SHA1 Ctrl.Seed = hexseed:02 Output = 03 @@ -71,56 +71,56 @@ Result = KDF_DERIVE_ERROR Title = HKDF tests (from RFC5869 test vectors) -KDF = HKDF +PKEYKDF = HKDF Ctrl.md = md:SHA256 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = hexsalt:000102030405060708090a0b0c Ctrl.info = hexinfo:f0f1f2f3f4f5f6f7f8f9 Output = 3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY Ctrl.md = md:SHA256 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = hexsalt:000102030405060708090a0b0c Output = 077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXPAND_ONLY Ctrl.md = md:SHA256 Ctrl.IKM = hexkey:077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5 Ctrl.info = hexinfo:f0f1f2f3f4f5f6f7f8f9 Output = 3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865 -KDF = HKDF +PKEYKDF = HKDF Ctrl.md = md:SHA256 Ctrl.IKM = hexkey:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f Ctrl.salt = hexsalt:606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf Ctrl.info = hexinfo:b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff Output = b11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a99cac7827271cb41c65e590e09da3275600c2f09b8367793a9aca3db71cc30c58179ec3e87c14c01d5c1f3434f1d87 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY Ctrl.md = md:SHA256 Ctrl.IKM = hexkey:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f Ctrl.salt = hexsalt:606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf Output = 06a6b88c5853361a06104c9ceb35b45cef760014904671014a193f40c15fc244 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXPAND_ONLY Ctrl.md = md:SHA256 Ctrl.IKM = hexkey:06a6b88c5853361a06104c9ceb35b45cef760014904671014a193f40c15fc244 Ctrl.info = hexinfo:b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff Output = b11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a99cac7827271cb41c65e590e09da3275600c2f09b8367793a9aca3db71cc30c58179ec3e87c14c01d5c1f3434f1d87 -KDF = HKDF +PKEYKDF = HKDF Ctrl.md = md:SHA256 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = salt: Ctrl.info = info: Output = 8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c8 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY Ctrl.md = md:SHA256 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b @@ -128,124 +128,124 @@ Ctrl.salt = salt: Ctrl.info = info: Output = 19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXPAND_ONLY Ctrl.md = md:SHA256 Ctrl.IKM = hexkey:19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04 Ctrl.info = info: Output = 8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c8 -KDF = HKDF +PKEYKDF = HKDF Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = hexsalt:000102030405060708090a0b0c Ctrl.info = hexinfo:f0f1f2f3f4f5f6f7f8f9 Output = 085a01ea1b10f36933068b56efa5ad81a4f14b822f5b091568a9cdd4f155fda2c22e422478d305f3f896 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = hexsalt:000102030405060708090a0b0c Output = 9b6c18c432a7bf8f0e71c8eb88f4b30baa2ba243 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXPAND_ONLY Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:9b6c18c432a7bf8f0e71c8eb88f4b30baa2ba243 Ctrl.info = hexinfo:f0f1f2f3f4f5f6f7f8f9 Output = 085a01ea1b10f36933068b56efa5ad81a4f14b822f5b091568a9cdd4f155fda2c22e422478d305f3f896 -KDF = HKDF +PKEYKDF = HKDF Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f Ctrl.salt = hexsalt:606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf Ctrl.info = hexinfo:b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff Output = 0bd770a74d1160f7c9f12cd5912a06ebff6adcae899d92191fe4305673ba2ffe8fa3f1a4e5ad79f3f334b3b202b2173c486ea37ce3d397ed034c7f9dfeb15c5e927336d0441f4c4300e2cff0d0900b52d3b4 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f Ctrl.salt = hexsalt:606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf Output = 8adae09a2a307059478d309b26c4115a224cfaf6 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXPAND_ONLY Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:8adae09a2a307059478d309b26c4115a224cfaf6 Ctrl.info = hexinfo:b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff Output = 0bd770a74d1160f7c9f12cd5912a06ebff6adcae899d92191fe4305673ba2ffe8fa3f1a4e5ad79f3f334b3b202b2173c486ea37ce3d397ed034c7f9dfeb15c5e927336d0441f4c4300e2cff0d0900b52d3b4 -KDF = HKDF +PKEYKDF = HKDF Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = salt: Ctrl.info = info: Output = 0ac1af7002b3d761d1e55298da9d0506b9ae52057220a306e07b6b87e8df21d0ea00033de03984d34918 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b Ctrl.salt = salt: Output = da8c8a73c7fa77288ec6f5e7c297786aa0d32d01 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXPAND_ONLY Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:da8c8a73c7fa77288ec6f5e7c297786aa0d32d01 Ctrl.info = info: Output = 0ac1af7002b3d761d1e55298da9d0506b9ae52057220a306e07b6b87e8df21d0ea00033de03984d34918 -KDF = HKDF +PKEYKDF = HKDF Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c Ctrl.salt = salt: Ctrl.info = info: Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXTRACT_ONLY Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c Ctrl.salt = salt: Output = 2adccada18779e7c2077ad2eb19d3f3e731385dd -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXPAND_ONLY Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:2adccada18779e7c2077ad2eb19d3f3e731385dd Ctrl.info = info: Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48 -KDF = HKDF +PKEYKDF = HKDF Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c Ctrl.salt = salt: Ctrl.info = info: Output = 00 Result = KDF_DERIVE_ERROR -KDF = HKDF +PKEYKDF = HKDF Ctrl.md = md:SHA1 Ctrl.salt = salt: Ctrl.info = info: Output = 00 Result = KDF_DERIVE_ERROR -KDF = HKDF +PKEYKDF = HKDF Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c Ctrl.info = info: Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48 -KDF = HKDF +PKEYKDF = HKDF Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c Ctrl.salt = salt: Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48 -KDF = HKDF +PKEYKDF = HKDF Ctrl.mode = mode:EXTRACT_AND_EXPAND Ctrl.md = md:SHA1 Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c @@ -254,7 +254,7 @@ Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081 Title = id-scrypt tests (from draft-josefsson-id-scrypt-kdf-03 and others) -KDF = scrypt +PKEYKDF = scrypt Ctrl.pass = pass: Ctrl.salt = salt: Ctrl.N = N:16 @@ -262,7 +262,7 @@ Ctrl.r = r:1 Ctrl.p = p:1 Output = 77d6576238657b203b19ca42c18a0497f16b4844e3074ae8dfdffa3fede21442fcd0069ded0948f8326a753a0fc81f17e8d3e0fb2e0d3628cf35e20c38d18906 -KDF = scrypt +PKEYKDF = scrypt Ctrl.pass = pass:password Ctrl.salt = salt:NaCl Ctrl.N = N:1024 @@ -270,7 +270,7 @@ Ctrl.r = r:8 Ctrl.p = p:16 Output = fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640 -KDF = scrypt +PKEYKDF = scrypt Ctrl.hexpass = hexpass:70617373776f7264 Ctrl.salt = salt:NaCl Ctrl.N = N:1024 @@ -278,7 +278,7 @@ Ctrl.r = r:8 Ctrl.p = p:16 Output = fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640 -KDF = scrypt +PKEYKDF = scrypt Ctrl.pass = pass:password Ctrl.hexsalt = hexsalt:4e61436c Ctrl.N = N:1024 @@ -286,7 +286,7 @@ Ctrl.r = r:8 Ctrl.p = p:16 Output = fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640 -KDF = scrypt +PKEYKDF = scrypt Ctrl.pass = pass:pleaseletmein Ctrl.salt = salt:SodiumChloride Ctrl.N = N:16384 @@ -295,7 +295,7 @@ Ctrl.p = p:1 Output = 7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887 # Out of memory -KDF = scrypt +PKEYKDF = scrypt Ctrl.pass = pass:pleaseletmein Ctrl.salt = salt:SodiumChloride Ctrl.N = N:1048576 diff --git a/test/recipes/30-test_evp_kdf.t b/test/recipes/30-test_evp_kdf.t new file mode 100644 index 0000000..9e43d6d --- /dev/null +++ b/test/recipes/30-test_evp_kdf.t @@ -0,0 +1,13 @@ +#! /usr/bin/env perl +# Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + + +use OpenSSL::Test::Simple; + +simple_test("test_evp_kdf", "evp_kdf_test"); diff --git a/util/libcrypto.num b/util/libcrypto.num index cc88ac4..2b5365e 100644 --- a/util/libcrypto.num +++ b/util/libcrypto.num @@ -4631,3 +4631,11 @@ CMS_add1_signing_cert_v2 4586 3_0_0 EXIST::FUNCTION:CMS ESS_SIGNING_CERT_new_init 4587 3_0_0 EXIST::FUNCTION: ESS_SIGNING_CERT_V2_new_init 4588 3_0_0 EXIST::FUNCTION: ERR_load_ESS_strings 4589 3_0_0 EXIST::FUNCTION: +EVP_KDF_CTX_new_id 4590 3_0_0 EXIST::FUNCTION: +EVP_KDF_CTX_free 4591 3_0_0 EXIST::FUNCTION: +EVP_KDF_reset 4592 3_0_0 EXIST::FUNCTION: +EVP_KDF_ctrl 4593 3_0_0 EXIST::FUNCTION: +EVP_KDF_vctrl 4594 3_0_0 EXIST::FUNCTION: +EVP_KDF_ctrl_str 4595 3_0_0 EXIST::FUNCTION: +EVP_KDF_size 4596 3_0_0 EXIST::FUNCTION: +EVP_KDF_derive 4597 3_0_0 EXIST::FUNCTION: diff --git a/util/private.num b/util/private.num index 6fe4392..3832841 100644 --- a/util/private.num +++ b/util/private.num @@ -22,6 +22,7 @@ CRYPTO_EX_dup datatype CRYPTO_EX_free datatype CRYPTO_EX_new datatype DTLS_timer_cb datatype +EVP_KDF_CTX datatype EVP_MAC datatype EVP_MAC_CTX datatype EVP_PKEY_gen_cb datatype From builds at travis-ci.org Wed Feb 13 11:24:12 2019 From: builds at travis-ci.org (Travis CI) Date: Wed, 13 Feb 2019 11:24:12 +0000 Subject: [openssl-commits] Broken: openssl/openssl#23027 (master - 5a285ad) In-Reply-To: Message-ID: <5c63fe5c2dd0_43fa01ec1692c2672aa@345ae233-679f-4cd5-aeda-7aa1389b9b17.mail> Build Update for openssl/openssl ------------------------------------- Build: #23027 Status: Broken Duration: 11 mins and 8 secs Commit: 5a285ad (master) Author: David Makepeace Message: Added new EVP/KDF API. Changed PKEY/KDF API to call the new API. Added wrappers for PKCS5_PBKDF2_HMAC() and EVP_PBE_scrypt() to call the new EVP KDF APIs. Documentation updated. Reviewed-by: Paul Dale Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/6674) View the changeset: https://github.com/openssl/openssl/compare/e0ae0585bee8...5a285addbf39 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/492644221?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 11:35:37 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 11:35:37 +0000 Subject: [openssl-commits] Build failed: openssl master.22420 Message-ID: <20190213113537.1.EBD5D46175A935F4@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 11:50:30 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 11:50:30 +0000 Subject: [openssl-commits] Build failed: openssl master.22421 Message-ID: <20190213115030.1.3510F67DBB6594DA@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 12:06:55 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 12:06:55 +0000 Subject: [openssl-commits] Build failed: openssl master.22422 Message-ID: <20190213120655.1.8C8DF10F876F613F@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 12:28:16 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 12:28:16 +0000 Subject: [openssl-commits] Build failed: openssl master.22423 Message-ID: <20190213122816.1.FF9E1AD2ADEDC4A7@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 12:45:55 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 12:45:55 +0000 Subject: [openssl-commits] Build failed: openssl master.22424 Message-ID: <20190213124555.1.1A0CE38A3E9B50B7@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 13:00:49 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 13:00:49 +0000 Subject: [openssl-commits] Build failed: openssl master.22425 Message-ID: <20190213130049.1.7A0BCB6F891527F1@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 13:46:35 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 13:46:35 +0000 Subject: [openssl-commits] Build failed: openssl master.22426 Message-ID: <20190213134635.1.976A102AF7DD536A@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 14:14:54 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 14:14:54 +0000 Subject: [openssl-commits] Build failed: openssl master.22428 Message-ID: <20190213141454.1.29C83DCEDCCBD922@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 14:32:48 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 14:32:48 +0000 Subject: [openssl-commits] Build failed: openssl master.22429 Message-ID: <20190213143248.1.A1F05B10AD91714E@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 14:49:34 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 14:49:34 +0000 Subject: [openssl-commits] Build failed: openssl master.22430 Message-ID: <20190213144934.1.AC85D8C722D16E57@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 15:20:20 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 15:20:20 +0000 Subject: [openssl-commits] Build failed: openssl master.22431 Message-ID: <20190213152020.1.B64B03CE56CA4181@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 15:35:19 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 15:35:19 +0000 Subject: [openssl-commits] Build failed: openssl master.22432 Message-ID: <20190213153519.1.BB27F239B17663E1@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 15:54:31 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 15:54:31 +0000 Subject: [openssl-commits] Build failed: openssl master.22433 Message-ID: <20190213155431.1.52A6D222BC45D5D2@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 16:34:46 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 16:34:46 +0000 Subject: [openssl-commits] Build failed: openssl master.22435 Message-ID: <20190213163446.1.D0AB1BC52048FF0D@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Wed Feb 13 18:08:45 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 13 Feb 2019 18:08:45 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550081325.666778.16964.nullmailer@dev.openssl.org> The branch master has been updated via 953315ae60e135057e308ebd0778ed823d620970 (commit) from 5a285addbf39f91d567f95f04b2b41764127950d (commit) - Log ----------------------------------------------------------------- commit 953315ae60e135057e308ebd0778ed823d620970 Author: Richard Levitte Date: Wed Feb 13 18:59:13 2019 +0100 test/build.info: add missing ../apps/include Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8227) ----------------------------------------------------------------------- Summary of changes: test/build.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/build.info b/test/build.info index 5904267..231d362 100644 --- a/test/build.info +++ b/test/build.info @@ -332,7 +332,7 @@ IF[{- !$disabled{tests} -}] DEPEND[pkey_meth_kdf_test]=../libcrypto libtestutil.a SOURCE[evp_kdf_test]=evp_kdf_test.c - INCLUDE[evp_kdf_test]=../include + INCLUDE[evp_kdf_test]=../include ../apps/include DEPEND[evp_kdf_test]=../libcrypto libtestutil.a SOURCE[x509_time_test]=x509_time_test.c From builds at travis-ci.org Wed Feb 13 18:31:57 2019 From: builds at travis-ci.org (Travis CI) Date: Wed, 13 Feb 2019 18:31:57 +0000 Subject: [openssl-commits] Fixed: openssl/openssl#23040 (master - 953315a) In-Reply-To: Message-ID: <5c64629d2f0a8_43fe90df79cbc252161@97f81eeb-5277-4cfe-a95f-248d0fd3f295.mail> Build Update for openssl/openssl ------------------------------------- Build: #23040 Status: Fixed Duration: 22 mins and 31 secs Commit: 953315a (master) Author: Richard Levitte Message: test/build.info: add missing ../apps/include Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8227) View the changeset: https://github.com/openssl/openssl/compare/5a285addbf39...953315ae60e1 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/492833703?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From levitte at openssl.org Wed Feb 13 19:01:31 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 13 Feb 2019 19:01:31 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550084491.672359.22648.nullmailer@dev.openssl.org> The branch master has been updated via fa63e45262971b9c2a6aeb33db8c52a5a84fc8b5 (commit) from 953315ae60e135057e308ebd0778ed823d620970 (commit) - Log ----------------------------------------------------------------- commit fa63e45262971b9c2a6aeb33db8c52a5a84fc8b5 Author: Michael Haubenwallner Date: Wed Feb 13 16:52:04 2019 +0100 Windows/Cygwin dlls need the executable bit set CLA: trivial Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8226) ----------------------------------------------------------------------- Summary of changes: Configurations/unix-Makefile.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 7705b03..0b744bb 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -622,7 +622,7 @@ install_runtime_libs: build_libs : {- output_off() unless windowsdll(); "" -}; \ $(ECHO) "install $$s -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ cp $$s $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ - chmod 644 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ + chmod 755 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \ $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ : {- output_on() unless windowsdll(); "" -}{- output_off() if windowsdll(); "" -}; \ From levitte at openssl.org Wed Feb 13 19:02:14 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 13 Feb 2019 19:02:14 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550084534.609641.24137.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 7ee28a61cd6d9f704fc672904a14a764f618aa7c (commit) from 851437094aca6067d425f7869751df41cde775fe (commit) - Log ----------------------------------------------------------------- commit 7ee28a61cd6d9f704fc672904a14a764f618aa7c Author: Michael Haubenwallner Date: Wed Feb 13 16:52:04 2019 +0100 Windows/Cygwin dlls need the executable bit set CLA: trivial Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8226) (cherry picked from commit fa63e45262971b9c2a6aeb33db8c52a5a84fc8b5) ----------------------------------------------------------------------- Summary of changes: Configurations/unix-Makefile.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 3d99985..288b792 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -651,7 +651,7 @@ install_runtime_libs: build_libs : {- output_off() unless windowsdll(); "" -}; \ $(ECHO) "install $$s -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ cp $$s $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ - chmod 644 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ + chmod 755 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \ $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ : {- output_on() unless windowsdll(); "" -}{- output_off() if windowsdll(); "" -}; \ From no-reply at appveyor.com Wed Feb 13 19:21:30 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 19:21:30 +0000 Subject: [openssl-commits] Build failed: openssl master.22439 Message-ID: <20190213192130.1.FB7836B3819D436E@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 13 20:22:24 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 20:22:24 +0000 Subject: [openssl-commits] Build completed: openssl master.22440 Message-ID: <20190213202224.1.69A914DDD30DCAE4@appveyor.com> An HTML attachment was scrubbed... URL: From openssl at openssl.org Wed Feb 13 22:09:02 2019 From: openssl at openssl.org (OpenSSL run-checker) Date: Wed, 13 Feb 2019 22:09:02 +0000 Subject: [openssl-commits] SUCCESSFUL build of OpenSSL branch master with options -d --strict-warnings Message-ID: <1550095742.219348.19601.nullmailer@run.openssl.org> Platform and configuration command: $ uname -a Linux run 4.4.0-135-generic #161-Ubuntu SMP Mon Aug 27 10:45:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ CC=clang ../openssl/config -d --strict-warnings Commit log since last time: fa63e45262 Windows/Cygwin dlls need the executable bit set 953315ae60 test/build.info: add missing ../apps/include 5a285addbf Added new EVP/KDF API. Changed PKEY/KDF API to call the new API. Added wrappers for PKCS5_PBKDF2_HMAC() and EVP_PBE_scrypt() to call the new EVP KDF APIs. Documentation updated. e0ae0585be Sparse array limit testing: reduce the range limit for the number of bits in a sparse array pointer block. b754a8a159 Fix null pointer dereference in cms_RecipientInfo_kari_init 5674466e00 Move libapps headers into their own directory 7f4268bff3 Fix master build. The recent change from ENGINES to MODULES broke the configure it seems. 583fd0c108 Macro typo fix not propagated e5fee28f0e Fix typo in comment From no-reply at appveyor.com Wed Feb 13 22:50:22 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 13 Feb 2019 22:50:22 +0000 Subject: [openssl-commits] Build failed: openssl master.22442 Message-ID: <20190213225022.1.CCF080ABC4758F42@appveyor.com> An HTML attachment was scrubbed... URL: From pauli at openssl.org Wed Feb 13 23:48:37 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Wed, 13 Feb 2019 23:48:37 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550101717.256791.24306.nullmailer@dev.openssl.org> The branch master has been updated via 008b4ff92f785cf3808df26ac5b23f25a691b23c (commit) from fa63e45262971b9c2a6aeb33db8c52a5a84fc8b5 (commit) - Log ----------------------------------------------------------------- commit 008b4ff92f785cf3808df26ac5b23f25a691b23c Author: Pauli Date: Thu Feb 14 08:13:58 2019 +1000 Sparse array iterators include index position. Iterators over the sparse array structures have gained an initial argument which indicates the index into the array of the element. This can be used, e.g., to delete or modify the associated value. Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8229) ----------------------------------------------------------------------- Summary of changes: crypto/include/internal/sparse_array.h | 15 +++-- crypto/sparse_array.c | 22 ++++--- doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod | 20 ++++-- test/sparse_array_test.c | 95 ++++++++++++++++++++++++++++ 4 files changed, 129 insertions(+), 23 deletions(-) diff --git a/crypto/include/internal/sparse_array.h b/crypto/include/internal/sparse_array.h index bf0a996..839fced 100644 --- a/crypto/include/internal/sparse_array.h +++ b/crypto/include/internal/sparse_array.h @@ -37,16 +37,17 @@ extern "C" { return OPENSSL_SA_num((OPENSSL_SA *)sa); \ } \ static ossl_inline void ossl_sa_##type##_doall(const SPARSE_ARRAY_OF(type) *sa, \ - void (*leaf)(type *)) \ + void (*leaf)(size_t, type *)) \ { \ - OPENSSL_SA_doall((OPENSSL_SA *)sa, (void (*)(void *))leaf); \ + OPENSSL_SA_doall((OPENSSL_SA *)sa, (void (*)(size_t, void *))leaf); \ } \ static ossl_inline void ossl_sa_##type##_doall_arg(const SPARSE_ARRAY_OF(type) *sa, \ - void (*leaf)(type *, \ + void (*leaf)(size_t, \ + type *, \ void *),\ void *arg) \ { \ - OPENSSL_SA_doall_arg((OPENSSL_SA *)sa, (void (*)(void *, void *))leaf, \ + OPENSSL_SA_doall_arg((OPENSSL_SA *)sa, (void (*)(size_t, void *, void *))leaf, \ arg); \ } \ static ossl_inline type *ossl_sa_##type##_get(const SPARSE_ARRAY_OF(type) *sa, \ @@ -66,9 +67,9 @@ OPENSSL_SA *OPENSSL_SA_new(void); void OPENSSL_SA_free(OPENSSL_SA *sa); void OPENSSL_SA_free_leaves(OPENSSL_SA *sa); size_t OPENSSL_SA_num(const OPENSSL_SA *sa); -void OPENSSL_SA_doall(const OPENSSL_SA *sa, void (*leaf)(void *)); -void OPENSSL_SA_doall_arg(const OPENSSL_SA *sa, void (*leaf)(void *, void *), - void *); +void OPENSSL_SA_doall(const OPENSSL_SA *sa, void (*leaf)(size_t, void *)); +void OPENSSL_SA_doall_arg(const OPENSSL_SA *sa, + void (*leaf)(size_t, void *, void *), void *); void *OPENSSL_SA_get(const OPENSSL_SA *sa, size_t n); int OPENSSL_SA_set(OPENSSL_SA *sa, size_t n, void *val); diff --git a/crypto/sparse_array.c b/crypto/sparse_array.c index 8c9efed..796d35e 100644 --- a/crypto/sparse_array.c +++ b/crypto/sparse_array.c @@ -68,10 +68,11 @@ OPENSSL_SA *OPENSSL_SA_new(void) } static void sa_doall(const OPENSSL_SA *sa, void (*node)(void **), - void (*leaf)(void *, void *), void *arg) + void (*leaf)(size_t, void *, void *), void *arg) { int i[SA_BLOCK_MAX_LEVELS]; void *nodes[SA_BLOCK_MAX_LEVELS]; + size_t idx = 0; int l = 0; i[0] = 0; @@ -84,14 +85,17 @@ static void sa_doall(const OPENSSL_SA *sa, void (*node)(void **), if (p != NULL && node != NULL) (*node)(p); l--; + idx >>= OPENSSL_SA_BLOCK_BITS; } else { i[l] = n + 1; if (p != NULL && p[n] != NULL) { + idx = (idx & ~SA_BLOCK_MASK) | n; if (l < sa->levels - 1) { i[++l] = 0; nodes[l] = p[n]; + idx <<= OPENSSL_SA_BLOCK_BITS; } else if (leaf != NULL) { - (*leaf)(p[n], arg); + (*leaf)(idx, p[n], arg); } } } @@ -103,7 +107,7 @@ static void sa_free_node(void **p) OPENSSL_free(p); } -static void sa_free_leaf(void *p, void *arg) +static void sa_free_leaf(size_t n, void *p, void *arg) { OPENSSL_free(p); } @@ -122,15 +126,15 @@ void OPENSSL_SA_free_leaves(OPENSSL_SA *sa) /* Wrap this in a structure to avoid compiler warnings */ struct trampoline_st { - void (*func)(void *); + void (*func)(size_t, void *); }; -static void trampoline(void *l, void *arg) +static void trampoline(size_t n, void *l, void *arg) { - ((const struct trampoline_st *)arg)->func(l); + ((const struct trampoline_st *)arg)->func(n, l); } -void OPENSSL_SA_doall(const OPENSSL_SA *sa, void (*leaf)(void *)) +void OPENSSL_SA_doall(const OPENSSL_SA *sa, void (*leaf)(size_t, void *)) { struct trampoline_st tramp; @@ -139,8 +143,8 @@ void OPENSSL_SA_doall(const OPENSSL_SA *sa, void (*leaf)(void *)) sa_doall(sa, NULL, &trampoline, &tramp); } -void OPENSSL_SA_doall_arg(const OPENSSL_SA *sa, void (*leaf)(void *, void *), - void *arg) +void OPENSSL_SA_doall_arg(const OPENSSL_SA *sa, + void (*leaf)(size_t, void *, void *), void *arg) { if (sa != NULL) sa_doall(sa, NULL, leaf, arg); diff --git a/doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod b/doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod index 146f02d..099f7a6 100644 --- a/doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod +++ b/doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod @@ -20,8 +20,9 @@ ossl_sa_TYPE_doall_arg, ossl_sa_TYPE_get, ossl_sa_TYPE_set void ossl_sa_TYPE_free(const SPARSE_ARRAY_OF(TYPE) *sa); void ossl_sa_TYPE_free_leaves(const SPARSE_ARRAY_OF(TYPE) *sa); int ossl_sa_TYPE_num(const SPARSE_ARRAY_OF(TYPE) *sa); - void ossl_sa_TYPE_doall(const OPENSSL_SA *sa, void (*leaf)(void *)); - void ossl_sa_TYPE_doall_arg(const OPENSSL_SA *sa, void (*leaf)(void *), void *arg); + void ossl_sa_TYPE_doall(const OPENSSL_SA *sa, void (*leaf)(size_t, void *)); + void ossl_sa_TYPE_doall_arg(const OPENSSL_SA *sa, + void (*leaf)(size_t, void *, void *), void *arg); TYPE *ossl_sa_TYPE_get(const SPARSE_ARRAY_OF(TYPE) *sa, size_t idx); int ossl_sa_TYPE_set(SPARSE_ARRAY_OF(TYPE) *sa, size_t idx, TYPE *value); @@ -53,12 +54,17 @@ elements of B. After this call B is no longer valid. ossl_sa_TYPE_free_leaves() frees up the B structure and all of its elements. After this call B is no longer valid. -ossl_sa_TYPE_doall() calls the function B for each element in B in -ascending index order. +ossl_sa_TYPE_doall() calls the function B for each element in B +in ascending index order. The index position, within the sparse array, +of each item is passed as the first argument to the leaf function and a +pointer to the associated value is is passed as the second argument. + +ossl_sa_TYPE_doall_arg() calls the function B for each element in +B in ascending index order. The index position, within the sparse +array, of each item is passed as the first argument to the leaf function, +a pointer to the associated value is passed as the second argument and +the third argument is the user supplied B. -ossl_sa_TYPE_doall_arg() calls the function B for each element in B -in ascending index order. The argument B is passed to each call of -B. =head1 NOTES diff --git a/test/sparse_array_test.c b/test/sparse_array_test.c index 295ccb0..fa57f3f 100644 --- a/test/sparse_array_test.c +++ b/test/sparse_array_test.c @@ -95,9 +95,104 @@ err: return res; } +struct index_cases_st { + size_t n; + char *v; + int del; +}; + +struct doall_st { + SPARSE_ARRAY_OF(char) *sa; + size_t num_cases; + const struct index_cases_st *cases; + int res; + int all; +}; + +static void leaf_check_all(size_t n, char *value, void *arg) +{ + struct doall_st *doall_data = (struct doall_st *)arg; + const struct index_cases_st *cases = doall_data->cases; + size_t i; + + doall_data->res = 0; + for (i = 0; i < doall_data->num_cases; i++) + if ((doall_data->all || !cases[i].del) + && n == cases[i].n && strcmp(value, cases[i].v) == 0) { + doall_data->res = 1; + return; + } + TEST_error("Index %zu with value %s not found", n, value); +} + +static void leaf_delete(size_t n, char *value, void *arg) +{ + struct doall_st *doall_data = (struct doall_st *)arg; + const struct index_cases_st *cases = doall_data->cases; + size_t i; + + doall_data->res = 0; + for (i = 0; i < doall_data->num_cases; i++) + if (n == cases[i].n && strcmp(value, cases[i].v) == 0) { + doall_data->res = 1; + ossl_sa_char_set(doall_data->sa, n, NULL); + return; + } + TEST_error("Index %zu with value %s not found", n, value); +} + +static int test_sparse_array_doall(void) +{ + static const struct index_cases_st cases[] = { + { 22, "A", 1 }, { 1021, "b", 0 }, { 3, "c", 0 }, { INT_MAX, "d", 1 }, + { (size_t)-1, "H", 0 }, { (size_t)-2, "i", 1 }, { 666666666, "s", 1 }, + { 1234567890, "t", 0 }, + }; + struct doall_st doall_data; + size_t i; + SPARSE_ARRAY_OF(char) *sa = NULL; + int res = 0; + + if (!TEST_ptr(sa = ossl_sa_char_new())) + goto err; + doall_data.num_cases = OSSL_NELEM(cases); + doall_data.cases = cases; + doall_data.all = 1; + doall_data.sa = NULL; + for (i = 0; i < OSSL_NELEM(cases); i++) + if (!TEST_true(ossl_sa_char_set(sa, cases[i].n, cases[i].v))) { + TEST_note("failed at iteration %zu", i + 1); + goto err; + } + + ossl_sa_char_doall_arg(sa, &leaf_check_all, &doall_data); + if (doall_data.res == 0) { + TEST_info("while checking all elements"); + goto err; + } + doall_data.all = 0; + doall_data.sa = sa; + ossl_sa_char_doall_arg(sa, &leaf_delete, &doall_data); + if (doall_data.res == 0) { + TEST_info("while deleting selected elements"); + goto err; + } + ossl_sa_char_doall_arg(sa, &leaf_check_all, &doall_data); + if (doall_data.res == 0) { + TEST_info("while checking for deleted elements"); + goto err; + } + res = 1; + +err: + ossl_sa_char_free(sa); + return res; +} + int setup_tests(void) { ADD_TEST(test_sparse_array); ADD_TEST(test_sparse_array_num); + ADD_TEST(test_sparse_array_doall); return 1; } From no-reply at appveyor.com Thu Feb 14 01:05:59 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 14 Feb 2019 01:05:59 +0000 Subject: [openssl-commits] Build failed: openssl master.22455 Message-ID: <20190214010559.1.B68EFA8A5FBDC71F@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 14 01:26:48 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 14 Feb 2019 01:26:48 +0000 Subject: [openssl-commits] Build failed: openssl master.22461 Message-ID: <20190214012648.1.EA580A1CB36CEA86@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 14 01:41:49 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 14 Feb 2019 01:41:49 +0000 Subject: [openssl-commits] Build failed: openssl master.22463 Message-ID: <20190214014149.1.EB546202EC5BAF87@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 14 01:57:14 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 14 Feb 2019 01:57:14 +0000 Subject: [openssl-commits] Build failed: openssl master.22465 Message-ID: <20190214015714.1.A05DB24732C0B3DE@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 14 02:23:30 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 14 Feb 2019 02:23:30 +0000 Subject: [openssl-commits] Build completed: openssl master.22466 Message-ID: <20190214022330.1.75DFAB5EAB3DA8EC@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 14 02:30:08 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 14 Feb 2019 02:30:08 +0000 Subject: [openssl-commits] Build failed: openssl master.22467 Message-ID: <20190214023008.1.361AA3E59FBF0CC7@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 14 02:57:46 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 14 Feb 2019 02:57:46 +0000 Subject: [openssl-commits] Build completed: openssl master.22468 Message-ID: <20190214025746.1.28BED49E1DAF2A4B@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 14 04:35:57 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 14 Feb 2019 04:35:57 +0000 Subject: [openssl-commits] Build failed: openssl master.22473 Message-ID: <20190214043557.1.4BAA608E879F4C35@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Thu Feb 14 08:46:31 2019 From: levitte at openssl.org (Richard Levitte) Date: Thu, 14 Feb 2019 08:46:31 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550133991.739195.505.nullmailer@dev.openssl.org> The branch master has been updated via f11ffa505f8a9345145a26a05bf77b012b6941bd (commit) from 008b4ff92f785cf3808df26ac5b23f25a691b23c (commit) - Log ----------------------------------------------------------------- commit f11ffa505f8a9345145a26a05bf77b012b6941bd Author: Richard Levitte Date: Thu Feb 14 09:25:40 2019 +0100 Configure: stop forcing use of DEFINE macros in headers There are times when one might want to use something like DEFINE_STACK_OF in a .c file, because it defines a stack for a type defined in that .c file. Unfortunately, when configuring with `--strict-warnings`, clang aggressively warn about unused functions in such cases, which forces the use of such DEFINE macros to header files. We therefore disable this warning from the `--strict-warnings` definition for clang. (note for the curious: `-Wunused-function` is enabled via `-Wall`) Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8234) ----------------------------------------------------------------------- Summary of changes: Configure | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Configure b/Configure index d6ae2be..0f5807c 100755 --- a/Configure +++ b/Configure @@ -145,6 +145,8 @@ my $gcc_devteam_warn = "-DDEBUG_UNUSED" # -Wlanguage-extension-token -- no, we use asm() # -Wunused-macros -- no, too tricky for BN and _XOPEN_SOURCE etc # -Wextended-offsetof -- no, needed in CMS ASN1 code +# -Wunused-function -- no, it forces header use of safestack et al +# DEFINE macros my $clang_devteam_warn = "" . " -Wswitch-default" . " -Wno-parentheses-equality" @@ -154,6 +156,7 @@ my $clang_devteam_warn = "" . " -Wincompatible-pointer-types-discards-qualifiers" . " -Wmissing-variable-declarations" . " -Wno-unknown-warning-option" + . " -Wno-unused-function" ; # This adds backtrace information to the memory leak info. Is only used From levitte at openssl.org Thu Feb 14 08:47:22 2019 From: levitte at openssl.org (Richard Levitte) Date: Thu, 14 Feb 2019 08:47:22 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550134042.538706.1472.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via cd272eeee23b5866b281303550917287e78375c1 (commit) from 7ee28a61cd6d9f704fc672904a14a764f618aa7c (commit) - Log ----------------------------------------------------------------- commit cd272eeee23b5866b281303550917287e78375c1 Author: Richard Levitte Date: Thu Feb 14 09:25:40 2019 +0100 Configure: stop forcing use of DEFINE macros in headers There are times when one might want to use something like DEFINE_STACK_OF in a .c file, because it defines a stack for a type defined in that .c file. Unfortunately, when configuring with `--strict-warnings`, clang aggressively warn about unused functions in such cases, which forces the use of such DEFINE macros to header files. We therefore disable this warning from the `--strict-warnings` definition for clang. (note for the curious: `-Wunused-function` is enabled via `-Wall`) Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8234) (cherry picked from commit f11ffa505f8a9345145a26a05bf77b012b6941bd) ----------------------------------------------------------------------- Summary of changes: Configure | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Configure b/Configure index 7b9501a..d300a76 100755 --- a/Configure +++ b/Configure @@ -144,6 +144,8 @@ my $gcc_devteam_warn = "-DDEBUG_UNUSED" # -Wlanguage-extension-token -- no, we use asm() # -Wunused-macros -- no, too tricky for BN and _XOPEN_SOURCE etc # -Wextended-offsetof -- no, needed in CMS ASN1 code +# -Wunused-function -- no, it forces header use of safestack et al +# DEFINE macros my $clang_devteam_warn = "" . " -Wswitch-default" . " -Wno-parentheses-equality" @@ -153,6 +155,7 @@ my $clang_devteam_warn = "" . " -Wincompatible-pointer-types-discards-qualifiers" . " -Wmissing-variable-declarations" . " -Wno-unknown-warning-option" + . " -Wno-unused-function" ; # This adds backtrace information to the memory leak info. Is only used From openssl at openssl.org Thu Feb 14 09:25:48 2019 From: openssl at openssl.org (OpenSSL run-checker) Date: Thu, 14 Feb 2019 09:25:48 +0000 Subject: [openssl-commits] FAILED build of OpenSSL branch master with options -d --strict-warnings no-stdio Message-ID: <1550136348.032158.21850.nullmailer@run.openssl.org> Platform and configuration command: $ uname -a Linux run 4.4.0-135-generic #161-Ubuntu SMP Mon Aug 27 10:45:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ CC=clang ../openssl/config -d --strict-warnings no-stdio Commit log since last time: fa63e45262 Windows/Cygwin dlls need the executable bit set 953315ae60 test/build.info: add missing ../apps/include 5a285addbf Added new EVP/KDF API. Changed PKEY/KDF API to call the new API. Added wrappers for PKCS5_PBKDF2_HMAC() and EVP_PBE_scrypt() to call the new EVP KDF APIs. Documentation updated. e0ae0585be Sparse array limit testing: reduce the range limit for the number of bits in a sparse array pointer block. b754a8a159 Fix null pointer dereference in cms_RecipientInfo_kari_init 5674466e00 Move libapps headers into their own directory 7f4268bff3 Fix master build. The recent change from ENGINES to MODULES broke the configure it seems. 583fd0c108 Macro typo fix not propagated e5fee28f0e Fix typo in comment 54b5fb2dab To use BN_BITS2, we'd better include openssl/bn.h c703a808a1 eng_devcrypto.c: close open session on init c244aa7bda CHANGES: add note about building devcrypto dynamic 2afebe0bab e_devcrypto: make the /dev/crypto engine dynamic 9a18aae5f2 AArch64 assembly pack: authenticate return addresses. a40f0f6475 Add sparse array data type. Build log ended with (last 100 lines): /usr/bin/perl ../openssl/test/generate_buildtest.pl symhacks > test/buildtest_symhacks.c /usr/bin/perl ../openssl/test/generate_buildtest.pl tls1 > test/buildtest_tls1.c /usr/bin/perl ../openssl/test/generate_buildtest.pl ts > test/buildtest_ts.c /usr/bin/perl ../openssl/test/generate_buildtest.pl txt_db > test/buildtest_txt_db.c /usr/bin/perl ../openssl/test/generate_buildtest.pl ui > test/buildtest_ui.c /usr/bin/perl ../openssl/test/generate_buildtest.pl whrlpool > test/buildtest_whrlpool.c /usr/bin/perl ../openssl/test/generate_buildtest.pl x509 > test/buildtest_x509.c /usr/bin/perl ../openssl/test/generate_buildtest.pl x509_vfy > test/buildtest_x509_vfy.c /usr/bin/perl ../openssl/test/generate_buildtest.pl x509v3 > test/buildtest_x509v3.c /usr/bin/perl "-I." -Mconfigdata "../openssl/util/dofile.pl" \ "-oMakefile" ../openssl/util/shlib_wrap.sh.in > "util/shlib_wrap.sh" clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aes-x86_64.o crypto/aes/aes-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aesni-mb-x86_64.o crypto/aes/aesni-mb-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aesni-sha1-x86_64.o crypto/aes/aesni-sha1-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aesni-sha256-x86_64.o crypto/aes/aesni-sha256-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aesni-x86_64.o crypto/aes/aesni-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-bsaes-x86_64.o crypto/aes/bsaes-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-vpaes-x86_64.o crypto/aes/vpaes-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-rsaz-avx2.o crypto/bn/rsaz-avx2.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-rsaz-x86_64.o crypto/bn/rsaz-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-x86_64-gf2m.o crypto/bn/x86_64-gf2m.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-x86_64-mont.o crypto/bn/x86_64-mont.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-x86_64-mont5.o crypto/bn/x86_64-mont5.s chmod a+x util/shlib_wrap.sh clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/camellia/libcrypto-lib-cmll-x86_64.o crypto/camellia/cmll-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/chacha/libcrypto-lib-chacha-x86_64.o crypto/chacha/chacha-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/ec/libcrypto-lib-ecp_nistz256-x86_64.o crypto/ec/ecp_nistz256-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/ec/libcrypto-lib-x25519-x86_64.o crypto/ec/x25519-x86_64.s clang -Icrypto -I. -Icrypto/include -Iinclude -I../openssl -I../openssl/crypto/include -I../openssl/include -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -MMD -MF crypto/libcrypto-lib-cversion.d.tmp -MT crypto/libcrypto-lib-cversion.o -c -o crypto/libcrypto-lib-cversion.o ../openssl/crypto/cversion.c clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/libcrypto-lib-x86_64cpuid.o crypto/x86_64cpuid.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/md5/libcrypto-lib-md5-x86_64.o crypto/md5/md5-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o crypto/modes/aesni-gcm-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/modes/libcrypto-lib-ghash-x86_64.o crypto/modes/ghash-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/poly1305/libcrypto-lib-poly1305-x86_64.o crypto/poly1305/poly1305-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/rc4/libcrypto-lib-rc4-md5-x86_64.o crypto/rc4/rc4-md5-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/rc4/libcrypto-lib-rc4-x86_64.o crypto/rc4/rc4-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-keccak1600-x86_64.o crypto/sha/keccak1600-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha1-mb-x86_64.o crypto/sha/sha1-mb-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha1-x86_64.o crypto/sha/sha1-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha256-mb-x86_64.o crypto/sha/sha256-mb-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha256-x86_64.o crypto/sha/sha256-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha512-x86_64.o crypto/sha/sha512-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/whrlpool/libcrypto-lib-wp-x86_64.o crypto/whrlpool/wp-x86_64.s ar r libssl.a ssl/libssl-lib-bio_ssl.o ssl/libssl-lib-d1_lib.o ssl/libssl-lib-d1_msg.o ssl/libssl-lib-d1_srtp.o ssl/libssl-lib-methods.o ssl/libssl-lib-packet.o ssl/libssl-lib-pqueue.o ssl/libssl-lib-s3_cbc.o ssl/libssl-lib-s3_enc.o ssl/libssl-lib-s3_lib.o ssl/libssl-lib-s3_msg.o ssl/libssl-lib-ssl_asn1.o ssl/libssl-lib-ssl_cert.o ssl/libssl-lib-ssl_ciph.o ssl/libssl-lib-ssl_conf.o ssl/libssl-lib-ssl_err.o ssl/libssl-lib-ssl_init.o ssl/libssl-lib-ssl_lib.o ssl/libssl-lib-ssl_mcnf.o ssl/libssl-lib-ssl_rsa.o ssl/libssl-lib-ssl_sess.o ssl/libssl-lib-ssl_stat.o ssl/libssl-lib-ssl_txt.o ssl/libssl-lib-ssl_utst.o ssl/libssl-lib-t1_enc.o ssl/libssl-lib-t1_lib.o ssl/libssl-lib-t1_trce.o ssl/libssl-lib-tls13_enc.o ssl/libssl-lib-tls_srp.o ssl/record/libssl-lib-dtls1_bitmap.o ssl/record/libssl-lib-rec_layer_d1.o ssl/record/libssl-lib-rec_layer_s3.o ssl/record/libssl-lib-ssl3_buffer.o ssl/record/libssl-lib-ssl3_record.o ssl/record/libssl-lib-ssl3_record_tls13.o ssl/statem/libssl-lib-extensions.o ssl/statem/libssl-lib-extensions_clnt.o ssl/statem/libssl-lib-extensions_cust.o ssl/statem/libssl-lib-extensions_srvr.o ssl/statem/libssl-lib-statem.o ssl/statem/libssl-lib-statem_clnt.o ssl/statem/libssl-lib-statem_dtls.o ssl/statem/libssl-lib-statem_lib.o ssl/statem/libssl-lib-statem_srvr.o ar: creating libssl.a clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -L. -Wl,-znodelete -shared -Wl,-Bsymbolic -Wl,-soname=libcrypto.so.3 \ -o libcrypto.so.3 -Wl,--version-script=libcrypto.ld crypto/aes/libcrypto-shlib-aes-x86_64.o crypto/aes/libcrypto-shlib-aes_cfb.o crypto/aes/libcrypto-shlib-aes_ecb.o crypto/aes/libcrypto-shlib-aes_ige.o crypto/aes/libcrypto-shlib-aes_misc.o crypto/aes/libcrypto-shlib-aes_ofb.o crypto/aes/libcrypto-shlib-aes_wrap.o crypto/aes/libcrypto-shlib-aesni-mb-x86_64.o crypto/aes/libcrypto-shlib-aesni-sha1-x86_64.o crypto/aes/libcrypto-shlib-aesni-sha256-x86_64.o crypto/aes/libcrypto-shlib-aesni-x86_64.o crypto/aes/libcrypto-shlib-bsaes-x86_64.o crypto/aes/libcrypto-shlib-vpaes-x86_64.o crypto/aria/libcrypto-shlib-aria.o crypto/asn1/libcrypto-shlib-a_bitstr.o crypto/asn1/libcrypto-shlib-a_d2i_fp.o crypto/asn1/libcrypto-shlib-a_digest.o crypto/asn1/libcrypto-shlib-a_dup.o crypto/asn1/libcrypto-shlib-a_gentm.o crypto/asn1/libcrypto-shlib-a_i2d_fp.o crypto/asn1/libcrypto-shlib-a_int.o crypto/asn1/libcrypto-shlib-a_mbstr.o crypto/asn1/libcrypto-shlib-a_object.o crypto/asn1/libcrypto-shlib-a_octet.o crypto/asn1/libcrypto-shlib-a_print.o crypto/asn1/libcrypto-shlib-a_sign.o crypto/asn1/libcrypto-shlib-a_strex.o crypto/asn1/libcrypto-shlib-a_strnid.o crypto/asn1/libcrypto-shlib-a_time.o crypto/asn1/libcrypto-shlib-a_type.o crypto/asn1/libcrypto-shlib-a_utctm.o crypto/asn1/libcrypto-shlib-a_utf8.o crypto/asn1/libcrypto-shlib-a_verify.o crypto/asn1/libcrypto-shlib-ameth_lib.o crypto/asn1/libcrypto-shlib-asn1_err.o crypto/asn1/libcrypto-shlib-asn1_gen.o crypto/asn1/libcrypto-shlib-asn1_item_list.o crypto/asn1/libcrypto-shlib-asn1_lib.o crypto/asn1/libcrypto-shlib-asn1_par.o crypto/asn1/libcrypto-shlib-asn_mime.o crypto/asn1/libcrypto-shlib-asn_moid.o crypto/asn1/libcrypto-shlib-asn_mstbl.o crypto/asn1/libcrypto-shlib-asn_pack.o crypto/asn1/libcrypto-shlib-bio_asn1.o crypto/asn1/libcrypto-shlib-bio_ndef.o crypto/asn1/libcrypto-shlib-d2i_pr.o crypto/asn1/libcrypto-shlib-d2i_pu.o crypto/asn1/libcrypto-shlib-evp_asn1.o crypto/asn1/libcrypto-shlib-f_int.o crypto/asn1/libcrypto-shlib-f_string.o crypto/asn1/libcrypto-shlib-i2d_pr.o crypto/asn1/libcrypto-shlib-i2d_pu.o crypto/asn1/libcrypto-shlib-n_pkey.o crypto/asn1/libcrypto-shlib-nsseq.o crypto/asn1/libcrypto-shlib-p5_pbe.o crypto/asn1/libcrypto-shlib-p5_pbev2.o crypto/asn1/libcrypto-shlib-p5_scrypt.o crypto/asn1/libcrypto-shlib-p8_pkey.o crypto/asn1/libcrypto-shlib-t_bitst.o crypto/asn1/libcrypto-shlib-t_pkey.o crypto/asn1/libcrypto-shlib-t_spki.o crypto/asn1/libcrypto-shlib-tasn_dec.o crypto/asn1/libcrypto-shlib-tasn_enc.o crypto/asn1/libcrypto-shlib-tasn_fre.o crypto/asn1/libcrypto-shlib-tasn_new.o crypto/asn1/libcrypto-shlib-tasn_prn.o crypto/asn1/libcrypto-shlib-tasn_scn.o crypto/asn1/libcrypto-shlib-tasn_typ.o crypto/asn1/libcrypto-shlib-tasn_utl.o crypto/asn1/libcrypto-shlib-x_algor.o crypto/asn1/libcrypto-shlib-x_bignum.o crypto/asn1/libcrypto-shlib-x_info.o crypto/asn1/libcrypto-shlib-x_int64.o crypto/asn1/libcrypto-shlib-x_long.o crypto/asn1/libcrypto-shlib-x_pkey.o crypto/asn1/libcrypto-shlib-x_sig.o crypto/asn1/libcrypto-shlib-x_spki.o crypto/asn1/libcrypto-shlib-x_val.o crypto/async/arch/libcrypto-shlib-async_null.o crypto/async/arch/libcrypto-shlib-async_posix.o crypto/async/arch/libcrypto-shlib-async_win.o crypto/async/libcrypto-shlib-async.o crypto/async/libcrypto-shlib-async_err.o crypto/async/libcrypto-shlib-async_wait.o crypto/bf/libcrypto-shlib-bf_cfb64.o crypto/bf/libcrypto-shlib-bf_ecb.o crypto/bf/libcrypto-shlib-bf_enc.o crypto/bf/libcrypto-shlib-bf_ofb64.o crypto/bf/libcrypto-shlib-bf_skey.o crypto/bio/libcrypto-shlib-b_addr.o crypto/bio/libcrypto-shlib-b_dump.o crypto/bio/libcrypto-shlib-b_print.o crypto/bio/libcrypto-shlib-b_sock.o crypto/bio/libcrypto-shlib-b_sock2.o crypto/bio/libcrypto-shlib-bf_buff.o crypto/bio/libcrypto-shlib-bf_lbuf.o crypto/bio/libcrypto-shlib-bf_nbio.o crypto/bio/libcrypto-shlib-bf_null.o crypto/bio/libcrypto-shlib-bio_cb.o crypto/bio/libcrypto-shlib-bio_err.o crypto/bio/libcrypto-shlib-bio_lib.o crypto/bio/libcrypto-shlib-bio_meth.o crypto/bio/libcrypto-shlib-bss_acpt.o crypto/bio/libcrypto-shlib-bss_bio.o crypto/bio/libcrypto-shlib-bss_conn.o crypto/bio/libcrypto-shlib-bss_dgram.o crypto/bio/libcrypto-shlib-bss_fd.o crypto/bio/libcrypto-shlib-bss_file.o crypto/bio/libcrypto-shlib-bss_log.o crypto/bio/libcrypto-shlib-bss_mem.o crypto/bio/libcrypto-shlib-bss_null.o crypto/bio/libcrypto-shlib-bss_sock.o crypto/blake2/libcrypto-shlib-blake2b.o crypto/blake2/libcrypto-shlib-blake2b_mac.o crypto/blake2/libcrypto-shlib-blake2s.o crypto/blake2/libcrypto-shlib-blake2s_mac.o crypto/blake2/libcrypto-shlib-m_blake2b.o crypto/blake2/libcrypto-shlib-m_blake2s.o crypto/bn/asm/libcrypto-shlib-x86_64-gcc.o crypto/bn/libcrypto-shlib-bn_add.o crypto/bn/libcrypto-shlib-bn_blind.o crypto/bn/libcrypto-shlib-bn_const.o crypto/bn/libcrypto-shlib-bn_ctx.o crypto/bn/libcrypto-shlib-bn_depr.o crypto/bn/libcrypto-shlib-bn_dh.o crypto/bn/libcrypto-shlib-bn_div.o crypto/bn/libcrypto-shlib-bn_err.o crypto/bn/libcrypto-shlib-bn_exp.o crypto/bn/libcrypto-shlib-bn_exp2.o crypto/bn/libcrypto-shlib-bn_gcd.o crypto/bn/libcrypto-shlib-bn_gf2m.o crypto/bn/libcrypto-shlib-bn_intern.o crypto/bn/libcrypto-shlib-bn_kron.o crypto/bn/libcrypto-shlib-bn_lib.o crypto/bn/libcrypto-shlib-bn_mod.o crypto/bn/libcrypto-shlib-bn_mont.o crypto/bn/libcrypto-shlib-bn_mpi.o crypto/bn/libcrypto-shlib-bn_mul.o crypto/bn/libcrypto-shlib-bn_nist.o crypto/bn/libcrypto-shlib-bn_prime.o crypto/bn/libcrypto-shlib-bn_print.o crypto/bn/libcrypto-shlib-bn_rand.o crypto/bn/libcrypto-shlib-bn_recp.o crypto/bn/libcrypto-shlib-bn_shift.o crypto/bn/libcrypto-shlib-bn_sqr.o crypto/bn/libcrypto-shlib-bn_sqrt.o crypto/bn/libcrypto-shlib-bn_srp.o crypto/bn/libcrypto-shlib-bn_word.o crypto/bn/libcrypto-shlib-bn_x931p.o crypto/bn/libcrypto-shlib-rsaz-avx2.o crypto/bn/libcrypto-shlib-rsaz-x86_64.o crypto/bn/libcrypto-shlib-rsaz_exp.o crypto/bn/libcrypto-shlib-x86_64-gf2m.o crypto/bn/libcrypto-shlib-x86_64-mont.o crypto/bn/libcrypto-shlib-x86_64-mont5.o crypto/buffer/libcrypto-shlib-buf_err.o crypto/buffer/libcrypto-shlib-buffer.o crypto/camellia/libcrypto-shlib-cmll-x86_64.o crypto/camellia/libcrypto-shlib-cmll_cfb.o crypto/camellia/libcrypto-shlib-cmll_ctr.o crypto/camellia/libcrypto-shlib-cmll_ecb.o crypto/camellia/libcrypto-shlib-cmll_misc.o crypto/camellia/libcrypto-shlib-cmll_ofb.o crypto/cast/libcrypto-shlib-c_cfb64.o crypto/cast/libcrypto-shlib-c_ecb.o crypto/cast/libcrypto-shlib-c_enc.o crypto/cast/libcrypto-shlib-c_ofb64.o crypto/cast/libcrypto-shlib-c_skey.o crypto/chacha/libcrypto-shlib-chacha-x86_64.o crypto/cmac/libcrypto-shlib-cm_ameth.o crypto/cmac/libcrypto-shlib-cm_meth.o crypto/cmac/libcrypto-shlib-cmac.o crypto/cms/libcrypto-shlib-cms_asn1.o crypto/cms/libcrypto-shlib-cms_att.o crypto/cms/libcrypto-shlib-cms_cd.o crypto/cms/libcrypto-shlib-cms_dd.o crypto/cms/libcrypto-shlib-cms_enc.o crypto/cms/libcrypto-shlib-cms_env.o crypto/cms/libcrypto-shlib-cms_err.o crypto/cms/libcrypto-shlib-cms_ess.o crypto/cms/libcrypto-shlib-cms_io.o crypto/cms/libcrypto-shlib-cms_kari.o crypto/cms/libcrypto-shlib-cms_lib.o crypto/cms/libcrypto-shlib-cms_pwri.o crypto/cms/libcrypto-shlib-cms_sd.o crypto/cms/libcrypto-shlib-cms_smime.o crypto/comp/libcrypto-shlib-c_zlib.o crypto/comp/libcrypto-shlib-comp_err.o crypto/comp/libcrypto-shlib-comp_lib.o crypto/conf/libcrypto-shlib-conf_api.o crypto/conf/libcrypto-shlib-conf_def.o crypto/conf/libcrypto-shlib-conf_err.o crypto/conf/libcrypto-shlib-conf_lib.o crypto/conf/libcrypto-shlib-conf_mall.o crypto/conf/libcrypto-shlib-conf_mod.o crypto/conf/libcrypto-shlib-conf_sap.o crypto/conf/libcrypto-shlib-conf_ssl.o crypto/ct/libcrypto-shlib-ct_b64.o crypto/ct/libcrypto-shlib-ct_err.o crypto/ct/libcrypto-shlib-ct_log.o crypto/ct/libcrypto-shlib-ct_oct.o crypto/ct/libcrypto-shlib-ct_policy.o crypto/ct/libcrypto-shlib-ct_prn.o crypto/ct/libcrypto-shlib-ct_sct.o crypto/ct/libcrypto-shlib-ct_sct_ctx.o crypto/ct/libcrypto-shlib-ct_vfy.o crypto/ct/libcrypto-shlib-ct_x509v3.o crypto/des/libcrypto-shlib-cbc_cksm.o crypto/des/libcrypto-shlib-cbc_enc.o crypto/des/libcrypto-shlib-cfb64ede.o crypto/des/libcrypto-shlib-cfb64enc.o crypto/des/libcrypto-shlib-cfb_enc.o crypto/des/libcrypto-shlib-des_enc.o crypto/des/libcrypto-shlib-ecb3_enc.o crypto/des/libcrypto-shlib-ecb_enc.o crypto/des/libcrypto-shlib-fcrypt.o crypto/des/libcrypto-shlib-fcrypt_b.o crypto/des/libcrypto-shlib-ofb64ede.o crypto/des/libcrypto-shlib-ofb64enc.o crypto/des/libcrypto-shlib-ofb_enc.o crypto/des/libcrypto-shlib-pcbc_enc.o crypto/des/libcrypto-shlib-qud_cksm.o crypto/des/libcrypto-shlib-rand_key.o crypto/des/libcrypto-shlib-set_key.o crypto/des/libcrypto-shlib-str2key.o crypto/des/libcrypto-shlib-xcbc_enc.o crypto/dh/libcrypto-shlib-dh_ameth.o crypto/dh/libcrypto-shlib-dh_asn1.o crypto/dh/libcrypto-shlib-dh_check.o crypto/dh/libcrypto-shlib-dh_depr.o crypto/dh/libcrypto-shlib-dh_err.o crypto/dh/libcrypto-shlib-dh_gen.o crypto/dh/libcrypto-shlib-dh_kdf.o crypto/dh/libcrypto-shlib-dh_key.o crypto/dh/libcrypto-shlib-dh_lib.o crypto/dh/libcrypto-shlib-dh_meth.o crypto/dh/libcrypto-shlib-dh_pmeth.o crypto/dh/libcrypto-shlib-dh_prn.o crypto/dh/libcrypto-shlib-dh_rfc5114.o crypto/dh/libcrypto-shlib-dh_rfc7919.o crypto/dsa/libcrypto-shlib-dsa_ameth.o crypto/dsa/libcrypto-shlib-dsa_asn1.o crypto/dsa/libcrypto-shlib-dsa_depr.o crypto/dsa/libcrypto-shlib-dsa_err.o crypto/dsa/libcrypto-shlib-dsa_gen.o crypto/dsa/libcrypto-shlib-dsa_key.o crypto/dsa/libcrypto-shlib-dsa_lib.o crypto/dsa/libcrypto-shlib-dsa_meth.o crypto/dsa/libcrypto-shlib-dsa_ossl.o crypto/dsa/libcrypto-shlib-dsa_pmeth.o crypto/dsa/libcrypto-shlib-dsa_prn.o crypto/dsa/libcrypto-shlib-dsa_sign.o crypto/dsa/libcrypto-shlib-dsa_vrf.o crypto/dso/libcrypto-shlib-dso_dl.o crypto/dso/libcrypto-shlib-dso_dlfcn.o crypto/dso/libcrypto-shlib-dso_err.o crypto/dso/libcrypto-shlib-dso_lib.o crypto/dso/libcrypto-shlib-dso_openssl.o crypto/dso/libcrypto-shlib-dso_vms.o crypto/dso/libcrypto-shlib-dso_win32.o crypto/ec/curve448/arch_32/libcrypto-shlib-f_impl.o crypto/ec/curve448/libcrypto-shlib-curve448.o crypto/ec/curve448/libcrypto-shlib-curve448_tables.o crypto/ec/curve448/libcrypto-shlib-eddsa.o crypto/ec/curve448/libcrypto-shlib-f_generic.o crypto/ec/curve448/libcrypto-shlib-scalar.o crypto/ec/libcrypto-shlib-curve25519.o crypto/ec/libcrypto-shlib-ec2_oct.o crypto/ec/libcrypto-shlib-ec2_smpl.o crypto/ec/libcrypto-shlib-ec_ameth.o crypto/ec/libcrypto-shlib-ec_asn1.o crypto/ec/libcrypto-shlib-ec_check.o crypto/ec/libcrypto-shlib-ec_curve.o crypto/ec/libcrypto-shlib-ec_cvt.o crypto/ec/libcrypto-shlib-ec_err.o crypto/ec/libcrypto-shlib-ec_key.o crypto/ec/libcrypto-shlib-ec_kmeth.o crypto/ec/libcrypto-shlib-ec_lib.o crypto/ec/libcrypto-shlib-ec_mult.o crypto/ec/libcrypto-shlib-ec_oct.o crypto/ec/libcrypto-shlib-ec_pmeth.o crypto/ec/libcrypto-shlib-ec_print.o crypto/ec/libcrypto-shlib-ecdh_kdf.o crypto/ec/libcrypto-shlib-ecdh_ossl.o crypto/ec/libcrypto-shlib-ecdsa_ossl.o crypto/ec/libcrypto-shlib-ecdsa_sign.o crypto/ec/libcrypto-shlib-ecdsa_vrf.o crypto/ec/libcrypto-shlib-eck_prn.o crypto/ec/libcrypto-shlib-ecp_mont.o crypto/ec/libcrypto-shlib-ecp_nist.o crypto/ec/libcrypto-shlib-ecp_nistp224.o crypto/ec/libcrypto-shlib-ecp_nistp256.o crypto/ec/libcrypto-shlib-ecp_nistp521.o crypto/ec/libcrypto-shlib-ecp_nistputil.o crypto/ec/libcrypto-shlib-ecp_nistz256-x86_64.o crypto/ec/libcrypto-shlib-ecp_nistz256.o crypto/ec/libcrypto-shlib-ecp_oct.o crypto/ec/libcrypto-shlib-ecp_smpl.o crypto/ec/libcrypto-shlib-ecx_meth.o crypto/ec/libcrypto-shlib-x25519-x86_64.o crypto/engine/libcrypto-shlib-eng_all.o crypto/engine/libcrypto-shlib-eng_cnf.o crypto/engine/libcrypto-shlib-eng_ctrl.o crypto/engine/libcrypto-shlib-eng_dyn.o crypto/engine/libcrypto-shlib-eng_err.o crypto/engine/libcrypto-shlib-eng_fat.o crypto/engine/libcrypto-shlib-eng_init.o crypto/engine/libcrypto-shlib-eng_lib.o crypto/engine/libcrypto-shlib-eng_list.o crypto/engine/libcrypto-shlib-eng_openssl.o crypto/engine/libcrypto-shlib-eng_pkey.o crypto/engine/libcrypto-shlib-eng_rdrand.o crypto/engine/libcrypto-shlib-eng_table.o crypto/engine/libcrypto-shlib-tb_asnmth.o crypto/engine/libcrypto-shlib-tb_cipher.o crypto/engine/libcrypto-shlib-tb_dh.o crypto/engine/libcrypto-shlib-tb_digest.o crypto/engine/libcrypto-shlib-tb_dsa.o crypto/engine/libcrypto-shlib-tb_eckey.o crypto/engine/libcrypto-shlib-tb_pkmeth.o crypto/engine/libcrypto-shlib-tb_rand.o crypto/engine/libcrypto-shlib-tb_rsa.o crypto/err/libcrypto-shlib-err.o crypto/err/libcrypto-shlib-err_all.o crypto/err/libcrypto-shlib-err_prn.o crypto/ess/libcrypto-shlib-ess_asn1.o crypto/ess/libcrypto-shlib-ess_err.o crypto/ess/libcrypto-shlib-ess_lib.o crypto/evp/libcrypto-shlib-bio_b64.o crypto/evp/libcrypto-shlib-bio_enc.o crypto/evp/libcrypto-shlib-bio_md.o crypto/evp/libcrypto-shlib-bio_ok.o crypto/evp/libcrypto-shlib-c_allc.o crypto/evp/libcrypto-shlib-c_alld.o crypto/evp/libcrypto-shlib-c_allm.o crypto/evp/libcrypto-shlib-cmeth_lib.o crypto/evp/libcrypto-shlib-digest.o crypto/evp/libcrypto-shlib-e_aes.o crypto/evp/libcrypto-shlib-e_aes_cbc_hmac_sha1.o crypto/evp/libcrypto-shlib-e_aes_cbc_hmac_sha256.o crypto/evp/libcrypto-shlib-e_aria.o crypto/evp/libcrypto-shlib-e_bf.o crypto/evp/libcrypto-shlib-e_camellia.o crypto/evp/libcrypto-shlib-e_cast.o crypto/evp/libcrypto-shlib-e_chacha20_poly1305.o crypto/evp/libcrypto-shlib-e_des.o crypto/evp/libcrypto-shlib-e_des3.o crypto/evp/libcrypto-shlib-e_idea.o crypto/evp/libcrypto-shlib-e_null.o crypto/evp/libcrypto-shlib-e_old.o crypto/evp/libcrypto-shlib-e_rc2.o crypto/evp/libcrypto-shlib-e_rc4.o crypto/evp/libcrypto-shlib-e_rc4_hmac_md5.o crypto/evp/libcrypto-shlib-e_rc5.o crypto/evp/libcrypto-shlib-e_seed.o crypto/evp/libcrypto-shlib-e_sm4.o crypto/evp/libcrypto-shlib-e_xcbc_d.o crypto/evp/libcrypto-shlib-encode.o crypto/evp/libcrypto-shlib-evp_cnf.o crypto/evp/libcrypto-shlib-evp_enc.o crypto/evp/libcrypto-shlib-evp_err.o crypto/evp/libcrypto-shlib-evp_key.o crypto/evp/libcrypto-shlib-evp_lib.o crypto/evp/libcrypto-shlib-evp_pbe.o crypto/evp/libcrypto-shlib-evp_pkey.o crypto/evp/libcrypto-shlib-kdf_lib.o crypto/evp/libcrypto-shlib-m_md2.o crypto/evp/libcrypto-shlib-m_md4.o crypto/evp/libcrypto-shlib-m_md5.o crypto/evp/libcrypto-shlib-m_md5_sha1.o crypto/evp/libcrypto-shlib-m_mdc2.o crypto/evp/libcrypto-shlib-m_null.o crypto/evp/libcrypto-shlib-m_ripemd.o crypto/evp/libcrypto-shlib-m_sha1.o crypto/evp/libcrypto-shlib-m_sha3.o crypto/evp/libcrypto-shlib-m_sigver.o crypto/evp/libcrypto-shlib-m_wp.o crypto/evp/libcrypto-shlib-mac_lib.o crypto/evp/libcrypto-shlib-names.o crypto/evp/libcrypto-shlib-p5_crpt.o crypto/evp/libcrypto-shlib-p5_crpt2.o crypto/evp/libcrypto-shlib-p_dec.o crypto/evp/libcrypto-shlib-p_enc.o crypto/evp/libcrypto-shlib-p_lib.o crypto/evp/libcrypto-shlib-p_open.o crypto/evp/libcrypto-shlib-p_seal.o crypto/evp/libcrypto-shlib-p_sign.o crypto/evp/libcrypto-shlib-p_verify.o crypto/evp/libcrypto-shlib-pbe_scrypt.o crypto/evp/libcrypto-shlib-pkey_kdf.o crypto/evp/libcrypto-shlib-pkey_mac.o crypto/evp/libcrypto-shlib-pmeth_fn.o crypto/evp/libcrypto-shlib-pmeth_gn.o crypto/evp/libcrypto-shlib-pmeth_lib.o crypto/gmac/libcrypto-shlib-gmac.o crypto/hmac/libcrypto-shlib-hm_ameth.o crypto/hmac/libcrypto-shlib-hm_meth.o crypto/hmac/libcrypto-shlib-hmac.o crypto/idea/libcrypto-shlib-i_cbc.o crypto/idea/libcrypto-shlib-i_cfb64.o crypto/idea/libcrypto-shlib-i_ecb.o crypto/idea/libcrypto-shlib-i_ofb64.o crypto/idea/libcrypto-shlib-i_skey.o crypto/kdf/libcrypto-shlib-hkdf.o crypto/kdf/libcrypto-shlib-kdf_err.o crypto/kdf/libcrypto-shlib-kdf_util.o crypto/kdf/libcrypto-shlib-pbkdf2.o crypto/kdf/libcrypto-shlib-scrypt.o crypto/kdf/libcrypto-shlib-tls1_prf.o crypto/kmac/libcrypto-shlib-kmac.o crypto/lhash/libcrypto-shlib-lh_stats.o crypto/lhash/libcrypto-shlib-lhash.o crypto/libcrypto-shlib-cpt_err.o crypto/libcrypto-shlib-cryptlib.o crypto/libcrypto-shlib-ctype.o crypto/libcrypto-shlib-cversion.o crypto/libcrypto-shlib-ebcdic.o crypto/libcrypto-shlib-ex_data.o crypto/libcrypto-shlib-getenv.o crypto/libcrypto-shlib-init.o crypto/libcrypto-shlib-mem.o crypto/libcrypto-shlib-mem_dbg.o crypto/libcrypto-shlib-mem_sec.o crypto/libcrypto-shlib-o_dir.o crypto/libcrypto-shlib-o_fips.o crypto/libcrypto-shlib-o_fopen.o crypto/libcrypto-shlib-o_init.o crypto/libcrypto-shlib-o_str.o crypto/libcrypto-shlib-o_time.o crypto/libcrypto-shlib-sparse_array.o crypto/libcrypto-shlib-threads_none.o crypto/libcrypto-shlib-threads_pthread.o crypto/libcrypto-shlib-threads_win.o crypto/libcrypto-shlib-uid.o crypto/libcrypto-shlib-x86_64cpuid.o crypto/md4/libcrypto-shlib-md4_dgst.o crypto/md4/libcrypto-shlib-md4_one.o crypto/md5/libcrypto-shlib-md5-x86_64.o crypto/md5/libcrypto-shlib-md5_dgst.o crypto/md5/libcrypto-shlib-md5_one.o crypto/mdc2/libcrypto-shlib-mdc2_one.o crypto/mdc2/libcrypto-shlib-mdc2dgst.o crypto/modes/libcrypto-shlib-aesni-gcm-x86_64.o crypto/modes/libcrypto-shlib-cbc128.o crypto/modes/libcrypto-shlib-ccm128.o crypto/modes/libcrypto-shlib-cfb128.o crypto/modes/libcrypto-shlib-ctr128.o crypto/modes/libcrypto-shlib-cts128.o crypto/modes/libcrypto-shlib-gcm128.o crypto/modes/libcrypto-shlib-ghash-x86_64.o crypto/modes/libcrypto-shlib-ocb128.o crypto/modes/libcrypto-shlib-ofb128.o crypto/modes/libcrypto-shlib-siv128.o crypto/modes/libcrypto-shlib-wrap128.o crypto/modes/libcrypto-shlib-xts128.o crypto/objects/libcrypto-shlib-o_names.o crypto/objects/libcrypto-shlib-obj_dat.o crypto/objects/libcrypto-shlib-obj_err.o crypto/objects/libcrypto-shlib-obj_lib.o crypto/objects/libcrypto-shlib-obj_xref.o crypto/ocsp/libcrypto-shlib-ocsp_asn.o crypto/ocsp/libcrypto-shlib-ocsp_cl.o crypto/ocsp/libcrypto-shlib-ocsp_err.o crypto/ocsp/libcrypto-shlib-ocsp_ext.o crypto/ocsp/libcrypto-shlib-ocsp_ht.o crypto/ocsp/libcrypto-shlib-ocsp_lib.o crypto/ocsp/libcrypto-shlib-ocsp_prn.o crypto/ocsp/libcrypto-shlib-ocsp_srv.o crypto/ocsp/libcrypto-shlib-ocsp_vfy.o crypto/ocsp/libcrypto-shlib-v3_ocsp.o crypto/pem/libcrypto-shlib-pem_all.o crypto/pem/libcrypto-shlib-pem_err.o crypto/pem/libcrypto-shlib-pem_info.o crypto/pem/libcrypto-shlib-pem_lib.o crypto/pem/libcrypto-shlib-pem_oth.o crypto/pem/libcrypto-shlib-pem_pk8.o crypto/pem/libcrypto-shlib-pem_pkey.o crypto/pem/libcrypto-shlib-pem_sign.o crypto/pem/libcrypto-shlib-pem_x509.o crypto/pem/libcrypto-shlib-pem_xaux.o crypto/pem/libcrypto-shlib-pvkfmt.o crypto/pkcs12/libcrypto-shlib-p12_add.o crypto/pkcs12/libcrypto-shlib-p12_asn.o crypto/pkcs12/libcrypto-shlib-p12_attr.o crypto/pkcs12/libcrypto-shlib-p12_crpt.o crypto/pkcs12/libcrypto-shlib-p12_crt.o crypto/pkcs12/libcrypto-shlib-p12_decr.o crypto/pkcs12/libcrypto-shlib-p12_init.o crypto/pkcs12/libcrypto-shlib-p12_key.o crypto/pkcs12/libcrypto-shlib-p12_kiss.o crypto/pkcs12/libcrypto-shlib-p12_mutl.o crypto/pkcs12/libcrypto-shlib-p12_npas.o crypto/pkcs12/libcrypto-shlib-p12_p8d.o crypto/pkcs12/libcrypto-shlib-p12_p8e.o crypto/pkcs12/libcrypto-shlib-p12_sbag.o crypto/pkcs12/libcrypto-shlib-p12_utl.o crypto/pkcs12/libcrypto-shlib-pk12err.o crypto/pkcs7/libcrypto-shlib-bio_pk7.o crypto/pkcs7/libcrypto-shlib-pk7_asn1.o crypto/pkcs7/libcrypto-shlib-pk7_attr.o crypto/pkcs7/libcrypto-shlib-pk7_doit.o crypto/pkcs7/libcrypto-shlib-pk7_lib.o crypto/pkcs7/libcrypto-shlib-pk7_mime.o crypto/pkcs7/libcrypto-shlib-pk7_smime.o crypto/pkcs7/libcrypto-shlib-pkcs7err.o crypto/poly1305/libcrypto-shlib-poly1305-x86_64.o crypto/poly1305/libcrypto-shlib-poly1305.o crypto/poly1305/libcrypto-shlib-poly1305_ameth.o crypto/poly1305/libcrypto-shlib-poly1305_meth.o crypto/rand/libcrypto-shlib-drbg_ctr.o crypto/rand/libcrypto-shlib-drbg_hash.o crypto/rand/libcrypto-shlib-drbg_hmac.o crypto/rand/libcrypto-shlib-drbg_lib.o crypto/rand/libcrypto-shlib-rand_egd.o crypto/rand/libcrypto-shlib-rand_err.o crypto/rand/libcrypto-shlib-rand_lib.o crypto/rand/libcrypto-shlib-rand_unix.o crypto/rand/libcrypto-shlib-rand_vms.o crypto/rand/libcrypto-shlib-rand_win.o crypto/rand/libcrypto-shlib-randfile.o crypto/rc2/libcrypto-shlib-rc2_cbc.o crypto/rc2/libcrypto-shlib-rc2_ecb.o crypto/rc2/libcrypto-shlib-rc2_skey.o crypto/rc2/libcrypto-shlib-rc2cfb64.o crypto/rc2/libcrypto-shlib-rc2ofb64.o crypto/rc4/libcrypto-shlib-rc4-md5-x86_64.o crypto/rc4/libcrypto-shlib-rc4-x86_64.o crypto/ripemd/libcrypto-shlib-rmd_dgst.o crypto/ripemd/libcrypto-shlib-rmd_one.o crypto/rsa/libcrypto-shlib-rsa_ameth.o crypto/rsa/libcrypto-shlib-rsa_asn1.o crypto/rsa/libcrypto-shlib-rsa_chk.o crypto/rsa/libcrypto-shlib-rsa_crpt.o crypto/rsa/libcrypto-shlib-rsa_depr.o crypto/rsa/libcrypto-shlib-rsa_err.o crypto/rsa/libcrypto-shlib-rsa_gen.o crypto/rsa/libcrypto-shlib-rsa_lib.o crypto/rsa/libcrypto-shlib-rsa_meth.o crypto/rsa/libcrypto-shlib-rsa_mp.o crypto/rsa/libcrypto-shlib-rsa_none.o crypto/rsa/libcrypto-shlib-rsa_oaep.o crypto/rsa/libcrypto-shlib-rsa_ossl.o crypto/rsa/libcrypto-shlib-rsa_pk1.o crypto/rsa/libcrypto-shlib-rsa_pmeth.o crypto/rsa/libcrypto-shlib-rsa_prn.o crypto/rsa/libcrypto-shlib-rsa_pss.o crypto/rsa/libcrypto-shlib-rsa_saos.o crypto/rsa/libcrypto-shlib-rsa_sign.o crypto/rsa/libcrypto-shlib-rsa_ssl.o crypto/rsa/libcrypto-shlib-rsa_x931.o crypto/rsa/libcrypto-shlib-rsa_x931g.o crypto/seed/libcrypto-shlib-seed.o crypto/seed/libcrypto-shlib-seed_cbc.o crypto/seed/libcrypto-shlib-seed_cfb.o crypto/seed/libcrypto-shlib-seed_ecb.o crypto/seed/libcrypto-shlib-seed_ofb.o crypto/sha/libcrypto-shlib-keccak1600-x86_64.o crypto/sha/libcrypto-shlib-sha1-mb-x86_64.o crypto/sha/libcrypto-shlib-sha1-x86_64.o crypto/sha/libcrypto-shlib-sha1_one.o crypto/sha/libcrypto-shlib-sha1dgst.o crypto/sha/libcrypto-shlib-sha256-mb-x86_64.o crypto/sha/libcrypto-shlib-sha256-x86_64.o crypto/sha/libcrypto-shlib-sha256.o crypto/sha/libcrypto-shlib-sha512-x86_64.o crypto/sha/libcrypto-shlib-sha512.o crypto/siphash/libcrypto-shlib-siphash.o crypto/siphash/libcrypto-shlib-siphash_ameth.o crypto/siphash/libcrypto-shlib-siphash_meth.o crypto/sm2/libcrypto-shlib-sm2_crypt.o crypto/sm2/libcrypto-shlib-sm2_err.o crypto/sm2/libcrypto-shlib-sm2_pmeth.o crypto/sm2/libcrypto-shlib-sm2_sign.o crypto/sm3/libcrypto-shlib-m_sm3.o crypto/sm3/libcrypto-shlib-sm3.o crypto/sm4/libcrypto-shlib-sm4.o crypto/srp/libcrypto-shlib-srp_lib.o crypto/srp/libcrypto-shlib-srp_vfy.o crypto/stack/libcrypto-shlib-stack.o crypto/store/libcrypto-shlib-loader_file.o crypto/store/libcrypto-shlib-store_err.o crypto/store/libcrypto-shlib-store_init.o crypto/store/libcrypto-shlib-store_lib.o crypto/store/libcrypto-shlib-store_register.o crypto/store/libcrypto-shlib-store_strings.o crypto/ts/libcrypto-shlib-ts_asn1.o crypto/ts/libcrypto-shlib-ts_conf.o crypto/ts/libcrypto-shlib-ts_err.o crypto/ts/libcrypto-shlib-ts_lib.o crypto/ts/libcrypto-shlib-ts_req_print.o crypto/ts/libcrypto-shlib-ts_req_utils.o crypto/ts/libcrypto-shlib-ts_rsp_print.o crypto/ts/libcrypto-shlib-ts_rsp_sign.o crypto/ts/libcrypto-shlib-ts_rsp_utils.o crypto/ts/libcrypto-shlib-ts_rsp_verify.o crypto/ts/libcrypto-shlib-ts_verify_ctx.o crypto/txt_db/libcrypto-shlib-txt_db.o crypto/ui/libcrypto-shlib-ui_err.o crypto/ui/libcrypto-shlib-ui_lib.o crypto/ui/libcrypto-shlib-ui_null.o crypto/ui/libcrypto-shlib-ui_openssl.o crypto/ui/libcrypto-shlib-ui_util.o crypto/whrlpool/libcrypto-shlib-wp-x86_64.o crypto/whrlpool/libcrypto-shlib-wp_dgst.o crypto/x509/libcrypto-shlib-by_dir.o crypto/x509/libcrypto-shlib-by_file.o crypto/x509/libcrypto-shlib-t_crl.o crypto/x509/libcrypto-shlib-t_req.o crypto/x509/libcrypto-shlib-t_x509.o crypto/x509/libcrypto-shlib-x509_att.o crypto/x509/libcrypto-shlib-x509_cmp.o crypto/x509/libcrypto-shlib-x509_d2.o crypto/x509/libcrypto-shlib-x509_def.o crypto/x509/libcrypto-shlib-x509_err.o crypto/x509/libcrypto-shlib-x509_ext.o crypto/x509/libcrypto-shlib-x509_lu.o crypto/x509/libcrypto-shlib-x509_meth.o crypto/x509/libcrypto-shlib-x509_obj.o crypto/x509/libcrypto-shlib-x509_r2x.o crypto/x509/libcrypto-shlib-x509_req.o crypto/x509/libcrypto-shlib-x509_set.o crypto/x509/libcrypto-shlib-x509_trs.o crypto/x509/libcrypto-shlib-x509_txt.o crypto/x509/libcrypto-shlib-x509_v3.o crypto/x509/libcrypto-shlib-x509_vfy.o crypto/x509/libcrypto-shlib-x509_vpm.o crypto/x509/libcrypto-shlib-x509cset.o crypto/x509/libcrypto-shlib-x509name.o crypto/x509/libcrypto-shlib-x509rset.o crypto/x509/libcrypto-shlib-x509spki.o crypto/x509/libcrypto-shlib-x509type.o crypto/x509/libcrypto-shlib-x_all.o crypto/x509/libcrypto-shlib-x_attrib.o crypto/x509/libcrypto-shlib-x_crl.o crypto/x509/libcrypto-shlib-x_exten.o crypto/x509/libcrypto-shlib-x_name.o crypto/x509/libcrypto-shlib-x_pubkey.o crypto/x509/libcrypto-shlib-x_req.o crypto/x509/libcrypto-shlib-x_x509.o crypto/x509/libcrypto-shlib-x_x509a.o crypto/x509v3/libcrypto-shlib-pcy_cache.o crypto/x509v3/libcrypto-shlib-pcy_data.o crypto/x509v3/libcrypto-shlib-pcy_lib.o crypto/x509v3/libcrypto-shlib-pcy_map.o crypto/x509v3/libcrypto-shlib-pcy_node.o crypto/x509v3/libcrypto-shlib-pcy_tree.o crypto/x509v3/libcrypto-shlib-v3_addr.o crypto/x509v3/libcrypto-shlib-v3_admis.o crypto/x509v3/libcrypto-shlib-v3_akey.o crypto/x509v3/libcrypto-shlib-v3_akeya.o crypto/x509v3/libcrypto-shlib-v3_alt.o crypto/x509v3/libcrypto-shlib-v3_asid.o crypto/x509v3/libcrypto-shlib-v3_bcons.o crypto/x509v3/libcrypto-shlib-v3_bitst.o crypto/x509v3/libcrypto-shlib-v3_conf.o crypto/x509v3/libcrypto-shlib-v3_cpols.o crypto/x509v3/libcrypto-shlib-v3_crld.o crypto/x509v3/libcrypto-shlib-v3_enum.o crypto/x509v3/libcrypto-shlib-v3_extku.o crypto/x509v3/libcrypto-shlib-v3_genn.o crypto/x509v3/libcrypto-shlib-v3_ia5.o crypto/x509v3/libcrypto-shlib-v3_info.o crypto/x509v3/libcrypto-shlib-v3_int.o crypto/x509v3/libcrypto-shlib-v3_lib.o crypto/x509v3/libcrypto-shlib-v3_ncons.o crypto/x509v3/libcrypto-shlib-v3_pci.o crypto/x509v3/libcrypto-shlib-v3_pcia.o crypto/x509v3/libcrypto-shlib-v3_pcons.o crypto/x509v3/libcrypto-shlib-v3_pku.o crypto/x509v3/libcrypto-shlib-v3_pmaps.o crypto/x509v3/libcrypto-shlib-v3_prn.o crypto/x509v3/libcrypto-shlib-v3_purp.o crypto/x509v3/libcrypto-shlib-v3_skey.o crypto/x509v3/libcrypto-shlib-v3_sxnet.o crypto/x509v3/libcrypto-shlib-v3_tlsf.o crypto/x509v3/libcrypto-shlib-v3_utl.o crypto/x509v3/libcrypto-shlib-v3err.o \ -ldl -pthread ranlib libssl.a || echo Never mind. clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -c -o engines/padlock-dso-e_padlock-x86_64.o engines/e_padlock-x86_64.s clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_aes-bin-buildtest_aes.d.tmp -MT test/buildtest_aes-bin-buildtest_aes.o -c -o test/buildtest_aes-bin-buildtest_aes.o test/buildtest_aes.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_asn1-bin-buildtest_asn1.d.tmp -MT test/buildtest_asn1-bin-buildtest_asn1.o -c -o test/buildtest_asn1-bin-buildtest_asn1.o test/buildtest_asn1.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_asn1t-bin-buildtest_asn1t.d.tmp -MT test/buildtest_asn1t-bin-buildtest_asn1t.o -c -o test/buildtest_asn1t-bin-buildtest_asn1t.o test/buildtest_asn1t.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_async-bin-buildtest_async.d.tmp -MT test/buildtest_async-bin-buildtest_async.o -c -o test/buildtest_async-bin-buildtest_async.o test/buildtest_async.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_bio-bin-buildtest_bio.d.tmp -MT test/buildtest_bio-bin-buildtest_bio.o -c -o test/buildtest_bio-bin-buildtest_bio.o test/buildtest_bio.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_blowfish-bin-buildtest_blowfish.d.tmp -MT test/buildtest_blowfish-bin-buildtest_blowfish.o -c -o test/buildtest_blowfish-bin-buildtest_blowfish.o test/buildtest_blowfish.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_bn-bin-buildtest_bn.d.tmp -MT test/buildtest_bn-bin-buildtest_bn.o -c -o test/buildtest_bn-bin-buildtest_bn.o test/buildtest_bn.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_buffer-bin-buildtest_buffer.d.tmp -MT test/buildtest_buffer-bin-buildtest_buffer.o -c -o test/buildtest_buffer-bin-buildtest_buffer.o test/buildtest_buffer.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_camellia-bin-buildtest_camellia.d.tmp -MT test/buildtest_camellia-bin-buildtest_camellia.o -c -o test/buildtest_camellia-bin-buildtest_camellia.o test/buildtest_camellia.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_cast-bin-buildtest_cast.d.tmp -MT test/buildtest_cast-bin-buildtest_cast.o -c -o test/buildtest_cast-bin-buildtest_cast.o test/buildtest_cast.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_cmac-bin-buildtest_cmac.d.tmp -MT test/buildtest_cmac-bin-buildtest_cmac.o -c -o test/buildtest_cmac-bin-buildtest_cmac.o test/buildtest_cmac.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_cms-bin-buildtest_cms.d.tmp -MT test/buildtest_cms-bin-buildtest_cms.o -c -o test/buildtest_cms-bin-buildtest_cms.o test/buildtest_cms.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_comp-bin-buildtest_comp.d.tmp -MT test/buildtest_comp-bin-buildtest_comp.o -c -o test/buildtest_comp-bin-buildtest_comp.o test/buildtest_comp.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_conf-bin-buildtest_conf.d.tmp -MT test/buildtest_conf-bin-buildtest_conf.o -c -o test/buildtest_conf-bin-buildtest_conf.o test/buildtest_conf.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_conf_api-bin-buildtest_conf_api.d.tmp -MT test/buildtest_conf_api-bin-buildtest_conf_api.o -c -o test/buildtest_conf_api-bin-buildtest_conf_api.o test/buildtest_conf_api.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_crypto-bin-buildtest_crypto.d.tmp -MT test/buildtest_crypto-bin-buildtest_crypto.o -c -o test/buildtest_crypto-bin-buildtest_crypto.o test/buildtest_crypto.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_ct-bin-buildtest_ct.d.tmp -MT test/buildtest_ct-bin-buildtest_ct.o -c -o test/buildtest_ct-bin-buildtest_ct.o test/buildtest_ct.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_des-bin-buildtest_des.d.tmp -MT test/buildtest_des-bin-buildtest_des.o -c -o test/buildtest_des-bin-buildtest_des.o test/buildtest_des.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_dh-bin-buildtest_dh.d.tmp -MT test/buildtest_dh-bin-buildtest_dh.o -c -o test/buildtest_dh-bin-buildtest_dh.o test/buildtest_dh.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_dsa-bin-buildtest_dsa.d.tmp -MT test/buildtest_dsa-bin-buildtest_dsa.o -c -o test/buildtest_dsa-bin-buildtest_dsa.o test/buildtest_dsa.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_dtls1-bin-buildtest_dtls1.d.tmp -MT test/buildtest_dtls1-bin-buildtest_dtls1.o -c -o test/buildtest_dtls1-bin-buildtest_dtls1.o test/buildtest_dtls1.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_e_os2-bin-buildtest_e_os2.d.tmp -MT test/buildtest_e_os2-bin-buildtest_e_os2.o -c -o test/buildtest_e_os2-bin-buildtest_e_os2.o test/buildtest_e_os2.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_ebcdic-bin-buildtest_ebcdic.d.tmp -MT test/buildtest_ebcdic-bin-buildtest_ebcdic.o -c -o test/buildtest_ebcdic-bin-buildtest_ebcdic.o test/buildtest_ebcdic.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_ec-bin-buildtest_ec.d.tmp -MT test/buildtest_ec-bin-buildtest_ec.o -c -o test/buildtest_ec-bin-buildtest_ec.o test/buildtest_ec.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_ecdh-bin-buildtest_ecdh.d.tmp -MT test/buildtest_ecdh-bin-buildtest_ecdh.o -c -o test/buildtest_ecdh-bin-buildtest_ecdh.o test/buildtest_ecdh.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_ecdsa-bin-buildtest_ecdsa.d.tmp -MT test/buildtest_ecdsa-bin-buildtest_ecdsa.o -c -o test/buildtest_ecdsa-bin-buildtest_ecdsa.o test/buildtest_ecdsa.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_engine-bin-buildtest_engine.d.tmp -MT test/buildtest_engine-bin-buildtest_engine.o -c -o test/buildtest_engine-bin-buildtest_engine.o test/buildtest_engine.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_ess-bin-buildtest_ess.d.tmp -MT test/buildtest_ess-bin-buildtest_ess.o -c -o test/buildtest_ess-bin-buildtest_ess.o test/buildtest_ess.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_evp-bin-buildtest_evp.d.tmp -MT test/buildtest_evp-bin-buildtest_evp.o -c -o test/buildtest_evp-bin-buildtest_evp.o test/buildtest_evp.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_hmac-bin-buildtest_hmac.d.tmp -MT test/buildtest_hmac-bin-buildtest_hmac.o -c -o test/buildtest_hmac-bin-buildtest_hmac.o test/buildtest_hmac.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_idea-bin-buildtest_idea.d.tmp -MT test/buildtest_idea-bin-buildtest_idea.o -c -o test/buildtest_idea-bin-buildtest_idea.o test/buildtest_idea.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_kdf-bin-buildtest_kdf.d.tmp -MT test/buildtest_kdf-bin-buildtest_kdf.o -c -o test/buildtest_kdf-bin-buildtest_kdf.o test/buildtest_kdf.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wall -O0 -g -MMD -MF test/buildtest_lhash-bin-buildtest_lhash.d.tmp -MT test/buildtest_lhash-bin-buildtest_lhash.o -c -o test/buildtest_lhash-bin-buildtest_lhash.o test/buildtest_lhash.c In file included from test/buildtest_kdf.c:10: ../openssl/include/openssl/kdf.h:29:46: error: unknown type name 'va_list' int EVP_KDF_vctrl(EVP_KDF_CTX *ctx, int cmd, va_list args); ^ ../openssl/include/openssl/kdf.h:31:1: error: unknown type name 'size_t' size_t EVP_KDF_size(EVP_KDF_CTX *ctx); ^ ../openssl/include/openssl/kdf.h:32:58: error: unknown type name 'size_t' int EVP_KDF_derive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen); ^ 3 errors generated. Makefile:12596: recipe for target 'test/buildtest_kdf-bin-buildtest_kdf.o' failed make[1]: *** [test/buildtest_kdf-bin-buildtest_kdf.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make[1]: Leaving directory '/home/openssl/run-checker/no-stdio' Makefile:164: recipe for target 'all' failed make: *** [all] Error 2 From no-reply at appveyor.com Thu Feb 14 12:55:59 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 14 Feb 2019 12:55:59 +0000 Subject: [openssl-commits] Build failed: openssl master.22488 Message-ID: <20190214125559.1.3CECB6B482A3BDED@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 14 13:25:15 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 14 Feb 2019 13:25:15 +0000 Subject: [openssl-commits] Build completed: openssl master.22489 Message-ID: <20190214132515.1.ECAE12E3C9BE4229@appveyor.com> An HTML attachment was scrubbed... URL: From matt at openssl.org Thu Feb 14 14:04:23 2019 From: matt at openssl.org (Matt Caswell) Date: Thu, 14 Feb 2019 14:04:23 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550153063.064597.861.nullmailer@dev.openssl.org> The branch master has been updated via 3c83c5ba4f6502c708b7a5f55c98a10e312668da (commit) from f11ffa505f8a9345145a26a05bf77b012b6941bd (commit) - Log ----------------------------------------------------------------- commit 3c83c5ba4f6502c708b7a5f55c98a10e312668da Author: Sam Roberts Date: Mon Nov 26 13:58:52 2018 -0800 Ignore cipher suites when setting cipher list set_cipher_list() sets TLSv1.2 (and below) ciphers, and its success or failure should not depend on whether set_ciphersuites() has been used to setup TLSv1.3 ciphers. Reviewed-by: Paul Dale Reviewed-by: Ben Kaduk Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7759) ----------------------------------------------------------------------- Summary of changes: ssl/ssl_lib.c | 24 ++++++++++++++++++++++-- test/cipherlist_test.c | 35 ++++++++++++++++++++++++++++++++++ test/clienthellotest.c | 3 ++- test/ssltest_old.c | 51 +++++++++++++++++++++++++++++++++++++++++++++----- 4 files changed, 105 insertions(+), 8 deletions(-) diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index b001da7..322a438 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -2579,6 +2579,26 @@ STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx) return NULL; } +/* + * Distinguish between ciphers controlled by set_ciphersuite() and + * set_cipher_list() when counting. + */ +static int cipher_list_tls12_num(STACK_OF(SSL_CIPHER) *sk) +{ + int i, num = 0; + const SSL_CIPHER *c; + + if (sk == NULL) + return 0; + for (i = 0; i < sk_SSL_CIPHER_num(sk); ++i) { + c = sk_SSL_CIPHER_value(sk, i); + if (c->min_tls >= TLS1_3_VERSION) + continue; + num++; + } + return num; +} + /** specify the ciphers to be used by default by the SSL_CTX */ int SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str) { @@ -2596,7 +2616,7 @@ int SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str) */ if (sk == NULL) return 0; - else if (sk_SSL_CIPHER_num(sk) == 0) { + else if (cipher_list_tls12_num(sk) == 0) { SSLerr(SSL_F_SSL_CTX_SET_CIPHER_LIST, SSL_R_NO_CIPHER_MATCH); return 0; } @@ -2614,7 +2634,7 @@ int SSL_set_cipher_list(SSL *s, const char *str) /* see comment in SSL_CTX_set_cipher_list */ if (sk == NULL) return 0; - else if (sk_SSL_CIPHER_num(sk) == 0) { + else if (cipher_list_tls12_num(sk) == 0) { SSLerr(SSL_F_SSL_SET_CIPHER_LIST, SSL_R_NO_CIPHER_MATCH); return 0; } diff --git a/test/cipherlist_test.c b/test/cipherlist_test.c index 89ef1b1..b950411 100644 --- a/test/cipherlist_test.c +++ b/test/cipherlist_test.c @@ -215,9 +215,44 @@ static int test_default_cipherlist_explicit(void) return result; } +/* SSL_CTX_set_cipher_list() should fail if it clears all TLSv1.2 ciphers. */ +static int test_default_cipherlist_clear(void) +{ + SETUP_CIPHERLIST_TEST_FIXTURE(); + SSL *s = NULL; + + if (fixture == NULL) + return 0; + + if (!TEST_int_eq(SSL_CTX_set_cipher_list(fixture->server, "no-such"), 0)) + goto end; + + if (!TEST_int_eq(ERR_GET_REASON(ERR_get_error()), SSL_R_NO_CIPHER_MATCH)) + goto end; + + s = SSL_new(fixture->client); + + if (!TEST_ptr(s)) + goto end; + + if (!TEST_int_eq(SSL_set_cipher_list(s, "no-such"), 0)) + goto end; + + if (!TEST_int_eq(ERR_GET_REASON(ERR_get_error()), + SSL_R_NO_CIPHER_MATCH)) + goto end; + + result = 1; +end: + SSL_free(s); + tear_down(fixture); + return result; +} + int setup_tests(void) { ADD_TEST(test_default_cipherlist_implicit); ADD_TEST(test_default_cipherlist_explicit); + ADD_TEST(test_default_cipherlist_clear); return 1; } diff --git a/test/clienthellotest.c b/test/clienthellotest.c index 2c1110b..7fdb5bc 100644 --- a/test/clienthellotest.c +++ b/test/clienthellotest.c @@ -99,8 +99,9 @@ static int test_client_hello(int currtest) * ClientHello is already going to be quite long. To avoid getting one * that is too long for this test we use a restricted ciphersuite list */ - if (!TEST_true(SSL_CTX_set_cipher_list(ctx, ""))) + if (!TEST_false(SSL_CTX_set_cipher_list(ctx, ""))) goto end; + ERR_clear_error(); /* Fall through */ case TEST_ADD_PADDING: case TEST_PADDING_NOT_NEEDED: diff --git a/test/ssltest_old.c b/test/ssltest_old.c index f26bf85..390ca88 100644 --- a/test/ssltest_old.c +++ b/test/ssltest_old.c @@ -1382,11 +1382,52 @@ int main(int argc, char *argv[]) goto end; if (cipher != NULL) { - if (!SSL_CTX_set_cipher_list(c_ctx, cipher) - || !SSL_CTX_set_cipher_list(s_ctx, cipher) - || !SSL_CTX_set_cipher_list(s_ctx2, cipher)) { - ERR_print_errors(bio_err); - goto end; + if (strcmp(cipher, "") == 0) { + if (!SSL_CTX_set_cipher_list(c_ctx, cipher)) { + if (ERR_GET_REASON(ERR_peek_error()) == SSL_R_NO_CIPHER_MATCH) { + ERR_clear_error(); + } else { + ERR_print_errors(bio_err); + goto end; + } + } else { + /* Should have failed when clearing all TLSv1.2 ciphers. */ + fprintf(stderr, "CLEARING ALL TLSv1.2 CIPHERS SHOULD FAIL\n"); + goto end; + } + + if (!SSL_CTX_set_cipher_list(s_ctx, cipher)) { + if (ERR_GET_REASON(ERR_peek_error()) == SSL_R_NO_CIPHER_MATCH) { + ERR_clear_error(); + } else { + ERR_print_errors(bio_err); + goto end; + } + } else { + /* Should have failed when clearing all TLSv1.2 ciphers. */ + fprintf(stderr, "CLEARING ALL TLSv1.2 CIPHERS SHOULD FAIL\n"); + goto end; + } + + if (!SSL_CTX_set_cipher_list(s_ctx2, cipher)) { + if (ERR_GET_REASON(ERR_peek_error()) == SSL_R_NO_CIPHER_MATCH) { + ERR_clear_error(); + } else { + ERR_print_errors(bio_err); + goto end; + } + } else { + /* Should have failed when clearing all TLSv1.2 ciphers. */ + fprintf(stderr, "CLEARING ALL TLSv1.2 CIPHERS SHOULD FAIL\n"); + goto end; + } + } else { + if (!SSL_CTX_set_cipher_list(c_ctx, cipher) + || !SSL_CTX_set_cipher_list(s_ctx, cipher) + || !SSL_CTX_set_cipher_list(s_ctx2, cipher)) { + ERR_print_errors(bio_err); + goto end; + } } } if (ciphersuites != NULL) { From matt at openssl.org Thu Feb 14 14:04:38 2019 From: matt at openssl.org (Matt Caswell) Date: Thu, 14 Feb 2019 14:04:38 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550153078.733477.1717.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 1c31fe7eb093a8f07d32e910a46616209883cf84 (commit) from cd272eeee23b5866b281303550917287e78375c1 (commit) - Log ----------------------------------------------------------------- commit 1c31fe7eb093a8f07d32e910a46616209883cf84 Author: Sam Roberts Date: Mon Nov 26 13:58:52 2018 -0800 Ignore cipher suites when setting cipher list set_cipher_list() sets TLSv1.2 (and below) ciphers, and its success or failure should not depend on whether set_ciphersuites() has been used to setup TLSv1.3 ciphers. Reviewed-by: Paul Dale Reviewed-by: Ben Kaduk Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7759) (cherry picked from commit 3c83c5ba4f6502c708b7a5f55c98a10e312668da) ----------------------------------------------------------------------- Summary of changes: ssl/ssl_lib.c | 24 ++++++++++++++++++++++-- test/cipherlist_test.c | 35 ++++++++++++++++++++++++++++++++++ test/clienthellotest.c | 3 ++- test/ssltest_old.c | 51 +++++++++++++++++++++++++++++++++++++++++++++----- 4 files changed, 105 insertions(+), 8 deletions(-) diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 4b9e1d6..5bd2fcf 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -2508,6 +2508,26 @@ STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx) return NULL; } +/* + * Distinguish between ciphers controlled by set_ciphersuite() and + * set_cipher_list() when counting. + */ +static int cipher_list_tls12_num(STACK_OF(SSL_CIPHER) *sk) +{ + int i, num = 0; + const SSL_CIPHER *c; + + if (sk == NULL) + return 0; + for (i = 0; i < sk_SSL_CIPHER_num(sk); ++i) { + c = sk_SSL_CIPHER_value(sk, i); + if (c->min_tls >= TLS1_3_VERSION) + continue; + num++; + } + return num; +} + /** specify the ciphers to be used by default by the SSL_CTX */ int SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str) { @@ -2525,7 +2545,7 @@ int SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str) */ if (sk == NULL) return 0; - else if (sk_SSL_CIPHER_num(sk) == 0) { + else if (cipher_list_tls12_num(sk) == 0) { SSLerr(SSL_F_SSL_CTX_SET_CIPHER_LIST, SSL_R_NO_CIPHER_MATCH); return 0; } @@ -2543,7 +2563,7 @@ int SSL_set_cipher_list(SSL *s, const char *str) /* see comment in SSL_CTX_set_cipher_list */ if (sk == NULL) return 0; - else if (sk_SSL_CIPHER_num(sk) == 0) { + else if (cipher_list_tls12_num(sk) == 0) { SSLerr(SSL_F_SSL_SET_CIPHER_LIST, SSL_R_NO_CIPHER_MATCH); return 0; } diff --git a/test/cipherlist_test.c b/test/cipherlist_test.c index 5023c1c..a22f60b 100644 --- a/test/cipherlist_test.c +++ b/test/cipherlist_test.c @@ -215,9 +215,44 @@ static int test_default_cipherlist_explicit(void) return result; } +/* SSL_CTX_set_cipher_list() should fail if it clears all TLSv1.2 ciphers. */ +static int test_default_cipherlist_clear(void) +{ + SETUP_CIPHERLIST_TEST_FIXTURE(); + SSL *s = NULL; + + if (fixture == NULL) + return 0; + + if (!TEST_int_eq(SSL_CTX_set_cipher_list(fixture->server, "no-such"), 0)) + goto end; + + if (!TEST_int_eq(ERR_GET_REASON(ERR_get_error()), SSL_R_NO_CIPHER_MATCH)) + goto end; + + s = SSL_new(fixture->client); + + if (!TEST_ptr(s)) + goto end; + + if (!TEST_int_eq(SSL_set_cipher_list(s, "no-such"), 0)) + goto end; + + if (!TEST_int_eq(ERR_GET_REASON(ERR_get_error()), + SSL_R_NO_CIPHER_MATCH)) + goto end; + + result = 1; +end: + SSL_free(s); + tear_down(fixture); + return result; +} + int setup_tests(void) { ADD_TEST(test_default_cipherlist_implicit); ADD_TEST(test_default_cipherlist_explicit); + ADD_TEST(test_default_cipherlist_clear); return 1; } diff --git a/test/clienthellotest.c b/test/clienthellotest.c index 10e3b1b..1045dd6 100644 --- a/test/clienthellotest.c +++ b/test/clienthellotest.c @@ -99,8 +99,9 @@ static int test_client_hello(int currtest) * ClientHello is already going to be quite long. To avoid getting one * that is too long for this test we use a restricted ciphersuite list */ - if (!TEST_true(SSL_CTX_set_cipher_list(ctx, ""))) + if (!TEST_false(SSL_CTX_set_cipher_list(ctx, ""))) goto end; + ERR_clear_error(); /* Fall through */ case TEST_ADD_PADDING: case TEST_PADDING_NOT_NEEDED: diff --git a/test/ssltest_old.c b/test/ssltest_old.c index 9297077..372035a 100644 --- a/test/ssltest_old.c +++ b/test/ssltest_old.c @@ -1382,11 +1382,52 @@ int main(int argc, char *argv[]) goto end; if (cipher != NULL) { - if (!SSL_CTX_set_cipher_list(c_ctx, cipher) - || !SSL_CTX_set_cipher_list(s_ctx, cipher) - || !SSL_CTX_set_cipher_list(s_ctx2, cipher)) { - ERR_print_errors(bio_err); - goto end; + if (strcmp(cipher, "") == 0) { + if (!SSL_CTX_set_cipher_list(c_ctx, cipher)) { + if (ERR_GET_REASON(ERR_peek_error()) == SSL_R_NO_CIPHER_MATCH) { + ERR_clear_error(); + } else { + ERR_print_errors(bio_err); + goto end; + } + } else { + /* Should have failed when clearing all TLSv1.2 ciphers. */ + fprintf(stderr, "CLEARING ALL TLSv1.2 CIPHERS SHOULD FAIL\n"); + goto end; + } + + if (!SSL_CTX_set_cipher_list(s_ctx, cipher)) { + if (ERR_GET_REASON(ERR_peek_error()) == SSL_R_NO_CIPHER_MATCH) { + ERR_clear_error(); + } else { + ERR_print_errors(bio_err); + goto end; + } + } else { + /* Should have failed when clearing all TLSv1.2 ciphers. */ + fprintf(stderr, "CLEARING ALL TLSv1.2 CIPHERS SHOULD FAIL\n"); + goto end; + } + + if (!SSL_CTX_set_cipher_list(s_ctx2, cipher)) { + if (ERR_GET_REASON(ERR_peek_error()) == SSL_R_NO_CIPHER_MATCH) { + ERR_clear_error(); + } else { + ERR_print_errors(bio_err); + goto end; + } + } else { + /* Should have failed when clearing all TLSv1.2 ciphers. */ + fprintf(stderr, "CLEARING ALL TLSv1.2 CIPHERS SHOULD FAIL\n"); + goto end; + } + } else { + if (!SSL_CTX_set_cipher_list(c_ctx, cipher) + || !SSL_CTX_set_cipher_list(s_ctx, cipher) + || !SSL_CTX_set_cipher_list(s_ctx2, cipher)) { + ERR_print_errors(bio_err); + goto end; + } } } if (ciphersuites != NULL) { From matt at openssl.org Thu Feb 14 16:31:14 2019 From: matt at openssl.org (Matt Caswell) Date: Thu, 14 Feb 2019 16:31:14 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550161874.762553.17368.nullmailer@dev.openssl.org> The branch master has been updated via 4af5836b55442f31795eff6c8c81ea7a1b8cf94b (commit) from 3c83c5ba4f6502c708b7a5f55c98a10e312668da (commit) - Log ----------------------------------------------------------------- commit 4af5836b55442f31795eff6c8c81ea7a1b8cf94b Author: Matt Caswell Date: Sun Jan 27 11:00:16 2019 +0000 Don't signal SSL_CB_HANDSHAKE_START for TLSv1.3 post-handshake messages The original 1.1.1 design was to use SSL_CB_HANDSHAKE_START and SSL_CB_HANDSHAKE_DONE to signal start/end of a post-handshake message exchange in TLSv1.3. Unfortunately experience has shown that this confuses some applications who mistake it for a TLSv1.2 renegotiation. This means that KeyUpdate messages are not handled properly. This commit removes the use of SSL_CB_HANDSHAKE_START and SSL_CB_HANDSHAKE_DONE to signal the start/end of a post-handshake message exchange. Individual post-handshake messages are still signalled in the normal way. This is a potentially breaking change if there are any applications already written that expect to see these TLSv1.3 events. However, without it, KeyUpdate is not currently usable for many applications. Fixes #8069 Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8096) ----------------------------------------------------------------------- Summary of changes: CHANGES | 13 +++++++++ doc/man3/SSL_CTX_set_info_callback.pod | 14 ++++------ ssl/statem/statem.c | 6 +++-- ssl/statem/statem_lib.c | 11 +++++--- ssl/statem/statem_srvr.c | 19 ------------- test/sslapitest.c | 49 +++++++++++++++------------------- 6 files changed, 51 insertions(+), 61 deletions(-) diff --git a/CHANGES b/CHANGES index d9a2e1b..2fbe89f 100644 --- a/CHANGES +++ b/CHANGES @@ -119,6 +119,19 @@ applications with zero-copy system calls such as sendfile and splice. [Boris Pismenny] + Changes between 1.1.1a and 1.1.1b [xx XXX xxxx] + + *) Change the info callback signals for the start and end of a post-handshake + message exchange in TLSv1.3. In 1.1.1/1.1.1a we used SSL_CB_HANDSHAKE_START + and SSL_CB_HANDSHAKE_DONE. Experience has shown that many applications get + confused by this and assume that a TLSv1.2 renegotiation has started. This + can break KeyUpdate handling. Instead we no longer signal the start and end + of a post handshake message exchange (although the messages themselves are + still signalled). This could break some applications that were expecting + the old signals. However without this KeyUpdate is not usable for many + applications. + [Matt Caswell] + Changes between 1.1.1 and 1.1.1a [20 Nov 2018] *) Timing vulnerability in DSA signature generation diff --git a/doc/man3/SSL_CTX_set_info_callback.pod b/doc/man3/SSL_CTX_set_info_callback.pod index cb8f996..3248e10 100644 --- a/doc/man3/SSL_CTX_set_info_callback.pod +++ b/doc/man3/SSL_CTX_set_info_callback.pod @@ -92,17 +92,13 @@ Callback has been called due to an alert being sent or received. =item SSL_CB_HANDSHAKE_START -Callback has been called because a new handshake is started. In TLSv1.3 this is -also used for the start of post-handshake message exchanges such as for the -exchange of session tickets, or for key updates. It also occurs when resuming a -handshake following a pause to handle early data. +Callback has been called because a new handshake is started. It also occurs when +resuming a handshake following a pause to handle early data. -=item SSL_CB_HANDSHAKE_DONE 0x20 +=item SSL_CB_HANDSHAKE_DONE -Callback has been called because a handshake is finished. In TLSv1.3 this is -also used at the end of an exchange of post-handshake messages such as for -session tickets or key updates. It also occurs if the handshake is paused to -allow the exchange of early data. +Callback has been called because a handshake is finished. It also occurs if the +handshake is paused to allow the exchange of early data. =back diff --git a/ssl/statem/statem.c b/ssl/statem/statem.c index ebe471b..24c7e94 100644 --- a/ssl/statem/statem.c +++ b/ssl/statem/statem.c @@ -342,8 +342,10 @@ static int state_machine(SSL *s, int server) } s->server = server; - if (cb != NULL) - cb(s, SSL_CB_HANDSHAKE_START, 1); + if (cb != NULL) { + if (SSL_IS_FIRST_HANDSHAKE(s) || !SSL_IS_TLS13(s)) + cb(s, SSL_CB_HANDSHAKE_START, 1); + } /* * Fatal errors in this block don't send an alert because we have diff --git a/ssl/statem/statem_lib.c b/ssl/statem/statem_lib.c index 2f78a3f..8a7ada8 100644 --- a/ssl/statem/statem_lib.c +++ b/ssl/statem/statem_lib.c @@ -1030,6 +1030,7 @@ unsigned long ssl3_output_cert_chain(SSL *s, WPACKET *pkt, CERT_PKEY *cpk) WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs, int stop) { void (*cb) (const SSL *ssl, int type, int val) = NULL; + int cleanuphand = s->statem.cleanuphand; if (clearbufs) { if (!SSL_IS_DTLS(s)) { @@ -1056,7 +1057,7 @@ WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs, int stop) * Only set if there was a Finished message and this isn't after a TLSv1.3 * post handshake exchange */ - if (s->statem.cleanuphand) { + if (cleanuphand) { /* skipped if we just sent a HelloRequest */ s->renegotiate = 0; s->new_session = 0; @@ -1116,8 +1117,12 @@ WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs, int stop) /* The callback may expect us to not be in init at handshake done */ ossl_statem_set_in_init(s, 0); - if (cb != NULL) - cb(s, SSL_CB_HANDSHAKE_DONE, 1); + if (cb != NULL) { + if (cleanuphand + || !SSL_IS_TLS13(s) + || SSL_IS_FIRST_HANDSHAKE(s)) + cb(s, SSL_CB_HANDSHAKE_DONE, 1); + } if (!stop) { /* If we've got more work to do we go back into init */ diff --git a/ssl/statem/statem_srvr.c b/ssl/statem/statem_srvr.c index f76568c..bf1819d 100644 --- a/ssl/statem/statem_srvr.c +++ b/ssl/statem/statem_srvr.c @@ -4040,7 +4040,6 @@ int tls_construct_new_session_ticket(SSL *s, WPACKET *pkt) uint64_t nonce; static const unsigned char nonce_label[] = "resumption"; const EVP_MD *md = ssl_handshake_md(s); - void (*cb) (const SSL *ssl, int type, int val) = NULL; int hashleni = EVP_MD_size(md); /* Ensure cast to size_t is safe */ @@ -4052,24 +4051,6 @@ int tls_construct_new_session_ticket(SSL *s, WPACKET *pkt) } hashlen = (size_t)hashleni; - if (s->info_callback != NULL) - cb = s->info_callback; - else if (s->ctx->info_callback != NULL) - cb = s->ctx->info_callback; - - if (cb != NULL) { - /* - * We don't start and stop the handshake in between each ticket when - * sending more than one - but it should appear that way to the info - * callback. - */ - if (s->sent_tickets != 0) { - ossl_statem_set_in_init(s, 0); - cb(s, SSL_CB_HANDSHAKE_DONE, 1); - ossl_statem_set_in_init(s, 1); - } - cb(s, SSL_CB_HANDSHAKE_START, 1); - } /* * If we already sent one NewSessionTicket, or we resumed then * s->session may already be in a cache and so we must not modify it. diff --git a/test/sslapitest.c b/test/sslapitest.c index 6b44c16..02eb1fe 100644 --- a/test/sslapitest.c +++ b/test/sslapitest.c @@ -4919,18 +4919,14 @@ static struct info_cb_states_st { {SSL_CB_LOOP, "TWCCS"}, {SSL_CB_LOOP, "TWEE"}, {SSL_CB_LOOP, "TWSC"}, {SSL_CB_LOOP, "TRSCV"}, {SSL_CB_LOOP, "TWFIN"}, {SSL_CB_LOOP, "TED"}, {SSL_CB_EXIT, NULL}, {SSL_CB_LOOP, "TED"}, {SSL_CB_LOOP, "TRFIN"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, - {SSL_CB_LOOP, "TWST"}, {SSL_CB_HANDSHAKE_DONE, NULL}, - {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "TWST"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, - {SSL_CB_ALERT, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, - {SSL_CB_LOOP, "PINIT "}, {SSL_CB_LOOP, "PINIT "}, {SSL_CB_LOOP, "TRCH"}, - {SSL_CB_LOOP, "TWSH"}, {SSL_CB_LOOP, "TWCCS"}, {SSL_CB_LOOP, "TWEE"}, - {SSL_CB_LOOP, "TWFIN"}, {SSL_CB_LOOP, "TED"}, {SSL_CB_EXIT, NULL}, - {SSL_CB_LOOP, "TED"}, {SSL_CB_LOOP, "TRFIN"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, - {SSL_CB_LOOP, "TWST"}, {SSL_CB_HANDSHAKE_DONE, NULL}, - {SSL_CB_EXIT, NULL}, {0, NULL}, + {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_LOOP, "TWST"}, + {SSL_CB_LOOP, "TWST"}, {SSL_CB_EXIT, NULL}, {SSL_CB_ALERT, NULL}, + {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "PINIT "}, + {SSL_CB_LOOP, "PINIT "}, {SSL_CB_LOOP, "TRCH"}, {SSL_CB_LOOP, "TWSH"}, + {SSL_CB_LOOP, "TWCCS"}, {SSL_CB_LOOP, "TWEE"}, {SSL_CB_LOOP, "TWFIN"}, + {SSL_CB_LOOP, "TED"}, {SSL_CB_EXIT, NULL}, {SSL_CB_LOOP, "TED"}, + {SSL_CB_LOOP, "TRFIN"}, {SSL_CB_HANDSHAKE_DONE, NULL}, + {SSL_CB_LOOP, "TWST"}, {SSL_CB_EXIT, NULL}, {0, NULL}, }, { /* TLSv1.3 client followed by resumption */ {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "PINIT "}, @@ -4938,20 +4934,16 @@ static struct info_cb_states_st { {SSL_CB_LOOP, "TRSH"}, {SSL_CB_LOOP, "TREE"}, {SSL_CB_LOOP, "TRSC"}, {SSL_CB_LOOP, "TRSCV"}, {SSL_CB_LOOP, "TRFIN"}, {SSL_CB_LOOP, "TWCCS"}, {SSL_CB_LOOP, "TWFIN"}, {SSL_CB_HANDSHAKE_DONE, NULL}, - {SSL_CB_EXIT, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, - {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "TRST"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, - {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "SSLOK "}, - {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "TRST"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, + {SSL_CB_EXIT, NULL}, {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "SSLOK "}, + {SSL_CB_LOOP, "TRST"}, {SSL_CB_EXIT, NULL}, {SSL_CB_LOOP, "SSLOK "}, + {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "TRST"}, {SSL_CB_EXIT, NULL}, {SSL_CB_ALERT, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "PINIT "}, {SSL_CB_LOOP, "TWCH"}, {SSL_CB_EXIT, NULL}, {SSL_CB_LOOP, "TWCH"}, {SSL_CB_LOOP, "TRSH"}, {SSL_CB_LOOP, "TREE"}, {SSL_CB_LOOP, "TRFIN"}, {SSL_CB_LOOP, "TWCCS"}, {SSL_CB_LOOP, "TWFIN"}, {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, - {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "SSLOK "}, - {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "TRST"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, {0, NULL}, + {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "TRST"}, + {SSL_CB_EXIT, NULL}, {0, NULL}, }, { /* TLSv1.3 server, early_data */ {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "PINIT "}, @@ -4960,8 +4952,7 @@ static struct info_cb_states_st { {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "TED"}, {SSL_CB_LOOP, "TED"}, {SSL_CB_LOOP, "TWEOED"}, {SSL_CB_LOOP, "TRFIN"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, - {SSL_CB_LOOP, "TWST"}, {SSL_CB_HANDSHAKE_DONE, NULL}, + {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_LOOP, "TWST"}, {SSL_CB_EXIT, NULL}, {0, NULL}, }, { /* TLSv1.3 client, early_data */ @@ -4972,9 +4963,8 @@ static struct info_cb_states_st { {SSL_CB_LOOP, "TED"}, {SSL_CB_LOOP, "TRSH"}, {SSL_CB_LOOP, "TREE"}, {SSL_CB_LOOP, "TRFIN"}, {SSL_CB_LOOP, "TPEDE"}, {SSL_CB_LOOP, "TWEOED"}, {SSL_CB_LOOP, "TWFIN"}, {SSL_CB_HANDSHAKE_DONE, NULL}, - {SSL_CB_EXIT, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, - {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "TRST"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, {0, NULL}, + {SSL_CB_EXIT, NULL}, {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "SSLOK "}, + {SSL_CB_LOOP, "TRST"}, {SSL_CB_EXIT, NULL}, {0, NULL}, }, { {0, NULL}, } @@ -5013,8 +5003,11 @@ static void sslapi_info_callback(const SSL *s, int where, int ret) return; } - /* Check that, if we've got SSL_CB_HANDSHAKE_DONE we are not in init */ - if ((where & SSL_CB_HANDSHAKE_DONE) && SSL_in_init((SSL *)s) != 0) { + /* + * Check that, if we've got SSL_CB_HANDSHAKE_DONE we are not in init + */ + if ((where & SSL_CB_HANDSHAKE_DONE) + && SSL_in_init((SSL *)s) != 0) { info_cb_failed = 1; return; } From matt at openssl.org Thu Feb 14 16:31:29 2019 From: matt at openssl.org (Matt Caswell) Date: Thu, 14 Feb 2019 16:31:29 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550161889.705072.18338.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 37857e9b5258da148e5d3699b6acdf8787417eb2 (commit) from 1c31fe7eb093a8f07d32e910a46616209883cf84 (commit) - Log ----------------------------------------------------------------- commit 37857e9b5258da148e5d3699b6acdf8787417eb2 Author: Matt Caswell Date: Sun Jan 27 11:00:16 2019 +0000 Don't signal SSL_CB_HANDSHAKE_START for TLSv1.3 post-handshake messages The original 1.1.1 design was to use SSL_CB_HANDSHAKE_START and SSL_CB_HANDSHAKE_DONE to signal start/end of a post-handshake message exchange in TLSv1.3. Unfortunately experience has shown that this confuses some applications who mistake it for a TLSv1.2 renegotiation. This means that KeyUpdate messages are not handled properly. This commit removes the use of SSL_CB_HANDSHAKE_START and SSL_CB_HANDSHAKE_DONE to signal the start/end of a post-handshake message exchange. Individual post-handshake messages are still signalled in the normal way. This is a potentially breaking change if there are any applications already written that expect to see these TLSv1.3 events. However, without it, KeyUpdate is not currently usable for many applications. Fixes #8069 Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8096) (cherry picked from commit 4af5836b55442f31795eff6c8c81ea7a1b8cf94b) ----------------------------------------------------------------------- Summary of changes: CHANGES | 11 ++++++++ doc/man3/SSL_CTX_set_info_callback.pod | 14 ++++------ ssl/statem/statem.c | 6 +++-- ssl/statem/statem_lib.c | 11 +++++--- ssl/statem/statem_srvr.c | 19 ------------- test/sslapitest.c | 49 +++++++++++++++------------------- 6 files changed, 49 insertions(+), 61 deletions(-) diff --git a/CHANGES b/CHANGES index 81e3f84..ff77c1b 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,17 @@ Changes between 1.1.1a and 1.1.1b [xx XXX xxxx] + *) Change the info callback signals for the start and end of a post-handshake + message exchange in TLSv1.3. In 1.1.1/1.1.1a we used SSL_CB_HANDSHAKE_START + and SSL_CB_HANDSHAKE_DONE. Experience has shown that many applications get + confused by this and assume that a TLSv1.2 renegotiation has started. This + can break KeyUpdate handling. Instead we no longer signal the start and end + of a post handshake message exchange (although the messages themselves are + still signalled). This could break some applications that were expecting + the old signals. However without this KeyUpdate is not usable for many + applications. + [Matt Caswell] + *) Fix a bug in the computation of the endpoint-pair shared secret used by DTLS over SCTP. This breaks interoperability with older versions of OpenSSL like OpenSSL 1.1.0 and OpenSSL 1.0.2. There is a runtime diff --git a/doc/man3/SSL_CTX_set_info_callback.pod b/doc/man3/SSL_CTX_set_info_callback.pod index f01ca66..2dc82ca 100644 --- a/doc/man3/SSL_CTX_set_info_callback.pod +++ b/doc/man3/SSL_CTX_set_info_callback.pod @@ -92,17 +92,13 @@ Callback has been called due to an alert being sent or received. =item SSL_CB_HANDSHAKE_START -Callback has been called because a new handshake is started. In TLSv1.3 this is -also used for the start of post-handshake message exchanges such as for the -exchange of session tickets, or for key updates. It also occurs when resuming a -handshake following a pause to handle early data. +Callback has been called because a new handshake is started. It also occurs when +resuming a handshake following a pause to handle early data. -=item SSL_CB_HANDSHAKE_DONE 0x20 +=item SSL_CB_HANDSHAKE_DONE -Callback has been called because a handshake is finished. In TLSv1.3 this is -also used at the end of an exchange of post-handshake messages such as for -session tickets or key updates. It also occurs if the handshake is paused to -allow the exchange of early data. +Callback has been called because a handshake is finished. It also occurs if the +handshake is paused to allow the exchange of early data. =back diff --git a/ssl/statem/statem.c b/ssl/statem/statem.c index f76c0e4..f418676 100644 --- a/ssl/statem/statem.c +++ b/ssl/statem/statem.c @@ -342,8 +342,10 @@ static int state_machine(SSL *s, int server) } s->server = server; - if (cb != NULL) - cb(s, SSL_CB_HANDSHAKE_START, 1); + if (cb != NULL) { + if (SSL_IS_FIRST_HANDSHAKE(s) || !SSL_IS_TLS13(s)) + cb(s, SSL_CB_HANDSHAKE_START, 1); + } /* * Fatal errors in this block don't send an alert because we have diff --git a/ssl/statem/statem_lib.c b/ssl/statem/statem_lib.c index cf62c8f..15d0148 100644 --- a/ssl/statem/statem_lib.c +++ b/ssl/statem/statem_lib.c @@ -1030,6 +1030,7 @@ unsigned long ssl3_output_cert_chain(SSL *s, WPACKET *pkt, CERT_PKEY *cpk) WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs, int stop) { void (*cb) (const SSL *ssl, int type, int val) = NULL; + int cleanuphand = s->statem.cleanuphand; if (clearbufs) { if (!SSL_IS_DTLS(s)) { @@ -1056,7 +1057,7 @@ WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs, int stop) * Only set if there was a Finished message and this isn't after a TLSv1.3 * post handshake exchange */ - if (s->statem.cleanuphand) { + if (cleanuphand) { /* skipped if we just sent a HelloRequest */ s->renegotiate = 0; s->new_session = 0; @@ -1116,8 +1117,12 @@ WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs, int stop) /* The callback may expect us to not be in init at handshake done */ ossl_statem_set_in_init(s, 0); - if (cb != NULL) - cb(s, SSL_CB_HANDSHAKE_DONE, 1); + if (cb != NULL) { + if (cleanuphand + || !SSL_IS_TLS13(s) + || SSL_IS_FIRST_HANDSHAKE(s)) + cb(s, SSL_CB_HANDSHAKE_DONE, 1); + } if (!stop) { /* If we've got more work to do we go back into init */ diff --git a/ssl/statem/statem_srvr.c b/ssl/statem/statem_srvr.c index 91c1120..0eab35c 100644 --- a/ssl/statem/statem_srvr.c +++ b/ssl/statem/statem_srvr.c @@ -4040,7 +4040,6 @@ int tls_construct_new_session_ticket(SSL *s, WPACKET *pkt) uint64_t nonce; static const unsigned char nonce_label[] = "resumption"; const EVP_MD *md = ssl_handshake_md(s); - void (*cb) (const SSL *ssl, int type, int val) = NULL; int hashleni = EVP_MD_size(md); /* Ensure cast to size_t is safe */ @@ -4052,24 +4051,6 @@ int tls_construct_new_session_ticket(SSL *s, WPACKET *pkt) } hashlen = (size_t)hashleni; - if (s->info_callback != NULL) - cb = s->info_callback; - else if (s->ctx->info_callback != NULL) - cb = s->ctx->info_callback; - - if (cb != NULL) { - /* - * We don't start and stop the handshake in between each ticket when - * sending more than one - but it should appear that way to the info - * callback. - */ - if (s->sent_tickets != 0) { - ossl_statem_set_in_init(s, 0); - cb(s, SSL_CB_HANDSHAKE_DONE, 1); - ossl_statem_set_in_init(s, 1); - } - cb(s, SSL_CB_HANDSHAKE_START, 1); - } /* * If we already sent one NewSessionTicket, or we resumed then * s->session may already be in a cache and so we must not modify it. diff --git a/test/sslapitest.c b/test/sslapitest.c index 3e84694..b3aa563 100644 --- a/test/sslapitest.c +++ b/test/sslapitest.c @@ -4734,18 +4734,14 @@ static struct info_cb_states_st { {SSL_CB_LOOP, "TWCCS"}, {SSL_CB_LOOP, "TWEE"}, {SSL_CB_LOOP, "TWSC"}, {SSL_CB_LOOP, "TRSCV"}, {SSL_CB_LOOP, "TWFIN"}, {SSL_CB_LOOP, "TED"}, {SSL_CB_EXIT, NULL}, {SSL_CB_LOOP, "TED"}, {SSL_CB_LOOP, "TRFIN"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, - {SSL_CB_LOOP, "TWST"}, {SSL_CB_HANDSHAKE_DONE, NULL}, - {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "TWST"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, - {SSL_CB_ALERT, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, - {SSL_CB_LOOP, "PINIT "}, {SSL_CB_LOOP, "PINIT "}, {SSL_CB_LOOP, "TRCH"}, - {SSL_CB_LOOP, "TWSH"}, {SSL_CB_LOOP, "TWCCS"}, {SSL_CB_LOOP, "TWEE"}, - {SSL_CB_LOOP, "TWFIN"}, {SSL_CB_LOOP, "TED"}, {SSL_CB_EXIT, NULL}, - {SSL_CB_LOOP, "TED"}, {SSL_CB_LOOP, "TRFIN"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, - {SSL_CB_LOOP, "TWST"}, {SSL_CB_HANDSHAKE_DONE, NULL}, - {SSL_CB_EXIT, NULL}, {0, NULL}, + {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_LOOP, "TWST"}, + {SSL_CB_LOOP, "TWST"}, {SSL_CB_EXIT, NULL}, {SSL_CB_ALERT, NULL}, + {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "PINIT "}, + {SSL_CB_LOOP, "PINIT "}, {SSL_CB_LOOP, "TRCH"}, {SSL_CB_LOOP, "TWSH"}, + {SSL_CB_LOOP, "TWCCS"}, {SSL_CB_LOOP, "TWEE"}, {SSL_CB_LOOP, "TWFIN"}, + {SSL_CB_LOOP, "TED"}, {SSL_CB_EXIT, NULL}, {SSL_CB_LOOP, "TED"}, + {SSL_CB_LOOP, "TRFIN"}, {SSL_CB_HANDSHAKE_DONE, NULL}, + {SSL_CB_LOOP, "TWST"}, {SSL_CB_EXIT, NULL}, {0, NULL}, }, { /* TLSv1.3 client followed by resumption */ {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "PINIT "}, @@ -4753,20 +4749,16 @@ static struct info_cb_states_st { {SSL_CB_LOOP, "TRSH"}, {SSL_CB_LOOP, "TREE"}, {SSL_CB_LOOP, "TRSC"}, {SSL_CB_LOOP, "TRSCV"}, {SSL_CB_LOOP, "TRFIN"}, {SSL_CB_LOOP, "TWCCS"}, {SSL_CB_LOOP, "TWFIN"}, {SSL_CB_HANDSHAKE_DONE, NULL}, - {SSL_CB_EXIT, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, - {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "TRST"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, - {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "SSLOK "}, - {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "TRST"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, + {SSL_CB_EXIT, NULL}, {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "SSLOK "}, + {SSL_CB_LOOP, "TRST"}, {SSL_CB_EXIT, NULL}, {SSL_CB_LOOP, "SSLOK "}, + {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "TRST"}, {SSL_CB_EXIT, NULL}, {SSL_CB_ALERT, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "PINIT "}, {SSL_CB_LOOP, "TWCH"}, {SSL_CB_EXIT, NULL}, {SSL_CB_LOOP, "TWCH"}, {SSL_CB_LOOP, "TRSH"}, {SSL_CB_LOOP, "TREE"}, {SSL_CB_LOOP, "TRFIN"}, {SSL_CB_LOOP, "TWCCS"}, {SSL_CB_LOOP, "TWFIN"}, {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, - {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "SSLOK "}, - {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "TRST"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, {0, NULL}, + {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "TRST"}, + {SSL_CB_EXIT, NULL}, {0, NULL}, }, { /* TLSv1.3 server, early_data */ {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "PINIT "}, @@ -4775,8 +4767,7 @@ static struct info_cb_states_st { {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, {SSL_CB_LOOP, "TED"}, {SSL_CB_LOOP, "TED"}, {SSL_CB_LOOP, "TWEOED"}, {SSL_CB_LOOP, "TRFIN"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, - {SSL_CB_LOOP, "TWST"}, {SSL_CB_HANDSHAKE_DONE, NULL}, + {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_LOOP, "TWST"}, {SSL_CB_EXIT, NULL}, {0, NULL}, }, { /* TLSv1.3 client, early_data */ @@ -4787,9 +4778,8 @@ static struct info_cb_states_st { {SSL_CB_LOOP, "TED"}, {SSL_CB_LOOP, "TRSH"}, {SSL_CB_LOOP, "TREE"}, {SSL_CB_LOOP, "TRFIN"}, {SSL_CB_LOOP, "TPEDE"}, {SSL_CB_LOOP, "TWEOED"}, {SSL_CB_LOOP, "TWFIN"}, {SSL_CB_HANDSHAKE_DONE, NULL}, - {SSL_CB_EXIT, NULL}, {SSL_CB_HANDSHAKE_START, NULL}, - {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "TRST"}, - {SSL_CB_HANDSHAKE_DONE, NULL}, {SSL_CB_EXIT, NULL}, {0, NULL}, + {SSL_CB_EXIT, NULL}, {SSL_CB_LOOP, "SSLOK "}, {SSL_CB_LOOP, "SSLOK "}, + {SSL_CB_LOOP, "TRST"}, {SSL_CB_EXIT, NULL}, {0, NULL}, }, { {0, NULL}, } @@ -4828,8 +4818,11 @@ static void sslapi_info_callback(const SSL *s, int where, int ret) return; } - /* Check that, if we've got SSL_CB_HANDSHAKE_DONE we are not in init */ - if ((where & SSL_CB_HANDSHAKE_DONE) && SSL_in_init((SSL *)s) != 0) { + /* + * Check that, if we've got SSL_CB_HANDSHAKE_DONE we are not in init + */ + if ((where & SSL_CB_HANDSHAKE_DONE) + && SSL_in_init((SSL *)s) != 0) { info_cb_failed = 1; return; } From matt at openssl.org Thu Feb 14 17:22:07 2019 From: matt at openssl.org (Matt Caswell) Date: Thu, 14 Feb 2019 17:22:07 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550164927.628657.28157.nullmailer@dev.openssl.org> The branch master has been updated via 78021171dbcb05ddab1b5daffbfc62504ea709a4 (commit) from 4af5836b55442f31795eff6c8c81ea7a1b8cf94b (commit) - Log ----------------------------------------------------------------- commit 78021171dbcb05ddab1b5daffbfc62504ea709a4 Author: Matt Caswell Date: Thu Jan 24 12:21:39 2019 +0000 Fix -verify_return_error in s_client The "verify_return_error" option in s_client is documented as: Return verification errors instead of continuing. This will typically abort the handshake with a fatal error. In practice this option was ignored unless also accompanied with the "-verify" option. It's unclear what the original intention was. One fix could have been to change the documentation to match the actual behaviour. However it seems unecessarily complex and unexpected that you should need to have both options. Instead the fix implemented here is make the option match the documentation so that "-verify" is not also required. Note that s_server has a similar option where "-verify" (or "-Verify") is still required. This makes more sense because those options additionally request a certificate from the client. Without a certificate there is no possibility of a verification failing, and so "-verify_return_error" doing nothing seems ok. Fixes #8079 Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8080) ----------------------------------------------------------------------- Summary of changes: apps/s_cb.c | 4 ++-- apps/s_client.c | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/s_cb.c b/apps/s_cb.c index af57c34..705550b 100644 --- a/apps/s_cb.c +++ b/apps/s_cb.c @@ -24,7 +24,7 @@ #define COOKIE_SECRET_LENGTH 16 -VERIFY_CB_ARGS verify_args = { 0, 0, X509_V_OK, 0 }; +VERIFY_CB_ARGS verify_args = { -1, 0, X509_V_OK, 0 }; #ifndef OPENSSL_NO_SOCK static unsigned char cookie_secret[COOKIE_SECRET_LENGTH]; @@ -63,7 +63,7 @@ int verify_callback(int ok, X509_STORE_CTX *ctx) if (!ok) { BIO_printf(bio_err, "verify error:num=%d:%s\n", err, X509_verify_cert_error_string(err)); - if (verify_args.depth >= depth) { + if (verify_args.depth < 0 || verify_args.depth >= depth) { if (!verify_args.return_error) ok = 1; verify_args.error = err; diff --git a/apps/s_client.c b/apps/s_client.c index 2a8313d..a30dff4 100644 --- a/apps/s_client.c +++ b/apps/s_client.c @@ -1138,6 +1138,7 @@ int s_client_main(int argc, char **argv) goto opthelp; break; case OPT_VERIFY_RET_ERROR: + verify = SSL_VERIFY_PEER; verify_args.return_error = 1; break; case OPT_VERIFY_QUIET: From matt at openssl.org Thu Feb 14 17:22:18 2019 From: matt at openssl.org (Matt Caswell) Date: Thu, 14 Feb 2019 17:22:18 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550164938.458486.28982.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 9c931841e522943fc226a06947b9959be0d53551 (commit) from 37857e9b5258da148e5d3699b6acdf8787417eb2 (commit) - Log ----------------------------------------------------------------- commit 9c931841e522943fc226a06947b9959be0d53551 Author: Matt Caswell Date: Thu Jan 24 12:21:39 2019 +0000 Fix -verify_return_error in s_client The "verify_return_error" option in s_client is documented as: Return verification errors instead of continuing. This will typically abort the handshake with a fatal error. In practice this option was ignored unless also accompanied with the "-verify" option. It's unclear what the original intention was. One fix could have been to change the documentation to match the actual behaviour. However it seems unecessarily complex and unexpected that you should need to have both options. Instead the fix implemented here is make the option match the documentation so that "-verify" is not also required. Note that s_server has a similar option where "-verify" (or "-Verify") is still required. This makes more sense because those options additionally request a certificate from the client. Without a certificate there is no possibility of a verification failing, and so "-verify_return_error" doing nothing seems ok. Fixes #8079 Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8080) (cherry picked from commit 78021171dbcb05ddab1b5daffbfc62504ea709a4) ----------------------------------------------------------------------- Summary of changes: apps/s_cb.c | 4 ++-- apps/s_client.c | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/s_cb.c b/apps/s_cb.c index 2d4568f..2208f3d 100644 --- a/apps/s_cb.c +++ b/apps/s_cb.c @@ -24,7 +24,7 @@ #define COOKIE_SECRET_LENGTH 16 -VERIFY_CB_ARGS verify_args = { 0, 0, X509_V_OK, 0 }; +VERIFY_CB_ARGS verify_args = { -1, 0, X509_V_OK, 0 }; #ifndef OPENSSL_NO_SOCK static unsigned char cookie_secret[COOKIE_SECRET_LENGTH]; @@ -63,7 +63,7 @@ int verify_callback(int ok, X509_STORE_CTX *ctx) if (!ok) { BIO_printf(bio_err, "verify error:num=%d:%s\n", err, X509_verify_cert_error_string(err)); - if (verify_args.depth >= depth) { + if (verify_args.depth < 0 || verify_args.depth >= depth) { if (!verify_args.return_error) ok = 1; verify_args.error = err; diff --git a/apps/s_client.c b/apps/s_client.c index fb2ff47..4eb865a 100644 --- a/apps/s_client.c +++ b/apps/s_client.c @@ -1126,6 +1126,7 @@ int s_client_main(int argc, char **argv) goto opthelp; break; case OPT_VERIFY_RET_ERROR: + verify = SSL_VERIFY_PEER; verify_args.return_error = 1; break; case OPT_VERIFY_QUIET: From no-reply at appveyor.com Thu Feb 14 21:25:37 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 14 Feb 2019 21:25:37 +0000 Subject: [openssl-commits] Build failed: openssl master.22505 Message-ID: <20190214212537.1.316BB1ECD29822AD@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 14 21:58:27 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 14 Feb 2019 21:58:27 +0000 Subject: [openssl-commits] Build completed: openssl master.22506 Message-ID: <20190214215827.1.6B129252CA0E3F7A@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Fri Feb 15 06:30:59 2019 From: levitte at openssl.org (Richard Levitte) Date: Fri, 15 Feb 2019 06:30:59 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550212259.317215.15921.nullmailer@dev.openssl.org> The branch master has been updated via fcee53948b7f9a5951d42f4ee321e706ea6b4b84 (commit) from 78021171dbcb05ddab1b5daffbfc62504ea709a4 (commit) - Log ----------------------------------------------------------------- commit fcee53948b7f9a5951d42f4ee321e706ea6b4b84 Author: Richard Levitte Date: Thu Feb 14 16:26:40 2019 +0100 Configure: make --strict-warnings a regular user provided compiler option This makes `--strict-warnings` into a compiler pseudo-option, i.e. it gets treated the same way as any other compiler option given on the configuration command line, but is retroactively replaced by actual compiler warning options, depending on what compiler is used. This makes it easier to see in what order options are given to the compiler from the configuration command line, i.e. this: ./config -Wall --strict-warnings would give the compiler flags in the same order as they're given, i.e.: -Wall -Werror -Wno-whatever ... instead of what we got previously: -Werror -Wno-whatever ... -Wall Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8239) ----------------------------------------------------------------------- Summary of changes: Configure | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/Configure b/Configure index 0f5807c..03053bc 100755 --- a/Configure +++ b/Configure @@ -752,7 +752,11 @@ while (@argvcopy) } elsif (/^--strict-warnings$/) { - $strict_warnings = 1; + # Pretend that our strict flags is a C flag, and replace it + # with the proper flags later on + push @{$useradd{CFLAGS}}, '--ossl-strict-warnings'; + push @{$useradd{CXXFLAGS}}, '--ossl-strict-warnings'; + $strict_warnings=1; } elsif (/^--debug$/) { @@ -1503,6 +1507,7 @@ $config{openssl_api_defines} = [ "OPENSSL_MIN_API=".($apitable->{$config{api} // ""} // -1) ]; +my @strict_warnings_collection=(); if ($strict_warnings) { my $wopt; @@ -1510,26 +1515,17 @@ if ($strict_warnings) die "ERROR --strict-warnings requires gcc[>=4] or gcc-alike" unless $gccver >= 4; - foreach $wopt (split /\s+/, $gcc_devteam_warn) - { - push @{$config{cflags}}, $wopt - unless grep { $_ eq $wopt } @{$config{cflags}}; - push @{$config{cxxflags}}, $wopt - if ($config{CXX} - && !grep { $_ eq $wopt } @{$config{cxxflags}}); - } - if (defined($predefined{__clang__})) - { - foreach $wopt (split /\s+/, $clang_devteam_warn) - { - push @{$config{cflags}}, $wopt - unless grep { $_ eq $wopt } @{$config{cflags}}; - push @{$config{cxxflags}}, $wopt - if ($config{CXX} - && !grep { $_ eq $wopt } @{$config{cxxflags}}); - } - } + push @strict_warnings_collection, (split /\s+/, $gcc_devteam_warn); + push @strict_warnings_collection, (split /\s+/, $clang_devteam_warn) + if (defined($predefined{__clang__})); } +foreach (qw(CFLAGS CXXFLAGS)) + { + $useradd{$_} = [ map { $_ eq '--ossl-strict-warnings' + ? @strict_warnings_collection + : ( $_ ) } + @{$useradd{$_}} ]; + } unless ($disabled{"crypto-mdebug-backtrace"}) { From levitte at openssl.org Fri Feb 15 09:16:52 2019 From: levitte at openssl.org (Richard Levitte) Date: Fri, 15 Feb 2019 09:16:52 +0000 Subject: [openssl-commits] [web] master update Message-ID: <1550222212.381812.3262.nullmailer@dev.openssl.org> The branch master has been updated via d58a4110c94ead1c72693c86e1d5841620209660 (commit) from 5c98cb9a57ad617454a721aa640cb096e09b5e7b (commit) - Log ----------------------------------------------------------------- commit d58a4110c94ead1c72693c86e1d5841620209660 Author: Richard Levitte Date: Fri Feb 15 10:16:46 2019 +0100 Typo ----------------------------------------------------------------------- Summary of changes: news/newsflash.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/news/newsflash.txt b/news/newsflash.txt index d5d6e56..5ded4d4 100644 --- a/news/newsflash.txt +++ b/news/newsflash.txt @@ -5,7 +5,7 @@ # headings. URL paths must all be absolute. Date: Item 11-Feb-2019: 3.0.0 Design (draft) is now available -11-Feb-2019: Strategic Architecture for OpenSSL 3.0.0 and beyond is now available +11-Feb-2019: Strategic Architecture for OpenSSL 3.0.0 and beyond is now available 20-Nov-2018: OpenSSL 1.1.1a is now available, including bug and security fixes 20-Nov-2018: OpenSSL 1.1.0j is now available, including bug and security fixes 20-Nov-2018: OpenSSL 1.0.2q is now available, including bug and security fixes From openssl at openssl.org Fri Feb 15 09:23:32 2019 From: openssl at openssl.org (OpenSSL run-checker) Date: Fri, 15 Feb 2019 09:23:32 +0000 Subject: [openssl-commits] Still FAILED build of OpenSSL branch master with options -d --strict-warnings no-stdio Message-ID: <1550222612.404661.4553.nullmailer@run.openssl.org> Platform and configuration command: $ uname -a Linux run 4.4.0-135-generic #161-Ubuntu SMP Mon Aug 27 10:45:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ CC=clang ../openssl/config -d --strict-warnings no-stdio Commit log since last time: 78021171db Fix -verify_return_error in s_client 4af5836b55 Don't signal SSL_CB_HANDSHAKE_START for TLSv1.3 post-handshake messages 3c83c5ba4f Ignore cipher suites when setting cipher list f11ffa505f Configure: stop forcing use of DEFINE macros in headers 008b4ff92f Sparse array iterators include index position. Build log ended with (last 100 lines): /usr/bin/perl ../openssl/test/generate_buildtest.pl symhacks > test/buildtest_symhacks.c /usr/bin/perl ../openssl/test/generate_buildtest.pl tls1 > test/buildtest_tls1.c /usr/bin/perl ../openssl/test/generate_buildtest.pl ts > test/buildtest_ts.c /usr/bin/perl ../openssl/test/generate_buildtest.pl txt_db > test/buildtest_txt_db.c /usr/bin/perl ../openssl/test/generate_buildtest.pl ui > test/buildtest_ui.c /usr/bin/perl ../openssl/test/generate_buildtest.pl whrlpool > test/buildtest_whrlpool.c /usr/bin/perl ../openssl/test/generate_buildtest.pl x509 > test/buildtest_x509.c /usr/bin/perl ../openssl/test/generate_buildtest.pl x509_vfy > test/buildtest_x509_vfy.c /usr/bin/perl ../openssl/test/generate_buildtest.pl x509v3 > test/buildtest_x509v3.c /usr/bin/perl "-I." -Mconfigdata "../openssl/util/dofile.pl" \ "-oMakefile" ../openssl/util/shlib_wrap.sh.in > "util/shlib_wrap.sh" clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aes-x86_64.o crypto/aes/aes-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aesni-mb-x86_64.o crypto/aes/aesni-mb-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aesni-sha1-x86_64.o crypto/aes/aesni-sha1-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aesni-sha256-x86_64.o crypto/aes/aesni-sha256-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aesni-x86_64.o crypto/aes/aesni-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-bsaes-x86_64.o crypto/aes/bsaes-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-vpaes-x86_64.o crypto/aes/vpaes-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-rsaz-avx2.o crypto/bn/rsaz-avx2.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-rsaz-x86_64.o crypto/bn/rsaz-x86_64.s chmod a+x util/shlib_wrap.sh clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-x86_64-gf2m.o crypto/bn/x86_64-gf2m.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-x86_64-mont.o crypto/bn/x86_64-mont.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-x86_64-mont5.o crypto/bn/x86_64-mont5.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/camellia/libcrypto-lib-cmll-x86_64.o crypto/camellia/cmll-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/chacha/libcrypto-lib-chacha-x86_64.o crypto/chacha/chacha-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/ec/libcrypto-lib-ecp_nistz256-x86_64.o crypto/ec/ecp_nistz256-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/ec/libcrypto-lib-x25519-x86_64.o crypto/ec/x25519-x86_64.s clang -Icrypto -I. -Icrypto/include -Iinclude -I../openssl -I../openssl/crypto/include -I../openssl/include -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -MMD -MF crypto/libcrypto-lib-cversion.d.tmp -MT crypto/libcrypto-lib-cversion.o -c -o crypto/libcrypto-lib-cversion.o ../openssl/crypto/cversion.c clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/libcrypto-lib-x86_64cpuid.o crypto/x86_64cpuid.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/md5/libcrypto-lib-md5-x86_64.o crypto/md5/md5-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o crypto/modes/aesni-gcm-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/modes/libcrypto-lib-ghash-x86_64.o crypto/modes/ghash-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/poly1305/libcrypto-lib-poly1305-x86_64.o crypto/poly1305/poly1305-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/rc4/libcrypto-lib-rc4-md5-x86_64.o crypto/rc4/rc4-md5-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/rc4/libcrypto-lib-rc4-x86_64.o crypto/rc4/rc4-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-keccak1600-x86_64.o crypto/sha/keccak1600-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha1-mb-x86_64.o crypto/sha/sha1-mb-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha1-x86_64.o crypto/sha/sha1-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha256-mb-x86_64.o crypto/sha/sha256-mb-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha256-x86_64.o crypto/sha/sha256-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha512-x86_64.o crypto/sha/sha512-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/whrlpool/libcrypto-lib-wp-x86_64.o crypto/whrlpool/wp-x86_64.s ar r libssl.a ssl/libssl-lib-bio_ssl.o ssl/libssl-lib-d1_lib.o ssl/libssl-lib-d1_msg.o ssl/libssl-lib-d1_srtp.o ssl/libssl-lib-methods.o ssl/libssl-lib-packet.o ssl/libssl-lib-pqueue.o ssl/libssl-lib-s3_cbc.o ssl/libssl-lib-s3_enc.o ssl/libssl-lib-s3_lib.o ssl/libssl-lib-s3_msg.o ssl/libssl-lib-ssl_asn1.o ssl/libssl-lib-ssl_cert.o ssl/libssl-lib-ssl_ciph.o ssl/libssl-lib-ssl_conf.o ssl/libssl-lib-ssl_err.o ssl/libssl-lib-ssl_init.o ssl/libssl-lib-ssl_lib.o ssl/libssl-lib-ssl_mcnf.o ssl/libssl-lib-ssl_rsa.o ssl/libssl-lib-ssl_sess.o ssl/libssl-lib-ssl_stat.o ssl/libssl-lib-ssl_txt.o ssl/libssl-lib-ssl_utst.o ssl/libssl-lib-t1_enc.o ssl/libssl-lib-t1_lib.o ssl/libssl-lib-t1_trce.o ssl/libssl-lib-tls13_enc.o ssl/libssl-lib-tls_srp.o ssl/record/libssl-lib-dtls1_bitmap.o ssl/record/libssl-lib-rec_layer_d1.o ssl/record/libssl-lib-rec_layer_s3.o ssl/record/libssl-lib-ssl3_buffer.o ssl/record/libssl-lib-ssl3_record.o ssl/record/libssl-lib-ssl3_record_tls13.o ssl/statem/libssl-lib-extensions.o ssl/statem/libssl-lib-extensions_clnt.o ssl/statem/libssl-lib-extensions_cust.o ssl/statem/libssl-lib-extensions_srvr.o ssl/statem/libssl-lib-statem.o ssl/statem/libssl-lib-statem_clnt.o ssl/statem/libssl-lib-statem_dtls.o ssl/statem/libssl-lib-statem_lib.o ssl/statem/libssl-lib-statem_srvr.o clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -L. -Wl,-znodelete -shared -Wl,-Bsymbolic -Wl,-soname=libcrypto.so.3 \ -o libcrypto.so.3 -Wl,--version-script=libcrypto.ld crypto/aes/libcrypto-shlib-aes-x86_64.o crypto/aes/libcrypto-shlib-aes_cfb.o crypto/aes/libcrypto-shlib-aes_ecb.o crypto/aes/libcrypto-shlib-aes_ige.o crypto/aes/libcrypto-shlib-aes_misc.o crypto/aes/libcrypto-shlib-aes_ofb.o crypto/aes/libcrypto-shlib-aes_wrap.o crypto/aes/libcrypto-shlib-aesni-mb-x86_64.o crypto/aes/libcrypto-shlib-aesni-sha1-x86_64.o crypto/aes/libcrypto-shlib-aesni-sha256-x86_64.o crypto/aes/libcrypto-shlib-aesni-x86_64.o crypto/aes/libcrypto-shlib-bsaes-x86_64.o crypto/aes/libcrypto-shlib-vpaes-x86_64.o crypto/aria/libcrypto-shlib-aria.o crypto/asn1/libcrypto-shlib-a_bitstr.o crypto/asn1/libcrypto-shlib-a_d2i_fp.o crypto/asn1/libcrypto-shlib-a_digest.o crypto/asn1/libcrypto-shlib-a_dup.o crypto/asn1/libcrypto-shlib-a_gentm.o crypto/asn1/libcrypto-shlib-a_i2d_fp.o crypto/asn1/libcrypto-shlib-a_int.o crypto/asn1/libcrypto-shlib-a_mbstr.o crypto/asn1/libcrypto-shlib-a_object.o crypto/asn1/libcrypto-shlib-a_octet.o crypto/asn1/libcrypto-shlib-a_print.o crypto/asn1/libcrypto-shlib-a_sign.o crypto/asn1/libcrypto-shlib-a_strex.o crypto/asn1/libcrypto-shlib-a_strnid.o crypto/asn1/libcrypto-shlib-a_time.o crypto/asn1/libcrypto-shlib-a_type.o crypto/asn1/libcrypto-shlib-a_utctm.o crypto/asn1/libcrypto-shlib-a_utf8.o crypto/asn1/libcrypto-shlib-a_verify.o crypto/asn1/libcrypto-shlib-ameth_lib.o crypto/asn1/libcrypto-shlib-asn1_err.o crypto/asn1/libcrypto-shlib-asn1_gen.o crypto/asn1/libcrypto-shlib-asn1_item_list.o crypto/asn1/libcrypto-shlib-asn1_lib.o crypto/asn1/libcrypto-shlib-asn1_par.o crypto/asn1/libcrypto-shlib-asn_mime.o crypto/asn1/libcrypto-shlib-asn_moid.o crypto/asn1/libcrypto-shlib-asn_mstbl.o crypto/asn1/libcrypto-shlib-asn_pack.o crypto/asn1/libcrypto-shlib-bio_asn1.o crypto/asn1/libcrypto-shlib-bio_ndef.o crypto/asn1/libcrypto-shlib-d2i_pr.o crypto/asn1/libcrypto-shlib-d2i_pu.o crypto/asn1/libcrypto-shlib-evp_asn1.o crypto/asn1/libcrypto-shlib-f_int.o crypto/asn1/libcrypto-shlib-f_string.o crypto/asn1/libcrypto-shlib-i2d_pr.o crypto/asn1/libcrypto-shlib-i2d_pu.o crypto/asn1/libcrypto-shlib-n_pkey.o crypto/asn1/libcrypto-shlib-nsseq.o crypto/asn1/libcrypto-shlib-p5_pbe.o crypto/asn1/libcrypto-shlib-p5_pbev2.o crypto/asn1/libcrypto-shlib-p5_scrypt.o crypto/asn1/libcrypto-shlib-p8_pkey.o crypto/asn1/libcrypto-shlib-t_bitst.o crypto/asn1/libcrypto-shlib-t_pkey.o crypto/asn1/libcrypto-shlib-t_spki.o crypto/asn1/libcrypto-shlib-tasn_dec.o crypto/asn1/libcrypto-shlib-tasn_enc.o crypto/asn1/libcrypto-shlib-tasn_fre.o crypto/asn1/libcrypto-shlib-tasn_new.o crypto/asn1/libcrypto-shlib-tasn_prn.o crypto/asn1/libcrypto-shlib-tasn_scn.o crypto/asn1/libcrypto-shlib-tasn_typ.o crypto/asn1/libcrypto-shlib-tasn_utl.o crypto/asn1/libcrypto-shlib-x_algor.o crypto/asn1/libcrypto-shlib-x_bignum.o crypto/asn1/libcrypto-shlib-x_info.o crypto/asn1/libcrypto-shlib-x_int64.o crypto/asn1/libcrypto-shlib-x_long.o crypto/asn1/libcrypto-shlib-x_pkey.o crypto/asn1/libcrypto-shlib-x_sig.o crypto/asn1/libcrypto-shlib-x_spki.o crypto/asn1/libcrypto-shlib-x_val.o crypto/async/arch/libcrypto-shlib-async_null.o crypto/async/arch/libcrypto-shlib-async_posix.o crypto/async/arch/libcrypto-shlib-async_win.o crypto/async/libcrypto-shlib-async.o crypto/async/libcrypto-shlib-async_err.o crypto/async/libcrypto-shlib-async_wait.o crypto/bf/libcrypto-shlib-bf_cfb64.o crypto/bf/libcrypto-shlib-bf_ecb.o crypto/bf/libcrypto-shlib-bf_enc.o crypto/bf/libcrypto-shlib-bf_ofb64.o crypto/bf/libcrypto-shlib-bf_skey.o crypto/bio/libcrypto-shlib-b_addr.o crypto/bio/libcrypto-shlib-b_dump.o crypto/bio/libcrypto-shlib-b_print.o crypto/bio/libcrypto-shlib-b_sock.o crypto/bio/libcrypto-shlib-b_sock2.o crypto/bio/libcrypto-shlib-bf_buff.o crypto/bio/libcrypto-shlib-bf_lbuf.o crypto/bio/libcrypto-shlib-bf_nbio.o crypto/bio/libcrypto-shlib-bf_null.o crypto/bio/libcrypto-shlib-bio_cb.o crypto/bio/libcrypto-shlib-bio_err.o crypto/bio/libcrypto-shlib-bio_lib.o crypto/bio/libcrypto-shlib-bio_meth.o crypto/bio/libcrypto-shlib-bss_acpt.o crypto/bio/libcrypto-shlib-bss_bio.o crypto/bio/libcrypto-shlib-bss_conn.o crypto/bio/libcrypto-shlib-bss_dgram.o crypto/bio/libcrypto-shlib-bss_fd.o crypto/bio/libcrypto-shlib-bss_file.o crypto/bio/libcrypto-shlib-bss_log.o crypto/bio/libcrypto-shlib-bss_mem.o crypto/bio/libcrypto-shlib-bss_null.o crypto/bio/libcrypto-shlib-bss_sock.o crypto/blake2/libcrypto-shlib-blake2b.o crypto/blake2/libcrypto-shlib-blake2b_mac.o crypto/blake2/libcrypto-shlib-blake2s.o crypto/blake2/libcrypto-shlib-blake2s_mac.o crypto/blake2/libcrypto-shlib-m_blake2b.o crypto/blake2/libcrypto-shlib-m_blake2s.o crypto/bn/asm/libcrypto-shlib-x86_64-gcc.o crypto/bn/libcrypto-shlib-bn_add.o crypto/bn/libcrypto-shlib-bn_blind.o crypto/bn/libcrypto-shlib-bn_const.o crypto/bn/libcrypto-shlib-bn_ctx.o crypto/bn/libcrypto-shlib-bn_depr.o crypto/bn/libcrypto-shlib-bn_dh.o crypto/bn/libcrypto-shlib-bn_div.o crypto/bn/libcrypto-shlib-bn_err.o crypto/bn/libcrypto-shlib-bn_exp.o crypto/bn/libcrypto-shlib-bn_exp2.o crypto/bn/libcrypto-shlib-bn_gcd.o crypto/bn/libcrypto-shlib-bn_gf2m.o crypto/bn/libcrypto-shlib-bn_intern.o crypto/bn/libcrypto-shlib-bn_kron.o crypto/bn/libcrypto-shlib-bn_lib.o crypto/bn/libcrypto-shlib-bn_mod.o crypto/bn/libcrypto-shlib-bn_mont.o crypto/bn/libcrypto-shlib-bn_mpi.o crypto/bn/libcrypto-shlib-bn_mul.o crypto/bn/libcrypto-shlib-bn_nist.o crypto/bn/libcrypto-shlib-bn_prime.o crypto/bn/libcrypto-shlib-bn_print.o crypto/bn/libcrypto-shlib-bn_rand.o crypto/bn/libcrypto-shlib-bn_recp.o crypto/bn/libcrypto-shlib-bn_shift.o crypto/bn/libcrypto-shlib-bn_sqr.o crypto/bn/libcrypto-shlib-bn_sqrt.o crypto/bn/libcrypto-shlib-bn_srp.o crypto/bn/libcrypto-shlib-bn_word.o crypto/bn/libcrypto-shlib-bn_x931p.o crypto/bn/libcrypto-shlib-rsaz-avx2.o crypto/bn/libcrypto-shlib-rsaz-x86_64.o crypto/bn/libcrypto-shlib-rsaz_exp.o crypto/bn/libcrypto-shlib-x86_64-gf2m.o crypto/bn/libcrypto-shlib-x86_64-mont.o crypto/bn/libcrypto-shlib-x86_64-mont5.o crypto/buffer/libcrypto-shlib-buf_err.o crypto/buffer/libcrypto-shlib-buffer.o crypto/camellia/libcrypto-shlib-cmll-x86_64.o crypto/camellia/libcrypto-shlib-cmll_cfb.o crypto/camellia/libcrypto-shlib-cmll_ctr.o crypto/camellia/libcrypto-shlib-cmll_ecb.o crypto/camellia/libcrypto-shlib-cmll_misc.o crypto/camellia/libcrypto-shlib-cmll_ofb.o crypto/cast/libcrypto-shlib-c_cfb64.o crypto/cast/libcrypto-shlib-c_ecb.o crypto/cast/libcrypto-shlib-c_enc.o crypto/cast/libcrypto-shlib-c_ofb64.o crypto/cast/libcrypto-shlib-c_skey.o crypto/chacha/libcrypto-shlib-chacha-x86_64.o crypto/cmac/libcrypto-shlib-cm_ameth.o crypto/cmac/libcrypto-shlib-cm_meth.o crypto/cmac/libcrypto-shlib-cmac.o crypto/cms/libcrypto-shlib-cms_asn1.o crypto/cms/libcrypto-shlib-cms_att.o crypto/cms/libcrypto-shlib-cms_cd.o crypto/cms/libcrypto-shlib-cms_dd.o crypto/cms/libcrypto-shlib-cms_enc.o crypto/cms/libcrypto-shlib-cms_env.o crypto/cms/libcrypto-shlib-cms_err.o crypto/cms/libcrypto-shlib-cms_ess.o crypto/cms/libcrypto-shlib-cms_io.o crypto/cms/libcrypto-shlib-cms_kari.o crypto/cms/libcrypto-shlib-cms_lib.o crypto/cms/libcrypto-shlib-cms_pwri.o crypto/cms/libcrypto-shlib-cms_sd.o crypto/cms/libcrypto-shlib-cms_smime.o crypto/comp/libcrypto-shlib-c_zlib.o crypto/comp/libcrypto-shlib-comp_err.o crypto/comp/libcrypto-shlib-comp_lib.o crypto/conf/libcrypto-shlib-conf_api.o crypto/conf/libcrypto-shlib-conf_def.o crypto/conf/libcrypto-shlib-conf_err.o crypto/conf/libcrypto-shlib-conf_lib.o crypto/conf/libcrypto-shlib-conf_mall.o crypto/conf/libcrypto-shlib-conf_mod.o crypto/conf/libcrypto-shlib-conf_sap.o crypto/conf/libcrypto-shlib-conf_ssl.o crypto/ct/libcrypto-shlib-ct_b64.o crypto/ct/libcrypto-shlib-ct_err.o crypto/ct/libcrypto-shlib-ct_log.o crypto/ct/libcrypto-shlib-ct_oct.o crypto/ct/libcrypto-shlib-ct_policy.o crypto/ct/libcrypto-shlib-ct_prn.o crypto/ct/libcrypto-shlib-ct_sct.o crypto/ct/libcrypto-shlib-ct_sct_ctx.o crypto/ct/libcrypto-shlib-ct_vfy.o crypto/ct/libcrypto-shlib-ct_x509v3.o crypto/des/libcrypto-shlib-cbc_cksm.o crypto/des/libcrypto-shlib-cbc_enc.o crypto/des/libcrypto-shlib-cfb64ede.o crypto/des/libcrypto-shlib-cfb64enc.o crypto/des/libcrypto-shlib-cfb_enc.o crypto/des/libcrypto-shlib-des_enc.o crypto/des/libcrypto-shlib-ecb3_enc.o crypto/des/libcrypto-shlib-ecb_enc.o crypto/des/libcrypto-shlib-fcrypt.o crypto/des/libcrypto-shlib-fcrypt_b.o crypto/des/libcrypto-shlib-ofb64ede.o crypto/des/libcrypto-shlib-ofb64enc.o crypto/des/libcrypto-shlib-ofb_enc.o crypto/des/libcrypto-shlib-pcbc_enc.o crypto/des/libcrypto-shlib-qud_cksm.o crypto/des/libcrypto-shlib-rand_key.o crypto/des/libcrypto-shlib-set_key.o crypto/des/libcrypto-shlib-str2key.o crypto/des/libcrypto-shlib-xcbc_enc.o crypto/dh/libcrypto-shlib-dh_ameth.o crypto/dh/libcrypto-shlib-dh_asn1.o crypto/dh/libcrypto-shlib-dh_check.o crypto/dh/libcrypto-shlib-dh_depr.o crypto/dh/libcrypto-shlib-dh_err.o crypto/dh/libcrypto-shlib-dh_gen.o crypto/dh/libcrypto-shlib-dh_kdf.o crypto/dh/libcrypto-shlib-dh_key.o crypto/dh/libcrypto-shlib-dh_lib.o crypto/dh/libcrypto-shlib-dh_meth.o crypto/dh/libcrypto-shlib-dh_pmeth.o crypto/dh/libcrypto-shlib-dh_prn.o crypto/dh/libcrypto-shlib-dh_rfc5114.o crypto/dh/libcrypto-shlib-dh_rfc7919.o crypto/dsa/libcrypto-shlib-dsa_ameth.o crypto/dsa/libcrypto-shlib-dsa_asn1.o crypto/dsa/libcrypto-shlib-dsa_depr.o crypto/dsa/libcrypto-shlib-dsa_err.o crypto/dsa/libcrypto-shlib-dsa_gen.o crypto/dsa/libcrypto-shlib-dsa_key.o crypto/dsa/libcrypto-shlib-dsa_lib.o crypto/dsa/libcrypto-shlib-dsa_meth.o crypto/dsa/libcrypto-shlib-dsa_ossl.o crypto/dsa/libcrypto-shlib-dsa_pmeth.o crypto/dsa/libcrypto-shlib-dsa_prn.o crypto/dsa/libcrypto-shlib-dsa_sign.o crypto/dsa/libcrypto-shlib-dsa_vrf.o crypto/dso/libcrypto-shlib-dso_dl.o crypto/dso/libcrypto-shlib-dso_dlfcn.o crypto/dso/libcrypto-shlib-dso_err.o crypto/dso/libcrypto-shlib-dso_lib.o crypto/dso/libcrypto-shlib-dso_openssl.o crypto/dso/libcrypto-shlib-dso_vms.o crypto/dso/libcrypto-shlib-dso_win32.o crypto/ec/curve448/arch_32/libcrypto-shlib-f_impl.o crypto/ec/curve448/libcrypto-shlib-curve448.o crypto/ec/curve448/libcrypto-shlib-curve448_tables.o crypto/ec/curve448/libcrypto-shlib-eddsa.o crypto/ec/curve448/libcrypto-shlib-f_generic.o crypto/ec/curve448/libcrypto-shlib-scalar.o crypto/ec/libcrypto-shlib-curve25519.o crypto/ec/libcrypto-shlib-ec2_oct.o crypto/ec/libcrypto-shlib-ec2_smpl.o crypto/ec/libcrypto-shlib-ec_ameth.o crypto/ec/libcrypto-shlib-ec_asn1.o crypto/ec/libcrypto-shlib-ec_check.o crypto/ec/libcrypto-shlib-ec_curve.o crypto/ec/libcrypto-shlib-ec_cvt.o crypto/ec/libcrypto-shlib-ec_err.o crypto/ec/libcrypto-shlib-ec_key.o crypto/ec/libcrypto-shlib-ec_kmeth.o crypto/ec/libcrypto-shlib-ec_lib.o crypto/ec/libcrypto-shlib-ec_mult.o crypto/ec/libcrypto-shlib-ec_oct.o crypto/ec/libcrypto-shlib-ec_pmeth.o crypto/ec/libcrypto-shlib-ec_print.o crypto/ec/libcrypto-shlib-ecdh_kdf.o crypto/ec/libcrypto-shlib-ecdh_ossl.o crypto/ec/libcrypto-shlib-ecdsa_ossl.o crypto/ec/libcrypto-shlib-ecdsa_sign.o crypto/ec/libcrypto-shlib-ecdsa_vrf.o crypto/ec/libcrypto-shlib-eck_prn.o crypto/ec/libcrypto-shlib-ecp_mont.o crypto/ec/libcrypto-shlib-ecp_nist.o crypto/ec/libcrypto-shlib-ecp_nistp224.o crypto/ec/libcrypto-shlib-ecp_nistp256.o crypto/ec/libcrypto-shlib-ecp_nistp521.o crypto/ec/libcrypto-shlib-ecp_nistputil.o crypto/ec/libcrypto-shlib-ecp_nistz256-x86_64.o crypto/ec/libcrypto-shlib-ecp_nistz256.o crypto/ec/libcrypto-shlib-ecp_oct.o crypto/ec/libcrypto-shlib-ecp_smpl.o crypto/ec/libcrypto-shlib-ecx_meth.o crypto/ec/libcrypto-shlib-x25519-x86_64.o crypto/engine/libcrypto-shlib-eng_all.o crypto/engine/libcrypto-shlib-eng_cnf.o crypto/engine/libcrypto-shlib-eng_ctrl.o crypto/engine/libcrypto-shlib-eng_dyn.o crypto/engine/libcrypto-shlib-eng_err.o crypto/engine/libcrypto-shlib-eng_fat.o crypto/engine/libcrypto-shlib-eng_init.o crypto/engine/libcrypto-shlib-eng_lib.o crypto/engine/libcrypto-shlib-eng_list.o crypto/engine/libcrypto-shlib-eng_openssl.o crypto/engine/libcrypto-shlib-eng_pkey.o crypto/engine/libcrypto-shlib-eng_rdrand.o crypto/engine/libcrypto-shlib-eng_table.o crypto/engine/libcrypto-shlib-tb_asnmth.o crypto/engine/libcrypto-shlib-tb_cipher.o crypto/engine/libcrypto-shlib-tb_dh.o crypto/engine/libcrypto-shlib-tb_digest.o crypto/engine/libcrypto-shlib-tb_dsa.o crypto/engine/libcrypto-shlib-tb_eckey.o crypto/engine/libcrypto-shlib-tb_pkmeth.o crypto/engine/libcrypto-shlib-tb_rand.o crypto/engine/libcrypto-shlib-tb_rsa.o crypto/err/libcrypto-shlib-err.o crypto/err/libcrypto-shlib-err_all.o crypto/err/libcrypto-shlib-err_prn.o crypto/ess/libcrypto-shlib-ess_asn1.o crypto/ess/libcrypto-shlib-ess_err.o crypto/ess/libcrypto-shlib-ess_lib.o crypto/evp/libcrypto-shlib-bio_b64.o crypto/evp/libcrypto-shlib-bio_enc.o crypto/evp/libcrypto-shlib-bio_md.o crypto/evp/libcrypto-shlib-bio_ok.o crypto/evp/libcrypto-shlib-c_allc.o crypto/evp/libcrypto-shlib-c_alld.o crypto/evp/libcrypto-shlib-c_allm.o crypto/evp/libcrypto-shlib-cmeth_lib.o crypto/evp/libcrypto-shlib-digest.o crypto/evp/libcrypto-shlib-e_aes.o crypto/evp/libcrypto-shlib-e_aes_cbc_hmac_sha1.o crypto/evp/libcrypto-shlib-e_aes_cbc_hmac_sha256.o crypto/evp/libcrypto-shlib-e_aria.o crypto/evp/libcrypto-shlib-e_bf.o crypto/evp/libcrypto-shlib-e_camellia.o crypto/evp/libcrypto-shlib-e_cast.o crypto/evp/libcrypto-shlib-e_chacha20_poly1305.o crypto/evp/libcrypto-shlib-e_des.o crypto/evp/libcrypto-shlib-e_des3.o crypto/evp/libcrypto-shlib-e_idea.o crypto/evp/libcrypto-shlib-e_null.o crypto/evp/libcrypto-shlib-e_old.o crypto/evp/libcrypto-shlib-e_rc2.o crypto/evp/libcrypto-shlib-e_rc4.o crypto/evp/libcrypto-shlib-e_rc4_hmac_md5.o crypto/evp/libcrypto-shlib-e_rc5.o crypto/evp/libcrypto-shlib-e_seed.o crypto/evp/libcrypto-shlib-e_sm4.o crypto/evp/libcrypto-shlib-e_xcbc_d.o crypto/evp/libcrypto-shlib-encode.o crypto/evp/libcrypto-shlib-evp_cnf.o crypto/evp/libcrypto-shlib-evp_enc.o crypto/evp/libcrypto-shlib-evp_err.o crypto/evp/libcrypto-shlib-evp_key.o crypto/evp/libcrypto-shlib-evp_lib.o crypto/evp/libcrypto-shlib-evp_pbe.o crypto/evp/libcrypto-shlib-evp_pkey.o crypto/evp/libcrypto-shlib-kdf_lib.o crypto/evp/libcrypto-shlib-m_md2.o crypto/evp/libcrypto-shlib-m_md4.o crypto/evp/libcrypto-shlib-m_md5.o crypto/evp/libcrypto-shlib-m_md5_sha1.o crypto/evp/libcrypto-shlib-m_mdc2.o crypto/evp/libcrypto-shlib-m_null.o crypto/evp/libcrypto-shlib-m_ripemd.o crypto/evp/libcrypto-shlib-m_sha1.o crypto/evp/libcrypto-shlib-m_sha3.o crypto/evp/libcrypto-shlib-m_sigver.o crypto/evp/libcrypto-shlib-m_wp.o crypto/evp/libcrypto-shlib-mac_lib.o crypto/evp/libcrypto-shlib-names.o crypto/evp/libcrypto-shlib-p5_crpt.o crypto/evp/libcrypto-shlib-p5_crpt2.o crypto/evp/libcrypto-shlib-p_dec.o crypto/evp/libcrypto-shlib-p_enc.o crypto/evp/libcrypto-shlib-p_lib.o crypto/evp/libcrypto-shlib-p_open.o crypto/evp/libcrypto-shlib-p_seal.o crypto/evp/libcrypto-shlib-p_sign.o crypto/evp/libcrypto-shlib-p_verify.o crypto/evp/libcrypto-shlib-pbe_scrypt.o crypto/evp/libcrypto-shlib-pkey_kdf.o crypto/evp/libcrypto-shlib-pkey_mac.o crypto/evp/libcrypto-shlib-pmeth_fn.o crypto/evp/libcrypto-shlib-pmeth_gn.o crypto/evp/libcrypto-shlib-pmeth_lib.o crypto/gmac/libcrypto-shlib-gmac.o crypto/hmac/libcrypto-shlib-hm_ameth.o crypto/hmac/libcrypto-shlib-hm_meth.o crypto/hmac/libcrypto-shlib-hmac.o crypto/idea/libcrypto-shlib-i_cbc.o crypto/idea/libcrypto-shlib-i_cfb64.o crypto/idea/libcrypto-shlib-i_ecb.o crypto/idea/libcrypto-shlib-i_ofb64.o crypto/idea/libcrypto-shlib-i_skey.o crypto/kdf/libcrypto-shlib-hkdf.o crypto/kdf/libcrypto-shlib-kdf_err.o crypto/kdf/libcrypto-shlib-kdf_util.o crypto/kdf/libcrypto-shlib-pbkdf2.o crypto/kdf/libcrypto-shlib-scrypt.o crypto/kdf/libcrypto-shlib-tls1_prf.o crypto/kmac/libcrypto-shlib-kmac.o crypto/lhash/libcrypto-shlib-lh_stats.o crypto/lhash/libcrypto-shlib-lhash.o crypto/libcrypto-shlib-cpt_err.o crypto/libcrypto-shlib-cryptlib.o crypto/libcrypto-shlib-ctype.o crypto/libcrypto-shlib-cversion.o crypto/libcrypto-shlib-ebcdic.o crypto/libcrypto-shlib-ex_data.o crypto/libcrypto-shlib-getenv.o crypto/libcrypto-shlib-init.o crypto/libcrypto-shlib-mem.o crypto/libcrypto-shlib-mem_dbg.o crypto/libcrypto-shlib-mem_sec.o crypto/libcrypto-shlib-o_dir.o crypto/libcrypto-shlib-o_fips.o crypto/libcrypto-shlib-o_fopen.o crypto/libcrypto-shlib-o_init.o crypto/libcrypto-shlib-o_str.o crypto/libcrypto-shlib-o_time.o crypto/libcrypto-shlib-sparse_array.o crypto/libcrypto-shlib-threads_none.o crypto/libcrypto-shlib-threads_pthread.o crypto/libcrypto-shlib-threads_win.o crypto/libcrypto-shlib-uid.o crypto/libcrypto-shlib-x86_64cpuid.o crypto/md4/libcrypto-shlib-md4_dgst.o crypto/md4/libcrypto-shlib-md4_one.o crypto/md5/libcrypto-shlib-md5-x86_64.o crypto/md5/libcrypto-shlib-md5_dgst.o crypto/md5/libcrypto-shlib-md5_one.o crypto/mdc2/libcrypto-shlib-mdc2_one.o crypto/mdc2/libcrypto-shlib-mdc2dgst.o crypto/modes/libcrypto-shlib-aesni-gcm-x86_64.o crypto/modes/libcrypto-shlib-cbc128.o crypto/modes/libcrypto-shlib-ccm128.o crypto/modes/libcrypto-shlib-cfb128.o crypto/modes/libcrypto-shlib-ctr128.o crypto/modes/libcrypto-shlib-cts128.o crypto/modes/libcrypto-shlib-gcm128.o crypto/modes/libcrypto-shlib-ghash-x86_64.o crypto/modes/libcrypto-shlib-ocb128.o crypto/modes/libcrypto-shlib-ofb128.o crypto/modes/libcrypto-shlib-siv128.o crypto/modes/libcrypto-shlib-wrap128.o crypto/modes/libcrypto-shlib-xts128.o crypto/objects/libcrypto-shlib-o_names.o crypto/objects/libcrypto-shlib-obj_dat.o crypto/objects/libcrypto-shlib-obj_err.o crypto/objects/libcrypto-shlib-obj_lib.o crypto/objects/libcrypto-shlib-obj_xref.o crypto/ocsp/libcrypto-shlib-ocsp_asn.o crypto/ocsp/libcrypto-shlib-ocsp_cl.o crypto/ocsp/libcrypto-shlib-ocsp_err.o crypto/ocsp/libcrypto-shlib-ocsp_ext.o crypto/ocsp/libcrypto-shlib-ocsp_ht.o crypto/ocsp/libcrypto-shlib-ocsp_lib.o crypto/ocsp/libcrypto-shlib-ocsp_prn.o crypto/ocsp/libcrypto-shlib-ocsp_srv.o crypto/ocsp/libcrypto-shlib-ocsp_vfy.o crypto/ocsp/libcrypto-shlib-v3_ocsp.o crypto/pem/libcrypto-shlib-pem_all.o crypto/pem/libcrypto-shlib-pem_err.o crypto/pem/libcrypto-shlib-pem_info.o crypto/pem/libcrypto-shlib-pem_lib.o crypto/pem/libcrypto-shlib-pem_oth.o crypto/pem/libcrypto-shlib-pem_pk8.o crypto/pem/libcrypto-shlib-pem_pkey.o crypto/pem/libcrypto-shlib-pem_sign.o crypto/pem/libcrypto-shlib-pem_x509.o crypto/pem/libcrypto-shlib-pem_xaux.o crypto/pem/libcrypto-shlib-pvkfmt.o crypto/pkcs12/libcrypto-shlib-p12_add.o crypto/pkcs12/libcrypto-shlib-p12_asn.o crypto/pkcs12/libcrypto-shlib-p12_attr.o crypto/pkcs12/libcrypto-shlib-p12_crpt.o crypto/pkcs12/libcrypto-shlib-p12_crt.o crypto/pkcs12/libcrypto-shlib-p12_decr.o crypto/pkcs12/libcrypto-shlib-p12_init.o crypto/pkcs12/libcrypto-shlib-p12_key.o crypto/pkcs12/libcrypto-shlib-p12_kiss.o crypto/pkcs12/libcrypto-shlib-p12_mutl.o crypto/pkcs12/libcrypto-shlib-p12_npas.o crypto/pkcs12/libcrypto-shlib-p12_p8d.o crypto/pkcs12/libcrypto-shlib-p12_p8e.o crypto/pkcs12/libcrypto-shlib-p12_sbag.o crypto/pkcs12/libcrypto-shlib-p12_utl.o crypto/pkcs12/libcrypto-shlib-pk12err.o crypto/pkcs7/libcrypto-shlib-bio_pk7.o crypto/pkcs7/libcrypto-shlib-pk7_asn1.o crypto/pkcs7/libcrypto-shlib-pk7_attr.o crypto/pkcs7/libcrypto-shlib-pk7_doit.o crypto/pkcs7/libcrypto-shlib-pk7_lib.o crypto/pkcs7/libcrypto-shlib-pk7_mime.o crypto/pkcs7/libcrypto-shlib-pk7_smime.o crypto/pkcs7/libcrypto-shlib-pkcs7err.o crypto/poly1305/libcrypto-shlib-poly1305-x86_64.o crypto/poly1305/libcrypto-shlib-poly1305.o crypto/poly1305/libcrypto-shlib-poly1305_ameth.o crypto/poly1305/libcrypto-shlib-poly1305_meth.o crypto/rand/libcrypto-shlib-drbg_ctr.o crypto/rand/libcrypto-shlib-drbg_hash.o crypto/rand/libcrypto-shlib-drbg_hmac.o crypto/rand/libcrypto-shlib-drbg_lib.o crypto/rand/libcrypto-shlib-rand_egd.o crypto/rand/libcrypto-shlib-rand_err.o crypto/rand/libcrypto-shlib-rand_lib.o crypto/rand/libcrypto-shlib-rand_unix.o crypto/rand/libcrypto-shlib-rand_vms.o crypto/rand/libcrypto-shlib-rand_win.o crypto/rand/libcrypto-shlib-randfile.o crypto/rc2/libcrypto-shlib-rc2_cbc.o crypto/rc2/libcrypto-shlib-rc2_ecb.o crypto/rc2/libcrypto-shlib-rc2_skey.o crypto/rc2/libcrypto-shlib-rc2cfb64.o crypto/rc2/libcrypto-shlib-rc2ofb64.o crypto/rc4/libcrypto-shlib-rc4-md5-x86_64.o crypto/rc4/libcrypto-shlib-rc4-x86_64.o crypto/ripemd/libcrypto-shlib-rmd_dgst.o crypto/ripemd/libcrypto-shlib-rmd_one.o crypto/rsa/libcrypto-shlib-rsa_ameth.o crypto/rsa/libcrypto-shlib-rsa_asn1.o crypto/rsa/libcrypto-shlib-rsa_chk.o crypto/rsa/libcrypto-shlib-rsa_crpt.o crypto/rsa/libcrypto-shlib-rsa_depr.o crypto/rsa/libcrypto-shlib-rsa_err.o crypto/rsa/libcrypto-shlib-rsa_gen.o crypto/rsa/libcrypto-shlib-rsa_lib.o crypto/rsa/libcrypto-shlib-rsa_meth.o crypto/rsa/libcrypto-shlib-rsa_mp.o crypto/rsa/libcrypto-shlib-rsa_none.o crypto/rsa/libcrypto-shlib-rsa_oaep.o crypto/rsa/libcrypto-shlib-rsa_ossl.o crypto/rsa/libcrypto-shlib-rsa_pk1.o crypto/rsa/libcrypto-shlib-rsa_pmeth.o crypto/rsa/libcrypto-shlib-rsa_prn.o crypto/rsa/libcrypto-shlib-rsa_pss.o crypto/rsa/libcrypto-shlib-rsa_saos.o crypto/rsa/libcrypto-shlib-rsa_sign.o crypto/rsa/libcrypto-shlib-rsa_ssl.o crypto/rsa/libcrypto-shlib-rsa_x931.o crypto/rsa/libcrypto-shlib-rsa_x931g.o crypto/seed/libcrypto-shlib-seed.o crypto/seed/libcrypto-shlib-seed_cbc.o crypto/seed/libcrypto-shlib-seed_cfb.o crypto/seed/libcrypto-shlib-seed_ecb.o crypto/seed/libcrypto-shlib-seed_ofb.o crypto/sha/libcrypto-shlib-keccak1600-x86_64.o crypto/sha/libcrypto-shlib-sha1-mb-x86_64.o crypto/sha/libcrypto-shlib-sha1-x86_64.o crypto/sha/libcrypto-shlib-sha1_one.o crypto/sha/libcrypto-shlib-sha1dgst.o crypto/sha/libcrypto-shlib-sha256-mb-x86_64.o crypto/sha/libcrypto-shlib-sha256-x86_64.o crypto/sha/libcrypto-shlib-sha256.o crypto/sha/libcrypto-shlib-sha512-x86_64.o crypto/sha/libcrypto-shlib-sha512.o crypto/siphash/libcrypto-shlib-siphash.o crypto/siphash/libcrypto-shlib-siphash_ameth.o crypto/siphash/libcrypto-shlib-siphash_meth.o crypto/sm2/libcrypto-shlib-sm2_crypt.o crypto/sm2/libcrypto-shlib-sm2_err.o crypto/sm2/libcrypto-shlib-sm2_pmeth.o crypto/sm2/libcrypto-shlib-sm2_sign.o crypto/sm3/libcrypto-shlib-m_sm3.o crypto/sm3/libcrypto-shlib-sm3.o crypto/sm4/libcrypto-shlib-sm4.o crypto/srp/libcrypto-shlib-srp_lib.o crypto/srp/libcrypto-shlib-srp_vfy.o crypto/stack/libcrypto-shlib-stack.o crypto/store/libcrypto-shlib-loader_file.o crypto/store/libcrypto-shlib-store_err.o crypto/store/libcrypto-shlib-store_init.o crypto/store/libcrypto-shlib-store_lib.o crypto/store/libcrypto-shlib-store_register.o crypto/store/libcrypto-shlib-store_strings.o crypto/ts/libcrypto-shlib-ts_asn1.o crypto/ts/libcrypto-shlib-ts_conf.o crypto/ts/libcrypto-shlib-ts_err.o crypto/ts/libcrypto-shlib-ts_lib.o crypto/ts/libcrypto-shlib-ts_req_print.o crypto/ts/libcrypto-shlib-ts_req_utils.o crypto/ts/libcrypto-shlib-ts_rsp_print.o crypto/ts/libcrypto-shlib-ts_rsp_sign.o crypto/ts/libcrypto-shlib-ts_rsp_utils.o crypto/ts/libcrypto-shlib-ts_rsp_verify.o crypto/ts/libcrypto-shlib-ts_verify_ctx.o crypto/txt_db/libcrypto-shlib-txt_db.o crypto/ui/libcrypto-shlib-ui_err.o crypto/ui/libcrypto-shlib-ui_lib.o crypto/ui/libcrypto-shlib-ui_null.o crypto/ui/libcrypto-shlib-ui_openssl.o crypto/ui/libcrypto-shlib-ui_util.o crypto/whrlpool/libcrypto-shlib-wp-x86_64.o crypto/whrlpool/libcrypto-shlib-wp_dgst.o crypto/x509/libcrypto-shlib-by_dir.o crypto/x509/libcrypto-shlib-by_file.o crypto/x509/libcrypto-shlib-t_crl.o crypto/x509/libcrypto-shlib-t_req.o crypto/x509/libcrypto-shlib-t_x509.o crypto/x509/libcrypto-shlib-x509_att.o crypto/x509/libcrypto-shlib-x509_cmp.o crypto/x509/libcrypto-shlib-x509_d2.o crypto/x509/libcrypto-shlib-x509_def.o crypto/x509/libcrypto-shlib-x509_err.o crypto/x509/libcrypto-shlib-x509_ext.o crypto/x509/libcrypto-shlib-x509_lu.o crypto/x509/libcrypto-shlib-x509_meth.o crypto/x509/libcrypto-shlib-x509_obj.o crypto/x509/libcrypto-shlib-x509_r2x.o crypto/x509/libcrypto-shlib-x509_req.o crypto/x509/libcrypto-shlib-x509_set.o crypto/x509/libcrypto-shlib-x509_trs.o crypto/x509/libcrypto-shlib-x509_txt.o crypto/x509/libcrypto-shlib-x509_v3.o crypto/x509/libcrypto-shlib-x509_vfy.o crypto/x509/libcrypto-shlib-x509_vpm.o crypto/x509/libcrypto-shlib-x509cset.o crypto/x509/libcrypto-shlib-x509name.o crypto/x509/libcrypto-shlib-x509rset.o crypto/x509/libcrypto-shlib-x509spki.o crypto/x509/libcrypto-shlib-x509type.o crypto/x509/libcrypto-shlib-x_all.o crypto/x509/libcrypto-shlib-x_attrib.o crypto/x509/libcrypto-shlib-x_crl.o crypto/x509/libcrypto-shlib-x_exten.o crypto/x509/libcrypto-shlib-x_name.o crypto/x509/libcrypto-shlib-x_pubkey.o crypto/x509/libcrypto-shlib-x_req.o crypto/x509/libcrypto-shlib-x_x509.o crypto/x509/libcrypto-shlib-x_x509a.o crypto/x509v3/libcrypto-shlib-pcy_cache.o crypto/x509v3/libcrypto-shlib-pcy_data.o crypto/x509v3/libcrypto-shlib-pcy_lib.o crypto/x509v3/libcrypto-shlib-pcy_map.o crypto/x509v3/libcrypto-shlib-pcy_node.o crypto/x509v3/libcrypto-shlib-pcy_tree.o crypto/x509v3/libcrypto-shlib-v3_addr.o crypto/x509v3/libcrypto-shlib-v3_admis.o crypto/x509v3/libcrypto-shlib-v3_akey.o crypto/x509v3/libcrypto-shlib-v3_akeya.o crypto/x509v3/libcrypto-shlib-v3_alt.o crypto/x509v3/libcrypto-shlib-v3_asid.o crypto/x509v3/libcrypto-shlib-v3_bcons.o crypto/x509v3/libcrypto-shlib-v3_bitst.o crypto/x509v3/libcrypto-shlib-v3_conf.o crypto/x509v3/libcrypto-shlib-v3_cpols.o crypto/x509v3/libcrypto-shlib-v3_crld.o crypto/x509v3/libcrypto-shlib-v3_enum.o crypto/x509v3/libcrypto-shlib-v3_extku.o crypto/x509v3/libcrypto-shlib-v3_genn.o crypto/x509v3/libcrypto-shlib-v3_ia5.o crypto/x509v3/libcrypto-shlib-v3_info.o crypto/x509v3/libcrypto-shlib-v3_int.o crypto/x509v3/libcrypto-shlib-v3_lib.o crypto/x509v3/libcrypto-shlib-v3_ncons.o crypto/x509v3/libcrypto-shlib-v3_pci.o crypto/x509v3/libcrypto-shlib-v3_pcia.o crypto/x509v3/libcrypto-shlib-v3_pcons.o crypto/x509v3/libcrypto-shlib-v3_pku.o crypto/x509v3/libcrypto-shlib-v3_pmaps.o crypto/x509v3/libcrypto-shlib-v3_prn.o crypto/x509v3/libcrypto-shlib-v3_purp.o crypto/x509v3/libcrypto-shlib-v3_skey.o crypto/x509v3/libcrypto-shlib-v3_sxnet.o crypto/x509v3/libcrypto-shlib-v3_tlsf.o crypto/x509v3/libcrypto-shlib-v3_utl.o crypto/x509v3/libcrypto-shlib-v3err.o \ -ldl -pthread ar: creating libssl.a clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -c -o engines/padlock-dso-e_padlock-x86_64.o engines/e_padlock-x86_64.s ranlib libssl.a || echo Never mind. clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_aes-bin-buildtest_aes.d.tmp -MT test/buildtest_aes-bin-buildtest_aes.o -c -o test/buildtest_aes-bin-buildtest_aes.o test/buildtest_aes.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_asn1-bin-buildtest_asn1.d.tmp -MT test/buildtest_asn1-bin-buildtest_asn1.o -c -o test/buildtest_asn1-bin-buildtest_asn1.o test/buildtest_asn1.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_asn1t-bin-buildtest_asn1t.d.tmp -MT test/buildtest_asn1t-bin-buildtest_asn1t.o -c -o test/buildtest_asn1t-bin-buildtest_asn1t.o test/buildtest_asn1t.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_async-bin-buildtest_async.d.tmp -MT test/buildtest_async-bin-buildtest_async.o -c -o test/buildtest_async-bin-buildtest_async.o test/buildtest_async.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_bio-bin-buildtest_bio.d.tmp -MT test/buildtest_bio-bin-buildtest_bio.o -c -o test/buildtest_bio-bin-buildtest_bio.o test/buildtest_bio.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_blowfish-bin-buildtest_blowfish.d.tmp -MT test/buildtest_blowfish-bin-buildtest_blowfish.o -c -o test/buildtest_blowfish-bin-buildtest_blowfish.o test/buildtest_blowfish.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_bn-bin-buildtest_bn.d.tmp -MT test/buildtest_bn-bin-buildtest_bn.o -c -o test/buildtest_bn-bin-buildtest_bn.o test/buildtest_bn.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_buffer-bin-buildtest_buffer.d.tmp -MT test/buildtest_buffer-bin-buildtest_buffer.o -c -o test/buildtest_buffer-bin-buildtest_buffer.o test/buildtest_buffer.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_camellia-bin-buildtest_camellia.d.tmp -MT test/buildtest_camellia-bin-buildtest_camellia.o -c -o test/buildtest_camellia-bin-buildtest_camellia.o test/buildtest_camellia.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_cast-bin-buildtest_cast.d.tmp -MT test/buildtest_cast-bin-buildtest_cast.o -c -o test/buildtest_cast-bin-buildtest_cast.o test/buildtest_cast.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_cmac-bin-buildtest_cmac.d.tmp -MT test/buildtest_cmac-bin-buildtest_cmac.o -c -o test/buildtest_cmac-bin-buildtest_cmac.o test/buildtest_cmac.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_cms-bin-buildtest_cms.d.tmp -MT test/buildtest_cms-bin-buildtest_cms.o -c -o test/buildtest_cms-bin-buildtest_cms.o test/buildtest_cms.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_comp-bin-buildtest_comp.d.tmp -MT test/buildtest_comp-bin-buildtest_comp.o -c -o test/buildtest_comp-bin-buildtest_comp.o test/buildtest_comp.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_conf-bin-buildtest_conf.d.tmp -MT test/buildtest_conf-bin-buildtest_conf.o -c -o test/buildtest_conf-bin-buildtest_conf.o test/buildtest_conf.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_conf_api-bin-buildtest_conf_api.d.tmp -MT test/buildtest_conf_api-bin-buildtest_conf_api.o -c -o test/buildtest_conf_api-bin-buildtest_conf_api.o test/buildtest_conf_api.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_crypto-bin-buildtest_crypto.d.tmp -MT test/buildtest_crypto-bin-buildtest_crypto.o -c -o test/buildtest_crypto-bin-buildtest_crypto.o test/buildtest_crypto.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_ct-bin-buildtest_ct.d.tmp -MT test/buildtest_ct-bin-buildtest_ct.o -c -o test/buildtest_ct-bin-buildtest_ct.o test/buildtest_ct.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_des-bin-buildtest_des.d.tmp -MT test/buildtest_des-bin-buildtest_des.o -c -o test/buildtest_des-bin-buildtest_des.o test/buildtest_des.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_dh-bin-buildtest_dh.d.tmp -MT test/buildtest_dh-bin-buildtest_dh.o -c -o test/buildtest_dh-bin-buildtest_dh.o test/buildtest_dh.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_dsa-bin-buildtest_dsa.d.tmp -MT test/buildtest_dsa-bin-buildtest_dsa.o -c -o test/buildtest_dsa-bin-buildtest_dsa.o test/buildtest_dsa.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_dtls1-bin-buildtest_dtls1.d.tmp -MT test/buildtest_dtls1-bin-buildtest_dtls1.o -c -o test/buildtest_dtls1-bin-buildtest_dtls1.o test/buildtest_dtls1.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_e_os2-bin-buildtest_e_os2.d.tmp -MT test/buildtest_e_os2-bin-buildtest_e_os2.o -c -o test/buildtest_e_os2-bin-buildtest_e_os2.o test/buildtest_e_os2.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_ebcdic-bin-buildtest_ebcdic.d.tmp -MT test/buildtest_ebcdic-bin-buildtest_ebcdic.o -c -o test/buildtest_ebcdic-bin-buildtest_ebcdic.o test/buildtest_ebcdic.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_ec-bin-buildtest_ec.d.tmp -MT test/buildtest_ec-bin-buildtest_ec.o -c -o test/buildtest_ec-bin-buildtest_ec.o test/buildtest_ec.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_ecdh-bin-buildtest_ecdh.d.tmp -MT test/buildtest_ecdh-bin-buildtest_ecdh.o -c -o test/buildtest_ecdh-bin-buildtest_ecdh.o test/buildtest_ecdh.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_ecdsa-bin-buildtest_ecdsa.d.tmp -MT test/buildtest_ecdsa-bin-buildtest_ecdsa.o -c -o test/buildtest_ecdsa-bin-buildtest_ecdsa.o test/buildtest_ecdsa.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_engine-bin-buildtest_engine.d.tmp -MT test/buildtest_engine-bin-buildtest_engine.o -c -o test/buildtest_engine-bin-buildtest_engine.o test/buildtest_engine.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_ess-bin-buildtest_ess.d.tmp -MT test/buildtest_ess-bin-buildtest_ess.o -c -o test/buildtest_ess-bin-buildtest_ess.o test/buildtest_ess.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_evp-bin-buildtest_evp.d.tmp -MT test/buildtest_evp-bin-buildtest_evp.o -c -o test/buildtest_evp-bin-buildtest_evp.o test/buildtest_evp.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_hmac-bin-buildtest_hmac.d.tmp -MT test/buildtest_hmac-bin-buildtest_hmac.o -c -o test/buildtest_hmac-bin-buildtest_hmac.o test/buildtest_hmac.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_idea-bin-buildtest_idea.d.tmp -MT test/buildtest_idea-bin-buildtest_idea.o -c -o test/buildtest_idea-bin-buildtest_idea.o test/buildtest_idea.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_kdf-bin-buildtest_kdf.d.tmp -MT test/buildtest_kdf-bin-buildtest_kdf.o -c -o test/buildtest_kdf-bin-buildtest_kdf.o test/buildtest_kdf.c clang -Iinclude -I../openssl/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations -Wno-unknown-warning-option -Wno-unused-function -Wall -O0 -g -MMD -MF test/buildtest_lhash-bin-buildtest_lhash.d.tmp -MT test/buildtest_lhash-bin-buildtest_lhash.o -c -o test/buildtest_lhash-bin-buildtest_lhash.o test/buildtest_lhash.c In file included from test/buildtest_kdf.c:10: ../openssl/include/openssl/kdf.h:29:46: error: unknown type name 'va_list' int EVP_KDF_vctrl(EVP_KDF_CTX *ctx, int cmd, va_list args); ^ ../openssl/include/openssl/kdf.h:31:1: error: unknown type name 'size_t' size_t EVP_KDF_size(EVP_KDF_CTX *ctx); ^ ../openssl/include/openssl/kdf.h:32:58: error: unknown type name 'size_t' int EVP_KDF_derive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen); ^ 3 errors generated. Makefile:12596: recipe for target 'test/buildtest_kdf-bin-buildtest_kdf.o' failed make[1]: *** [test/buildtest_kdf-bin-buildtest_kdf.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make[1]: Leaving directory '/home/openssl/run-checker/no-stdio' Makefile:164: recipe for target 'all' failed make: *** [all] Error 2 From matt at openssl.org Fri Feb 15 09:41:11 2019 From: matt at openssl.org (Matt Caswell) Date: Fri, 15 Feb 2019 09:41:11 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550223671.417670.23314.nullmailer@dev.openssl.org> The branch master has been updated via 0cf5c6a9a06b58a85d93aafefbc07039773b5b43 (commit) from fcee53948b7f9a5951d42f4ee321e706ea6b4b84 (commit) - Log ----------------------------------------------------------------- commit 0cf5c6a9a06b58a85d93aafefbc07039773b5b43 Author: Matt Caswell Date: Thu Feb 14 15:22:59 2019 +0000 Fix no-stdio Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8238) ----------------------------------------------------------------------- Summary of changes: include/openssl/kdf.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/openssl/kdf.h b/include/openssl/kdf.h index 0f39a14..663ba90 100644 --- a/include/openssl/kdf.h +++ b/include/openssl/kdf.h @@ -10,6 +10,8 @@ #ifndef HEADER_KDF_H # define HEADER_KDF_H +# include +# include # include # include # ifdef __cplusplus From matt at openssl.org Fri Feb 15 10:02:16 2019 From: matt at openssl.org (Matt Caswell) Date: Fri, 15 Feb 2019 10:02:16 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550224936.368596.26622.nullmailer@dev.openssl.org> The branch master has been updated via 9fc8f18f59f4a4c853466dca64a23b8af681bf1c (commit) from 0cf5c6a9a06b58a85d93aafefbc07039773b5b43 (commit) - Log ----------------------------------------------------------------- commit 9fc8f18f59f4a4c853466dca64a23b8af681bf1c Author: Matt Caswell Date: Thu Feb 14 12:21:20 2019 +0000 Use order not degree to calculate a buffer size in ecdsatest Otherwise this can result in an incorrect calculation of the maximum encoded integer length, meaning an insufficient buffer size is allocated. Thanks to Billy Brumley for helping to track this down. Fixes #8209 Reviewed-by: Nicola Tuveri Reviewed-by: Richard Levitte Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8237) ----------------------------------------------------------------------- Summary of changes: test/ecdsatest.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/ecdsatest.c b/test/ecdsatest.c index 004f39e..bc3adc0 100644 --- a/test/ecdsatest.c +++ b/test/ecdsatest.c @@ -223,7 +223,7 @@ static int test_builtin(void) const BIGNUM *sig_r, *sig_s; BIGNUM *modified_r = NULL, *modified_s = NULL; BIGNUM *unmodified_r = NULL, *unmodified_s = NULL; - unsigned int sig_len, degree, r_len, s_len, bn_len, buf_len; + unsigned int sig_len, order, r_len, s_len, bn_len, buf_len; int nid, ret = 0; /* fill digest values with some random data */ @@ -251,7 +251,7 @@ static int test_builtin(void) || !TEST_true(EC_KEY_set_group(eckey, group))) goto builtin_err; EC_GROUP_free(group); - degree = EC_GROUP_get_degree(EC_KEY_get0_group(eckey)); + order = EC_GROUP_order_bits(EC_KEY_get0_group(eckey)); TEST_info("testing %s", OBJ_nid2sn(nid)); @@ -316,7 +316,7 @@ static int test_builtin(void) /* Store the two BIGNUMs in raw_buf. */ r_len = BN_num_bytes(sig_r); s_len = BN_num_bytes(sig_s); - bn_len = (degree + 7) / 8; + bn_len = (order + 7) / 8; if (!TEST_false(r_len > bn_len) || !TEST_false(s_len > bn_len)) goto builtin_err; From matt at openssl.org Fri Feb 15 10:02:30 2019 From: matt at openssl.org (Matt Caswell) Date: Fri, 15 Feb 2019 10:02:30 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550224950.093060.27425.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 1b25dc0cf3674dadab8ff13c8de1679910c047d2 (commit) from 9c931841e522943fc226a06947b9959be0d53551 (commit) - Log ----------------------------------------------------------------- commit 1b25dc0cf3674dadab8ff13c8de1679910c047d2 Author: Matt Caswell Date: Thu Feb 14 12:21:20 2019 +0000 Use order not degree to calculate a buffer size in ecdsatest Otherwise this can result in an incorrect calculation of the maximum encoded integer length, meaning an insufficient buffer size is allocated. Thanks to Billy Brumley for helping to track this down. Fixes #8209 Reviewed-by: Nicola Tuveri Reviewed-by: Richard Levitte Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8237) (cherry picked from commit 9fc8f18f59f4a4c853466dca64a23b8af681bf1c) ----------------------------------------------------------------------- Summary of changes: test/ecdsatest.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/ecdsatest.c b/test/ecdsatest.c index 96939a5..f2250ae 100644 --- a/test/ecdsatest.c +++ b/test/ecdsatest.c @@ -223,7 +223,7 @@ static int test_builtin(void) const BIGNUM *sig_r, *sig_s; BIGNUM *modified_r = NULL, *modified_s = NULL; BIGNUM *unmodified_r = NULL, *unmodified_s = NULL; - unsigned int sig_len, degree, r_len, s_len, bn_len, buf_len; + unsigned int sig_len, order, r_len, s_len, bn_len, buf_len; int nid, ret = 0; /* fill digest values with some random data */ @@ -251,7 +251,7 @@ static int test_builtin(void) || !TEST_true(EC_KEY_set_group(eckey, group))) goto builtin_err; EC_GROUP_free(group); - degree = EC_GROUP_get_degree(EC_KEY_get0_group(eckey)); + order = EC_GROUP_order_bits(EC_KEY_get0_group(eckey)); TEST_info("testing %s", OBJ_nid2sn(nid)); @@ -316,7 +316,7 @@ static int test_builtin(void) /* Store the two BIGNUMs in raw_buf. */ r_len = BN_num_bytes(sig_r); s_len = BN_num_bytes(sig_s); - bn_len = (degree + 7) / 8; + bn_len = (order + 7) / 8; if (!TEST_false(r_len > bn_len) || !TEST_false(s_len > bn_len)) goto builtin_err; From matt at openssl.org Fri Feb 15 10:15:43 2019 From: matt at openssl.org (Matt Caswell) Date: Fri, 15 Feb 2019 10:15:43 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550225743.381402.29788.nullmailer@dev.openssl.org> The branch master has been updated via 088dfa133561d7613b9391a56ddbce58f32c934a (commit) from 9fc8f18f59f4a4c853466dca64a23b8af681bf1c (commit) - Log ----------------------------------------------------------------- commit 088dfa133561d7613b9391a56ddbce58f32c934a Author: Todd Short Date: Mon Jul 10 13:28:35 2017 -0400 Add option to disable Extended Master Secret Add SSL_OP64_NO_EXTENDED_MASTER_SECRET, that can be set on either an SSL or an SSL_CTX. When processing a ClientHello, if this flag is set, do not indicate that the EMS TLS extension was received in either the ssl3 object or the SSL_SESSION. Retain most of the sanity checks between the previous and current session during session resumption, but weaken the check when the current SSL object is configured to not use EMS. Reviewed-by: Paul Dale Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/3910) ----------------------------------------------------------------------- Summary of changes: doc/man3/SSL_CONF_cmd.pod | 4 + doc/man3/SSL_CTX_set_options.pod | 12 +- include/openssl/ssl.h | 21 ++- ssl/ssl_conf.c | 3 +- ssl/statem/extensions.c | 3 +- ssl/statem/extensions_clnt.c | 5 + ssl/statem/extensions_srvr.c | 3 + test/recipes/80-test_ssl_new.t | 3 +- test/ssl-tests/16-certstatus.conf | 0 test/ssl-tests/30-extended-master-secret.conf | 203 +++++++++++++++++++++ ...t.conf.in => 30-extended-master-secret.conf.in} | 58 ++++-- test/sslapitest.c | 46 +++++ 12 files changed, 328 insertions(+), 33 deletions(-) delete mode 100644 test/ssl-tests/16-certstatus.conf create mode 100644 test/ssl-tests/30-extended-master-secret.conf copy test/ssl-tests/{19-mac-then-encrypt.conf.in => 30-extended-master-secret.conf.in} (56%) diff --git a/doc/man3/SSL_CONF_cmd.pod b/doc/man3/SSL_CONF_cmd.pod index 0a51e9e..b8c2a35 100644 --- a/doc/man3/SSL_CONF_cmd.pod +++ b/doc/man3/SSL_CONF_cmd.pod @@ -486,6 +486,10 @@ 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. +B: use extended master secret extension, enabled by +default. Inverse of B: that is, +B<-ExtendedMasterSecret> is the same as 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 63d3aae..7626bd3 100644 --- a/doc/man3/SSL_CTX_set_options.pod +++ b/doc/man3/SSL_CTX_set_options.pod @@ -198,6 +198,14 @@ RFC7366 Encrypt-then-MAC option on TLS and DTLS connection. If this option is set, Encrypt-then-MAC is disabled. Clients will not propose, and servers will not accept the extension. +=item SSL_OP_NO_EXTENDED_MASTER_SECRET + +Normally clients and servers will transparently attempt to negotiate the +RFC7627 Extended Master Secret option on TLS and DTLS connection. + +If this option is set, Extended Master Secret is disabled. Clients will +not propose, and servers will not accept the extension. + =item SSL_OP_NO_RENEGOTIATION Disable all renegotiation in TLSv1.2 and earlier. Do not send HelloRequest @@ -366,9 +374,11 @@ OpenSSL 0.9.8m. The B and B options were added in OpenSSL 1.1.1. +The B option was added in OpenSSL 3.0.0. + =head1 COPYRIGHT -Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index 35311ac..9d6e1c5 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h @@ -297,23 +297,26 @@ typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); /* - * Some values are reserved until OpenSSL 1.2.0 because they were previously + * Some values are reserved until OpenSSL 3.0.0 because they were previously * included in SSL_OP_ALL in a 1.1.x release. - * - * Reserved value (until OpenSSL 1.2.0) 0x00000001U - * Reserved value (until OpenSSL 1.2.0) 0x00000002U */ + +/* Disable Extended master secret */ +# define SSL_OP_NO_EXTENDED_MASTER_SECRET 0x00000001U + +/* Reserved value (until OpenSSL 3.0.0) 0x00000002U */ + /* Allow initial connection to servers that don't support RI */ # define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004U -/* Reserved value (until OpenSSL 1.2.0) 0x00000008U */ +/* Reserved value (until OpenSSL 3.0.0) 0x00000008U */ # define SSL_OP_TLSEXT_PADDING 0x00000010U -/* Reserved value (until OpenSSL 1.2.0) 0x00000020U */ +/* Reserved value (until OpenSSL 3.0.0) 0x00000020U */ # define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040U /* - * Reserved value (until OpenSSL 1.2.0) 0x00000080U - * Reserved value (until OpenSSL 1.2.0) 0x00000100U - * Reserved value (until OpenSSL 1.2.0) 0x00000200U + * Reserved value (until OpenSSL 3.0.0) 0x00000080U + * Reserved value (until OpenSSL 3.0.0) 0x00000100U + * Reserved value (until OpenSSL 3.0.0) 0x00000200U */ /* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ diff --git a/ssl/ssl_conf.c b/ssl/ssl_conf.c index 6d4c69d..f0bec36 100644 --- a/ssl/ssl_conf.c +++ b/ssl/ssl_conf.c @@ -380,7 +380,8 @@ static int cmd_Options(SSL_CONF_CTX *cctx, const char *value) 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_INV("AntiReplay", SSL_OP_NO_ANTI_REPLAY) + SSL_FLAG_TBL_INV("AntiReplay", SSL_OP_NO_ANTI_REPLAY), + SSL_FLAG_TBL_INV("ExtendedMasterSecret", SSL_OP_NO_EXTENDED_MASTER_SECRET) }; if (value == NULL) return -3; diff --git a/ssl/statem/extensions.c b/ssl/statem/extensions.c index 773309a..60d4da0 100644 --- a/ssl/statem/extensions.c +++ b/ssl/statem/extensions.c @@ -1169,8 +1169,7 @@ static int init_etm(SSL *s, unsigned int context) static int init_ems(SSL *s, unsigned int context) { - if (!s->server) - s->s3->flags &= ~TLS1_FLAGS_RECEIVED_EXTMS; + s->s3->flags &= ~TLS1_FLAGS_RECEIVED_EXTMS; return 1; } diff --git a/ssl/statem/extensions_clnt.c b/ssl/statem/extensions_clnt.c index 6e133e0..f01e9ee 100644 --- a/ssl/statem/extensions_clnt.c +++ b/ssl/statem/extensions_clnt.c @@ -494,6 +494,9 @@ EXT_RETURN tls_construct_ctos_sct(SSL *s, WPACKET *pkt, unsigned int context, EXT_RETURN tls_construct_ctos_ems(SSL *s, WPACKET *pkt, unsigned int context, X509 *x, size_t chainidx) { + if (s->options & SSL_OP_NO_EXTENDED_MASTER_SECRET) + return EXT_RETURN_NOT_SENT; + if (!WPACKET_put_bytes_u16(pkt, TLSEXT_TYPE_extended_master_secret) || !WPACKET_put_bytes_u16(pkt, 0)) { SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_CONSTRUCT_CTOS_EMS, @@ -1743,6 +1746,8 @@ int tls_parse_stoc_etm(SSL *s, PACKET *pkt, unsigned int context, X509 *x, int tls_parse_stoc_ems(SSL *s, PACKET *pkt, unsigned int context, X509 *x, size_t chainidx) { + if (s->options & SSL_OP_NO_EXTENDED_MASTER_SECRET) + return 1; s->s3->flags |= TLS1_FLAGS_RECEIVED_EXTMS; if (!s->hit) s->session->flags |= SSL_SESS_FLAG_EXTMS; diff --git a/ssl/statem/extensions_srvr.c b/ssl/statem/extensions_srvr.c index 6545f57..73ceadc 100644 --- a/ssl/statem/extensions_srvr.c +++ b/ssl/statem/extensions_srvr.c @@ -989,6 +989,9 @@ int tls_parse_ctos_ems(SSL *s, PACKET *pkt, unsigned int context, X509 *x, return 0; } + if (s->options & SSL_OP_NO_EXTENDED_MASTER_SECRET) + return 1; + s->s3->flags |= TLS1_FLAGS_RECEIVED_EXTMS; return 1; diff --git a/test/recipes/80-test_ssl_new.t b/test/recipes/80-test_ssl_new.t index fa98f24..31c4399 100644 --- a/test/recipes/80-test_ssl_new.t +++ b/test/recipes/80-test_ssl_new.t @@ -28,7 +28,7 @@ map { s/\^// } @conf_files if $^O eq "VMS"; # We hard-code the number of tests to double-check that the globbing above # finds all files as expected. -plan tests => 29; # = scalar @conf_srcs +plan tests => 30; # = scalar @conf_srcs # Some test results depend on the configuration of enabled protocols. We only # verify generated sources in the default configuration. @@ -70,6 +70,7 @@ my %conf_dependent_tests = ( "25-cipher.conf" => disabled("poly1305") || disabled("chacha"), "27-ticket-appdata.conf" => !$is_default_tls, "28-seclevel.conf" => disabled("tls1_2") || $no_ec, + "30-extended-master-secret.conf" => disabled("tls1_2"), ); # Add your test here if it should be skipped for some compile-time diff --git a/test/ssl-tests/16-certstatus.conf b/test/ssl-tests/16-certstatus.conf deleted file mode 100644 index e69de29..0000000 diff --git a/test/ssl-tests/30-extended-master-secret.conf b/test/ssl-tests/30-extended-master-secret.conf new file mode 100644 index 0000000..9dae431 --- /dev/null +++ b/test/ssl-tests/30-extended-master-secret.conf @@ -0,0 +1,203 @@ +# Generated with generate_ssl_tests.pl + +num_tests = 7 + +test-0 = 0-disable-extended-master-secret-server-sha +test-1 = 1-disable-extended-master-secret-client-sha +test-2 = 2-disable-extended-master-secret-both-sha +test-3 = 3-disable-extended-master-secret-both-resume +test-4 = 4-disable-extended-master-secret-server-sha2 +test-5 = 5-disable-extended-master-secret-client-sha2 +test-6 = 6-disable-extended-master-secret-both-sha2 +# =========================================================== + +[0-disable-extended-master-secret-server-sha] +ssl_conf = 0-disable-extended-master-secret-server-sha-ssl + +[0-disable-extended-master-secret-server-sha-ssl] +server = 0-disable-extended-master-secret-server-sha-server +client = 0-disable-extended-master-secret-server-sha-client + +[0-disable-extended-master-secret-server-sha-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +Options = -ExtendedMasterSecret +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[0-disable-extended-master-secret-server-sha-client] +CipherString = AES128-SHA +MaxProtocol = TLSv1.2 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-0] +ExpectedResult = Success + + +# =========================================================== + +[1-disable-extended-master-secret-client-sha] +ssl_conf = 1-disable-extended-master-secret-client-sha-ssl + +[1-disable-extended-master-secret-client-sha-ssl] +server = 1-disable-extended-master-secret-client-sha-server +client = 1-disable-extended-master-secret-client-sha-client + +[1-disable-extended-master-secret-client-sha-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[1-disable-extended-master-secret-client-sha-client] +CipherString = AES128-SHA +MaxProtocol = TLSv1.2 +Options = -ExtendedMasterSecret +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-1] +ExpectedResult = Success + + +# =========================================================== + +[2-disable-extended-master-secret-both-sha] +ssl_conf = 2-disable-extended-master-secret-both-sha-ssl + +[2-disable-extended-master-secret-both-sha-ssl] +server = 2-disable-extended-master-secret-both-sha-server +client = 2-disable-extended-master-secret-both-sha-client + +[2-disable-extended-master-secret-both-sha-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +Options = -ExtendedMasterSecret +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[2-disable-extended-master-secret-both-sha-client] +CipherString = AES128-SHA +MaxProtocol = TLSv1.2 +Options = -ExtendedMasterSecret +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-2] +ExpectedResult = Success + + +# =========================================================== + +[3-disable-extended-master-secret-both-resume] +ssl_conf = 3-disable-extended-master-secret-both-resume-ssl + +[3-disable-extended-master-secret-both-resume-ssl] +server = 3-disable-extended-master-secret-both-resume-server +client = 3-disable-extended-master-secret-both-resume-client +resume-server = 3-disable-extended-master-secret-both-resume-resume-server +resume-client = 3-disable-extended-master-secret-both-resume-resume-client + +[3-disable-extended-master-secret-both-resume-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +Options = -ExtendedMasterSecret +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[3-disable-extended-master-secret-both-resume-resume-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[3-disable-extended-master-secret-both-resume-client] +CipherString = AES128-SHA +MaxProtocol = TLSv1.2 +Options = -ExtendedMasterSecret +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[3-disable-extended-master-secret-both-resume-resume-client] +CipherString = AES128-SHA +MaxProtocol = TLSv1.2 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-3] +ExpectedResult = Success +HandshakeMode = Resume + + +# =========================================================== + +[4-disable-extended-master-secret-server-sha2] +ssl_conf = 4-disable-extended-master-secret-server-sha2-ssl + +[4-disable-extended-master-secret-server-sha2-ssl] +server = 4-disable-extended-master-secret-server-sha2-server +client = 4-disable-extended-master-secret-server-sha2-client + +[4-disable-extended-master-secret-server-sha2-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +Options = -ExtendedMasterSecret +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[4-disable-extended-master-secret-server-sha2-client] +CipherString = AES128-SHA256 +MaxProtocol = TLSv1.2 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-4] +ExpectedResult = Success + + +# =========================================================== + +[5-disable-extended-master-secret-client-sha2] +ssl_conf = 5-disable-extended-master-secret-client-sha2-ssl + +[5-disable-extended-master-secret-client-sha2-ssl] +server = 5-disable-extended-master-secret-client-sha2-server +client = 5-disable-extended-master-secret-client-sha2-client + +[5-disable-extended-master-secret-client-sha2-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[5-disable-extended-master-secret-client-sha2-client] +CipherString = AES128-SHA256 +MaxProtocol = TLSv1.2 +Options = -ExtendedMasterSecret +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-5] +ExpectedResult = Success + + +# =========================================================== + +[6-disable-extended-master-secret-both-sha2] +ssl_conf = 6-disable-extended-master-secret-both-sha2-ssl + +[6-disable-extended-master-secret-both-sha2-ssl] +server = 6-disable-extended-master-secret-both-sha2-server +client = 6-disable-extended-master-secret-both-sha2-client + +[6-disable-extended-master-secret-both-sha2-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +Options = -ExtendedMasterSecret +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[6-disable-extended-master-secret-both-sha2-client] +CipherString = AES128-SHA256 +MaxProtocol = TLSv1.2 +Options = -ExtendedMasterSecret +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-6] +ExpectedResult = Success + + diff --git a/test/ssl-tests/19-mac-then-encrypt.conf.in b/test/ssl-tests/30-extended-master-secret.conf.in similarity index 56% copy from test/ssl-tests/19-mac-then-encrypt.conf.in copy to test/ssl-tests/30-extended-master-secret.conf.in index 968f5ac..2386c98 100644 --- a/test/ssl-tests/19-mac-then-encrypt.conf.in +++ b/test/ssl-tests/30-extended-master-secret.conf.in @@ -1,7 +1,7 @@ # -*- mode: perl; -*- # Copyright 2016-2016 The OpenSSL Project Authors. All Rights Reserved. # -# Licensed under the Apache License 2.0 (the "License"). You may not use +# Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy # in the file LICENSE in the source distribution or at # https://www.openssl.org/source/license.html @@ -13,11 +13,13 @@ package ssltests; use OpenSSL::Test::Utils; -our @tests = ( +our @tests = (); + +my @tests_tls1_2 = ( { - name => "disable-encrypt-then-mac-server-sha", + name => "disable-extended-master-secret-server-sha", server => { - "Options" => "-EncryptThenMac", + "Options" => "-ExtendedMasterSecret", }, client => { "CipherString" => "AES128-SHA", @@ -28,12 +30,12 @@ our @tests = ( }, }, { - name => "disable-encrypt-then-mac-client-sha", + name => "disable-extended-master-secret-client-sha", server => { }, client => { "CipherString" => "AES128-SHA", - "Options" => "-EncryptThenMac", + "Options" => "-ExtendedMasterSecret", "MaxProtocol" => "TLSv1.2" }, test => { @@ -41,26 +43,44 @@ our @tests = ( }, }, { - name => "disable-encrypt-then-mac-both-sha", + name => "disable-extended-master-secret-both-sha", server => { - "Options" => "-EncryptThenMac", + "Options" => "-ExtendedMasterSecret", }, client => { "CipherString" => "AES128-SHA", - "Options" => "-EncryptThenMac", + "Options" => "-ExtendedMasterSecret", "MaxProtocol" => "TLSv1.2" }, test => { "ExpectedResult" => "Success", }, }, -); - -my @tests_tls1_2 = ( { - name => "disable-encrypt-then-mac-server-sha2", + name => "disable-extended-master-secret-both-resume", + server => { + "Options" => "-ExtendedMasterSecret", + }, + resume_server => { + }, + client => { + "CipherString" => "AES128-SHA", + "Options" => "-ExtendedMasterSecret", + "MaxProtocol" => "TLSv1.2" + }, + resume_client => { + "CipherString" => "AES128-SHA", + "MaxProtocol" => "TLSv1.2" + }, + test => { + "HandshakeMode" => "Resume", + "ExpectedResult" => "Success", + }, + }, + { + name => "disable-extended-master-secret-server-sha2", server => { - "Options" => "-EncryptThenMac", + "Options" => "-ExtendedMasterSecret", }, client => { "CipherString" => "AES128-SHA256", @@ -71,12 +91,12 @@ my @tests_tls1_2 = ( }, }, { - name => "disable-encrypt-then-mac-client-sha2", + name => "disable-extended-master-secret-client-sha2", server => { }, client => { "CipherString" => "AES128-SHA256", - "Options" => "-EncryptThenMac", + "Options" => "-ExtendedMasterSecret", "MaxProtocol" => "TLSv1.2" }, test => { @@ -84,13 +104,13 @@ my @tests_tls1_2 = ( }, }, { - name => "disable-encrypt-then-mac-both-sha2", + name => "disable-extended-master-secret-both-sha2", server => { - "Options" => "-EncryptThenMac", + "Options" => "-ExtendedMasterSecret", }, client => { "CipherString" => "AES128-SHA256", - "Options" => "-EncryptThenMac", + "Options" => "-ExtendedMasterSecret", "MaxProtocol" => "TLSv1.2" }, test => { diff --git a/test/sslapitest.c b/test/sslapitest.c index 02eb1fe..788ac46 100644 --- a/test/sslapitest.c +++ b/test/sslapitest.c @@ -579,6 +579,51 @@ end: return testresult; } + +static int test_no_ems(void) +{ + SSL_CTX *cctx = NULL, *sctx = NULL; + SSL *clientssl = NULL, *serverssl = NULL; + int testresult = 0; + + if (!create_ssl_ctx_pair(TLS_server_method(), TLS_client_method(), + TLS1_VERSION, TLS1_2_VERSION, + &sctx, &cctx, cert, privkey)) { + printf("Unable to create SSL_CTX pair\n"); + goto end; + } + + SSL_CTX_set_options(sctx, SSL_OP_NO_EXTENDED_MASTER_SECRET); + + if (!create_ssl_objects(sctx, cctx, &serverssl, &clientssl, NULL, NULL)) { + printf("Unable to create SSL objects\n"); + goto end; + } + + if (!create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE)) { + printf("Creating SSL connection failed\n"); + goto end; + } + + if (SSL_get_extms_support(serverssl)) { + printf("Server reports Extended Master Secret support\n"); + goto end; + } + + if (SSL_get_extms_support(clientssl)) { + printf("Client reports Extended Master Secret support\n"); + goto end; + } + testresult = 1; + +end: + SSL_free(serverssl); + SSL_free(clientssl); + SSL_CTX_free(sctx); + SSL_CTX_free(cctx); + + return testresult; +} #endif static int execute_test_large_message(const SSL_METHOD *smeth, @@ -6087,6 +6132,7 @@ int setup_tests(void) #endif #ifndef OPENSSL_NO_TLS1_2 ADD_TEST(test_client_hello_cb); + ADD_TEST(test_no_ems); #endif #ifndef OPENSSL_NO_TLS1_3 ADD_ALL_TESTS(test_early_data_read_write, 3); From builds at travis-ci.org Fri Feb 15 09:58:55 2019 From: builds at travis-ci.org (Travis CI) Date: Fri, 15 Feb 2019 09:58:55 +0000 Subject: [openssl-commits] Broken: openssl/openssl#23122 (master - 0cf5c6a) In-Reply-To: Message-ID: <5c668d5f5d6a6_43f883bc6db8c2148a6@97dd6472-a8d6-44f5-b6cd-75fbc7222d2a.mail> Build Update for openssl/openssl ------------------------------------- Build: #23122 Status: Broken Duration: 16 mins and 46 secs Commit: 0cf5c6a (master) Author: Matt Caswell Message: Fix no-stdio Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8238) View the changeset: https://github.com/openssl/openssl/compare/fcee53948b7f...0cf5c6a9a06b View the full build log and details: https://travis-ci.org/openssl/openssl/builds/493669884?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From builds at travis-ci.org Fri Feb 15 10:21:23 2019 From: builds at travis-ci.org (Travis CI) Date: Fri, 15 Feb 2019 10:21:23 +0000 Subject: [openssl-commits] Fixed: openssl/openssl#23123 (master - 9fc8f18) In-Reply-To: Message-ID: <5c6692a31b723_43f8ffe9fa8582971a0@ff309b93-18fa-4afc-89f4-20082c168fd3.mail> Build Update for openssl/openssl ------------------------------------- Build: #23123 Status: Fixed Duration: 18 mins and 20 secs Commit: 9fc8f18 (master) Author: Matt Caswell Message: Use order not degree to calculate a buffer size in ecdsatest Otherwise this can result in an incorrect calculation of the maximum encoded integer length, meaning an insufficient buffer size is allocated. Thanks to Billy Brumley for helping to track this down. Fixes #8209 Reviewed-by: Nicola Tuveri Reviewed-by: Richard Levitte Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8237) View the changeset: https://github.com/openssl/openssl/compare/0cf5c6a9a06b...9fc8f18f59f4 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/493677916?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From levitte at openssl.org Fri Feb 15 10:44:42 2019 From: levitte at openssl.org (Richard Levitte) Date: Fri, 15 Feb 2019 10:44:42 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550227482.018113.19195.nullmailer@dev.openssl.org> The branch master has been updated via 48fe4ce104df060dd5d2b4188a56eb554d94d819 (commit) from 088dfa133561d7613b9391a56ddbce58f32c934a (commit) - Log ----------------------------------------------------------------- commit 48fe4ce104df060dd5d2b4188a56eb554d94d819 Author: Richard Levitte Date: Fri Feb 15 08:06:36 2019 +0100 Mark generated functions unused (applies to safestack, lhash, sparse_array) safestack.h, lhash.h and sparse_array.h all define macros to generate a full API for the containers as static inline functions. This potentially generates unused code, which some compilers may complain about. We therefore need to mark those generated functions as unused, so the compiler knows that we know, and stops complaining about it. Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8246) ----------------------------------------------------------------------- Summary of changes: crypto/include/internal/sparse_array.h | 25 +++++++++--------- include/openssl/e_os2.h | 7 +++++ include/openssl/lhash.h | 28 ++++++++++---------- include/openssl/safestack.h | 48 +++++++++++++++++----------------- 4 files changed, 58 insertions(+), 50 deletions(-) diff --git a/crypto/include/internal/sparse_array.h b/crypto/include/internal/sparse_array.h index 839fced..648e41a 100644 --- a/crypto/include/internal/sparse_array.h +++ b/crypto/include/internal/sparse_array.h @@ -11,6 +11,8 @@ #ifndef HEADER_SPARSE_ARRAY_H # define HEADER_SPARSE_ARRAY_H +# include + # ifdef __cplusplus extern "C" { # endif @@ -19,43 +21,42 @@ extern "C" { # define DEFINE_SPARSE_ARRAY_OF(type) \ SPARSE_ARRAY_OF(type); \ - static ossl_inline SPARSE_ARRAY_OF(type) * \ + static ossl_unused ossl_inline SPARSE_ARRAY_OF(type) * \ ossl_sa_##type##_new(void) \ { \ return (SPARSE_ARRAY_OF(type) *)OPENSSL_SA_new(); \ } \ - static ossl_inline void ossl_sa_##type##_free(SPARSE_ARRAY_OF(type) *sa) \ + static ossl_unused ossl_inline void ossl_sa_##type##_free(SPARSE_ARRAY_OF(type) *sa) \ { \ OPENSSL_SA_free((OPENSSL_SA *)sa); \ } \ - static ossl_inline void ossl_sa_##type##_free_leaves(SPARSE_ARRAY_OF(type) *sa) \ + static ossl_unused ossl_inline void ossl_sa_##type##_free_leaves(SPARSE_ARRAY_OF(type) *sa) \ { \ OPENSSL_SA_free_leaves((OPENSSL_SA *)sa); \ } \ - static ossl_inline size_t ossl_sa_##type##_num(const SPARSE_ARRAY_OF(type) *sa) \ + static ossl_unused ossl_inline size_t ossl_sa_##type##_num(const SPARSE_ARRAY_OF(type) *sa) \ { \ return OPENSSL_SA_num((OPENSSL_SA *)sa); \ } \ - static ossl_inline void ossl_sa_##type##_doall(const SPARSE_ARRAY_OF(type) *sa, \ + static ossl_unused ossl_inline void ossl_sa_##type##_doall(const SPARSE_ARRAY_OF(type) *sa, \ void (*leaf)(size_t, type *)) \ { \ OPENSSL_SA_doall((OPENSSL_SA *)sa, (void (*)(size_t, void *))leaf); \ } \ - static ossl_inline void ossl_sa_##type##_doall_arg(const SPARSE_ARRAY_OF(type) *sa, \ - void (*leaf)(size_t, \ - type *, \ - void *),\ - void *arg) \ + static ossl_unused ossl_inline \ + void ossl_sa_##type##_doall_arg(const SPARSE_ARRAY_OF(type) *sa, \ + void (*leaf)(size_t, type *, void *), \ + void *arg) \ { \ OPENSSL_SA_doall_arg((OPENSSL_SA *)sa, (void (*)(size_t, void *, void *))leaf, \ arg); \ } \ - static ossl_inline type *ossl_sa_##type##_get(const SPARSE_ARRAY_OF(type) *sa, \ + static ossl_unused ossl_inline type *ossl_sa_##type##_get(const SPARSE_ARRAY_OF(type) *sa, \ size_t n) \ { \ return (type *)OPENSSL_SA_get((OPENSSL_SA *)sa, n); \ } \ - static ossl_inline int ossl_sa_##type##_set(SPARSE_ARRAY_OF(type) *sa, \ + static ossl_unused ossl_inline int ossl_sa_##type##_set(SPARSE_ARRAY_OF(type) *sa, \ size_t n, type *val) \ { \ return OPENSSL_SA_set((OPENSSL_SA *)sa, n, (void *)val); \ diff --git a/include/openssl/e_os2.h b/include/openssl/e_os2.h index 002cea3..b88abc1 100644 --- a/include/openssl/e_os2.h +++ b/include/openssl/e_os2.h @@ -287,6 +287,13 @@ typedef unsigned __int64 uint64_t; # define ossl_noreturn # endif +/* ossl_unused: portable unused attribute for use in public headers */ +# if defined(__GNUC__) +# define ossl_unused __attribute__((unused)) +# else +# define ossl_unused +# endif + #ifdef __cplusplus } #endif diff --git a/include/openssl/lhash.h b/include/openssl/lhash.h index 672841d..cb52d2a 100644 --- a/include/openssl/lhash.h +++ b/include/openssl/lhash.h @@ -127,52 +127,52 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); return (LHASH_OF(type) *) \ OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ } \ - static ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ + void (*doall)(type *)) \ { \ OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ @@ -185,7 +185,7 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ - static ossl_inline void \ + static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ diff --git a/include/openssl/safestack.h b/include/openssl/safestack.h index ba38ff7..1fbe6cb 100644 --- a/include/openssl/safestack.h +++ b/include/openssl/safestack.h @@ -24,96 +24,96 @@ extern "C" { typedef int (*sk_##t1##_compfunc)(const t3 * const *a, const t3 *const *b); \ typedef void (*sk_##t1##_freefunc)(t3 *a); \ typedef t3 * (*sk_##t1##_copyfunc)(const t3 *a); \ - static ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ { \ return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ } \ - static ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ { \ return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ } \ - static ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ { \ return (STACK_OF(t1) *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ } \ - static ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ { \ return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ } \ - static ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ { \ return (STACK_OF(t1) *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ } \ - static ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ { \ return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ } \ - static ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ { \ OPENSSL_sk_free((OPENSSL_STACK *)sk); \ } \ - static ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ { \ OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ } \ - static ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ { \ return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ } \ - static ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ { \ return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ (const void *)ptr); \ } \ - static ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ { \ return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ } \ - static ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ { \ return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ } \ - static ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ { \ return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ } \ - static ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ { \ return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ } \ - static ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ { \ OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ } \ - static ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ { \ return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ } \ - static ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ { \ return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ } \ - static ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ { \ return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ } \ - static ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ { \ return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ } \ - static ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ { \ OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ } \ - static ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ { \ return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ } \ - static ossl_inline STACK_OF(t1) * sk_##t1##_dup(const STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline STACK_OF(t1) * sk_##t1##_dup(const STACK_OF(t1) *sk) \ { \ return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ } \ - static ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ sk_##t1##_copyfunc copyfunc, \ sk_##t1##_freefunc freefunc) \ { \ @@ -121,7 +121,7 @@ extern "C" { (OPENSSL_sk_copyfunc)copyfunc, \ (OPENSSL_sk_freefunc)freefunc); \ } \ - static ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ { \ return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ } From levitte at openssl.org Fri Feb 15 10:46:25 2019 From: levitte at openssl.org (Richard Levitte) Date: Fri, 15 Feb 2019 10:46:25 +0000 Subject: [openssl-commits] [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550227585.649931.20247.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via ed48d2032d29a82c6aebbddf0fbf530ac2d2521d (commit) from 1b25dc0cf3674dadab8ff13c8de1679910c047d2 (commit) - Log ----------------------------------------------------------------- commit ed48d2032d29a82c6aebbddf0fbf530ac2d2521d Author: Richard Levitte Date: Fri Feb 15 08:06:36 2019 +0100 Mark generated functions unused (applies to safestack, lhash, sparse_array) safestack.h, lhash.h and sparse_array.h all define macros to generate a full API for the containers as static inline functions. This potentially generates unused code, which some compilers may complain about. We therefore need to mark those generated functions as unused, so the compiler knows that we know, and stops complaining about it. Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8246) (cherry picked from commit 48fe4ce104df060dd5d2b4188a56eb554d94d819) ----------------------------------------------------------------------- Summary of changes: include/openssl/e_os2.h | 7 +++++++ include/openssl/lhash.h | 28 +++++++++++++------------- include/openssl/safestack.h | 48 ++++++++++++++++++++++----------------------- 3 files changed, 45 insertions(+), 38 deletions(-) diff --git a/include/openssl/e_os2.h b/include/openssl/e_os2.h index eeae215..1f8219a 100644 --- a/include/openssl/e_os2.h +++ b/include/openssl/e_os2.h @@ -287,6 +287,13 @@ typedef unsigned __int64 uint64_t; # define ossl_noreturn # endif +/* ossl_unused: portable unused attribute for use in public headers */ +# if defined(__GNUC__) +# define ossl_unused __attribute__((unused)) +# else +# define ossl_unused +# endif + #ifdef __cplusplus } #endif diff --git a/include/openssl/lhash.h b/include/openssl/lhash.h index cdc827b..47b99d1 100644 --- a/include/openssl/lhash.h +++ b/include/openssl/lhash.h @@ -127,52 +127,52 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); return (LHASH_OF(type) *) \ OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ } \ - static ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ - static ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ - static ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ - static ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ - static ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ - static ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ - static ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ - static ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ - void (*doall)(type *)) \ + static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ + void (*doall)(type *)) \ { \ OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ @@ -185,7 +185,7 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ - static ossl_inline void \ + static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ diff --git a/include/openssl/safestack.h b/include/openssl/safestack.h index 01c0b1a..38b5578 100644 --- a/include/openssl/safestack.h +++ b/include/openssl/safestack.h @@ -24,96 +24,96 @@ extern "C" { typedef int (*sk_##t1##_compfunc)(const t3 * const *a, const t3 *const *b); \ typedef void (*sk_##t1##_freefunc)(t3 *a); \ typedef t3 * (*sk_##t1##_copyfunc)(const t3 *a); \ - static ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ { \ return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ } \ - static ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ { \ return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ } \ - static ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ { \ return (STACK_OF(t1) *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ } \ - static ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ { \ return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ } \ - static ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ { \ return (STACK_OF(t1) *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ } \ - static ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ { \ return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ } \ - static ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ { \ OPENSSL_sk_free((OPENSSL_STACK *)sk); \ } \ - static ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ { \ OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ } \ - static ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ { \ return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ } \ - static ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ { \ return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ (const void *)ptr); \ } \ - static ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ { \ return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ } \ - static ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ { \ return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ } \ - static ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ { \ return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ } \ - static ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ { \ return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ } \ - static ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ { \ OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ } \ - static ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ { \ return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ } \ - static ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ { \ return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ } \ - static ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ { \ return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ } \ - static ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ { \ return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ } \ - static ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ { \ OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ } \ - static ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ { \ return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ } \ - static ossl_inline STACK_OF(t1) * sk_##t1##_dup(const STACK_OF(t1) *sk) \ + static ossl_unused ossl_inline STACK_OF(t1) * sk_##t1##_dup(const STACK_OF(t1) *sk) \ { \ return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ } \ - static ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ sk_##t1##_copyfunc copyfunc, \ sk_##t1##_freefunc freefunc) \ { \ @@ -121,7 +121,7 @@ extern "C" { (OPENSSL_sk_copyfunc)copyfunc, \ (OPENSSL_sk_freefunc)freefunc); \ } \ - static ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ { \ return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ } From builds at travis-ci.org Fri Feb 15 10:47:19 2019 From: builds at travis-ci.org (Travis CI) Date: Fri, 15 Feb 2019 10:47:19 +0000 Subject: [openssl-commits] Fixed: openssl/openssl#23125 (master - 088dfa1) In-Reply-To: Message-ID: <5c6698b76f58a_43f8ab7219b44128047@7fa41fcc-aa32-4b11-b64b-3f23ddf70474.mail> Build Update for openssl/openssl ------------------------------------- Build: #23125 Status: Fixed Duration: 26 mins and 55 secs Commit: 088dfa1 (master) Author: Todd Short Message: Add option to disable Extended Master Secret Add SSL_OP64_NO_EXTENDED_MASTER_SECRET, that can be set on either an SSL or an SSL_CTX. When processing a ClientHello, if this flag is set, do not indicate that the EMS TLS extension was received in either the ssl3 object or the SSL_SESSION. Retain most of the sanity checks between the previous and current session during session resumption, but weaken the check when the current SSL object is configured to not use EMS. Reviewed-by: Paul Dale Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/3910) View the changeset: https://github.com/openssl/openssl/compare/9fc8f18f59f4...088dfa133561 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/493683340?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From nic.tuv at gmail.com Fri Feb 15 14:48:30 2019 From: nic.tuv at gmail.com (nic.tuv at gmail.com) Date: Fri, 15 Feb 2019 14:48:30 +0000 Subject: [openssl-commits] [openssl] master update Message-ID: <1550242110.388057.18831.nullmailer@dev.openssl.org> The branch master has been updated via fa1f03061037cbdac5369849a885c1191a2550d9 (commit) from 48fe4ce104df060dd5d2b4188a56eb554d94d819 (commit) - Log ----------------------------------------------------------------- commit fa1f03061037cbdac5369849a885c1191a2550d9 Author: David Asraf Date: Thu Feb 7 11:51:39 2019 +0200 Add EC_GROUP_get0_field New function to return internal pointer for field. Reviewed-by: Nicola Tuveri Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8195) ----------------------------------------------------------------------- Summary of changes: crypto/ec/ec_lib.c | 5 +++++ doc/man3/EC_GROUP_copy.pod | 5 ++++- include/openssl/ec.h | 6 ++++++ test/ectest.c | 38 ++++++++++++++++++++++++++++++++++++++ util/libcrypto.num | 1 + 5 files changed, 54 insertions(+), 1 deletion(-) diff --git a/crypto/ec/ec_lib.c b/crypto/ec/ec_lib.c index c14d1a1..2623b53 100644 --- a/crypto/ec/ec_lib.c +++ b/crypto/ec/ec_lib.c @@ -364,6 +364,11 @@ int EC_GROUP_get_curve_name(const EC_GROUP *group) return group->curve_name; } +const BIGNUM *EC_GROUP_get0_field(const EC_GROUP *group) +{ + return group->field; +} + void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag) { group->asn1_flag = flag; diff --git a/doc/man3/EC_GROUP_copy.pod b/doc/man3/EC_GROUP_copy.pod index 453825a..3f7108d 100644 --- a/doc/man3/EC_GROUP_copy.pod +++ b/doc/man3/EC_GROUP_copy.pod @@ -11,7 +11,7 @@ EC_GROUP_get_point_conversion_form, EC_GROUP_get0_seed, EC_GROUP_get_seed_len, EC_GROUP_set_seed, EC_GROUP_get_degree, EC_GROUP_check, EC_GROUP_check_discriminant, EC_GROUP_cmp, EC_GROUP_get_basis_type, EC_GROUP_get_trinomial_basis, -EC_GROUP_get_pentanomial_basis +EC_GROUP_get_pentanomial_basis, EC_GROUP_get0_field - Functions for manipulating EC_GROUP objects =head1 SYNOPSIS @@ -32,6 +32,7 @@ EC_GROUP_get_pentanomial_basis int EC_GROUP_order_bits(const EC_GROUP *group); int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, BN_CTX *ctx); const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group); + const BIGNUM *EC_GROUP_get0_field(const EC_GROUP *group); void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); int EC_GROUP_get_curve_name(const EC_GROUP *group); @@ -177,6 +178,8 @@ specified curve respectively. If there is no curve name associated with a curve EC_GROUP_get0_order() returns an internal pointer to the group order. EC_GROUP_order_bits() returns the number of bits in the group order. EC_GROUP_get0_cofactor() returns an internal pointer to the group cofactor. +EC_GROUP_get0_field() returns an internal pointer to the group field. For curves over GF(p), this is the modulus; for curves +over GF(2^m), this is the irreducible polynomial defining the field. EC_GROUP_get0_seed returns a pointer to the seed that was used to generate the parameter b, or NULL if the seed is not specified. EC_GROUP_get_seed_len returns the length of the seed or 0 if the seed is not specified. diff --git a/include/openssl/ec.h b/include/openssl/ec.h index 4afaad4..7c15368 100644 --- a/include/openssl/ec.h +++ b/include/openssl/ec.h @@ -212,6 +212,12 @@ void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); */ int EC_GROUP_get_curve_name(const EC_GROUP *group); +/** Gets the field of an EC_GROUP + * \param group EC_GROUP object + * \return the group field + */ +const BIGNUM *EC_GROUP_get0_field(const EC_GROUP *group); + void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); int EC_GROUP_get_asn1_flag(const EC_GROUP *group); diff --git a/test/ectest.c b/test/ectest.c index cdfaeb6..0f42597 100644 --- a/test/ectest.c +++ b/test/ectest.c @@ -1159,6 +1159,43 @@ static int internal_curve_test_method(int n) return r; } +static int group_field_test(void) +{ + int r = 1; + BIGNUM *secp521r1_field = NULL; + BIGNUM *sect163r2_field = NULL; + EC_GROUP *secp521r1_group = NULL; + EC_GROUP *sect163r2_group = NULL; + + BN_hex2bn(&secp521r1_field, + "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + "FFFF"); + + + BN_hex2bn(§163r2_field, + "08000000000000000000000000000000" + "00000000C9"); + + secp521r1_group = EC_GROUP_new_by_curve_name(NID_secp521r1); + if (BN_cmp(secp521r1_field, EC_GROUP_get0_field(secp521r1_group))) + r = 0; + + # ifndef OPENSSL_NO_EC2M + sect163r2_group = EC_GROUP_new_by_curve_name(NID_sect163r2); + if (BN_cmp(sect163r2_field, EC_GROUP_get0_field(sect163r2_group))) + r = 0; + # endif + + EC_GROUP_free(secp521r1_group); + EC_GROUP_free(sect163r2_group); + BN_free(secp521r1_field); + BN_free(sect163r2_field); + return r; +} + # ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 /* * nistp_test_params contains magic numbers for testing our optimized @@ -1513,6 +1550,7 @@ int setup_tests(void) # endif ADD_ALL_TESTS(internal_curve_test, crv_len); ADD_ALL_TESTS(internal_curve_test_method, crv_len); + ADD_TEST(group_field_test); #endif return 1; } diff --git a/util/libcrypto.num b/util/libcrypto.num index 2b5365e..b262bc7 100644 --- a/util/libcrypto.num +++ b/util/libcrypto.num @@ -4639,3 +4639,4 @@ EVP_KDF_vctrl 4594 3_0_0 EXIST::FUNCTION: EVP_KDF_ctrl_str 4595 3_0_0 EXIST::FUNCTION: EVP_KDF_size 4596 3_0_0 EXIST::FUNCTION: EVP_KDF_derive 4597 3_0_0 EXIST::FUNCTION: +EC_GROUP_get0_field 4598 3_0_0 EXIST::FUNCTION:EC From levitte at openssl.org Fri Feb 15 22:30:57 2019 From: levitte at openssl.org (Richard Levitte) Date: Fri, 15 Feb 2019 22:30:57 +0000 Subject: [openssl] OpenSSL_1_0_2-stable update Message-ID: <1550269857.132004.27150.nullmailer@dev.openssl.org> The branch OpenSSL_1_0_2-stable has been updated via 3077dd40588e1ff5b7a1fda87ba845c291bb8055 (commit) from fff469b269d8309377291ff86767314d7489fd84 (commit) - Log ----------------------------------------------------------------- commit 3077dd40588e1ff5b7a1fda87ba845c291bb8055 Author: Corinna Vinschen Date: Fri Feb 15 12:22:07 2019 +0100 cygwin: drop explicit O_TEXT Cygwin binaries should not enforce text mode these days, just use text mode if the underlying mount point requests it CLA: trivial Signed-off-by: Corinna Vinschen Reviewed-by: Tim Hudson Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8249) ----------------------------------------------------------------------- Summary of changes: crypto/bio/bss_file.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/crypto/bio/bss_file.c b/crypto/bio/bss_file.c index bbf906f..024d0cf 100644 --- a/crypto/bio/bss_file.c +++ b/crypto/bio/bss_file.c @@ -361,12 +361,16 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr) } else _setmode(fd, _O_BINARY); } -# elif defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_WIN32_CYGWIN) +# elif defined(OPENSSL_SYS_OS2) int fd = fileno((FILE *)ptr); if (num & BIO_FP_TEXT) setmode(fd, O_TEXT); else setmode(fd, O_BINARY); +# elif defined(OPENSSL_SYS_WIN32_CYGWIN) + int fd = fileno((FILE *)ptr); + if (!(num & BIO_FP_TEXT)) + setmode(fd, O_BINARY); # endif } break; @@ -389,11 +393,14 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr) ret = 0; break; } -# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_WIN32_CYGWIN) +# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_OS2) if (!(num & BIO_FP_TEXT)) strcat(p, "b"); else strcat(p, "t"); +# elif defined(OPENSSL_SYS_WIN32_CYGWIN) + if (!(num & BIO_FP_TEXT)) + strcat(p, "b"); # endif # if defined(OPENSSL_SYS_NETWARE) if (!(num & BIO_FP_TEXT)) From levitte at openssl.org Fri Feb 15 23:30:28 2019 From: levitte at openssl.org (Richard Levitte) Date: Fri, 15 Feb 2019 23:30:28 +0000 Subject: [openssl] master update Message-ID: <1550273428.974769.1802.nullmailer@dev.openssl.org> The branch master has been updated via d64b62998beceef8a8b8e1558862eb1c671d677a (commit) via e17f5b6a6bae56175201a96feb8e855835865bb0 (commit) from fa1f03061037cbdac5369849a885c1191a2550d9 (commit) - Log ----------------------------------------------------------------- commit d64b62998beceef8a8b8e1558862eb1c671d677a Author: Richard Levitte Date: Wed Feb 6 17:42:50 2019 +0100 Add an OpenSSL library context The context builds on CRYPTO_EX_DATA, allowing it to be dynamically extended with new data from the different parts of libcrypto. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8225) commit e17f5b6a6bae56175201a96feb8e855835865bb0 Author: Richard Levitte Date: Fri Feb 8 16:46:28 2019 +0100 Add CRYPTO_alloc_ex_data() This allows allocation of items at indexes that were created after the CRYPTO_EX_DATA variable was initialized, using the exact same method that was used then. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8225) ----------------------------------------------------------------------- Summary of changes: crypto/build.info | 2 +- crypto/context.c | 110 +++++++++++++++++++ crypto/ex_data.c | 30 ++++++ doc/internal/man3/openssl_ctx_get_data.pod | 117 +++++++++++++++++++++ doc/man3/CRYPTO_get_ex_new_index.pod | 19 +++- doc/man3/OPENSSL_CTX.pod | 48 +++++++++ include/internal/cryptlib.h | 9 ++ include/openssl/crypto.h | 9 +- include/openssl/ossl_typ.h | 2 + test/build.info | 8 +- test/context_internal_test.c | 89 ++++++++++++++++ test/exdatatest.c | 68 ++++++++++-- ..._internal_x509.t => 02-test_internal_context.t} | 6 +- util/libcrypto.num | 3 + util/private.num | 1 + 15 files changed, 499 insertions(+), 22 deletions(-) create mode 100644 crypto/context.c create mode 100644 doc/internal/man3/openssl_ctx_get_data.pod create mode 100644 doc/man3/OPENSSL_CTX.pod create mode 100644 test/context_internal_test.c copy test/recipes/{03-test_internal_x509.t => 02-test_internal_context.t} (70%) diff --git a/crypto/build.info b/crypto/build.info index 3b67315..fc0050e 100644 --- a/crypto/build.info +++ b/crypto/build.info @@ -12,7 +12,7 @@ SOURCE[../libcrypto]=\ cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c cpt_err.c \ ebcdic.c uid.c o_time.c o_str.c o_dir.c o_fopen.c ctype.c \ threads_pthread.c threads_win.c threads_none.c getenv.c \ - o_init.c o_fips.c mem_sec.c init.c sparse_array.c \ + o_init.c o_fips.c mem_sec.c init.c context.c sparse_array.c \ {- $target{cpuid_asm_src} -} {- $target{uplink_aux_src} -} DEPEND[cversion.o]=buildinf.h diff --git a/crypto/context.c b/crypto/context.c new file mode 100644 index 0000000..752711b --- /dev/null +++ b/crypto/context.c @@ -0,0 +1,110 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/cryptlib.h" +#include "internal/thread_once.h" + +struct openssl_ctx_st { + CRYPTO_RWLOCK *lock; + CRYPTO_EX_DATA data; +}; + +static OPENSSL_CTX default_context; + +static int context_init(OPENSSL_CTX *ctx) +{ + return (ctx->lock = CRYPTO_THREAD_lock_new()) != NULL + && CRYPTO_new_ex_data(CRYPTO_EX_INDEX_OPENSSL_CTX, NULL, + &ctx->data); +} + +static int context_deinit(OPENSSL_CTX *ctx) +{ + CRYPTO_free_ex_data(CRYPTO_EX_INDEX_OPENSSL_CTX, NULL, &ctx->data); + CRYPTO_THREAD_lock_free(ctx->lock); + return 1; +} + +static CRYPTO_ONCE default_context_init = CRYPTO_ONCE_STATIC_INIT; +static void do_default_context_deinit(void) +{ + context_deinit(&default_context); +} +DEFINE_RUN_ONCE_STATIC(do_default_context_init) +{ + return OPENSSL_init_crypto(0, NULL) + && context_init(&default_context) + && OPENSSL_atexit(do_default_context_deinit); +} + +OPENSSL_CTX *OPENSSL_CTX_new(void) +{ + OPENSSL_CTX *ctx = OPENSSL_zalloc(sizeof(*ctx)); + + if (ctx != NULL && !context_init(ctx)) { + OPENSSL_CTX_free(ctx); + ctx = NULL; + } + return ctx; +} + +void OPENSSL_CTX_free(OPENSSL_CTX *ctx) +{ + if (ctx != NULL) + context_deinit(ctx); + OPENSSL_free(ctx); +} + +static void openssl_ctx_generic_new(void *parent_ign, void *ptr_ign, + CRYPTO_EX_DATA *ad, int index, + long argl_ign, void *argp) +{ + const OPENSSL_CTX_METHOD *meth = argp; + void *ptr = meth->new_func(); + + if (ptr != NULL) + CRYPTO_set_ex_data(ad, index, ptr); +} +static void openssl_ctx_generic_free(void *parent_ign, void *ptr, + CRYPTO_EX_DATA *ad, int index, + long argl_ign, void *argp) +{ + const OPENSSL_CTX_METHOD *meth = argp; + + meth->free_func(ptr); +} +int openssl_ctx_new_index(const OPENSSL_CTX_METHOD *meth) +{ + return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_OPENSSL_CTX, 0, (void *)meth, + openssl_ctx_generic_new, NULL, + openssl_ctx_generic_free); +} + +void *openssl_ctx_get_data(OPENSSL_CTX *ctx, int index) +{ + void *data = NULL; + + if (ctx == NULL) { + if (!RUN_ONCE(&default_context_init, do_default_context_init)) + return 0; + ctx = &default_context; + } + + CRYPTO_THREAD_read_lock(ctx->lock); + + /* The alloc call ensures there's a value there */ + if (CRYPTO_alloc_ex_data(CRYPTO_EX_INDEX_OPENSSL_CTX, NULL, + &ctx->data, index)) + data = CRYPTO_get_ex_data(&ctx->data, index); + + CRYPTO_THREAD_unlock(ctx->lock); + + return data; +} + diff --git a/crypto/ex_data.c b/crypto/ex_data.c index 33f43bf..a728bfb 100644 --- a/crypto/ex_data.c +++ b/crypto/ex_data.c @@ -363,6 +363,36 @@ void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad) } /* + * Allocate a given CRYPTO_EX_DATA item using the class specific allocation + * function + */ +int CRYPTO_alloc_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad, + int idx) +{ + EX_CALLBACK *f; + EX_CALLBACKS *ip; + void *curval; + + curval = CRYPTO_get_ex_data(ad, idx); + + /* Already there, no need to allocate */ + if (curval != NULL) + return 1; + + ip = get_and_lock(class_index); + f = sk_EX_CALLBACK_value(ip->meth, idx); + CRYPTO_THREAD_unlock(ex_data_lock); + + /* + * This should end up calling CRYPTO_set_ex_data(), which allocates + * everything necessary to support placing the new data in the right spot. + */ + f->new_func(obj, curval, ad, idx, f->argl, f->argp); + + return 1; +} + +/* * For a given CRYPTO_EX_DATA variable, set the value corresponding to a * particular index in the class used by this variable */ diff --git a/doc/internal/man3/openssl_ctx_get_data.pod b/doc/internal/man3/openssl_ctx_get_data.pod new file mode 100644 index 0000000..b2613bd --- /dev/null +++ b/doc/internal/man3/openssl_ctx_get_data.pod @@ -0,0 +1,117 @@ +=pod + +=head1 NAME + +openssl_ctx_new_index, openssl_ctx_free_index, +openssl_ctx_new_fn, openssl_ctx_free_fn, +openssl_ctx_set_data, openssl_ctx_get_data - internal OPENSSL_CTX routines + +=head1 SYNOPSIS + + #include + #include "internal/cryptlib.h" + + typedef CRYPTO_EX_new openssl_ctx_new_fn; + typedef CRYPTO_EX_free openssl_ctx_free_fn; + + typedef struct openssl_ctx_method { + void *(*new_func)(void); + void (*free_func)(void *); + } OPENSSL_CTX_METHOD; + + int openssl_ctx_new_index(const OPENSSL_CTX_METHOD *meth); + void *openssl_ctx_get_data(OPENSSL_CTX *ctx, int index); + +=head1 DESCRIPTION + +Internally, the OpenSSL library context C is implemented +as a C, which allows data from diverse parts of the +library to be added and removed dynamically. +Each such data item must have a corresponding CRYPTO_EX_DATA index +associated with it. +See the example further down to see how that's done. + +openssl_ctx_new_index() allocates a new library context index, and +associates it with the functions given through C. +The functions given through that method are used to create or free +items that are stored at that index whenever a library context is +created or freed, meaning that the code that use a data item of that +index doesn't have to worry about that, just use the data available. + +Deallocation of an index happens automatically when the library +context is freed. + +openssl_ctx_get_data() is used to retrieve a pointer to the data in +the library context C associated with the given C. + +=head1 EXAMPLES + +=head2 Initialization + +For a type C that should end up in the OpenSSL library context, a +small bit of initialization is needed, i.e. to associate a constructor +and a destructor to a new index. + + /* The index will always be entirely global, and dynamically allocated */ + static int foo_index = -1; + + typedef struct foo_st { + int i; + void *data; + } FOO; + + static void *foo_new(void) + { + FOO *ptr = OPENSSL_zalloc(sizeof(*foo)); + if (ptr != NULL) + ptr->i = 42; + return ptr; + } + static void foo_free(void *ptr) + { + OPENSSL_free(ptr); + } + static const OPENSSL_CTX_METHOD foo_method = { + foo_new, + foo_free + }; + + static int foo_init(void) + { + foo_index = openssl_ctx_new_index(foo_method); + + return foo_index != -1; + } + +=head2 Usage + +To get and use the data stored in the library context, simply do this: + + /* + * ctx is received from a caller, + * foo_index comes from the example above + */ + FOO *data = openssl_ctx_get_data(ctx, foo_index); + +=head1 RETURN VALUES + +openssl_ctx_new_index() returns -1 on error, otherwise the allocated +index number. + +openssl_ctx_get_data() returns a pointer on success, or C on +failure. + +=head1 SEE ALSO + +L + +=head1 COPYRIGHT + +Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + +Licensed under the Apache License 2.0 (the "License"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file LICENSE in the source distribution or at +L. + +=cut diff --git a/doc/man3/CRYPTO_get_ex_new_index.pod b/doc/man3/CRYPTO_get_ex_new_index.pod index a2b39d9..44bab62 100644 --- a/doc/man3/CRYPTO_get_ex_new_index.pod +++ b/doc/man3/CRYPTO_get_ex_new_index.pod @@ -3,8 +3,9 @@ =head1 NAME CRYPTO_EX_new, CRYPTO_EX_free, CRYPTO_EX_dup, -CRYPTO_free_ex_index, CRYPTO_get_ex_new_index, CRYPTO_set_ex_data, -CRYPTO_get_ex_data, CRYPTO_free_ex_data, CRYPTO_new_ex_data +CRYPTO_free_ex_index, CRYPTO_get_ex_new_index, +CRYPTO_alloc_ex_data, CRYPTO_set_ex_data, CRYPTO_get_ex_data, +CRYPTO_free_ex_data, CRYPTO_new_ex_data - functions supporting application-specific data =head1 SYNOPSIS @@ -26,6 +27,9 @@ CRYPTO_get_ex_data, CRYPTO_free_ex_data, CRYPTO_new_ex_data int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad) + int CRYPTO_alloc_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad, + int idx); + int CRYPTO_set_ex_data(CRYPTO_EX_DATA *r, int idx, void *arg); void *CRYPTO_get_ex_data(CRYPTO_EX_DATA *r, int idx); @@ -114,7 +118,8 @@ new_func() is called for every defined index. There is no requirement that the entire parent, or containing, structure has been set up. The new_func() is typically used only to allocate memory to store the exdata, and perhaps an "initialized" flag within that memory. -The exdata value should be set by calling CRYPTO_set_ex_data(). +The exdata value may be allocated later on with CRYPTO_alloc_ex_data(), +or may be set by calling CRYPTO_set_ex_data(). When a structure is free'd (such as SSL_CTX_free()) then the free_func() is called for every defined index. Again, the state of the @@ -147,14 +152,18 @@ will fail. CRYPTO_get_ex_new_index() returns a new index or -1 on failure. -CRYPTO_free_ex_index() and -CRYPTO_set_ex_data() return 1 on success or 0 on failure. +CRYPTO_free_ex_index(), CRYPTO_alloc_ex_data() and CRYPTO_set_ex_data() +return 1 on success or 0 on failure. CRYPTO_get_ex_data() returns the application data or NULL on failure; note that NULL may be a valid value. dup_func() should return 0 for failure and 1 for success. +=head1 HISTORY + +CRYPTO_alloc_ex_data() was added in OpenSSL 3.0.0. + =head1 COPYRIGHT Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. diff --git a/doc/man3/OPENSSL_CTX.pod b/doc/man3/OPENSSL_CTX.pod new file mode 100644 index 0000000..5348367 --- /dev/null +++ b/doc/man3/OPENSSL_CTX.pod @@ -0,0 +1,48 @@ +=pod + +=head1 NAME + +OPENSSL_CTX, OPENSSL_CTX_new, OPENSSL_CTX_free - OpenSSL library context + +=head1 SYNOPSIS + + #include + + typedef struct openssl_ctx_st OPENSSL_CTX; + + OPENSSL_CTX *OPENSSL_CTX_new(void); + void OPENSSL_CTX_free(OPENSSL_CTX *ctx); + +=head1 DESCRIPTION + +C is an internal OpenSSL library context type. +Applications may allocate their own, but may also use C to use +the internal default context with functions that take a C +argument. + +OPENSSL_CTX_new() creates a new OpenSSL library context. + +OPENSSL_CTX_free() frees the given C. + +=head1 RETURN VALUES + +OPENSSL_CTX_new() return a library context pointer on success, or +C on error. + +OPENSSL_CTX_free() doesn't return any value. + +=head1 HISTORY + +OPENSSL_CTX, OPENSSL_CTX_new() and OPENSSL_CTX_free() +were added in OpenSSL 3.0.0. + +=head1 COPYRIGHT + +Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + +Licensed under the Apache License 2.0 (the "License"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file LICENSE in the source distribution or at +L. + +=cut diff --git a/include/internal/cryptlib.h b/include/internal/cryptlib.h index 9bf3c31..28fd96e 100644 --- a/include/internal/cryptlib.h +++ b/include/internal/cryptlib.h @@ -95,4 +95,13 @@ uint32_t OPENSSL_rdtsc(void); size_t OPENSSL_instrument_bus(unsigned int *, size_t); size_t OPENSSL_instrument_bus2(unsigned int *, size_t, size_t); +typedef struct openssl_ctx_method { + void *(*new_func)(void); + void (*free_func)(void *); +} OPENSSL_CTX_METHOD; +/* For each type of data to store in the context, an index must be created */ +int openssl_ctx_new_index(const OPENSSL_CTX_METHOD *); +/* Functions to retrieve pointers to data by index */ +void *openssl_ctx_get_data(OPENSSL_CTX *, int /* index */); + #endif diff --git a/include/openssl/crypto.h b/include/openssl/crypto.h index cbde3d5..deb369e 100644 --- a/include/openssl/crypto.h +++ b/include/openssl/crypto.h @@ -107,7 +107,8 @@ DEFINE_STACK_OF(void) # define CRYPTO_EX_INDEX_APP 13 # define CRYPTO_EX_INDEX_UI_METHOD 14 # define CRYPTO_EX_INDEX_DRBG 15 -# define CRYPTO_EX_INDEX__COUNT 16 +# define CRYPTO_EX_INDEX_OPENSSL_CTX 16 +# define CRYPTO_EX_INDEX__COUNT 17 /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -187,6 +188,10 @@ int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); +/* Allocate a single item in the CRYPTO_EX_DATA variable */ +int CRYPTO_alloc_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad, + int idx); + /* * Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular * index (relative to the class type involved) @@ -446,6 +451,8 @@ int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key); CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void); int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b); +OPENSSL_CTX *OPENSSL_CTX_new(void); +void OPENSSL_CTX_free(OPENSSL_CTX *); # ifdef __cplusplus } diff --git a/include/openssl/ossl_typ.h b/include/openssl/ossl_typ.h index 1c6acce..44ddfaa 100644 --- a/include/openssl/ossl_typ.h +++ b/include/openssl/ossl_typ.h @@ -179,6 +179,8 @@ typedef struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX; typedef struct ossl_store_info_st OSSL_STORE_INFO; typedef struct ossl_store_search_st OSSL_STORE_SEARCH; +typedef struct openssl_ctx_st OPENSSL_CTX; + #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && \ defined(INTMAX_MAX) && defined(UINTMAX_MAX) typedef intmax_t ossl_intmax_t; diff --git a/test/build.info b/test/build.info index 231d362..ecfcace 100644 --- a/test/build.info +++ b/test/build.info @@ -46,7 +46,8 @@ IF[{- !$disabled{tests} -}] recordlentest drbgtest drbg_cavs_test sslbuffertest \ time_offset_test pemtest ssl_cert_table_internal_test ciphername_test \ servername_test ocspapitest rsa_mp_test fatalerrtest tls13ccstest \ - sysdefaulttest errtest gosttest + sysdefaulttest errtest gosttest \ + context_internal_test SOURCE[versions]=versions.c INCLUDE[versions]=../include ../apps/include @@ -557,6 +558,11 @@ IF[{- !$disabled{tests} -}] SOURCE[gosttest]=gosttest.c ssltestlib.c INCLUDE[gosttest]=../include ../apps/include .. DEPEND[gosttest]=../libcrypto ../libssl libtestutil.a + + PROGRAMS{noinst}=context_internal_test + SOURCE[context_internal_test]=context_internal_test.c + INCLUDE[context_internal_test]=.. ../include ../apps/include + DEPEND[context_internal_test]=../libcrypto.a libtestutil.a ENDIF {- diff --git a/test/context_internal_test.c b/test/context_internal_test.c new file mode 100644 index 0000000..7052de2 --- /dev/null +++ b/test/context_internal_test.c @@ -0,0 +1,89 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* Internal tests for the OpenSSL library context */ + +#include "internal/cryptlib.h" +#include "testutil.h" + +/* + * Everything between BEGIN EXAMPLE and END EXAMPLE is copied from + * doc/internal/man3/openssl_ctx_get_data.pod + */ + +/* + * ====================================================================== + * BEGIN EXAMPLE + */ + +/* The index will always be entirely global, and dynamically allocated */ +static int foo_index = -1; + +typedef struct foo_st { + int i; + void *data; +} FOO; + +static void *foo_new(void) +{ + FOO *ptr = OPENSSL_zalloc(sizeof(*ptr)); + if (ptr != NULL) + ptr->i = 42; + return ptr; +} +static void foo_free(void *ptr) +{ + OPENSSL_free(ptr); +} +static const OPENSSL_CTX_METHOD foo_method = { + foo_new, + foo_free +}; + +static int foo_init(void) { + foo_index = openssl_ctx_new_index(&foo_method); + + return foo_index != -1; +} + +/* + * END EXAMPLE + * ====================================================================== + */ + +static int test_context(OPENSSL_CTX *ctx) +{ + FOO *data = NULL; + + return (TEST_ptr(data = openssl_ctx_get_data(ctx, foo_index)) + /* OPENSSL_zalloc in foo_new() initialized it to zero */ + && TEST_int_eq(data->i, 42)); +} + +static int test_app_context(void) +{ + OPENSSL_CTX *ctx = NULL; + int result = (TEST_ptr(ctx = OPENSSL_CTX_new()) && test_context(ctx)); + + OPENSSL_CTX_free(ctx); + return result; +} + +static int test_def_context(void) +{ + return test_context(NULL); +} + +int setup_tests(void) +{ + ADD_TEST(foo_init); + ADD_TEST(test_app_context); + ADD_TEST(test_def_context); + return 1; +} diff --git a/test/exdatatest.c b/test/exdatatest.c index db4e0ff..3ce6d33 100644 --- a/test/exdatatest.c +++ b/test/exdatatest.c @@ -18,6 +18,7 @@ static long saved_argl; static void *saved_argp; static int saved_idx; static int saved_idx2; +static int saved_idx3; static int gbl_result; /* @@ -71,12 +72,13 @@ static void exnew2(void *parent, void *ptr, CRYPTO_EX_DATA *ad, int idx, long argl, void *argp) { MYOBJ_EX_DATA *ex_data = OPENSSL_zalloc(sizeof(*ex_data)); - if (!TEST_int_eq(idx, saved_idx2) + + if (!TEST_true(idx == saved_idx2 || idx == saved_idx3) || !TEST_long_eq(argl, saved_argl) || !TEST_ptr_eq(argp, saved_argp) || !TEST_ptr_null(ptr) || !TEST_ptr(ex_data) - || !TEST_true(CRYPTO_set_ex_data(ad, saved_idx2, ex_data))) { + || !TEST_true(CRYPTO_set_ex_data(ad, idx, ex_data))) { gbl_result = 0; OPENSSL_free(ex_data); } else { @@ -88,13 +90,14 @@ static int exdup2(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, void *from_d, int idx, long argl, void *argp) { MYOBJ_EX_DATA **update_ex_data = (MYOBJ_EX_DATA**)from_d; - MYOBJ_EX_DATA *ex_data = CRYPTO_get_ex_data(to, saved_idx2); - if (!TEST_int_eq(idx, saved_idx2) + MYOBJ_EX_DATA *ex_data = NULL; + + if (!TEST_true(idx == saved_idx2 || idx == saved_idx3) || !TEST_long_eq(argl, saved_argl) || !TEST_ptr_eq(argp, saved_argp) || !TEST_ptr(from_d) || !TEST_ptr(*update_ex_data) - || !TEST_ptr(ex_data) + || !TEST_ptr(ex_data = CRYPTO_get_ex_data(to, idx)) || !TEST_true(ex_data->new)) { gbl_result = 0; } else { @@ -111,14 +114,14 @@ static int exdup2(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, static void exfree2(void *parent, void *ptr, CRYPTO_EX_DATA *ad, int idx, long argl, void *argp) { - MYOBJ_EX_DATA *ex_data = CRYPTO_get_ex_data(ad, saved_idx2); - OPENSSL_free(ex_data); - if (!TEST_int_eq(idx, saved_idx2) + MYOBJ_EX_DATA *ex_data = CRYPTO_get_ex_data(ad, idx); + + if (!TEST_true(idx == saved_idx2 || idx == saved_idx3) || !TEST_long_eq(argl, saved_argl) || !TEST_ptr_eq(argp, saved_argp) - || !TEST_ptr(ex_data) - || !TEST_true(CRYPTO_set_ex_data(ad, saved_idx2, NULL))) + || !TEST_true(CRYPTO_set_ex_data(ad, idx, NULL))) gbl_result = 0; + OPENSSL_free(ex_data); } typedef struct myobj_st { @@ -152,6 +155,7 @@ static char *MYOBJ_gethello(MYOBJ *obj) static void MYOBJ_sethello2(MYOBJ *obj, char *cp) { MYOBJ_EX_DATA* ex_data = CRYPTO_get_ex_data(&obj->ex_data, saved_idx2); + if (TEST_ptr(ex_data)) ex_data->hello = cp; else @@ -161,6 +165,31 @@ static void MYOBJ_sethello2(MYOBJ *obj, char *cp) static char *MYOBJ_gethello2(MYOBJ *obj) { MYOBJ_EX_DATA* ex_data = CRYPTO_get_ex_data(&obj->ex_data, saved_idx2); + + if (TEST_ptr(ex_data)) + return ex_data->hello; + + obj->st = gbl_result = 0; + return NULL; +} + +static void MYOBJ_allochello3(MYOBJ *obj, char *cp) +{ + MYOBJ_EX_DATA* ex_data = NULL; + + if (TEST_ptr_null(ex_data = CRYPTO_get_ex_data(&obj->ex_data, saved_idx3)) + && TEST_true(CRYPTO_alloc_ex_data(CRYPTO_EX_INDEX_APP, obj, + &obj->ex_data, saved_idx3)) + && TEST_ptr(ex_data = CRYPTO_get_ex_data(&obj->ex_data, saved_idx3))) + ex_data->hello = cp; + else + obj->st = gbl_result = 0; +} + +static char *MYOBJ_gethello3(MYOBJ *obj) +{ + MYOBJ_EX_DATA* ex_data = CRYPTO_get_ex_data(&obj->ex_data, saved_idx3); + if (TEST_ptr(ex_data)) return ex_data->hello; @@ -207,7 +236,15 @@ static int test_exdata(void) return 0; if (!TEST_ptr(CRYPTO_get_ex_data(&t1->ex_data, saved_idx2))) return 0; - if (!TEST_ptr(CRYPTO_get_ex_data(&t2->ex_data, saved_idx2))) + + /* + * saved_idx3 differs from other indexes by being created after the exdata + * was initialized. + */ + saved_idx3 = CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_APP, + saved_argl, saved_argp, + exnew2, exdup2, exfree2); + if (!TEST_ptr_null(CRYPTO_get_ex_data(&t1->ex_data, saved_idx3))) return 0; MYOBJ_sethello(t1, p); @@ -220,6 +257,11 @@ static int test_exdata(void) if (!TEST_ptr_eq(cp, p)) return 0; + MYOBJ_allochello3(t1, p); + cp = MYOBJ_gethello3(t1); + if (!TEST_ptr_eq(cp, p)) + return 0; + cp = MYOBJ_gethello(t2); if (!TEST_ptr_null(cp)) return 0; @@ -246,6 +288,10 @@ static int test_exdata(void) if (!TEST_ptr_eq(cp, p)) return 0; + cp = MYOBJ_gethello3(t3); + if (!TEST_ptr_eq(cp, p)) + return 0; + MYOBJ_free(t1); MYOBJ_free(t2); MYOBJ_free(t3); diff --git a/test/recipes/03-test_internal_x509.t b/test/recipes/02-test_internal_context.t similarity index 70% copy from test/recipes/03-test_internal_x509.t copy to test/recipes/02-test_internal_context.t index 1803992..c4c9904 100644 --- a/test/recipes/03-test_internal_x509.t +++ b/test/recipes/02-test_internal_context.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -11,6 +11,6 @@ use OpenSSL::Test; # get 'plan' use OpenSSL::Test::Simple; use OpenSSL::Test::Utils; -setup("test_internal_x509"); +setup("test_internal_context"); -simple_test("test_internal_x509", "x509_internal_test"); +simple_test("test_internal_context", "context_internal_test"); diff --git a/util/libcrypto.num b/util/libcrypto.num index b262bc7..560f47f 100644 --- a/util/libcrypto.num +++ b/util/libcrypto.num @@ -4640,3 +4640,6 @@ EVP_KDF_ctrl_str 4595 3_0_0 EXIST::FUNCTION: EVP_KDF_size 4596 3_0_0 EXIST::FUNCTION: EVP_KDF_derive 4597 3_0_0 EXIST::FUNCTION: EC_GROUP_get0_field 4598 3_0_0 EXIST::FUNCTION:EC +CRYPTO_alloc_ex_data 4599 3_0_0 EXIST::FUNCTION: +OPENSSL_CTX_new 4600 3_0_0 EXIST::FUNCTION: +OPENSSL_CTX_free 4601 3_0_0 EXIST::FUNCTION: diff --git a/util/private.num b/util/private.num index 3832841..c4a2793 100644 --- a/util/private.num +++ b/util/private.num @@ -30,6 +30,7 @@ EVP_PKEY_METHOD datatype EVP_PKEY_ASN1_METHOD datatype GEN_SESSION_CB datatype OPENSSL_Applink external +OPENSSL_CTX datatype NAMING_AUTHORITY datatype OSSL_STORE_CTX datatype OSSL_STORE_INFO datatype From no-reply at appveyor.com Sat Feb 16 11:23:06 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sat, 16 Feb 2019 11:23:06 +0000 Subject: Build failed: openssl master.22553 Message-ID: <20190216112306.1.1D2FF73E9FBC28A1@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Sat Feb 16 11:48:10 2019 From: levitte at openssl.org (Richard Levitte) Date: Sat, 16 Feb 2019 11:48:10 +0000 Subject: [openssl] master update Message-ID: <1550317690.678781.8697.nullmailer@dev.openssl.org> The branch master has been updated via b2b580fe445e064da50c13d3e00f71022da16ece (commit) from d64b62998beceef8a8b8e1558862eb1c671d677a (commit) - Log ----------------------------------------------------------------- commit b2b580fe445e064da50c13d3e00f71022da16ece Author: Patrick Steuer Date: Fri Feb 15 22:59:09 2019 +0100 s390x assembly pack: fix formal interface bug in chacha module Signed-off-by: Patrick Steuer Reviewed-by: Tim Hudson Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8257) ----------------------------------------------------------------------- Summary of changes: crypto/chacha/asm/chacha-s390x.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crypto/chacha/asm/chacha-s390x.pl b/crypto/chacha/asm/chacha-s390x.pl index 005c810..abf7283 100755 --- a/crypto/chacha/asm/chacha-s390x.pl +++ b/crypto/chacha/asm/chacha-s390x.pl @@ -225,7 +225,7 @@ LABEL ("ChaCha20_ctr32"); larl ("%r1","OPENSSL_s390xcap_P"); lghi ("%r0",64); -&{$z? \&cgr:\&cr} ($len,"%r0"); +&{$z? \&clgr:\&clr} ($len,"%r0"); jle ("_s390x_chacha_novx"); lg ("%r0","S390X_STFLE+16(%r1)"); From no-reply at appveyor.com Sat Feb 16 12:32:58 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sat, 16 Feb 2019 12:32:58 +0000 Subject: Build completed: openssl master.22554 Message-ID: <20190216123258.1.F9C5481354969FEE@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Sat Feb 16 12:49:36 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sat, 16 Feb 2019 12:49:36 +0000 Subject: Build failed: openssl master.22555 Message-ID: <20190216124936.1.1A651DC11C73EEAB@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Sat Feb 16 16:00:03 2019 From: levitte at openssl.org (Richard Levitte) Date: Sat, 16 Feb 2019 16:00:03 +0000 Subject: [openssl] master update Message-ID: <1550332803.101777.30649.nullmailer@dev.openssl.org> The branch master has been updated via 3405db97e5448c784729b56837f3f8c776a01067 (commit) from b2b580fe445e064da50c13d3e00f71022da16ece (commit) - Log ----------------------------------------------------------------- commit 3405db97e5448c784729b56837f3f8c776a01067 Author: Andy Polyakov Date: Fri Feb 15 09:44:39 2019 +0100 ARM assembly pack: make it Windows-friendly. "Windows friendliness" means a) flipping .thumb and .text directives, b) always generate Thumb-2 code when asked(*); c) Windows-specific references to external OPENSSL_armcap_P. (*) so far *some* modules were compiled as .code 32 even if Thumb-2 was targeted. It works at hardware level because processor can alternate between the modes with no overhead. But clang --target=arm-windows's builtin assembler just refuses to compile .code 32... Reviewed-by: Paul Dale Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8252) ----------------------------------------------------------------------- Summary of changes: crypto/aes/asm/aes-armv4.pl | 3 ++- crypto/aes/asm/aesv8-armx.pl | 24 +++++++++++++----- crypto/aes/asm/bsaes-armv7.pl | 7 ++--- crypto/armv4cpuid.pl | 3 ++- crypto/bn/asm/armv4-gf2m.pl | 13 +++++++--- crypto/bn/asm/armv4-mont.pl | 17 +++++++++---- crypto/chacha/asm/chacha-armv4.pl | 11 ++++++-- crypto/ec/asm/ecp_nistz256-armv4.pl | 4 ++- crypto/modes/asm/ghash-armv4.pl | 3 ++- crypto/modes/asm/ghashv8-armx.pl | 26 ++++++++++++++----- crypto/perlasm/arm-xlate.pl | 7 +++++ crypto/poly1305/asm/poly1305-armv4.pl | 48 +++++++++++++++++------------------ crypto/sha/asm/keccak1600-armv4.pl | 34 ++++++++++++++++++++++--- crypto/sha/asm/sha1-armv4-large.pl | 20 ++++++++++----- crypto/sha/asm/sha256-armv4.pl | 18 +++++++++---- crypto/sha/asm/sha512-armv4.pl | 20 +++++++++++---- 16 files changed, 185 insertions(+), 73 deletions(-) diff --git a/crypto/aes/asm/aes-armv4.pl b/crypto/aes/asm/aes-armv4.pl index abb2cc7..456a469 100644 --- a/crypto/aes/asm/aes-armv4.pl +++ b/crypto/aes/asm/aes-armv4.pl @@ -76,7 +76,6 @@ $code=<<___; # define __ARM_ARCH__ __LINUX_ARM_ARCH__ #endif -.text #if defined(__thumb2__) && !defined(__APPLE__) .syntax unified .thumb @@ -85,6 +84,8 @@ $code=<<___; #undef __thumb2__ #endif +.text + .type AES_Te,%object .align 5 AES_Te: diff --git a/crypto/aes/asm/aesv8-armx.pl b/crypto/aes/asm/aesv8-armx.pl index 9ab2158..81bc1cb 100755 --- a/crypto/aes/asm/aesv8-armx.pl +++ b/crypto/aes/asm/aesv8-armx.pl @@ -53,18 +53,27 @@ open OUT,"| \"$^X\" $xlate $flavour $output"; $prefix="aes_v8"; +$_byte = ($flavour =~ /win/ ? "DCB" : ".byte"); + $code=<<___; #include "arm_arch.h" #if __ARM_MAX_ARCH__>=7 -.text ___ -$code.=".arch armv8-a+crypto\n" if ($flavour =~ /64/); +$code.=".arch armv8-a+crypto\n.text\n" if ($flavour =~ /64/); $code.=<<___ if ($flavour !~ /64/); .arch armv7-a // don't confuse not-so-latest binutils with argv8 :-) .fpu neon +#ifdef __thumb2__ +.syntax unified +.thumb +# define INST(a,b,c,d) $_byte c,d|0xc,a,b +#else .code 32 -#undef __thumb2__ +# define INST(a,b,c,d) $_byte a,b,c,d +#endif + +.text ___ # Assembler mnemonics are an eclectic mix of 32- and 64-bit syntax, @@ -955,7 +964,7 @@ if ($flavour =~ /64/) { ######## 64-bit code # since ARMv7 instructions are always encoded little-endian. # correct solution is to use .inst directive, but older # assemblers don't implement it:-( - sprintf ".byte\t0x%02x,0x%02x,0x%02x,0x%02x\t@ %s %s", + sprintf "INST(0x%02x,0x%02x,0x%02x,0x%02x)\t@ %s %s", $word&0xff,($word>>8)&0xff, ($word>>16)&0xff,($word>>24)&0xff, $mnemonic,$arg; @@ -996,14 +1005,17 @@ if ($flavour =~ /64/) { ######## 64-bit code s/\],#[0-9]+/]!/o; s/[v]?(aes\w+)\s+([qv].*)/unaes($1,$2)/geo or - s/cclr\s+([^,]+),\s*([a-z]+)/mov$2 $1,#0/o or + s/cclr\s+([^,]+),\s*([a-z]+)/mov.$2 $1,#0/o or s/vtbl\.8\s+(.*)/unvtbl($1)/geo or s/vdup\.32\s+(.*)/unvdup32($1)/geo or s/vmov\.32\s+(.*)/unvmov32($1)/geo or s/^(\s+)b\./$1b/o or - s/^(\s+)mov\./$1mov/o or s/^(\s+)ret/$1bx\tlr/o; + if (s/^(\s+)mov\.([a-z]+)/$1mov$2/) { + print " it $2\n"; + } + print $_,"\n"; } } diff --git a/crypto/aes/asm/bsaes-armv7.pl b/crypto/aes/asm/bsaes-armv7.pl index 5df195b..7f5219b 100644 --- a/crypto/aes/asm/bsaes-armv7.pl +++ b/crypto/aes/asm/bsaes-armv7.pl @@ -728,7 +728,6 @@ $code.=<<___; .arch armv7-a .fpu neon -.text .syntax unified @ ARMv7-capable assembler is expected to handle this #if defined(__thumb2__) && !defined(__APPLE__) .thumb @@ -737,6 +736,8 @@ $code.=<<___; # undef __thumb2__ #endif +.text + .type _bsaes_decrypt8,%function .align 4 _bsaes_decrypt8: @@ -1125,9 +1126,9 @@ bsaes_cbc_encrypt: #ifndef __thumb__ blo AES_cbc_encrypt #else - bhs 1f + bhs .Lcbc_do_bsaes b AES_cbc_encrypt -1: +.Lcbc_do_bsaes: #endif #endif diff --git a/crypto/armv4cpuid.pl b/crypto/armv4cpuid.pl index 3a7be6e..f8aeec6 100644 --- a/crypto/armv4cpuid.pl +++ b/crypto/armv4cpuid.pl @@ -21,7 +21,6 @@ open OUT,"| \"$^X\" $xlate $flavour $output"; $code.=<<___; #include "arm_arch.h" -.text #if defined(__thumb2__) && !defined(__APPLE__) .syntax unified .thumb @@ -30,6 +29,8 @@ $code.=<<___; #undef __thumb2__ #endif +.text + .align 5 .global OPENSSL_atomic_add .type OPENSSL_atomic_add,%function diff --git a/crypto/bn/asm/armv4-gf2m.pl b/crypto/bn/asm/armv4-gf2m.pl index 442ae46..0bf6f63 100644 --- a/crypto/bn/asm/armv4-gf2m.pl +++ b/crypto/bn/asm/armv4-gf2m.pl @@ -57,13 +57,14 @@ if ($flavour && $flavour ne "void") { $code=<<___; #include "arm_arch.h" -.text #if defined(__thumb2__) .syntax unified .thumb #else .code 32 #endif + +.text ___ ################ # private interface to mul_1x1_ialu @@ -176,11 +177,13 @@ bn_GF2m_mul_2x2: #if __ARM_MAX_ARCH__>=7 stmdb sp!,{r10,lr} ldr r12,.LOPENSSL_armcap +# if !defined(_WIN32) adr r10,.LOPENSSL_armcap ldr r12,[r12,r10] -#ifdef __APPLE__ +# endif +# if defined(__APPLE__) || defined(_WIN32) ldr r12,[r12] -#endif +# endif tst r12,#ARMV7_NEON itt ne ldrne r10,[sp],#8 @@ -310,7 +313,11 @@ $code.=<<___; #if __ARM_MAX_ARCH__>=7 .align 5 .LOPENSSL_armcap: +# ifdef _WIN32 +.word OPENSSL_armcap_P +# else .word OPENSSL_armcap_P-. +# endif #endif .asciz "GF(2^m) Multiplication for ARMv4/NEON, CRYPTOGAMS by " .align 5 diff --git a/crypto/bn/asm/armv4-mont.pl b/crypto/bn/asm/armv4-mont.pl index b4f6c06..7e0a4d8 100644 --- a/crypto/bn/asm/armv4-mont.pl +++ b/crypto/bn/asm/armv4-mont.pl @@ -97,7 +97,6 @@ $_num="$num,#15*4"; $_bpend=$_num; $code=<<___; #include "arm_arch.h" -.text #if defined(__thumb2__) .syntax unified .thumb @@ -105,10 +104,16 @@ $code=<<___; .code 32 #endif +.text + #if __ARM_MAX_ARCH__>=7 .align 5 .LOPENSSL_armcap: +# ifdef _WIN32 +.word OPENSSL_armcap_P +# else .word OPENSSL_armcap_P-.Lbn_mul_mont +# endif #endif .global bn_mul_mont @@ -122,12 +127,14 @@ bn_mul_mont: #if __ARM_MAX_ARCH__>=7 tst ip,#7 bne .Lialu - adr r0,.Lbn_mul_mont - ldr r2,.LOPENSSL_armcap + ldr r0,.LOPENSSL_armcap +#if !defined(_WIN32) + adr r2,.Lbn_mul_mont ldr r0,[r0,r2] -#ifdef __APPLE__ +# endif +# if defined(__APPLE__) || defined(_WIN32) ldr r0,[r0] -#endif +# endif tst r0,#ARMV7_NEON @ NEON available? ldmia sp, {r0,r2} beq .Lialu diff --git a/crypto/chacha/asm/chacha-armv4.pl b/crypto/chacha/asm/chacha-armv4.pl index 9bbfc6b..c440296 100755 --- a/crypto/chacha/asm/chacha-armv4.pl +++ b/crypto/chacha/asm/chacha-armv4.pl @@ -171,7 +171,6 @@ my @ret; $code.=<<___; #include "arm_arch.h" -.text #if defined(__thumb2__) || defined(__clang__) .syntax unified #endif @@ -185,6 +184,8 @@ $code.=<<___; #define ldrhsb ldrbhs #endif +.text + .align 5 .Lsigma: .long 0x61707865,0x3320646e,0x79622d32,0x6b206574 @ endian-neutral @@ -192,7 +193,11 @@ $code.=<<___; .long 1,0,0,0 #if __ARM_MAX_ARCH__>=7 .LOPENSSL_armcap: +# ifdef _WIN32 +.word OPENSSL_armcap_P +# else .word OPENSSL_armcap_P-.LChaCha20_ctr32 +# endif #else .word -1 #endif @@ -219,8 +224,10 @@ ChaCha20_ctr32: cmp r2,#192 @ test len bls .Lshort ldr r4,[r14,#-32] +# if !defined(_WIN32) ldr r4,[r14,r4] -# ifdef __APPLE__ +# endif +# if defined(__APPLE__) || defined(_WIN32) ldr r4,[r4] # endif tst r4,#ARMV7_NEON diff --git a/crypto/ec/asm/ecp_nistz256-armv4.pl b/crypto/ec/asm/ecp_nistz256-armv4.pl index 4005a6f..43a675b 100755 --- a/crypto/ec/asm/ecp_nistz256-armv4.pl +++ b/crypto/ec/asm/ecp_nistz256-armv4.pl @@ -51,7 +51,6 @@ if ($flavour && $flavour ne "void") { $code.=<<___; #include "arm_arch.h" -.text #if defined(__thumb2__) .syntax unified .thumb @@ -80,6 +79,7 @@ close TABLE; die "insane number of elements" if ($#arr != 64*16*37-1); $code.=<<___; +.rodata .globl ecp_nistz256_precomputed .type ecp_nistz256_precomputed,%object .align 12 @@ -104,6 +104,8 @@ for(1..37) { } $code.=<<___; .size ecp_nistz256_precomputed,.-ecp_nistz256_precomputed + +.text .align 5 .LRR: @ 2^512 mod P precomputed for NIST P256 polynomial .long 0x00000003, 0x00000000, 0xffffffff, 0xfffffffb diff --git a/crypto/modes/asm/ghash-armv4.pl b/crypto/modes/asm/ghash-armv4.pl index 759d29c..1391b1b 100644 --- a/crypto/modes/asm/ghash-armv4.pl +++ b/crypto/modes/asm/ghash-armv4.pl @@ -142,7 +142,6 @@ ___ $code=<<___; #include "arm_arch.h" -.text #if defined(__thumb2__) || defined(__clang__) .syntax unified #define ldrplb ldrbpl @@ -154,6 +153,8 @@ $code=<<___; .code 32 #endif +.text + .type rem_4bit,%object .align 5 rem_4bit: diff --git a/crypto/modes/asm/ghashv8-armx.pl b/crypto/modes/asm/ghashv8-armx.pl index ea05950..e891583 100644 --- a/crypto/modes/asm/ghashv8-armx.pl +++ b/crypto/modes/asm/ghashv8-armx.pl @@ -66,18 +66,26 @@ $inc="x12"; { my ($Xl,$Xm,$Xh,$IN)=map("q$_",(0..3)); my ($t0,$t1,$t2,$xC2,$H,$Hhl,$H2)=map("q$_",(8..14)); +my $_byte = ($flavour =~ /win/ ? "DCB" : ".byte"); $code=<<___; #include "arm_arch.h" #if __ARM_MAX_ARCH__>=7 -.text ___ -$code.=".arch armv8-a+crypto\n" if ($flavour =~ /64/); -$code.=<<___ if ($flavour !~ /64/); +$code.=".arch armv8-a+crypto\n.text\n" if ($flavour =~ /64/); +$code.=<<___ if ($flavour !~ /64/); .fpu neon -.code 32 -#undef __thumb2__ +#ifdef __thumb2__ +.syntax unified +.thumb +# define INST(a,b,c,d) $_byte c,0xef,a,b +#else +.code 32 +# define INST(a,b,c,d) $_byte a,b,c,0xf2 +#endif + +.text ___ ################################################################################ @@ -752,7 +760,7 @@ if ($flavour =~ /64/) { ######## 64-bit code # since ARMv7 instructions are always encoded little-endian. # correct solution is to use .inst directive, but older # assemblers don't implement it:-( - sprintf ".byte\t0x%02x,0x%02x,0x%02x,0x%02x\t@ %s %s", + sprintf "INST(0x%02x,0x%02x,0x%02x,0x%02x)\t@ %s %s", $word&0xff,($word>>8)&0xff, ($word>>16)&0xff,($word>>24)&0xff, $mnemonic,$arg; @@ -767,13 +775,17 @@ if ($flavour =~ /64/) { ######## 64-bit code # fix up remaining new-style suffixes s/\],#[0-9]+/]!/o; - s/cclr\s+([^,]+),\s*([a-z]+)/mov$2 $1,#0/o or + s/cclr\s+([^,]+),\s*([a-z]+)/mov.$2 $1,#0/o or s/vdup\.32\s+(.*)/unvdup32($1)/geo or s/v?(pmull2?)\.p64\s+(.*)/unvpmullp64($1,$2)/geo or s/\bq([0-9]+)#(lo|hi)/sprintf "d%d",2*$1+($2 eq "hi")/geo or s/^(\s+)b\./$1b/o or s/^(\s+)ret/$1bx\tlr/o; + if (s/^(\s+)mov\.([a-z]+)/$1mov$2/) { + print " it $2\n"; + } + print $_,"\n"; } } diff --git a/crypto/perlasm/arm-xlate.pl b/crypto/perlasm/arm-xlate.pl index d78a8ba..b953f1f 100755 --- a/crypto/perlasm/arm-xlate.pl +++ b/crypto/perlasm/arm-xlate.pl @@ -28,6 +28,13 @@ my $fpu = sub { if ($flavour =~ /linux/) { ".fpu\t".join(',', at _); } else { ""; } }; +my $rodata = sub { + SWITCH: for ($flavour) { + /linux/ && return ".section\t.rodata"; + /ios/ && return ".section\t__TEXT,__const"; + last; + } +}; my $hidden = sub { if ($flavour =~ /ios/) { ".private_extern\t".join(',', at _); } else { ".hidden\t".join(',', at _); } diff --git a/crypto/poly1305/asm/poly1305-armv4.pl b/crypto/poly1305/asm/poly1305-armv4.pl index 7003cc7..38622af 100755 --- a/crypto/poly1305/asm/poly1305-armv4.pl +++ b/crypto/poly1305/asm/poly1305-armv4.pl @@ -48,7 +48,6 @@ if ($flavour && $flavour ne "void") { $code.=<<___; #include "arm_arch.h" -.text #if defined(__thumb2__) .syntax unified .thumb @@ -56,6 +55,8 @@ $code.=<<___; .code 32 #endif +.text + .globl poly1305_emit .globl poly1305_blocks .globl poly1305_init @@ -100,8 +101,10 @@ poly1305_init: and r4,r4,r10 #if __ARM_MAX_ARCH__>=7 +# if !defined(_WIN32) ldr r12,[r11,r12] @ OPENSSL_armcap_P -# ifdef __APPLE__ +# endif +# if defined(__APPLE__) || defined(_WIN32) ldr r12,[r12] # endif #endif @@ -116,31 +119,21 @@ poly1305_init: #if __ARM_MAX_ARCH__>=7 tst r12,#ARMV7_NEON @ check for NEON -# ifdef __APPLE__ - adr r9,poly1305_blocks_neon - adr r11,poly1305_blocks -# ifdef __thumb2__ - it ne -# endif +# ifdef __thumb2__ + adr r9,.Lpoly1305_blocks_neon + adr r11,.Lpoly1305_blocks + adr r12,.Lpoly1305_emit + adr r10,.Lpoly1305_emit_neon + itt ne movne r11,r9 - adr r12,poly1305_emit - adr r10,poly1305_emit_neon -# ifdef __thumb2__ - it ne -# endif movne r12,r10 + orr r11,r11,#1 @ thumb-ify address + orr r12,r12,#1 # else -# ifdef __thumb2__ - itete eq -# endif - addeq r12,r11,#(poly1305_emit-.Lpoly1305_init) - addne r12,r11,#(poly1305_emit_neon-.Lpoly1305_init) - addeq r11,r11,#(poly1305_blocks-.Lpoly1305_init) - addne r11,r11,#(poly1305_blocks_neon-.Lpoly1305_init) -# endif -# ifdef __thumb2__ - orr r12,r12,#1 @ thumb-ify address - orr r11,r11,#1 + addeq r12,r11,#(.Lpoly1305_emit-.Lpoly1305_init) + addne r12,r11,#(.Lpoly1305_emit_neon-.Lpoly1305_init) + addeq r11,r11,#(.Lpoly1305_blocks-.Lpoly1305_init) + addne r11,r11,#(.Lpoly1305_blocks_neon-.Lpoly1305_init) # endif #endif ldrb r9,[$inp,#11] @@ -352,6 +345,7 @@ $code.=<<___; .type poly1305_emit,%function .align 5 poly1305_emit: +.Lpoly1305_emit: stmdb sp!,{r4-r11} .Lpoly1305_emit_enter: @@ -671,6 +665,7 @@ poly1305_init_neon: .type poly1305_blocks_neon,%function .align 5 poly1305_blocks_neon: +.Lpoly1305_blocks_neon: ldr ip,[$ctx,#36] @ is_base2_26 ands $len,$len,#-16 beq .Lno_data_neon @@ -1157,6 +1152,7 @@ poly1305_blocks_neon: .type poly1305_emit_neon,%function .align 5 poly1305_emit_neon: +.Lpoly1305_emit_neon: ldr ip,[$ctx,#36] @ is_base2_26 stmdb sp!,{r4-r11} @@ -1229,7 +1225,11 @@ poly1305_emit_neon: .Lzeros: .long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .LOPENSSL_armcap: +# ifdef _WIN32 +.word OPENSSL_armcap_P +# else .word OPENSSL_armcap_P-.Lpoly1305_init +# endif #endif ___ } } diff --git a/crypto/sha/asm/keccak1600-armv4.pl b/crypto/sha/asm/keccak1600-armv4.pl index 44504fa..be411ed 100755 --- a/crypto/sha/asm/keccak1600-armv4.pl +++ b/crypto/sha/asm/keccak1600-armv4.pl @@ -113,8 +113,6 @@ my @T = map([ 8*$_, 8*($_+1), 8*($_+2), 8*($_+3), 8*($_+4) ], (30,35,40,45,50)); $code.=<<___; #include "arm_arch.h" -.text - #if defined(__thumb2__) .syntax unified .thumb @@ -122,6 +120,8 @@ $code.=<<___; .code 32 #endif +.text + .type iotas32, %object .align 5 iotas32: @@ -691,7 +691,14 @@ ___ $code.=<<___; blo .Lround2x +#if __ARM_ARCH__>=5 ldr pc,[sp,#440] +#else + ldr lr,[sp,#440] + tst lr,#1 + moveq pc,lr @ be binary compatible with V4, yet + bx lr @ interoperable with Thumb ISA:-) +#endif .size KeccakF1600_int,.-KeccakF1600_int .type KeccakF1600, %function @@ -730,7 +737,14 @@ KeccakF1600: stmia @E[1], {@C[0]- at C[9]} add sp,sp,#440+20 +#if __ARM_ARCH__>=5 ldmia sp!,{r4-r11,pc} +#else + ldmia sp!,{r4-r11,lr} + tst lr,#1 + moveq pc,lr @ be binary compatible with V4, yet + bx lr @ interoperable with Thumb ISA:-) +#endif .size KeccakF1600,.-KeccakF1600 ___ { my ($A_flat,$inp,$len,$bsz) = map("r$_",(10..12,14)); @@ -905,7 +919,14 @@ SHA3_absorb: .Labsorb_abort: add sp,sp,#456+32 mov r0,$len @ return value +#if __ARM_ARCH__>=5 ldmia sp!,{r4-r12,pc} +#else + ldmia sp!,{r4-r12,lr} + tst lr,#1 + moveq pc,lr @ be binary compatible with V4, yet + bx lr @ interoperable with Thumb ISA:-) +#endif .size SHA3_absorb,.-SHA3_absorb ___ } @@ -1055,7 +1076,14 @@ SHA3_squeeze: .align 4 .Lsqueeze_done: add sp,sp,#24 +#if __ARM_ARCH__>=5 ldmia sp!,{r4-r10,pc} +#else + ldmia sp!,{r4-r10,lr} + tst lr,#1 + moveq pc,lr @ be binary compatible with V4, yet + bx lr @ interoperable with Thumb ISA:-) +#endif .size SHA3_squeeze,.-SHA3_squeeze ___ } @@ -1265,7 +1293,7 @@ KeccakF1600_neon: subs r3, r3, #1 bne .Loop_neon - bx lr + ret .size KeccakF1600_neon,.-KeccakF1600_neon .global SHA3_absorb_neon diff --git a/crypto/sha/asm/sha1-armv4-large.pl b/crypto/sha/asm/sha1-armv4-large.pl index cdacbd4..cd0b95a 100644 --- a/crypto/sha/asm/sha1-armv4-large.pl +++ b/crypto/sha/asm/sha1-armv4-large.pl @@ -187,7 +187,6 @@ ___ $code=<<___; #include "arm_arch.h" -.text #if defined(__thumb2__) .syntax unified .thumb @@ -195,6 +194,8 @@ $code=<<___; .code 32 #endif +.text + .global sha1_block_data_order .type sha1_block_data_order,%function @@ -202,12 +203,14 @@ $code=<<___; sha1_block_data_order: #if __ARM_MAX_ARCH__>=7 .Lsha1_block: - adr r3,.Lsha1_block ldr r12,.LOPENSSL_armcap +# if !defined(_WIN32) + adr r3,.Lsha1_block ldr r12,[r3,r12] @ OPENSSL_armcap_P -#ifdef __APPLE__ +# endif +# if defined(__APPLE__) || defined(_WIN32) ldr r12,[r12] -#endif +# endif tst r12,#ARMV8_SHA1 bne .LARMv8 tst r12,#ARMV7_NEON @@ -311,7 +314,11 @@ $code.=<<___; .LK_60_79: .word 0xca62c1d6 #if __ARM_MAX_ARCH__>=7 .LOPENSSL_armcap: +# ifdef _WIN32 +.word OPENSSL_armcap_P +# else .word OPENSSL_armcap_P-.Lsha1_block +# endif #endif .asciz "SHA1 block transform for ARMv4/NEON/ARMv8, CRYPTOGAMS by " .align 5 @@ -613,14 +620,15 @@ my ($ABCD,$E,$E0,$E1)=map("q$_",(0..3)); my @MSG=map("q$_",(4..7)); my @Kxx=map("q$_",(8..11)); my ($W0,$W1,$ABCD_SAVE)=map("q$_",(12..14)); +my $_byte = ($flavour =~ /win/ ? "DCB" : ".byte"); $code.=<<___; #if __ARM_MAX_ARCH__>=7 # if defined(__thumb2__) -# define INST(a,b,c,d) .byte c,d|0xf,a,b +# define INST(a,b,c,d) $_byte c,d|0xf,a,b # else -# define INST(a,b,c,d) .byte a,b,c,d|0x10 +# define INST(a,b,c,d) $_byte a,b,c,d|0x10 # endif .type sha1_block_data_order_armv8,%function diff --git a/crypto/sha/asm/sha256-armv4.pl b/crypto/sha/asm/sha256-armv4.pl index e0512b4..cd01fcb 100644 --- a/crypto/sha/asm/sha256-armv4.pl +++ b/crypto/sha/asm/sha256-armv4.pl @@ -181,7 +181,6 @@ $code=<<___; # define __ARM_MAX_ARCH__ 7 #endif -.text #if defined(__thumb2__) .syntax unified .thumb @@ -189,6 +188,8 @@ $code=<<___; .code 32 #endif +.text + .type K256,%object .align 5 K256: @@ -212,7 +213,11 @@ K256: .word 0 @ terminator #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) .LOPENSSL_armcap: +# ifdef _WIN32 +.word OPENSSL_armcap_P +# else .word OPENSSL_armcap_P-.Lsha256_block_data_order +# endif #endif .align 5 @@ -227,10 +232,12 @@ sha256_block_data_order: #endif #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) ldr r12,.LOPENSSL_armcap +# if !defined(_WIN32) ldr r12,[r3,r12] @ OPENSSL_armcap_P -#ifdef __APPLE__ +# endif +# if defined(__APPLE__) || defined(_WIN32) ldr r12,[r12] -#endif +# endif tst r12,#ARMV8_SHA256 bne .LARMv8 tst r12,#ARMV7_NEON @@ -598,14 +605,15 @@ my ($ABCD,$EFGH,$abcd)=map("q$_",(0..2)); my @MSG=map("q$_",(8..11)); my ($W0,$W1,$ABCD_SAVE,$EFGH_SAVE)=map("q$_",(12..15)); my $Ktbl="r3"; +my $_byte = ($flavour =~ /win/ ? "DCB" : ".byte"); $code.=<<___; #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) # if defined(__thumb2__) -# define INST(a,b,c,d) .byte c,d|0xc,a,b +# define INST(a,b,c,d) $_byte c,d|0xc,a,b # else -# define INST(a,b,c,d) .byte a,b,c,d +# define INST(a,b,c,d) $_byte a,b,c,d # endif .type sha256_block_data_order_armv8,%function diff --git a/crypto/sha/asm/sha512-armv4.pl b/crypto/sha/asm/sha512-armv4.pl index 795c4cb..39c943b 100644 --- a/crypto/sha/asm/sha512-armv4.pl +++ b/crypto/sha/asm/sha512-armv4.pl @@ -196,6 +196,9 @@ $code.=<<___; add $Ktbl,$Ktbl,#8 ___ } + +my $_word = ($flavour =~ /win/ ? "DCDU" : ".word"); + $code=<<___; #ifndef __KERNEL__ # include "arm_arch.h" @@ -211,14 +214,13 @@ $code=<<___; #ifdef __ARMEL__ # define LO 0 # define HI 4 -# define WORD64(hi0,lo0,hi1,lo1) .word lo0,hi0, lo1,hi1 +# define WORD64(hi0,lo0,hi1,lo1) $_word lo0,hi0, lo1,hi1 #else # define HI 0 # define LO 4 -# define WORD64(hi0,lo0,hi1,lo1) .word hi0,lo0, hi1,lo1 +# define WORD64(hi0,lo0,hi1,lo1) $_word hi0,lo0, hi1,lo1 #endif -.text #if defined(__thumb2__) .syntax unified .thumb @@ -227,6 +229,8 @@ $code=<<___; .code 32 #endif +.text + .type K512,%object .align 5 K512: @@ -273,7 +277,11 @@ WORD64(0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817) .size K512,.-K512 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) .LOPENSSL_armcap: +# ifdef _WIN32 +.word OPENSSL_armcap_P +# else .word OPENSSL_armcap_P-.Lsha512_block_data_order +# endif .skip 32-4 #else .skip 32 @@ -290,10 +298,12 @@ sha512_block_data_order: #endif #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) ldr r12,.LOPENSSL_armcap +# if !defined(_WIN32) ldr r12,[r3,r12] @ OPENSSL_armcap_P -#ifdef __APPLE__ +# endif +# if defined(__APPLE__) || defined(_WIN32) ldr r12,[r12] -#endif +# endif tst r12,#ARMV7_NEON bne .LNEON #endif From levitte at openssl.org Sat Feb 16 16:02:25 2019 From: levitte at openssl.org (Richard Levitte) Date: Sat, 16 Feb 2019 16:02:25 +0000 Subject: [openssl] master update Message-ID: <1550332945.753365.32172.nullmailer@dev.openssl.org> The branch master has been updated via db42bb440e76399b89fc8ae04644441a2a5f6821 (commit) from 3405db97e5448c784729b56837f3f8c776a01067 (commit) - Log ----------------------------------------------------------------- commit db42bb440e76399b89fc8ae04644441a2a5f6821 Author: Andy Polyakov Date: Fri Feb 15 22:16:41 2019 +0100 ARM64 assembly pack: make it Windows-friendly. "Windows friendliness" means a) unified PIC-ification, unified across all platforms; b) unified commantary delimiter; c) explicit ldur/stur, as Visual Studio assembler can't automatically encode ldr/str as ldur/stur when needed. Reviewed-by: Paul Dale Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8256) ----------------------------------------------------------------------- Summary of changes: crypto/aes/asm/vpaes-armv8.pl | 276 +++++++++++++++++----------------- crypto/bn/asm/armv8-mont.pl | 16 +- crypto/chacha/asm/chacha-armv8.pl | 19 +-- crypto/ec/asm/ecp_nistz256-armv8.pl | 6 +- crypto/perlasm/arm-xlate.pl | 10 ++ crypto/poly1305/asm/poly1305-armv8.pl | 31 ++-- crypto/sha/asm/sha1-armv8.pl | 30 ++-- crypto/sha/asm/sha512-armv8.pl | 23 +-- 8 files changed, 191 insertions(+), 220 deletions(-) diff --git a/crypto/aes/asm/vpaes-armv8.pl b/crypto/aes/asm/vpaes-armv8.pl index ece9f20..f08ae58 100755 --- a/crypto/aes/asm/vpaes-armv8.pl +++ b/crypto/aes/asm/vpaes-armv8.pl @@ -150,12 +150,12 @@ my ($sb1u,$sb1t,$sb2u,$sb2t) = map("v$_.16b",(24..27)); my ($sb9u,$sb9t,$sbdu,$sbdt,$sbbu,$sbbt,$sbeu,$sbet)=map("v$_.16b",(24..31)); $code.=<<___; -## -## _aes_preheat -## -## Fills register %r10 -> .aes_consts (so you can -fPIC) -## and %xmm9-%xmm15 as specified below. -## +// +// _aes_preheat +// +// Fills register %r10 -> .aes_consts (so you can -fPIC) +// and %xmm9-%xmm15 as specified below. +// .type _vpaes_encrypt_preheat,%function .align 4 _vpaes_encrypt_preheat: @@ -167,21 +167,21 @@ _vpaes_encrypt_preheat: ret .size _vpaes_encrypt_preheat,.-_vpaes_encrypt_preheat -## -## _aes_encrypt_core -## -## AES-encrypt %xmm0. -## -## Inputs: -## %xmm0 = input -## %xmm9-%xmm15 as in _vpaes_preheat -## (%rdx) = scheduled keys -## -## Output in %xmm0 -## Clobbers %xmm1-%xmm5, %r9, %r10, %r11, %rax -## Preserves %xmm6 - %xmm8 so you get some local vectors -## -## +// +// _aes_encrypt_core +// +// AES-encrypt %xmm0. +// +// Inputs: +// %xmm0 = input +// %xmm9-%xmm15 as in _vpaes_preheat +// (%rdx) = scheduled keys +// +// Output in %xmm0 +// Clobbers %xmm1-%xmm5, %r9, %r10, %r11, %rax +// Preserves %xmm6 - %xmm8 so you get some local vectors +// +// .type _vpaes_encrypt_core,%function .align 4 _vpaes_encrypt_core: @@ -387,11 +387,11 @@ _vpaes_decrypt_preheat: ret .size _vpaes_decrypt_preheat,.-_vpaes_decrypt_preheat -## -## Decryption core -## -## Same API as encryption core. -## +// +// Decryption core +// +// Same API as encryption core. +// .type _vpaes_decrypt_core,%function .align 4 _vpaes_decrypt_core: @@ -643,11 +643,11 @@ my ($inp,$bits,$out,$dir)=("x0","w1","x2","w3"); my ($invlo,$invhi,$iptlo,$ipthi,$rcon) = map("v$_.16b",(18..21,8)); $code.=<<___; -######################################################## -## ## -## AES key schedule ## -## ## -######################################################## +//////////////////////////////////////////////////////// +// // +// AES key schedule // +// // +//////////////////////////////////////////////////////// .type _vpaes_key_preheat,%function .align 4 _vpaes_key_preheat: @@ -703,14 +703,14 @@ _vpaes_schedule_core: b.eq .Lschedule_192 // 128: fall though -## -## .schedule_128 -## -## 128-bit specific part of key schedule. -## -## This schedule is really simple, because all its parts -## are accomplished by the subroutines. -## +// +// .schedule_128 +// +// 128-bit specific part of key schedule. +// +// This schedule is really simple, because all its parts +// are accomplished by the subroutines. +// .Lschedule_128: mov $inp, #10 // mov \$10, %esi @@ -721,21 +721,21 @@ _vpaes_schedule_core: bl _vpaes_schedule_mangle // write output b .Loop_schedule_128 -## -## .aes_schedule_192 -## -## 192-bit specific part of key schedule. -## -## The main body of this schedule is the same as the 128-bit -## schedule, but with more smearing. The long, high side is -## stored in %xmm7 as before, and the short, low side is in -## the high bits of %xmm6. -## -## This schedule is somewhat nastier, however, because each -## round produces 192 bits of key material, or 1.5 round keys. -## Therefore, on each cycle we do 2 rounds and produce 3 round -## keys. -## +// +// .aes_schedule_192 +// +// 192-bit specific part of key schedule. +// +// The main body of this schedule is the same as the 128-bit +// schedule, but with more smearing. The long, high side is +// stored in %xmm7 as before, and the short, low side is in +// the high bits of %xmm6. +// +// This schedule is somewhat nastier, however, because each +// round produces 192 bits of key material, or 1.5 round keys. +// Therefore, on each cycle we do 2 rounds and produce 3 round +// keys. +// .align 4 .Lschedule_192: sub $inp, $inp, #8 @@ -759,16 +759,16 @@ _vpaes_schedule_core: bl _vpaes_schedule_192_smear b .Loop_schedule_192 -## -## .aes_schedule_256 -## -## 256-bit specific part of key schedule. -## -## The structure here is very similar to the 128-bit -## schedule, but with an additional "low side" in -## %xmm6. The low side's rounds are the same as the -## high side's, except no rcon and no rotation. -## +// +// .aes_schedule_256 +// +// 256-bit specific part of key schedule. +// +// The structure here is very similar to the 128-bit +// schedule, but with an additional "low side" in +// %xmm6. The low side's rounds are the same as the +// high side's, except no rcon and no rotation. +// .align 4 .Lschedule_256: ld1 {v0.16b}, [$inp] // vmovdqu 16(%rdi),%xmm0 # load key part 2 (unaligned) @@ -795,16 +795,16 @@ _vpaes_schedule_core: b .Loop_schedule_256 -## -## .aes_schedule_mangle_last -## -## Mangler for last round of key schedule -## Mangles %xmm0 -## when encrypting, outputs out(%xmm0) ^ 63 -## when decrypting, outputs unskew(%xmm0) -## -## Always called right before return... jumps to cleanup and exits -## +// +// .aes_schedule_mangle_last +// +// Mangler for last round of key schedule +// Mangles %xmm0 +// when encrypting, outputs out(%xmm0) ^ 63 +// when decrypting, outputs unskew(%xmm0) +// +// Always called right before return... jumps to cleanup and exits +// .align 4 .Lschedule_mangle_last: // schedule last round key from xmm0 @@ -838,20 +838,20 @@ _vpaes_schedule_core: ret .size _vpaes_schedule_core,.-_vpaes_schedule_core -## -## .aes_schedule_192_smear -## -## Smear the short, low side in the 192-bit key schedule. -## -## Inputs: -## %xmm7: high side, b a x y -## %xmm6: low side, d c 0 0 -## %xmm13: 0 -## -## Outputs: -## %xmm6: b+c+d b+c 0 0 -## %xmm0: b+c+d b+c b a -## +// +// .aes_schedule_192_smear +// +// Smear the short, low side in the 192-bit key schedule. +// +// Inputs: +// %xmm7: high side, b a x y +// %xmm6: low side, d c 0 0 +// %xmm13: 0 +// +// Outputs: +// %xmm6: b+c+d b+c 0 0 +// %xmm0: b+c+d b+c b a +// .type _vpaes_schedule_192_smear,%function .align 4 _vpaes_schedule_192_smear: @@ -867,24 +867,24 @@ _vpaes_schedule_192_smear: ret .size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear -## -## .aes_schedule_round -## -## Runs one main round of the key schedule on %xmm0, %xmm7 -## -## Specifically, runs subbytes on the high dword of %xmm0 -## then rotates it by one byte and xors into the low dword of -## %xmm7. -## -## Adds rcon from low byte of %xmm8, then rotates %xmm8 for -## next rcon. -## -## Smears the dwords of %xmm7 by xoring the low into the -## second low, result into third, result into highest. -## -## Returns results in %xmm7 = %xmm0. -## Clobbers %xmm1-%xmm4, %r11. -## +// +// .aes_schedule_round +// +// Runs one main round of the key schedule on %xmm0, %xmm7 +// +// Specifically, runs subbytes on the high dword of %xmm0 +// then rotates it by one byte and xors into the low dword of +// %xmm7. +// +// Adds rcon from low byte of %xmm8, then rotates %xmm8 for +// next rcon. +// +// Smears the dwords of %xmm7 by xoring the low into the +// second low, result into third, result into highest. +// +// Returns results in %xmm7 = %xmm0. +// Clobbers %xmm1-%xmm4, %r11. +// .type _vpaes_schedule_round,%function .align 4 _vpaes_schedule_round: @@ -932,15 +932,15 @@ _vpaes_schedule_low_round: ret .size _vpaes_schedule_round,.-_vpaes_schedule_round -## -## .aes_schedule_transform -## -## Linear-transform %xmm0 according to tables at (%r11) -## -## Requires that %xmm9 = 0x0F0F... as in preheat -## Output in %xmm0 -## Clobbers %xmm1, %xmm2 -## +// +// .aes_schedule_transform +// +// Linear-transform %xmm0 according to tables at (%r11) +// +// Requires that %xmm9 = 0x0F0F... as in preheat +// Output in %xmm0 +// Clobbers %xmm1, %xmm2 +// .type _vpaes_schedule_transform,%function .align 4 _vpaes_schedule_transform: @@ -954,29 +954,29 @@ _vpaes_schedule_transform: ret .size _vpaes_schedule_transform,.-_vpaes_schedule_transform -## -## .aes_schedule_mangle -## -## Mangle xmm0 from (basis-transformed) standard version -## to our version. -## -## On encrypt, -## xor with 0x63 -## multiply by circulant 0,1,1,1 -## apply shiftrows transform -## -## On decrypt, -## xor with 0x63 -## multiply by "inverse mixcolumns" circulant E,B,D,9 -## deskew -## apply shiftrows transform -## -## -## Writes out to (%rdx), and increments or decrements it -## Keeps track of round number mod 4 in %r8 -## Preserves xmm0 -## Clobbers xmm1-xmm5 -## +// +// .aes_schedule_mangle +// +// Mangle xmm0 from (basis-transformed) standard version +// to our version. +// +// On encrypt, +// xor with 0x63 +// multiply by circulant 0,1,1,1 +// apply shiftrows transform +// +// On decrypt, +// xor with 0x63 +// multiply by "inverse mixcolumns" circulant E,B,D,9 +// deskew +// apply shiftrows transform +// +// +// Writes out to (%rdx), and increments or decrements it +// Keeps track of round number mod 4 in %r8 +// Preserves xmm0 +// Clobbers xmm1-xmm5 +// .type _vpaes_schedule_mangle,%function .align 4 _vpaes_schedule_mangle: diff --git a/crypto/bn/asm/armv8-mont.pl b/crypto/bn/asm/armv8-mont.pl index c09c783..c755555 100755 --- a/crypto/bn/asm/armv8-mont.pl +++ b/crypto/bn/asm/armv8-mont.pl @@ -197,7 +197,7 @@ bn_mul_mont: mul $nlo,$nj,$m1 // np[j]*m1 adds $lo1,$lo1,$lo0 umulh $nhi,$nj,$m1 - str $lo1,[$tp,#-16] // tp[j-1] + stur $lo1,[$tp,#-16] // tp[j-1] cbnz $j,.Linner .Linner_skip: @@ -253,13 +253,13 @@ bn_mul_mont: csel $nj,$tj,$aj,lo // did it borrow? ldr $tj,[$tp],#8 ldr $aj,[$rp],#8 - str xzr,[$tp,#-16] // wipe tp - str $nj,[$rp,#-16] + stur xzr,[$tp,#-16] // wipe tp + stur $nj,[$rp,#-16] cbnz $num,.Lcond_copy csel $nj,$tj,$aj,lo - str xzr,[$tp,#-8] // wipe tp - str $nj,[$rp,#-8] + stur xzr,[$tp,#-8] // wipe tp + stur $nj,[$rp,#-8] ldp x19,x20,[x29,#16] mov sp,x29 @@ -596,7 +596,7 @@ __bn_sqr8x_mont: ldp $a4,$a5,[$tp,#8*4] ldp $a6,$a7,[$tp,#8*6] adds $acc0,$acc0,$a0 - ldr $n0,[$rp,#-8*8] + ldur $n0,[$rp,#-8*8] adcs $acc1,$acc1,$a1 ldp $a0,$a1,[$ap,#8*0] adcs $acc2,$acc2,$a2 @@ -794,7 +794,7 @@ $code.=<<___; //adc $carry,xzr,xzr // moved below cbz $cnt,.Lsqr8x8_post_condition - ldr $n0,[$tp,#-8*8] + ldur $n0,[$tp,#-8*8] ldp $a0,$a1,[$np,#8*0] ldp $a2,$a3,[$np,#8*2] ldp $a4,$a5,[$np,#8*4] @@ -852,7 +852,7 @@ $code.=<<___; ldp $a6,$a7,[$tp,#8*6] cbz $cnt,.Lsqr8x_tail_break - ldr $n0,[$rp,#-8*8] + ldur $n0,[$rp,#-8*8] adds $acc0,$acc0,$a0 adcs $acc1,$acc1,$a1 ldp $a0,$a1,[$np,#8*0] diff --git a/crypto/chacha/asm/chacha-armv8.pl b/crypto/chacha/asm/chacha-armv8.pl index cee787d..56ba1c3 100755 --- a/crypto/chacha/asm/chacha-armv8.pl +++ b/crypto/chacha/asm/chacha-armv8.pl @@ -131,12 +131,6 @@ $code.=<<___; .quad 0x3320646e61707865,0x6b20657479622d32 // endian-neutral .Lone: .long 1,0,0,0 -.LOPENSSL_armcap_P: -#ifdef __ILP32__ -.long OPENSSL_armcap_P-. -#else -.quad OPENSSL_armcap_P-. -#endif .asciz "ChaCha20 for ARMv8, CRYPTOGAMS by " .globl ChaCha20_ctr32 @@ -144,17 +138,13 @@ $code.=<<___; .align 5 ChaCha20_ctr32: cbz $len,.Labort - adr @x[0],.LOPENSSL_armcap_P cmp $len,#192 b.lo .Lshort -#ifdef __ILP32__ - ldrsw @x[1],[@x[0]] -#else - ldr @x[1],[@x[0]] -#endif - ldr w17,[@x[1], at x[0]] + + adrp x17,OPENSSL_armcap_P + ldr w17,[x17,#:lo12:OPENSSL_armcap_P] tst w17,#ARMV7_NEON - b.ne ChaCha20_neon + b.ne .LChaCha20_neon .Lshort: .inst 0xd503233f // paciasp @@ -380,6 +370,7 @@ $code.=<<___; .type ChaCha20_neon,%function .align 5 ChaCha20_neon: +.LChaCha20_neon: .inst 0xd503233f // paciasp stp x29,x30,[sp,#-96]! add x29,sp,#0 diff --git a/crypto/ec/asm/ecp_nistz256-armv8.pl b/crypto/ec/asm/ecp_nistz256-armv8.pl index d84f523..8914f1a 100644 --- a/crypto/ec/asm/ecp_nistz256-armv8.pl +++ b/crypto/ec/asm/ecp_nistz256-armv8.pl @@ -1654,7 +1654,7 @@ ecp_nistz256_scatter_w5: ldp x4,x5,[$inp] // X ldp x6,x7,[$inp,#16] - str w4,[$out,#64*0-4] + stur w4,[$out,#64*0-4] lsr x4,x4,#32 str w5,[$out,#64*1-4] lsr x5,x5,#32 @@ -1670,7 +1670,7 @@ ecp_nistz256_scatter_w5: ldp x4,x5,[$inp,#32] // Y ldp x6,x7,[$inp,#48] - str w4,[$out,#64*0-4] + stur w4,[$out,#64*0-4] lsr x4,x4,#32 str w5,[$out,#64*1-4] lsr x5,x5,#32 @@ -1686,7 +1686,7 @@ ecp_nistz256_scatter_w5: ldp x4,x5,[$inp,#64] // Z ldp x6,x7,[$inp,#80] - str w4,[$out,#64*0-4] + stur w4,[$out,#64*0-4] lsr x4,x4,#32 str w5,[$out,#64*1-4] lsr x5,x5,#32 diff --git a/crypto/perlasm/arm-xlate.pl b/crypto/perlasm/arm-xlate.pl index b953f1f..af6f7d3 100755 --- a/crypto/perlasm/arm-xlate.pl +++ b/crypto/perlasm/arm-xlate.pl @@ -103,6 +103,12 @@ my $asciz = sub { { ""; } }; +my $adrp = sub { + my ($args,$comment) = split(m|\s*//|,shift); + "\tadrp\t$args\@PAGE"; +} if ($flavour =~ /ios64/); + + sub range { my ($r,$sfx,$start,$end) = @_; @@ -132,6 +138,10 @@ sub expand_line { $line =~ s/\b(\w+)/$GLOBALS{$1} or $1/ge; + if ($flavour =~ /ios64/) { + $line =~ s/#:lo12:(\w+)/$1\@PAGEOFF/; + } + return $line; } diff --git a/crypto/poly1305/asm/poly1305-armv8.pl b/crypto/poly1305/asm/poly1305-armv8.pl index 1aded5a..b7aa7dc 100755 --- a/crypto/poly1305/asm/poly1305-armv8.pl +++ b/crypto/poly1305/asm/poly1305-armv8.pl @@ -71,17 +71,12 @@ poly1305_init: csel x0,xzr,x0,eq b.eq .Lno_key -#ifdef __ILP32__ - ldrsw $t1,.LOPENSSL_armcap_P -#else - ldr $t1,.LOPENSSL_armcap_P -#endif - adr $t0,.LOPENSSL_armcap_P + adrp x17,OPENSSL_armcap_P + ldr w17,[x17,#:lo12:OPENSSL_armcap_P] ldp $r0,$r1,[$inp] // load key mov $s1,#0xfffffffc0fffffff movk $s1,#0x0fff,lsl#48 - ldr w17,[$t0,$t1] #ifdef __ARMEB__ rev $r0,$r0 // flip bytes rev $r1,$r1 @@ -93,10 +88,10 @@ poly1305_init: tst w17,#ARMV7_NEON - adr $d0,poly1305_blocks - adr $r0,poly1305_blocks_neon - adr $d1,poly1305_emit - adr $r1,poly1305_emit_neon + adr $d0,.Lpoly1305_blocks + adr $r0,.Lpoly1305_blocks_neon + adr $d1,.Lpoly1305_emit + adr $r1,.Lpoly1305_emit_neon csel $d0,$d0,$r0,eq csel $d1,$d1,$r1,eq @@ -115,6 +110,7 @@ poly1305_init: .type poly1305_blocks,%function .align 5 poly1305_blocks: +.Lpoly1305_blocks: ands $len,$len,#-16 b.eq .Lno_data @@ -179,6 +175,7 @@ poly1305_blocks: .type poly1305_emit,%function .align 5 poly1305_emit: +.Lpoly1305_emit: ldp $h0,$h1,[$ctx] // load hash base 2^64 ldr $h2,[$ctx,#16] ldp $t0,$t1,[$nonce] // load nonce @@ -285,10 +282,11 @@ poly1305_splat: .type poly1305_blocks_neon,%function .align 5 poly1305_blocks_neon: +.Lpoly1305_blocks_neon: ldr $is_base2_26,[$ctx,#24] cmp $len,#128 b.hs .Lblocks_neon - cbz $is_base2_26,poly1305_blocks + cbz $is_base2_26,.Lpoly1305_blocks .Lblocks_neon: .inst 0xd503233f // paciasp @@ -431,7 +429,7 @@ poly1305_blocks_neon: csel $in2,$zeros,$in2,lo mov x4,#1 - str x4,[$ctx,#-24] // set is_base2_26 + stur x4,[$ctx,#-24] // set is_base2_26 sub $ctx,$ctx,#48 // restore original $ctx b .Ldo_neon @@ -868,6 +866,7 @@ poly1305_blocks_neon: .type poly1305_emit_neon,%function .align 5 poly1305_emit_neon: +.Lpoly1305_emit_neon: ldr $is_base2_26,[$ctx,#24] cbz $is_base2_26,poly1305_emit @@ -920,12 +919,6 @@ poly1305_emit_neon: .align 5 .Lzeros: .long 0,0,0,0,0,0,0,0 -.LOPENSSL_armcap_P: -#ifdef __ILP32__ -.long OPENSSL_armcap_P-. -#else -.quad OPENSSL_armcap_P-. -#endif .asciz "Poly1305 for ARMv8, CRYPTOGAMS by " .align 2 ___ diff --git a/crypto/sha/asm/sha1-armv8.pl b/crypto/sha/asm/sha1-armv8.pl index a695b2c..7a0cbf5 100644 --- a/crypto/sha/asm/sha1-armv8.pl +++ b/crypto/sha/asm/sha1-armv8.pl @@ -58,10 +58,10 @@ $code.=<<___ if ($i<15 && !($i&1)); lsr @Xx[$i+1], at Xx[$i],#32 ___ $code.=<<___ if ($i<14 && !($i&1)); - ldr @Xx[$i+2],[$inp,#`($i+2)*4-64`] + ldur @Xx[$i+2],[$inp,#`($i+2)*4-64`] ___ $code.=<<___ if ($i<14 && ($i&1)); -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ ror @Xx[$i+1], at Xx[$i+1],#32 #else rev32 @Xx[$i+1], at Xx[$i+1] @@ -171,23 +171,19 @@ ___ } $code.=<<___; -#include "arm_arch.h" +#ifndef __KERNEL__ +# include "arm_arch.h" +.extern OPENSSL_armcap_P +#endif .text -.extern OPENSSL_armcap_P .globl sha1_block_data_order .type sha1_block_data_order,%function .align 6 sha1_block_data_order: -#ifdef __ILP32__ - ldrsw x16,.LOPENSSL_armcap_P -#else - ldr x16,.LOPENSSL_armcap_P -#endif - adr x17,.LOPENSSL_armcap_P - add x16,x16,x17 - ldr w16,[x16] + adrp x16,OPENSSL_armcap_P + ldr w16,[x16,#:lo12:OPENSSL_armcap_P] tst w16,#ARMV8_SHA1 b.ne .Lv8_entry @@ -208,7 +204,7 @@ sha1_block_data_order: movz $K,#0x7999 sub $num,$num,#1 movk $K,#0x5a82,lsl#16 -#ifdef __ARMEB__ +#ifdef __AARCH64EB__ ror $Xx[0], at Xx[0],#32 #else rev32 @Xx[0], at Xx[0] @@ -321,15 +317,11 @@ $code.=<<___; .long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 //K_20_39 .long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc //K_40_59 .long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 //K_60_79 -.LOPENSSL_armcap_P: -#ifdef __ILP32__ -.long OPENSSL_armcap_P-. -#else -.quad OPENSSL_armcap_P-. -#endif .asciz "SHA1 block transform for ARMv8, CRYPTOGAMS by " .align 2 +#if !defined(__KERNELL__) && !defined(_WIN64) .comm OPENSSL_armcap_P,4,4 +#endif ___ }}} diff --git a/crypto/sha/asm/sha512-armv8.pl b/crypto/sha/asm/sha512-armv8.pl index 6540a9f..f7c6721 100644 --- a/crypto/sha/asm/sha512-armv8.pl +++ b/crypto/sha/asm/sha512-armv8.pl @@ -188,24 +188,18 @@ ___ $code.=<<___; #ifndef __KERNEL__ # include "arm_arch.h" +.extern OPENSSL_armcap_P #endif .text -.extern OPENSSL_armcap_P .globl $func .type $func,%function .align 6 $func: #ifndef __KERNEL__ -# ifdef __ILP32__ - ldrsw x16,.LOPENSSL_armcap_P -# else - ldr x16,.LOPENSSL_armcap_P -# endif - adr x17,.LOPENSSL_armcap_P - add x16,x16,x17 - ldr w16,[x16] + adrp x16,OPENSSL_armcap_P + ldr w16,[x16,#:lo12:OPENSSL_armcap_P] ___ $code.=<<___ if ($SZ==4); tst w16,#ARMV8_SHA256 @@ -353,15 +347,6 @@ $code.=<<___ if ($SZ==4); ___ $code.=<<___; .size .LK$BITS,.-.LK$BITS -#ifndef __KERNEL__ -.align 3 -.LOPENSSL_armcap_P: -# ifdef __ILP32__ - .long OPENSSL_armcap_P-. -# else - .quad OPENSSL_armcap_P-. -# endif -#endif .asciz "SHA$BITS block transform for ARMv8, CRYPTOGAMS by " .align 2 ___ @@ -841,7 +826,7 @@ ___ } $code.=<<___; -#ifndef __KERNEL__ +#if !defined(__KERNEL__) && !defined(_WIN64) .comm OPENSSL_armcap_P,4,4 #endif ___ From builds at travis-ci.org Sat Feb 16 16:25:58 2019 From: builds at travis-ci.org (Travis CI) Date: Sat, 16 Feb 2019 16:25:58 +0000 Subject: Broken: openssl/openssl#23164 (master - 3405db9) In-Reply-To: Message-ID: <5c683996a7760_43fe00c9a9274137856@6c901843-fb43-4ef8-a095-e05e8d59e0d5.mail> Build Update for openssl/openssl ------------------------------------- Build: #23164 Status: Broken Duration: 23 mins and 57 secs Commit: 3405db9 (master) Author: Andy Polyakov Message: ARM assembly pack: make it Windows-friendly. "Windows friendliness" means a) flipping .thumb and .text directives, b) always generate Thumb-2 code when asked(*); c) Windows-specific references to external OPENSSL_armcap_P. (*) so far *some* modules were compiled as .code 32 even if Thumb-2 was targeted. It works at hardware level because processor can alternate between the modes with no overhead. But clang --target=arm-windows's builtin assembler just refuses to compile .code 32... Reviewed-by: Paul Dale Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8252) View the changeset: https://github.com/openssl/openssl/compare/b2b580fe445e...3405db97e544 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/494247454?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Sat Feb 16 23:52:30 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sat, 16 Feb 2019 23:52:30 +0000 Subject: Build failed: openssl master.22570 Message-ID: <20190216235230.1.2FED0207EDF0B865@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Sun Feb 17 00:34:57 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sun, 17 Feb 2019 00:34:57 +0000 Subject: Build completed: openssl master.22571 Message-ID: <20190217003457.1.EA3ACF76489A4FFF@appveyor.com> An HTML attachment was scrubbed... URL: From scan-admin at coverity.com Sun Feb 17 07:28:05 2019 From: scan-admin at coverity.com (scan-admin at coverity.com) Date: Sun, 17 Feb 2019 07:28:05 +0000 (UTC) Subject: Coverity Scan: Analysis completed for openssl/openssl Message-ID: <5c690d03a952f_6c722ad745df4f5c6889@appnode-2.mail> Your request for analysis of openssl/openssl has been completed successfully. The results are available at https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRakUl6QyjujEohY7rPpoYUEcf-2B75FkFkxwwFKGZV8c1xA-3D-3D_19DGMz38yO7VfzGQuXkecdlEmzBoDG4v8Dvyanv-2F1I1DjQTmqk3qmJeZYs4NoSJo1JBiLusJ8cFz0l2N4Sh4XiGofKDBfT9IRL0zkv7fGYcZRwkkUtQ9HwKqkUDLuM9FeiLuI0HH41muQFcoHGEh4hRZY7GpTY0fzwSZICGYrF45V5GN-2FTvAkMRn0YehzhRBrAnPT-2FmT6EUyYqBjWBXfRHq9wNMDHXmmJiBPhd4zRrM-3D Build ID: 244947 Analysis Summary: New defects found: 8 Defects eliminated: 8 If you have difficulty understanding any defects, email us at scan-admin at coverity.com, or post your question to StackOverflow at https://u2389337.ct.sendgrid.net/wf/click?upn=OgIsEqWzmIl4S-2FzEUMxLXL-2BukuZt9UUdRZhgmgzAKchwAzH1nH3073xDEXNRgHN6q227lMNIWoOb8ZgSjAjKcg-3D-3D_19DGMz38yO7VfzGQuXkecdlEmzBoDG4v8Dvyanv-2F1I1DjQTmqk3qmJeZYs4NoSJo1JBiLusJ8cFz0l2N4Sh4Xp-2FeWFhqN-2BmwnymUwhcnduheN7vEa9EwzhnCmQ4u-2F-2FBQt3A9mBeu6bR-2Fx0nakmpAjWEfJynxMXFvDyQuJi1lHn0M-2ByNR5XwqbGZNOcUfSaHqp41pIsQxmXvw-2FVQQ-2BGKMJpfM8WNAh3AWvnO7xTaxqdA-3D From scan-admin at coverity.com Sun Feb 17 07:47:45 2019 From: scan-admin at coverity.com (scan-admin at coverity.com) Date: Sun, 17 Feb 2019 07:47:45 +0000 (UTC) Subject: Coverity Scan: Analysis completed for OpenSSL-1.0.2 Message-ID: <5c6911a0e9ee2_77232ad745df4f5c6888b@appnode-2.mail> Your request for analysis of OpenSSL-1.0.2 has been completed successfully. The results are available at https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRakUl6QyjujEohY7rPpoYUEeuRTZVWU4ku8PUBnVPw8PQ-3D-3D_19DGMz38yO7VfzGQuXkecdlEmzBoDG4v8Dvyanv-2F1I2Kn7my8LoEQfnaR2A8GLca9wplH2spBKck-2FMjqJbdOpO-2FOchN4Gbshz7eiBj9oMzJTzUXWxR4XJSnaIXUUVTd1dG3IO0ELCQSE98Ztg6rpmXcWUTv4XvOZkAXNJjDD8-2FnAwx2ICnpZv7V5pV6M6-2FBHBlsd01Sir050-2B0vwEw1Jnpu6atvSog8QFCKoCEkKhuE-3D Build ID: 244948 Analysis Summary: New defects found: 0 Defects eliminated: 0 From matt at openssl.org Sun Feb 17 13:22:04 2019 From: matt at openssl.org (Matt Caswell) Date: Sun, 17 Feb 2019 13:22:04 +0000 Subject: [web] master update Message-ID: <1550409724.924217.20965.nullmailer@dev.openssl.org> The branch master has been updated via c2804b5a37217fccddacb44e5dc2791f962759ac (commit) from d58a4110c94ead1c72693c86e1d5841620209660 (commit) - Log ----------------------------------------------------------------- commit c2804b5a37217fccddacb44e5dc2791f962759ac Author: Matt Caswell Date: Thu Feb 14 14:51:15 2019 +0000 Remove rel=canonical from head.shtml With that line we are claiming that all our web pages are synonyms of the home page. Fixes #117 Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/web/pull/118) ----------------------------------------------------------------------- Summary of changes: inc/head.shtml | 1 - 1 file changed, 1 deletion(-) diff --git a/inc/head.shtml b/inc/head.shtml index 244afed..c622c8b 100644 --- a/inc/head.shtml +++ b/inc/head.shtml @@ -9,7 +9,6 @@ - From levitte at openssl.org Sun Feb 17 17:08:49 2019 From: levitte at openssl.org (Richard Levitte) Date: Sun, 17 Feb 2019 17:08:49 +0000 Subject: [web] master update Message-ID: <1550423329.735386.26852.nullmailer@dev.openssl.org> The branch master has been updated via 604491061a61f0e554cdd38354df341f57ee9fc1 (commit) via 9a8296e24a0b4dc88cda33aacdab44676906f7c5 (commit) from c2804b5a37217fccddacb44e5dc2791f962759ac (commit) - Log ----------------------------------------------------------------- commit 604491061a61f0e554cdd38354df341f57ee9fc1 Author: Richard Levitte Date: Sat Feb 16 14:02:44 2019 +0100 3.0.0 design doc: /usr/share -> /usr/lib /usr/share was a bad example for storing modules Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/119) commit 9a8296e24a0b4dc88cda33aacdab44676906f7c5 Author: Richard Levitte Date: Sat Feb 16 14:02:04 2019 +0100 3.0.0 design doc: mark all code sections with a language where possible Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/119) ----------------------------------------------------------------------- Summary of changes: docs/OpenSSL300Design.md | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/docs/OpenSSL300Design.md b/docs/OpenSSL300Design.md index 30a02eb..d30e8fe 100644 --- a/docs/OpenSSL300Design.md +++ b/docs/OpenSSL300Design.md @@ -420,7 +420,7 @@ create and provide its own library context, an internal default one will be used. -``` +``` C OPENSSL_CTX *OPENSSL_CTX_new(); void OPENSSL_CTX_free(OPENSSL_CTX *ctx); ``` @@ -707,7 +707,7 @@ entry point. A provider module _must_ have the following well known entry point: -``` +``` C int OSSL_provider_init(const OSSL_PROVIDER *provider, const OSSL_DISPATCH *in, const OSSL_DISPATCH **out); @@ -735,7 +735,7 @@ function-pointer >` tuple mentioned in the introduction of [Core and Provider Design](#core-and-provider-design): -``` +``` C typedef struct ossl_dispatch_st { int function_id; void *(*function)(); @@ -760,7 +760,7 @@ numbers. More function numbers can be added in later releases as required without breaking backwards compatibility. -``` +``` C /* Functions provided by the Core to the provider */ #define OSSL_FUNC_ERR_PUT_ERROR 1 #define OSSL_FUNC_GET_PARAMS 2 @@ -773,7 +773,7 @@ required without breaking backwards compatibility. The Core will set up an array of the well known callback functions: -``` +``` C static OSSL_DISPATCH core_callbacks[] = { { OSSL_FUNC_ERR_PUT_ERROR, ERR_put_error }, /* int ossl_get_params(OSSL_PROVIDER *prov, OSSL_PARAM params[]); */ @@ -789,7 +789,7 @@ testing, instrumentation etc as the need comes up. Once the module is loaded and the well known entry point located, the init entry point can be invoked by the Core: -``` +``` C /* * NOTE: this code is meant as a simple demonstration of what could happen * in the core. This is an area where the OSSL_PROVIDER type is not opaque. @@ -857,7 +857,7 @@ code. Operations are identified by a unique number. For example: -``` +``` C #define OSSL_OP_DIGEST 1 #define OSSL_OP_SYM_ENCRYPT 2 #define OSSL_OP_SEAL 3 @@ -906,7 +906,7 @@ for init functions for other operations, those will have their own unique numbers. For example, for the digest operation, these functions are required: -``` +``` C #define OSSL_OP_DIGEST_NEWCTX_FUNC 1 #define OSSL_OP_DIGEST_INIT_FUNC 2 #define OSSL_OP_DIGEST_UPDATE_FUNC 3 @@ -923,7 +923,7 @@ typedef void (*OSSL_OP_digest_freectx_fn)(void *ctx); An all in one version is also advisable for devices that cannot handle multi-part operations: -``` +``` C #define OSSL_OP_DIGEST_FUNC 6 typedef int (*OSSL_OP_digest)(const OSSL_PROVIDER *prov, const void *data, size_t len, @@ -938,7 +938,7 @@ for each operation. The algorithm descriptor was mentioned higher up, and would be publically defined like this: -``` +``` C typedef struct ossl_algorithm_st { const char *name; const char *properties; @@ -952,7 +952,7 @@ querying function such as `fips_query_operation` below returns) the FIPS module may define arrays like this for the SHA1 algorithm: -``` +``` C static OSSL_DISPATCH fips_sha1_callbacks[] = { { OSSL_OP_DIGEST_NEWCTX_FUNC, fips_sha1_newctx }, { OSSL_OP_DIGEST_INIT_FUNC, fips_sha1_init }, @@ -1105,8 +1105,7 @@ application to specify a non-default library context if required (`osslctx` in this example): -``` - +``` C EVP_CIPHER_CTX *ctx; EVP_CIPHER *ciph; @@ -2344,7 +2343,7 @@ There is functionality to create diverse EVP method structures in OpenSSL 1.1.x, easily found like this: -``` +``` shell grep EVP_CIPHER_meth util/libcrypto.num grep EVP_MD_meth util/libcrypto.num grep EVP_PKEY_meth util/libcrypto.num @@ -2663,7 +2662,7 @@ time. We have macros to declare the type of content in `data_type`: -``` +``` C #define OSSL_PARAM_INTEGER 1 #define OSSL_PARAM_UNSIGNED_INTEGER 2 #define OSSL_PARAM_UTF8_STRING 3 @@ -2712,7 +2711,7 @@ bar = bar_section [foo_section] provider_id = myfoo -module_path = /usr/share/openssl/providers/foo.so +module_path = /usr/lib/openssl/providers/foo.so selftests = foo_selftest_section algorithms = RSA, DSA, DH @@ -2725,7 +2724,7 @@ The Core side provider structure for the provider "foo" could then answer to these requested parameter keys: * `"provider_id"` (value is `"myfoo"`) -* `"module_path"` (value is `"/usr/share/openssl/providers/foo.so"`) +* `"module_path"` (value is `"/usr/lib/openssl/providers/foo.so"`) * `"selftests.doodah"` (value is `1`) * `"selftests.cookie"` (value is `0`) * `"algorithms"` (value is `"RSA, DSA, DH"`) From no-reply at appveyor.com Sun Feb 17 17:49:24 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sun, 17 Feb 2019 17:49:24 +0000 Subject: Build failed: openssl master.22580 Message-ID: <20190217174924.1.ECC61ED56A7EA13F@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Sun Feb 17 17:58:48 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sun, 17 Feb 2019 17:58:48 +0000 Subject: Build failed: openssl master.22581 Message-ID: <20190217175848.1.4E6175D45F93E6B4@appveyor.com> An HTML attachment was scrubbed... URL: From nic.tuv at gmail.com Sun Feb 17 19:08:48 2019 From: nic.tuv at gmail.com (nic.tuv at gmail.com) Date: Sun, 17 Feb 2019 19:08:48 +0000 Subject: [openssl] master update Message-ID: <1550430528.824698.24289.nullmailer@dev.openssl.org> The branch master has been updated via 8f58ede09572dcc6a7e6c01280dd348240199568 (commit) via e0033efc30b0f00476bba8f0fa5512be5dc8a3f1 (commit) from db42bb440e76399b89fc8ae04644441a2a5f6821 (commit) - Log ----------------------------------------------------------------- commit 8f58ede09572dcc6a7e6c01280dd348240199568 Author: Billy Brumley Date: Tue Feb 12 16:00:20 2019 +0200 [test] unit test for field_inv function pointer in EC_METHOD Reviewed-by: Matt Caswell Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8254) commit e0033efc30b0f00476bba8f0fa5512be5dc8a3f1 Author: Billy Brumley Date: Sat Feb 2 10:53:29 2019 +0200 SCA hardening for mod. field inversion in EC_GROUP This commit adds a dedicated function in `EC_METHOD` to access a modular field inversion implementation suitable for the specifics of the implemented curve, featuring SCA countermeasures. The new pointer is defined as: `int (*field_inv)(const EC_GROUP*, BIGNUM *r, const BIGNUM *a, BN_CTX*)` and computes the multiplicative inverse of `a` in the underlying field, storing the result in `r`. Three implementations are included, each including specific SCA countermeasures: - `ec_GFp_simple_field_inv()`, featuring SCA hardening through blinding. - `ec_GFp_mont_field_inv()`, featuring SCA hardening through Fermat's Little Theorem (FLT) inversion. - `ec_GF2m_simple_field_inv()`, that uses `BN_GF2m_mod_inv()` which already features SCA hardening through blinding. From a security point of view, this also helps addressing a leakage previously affecting conversions from projective to affine coordinates. This commit also adds a new error reason code (i.e., `EC_R_CANNOT_INVERT`) to improve consistency between the three implementations as all of them could fail for the same reason but through different code paths resulting in inconsistent error stack states. Co-authored-by: Nicola Tuveri Reviewed-by: Matt Caswell Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8254) ----------------------------------------------------------------------- Summary of changes: CHANGES | 6 + crypto/ec/ec2_smpl.c | 18 +- crypto/ec/ec_err.c | 9 +- crypto/ec/ec_lcl.h | 11 ++ crypto/ec/ecp_mont.c | 49 +++++ crypto/ec/ecp_nist.c | 1 + crypto/ec/ecp_nistp224.c | 1 + crypto/ec/ecp_nistp256.c | 1 + crypto/ec/ecp_nistp521.c | 1 + crypto/ec/ecp_nistz256.c | 1 + crypto/ec/ecp_smpl.c | 49 ++++- crypto/err/openssl.txt | 4 + include/openssl/ecerr.h | 6 +- test/build.info | 6 +- test/ec_internal_test.c | 205 +++++++++++++++++++++ ...t_internal_curve448.t => 03-test_internal_ec.t} | 6 +- 16 files changed, 365 insertions(+), 9 deletions(-) create mode 100644 test/ec_internal_test.c copy test/recipes/{03-test_internal_curve448.t => 03-test_internal_ec.t} (73%) diff --git a/CHANGES b/CHANGES index 2fbe89f..cca9ed9 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,12 @@ Changes between 1.1.1 and 3.0.0 [xx XXX xxxx] + *) Added SCA hardening for modular field inversion in EC_GROUP through + a new dedicated field_inv() pointer in EC_METHOD. + This also addresses a leakage affecting conversions from projective + to affine coordinates. + [Billy Bob Brumley, Nicola Tuveri] + *) Added EVP_KDF, an EVP layer KDF API, to simplify adding KDF and PRF implementations. This includes an EVP_PKEY to EVP_KDF bridge for those algorithms that were already supported through the EVP_PKEY API diff --git a/crypto/ec/ec2_smpl.c b/crypto/ec/ec2_smpl.c index f9d7d08..7bd2a63 100644 --- a/crypto/ec/ec2_smpl.c +++ b/crypto/ec/ec2_smpl.c @@ -810,7 +810,7 @@ int ec_GF2m_simple_ladder_post(const EC_GROUP *group, || !group->meth->field_mul(group, t2, t2, t0, ctx) || !BN_GF2m_add(t1, t2, t1) || !group->meth->field_mul(group, t2, p->X, t0, ctx) - || !BN_GF2m_mod_inv(t2, t2, group->field, ctx) + || !group->meth->field_inv(group, t2, t2, ctx) || !group->meth->field_mul(group, t1, t1, t2, ctx) || !group->meth->field_mul(group, r->X, r->Z, t2, ctx) || !BN_GF2m_add(t2, p->X, r->X) @@ -889,6 +889,21 @@ int ec_GF2m_simple_points_mul(const EC_GROUP *group, EC_POINT *r, return ret; } +/*- + * Computes the multiplicative inverse of a in GF(2^m), storing the result in r. + * If a is zero (or equivalent), you'll get a EC_R_CANNOT_INVERT error. + * SCA hardening is with blinding: BN_GF2m_mod_inv does that. + */ +static int ec_GF2m_simple_field_inv(const EC_GROUP *group, BIGNUM *r, + const BIGNUM *a, BN_CTX *ctx) +{ + int ret; + + if (!(ret = BN_GF2m_mod_inv(r, a, group->field, ctx))) + ECerr(EC_F_EC_GF2M_SIMPLE_FIELD_INV, EC_R_CANNOT_INVERT); + return ret; +} + const EC_METHOD *EC_GF2m_simple_method(void) { static const EC_METHOD ret = { @@ -929,6 +944,7 @@ const EC_METHOD *EC_GF2m_simple_method(void) ec_GF2m_simple_field_mul, ec_GF2m_simple_field_sqr, ec_GF2m_simple_field_div, + ec_GF2m_simple_field_inv, 0, /* field_encode */ 0, /* field_decode */ 0, /* field_set_to_one */ diff --git a/crypto/ec/ec_err.c b/crypto/ec/ec_err.c index 1ede7c2..b7cf95b 100644 --- a/crypto/ec/ec_err.c +++ b/crypto/ec/ec_err.c @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -66,6 +66,8 @@ static const ERR_STRING_DATA EC_str_functs[] = { "ec_asn1_group2fieldid"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY, 0), "ec_GF2m_montgomery_point_multiply"}, + {ERR_PACK(ERR_LIB_EC, EC_F_EC_GF2M_SIMPLE_FIELD_INV, 0), + "ec_GF2m_simple_field_inv"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT, 0), "ec_GF2m_simple_group_check_discriminant"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE, 0), @@ -90,6 +92,8 @@ static const ERR_STRING_DATA EC_str_functs[] = { "ec_GFp_mont_field_decode"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_MONT_FIELD_ENCODE, 0), "ec_GFp_mont_field_encode"}, + {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_MONT_FIELD_INV, 0), + "ec_GFp_mont_field_inv"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_MONT_FIELD_MUL, 0), "ec_GFp_mont_field_mul"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE, 0), @@ -124,6 +128,8 @@ static const ERR_STRING_DATA EC_str_functs[] = { "ec_GFp_nist_group_set_curve"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES, 0), "ec_GFp_simple_blind_coordinates"}, + {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_SIMPLE_FIELD_INV, 0), + "ec_GFp_simple_field_inv"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT, 0), "ec_GFp_simple_group_check_discriminant"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE, 0), @@ -287,6 +293,7 @@ static const ERR_STRING_DATA EC_str_reasons[] = { {ERR_PACK(ERR_LIB_EC, 0, EC_R_BAD_SIGNATURE), "bad signature"}, {ERR_PACK(ERR_LIB_EC, 0, EC_R_BIGNUM_OUT_OF_RANGE), "bignum out of range"}, {ERR_PACK(ERR_LIB_EC, 0, EC_R_BUFFER_TOO_SMALL), "buffer too small"}, + {ERR_PACK(ERR_LIB_EC, 0, EC_R_CANNOT_INVERT), "cannot invert"}, {ERR_PACK(ERR_LIB_EC, 0, EC_R_COORDINATES_OUT_OF_RANGE), "coordinates out of range"}, {ERR_PACK(ERR_LIB_EC, 0, EC_R_CURVE_DOES_NOT_SUPPORT_ECDH), diff --git a/crypto/ec/ec_lcl.h b/crypto/ec/ec_lcl.h index 3153e4f..312b538 100644 --- a/crypto/ec/ec_lcl.h +++ b/crypto/ec/ec_lcl.h @@ -154,6 +154,13 @@ struct ec_method_st { int (*field_sqr) (const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); int (*field_div) (const EC_GROUP *, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *); + /*- + * 'field_inv' computes the multipicative inverse of a in the field, + * storing the result in r. + * + * If 'a' is zero (or equivalent), you'll get an EC_R_CANNOT_INVERT error. + */ + int (*field_inv) (const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); /* e.g. to Montgomery */ int (*field_encode) (const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); @@ -390,6 +397,8 @@ int ec_GFp_simple_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *); int ec_GFp_simple_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); +int ec_GFp_simple_field_inv(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, + BN_CTX *); int ec_GFp_simple_blind_coordinates(const EC_GROUP *group, EC_POINT *p, BN_CTX *ctx); int ec_GFp_simple_ladder_pre(const EC_GROUP *group, @@ -413,6 +422,8 @@ int ec_GFp_mont_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *); int ec_GFp_mont_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); +int ec_GFp_mont_field_inv(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, + BN_CTX *); int ec_GFp_mont_field_encode(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); int ec_GFp_mont_field_decode(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, diff --git a/crypto/ec/ecp_mont.c b/crypto/ec/ecp_mont.c index d3d770d..1654d59 100644 --- a/crypto/ec/ecp_mont.c +++ b/crypto/ec/ecp_mont.c @@ -50,6 +50,7 @@ const EC_METHOD *EC_GFp_mont_method(void) ec_GFp_mont_field_mul, ec_GFp_mont_field_sqr, 0 /* field_div */ , + ec_GFp_mont_field_inv, ec_GFp_mont_field_encode, ec_GFp_mont_field_decode, ec_GFp_mont_field_set_to_one, @@ -206,6 +207,54 @@ int ec_GFp_mont_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, return BN_mod_mul_montgomery(r, a, a, group->field_data1, ctx); } +/*- + * Computes the multiplicative inverse of a in GF(p), storing the result in r. + * If a is zero (or equivalent), you'll get a EC_R_CANNOT_INVERT error. + * We have a Mont structure, so SCA hardening is FLT inversion. + */ +int ec_GFp_mont_field_inv(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, + BN_CTX *ctx) +{ + BIGNUM *e = NULL; + BN_CTX *new_ctx = NULL; + int ret = 0; + + if (group->field_data1 == NULL) + return 0; + + if (ctx == NULL && (ctx = new_ctx = BN_CTX_secure_new()) == NULL) + return 0; + + BN_CTX_start(ctx); + if ((e = BN_CTX_get(ctx)) == NULL) + goto err; + + /* Inverse in constant time with Fermats Little Theorem */ + if (!BN_set_word(e, 2)) + goto err; + if (!BN_sub(e, group->field, e)) + goto err; + /*- + * Exponent e is public. + * No need for scatter-gather or BN_FLG_CONSTTIME. + */ + if (!BN_mod_exp_mont(r, a, e, group->field, ctx, group->field_data1)) + goto err; + + /* throw an error on zero */ + if (BN_is_zero(r)) { + ECerr(EC_F_EC_GFP_MONT_FIELD_INV, EC_R_CANNOT_INVERT); + goto err; + } + + ret = 1; + + err: + BN_CTX_end(ctx); + BN_CTX_free(new_ctx); + return ret; +} + int ec_GFp_mont_field_encode(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, BN_CTX *ctx) { diff --git a/crypto/ec/ecp_nist.c b/crypto/ec/ecp_nist.c index 151e8ad..9f9045b 100644 --- a/crypto/ec/ecp_nist.c +++ b/crypto/ec/ecp_nist.c @@ -52,6 +52,7 @@ const EC_METHOD *EC_GFp_nist_method(void) ec_GFp_nist_field_mul, ec_GFp_nist_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ diff --git a/crypto/ec/ecp_nistp224.c b/crypto/ec/ecp_nistp224.c index cd8b8c4..6539659 100644 --- a/crypto/ec/ecp_nistp224.c +++ b/crypto/ec/ecp_nistp224.c @@ -279,6 +279,7 @@ const EC_METHOD *EC_GFp_nistp224_method(void) ec_GFp_nist_field_mul, ec_GFp_nist_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ diff --git a/crypto/ec/ecp_nistp256.c b/crypto/ec/ecp_nistp256.c index 3c60976..ee5508f 100644 --- a/crypto/ec/ecp_nistp256.c +++ b/crypto/ec/ecp_nistp256.c @@ -1810,6 +1810,7 @@ const EC_METHOD *EC_GFp_nistp256_method(void) ec_GFp_nist_field_mul, ec_GFp_nist_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ diff --git a/crypto/ec/ecp_nistp521.c b/crypto/ec/ecp_nistp521.c index 653b866..a32f302 100644 --- a/crypto/ec/ecp_nistp521.c +++ b/crypto/ec/ecp_nistp521.c @@ -1647,6 +1647,7 @@ const EC_METHOD *EC_GFp_nistp521_method(void) ec_GFp_nist_field_mul, ec_GFp_nist_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ diff --git a/crypto/ec/ecp_nistz256.c b/crypto/ec/ecp_nistz256.c index 82affd6..c0772ca 100644 --- a/crypto/ec/ecp_nistz256.c +++ b/crypto/ec/ecp_nistz256.c @@ -1677,6 +1677,7 @@ const EC_METHOD *EC_GFp_nistz256_method(void) ec_GFp_mont_field_mul, ec_GFp_mont_field_sqr, 0, /* field_div */ + ec_GFp_mont_field_inv, ec_GFp_mont_field_encode, ec_GFp_mont_field_decode, ec_GFp_mont_field_set_to_one, diff --git a/crypto/ec/ecp_smpl.c b/crypto/ec/ecp_smpl.c index 7e8fe4f..f80f98a 100644 --- a/crypto/ec/ecp_smpl.c +++ b/crypto/ec/ecp_smpl.c @@ -51,6 +51,7 @@ const EC_METHOD *EC_GFp_simple_method(void) ec_GFp_simple_field_mul, ec_GFp_simple_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ @@ -553,7 +554,7 @@ int ec_GFp_simple_point_get_affine_coordinates(const EC_GROUP *group, } } } else { - if (!BN_mod_inverse(Z_1, Z_, group->field, ctx)) { + if (!group->meth->field_inv(group, Z_1, Z_, ctx)) { ECerr(EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES, ERR_R_BN_LIB); goto err; @@ -1266,7 +1267,7 @@ int ec_GFp_simple_points_make_affine(const EC_GROUP *group, size_t num, * points[i]->Z by its inverse. */ - if (!BN_mod_inverse(tmp, prod_Z[num - 1], group->field, ctx)) { + if (!group->meth->field_inv(group, tmp, prod_Z[num - 1], ctx)) { ECerr(EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE, ERR_R_BN_LIB); goto err; } @@ -1370,6 +1371,50 @@ int ec_GFp_simple_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, } /*- + * Computes the multiplicative inverse of a in GF(p), storing the result in r. + * If a is zero (or equivalent), you'll get a EC_R_CANNOT_INVERT error. + * Since we don't have a Mont structure here, SCA hardening is with blinding. + */ +int ec_GFp_simple_field_inv(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, + BN_CTX *ctx) +{ + BIGNUM *e = NULL; + BN_CTX *new_ctx = NULL; + int ret = 0; + + if (ctx == NULL && (ctx = new_ctx = BN_CTX_secure_new()) == NULL) + return 0; + + BN_CTX_start(ctx); + if ((e = BN_CTX_get(ctx)) == NULL) + goto err; + + do { + if (!BN_priv_rand_range(e, group->field)) + goto err; + } while (BN_is_zero(e)); + + /* r := a * e */ + if (!group->meth->field_mul(group, r, a, e, ctx)) + goto err; + /* r := 1/(a * e) */ + if (!BN_mod_inverse(r, r, group->field, ctx)) { + ECerr(EC_F_EC_GFP_SIMPLE_FIELD_INV, EC_R_CANNOT_INVERT); + goto err; + } + /* r := e/(a * e) = 1/a */ + if (!group->meth->field_mul(group, r, r, e, ctx)) + goto err; + + ret = 1; + + err: + BN_CTX_end(ctx); + BN_CTX_free(new_ctx); + return ret; +} + +/*- * Apply randomization of EC point projective coordinates: * * (X, Y ,Z ) = (lambda^2*X, lambda^3*Y, lambda*Z) diff --git a/crypto/err/openssl.txt b/crypto/err/openssl.txt index a269ac6..8d183fb 100644 --- a/crypto/err/openssl.txt +++ b/crypto/err/openssl.txt @@ -521,6 +521,7 @@ EC_F_ECX_PUB_ENCODE:268:ecx_pub_encode EC_F_EC_ASN1_GROUP2CURVE:153:ec_asn1_group2curve EC_F_EC_ASN1_GROUP2FIELDID:154:ec_asn1_group2fieldid EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY:208:ec_GF2m_montgomery_point_multiply +EC_F_EC_GF2M_SIMPLE_FIELD_INV:296:ec_GF2m_simple_field_inv EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT:159:\ ec_GF2m_simple_group_check_discriminant EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE:195:ec_GF2m_simple_group_set_curve @@ -537,6 +538,7 @@ EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES:164:\ ec_GF2m_simple_set_compressed_coordinates EC_F_EC_GFP_MONT_FIELD_DECODE:133:ec_GFp_mont_field_decode EC_F_EC_GFP_MONT_FIELD_ENCODE:134:ec_GFp_mont_field_encode +EC_F_EC_GFP_MONT_FIELD_INV:297:ec_GFp_mont_field_inv EC_F_EC_GFP_MONT_FIELD_MUL:131:ec_GFp_mont_field_mul EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE:209:ec_GFp_mont_field_set_to_one EC_F_EC_GFP_MONT_FIELD_SQR:132:ec_GFp_mont_field_sqr @@ -557,6 +559,7 @@ EC_F_EC_GFP_NIST_FIELD_MUL:200:ec_GFp_nist_field_mul EC_F_EC_GFP_NIST_FIELD_SQR:201:ec_GFp_nist_field_sqr EC_F_EC_GFP_NIST_GROUP_SET_CURVE:202:ec_GFp_nist_group_set_curve EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES:287:ec_GFp_simple_blind_coordinates +EC_F_EC_GFP_SIMPLE_FIELD_INV:298:ec_GFp_simple_field_inv EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT:165:\ ec_GFp_simple_group_check_discriminant EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE:166:ec_GFp_simple_group_set_curve @@ -2157,6 +2160,7 @@ EC_R_ASN1_ERROR:115:asn1 error EC_R_BAD_SIGNATURE:156:bad signature EC_R_BIGNUM_OUT_OF_RANGE:144:bignum out of range EC_R_BUFFER_TOO_SMALL:100:buffer too small +EC_R_CANNOT_INVERT:165:cannot invert EC_R_COORDINATES_OUT_OF_RANGE:146:coordinates out of range EC_R_CURVE_DOES_NOT_SUPPORT_ECDH:160:curve does not support ecdh EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING:159:curve does not support signing diff --git a/include/openssl/ecerr.h b/include/openssl/ecerr.h index 1cbd3a3..8074481 100644 --- a/include/openssl/ecerr.h +++ b/include/openssl/ecerr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -62,6 +62,7 @@ int ERR_load_EC_strings(void); # define EC_F_EC_ASN1_GROUP2CURVE 153 # define EC_F_EC_ASN1_GROUP2FIELDID 154 # define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 +# define EC_F_EC_GF2M_SIMPLE_FIELD_INV 296 # define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159 # define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 # define EC_F_EC_GF2M_SIMPLE_LADDER_POST 285 @@ -74,6 +75,7 @@ int ERR_load_EC_strings(void); # define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164 # define EC_F_EC_GFP_MONT_FIELD_DECODE 133 # define EC_F_EC_GFP_MONT_FIELD_ENCODE 134 +# define EC_F_EC_GFP_MONT_FIELD_INV 297 # define EC_F_EC_GFP_MONT_FIELD_MUL 131 # define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209 # define EC_F_EC_GFP_MONT_FIELD_SQR 132 @@ -91,6 +93,7 @@ int ERR_load_EC_strings(void); # define EC_F_EC_GFP_NIST_FIELD_SQR 201 # define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202 # define EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES 287 +# define EC_F_EC_GFP_SIMPLE_FIELD_INV 298 # define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165 # define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166 # define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102 @@ -202,6 +205,7 @@ int ERR_load_EC_strings(void); # define EC_R_BAD_SIGNATURE 156 # define EC_R_BIGNUM_OUT_OF_RANGE 144 # define EC_R_BUFFER_TOO_SMALL 100 +# define EC_R_CANNOT_INVERT 165 # define EC_R_COORDINATES_OUT_OF_RANGE 146 # define EC_R_CURVE_DOES_NOT_SUPPORT_ECDH 160 # define EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING 159 diff --git a/test/build.info b/test/build.info index ecfcace..af8429b 100644 --- a/test/build.info +++ b/test/build.info @@ -459,7 +459,7 @@ IF[{- !$disabled{tests} -}] PROGRAMS{noinst}=sm4_internal_test ENDIF IF[{- !$disabled{ec} -}] - PROGRAMS{noinst}=curve448_internal_test + PROGRAMS{noinst}=ec_internal_test curve448_internal_test ENDIF SOURCE[poly1305_internal_test]=poly1305_internal_test.c @@ -510,6 +510,10 @@ IF[{- !$disabled{tests} -}] INCLUDE[sm4_internal_test]=.. ../include ../apps/include ../crypto/include DEPEND[sm4_internal_test]=../libcrypto.a libtestutil.a + SOURCE[ec_internal_test]=ec_internal_test.c + INCLUDE[ec_internal_test]=../include ../crypto/ec ../apps/include ../crypto/include + DEPEND[ec_internal_test]=../libcrypto.a libtestutil.a + SOURCE[curve448_internal_test]=curve448_internal_test.c INCLUDE[curve448_internal_test]=.. ../include ../apps/include ../crypto/ec/curve448 DEPEND[curve448_internal_test]=../libcrypto.a libtestutil.a diff --git a/test/ec_internal_test.c b/test/ec_internal_test.c new file mode 100644 index 0000000..8d3a4fd --- /dev/null +++ b/test/ec_internal_test.c @@ -0,0 +1,205 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/nelem.h" +#include "testutil.h" +#include +#include "ec_lcl.h" +#include + +static size_t crv_len = 0; +static EC_builtin_curve *curves = NULL; + +/* sanity checks field_inv function pointer in EC_METHOD */ +static int group_field_tests(const EC_GROUP *group, BN_CTX *ctx) +{ + BIGNUM *a = NULL, *b = NULL, *c = NULL; + int ret = 0; + + if (group->meth->field_inv == NULL || group->meth->field_mul == NULL) + return 1; + + BN_CTX_start(ctx); + a = BN_CTX_get(ctx); + b = BN_CTX_get(ctx); + if (!TEST_ptr(c = BN_CTX_get(ctx)) + /* 1/1 = 1 */ + || !TEST_true(group->meth->field_inv(group, b, BN_value_one(), ctx)) + || !TEST_true(BN_is_one(b)) + /* (1/a)*a = 1 */ + || !TEST_true(BN_pseudo_rand(a, BN_num_bits(group->field) - 1, + BN_RAND_TOP_ONE, BN_RAND_BOTTOM_ANY)) + || !TEST_true(group->meth->field_inv(group, b, a, ctx)) + || (group->meth->field_encode && + !TEST_true(group->meth->field_encode(group, a, a, ctx))) + || (group->meth->field_encode && + !TEST_true(group->meth->field_encode(group, b, b, ctx))) + || !TEST_true(group->meth->field_mul(group, c, a, b, ctx)) + || (group->meth->field_decode && + !TEST_true(group->meth->field_decode(group, c, c, ctx))) + || !TEST_true(BN_is_one(c))) + goto err; + + /* 1/0 = error */ + BN_zero(a); + if (!TEST_false(group->meth->field_inv(group, b, a, ctx)) + || !TEST_true(ERR_GET_LIB(ERR_peek_last_error()) == ERR_LIB_EC) + || !TEST_true(ERR_GET_REASON(ERR_peek_last_error()) == + EC_R_CANNOT_INVERT) + /* 1/p = error */ + || !TEST_false(group->meth->field_inv(group, b, group->field, ctx)) + || !TEST_true(ERR_GET_LIB(ERR_peek_last_error()) == ERR_LIB_EC) + || !TEST_true(ERR_GET_REASON(ERR_peek_last_error()) == + EC_R_CANNOT_INVERT)) + goto err; + + ERR_clear_error(); + ret = 1; + err: + BN_CTX_end(ctx); + return ret; +} + +/* wrapper for group_field_tests for explicit curve params and EC_METHOD */ +static int field_tests(const EC_METHOD *meth, const unsigned char *params, + int len) +{ + BN_CTX *ctx = NULL; + BIGNUM *p = NULL, *a = NULL, *b = NULL; + EC_GROUP *group = NULL; + int ret = 0; + + if (!TEST_ptr(ctx = BN_CTX_new())) + return 0; + + BN_CTX_start(ctx); + p = BN_CTX_get(ctx); + a = BN_CTX_get(ctx); + if (!TEST_ptr(b = BN_CTX_get(ctx)) + || !TEST_ptr(group = EC_GROUP_new(meth)) + || !TEST_true(BN_bin2bn(params, len, p)) + || !TEST_true(BN_bin2bn(params + len, len, a)) + || !TEST_true(BN_bin2bn(params + 2 * len, len, b)) + || !TEST_true(EC_GROUP_set_curve(group, p, a, b, ctx)) + || !group_field_tests(group, ctx)) + goto err; + ret = 1; + + err: + BN_CTX_end(ctx); + BN_CTX_free(ctx); + if (group != NULL) + EC_GROUP_free(group); + return ret; +} + +/* NIST prime curve P-256 */ +static const unsigned char params_p256[] = { + /* p */ + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + /* a */ + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + /* b */ + 0x5A, 0xC6, 0x35, 0xD8, 0xAA, 0x3A, 0x93, 0xE7, 0xB3, 0xEB, 0xBD, 0x55, + 0x76, 0x98, 0x86, 0xBC, 0x65, 0x1D, 0x06, 0xB0, 0xCC, 0x53, 0xB0, 0xF6, + 0x3B, 0xCE, 0x3C, 0x3E, 0x27, 0xD2, 0x60, 0x4B +}; + +#ifndef OPENSSL_NO_EC2M +/* NIST binary curve B-283 */ +static const unsigned char params_b283[] = { + /* p */ + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA1, + /* a */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + /* b */ + 0x02, 0x7B, 0x68, 0x0A, 0xC8, 0xB8, 0x59, 0x6D, 0xA5, 0xA4, 0xAF, 0x8A, + 0x19, 0xA0, 0x30, 0x3F, 0xCA, 0x97, 0xFD, 0x76, 0x45, 0x30, 0x9F, 0xA2, + 0xA5, 0x81, 0x48, 0x5A, 0xF6, 0x26, 0x3E, 0x31, 0x3B, 0x79, 0xA2, 0xF5 +}; +#endif + +/* test EC_GFp_simple_method directly */ +static int field_tests_ecp_simple(void) +{ + TEST_info("Testing EC_GFp_simple_method()\n"); + return field_tests(EC_GFp_simple_method(), params_p256, + sizeof(params_p256) / 3); +} + +/* test EC_GFp_mont_method directly */ +static int field_tests_ecp_mont(void) +{ + TEST_info("Testing EC_GFp_mont_method()\n"); + return field_tests(EC_GFp_mont_method(), params_p256, + sizeof(params_p256) / 3); +} + +#ifndef OPENSSL_NO_EC2M +/* test EC_GF2m_simple_method directly */ +static int field_tests_ec2_simple(void) +{ + TEST_info("Testing EC_GF2m_simple_method()\n"); + return field_tests(EC_GF2m_simple_method(), params_b283, + sizeof(params_b283) / 3); +} +#endif + +/* test default method for a named curve */ +static int field_tests_default(int n) +{ + BN_CTX *ctx = NULL; + EC_GROUP *group = NULL; + int nid = curves[n].nid; + int ret = 0; + + TEST_info("Testing curve %s\n", OBJ_nid2sn(nid)); + + if (!TEST_ptr(group = EC_GROUP_new_by_curve_name(nid)) + || !TEST_ptr(ctx = BN_CTX_new()) + || !group_field_tests(group, ctx)) + goto err; + + ret = 1; + err: + if (group != NULL) + EC_GROUP_free(group); + if (ctx != NULL) + BN_CTX_free(ctx); + return ret; +} + +int setup_tests(void) +{ + crv_len = EC_get_builtin_curves(NULL, 0); + if (!TEST_ptr(curves = OPENSSL_malloc(sizeof(*curves) * crv_len)) + || !TEST_true(EC_get_builtin_curves(curves, crv_len))) + return 0; + + ADD_TEST(field_tests_ecp_simple); + ADD_TEST(field_tests_ecp_mont); +#ifndef OPENSSL_NO_EC2M + ADD_TEST(field_tests_ec2_simple); +#endif + ADD_ALL_TESTS(field_tests_default, crv_len); + return 1; +} + +void cleanup_tests(void) +{ + OPENSSL_free(curves); +} diff --git a/test/recipes/03-test_internal_curve448.t b/test/recipes/03-test_internal_ec.t similarity index 73% copy from test/recipes/03-test_internal_curve448.t copy to test/recipes/03-test_internal_ec.t index 01ca5ad..0d31d0a 100644 --- a/test/recipes/03-test_internal_curve448.t +++ b/test/recipes/03-test_internal_ec.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -11,9 +11,9 @@ use OpenSSL::Test; # get 'plan' use OpenSSL::Test::Simple; use OpenSSL::Test::Utils; -setup("test_internal_curve448"); +setup("test_internal_ec"); plan skip_all => "This test is unsupported in a no-ec build" if disabled("ec"); -simple_test("test_internal_curve448", "curve448_internal_test"); +simple_test("test_internal_ec", "ec_internal_test"); From no-reply at appveyor.com Sun Feb 17 19:12:33 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sun, 17 Feb 2019 19:12:33 +0000 Subject: Build completed: openssl master.22582 Message-ID: <20190217191233.1.348C45711C590C1F@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Sun Feb 17 19:18:23 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sun, 17 Feb 2019 19:18:23 +0000 Subject: Build failed: openssl master.22583 Message-ID: <20190217191823.1.89761A2D30F8B771@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Sun Feb 17 19:27:44 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sun, 17 Feb 2019 19:27:44 +0000 Subject: Build failed: openssl master.22584 Message-ID: <20190217192744.1.AF0CA79EE520B366@appveyor.com> An HTML attachment was scrubbed... URL: From builds at travis-ci.org Sun Feb 17 19:26:55 2019 From: builds at travis-ci.org (Travis CI) Date: Sun, 17 Feb 2019 19:26:55 +0000 Subject: Broken: openssl/openssl#23188 (master - 8f58ede) In-Reply-To: Message-ID: <5c69b57fa700e_43fc420219ef82960e2@e8839581-2173-4c76-a598-16e6ace24478.mail> Build Update for openssl/openssl ------------------------------------- Build: #23188 Status: Broken Duration: 17 mins and 11 secs Commit: 8f58ede (master) Author: Billy Brumley Message: [test] unit test for field_inv function pointer in EC_METHOD Reviewed-by: Matt Caswell Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8254) View the changeset: https://github.com/openssl/openssl/compare/db42bb440e76...8f58ede09572 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/494580566?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Sun Feb 17 20:13:00 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sun, 17 Feb 2019 20:13:00 +0000 Subject: Build completed: openssl master.22585 Message-ID: <20190217201300.1.637D02F4B9C05F61@appveyor.com> An HTML attachment was scrubbed... URL: From kurt at openssl.org Sun Feb 17 22:40:38 2019 From: kurt at openssl.org (Kurt Roeckx) Date: Sun, 17 Feb 2019 22:40:38 +0000 Subject: [openssl] master update Message-ID: <1550443238.209381.958.nullmailer@dev.openssl.org> The branch master has been updated via e09633107b7e987b2179850715ba60d8fb069278 (commit) via c0e8e5007ba5234d4d448e82a1567e0c4467e629 (commit) from 8f58ede09572dcc6a7e6c01280dd348240199568 (commit) - Log ----------------------------------------------------------------- commit e09633107b7e987b2179850715ba60d8fb069278 Author: David Benjamin Date: Tue Jan 29 17:41:39 2019 -0600 Check for unpaired .cfi_remember_state Reviewed-by: Richard Levitte GH: #8109 commit c0e8e5007ba5234d4d448e82a1567e0c4467e629 Author: David Benjamin Date: Tue Jan 29 05:12:15 2019 +0000 Fix some CFI issues in x86_64 assembly The add/double shortcut in ecp_nistz256-x86_64.pl left one instruction point that did not unwind, and the "slow" path in AES_cbc_encrypt was not annotated correctly. For the latter, add .cfi_{remember,restore}_state support to perlasm. Next, fill in a bunch of functions that are missing no-op .cfi_startproc and .cfi_endproc blocks. libunwind cannot unwind those stack frames otherwise. Finally, work around a bug in libunwind by not encoding rflags. (rflags isn't a callee-saved register, so there's not much need to annotate it anyway.) These were found as part of ABI testing work in BoringSSL. Reviewed-by: Richard Levitte GH: #8109 ----------------------------------------------------------------------- Summary of changes: crypto/aes/asm/aes-x86_64.pl | 18 ++++++++++++++++-- crypto/aes/asm/aesni-x86_64.pl | 16 ++++++++++++++++ crypto/aes/asm/bsaes-x86_64.pl | 6 ++++++ crypto/aes/asm/vpaes-x86_64.pl | 26 ++++++++++++++++++++++++++ crypto/bn/asm/rsaz-avx2.pl | 6 ++++++ crypto/bn/asm/x86_64-mont5.pl | 2 ++ crypto/ec/asm/ecp_nistz256-x86_64.pl | 34 ++++++++++++++++++++++++++++++++++ crypto/modes/asm/ghash-x86_64.pl | 12 ++++++++++++ crypto/perlasm/x86_64-xlate.pl | 17 ++++++++++++++++- 9 files changed, 134 insertions(+), 3 deletions(-) diff --git a/crypto/aes/asm/aes-x86_64.pl b/crypto/aes/asm/aes-x86_64.pl index d84c697..6e1dcef 100755 --- a/crypto/aes/asm/aes-x86_64.pl +++ b/crypto/aes/asm/aes-x86_64.pl @@ -554,6 +554,7 @@ $code.=<<___; .type _x86_64_AES_encrypt_compact,\@abi-omnipotent .align 16 _x86_64_AES_encrypt_compact: +.cfi_startproc lea 128($sbox),$inp # size optimization mov 0-128($inp),$acc1 # prefetch Te4 mov 32-128($inp),$acc2 @@ -587,6 +588,7 @@ $code.=<<___; xor 8($key),$s2 xor 12($key),$s3 .byte 0xf3,0xc3 # rep ret +.cfi_endproc .size _x86_64_AES_encrypt_compact,.-_x86_64_AES_encrypt_compact ___ @@ -1161,6 +1163,7 @@ $code.=<<___; .type _x86_64_AES_decrypt_compact,\@abi-omnipotent .align 16 _x86_64_AES_decrypt_compact: +.cfi_startproc lea 128($sbox),$inp # size optimization mov 0-128($inp),$acc1 # prefetch Td4 mov 32-128($inp),$acc2 @@ -1203,6 +1206,7 @@ $code.=<<___; xor 8($key),$s2 xor 12($key),$s3 .byte 0xf3,0xc3 # rep ret +.cfi_endproc .size _x86_64_AES_decrypt_compact,.-_x86_64_AES_decrypt_compact ___ @@ -1365,6 +1369,7 @@ AES_set_encrypt_key: .type _x86_64_AES_set_encrypt_key,\@abi-omnipotent .align 16 _x86_64_AES_set_encrypt_key: +.cfi_startproc mov %esi,%ecx # %ecx=bits mov %rdi,%rsi # %rsi=userKey mov %rdx,%rdi # %rdi=key @@ -1546,6 +1551,7 @@ $code.=<<___; mov \$-1,%rax .Lexit: .byte 0xf3,0xc3 # rep ret +.cfi_endproc .size _x86_64_AES_set_encrypt_key,.-_x86_64_AES_set_encrypt_key ___ @@ -1728,7 +1734,9 @@ AES_cbc_encrypt: cmp \$0,%rdx # check length je .Lcbc_epilogue pushfq -.cfi_push 49 # %rflags +# This could be .cfi_push 49, but libunwind fails on registers it does not +# recognize. See https://bugzilla.redhat.com/show_bug.cgi?id=217087. +.cfi_adjust_cfa_offset 8 push %rbx .cfi_push %rbx push %rbp @@ -1751,6 +1759,7 @@ AES_cbc_encrypt: cmp \$0,%r9 cmoveq %r10,$sbox +.cfi_remember_state mov OPENSSL_ia32cap_P(%rip),%r10d cmp \$$speed_limit,%rdx jb .Lcbc_slow_prologue @@ -1986,6 +1995,7 @@ AES_cbc_encrypt: #--------------------------- SLOW ROUTINE ---------------------------# .align 16 .Lcbc_slow_prologue: +.cfi_restore_state # allocate aligned stack frame... lea -88(%rsp),%rbp and \$-64,%rbp @@ -1997,8 +2007,10 @@ AES_cbc_encrypt: sub %r10,%rbp xchg %rsp,%rbp +.cfi_def_cfa_register %rbp #add \$8,%rsp # reserve for return address! mov %rbp,$_rsp # save %rsp +.cfi_cfa_expression $_rsp,deref,+64 .Lcbc_slow_body: #mov %rdi,$_inp # save copy of inp #mov %rsi,$_out # save copy of out @@ -2187,7 +2199,9 @@ AES_cbc_encrypt: .cfi_def_cfa %rsp,16 .Lcbc_popfq: popfq -.cfi_pop 49 # %rflags +# This could be .cfi_pop 49, but libunwind fails on registers it does not +# recognize. See https://bugzilla.redhat.com/show_bug.cgi?id=217087. +.cfi_adjust_cfa_offset -8 .Lcbc_epilogue: ret .cfi_endproc diff --git a/crypto/aes/asm/aesni-x86_64.pl b/crypto/aes/asm/aesni-x86_64.pl index 5085339..406377a 100644 --- a/crypto/aes/asm/aesni-x86_64.pl +++ b/crypto/aes/asm/aesni-x86_64.pl @@ -274,6 +274,7 @@ $code.=<<___; .type ${PREFIX}_encrypt,\@abi-omnipotent .align 16 ${PREFIX}_encrypt: +.cfi_startproc movups ($inp),$inout0 # load input mov 240($key),$rounds # key->rounds ___ @@ -284,12 +285,14 @@ $code.=<<___; movups $inout0,($out) # output pxor $inout0,$inout0 ret +.cfi_endproc .size ${PREFIX}_encrypt,.-${PREFIX}_encrypt .globl ${PREFIX}_decrypt .type ${PREFIX}_decrypt,\@abi-omnipotent .align 16 ${PREFIX}_decrypt: +.cfi_startproc movups ($inp),$inout0 # load input mov 240($key),$rounds # key->rounds ___ @@ -300,6 +303,7 @@ $code.=<<___; movups $inout0,($out) # output pxor $inout0,$inout0 ret +.cfi_endproc .size ${PREFIX}_decrypt, .-${PREFIX}_decrypt ___ } @@ -325,6 +329,7 @@ $code.=<<___; .type _aesni_${dir}rypt2,\@abi-omnipotent .align 16 _aesni_${dir}rypt2: +.cfi_startproc $movkey ($key),$rndkey0 shl \$4,$rounds $movkey 16($key),$rndkey1 @@ -350,6 +355,7 @@ _aesni_${dir}rypt2: aes${dir}last $rndkey0,$inout0 aes${dir}last $rndkey0,$inout1 ret +.cfi_endproc .size _aesni_${dir}rypt2,.-_aesni_${dir}rypt2 ___ } @@ -361,6 +367,7 @@ $code.=<<___; .type _aesni_${dir}rypt3,\@abi-omnipotent .align 16 _aesni_${dir}rypt3: +.cfi_startproc $movkey ($key),$rndkey0 shl \$4,$rounds $movkey 16($key),$rndkey1 @@ -391,6 +398,7 @@ _aesni_${dir}rypt3: aes${dir}last $rndkey0,$inout1 aes${dir}last $rndkey0,$inout2 ret +.cfi_endproc .size _aesni_${dir}rypt3,.-_aesni_${dir}rypt3 ___ } @@ -406,6 +414,7 @@ $code.=<<___; .type _aesni_${dir}rypt4,\@abi-omnipotent .align 16 _aesni_${dir}rypt4: +.cfi_startproc $movkey ($key),$rndkey0 shl \$4,$rounds $movkey 16($key),$rndkey1 @@ -442,6 +451,7 @@ _aesni_${dir}rypt4: aes${dir}last $rndkey0,$inout2 aes${dir}last $rndkey0,$inout3 ret +.cfi_endproc .size _aesni_${dir}rypt4,.-_aesni_${dir}rypt4 ___ } @@ -453,6 +463,7 @@ $code.=<<___; .type _aesni_${dir}rypt6,\@abi-omnipotent .align 16 _aesni_${dir}rypt6: +.cfi_startproc $movkey ($key),$rndkey0 shl \$4,$rounds $movkey 16($key),$rndkey1 @@ -503,6 +514,7 @@ _aesni_${dir}rypt6: aes${dir}last $rndkey0,$inout4 aes${dir}last $rndkey0,$inout5 ret +.cfi_endproc .size _aesni_${dir}rypt6,.-_aesni_${dir}rypt6 ___ } @@ -514,6 +526,7 @@ $code.=<<___; .type _aesni_${dir}rypt8,\@abi-omnipotent .align 16 _aesni_${dir}rypt8: +.cfi_startproc $movkey ($key),$rndkey0 shl \$4,$rounds $movkey 16($key),$rndkey1 @@ -574,6 +587,7 @@ _aesni_${dir}rypt8: aes${dir}last $rndkey0,$inout6 aes${dir}last $rndkey0,$inout7 ret +.cfi_endproc .size _aesni_${dir}rypt8,.-_aesni_${dir}rypt8 ___ } @@ -598,6 +612,7 @@ $code.=<<___; .type aesni_ecb_encrypt,\@function,5 .align 16 aesni_ecb_encrypt: +.cfi_startproc ___ $code.=<<___ if ($win64); lea -0x58(%rsp),%rsp @@ -943,6 +958,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size aesni_ecb_encrypt,.-aesni_ecb_encrypt ___ diff --git a/crypto/aes/asm/bsaes-x86_64.pl b/crypto/aes/asm/bsaes-x86_64.pl index 5a82ff6..44651d4 100644 --- a/crypto/aes/asm/bsaes-x86_64.pl +++ b/crypto/aes/asm/bsaes-x86_64.pl @@ -816,6 +816,7 @@ $code.=<<___; .type _bsaes_encrypt8,\@abi-omnipotent .align 64 _bsaes_encrypt8: +.cfi_startproc lea .LBS0(%rip), $const # constants table movdqa ($key), @XMM[9] # round 0 key @@ -875,11 +876,13 @@ $code.=<<___; pxor @XMM[8], @XMM[0] pxor @XMM[8], @XMM[1] ret +.cfi_endproc .size _bsaes_encrypt8,.-_bsaes_encrypt8 .type _bsaes_decrypt8,\@abi-omnipotent .align 64 _bsaes_decrypt8: +.cfi_startproc lea .LBS0(%rip), $const # constants table movdqa ($key), @XMM[9] # round 0 key @@ -937,6 +940,7 @@ $code.=<<___; pxor @XMM[8], @XMM[0] pxor @XMM[8], @XMM[1] ret +.cfi_endproc .size _bsaes_decrypt8,.-_bsaes_decrypt8 ___ } @@ -971,6 +975,7 @@ $code.=<<___; .type _bsaes_key_convert,\@abi-omnipotent .align 16 _bsaes_key_convert: +.cfi_startproc lea .Lmasks(%rip), $const movdqu ($inp), %xmm7 # load round 0 key lea 0x10($inp), $inp @@ -1049,6 +1054,7 @@ _bsaes_key_convert: movdqa 0x50($const), %xmm7 # .L63 #movdqa %xmm6, ($out) # don't save last round key ret +.cfi_endproc .size _bsaes_key_convert,.-_bsaes_key_convert ___ } diff --git a/crypto/aes/asm/vpaes-x86_64.pl b/crypto/aes/asm/vpaes-x86_64.pl index 1a95ac2..d304003 100644 --- a/crypto/aes/asm/vpaes-x86_64.pl +++ b/crypto/aes/asm/vpaes-x86_64.pl @@ -91,6 +91,7 @@ $code.=<<___; .type _vpaes_encrypt_core,\@abi-omnipotent .align 16 _vpaes_encrypt_core: +.cfi_startproc mov %rdx, %r9 mov \$16, %r11 mov 240(%rdx),%eax @@ -171,6 +172,7 @@ _vpaes_encrypt_core: pxor %xmm4, %xmm0 # 0 = A pshufb %xmm1, %xmm0 ret +.cfi_endproc .size _vpaes_encrypt_core,.-_vpaes_encrypt_core ## @@ -181,6 +183,7 @@ _vpaes_encrypt_core: .type _vpaes_decrypt_core,\@abi-omnipotent .align 16 _vpaes_decrypt_core: +.cfi_startproc mov %rdx, %r9 # load key mov 240(%rdx),%eax movdqa %xmm9, %xmm1 @@ -277,6 +280,7 @@ _vpaes_decrypt_core: pxor %xmm4, %xmm0 # 0 = A pshufb %xmm2, %xmm0 ret +.cfi_endproc .size _vpaes_decrypt_core,.-_vpaes_decrypt_core ######################################################## @@ -287,6 +291,7 @@ _vpaes_decrypt_core: .type _vpaes_schedule_core,\@abi-omnipotent .align 16 _vpaes_schedule_core: +.cfi_startproc # rdi = key # rsi = size in bits # rdx = buffer @@ -453,6 +458,7 @@ _vpaes_schedule_core: pxor %xmm6, %xmm6 pxor %xmm7, %xmm7 ret +.cfi_endproc .size _vpaes_schedule_core,.-_vpaes_schedule_core ## @@ -472,6 +478,7 @@ _vpaes_schedule_core: .type _vpaes_schedule_192_smear,\@abi-omnipotent .align 16 _vpaes_schedule_192_smear: +.cfi_startproc pshufd \$0x80, %xmm6, %xmm1 # d c 0 0 -> c 0 0 0 pshufd \$0xFE, %xmm7, %xmm0 # b a _ _ -> b b b a pxor %xmm1, %xmm6 # -> c+d c 0 0 @@ -480,6 +487,7 @@ _vpaes_schedule_192_smear: movdqa %xmm6, %xmm0 movhlps %xmm1, %xmm6 # clobber low side with zeros ret +.cfi_endproc .size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear ## @@ -503,6 +511,7 @@ _vpaes_schedule_192_smear: .type _vpaes_schedule_round,\@abi-omnipotent .align 16 _vpaes_schedule_round: +.cfi_startproc # extract rcon from xmm8 pxor %xmm1, %xmm1 palignr \$15, %xmm8, %xmm1 @@ -556,6 +565,7 @@ _vpaes_schedule_low_round: pxor %xmm7, %xmm0 movdqa %xmm0, %xmm7 ret +.cfi_endproc .size _vpaes_schedule_round,.-_vpaes_schedule_round ## @@ -570,6 +580,7 @@ _vpaes_schedule_low_round: .type _vpaes_schedule_transform,\@abi-omnipotent .align 16 _vpaes_schedule_transform: +.cfi_startproc movdqa %xmm9, %xmm1 pandn %xmm0, %xmm1 psrld \$4, %xmm1 @@ -580,6 +591,7 @@ _vpaes_schedule_transform: pshufb %xmm1, %xmm0 pxor %xmm2, %xmm0 ret +.cfi_endproc .size _vpaes_schedule_transform,.-_vpaes_schedule_transform ## @@ -608,6 +620,7 @@ _vpaes_schedule_transform: .type _vpaes_schedule_mangle,\@abi-omnipotent .align 16 _vpaes_schedule_mangle: +.cfi_startproc movdqa %xmm0, %xmm4 # save xmm0 for later movdqa .Lk_mc_forward(%rip),%xmm5 test %rcx, %rcx @@ -672,6 +685,7 @@ _vpaes_schedule_mangle: and \$0x30, %r8 movdqu %xmm3, (%rdx) ret +.cfi_endproc .size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle # @@ -681,6 +695,7 @@ _vpaes_schedule_mangle: .type ${PREFIX}_set_encrypt_key,\@function,3 .align 16 ${PREFIX}_set_encrypt_key: +.cfi_startproc ___ $code.=<<___ if ($win64); lea -0xb8(%rsp),%rsp @@ -723,12 +738,14 @@ ___ $code.=<<___; xor %eax,%eax ret +.cfi_endproc .size ${PREFIX}_set_encrypt_key,.-${PREFIX}_set_encrypt_key .globl ${PREFIX}_set_decrypt_key .type ${PREFIX}_set_decrypt_key,\@function,3 .align 16 ${PREFIX}_set_decrypt_key: +.cfi_startproc ___ $code.=<<___ if ($win64); lea -0xb8(%rsp),%rsp @@ -776,12 +793,14 @@ ___ $code.=<<___; xor %eax,%eax ret +.cfi_endproc .size ${PREFIX}_set_decrypt_key,.-${PREFIX}_set_decrypt_key .globl ${PREFIX}_encrypt .type ${PREFIX}_encrypt,\@function,3 .align 16 ${PREFIX}_encrypt: +.cfi_startproc ___ $code.=<<___ if ($win64); lea -0xb8(%rsp),%rsp @@ -819,12 +838,14 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size ${PREFIX}_encrypt,.-${PREFIX}_encrypt .globl ${PREFIX}_decrypt .type ${PREFIX}_decrypt,\@function,3 .align 16 ${PREFIX}_decrypt: +.cfi_startproc ___ $code.=<<___ if ($win64); lea -0xb8(%rsp),%rsp @@ -862,6 +883,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size ${PREFIX}_decrypt,.-${PREFIX}_decrypt ___ { @@ -874,6 +896,7 @@ $code.=<<___; .type ${PREFIX}_cbc_encrypt,\@function,6 .align 16 ${PREFIX}_cbc_encrypt: +.cfi_startproc xchg $key,$len ___ ($len,$key)=($key,$len); @@ -944,6 +967,7 @@ ___ $code.=<<___; .Lcbc_abort: ret +.cfi_endproc .size ${PREFIX}_cbc_encrypt,.-${PREFIX}_cbc_encrypt ___ } @@ -957,6 +981,7 @@ $code.=<<___; .type _vpaes_preheat,\@abi-omnipotent .align 16 _vpaes_preheat: +.cfi_startproc lea .Lk_s0F(%rip), %r10 movdqa -0x20(%r10), %xmm10 # .Lk_inv movdqa -0x10(%r10), %xmm11 # .Lk_inv+16 @@ -966,6 +991,7 @@ _vpaes_preheat: movdqa 0x50(%r10), %xmm15 # .Lk_sb2 movdqa 0x60(%r10), %xmm14 # .Lk_sb2+16 ret +.cfi_endproc .size _vpaes_preheat,.-_vpaes_preheat ######################################################## ## ## diff --git a/crypto/bn/asm/rsaz-avx2.pl b/crypto/bn/asm/rsaz-avx2.pl index 9e6ec3a..fddb12f 100755 --- a/crypto/bn/asm/rsaz-avx2.pl +++ b/crypto/bn/asm/rsaz-avx2.pl @@ -1492,6 +1492,7 @@ $code.=<<___; .type rsaz_1024_red2norm_avx2,\@abi-omnipotent .align 32 rsaz_1024_red2norm_avx2: +.cfi_startproc sub \$-128,$inp # size optimization xor %rax,%rax ___ @@ -1525,12 +1526,14 @@ ___ } $code.=<<___; ret +.cfi_endproc .size rsaz_1024_red2norm_avx2,.-rsaz_1024_red2norm_avx2 .globl rsaz_1024_norm2red_avx2 .type rsaz_1024_norm2red_avx2,\@abi-omnipotent .align 32 rsaz_1024_norm2red_avx2: +.cfi_startproc sub \$-128,$out # size optimization mov ($inp), at T[0] mov \$0x1fffffff,%eax @@ -1562,6 +1565,7 @@ $code.=<<___; mov @T[0],`8*($j+2)-128`($out) mov @T[0],`8*($j+3)-128`($out) ret +.cfi_endproc .size rsaz_1024_norm2red_avx2,.-rsaz_1024_norm2red_avx2 ___ } @@ -1573,6 +1577,7 @@ $code.=<<___; .type rsaz_1024_scatter5_avx2,\@abi-omnipotent .align 32 rsaz_1024_scatter5_avx2: +.cfi_startproc vzeroupper vmovdqu .Lscatter_permd(%rip),%ymm5 shl \$4,$power @@ -1592,6 +1597,7 @@ rsaz_1024_scatter5_avx2: vzeroupper ret +.cfi_endproc .size rsaz_1024_scatter5_avx2,.-rsaz_1024_scatter5_avx2 .globl rsaz_1024_gather5_avx2 diff --git a/crypto/bn/asm/x86_64-mont5.pl b/crypto/bn/asm/x86_64-mont5.pl index 8fa233c..6331566 100755 --- a/crypto/bn/asm/x86_64-mont5.pl +++ b/crypto/bn/asm/x86_64-mont5.pl @@ -2910,6 +2910,7 @@ bn_powerx5: .align 32 bn_sqrx8x_internal: __bn_sqrx8x_internal: +.cfi_startproc ################################################################## # Squaring part: # @@ -3542,6 +3543,7 @@ __bn_sqrx8x_reduction: cmp 8+8(%rsp),%r8 # end of t[]? jb .Lsqrx8x_reduction_loop ret +.cfi_endproc .size bn_sqrx8x_internal,.-bn_sqrx8x_internal ___ } diff --git a/crypto/ec/asm/ecp_nistz256-x86_64.pl b/crypto/ec/asm/ecp_nistz256-x86_64.pl index 0579f45..a28ee8e 100755 --- a/crypto/ec/asm/ecp_nistz256-x86_64.pl +++ b/crypto/ec/asm/ecp_nistz256-x86_64.pl @@ -1674,6 +1674,7 @@ $code.=<<___; .type __ecp_nistz256_mul_montq,\@abi-omnipotent .align 32 __ecp_nistz256_mul_montq: +.cfi_startproc ######################################################################## # Multiply a by b[0] mov %rax, $t1 @@ -1885,6 +1886,7 @@ __ecp_nistz256_mul_montq: mov $acc1, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_mul_montq,.-__ecp_nistz256_mul_montq ################################################################################ @@ -1968,6 +1970,7 @@ $code.=<<___; .type __ecp_nistz256_sqr_montq,\@abi-omnipotent .align 32 __ecp_nistz256_sqr_montq: +.cfi_startproc mov %rax, $acc5 mulq $acc6 # a[1]*a[0] mov %rax, $acc1 @@ -2125,6 +2128,7 @@ __ecp_nistz256_sqr_montq: mov $acc7, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_sqr_montq,.-__ecp_nistz256_sqr_montq ___ @@ -2133,6 +2137,7 @@ $code.=<<___; .type __ecp_nistz256_mul_montx,\@abi-omnipotent .align 32 __ecp_nistz256_mul_montx: +.cfi_startproc ######################################################################## # Multiply by b[0] mulx $acc1, $acc0, $acc1 @@ -2295,11 +2300,13 @@ __ecp_nistz256_mul_montx: mov $acc1, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_mul_montx,.-__ecp_nistz256_mul_montx .type __ecp_nistz256_sqr_montx,\@abi-omnipotent .align 32 __ecp_nistz256_sqr_montx: +.cfi_startproc mulx $acc6, $acc1, $acc2 # a[0]*a[1] mulx $acc7, $t0, $acc3 # a[0]*a[2] xor %eax, %eax @@ -2423,6 +2430,7 @@ __ecp_nistz256_sqr_montx: mov $acc7, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_sqr_montx,.-__ecp_nistz256_sqr_montx ___ } @@ -2578,6 +2586,7 @@ ecp_nistz256_scatter_w5: .type ecp_nistz256_gather_w5,\@abi-omnipotent .align 32 ecp_nistz256_gather_w5: +.cfi_startproc ___ $code.=<<___ if ($avx>1); mov OPENSSL_ia32cap_P+8(%rip), %eax @@ -2666,6 +2675,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .LSEH_end_ecp_nistz256_gather_w5: .size ecp_nistz256_gather_w5,.-ecp_nistz256_gather_w5 @@ -2694,6 +2704,7 @@ ecp_nistz256_scatter_w7: .type ecp_nistz256_gather_w7,\@abi-omnipotent .align 32 ecp_nistz256_gather_w7: +.cfi_startproc ___ $code.=<<___ if ($avx>1); mov OPENSSL_ia32cap_P+8(%rip), %eax @@ -2771,6 +2782,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .LSEH_end_ecp_nistz256_gather_w7: .size ecp_nistz256_gather_w7,.-ecp_nistz256_gather_w7 ___ @@ -2787,6 +2799,7 @@ $code.=<<___; .type ecp_nistz256_avx2_gather_w5,\@abi-omnipotent .align 32 ecp_nistz256_avx2_gather_w5: +.cfi_startproc .Lavx2_gather_w5: vzeroupper ___ @@ -2874,6 +2887,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .LSEH_end_ecp_nistz256_avx2_gather_w5: .size ecp_nistz256_avx2_gather_w5,.-ecp_nistz256_avx2_gather_w5 ___ @@ -2893,6 +2907,7 @@ $code.=<<___; .type ecp_nistz256_avx2_gather_w7,\@abi-omnipotent .align 32 ecp_nistz256_avx2_gather_w7: +.cfi_startproc .Lavx2_gather_w7: vzeroupper ___ @@ -2995,6 +3010,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .LSEH_end_ecp_nistz256_avx2_gather_w7: .size ecp_nistz256_avx2_gather_w7,.-ecp_nistz256_avx2_gather_w7 ___ @@ -3064,6 +3080,7 @@ $code.=<<___; .type __ecp_nistz256_add_toq,\@abi-omnipotent .align 32 __ecp_nistz256_add_toq: +.cfi_startproc xor $t4,$t4 add 8*0($b_ptr), $a0 adc 8*1($b_ptr), $a1 @@ -3091,11 +3108,13 @@ __ecp_nistz256_add_toq: mov $a3, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_add_toq,.-__ecp_nistz256_add_toq .type __ecp_nistz256_sub_fromq,\@abi-omnipotent .align 32 __ecp_nistz256_sub_fromq: +.cfi_startproc sub 8*0($b_ptr), $a0 sbb 8*1($b_ptr), $a1 mov $a0, $t0 @@ -3122,11 +3141,13 @@ __ecp_nistz256_sub_fromq: mov $a3, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_sub_fromq,.-__ecp_nistz256_sub_fromq .type __ecp_nistz256_subq,\@abi-omnipotent .align 32 __ecp_nistz256_subq: +.cfi_startproc sub $a0, $t0 sbb $a1, $t1 mov $t0, $a0 @@ -3149,11 +3170,13 @@ __ecp_nistz256_subq: cmovnz $t3, $a3 ret +.cfi_endproc .size __ecp_nistz256_subq,.-__ecp_nistz256_subq .type __ecp_nistz256_mul_by_2q,\@abi-omnipotent .align 32 __ecp_nistz256_mul_by_2q: +.cfi_startproc xor $t4, $t4 add $a0, $a0 # a0:a3+a0:a3 adc $a1, $a1 @@ -3181,6 +3204,7 @@ __ecp_nistz256_mul_by_2q: mov $a3, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_mul_by_2q,.-__ecp_nistz256_mul_by_2q ___ } @@ -3620,7 +3644,9 @@ $code.=<<___; movq %xmm1, $a_ptr # restore $a_ptr movq %xmm0, $r_ptr # restore $r_ptr add \$`32*(18-5)`, %rsp # difference in frame sizes +.cfi_adjust_cfa_offset `-32*(18-5)` jmp .Lpoint_double_shortcut$x +.cfi_adjust_cfa_offset `32*(18-5)` .align 32 .Ladd_proceed$x: @@ -4156,6 +4182,7 @@ $code.=<<___; .type __ecp_nistz256_add_tox,\@abi-omnipotent .align 32 __ecp_nistz256_add_tox: +.cfi_startproc xor $t4, $t4 adc 8*0($b_ptr), $a0 adc 8*1($b_ptr), $a1 @@ -4184,11 +4211,13 @@ __ecp_nistz256_add_tox: mov $a3, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_add_tox,.-__ecp_nistz256_add_tox .type __ecp_nistz256_sub_fromx,\@abi-omnipotent .align 32 __ecp_nistz256_sub_fromx: +.cfi_startproc xor $t4, $t4 sbb 8*0($b_ptr), $a0 sbb 8*1($b_ptr), $a1 @@ -4217,11 +4246,13 @@ __ecp_nistz256_sub_fromx: mov $a3, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_sub_fromx,.-__ecp_nistz256_sub_fromx .type __ecp_nistz256_subx,\@abi-omnipotent .align 32 __ecp_nistz256_subx: +.cfi_startproc xor $t4, $t4 sbb $a0, $t0 sbb $a1, $t1 @@ -4246,11 +4277,13 @@ __ecp_nistz256_subx: cmovc $t3, $a3 ret +.cfi_endproc .size __ecp_nistz256_subx,.-__ecp_nistz256_subx .type __ecp_nistz256_mul_by_2x,\@abi-omnipotent .align 32 __ecp_nistz256_mul_by_2x: +.cfi_startproc xor $t4, $t4 adc $a0, $a0 # a0:a3+a0:a3 adc $a1, $a1 @@ -4279,6 +4312,7 @@ __ecp_nistz256_mul_by_2x: mov $a3, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_mul_by_2x,.-__ecp_nistz256_mul_by_2x ___ } diff --git a/crypto/modes/asm/ghash-x86_64.pl b/crypto/modes/asm/ghash-x86_64.pl index 8f8ab62..d6d0d75 100644 --- a/crypto/modes/asm/ghash-x86_64.pl +++ b/crypto/modes/asm/ghash-x86_64.pl @@ -529,6 +529,7 @@ $code.=<<___; .type gcm_init_clmul,\@abi-omnipotent .align 16 gcm_init_clmul: +.cfi_startproc .L_init_clmul: ___ $code.=<<___ if ($win64); @@ -598,6 +599,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size gcm_init_clmul,.-gcm_init_clmul ___ } @@ -609,6 +611,7 @@ $code.=<<___; .type gcm_gmult_clmul,\@abi-omnipotent .align 16 gcm_gmult_clmul: +.cfi_startproc .L_gmult_clmul: movdqu ($Xip),$Xi movdqa .Lbswap_mask(%rip),$T3 @@ -645,6 +648,7 @@ $code.=<<___; pshufb $T3,$Xi movdqu $Xi,($Xip) ret +.cfi_endproc .size gcm_gmult_clmul,.-gcm_gmult_clmul ___ } @@ -658,6 +662,7 @@ $code.=<<___; .type gcm_ghash_clmul,\@abi-omnipotent .align 32 gcm_ghash_clmul: +.cfi_startproc .L_ghash_clmul: ___ $code.=<<___ if ($win64); @@ -1005,6 +1010,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size gcm_ghash_clmul,.-gcm_ghash_clmul ___ } @@ -1014,6 +1020,7 @@ $code.=<<___; .type gcm_init_avx,\@abi-omnipotent .align 32 gcm_init_avx: +.cfi_startproc ___ if ($avx) { my ($Htbl,$Xip)=@_4args; @@ -1142,6 +1149,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size gcm_init_avx,.-gcm_init_avx ___ } else { @@ -1156,7 +1164,9 @@ $code.=<<___; .type gcm_gmult_avx,\@abi-omnipotent .align 32 gcm_gmult_avx: +.cfi_startproc jmp .L_gmult_clmul +.cfi_endproc .size gcm_gmult_avx,.-gcm_gmult_avx ___ @@ -1165,6 +1175,7 @@ $code.=<<___; .type gcm_ghash_avx,\@abi-omnipotent .align 32 gcm_ghash_avx: +.cfi_startproc ___ if ($avx) { my ($Xip,$Htbl,$inp,$len)=@_4args; @@ -1577,6 +1588,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size gcm_ghash_avx,.-gcm_ghash_avx ___ } else { diff --git a/crypto/perlasm/x86_64-xlate.pl b/crypto/perlasm/x86_64-xlate.pl index 5e5d6cc..4a7ec7a 100755 --- a/crypto/perlasm/x86_64-xlate.pl +++ b/crypto/perlasm/x86_64-xlate.pl @@ -541,6 +541,7 @@ my %globals; ); my ($cfa_reg, $cfa_rsp); + my @cfa_stack; # [us]leb128 format is variable-length integer representation base # 2^128, with most significant bit of each byte being 0 denoting @@ -648,7 +649,13 @@ my %globals; # why it starts with -8. Recall that CFA is top of caller's # stack... /startproc/ && do { ($cfa_reg, $cfa_rsp) = ("%rsp", -8); last; }; - /endproc/ && do { ($cfa_reg, $cfa_rsp) = ("%rsp", 0); last; }; + /endproc/ && do { ($cfa_reg, $cfa_rsp) = ("%rsp", 0); + # .cfi_remember_state directives that are not + # matched with .cfi_restore_state are + # unnecessary. + die "unpaired .cfi_remember_state" if (@cfa_stack); + last; + }; /def_cfa_register/ && do { $cfa_reg = $$line; last; }; /def_cfa_offset/ @@ -688,6 +695,14 @@ my %globals; cfa_expression($$line))); last; }; + /remember_state/ + && do { push @cfa_stack, [$cfa_reg, $cfa_rsp]; + last; + }; + /restore_state/ + && do { ($cfa_reg, $cfa_rsp) = @{pop @cfa_stack}; + last; + }; } $self->{value} = ".cfi_$dir\t$$line" if ($dir); From kurt at openssl.org Sun Feb 17 22:41:28 2019 From: kurt at openssl.org (Kurt Roeckx) Date: Sun, 17 Feb 2019 22:41:28 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550443288.902089.1952.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 2e826078410bdb117710890b0e99bbdbbbf7e95d (commit) via 2086edb799acf6ad5ef0bb53aa3b17abf4f7f992 (commit) from ed48d2032d29a82c6aebbddf0fbf530ac2d2521d (commit) - Log ----------------------------------------------------------------- commit 2e826078410bdb117710890b0e99bbdbbbf7e95d Author: David Benjamin Date: Tue Jan 29 17:41:39 2019 -0600 Check for unpaired .cfi_remember_state Reviewed-by: Richard Levitte GH: #8109 (cherry picked from commit e09633107b7e987b2179850715ba60d8fb069278) commit 2086edb799acf6ad5ef0bb53aa3b17abf4f7f992 Author: David Benjamin Date: Tue Jan 29 05:12:15 2019 +0000 Fix some CFI issues in x86_64 assembly The add/double shortcut in ecp_nistz256-x86_64.pl left one instruction point that did not unwind, and the "slow" path in AES_cbc_encrypt was not annotated correctly. For the latter, add .cfi_{remember,restore}_state support to perlasm. Next, fill in a bunch of functions that are missing no-op .cfi_startproc and .cfi_endproc blocks. libunwind cannot unwind those stack frames otherwise. Finally, work around a bug in libunwind by not encoding rflags. (rflags isn't a callee-saved register, so there's not much need to annotate it anyway.) These were found as part of ABI testing work in BoringSSL. Reviewed-by: Richard Levitte GH: #8109 (cherry picked from commit c0e8e5007ba5234d4d448e82a1567e0c4467e629) ----------------------------------------------------------------------- Summary of changes: crypto/aes/asm/aes-x86_64.pl | 18 ++++++++++++++++-- crypto/aes/asm/aesni-x86_64.pl | 16 ++++++++++++++++ crypto/aes/asm/bsaes-x86_64.pl | 6 ++++++ crypto/aes/asm/vpaes-x86_64.pl | 26 ++++++++++++++++++++++++++ crypto/bn/asm/rsaz-avx2.pl | 6 ++++++ crypto/bn/asm/x86_64-mont5.pl | 2 ++ crypto/ec/asm/ecp_nistz256-x86_64.pl | 34 ++++++++++++++++++++++++++++++++++ crypto/modes/asm/ghash-x86_64.pl | 12 ++++++++++++ crypto/perlasm/x86_64-xlate.pl | 17 ++++++++++++++++- 9 files changed, 134 insertions(+), 3 deletions(-) diff --git a/crypto/aes/asm/aes-x86_64.pl b/crypto/aes/asm/aes-x86_64.pl index 4d1dc9c..55c6414 100755 --- a/crypto/aes/asm/aes-x86_64.pl +++ b/crypto/aes/asm/aes-x86_64.pl @@ -554,6 +554,7 @@ $code.=<<___; .type _x86_64_AES_encrypt_compact,\@abi-omnipotent .align 16 _x86_64_AES_encrypt_compact: +.cfi_startproc lea 128($sbox),$inp # size optimization mov 0-128($inp),$acc1 # prefetch Te4 mov 32-128($inp),$acc2 @@ -587,6 +588,7 @@ $code.=<<___; xor 8($key),$s2 xor 12($key),$s3 .byte 0xf3,0xc3 # rep ret +.cfi_endproc .size _x86_64_AES_encrypt_compact,.-_x86_64_AES_encrypt_compact ___ @@ -1161,6 +1163,7 @@ $code.=<<___; .type _x86_64_AES_decrypt_compact,\@abi-omnipotent .align 16 _x86_64_AES_decrypt_compact: +.cfi_startproc lea 128($sbox),$inp # size optimization mov 0-128($inp),$acc1 # prefetch Td4 mov 32-128($inp),$acc2 @@ -1203,6 +1206,7 @@ $code.=<<___; xor 8($key),$s2 xor 12($key),$s3 .byte 0xf3,0xc3 # rep ret +.cfi_endproc .size _x86_64_AES_decrypt_compact,.-_x86_64_AES_decrypt_compact ___ @@ -1365,6 +1369,7 @@ AES_set_encrypt_key: .type _x86_64_AES_set_encrypt_key,\@abi-omnipotent .align 16 _x86_64_AES_set_encrypt_key: +.cfi_startproc mov %esi,%ecx # %ecx=bits mov %rdi,%rsi # %rsi=userKey mov %rdx,%rdi # %rdi=key @@ -1546,6 +1551,7 @@ $code.=<<___; mov \$-1,%rax .Lexit: .byte 0xf3,0xc3 # rep ret +.cfi_endproc .size _x86_64_AES_set_encrypt_key,.-_x86_64_AES_set_encrypt_key ___ @@ -1728,7 +1734,9 @@ AES_cbc_encrypt: cmp \$0,%rdx # check length je .Lcbc_epilogue pushfq -.cfi_push 49 # %rflags +# This could be .cfi_push 49, but libunwind fails on registers it does not +# recognize. See https://bugzilla.redhat.com/show_bug.cgi?id=217087. +.cfi_adjust_cfa_offset 8 push %rbx .cfi_push %rbx push %rbp @@ -1751,6 +1759,7 @@ AES_cbc_encrypt: cmp \$0,%r9 cmoveq %r10,$sbox +.cfi_remember_state mov OPENSSL_ia32cap_P(%rip),%r10d cmp \$$speed_limit,%rdx jb .Lcbc_slow_prologue @@ -1986,6 +1995,7 @@ AES_cbc_encrypt: #--------------------------- SLOW ROUTINE ---------------------------# .align 16 .Lcbc_slow_prologue: +.cfi_restore_state # allocate aligned stack frame... lea -88(%rsp),%rbp and \$-64,%rbp @@ -1997,8 +2007,10 @@ AES_cbc_encrypt: sub %r10,%rbp xchg %rsp,%rbp +.cfi_def_cfa_register %rbp #add \$8,%rsp # reserve for return address! mov %rbp,$_rsp # save %rsp +.cfi_cfa_expression $_rsp,deref,+64 .Lcbc_slow_body: #mov %rdi,$_inp # save copy of inp #mov %rsi,$_out # save copy of out @@ -2187,7 +2199,9 @@ AES_cbc_encrypt: .cfi_def_cfa %rsp,16 .Lcbc_popfq: popfq -.cfi_pop 49 # %rflags +# This could be .cfi_pop 49, but libunwind fails on registers it does not +# recognize. See https://bugzilla.redhat.com/show_bug.cgi?id=217087. +.cfi_adjust_cfa_offset -8 .Lcbc_epilogue: ret .cfi_endproc diff --git a/crypto/aes/asm/aesni-x86_64.pl b/crypto/aes/asm/aesni-x86_64.pl index 2a202c5..ebcd9b5 100644 --- a/crypto/aes/asm/aesni-x86_64.pl +++ b/crypto/aes/asm/aesni-x86_64.pl @@ -274,6 +274,7 @@ $code.=<<___; .type ${PREFIX}_encrypt,\@abi-omnipotent .align 16 ${PREFIX}_encrypt: +.cfi_startproc movups ($inp),$inout0 # load input mov 240($key),$rounds # key->rounds ___ @@ -284,12 +285,14 @@ $code.=<<___; movups $inout0,($out) # output pxor $inout0,$inout0 ret +.cfi_endproc .size ${PREFIX}_encrypt,.-${PREFIX}_encrypt .globl ${PREFIX}_decrypt .type ${PREFIX}_decrypt,\@abi-omnipotent .align 16 ${PREFIX}_decrypt: +.cfi_startproc movups ($inp),$inout0 # load input mov 240($key),$rounds # key->rounds ___ @@ -300,6 +303,7 @@ $code.=<<___; movups $inout0,($out) # output pxor $inout0,$inout0 ret +.cfi_endproc .size ${PREFIX}_decrypt, .-${PREFIX}_decrypt ___ } @@ -325,6 +329,7 @@ $code.=<<___; .type _aesni_${dir}rypt2,\@abi-omnipotent .align 16 _aesni_${dir}rypt2: +.cfi_startproc $movkey ($key),$rndkey0 shl \$4,$rounds $movkey 16($key),$rndkey1 @@ -350,6 +355,7 @@ _aesni_${dir}rypt2: aes${dir}last $rndkey0,$inout0 aes${dir}last $rndkey0,$inout1 ret +.cfi_endproc .size _aesni_${dir}rypt2,.-_aesni_${dir}rypt2 ___ } @@ -361,6 +367,7 @@ $code.=<<___; .type _aesni_${dir}rypt3,\@abi-omnipotent .align 16 _aesni_${dir}rypt3: +.cfi_startproc $movkey ($key),$rndkey0 shl \$4,$rounds $movkey 16($key),$rndkey1 @@ -391,6 +398,7 @@ _aesni_${dir}rypt3: aes${dir}last $rndkey0,$inout1 aes${dir}last $rndkey0,$inout2 ret +.cfi_endproc .size _aesni_${dir}rypt3,.-_aesni_${dir}rypt3 ___ } @@ -406,6 +414,7 @@ $code.=<<___; .type _aesni_${dir}rypt4,\@abi-omnipotent .align 16 _aesni_${dir}rypt4: +.cfi_startproc $movkey ($key),$rndkey0 shl \$4,$rounds $movkey 16($key),$rndkey1 @@ -442,6 +451,7 @@ _aesni_${dir}rypt4: aes${dir}last $rndkey0,$inout2 aes${dir}last $rndkey0,$inout3 ret +.cfi_endproc .size _aesni_${dir}rypt4,.-_aesni_${dir}rypt4 ___ } @@ -453,6 +463,7 @@ $code.=<<___; .type _aesni_${dir}rypt6,\@abi-omnipotent .align 16 _aesni_${dir}rypt6: +.cfi_startproc $movkey ($key),$rndkey0 shl \$4,$rounds $movkey 16($key),$rndkey1 @@ -503,6 +514,7 @@ _aesni_${dir}rypt6: aes${dir}last $rndkey0,$inout4 aes${dir}last $rndkey0,$inout5 ret +.cfi_endproc .size _aesni_${dir}rypt6,.-_aesni_${dir}rypt6 ___ } @@ -514,6 +526,7 @@ $code.=<<___; .type _aesni_${dir}rypt8,\@abi-omnipotent .align 16 _aesni_${dir}rypt8: +.cfi_startproc $movkey ($key),$rndkey0 shl \$4,$rounds $movkey 16($key),$rndkey1 @@ -574,6 +587,7 @@ _aesni_${dir}rypt8: aes${dir}last $rndkey0,$inout6 aes${dir}last $rndkey0,$inout7 ret +.cfi_endproc .size _aesni_${dir}rypt8,.-_aesni_${dir}rypt8 ___ } @@ -598,6 +612,7 @@ $code.=<<___; .type aesni_ecb_encrypt,\@function,5 .align 16 aesni_ecb_encrypt: +.cfi_startproc ___ $code.=<<___ if ($win64); lea -0x58(%rsp),%rsp @@ -943,6 +958,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size aesni_ecb_encrypt,.-aesni_ecb_encrypt ___ diff --git a/crypto/aes/asm/bsaes-x86_64.pl b/crypto/aes/asm/bsaes-x86_64.pl index 2c79c2b..030452b 100644 --- a/crypto/aes/asm/bsaes-x86_64.pl +++ b/crypto/aes/asm/bsaes-x86_64.pl @@ -816,6 +816,7 @@ $code.=<<___; .type _bsaes_encrypt8,\@abi-omnipotent .align 64 _bsaes_encrypt8: +.cfi_startproc lea .LBS0(%rip), $const # constants table movdqa ($key), @XMM[9] # round 0 key @@ -875,11 +876,13 @@ $code.=<<___; pxor @XMM[8], @XMM[0] pxor @XMM[8], @XMM[1] ret +.cfi_endproc .size _bsaes_encrypt8,.-_bsaes_encrypt8 .type _bsaes_decrypt8,\@abi-omnipotent .align 64 _bsaes_decrypt8: +.cfi_startproc lea .LBS0(%rip), $const # constants table movdqa ($key), @XMM[9] # round 0 key @@ -937,6 +940,7 @@ $code.=<<___; pxor @XMM[8], @XMM[0] pxor @XMM[8], @XMM[1] ret +.cfi_endproc .size _bsaes_decrypt8,.-_bsaes_decrypt8 ___ } @@ -971,6 +975,7 @@ $code.=<<___; .type _bsaes_key_convert,\@abi-omnipotent .align 16 _bsaes_key_convert: +.cfi_startproc lea .Lmasks(%rip), $const movdqu ($inp), %xmm7 # load round 0 key lea 0x10($inp), $inp @@ -1049,6 +1054,7 @@ _bsaes_key_convert: movdqa 0x50($const), %xmm7 # .L63 #movdqa %xmm6, ($out) # don't save last round key ret +.cfi_endproc .size _bsaes_key_convert,.-_bsaes_key_convert ___ } diff --git a/crypto/aes/asm/vpaes-x86_64.pl b/crypto/aes/asm/vpaes-x86_64.pl index b715aca..ec2a8da 100644 --- a/crypto/aes/asm/vpaes-x86_64.pl +++ b/crypto/aes/asm/vpaes-x86_64.pl @@ -91,6 +91,7 @@ $code.=<<___; .type _vpaes_encrypt_core,\@abi-omnipotent .align 16 _vpaes_encrypt_core: +.cfi_startproc mov %rdx, %r9 mov \$16, %r11 mov 240(%rdx),%eax @@ -171,6 +172,7 @@ _vpaes_encrypt_core: pxor %xmm4, %xmm0 # 0 = A pshufb %xmm1, %xmm0 ret +.cfi_endproc .size _vpaes_encrypt_core,.-_vpaes_encrypt_core ## @@ -181,6 +183,7 @@ _vpaes_encrypt_core: .type _vpaes_decrypt_core,\@abi-omnipotent .align 16 _vpaes_decrypt_core: +.cfi_startproc mov %rdx, %r9 # load key mov 240(%rdx),%eax movdqa %xmm9, %xmm1 @@ -277,6 +280,7 @@ _vpaes_decrypt_core: pxor %xmm4, %xmm0 # 0 = A pshufb %xmm2, %xmm0 ret +.cfi_endproc .size _vpaes_decrypt_core,.-_vpaes_decrypt_core ######################################################## @@ -287,6 +291,7 @@ _vpaes_decrypt_core: .type _vpaes_schedule_core,\@abi-omnipotent .align 16 _vpaes_schedule_core: +.cfi_startproc # rdi = key # rsi = size in bits # rdx = buffer @@ -453,6 +458,7 @@ _vpaes_schedule_core: pxor %xmm6, %xmm6 pxor %xmm7, %xmm7 ret +.cfi_endproc .size _vpaes_schedule_core,.-_vpaes_schedule_core ## @@ -472,6 +478,7 @@ _vpaes_schedule_core: .type _vpaes_schedule_192_smear,\@abi-omnipotent .align 16 _vpaes_schedule_192_smear: +.cfi_startproc pshufd \$0x80, %xmm6, %xmm1 # d c 0 0 -> c 0 0 0 pshufd \$0xFE, %xmm7, %xmm0 # b a _ _ -> b b b a pxor %xmm1, %xmm6 # -> c+d c 0 0 @@ -480,6 +487,7 @@ _vpaes_schedule_192_smear: movdqa %xmm6, %xmm0 movhlps %xmm1, %xmm6 # clobber low side with zeros ret +.cfi_endproc .size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear ## @@ -503,6 +511,7 @@ _vpaes_schedule_192_smear: .type _vpaes_schedule_round,\@abi-omnipotent .align 16 _vpaes_schedule_round: +.cfi_startproc # extract rcon from xmm8 pxor %xmm1, %xmm1 palignr \$15, %xmm8, %xmm1 @@ -556,6 +565,7 @@ _vpaes_schedule_low_round: pxor %xmm7, %xmm0 movdqa %xmm0, %xmm7 ret +.cfi_endproc .size _vpaes_schedule_round,.-_vpaes_schedule_round ## @@ -570,6 +580,7 @@ _vpaes_schedule_low_round: .type _vpaes_schedule_transform,\@abi-omnipotent .align 16 _vpaes_schedule_transform: +.cfi_startproc movdqa %xmm9, %xmm1 pandn %xmm0, %xmm1 psrld \$4, %xmm1 @@ -580,6 +591,7 @@ _vpaes_schedule_transform: pshufb %xmm1, %xmm0 pxor %xmm2, %xmm0 ret +.cfi_endproc .size _vpaes_schedule_transform,.-_vpaes_schedule_transform ## @@ -608,6 +620,7 @@ _vpaes_schedule_transform: .type _vpaes_schedule_mangle,\@abi-omnipotent .align 16 _vpaes_schedule_mangle: +.cfi_startproc movdqa %xmm0, %xmm4 # save xmm0 for later movdqa .Lk_mc_forward(%rip),%xmm5 test %rcx, %rcx @@ -672,6 +685,7 @@ _vpaes_schedule_mangle: and \$0x30, %r8 movdqu %xmm3, (%rdx) ret +.cfi_endproc .size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle # @@ -681,6 +695,7 @@ _vpaes_schedule_mangle: .type ${PREFIX}_set_encrypt_key,\@function,3 .align 16 ${PREFIX}_set_encrypt_key: +.cfi_startproc ___ $code.=<<___ if ($win64); lea -0xb8(%rsp),%rsp @@ -723,12 +738,14 @@ ___ $code.=<<___; xor %eax,%eax ret +.cfi_endproc .size ${PREFIX}_set_encrypt_key,.-${PREFIX}_set_encrypt_key .globl ${PREFIX}_set_decrypt_key .type ${PREFIX}_set_decrypt_key,\@function,3 .align 16 ${PREFIX}_set_decrypt_key: +.cfi_startproc ___ $code.=<<___ if ($win64); lea -0xb8(%rsp),%rsp @@ -776,12 +793,14 @@ ___ $code.=<<___; xor %eax,%eax ret +.cfi_endproc .size ${PREFIX}_set_decrypt_key,.-${PREFIX}_set_decrypt_key .globl ${PREFIX}_encrypt .type ${PREFIX}_encrypt,\@function,3 .align 16 ${PREFIX}_encrypt: +.cfi_startproc ___ $code.=<<___ if ($win64); lea -0xb8(%rsp),%rsp @@ -819,12 +838,14 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size ${PREFIX}_encrypt,.-${PREFIX}_encrypt .globl ${PREFIX}_decrypt .type ${PREFIX}_decrypt,\@function,3 .align 16 ${PREFIX}_decrypt: +.cfi_startproc ___ $code.=<<___ if ($win64); lea -0xb8(%rsp),%rsp @@ -862,6 +883,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size ${PREFIX}_decrypt,.-${PREFIX}_decrypt ___ { @@ -874,6 +896,7 @@ $code.=<<___; .type ${PREFIX}_cbc_encrypt,\@function,6 .align 16 ${PREFIX}_cbc_encrypt: +.cfi_startproc xchg $key,$len ___ ($len,$key)=($key,$len); @@ -944,6 +967,7 @@ ___ $code.=<<___; .Lcbc_abort: ret +.cfi_endproc .size ${PREFIX}_cbc_encrypt,.-${PREFIX}_cbc_encrypt ___ } @@ -957,6 +981,7 @@ $code.=<<___; .type _vpaes_preheat,\@abi-omnipotent .align 16 _vpaes_preheat: +.cfi_startproc lea .Lk_s0F(%rip), %r10 movdqa -0x20(%r10), %xmm10 # .Lk_inv movdqa -0x10(%r10), %xmm11 # .Lk_inv+16 @@ -966,6 +991,7 @@ _vpaes_preheat: movdqa 0x50(%r10), %xmm15 # .Lk_sb2 movdqa 0x60(%r10), %xmm14 # .Lk_sb2+16 ret +.cfi_endproc .size _vpaes_preheat,.-_vpaes_preheat ######################################################## ## ## diff --git a/crypto/bn/asm/rsaz-avx2.pl b/crypto/bn/asm/rsaz-avx2.pl index f1292cc..b295871 100755 --- a/crypto/bn/asm/rsaz-avx2.pl +++ b/crypto/bn/asm/rsaz-avx2.pl @@ -1492,6 +1492,7 @@ $code.=<<___; .type rsaz_1024_red2norm_avx2,\@abi-omnipotent .align 32 rsaz_1024_red2norm_avx2: +.cfi_startproc sub \$-128,$inp # size optimization xor %rax,%rax ___ @@ -1525,12 +1526,14 @@ ___ } $code.=<<___; ret +.cfi_endproc .size rsaz_1024_red2norm_avx2,.-rsaz_1024_red2norm_avx2 .globl rsaz_1024_norm2red_avx2 .type rsaz_1024_norm2red_avx2,\@abi-omnipotent .align 32 rsaz_1024_norm2red_avx2: +.cfi_startproc sub \$-128,$out # size optimization mov ($inp), at T[0] mov \$0x1fffffff,%eax @@ -1562,6 +1565,7 @@ $code.=<<___; mov @T[0],`8*($j+2)-128`($out) mov @T[0],`8*($j+3)-128`($out) ret +.cfi_endproc .size rsaz_1024_norm2red_avx2,.-rsaz_1024_norm2red_avx2 ___ } @@ -1573,6 +1577,7 @@ $code.=<<___; .type rsaz_1024_scatter5_avx2,\@abi-omnipotent .align 32 rsaz_1024_scatter5_avx2: +.cfi_startproc vzeroupper vmovdqu .Lscatter_permd(%rip),%ymm5 shl \$4,$power @@ -1592,6 +1597,7 @@ rsaz_1024_scatter5_avx2: vzeroupper ret +.cfi_endproc .size rsaz_1024_scatter5_avx2,.-rsaz_1024_scatter5_avx2 .globl rsaz_1024_gather5_avx2 diff --git a/crypto/bn/asm/x86_64-mont5.pl b/crypto/bn/asm/x86_64-mont5.pl index ad6e8ad..0492690 100755 --- a/crypto/bn/asm/x86_64-mont5.pl +++ b/crypto/bn/asm/x86_64-mont5.pl @@ -2910,6 +2910,7 @@ bn_powerx5: .align 32 bn_sqrx8x_internal: __bn_sqrx8x_internal: +.cfi_startproc ################################################################## # Squaring part: # @@ -3542,6 +3543,7 @@ __bn_sqrx8x_reduction: cmp 8+8(%rsp),%r8 # end of t[]? jb .Lsqrx8x_reduction_loop ret +.cfi_endproc .size bn_sqrx8x_internal,.-bn_sqrx8x_internal ___ } diff --git a/crypto/ec/asm/ecp_nistz256-x86_64.pl b/crypto/ec/asm/ecp_nistz256-x86_64.pl index eba6ffd..b1ff2e3 100755 --- a/crypto/ec/asm/ecp_nistz256-x86_64.pl +++ b/crypto/ec/asm/ecp_nistz256-x86_64.pl @@ -1674,6 +1674,7 @@ $code.=<<___; .type __ecp_nistz256_mul_montq,\@abi-omnipotent .align 32 __ecp_nistz256_mul_montq: +.cfi_startproc ######################################################################## # Multiply a by b[0] mov %rax, $t1 @@ -1885,6 +1886,7 @@ __ecp_nistz256_mul_montq: mov $acc1, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_mul_montq,.-__ecp_nistz256_mul_montq ################################################################################ @@ -1968,6 +1970,7 @@ $code.=<<___; .type __ecp_nistz256_sqr_montq,\@abi-omnipotent .align 32 __ecp_nistz256_sqr_montq: +.cfi_startproc mov %rax, $acc5 mulq $acc6 # a[1]*a[0] mov %rax, $acc1 @@ -2125,6 +2128,7 @@ __ecp_nistz256_sqr_montq: mov $acc7, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_sqr_montq,.-__ecp_nistz256_sqr_montq ___ @@ -2133,6 +2137,7 @@ $code.=<<___; .type __ecp_nistz256_mul_montx,\@abi-omnipotent .align 32 __ecp_nistz256_mul_montx: +.cfi_startproc ######################################################################## # Multiply by b[0] mulx $acc1, $acc0, $acc1 @@ -2295,11 +2300,13 @@ __ecp_nistz256_mul_montx: mov $acc1, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_mul_montx,.-__ecp_nistz256_mul_montx .type __ecp_nistz256_sqr_montx,\@abi-omnipotent .align 32 __ecp_nistz256_sqr_montx: +.cfi_startproc mulx $acc6, $acc1, $acc2 # a[0]*a[1] mulx $acc7, $t0, $acc3 # a[0]*a[2] xor %eax, %eax @@ -2423,6 +2430,7 @@ __ecp_nistz256_sqr_montx: mov $acc7, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_sqr_montx,.-__ecp_nistz256_sqr_montx ___ } @@ -2578,6 +2586,7 @@ ecp_nistz256_scatter_w5: .type ecp_nistz256_gather_w5,\@abi-omnipotent .align 32 ecp_nistz256_gather_w5: +.cfi_startproc ___ $code.=<<___ if ($avx>1); mov OPENSSL_ia32cap_P+8(%rip), %eax @@ -2666,6 +2675,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .LSEH_end_ecp_nistz256_gather_w5: .size ecp_nistz256_gather_w5,.-ecp_nistz256_gather_w5 @@ -2694,6 +2704,7 @@ ecp_nistz256_scatter_w7: .type ecp_nistz256_gather_w7,\@abi-omnipotent .align 32 ecp_nistz256_gather_w7: +.cfi_startproc ___ $code.=<<___ if ($avx>1); mov OPENSSL_ia32cap_P+8(%rip), %eax @@ -2771,6 +2782,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .LSEH_end_ecp_nistz256_gather_w7: .size ecp_nistz256_gather_w7,.-ecp_nistz256_gather_w7 ___ @@ -2787,6 +2799,7 @@ $code.=<<___; .type ecp_nistz256_avx2_gather_w5,\@abi-omnipotent .align 32 ecp_nistz256_avx2_gather_w5: +.cfi_startproc .Lavx2_gather_w5: vzeroupper ___ @@ -2874,6 +2887,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .LSEH_end_ecp_nistz256_avx2_gather_w5: .size ecp_nistz256_avx2_gather_w5,.-ecp_nistz256_avx2_gather_w5 ___ @@ -2893,6 +2907,7 @@ $code.=<<___; .type ecp_nistz256_avx2_gather_w7,\@abi-omnipotent .align 32 ecp_nistz256_avx2_gather_w7: +.cfi_startproc .Lavx2_gather_w7: vzeroupper ___ @@ -2995,6 +3010,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .LSEH_end_ecp_nistz256_avx2_gather_w7: .size ecp_nistz256_avx2_gather_w7,.-ecp_nistz256_avx2_gather_w7 ___ @@ -3064,6 +3080,7 @@ $code.=<<___; .type __ecp_nistz256_add_toq,\@abi-omnipotent .align 32 __ecp_nistz256_add_toq: +.cfi_startproc xor $t4,$t4 add 8*0($b_ptr), $a0 adc 8*1($b_ptr), $a1 @@ -3091,11 +3108,13 @@ __ecp_nistz256_add_toq: mov $a3, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_add_toq,.-__ecp_nistz256_add_toq .type __ecp_nistz256_sub_fromq,\@abi-omnipotent .align 32 __ecp_nistz256_sub_fromq: +.cfi_startproc sub 8*0($b_ptr), $a0 sbb 8*1($b_ptr), $a1 mov $a0, $t0 @@ -3122,11 +3141,13 @@ __ecp_nistz256_sub_fromq: mov $a3, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_sub_fromq,.-__ecp_nistz256_sub_fromq .type __ecp_nistz256_subq,\@abi-omnipotent .align 32 __ecp_nistz256_subq: +.cfi_startproc sub $a0, $t0 sbb $a1, $t1 mov $t0, $a0 @@ -3149,11 +3170,13 @@ __ecp_nistz256_subq: cmovnz $t3, $a3 ret +.cfi_endproc .size __ecp_nistz256_subq,.-__ecp_nistz256_subq .type __ecp_nistz256_mul_by_2q,\@abi-omnipotent .align 32 __ecp_nistz256_mul_by_2q: +.cfi_startproc xor $t4, $t4 add $a0, $a0 # a0:a3+a0:a3 adc $a1, $a1 @@ -3181,6 +3204,7 @@ __ecp_nistz256_mul_by_2q: mov $a3, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_mul_by_2q,.-__ecp_nistz256_mul_by_2q ___ } @@ -3620,7 +3644,9 @@ $code.=<<___; movq %xmm1, $a_ptr # restore $a_ptr movq %xmm0, $r_ptr # restore $r_ptr add \$`32*(18-5)`, %rsp # difference in frame sizes +.cfi_adjust_cfa_offset `-32*(18-5)` jmp .Lpoint_double_shortcut$x +.cfi_adjust_cfa_offset `32*(18-5)` .align 32 .Ladd_proceed$x: @@ -4156,6 +4182,7 @@ $code.=<<___; .type __ecp_nistz256_add_tox,\@abi-omnipotent .align 32 __ecp_nistz256_add_tox: +.cfi_startproc xor $t4, $t4 adc 8*0($b_ptr), $a0 adc 8*1($b_ptr), $a1 @@ -4184,11 +4211,13 @@ __ecp_nistz256_add_tox: mov $a3, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_add_tox,.-__ecp_nistz256_add_tox .type __ecp_nistz256_sub_fromx,\@abi-omnipotent .align 32 __ecp_nistz256_sub_fromx: +.cfi_startproc xor $t4, $t4 sbb 8*0($b_ptr), $a0 sbb 8*1($b_ptr), $a1 @@ -4217,11 +4246,13 @@ __ecp_nistz256_sub_fromx: mov $a3, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_sub_fromx,.-__ecp_nistz256_sub_fromx .type __ecp_nistz256_subx,\@abi-omnipotent .align 32 __ecp_nistz256_subx: +.cfi_startproc xor $t4, $t4 sbb $a0, $t0 sbb $a1, $t1 @@ -4246,11 +4277,13 @@ __ecp_nistz256_subx: cmovc $t3, $a3 ret +.cfi_endproc .size __ecp_nistz256_subx,.-__ecp_nistz256_subx .type __ecp_nistz256_mul_by_2x,\@abi-omnipotent .align 32 __ecp_nistz256_mul_by_2x: +.cfi_startproc xor $t4, $t4 adc $a0, $a0 # a0:a3+a0:a3 adc $a1, $a1 @@ -4279,6 +4312,7 @@ __ecp_nistz256_mul_by_2x: mov $a3, 8*3($r_ptr) ret +.cfi_endproc .size __ecp_nistz256_mul_by_2x,.-__ecp_nistz256_mul_by_2x ___ } diff --git a/crypto/modes/asm/ghash-x86_64.pl b/crypto/modes/asm/ghash-x86_64.pl index afc30c3..136b5a3 100644 --- a/crypto/modes/asm/ghash-x86_64.pl +++ b/crypto/modes/asm/ghash-x86_64.pl @@ -529,6 +529,7 @@ $code.=<<___; .type gcm_init_clmul,\@abi-omnipotent .align 16 gcm_init_clmul: +.cfi_startproc .L_init_clmul: ___ $code.=<<___ if ($win64); @@ -598,6 +599,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size gcm_init_clmul,.-gcm_init_clmul ___ } @@ -609,6 +611,7 @@ $code.=<<___; .type gcm_gmult_clmul,\@abi-omnipotent .align 16 gcm_gmult_clmul: +.cfi_startproc .L_gmult_clmul: movdqu ($Xip),$Xi movdqa .Lbswap_mask(%rip),$T3 @@ -645,6 +648,7 @@ $code.=<<___; pshufb $T3,$Xi movdqu $Xi,($Xip) ret +.cfi_endproc .size gcm_gmult_clmul,.-gcm_gmult_clmul ___ } @@ -658,6 +662,7 @@ $code.=<<___; .type gcm_ghash_clmul,\@abi-omnipotent .align 32 gcm_ghash_clmul: +.cfi_startproc .L_ghash_clmul: ___ $code.=<<___ if ($win64); @@ -1005,6 +1010,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size gcm_ghash_clmul,.-gcm_ghash_clmul ___ } @@ -1014,6 +1020,7 @@ $code.=<<___; .type gcm_init_avx,\@abi-omnipotent .align 32 gcm_init_avx: +.cfi_startproc ___ if ($avx) { my ($Htbl,$Xip)=@_4args; @@ -1142,6 +1149,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size gcm_init_avx,.-gcm_init_avx ___ } else { @@ -1156,7 +1164,9 @@ $code.=<<___; .type gcm_gmult_avx,\@abi-omnipotent .align 32 gcm_gmult_avx: +.cfi_startproc jmp .L_gmult_clmul +.cfi_endproc .size gcm_gmult_avx,.-gcm_gmult_avx ___ @@ -1165,6 +1175,7 @@ $code.=<<___; .type gcm_ghash_avx,\@abi-omnipotent .align 32 gcm_ghash_avx: +.cfi_startproc ___ if ($avx) { my ($Xip,$Htbl,$inp,$len)=@_4args; @@ -1577,6 +1588,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size gcm_ghash_avx,.-gcm_ghash_avx ___ } else { diff --git a/crypto/perlasm/x86_64-xlate.pl b/crypto/perlasm/x86_64-xlate.pl index f8380f2..1b0bf42 100755 --- a/crypto/perlasm/x86_64-xlate.pl +++ b/crypto/perlasm/x86_64-xlate.pl @@ -541,6 +541,7 @@ my %globals; ); my ($cfa_reg, $cfa_rsp); + my @cfa_stack; # [us]leb128 format is variable-length integer representation base # 2^128, with most significant bit of each byte being 0 denoting @@ -648,7 +649,13 @@ my %globals; # why it starts with -8. Recall that CFA is top of caller's # stack... /startproc/ && do { ($cfa_reg, $cfa_rsp) = ("%rsp", -8); last; }; - /endproc/ && do { ($cfa_reg, $cfa_rsp) = ("%rsp", 0); last; }; + /endproc/ && do { ($cfa_reg, $cfa_rsp) = ("%rsp", 0); + # .cfi_remember_state directives that are not + # matched with .cfi_restore_state are + # unnecessary. + die "unpaired .cfi_remember_state" if (@cfa_stack); + last; + }; /def_cfa_register/ && do { $cfa_reg = $$line; last; }; /def_cfa_offset/ @@ -688,6 +695,14 @@ my %globals; cfa_expression($$line))); last; }; + /remember_state/ + && do { push @cfa_stack, [$cfa_reg, $cfa_rsp]; + last; + }; + /restore_state/ + && do { ($cfa_reg, $cfa_rsp) = @{pop @cfa_stack}; + last; + }; } $self->{value} = ".cfi_$dir\t$$line" if ($dir); From kurt at openssl.org Sun Feb 17 22:44:15 2019 From: kurt at openssl.org (Kurt Roeckx) Date: Sun, 17 Feb 2019 22:44:15 +0000 Subject: [openssl] master update Message-ID: <1550443455.225671.2931.nullmailer@dev.openssl.org> The branch master has been updated via 70680262329004c934497040bfc6940072043f48 (commit) from e09633107b7e987b2179850715ba60d8fb069278 (commit) - Log ----------------------------------------------------------------- commit 70680262329004c934497040bfc6940072043f48 Author: Jan Macku Date: Wed Jan 30 16:09:50 2019 +0100 Fixed typo CLA: trivial Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell GH: #8121 ----------------------------------------------------------------------- Summary of changes: doc/man3/RIPEMD160_Init.pod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/man3/RIPEMD160_Init.pod b/doc/man3/RIPEMD160_Init.pod index aec6441..27ff377 100644 --- a/doc/man3/RIPEMD160_Init.pod +++ b/doc/man3/RIPEMD160_Init.pod @@ -13,7 +13,7 @@ RIPEMD-160 hash function unsigned char *md); int RIPEMD160_Init(RIPEMD160_CTX *c); - int RIPEMD160_Update(RIPEMD_CTX *c, const void *data, unsigned long len); + int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, unsigned long len); int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); =head1 DESCRIPTION From kurt at openssl.org Sun Feb 17 22:44:50 2019 From: kurt at openssl.org (Kurt Roeckx) Date: Sun, 17 Feb 2019 22:44:50 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550443490.701395.11712.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via a9b9d2654b974f7b2732b9a08e975b1a396efb31 (commit) from 2e826078410bdb117710890b0e99bbdbbbf7e95d (commit) - Log ----------------------------------------------------------------- commit a9b9d2654b974f7b2732b9a08e975b1a396efb31 Author: Jan Macku Date: Wed Jan 30 16:09:50 2019 +0100 Fixed typo CLA: trivial Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell GH: #8121 (cherry picked from commit 70680262329004c934497040bfc6940072043f48) ----------------------------------------------------------------------- Summary of changes: doc/man3/RIPEMD160_Init.pod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/man3/RIPEMD160_Init.pod b/doc/man3/RIPEMD160_Init.pod index 77ac4fb..1364aa0 100644 --- a/doc/man3/RIPEMD160_Init.pod +++ b/doc/man3/RIPEMD160_Init.pod @@ -13,7 +13,7 @@ RIPEMD-160 hash function unsigned char *md); int RIPEMD160_Init(RIPEMD160_CTX *c); - int RIPEMD160_Update(RIPEMD_CTX *c, const void *data, unsigned long len); + int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, unsigned long len); int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); =head1 DESCRIPTION From kurt at openssl.org Sun Feb 17 22:47:16 2019 From: kurt at openssl.org (Kurt Roeckx) Date: Sun, 17 Feb 2019 22:47:16 +0000 Subject: [openssl] master update Message-ID: <1550443636.865832.16106.nullmailer@dev.openssl.org> The branch master has been updated via e3ac3654892246d7492f1012897e42ad7efd13ce (commit) from 70680262329004c934497040bfc6940072043f48 (commit) - Log ----------------------------------------------------------------- commit e3ac3654892246d7492f1012897e42ad7efd13ce Author: Vedran Mileti? Date: Fri Feb 1 15:03:09 2019 +0100 Add missing dots in dgst man page CLA: trivial Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell GH: #8142 ----------------------------------------------------------------------- Summary of changes: doc/man1/dgst.pod | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/man1/dgst.pod b/doc/man1/dgst.pod index 993c92b..c745cfa 100644 --- a/doc/man1/dgst.pod +++ b/doc/man1/dgst.pod @@ -230,8 +230,8 @@ prior to verification. =head1 HISTORY -The default digest was changed from MD5 to SHA256 in OpenSSL 1.1.0 -The FIPS-related options were removed in OpenSSL 1.1.0 +The default digest was changed from MD5 to SHA256 in OpenSSL 1.1.0. +The FIPS-related options were removed in OpenSSL 1.1.0. =head1 COPYRIGHT From kurt at openssl.org Sun Feb 17 22:47:46 2019 From: kurt at openssl.org (Kurt Roeckx) Date: Sun, 17 Feb 2019 22:47:46 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550443666.367286.17817.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 5cd8faed79694d8ad8f1db2d02dd7c06fa338dd9 (commit) from a9b9d2654b974f7b2732b9a08e975b1a396efb31 (commit) - Log ----------------------------------------------------------------- commit 5cd8faed79694d8ad8f1db2d02dd7c06fa338dd9 Author: Vedran Mileti? Date: Fri Feb 1 15:03:09 2019 +0100 Add missing dots in dgst man page CLA: trivial Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell GH: #8142 (cherry picked from commit e3ac3654892246d7492f1012897e42ad7efd13ce) ----------------------------------------------------------------------- Summary of changes: doc/man1/dgst.pod | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/man1/dgst.pod b/doc/man1/dgst.pod index 47e163b..a2d9808 100644 --- a/doc/man1/dgst.pod +++ b/doc/man1/dgst.pod @@ -230,8 +230,8 @@ prior to verification. =head1 HISTORY -The default digest was changed from MD5 to SHA256 in OpenSSL 1.1.0 -The FIPS-related options were removed in OpenSSL 1.1.0 +The default digest was changed from MD5 to SHA256 in OpenSSL 1.1.0. +The FIPS-related options were removed in OpenSSL 1.1.0. =head1 COPYRIGHT From builds at travis-ci.org Sun Feb 17 23:00:07 2019 From: builds at travis-ci.org (Travis CI) Date: Sun, 17 Feb 2019 23:00:07 +0000 Subject: Still Failing: openssl/openssl#23197 (master - e096331) In-Reply-To: Message-ID: <5c69e77755ce9_43f92596ea098505bc@f0365406-fe0a-4e6f-9107-1e802d89b4f5.mail> Build Update for openssl/openssl ------------------------------------- Build: #23197 Status: Still Failing Duration: 18 mins and 46 secs Commit: e096331 (master) Author: David Benjamin Message: Check for unpaired .cfi_remember_state Reviewed-by: Richard Levitte GH: #8109 View the changeset: https://github.com/openssl/openssl/compare/8f58ede09572...e09633107b7e View the full build log and details: https://travis-ci.org/openssl/openssl/builds/494635728?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From builds at travis-ci.org Sun Feb 17 23:23:44 2019 From: builds at travis-ci.org (Travis CI) Date: Sun, 17 Feb 2019 23:23:44 +0000 Subject: Fixed: openssl/openssl#23199 (master - 7068026) In-Reply-To: Message-ID: <5c69ed009580e_43fc2d6a0bf80177436@469d7b0e-fcf5-43b2-b254-fc061c77d487.mail> Build Update for openssl/openssl ------------------------------------- Build: #23199 Status: Fixed Duration: 25 mins and 34 secs Commit: 7068026 (master) Author: Jan Macku Message: Fixed typo CLA: trivial Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell GH: #8121 View the changeset: https://github.com/openssl/openssl/compare/e09633107b7e...706802623290 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/494636544?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From builds at travis-ci.org Sun Feb 17 23:46:52 2019 From: builds at travis-ci.org (Travis CI) Date: Sun, 17 Feb 2019 23:46:52 +0000 Subject: Still Failing: openssl/openssl#23201 (master - e3ac365) In-Reply-To: Message-ID: <5c69f26c82cc4_43f82531d92b8105545@ceef95eb-b61f-4a37-96b2-062c66a82198.mail> Build Update for openssl/openssl ------------------------------------- Build: #23201 Status: Still Failing Duration: 25 mins and 15 secs Commit: e3ac365 (master) Author: Vedran Mileti? Message: Add missing dots in dgst man page CLA: trivial Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell GH: #8142 View the changeset: https://github.com/openssl/openssl/compare/706802623290...e3ac36548922 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/494637294?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 18 06:13:22 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 18 Feb 2019 06:13:22 +0000 Subject: Build failed: openssl master.22605 Message-ID: <20190218061322.1.46B1A30D29094102@appveyor.com> An HTML attachment was scrubbed... URL: From pauli at openssl.org Mon Feb 18 06:33:42 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Mon, 18 Feb 2019 06:33:42 +0000 Subject: [openssl] master update Message-ID: <1550471622.643063.3182.nullmailer@dev.openssl.org> The branch master has been updated via 3037d0aadf7c0230021aa73e1f3db0d9f25008a9 (commit) via 1bdbdaffdc66be457a40f33640b523aaf21138c6 (commit) from e3ac3654892246d7492f1012897e42ad7efd13ce (commit) - Log ----------------------------------------------------------------- commit 3037d0aadf7c0230021aa73e1f3db0d9f25008a9 Author: Pauli Date: Sat Feb 16 18:33:37 2019 +1000 generated files Reviewed-by: Matt Caswell Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/8224) commit 1bdbdaffdc66be457a40f33640b523aaf21138c6 Author: Pauli Date: Fri Nov 16 11:44:30 2018 +1000 Properties for implementation selection. Properties are a sequence of comma separated name=value pairs. A name without a corresponding value is assumed to be a Boolean and have the true value 'yes'. Values are either strings or numbers. Strings can be quoted either _"_ or _'_ or unquoted (with restrictions). There are no escape characters inside strings. Number are either decimal digits or '0x' followed by hexidecimal digits. Numbers are represented internally as signed sixty four bit values. Queries on properties are a sequence comma separated conditional tests. These take the form of name=value (equality test), name!=value (inequality test) or name (Boolean test for truth). Queries can be parsed, compared against a definition or merged pairwise. Reviewed-by: Matt Caswell Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/8224) ----------------------------------------------------------------------- Summary of changes: CHANGES | 4 + crypto/build.info | 2 +- crypto/err/err_all.c | 4 +- crypto/err/openssl.ec | 1 + crypto/err/openssl.txt | 19 + crypto/lhash/lhash.c | 12 +- crypto/property/README | 87 ++++ crypto/property/build.info | 3 + crypto/property/defn_cache.c | 105 +++++ crypto/property/properties.ebnf | 17 + crypto/property/properties.xhtml | 685 ++++++++++++++++++++++++++++++++ crypto/property/property.c | 508 +++++++++++++++++++++++ crypto/property/property_err.c | 61 +++ crypto/property/property_lcl.h | 51 +++ crypto/property/property_parse.c | 545 +++++++++++++++++++++++++ crypto/property/property_string.c | 137 +++++++ crypto/sparse_array.c | 2 +- doc/internal/man3/OSSL_METHOD_STORE.pod | 103 +++++ doc/man3/OPENSSL_LH_COMPFUNC.pod | 11 +- include/internal/property.h | 35 ++ include/internal/propertyerr.h | 46 +++ include/openssl/err.h | 2 + include/openssl/lhash.h | 5 + include/openssl/stack.h | 2 +- test/build.info | 6 +- test/property_test.c | 374 +++++++++++++++++ test/recipes/03-test_property.t | 12 + test/sparse_array_test.c | 2 +- util/libcrypto.num | 1 + 29 files changed, 2832 insertions(+), 10 deletions(-) create mode 100644 crypto/property/README create mode 100644 crypto/property/build.info create mode 100644 crypto/property/defn_cache.c create mode 100644 crypto/property/properties.ebnf create mode 100644 crypto/property/properties.xhtml create mode 100644 crypto/property/property.c create mode 100644 crypto/property/property_err.c create mode 100644 crypto/property/property_lcl.h create mode 100644 crypto/property/property_parse.c create mode 100644 crypto/property/property_string.c create mode 100644 doc/internal/man3/OSSL_METHOD_STORE.pod create mode 100644 include/internal/property.h create mode 100644 include/internal/propertyerr.h create mode 100644 test/property_test.c create mode 100644 test/recipes/03-test_property.t diff --git a/CHANGES b/CHANGES index cca9ed9..5fcf667 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,10 @@ Changes between 1.1.1 and 3.0.0 [xx XXX xxxx] + *) Added property based algorithm implementation selection framework to + the core. + [Paul Dale] + *) Added SCA hardening for modular field inversion in EC_GROUP through a new dedicated field_inv() pointer in EC_METHOD. This also addresses a leakage affecting conversions from projective diff --git a/crypto/build.info b/crypto/build.info index fc0050e..94ed06e 100644 --- a/crypto/build.info +++ b/crypto/build.info @@ -1,7 +1,7 @@ # Note that these directories are filtered in Configure. Look for %skipdir # there for further explanations. SUBDIRS=objects buffer bio stack lhash rand evp asn1 pem x509 x509v3 conf \ - txt_db pkcs7 pkcs12 ui kdf store \ + txt_db pkcs7 pkcs12 ui kdf store property \ md2 md4 md5 sha mdc2 gmac hmac ripemd whrlpool poly1305 blake2 \ siphash sm3 des aes rc2 rc4 rc5 idea aria bf cast camellia \ seed sm4 chacha modes bn ec rsa dsa dh sm2 dso engine \ diff --git a/crypto/err/err_all.c b/crypto/err/err_all.c index 3911ecc..4bf020c 100644 --- a/crypto/err/err_all.c +++ b/crypto/err/err_all.c @@ -39,6 +39,7 @@ #include #include #include +#include "internal/propertyerr.h" int err_load_crypto_strings_int(void) { @@ -96,7 +97,8 @@ int err_load_crypto_strings_int(void) ERR_load_ASYNC_strings() == 0 || #endif ERR_load_KDF_strings() == 0 || - ERR_load_OSSL_STORE_strings() == 0) + ERR_load_OSSL_STORE_strings() == 0 || + ERR_load_PROP_strings() == 0) return 0; return 1; diff --git a/crypto/err/openssl.ec b/crypto/err/openssl.ec index 94d46d0..901a847 100644 --- a/crypto/err/openssl.ec +++ b/crypto/err/openssl.ec @@ -35,6 +35,7 @@ L KDF include/openssl/kdf.h crypto/kdf/kdf_err.c L SM2 crypto/include/internal/sm2.h crypto/sm2/sm2_err.c L OSSL_STORE include/openssl/store.h crypto/store/store_err.c L ESS include/openssl/ess.h crypto/ess/ess_err.c +L PROP include/internal/property.h crypto/property/property_err.c # additional header files to be scanned for function names L NONE include/openssl/x509_vfy.h NONE diff --git a/crypto/err/openssl.txt b/crypto/err/openssl.txt index 8d183fb..e944b57 100644 --- a/crypto/err/openssl.txt +++ b/crypto/err/openssl.txt @@ -1044,6 +1044,14 @@ PKCS7_F_PKCS7_SIGNER_INFO_SIGN:139:PKCS7_SIGNER_INFO_sign PKCS7_F_PKCS7_SIGN_ADD_SIGNER:137:PKCS7_sign_add_signer PKCS7_F_PKCS7_SIMPLE_SMIMECAP:119:PKCS7_simple_smimecap PKCS7_F_PKCS7_VERIFY:117:PKCS7_verify +PROP_F_OSSL_PARSE_PROPERTY:100:ossl_parse_property +PROP_F_OSSL_PARSE_QUERY:101:ossl_parse_query +PROP_F_PARSE_HEX:102:parse_hex +PROP_F_PARSE_NAME:103:parse_name +PROP_F_PARSE_NUMBER:104:parse_number +PROP_F_PARSE_OCT:105:parse_oct +PROP_F_PARSE_STRING:106:parse_string +PROP_F_PARSE_UNQUOTED:107:parse_unquoted RAND_F_DRBG_BYTES:101:drbg_bytes RAND_F_DRBG_GET_ENTROPY:105:drbg_get_entropy RAND_F_DRBG_SETUP:117:drbg_setup @@ -2497,6 +2505,17 @@ PKCS7_R_UNSUPPORTED_CIPHER_TYPE:111:unsupported cipher type PKCS7_R_UNSUPPORTED_CONTENT_TYPE:112:unsupported content type PKCS7_R_WRONG_CONTENT_TYPE:113:wrong content type PKCS7_R_WRONG_PKCS7_TYPE:114:wrong pkcs7 type +PROP_R_NAME_TOO_LONG:100:name too long +PROP_R_NOT_AN_ASCII_CHARACTER:101:not an ascii character +PROP_R_NOT_AN_HEXADECIMAL_DIGIT:102:not an hexadecimal digit +PROP_R_NOT_AN_IDENTIFIER:103:not an identifier +PROP_R_NOT_AN_OCTAL_DIGIT:104:not an octal digit +PROP_R_NOT_A_DECIMAL_DIGIT:105:not a decimal digit +PROP_R_NO_MATCHING_STRING_DELIMETER:106:no matching string delimeter +PROP_R_NO_VALUE:107:no value +PROP_R_PARSE_FAILED:108:parse failed +PROP_R_STRING_TOO_LONG:109:string too long +PROP_R_TRAILING_CHARACTERS:110:trailing characters RAND_R_ADDITIONAL_INPUT_TOO_LONG:102:additional input too long RAND_R_ALREADY_INSTANTIATED:103:already instantiated RAND_R_ARGUMENT_OUT_OF_RANGE:105:argument out of range diff --git a/crypto/lhash/lhash.c b/crypto/lhash/lhash.c index c826039..aa0ca1c 100644 --- a/crypto/lhash/lhash.c +++ b/crypto/lhash/lhash.c @@ -75,6 +75,16 @@ err: void OPENSSL_LH_free(OPENSSL_LHASH *lh) { + if (lh == NULL) + return; + + OPENSSL_LH_flush(lh); + OPENSSL_free(lh->b); + OPENSSL_free(lh); +} + +void OPENSSL_LH_flush(OPENSSL_LHASH *lh) +{ unsigned int i; OPENSSL_LH_NODE *n, *nn; @@ -89,8 +99,6 @@ void OPENSSL_LH_free(OPENSSL_LHASH *lh) n = nn; } } - OPENSSL_free(lh->b); - OPENSSL_free(lh); } void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data) diff --git a/crypto/property/README b/crypto/property/README new file mode 100644 index 0000000..b3f56cf --- /dev/null +++ b/crypto/property/README @@ -0,0 +1,87 @@ +Properties are associated with algorithms and are used to select between different implementations dynamically. + +This implementation is based on a number of assumptions: + +* Property definition is uncommon. I.e. providers will be loaded and + unloaded relatively infrequently, if at all. + +* The number of distinct property names will be small. + +* Providers will often give the same implementation properties to most or + all of their implemented algorithms. E.g. the FIPS property would be set + across an entire provider. Likewise for, hardware, accelerated, software, + HSM and, perhaps, constant_time. + +* There are a lot of algorithm implementations, therefore property + definitions should be space efficient. However... + +* ... property queries are very common. These must be fast. + +* Property queries come from a small set and are reused many times typically. + I.e. an application tends to use the same set of queries over and over, + rather than spanning a wide variety of queries. + +* Property queries can never add new property definitions. + + +Some consequences of these assumptions are: + +* That definition is uncommon and queries are very common, we can treat + the property definitions as almost immutable. Specifically, a query can + never change the state of the definitions. + +* That definition is uncommon and needs to be space efficient, it will + be feasible to use a hash table to contain the names (and possibly also + values) of all properties and to reference these instead of duplicating + strings. Moreover, such a data structure need not be garbage collected. + By converting strings to integers using a structure such as this, string + comparison degenerates to integer comparison. Additionally, lists of + properties can be sorted by the string index which makes comparisons linear + time rather than quadratic time - the O(n log n) sort cost being amortised. + +* A cache for property definitions is also viable, if only implementation + properties are used and not algorithm properties, or at least these are + maintained separately. This cache would be a hash table, indexed by + the property definition string, and algorithms with the same properties + would share their definition structure. Again, reducing space use. + +* A query cache is desirable. This would be a hash table keyed by the + algorithm identifier and the entire query string and it would map to + the chosen algorithm. When a provider is loaded or unloaded, this cache + must be invalidated. The cache will also be invalidated when the global + properties are changed as doing so removes the need to index on both the + global and requested property strings. + + +The implementation: + +* property_lock.c contains some wrapper functions to handle the global + lock more easily. The global lock is held for short periods of time with + per algorithm locking being used for longer intervals. + +* property_string.c contains the string cache which converts property + names and values to small integer indices. Names and values are stored in + separate hash tables. The two Boolean values, the strings "yes" and "no", + are populated as the first two members of the value table. All property + names reserved by OpenSSL are also populated here. No functions are + provided to convert from an index back to the original string (this can be + done by maintaining parallel stacks of strings if required). + +* property_parse.c contains the property definition and query parsers. + These convert ASCII strings into lists of properties. The resulting + lists are sorted by the name index. Some additional utility functions + for dealing with property lists are also included: comparison of a query + against a definition and merging two queries into a single larger query. + +* property.c contains the main APIs for defining and using properties. + Algorithms are discovered from their NID and a query string. + The results are cached. + + The caching of query results has to be efficient but it must also be robust + against a denial of service attack. The cache cannot be permitted to grow + without bounds and must garbage collect under-used entries. The garbage + collection does not have to be exact. + +* defn_cache.c contains a cache that maps property definition strings to + parsed properties. It is used by property.c to improve performance when + the same definition appears multiple times. diff --git a/crypto/property/build.info b/crypto/property/build.info new file mode 100644 index 0000000..3a86b6e --- /dev/null +++ b/crypto/property/build.info @@ -0,0 +1,3 @@ +LIBS=../../libcrypto +SOURCE[../../libcrypto]=property_string.c property_parse.c property.c \ + property_err.c defn_cache.c diff --git a/crypto/property/defn_cache.c b/crypto/property/defn_cache.c new file mode 100644 index 0000000..df87c19 --- /dev/null +++ b/crypto/property/defn_cache.c @@ -0,0 +1,105 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include +#include +#include "internal/propertyerr.h" +#include "internal/property.h" +#include "property_lcl.h" + +/* + * Implement a property definition cache. + * These functions assume that they are called under a write lock. + * No attempt is made to clean out the cache, except when it is shut down. + */ + +typedef struct { + const char *prop; + OSSL_PROPERTY_LIST *defn; + char body[1]; +} PROPERTY_DEFN_ELEM; + +DEFINE_LHASH_OF(PROPERTY_DEFN_ELEM); + +static LHASH_OF(PROPERTY_DEFN_ELEM) *property_defns = NULL; + +static unsigned long property_defn_hash(const PROPERTY_DEFN_ELEM *a) +{ + return OPENSSL_LH_strhash(a->prop); +} + +static int property_defn_cmp(const PROPERTY_DEFN_ELEM *a, + const PROPERTY_DEFN_ELEM *b) +{ + return strcmp(a->prop, b->prop); +} + +static void property_defn_free(PROPERTY_DEFN_ELEM *elem) +{ + ossl_property_free(elem->defn); + OPENSSL_free(elem); +} + +int ossl_prop_defn_init(void) +{ + property_defns = lh_PROPERTY_DEFN_ELEM_new(&property_defn_hash, + &property_defn_cmp); + return property_defns != NULL; +} + +void ossl_prop_defn_cleanup(void) +{ + if (property_defns != NULL) { + lh_PROPERTY_DEFN_ELEM_doall(property_defns, &property_defn_free); + lh_PROPERTY_DEFN_ELEM_free(property_defns); + property_defns = NULL; + } +} + +OSSL_PROPERTY_LIST *ossl_prop_defn_get(const char *prop) +{ + PROPERTY_DEFN_ELEM elem, *r; + + elem.prop = prop; + r = lh_PROPERTY_DEFN_ELEM_retrieve(property_defns, &elem); + return r != NULL ? r->defn : NULL; +} + +int ossl_prop_defn_set(const char *prop, OSSL_PROPERTY_LIST *pl) +{ + PROPERTY_DEFN_ELEM elem, *old, *p = NULL; + size_t len; + + if (prop == NULL) + return 1; + + if (pl == NULL) { + elem.prop = prop; + lh_PROPERTY_DEFN_ELEM_delete(property_defns, &elem); + return 1; + } + len = strlen(prop); + p = OPENSSL_malloc(sizeof(*p) + len); + if (p != NULL) { + p->prop = p->body; + p->defn = pl; + memcpy(p->body, prop, len + 1); + old = lh_PROPERTY_DEFN_ELEM_insert(property_defns, p); + if (old != NULL) { + property_defn_free(old); + return 1; + } + if (!lh_PROPERTY_DEFN_ELEM_error(property_defns)) + return 1; + } + OPENSSL_free(p); + return 0; +} diff --git a/crypto/property/properties.ebnf b/crypto/property/properties.ebnf new file mode 100644 index 0000000..9a6857f --- /dev/null +++ b/crypto/property/properties.ebnf @@ -0,0 +1,17 @@ +(* https://bottlecaps.de/rr/ui *) + +Definition + ::= PropertyName ( '=' Value )? ( ',' PropertyName ( '=' Value )? )* +Query ::= ( '-'? PropertyName | PropertyName ( '=' | '!=' ) Value ) + ( ',' ( '-'? PropertyName | PropertyName ( '=' | '!=' ) Value ) )* +Value ::= NumberLiteral + | StringLiteral +StringLiteral ::= QuotedString | UnquotedString +QuotedString ::= '"' [^"]* '"' + | "'" [^']* "'" +UnquotedString ::= [^{space},]+ +NumberLiteral + ::= '0' ( [0-7]* | 'x' [0-9A-Fa-f]+ ) + | '-'? [1-9] [0-9]+ +PropertyName + ::= [A-Z] [A-Z0-9_]* ( '.' [A-Z] [A-Z0-9_]* )* diff --git a/crypto/property/properties.xhtml b/crypto/property/properties.xhtml new file mode 100644 index 0000000..3382722 --- /dev/null +++ b/crypto/property/properties.xhtml @@ -0,0 +1,685 @@ + + + + + + + + + + + Definition: + + + + + + + + PropertyName + + = + + + Value + + , + + + + + +
?????????::= PropertyName ( '=' Value )? ( ',' PropertyName ( '=' Value )? )*
+
+ no referencesQuery: + + + + + + + + - + + + PropertyName + + + PropertyName + + = + + + != + + + Value + + , + + + + +
Query????::= ( '-'? PropertyName | PropertyName ( '=' | '!=' ) Value ) ( ',' ( '-'? PropertyName | PropertyName ( '=' | '!=' ) Value ) )*
+
+ no referencesValue: + + + + + + + + NumberLiteral + + + StringLiteral + + + + +
???????????| StringLiteral
+
+ referenced by: + + Definition + Query + + StringLiteral: + + + + + + + + QuotedString + + + UnquotedString + + + + +
?????????::= QuotedString
+
???????????| UnquotedString
+
+ referenced by: + + Value + + QuotedString: + + + + + + + + " + + + [^"] + + + " + + + ' + + + [^'] + + + ' + + + + + +
?????????::= '"' [^"]* '"'
+
???????????| "'" [^']* "'"
+
+ referenced by: + + StringLiteral + + UnquotedString: + + + + + + + + [^{space},] + + + + + +
?????????::= [^{space},]+
+
+ referenced by: + + StringLiteral + + NumberLiteral: + + + + + + + + 0 + + + [0-7] + + + x + + + [0-9] + + + [A-F] + + + [a-f] + + + - + + + [1-9] + + + [0-9] + + + + + +
?????????::= '0' ( [0-7]* | 'x' [0-9A-Fa-f]+ )
+
???????????| '-'? [1-9] [0-9]+
+
+ referenced by: + + Value + + PropertyName: + + + + + + + + [A-Z] + + + [A-Z] + + + [0-9] + + + _ + + + . + + + + + +
?????????::= [A-Z] [A-Z0-9_]* ( '.' [A-Z] [A-Z0-9_]* )*
+
+ referenced by: + + Definition + Query + + + + + + ? + + ... generated by Railroad Diagram Generator + + + + + + + + R + R + + + + + + \ No newline at end of file diff --git a/crypto/property/property.c b/crypto/property/property.c new file mode 100644 index 0000000..1f914cf --- /dev/null +++ b/crypto/property/property.c @@ -0,0 +1,508 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include +#include +#include +#include "internal/property.h" +#include "internal/ctype.h" +#include +#include +#include "internal/thread_once.h" +#include "internal/lhash.h" +#include "internal/sparse_array.h" +#include "property_lcl.h" + +/* The number of elements in the query cache before we initiate a flush */ +#define IMPL_CACHE_FLUSH_THRESHOLD 500 + +typedef struct { + OSSL_PROPERTY_LIST *properties; + void *implementation; + void (*implementation_destruct)(void *); +} IMPLEMENTATION; + +DEFINE_STACK_OF(IMPLEMENTATION) + +typedef struct { + const char *query; + void *result; + char body[1]; +} QUERY; + +DEFINE_LHASH_OF(QUERY); + +typedef struct { + int nid; + STACK_OF(IMPLEMENTATION) *impls; + LHASH_OF(QUERY) *cache; +} ALGORITHM; + +struct ossl_method_store_st { + size_t nelem; + SPARSE_ARRAY_OF(ALGORITHM) *algs; + OSSL_PROPERTY_LIST *global_properties; + int need_flush; + unsigned int nbits; + unsigned char rand_bits[(IMPL_CACHE_FLUSH_THRESHOLD + 7) / 8]; + CRYPTO_RWLOCK *lock; +}; + +typedef struct { + OSSL_METHOD_STORE *store; + LHASH_OF(QUERY) *cache; + size_t nelem; +} IMPL_CACHE_FLUSH; + +DEFINE_SPARSE_ARRAY_OF(ALGORITHM); + +static void ossl_method_cache_flush(OSSL_METHOD_STORE *store, int nid); +static void ossl_method_cache_flush_all(OSSL_METHOD_STORE *c); + +int ossl_property_read_lock(OSSL_METHOD_STORE *p) +{ + return p != NULL ? CRYPTO_THREAD_read_lock(p->lock) : 0; +} + +int ossl_property_write_lock(OSSL_METHOD_STORE *p) +{ + return p != NULL ? CRYPTO_THREAD_write_lock(p->lock) : 0; +} + +int ossl_property_unlock(OSSL_METHOD_STORE *p) +{ + return p != 0 ? CRYPTO_THREAD_unlock(p->lock) : 0; +} + +int ossl_method_store_init(void) +{ + if (ossl_property_string_init() + && ossl_prop_defn_init() + && ossl_property_parse_init()) + return 1; + + ossl_method_store_cleanup(); + return 0; +} + +void ossl_method_store_cleanup(void) +{ + ossl_property_string_cleanup(); + ossl_prop_defn_cleanup(); +} + +static CRYPTO_ONCE method_store_init_flag = CRYPTO_ONCE_STATIC_INIT; +DEFINE_RUN_ONCE_STATIC(do_method_store_init) +{ + return OPENSSL_init_crypto(0, NULL) + && ossl_method_store_init() + && OPENSSL_atexit(&ossl_method_store_cleanup); +} + +static unsigned long query_hash(const QUERY *a) +{ + return OPENSSL_LH_strhash(a->query); +} + +static int query_cmp(const QUERY *a, const QUERY *b) +{ + return strcmp(a->query, b->query); +} + +static void impl_free(IMPLEMENTATION *impl) +{ + if (impl != NULL) { + if (impl->implementation_destruct) + impl->implementation_destruct(impl->implementation); + OPENSSL_free(impl); + } +} + +static void impl_cache_free(QUERY *elem) +{ + OPENSSL_free(elem); +} + +static void alg_cleanup(size_t idx, ALGORITHM *a) +{ + if (a != NULL) { + sk_IMPLEMENTATION_pop_free(a->impls, &impl_free); + lh_QUERY_doall(a->cache, &impl_cache_free); + lh_QUERY_free(a->cache); + OPENSSL_free(a); + } +} + +OSSL_METHOD_STORE *ossl_method_store_new(void) +{ + OSSL_METHOD_STORE *res = OPENSSL_zalloc(sizeof(*res)); + + if (!RUN_ONCE(&method_store_init_flag, do_method_store_init)) + return 0; + + if (res != NULL) { + if ((res->algs = ossl_sa_ALGORITHM_new()) == NULL) { + OPENSSL_free(res); + return NULL; + } + if ((res->lock = CRYPTO_THREAD_lock_new()) == NULL) { + OPENSSL_free(res->algs); + OPENSSL_free(res); + return NULL; + } + } + return res; +} + +void ossl_method_store_free(OSSL_METHOD_STORE *store) +{ + if (store != NULL) { + ossl_sa_ALGORITHM_doall(store->algs, &alg_cleanup); + ossl_sa_ALGORITHM_free(store->algs); + ossl_property_free(store->global_properties); + CRYPTO_THREAD_lock_free(store->lock); + OPENSSL_free(store); + } +} + +static ALGORITHM *ossl_method_store_retrieve(OSSL_METHOD_STORE *store, int nid) +{ + return ossl_sa_ALGORITHM_get(store->algs, nid); +} + +static int ossl_method_store_insert(OSSL_METHOD_STORE *store, ALGORITHM *alg) +{ + return ossl_sa_ALGORITHM_set(store->algs, alg->nid, alg); +} + +int ossl_method_store_add(OSSL_METHOD_STORE *store, + int nid, const char *properties, + void *implementation, + void (*implementation_destruct)(void *)) +{ + ALGORITHM *alg = NULL; + IMPLEMENTATION *impl; + int ret = 0; + + if (nid <= 0 || implementation == NULL || store == NULL) + return 0; + if (properties == NULL) + properties = ""; + + /* Create new entry */ + impl = OPENSSL_malloc(sizeof(*impl)); + if (impl == NULL) + return 0; + impl->implementation = implementation; + impl->implementation_destruct = implementation_destruct; + + /* + * Insert into the hash table if required. + * + * A write lock is used unconditionally because we wend our way down to the + * property string code which isn't locking friendly. + */ + ossl_property_write_lock(store); + ossl_method_cache_flush(store, nid); + if ((impl->properties = ossl_prop_defn_get(properties)) == NULL) { + if ((impl->properties = ossl_parse_property(properties)) == NULL) + goto err; + ossl_prop_defn_set(properties, impl->properties); + } + + alg = ossl_method_store_retrieve(store, nid); + if (alg == NULL) { + if ((alg = OPENSSL_zalloc(sizeof(*alg))) == NULL + || (alg->impls = sk_IMPLEMENTATION_new_null()) == NULL + || (alg->cache = lh_QUERY_new(&query_hash, &query_cmp)) == NULL) + goto err; + alg->nid = nid; + if (!ossl_method_store_insert(store, alg)) + goto err; + } + + /* Push onto stack */ + if (sk_IMPLEMENTATION_push(alg->impls, impl)) + ret = 1; + ossl_property_unlock(store); + if (ret == 0) + impl_free(impl); + return ret; + +err: + ossl_property_unlock(store); + alg_cleanup(0, alg); + impl_free(impl); + return 0; +} + +int ossl_method_store_remove(OSSL_METHOD_STORE *store, int nid, + const void *implementation) +{ + ALGORITHM *alg = NULL; + int i; + + if (nid <= 0 || implementation == NULL || store == NULL) + return 0; + + ossl_property_write_lock(store); + ossl_method_cache_flush(store, nid); + alg = ossl_method_store_retrieve(store, nid); + if (alg == NULL) { + ossl_property_unlock(store); + return 0; + } + + /* + * A sorting find then a delete could be faster but these stacks should be + * relatively small, so we avoid the overhead. Sorting could also surprise + * users when result orderings change (even though they are not guaranteed). + */ + for (i = 0; i < sk_IMPLEMENTATION_num(alg->impls); i++) { + IMPLEMENTATION *impl = sk_IMPLEMENTATION_value(alg->impls, i); + + if (impl->implementation == implementation) { + sk_IMPLEMENTATION_delete(alg->impls, i); + ossl_property_unlock(store); + impl_free(impl); + return 1; + } + } + ossl_property_unlock(store); + return 0; +} + +int ossl_method_store_fetch(OSSL_METHOD_STORE *store, int nid, + const char *prop_query, void **result) +{ + ALGORITHM *alg; + IMPLEMENTATION *impl; + OSSL_PROPERTY_LIST *pq = NULL, *p2; + int ret = 0; + int j; + + if (nid <= 0 || result == NULL || store == NULL) + return 0; + + /* + * This only needs to be a read lock, because queries never create property + * names or value and thus don't modify any of the property string layer. + */ + ossl_property_read_lock(store); + alg = ossl_method_store_retrieve(store, nid); + if (alg == NULL) { + ossl_property_unlock(store); + return 0; + } + + if (prop_query == NULL) { + if ((impl = sk_IMPLEMENTATION_value(alg->impls, 0)) != NULL) { + *result = impl->implementation; + ret = 1; + } + goto fin; + } + pq = ossl_parse_query(prop_query); + if (pq == NULL) + goto fin; + if (store->global_properties != NULL) { + p2 = ossl_property_merge(pq, store->global_properties); + if (p2 == NULL) + goto fin; + ossl_property_free(pq); + pq = p2; + } + for (j = 0; j < sk_IMPLEMENTATION_num(alg->impls); j++) { + impl = sk_IMPLEMENTATION_value(alg->impls, j); + + if (ossl_property_match(pq, impl->properties)) { + *result = impl->implementation; + ret = 1; + goto fin; + } + } +fin: + ossl_property_unlock(store); + ossl_property_free(pq); + return ret; +} + +int ossl_method_store_set_global_properties(OSSL_METHOD_STORE *store, + const char *prop_query) { + int ret = 0; + + if (store == NULL) + return 1; + + ossl_property_write_lock(store); + ossl_method_cache_flush_all(store); + if (prop_query == NULL) { + ossl_property_free(store->global_properties); + store->global_properties = NULL; + ossl_property_unlock(store); + return 1; + } + store->global_properties = ossl_parse_query(prop_query); + ret = store->global_properties != NULL; + ossl_property_unlock(store); + return ret; +} + +static void impl_cache_flush_alg(size_t idx, ALGORITHM *alg) +{ + lh_QUERY_doall(alg->cache, &impl_cache_free); + lh_QUERY_flush(alg->cache); +} + +static void ossl_method_cache_flush(OSSL_METHOD_STORE *store, int nid) +{ + ALGORITHM *alg = ossl_method_store_retrieve(store, nid); + + if (alg != NULL) { + store->nelem -= lh_QUERY_num_items(alg->cache); + impl_cache_flush_alg(0, alg); + } +} + +static void ossl_method_cache_flush_all(OSSL_METHOD_STORE *store) +{ + ossl_sa_ALGORITHM_doall(store->algs, &impl_cache_flush_alg); + store->nelem = 0; +} + +IMPLEMENT_LHASH_DOALL_ARG(QUERY, IMPL_CACHE_FLUSH); + +/* + * Flush an element from the query cache (perhaps). + * + * In order to avoid taking a write lock to keep accurate LRU information or + * using atomic operations to approximate similar, the procedure used here + * is to stochastically flush approximately half the cache. Since generating + * random numbers is relatively expensive, we produce them in blocks and + * consume them as we go, saving generated bits between generations of flushes. + * + * This procedure isn't ideal, LRU would be better. However, in normal + * operation, reaching a full cache would be quite unexpected. It means + * that no steady state of algorithm queries has been reached. I.e. it is most + * likely an attack of some form. A suboptimal clearance strategy that doesn't + * degrade performance of the normal case is preferable to a more refined + * approach that imposes a performance impact. + */ +static void impl_cache_flush_cache(QUERY *c, IMPL_CACHE_FLUSH *state) +{ + OSSL_METHOD_STORE *store = state->store; + unsigned int n; + + if (store->nbits == 0) { + if (!RAND_bytes(store->rand_bits, sizeof(store->rand_bits))) + return; + store->nbits = sizeof(store->rand_bits) * 8; + } + n = --store->nbits; + if ((store->rand_bits[n >> 3] & (1 << (n & 7))) != 0) + OPENSSL_free(lh_QUERY_delete(state->cache, c)); + else + state->nelem++; +} + +static void impl_cache_flush_one_alg(size_t idx, ALGORITHM *alg, void *v) +{ + IMPL_CACHE_FLUSH *state = (IMPL_CACHE_FLUSH *)v; + + state->cache = alg->cache; + lh_QUERY_doall_IMPL_CACHE_FLUSH(state->cache, &impl_cache_flush_cache, + state); +} + +static void ossl_method_cache_flush_some(OSSL_METHOD_STORE *store) +{ + IMPL_CACHE_FLUSH state; + + state.nelem = 0; + state.store = store; + ossl_sa_ALGORITHM_doall_arg(store->algs, &impl_cache_flush_one_alg, &state); + store->need_flush = 0; + store->nelem = state.nelem; +} + +int ossl_method_store_cache_get(OSSL_METHOD_STORE *store, int nid, + const char *prop_query, void **result) +{ + ALGORITHM *alg; + QUERY elem, *r; + + if (nid <= 0 || store == NULL) + return 0; + + ossl_property_read_lock(store); + alg = ossl_method_store_retrieve(store, nid); + if (alg == NULL) { + ossl_property_unlock(store); + return 0; + } + + elem.query = prop_query; + r = lh_QUERY_retrieve(alg->cache, &elem); + if (r == NULL) { + ossl_property_unlock(store); + return 0; + } + *result = r->result; + ossl_property_unlock(store); + return 1; +} + +int ossl_method_store_cache_set(OSSL_METHOD_STORE *store, int nid, + const char *prop_query, void *result) +{ + QUERY elem, *old, *p = NULL; + ALGORITHM *alg; + size_t len; + + if (nid <= 0 || store == NULL) + return 0; + if (prop_query == NULL) + return 1; + + ossl_property_write_lock(store); + if (store->need_flush) + ossl_method_cache_flush_some(store); + alg = ossl_method_store_retrieve(store, nid); + if (alg == NULL) { + ossl_property_unlock(store); + return 0; + } + + if (result == NULL) { + elem.query = prop_query; + lh_QUERY_delete(alg->cache, &elem); + ossl_property_unlock(store); + return 1; + } + p = OPENSSL_malloc(sizeof(*p) + (len = strlen(prop_query))); + if (p != NULL) { + p->query = p->body; + p->result = result; + memcpy((char *)p->query, prop_query, len + 1); + if ((old = lh_QUERY_insert(alg->cache, p)) != NULL) + OPENSSL_free(old); + if (old != NULL || !lh_QUERY_error(alg->cache)) { + store->nelem++; + if (store->nelem >= IMPL_CACHE_FLUSH_THRESHOLD) + store->need_flush = 1; + ossl_property_unlock(store); + return 1; + } + } + ossl_property_unlock(store); + OPENSSL_free(p); + return 0; +} diff --git a/crypto/property/property_err.c b/crypto/property/property_err.c new file mode 100644 index 0000000..619e5e7 --- /dev/null +++ b/crypto/property/property_err.c @@ -0,0 +1,61 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include "internal/propertyerr.h" + +#ifndef OPENSSL_NO_ERR + +static const ERR_STRING_DATA PROP_str_functs[] = { + {ERR_PACK(ERR_LIB_PROP, PROP_F_OSSL_PARSE_PROPERTY, 0), + "ossl_parse_property"}, + {ERR_PACK(ERR_LIB_PROP, PROP_F_OSSL_PARSE_QUERY, 0), "ossl_parse_query"}, + {ERR_PACK(ERR_LIB_PROP, PROP_F_PARSE_HEX, 0), "parse_hex"}, + {ERR_PACK(ERR_LIB_PROP, PROP_F_PARSE_NAME, 0), "parse_name"}, + {ERR_PACK(ERR_LIB_PROP, PROP_F_PARSE_NUMBER, 0), "parse_number"}, + {ERR_PACK(ERR_LIB_PROP, PROP_F_PARSE_OCT, 0), "parse_oct"}, + {ERR_PACK(ERR_LIB_PROP, PROP_F_PARSE_STRING, 0), "parse_string"}, + {ERR_PACK(ERR_LIB_PROP, PROP_F_PARSE_UNQUOTED, 0), "parse_unquoted"}, + {0, NULL} +}; + +static const ERR_STRING_DATA PROP_str_reasons[] = { + {ERR_PACK(ERR_LIB_PROP, 0, PROP_R_NAME_TOO_LONG), "name too long"}, + {ERR_PACK(ERR_LIB_PROP, 0, PROP_R_NOT_AN_ASCII_CHARACTER), + "not an ascii character"}, + {ERR_PACK(ERR_LIB_PROP, 0, PROP_R_NOT_AN_HEXADECIMAL_DIGIT), + "not an hexadecimal digit"}, + {ERR_PACK(ERR_LIB_PROP, 0, PROP_R_NOT_AN_IDENTIFIER), "not an identifier"}, + {ERR_PACK(ERR_LIB_PROP, 0, PROP_R_NOT_AN_OCTAL_DIGIT), + "not an octal digit"}, + {ERR_PACK(ERR_LIB_PROP, 0, PROP_R_NOT_A_DECIMAL_DIGIT), + "not a decimal digit"}, + {ERR_PACK(ERR_LIB_PROP, 0, PROP_R_NO_MATCHING_STRING_DELIMETER), + "no matching string delimeter"}, + {ERR_PACK(ERR_LIB_PROP, 0, PROP_R_NO_VALUE), "no value"}, + {ERR_PACK(ERR_LIB_PROP, 0, PROP_R_PARSE_FAILED), "parse failed"}, + {ERR_PACK(ERR_LIB_PROP, 0, PROP_R_STRING_TOO_LONG), "string too long"}, + {ERR_PACK(ERR_LIB_PROP, 0, PROP_R_TRAILING_CHARACTERS), + "trailing characters"}, + {0, NULL} +}; + +#endif + +int ERR_load_PROP_strings(void) +{ +#ifndef OPENSSL_NO_ERR + if (ERR_func_error_string(PROP_str_functs[0].error) == NULL) { + ERR_load_strings_const(PROP_str_functs); + ERR_load_strings_const(PROP_str_reasons); + } +#endif + return 1; +} diff --git a/crypto/property/property_lcl.h b/crypto/property/property_lcl.h new file mode 100644 index 0000000..faf3fe1 --- /dev/null +++ b/crypto/property/property_lcl.h @@ -0,0 +1,51 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include "internal/property.h" + +typedef struct ossl_property_list_st OSSL_PROPERTY_LIST; +typedef int OSSL_PROPERTY_IDX; + +/* Initialisation and finalisation for subsystem */ +int ossl_method_store_init(void); +void ossl_method_store_cleanup(void); + +/* Property string functions */ +OSSL_PROPERTY_IDX ossl_property_name(const char *s, int create); +OSSL_PROPERTY_IDX ossl_property_value(const char *s, int create); +int ossl_property_string_init(void); +void ossl_property_string_cleanup(void); + +/* Property list functions */ +int ossl_property_parse_init(void); +void ossl_property_free(OSSL_PROPERTY_LIST *p); +int ossl_property_match(const OSSL_PROPERTY_LIST *query, + const OSSL_PROPERTY_LIST *defn); +OSSL_PROPERTY_LIST *ossl_property_merge(const OSSL_PROPERTY_LIST *a, + const OSSL_PROPERTY_LIST *b); + +/* Property definition functions */ +OSSL_PROPERTY_LIST *ossl_parse_property(const char *s); + +/* Property query functions */ +OSSL_PROPERTY_LIST *ossl_parse_query(const char *s); + +/* Property definition cache functions */ +int ossl_prop_defn_init(void); +void ossl_prop_defn_cleanup(void); +OSSL_PROPERTY_LIST *ossl_prop_defn_get(const char *prop); +int ossl_prop_defn_set(const char *prop, OSSL_PROPERTY_LIST *pl); + +/* Property cache lock / unlock */ +int ossl_property_write_lock(OSSL_METHOD_STORE *); +int ossl_property_read_lock(OSSL_METHOD_STORE *); +int ossl_property_unlock(OSSL_METHOD_STORE *); + diff --git a/crypto/property/property_parse.c b/crypto/property/property_parse.c new file mode 100644 index 0000000..2094d38 --- /dev/null +++ b/crypto/property/property_parse.c @@ -0,0 +1,545 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include +#include +#include +#include "internal/propertyerr.h" +#include "internal/property.h" +#include "internal/ctype.h" +#include "internal/nelem.h" +#include "property_lcl.h" +#include "e_os.h" + +typedef enum { + PROPERTY_TYPE_STRING, PROPERTY_TYPE_NUMBER, + PROPERTY_TYPE_VALUE_UNDEFINED +} PROPERTY_TYPE; + +typedef enum { + PROPERTY_OPER_EQ, PROPERTY_OPER_NE, PROPERTY_OVERRIDE +} PROPERTY_OPER; + +typedef struct { + OSSL_PROPERTY_IDX name_idx; + PROPERTY_TYPE type; + PROPERTY_OPER oper; + union { + int64_t int_val; /* Signed integer */ + OSSL_PROPERTY_IDX str_val; /* String */ + } v; +} PROPERTY_DEFINITION; + +struct ossl_property_list_st { + int n; + PROPERTY_DEFINITION properties[1]; +}; + +static OSSL_PROPERTY_IDX ossl_property_true, ossl_property_false; + +DEFINE_STACK_OF(PROPERTY_DEFINITION) + +static const char *skip_space(const char *s) +{ + while (ossl_isspace(*s)) + s++; + return s; +} + +static int match_ch(const char *t[], char m) +{ + const char *s = *t; + + if (*s == m) { + *t = skip_space(s + 1); + return 1; + } + return 0; +} + +#define MATCH(s, m) match(s, m, sizeof(m) - 1) + +static int match(const char *t[], const char m[], size_t m_len) +{ + const char *s = *t; + + if (strncasecmp(s, m, m_len) == 0) { + *t = skip_space(s + m_len); + return 1; + } + return 0; +} + +static int parse_name(const char *t[], int create, OSSL_PROPERTY_IDX *idx) +{ + char name[100]; + int err = 0; + size_t i = 0; + const char *s = *t; + int user_name = 0; + + for (;;) { + if (!ossl_isalpha(*s)) { + PROPerr(PROP_F_PARSE_NAME, PROP_R_NOT_AN_IDENTIFIER); + return 0; + } + do { + if (i < sizeof(name) - 1) + name[i++] = ossl_tolower(*s); + else + err = 1; + } while (*++s == '_' || ossl_isalnum(*s)); + if (*s != '.') + break; + user_name = 1; + if (i < sizeof(name) - 1) + name[i++] = *s; + else + err = 1; + s++; + } + name[i] = '\0'; + *t = skip_space(s); + if (!err) { + *idx = ossl_property_name(name, user_name && create); + return 1; + } + PROPerr(PROP_F_PARSE_NAME, PROP_R_NAME_TOO_LONG); + return 0; +} + +static int parse_number(const char *t[], PROPERTY_DEFINITION *res) +{ + const char *s = *t; + int64_t v = 0; + + if (!ossl_isdigit(*s)) + return 0; + do { + v = v * 10 + (*s++ - '0'); + } while (ossl_isdigit(*s)); + if (!ossl_isspace(*s) && *s != '\0' && *s != ',') { + PROPerr(PROP_F_PARSE_NUMBER, PROP_R_NOT_A_DECIMAL_DIGIT); + return 0; + } + *t = skip_space(s); + res->type = PROPERTY_TYPE_NUMBER; + res->v.int_val = v; + return 1; +} + +static int parse_hex(const char *t[], PROPERTY_DEFINITION *res) +{ + const char *s = *t; + int64_t v = 0; + + if (!ossl_isxdigit(*s)) + return 0; + do { + v <<= 4; + if (ossl_isdigit(*s)) + v += *s - '0'; + else + v += ossl_tolower(*s) - 'a'; + } while (ossl_isxdigit(*++s)); + if (!ossl_isspace(*s) && *s != '\0' && *s != ',') { + PROPerr(PROP_F_PARSE_HEX, PROP_R_NOT_AN_HEXADECIMAL_DIGIT); + return 0; + } + *t = skip_space(s); + res->type = PROPERTY_TYPE_NUMBER; + res->v.int_val = v; + return 1; +} + +static int parse_oct(const char *t[], PROPERTY_DEFINITION *res) +{ + const char *s = *t; + int64_t v = 0; + + if (*s == '9' || *s == '8' || !ossl_isdigit(*s)) + return 0; + do { + v = (v << 3) + (*s - '0'); + } while (ossl_isdigit(*++s) && *s != '9' && *s != '8'); + if (!ossl_isspace(*s) && *s != '\0' && *s != ',') { + PROPerr(PROP_F_PARSE_OCT, PROP_R_NOT_AN_OCTAL_DIGIT); + return 0; + } + *t = skip_space(s); + res->type = PROPERTY_TYPE_NUMBER; + res->v.int_val = v; + return 1; +} + +static int parse_string(const char *t[], char delim, PROPERTY_DEFINITION *res, + const int create) +{ + char v[1000]; + const char *s = *t; + size_t i = 0; + int err = 0; + + while (*s != '\0' && *s != delim) { + if (i < sizeof(v) - 1) + v[i++] = *s; + else + err = 1; + s++; + } + if (*s == '\0') { + PROPerr(PROP_F_PARSE_STRING, + PROP_R_NO_MATCHING_STRING_DELIMETER); + return 0; + } + v[i] = '\0'; + *t = skip_space(s + 1); + if (err) + PROPerr(PROP_F_PARSE_STRING, PROP_R_STRING_TOO_LONG); + else + res->v.str_val = ossl_property_value(v, create); + res->type = PROPERTY_TYPE_STRING; + return !err; +} + +static int parse_unquoted(const char *t[], PROPERTY_DEFINITION *res, + const int create) +{ + char v[1000]; + const char *s = *t; + size_t i = 0; + int err = 0; + + if (*s == '\0' || *s == ',') + return 0; + while (ossl_isprint(*s) && !ossl_isspace(*s) && *s != ',') { + if (i < sizeof(v) - 1) + v[i++] = ossl_tolower(*s); + else + err = 1; + s++; + } + if (!ossl_isspace(*s) && *s != '\0' && *s != ',') { + PROPerr(PROP_F_PARSE_UNQUOTED, PROP_R_NOT_AN_ASCII_CHARACTER); + return 0; + } + v[i] = 0; + *t = skip_space(s); + if (err) + PROPerr(PROP_F_PARSE_UNQUOTED, PROP_R_STRING_TOO_LONG); + else + res->v.str_val = ossl_property_value(v, create); + res->type = PROPERTY_TYPE_STRING; + return !err; +} + +static int parse_value(const char *t[], PROPERTY_DEFINITION *res, int create) +{ + const char *s = *t; + int r = 0; + + if (*s == '"' || *s == '\'') { + s++; + r = parse_string(&s, s[-1], res, create); + } else if (*s == '+') { + s++; + r = parse_number(&s, res); + } else if (*s == '-') { + s++; + r = parse_number(&s, res); + res->v.int_val = -res->v.int_val; + } else if (*s == '0' && s[1] == 'x') { + s += 2; + r = parse_hex(&s, res); + } else if (*s == '0' && ossl_isdigit(s[1])) { + s++; + r = parse_oct(&s, res); + } else if (ossl_isdigit(*s)) { + return parse_number(t, res); + } else if (ossl_isalpha(*s)) + return parse_unquoted(t, res, create); + if (r) + *t = s; + return r; +} + +static int pd_compare(const PROPERTY_DEFINITION *const *p1, + const PROPERTY_DEFINITION *const *p2) +{ + const PROPERTY_DEFINITION *pd1 = *p1; + const PROPERTY_DEFINITION *pd2 = *p2; + + if (pd1->name_idx < pd2->name_idx) + return -1; + if (pd1->name_idx > pd2->name_idx) + return 1; + return 0; +} + +static void pd_free(PROPERTY_DEFINITION *pd) +{ + OPENSSL_free(pd); +} + +/* + * Convert a stack of property definitions and queries into a fixed array. + * The items are sorted for efficient query. The stack is not freed. + */ +static OSSL_PROPERTY_LIST *stack_to_property_list(STACK_OF(PROPERTY_DEFINITION) + *sk) +{ + const int n = sk_PROPERTY_DEFINITION_num(sk); + OSSL_PROPERTY_LIST *r; + int i; + + r = OPENSSL_malloc(sizeof(*r) + + (n == 0 ? 0 : n - 1) * sizeof(r->properties[0])); + if (r != NULL) { + sk_PROPERTY_DEFINITION_sort(sk); + + for (i = 0; i < n; i++) + r->properties[i] = *sk_PROPERTY_DEFINITION_value(sk, i); + r->n = n; + } + return r; +} + +OSSL_PROPERTY_LIST *ossl_parse_property(const char *defn) +{ + PROPERTY_DEFINITION *prop = NULL; + OSSL_PROPERTY_LIST *res = NULL; + STACK_OF(PROPERTY_DEFINITION) *sk; + const char *s = defn; + int done; + + if (s == NULL || (sk = sk_PROPERTY_DEFINITION_new(&pd_compare)) == NULL) + return NULL; + + s = skip_space(s); + done = *s == '\0'; + while (!done) { + prop = OPENSSL_malloc(sizeof(*prop)); + if (prop == NULL) + goto err; + memset(&prop->v, 0, sizeof(prop->v)); + if (!parse_name(&s, 1, &prop->name_idx)) + goto err; + prop->oper = PROPERTY_OPER_EQ; + if (prop->name_idx == 0) { + PROPerr(PROP_F_OSSL_PARSE_PROPERTY, PROP_R_PARSE_FAILED); + goto err; + } + if (match_ch(&s, '=')) { + if (!parse_value(&s, prop, 1)) { + PROPerr(PROP_F_OSSL_PARSE_PROPERTY, PROP_R_NO_VALUE); + goto err; + } + } else { + /* A name alone means a true Boolean */ + prop->type = PROPERTY_TYPE_STRING; + prop->v.str_val = ossl_property_true; + } + + if (!sk_PROPERTY_DEFINITION_push(sk, prop)) + goto err; + prop = NULL; + done = !match_ch(&s, ','); + } + if (*s != '\0') { + PROPerr(PROP_F_OSSL_PARSE_PROPERTY, PROP_R_TRAILING_CHARACTERS); + goto err; + } + res = stack_to_property_list(sk); + +err: + OPENSSL_free(prop); + sk_PROPERTY_DEFINITION_pop_free(sk, &pd_free); + return res; +} + +OSSL_PROPERTY_LIST *ossl_parse_query(const char *s) +{ + STACK_OF(PROPERTY_DEFINITION) *sk; + OSSL_PROPERTY_LIST *res = NULL; + PROPERTY_DEFINITION *prop = NULL; + int done; + + if (s == NULL || (sk = sk_PROPERTY_DEFINITION_new(&pd_compare)) == NULL) + return NULL; + + s = skip_space(s); + done = *s == '\0'; + while (!done) { + prop = OPENSSL_malloc(sizeof(*prop)); + if (prop == NULL) + goto err; + memset(&prop->v, 0, sizeof(prop->v)); + + if (match_ch(&s, '-')) { + prop->oper = PROPERTY_OVERRIDE; + if (!parse_name(&s, 0, &prop->name_idx)) + goto err; + goto skip_value; + } + if (!parse_name(&s, 0, &prop->name_idx)) + goto err; + + if (match_ch(&s, '=')) { + prop->oper = PROPERTY_OPER_EQ; + } else if (MATCH(&s, "!=")) { + prop->oper = PROPERTY_OPER_NE; + } else { + /* A name alone is a Boolean comparison for true */ + prop->oper = PROPERTY_OPER_EQ; + prop->type = PROPERTY_TYPE_STRING; + prop->v.str_val = ossl_property_true; + goto skip_value; + } + if (!parse_value(&s, prop, 0)) + prop->type = PROPERTY_TYPE_VALUE_UNDEFINED; + +skip_value: + if (!sk_PROPERTY_DEFINITION_push(sk, prop)) + goto err; + prop = NULL; + done = !match_ch(&s, ','); + } + if (*s != '\0') { + PROPerr(PROP_F_OSSL_PARSE_QUERY, PROP_R_TRAILING_CHARACTERS); + goto err; + } + res = stack_to_property_list(sk); + +err: + OPENSSL_free(prop); + sk_PROPERTY_DEFINITION_pop_free(sk, &pd_free); + return res; +} + +int ossl_property_match(const OSSL_PROPERTY_LIST *query, + const OSSL_PROPERTY_LIST *defn) +{ + const PROPERTY_DEFINITION *const q = query->properties; + const PROPERTY_DEFINITION *const d = defn->properties; + int i = 0, j = 0; + PROPERTY_OPER oper; + + while (i < query->n) { + if ((oper = q[i].oper) == PROPERTY_OVERRIDE) { + i++; + continue; + } + if (j < defn->n) { + if (q[i].name_idx > d[j].name_idx) { /* skip defn, not in query */ + j++; + continue; + } + if (q[i].name_idx == d[j].name_idx) { /* both in defn and query */ + const int eq = q[i].type == d[j].type + && memcmp(&q[i].v, &d[j].v, sizeof(q[i].v)) == 0; + + if ((eq && oper != PROPERTY_OPER_EQ) + || (!eq && oper != PROPERTY_OPER_NE)) + return 0; + i++; + j++; + continue; + } + } + + /* + * Handle the cases of a missing value and a query with no corresponding + * definition. The former fails for any comparision except inequality, + * the latter is treated as a comparison against the Boolean false. + */ + if (q[i].type == PROPERTY_TYPE_VALUE_UNDEFINED) { + if (oper != PROPERTY_OPER_NE) + return 0; + } else if (q[i].type != PROPERTY_TYPE_STRING + || (oper == PROPERTY_OPER_EQ + && q[i].v.str_val != ossl_property_false) + || (oper == PROPERTY_OPER_NE + && q[i].v.str_val == ossl_property_false)) { + return 0; + } + i++; + } + return 1; +} + +void ossl_property_free(OSSL_PROPERTY_LIST *p) +{ + OPENSSL_free(p); +} + +/* + * Merge two property lists. + * If there is a common name, the one from the first list is used. + */ +OSSL_PROPERTY_LIST *ossl_property_merge(const OSSL_PROPERTY_LIST *a, + const OSSL_PROPERTY_LIST *b) +{ + const PROPERTY_DEFINITION *const ap = a->properties; + const PROPERTY_DEFINITION *const bp = b->properties; + const PROPERTY_DEFINITION *copy; + OSSL_PROPERTY_LIST *r; + int i, j, n; + const int t = a->n + b->n; + + r = OPENSSL_malloc(sizeof(*r) + + (t == 0 ? 0 : t - 1) * sizeof(r->properties[0])); + if (r == NULL) + return NULL; + + for (i = j = n = 0; i < a->n || j < b->n; n++) { + if (i >= a->n) { + copy = &bp[j++]; + } else if (j >= b->n) { + copy = &ap[i++]; + } else if (ap[i].name_idx <= bp[j].name_idx) { + if (ap[i].name_idx == bp[j].name_idx) + j++; + copy = &ap[i++]; + } else { + copy = &bp[j++]; + } + memcpy(r->properties + n, copy, sizeof(r->properties[0])); + } + r->n = n; + if (n != t) + r = OPENSSL_realloc(r, sizeof(*r) + (n - 1) * sizeof(r->properties[0])); + return r; +} + +int ossl_property_parse_init(void) +{ + static const char *const predefined_names[] = { + "default", /* Being provided by the default built-in provider */ + "provider", /* Name of provider (default, fips) */ + "version", /* Version number of this provider */ + "fips", /* FIPS supporting provider */ + "engine", /* An old style engine masquerading as a provider */ + }; + size_t i; + + for (i = 0; i < OSSL_NELEM(predefined_names); i++) + if (ossl_property_name(predefined_names[i], 1) == 0) + goto err; + + /* Pre-populate the two Boolean values */ + if ((ossl_property_true = ossl_property_value("yes", 1)) == 0 + || (ossl_property_false = ossl_property_value("no", 1)) == 0) + goto err; + + return 1; +err: + return 0; +} diff --git a/crypto/property/property_string.c b/crypto/property/property_string.c new file mode 100644 index 0000000..7f6e30e --- /dev/null +++ b/crypto/property/property_string.c @@ -0,0 +1,137 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include +#include +#include "internal/lhash.h" +#include "property_lcl.h" + +/* + * Property strings are a consolidation of all strings seen by the property + * subsystem. There are two name spaces to keep property names separate from + * property values (numeric values are not expected to be cached however). + * They allow a rapid conversion from a string to a unique index and any + * subsequent string comparison can be done via an integer compare. + * + * This implementation uses OpenSSL's standard hash table. There are more + * space and time efficient algorithms if this becomes a bottleneck. + */ + +typedef struct { + const char *s; + OSSL_PROPERTY_IDX idx; + char body[1]; +} PROPERTY_STRING; + +DEFINE_LHASH_OF(PROPERTY_STRING); +typedef LHASH_OF(PROPERTY_STRING) PROP_TABLE; + +static PROP_TABLE *prop_names; +static PROP_TABLE *prop_values; +static OSSL_PROPERTY_IDX prop_name_idx = 0; +static OSSL_PROPERTY_IDX prop_value_idx = 0; + +static unsigned long property_hash(const PROPERTY_STRING *a) +{ + return OPENSSL_LH_strhash(a->s); +} + +static int property_cmp(const PROPERTY_STRING *a, const PROPERTY_STRING *b) +{ + return strcmp(a->s, b->s); +} + +static void property_free(PROPERTY_STRING *ps) +{ + OPENSSL_free(ps); +} + +static void property_table_free(PROP_TABLE **pt) +{ + PROP_TABLE *t = *pt; + + if (t != NULL) { + lh_PROPERTY_STRING_doall(t, &property_free); + lh_PROPERTY_STRING_free(t); + *pt = NULL; + } +} + +static PROPERTY_STRING *new_property_string(const char *s, + OSSL_PROPERTY_IDX *pidx) +{ + const size_t l = strlen(s); + PROPERTY_STRING *ps = OPENSSL_malloc(sizeof(*ps) + l); + + if (ps != NULL) { + memcpy(ps->body, s, l + 1); + ps->s = ps->body; + ps->idx = ++*pidx; + if (ps->idx == 0) { + OPENSSL_free(ps); + return NULL; + } + } + return ps; +} + +static OSSL_PROPERTY_IDX ossl_property_string(PROP_TABLE *t, + OSSL_PROPERTY_IDX *pidx, + const char *s) +{ + PROPERTY_STRING p, *ps, *ps_new; + + p.s = s; + ps = lh_PROPERTY_STRING_retrieve(t, &p); + if (ps == NULL && pidx != NULL) + if ((ps_new = new_property_string(s, pidx)) != NULL) { + lh_PROPERTY_STRING_insert(t, ps_new); + if (lh_PROPERTY_STRING_error(t)) { + property_free(ps_new); + return 0; + } + ps = ps_new; + } + return ps != NULL ? ps->idx : 0; +} + +OSSL_PROPERTY_IDX ossl_property_name(const char *s, int create) +{ + return ossl_property_string(prop_names, create ? &prop_name_idx : NULL, s); +} + +OSSL_PROPERTY_IDX ossl_property_value(const char *s, int create) +{ + return ossl_property_string(prop_values, create ? &prop_value_idx : NULL, s); +} + +int ossl_property_string_init(void) +{ + prop_names = lh_PROPERTY_STRING_new(&property_hash, &property_cmp); + if (prop_names == NULL) + return 0; + + prop_values = lh_PROPERTY_STRING_new(&property_hash, &property_cmp); + if (prop_values == NULL) + goto err; + return 1; + +err: + ossl_property_string_cleanup(); + return 0; +} + +void ossl_property_string_cleanup(void) +{ + property_table_free(&prop_names); + property_table_free(&prop_values); + prop_name_idx = prop_value_idx = 0; +} diff --git a/crypto/sparse_array.c b/crypto/sparse_array.c index 796d35e..5bcdbc5 100644 --- a/crypto/sparse_array.c +++ b/crypto/sparse_array.c @@ -187,7 +187,7 @@ int OPENSSL_SA_set(OPENSSL_SA *sa, size_t posn, void *val) if (sa == NULL) return 0; - for (level = 1; level <= SA_BLOCK_MAX_LEVELS; level++) + for (level = 1; level < SA_BLOCK_MAX_LEVELS; level++) if ((n >>= OPENSSL_SA_BLOCK_BITS) == 0) break; diff --git a/doc/internal/man3/OSSL_METHOD_STORE.pod b/doc/internal/man3/OSSL_METHOD_STORE.pod new file mode 100644 index 0000000..36d26bc --- /dev/null +++ b/doc/internal/man3/OSSL_METHOD_STORE.pod @@ -0,0 +1,103 @@ +=pod + +=head1 NAME + +ossl_method_store_new, ossl_method_store_free, ossl_method_store_init, +ossl_method_store_cleanup, ossl_method_store_add, ossl_method_store_remove, +ossl_method_store_fetch, ossl_method_store_set_global_properties, +ossl_method_store_cache_get and ossl_method_store_cache_set +- implementation method store and query + +=head1 SYNOPSIS + + #include "internal/property.h" + + typedef struct ossl_method_store_st OSSL_METHOD_STORE; + + OSSL_METHOD_STORE *ossl_method_store_new(void); + void ossl_method_store_free(OSSL_METHOD_STORE *store); + int ossl_method_store_init(void); + void ossl_method_store_cleanup(void); + int ossl_method_store_add(OSSL_METHOD_STORE *store, + int nid, const char *properties, + void *implementation, + void (*implementation_destruct)(void *)); + int ossl_method_store_remove(OSSL_METHOD_STORE *store, + int nid, const void *implementation); + int ossl_method_store_fetch(OSSL_METHOD_STORE *store, + int nid, const char *properties, + void **result); + int ossl_method_store_set_global_properties(OSSL_METHOD_STORE *store, + const char *prop_query); + int ossl_method_store_cache_get(OSSL_METHOD_STORE *store, int nid, + const char *prop_query, void **result); + int ossl_method_store_cache_set(OSSL_METHOD_STORE *store, int nid, + const char *prop_query, void *result); + +=head1 DESCRIPTION + +OSSL_METHOD_STORE stores implementations of algorithms that can be queried using +properties and a NID. + +ossl_method_store_init() initialises the implementation method store subsystem. + +ossl_method_store_cleanup() cleans up and shuts down the implementation method +store subsystem + +ossl_method_store_new() create a new empty implementation method store. + +ossl_method_store_free() frees resources allocated to B. + +ossl_method_store_add() adds the B to the B as an +instance of the algorithm indicated by B and the property definition +. +The optional B function is called when +B is being released from B. + +ossl_method_store_remove() remove the B of algorithm B +from the B. + +ossl_method_store_fetch() query B for an implementation of algorithm +B that matches the property query B. +The result, if any, is returned in B. + +ossl_method_store_set_global_properties() sets implementation method B +wide query properties to B. +All subsequent fetches will need to meet both these global query properties +and the ones passed to the fetch function. + +ossl_method_store_cache_get() queries the cache associated with the B +for an implementation of algorithm B that matches the property query +B. +The result, if any, is returned in B. + +ossl_method_store_cache_set() sets a cache entry for algorithm B with the +property query B in the B. +Future cache gets will return the specified . + +=head1 RETURN VALUES + +ossl_method_store_new() a new method store object or B on failure. + +ossl_method_store_free(), ossl_method_store_add(), +ossl_method_store_remove(), ossl_method_store_fetch(), +ossl_method_store_set_global_properties(), ossl_method_store_cache_get() +and ossl_method_store_cache_set() return B<1> on success and B<0> on error. + +ossl_method_store_free() and ossl_method_store_cleanup() do not return values. + +=head1 HISTORY + +This functionality was added to OpenSSL 3.0.0. + +=head1 COPYRIGHT + +Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + +Licensed under the Apache License 2.0 (the "License"). You may not use this +file except in compliance with the License. You can obtain a copy in the file +LICENSE in the source distribution or at +L. + +=cut diff --git a/doc/man3/OPENSSL_LH_COMPFUNC.pod b/doc/man3/OPENSSL_LH_COMPFUNC.pod index 7caf9b3..9a927f8 100644 --- a/doc/man3/OPENSSL_LH_COMPFUNC.pod +++ b/doc/man3/OPENSSL_LH_COMPFUNC.pod @@ -6,7 +6,7 @@ LHASH, DECLARE_LHASH_OF, OPENSSL_LH_COMPFUNC, OPENSSL_LH_HASHFUNC, OPENSSL_LH_DOALL_FUNC, LHASH_DOALL_ARG_FN_TYPE, IMPLEMENT_LHASH_HASH_FN, IMPLEMENT_LHASH_COMP_FN, -lh_TYPE_new, lh_TYPE_free, +lh_TYPE_new, lh_TYPE_free, lh_TYPE_flush, lh_TYPE_insert, lh_TYPE_delete, lh_TYPE_retrieve, lh_TYPE_doall, lh_TYPE_doall_arg, lh_TYPE_error - dynamic hash table @@ -20,6 +20,7 @@ lh_TYPE_doall, lh_TYPE_doall_arg, lh_TYPE_error - dynamic hash table LHASH *lh_TYPE_new(OPENSSL_LH_HASHFUNC hash, OPENSSL_LH_COMPFUNC compare); void lh_TYPE_free(LHASH_OF(TYPE) *table); + void lh_TYPE_flush(LHASH_OF(TYPE) *table); TYPE *lh_TYPE_insert(LHASH_OF(TYPE) *table, TYPE *data); TYPE *lh_TYPE_delete(LHASH_OF(TYPE) *table, TYPE *data); @@ -95,6 +96,11 @@ B. Allocated hash table entries will not be freed; consider using lh_TYPE_doall() to deallocate any remaining entries in the hash table (see below). +lh_TYPE_flush() empties the B structure B
. New +entries can be added to the flushed table. Allocated hash table entries +will not be freed; consider using lh_TYPE_doall() to deallocate any +remaining entries in the hash table (see below). + lh_TYPE_insert() inserts the structure pointed to by B into B
. If there already is an entry with the same key, the old value is replaced. Note that lh_TYPE_insert() stores pointers, the @@ -173,7 +179,8 @@ B otherwise. lh_TYPE_error() returns 1 if an error occurred in the last operation, 0 otherwise. It's meaningful only after non-retrieve operations. -lh_TYPE_free(), lh_TYPE_doall() and lh_TYPE_doall_arg() return no values. +lh_TYPE_free(), lh_TYPE_flush, lh_TYPE_doall() and lh_TYPE_doall_arg() +return no values. =head1 NOTE diff --git a/include/internal/property.h b/include/internal/property.h new file mode 100644 index 0000000..82b3a33 --- /dev/null +++ b/include/internal/property.h @@ -0,0 +1,35 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PROPERTY_H +# define HEADER_PROPERTY_H + +typedef struct ossl_method_store_st OSSL_METHOD_STORE; + +/* Implementation store functions */ +OSSL_METHOD_STORE *ossl_method_store_new(void); +void ossl_method_store_free(OSSL_METHOD_STORE *store); +int ossl_method_store_add(OSSL_METHOD_STORE *store, int nid, + const char *properties, void *implementation, + void (*implementation_destruct)(void *)); +int ossl_method_store_remove(OSSL_METHOD_STORE *store, + int nid, const void *implementation); +int ossl_method_store_fetch(OSSL_METHOD_STORE *store, int nid, + const char *prop_query, void **result); +int ossl_method_store_set_global_properties(OSSL_METHOD_STORE *store, + const char *prop_query); + +/* proeprty query cache functions */ +int ossl_method_store_cache_get(OSSL_METHOD_STORE *store, int nid, + const char *prop_query, void **result); +int ossl_method_store_cache_set(OSSL_METHOD_STORE *store, int nid, + const char *prop_query, void *result); + +#endif diff --git a/include/internal/propertyerr.h b/include/internal/propertyerr.h new file mode 100644 index 0000000..908c910 --- /dev/null +++ b/include/internal/propertyerr.h @@ -0,0 +1,46 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PROPERR_H +# define HEADER_PROPERR_H + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PROP_strings(void); + +/* + * PROP function codes. + */ +# define PROP_F_OSSL_PARSE_PROPERTY 100 +# define PROP_F_OSSL_PARSE_QUERY 101 +# define PROP_F_PARSE_HEX 102 +# define PROP_F_PARSE_NAME 103 +# define PROP_F_PARSE_NUMBER 104 +# define PROP_F_PARSE_OCT 105 +# define PROP_F_PARSE_STRING 106 +# define PROP_F_PARSE_UNQUOTED 107 + +/* + * PROP reason codes. + */ +# define PROP_R_NAME_TOO_LONG 100 +# define PROP_R_NOT_AN_ASCII_CHARACTER 101 +# define PROP_R_NOT_AN_HEXADECIMAL_DIGIT 102 +# define PROP_R_NOT_AN_IDENTIFIER 103 +# define PROP_R_NOT_AN_OCTAL_DIGIT 104 +# define PROP_R_NOT_A_DECIMAL_DIGIT 105 +# define PROP_R_NO_MATCHING_STRING_DELIMETER 106 +# define PROP_R_NO_VALUE 107 +# define PROP_R_PARSE_FAILED 108 +# define PROP_R_STRING_TOO_LONG 109 +# define PROP_R_TRAILING_CHARACTERS 110 + +#endif diff --git a/include/openssl/err.h b/include/openssl/err.h index ed3a2f0..0d6956c 100644 --- a/include/openssl/err.h +++ b/include/openssl/err.h @@ -95,6 +95,7 @@ typedef struct err_state_st { # define ERR_LIB_KDF 52 # define ERR_LIB_SM2 53 # define ERR_LIB_ESS 54 +# define ERR_LIB_PROP 55 # define ERR_LIB_USER 128 @@ -135,6 +136,7 @@ typedef struct err_state_st { # define KDFerr(f,r) ERR_PUT_error(ERR_LIB_KDF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) # define SM2err(f,r) ERR_PUT_error(ERR_LIB_SM2,(f),(r),OPENSSL_FILE,OPENSSL_LINE) # define ESSerr(f,r) ERR_PUT_error(ERR_LIB_ESS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PROPerr(f,r) ERR_PUT_error(ERR_LIB_PROP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) # define ERR_PACK(l,f,r) ( \ (((unsigned int)(l) & 0x0FF) << 24L) | \ diff --git a/include/openssl/lhash.h b/include/openssl/lhash.h index cb52d2a..6144fdd 100644 --- a/include/openssl/lhash.h +++ b/include/openssl/lhash.h @@ -72,6 +72,7 @@ typedef struct lhash_st OPENSSL_LHASH; int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); void OPENSSL_LH_free(OPENSSL_LHASH *lh); +void OPENSSL_LH_flush(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); @@ -131,6 +132,10 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ + static ossl_unused ossl_inline void lh_##type##_flush(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ + } \ static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ diff --git a/include/openssl/stack.h b/include/openssl/stack.h index 16cb94b..638b3af 100644 --- a/include/openssl/stack.h +++ b/include/openssl/stack.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/test/build.info b/test/build.info index af8429b..db4e1a7 100644 --- a/test/build.info +++ b/test/build.info @@ -442,7 +442,7 @@ IF[{- !$disabled{tests} -}] IF[1] PROGRAMS{noinst}=asn1_internal_test modes_internal_test x509_internal_test \ tls13encryptiontest wpackettest ctype_internal_test \ - rdrand_sanitytest + rdrand_sanitytest property_test IF[{- !$disabled{poly1305} -}] PROGRAMS{noinst}=poly1305_internal_test ENDIF @@ -490,6 +490,10 @@ IF[{- !$disabled{tests} -}] INCLUDE[wpackettest]=../include ../apps/include DEPEND[wpackettest]=../libcrypto ../libssl.a libtestutil.a + SOURCE[property_test]=property_test.c + INCLUDE[property_test]=../include ../apps/include + DEPEND[property_test]=../libcrypto.a libtestutil.a + SOURCE[ctype_internal_test]=ctype_internal_test.c INCLUDE[ctype_internal_test]=.. ../crypto/include ../include ../apps/include DEPEND[ctype_internal_test]=../libcrypto.a libtestutil.a diff --git a/test/property_test.c b/test/property_test.c new file mode 100644 index 0000000..ac1a8f7 --- /dev/null +++ b/test/property_test.c @@ -0,0 +1,374 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include "testutil.h" +#include "internal/nelem.h" +#include "internal/property.h" +#include "../crypto/property/property_lcl.h" + +static int add_property_names(const char *n, ...) +{ + va_list args; + int res = 1; + + va_start(args, n); + do { + if (!TEST_int_ne(ossl_property_name(n, 1), 0)) + res = 0; + } while ((n = va_arg(args, const char *)) != NULL); + va_end(args); + return res; +} + +static int test_property_string(void) +{ + OSSL_METHOD_STORE *store; + int res = 0; + OSSL_PROPERTY_IDX i, j; + + if (TEST_ptr(store = ossl_method_store_new()) + && TEST_int_eq(ossl_property_name("fnord", 0), 0) + && TEST_int_ne(ossl_property_name("fnord", 1), 0) + && TEST_int_ne(ossl_property_name("name", 1), 0) + /* Property value checks */ + && TEST_int_eq(ossl_property_value("fnord", 0), 0) + && TEST_int_ne(i = ossl_property_value("no", 0), 0) + && TEST_int_ne(j = ossl_property_value("yes", 0), 0) + && TEST_int_ne(i, j) + && TEST_int_eq(ossl_property_value("yes", 1), j) + && TEST_int_eq(ossl_property_value("no", 1), i) + && TEST_int_ne(i = ossl_property_value("green", 1), 0) + && TEST_int_eq(j = ossl_property_value("fnord", 1), i + 1) + && TEST_int_eq(ossl_property_value("fnord", 1), j) + /* Check name and values are distinct */ + && TEST_int_eq(ossl_property_value("cold", 0), 0) + && TEST_int_ne(ossl_property_name("fnord", 0), + ossl_property_value("fnord", 0))) + res = 1; + ossl_method_store_free(store); + return res; +} + +static const struct { + const char *defn; + const char *query; + int e; +} parser_tests[] = { + { "", "sky=blue", 0 }, + { "", "sky!=blue", 1 }, + { "groan", "", 1 }, + { "cold=yes", "cold=yes", 1 }, + { "cold=yes", "cold", 1 }, + { "cold=yes", "cold!=no", 1 }, + { "groan", "groan=yes", 1 }, + { "groan", "groan=no", 0 }, + { "groan", "groan!=yes", 0 }, + { "cold=no", "cold", 0 }, + { "cold=no", "cold=no", 1 }, + { "groan", "cold", 0 }, + { "groan", "cold=no", 1 }, + { "groan", "cold!=yes", 1 }, + { "groan=blue", "groan=yellow", 0 }, + { "groan=blue", "groan!=yellow", 1 }, + { "today=monday, tomorrow=3", "today!=2", 1 }, + { "today=monday, tomorrow=3", "today!='monday'", 0 }, + { "today=monday, tomorrow=3", "tomorrow=3", 1 }, + { "n=0x3", "n=3", 1 }, + { "n=0x3", "n=-3", 0 }, + { "n=0x33", "n=51", 1 }, + { "n=033", "n=27", 1 }, + { "n=0", "n=00", 1 }, + { "n=0x0", "n=0", 1 }, +}; + +static int test_property_parse(int n) +{ + OSSL_METHOD_STORE *store; + OSSL_PROPERTY_LIST *p = NULL, *q = NULL; + int r = 0; + + if (TEST_ptr(store = ossl_method_store_new()) + && add_property_names("sky", "groan", "cold", "today", "tomorrow", "n", + NULL) + && TEST_ptr(p = ossl_parse_property(parser_tests[n].defn)) + && TEST_ptr(q = ossl_parse_query(parser_tests[n].query)) + && TEST_int_eq(ossl_property_match(q, p), parser_tests[n].e)) + r = 1; + ossl_property_free(p); + ossl_property_free(q); + ossl_method_store_free(store); + return r; +} + +static const struct { + const char *q_global; + const char *q_local; + const char *prop; +} merge_tests[] = { + { "", "colour=blue", "colour=blue" }, + { "colour=blue", "", "colour=blue" }, + { "colour=red", "colour=blue", "colour=blue" }, + { "clouds=pink, urn=red", "urn=blue, colour=green", + "urn=blue, colour=green, clouds=pink" }, + { "pot=gold", "urn=blue", "pot=gold, urn=blue" }, + { "night", "day", "day=yes, night=yes" }, + { "day", "night", "day=yes, night=yes" }, + { "", "", "" }, + /* + * The following four leave 'day' unspecified in the query, and will match + * any definition + */ + { "day=yes", "-day", "day=no" }, + { "day=yes", "-day", "day=yes" }, + { "day=yes", "-day", "day=arglebargle" }, + { "day=yes", "-day", "pot=sesquioxidizing" }, + { "day, night", "-night, day", "day=yes, night=no" }, + { "-day", "day=yes", "day=yes" }, +}; + +static int test_property_merge(int n) +{ + OSSL_METHOD_STORE *store; + OSSL_PROPERTY_LIST *q_global = NULL, *q_local = NULL; + OSSL_PROPERTY_LIST *q_combined = NULL, *prop = NULL; + int r = 0; + + if (TEST_ptr(store = ossl_method_store_new()) + && add_property_names("colour", "urn", "clouds", "pot", "day", "night", + NULL) + && TEST_ptr(prop = ossl_parse_property(merge_tests[n].prop)) + && TEST_ptr(q_global = ossl_parse_query(merge_tests[n].q_global)) + && TEST_ptr(q_local = ossl_parse_query(merge_tests[n].q_local)) + && TEST_ptr(q_combined = ossl_property_merge(q_local, q_global)) + && TEST_true(ossl_property_match(q_combined, prop))) + r = 1; + ossl_property_free(q_global); + ossl_property_free(q_local); + ossl_property_free(q_combined); + ossl_property_free(prop); + ossl_method_store_free(store); + return r; +} + +static int test_property_defn_cache(void) +{ + OSSL_METHOD_STORE *store; + OSSL_PROPERTY_LIST *red, *blue; + int r = 0; + + if (TEST_ptr(store = ossl_method_store_new()) + && add_property_names("red", "blue", NULL) + && TEST_ptr(red = ossl_parse_property("red")) + && TEST_ptr(blue = ossl_parse_property("blue")) + && TEST_ptr_ne(red, blue) + && TEST_true(ossl_prop_defn_set("red", red)) + && TEST_true(ossl_prop_defn_set("blue", blue)) + && TEST_ptr_eq(ossl_prop_defn_get("red"), red) + && TEST_ptr_eq(ossl_prop_defn_get("blue"), blue)) + r = 1; + ossl_method_store_free(store); + return r; +} + +static const struct { + const char *defn; + const char *query; + int e; +} definition_tests[] = { + { "alpha", "alpha=yes", 1 }, + { "alpha=no", "alpha", 0 }, + { "alpha=1", "alpha=1", 1 }, + { "alpha=2", "alpha=1", 0 }, + { "alpha", "omega", 0 } +}; + +static int test_definition_compares(int n) +{ + OSSL_METHOD_STORE *store; + OSSL_PROPERTY_LIST *d = NULL, *q = NULL; + int r; + + r = TEST_ptr(store = ossl_method_store_new()) + && add_property_names("alpha", "omega", NULL) + && TEST_ptr(d = ossl_parse_property(definition_tests[n].defn)) + && TEST_ptr(q = ossl_parse_query(definition_tests[n].query)) + && TEST_int_eq(ossl_property_match(q, d), definition_tests[n].e); + + ossl_property_free(d); + ossl_property_free(q); + ossl_method_store_free(store); + return r; +} + +static int test_register_deregister(void) +{ + static const struct { + int nid; + const char *prop; + char *impl; + } impls[] = { + { 6, "position=1", "a" }, + { 6, "position=2", "b" }, + { 6, "position=3", "c" }, + { 6, "position=4", "d" }, + }; + size_t i; + int ret = 0; + OSSL_METHOD_STORE *store; + + if (!TEST_ptr(store = ossl_method_store_new()) + || !add_property_names("position", NULL)) + goto err; + + for (i = 0; i < OSSL_NELEM(impls); i++) + if (!TEST_true(ossl_method_store_add(store, impls[i].nid, impls[i].prop, + impls[i].impl, NULL))) { + TEST_note("iteration %zd", i + 1); + goto err; + } + + /* Deregister in a different order to registration */ + for (i = 0; i < OSSL_NELEM(impls); i++) { + const size_t j = (1 + i * 3) % OSSL_NELEM(impls); + int nid = impls[j].nid; + void *impl = impls[j].impl; + + if (!TEST_true(ossl_method_store_remove(store, nid, impl)) + || !TEST_false(ossl_method_store_remove(store, nid, impl))) { + TEST_note("iteration %zd, position %zd", i + 1, j + 1); + goto err; + } + } + + if (TEST_false(ossl_method_store_remove(store, impls[0].nid, impls[0].impl))) + ret = 1; +err: + ossl_method_store_free(store); + return ret; +} + +static int test_property(void) +{ + static const struct { + int nid; + const char *prop; + char *impl; + } impls[] = { + { 1, "fast=no, colour=green", "a" }, + { 1, "fast, colour=blue", "b" }, + { 1, "", "-" }, + { 9, "sky=blue, furry", "c" }, + { 3, NULL, "d" }, + { 6, "sky.colour=blue, sky=green, old.data", "e" }, + }; + static struct { + int nid; + const char *prop; + char *expected; + } queries[] = { + { 1, "fast", "b" }, + { 1, "fast=yes", "b" }, + { 1, "fast=no, colour=green", "a" }, + { 1, "colour=blue, fast", "b" }, + { 1, "colour=blue", "b" }, + { 9, "furry", "c" }, + { 6, "sky.colour=blue", "e" }, + { 6, "old.data", "e" }, + { 9, "furry=yes, sky=blue", "c" }, + { 1, "", "a" }, + { 3, "", "d" }, + }; + OSSL_METHOD_STORE *store; + size_t i; + int ret = 0; + void *result; + + if (!TEST_ptr(store = ossl_method_store_new()) + || !add_property_names("fast", "colour", "sky", "furry", NULL)) + goto err; + + for (i = 0; i < OSSL_NELEM(impls); i++) + if (!TEST_true(ossl_method_store_add(store, impls[i].nid, impls[i].prop, + impls[i].impl, NULL))) { + TEST_note("iteration %zd", i + 1); + goto err; + } + for (i = 0; i < OSSL_NELEM(queries); i++) { + OSSL_PROPERTY_LIST *pq = NULL; + + if (!TEST_true(ossl_property_read_lock(store)) + || !TEST_true(ossl_method_store_fetch(store, queries[i].nid, + queries[i].prop, &result)) + || !TEST_true(ossl_property_unlock(store)) + || !TEST_str_eq((char *)result, queries[i].expected)) { + TEST_note("iteration %zd", i + 1); + ossl_property_free(pq); + goto err; + } + ossl_property_free(pq); + } + ret = 1; +err: + ossl_method_store_free(store); + return ret; +} + +static int test_query_cache_stochastic(void) +{ + const int max = 10000, tail = 10; + OSSL_METHOD_STORE *store; + int i, res = 0; + char buf[50]; + void *result; + int errors = 0; + int v[10001]; + + if (!TEST_ptr(store = ossl_method_store_new()) + || !add_property_names("n", NULL)) + goto err; + + for (i = 1; i <= max; i++) { + v[i] = 2 * i; + BIO_snprintf(buf, sizeof(buf), "n=%d\n", i); + if (!TEST_true(ossl_method_store_add(store, i, buf, "abc", NULL)) + || !TEST_true(ossl_method_store_cache_set(store, i, buf, v + i)) + || !TEST_true(ossl_method_store_cache_set(store, i, "n=1234", + "miss"))) { + TEST_note("iteration %d", i); + goto err; + } + } + for (i = 1; i <= max; i++) { + BIO_snprintf(buf, sizeof(buf), "n=%d\n", i); + if (!ossl_method_store_cache_get(store, i, buf, &result) + || result != v + i) + errors++; + } + /* There is a tiny probability that this will fail when it shouldn't */ + res = TEST_int_gt(errors, tail) && TEST_int_lt(errors, max - tail); + +err: + ossl_method_store_free(store); + return res; +} + +int setup_tests(void) +{ + ADD_TEST(test_property_string); + ADD_ALL_TESTS(test_property_parse, OSSL_NELEM(parser_tests)); + ADD_ALL_TESTS(test_property_merge, OSSL_NELEM(merge_tests)); + ADD_TEST(test_property_defn_cache); + ADD_ALL_TESTS(test_definition_compares, OSSL_NELEM(definition_tests)); + ADD_TEST(test_register_deregister); + ADD_TEST(test_property); + ADD_TEST(test_query_cache_stochastic); + return 1; +} diff --git a/test/recipes/03-test_property.t b/test/recipes/03-test_property.t new file mode 100644 index 0000000..2654215 --- /dev/null +++ b/test/recipes/03-test_property.t @@ -0,0 +1,12 @@ +#! /usr/bin/env perl +# Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +use OpenSSL::Test::Simple; + +simple_test("test_property", "property_test"); diff --git a/test/sparse_array_test.c b/test/sparse_array_test.c index fa57f3f..02ce0d1 100644 --- a/test/sparse_array_test.c +++ b/test/sparse_array_test.c @@ -164,7 +164,7 @@ static int test_sparse_array_doall(void) TEST_note("failed at iteration %zu", i + 1); goto err; } - + ossl_sa_char_doall_arg(sa, &leaf_check_all, &doall_data); if (doall_data.res == 0) { TEST_info("while checking all elements"); diff --git a/util/libcrypto.num b/util/libcrypto.num index 560f47f..991a9fe 100644 --- a/util/libcrypto.num +++ b/util/libcrypto.num @@ -4643,3 +4643,4 @@ EC_GROUP_get0_field 4598 3_0_0 EXIST::FUNCTION:EC CRYPTO_alloc_ex_data 4599 3_0_0 EXIST::FUNCTION: OPENSSL_CTX_new 4600 3_0_0 EXIST::FUNCTION: OPENSSL_CTX_free 4601 3_0_0 EXIST::FUNCTION: +OPENSSL_LH_flush 4602 3_0_0 EXIST::FUNCTION: From no-reply at appveyor.com Mon Feb 18 06:40:47 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 18 Feb 2019 06:40:47 +0000 Subject: Build failed: openssl master.22606 Message-ID: <20190218064047.1.A725AE12DE12A395@appveyor.com> An HTML attachment was scrubbed... URL: From builds at travis-ci.org Mon Feb 18 06:54:28 2019 From: builds at travis-ci.org (Travis CI) Date: Mon, 18 Feb 2019 06:54:28 +0000 Subject: Errored: openssl/openssl#23210 (master - 3037d0a) In-Reply-To: Message-ID: <5c6a56a44f17f_43ffd58ae2bf45554b@73266ca6-7ca4-4fa7-94a9-198d46e1ab6b.mail> Build Update for openssl/openssl ------------------------------------- Build: #23210 Status: Errored Duration: 19 mins and 58 secs Commit: 3037d0a (master) Author: Pauli Message: generated files Reviewed-by: Matt Caswell Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/8224) View the changeset: https://github.com/openssl/openssl/compare/e3ac36548922...3037d0aadf7c View the full build log and details: https://travis-ci.org/openssl/openssl/builds/494736016?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 18 07:27:50 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 18 Feb 2019 07:27:50 +0000 Subject: Build completed: openssl master.22607 Message-ID: <20190218072750.1.360BD36513A32F4B@appveyor.com> An HTML attachment was scrubbed... URL: From openssl at openssl.org Mon Feb 18 09:38:06 2019 From: openssl at openssl.org (OpenSSL run-checker) Date: Mon, 18 Feb 2019 09:38:06 +0000 Subject: SUCCESSFUL build of OpenSSL branch master with options -d --strict-warnings no-stdio Message-ID: <1550482686.829379.12208.nullmailer@run.openssl.org> Platform and configuration command: $ uname -a Linux run 4.4.0-135-generic #161-Ubuntu SMP Mon Aug 27 10:45:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ CC=clang ../openssl/config -d --strict-warnings no-stdio Commit log since last time: 8f58ede095 [test] unit test for field_inv function pointer in EC_METHOD e0033efc30 SCA hardening for mod. field inversion in EC_GROUP db42bb440e ARM64 assembly pack: make it Windows-friendly. 3405db97e5 ARM assembly pack: make it Windows-friendly. b2b580fe44 s390x assembly pack: fix formal interface bug in chacha module d64b62998b Add an OpenSSL library context e17f5b6a6b Add CRYPTO_alloc_ex_data() fa1f030610 Add EC_GROUP_get0_field 48fe4ce104 Mark generated functions unused (applies to safestack, lhash, sparse_array) 088dfa1335 Add option to disable Extended Master Secret 9fc8f18f59 Use order not degree to calculate a buffer size in ecdsatest 0cf5c6a9a0 Fix no-stdio fcee53948b Configure: make --strict-warnings a regular user provided compiler option From matt at openssl.org Mon Feb 18 09:48:58 2019 From: matt at openssl.org (Matt Caswell) Date: Mon, 18 Feb 2019 09:48:58 +0000 Subject: [openssl] master update Message-ID: <1550483338.406306.11480.nullmailer@dev.openssl.org> The branch master has been updated via 4c3941c2eb22c44398bccb50dbd019530bb01c7d (commit) from 3037d0aadf7c0230021aa73e1f3db0d9f25008a9 (commit) - Log ----------------------------------------------------------------- commit 4c3941c2eb22c44398bccb50dbd019530bb01c7d Author: Matt Caswell Date: Sun Feb 17 16:13:08 2019 +0000 Don't leak EVP_KDF_CTX on error Found by Coverity Reviewed-by: Kurt Roeckx (Merged from https://github.com/openssl/openssl/pull/8260) ----------------------------------------------------------------------- Summary of changes: crypto/evp/pbe_scrypt.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/crypto/evp/pbe_scrypt.c b/crypto/evp/pbe_scrypt.c index f8ea1fa..7224025 100644 --- a/crypto/evp/pbe_scrypt.c +++ b/crypto/evp/pbe_scrypt.c @@ -41,6 +41,11 @@ int EVP_PBE_scrypt(const char *pass, size_t passlen, int rv = 1; EVP_KDF_CTX *kctx; + if (r > UINT32_MAX || p > UINT32_MAX) { + EVPerr(EVP_F_EVP_PBE_SCRYPT, EVP_R_PARAMETER_TOO_LARGE); + return 0; + } + /* Maintain existing behaviour. */ if (pass == NULL) { pass = empty; @@ -53,10 +58,6 @@ int EVP_PBE_scrypt(const char *pass, size_t passlen, if (kctx == NULL) return 0; - if (r > UINT32_MAX || p > UINT32_MAX) { - EVPerr(EVP_F_EVP_PBE_SCRYPT, EVP_R_PARAMETER_TOO_LARGE); - return 0; - } if (EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_PASS, pass, (size_t)passlen) != 1 || EVP_KDF_ctrl(kctx, EVP_KDF_CTRL_SET_SALT, salt, (size_t)saltlen) != 1 From levitte at openssl.org Mon Feb 18 09:59:02 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 18 Feb 2019 09:59:02 +0000 Subject: [openssl] master update Message-ID: <1550483942.840153.13242.nullmailer@dev.openssl.org> The branch master has been updated via 0a79572a29683bdbfd4490377ae0e0b19c060836 (commit) from 4c3941c2eb22c44398bccb50dbd019530bb01c7d (commit) - Log ----------------------------------------------------------------- commit 0a79572a29683bdbfd4490377ae0e0b19c060836 Author: Richard Levitte Date: Mon Feb 18 09:40:07 2019 +0100 Property: naming and manual clarifiations - Add a bit more text about that is expected of the user or OSSL_METHOD_STOREs. - Clarify what a method and what a numeric identity are. - Change all mentions of 'implementation' and 'result' to 'method'. To clarify further: OpenSSL has used the term 'method' for structures that mainly contains function pointers. Those are the methods that are expected to be stored away in OSSL_METHOD_STOREs. In the end, however, it's the caller's responsibility to define exactly what they want to store, as long as its 'methods' are associated with a numeric identity and properties. Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8265) ----------------------------------------------------------------------- Summary of changes: crypto/property/property.c | 43 ++++++++++----------- doc/internal/man3/OSSL_METHOD_STORE.pod | 68 +++++++++++++++++++-------------- 2 files changed, 61 insertions(+), 50 deletions(-) diff --git a/crypto/property/property.c b/crypto/property/property.c index 1f914cf..dea0dfd 100644 --- a/crypto/property/property.c +++ b/crypto/property/property.c @@ -26,15 +26,15 @@ typedef struct { OSSL_PROPERTY_LIST *properties; - void *implementation; - void (*implementation_destruct)(void *); + void *method; + void (*method_destruct)(void *); } IMPLEMENTATION; DEFINE_STACK_OF(IMPLEMENTATION) typedef struct { const char *query; - void *result; + void *method; char body[1]; } QUERY; @@ -120,8 +120,8 @@ static int query_cmp(const QUERY *a, const QUERY *b) static void impl_free(IMPLEMENTATION *impl) { if (impl != NULL) { - if (impl->implementation_destruct) - impl->implementation_destruct(impl->implementation); + if (impl->method_destruct) + impl->method_destruct(impl->method); OPENSSL_free(impl); } } @@ -185,14 +185,13 @@ static int ossl_method_store_insert(OSSL_METHOD_STORE *store, ALGORITHM *alg) int ossl_method_store_add(OSSL_METHOD_STORE *store, int nid, const char *properties, - void *implementation, - void (*implementation_destruct)(void *)) + void *method, void (*method_destruct)(void *)) { ALGORITHM *alg = NULL; IMPLEMENTATION *impl; int ret = 0; - if (nid <= 0 || implementation == NULL || store == NULL) + if (nid <= 0 || method == NULL || store == NULL) return 0; if (properties == NULL) properties = ""; @@ -201,8 +200,8 @@ int ossl_method_store_add(OSSL_METHOD_STORE *store, impl = OPENSSL_malloc(sizeof(*impl)); if (impl == NULL) return 0; - impl->implementation = implementation; - impl->implementation_destruct = implementation_destruct; + impl->method = method; + impl->method_destruct = method_destruct; /* * Insert into the hash table if required. @@ -245,12 +244,12 @@ err: } int ossl_method_store_remove(OSSL_METHOD_STORE *store, int nid, - const void *implementation) + const void *method) { ALGORITHM *alg = NULL; int i; - if (nid <= 0 || implementation == NULL || store == NULL) + if (nid <= 0 || method == NULL || store == NULL) return 0; ossl_property_write_lock(store); @@ -269,7 +268,7 @@ int ossl_method_store_remove(OSSL_METHOD_STORE *store, int nid, for (i = 0; i < sk_IMPLEMENTATION_num(alg->impls); i++) { IMPLEMENTATION *impl = sk_IMPLEMENTATION_value(alg->impls, i); - if (impl->implementation == implementation) { + if (impl->method == method) { sk_IMPLEMENTATION_delete(alg->impls, i); ossl_property_unlock(store); impl_free(impl); @@ -281,7 +280,7 @@ int ossl_method_store_remove(OSSL_METHOD_STORE *store, int nid, } int ossl_method_store_fetch(OSSL_METHOD_STORE *store, int nid, - const char *prop_query, void **result) + const char *prop_query, void **method) { ALGORITHM *alg; IMPLEMENTATION *impl; @@ -289,7 +288,7 @@ int ossl_method_store_fetch(OSSL_METHOD_STORE *store, int nid, int ret = 0; int j; - if (nid <= 0 || result == NULL || store == NULL) + if (nid <= 0 || method == NULL || store == NULL) return 0; /* @@ -305,7 +304,7 @@ int ossl_method_store_fetch(OSSL_METHOD_STORE *store, int nid, if (prop_query == NULL) { if ((impl = sk_IMPLEMENTATION_value(alg->impls, 0)) != NULL) { - *result = impl->implementation; + *method = impl->method; ret = 1; } goto fin; @@ -324,7 +323,7 @@ int ossl_method_store_fetch(OSSL_METHOD_STORE *store, int nid, impl = sk_IMPLEMENTATION_value(alg->impls, j); if (ossl_property_match(pq, impl->properties)) { - *result = impl->implementation; + *method = impl->method; ret = 1; goto fin; } @@ -434,7 +433,7 @@ static void ossl_method_cache_flush_some(OSSL_METHOD_STORE *store) } int ossl_method_store_cache_get(OSSL_METHOD_STORE *store, int nid, - const char *prop_query, void **result) + const char *prop_query, void **method) { ALGORITHM *alg; QUERY elem, *r; @@ -455,13 +454,13 @@ int ossl_method_store_cache_get(OSSL_METHOD_STORE *store, int nid, ossl_property_unlock(store); return 0; } - *result = r->result; + *method = r->method; ossl_property_unlock(store); return 1; } int ossl_method_store_cache_set(OSSL_METHOD_STORE *store, int nid, - const char *prop_query, void *result) + const char *prop_query, void *method) { QUERY elem, *old, *p = NULL; ALGORITHM *alg; @@ -481,7 +480,7 @@ int ossl_method_store_cache_set(OSSL_METHOD_STORE *store, int nid, return 0; } - if (result == NULL) { + if (method == NULL) { elem.query = prop_query; lh_QUERY_delete(alg->cache, &elem); ossl_property_unlock(store); @@ -490,7 +489,7 @@ int ossl_method_store_cache_set(OSSL_METHOD_STORE *store, int nid, p = OPENSSL_malloc(sizeof(*p) + (len = strlen(prop_query))); if (p != NULL) { p->query = p->body; - p->result = result; + p->method = method; memcpy((char *)p->query, prop_query, len + 1); if ((old = lh_QUERY_insert(alg->cache, p)) != NULL) OPENSSL_free(old); diff --git a/doc/internal/man3/OSSL_METHOD_STORE.pod b/doc/internal/man3/OSSL_METHOD_STORE.pod index 36d26bc..47f4194 100644 --- a/doc/internal/man3/OSSL_METHOD_STORE.pod +++ b/doc/internal/man3/OSSL_METHOD_STORE.pod @@ -20,60 +20,72 @@ ossl_method_store_cache_get and ossl_method_store_cache_set void ossl_method_store_cleanup(void); int ossl_method_store_add(OSSL_METHOD_STORE *store, int nid, const char *properties, - void *implementation, - void (*implementation_destruct)(void *)); + void *method, void (*method_destruct)(void *)); int ossl_method_store_remove(OSSL_METHOD_STORE *store, - int nid, const void *implementation); + int nid, const void *method); int ossl_method_store_fetch(OSSL_METHOD_STORE *store, int nid, const char *properties, - void **result); + void **method); int ossl_method_store_set_global_properties(OSSL_METHOD_STORE *store, const char *prop_query); int ossl_method_store_cache_get(OSSL_METHOD_STORE *store, int nid, - const char *prop_query, void **result); + const char *prop_query, void **method); int ossl_method_store_cache_set(OSSL_METHOD_STORE *store, int nid, - const char *prop_query, void *result); + const char *prop_query, void *method); =head1 DESCRIPTION -OSSL_METHOD_STORE stores implementations of algorithms that can be queried using -properties and a NID. +OSSL_METHOD_STORE stores methods that can be queried using properties and a +numeric identity (nid). -ossl_method_store_init() initialises the implementation method store subsystem. +Methods are expected to be library internal structures. +It's left to the caller to define the exact contents. + +Numeric identities are expected to be an algorithm identity for the methods. +It's left to the caller to define exactly what an algorithm is, and to allocate +these numeric identities accordingly. + +The B also holds an internal query cache, which is accessed +separately (see L below). + +=head2 Store Functions + +ossl_method_store_init() initialises the method store subsystem. ossl_method_store_cleanup() cleans up and shuts down the implementation method -store subsystem +store subsystem. -ossl_method_store_new() create a new empty implementation method store. +ossl_method_store_new() create a new empty method store. ossl_method_store_free() frees resources allocated to B. -ossl_method_store_add() adds the B to the B as an -instance of the algorithm indicated by B and the property definition -. -The optional B function is called when -B is being released from B. +ossl_method_store_add() adds the B to the B as an instance of an +algorithm indicated by B and the property definition B. +The optional B function is called when B is being +released from B. -ossl_method_store_remove() remove the B of algorithm B -from the B. +ossl_method_store_remove() removes the B identified by B from the +B. -ossl_method_store_fetch() query B for an implementation of algorithm -B that matches the property query B. -The result, if any, is returned in B. +ossl_method_store_fetch() queries B for an method identified by B +that matches the property query B. +The result, if any, is returned in B. -ossl_method_store_set_global_properties() sets implementation method B -wide query properties to B. +ossl_method_store_set_global_properties() sets method B wide query +properties to B. All subsequent fetches will need to meet both these global query properties -and the ones passed to the fetch function. +and the ones passed to the ossl_method_store_free(). + +=head2 Cache Functions ossl_method_store_cache_get() queries the cache associated with the B -for an implementation of algorithm B that matches the property query +for an method identified by B that matches the property query B. -The result, if any, is returned in B. +The result, if any, is returned in B. -ossl_method_store_cache_set() sets a cache entry for algorithm B with the +ossl_method_store_cache_set() sets a cache entry identified by B with the property query B in the B. -Future cache gets will return the specified . +Future cache gets will return the specified B. =head1 RETURN VALUES From builds at travis-ci.org Mon Feb 18 10:09:26 2019 From: builds at travis-ci.org (Travis CI) Date: Mon, 18 Feb 2019 10:09:26 +0000 Subject: Failed: openssl/openssl#23215 (master - 4c3941c) In-Reply-To: Message-ID: <5c6a84567984d_43ff5b3e12ab0680a@d0ab5c8a-a451-47a7-82c9-25897b82cda6.mail> Build Update for openssl/openssl ------------------------------------- Build: #23215 Status: Failed Duration: 19 mins and 38 secs Commit: 4c3941c (master) Author: Matt Caswell Message: Don't leak EVP_KDF_CTX on error Found by Coverity Reviewed-by: Kurt Roeckx (Merged from https://github.com/openssl/openssl/pull/8260) View the changeset: https://github.com/openssl/openssl/compare/3037d0aadf7c...4c3941c2eb22 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/494801319?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From builds at travis-ci.org Mon Feb 18 10:25:46 2019 From: builds at travis-ci.org (Travis CI) Date: Mon, 18 Feb 2019 10:25:46 +0000 Subject: Failed: openssl/openssl#23216 (master - 0a79572) In-Reply-To: Message-ID: <5c6a882a94473_43f92596fd3b42447fd@f0365406-fe0a-4e6f-9107-1e802d89b4f5.mail> Build Update for openssl/openssl ------------------------------------- Build: #23216 Status: Failed Duration: 26 mins and 0 secs Commit: 0a79572 (master) Author: Richard Levitte Message: Property: naming and manual clarifiations - Add a bit more text about that is expected of the user or OSSL_METHOD_STOREs. - Clarify what a method and what a numeric identity are. - Change all mentions of 'implementation' and 'result' to 'method'. To clarify further: OpenSSL has used the term 'method' for structures that mainly contains function pointers. Those are the methods that are expected to be stored away in OSSL_METHOD_STOREs. In the end, however, it's the caller's responsibility to define exactly what they want to store, as long as its 'methods' are associated with a numeric identity and properties. Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8265) View the changeset: https://github.com/openssl/openssl/compare/4c3941c2eb22...0a79572a2968 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/494805509?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From levitte at openssl.org Mon Feb 18 14:26:51 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 18 Feb 2019 14:26:51 +0000 Subject: [openssl] master update Message-ID: <1550500011.138418.2244.nullmailer@dev.openssl.org> The branch master has been updated via 1ad2d9404dcd97372c0dc2709a598ee0f0a79620 (commit) from 0a79572a29683bdbfd4490377ae0e0b19c060836 (commit) - Log ----------------------------------------------------------------- commit 1ad2d9404dcd97372c0dc2709a598ee0f0a79620 Author: Richard Levitte Date: Mon Feb 18 14:32:58 2019 +0100 Conform to proper NAME section format The NAME section format is comma separated names to the left of the left of the dash, free form on the right. If we don't follow that form, programs like apropos(1) and whatis(1) can't do their job properly. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8267) ----------------------------------------------------------------------- Summary of changes: doc/internal/man3/OSSL_METHOD_STORE.pod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/internal/man3/OSSL_METHOD_STORE.pod b/doc/internal/man3/OSSL_METHOD_STORE.pod index 47f4194..70a3195 100644 --- a/doc/internal/man3/OSSL_METHOD_STORE.pod +++ b/doc/internal/man3/OSSL_METHOD_STORE.pod @@ -5,7 +5,7 @@ ossl_method_store_new, ossl_method_store_free, ossl_method_store_init, ossl_method_store_cleanup, ossl_method_store_add, ossl_method_store_remove, ossl_method_store_fetch, ossl_method_store_set_global_properties, -ossl_method_store_cache_get and ossl_method_store_cache_set +ossl_method_store_cache_get, ossl_method_store_cache_set - implementation method store and query =head1 SYNOPSIS From builds at travis-ci.org Mon Feb 18 14:46:50 2019 From: builds at travis-ci.org (Travis CI) Date: Mon, 18 Feb 2019 14:46:50 +0000 Subject: Still Failing: openssl/openssl#23218 (master - 1ad2d94) In-Reply-To: Message-ID: <5c6ac5599df02_43f92596fd95432439c@f0365406-fe0a-4e6f-9107-1e802d89b4f5.mail> Build Update for openssl/openssl ------------------------------------- Build: #23218 Status: Still Failing Duration: 19 mins and 7 secs Commit: 1ad2d94 (master) Author: Richard Levitte Message: Conform to proper NAME section format The NAME section format is comma separated names to the left of the left of the dash, free form on the right. If we don't follow that form, programs like apropos(1) and whatis(1) can't do their job properly. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8267) View the changeset: https://github.com/openssl/openssl/compare/0a79572a2968...1ad2d9404dcd View the full build log and details: https://travis-ci.org/openssl/openssl/builds/494920163?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From levitte at openssl.org Mon Feb 18 20:10:45 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 18 Feb 2019 20:10:45 +0000 Subject: [openssl] master update Message-ID: <1550520645.818459.10356.nullmailer@dev.openssl.org> The branch master has been updated via 9b57e4a1ef356420367d843f1ba96037f88316b8 (commit) from 1ad2d9404dcd97372c0dc2709a598ee0f0a79620 (commit) - Log ----------------------------------------------------------------- commit 9b57e4a1ef356420367d843f1ba96037f88316b8 Author: Corinna Vinschen Date: Fri Feb 15 12:24:47 2019 +0100 cygwin: drop explicit O_TEXT Cygwin binaries should not enforce text mode these days, just use text mode if the underlying mount point requests it CLA: trivial Signed-off-by: Corinna Vinschen Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8248) ----------------------------------------------------------------------- Summary of changes: crypto/bio/bss_file.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/crypto/bio/bss_file.c b/crypto/bio/bss_file.c index a2b8700..93ba006 100644 --- a/crypto/bio/bss_file.c +++ b/crypto/bio/bss_file.c @@ -253,9 +253,7 @@ static long file_ctrl(BIO *b, int cmd, long num, void *ptr) } # elif defined(OPENSSL_SYS_WIN32_CYGWIN) int fd = fileno((FILE *)ptr); - if (num & BIO_FP_TEXT) - setmode(fd, O_TEXT); - else + if (!(num & BIO_FP_TEXT)) setmode(fd, O_BINARY); # endif } @@ -279,11 +277,14 @@ static long file_ctrl(BIO *b, int cmd, long num, void *ptr) ret = 0; break; } -# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32_CYGWIN) +# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) if (!(num & BIO_FP_TEXT)) OPENSSL_strlcat(p, "b", sizeof(p)); else OPENSSL_strlcat(p, "t", sizeof(p)); +# elif defined(OPENSSL_SYS_WIN32_CYGWIN) + if (!(num & BIO_FP_TEXT)) + OPENSSL_strlcat(p, "b", sizeof(p)); # endif fp = openssl_fopen(ptr, p); if (fp == NULL) { From levitte at openssl.org Mon Feb 18 20:12:07 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 18 Feb 2019 20:12:07 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550520727.480973.11332.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via a81cc6e8a240b27d0e0e6404dd29970375a4f5fc (commit) from 5cd8faed79694d8ad8f1db2d02dd7c06fa338dd9 (commit) - Log ----------------------------------------------------------------- commit a81cc6e8a240b27d0e0e6404dd29970375a4f5fc Author: Corinna Vinschen Date: Fri Feb 15 12:24:47 2019 +0100 cygwin: drop explicit O_TEXT Cygwin binaries should not enforce text mode these days, just use text mode if the underlying mount point requests it Signed-off-by: Corinna Vinschen Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8248) (cherry picked from commit 9b57e4a1ef356420367d843f1ba96037f88316b8) ----------------------------------------------------------------------- Summary of changes: crypto/bio/bss_file.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/crypto/bio/bss_file.c b/crypto/bio/bss_file.c index 8de2391..80fa108 100644 --- a/crypto/bio/bss_file.c +++ b/crypto/bio/bss_file.c @@ -253,9 +253,7 @@ static long file_ctrl(BIO *b, int cmd, long num, void *ptr) } # elif defined(OPENSSL_SYS_WIN32_CYGWIN) int fd = fileno((FILE *)ptr); - if (num & BIO_FP_TEXT) - setmode(fd, O_TEXT); - else + if (!(num & BIO_FP_TEXT)) setmode(fd, O_BINARY); # endif } @@ -279,11 +277,14 @@ static long file_ctrl(BIO *b, int cmd, long num, void *ptr) ret = 0; break; } -# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32_CYGWIN) +# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) if (!(num & BIO_FP_TEXT)) OPENSSL_strlcat(p, "b", sizeof(p)); else OPENSSL_strlcat(p, "t", sizeof(p)); +# elif defined(OPENSSL_SYS_WIN32_CYGWIN) + if (!(num & BIO_FP_TEXT)) + OPENSSL_strlcat(p, "b", sizeof(p)); # endif fp = openssl_fopen(ptr, p); if (fp == NULL) { From builds at travis-ci.org Mon Feb 18 20:47:58 2019 From: builds at travis-ci.org (Travis CI) Date: Mon, 18 Feb 2019 20:47:58 +0000 Subject: Still Failing: openssl/openssl#23224 (master - 9b57e4a) In-Reply-To: Message-ID: <5c6b19fdc93ff_43fae7367bdb0222134@b195cd7a-8f16-4b96-b974-eb100646c590.mail> Build Update for openssl/openssl ------------------------------------- Build: #23224 Status: Still Failing Duration: 58 mins and 29 secs Commit: 9b57e4a (master) Author: Corinna Vinschen Message: cygwin: drop explicit O_TEXT Cygwin binaries should not enforce text mode these days, just use text mode if the underlying mount point requests it CLA: trivial Signed-off-by: Corinna Vinschen Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8248) View the changeset: https://github.com/openssl/openssl/compare/1ad2d9404dcd...9b57e4a1ef35 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/495089078?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From levitte at openssl.org Mon Feb 18 21:30:10 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 18 Feb 2019 21:30:10 +0000 Subject: [openssl] master update Message-ID: <1550525410.170174.24105.nullmailer@dev.openssl.org> The branch master has been updated via 4460ad90af0338abe31286f29b36baf2e41abf19 (commit) via 23ab880d423bb72f4f3e9efc2274bf38918cab74 (commit) from 9b57e4a1ef356420367d843f1ba96037f88316b8 (commit) - Log ----------------------------------------------------------------- commit 4460ad90af0338abe31286f29b36baf2e41abf19 Author: Richard Levitte Date: Mon Feb 18 16:25:47 2019 +0100 util/find-docs-nits: Recognise SPARSE_ARRAY_OF Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8269) commit 23ab880d423bb72f4f3e9efc2274bf38918cab74 Author: Richard Levitte Date: Mon Feb 18 16:00:06 2019 +0100 util/find-docs-nits: Extend to handle internal documentation While we're at it, we also check for names that contain white-space, as they are invalid. Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8269) ----------------------------------------------------------------------- Summary of changes: util/find-doc-nits | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/util/find-doc-nits b/util/find-doc-nits index d722d3c..a8cea9c 100755 --- a/util/find-doc-nits +++ b/util/find-doc-nits @@ -68,7 +68,6 @@ sub name_synopsis() $tmp =~ s/ -.*//g; $tmp =~ s/ */ /g; print "$id missing comma in NAME\n" if $tmp =~ /[^,] /; - $tmp =~ s/,//g; my $dirname = dirname($filename); my $simplename = basename($filename); @@ -76,7 +75,11 @@ sub name_synopsis() my $foundfilename = 0; my %foundfilenames = (); my %names; - foreach my $n ( split ' ', $tmp ) { + foreach my $n ( split ',', $tmp ) { + $n =~ s/^\s+//; + $n =~ s/\s+$//; + print "$id the name '$n' contains white-space\n" + if $n =~ /\s/; $names{$n} = 1; $foundfilename++ if $n eq $simplename; $foundfilenames{$n} = 1 @@ -99,6 +102,7 @@ sub name_synopsis() next unless $line =~ /^\s/; my $sym; $line =~ s/STACK_OF\([^)]+\)/int/g; + $line =~ s/SPARSE_ARRAY_OF\([^)]+\)/int/g; $line =~ s/__declspec\([^)]+\)//; if ( $line =~ /env (\S*)=/ ) { # environment variable env NAME=... @@ -247,7 +251,7 @@ sub parsenum() return sort @apis; } -sub getdocced() +sub getdocced { my $dir = shift; my %return; @@ -349,13 +353,16 @@ sub collectnames { $tmp =~ tr/\n/ /; $tmp =~ s/-.*//g; - my @names = map { s/\s+//g; $_ } split(/,/, $tmp); + my @names = map { s/^\s+//g; s/\s+$//g; $_ } split(/,/, $tmp); unless (grep { $simplename eq $_ } @names) { print "$id missing $simplename\n"; push @names, $simplename; } foreach my $name (@names) { next if $name eq ""; + if ($name =~ /\s/) { + print "$id '$name' contains white space\n"; + } my $name_sec = "$name($section)"; if (! exists $name_collection{$name_sec}) { $name_collection{$name_sec} = $filename; @@ -524,7 +531,8 @@ if ( $opt_c ) { } if ( $opt_l ) { - foreach (@ARGV ? @ARGV : glob('doc/*/*.pod')) { + foreach (@ARGV ? @ARGV : (glob('doc/*/*.pod'), + glob('doc/internal/*/*.pod'))) { collectnames($_); } checklinks(); @@ -535,10 +543,16 @@ if ( $opt_n ) { foreach (@ARGV ? @ARGV : glob('doc/*/*.pod')) { &check($_); } + { + local $opt_p = undef; + foreach (@ARGV ? @ARGV : glob('doc/internal/*/*.pod')) { + &check($_); + } + } } if ( $opt_u ) { - my %temp = &getdocced('doc/man3'); + my %temp = getdocced('doc/man3'); foreach ( keys %temp ) { $docced{$_} = $temp{$_}; } From builds at travis-ci.org Mon Feb 18 21:48:05 2019 From: builds at travis-ci.org (Travis CI) Date: Mon, 18 Feb 2019 21:48:05 +0000 Subject: Still Failing: openssl/openssl#23228 (master - 4460ad9) In-Reply-To: Message-ID: <5c6b28141ec73_43fae723745783803ad@73e51afa-ef7e-4b21-af76-a6805121fa19.mail> Build Update for openssl/openssl ------------------------------------- Build: #23228 Status: Still Failing Duration: 17 mins and 7 secs Commit: 4460ad9 (master) Author: Richard Levitte Message: util/find-docs-nits: Recognise SPARSE_ARRAY_OF Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8269) View the changeset: https://github.com/openssl/openssl/compare/9b57e4a1ef35...4460ad90af03 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/495128334?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From pauli at openssl.org Tue Feb 19 08:37:59 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Tue, 19 Feb 2019 08:37:59 +0000 Subject: [openssl] master update Message-ID: <1550565479.525586.25078.nullmailer@dev.openssl.org> The branch master has been updated via 4e1819a9a6abe43a8923c227c85b287f87224bad (commit) from 4460ad90af0338abe31286f29b36baf2e41abf19 (commit) - Log ----------------------------------------------------------------- commit 4e1819a9a6abe43a8923c227c85b287f87224bad Author: Pauli Date: Tue Feb 19 11:48:51 2019 +1000 Fix a test ordering issue. A randomised order causes failure due to unintentional dependencies between two of the test cases. [extended tests] Reviewed-by: Matthias St. Pierre (Merged from https://github.com/openssl/openssl/pull/8279) ----------------------------------------------------------------------- Summary of changes: test/property_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/property_test.c b/test/property_test.c index ac1a8f7..722de05 100644 --- a/test/property_test.c +++ b/test/property_test.c @@ -45,7 +45,7 @@ static int test_property_string(void) && TEST_int_ne(i, j) && TEST_int_eq(ossl_property_value("yes", 1), j) && TEST_int_eq(ossl_property_value("no", 1), i) - && TEST_int_ne(i = ossl_property_value("green", 1), 0) + && TEST_int_ne(i = ossl_property_value("illuminati", 1), 0) && TEST_int_eq(j = ossl_property_value("fnord", 1), i + 1) && TEST_int_eq(ossl_property_value("fnord", 1), j) /* Check name and values are distinct */ From levitte at openssl.org Tue Feb 19 08:39:37 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 19 Feb 2019 08:39:37 +0000 Subject: [openssl] OpenSSL_1_0_2-stable update Message-ID: <1550565577.359644.26600.nullmailer@dev.openssl.org> The branch OpenSSL_1_0_2-stable has been updated via e30dfbebe7fa3af40fd840fc89b004376fc2b21f (commit) from 3077dd40588e1ff5b7a1fda87ba845c291bb8055 (commit) - Log ----------------------------------------------------------------- commit e30dfbebe7fa3af40fd840fc89b004376fc2b21f Author: Richard Levitte Date: Mon Feb 18 21:47:33 2019 +0100 Move stray POD file into the fold Reviewed-by: Matthias St. Pierre (Merged from https://github.com/openssl/openssl/pull/8273) ----------------------------------------------------------------------- Summary of changes: doc/{man3 => crypto}/X509_cmp_time.pod | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/{man3 => crypto}/X509_cmp_time.pod (100%) diff --git a/doc/man3/X509_cmp_time.pod b/doc/crypto/X509_cmp_time.pod similarity index 100% rename from doc/man3/X509_cmp_time.pod rename to doc/crypto/X509_cmp_time.pod From levitte at openssl.org Tue Feb 19 08:41:14 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 19 Feb 2019 08:41:14 +0000 Subject: [openssl] master update Message-ID: <1550565674.647731.10022.nullmailer@dev.openssl.org> The branch master has been updated via 4ce738d083a377e0788e5d6cf92e3756d436b2f4 (commit) from 4e1819a9a6abe43a8923c227c85b287f87224bad (commit) - Log ----------------------------------------------------------------- commit 4ce738d083a377e0788e5d6cf92e3756d436b2f4 Author: Richard Levitte Date: Mon Feb 18 16:28:00 2019 +0100 Fixup internal documentation There were some faults that got caught by the updated doc-nits Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8270) ----------------------------------------------------------------------- Summary of changes: doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod | 2 ++ doc/internal/man3/OSSL_METHOD_STORE.pod | 7 ++++--- doc/internal/man3/openssl_ctx_get_data.pod | 7 +------ 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod b/doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod index 099f7a6..c36472a 100644 --- a/doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod +++ b/doc/internal/man3/DEFINE_SPARSE_ARRAY_OF.pod @@ -9,6 +9,8 @@ ossl_sa_TYPE_doall_arg, ossl_sa_TYPE_get, ossl_sa_TYPE_set =head1 SYNOPSIS +=for comment generic + #include "internal/sparse_array.h" typedef struct sparse_array_st OPENSSL_SA; diff --git a/doc/internal/man3/OSSL_METHOD_STORE.pod b/doc/internal/man3/OSSL_METHOD_STORE.pod index 70a3195..25cf56e 100644 --- a/doc/internal/man3/OSSL_METHOD_STORE.pod +++ b/doc/internal/man3/OSSL_METHOD_STORE.pod @@ -2,9 +2,10 @@ =head1 NAME -ossl_method_store_new, ossl_method_store_free, ossl_method_store_init, -ossl_method_store_cleanup, ossl_method_store_add, ossl_method_store_remove, -ossl_method_store_fetch, ossl_method_store_set_global_properties, +OSSL_METHOD_STORE, ossl_method_store_new, ossl_method_store_free, +ossl_method_store_init, ossl_method_store_cleanup, +ossl_method_store_add, ossl_method_store_remove, ossl_method_store_fetch, +ossl_method_store_set_global_properties, ossl_method_store_cache_get, ossl_method_store_cache_set - implementation method store and query diff --git a/doc/internal/man3/openssl_ctx_get_data.pod b/doc/internal/man3/openssl_ctx_get_data.pod index b2613bd..ee98dc2 100644 --- a/doc/internal/man3/openssl_ctx_get_data.pod +++ b/doc/internal/man3/openssl_ctx_get_data.pod @@ -2,18 +2,13 @@ =head1 NAME -openssl_ctx_new_index, openssl_ctx_free_index, -openssl_ctx_new_fn, openssl_ctx_free_fn, -openssl_ctx_set_data, openssl_ctx_get_data - internal OPENSSL_CTX routines +openssl_ctx_new_index, openssl_ctx_get_data - internal OPENSSL_CTX routines =head1 SYNOPSIS #include #include "internal/cryptlib.h" - typedef CRYPTO_EX_new openssl_ctx_new_fn; - typedef CRYPTO_EX_free openssl_ctx_free_fn; - typedef struct openssl_ctx_method { void *(*new_func)(void); void (*free_func)(void *); From builds at travis-ci.org Tue Feb 19 08:57:07 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 19 Feb 2019 08:57:07 +0000 Subject: Still Failing: openssl/openssl#23240 (master - 4e1819a) In-Reply-To: Message-ID: <5c6bc4e32d342_43fdcb98b97fc2015a@4cb7e945-c2b0-451c-89e5-2958a39627aa.mail> Build Update for openssl/openssl ------------------------------------- Build: #23240 Status: Still Failing Duration: 18 mins and 15 secs Commit: 4e1819a (master) Author: Pauli Message: Fix a test ordering issue. A randomised order causes failure due to unintentional dependencies between two of the test cases. [extended tests] Reviewed-by: Matthias St. Pierre (Merged from https://github.com/openssl/openssl/pull/8279) View the changeset: https://github.com/openssl/openssl/compare/4460ad90af03...4e1819a9a6ab View the full build log and details: https://travis-ci.org/openssl/openssl/builds/495336961?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From builds at travis-ci.org Tue Feb 19 09:12:02 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 19 Feb 2019 09:12:02 +0000 Subject: Fixed: openssl/openssl#23242 (master - 4ce738d) In-Reply-To: Message-ID: <5c6bc862793dc_43fb6ac609f6c13129e@b411b60a-960c-49e1-b978-40d173b6a240.mail> Build Update for openssl/openssl ------------------------------------- Build: #23242 Status: Fixed Duration: 21 mins and 56 secs Commit: 4ce738d (master) Author: Richard Levitte Message: Fixup internal documentation There were some faults that got caught by the updated doc-nits Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8270) View the changeset: https://github.com/openssl/openssl/compare/4e1819a9a6ab...4ce738d083a3 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/495338187?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From matt at openssl.org Tue Feb 19 09:41:49 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 19 Feb 2019 09:41:49 +0000 Subject: [openssl] master update Message-ID: <1550569309.394752.26556.nullmailer@dev.openssl.org> The branch master has been updated via 73e62d40eb53f2bad98dea0083c217dbfad1a335 (commit) via 3d35e3a253a2895f263333bb4355760630a31955 (commit) from 4ce738d083a377e0788e5d6cf92e3756d436b2f4 (commit) - Log ----------------------------------------------------------------- commit 73e62d40eb53f2bad98dea0083c217dbfad1a335 Author: Matt Caswell Date: Fri Feb 8 17:25:58 2019 +0000 Add a test for interleaving app data with handshake data in TLSv1.3 Reviewed-by: Ben Kaduk (Merged from https://github.com/openssl/openssl/pull/8191) commit 3d35e3a253a2895f263333bb4355760630a31955 Author: Matt Caswell Date: Fri Feb 8 16:36:32 2019 +0000 Don't interleave handshake and other record types in TLSv1.3 In TLSv1.3 it is illegal to interleave handshake records with non handshake records. Fixes #8189 Reviewed-by: Ben Kaduk (Merged from https://github.com/openssl/openssl/pull/8191) ----------------------------------------------------------------------- Summary of changes: crypto/err/openssl.txt | 2 + include/openssl/sslerr.h | 3 +- ssl/record/rec_layer_s3.c | 8 +++ ssl/ssl_err.c | 4 +- test/recipes/70-test_sslrecords.t | 102 +++++++++++++++++++++++++++++++++++--- 5 files changed, 111 insertions(+), 8 deletions(-) diff --git a/crypto/err/openssl.txt b/crypto/err/openssl.txt index e944b57..82c33f0 100644 --- a/crypto/err/openssl.txt +++ b/crypto/err/openssl.txt @@ -2796,6 +2796,8 @@ SSL_R_MISSING_SRP_PARAM:358:can't find SRP server param SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION:209:missing supported groups extension SSL_R_MISSING_TMP_DH_KEY:171:missing tmp dh key SSL_R_MISSING_TMP_ECDH_KEY:311:missing tmp ecdh key +SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA:293:\ + mixed handshake and non handshake data SSL_R_NOT_ON_RECORD_BOUNDARY:182:not on record boundary SSL_R_NOT_REPLACING_CERTIFICATE:289:not replacing certificate SSL_R_NOT_SERVER:284:not server diff --git a/include/openssl/sslerr.h b/include/openssl/sslerr.h index f878371..6305751 100644 --- a/include/openssl/sslerr.h +++ b/include/openssl/sslerr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -596,6 +596,7 @@ int ERR_load_SSL_strings(void); # define SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION 209 # define SSL_R_MISSING_TMP_DH_KEY 171 # define SSL_R_MISSING_TMP_ECDH_KEY 311 +# define SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA 293 # define SSL_R_NOT_ON_RECORD_BOUNDARY 182 # define SSL_R_NOT_REPLACING_CERTIFICATE 289 # define SSL_R_NOT_SERVER 284 diff --git a/ssl/record/rec_layer_s3.c b/ssl/record/rec_layer_s3.c index 2f5987b..feca76e 100644 --- a/ssl/record/rec_layer_s3.c +++ b/ssl/record/rec_layer_s3.c @@ -1363,6 +1363,14 @@ int ssl3_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf, } while (num_recs == 0); rr = &rr[curr_rec]; + if (s->rlayer.handshake_fragment_len > 0 + && SSL3_RECORD_get_type(rr) != SSL3_RT_HANDSHAKE + && SSL_IS_TLS13(s)) { + SSLfatal(s, SSL_AD_UNEXPECTED_MESSAGE, SSL_F_SSL3_READ_BYTES, + SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA); + return -1; + } + /* * Reset the count of consecutive warning alerts if we've got a non-empty * record that isn't an alert. diff --git a/ssl/ssl_err.c b/ssl/ssl_err.c index 7b06878..ceae87b 100644 --- a/ssl/ssl_err.c +++ b/ssl/ssl_err.c @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -965,6 +965,8 @@ static const ERR_STRING_DATA SSL_str_reasons[] = { {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_MISSING_TMP_DH_KEY), "missing tmp dh key"}, {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_MISSING_TMP_ECDH_KEY), "missing tmp ecdh key"}, + {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA), + "mixed handshake and non handshake data"}, {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_NOT_ON_RECORD_BOUNDARY), "not on record boundary"}, {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_NOT_REPLACING_CERTIFICATE), diff --git a/test/recipes/70-test_sslrecords.t b/test/recipes/70-test_sslrecords.t index 0e38308..b0ad026 100644 --- a/test/recipes/70-test_sslrecords.t +++ b/test/recipes/70-test_sslrecords.t @@ -44,7 +44,7 @@ my $content_type = TLSProxy::Record::RT_APPLICATION_DATA; my $inject_recs_num = 1; $proxy->serverflags("-tls1_2"); $proxy->start() or plan skip_all => "Unable to start up Proxy for tests"; -plan tests => 18; +plan tests => 20; ok($fatal_alert, "Out of context empty records test"); #Test 2: Injecting in context empty records should succeed @@ -155,7 +155,7 @@ ok($fatal_alert, "Changed record version in TLS1.2"); #TLS1.3 specific tests SKIP: { - skip "TLSv1.3 disabled", 6 if disabled("tls1_3"); + skip "TLSv1.3 disabled", 8 if disabled("tls1_3"); #Test 13: Sending a different record version in TLS1.3 should fail $proxy->clear(); @@ -181,7 +181,9 @@ SKIP: { use constant { DATA_AFTER_SERVER_HELLO => 0, DATA_AFTER_FINISHED => 1, - DATA_AFTER_KEY_UPDATE => 2 + DATA_AFTER_KEY_UPDATE => 2, + DATA_BETWEEN_KEY_UPDATE => 3, + NO_DATA_BETWEEN_KEY_UPDATE => 4, }; #Test 16: Sending a ServerHello which doesn't end on a record boundary @@ -198,7 +200,6 @@ SKIP: { $fatal_alert = 0; $proxy->clear(); $boundary_test_type = DATA_AFTER_FINISHED; - $proxy->filter(\¬_on_record_boundary); $proxy->start(); ok($fatal_alert, "Record not on boundary in TLS1.3 (Finished)"); @@ -207,9 +208,24 @@ SKIP: { $fatal_alert = 0; $proxy->clear(); $boundary_test_type = DATA_AFTER_KEY_UPDATE; - $proxy->filter(\¬_on_record_boundary); $proxy->start(); ok($fatal_alert, "Record not on boundary in TLS1.3 (KeyUpdate)"); + + #Test 19: Sending application data in the middle of a fragmented KeyUpdate + # should fail. Strictly speaking this is not a record boundary test + # but we use the same filter. + $fatal_alert = 0; + $proxy->clear(); + $boundary_test_type = DATA_BETWEEN_KEY_UPDATE; + $proxy->start(); + ok($fatal_alert, "Data between KeyUpdate"); + + #Test 20: Fragmented KeyUpdate. This should succeed. Strictly speaking this + # is not a record boundary test but we use the same filter. + $proxy->clear(); + $boundary_test_type = NO_DATA_BETWEEN_KEY_UPDATE; + $proxy->start(); + ok(TLSProxy::Message->success(), "No data between KeyUpdate"); } @@ -573,7 +589,7 @@ sub not_on_record_boundary #Update the record $last_record->data($data); $last_record->len(length $data); - } else { + } elsif ($boundary_test_type == DATA_AFTER_KEY_UPDATE) { return if @{$proxy->{message_list}}[-1]->{mt} != TLSProxy::Message::MT_FINISHED; @@ -605,5 +621,79 @@ sub not_on_record_boundary $record->data($data); $record->len(length $data); push @{$records}, $record; + } else { + return if @{$proxy->{message_list}}[-1]->{mt} + != TLSProxy::Message::MT_FINISHED; + + my $record = TLSProxy::Record->new( + 1, + TLSProxy::Record::RT_APPLICATION_DATA, + TLSProxy::Record::VERS_TLS_1_2, + 0, + 0, + 0, + 0, + "", + "" + ); + + #Add a partial KeyUpdate message into the record + $data = pack "C1", + 0x18; # KeyUpdate message type. Omit the rest of the message header + + #Add content type and tag + $data .= pack("C", TLSProxy::Record::RT_HANDSHAKE).("\0"x16); + + $record->data($data); + $record->len(length $data); + push @{$records}, $record; + + if ($boundary_test_type == DATA_BETWEEN_KEY_UPDATE) { + #Now add an app data record + $record = TLSProxy::Record->new( + 1, + TLSProxy::Record::RT_APPLICATION_DATA, + TLSProxy::Record::VERS_TLS_1_2, + 0, + 0, + 0, + 0, + "", + "" + ); + + #Add an empty app data record (just content type and tag) + $data = pack("C", TLSProxy::Record::RT_APPLICATION_DATA).("\0"x16); + + $record->data($data); + $record->len(length $data); + push @{$records}, $record; + } + + #Now add the rest of the KeyUpdate message + $record = TLSProxy::Record->new( + 1, + TLSProxy::Record::RT_APPLICATION_DATA, + TLSProxy::Record::VERS_TLS_1_2, + 0, + 0, + 0, + 0, + "", + "" + ); + + #Add the last 4 bytes of the KeyUpdate record + $data = pack "C4", + 0x00, 0x00, 0x01, # Message length + 0x00; # Update not requested + + #Add content type and tag + $data .= pack("C", TLSProxy::Record::RT_HANDSHAKE).("\0"x16); + + $record->data($data); + $record->len(length $data); + push @{$records}, $record; + } } From matt at openssl.org Tue Feb 19 09:42:00 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 19 Feb 2019 09:42:00 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550569320.343351.27517.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 15c1e0a7cb27dd605716e6a65bc17590caabcfb3 (commit) via 8f6567dfd731ee8904c8f58ba8e5044953766963 (commit) from a81cc6e8a240b27d0e0e6404dd29970375a4f5fc (commit) - Log ----------------------------------------------------------------- commit 15c1e0a7cb27dd605716e6a65bc17590caabcfb3 Author: Matt Caswell Date: Fri Feb 8 17:25:58 2019 +0000 Add a test for interleaving app data with handshake data in TLSv1.3 Reviewed-by: Ben Kaduk (Merged from https://github.com/openssl/openssl/pull/8191) (cherry picked from commit 73e62d40eb53f2bad98dea0083c217dbfad1a335) commit 8f6567dfd731ee8904c8f58ba8e5044953766963 Author: Matt Caswell Date: Fri Feb 8 16:36:32 2019 +0000 Don't interleave handshake and other record types in TLSv1.3 In TLSv1.3 it is illegal to interleave handshake records with non handshake records. Fixes #8189 Reviewed-by: Ben Kaduk (Merged from https://github.com/openssl/openssl/pull/8191) (cherry picked from commit 3d35e3a253a2895f263333bb4355760630a31955) ----------------------------------------------------------------------- Summary of changes: crypto/err/openssl.txt | 2 + include/openssl/sslerr.h | 3 +- ssl/record/rec_layer_s3.c | 8 +++ ssl/ssl_err.c | 4 +- test/recipes/70-test_sslrecords.t | 102 +++++++++++++++++++++++++++++++++++--- 5 files changed, 111 insertions(+), 8 deletions(-) diff --git a/crypto/err/openssl.txt b/crypto/err/openssl.txt index 3cf32a4..3864bf9 100644 --- a/crypto/err/openssl.txt +++ b/crypto/err/openssl.txt @@ -2723,6 +2723,8 @@ SSL_R_MISSING_SRP_PARAM:358:can't find SRP server param SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION:209:missing supported groups extension SSL_R_MISSING_TMP_DH_KEY:171:missing tmp dh key SSL_R_MISSING_TMP_ECDH_KEY:311:missing tmp ecdh key +SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA:293:\ + mixed handshake and non handshake data SSL_R_NOT_ON_RECORD_BOUNDARY:182:not on record boundary SSL_R_NOT_REPLACING_CERTIFICATE:289:not replacing certificate SSL_R_NOT_SERVER:284:not server diff --git a/include/openssl/sslerr.h b/include/openssl/sslerr.h index 87b295c..a50a075 100644 --- a/include/openssl/sslerr.h +++ b/include/openssl/sslerr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 @@ -596,6 +596,7 @@ int ERR_load_SSL_strings(void); # define SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION 209 # define SSL_R_MISSING_TMP_DH_KEY 171 # define SSL_R_MISSING_TMP_ECDH_KEY 311 +# define SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA 293 # define SSL_R_NOT_ON_RECORD_BOUNDARY 182 # define SSL_R_NOT_REPLACING_CERTIFICATE 289 # define SSL_R_NOT_SERVER 284 diff --git a/ssl/record/rec_layer_s3.c b/ssl/record/rec_layer_s3.c index 6d49571..a275300 100644 --- a/ssl/record/rec_layer_s3.c +++ b/ssl/record/rec_layer_s3.c @@ -1315,6 +1315,14 @@ int ssl3_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf, } while (num_recs == 0); rr = &rr[curr_rec]; + if (s->rlayer.handshake_fragment_len > 0 + && SSL3_RECORD_get_type(rr) != SSL3_RT_HANDSHAKE + && SSL_IS_TLS13(s)) { + SSLfatal(s, SSL_AD_UNEXPECTED_MESSAGE, SSL_F_SSL3_READ_BYTES, + SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA); + return -1; + } + /* * Reset the count of consecutive warning alerts if we've got a non-empty * record that isn't an alert. diff --git a/ssl/ssl_err.c b/ssl/ssl_err.c index 11331ce..4b12ed1 100644 --- a/ssl/ssl_err.c +++ b/ssl/ssl_err.c @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 @@ -965,6 +965,8 @@ static const ERR_STRING_DATA SSL_str_reasons[] = { {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_MISSING_TMP_DH_KEY), "missing tmp dh key"}, {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_MISSING_TMP_ECDH_KEY), "missing tmp ecdh key"}, + {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA), + "mixed handshake and non handshake data"}, {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_NOT_ON_RECORD_BOUNDARY), "not on record boundary"}, {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_NOT_REPLACING_CERTIFICATE), diff --git a/test/recipes/70-test_sslrecords.t b/test/recipes/70-test_sslrecords.t index 1233028..2dc2833 100644 --- a/test/recipes/70-test_sslrecords.t +++ b/test/recipes/70-test_sslrecords.t @@ -44,7 +44,7 @@ my $content_type = TLSProxy::Record::RT_APPLICATION_DATA; my $inject_recs_num = 1; $proxy->serverflags("-tls1_2"); $proxy->start() or plan skip_all => "Unable to start up Proxy for tests"; -plan tests => 18; +plan tests => 20; ok($fatal_alert, "Out of context empty records test"); #Test 2: Injecting in context empty records should succeed @@ -155,7 +155,7 @@ ok($fatal_alert, "Changed record version in TLS1.2"); #TLS1.3 specific tests SKIP: { - skip "TLSv1.3 disabled", 6 if disabled("tls1_3"); + skip "TLSv1.3 disabled", 8 if disabled("tls1_3"); #Test 13: Sending a different record version in TLS1.3 should fail $proxy->clear(); @@ -181,7 +181,9 @@ SKIP: { use constant { DATA_AFTER_SERVER_HELLO => 0, DATA_AFTER_FINISHED => 1, - DATA_AFTER_KEY_UPDATE => 2 + DATA_AFTER_KEY_UPDATE => 2, + DATA_BETWEEN_KEY_UPDATE => 3, + NO_DATA_BETWEEN_KEY_UPDATE => 4, }; #Test 16: Sending a ServerHello which doesn't end on a record boundary @@ -198,7 +200,6 @@ SKIP: { $fatal_alert = 0; $proxy->clear(); $boundary_test_type = DATA_AFTER_FINISHED; - $proxy->filter(\¬_on_record_boundary); $proxy->start(); ok($fatal_alert, "Record not on boundary in TLS1.3 (Finished)"); @@ -207,9 +208,24 @@ SKIP: { $fatal_alert = 0; $proxy->clear(); $boundary_test_type = DATA_AFTER_KEY_UPDATE; - $proxy->filter(\¬_on_record_boundary); $proxy->start(); ok($fatal_alert, "Record not on boundary in TLS1.3 (KeyUpdate)"); + + #Test 19: Sending application data in the middle of a fragmented KeyUpdate + # should fail. Strictly speaking this is not a record boundary test + # but we use the same filter. + $fatal_alert = 0; + $proxy->clear(); + $boundary_test_type = DATA_BETWEEN_KEY_UPDATE; + $proxy->start(); + ok($fatal_alert, "Data between KeyUpdate"); + + #Test 20: Fragmented KeyUpdate. This should succeed. Strictly speaking this + # is not a record boundary test but we use the same filter. + $proxy->clear(); + $boundary_test_type = NO_DATA_BETWEEN_KEY_UPDATE; + $proxy->start(); + ok(TLSProxy::Message->success(), "No data between KeyUpdate"); } @@ -573,7 +589,7 @@ sub not_on_record_boundary #Update the record $last_record->data($data); $last_record->len(length $data); - } else { + } elsif ($boundary_test_type == DATA_AFTER_KEY_UPDATE) { return if @{$proxy->{message_list}}[-1]->{mt} != TLSProxy::Message::MT_FINISHED; @@ -605,5 +621,79 @@ sub not_on_record_boundary $record->data($data); $record->len(length $data); push @{$records}, $record; + } else { + return if @{$proxy->{message_list}}[-1]->{mt} + != TLSProxy::Message::MT_FINISHED; + + my $record = TLSProxy::Record->new( + 1, + TLSProxy::Record::RT_APPLICATION_DATA, + TLSProxy::Record::VERS_TLS_1_2, + 0, + 0, + 0, + 0, + "", + "" + ); + + #Add a partial KeyUpdate message into the record + $data = pack "C1", + 0x18; # KeyUpdate message type. Omit the rest of the message header + + #Add content type and tag + $data .= pack("C", TLSProxy::Record::RT_HANDSHAKE).("\0"x16); + + $record->data($data); + $record->len(length $data); + push @{$records}, $record; + + if ($boundary_test_type == DATA_BETWEEN_KEY_UPDATE) { + #Now add an app data record + $record = TLSProxy::Record->new( + 1, + TLSProxy::Record::RT_APPLICATION_DATA, + TLSProxy::Record::VERS_TLS_1_2, + 0, + 0, + 0, + 0, + "", + "" + ); + + #Add an empty app data record (just content type and tag) + $data = pack("C", TLSProxy::Record::RT_APPLICATION_DATA).("\0"x16); + + $record->data($data); + $record->len(length $data); + push @{$records}, $record; + } + + #Now add the rest of the KeyUpdate message + $record = TLSProxy::Record->new( + 1, + TLSProxy::Record::RT_APPLICATION_DATA, + TLSProxy::Record::VERS_TLS_1_2, + 0, + 0, + 0, + 0, + "", + "" + ); + + #Add the last 4 bytes of the KeyUpdate record + $data = pack "C4", + 0x00, 0x00, 0x01, # Message length + 0x00; # Update not requested + + #Add content type and tag + $data .= pack("C", TLSProxy::Record::RT_HANDSHAKE).("\0"x16); + + $record->data($data); + $record->len(length $data); + push @{$records}, $record; + } } From builds at travis-ci.org Tue Feb 19 10:02:43 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 19 Feb 2019 10:02:43 +0000 Subject: Broken: openssl/openssl#23245 (master - 73e62d4) In-Reply-To: Message-ID: <5c6bd44393edf_43fa91c218b1c1119af@68eea62c-2cf9-4717-aa26-8bb6fd87b004.mail> Build Update for openssl/openssl ------------------------------------- Build: #23245 Status: Broken Duration: 20 mins and 9 secs Commit: 73e62d4 (master) Author: Matt Caswell Message: Add a test for interleaving app data with handshake data in TLSv1.3 Reviewed-by: Ben Kaduk (Merged from https://github.com/openssl/openssl/pull/8191) View the changeset: https://github.com/openssl/openssl/compare/4ce738d083a3...73e62d40eb53 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/495361596?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From levitte at openssl.org Tue Feb 19 15:36:13 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 19 Feb 2019 15:36:13 +0000 Subject: [openssl] master update Message-ID: <1550590573.489445.8959.nullmailer@dev.openssl.org> The branch master has been updated via c1b3846242fc1a7791beca42f548c325c35e269b (commit) from 73e62d40eb53f2bad98dea0083c217dbfad1a335 (commit) - Log ----------------------------------------------------------------- commit c1b3846242fc1a7791beca42f548c325c35e269b Author: Matthias Kraft Date: Tue Feb 19 13:22:35 2019 +0100 Fix reference to symbol 'main'. The AIX binder needs to be instructed that the output will have no entry point (see AIX' ld manual: -e in the Flags section; autoexp and noentry in the Binder section). Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8282) ----------------------------------------------------------------------- Summary of changes: Configurations/10-main.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf index 1e49118..8b758a0 100644 --- a/Configurations/10-main.conf +++ b/Configurations/10-main.conf @@ -1098,7 +1098,7 @@ my %targets = ( dso_scheme => "dlfcn", shared_target => "aix", module_ldflags => "-Wl,-G,-bsymbolic,-bexpall", - shared_ldflag => "-Wl,-G,-bsymbolic", + shared_ldflag => "-Wl,-G,-bsymbolic,-bnoentry", shared_defflag => "-Wl,-bE:", perl_platform => 'AIX', }, From levitte at openssl.org Tue Feb 19 15:36:46 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 19 Feb 2019 15:36:46 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550590606.819839.9971.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 663dc8c133e102950af9ad907fc19e123aabdc76 (commit) from 15c1e0a7cb27dd605716e6a65bc17590caabcfb3 (commit) - Log ----------------------------------------------------------------- commit 663dc8c133e102950af9ad907fc19e123aabdc76 Author: Matthias Kraft Date: Tue Feb 19 13:22:35 2019 +0100 Fix reference to symbol 'main'. The AIX binder needs to be instructed that the output will have no entry point (see AIX' ld manual: -e in the Flags section; autoexp and noentry in the Binder section). Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8282) (cherry picked from commit c1b3846242fc1a7791beca42f548c325c35e269b) ----------------------------------------------------------------------- Summary of changes: Configurations/10-main.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf index 28b63be..930f2d3 100644 --- a/Configurations/10-main.conf +++ b/Configurations/10-main.conf @@ -1112,7 +1112,7 @@ my %targets = ( dso_scheme => "dlfcn", shared_target => "self", module_ldflags => "-Wl,-G,-bsymbolic,-bexpall", - shared_ldflag => "-Wl,-G,-bsymbolic", + shared_ldflag => "-Wl,-G,-bsymbolic,-bnoentry", shared_defflag => "-Wl,-bE:", shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)", dso_extension => ".so", From builds at travis-ci.org Tue Feb 19 15:57:55 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 19 Feb 2019 15:57:55 +0000 Subject: Fixed: openssl/openssl#23257 (master - c1b3846) In-Reply-To: Message-ID: <5c6c27833f10a_43fc51770acd01935ce@4a4623a7-0243-4f20-9297-accab4656474.mail> Build Update for openssl/openssl ------------------------------------- Build: #23257 Status: Fixed Duration: 20 mins and 49 secs Commit: c1b3846 (master) Author: Matthias Kraft Message: Fix reference to symbol 'main'. The AIX binder needs to be instructed that the output will have no entry point (see AIX' ld manual: -e in the Flags section; autoexp and noentry in the Binder section). Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8282) View the changeset: https://github.com/openssl/openssl/compare/73e62d40eb53...c1b3846242fc View the full build log and details: https://travis-ci.org/openssl/openssl/builds/495523371?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From matt at openssl.org Tue Feb 19 17:36:40 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 19 Feb 2019 17:36:40 +0000 Subject: [openssl] master update Message-ID: <1550597800.878303.26209.nullmailer@dev.openssl.org> The branch master has been updated via 8e981051ceecd10754f8f6d1291414a7453c8fac (commit) from c1b3846242fc1a7791beca42f548c325c35e269b (commit) - Log ----------------------------------------------------------------- commit 8e981051ceecd10754f8f6d1291414a7453c8fac Author: Ionut Mihalcea Date: Wed Feb 6 21:09:15 2019 +0000 Don't set SNI by default if hostname is not dNS name Reviewed-by: Ben Kaduk Reviewed-by: Viktor Dukhovni Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8175) ----------------------------------------------------------------------- Summary of changes: apps/s_client.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++--- doc/man1/s_client.pod | 19 +++++++------ 2 files changed, 83 insertions(+), 12 deletions(-) diff --git a/apps/s_client.c b/apps/s_client.c index a30dff4..687e755 100644 --- a/apps/s_client.c +++ b/apps/s_client.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright 2005 Nokia. All rights reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -75,6 +75,7 @@ static int ocsp_resp_cb(SSL *s, void *arg); #endif static int ldap_ExtendedResponse_parse(const char *buf, long rem); static char *base64encode (const void *buf, size_t len); +static int is_dNS_name(const char *host); static int saved_errno; @@ -2013,9 +2014,11 @@ int s_client_main(int argc, char **argv) SSL_set_mode(con, SSL_MODE_SEND_FALLBACK_SCSV); if (!noservername && (servername != NULL || dane_tlsa_domain == NULL)) { - if (servername == NULL) - servername = (host == NULL) ? "localhost" : host; - if (!SSL_set_tlsext_host_name(con, servername)) { + if (servername == NULL) { + if(host == NULL || is_dNS_name(host)) + servername = (host == NULL) ? "localhost" : host; + } + if (servername != NULL && !SSL_set_tlsext_host_name(con, servername)) { BIO_printf(bio_err, "Unable to set TLS servername extension.\n"); ERR_print_errors(bio_err); goto end; @@ -3554,4 +3557,69 @@ static char *base64encode (const void *buf, size_t len) return out; } +/* + * Host dNS Name verifier: used for checking that the hostname is in dNS format + * before setting it as SNI + */ +static int is_dNS_name(const char *host) +{ + const size_t MAX_LABEL_LENGTH = 63; + size_t i; + int isdnsname = 0; + size_t length = strlen(host); + size_t label_length = 0; + int all_numeric = 1; + + /* + * Deviation from strict DNS name syntax, also check names with '_' + * Check DNS name syntax, any '-' or '.' must be internal, + * and on either side of each '.' we can't have a '-' or '.'. + * + * If the name has just one label, we don't consider it a DNS name. + */ + for (i = 0; i < length && label_length < MAX_LABEL_LENGTH; ++i) { + char c = host[i]; + + if ((c >= 'a' && c <= 'z') + || (c >= 'A' && c <= 'Z') + || c == '_') { + label_length += 1; + all_numeric = 0; + continue; + } + + if (c >= '0' && c <= '9') { + label_length += 1; + continue; + } + + /* Dot and hyphen cannot be first or last. */ + if (i > 0 && i < length - 1) { + if (c == '-') { + label_length += 1; + continue; + } + /* + * Next to a dot the preceding and following characters must not be + * another dot or a hyphen. Otherwise, record that the name is + * plausible, since it has two or more labels. + */ + if (c == '.' + && host[i + 1] != '.' + && host[i - 1] != '-' + && host[i + 1] != '-') { + label_length = 0; + isdnsname = 1; + continue; + } + } + isdnsname = 0; + break; + } + + /* dNS name must not be all numeric and labels must be shorter than 64 characters. */ + isdnsname &= !all_numeric && !(label_length == MAX_LABEL_LENGTH); + + return isdnsname; +} #endif /* OPENSSL_NO_SOCK */ diff --git a/doc/man1/s_client.pod b/doc/man1/s_client.pod index e16450b..c4a9843 100644 --- a/doc/man1/s_client.pod +++ b/doc/man1/s_client.pod @@ -208,14 +208,17 @@ Use IPv6 only. =item B<-servername name> Set the TLS SNI (Server Name Indication) extension in the ClientHello message to -the given value. If both this option and the B<-noservername> are not given, the -TLS SNI extension is still set to the hostname provided to the B<-connect> option, -or "localhost" if B<-connect> has not been supplied. This is default since OpenSSL -1.1.1. - -Even though SNI name should normally be a DNS name and not an IP address, this -option will not make the distinction when parsing B<-connect> and will send -IP address if one passed. +the given value. +If B<-servername> is not provided, the TLS SNI extension will be populated with +the name given to B<-connect> if it follows a DNS name format. If B<-connect> is +not provided either, the SNI is set to "localhost". +This is the default since OpenSSL 1.1.1. + +Even though SNI should normally be a DNS name and not an IP address, if +B<-servername> is provided then that name will be sent, regardless of whether +it is a DNS name or not. + +This option cannot be used in conjuction with B<-noservername>. =item B<-noservername> From matt at openssl.org Tue Feb 19 17:36:54 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 19 Feb 2019 17:36:54 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550597814.215079.27222.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 70fa3aa108320d15536228656b120d3e08de0e40 (commit) from 663dc8c133e102950af9ad907fc19e123aabdc76 (commit) - Log ----------------------------------------------------------------- commit 70fa3aa108320d15536228656b120d3e08de0e40 Author: Ionut Mihalcea Date: Wed Feb 6 21:09:15 2019 +0000 Don't set SNI by default if hostname is not dNS name Reviewed-by: Ben Kaduk Reviewed-by: Viktor Dukhovni Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8175) (cherry picked from commit 8e981051ceecd10754f8f6d1291414a7453c8fac) ----------------------------------------------------------------------- Summary of changes: apps/s_client.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++--- doc/man1/s_client.pod | 19 +++++++------ 2 files changed, 83 insertions(+), 12 deletions(-) diff --git a/apps/s_client.c b/apps/s_client.c index 4eb865a..4dd6e2f 100644 --- a/apps/s_client.c +++ b/apps/s_client.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright 2005 Nokia. All rights reserved. * * Licensed under the OpenSSL license (the "License"). You may not use @@ -74,6 +74,7 @@ static void print_stuff(BIO *berr, SSL *con, int full); static int ocsp_resp_cb(SSL *s, void *arg); #endif static int ldap_ExtendedResponse_parse(const char *buf, long rem); +static int is_dNS_name(const char *host); static int saved_errno; @@ -1991,9 +1992,11 @@ int s_client_main(int argc, char **argv) SSL_set_mode(con, SSL_MODE_SEND_FALLBACK_SCSV); if (!noservername && (servername != NULL || dane_tlsa_domain == NULL)) { - if (servername == NULL) - servername = (host == NULL) ? "localhost" : host; - if (!SSL_set_tlsext_host_name(con, servername)) { + if (servername == NULL) { + if(host == NULL || is_dNS_name(host)) + servername = (host == NULL) ? "localhost" : host; + } + if (servername != NULL && !SSL_set_tlsext_host_name(con, servername)) { BIO_printf(bio_err, "Unable to set TLS servername extension.\n"); ERR_print_errors(bio_err); goto end; @@ -3473,4 +3476,69 @@ static int ldap_ExtendedResponse_parse(const char *buf, long rem) return ret; } +/* + * Host dNS Name verifier: used for checking that the hostname is in dNS format + * before setting it as SNI + */ +static int is_dNS_name(const char *host) +{ + const size_t MAX_LABEL_LENGTH = 63; + size_t i; + int isdnsname = 0; + size_t length = strlen(host); + size_t label_length = 0; + int all_numeric = 1; + + /* + * Deviation from strict DNS name syntax, also check names with '_' + * Check DNS name syntax, any '-' or '.' must be internal, + * and on either side of each '.' we can't have a '-' or '.'. + * + * If the name has just one label, we don't consider it a DNS name. + */ + for (i = 0; i < length && label_length < MAX_LABEL_LENGTH; ++i) { + char c = host[i]; + + if ((c >= 'a' && c <= 'z') + || (c >= 'A' && c <= 'Z') + || c == '_') { + label_length += 1; + all_numeric = 0; + continue; + } + + if (c >= '0' && c <= '9') { + label_length += 1; + continue; + } + + /* Dot and hyphen cannot be first or last. */ + if (i > 0 && i < length - 1) { + if (c == '-') { + label_length += 1; + continue; + } + /* + * Next to a dot the preceding and following characters must not be + * another dot or a hyphen. Otherwise, record that the name is + * plausible, since it has two or more labels. + */ + if (c == '.' + && host[i + 1] != '.' + && host[i - 1] != '-' + && host[i + 1] != '-') { + label_length = 0; + isdnsname = 1; + continue; + } + } + isdnsname = 0; + break; + } + + /* dNS name must not be all numeric and labels must be shorter than 64 characters. */ + isdnsname &= !all_numeric && !(label_length == MAX_LABEL_LENGTH); + + return isdnsname; +} #endif /* OPENSSL_NO_SOCK */ diff --git a/doc/man1/s_client.pod b/doc/man1/s_client.pod index 58fe37a..0f54ee1 100644 --- a/doc/man1/s_client.pod +++ b/doc/man1/s_client.pod @@ -191,14 +191,17 @@ Use IPv6 only. =item B<-servername name> Set the TLS SNI (Server Name Indication) extension in the ClientHello message to -the given value. If both this option and the B<-noservername> are not given, the -TLS SNI extension is still set to the hostname provided to the B<-connect> option, -or "localhost" if B<-connect> has not been supplied. This is default since OpenSSL -1.1.1. - -Even though SNI name should normally be a DNS name and not an IP address, this -option will not make the distinction when parsing B<-connect> and will send -IP address if one passed. +the given value. +If B<-servername> is not provided, the TLS SNI extension will be populated with +the name given to B<-connect> if it follows a DNS name format. If B<-connect> is +not provided either, the SNI is set to "localhost". +This is the default since OpenSSL 1.1.1. + +Even though SNI should normally be a DNS name and not an IP address, if +B<-servername> is provided then that name will be sent, regardless of whether +it is a DNS name or not. + +This option cannot be used in conjuction with B<-noservername>. =item B<-noservername> From builds at travis-ci.org Tue Feb 19 17:55:40 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 19 Feb 2019 17:55:40 +0000 Subject: Broken: openssl/openssl#23260 (master - 8e98105) In-Reply-To: Message-ID: <5c6c431c7178c_43fa9c6588e144653a0@a78c3100-fb9f-4b31-92ac-9d78c35352cd.mail> Build Update for openssl/openssl ------------------------------------- Build: #23260 Status: Broken Duration: 18 mins and 14 secs Commit: 8e98105 (master) Author: Ionut Mihalcea Message: Don't set SNI by default if hostname is not dNS name Reviewed-by: Ben Kaduk Reviewed-by: Viktor Dukhovni Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8175) View the changeset: https://github.com/openssl/openssl/compare/c1b3846242fc...8e981051ceec View the full build log and details: https://travis-ci.org/openssl/openssl/builds/495584891?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From levitte at openssl.org Tue Feb 19 18:15:41 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 19 Feb 2019 18:15:41 +0000 Subject: [openssl] master update Message-ID: <1550600141.425359.14677.nullmailer@dev.openssl.org> The branch master has been updated via 7dec815ecde29c1eabed6b5832c7025c4eafad19 (commit) from 8e981051ceecd10754f8f6d1291414a7453c8fac (commit) - Log ----------------------------------------------------------------- commit 7dec815ecde29c1eabed6b5832c7025c4eafad19 Author: Andy Polyakov Date: Sun Feb 17 18:10:12 2019 +0100 sha/keccak1600.c: subscribe more platforms for "complementing" optimization. E.g. on MIPS64 it gives >20% improvement... Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8261) ----------------------------------------------------------------------- Summary of changes: crypto/sha/keccak1600.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/crypto/sha/keccak1600.c b/crypto/sha/keccak1600.c index c49c4b3..7aa0755 100644 --- a/crypto/sha/keccak1600.c +++ b/crypto/sha/keccak1600.c @@ -25,7 +25,14 @@ void SHA3_squeeze(uint64_t A[5][5], unsigned char *out, size_t len, size_t r); # define KECCAK_2X /* default to KECCAK_2X variant */ #endif -#if defined(__i386) || defined(__i386__) || defined(_M_IX86) +#if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ + (defined(__x86_64) && !defined(__BMI__)) || defined(_M_X64) || \ + defined(__mips) || defined(__riscv) || defined(__s390__) || \ + defined(__EMSCRIPTEN__) +/* + * These don't have "and with complement" instruction, so minimize amount + * of "not"-s. Implemented only in the [default] KECCAK_2X variant. + */ # define KECCAK_COMPLEMENTING_TRANSFORM #endif From builds at travis-ci.org Tue Feb 19 18:37:09 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 19 Feb 2019 18:37:09 +0000 Subject: Still Failing: openssl/openssl#23262 (master - 7dec815) In-Reply-To: Message-ID: <5c6c4cd550204_43fdab4f9a9382492d4@a8ffa4de-ab01-48df-af46-0d66c2d6de97.mail> Build Update for openssl/openssl ------------------------------------- Build: #23262 Status: Still Failing Duration: 20 mins and 49 secs Commit: 7dec815 (master) Author: Andy Polyakov Message: sha/keccak1600.c: subscribe more platforms for "complementing" optimization. E.g. on MIPS64 it gives >20% improvement... Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8261) View the changeset: https://github.com/openssl/openssl/compare/8e981051ceec...7dec815ecde2 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/495600800?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 20 00:16:50 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 20 Feb 2019 00:16:50 +0000 Subject: Build failed: openssl master.22671 Message-ID: <20190220001650.1.41968E26B7F4BD0D@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 20 00:21:01 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 20 Feb 2019 00:21:01 +0000 Subject: Build failed: openssl master.22672 Message-ID: <20190220002101.1.0C9D8BAAB0D2B557@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 20 00:54:05 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 20 Feb 2019 00:54:05 +0000 Subject: Build completed: openssl master.22673 Message-ID: <20190220005405.1.5F3F55D39A17B589@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 20 07:39:24 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 20 Feb 2019 07:39:24 +0000 Subject: Build failed: openssl master.22680 Message-ID: <20190220073924.1.A39EF9B7DB2BDA38@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 20 08:25:51 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 20 Feb 2019 08:25:51 +0000 Subject: Build completed: openssl master.22681 Message-ID: <20190220082551.1.BFC6AB31F99113FD@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 20 11:32:56 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 20 Feb 2019 11:32:56 +0000 Subject: Build failed: openssl master.22684 Message-ID: <20190220113256.1.6925099586CED5CE@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 20 13:09:58 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 20 Feb 2019 13:09:58 +0000 Subject: Build completed: openssl master.22685 Message-ID: <20190220130958.1.F0FB6477B071E6EB@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Wed Feb 20 17:47:32 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 20 Feb 2019 17:47:32 +0000 Subject: [openssl] OpenSSL_1_1_0-stable update Message-ID: <1550684852.863864.9812.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_0-stable has been updated via 68be523db761867cde2c5476cf43f8766c593b2a (commit) from 54a622697eced33a6029fd5e7dd452cfb99bb72e (commit) - Log ----------------------------------------------------------------- commit 68be523db761867cde2c5476cf43f8766c593b2a Author: Corinna Vinschen Date: Mon Feb 18 22:37:37 2019 +0100 cygwin: drop explicit O_TEXT Cygwin binaries should not enforce text mode these days, just use text mode if the underlying mount point requests it Signed-off-by: Corinna Vinschen Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8275) ----------------------------------------------------------------------- Summary of changes: crypto/bio/bss_file.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/crypto/bio/bss_file.c b/crypto/bio/bss_file.c index 2edf244..0240a0d 100644 --- a/crypto/bio/bss_file.c +++ b/crypto/bio/bss_file.c @@ -255,9 +255,7 @@ static long file_ctrl(BIO *b, int cmd, long num, void *ptr) } # elif defined(OPENSSL_SYS_WIN32_CYGWIN) int fd = fileno((FILE *)ptr); - if (num & BIO_FP_TEXT) - setmode(fd, O_TEXT); - else + if (!(num & BIO_FP_TEXT)) setmode(fd, O_BINARY); # endif } @@ -281,11 +279,14 @@ static long file_ctrl(BIO *b, int cmd, long num, void *ptr) ret = 0; break; } -# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32_CYGWIN) +# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) if (!(num & BIO_FP_TEXT)) strcat(p, "b"); else strcat(p, "t"); +# elif defined(OPENSSL_SYS_WIN32_CYGWIN) + if (!(num & BIO_FP_TEXT)) + strcat(p, "b"); # endif fp = openssl_fopen(ptr, p); if (fp == NULL) { From levitte at openssl.org Wed Feb 20 17:49:14 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 20 Feb 2019 17:49:14 +0000 Subject: [openssl] master update Message-ID: <1550684954.044083.11682.nullmailer@dev.openssl.org> The branch master has been updated via 0b76ce99aaa5678b44cb99df464e977975747928 (commit) from 7dec815ecde29c1eabed6b5832c7025c4eafad19 (commit) - Log ----------------------------------------------------------------- commit 0b76ce99aaa5678b44cb99df464e977975747928 Author: Richard Levitte Date: Wed Feb 20 08:21:02 2019 +0100 test/context_internal_test.c: don't initialize as a separate test Because test order can be randomized, running foo_init() as a separate test is unsafe practice. Instead, we make it possible to call it multiple times, and call it at the start of each separate test. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8288) ----------------------------------------------------------------------- Summary of changes: test/context_internal_test.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/test/context_internal_test.c b/test/context_internal_test.c index 7052de2..aca3db3 100644 --- a/test/context_internal_test.c +++ b/test/context_internal_test.c @@ -46,8 +46,10 @@ static const OPENSSL_CTX_METHOD foo_method = { foo_free }; -static int foo_init(void) { - foo_index = openssl_ctx_new_index(&foo_method); +static int foo_init(void) +{ + if (foo_index == -1) + foo_index = openssl_ctx_new_index(&foo_method); return foo_index != -1; } @@ -61,15 +63,20 @@ static int test_context(OPENSSL_CTX *ctx) { FOO *data = NULL; - return (TEST_ptr(data = openssl_ctx_get_data(ctx, foo_index)) - /* OPENSSL_zalloc in foo_new() initialized it to zero */ - && TEST_int_eq(data->i, 42)); + return + TEST_true(foo_init()) + && TEST_ptr(data = openssl_ctx_get_data(ctx, foo_index)) + /* OPENSSL_zalloc in foo_new() initialized it to zero */ + && TEST_int_eq(data->i, 42); } static int test_app_context(void) { OPENSSL_CTX *ctx = NULL; - int result = (TEST_ptr(ctx = OPENSSL_CTX_new()) && test_context(ctx)); + int result = + TEST_true(foo_init()) + && TEST_ptr(ctx = OPENSSL_CTX_new()) + && test_context(ctx); OPENSSL_CTX_free(ctx); return result; @@ -82,7 +89,6 @@ static int test_def_context(void) int setup_tests(void) { - ADD_TEST(foo_init); ADD_TEST(test_app_context); ADD_TEST(test_def_context); return 1; From nic.tuv at gmail.com Wed Feb 20 17:59:13 2019 From: nic.tuv at gmail.com (nic.tuv at gmail.com) Date: Wed, 20 Feb 2019 17:59:13 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550685553.650698.17586.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via d11e4bcddd3b235e0ca87eb0251a1e5136d95c70 (commit) via 48e82c8e22f8ac16ad0666d99172f6dbaf33953a (commit) from 70fa3aa108320d15536228656b120d3e08de0e40 (commit) - Log ----------------------------------------------------------------- commit d11e4bcddd3b235e0ca87eb0251a1e5136d95c70 Author: Billy Brumley Date: Tue Feb 12 16:00:20 2019 +0200 [test] unit test for field_inv function pointer in EC_METHOD (cherry picked from commit 8f58ede09572dcc6a7e6c01280dd348240199568) Reviewed-by: Matt Caswell Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8262) commit 48e82c8e22f8ac16ad0666d99172f6dbaf33953a Author: Billy Brumley Date: Sat Feb 2 10:53:29 2019 +0200 SCA hardening for mod. field inversion in EC_GROUP This commit adds a dedicated function in `EC_METHOD` to access a modular field inversion implementation suitable for the specifics of the implemented curve, featuring SCA countermeasures. The new pointer is defined as: `int (*field_inv)(const EC_GROUP*, BIGNUM *r, const BIGNUM *a, BN_CTX*)` and computes the multiplicative inverse of `a` in the underlying field, storing the result in `r`. Three implementations are included, each including specific SCA countermeasures: - `ec_GFp_simple_field_inv()`, featuring SCA hardening through blinding. - `ec_GFp_mont_field_inv()`, featuring SCA hardening through Fermat's Little Theorem (FLT) inversion. - `ec_GF2m_simple_field_inv()`, that uses `BN_GF2m_mod_inv()` which already features SCA hardening through blinding. From a security point of view, this also helps addressing a leakage previously affecting conversions from projective to affine coordinates. This commit also adds a new error reason code (i.e., `EC_R_CANNOT_INVERT`) to improve consistency between the three implementations as all of them could fail for the same reason but through different code paths resulting in inconsistent error stack states. Co-authored-by: Nicola Tuveri (cherry picked from commit e0033efc30b0f00476bba8f0fa5512be5dc8a3f1) Reviewed-by: Matt Caswell Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8262) ----------------------------------------------------------------------- Summary of changes: CHANGES | 6 + crypto/ec/ec2_smpl.c | 20 +- crypto/ec/ec_err.c | 9 +- crypto/ec/ec_lcl.h | 13 +- crypto/ec/ecp_mont.c | 51 ++++- crypto/ec/ecp_nist.c | 3 +- crypto/ec/ecp_nistp224.c | 3 +- crypto/ec/ecp_nistp256.c | 3 +- crypto/ec/ecp_nistp521.c | 3 +- crypto/ec/ecp_nistz256.c | 3 +- crypto/ec/ecp_smpl.c | 51 ++++- crypto/err/openssl.txt | 4 + include/openssl/ecerr.h | 6 +- test/build.info | 6 +- test/ec_internal_test.c | 205 +++++++++++++++++++++ ...t_internal_curve448.t => 03-test_internal_ec.t} | 8 +- 16 files changed, 375 insertions(+), 19 deletions(-) create mode 100644 test/ec_internal_test.c copy test/recipes/{03-test_internal_curve448.t => 03-test_internal_ec.t} (62%) diff --git a/CHANGES b/CHANGES index ff77c1b..cc7502d 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,12 @@ Changes between 1.1.1a and 1.1.1b [xx XXX xxxx] + *) Added SCA hardening for modular field inversion in EC_GROUP through + a new dedicated field_inv() pointer in EC_METHOD. + This also addresses a leakage affecting conversions from projective + to affine coordinates. + [Billy Bob Brumley, Nicola Tuveri] + *) Change the info callback signals for the start and end of a post-handshake message exchange in TLSv1.3. In 1.1.1/1.1.1a we used SSL_CB_HANDSHAKE_START and SSL_CB_HANDSHAKE_DONE. Experience has shown that many applications get diff --git a/crypto/ec/ec2_smpl.c b/crypto/ec/ec2_smpl.c index 87f7ce5..0a05a7a 100644 --- a/crypto/ec/ec2_smpl.c +++ b/crypto/ec/ec2_smpl.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -810,7 +810,7 @@ int ec_GF2m_simple_ladder_post(const EC_GROUP *group, || !group->meth->field_mul(group, t2, t2, t0, ctx) || !BN_GF2m_add(t1, t2, t1) || !group->meth->field_mul(group, t2, p->X, t0, ctx) - || !BN_GF2m_mod_inv(t2, t2, group->field, ctx) + || !group->meth->field_inv(group, t2, t2, ctx) || !group->meth->field_mul(group, t1, t1, t2, ctx) || !group->meth->field_mul(group, r->X, r->Z, t2, ctx) || !BN_GF2m_add(t2, p->X, r->X) @@ -889,6 +889,21 @@ int ec_GF2m_simple_points_mul(const EC_GROUP *group, EC_POINT *r, return ret; } +/*- + * Computes the multiplicative inverse of a in GF(2^m), storing the result in r. + * If a is zero (or equivalent), you'll get a EC_R_CANNOT_INVERT error. + * SCA hardening is with blinding: BN_GF2m_mod_inv does that. + */ +static int ec_GF2m_simple_field_inv(const EC_GROUP *group, BIGNUM *r, + const BIGNUM *a, BN_CTX *ctx) +{ + int ret; + + if (!(ret = BN_GF2m_mod_inv(r, a, group->field, ctx))) + ECerr(EC_F_EC_GF2M_SIMPLE_FIELD_INV, EC_R_CANNOT_INVERT); + return ret; +} + const EC_METHOD *EC_GF2m_simple_method(void) { static const EC_METHOD ret = { @@ -929,6 +944,7 @@ const EC_METHOD *EC_GF2m_simple_method(void) ec_GF2m_simple_field_mul, ec_GF2m_simple_field_sqr, ec_GF2m_simple_field_div, + ec_GF2m_simple_field_inv, 0, /* field_encode */ 0, /* field_decode */ 0, /* field_set_to_one */ diff --git a/crypto/ec/ec_err.c b/crypto/ec/ec_err.c index 8f4911a..ce34938 100644 --- a/crypto/ec/ec_err.c +++ b/crypto/ec/ec_err.c @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 @@ -66,6 +66,8 @@ static const ERR_STRING_DATA EC_str_functs[] = { "ec_asn1_group2fieldid"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY, 0), "ec_GF2m_montgomery_point_multiply"}, + {ERR_PACK(ERR_LIB_EC, EC_F_EC_GF2M_SIMPLE_FIELD_INV, 0), + "ec_GF2m_simple_field_inv"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT, 0), "ec_GF2m_simple_group_check_discriminant"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE, 0), @@ -90,6 +92,8 @@ static const ERR_STRING_DATA EC_str_functs[] = { "ec_GFp_mont_field_decode"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_MONT_FIELD_ENCODE, 0), "ec_GFp_mont_field_encode"}, + {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_MONT_FIELD_INV, 0), + "ec_GFp_mont_field_inv"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_MONT_FIELD_MUL, 0), "ec_GFp_mont_field_mul"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE, 0), @@ -124,6 +128,8 @@ static const ERR_STRING_DATA EC_str_functs[] = { "ec_GFp_nist_group_set_curve"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES, 0), "ec_GFp_simple_blind_coordinates"}, + {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_SIMPLE_FIELD_INV, 0), + "ec_GFp_simple_field_inv"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT, 0), "ec_GFp_simple_group_check_discriminant"}, {ERR_PACK(ERR_LIB_EC, EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE, 0), @@ -287,6 +293,7 @@ static const ERR_STRING_DATA EC_str_reasons[] = { {ERR_PACK(ERR_LIB_EC, 0, EC_R_BAD_SIGNATURE), "bad signature"}, {ERR_PACK(ERR_LIB_EC, 0, EC_R_BIGNUM_OUT_OF_RANGE), "bignum out of range"}, {ERR_PACK(ERR_LIB_EC, 0, EC_R_BUFFER_TOO_SMALL), "buffer too small"}, + {ERR_PACK(ERR_LIB_EC, 0, EC_R_CANNOT_INVERT), "cannot invert"}, {ERR_PACK(ERR_LIB_EC, 0, EC_R_COORDINATES_OUT_OF_RANGE), "coordinates out of range"}, {ERR_PACK(ERR_LIB_EC, 0, EC_R_CURVE_DOES_NOT_SUPPORT_ECDH), diff --git a/crypto/ec/ec_lcl.h b/crypto/ec/ec_lcl.h index e055dda..b3b7b28 100644 --- a/crypto/ec/ec_lcl.h +++ b/crypto/ec/ec_lcl.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -154,6 +154,13 @@ struct ec_method_st { int (*field_sqr) (const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); int (*field_div) (const EC_GROUP *, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *); + /*- + * 'field_inv' computes the multipicative inverse of a in the field, + * storing the result in r. + * + * If 'a' is zero (or equivalent), you'll get an EC_R_CANNOT_INVERT error. + */ + int (*field_inv) (const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); /* e.g. to Montgomery */ int (*field_encode) (const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); @@ -390,6 +397,8 @@ int ec_GFp_simple_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *); int ec_GFp_simple_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); +int ec_GFp_simple_field_inv(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, + BN_CTX *); int ec_GFp_simple_blind_coordinates(const EC_GROUP *group, EC_POINT *p, BN_CTX *ctx); int ec_GFp_simple_ladder_pre(const EC_GROUP *group, @@ -413,6 +422,8 @@ int ec_GFp_mont_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *); int ec_GFp_mont_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); +int ec_GFp_mont_field_inv(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, + BN_CTX *); int ec_GFp_mont_field_encode(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); int ec_GFp_mont_field_decode(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, diff --git a/crypto/ec/ecp_mont.c b/crypto/ec/ecp_mont.c index 36682e5..252e66e 100644 --- a/crypto/ec/ecp_mont.c +++ b/crypto/ec/ecp_mont.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -50,6 +50,7 @@ const EC_METHOD *EC_GFp_mont_method(void) ec_GFp_mont_field_mul, ec_GFp_mont_field_sqr, 0 /* field_div */ , + ec_GFp_mont_field_inv, ec_GFp_mont_field_encode, ec_GFp_mont_field_decode, ec_GFp_mont_field_set_to_one, @@ -206,6 +207,54 @@ int ec_GFp_mont_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, return BN_mod_mul_montgomery(r, a, a, group->field_data1, ctx); } +/*- + * Computes the multiplicative inverse of a in GF(p), storing the result in r. + * If a is zero (or equivalent), you'll get a EC_R_CANNOT_INVERT error. + * We have a Mont structure, so SCA hardening is FLT inversion. + */ +int ec_GFp_mont_field_inv(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, + BN_CTX *ctx) +{ + BIGNUM *e = NULL; + BN_CTX *new_ctx = NULL; + int ret = 0; + + if (group->field_data1 == NULL) + return 0; + + if (ctx == NULL && (ctx = new_ctx = BN_CTX_secure_new()) == NULL) + return 0; + + BN_CTX_start(ctx); + if ((e = BN_CTX_get(ctx)) == NULL) + goto err; + + /* Inverse in constant time with Fermats Little Theorem */ + if (!BN_set_word(e, 2)) + goto err; + if (!BN_sub(e, group->field, e)) + goto err; + /*- + * Exponent e is public. + * No need for scatter-gather or BN_FLG_CONSTTIME. + */ + if (!BN_mod_exp_mont(r, a, e, group->field, ctx, group->field_data1)) + goto err; + + /* throw an error on zero */ + if (BN_is_zero(r)) { + ECerr(EC_F_EC_GFP_MONT_FIELD_INV, EC_R_CANNOT_INVERT); + goto err; + } + + ret = 1; + + err: + BN_CTX_end(ctx); + BN_CTX_free(new_ctx); + return ret; +} + int ec_GFp_mont_field_encode(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, BN_CTX *ctx) { diff --git a/crypto/ec/ecp_nist.c b/crypto/ec/ecp_nist.c index f53de1a..5eaa99d 100644 --- a/crypto/ec/ecp_nist.c +++ b/crypto/ec/ecp_nist.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -52,6 +52,7 @@ const EC_METHOD *EC_GFp_nist_method(void) ec_GFp_nist_field_mul, ec_GFp_nist_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ diff --git a/crypto/ec/ecp_nistp224.c b/crypto/ec/ecp_nistp224.c index 555bf30..025273a 100644 --- a/crypto/ec/ecp_nistp224.c +++ b/crypto/ec/ecp_nistp224.c @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2010-2019 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 @@ -279,6 +279,7 @@ const EC_METHOD *EC_GFp_nistp224_method(void) ec_GFp_nist_field_mul, ec_GFp_nist_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ diff --git a/crypto/ec/ecp_nistp256.c b/crypto/ec/ecp_nistp256.c index c87a5e5..a21e5f7 100644 --- a/crypto/ec/ecp_nistp256.c +++ b/crypto/ec/ecp_nistp256.c @@ -1,5 +1,5 @@ /* - * Copyright 2011-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2011-2019 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 @@ -1810,6 +1810,7 @@ const EC_METHOD *EC_GFp_nistp256_method(void) ec_GFp_nist_field_mul, ec_GFp_nist_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ diff --git a/crypto/ec/ecp_nistp521.c b/crypto/ec/ecp_nistp521.c index 14f2fee..2f47772 100644 --- a/crypto/ec/ecp_nistp521.c +++ b/crypto/ec/ecp_nistp521.c @@ -1,5 +1,5 @@ /* - * Copyright 2011-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2011-2019 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 @@ -1647,6 +1647,7 @@ const EC_METHOD *EC_GFp_nistp521_method(void) ec_GFp_nist_field_mul, ec_GFp_nist_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ diff --git a/crypto/ec/ecp_nistz256.c b/crypto/ec/ecp_nistz256.c index b0564bd..aea6394 100644 --- a/crypto/ec/ecp_nistz256.c +++ b/crypto/ec/ecp_nistz256.c @@ -1,5 +1,5 @@ /* - * Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2014-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2014, Intel Corporation. All Rights Reserved. * Copyright (c) 2015, CloudFlare, Inc. * @@ -1677,6 +1677,7 @@ const EC_METHOD *EC_GFp_nistz256_method(void) ec_GFp_mont_field_mul, ec_GFp_mont_field_sqr, 0, /* field_div */ + ec_GFp_mont_field_inv, ec_GFp_mont_field_encode, ec_GFp_mont_field_decode, ec_GFp_mont_field_set_to_one, diff --git a/crypto/ec/ecp_smpl.c b/crypto/ec/ecp_smpl.c index d0c5557..f6a6ced 100644 --- a/crypto/ec/ecp_smpl.c +++ b/crypto/ec/ecp_smpl.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -51,6 +51,7 @@ const EC_METHOD *EC_GFp_simple_method(void) ec_GFp_simple_field_mul, ec_GFp_simple_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ @@ -553,7 +554,7 @@ int ec_GFp_simple_point_get_affine_coordinates(const EC_GROUP *group, } } } else { - if (!BN_mod_inverse(Z_1, Z_, group->field, ctx)) { + if (!group->meth->field_inv(group, Z_1, Z_, ctx)) { ECerr(EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES, ERR_R_BN_LIB); goto err; @@ -1266,7 +1267,7 @@ int ec_GFp_simple_points_make_affine(const EC_GROUP *group, size_t num, * points[i]->Z by its inverse. */ - if (!BN_mod_inverse(tmp, prod_Z[num - 1], group->field, ctx)) { + if (!group->meth->field_inv(group, tmp, prod_Z[num - 1], ctx)) { ECerr(EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE, ERR_R_BN_LIB); goto err; } @@ -1370,6 +1371,50 @@ int ec_GFp_simple_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, } /*- + * Computes the multiplicative inverse of a in GF(p), storing the result in r. + * If a is zero (or equivalent), you'll get a EC_R_CANNOT_INVERT error. + * Since we don't have a Mont structure here, SCA hardening is with blinding. + */ +int ec_GFp_simple_field_inv(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, + BN_CTX *ctx) +{ + BIGNUM *e = NULL; + BN_CTX *new_ctx = NULL; + int ret = 0; + + if (ctx == NULL && (ctx = new_ctx = BN_CTX_secure_new()) == NULL) + return 0; + + BN_CTX_start(ctx); + if ((e = BN_CTX_get(ctx)) == NULL) + goto err; + + do { + if (!BN_priv_rand_range(e, group->field)) + goto err; + } while (BN_is_zero(e)); + + /* r := a * e */ + if (!group->meth->field_mul(group, r, a, e, ctx)) + goto err; + /* r := 1/(a * e) */ + if (!BN_mod_inverse(r, r, group->field, ctx)) { + ECerr(EC_F_EC_GFP_SIMPLE_FIELD_INV, EC_R_CANNOT_INVERT); + goto err; + } + /* r := e/(a * e) = 1/a */ + if (!group->meth->field_mul(group, r, r, e, ctx)) + goto err; + + ret = 1; + + err: + BN_CTX_end(ctx); + BN_CTX_free(new_ctx); + return ret; +} + +/*- * Apply randomization of EC point projective coordinates: * * (X, Y ,Z ) = (lambda^2*X, lambda^3*Y, lambda*Z) diff --git a/crypto/err/openssl.txt b/crypto/err/openssl.txt index 3864bf9..6b5f7db 100644 --- a/crypto/err/openssl.txt +++ b/crypto/err/openssl.txt @@ -519,6 +519,7 @@ EC_F_ECX_PUB_ENCODE:268:ecx_pub_encode EC_F_EC_ASN1_GROUP2CURVE:153:ec_asn1_group2curve EC_F_EC_ASN1_GROUP2FIELDID:154:ec_asn1_group2fieldid EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY:208:ec_GF2m_montgomery_point_multiply +EC_F_EC_GF2M_SIMPLE_FIELD_INV:296:ec_GF2m_simple_field_inv EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT:159:\ ec_GF2m_simple_group_check_discriminant EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE:195:ec_GF2m_simple_group_set_curve @@ -535,6 +536,7 @@ EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES:164:\ ec_GF2m_simple_set_compressed_coordinates EC_F_EC_GFP_MONT_FIELD_DECODE:133:ec_GFp_mont_field_decode EC_F_EC_GFP_MONT_FIELD_ENCODE:134:ec_GFp_mont_field_encode +EC_F_EC_GFP_MONT_FIELD_INV:297:ec_GFp_mont_field_inv EC_F_EC_GFP_MONT_FIELD_MUL:131:ec_GFp_mont_field_mul EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE:209:ec_GFp_mont_field_set_to_one EC_F_EC_GFP_MONT_FIELD_SQR:132:ec_GFp_mont_field_sqr @@ -555,6 +557,7 @@ EC_F_EC_GFP_NIST_FIELD_MUL:200:ec_GFp_nist_field_mul EC_F_EC_GFP_NIST_FIELD_SQR:201:ec_GFp_nist_field_sqr EC_F_EC_GFP_NIST_GROUP_SET_CURVE:202:ec_GFp_nist_group_set_curve EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES:287:ec_GFp_simple_blind_coordinates +EC_F_EC_GFP_SIMPLE_FIELD_INV:298:ec_GFp_simple_field_inv EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT:165:\ ec_GFp_simple_group_check_discriminant EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE:166:ec_GFp_simple_group_set_curve @@ -2116,6 +2119,7 @@ EC_R_ASN1_ERROR:115:asn1 error EC_R_BAD_SIGNATURE:156:bad signature EC_R_BIGNUM_OUT_OF_RANGE:144:bignum out of range EC_R_BUFFER_TOO_SMALL:100:buffer too small +EC_R_CANNOT_INVERT:165:cannot invert EC_R_COORDINATES_OUT_OF_RANGE:146:coordinates out of range EC_R_CURVE_DOES_NOT_SUPPORT_ECDH:160:curve does not support ecdh EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING:159:curve does not support signing diff --git a/include/openssl/ecerr.h b/include/openssl/ecerr.h index 8d42938..be313d2 100644 --- a/include/openssl/ecerr.h +++ b/include/openssl/ecerr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 @@ -62,6 +62,7 @@ int ERR_load_EC_strings(void); # define EC_F_EC_ASN1_GROUP2CURVE 153 # define EC_F_EC_ASN1_GROUP2FIELDID 154 # define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 +# define EC_F_EC_GF2M_SIMPLE_FIELD_INV 296 # define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159 # define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 # define EC_F_EC_GF2M_SIMPLE_LADDER_POST 285 @@ -74,6 +75,7 @@ int ERR_load_EC_strings(void); # define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164 # define EC_F_EC_GFP_MONT_FIELD_DECODE 133 # define EC_F_EC_GFP_MONT_FIELD_ENCODE 134 +# define EC_F_EC_GFP_MONT_FIELD_INV 297 # define EC_F_EC_GFP_MONT_FIELD_MUL 131 # define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209 # define EC_F_EC_GFP_MONT_FIELD_SQR 132 @@ -91,6 +93,7 @@ int ERR_load_EC_strings(void); # define EC_F_EC_GFP_NIST_FIELD_SQR 201 # define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202 # define EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES 287 +# define EC_F_EC_GFP_SIMPLE_FIELD_INV 298 # define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165 # define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166 # define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102 @@ -202,6 +205,7 @@ int ERR_load_EC_strings(void); # define EC_R_BAD_SIGNATURE 156 # define EC_R_BIGNUM_OUT_OF_RANGE 144 # define EC_R_BUFFER_TOO_SMALL 100 +# define EC_R_CANNOT_INVERT 165 # define EC_R_COORDINATES_OUT_OF_RANGE 146 # define EC_R_CURVE_DOES_NOT_SUPPORT_ECDH 160 # define EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING 159 diff --git a/test/build.info b/test/build.info index fdf0a3c..52d4ee7 100644 --- a/test/build.info +++ b/test/build.info @@ -458,7 +458,7 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN PROGRAMS_NO_INST=sm4_internal_test ENDIF IF[{- !$disabled{ec} -}] - PROGRAMS_NO_INST=curve448_internal_test + PROGRAMS_NO_INST=ec_internal_test curve448_internal_test ENDIF SOURCE[poly1305_internal_test]=poly1305_internal_test.c @@ -505,6 +505,10 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN INCLUDE[sm4_internal_test]=.. ../include ../crypto/include DEPEND[sm4_internal_test]=../libcrypto.a libtestutil.a + SOURCE[ec_internal_test]=ec_internal_test.c + INCLUDE[ec_internal_test]=../include ../crypto/ec ../crypto/include + DEPEND[ec_internal_test]=../libcrypto.a libtestutil.a + SOURCE[curve448_internal_test]=curve448_internal_test.c INCLUDE[curve448_internal_test]=.. ../include ../crypto/ec/curve448 DEPEND[curve448_internal_test]=../libcrypto.a libtestutil.a diff --git a/test/ec_internal_test.c b/test/ec_internal_test.c new file mode 100644 index 0000000..8d3a4fd --- /dev/null +++ b/test/ec_internal_test.c @@ -0,0 +1,205 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/nelem.h" +#include "testutil.h" +#include +#include "ec_lcl.h" +#include + +static size_t crv_len = 0; +static EC_builtin_curve *curves = NULL; + +/* sanity checks field_inv function pointer in EC_METHOD */ +static int group_field_tests(const EC_GROUP *group, BN_CTX *ctx) +{ + BIGNUM *a = NULL, *b = NULL, *c = NULL; + int ret = 0; + + if (group->meth->field_inv == NULL || group->meth->field_mul == NULL) + return 1; + + BN_CTX_start(ctx); + a = BN_CTX_get(ctx); + b = BN_CTX_get(ctx); + if (!TEST_ptr(c = BN_CTX_get(ctx)) + /* 1/1 = 1 */ + || !TEST_true(group->meth->field_inv(group, b, BN_value_one(), ctx)) + || !TEST_true(BN_is_one(b)) + /* (1/a)*a = 1 */ + || !TEST_true(BN_pseudo_rand(a, BN_num_bits(group->field) - 1, + BN_RAND_TOP_ONE, BN_RAND_BOTTOM_ANY)) + || !TEST_true(group->meth->field_inv(group, b, a, ctx)) + || (group->meth->field_encode && + !TEST_true(group->meth->field_encode(group, a, a, ctx))) + || (group->meth->field_encode && + !TEST_true(group->meth->field_encode(group, b, b, ctx))) + || !TEST_true(group->meth->field_mul(group, c, a, b, ctx)) + || (group->meth->field_decode && + !TEST_true(group->meth->field_decode(group, c, c, ctx))) + || !TEST_true(BN_is_one(c))) + goto err; + + /* 1/0 = error */ + BN_zero(a); + if (!TEST_false(group->meth->field_inv(group, b, a, ctx)) + || !TEST_true(ERR_GET_LIB(ERR_peek_last_error()) == ERR_LIB_EC) + || !TEST_true(ERR_GET_REASON(ERR_peek_last_error()) == + EC_R_CANNOT_INVERT) + /* 1/p = error */ + || !TEST_false(group->meth->field_inv(group, b, group->field, ctx)) + || !TEST_true(ERR_GET_LIB(ERR_peek_last_error()) == ERR_LIB_EC) + || !TEST_true(ERR_GET_REASON(ERR_peek_last_error()) == + EC_R_CANNOT_INVERT)) + goto err; + + ERR_clear_error(); + ret = 1; + err: + BN_CTX_end(ctx); + return ret; +} + +/* wrapper for group_field_tests for explicit curve params and EC_METHOD */ +static int field_tests(const EC_METHOD *meth, const unsigned char *params, + int len) +{ + BN_CTX *ctx = NULL; + BIGNUM *p = NULL, *a = NULL, *b = NULL; + EC_GROUP *group = NULL; + int ret = 0; + + if (!TEST_ptr(ctx = BN_CTX_new())) + return 0; + + BN_CTX_start(ctx); + p = BN_CTX_get(ctx); + a = BN_CTX_get(ctx); + if (!TEST_ptr(b = BN_CTX_get(ctx)) + || !TEST_ptr(group = EC_GROUP_new(meth)) + || !TEST_true(BN_bin2bn(params, len, p)) + || !TEST_true(BN_bin2bn(params + len, len, a)) + || !TEST_true(BN_bin2bn(params + 2 * len, len, b)) + || !TEST_true(EC_GROUP_set_curve(group, p, a, b, ctx)) + || !group_field_tests(group, ctx)) + goto err; + ret = 1; + + err: + BN_CTX_end(ctx); + BN_CTX_free(ctx); + if (group != NULL) + EC_GROUP_free(group); + return ret; +} + +/* NIST prime curve P-256 */ +static const unsigned char params_p256[] = { + /* p */ + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + /* a */ + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + /* b */ + 0x5A, 0xC6, 0x35, 0xD8, 0xAA, 0x3A, 0x93, 0xE7, 0xB3, 0xEB, 0xBD, 0x55, + 0x76, 0x98, 0x86, 0xBC, 0x65, 0x1D, 0x06, 0xB0, 0xCC, 0x53, 0xB0, 0xF6, + 0x3B, 0xCE, 0x3C, 0x3E, 0x27, 0xD2, 0x60, 0x4B +}; + +#ifndef OPENSSL_NO_EC2M +/* NIST binary curve B-283 */ +static const unsigned char params_b283[] = { + /* p */ + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA1, + /* a */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + /* b */ + 0x02, 0x7B, 0x68, 0x0A, 0xC8, 0xB8, 0x59, 0x6D, 0xA5, 0xA4, 0xAF, 0x8A, + 0x19, 0xA0, 0x30, 0x3F, 0xCA, 0x97, 0xFD, 0x76, 0x45, 0x30, 0x9F, 0xA2, + 0xA5, 0x81, 0x48, 0x5A, 0xF6, 0x26, 0x3E, 0x31, 0x3B, 0x79, 0xA2, 0xF5 +}; +#endif + +/* test EC_GFp_simple_method directly */ +static int field_tests_ecp_simple(void) +{ + TEST_info("Testing EC_GFp_simple_method()\n"); + return field_tests(EC_GFp_simple_method(), params_p256, + sizeof(params_p256) / 3); +} + +/* test EC_GFp_mont_method directly */ +static int field_tests_ecp_mont(void) +{ + TEST_info("Testing EC_GFp_mont_method()\n"); + return field_tests(EC_GFp_mont_method(), params_p256, + sizeof(params_p256) / 3); +} + +#ifndef OPENSSL_NO_EC2M +/* test EC_GF2m_simple_method directly */ +static int field_tests_ec2_simple(void) +{ + TEST_info("Testing EC_GF2m_simple_method()\n"); + return field_tests(EC_GF2m_simple_method(), params_b283, + sizeof(params_b283) / 3); +} +#endif + +/* test default method for a named curve */ +static int field_tests_default(int n) +{ + BN_CTX *ctx = NULL; + EC_GROUP *group = NULL; + int nid = curves[n].nid; + int ret = 0; + + TEST_info("Testing curve %s\n", OBJ_nid2sn(nid)); + + if (!TEST_ptr(group = EC_GROUP_new_by_curve_name(nid)) + || !TEST_ptr(ctx = BN_CTX_new()) + || !group_field_tests(group, ctx)) + goto err; + + ret = 1; + err: + if (group != NULL) + EC_GROUP_free(group); + if (ctx != NULL) + BN_CTX_free(ctx); + return ret; +} + +int setup_tests(void) +{ + crv_len = EC_get_builtin_curves(NULL, 0); + if (!TEST_ptr(curves = OPENSSL_malloc(sizeof(*curves) * crv_len)) + || !TEST_true(EC_get_builtin_curves(curves, crv_len))) + return 0; + + ADD_TEST(field_tests_ecp_simple); + ADD_TEST(field_tests_ecp_mont); +#ifndef OPENSSL_NO_EC2M + ADD_TEST(field_tests_ec2_simple); +#endif + ADD_ALL_TESTS(field_tests_default, crv_len); + return 1; +} + +void cleanup_tests(void) +{ + OPENSSL_free(curves); +} diff --git a/test/recipes/03-test_internal_curve448.t b/test/recipes/03-test_internal_ec.t similarity index 62% copy from test/recipes/03-test_internal_curve448.t copy to test/recipes/03-test_internal_ec.t index 4decc98..0d31d0a 100644 --- a/test/recipes/03-test_internal_curve448.t +++ b/test/recipes/03-test_internal_ec.t @@ -1,7 +1,7 @@ #! /usr/bin/env perl -# Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. # -# Licensed under the OpenSSL license (the "License"). You may not use +# Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy # in the file LICENSE in the source distribution or at # https://www.openssl.org/source/license.html @@ -11,9 +11,9 @@ use OpenSSL::Test; # get 'plan' use OpenSSL::Test::Simple; use OpenSSL::Test::Utils; -setup("test_internal_curve448"); +setup("test_internal_ec"); plan skip_all => "This test is unsupported in a no-ec build" if disabled("ec"); -simple_test("test_internal_curve448", "curve448_internal_test"); +simple_test("test_internal_ec", "ec_internal_test"); From nic.tuv at gmail.com Wed Feb 20 18:06:57 2019 From: nic.tuv at gmail.com (nic.tuv at gmail.com) Date: Wed, 20 Feb 2019 18:06:57 +0000 Subject: [openssl] OpenSSL_1_1_0-stable update Message-ID: <1550686017.049012.8036.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_0-stable has been updated via b7fc0784c4cfe81db8728f814925c6f98dd948d1 (commit) via 09c11fe59b3d45d35e61d95d0f3a5a371f96a19d (commit) from 68be523db761867cde2c5476cf43f8766c593b2a (commit) - Log ----------------------------------------------------------------- commit b7fc0784c4cfe81db8728f814925c6f98dd948d1 Author: Nicola Tuveri Date: Mon Feb 18 03:46:54 2019 +0200 [test] unit test for field_inv function pointer in EC_METHOD This is a rewrite of commit 8f58ede09572dcc6a7e6c01280dd348240199568 for the 1.1.0-stable branch. Co-authored-by: Billy Brumley Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8263) commit 09c11fe59b3d45d35e61d95d0f3a5a371f96a19d Author: Billy Brumley Date: Sat Feb 2 10:53:29 2019 +0200 SCA hardening for mod. field inversion in EC_GROUP This commit adds a dedicated function in `EC_METHOD` to access a modular field inversion implementation suitable for the specifics of the implemented curve, featuring SCA countermeasures. The new pointer is defined as: `int (*field_inv)(const EC_GROUP*, BIGNUM *r, const BIGNUM *a, BN_CTX*)` and computes the multiplicative inverse of `a` in the underlying field, storing the result in `r`. Three implementations are included, each including specific SCA countermeasures: - `ec_GFp_simple_field_inv()`, featuring SCA hardening through blinding. - `ec_GFp_mont_field_inv()`, featuring SCA hardening through Fermat's Little Theorem (FLT) inversion. - `ec_GF2m_simple_field_inv()`, that uses `BN_GF2m_mod_inv()` which already features SCA hardening through blinding. From a security point of view, this also helps addressing a leakage previously affecting conversions from projective to affine coordinates. This commit also adds a new error reason code (i.e., `EC_R_CANNOT_INVERT`) to improve consistency between the three implementations as all of them could fail for the same reason but through different code paths resulting in inconsistent error stack states. Co-authored-by: Nicola Tuveri (cherry picked from commit e0033efc30b0f00476bba8f0fa5512be5dc8a3f1) Reviewed-by: Matt Caswell Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8263) ----------------------------------------------------------------------- Summary of changes: CHANGES | 6 + crypto/ec/ec2_smpl.c | 140 ++++++++++++----------- crypto/ec/ec_err.c | 6 +- crypto/ec/ec_lcl.h | 13 ++- crypto/ec/ecp_mont.c | 51 ++++++++- crypto/ec/ecp_nist.c | 3 +- crypto/ec/ecp_nistp224.c | 3 +- crypto/ec/ecp_nistp256.c | 3 +- crypto/ec/ecp_nistp521.c | 3 +- crypto/ec/ecp_nistz256.c | 3 +- crypto/ec/ecp_smpl.c | 51 ++++++++- include/openssl/ec.h | 6 +- test/build.info | 9 ++ test/ec_internal_test.c | 220 +++++++++++++++++++++++++++++++++++++ test/recipes/03-test_internal_ec.t | 19 ++++ 15 files changed, 462 insertions(+), 74 deletions(-) create mode 100644 test/ec_internal_test.c create mode 100644 test/recipes/03-test_internal_ec.t diff --git a/CHANGES b/CHANGES index d634252..d0b6fd7 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,12 @@ Changes between 1.1.0j and 1.1.0k [xx XXX xxxx] + *) Added SCA hardening for modular field inversion in EC_GROUP through + a new dedicated field_inv() pointer in EC_METHOD. + This also addresses a leakage affecting conversions from projective + to affine coordinates. + [Billy Bob Brumley, Nicola Tuveri] + *) Fix a use after free bug in d2i_X509_PUBKEY when overwriting a re-used X509_PUBKEY object if the second PUBKEY is malformed. [Bernd Edlinger] diff --git a/crypto/ec/ec2_smpl.c b/crypto/ec/ec2_smpl.c index cdacce6..6cb6d1b 100644 --- a/crypto/ec/ec2_smpl.c +++ b/crypto/ec/ec2_smpl.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2019 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 @@ -29,67 +29,6 @@ #ifndef OPENSSL_NO_EC2M -const EC_METHOD *EC_GF2m_simple_method(void) -{ - static const EC_METHOD ret = { - EC_FLAGS_DEFAULT_OCT, - NID_X9_62_characteristic_two_field, - ec_GF2m_simple_group_init, - ec_GF2m_simple_group_finish, - ec_GF2m_simple_group_clear_finish, - ec_GF2m_simple_group_copy, - ec_GF2m_simple_group_set_curve, - ec_GF2m_simple_group_get_curve, - ec_GF2m_simple_group_get_degree, - ec_group_simple_order_bits, - ec_GF2m_simple_group_check_discriminant, - ec_GF2m_simple_point_init, - ec_GF2m_simple_point_finish, - ec_GF2m_simple_point_clear_finish, - ec_GF2m_simple_point_copy, - ec_GF2m_simple_point_set_to_infinity, - 0 /* set_Jprojective_coordinates_GFp */ , - 0 /* get_Jprojective_coordinates_GFp */ , - ec_GF2m_simple_point_set_affine_coordinates, - ec_GF2m_simple_point_get_affine_coordinates, - 0, 0, 0, - ec_GF2m_simple_add, - ec_GF2m_simple_dbl, - ec_GF2m_simple_invert, - ec_GF2m_simple_is_at_infinity, - ec_GF2m_simple_is_on_curve, - ec_GF2m_simple_cmp, - ec_GF2m_simple_make_affine, - ec_GF2m_simple_points_make_affine, - - /* - * the following three method functions are defined in ec2_mult.c - */ - ec_GF2m_simple_mul, - ec_GF2m_precompute_mult, - ec_GF2m_have_precompute_mult, - - ec_GF2m_simple_field_mul, - ec_GF2m_simple_field_sqr, - ec_GF2m_simple_field_div, - 0 /* field_encode */ , - 0 /* field_decode */ , - 0, /* field_set_to_one */ - ec_key_simple_priv2oct, - ec_key_simple_oct2priv, - 0, /* set private */ - ec_key_simple_generate_key, - ec_key_simple_check_key, - ec_key_simple_generate_public_key, - 0, /* keycopy */ - 0, /* keyfinish */ - ecdh_simple_compute_key, - 0 /* blind_coordinates */ - }; - - return &ret; -} - /* * Initialize a GF(2^m)-based EC_GROUP structure. Note that all other members * are handled by EC_GROUP_new. @@ -757,4 +696,81 @@ int ec_GF2m_simple_field_div(const EC_GROUP *group, BIGNUM *r, return BN_GF2m_mod_div(r, a, b, group->field, ctx); } +/*- + * Computes the multiplicative inverse of a in GF(2^m), storing the result in r. + * If a is zero (or equivalent), you'll get a EC_R_CANNOT_INVERT error. + * SCA hardening is with blinding: BN_GF2m_mod_inv does that. + */ +static int ec_GF2m_simple_field_inv(const EC_GROUP *group, BIGNUM *r, + const BIGNUM *a, BN_CTX *ctx) +{ + int ret; + + if (!(ret = BN_GF2m_mod_inv(r, a, group->field, ctx))) + ECerr(EC_F_EC_GF2M_SIMPLE_FIELD_INV, EC_R_CANNOT_INVERT); + return ret; +} + +const EC_METHOD *EC_GF2m_simple_method(void) +{ + static const EC_METHOD ret = { + EC_FLAGS_DEFAULT_OCT, + NID_X9_62_characteristic_two_field, + ec_GF2m_simple_group_init, + ec_GF2m_simple_group_finish, + ec_GF2m_simple_group_clear_finish, + ec_GF2m_simple_group_copy, + ec_GF2m_simple_group_set_curve, + ec_GF2m_simple_group_get_curve, + ec_GF2m_simple_group_get_degree, + ec_group_simple_order_bits, + ec_GF2m_simple_group_check_discriminant, + ec_GF2m_simple_point_init, + ec_GF2m_simple_point_finish, + ec_GF2m_simple_point_clear_finish, + ec_GF2m_simple_point_copy, + ec_GF2m_simple_point_set_to_infinity, + 0 /* set_Jprojective_coordinates_GFp */ , + 0 /* get_Jprojective_coordinates_GFp */ , + ec_GF2m_simple_point_set_affine_coordinates, + ec_GF2m_simple_point_get_affine_coordinates, + 0, 0, 0, + ec_GF2m_simple_add, + ec_GF2m_simple_dbl, + ec_GF2m_simple_invert, + ec_GF2m_simple_is_at_infinity, + ec_GF2m_simple_is_on_curve, + ec_GF2m_simple_cmp, + ec_GF2m_simple_make_affine, + ec_GF2m_simple_points_make_affine, + + /* + * the following three method functions are defined in ec2_mult.c + */ + ec_GF2m_simple_mul, + ec_GF2m_precompute_mult, + ec_GF2m_have_precompute_mult, + + ec_GF2m_simple_field_mul, + ec_GF2m_simple_field_sqr, + ec_GF2m_simple_field_div, + ec_GF2m_simple_field_inv, + 0 /* field_encode */ , + 0 /* field_decode */ , + 0, /* field_set_to_one */ + ec_key_simple_priv2oct, + ec_key_simple_oct2priv, + 0, /* set private */ + ec_key_simple_generate_key, + ec_key_simple_check_key, + ec_key_simple_generate_public_key, + 0, /* keycopy */ + 0, /* keyfinish */ + ecdh_simple_compute_key, + 0 /* blind_coordinates */ + }; + + return &ret; +} + #endif diff --git a/crypto/ec/ec_err.c b/crypto/ec/ec_err.c index 717c92e..aeee2e8 100644 --- a/crypto/ec/ec_err.c +++ b/crypto/ec/ec_err.c @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 @@ -58,6 +58,7 @@ static ERR_STRING_DATA EC_str_functs[] = { {ERR_FUNC(EC_F_EC_ASN1_GROUP2FIELDID), "ec_asn1_group2fieldid"}, {ERR_FUNC(EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY), "ec_GF2m_montgomery_point_multiply"}, + {ERR_FUNC(EC_F_EC_GF2M_SIMPLE_FIELD_INV), "ec_GF2m_simple_field_inv"}, {ERR_FUNC(EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT), "ec_GF2m_simple_group_check_discriminant"}, {ERR_FUNC(EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE), @@ -72,6 +73,7 @@ static ERR_STRING_DATA EC_str_functs[] = { "ec_GF2m_simple_set_compressed_coordinates"}, {ERR_FUNC(EC_F_EC_GFP_MONT_FIELD_DECODE), "ec_GFp_mont_field_decode"}, {ERR_FUNC(EC_F_EC_GFP_MONT_FIELD_ENCODE), "ec_GFp_mont_field_encode"}, + {ERR_FUNC(EC_F_EC_GFP_MONT_FIELD_INV), "ec_GFp_mont_field_inv"}, {ERR_FUNC(EC_F_EC_GFP_MONT_FIELD_MUL), "ec_GFp_mont_field_mul"}, {ERR_FUNC(EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE), "ec_GFp_mont_field_set_to_one"}, @@ -99,6 +101,7 @@ static ERR_STRING_DATA EC_str_functs[] = { "ec_GFp_nist_group_set_curve"}, {ERR_FUNC(EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES), "ec_GFp_simple_blind_coordinates"}, + {ERR_FUNC(EC_F_EC_GFP_SIMPLE_FIELD_INV), "ec_GFp_simple_field_inv"}, {ERR_FUNC(EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT), "ec_GFp_simple_group_check_discriminant"}, {ERR_FUNC(EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE), @@ -211,6 +214,7 @@ static ERR_STRING_DATA EC_str_reasons[] = { {ERR_REASON(EC_R_BAD_SIGNATURE), "bad signature"}, {ERR_REASON(EC_R_BIGNUM_OUT_OF_RANGE), "bignum out of range"}, {ERR_REASON(EC_R_BUFFER_TOO_SMALL), "buffer too small"}, + {ERR_REASON(EC_R_CANNOT_INVERT), "cannot invert"}, {ERR_REASON(EC_R_COORDINATES_OUT_OF_RANGE), "coordinates out of range"}, {ERR_REASON(EC_R_CURVE_DOES_NOT_SUPPORT_ECDH), "curve does not support ecdh"}, diff --git a/crypto/ec/ec_lcl.h b/crypto/ec/ec_lcl.h index ca1776e..2e85597 100644 --- a/crypto/ec/ec_lcl.h +++ b/crypto/ec/ec_lcl.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2019 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 @@ -150,6 +150,13 @@ struct ec_method_st { int (*field_sqr) (const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); int (*field_div) (const EC_GROUP *, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *); + /*- + * 'field_inv' computes the multipicative inverse of a in the field, + * storing the result in r. + * + * If 'a' is zero (or equivalent), you'll get an EC_R_CANNOT_INVERT error. + */ + int (*field_inv) (const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); /* e.g. to Montgomery */ int (*field_encode) (const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); @@ -376,6 +383,8 @@ int ec_GFp_simple_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *); int ec_GFp_simple_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); +int ec_GFp_simple_field_inv(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, + BN_CTX *); int ec_GFp_simple_blind_coordinates(const EC_GROUP *group, EC_POINT *p, BN_CTX *ctx); @@ -390,6 +399,8 @@ int ec_GFp_mont_field_mul(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *); int ec_GFp_mont_field_sqr(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); +int ec_GFp_mont_field_inv(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, + BN_CTX *); int ec_GFp_mont_field_encode(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, BN_CTX *); int ec_GFp_mont_field_decode(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, diff --git a/crypto/ec/ecp_mont.c b/crypto/ec/ecp_mont.c index d837d4d..8ecd53a 100644 --- a/crypto/ec/ecp_mont.c +++ b/crypto/ec/ecp_mont.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2019 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 @@ -55,6 +55,7 @@ const EC_METHOD *EC_GFp_mont_method(void) ec_GFp_mont_field_mul, ec_GFp_mont_field_sqr, 0 /* field_div */ , + ec_GFp_mont_field_inv, ec_GFp_mont_field_encode, ec_GFp_mont_field_decode, ec_GFp_mont_field_set_to_one, @@ -207,6 +208,54 @@ int ec_GFp_mont_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, return BN_mod_mul_montgomery(r, a, a, group->field_data1, ctx); } +/*- + * Computes the multiplicative inverse of a in GF(p), storing the result in r. + * If a is zero (or equivalent), you'll get a EC_R_CANNOT_INVERT error. + * We have a Mont structure, so SCA hardening is FLT inversion. + */ +int ec_GFp_mont_field_inv(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, + BN_CTX *ctx) +{ + BIGNUM *e = NULL; + BN_CTX *new_ctx = NULL; + int ret = 0; + + if (group->field_data1 == NULL) + return 0; + + if (ctx == NULL && (ctx = new_ctx = BN_CTX_secure_new()) == NULL) + return 0; + + BN_CTX_start(ctx); + if ((e = BN_CTX_get(ctx)) == NULL) + goto err; + + /* Inverse in constant time with Fermats Little Theorem */ + if (!BN_set_word(e, 2)) + goto err; + if (!BN_sub(e, group->field, e)) + goto err; + /*- + * Exponent e is public. + * No need for scatter-gather or BN_FLG_CONSTTIME. + */ + if (!BN_mod_exp_mont(r, a, e, group->field, ctx, group->field_data1)) + goto err; + + /* throw an error on zero */ + if (BN_is_zero(r)) { + ECerr(EC_F_EC_GFP_MONT_FIELD_INV, EC_R_CANNOT_INVERT); + goto err; + } + + ret = 1; + + err: + BN_CTX_end(ctx); + BN_CTX_free(new_ctx); + return ret; +} + int ec_GFp_mont_field_encode(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, BN_CTX *ctx) { diff --git a/crypto/ec/ecp_nist.c b/crypto/ec/ecp_nist.c index 143f21f..c874380 100644 --- a/crypto/ec/ecp_nist.c +++ b/crypto/ec/ecp_nist.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2019 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 @@ -57,6 +57,7 @@ const EC_METHOD *EC_GFp_nist_method(void) ec_GFp_nist_field_mul, ec_GFp_nist_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ diff --git a/crypto/ec/ecp_nistp224.c b/crypto/ec/ecp_nistp224.c index 52056ff..651dcb1 100644 --- a/crypto/ec/ecp_nistp224.c +++ b/crypto/ec/ecp_nistp224.c @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2010-2019 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 @@ -279,6 +279,7 @@ const EC_METHOD *EC_GFp_nistp224_method(void) ec_GFp_nist_field_mul, ec_GFp_nist_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ diff --git a/crypto/ec/ecp_nistp256.c b/crypto/ec/ecp_nistp256.c index ffd2a7d..dfd98c6 100644 --- a/crypto/ec/ecp_nistp256.c +++ b/crypto/ec/ecp_nistp256.c @@ -1,5 +1,5 @@ /* - * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2011-2019 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 @@ -1810,6 +1810,7 @@ const EC_METHOD *EC_GFp_nistp256_method(void) ec_GFp_nist_field_mul, ec_GFp_nist_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ diff --git a/crypto/ec/ecp_nistp521.c b/crypto/ec/ecp_nistp521.c index 0a82abc..ddfef91 100644 --- a/crypto/ec/ecp_nistp521.c +++ b/crypto/ec/ecp_nistp521.c @@ -1,5 +1,5 @@ /* - * Copyright 2011-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2011-2019 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 @@ -1631,6 +1631,7 @@ const EC_METHOD *EC_GFp_nistp521_method(void) ec_GFp_nist_field_mul, ec_GFp_nist_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ diff --git a/crypto/ec/ecp_nistz256.c b/crypto/ec/ecp_nistz256.c index 7eafce6..e1170b4 100644 --- a/crypto/ec/ecp_nistz256.c +++ b/crypto/ec/ecp_nistz256.c @@ -1,5 +1,5 @@ /* - * Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2014-2019 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 @@ -1525,6 +1525,7 @@ const EC_METHOD *EC_GFp_nistz256_method(void) ec_GFp_mont_field_mul, ec_GFp_mont_field_sqr, 0, /* field_div */ + ec_GFp_mont_field_inv, ec_GFp_mont_field_encode, ec_GFp_mont_field_decode, ec_GFp_mont_field_set_to_one, diff --git a/crypto/ec/ecp_smpl.c b/crypto/ec/ecp_smpl.c index 2015f11..d8db1ea 100644 --- a/crypto/ec/ecp_smpl.c +++ b/crypto/ec/ecp_smpl.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2019 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 @@ -56,6 +56,7 @@ const EC_METHOD *EC_GFp_simple_method(void) ec_GFp_simple_field_mul, ec_GFp_simple_field_sqr, 0 /* field_div */ , + ec_GFp_simple_field_inv, 0 /* field_encode */ , 0 /* field_decode */ , 0, /* field_set_to_one */ @@ -554,7 +555,7 @@ int ec_GFp_simple_point_get_affine_coordinates(const EC_GROUP *group, } } } else { - if (!BN_mod_inverse(Z_1, Z_, group->field, ctx)) { + if (!group->meth->field_inv(group, Z_1, Z_, ctx)) { ECerr(EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES, ERR_R_BN_LIB); goto err; @@ -1267,7 +1268,7 @@ int ec_GFp_simple_points_make_affine(const EC_GROUP *group, size_t num, * points[i]->Z by its inverse. */ - if (!BN_mod_inverse(tmp, prod_Z[num - 1], group->field, ctx)) { + if (!group->meth->field_inv(group, tmp, prod_Z[num - 1], ctx)) { ECerr(EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE, ERR_R_BN_LIB); goto err; } @@ -1371,6 +1372,50 @@ int ec_GFp_simple_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, } /*- + * Computes the multiplicative inverse of a in GF(p), storing the result in r. + * If a is zero (or equivalent), you'll get a EC_R_CANNOT_INVERT error. + * Since we don't have a Mont structure here, SCA hardening is with blinding. + */ +int ec_GFp_simple_field_inv(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, + BN_CTX *ctx) +{ + BIGNUM *e = NULL; + BN_CTX *new_ctx = NULL; + int ret = 0; + + if (ctx == NULL && (ctx = new_ctx = BN_CTX_secure_new()) == NULL) + return 0; + + BN_CTX_start(ctx); + if ((e = BN_CTX_get(ctx)) == NULL) + goto err; + + do { + if (!BN_rand_range(e, group->field)) + goto err; + } while (BN_is_zero(e)); + + /* r := a * e */ + if (!group->meth->field_mul(group, r, a, e, ctx)) + goto err; + /* r := 1/(a * e) */ + if (!BN_mod_inverse(r, r, group->field, ctx)) { + ECerr(EC_F_EC_GFP_SIMPLE_FIELD_INV, EC_R_CANNOT_INVERT); + goto err; + } + /* r := e/(a * e) = 1/a */ + if (!group->meth->field_mul(group, r, r, e, ctx)) + goto err; + + ret = 1; + + err: + BN_CTX_end(ctx); + BN_CTX_free(new_ctx); + return ret; +} + +/*- * Apply randomization of EC point projective coordinates: * * (X, Y ,Z ) = (lambda^2*X, lambda^3*Y, lambda*Z) diff --git a/include/openssl/ec.h b/include/openssl/ec.h index d6b36c7..bea6b8c 100644 --- a/include/openssl/ec.h +++ b/include/openssl/ec.h @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2019 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 @@ -1399,6 +1399,7 @@ int ERR_load_EC_strings(void); # define EC_F_EC_ASN1_GROUP2CURVE 153 # define EC_F_EC_ASN1_GROUP2FIELDID 154 # define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 +# define EC_F_EC_GF2M_SIMPLE_FIELD_INV 296 # define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159 # define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 # define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160 @@ -1408,6 +1409,7 @@ int ERR_load_EC_strings(void); # define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164 # define EC_F_EC_GFP_MONT_FIELD_DECODE 133 # define EC_F_EC_GFP_MONT_FIELD_ENCODE 134 +# define EC_F_EC_GFP_MONT_FIELD_INV 297 # define EC_F_EC_GFP_MONT_FIELD_MUL 131 # define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209 # define EC_F_EC_GFP_MONT_FIELD_SQR 132 @@ -1425,6 +1427,7 @@ int ERR_load_EC_strings(void); # define EC_F_EC_GFP_NIST_FIELD_SQR 201 # define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202 # define EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES 287 +# define EC_F_EC_GFP_SIMPLE_FIELD_INV 298 # define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165 # define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166 # define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102 @@ -1514,6 +1517,7 @@ int ERR_load_EC_strings(void); # define EC_R_BAD_SIGNATURE 156 # define EC_R_BIGNUM_OUT_OF_RANGE 144 # define EC_R_BUFFER_TOO_SMALL 100 +# define EC_R_CANNOT_INVERT 165 # define EC_R_COORDINATES_OUT_OF_RANGE 146 # define EC_R_CURVE_DOES_NOT_SUPPORT_ECDH 160 # define EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING 159 diff --git a/test/build.info b/test/build.info index 2367ab8..a5fe0d6 100644 --- a/test/build.info +++ b/test/build.info @@ -314,6 +314,15 @@ IF[{- !$disabled{tests} -}] INCLUDE[shlibloadtest]=../include ENDIF + + IF[{- !$disabled{ec} -}] + PROGRAMS_NO_INST=ec_internal_test + + SOURCE[ec_internal_test]=ec_internal_test.c testutil.c + INCLUDE[ec_internal_test]=.. ../include ../crypto/ec ../crypto/include + DEPEND[ec_internal_test]=../libcrypto + ENDIF + SOURCE[errtest]=errtest.c testutil.c INCLUDE[errtest]=../include DEPEND[errtest]=../libcrypto diff --git a/test/ec_internal_test.c b/test/ec_internal_test.c new file mode 100644 index 0000000..62f7c96 --- /dev/null +++ b/test/ec_internal_test.c @@ -0,0 +1,220 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include "ec_lcl.h" +#include + +#include "testutil.h" + +static size_t crv_len = 0; +static EC_builtin_curve *curves = NULL; + +/* sanity checks field_inv function pointer in EC_METHOD */ +static int group_field_tests(const EC_GROUP *group, BN_CTX *ctx) +{ + BIGNUM *a = NULL, *b = NULL, *c = NULL; + int ret = 0; + + if (group->meth->field_inv == NULL || group->meth->field_mul == NULL) + return 1; + + BN_CTX_start(ctx); + a = BN_CTX_get(ctx); + b = BN_CTX_get(ctx); + TEST_check(NULL != (c = BN_CTX_get(ctx))); + + /* 1/1 = 1 */ + TEST_check(group->meth->field_inv(group, b, BN_value_one(), ctx)); + TEST_check(BN_is_one(b)); + + /* (1/a)*a = 1 */ + TEST_check(BN_pseudo_rand(a, BN_num_bits(group->field) - 1, + BN_RAND_TOP_ONE, BN_RAND_BOTTOM_ANY)); + TEST_check(group->meth->field_inv(group, b, a, ctx)); + if (group->meth->field_encode) { + TEST_check(group->meth->field_encode(group, a, a, ctx)); + TEST_check(group->meth->field_encode(group, b, b, ctx)); + } + TEST_check(group->meth->field_mul(group, c, a, b, ctx)); + if (group->meth->field_decode) { + TEST_check(group->meth->field_decode(group, c, c, ctx)); + } + TEST_check(BN_is_one(c)); + + /* 1/0 = error */ + BN_zero(a); + TEST_check(!group->meth->field_inv(group, b, a, ctx)); + TEST_check(ERR_GET_LIB(ERR_peek_last_error()) == ERR_LIB_EC); + TEST_check(ERR_GET_REASON(ERR_peek_last_error()) == EC_R_CANNOT_INVERT); + + /* 1/p = error */ + TEST_check(!group->meth->field_inv(group, b, group->field, ctx)); + TEST_check(ERR_GET_LIB(ERR_peek_last_error()) == ERR_LIB_EC); + TEST_check(ERR_GET_REASON(ERR_peek_last_error()) == EC_R_CANNOT_INVERT); + + ERR_clear_error(); + ret = 1; + + BN_CTX_end(ctx); + return ret; +} + +#define EC_GROUP_set_curve(g,p,a,b,ctx) \ + EC_GROUP_set_curve_GFp(g,p,a,b,ctx) + +/* wrapper for group_field_tests for explicit curve params and EC_METHOD */ +static int field_tests(const EC_METHOD *meth, const unsigned char *params, + int len) +{ + BN_CTX *ctx = NULL; + BIGNUM *p = NULL, *a = NULL, *b = NULL; + EC_GROUP *group = NULL; + int ret = 0; + + TEST_check(NULL != (ctx = BN_CTX_new())); + + BN_CTX_start(ctx); + p = BN_CTX_get(ctx); + a = BN_CTX_get(ctx); + TEST_check(NULL != (b = BN_CTX_get(ctx))); + + TEST_check(NULL != (group = EC_GROUP_new(meth))); + TEST_check(BN_bin2bn(params, len, p)); + TEST_check(BN_bin2bn(params + len, len, a)); + TEST_check(BN_bin2bn(params + 2 * len, len, b)); + TEST_check(EC_GROUP_set_curve(group, p, a, b, ctx)); + TEST_check(group_field_tests(group, ctx)); + + ret = 1; + + + BN_CTX_end(ctx); + BN_CTX_free(ctx); + if (group != NULL) + EC_GROUP_free(group); + return ret; +} +#undef EC_GROUP_set_curve + +/* NIST prime curve P-256 */ +static const unsigned char params_p256[] = { + /* p */ + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + /* a */ + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + /* b */ + 0x5A, 0xC6, 0x35, 0xD8, 0xAA, 0x3A, 0x93, 0xE7, 0xB3, 0xEB, 0xBD, 0x55, + 0x76, 0x98, 0x86, 0xBC, 0x65, 0x1D, 0x06, 0xB0, 0xCC, 0x53, 0xB0, 0xF6, + 0x3B, 0xCE, 0x3C, 0x3E, 0x27, 0xD2, 0x60, 0x4B +}; + +#ifndef OPENSSL_NO_EC2M +/* NIST binary curve B-283 */ +static const unsigned char params_b283[] = { + /* p */ + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA1, + /* a */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + /* b */ + 0x02, 0x7B, 0x68, 0x0A, 0xC8, 0xB8, 0x59, 0x6D, 0xA5, 0xA4, 0xAF, 0x8A, + 0x19, 0xA0, 0x30, 0x3F, 0xCA, 0x97, 0xFD, 0x76, 0x45, 0x30, 0x9F, 0xA2, + 0xA5, 0x81, 0x48, 0x5A, 0xF6, 0x26, 0x3E, 0x31, 0x3B, 0x79, 0xA2, 0xF5 +}; +#endif + +/* test EC_GFp_simple_method directly */ +static int field_tests_ecp_simple(void) +{ + fprintf(stdout, "Testing EC_GFp_simple_method()\n"); + return field_tests(EC_GFp_simple_method(), params_p256, + sizeof(params_p256) / 3); +} + +/* test EC_GFp_mont_method directly */ +static int field_tests_ecp_mont(void) +{ + fprintf(stdout, "Testing EC_GFp_mont_method()\n"); + return field_tests(EC_GFp_mont_method(), params_p256, + sizeof(params_p256) / 3); +} + +#ifndef OPENSSL_NO_EC2M +/* test EC_GF2m_simple_method directly */ +static int field_tests_ec2_simple(void) +{ + fprintf(stdout, "Testing EC_GF2m_simple_method()\n"); + return field_tests(EC_GF2m_simple_method(), params_b283, + sizeof(params_b283) / 3); +} +#endif + +/* test default method for a named curve */ +static int field_tests_default(int n) +{ + BN_CTX *ctx = NULL; + EC_GROUP *group = NULL; + int nid = curves[n].nid; + int ret = 0; + + fprintf(stdout, "Testing curve %s\n", OBJ_nid2sn(nid)); + + TEST_check(NULL != (group = EC_GROUP_new_by_curve_name(nid))); + TEST_check(NULL != (ctx = BN_CTX_new())); + TEST_check(group_field_tests(group, ctx)); + + ret = 1; + + if (group != NULL) + EC_GROUP_free(group); + if (ctx != NULL) + BN_CTX_free(ctx); + return ret; +} + +static int setup_tests(void) +{ + crv_len = EC_get_builtin_curves(NULL, 0); + TEST_check(NULL != (curves = OPENSSL_malloc(sizeof(*curves) * crv_len))); + TEST_check(EC_get_builtin_curves(curves, crv_len)); + + ADD_TEST(field_tests_ecp_simple); + ADD_TEST(field_tests_ecp_mont); +#ifndef OPENSSL_NO_EC2M + ADD_TEST(field_tests_ec2_simple); +#endif + ADD_ALL_TESTS(field_tests_default, crv_len); + return 1; +} + +static void cleanup_tests(void) +{ + OPENSSL_free(curves); +} + +int main(int argc, char **argv) +{ + int ret; + + setup_tests(); + + ret = run_tests(argv[0]); + + cleanup_tests(); + + return ret; +} diff --git a/test/recipes/03-test_internal_ec.t b/test/recipes/03-test_internal_ec.t new file mode 100644 index 0000000..0d31d0a --- /dev/null +++ b/test/recipes/03-test_internal_ec.t @@ -0,0 +1,19 @@ +#! /usr/bin/env perl +# Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +use strict; +use OpenSSL::Test; # get 'plan' +use OpenSSL::Test::Simple; +use OpenSSL::Test::Utils; + +setup("test_internal_ec"); + +plan skip_all => "This test is unsupported in a no-ec build" + if disabled("ec"); + +simple_test("test_internal_ec", "ec_internal_test"); From nic.tuv at gmail.com Wed Feb 20 18:22:37 2019 From: nic.tuv at gmail.com (nic.tuv at gmail.com) Date: Wed, 20 Feb 2019 18:22:37 +0000 Subject: [openssl] master update Message-ID: <1550686957.433410.395.nullmailer@dev.openssl.org> The branch master has been updated via c8147d37ccaaf28c430d3fb45a14af36597e48b8 (commit) via fe16ae5f95fa86ddb049a8d1e2caee0b80b32282 (commit) from 0b76ce99aaa5678b44cb99df464e977975747928 (commit) - Log ----------------------------------------------------------------- commit c8147d37ccaaf28c430d3fb45a14af36597e48b8 Author: Nicola Tuveri Date: Fri Feb 8 12:42:25 2019 +0200 Clear BN_FLG_CONSTTIME on BN_CTX_get() Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8253) commit fe16ae5f95fa86ddb049a8d1e2caee0b80b32282 Author: Nicola Tuveri Date: Tue Feb 12 00:37:25 2019 +0200 Test for constant-time flag leakage in BN_CTX This commit adds a simple unit test to make sure that the constant-time flag does not "leak" among BN_CTX frames: - test_ctx_consttime_flag() initializes (and later frees before returning) a BN_CTX object, then it calls in sequence test_ctx_set_ct_flag() and test_ctx_check_ct_flag() using the same BN_CTX object. The process is run twice, once with a "normal" BN_CTX_new() object, then with a BN_CTX_secure_new() one. - test_ctx_set_ct_flag() starts a frame in the given BN_CTX and sets the BN_FLG_CONSTTIME flag on some of the BIGNUMs obtained from the frame before ending it. - test_ctx_check_ct_flag() then starts a new frame and gets a number of BIGNUMs from it. In absence of leaks, none of the BIGNUMs in the new frame should have BN_FLG_CONSTTIME set. In actual BN_CTX usage inside libcrypto the leak could happen at any depth level in the BN_CTX stack, with varying results depending on the patterns of sibling trees of nested function calls sharing the same BN_CTX object, and the effect of unintended BN_FLG_CONSTTIME on the called BN_* functions. This simple unit test abstracts away this complexity and verifies that the leak does not happen between two sibling functions sharing the same BN_CTX object at the same level of nesting. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8253) ----------------------------------------------------------------------- Summary of changes: crypto/bn/bn_ctx.c | 4 +- test/bntest.c | 161 ++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 125 insertions(+), 40 deletions(-) diff --git a/crypto/bn/bn_ctx.c b/crypto/bn/bn_ctx.c index 5106878..d6e7605 100644 --- a/crypto/bn/bn_ctx.c +++ b/crypto/bn/bn_ctx.c @@ -1,5 +1,5 @@ /* - * Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -227,6 +227,8 @@ BIGNUM *BN_CTX_get(BN_CTX *ctx) } /* OK, make sure the returned bignum is "zero" */ BN_zero(ret); + /* clear BN_FLG_CONSTTIME if leaked from previous frames */ + ret->flags &= (~BN_FLG_CONSTTIME); ctx->used++; CTXDBG_RET(ctx, ret); return ret; diff --git a/test/bntest.c b/test/bntest.c index e4b71e2..8c8acb6 100644 --- a/test/bntest.c +++ b/test/bntest.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -123,7 +123,7 @@ static int getint(STANZA *s, int *out, const char *attribute) *out = (int)word; st = 1; -err: + err: BN_free(ret); return st; } @@ -138,7 +138,6 @@ static int equalBN(const char *op, const BIGNUM *expected, const BIGNUM *actual) return 0; } - /* * Return a "random" flag for if a BN should be negated. */ @@ -150,7 +149,6 @@ static int rand_neg(void) return sign[(neg++) % 8]; } - static int test_swap(void) { BIGNUM *a = NULL, *b = NULL, *c = NULL, *d = NULL; @@ -166,7 +164,7 @@ static int test_swap(void) BN_bntest_rand(b, 1024, 1, 0); BN_copy(c, a); BN_copy(d, b); - top = BN_num_bits(a)/BN_BITS2; + top = BN_num_bits(a) / BN_BITS2; /* regular swap */ BN_swap(a, b); @@ -252,14 +250,13 @@ static int test_sub(void) goto err; } st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(c); return st; } - static int test_div_recip(void) { BIGNUM *a = NULL, *b = NULL, *c = NULL, *d = NULL, *e = NULL; @@ -293,7 +290,7 @@ static int test_div_recip(void) goto err; } st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(c); @@ -303,7 +300,6 @@ err: return st; } - static int test_mod(void) { BIGNUM *a = NULL, *b = NULL, *c = NULL, *d = NULL, *e = NULL; @@ -328,7 +324,7 @@ static int test_mod(void) goto err; } st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(c); @@ -573,7 +569,7 @@ static int test_modexp_mont5(void) st = 1; -err: + err: BN_MONT_CTX_free(mont); BN_free(a); BN_free(p); @@ -1141,7 +1137,7 @@ static int file_sum(STANZA *s) } st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(sum); @@ -1190,7 +1186,7 @@ static int file_lshift1(STANZA *s) goto err; st = 1; -err: + err: BN_free(a); BN_free(lshift1); BN_free(zero); @@ -1219,7 +1215,7 @@ static int file_lshift(STANZA *s) goto err; st = 1; -err: + err: BN_free(a); BN_free(lshift); BN_free(ret); @@ -1249,7 +1245,7 @@ static int file_rshift(STANZA *s) } st = 1; -err: + err: BN_free(a); BN_free(rshift); BN_free(ret); @@ -1306,7 +1302,7 @@ static int file_square(STANZA *s) #endif st = 1; -err: + err: BN_free(a); BN_free(square); BN_free(zero); @@ -1343,7 +1339,7 @@ static int file_product(STANZA *s) goto err; st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(product); @@ -1426,7 +1422,7 @@ static int file_quotient(STANZA *s) } st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(quotient); @@ -1480,7 +1476,7 @@ static int file_modmul(STANZA *s) } st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(m); @@ -1532,7 +1528,7 @@ static int file_modexp(STANZA *s) goto err; st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(c); @@ -1560,7 +1556,7 @@ static int file_exp(STANZA *s) goto err; st = 1; -err: + err: BN_free(a); BN_free(e); BN_free(exp); @@ -1591,7 +1587,7 @@ static int file_modsqrt(STANZA *s) goto err; st = 1; -err: + err: BN_free(a); BN_free(p); BN_free(mod_sqrt); @@ -1621,8 +1617,8 @@ static int test_bn2padded(void) /* Test a random numbers at various byte lengths. */ for (size_t bytes = 128 - 7; bytes <= 128; bytes++) { -#define TOP_BIT_ON 0 -#define BOTTOM_BIT_NOTOUCH 0 +# define TOP_BIT_ON 0 +# define BOTTOM_BIT_NOTOUCH 0 if (!TEST_true(BN_rand(n, bytes * 8, TOP_BIT_ON, BOTTOM_BIT_NOTOUCH))) goto err; if (!TEST_int_eq(BN_num_bytes(n),A) bytes @@ -1653,7 +1649,7 @@ static int test_bn2padded(void) } st = 1; -err: + err: BN_free(n); return st; #else @@ -1725,7 +1721,7 @@ static int test_dec2bn(void) goto err; st = 1; -err: + err: BN_free(bn); return st; } @@ -1791,7 +1787,7 @@ static int test_hex2bn(void) goto err; st = 1; -err: + err: BN_free(bn); return st; } @@ -1845,7 +1841,7 @@ static int test_asc2bn(void) goto err; st = 1; -err: + err: BN_free(bn); return st; } @@ -1889,7 +1885,7 @@ static int test_mpi(int i) BN_free(bn2); st = 1; -err: + err: BN_free(bn); return st; } @@ -1915,7 +1911,7 @@ static int test_rand(void) goto err; st = 1; -err: + err: BN_free(bn); return st; } @@ -1979,7 +1975,7 @@ static int test_negzero(void) goto err; st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(c); @@ -2020,7 +2016,7 @@ static int test_badmod(void) ERR_clear_error(); if (!TEST_false(BN_mod_exp_mont_consttime(a, BN_value_one(), BN_value_one(), - zero, ctx, NULL))) + zero, ctx, NULL))) goto err; ERR_clear_error(); @@ -2042,12 +2038,12 @@ static int test_badmod(void) ERR_clear_error(); if (!TEST_false(BN_mod_exp_mont_consttime(a, BN_value_one(), BN_value_one(), - b, ctx, NULL))) + b, ctx, NULL))) goto err; ERR_clear_error(); st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(zero); @@ -2081,7 +2077,7 @@ static int test_expmodzero(void) goto err; st = 1; -err: + err: BN_free(zero); BN_free(a); BN_free(r); @@ -2127,7 +2123,7 @@ static int test_expmodone(void) } ret = 1; -err: + err: BN_free(r); BN_free(a); BN_free(p); @@ -2148,7 +2144,7 @@ static int test_smallprime(void) goto err; st = 1; -err: + err: BN_free(r); return st; } @@ -2172,7 +2168,7 @@ static int test_is_prime(int i) } ret = 1; -err: + err: BN_free(r); return ret; } @@ -2195,11 +2191,97 @@ static int test_not_prime(int i) } ret = 1; -err: + err: BN_free(r); return ret; } +static int test_ctx_set_ct_flag(BN_CTX *c) +{ + int st = 0; + size_t i; + BIGNUM *b[15]; + + BN_CTX_start(c); + for (i = 0; i < OSSL_NELEM(b); i++) { + if (!TEST_ptr(b[i] = BN_CTX_get(c))) + goto err; + if (i % 2 == 1) + BN_set_flags(b[i], BN_FLG_CONSTTIME); + } + + st = 1; + err: + BN_CTX_end(c); + return st; +} + +static int test_ctx_check_ct_flag(BN_CTX *c) +{ + int st = 0; + size_t i; + BIGNUM *b[30]; + + BN_CTX_start(c); + for (i = 0; i < OSSL_NELEM(b); i++) { + if (!TEST_ptr(b[i] = BN_CTX_get(c))) + goto err; + if (!TEST_false(BN_get_flags(b[i], BN_FLG_CONSTTIME))) + goto err; + } + + st = 1; + err: + BN_CTX_end(c); + return st; +} + +static int test_ctx_consttime_flag(void) +{ + /*- + * The constant-time flag should not "leak" among BN_CTX frames: + * + * - test_ctx_set_ct_flag() starts a frame in the given BN_CTX and + * sets the BN_FLG_CONSTTIME flag on some of the BIGNUMs obtained + * from the frame before ending it. + * - test_ctx_check_ct_flag() then starts a new frame and gets a + * number of BIGNUMs from it. In absence of leaks, none of the + * BIGNUMs in the new frame should have BN_FLG_CONSTTIME set. + * + * In actual BN_CTX usage inside libcrypto the leak could happen at + * any depth level in the BN_CTX stack, with varying results + * depending on the patterns of sibling trees of nested function + * calls sharing the same BN_CTX object, and the effect of + * unintended BN_FLG_CONSTTIME on the called BN_* functions. + * + * This simple unit test abstracts away this complexity and verifies + * that the leak does not happen between two sibling functions + * sharing the same BN_CTX object at the same level of nesting. + * + */ + BN_CTX *nctx = NULL; + BN_CTX *sctx = NULL; + size_t i = 0; + int st = 0; + + if (!TEST_ptr(nctx = BN_CTX_new()) + || !TEST_ptr(sctx = BN_CTX_secure_new())) + goto err; + + for (i = 0; i < 2; i++) { + BN_CTX *c = i == 0 ? nctx : sctx; + if (!TEST_true(test_ctx_set_ct_flag(c)) + || !TEST_true(test_ctx_check_ct_flag(c))) + goto err; + } + + st = 1; + err: + BN_CTX_free(nctx); + BN_CTX_free(sctx); + return st; +} + static int file_test_run(STANZA *s) { static const FILETEST filetests[] = { @@ -2298,6 +2380,7 @@ int setup_tests(void) ADD_TEST(test_expmodone); ADD_TEST(test_smallprime); ADD_TEST(test_swap); + ADD_TEST(test_ctx_consttime_flag); #ifndef OPENSSL_NO_EC2M ADD_TEST(test_gf2m_add); ADD_TEST(test_gf2m_mod); From builds at travis-ci.org Wed Feb 20 18:13:33 2019 From: builds at travis-ci.org (Travis CI) Date: Wed, 20 Feb 2019 18:13:33 +0000 Subject: Fixed: openssl/openssl#23294 (master - 0b76ce9) In-Reply-To: Message-ID: <5c6d98cd37218_43fd17e6172b0335196@aad62d27-f5f5-4cf5-9c6d-e70ed92a0149.mail> Build Update for openssl/openssl ------------------------------------- Build: #23294 Status: Fixed Duration: 18 mins and 14 secs Commit: 0b76ce9 (master) Author: Richard Levitte Message: test/context_internal_test.c: don't initialize as a separate test Because test order can be randomized, running foo_init() as a separate test is unsafe practice. Instead, we make it possible to call it multiple times, and call it at the start of each separate test. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8288) View the changeset: https://github.com/openssl/openssl/compare/7dec815ecde2...0b76ce99aaa5 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/496117112?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From nic.tuv at gmail.com Wed Feb 20 18:35:56 2019 From: nic.tuv at gmail.com (nic.tuv at gmail.com) Date: Wed, 20 Feb 2019 18:35:56 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550687756.189153.6205.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via e2e69dce151462e05acd00bd0e56fea56144d485 (commit) via 3c97136e82ecd61f7fcc9032c3159070aeb43475 (commit) from d11e4bcddd3b235e0ca87eb0251a1e5136d95c70 (commit) - Log ----------------------------------------------------------------- commit e2e69dce151462e05acd00bd0e56fea56144d485 Author: Nicola Tuveri Date: Fri Feb 8 12:42:25 2019 +0200 Clear BN_FLG_CONSTTIME on BN_CTX_get() (cherry picked from commit c8147d37ccaaf28c430d3fb45a14af36597e48b8) Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8253) commit 3c97136e82ecd61f7fcc9032c3159070aeb43475 Author: Nicola Tuveri Date: Tue Feb 12 00:37:25 2019 +0200 Test for constant-time flag leakage in BN_CTX This commit adds a simple unit test to make sure that the constant-time flag does not "leak" among BN_CTX frames: - test_ctx_consttime_flag() initializes (and later frees before returning) a BN_CTX object, then it calls in sequence test_ctx_set_ct_flag() and test_ctx_check_ct_flag() using the same BN_CTX object. The process is run twice, once with a "normal" BN_CTX_new() object, then with a BN_CTX_secure_new() one. - test_ctx_set_ct_flag() starts a frame in the given BN_CTX and sets the BN_FLG_CONSTTIME flag on some of the BIGNUMs obtained from the frame before ending it. - test_ctx_check_ct_flag() then starts a new frame and gets a number of BIGNUMs from it. In absence of leaks, none of the BIGNUMs in the new frame should have BN_FLG_CONSTTIME set. In actual BN_CTX usage inside libcrypto the leak could happen at any depth level in the BN_CTX stack, with varying results depending on the patterns of sibling trees of nested function calls sharing the same BN_CTX object, and the effect of unintended BN_FLG_CONSTTIME on the called BN_* functions. This simple unit test abstracts away this complexity and verifies that the leak does not happen between two sibling functions sharing the same BN_CTX object at the same level of nesting. (cherry picked from commit fe16ae5f95fa86ddb049a8d1e2caee0b80b32282) Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8253) ----------------------------------------------------------------------- Summary of changes: crypto/bn/bn_ctx.c | 4 +- test/bntest.c | 161 ++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 125 insertions(+), 40 deletions(-) diff --git a/crypto/bn/bn_ctx.c b/crypto/bn/bn_ctx.c index 228c853..54b7999 100644 --- a/crypto/bn/bn_ctx.c +++ b/crypto/bn/bn_ctx.c @@ -1,5 +1,5 @@ /* - * Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2019 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 @@ -227,6 +227,8 @@ BIGNUM *BN_CTX_get(BN_CTX *ctx) } /* OK, make sure the returned bignum is "zero" */ BN_zero(ret); + /* clear BN_FLG_CONSTTIME if leaked from previous frames */ + ret->flags &= (~BN_FLG_CONSTTIME); ctx->used++; CTXDBG_RET(ctx, ret); return ret; diff --git a/test/bntest.c b/test/bntest.c index 720fd62..077f5e8 100644 --- a/test/bntest.c +++ b/test/bntest.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 @@ -123,7 +123,7 @@ static int getint(STANZA *s, int *out, const char *attribute) *out = (int)word; st = 1; -err: + err: BN_free(ret); return st; } @@ -138,7 +138,6 @@ static int equalBN(const char *op, const BIGNUM *expected, const BIGNUM *actual) return 0; } - /* * Return a "random" flag for if a BN should be negated. */ @@ -150,7 +149,6 @@ static int rand_neg(void) return sign[(neg++) % 8]; } - static int test_swap(void) { BIGNUM *a = NULL, *b = NULL, *c = NULL, *d = NULL; @@ -166,7 +164,7 @@ static int test_swap(void) BN_bntest_rand(b, 1024, 1, 0); BN_copy(c, a); BN_copy(d, b); - top = BN_num_bits(a)/BN_BITS2; + top = BN_num_bits(a) / BN_BITS2; /* regular swap */ BN_swap(a, b); @@ -252,14 +250,13 @@ static int test_sub(void) goto err; } st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(c); return st; } - static int test_div_recip(void) { BIGNUM *a = NULL, *b = NULL, *c = NULL, *d = NULL, *e = NULL; @@ -293,7 +290,7 @@ static int test_div_recip(void) goto err; } st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(c); @@ -303,7 +300,6 @@ err: return st; } - static int test_mod(void) { BIGNUM *a = NULL, *b = NULL, *c = NULL, *d = NULL, *e = NULL; @@ -328,7 +324,7 @@ static int test_mod(void) goto err; } st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(c); @@ -573,7 +569,7 @@ static int test_modexp_mont5(void) st = 1; -err: + err: BN_MONT_CTX_free(mont); BN_free(a); BN_free(p); @@ -1141,7 +1137,7 @@ static int file_sum(STANZA *s) } st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(sum); @@ -1190,7 +1186,7 @@ static int file_lshift1(STANZA *s) goto err; st = 1; -err: + err: BN_free(a); BN_free(lshift1); BN_free(zero); @@ -1219,7 +1215,7 @@ static int file_lshift(STANZA *s) goto err; st = 1; -err: + err: BN_free(a); BN_free(lshift); BN_free(ret); @@ -1249,7 +1245,7 @@ static int file_rshift(STANZA *s) } st = 1; -err: + err: BN_free(a); BN_free(rshift); BN_free(ret); @@ -1306,7 +1302,7 @@ static int file_square(STANZA *s) #endif st = 1; -err: + err: BN_free(a); BN_free(square); BN_free(zero); @@ -1343,7 +1339,7 @@ static int file_product(STANZA *s) goto err; st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(product); @@ -1426,7 +1422,7 @@ static int file_quotient(STANZA *s) } st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(quotient); @@ -1480,7 +1476,7 @@ static int file_modmul(STANZA *s) } st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(m); @@ -1532,7 +1528,7 @@ static int file_modexp(STANZA *s) goto err; st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(c); @@ -1560,7 +1556,7 @@ static int file_exp(STANZA *s) goto err; st = 1; -err: + err: BN_free(a); BN_free(e); BN_free(exp); @@ -1591,7 +1587,7 @@ static int file_modsqrt(STANZA *s) goto err; st = 1; -err: + err: BN_free(a); BN_free(p); BN_free(mod_sqrt); @@ -1621,8 +1617,8 @@ static int test_bn2padded(void) /* Test a random numbers at various byte lengths. */ for (size_t bytes = 128 - 7; bytes <= 128; bytes++) { -#define TOP_BIT_ON 0 -#define BOTTOM_BIT_NOTOUCH 0 +# define TOP_BIT_ON 0 +# define BOTTOM_BIT_NOTOUCH 0 if (!TEST_true(BN_rand(n, bytes * 8, TOP_BIT_ON, BOTTOM_BIT_NOTOUCH))) goto err; if (!TEST_int_eq(BN_num_bytes(n),A) bytes @@ -1653,7 +1649,7 @@ static int test_bn2padded(void) } st = 1; -err: + err: BN_free(n); return st; #else @@ -1725,7 +1721,7 @@ static int test_dec2bn(void) goto err; st = 1; -err: + err: BN_free(bn); return st; } @@ -1791,7 +1787,7 @@ static int test_hex2bn(void) goto err; st = 1; -err: + err: BN_free(bn); return st; } @@ -1845,7 +1841,7 @@ static int test_asc2bn(void) goto err; st = 1; -err: + err: BN_free(bn); return st; } @@ -1889,7 +1885,7 @@ static int test_mpi(int i) BN_free(bn2); st = 1; -err: + err: BN_free(bn); return st; } @@ -1915,7 +1911,7 @@ static int test_rand(void) goto err; st = 1; -err: + err: BN_free(bn); return st; } @@ -1979,7 +1975,7 @@ static int test_negzero(void) goto err; st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(c); @@ -2020,7 +2016,7 @@ static int test_badmod(void) ERR_clear_error(); if (!TEST_false(BN_mod_exp_mont_consttime(a, BN_value_one(), BN_value_one(), - zero, ctx, NULL))) + zero, ctx, NULL))) goto err; ERR_clear_error(); @@ -2042,12 +2038,12 @@ static int test_badmod(void) ERR_clear_error(); if (!TEST_false(BN_mod_exp_mont_consttime(a, BN_value_one(), BN_value_one(), - b, ctx, NULL))) + b, ctx, NULL))) goto err; ERR_clear_error(); st = 1; -err: + err: BN_free(a); BN_free(b); BN_free(zero); @@ -2081,7 +2077,7 @@ static int test_expmodzero(void) goto err; st = 1; -err: + err: BN_free(zero); BN_free(a); BN_free(r); @@ -2127,7 +2123,7 @@ static int test_expmodone(void) } ret = 1; -err: + err: BN_free(r); BN_free(a); BN_free(p); @@ -2148,7 +2144,7 @@ static int test_smallprime(void) goto err; st = 1; -err: + err: BN_free(r); return st; } @@ -2172,7 +2168,7 @@ static int test_is_prime(int i) } ret = 1; -err: + err: BN_free(r); return ret; } @@ -2195,11 +2191,97 @@ static int test_not_prime(int i) } ret = 1; -err: + err: BN_free(r); return ret; } +static int test_ctx_set_ct_flag(BN_CTX *c) +{ + int st = 0; + size_t i; + BIGNUM *b[15]; + + BN_CTX_start(c); + for (i = 0; i < OSSL_NELEM(b); i++) { + if (!TEST_ptr(b[i] = BN_CTX_get(c))) + goto err; + if (i % 2 == 1) + BN_set_flags(b[i], BN_FLG_CONSTTIME); + } + + st = 1; + err: + BN_CTX_end(c); + return st; +} + +static int test_ctx_check_ct_flag(BN_CTX *c) +{ + int st = 0; + size_t i; + BIGNUM *b[30]; + + BN_CTX_start(c); + for (i = 0; i < OSSL_NELEM(b); i++) { + if (!TEST_ptr(b[i] = BN_CTX_get(c))) + goto err; + if (!TEST_false(BN_get_flags(b[i], BN_FLG_CONSTTIME))) + goto err; + } + + st = 1; + err: + BN_CTX_end(c); + return st; +} + +static int test_ctx_consttime_flag(void) +{ + /*- + * The constant-time flag should not "leak" among BN_CTX frames: + * + * - test_ctx_set_ct_flag() starts a frame in the given BN_CTX and + * sets the BN_FLG_CONSTTIME flag on some of the BIGNUMs obtained + * from the frame before ending it. + * - test_ctx_check_ct_flag() then starts a new frame and gets a + * number of BIGNUMs from it. In absence of leaks, none of the + * BIGNUMs in the new frame should have BN_FLG_CONSTTIME set. + * + * In actual BN_CTX usage inside libcrypto the leak could happen at + * any depth level in the BN_CTX stack, with varying results + * depending on the patterns of sibling trees of nested function + * calls sharing the same BN_CTX object, and the effect of + * unintended BN_FLG_CONSTTIME on the called BN_* functions. + * + * This simple unit test abstracts away this complexity and verifies + * that the leak does not happen between two sibling functions + * sharing the same BN_CTX object at the same level of nesting. + * + */ + BN_CTX *nctx = NULL; + BN_CTX *sctx = NULL; + size_t i = 0; + int st = 0; + + if (!TEST_ptr(nctx = BN_CTX_new()) + || !TEST_ptr(sctx = BN_CTX_secure_new())) + goto err; + + for (i = 0; i < 2; i++) { + BN_CTX *c = i == 0 ? nctx : sctx; + if (!TEST_true(test_ctx_set_ct_flag(c)) + || !TEST_true(test_ctx_check_ct_flag(c))) + goto err; + } + + st = 1; + err: + BN_CTX_free(nctx); + BN_CTX_free(sctx); + return st; +} + static int file_test_run(STANZA *s) { static const FILETEST filetests[] = { @@ -2287,6 +2369,7 @@ int setup_tests(void) ADD_TEST(test_expmodone); ADD_TEST(test_smallprime); ADD_TEST(test_swap); + ADD_TEST(test_ctx_consttime_flag); #ifndef OPENSSL_NO_EC2M ADD_TEST(test_gf2m_add); ADD_TEST(test_gf2m_mod); From pauli at openssl.org Wed Feb 20 21:39:15 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Wed, 20 Feb 2019 21:39:15 +0000 Subject: [openssl] master update Message-ID: <1550698755.644883.20156.nullmailer@dev.openssl.org> The branch master has been updated via 54d00677f305375eee65a0c9edb5f0980c5f020f (commit) from c8147d37ccaaf28c430d3fb45a14af36597e48b8 (commit) - Log ----------------------------------------------------------------- commit 54d00677f305375eee65a0c9edb5f0980c5f020f Author: Shane Lontis Date: Tue Feb 19 13:56:33 2019 +1000 cfi build fixes in x86-64 ghash assembly Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8281) ----------------------------------------------------------------------- Summary of changes: crypto/modes/asm/ghash-x86_64.pl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crypto/modes/asm/ghash-x86_64.pl b/crypto/modes/asm/ghash-x86_64.pl index d6d0d75..a5d216a 100644 --- a/crypto/modes/asm/ghash-x86_64.pl +++ b/crypto/modes/asm/ghash-x86_64.pl @@ -1155,6 +1155,7 @@ ___ } else { $code.=<<___; jmp .L_init_clmul +.cfi_endproc .size gcm_init_avx,.-gcm_init_avx ___ } @@ -1594,6 +1595,7 @@ ___ } else { $code.=<<___; jmp .L_ghash_clmul +.cfi_endproc .size gcm_ghash_avx,.-gcm_ghash_avx ___ } From levitte at openssl.org Wed Feb 20 22:17:23 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 20 Feb 2019 22:17:23 +0000 Subject: [openssl] master update Message-ID: <1550701043.066552.5030.nullmailer@dev.openssl.org> The branch master has been updated via 459217237640369a092084ccb80175b5758f40b1 (commit) from 54d00677f305375eee65a0c9edb5f0980c5f020f (commit) - Log ----------------------------------------------------------------- commit 459217237640369a092084ccb80175b5758f40b1 Author: Markus Stockhausen Date: Mon Feb 11 18:38:46 2019 +0100 MIPS32R3 provides the EXT instruction to extract bits from registers. As the AES table is already 1K aligned we can use it everywhere and speedup table address calculation by 10%. Performance numbers: decryption 16B 64B 256B 1024B 8192B ------------------------------------------------------------------- aes-256-cbc 5636.84k 6443.26k 6689.02k 6752.94k 6766.59k bef. aes-256-cbc 6200.31k 7195.71k 7504.30k 7585.11k 7599.45k aft. ------------------------------------------------------------------- aes-128-cbc 7313.85k 8653.67k 9079.55k 9188.35k 9205.08k bef. aes-128-cbc 7925.38k 9557.99k 10092.37k 10232.15k 10272.77k aft. encryption 16B 64B 256B 1024B 8192B ------------------------------------------------------------------- aes-256 cbc 6009.65k 6592.70k 6766.59k 6806.87k 6815.74k bef. aes-256 cbc 6643.93k 7388.69k 7605.33k 7657.81k 7675.90k aft. ------------------------------------------------------------------- aes-128 cbc 7862.09k 8892.48k 9214.04k 9291.78k 9311.57k bef. aes-128 cbc 8639.29k 9881.17k 10265.86k 10363.56k 10392.92k aft. Reviewed-by: Paul Dale Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8206) ----------------------------------------------------------------------- Summary of changes: crypto/aes/asm/aes-mips.pl | 134 ++++++++++++++++++++++++++++----------------- 1 file changed, 85 insertions(+), 49 deletions(-) diff --git a/crypto/aes/asm/aes-mips.pl b/crypto/aes/asm/aes-mips.pl index 66c97cd..c93edc6 100644 --- a/crypto/aes/asm/aes-mips.pl +++ b/crypto/aes/asm/aes-mips.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2019 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -34,6 +34,11 @@ # instead, code path is chosen upon pre-process time, pass -mips32r2 # or/and -msmartmips. +# February 2019 +# +# Normalize MIPS32R2 AES table address calculation by always using EXT +# instruction. This reduces the standard codebase by another 10%. + ###################################################################### # There is a number of MIPS ABI in use, O32 and N32/64 are most # widely used. Then there is a new contender: NUBI. It appears that if @@ -224,6 +229,33 @@ _mips_AES_encrypt: _xtr $i0,$s1,16-2 #else +#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) + move $i0,$Tbl + move $i1,$Tbl + move $i2,$Tbl + move $i3,$Tbl + ext $t0,$s1,16,8 +.Loop_enc: + ext $t1,$s2,16,8 + ext $t2,$s3,16,8 + ext $t3,$s0,16,8 + $PTR_INS $i0,$t0,2,8 + $PTR_INS $i1,$t1,2,8 + $PTR_INS $i2,$t2,2,8 + $PTR_INS $i3,$t3,2,8 + lw $t0,0($i0) # Te1[s1>>16] + ext $t4,$s2,8,8 + lw $t1,0($i1) # Te1[s2>>16] + ext $t5,$s3,8,8 + lw $t2,0($i2) # Te1[s3>>16] + ext $t6,$s0,8,8 + lw $t3,0($i3) # Te1[s0>>16] + ext $t7,$s1,8,8 + $PTR_INS $i0,$t4,2,8 + $PTR_INS $i1,$t5,2,8 + $PTR_INS $i2,$t6,2,8 + $PTR_INS $i3,$t7,2,8 +#else _xtr $i0,$s1,16-2 .Loop_enc: _xtr $i1,$s2,16-2 @@ -237,16 +269,6 @@ _mips_AES_encrypt: $PTR_ADD $i1,$Tbl $PTR_ADD $i2,$Tbl $PTR_ADD $i3,$Tbl -#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) - lw $t0,0($i0) # Te1[s1>>16] - _xtr $i0,$s2,8-2 - lw $t1,0($i1) # Te1[s2>>16] - _xtr $i1,$s3,8-2 - lw $t2,0($i2) # Te1[s3>>16] - _xtr $i2,$s0,8-2 - lw $t3,0($i3) # Te1[s0>>16] - _xtr $i3,$s1,8-2 -#else lwl $t0,3($i0) # Te1[s1>>16] lwl $t1,3($i1) # Te1[s2>>16] lwl $t2,3($i2) # Te1[s3>>16] @@ -259,7 +281,6 @@ _mips_AES_encrypt: _xtr $i2,$s0,8-2 lwr $t3,2($i3) # Te1[s0>>16] _xtr $i3,$s1,8-2 -#endif and $i0,0x3fc and $i1,0x3fc and $i2,0x3fc @@ -268,6 +289,7 @@ _mips_AES_encrypt: $PTR_ADD $i1,$Tbl $PTR_ADD $i2,$Tbl $PTR_ADD $i3,$Tbl +#endif #if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) rotr $t0,$t0,8 rotr $t1,$t1,8 @@ -275,22 +297,18 @@ _mips_AES_encrypt: rotr $t3,$t3,8 # if defined(_MIPSEL) lw $t4,0($i0) # Te2[s2>>8] - _xtr $i0,$s3,0-2 + ext $t8,$s3,0,8 lw $t5,0($i1) # Te2[s3>>8] - _xtr $i1,$s0,0-2 + ext $t9,$s0,0,8 lw $t6,0($i2) # Te2[s0>>8] - _xtr $i2,$s1,0-2 + ext $t10,$s1,0,8 lw $t7,0($i3) # Te2[s1>>8] - _xtr $i3,$s2,0-2 + ext $t11,$s2,0,8 + $PTR_INS $i0,$t8,2,8 + $PTR_INS $i1,$t9,2,8 + $PTR_INS $i2,$t10,2,8 + $PTR_INS $i3,$t11,2,8 - and $i0,0x3fc - and $i1,0x3fc - and $i2,0x3fc - and $i3,0x3fc - $PTR_ADD $i0,$Tbl - $PTR_ADD $i1,$Tbl - $PTR_ADD $i2,$Tbl - $PTR_ADD $i3,$Tbl lw $t8,0($i0) # Te3[s3] $PTR_INS $i0,$s0,2,8 lw $t9,0($i1) # Te3[s0] @@ -411,6 +429,9 @@ _mips_AES_encrypt: xor $s3,$t3 .set noreorder bnez $cnt,.Loop_enc +#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) + ext $t0,$s1,16,8 +#endif _xtr $i0,$s1,16-2 #endif @@ -812,6 +833,33 @@ _mips_AES_decrypt: _xtr $i0,$s3,16-2 #else +#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) + move $i0,$Tbl + move $i1,$Tbl + move $i2,$Tbl + move $i3,$Tbl + ext $t0,$s3,16,8 +.Loop_dec: + ext $t1,$s0,16,8 + ext $t2,$s1,16,8 + ext $t3,$s2,16,8 + $PTR_INS $i0,$t0,2,8 + $PTR_INS $i1,$t1,2,8 + $PTR_INS $i2,$t2,2,8 + $PTR_INS $i3,$t3,2,8 + lw $t0,0($i0) # Td1[s3>>16] + ext $t4,$s2,8,8 + lw $t1,0($i1) # Td1[s0>>16] + ext $t5,$s3,8,8 + lw $t2,0($i2) # Td1[s1>>16] + ext $t6,$s0,8,8 + lw $t3,0($i3) # Td1[s2>>16] + ext $t7,$s1,8,8 + $PTR_INS $i0,$t4,2,8 + $PTR_INS $i1,$t5,2,8 + $PTR_INS $i2,$t6,2,8 + $PTR_INS $i3,$t7,2,8 +#else _xtr $i0,$s3,16-2 .Loop_dec: _xtr $i1,$s0,16-2 @@ -825,16 +873,6 @@ _mips_AES_decrypt: $PTR_ADD $i1,$Tbl $PTR_ADD $i2,$Tbl $PTR_ADD $i3,$Tbl -#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) - lw $t0,0($i0) # Td1[s3>>16] - _xtr $i0,$s2,8-2 - lw $t1,0($i1) # Td1[s0>>16] - _xtr $i1,$s3,8-2 - lw $t2,0($i2) # Td1[s1>>16] - _xtr $i2,$s0,8-2 - lw $t3,0($i3) # Td1[s2>>16] - _xtr $i3,$s1,8-2 -#else lwl $t0,3($i0) # Td1[s3>>16] lwl $t1,3($i1) # Td1[s0>>16] lwl $t2,3($i2) # Td1[s1>>16] @@ -847,8 +885,6 @@ _mips_AES_decrypt: _xtr $i2,$s0,8-2 lwr $t3,2($i3) # Td1[s2>>16] _xtr $i3,$s1,8-2 -#endif - and $i0,0x3fc and $i1,0x3fc and $i2,0x3fc @@ -857,6 +893,7 @@ _mips_AES_decrypt: $PTR_ADD $i1,$Tbl $PTR_ADD $i2,$Tbl $PTR_ADD $i3,$Tbl +#endif #if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) rotr $t0,$t0,8 rotr $t1,$t1,8 @@ -864,22 +901,17 @@ _mips_AES_decrypt: rotr $t3,$t3,8 # if defined(_MIPSEL) lw $t4,0($i0) # Td2[s2>>8] - _xtr $i0,$s1,0-2 + ext $t8,$s1,0,8 lw $t5,0($i1) # Td2[s3>>8] - _xtr $i1,$s2,0-2 + ext $t9,$s2,0,8 lw $t6,0($i2) # Td2[s0>>8] - _xtr $i2,$s3,0-2 + ext $t10,$s3,0,8 lw $t7,0($i3) # Td2[s1>>8] - _xtr $i3,$s0,0-2 - - and $i0,0x3fc - and $i1,0x3fc - and $i2,0x3fc - and $i3,0x3fc - $PTR_ADD $i0,$Tbl - $PTR_ADD $i1,$Tbl - $PTR_ADD $i2,$Tbl - $PTR_ADD $i3,$Tbl + ext $t11,$s0,0,8 + $PTR_INS $i0,$t8,2,8 + $PTR_INS $i1,$t9,2,8 + $PTR_INS $i2,$t10,2,8 + $PTR_INS $i3,$t11,2,8 lw $t8,0($i0) # Td3[s1] $PTR_INS $i0,$s0,2,8 lw $t9,0($i1) # Td3[s2] @@ -1001,6 +1033,10 @@ _mips_AES_decrypt: xor $s3,$t3 .set noreorder bnez $cnt,.Loop_dec +#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) + ext $t0,$s3,16,8 +#endif + _xtr $i0,$s3,16-2 #endif From no-reply at appveyor.com Wed Feb 20 23:34:47 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 20 Feb 2019 23:34:47 +0000 Subject: Build failed: openssl master.22701 Message-ID: <20190220233447.1.4B0399D0A3997D4B@appveyor.com> An HTML attachment was scrubbed... URL: From matt at openssl.org Thu Feb 21 09:26:48 2019 From: matt at openssl.org (Matt Caswell) Date: Thu, 21 Feb 2019 09:26:48 +0000 Subject: [openssl] master update Message-ID: <1550741208.467100.618.nullmailer@dev.openssl.org> The branch master has been updated via 4ac5e43da6d9ee828240e6d347c48c8fae6573a2 (commit) from 459217237640369a092084ccb80175b5758f40b1 (commit) - Log ----------------------------------------------------------------- commit 4ac5e43da6d9ee828240e6d347c48c8fae6573a2 Author: Hubert Kario Date: Wed Feb 20 16:21:18 2019 +0100 SSL_CONF_cmd: fix doc for NoRenegotiation The option is a flag for Options, not a standalone setting. Reviewed-by: Paul Dale Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8292) ----------------------------------------------------------------------- Summary of changes: doc/man3/SSL_CONF_cmd.pod | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/doc/man3/SSL_CONF_cmd.pod b/doc/man3/SSL_CONF_cmd.pod index b8c2a35..5759c7f 100644 --- a/doc/man3/SSL_CONF_cmd.pod +++ b/doc/man3/SSL_CONF_cmd.pod @@ -308,11 +308,6 @@ Attempts to pad TLSv1.3 records so that they are a multiple of B in length on send. A B of 0 or 1 turns off padding. Otherwise, the B must be >1 or <=16384. -=item B - -Disables all attempts at renegotiation in TLSv1.2 and earlier, same as setting -B. - =item B This sets the supported signature algorithms for TLSv1.2 and TLSv1.3. @@ -456,6 +451,9 @@ Only used by servers. B: set B flag. Only used by servers. +B: disables all attempts at renegotiation in TLSv1.2 and +earlier, same as setting B. + B: permits the use of unsafe legacy renegotiation. Equivalent to B. From matt at openssl.org Thu Feb 21 09:27:02 2019 From: matt at openssl.org (Matt Caswell) Date: Thu, 21 Feb 2019 09:27:02 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550741222.844988.1723.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 143ee7b673b4544e3e749218548c8671c4414270 (commit) from e2e69dce151462e05acd00bd0e56fea56144d485 (commit) - Log ----------------------------------------------------------------- commit 143ee7b673b4544e3e749218548c8671c4414270 Author: Hubert Kario Date: Wed Feb 20 16:21:18 2019 +0100 SSL_CONF_cmd: fix doc for NoRenegotiation The option is a flag for Options, not a standalone setting. Reviewed-by: Paul Dale Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8292) (cherry picked from commit 4ac5e43da6d9ee828240e6d347c48c8fae6573a2) ----------------------------------------------------------------------- Summary of changes: doc/man3/SSL_CONF_cmd.pod | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/doc/man3/SSL_CONF_cmd.pod b/doc/man3/SSL_CONF_cmd.pod index a263c61..2d86ce4 100644 --- a/doc/man3/SSL_CONF_cmd.pod +++ b/doc/man3/SSL_CONF_cmd.pod @@ -308,11 +308,6 @@ Attempts to pad TLSv1.3 records so that they are a multiple of B in length on send. A B of 0 or 1 turns off padding. Otherwise, the B must be >1 or <=16384. -=item B - -Disables all attempts at renegotiation in TLSv1.2 and earlier, same as setting -B. - =item B This sets the supported signature algorithms for TLSv1.2 and TLSv1.3. @@ -456,6 +451,9 @@ Only used by servers. B: set B flag. Only used by servers. +B: disables all attempts at renegotiation in TLSv1.2 and +earlier, same as setting B. + B: permits the use of unsafe legacy renegotiation. Equivalent to B. From matt at openssl.org Thu Feb 21 09:47:27 2019 From: matt at openssl.org (Matt Caswell) Date: Thu, 21 Feb 2019 09:47:27 +0000 Subject: [openssl] master update Message-ID: <1550742447.091810.22769.nullmailer@dev.openssl.org> The branch master has been updated via 695dd3a332fdd54b873fd0d08f9ae720141f24cd (commit) from 4ac5e43da6d9ee828240e6d347c48c8fae6573a2 (commit) - Log ----------------------------------------------------------------- commit 695dd3a332fdd54b873fd0d08f9ae720141f24cd Author: Matt Caswell Date: Wed Feb 20 11:11:04 2019 +0000 Fix dasync engine The aes128_cbc_hmac_sha1 cipher in the dasync engine is broken. Probably by commit e38c2e8535 which removed use of the "enc" variable...but not completely. Reviewed-by: Richard Levitte Reviewed-by: Matthias St. Pierre (Merged from https://github.com/openssl/openssl/pull/8291) ----------------------------------------------------------------------- Summary of changes: engines/e_dasync.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/engines/e_dasync.c b/engines/e_dasync.c index 3d80610..f8a52e9 100644 --- a/engines/e_dasync.c +++ b/engines/e_dasync.c @@ -138,7 +138,6 @@ struct dasync_pipeline_ctx { unsigned char **inbufs; unsigned char **outbufs; size_t *lens; - int enc; unsigned char tlsaad[SSL_MAX_PIPELINES][EVP_AEAD_TLS1_AAD_LEN]; unsigned int aadctr; }; @@ -617,7 +616,7 @@ static int dasync_cipher_ctrl_helper(EVP_CIPHER_CTX *ctx, int type, int arg, len = p[arg - 2] << 8 | p[arg - 1]; - if (pipe_ctx->enc) { + if (EVP_CIPHER_CTX_encrypting(ctx)) { if ((p[arg - 4] << 8 | p[arg - 3]) >= TLS1_1_VERSION) { if (len < AES_BLOCK_SIZE) return 0; From matt at openssl.org Thu Feb 21 09:47:43 2019 From: matt at openssl.org (Matt Caswell) Date: Thu, 21 Feb 2019 09:47:43 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550742463.009784.23725.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via ebf7bd7f4b5200c4a0e7d86b1f13442e7a6154b6 (commit) from 143ee7b673b4544e3e749218548c8671c4414270 (commit) - Log ----------------------------------------------------------------- commit ebf7bd7f4b5200c4a0e7d86b1f13442e7a6154b6 Author: Matt Caswell Date: Wed Feb 20 11:11:04 2019 +0000 Fix dasync engine The aes128_cbc_hmac_sha1 cipher in the dasync engine is broken. Probably by commit e38c2e8535 which removed use of the "enc" variable...but not completely. Reviewed-by: Richard Levitte Reviewed-by: Matthias St. Pierre (Merged from https://github.com/openssl/openssl/pull/8291) (cherry picked from commit 695dd3a332fdd54b873fd0d08f9ae720141f24cd) ----------------------------------------------------------------------- Summary of changes: engines/e_dasync.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/engines/e_dasync.c b/engines/e_dasync.c index b005f42..0fe1d43 100644 --- a/engines/e_dasync.c +++ b/engines/e_dasync.c @@ -138,7 +138,6 @@ struct dasync_pipeline_ctx { unsigned char **inbufs; unsigned char **outbufs; size_t *lens; - int enc; unsigned char tlsaad[SSL_MAX_PIPELINES][EVP_AEAD_TLS1_AAD_LEN]; unsigned int aadctr; }; @@ -603,7 +602,7 @@ static int dasync_cipher_ctrl_helper(EVP_CIPHER_CTX *ctx, int type, int arg, len = p[arg - 2] << 8 | p[arg - 1]; - if (pipe_ctx->enc) { + if (EVP_CIPHER_CTX_encrypting(ctx)) { if ((p[arg - 4] << 8 | p[arg - 3]) >= TLS1_1_VERSION) { if (len < AES_BLOCK_SIZE) return 0; From no-reply at appveyor.com Thu Feb 21 13:10:05 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 21 Feb 2019 13:10:05 +0000 Subject: Build failed: openssl master.22719 Message-ID: <20190221131005.1.922839C56612C9ED@appveyor.com> An HTML attachment was scrubbed... URL: From nic.tuv at gmail.com Thu Feb 21 20:02:37 2019 From: nic.tuv at gmail.com (nic.tuv at gmail.com) Date: Thu, 21 Feb 2019 20:02:37 +0000 Subject: [openssl] OpenSSL_1_0_2-stable update Message-ID: <1550779357.800792.12367.nullmailer@dev.openssl.org> The branch OpenSSL_1_0_2-stable has been updated via 9acdddf1acd6f6be41ddb711b6b55fe7f5481320 (commit) via d769ce09b690237c35c32032edbaf0339c480e85 (commit) from e30dfbebe7fa3af40fd840fc89b004376fc2b21f (commit) - Log ----------------------------------------------------------------- commit 9acdddf1acd6f6be41ddb711b6b55fe7f5481320 Author: Nicola Tuveri Date: Fri Feb 8 12:42:25 2019 +0200 Clear BN_FLG_CONSTTIME on BN_CTX_get() (cherry picked from commit c8147d37ccaaf28c430d3fb45a14af36597e48b8) Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8295) commit d769ce09b690237c35c32032edbaf0339c480e85 Author: Nicola Tuveri Date: Tue Feb 12 00:37:25 2019 +0200 Test for constant-time flag leakage in BN_CTX This commit adds a simple unit test to make sure that the constant-time flag does not "leak" among BN_CTX frames: - test_ctx_consttime_flag() initializes (and later frees before returning) a BN_CTX object, then it calls in sequence test_ctx_set_ct_flag() and test_ctx_check_ct_flag() using the same BN_CTX object. - test_ctx_set_ct_flag() starts a frame in the given BN_CTX and sets the BN_FLG_CONSTTIME flag on some of the BIGNUMs obtained from the frame before ending it. - test_ctx_check_ct_flag() then starts a new frame and gets a number of BIGNUMs from it. In absence of leaks, none of the BIGNUMs in the new frame should have BN_FLG_CONSTTIME set. In actual BN_CTX usage inside libcrypto the leak could happen at any depth level in the BN_CTX stack, with varying results depending on the patterns of sibling trees of nested function calls sharing the same BN_CTX object, and the effect of unintended BN_FLG_CONSTTIME on the called BN_* functions. This simple unit test abstracts away this complexity and verifies that the leak does not happen between two sibling functions sharing the same BN_CTX object at the same level of nesting. (manually cherry picked from commit fe16ae5f95fa86ddb049a8d1e2caee0b80b32282) Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8295) ----------------------------------------------------------------------- Summary of changes: crypto/bn/bn_ctx.c | 2 ++ crypto/bn/bntest.c | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) diff --git a/crypto/bn/bn_ctx.c b/crypto/bn/bn_ctx.c index 526c6a0..3391134 100644 --- a/crypto/bn/bn_ctx.c +++ b/crypto/bn/bn_ctx.c @@ -299,6 +299,8 @@ BIGNUM *BN_CTX_get(BN_CTX *ctx) } /* OK, make sure the returned bignum is "zero" */ BN_zero(ret); + /* clear BN_FLG_CONSTTIME if leaked from previous frames */ + ret->flags &= (~BN_FLG_CONSTTIME); ctx->used++; CTXDBG_RET(ctx, ret); return ret; diff --git a/crypto/bn/bntest.c b/crypto/bn/bntest.c index abe5dbe..75aa707 100644 --- a/crypto/bn/bntest.c +++ b/crypto/bn/bntest.c @@ -89,6 +89,10 @@ #include #include +#ifndef OSSL_NELEM +# define OSSL_NELEM(x) (sizeof(x)/sizeof(x[0])) +#endif + const int num0 = 100; /* number of tests */ const int num1 = 50; /* additional tests for some functions */ const int num2 = 5; /* number of tests for slow functions */ @@ -123,6 +127,7 @@ int test_gf2m_mod_solve_quad(BIO *bp, BN_CTX *ctx); int test_kron(BIO *bp, BN_CTX *ctx); int test_sqrt(BIO *bp, BN_CTX *ctx); int rand_neg(void); +static int test_ctx_consttime_flag(void); static int results = 0; static unsigned char lst[] = @@ -330,6 +335,15 @@ int main(int argc, char *argv[]) goto err; (void)BIO_flush(out); #endif + + /* silently flush any pre-existing error on the stack */ + ERR_clear_error(); + + message(out, "BN_CTX_get BN_FLG_CONSTTIME"); + if (!test_ctx_consttime_flag()) + goto err; + (void)BIO_flush(out); + BN_CTX_free(ctx); BIO_free(out); @@ -2158,3 +2172,90 @@ int rand_neg(void) return (sign[(neg++) % 8]); } + +static int test_ctx_set_ct_flag(BN_CTX *c) +{ + int st = 0; + size_t i; + BIGNUM *b[15]; + + BN_CTX_start(c); + for (i = 0; i < OSSL_NELEM(b); i++) { + if (NULL == (b[i] = BN_CTX_get(c))) { + fprintf(stderr, "ERROR: BN_CTX_get() failed.\n"); + goto err; + } + if (i % 2 == 1) + BN_set_flags(b[i], BN_FLG_CONSTTIME); + } + + st = 1; + err: + BN_CTX_end(c); + return st; +} + +static int test_ctx_check_ct_flag(BN_CTX *c) +{ + int st = 0; + size_t i; + BIGNUM *b[30]; + + BN_CTX_start(c); + for (i = 0; i < OSSL_NELEM(b); i++) { + if (NULL == (b[i] = BN_CTX_get(c))) { + fprintf(stderr, "ERROR: BN_CTX_get() failed.\n"); + goto err; + } + if (BN_get_flags(b[i], BN_FLG_CONSTTIME) != 0) { + fprintf(stderr, "ERROR: BN_FLG_CONSTTIME should not be set.\n"); + goto err; + } + } + + st = 1; + err: + BN_CTX_end(c); + return st; +} + +static int test_ctx_consttime_flag(void) +{ + /*- + * The constant-time flag should not "leak" among BN_CTX frames: + * + * - test_ctx_set_ct_flag() starts a frame in the given BN_CTX and + * sets the BN_FLG_CONSTTIME flag on some of the BIGNUMs obtained + * from the frame before ending it. + * - test_ctx_check_ct_flag() then starts a new frame and gets a + * number of BIGNUMs from it. In absence of leaks, none of the + * BIGNUMs in the new frame should have BN_FLG_CONSTTIME set. + * + * In actual BN_CTX usage inside libcrypto the leak could happen at + * any depth level in the BN_CTX stack, with varying results + * depending on the patterns of sibling trees of nested function + * calls sharing the same BN_CTX object, and the effect of + * unintended BN_FLG_CONSTTIME on the called BN_* functions. + * + * This simple unit test abstracts away this complexity and verifies + * that the leak does not happen between two sibling functions + * sharing the same BN_CTX object at the same level of nesting. + * + */ + BN_CTX *c = NULL; + int st = 0; + + if (NULL == (c = BN_CTX_new())) { + fprintf(stderr, "ERROR: BN_CTX_new() failed.\n"); + goto err; + } + + if (!test_ctx_set_ct_flag(c) + || !test_ctx_check_ct_flag(c)) + goto err; + + st = 1; + err: + BN_CTX_free(c); + return st; +} From nic.tuv at gmail.com Thu Feb 21 20:05:35 2019 From: nic.tuv at gmail.com (nic.tuv at gmail.com) Date: Thu, 21 Feb 2019 20:05:35 +0000 Subject: [openssl] OpenSSL_1_1_0-stable update Message-ID: <1550779535.643660.15438.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_0-stable has been updated via f499873c2ff5a6da5f1a23c099730f97c822e90c (commit) via c4e901dbdb217a78fcca75478dd8cf3720f6219c (commit) from b7fc0784c4cfe81db8728f814925c6f98dd948d1 (commit) - Log ----------------------------------------------------------------- commit f499873c2ff5a6da5f1a23c099730f97c822e90c Author: Nicola Tuveri Date: Fri Feb 8 12:42:25 2019 +0200 Clear BN_FLG_CONSTTIME on BN_CTX_get() (cherry picked from commit c8147d37ccaaf28c430d3fb45a14af36597e48b8) Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8294) commit c4e901dbdb217a78fcca75478dd8cf3720f6219c Author: Nicola Tuveri Date: Tue Feb 12 00:37:25 2019 +0200 Test for constant-time flag leakage in BN_CTX This commit adds a simple unit test to make sure that the constant-time flag does not "leak" among BN_CTX frames: - test_ctx_consttime_flag() initializes (and later frees before returning) a BN_CTX object, then it calls in sequence test_ctx_set_ct_flag() and test_ctx_check_ct_flag() using the same BN_CTX object. The process is run twice, once with a "normal" BN_CTX_new() object, then with a BN_CTX_secure_new() one. - test_ctx_set_ct_flag() starts a frame in the given BN_CTX and sets the BN_FLG_CONSTTIME flag on some of the BIGNUMs obtained from the frame before ending it. - test_ctx_check_ct_flag() then starts a new frame and gets a number of BIGNUMs from it. In absence of leaks, none of the BIGNUMs in the new frame should have BN_FLG_CONSTTIME set. In actual BN_CTX usage inside libcrypto the leak could happen at any depth level in the BN_CTX stack, with varying results depending on the patterns of sibling trees of nested function calls sharing the same BN_CTX object, and the effect of unintended BN_FLG_CONSTTIME on the called BN_* functions. This simple unit test abstracts away this complexity and verifies that the leak does not happen between two sibling functions sharing the same BN_CTX object at the same level of nesting. (manually cherry picked from commit fe16ae5f95fa86ddb049a8d1e2caee0b80b32282) Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8294) ----------------------------------------------------------------------- Summary of changes: crypto/bn/bn_ctx.c | 4 +- test/bntest.c | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 111 insertions(+), 4 deletions(-) diff --git a/crypto/bn/bn_ctx.c b/crypto/bn/bn_ctx.c index 68c0468..51db38b 100644 --- a/crypto/bn/bn_ctx.c +++ b/crypto/bn/bn_ctx.c @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2019 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 @@ -227,6 +227,8 @@ BIGNUM *BN_CTX_get(BN_CTX *ctx) } /* OK, make sure the returned bignum is "zero" */ BN_zero(ret); + /* clear BN_FLG_CONSTTIME if leaked from previous frames */ + ret->flags &= (~BN_FLG_CONSTTIME); ctx->used++; CTXDBG_RET(ctx, ret); return ret; diff --git a/test/bntest.c b/test/bntest.c index 686eab8..606cc11 100644 --- a/test/bntest.c +++ b/test/bntest.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 @@ -85,6 +85,7 @@ int test_sqrt(BIO *bp, BN_CTX *ctx); int test_small_prime(BIO *bp, BN_CTX *ctx); int test_bn2dec(BIO *bp); int rand_neg(void); +static int test_ctx_consttime_flag(void); static int results = 0; static unsigned char lst[] = @@ -312,11 +313,18 @@ int main(int argc, char *argv[]) goto err; (void)BIO_flush(out); #endif + + /* silently flush any pre-existing error on the stack */ + ERR_clear_error(); + + message(out, "BN_CTX_get BN_FLG_CONSTTIME"); + if (!test_ctx_consttime_flag()) + goto err; + (void)BIO_flush(out); + BN_CTX_free(ctx); BIO_free(out); - ERR_print_errors_fp(stderr); - #ifndef OPENSSL_NO_CRYPTO_MDEBUG if (CRYPTO_mem_leaks_fp(stderr) <= 0) EXIT(1); @@ -2092,3 +2100,100 @@ int rand_neg(void) return (sign[(neg++) % 8]); } + +static int test_ctx_set_ct_flag(BN_CTX *c) +{ + int st = 0; + size_t i; + BIGNUM *b[15]; + + BN_CTX_start(c); + for (i = 0; i < OSSL_NELEM(b); i++) { + if (NULL == (b[i] = BN_CTX_get(c))) { + fprintf(stderr, "ERROR: BN_CTX_get() failed.\n"); + goto err; + } + if (i % 2 == 1) + BN_set_flags(b[i], BN_FLG_CONSTTIME); + } + + st = 1; + err: + BN_CTX_end(c); + return st; +} + +static int test_ctx_check_ct_flag(BN_CTX *c) +{ + int st = 0; + size_t i; + BIGNUM *b[30]; + + BN_CTX_start(c); + for (i = 0; i < OSSL_NELEM(b); i++) { + if (NULL == (b[i] = BN_CTX_get(c))) { + fprintf(stderr, "ERROR: BN_CTX_get() failed.\n"); + goto err; + } + if (BN_get_flags(b[i], BN_FLG_CONSTTIME) != 0) { + fprintf(stderr, "ERROR: BN_FLG_CONSTTIME should not be set.\n"); + goto err; + } + } + + st = 1; + err: + BN_CTX_end(c); + return st; +} + +static int test_ctx_consttime_flag(void) +{ + /*- + * The constant-time flag should not "leak" among BN_CTX frames: + * + * - test_ctx_set_ct_flag() starts a frame in the given BN_CTX and + * sets the BN_FLG_CONSTTIME flag on some of the BIGNUMs obtained + * from the frame before ending it. + * - test_ctx_check_ct_flag() then starts a new frame and gets a + * number of BIGNUMs from it. In absence of leaks, none of the + * BIGNUMs in the new frame should have BN_FLG_CONSTTIME set. + * + * In actual BN_CTX usage inside libcrypto the leak could happen at + * any depth level in the BN_CTX stack, with varying results + * depending on the patterns of sibling trees of nested function + * calls sharing the same BN_CTX object, and the effect of + * unintended BN_FLG_CONSTTIME on the called BN_* functions. + * + * This simple unit test abstracts away this complexity and verifies + * that the leak does not happen between two sibling functions + * sharing the same BN_CTX object at the same level of nesting. + * + */ + BN_CTX *nctx = NULL; + BN_CTX *sctx = NULL; + size_t i = 0; + int st = 0; + + if (NULL == (nctx = BN_CTX_new())) { + fprintf(stderr, "ERROR: BN_CTX_new() failed.\n"); + goto err; + } + if (NULL == (sctx = BN_CTX_secure_new())) { + fprintf(stderr, "ERROR: BN_CTX_secure_new() failed.\n"); + goto err; + } + + for (i = 0; i < 2; i++) { + BN_CTX *c = i == 0 ? nctx : sctx; + if (!test_ctx_set_ct_flag(c) + || !test_ctx_check_ct_flag(c)) + goto err; + } + + st = 1; + err: + BN_CTX_free(nctx); + BN_CTX_free(sctx); + return st; +} From kurt at openssl.org Thu Feb 21 21:18:39 2019 From: kurt at openssl.org (Kurt Roeckx) Date: Thu, 21 Feb 2019 21:18:39 +0000 Subject: [openssl] master update Message-ID: <1550783919.384245.11775.nullmailer@dev.openssl.org> The branch master has been updated via 32d40d0d8942ac7156066c55354dc174f7b8b3bc (commit) via a9d2d52ed1b56a72e6dd0e24357dea0bb84c3550 (commit) from 695dd3a332fdd54b873fd0d08f9ae720141f24cd (commit) - Log ----------------------------------------------------------------- commit 32d40d0d8942ac7156066c55354dc174f7b8b3bc Author: Kurt Roeckx Date: Tue Feb 19 20:29:53 2019 +0100 Make sure that generated POD files are actually created before we run doc-nits Reviewed-by: Richard Levitte GH: #8285 commit a9d2d52ed1b56a72e6dd0e24357dea0bb84c3550 Author: Kurt Roeckx Date: Tue Feb 19 20:24:08 2019 +0100 Indent with 4 doc-nits says that over needs a parameter Reviewed-by: Richard Levitte GH: #8285 ----------------------------------------------------------------------- Summary of changes: Configurations/unix-Makefile.tmpl | 2 +- doc/man7/openssl_user_macros.pod.in | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 0b744bb..1e6709f 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -721,7 +721,7 @@ generate: generate_apps generate_crypto_bn generate_crypto_objects \ generate_crypto_conf generate_crypto_asn1 generate_fuzz_oids .PHONY: doc-nits -doc-nits: +doc-nits: build_generated (cd $(SRCDIR); $(PERL) util/find-doc-nits -n -p ) >doc-nits @if [ -s doc-nits ] ; then cat doc-nits ; exit 1; \ else echo 'doc-nits: no errors.'; rm doc-nits ; fi diff --git a/doc/man7/openssl_user_macros.pod.in b/doc/man7/openssl_user_macros.pod.in index 30b8121..17c2d2e 100644 --- a/doc/man7/openssl_user_macros.pod.in +++ b/doc/man7/openssl_user_macros.pod.in @@ -19,7 +19,7 @@ user defined macros. =head2 The macros -=over +=over 4 =item B @@ -30,7 +30,7 @@ be declared. The version number assigned to this macro can take one of two forms: -=over +=over 4 =item C<0xMNNFF000L> @@ -43,7 +43,7 @@ Any version number may be given, but these numbers are the current known major deprecation points, making them the most meaningful: -=over +=over 4 =item C<0x00908000L> (version 0.9.8) @@ -63,7 +63,7 @@ This form is a simple number that represents the major version number and is supported for version 3.0.0 and up. For extra convenience, these numbers are also available: -=over +=over 4 =item Z<>0 (C<0x00908000L>, i.e. version 0.9.8) From yang.yang at baishancloud.com Fri Feb 22 06:29:36 2019 From: yang.yang at baishancloud.com (yang.yang at baishancloud.com) Date: Fri, 22 Feb 2019 06:29:36 +0000 Subject: [openssl] master update Message-ID: <1550816976.812647.8672.nullmailer@dev.openssl.org> The branch master has been updated via 84712024da5e5485e8397afc763555355bddf960 (commit) from 32d40d0d8942ac7156066c55354dc174f7b8b3bc (commit) - Log ----------------------------------------------------------------- commit 84712024da5e5485e8397afc763555355bddf960 Author: Paul Yang Date: Fri Feb 22 14:27:39 2019 +0800 Fix a grammar nit in CRYPTO_get_ex_new_index.pod Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8303) ----------------------------------------------------------------------- Summary of changes: doc/man3/CRYPTO_get_ex_new_index.pod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/man3/CRYPTO_get_ex_new_index.pod b/doc/man3/CRYPTO_get_ex_new_index.pod index 44bab62..f37d532 100644 --- a/doc/man3/CRYPTO_get_ex_new_index.pod +++ b/doc/man3/CRYPTO_get_ex_new_index.pod @@ -104,7 +104,7 @@ to avoid likely double-free crashes. The function B is used to free all exdata attached to a structure. The appropriate type-specific routine must be used. The B identifies the structure type, the B is -be the pointer to the actual structure, and B is a pointer to the +a pointer to the actual structure, and B is a pointer to the structure's exdata field. =head2 Callback Functions From yang.yang at baishancloud.com Fri Feb 22 06:30:08 2019 From: yang.yang at baishancloud.com (yang.yang at baishancloud.com) Date: Fri, 22 Feb 2019 06:30:08 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550817008.319793.14431.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via d600f3d34cf85003d11bea2b8296834874cdebcf (commit) from ebf7bd7f4b5200c4a0e7d86b1f13442e7a6154b6 (commit) - Log ----------------------------------------------------------------- commit d600f3d34cf85003d11bea2b8296834874cdebcf Author: Paul Yang Date: Fri Feb 22 14:27:39 2019 +0800 Fix a grammar nit in CRYPTO_get_ex_new_index.pod Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8303) (cherry picked from commit 84712024da5e5485e8397afc763555355bddf960) ----------------------------------------------------------------------- Summary of changes: doc/man3/CRYPTO_get_ex_new_index.pod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/man3/CRYPTO_get_ex_new_index.pod b/doc/man3/CRYPTO_get_ex_new_index.pod index 4d5a2b9..04ef5ec 100644 --- a/doc/man3/CRYPTO_get_ex_new_index.pod +++ b/doc/man3/CRYPTO_get_ex_new_index.pod @@ -100,7 +100,7 @@ to avoid likely double-free crashes. The function B is used to free all exdata attached to a structure. The appropriate type-specific routine must be used. The B identifies the structure type, the B is -be the pointer to the actual structure, and B is a pointer to the +a pointer to the actual structure, and B is a pointer to the structure's exdata field. =head2 Callback Functions From levitte at openssl.org Fri Feb 22 08:43:01 2019 From: levitte at openssl.org (Richard Levitte) Date: Fri, 22 Feb 2019 08:43:01 +0000 Subject: [openssl] master update Message-ID: <1550824981.368310.21739.nullmailer@dev.openssl.org> The branch master has been updated via f7c5b12034f1971f30a4a73fbf3e04f0b0c0766f (commit) via 41bffb9da082e49378ef0c027beac75399315bb9 (commit) via 91958d71aaea98854a9709a8489263c79a01addd (commit) via 84effd3d16b8e8d86a4829c6a80767f59e4bc3af (commit) from 84712024da5e5485e8397afc763555355bddf960 (commit) - Log ----------------------------------------------------------------- commit f7c5b12034f1971f30a4a73fbf3e04f0b0c0766f Author: Eneas U de Queiroz Date: Thu Feb 21 14:16:12 2019 -0300 engines/e_devcrypto: set digest input_blocksize This restores the behavior of previous versions of the /dev/crypto engine, in alignment with the default implementation. Reported-by: Gerard Looije Signed-off-by: Eneas U de Queiroz Reviewed-by: Paul Dale Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8213) commit 41bffb9da082e49378ef0c027beac75399315bb9 Author: Eneas U de Queiroz Date: Fri Feb 15 15:51:59 2019 -0200 engines/e_devcrypto: fixes logic in close_devcrypto Call close(cfd) before setting cfd = -1. Signed-off-by: Eneas U de Queiroz Reviewed-by: Paul Dale Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8213) commit 91958d71aaea98854a9709a8489263c79a01addd Author: Eneas U de Queiroz Date: Tue Feb 12 16:53:15 2019 -0200 engines/e_devcrypto.c: fix cipher_ctrl function This fixes commit c703a80, which had a mistake in cipher_ctrl function. Move the /dev/crypto session cleanup code to its own function. Signed-off-by: Eneas U de Queiroz Reviewed-by: Paul Dale Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8213) commit 84effd3d16b8e8d86a4829c6a80767f59e4bc3af Author: Eneas U de Queiroz Date: Tue Feb 12 18:02:51 2019 -0200 engines/build.info: fix devcrypto MODULES entry The devcrypto MODULES line was missing the "engine" attribute. Signed-off-by: Eneas U de Queiroz Reviewed-by: Paul Dale Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8213) ----------------------------------------------------------------------- Summary of changes: engines/build.info | 2 +- engines/e_devcrypto.c | 81 +++++++++++++++++++++++++++++---------------------- 2 files changed, 47 insertions(+), 36 deletions(-) diff --git a/engines/build.info b/engines/build.info index e493ced..cf00a97 100644 --- a/engines/build.info +++ b/engines/build.info @@ -43,7 +43,7 @@ IF[{- !$disabled{"engine"} -}] ENDIF ENDIF IF[{- !$disabled{"devcryptoeng"} -}] - MODULES=devcrypto + MODULES{engine}=devcrypto SOURCE[devcrypto]=e_devcrypto.c DEPEND[devcrypto]=../libcrypto INCLUDE[devcrypto]=../include diff --git a/engines/e_devcrypto.c b/engines/e_devcrypto.c index 77f0e48..c0b0d1e 100644 --- a/engines/e_devcrypto.c +++ b/engines/e_devcrypto.c @@ -70,6 +70,15 @@ struct driver_info_st { void engine_load_devcrypto_int(void); #endif +static int clean_devcrypto_session(struct session_op *sess) { + if (ioctl(cfd, CIOCFSESSION, &sess->ses) < 0) { + SYSerr(SYS_F_IOCTL, errno); + return 0; + } + memset(sess, 0, sizeof(struct session_op)); + return 1; +} + /****************************************************************************** * * Ciphers @@ -186,12 +195,11 @@ static int cipher_init(EVP_CIPHER_CTX *ctx, const unsigned char *key, (struct cipher_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx); const struct cipher_data_st *cipher_d = get_cipher_data(EVP_CIPHER_CTX_nid(ctx)); - int sess = cipher_ctx->sess.ses; - /* close a previous open session */ + /* cleanup a previous session */ if (cipher_ctx->sess.ses != 0 && - ioctl(cfd, CIOCFSESSION, &cipher_ctx->sess.ses) <0) - SYSerr(SYS_F_IOCTL, errno); + clean_devcrypto_session(&cipher_ctx->sess) == 0) + return 0; cipher_ctx->sess.cipher = cipher_d->devcryptoid; cipher_ctx->sess.keylen = cipher_d->keylen; @@ -331,22 +339,29 @@ static int ctr_do_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int cipher_ctrl(EVP_CIPHER_CTX *ctx, int type, int p1, void* p2) { + struct cipher_ctx *cipher_ctx = + (struct cipher_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx); EVP_CIPHER_CTX *to_ctx = (EVP_CIPHER_CTX *)p2; - struct cipher_ctx *cipher_ctx; + struct cipher_ctx *to_cipher_ctx; - if (type == EVP_CTRL_COPY || type == EVP_CTRL_INIT) { - cipher_ctx = (struct cipher_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx); + switch (type) { - if (cipher_ctx == NULL) /* OK for copy, error for init */ - return (type == EVP_CTRL_COPY); + case EVP_CTRL_COPY: + if (cipher_ctx == NULL) + return 1; + /* when copying the context, a new session needs to be initialized */ + to_cipher_ctx = + (struct cipher_ctx *)EVP_CIPHER_CTX_get_cipher_data(to_ctx); + memset(&to_cipher_ctx->sess, 0, sizeof(to_cipher_ctx->sess)); + return cipher_init(to_ctx, cipher_ctx->sess.key, EVP_CIPHER_CTX_iv(ctx), + (cipher_ctx->op == COP_ENCRYPT)); - /* both COPY & INIT need a clean context */ + case EVP_CTRL_INIT: memset(&cipher_ctx->sess, 0, sizeof(cipher_ctx->sess)); + return 1; - /* when copying the context, a new session needs to be open as well */ - return (type == EVP_CTRL_INIT) - || cipher_init(to_ctx, cipher_ctx->sess.key, EVP_CIPHER_CTX_iv(ctx), - (cipher_ctx->op == COP_ENCRYPT)); + default: + break; } return -1; @@ -357,13 +372,7 @@ static int cipher_cleanup(EVP_CIPHER_CTX *ctx) struct cipher_ctx *cipher_ctx = (struct cipher_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx); - if (ioctl(cfd, CIOCFSESSION, &cipher_ctx->sess.ses) < 0) { - SYSerr(SYS_F_IOCTL, errno); - return 0; - } - memset(&cipher_ctx->sess, 0, sizeof(cipher_ctx->sess)); - - return 1; + return clean_devcrypto_session(&cipher_ctx->sess); } /* @@ -620,29 +629,30 @@ struct digest_ctx { static const struct digest_data_st { int nid; + int blocksize; int digestlen; int devcryptoid; } digest_data[] = { #ifndef OPENSSL_NO_MD5 - { NID_md5, 16, CRYPTO_MD5 }, + { NID_md5, /* MD5_CBLOCK */ 64, 16, CRYPTO_MD5 }, #endif - { NID_sha1, 20, CRYPTO_SHA1 }, + { NID_sha1, SHA_CBLOCK, 20, CRYPTO_SHA1 }, #ifndef OPENSSL_NO_RMD160 # if !defined(CHECK_BSD_STYLE_MACROS) || defined(CRYPTO_RIPEMD160) - { NID_ripemd160, 20, CRYPTO_RIPEMD160 }, + { NID_ripemd160, /* RIPEMD160_CBLOCK */ 64, 20, CRYPTO_RIPEMD160 }, # endif #endif #if !defined(CHECK_BSD_STYLE_MACROS) || defined(CRYPTO_SHA2_224) - { NID_sha224, 224 / 8, CRYPTO_SHA2_224 }, + { NID_sha224, SHA256_CBLOCK, 224 / 8, CRYPTO_SHA2_224 }, #endif #if !defined(CHECK_BSD_STYLE_MACROS) || defined(CRYPTO_SHA2_256) - { NID_sha256, 256 / 8, CRYPTO_SHA2_256 }, + { NID_sha256, SHA256_CBLOCK, 256 / 8, CRYPTO_SHA2_256 }, #endif #if !defined(CHECK_BSD_STYLE_MACROS) || defined(CRYPTO_SHA2_384) - { NID_sha384, 384 / 8, CRYPTO_SHA2_384 }, + { NID_sha384, SHA512_CBLOCK, 384 / 8, CRYPTO_SHA2_384 }, #endif #if !defined(CHECK_BSD_STYLE_MACROS) || defined(CRYPTO_SHA2_512) - { NID_sha512, 512 / 8, CRYPTO_SHA2_512 }, + { NID_sha512, SHA512_CBLOCK, 512 / 8, CRYPTO_SHA2_512 }, #endif }; @@ -697,7 +707,6 @@ static int digest_init(EVP_MD_CTX *ctx) SYSerr(SYS_F_IOCTL, errno); return 0; } - return 1; } @@ -788,11 +797,8 @@ static int digest_cleanup(EVP_MD_CTX *ctx) if (digest_ctx == NULL) return 1; - if (ioctl(cfd, CIOCFSESSION, &digest_ctx->sess.ses) < 0) { - SYSerr(SYS_F_IOCTL, errno); - return 0; - } - return 1; + + return clean_devcrypto_session(&digest_ctx->sess); } /* @@ -890,6 +896,8 @@ static void prepare_digest_methods(void) } if ((known_digest_methods[i] = EVP_MD_meth_new(digest_data[i].nid, NID_undef)) == NULL + || !EVP_MD_meth_set_input_blocksize(known_digest_methods[i], + digest_data[i].blocksize) || !EVP_MD_meth_set_result_size(known_digest_methods[i], digest_data[i].digestlen) || !EVP_MD_meth_set_init(known_digest_methods[i], digest_init) @@ -1177,10 +1185,13 @@ static int open_devcrypto(void) static int close_devcrypto(void) { + int ret; + if (cfd < 0) return 1; + ret = close(cfd); cfd = -1; - if (close(cfd) == 0) { + if (ret != 0) { fprintf(stderr, "Error closing /dev/crypto: %s\n", strerror(errno)); return 0; } From matthias.st.pierre at ncp-e.com Fri Feb 22 17:10:44 2019 From: matthias.st.pierre at ncp-e.com (matthias.st.pierre at ncp-e.com) Date: Fri, 22 Feb 2019 17:10:44 +0000 Subject: [openssl] master update Message-ID: <1550855444.482638.836.nullmailer@dev.openssl.org> The branch master has been updated via a4a0a1eb43cfccd128d085932a567e0482fbfe47 (commit) from f7c5b12034f1971f30a4a73fbf3e04f0b0c0766f (commit) - Log ----------------------------------------------------------------- commit a4a0a1eb43cfccd128d085932a567e0482fbfe47 Author: Dr. Matthias St. Pierre Date: Fri Feb 22 13:08:54 2019 +0100 engines/dasync: add explaining comments about AES-128-CBC-HMAC-SHA1 Fixes #7950 It was reported that there might be a null pointer dereference in the implementation of the dasync_aes_128_cbc_hmac_sha1() cipher, because EVP_aes_128_cbc_hmac_sha1() can return a null pointer if AES-NI is not available. It took some analysis to find out that this is not an issue in practice, and these comments explain the reason to comfort further NPD hunters. Detected by GitHub user @wurongxin1987 using the Sourcebrella Pinpoint static analyzer. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8305) ----------------------------------------------------------------------- Summary of changes: engines/e_dasync.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/engines/e_dasync.c b/engines/e_dasync.c index f8a52e9..74a62b8 100644 --- a/engines/e_dasync.c +++ b/engines/e_dasync.c @@ -155,6 +155,14 @@ static const EVP_CIPHER *dasync_aes_128_cbc(void) /* * Holds the EVP_CIPHER object for aes_128_cbc_hmac_sha1 in this engine. Set up * once only during engine bind and can then be reused many times. + * + * This 'stitched' cipher depends on the EVP_aes_128_cbc_hmac_sha1() cipher, + * which is implemented only if the AES-NI instruction set extension is available + * (see OPENSSL_IA32CAP(3)). If that's not the case, then this cipher will not + * be available either. + * + * Note: Since it is a legacy mac-then-encrypt cipher, modern TLS peers (which + * negotiate the encrypt-then-mac extension) won't negotiate it anyway. */ static EVP_CIPHER *_hidden_aes_128_cbc_hmac_sha1 = NULL; static const EVP_CIPHER *dasync_aes_128_cbc_hmac_sha1(void) @@ -765,6 +773,10 @@ static int dasync_aes128_cbc_hmac_sha1_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *iv, int enc) { + /* + * We can safely assume that EVP_aes_128_cbc_hmac_sha1() != NULL, + * see comment before the definition of dasync_aes_128_cbc_hmac_sha1(). + */ return dasync_cipher_init_key_helper(ctx, key, iv, enc, EVP_aes_128_cbc_hmac_sha1()); } @@ -779,5 +791,9 @@ static int dasync_aes128_cbc_hmac_sha1_cipher(EVP_CIPHER_CTX *ctx, static int dasync_aes128_cbc_hmac_sha1_cleanup(EVP_CIPHER_CTX *ctx) { + /* + * We can safely assume that EVP_aes_128_cbc_hmac_sha1() != NULL, + * see comment before the definition of dasync_aes_128_cbc_hmac_sha1(). + */ return dasync_cipher_cleanup_helper(ctx, EVP_aes_128_cbc_hmac_sha1()); } From matthias.st.pierre at ncp-e.com Fri Feb 22 17:11:25 2019 From: matthias.st.pierre at ncp-e.com (matthias.st.pierre at ncp-e.com) Date: Fri, 22 Feb 2019 17:11:25 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550855485.889838.2211.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 4a81b8b6e8b908ff70d675c7173ad4923f3dc659 (commit) from d600f3d34cf85003d11bea2b8296834874cdebcf (commit) - Log ----------------------------------------------------------------- commit 4a81b8b6e8b908ff70d675c7173ad4923f3dc659 Author: Dr. Matthias St. Pierre Date: Fri Feb 22 13:08:54 2019 +0100 engines/dasync: add explaining comments about AES-128-CBC-HMAC-SHA1 Fixes #7950 It was reported that there might be a null pointer dereference in the implementation of the dasync_aes_128_cbc_hmac_sha1() cipher, because EVP_aes_128_cbc_hmac_sha1() can return a null pointer if AES-NI is not available. It took some analysis to find out that this is not an issue in practice, and these comments explain the reason to comfort further NPD hunters. Detected by GitHub user @wurongxin1987 using the Sourcebrella Pinpoint static analyzer. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8305) (cherry picked from commit a4a0a1eb43cfccd128d085932a567e0482fbfe47) ----------------------------------------------------------------------- Summary of changes: engines/e_dasync.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/engines/e_dasync.c b/engines/e_dasync.c index 0fe1d43..1c2ccf0 100644 --- a/engines/e_dasync.c +++ b/engines/e_dasync.c @@ -155,6 +155,14 @@ static const EVP_CIPHER *dasync_aes_128_cbc(void) /* * Holds the EVP_CIPHER object for aes_128_cbc_hmac_sha1 in this engine. Set up * once only during engine bind and can then be reused many times. + * + * This 'stitched' cipher depends on the EVP_aes_128_cbc_hmac_sha1() cipher, + * which is implemented only if the AES-NI instruction set extension is available + * (see OPENSSL_IA32CAP(3)). If that's not the case, then this cipher will not + * be available either. + * + * Note: Since it is a legacy mac-then-encrypt cipher, modern TLS peers (which + * negotiate the encrypt-then-mac extension) won't negotiate it anyway. */ static EVP_CIPHER *_hidden_aes_128_cbc_hmac_sha1 = NULL; static const EVP_CIPHER *dasync_aes_128_cbc_hmac_sha1(void) @@ -751,6 +759,10 @@ static int dasync_aes128_cbc_hmac_sha1_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *iv, int enc) { + /* + * We can safely assume that EVP_aes_128_cbc_hmac_sha1() != NULL, + * see comment before the definition of dasync_aes_128_cbc_hmac_sha1(). + */ return dasync_cipher_init_key_helper(ctx, key, iv, enc, EVP_aes_128_cbc_hmac_sha1()); } @@ -765,5 +777,9 @@ static int dasync_aes128_cbc_hmac_sha1_cipher(EVP_CIPHER_CTX *ctx, static int dasync_aes128_cbc_hmac_sha1_cleanup(EVP_CIPHER_CTX *ctx) { + /* + * We can safely assume that EVP_aes_128_cbc_hmac_sha1() != NULL, + * see comment before the definition of dasync_aes_128_cbc_hmac_sha1(). + */ return dasync_cipher_cleanup_helper(ctx, EVP_aes_128_cbc_hmac_sha1()); } From matt at openssl.org Fri Feb 22 19:54:02 2019 From: matt at openssl.org (Matt Caswell) Date: Fri, 22 Feb 2019 19:54:02 +0000 Subject: [openssl] master update Message-ID: <1550865242.143742.30307.nullmailer@dev.openssl.org> The branch master has been updated via 3409a5ff8a44ddaf043d83ed22e657ae871be289 (commit) from a4a0a1eb43cfccd128d085932a567e0482fbfe47 (commit) - Log ----------------------------------------------------------------- commit 3409a5ff8a44ddaf043d83ed22e657ae871be289 Author: Matt Caswell Date: Thu Feb 21 16:02:24 2019 +0000 Don't restrict the number of KeyUpdate messages we can process Prior to this commit we were keeping a count of how many KeyUpdates we have processed and failing if we had had too many. This simplistic approach is not sufficient for long running connections. Since many KeyUpdates would not be a particular good DoS route anyway, the simplest solution is to simply remove the key update count. Fixes #8068 Reviewed-by: Kurt Roeckx (Merged from https://github.com/openssl/openssl/pull/8299) ----------------------------------------------------------------------- Summary of changes: ssl/ssl_locl.h | 2 -- ssl/statem/statem_lib.c | 7 ------- ssl/statem/statem_locl.h | 3 --- test/sslapitest.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 53 insertions(+), 12 deletions(-) diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h index bd0d421..ae6417b 100644 --- a/ssl/ssl_locl.h +++ b/ssl/ssl_locl.h @@ -1178,8 +1178,6 @@ struct ssl_st { EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ unsigned char write_iv[EVP_MAX_IV_LENGTH]; /* TLSv1.3 static write IV */ EVP_MD_CTX *write_hash; /* used for mac generation */ - /* Count of how many KeyUpdate messages we have received */ - unsigned int key_update_count; /* session info */ /* client cert? */ /* This is used to hold the server certificate used */ diff --git a/ssl/statem/statem_lib.c b/ssl/statem/statem_lib.c index 8a7ada8..a18c5cc 100644 --- a/ssl/statem/statem_lib.c +++ b/ssl/statem/statem_lib.c @@ -614,13 +614,6 @@ MSG_PROCESS_RETURN tls_process_key_update(SSL *s, PACKET *pkt) { unsigned int updatetype; - s->key_update_count++; - if (s->key_update_count > MAX_KEY_UPDATE_MESSAGES) { - SSLfatal(s, SSL_AD_ILLEGAL_PARAMETER, SSL_F_TLS_PROCESS_KEY_UPDATE, - SSL_R_TOO_MANY_KEY_UPDATES); - return MSG_PROCESS_ERROR; - } - /* * A KeyUpdate message signals a key change so the end of the message must * be on a record boundary. diff --git a/ssl/statem/statem_locl.h b/ssl/statem/statem_locl.h index 9c8c753..8f27deb 100644 --- a/ssl/statem/statem_locl.h +++ b/ssl/statem/statem_locl.h @@ -29,9 +29,6 @@ /* Max should actually be 36 but we are generous */ #define FINISHED_MAX_LENGTH 64 -/* The maximum number of incoming KeyUpdate messages we will accept */ -#define MAX_KEY_UPDATE_MESSAGES 32 - /* Dummy message type */ #define SSL3_MT_DUMMY -1 diff --git a/test/sslapitest.c b/test/sslapitest.c index 788ac46..2a4596d 100644 --- a/test/sslapitest.c +++ b/test/sslapitest.c @@ -4480,6 +4480,58 @@ static int test_export_key_mat_early(int idx) return testresult; } + +#define NUM_KEY_UPDATE_MESSAGES 40 +/* + * Test KeyUpdate. + */ +static int test_key_update(void) +{ + SSL_CTX *cctx = NULL, *sctx = NULL; + SSL *clientssl = NULL, *serverssl = NULL; + int testresult = 0, i, j; + char buf[20]; + static char *mess = "A test message"; + + if (!TEST_true(create_ssl_ctx_pair(TLS_server_method(), + TLS_client_method(), + TLS1_3_VERSION, + 0, + &sctx, &cctx, cert, privkey)) + || !TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl, + NULL, NULL)) + || !TEST_true(create_ssl_connection(serverssl, clientssl, + SSL_ERROR_NONE))) + goto end; + + for (j = 0; j < 2; j++) { + /* Send lots of KeyUpdate messages */ + for (i = 0; i < NUM_KEY_UPDATE_MESSAGES; i++) { + if (!TEST_true(SSL_key_update(clientssl, + (j == 0) + ? SSL_KEY_UPDATE_NOT_REQUESTED + : SSL_KEY_UPDATE_REQUESTED)) + || !TEST_true(SSL_do_handshake(clientssl))) + goto end; + } + + /* Check that sending and receiving app data is ok */ + if (!TEST_int_eq(SSL_write(clientssl, mess, strlen(mess)), strlen(mess)) + || !TEST_int_eq(SSL_read(serverssl, buf, sizeof(buf)), + strlen(mess))) + goto end; + } + + testresult = 1; + + end: + SSL_free(serverssl); + SSL_free(clientssl); + SSL_CTX_free(sctx); + SSL_CTX_free(cctx); + + return testresult; +} #endif /* OPENSSL_NO_TLS1_3 */ static int test_ssl_clear(int idx) @@ -6170,6 +6222,7 @@ int setup_tests(void) ADD_ALL_TESTS(test_export_key_mat, 6); #ifndef OPENSSL_NO_TLS1_3 ADD_ALL_TESTS(test_export_key_mat_early, 3); + ADD_TEST(test_key_update); #endif ADD_ALL_TESTS(test_ssl_clear, 2); ADD_ALL_TESTS(test_max_fragment_len_ext, OSSL_NELEM(max_fragment_len_test)); From matt at openssl.org Fri Feb 22 19:54:13 2019 From: matt at openssl.org (Matt Caswell) Date: Fri, 22 Feb 2019 19:54:13 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550865253.647531.31290.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via f6d64b5142ab59be47c1f10512ce6d58fb399131 (commit) from 4a81b8b6e8b908ff70d675c7173ad4923f3dc659 (commit) - Log ----------------------------------------------------------------- commit f6d64b5142ab59be47c1f10512ce6d58fb399131 Author: Matt Caswell Date: Thu Feb 21 16:02:24 2019 +0000 Don't restrict the number of KeyUpdate messages we can process Prior to this commit we were keeping a count of how many KeyUpdates we have processed and failing if we had had too many. This simplistic approach is not sufficient for long running connections. Since many KeyUpdates would not be a particular good DoS route anyway, the simplest solution is to simply remove the key update count. Fixes #8068 Reviewed-by: Kurt Roeckx (Merged from https://github.com/openssl/openssl/pull/8299) (cherry picked from commit 3409a5ff8a44ddaf043d83ed22e657ae871be289) ----------------------------------------------------------------------- Summary of changes: ssl/ssl_locl.h | 2 -- ssl/statem/statem_lib.c | 7 ------- ssl/statem/statem_locl.h | 3 --- test/sslapitest.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 53 insertions(+), 12 deletions(-) diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h index 307131d..6559012 100644 --- a/ssl/ssl_locl.h +++ b/ssl/ssl_locl.h @@ -1170,8 +1170,6 @@ struct ssl_st { EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ unsigned char write_iv[EVP_MAX_IV_LENGTH]; /* TLSv1.3 static write IV */ EVP_MD_CTX *write_hash; /* used for mac generation */ - /* Count of how many KeyUpdate messages we have received */ - unsigned int key_update_count; /* session info */ /* client cert? */ /* This is used to hold the server certificate used */ diff --git a/ssl/statem/statem_lib.c b/ssl/statem/statem_lib.c index 15d0148..7e32e75 100644 --- a/ssl/statem/statem_lib.c +++ b/ssl/statem/statem_lib.c @@ -614,13 +614,6 @@ MSG_PROCESS_RETURN tls_process_key_update(SSL *s, PACKET *pkt) { unsigned int updatetype; - s->key_update_count++; - if (s->key_update_count > MAX_KEY_UPDATE_MESSAGES) { - SSLfatal(s, SSL_AD_ILLEGAL_PARAMETER, SSL_F_TLS_PROCESS_KEY_UPDATE, - SSL_R_TOO_MANY_KEY_UPDATES); - return MSG_PROCESS_ERROR; - } - /* * A KeyUpdate message signals a key change so the end of the message must * be on a record boundary. diff --git a/ssl/statem/statem_locl.h b/ssl/statem/statem_locl.h index 6b8cf37..f936c61 100644 --- a/ssl/statem/statem_locl.h +++ b/ssl/statem/statem_locl.h @@ -29,9 +29,6 @@ /* Max should actually be 36 but we are generous */ #define FINISHED_MAX_LENGTH 64 -/* The maximum number of incoming KeyUpdate messages we will accept */ -#define MAX_KEY_UPDATE_MESSAGES 32 - /* Dummy message type */ #define SSL3_MT_DUMMY -1 diff --git a/test/sslapitest.c b/test/sslapitest.c index b3aa563..f51da0c 100644 --- a/test/sslapitest.c +++ b/test/sslapitest.c @@ -4250,6 +4250,58 @@ static int test_export_key_mat_early(int idx) return testresult; } + +#define NUM_KEY_UPDATE_MESSAGES 40 +/* + * Test KeyUpdate. + */ +static int test_key_update(void) +{ + SSL_CTX *cctx = NULL, *sctx = NULL; + SSL *clientssl = NULL, *serverssl = NULL; + int testresult = 0, i, j; + char buf[20]; + static char *mess = "A test message"; + + if (!TEST_true(create_ssl_ctx_pair(TLS_server_method(), + TLS_client_method(), + TLS1_3_VERSION, + 0, + &sctx, &cctx, cert, privkey)) + || !TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl, + NULL, NULL)) + || !TEST_true(create_ssl_connection(serverssl, clientssl, + SSL_ERROR_NONE))) + goto end; + + for (j = 0; j < 2; j++) { + /* Send lots of KeyUpdate messages */ + for (i = 0; i < NUM_KEY_UPDATE_MESSAGES; i++) { + if (!TEST_true(SSL_key_update(clientssl, + (j == 0) + ? SSL_KEY_UPDATE_NOT_REQUESTED + : SSL_KEY_UPDATE_REQUESTED)) + || !TEST_true(SSL_do_handshake(clientssl))) + goto end; + } + + /* Check that sending and receiving app data is ok */ + if (!TEST_int_eq(SSL_write(clientssl, mess, strlen(mess)), strlen(mess)) + || !TEST_int_eq(SSL_read(serverssl, buf, sizeof(buf)), + strlen(mess))) + goto end; + } + + testresult = 1; + + end: + SSL_free(serverssl); + SSL_free(clientssl); + SSL_CTX_free(sctx); + SSL_CTX_free(cctx); + + return testresult; +} #endif /* OPENSSL_NO_TLS1_3 */ static int test_ssl_clear(int idx) @@ -5929,6 +5981,7 @@ int setup_tests(void) ADD_ALL_TESTS(test_export_key_mat, 6); #ifndef OPENSSL_NO_TLS1_3 ADD_ALL_TESTS(test_export_key_mat_early, 3); + ADD_TEST(test_key_update); #endif ADD_ALL_TESTS(test_ssl_clear, 2); ADD_ALL_TESTS(test_max_fragment_len_ext, OSSL_NELEM(max_fragment_len_test)); From levitte at openssl.org Fri Feb 22 20:03:50 2019 From: levitte at openssl.org (Richard Levitte) Date: Fri, 22 Feb 2019 20:03:50 +0000 Subject: [openssl] master update Message-ID: <1550865830.696515.8063.nullmailer@dev.openssl.org> The branch master has been updated via 925795995018bddb053e863db8b5c52d2a9005d9 (commit) from 3409a5ff8a44ddaf043d83ed22e657ae871be289 (commit) - Log ----------------------------------------------------------------- commit 925795995018bddb053e863db8b5c52d2a9005d9 Author: Richard Levitte Date: Thu Feb 21 18:25:50 2019 +0100 Windows: Call TerminateProcess, not ExitProcess Ty Baen-Price explains: > Problem and Resolution: > The following lines of code make use of the Microsoft API ExitProcess: > > ``` > Apps\Speed.c line 335: ExitProcess(ret); > Ms\uplink.c line 22: ExitProcess(1); > ``` > > These function calls are made after fatal errors are detected and > program termination is desired. ExitProcess(), however causes > _orderly_ shutdown of a process and all its threads, i.e. it unloads > all dlls and runs all destructors. See MSDN for details of exactly > what happens > (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682658(v=vs.85).aspx). > The MSDN page states that ExitProcess should never be called unless > it is _known to be safe_ to call it. These calls should simply be > replaced with calls to TerminateProcess(), which is what should be > called for _disorderly_ shutdown. > > An example of usage: > > ``` > TerminateProcess(GetCurrentProcess(), exitcode); > ``` > > Effect of Problem: > Because of a compilation error (wrong c++ runtime), my program > executed the uplink.c ExitProcess() call. This caused the single > OpenSSL thread to start executing the destructors of all my dlls, > and their objects. Unfortunately, about 30 other threads were > happily using those objects at that time, eventually causing a > 0xC0000005 ACCESS_VIOLATION. Obviously an ACCESS_VIOLATION is the > best case scenario, as I'm sure you can imagine at the consequences > of undiscovered memory corruption, even in a terminating process. And on the subject of `TerminateProcess()` being asynchronous: > That is technically true, but I think it's probably synchronous > "enough" for your purposes, since a call to TerminateProcess > suspends execution of all threads in the target process. This means > it's really only asynchronous if you're calling TerminateProcess one > some _other_ process. If you're calling TerminateProcess on your own > process, you'll never return from the TerminateProcess call. Fixes #2489 Was originally RT-4526 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8301) ----------------------------------------------------------------------- Summary of changes: ms/uplink.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ms/uplink.c b/ms/uplink.c index 02d466f..8c61a7e 100644 --- a/ms/uplink.c +++ b/ms/uplink.c @@ -28,7 +28,7 @@ static TCHAR msg[128]; static void unimplemented(void) { OPENSSL_showfatal(sizeof(TCHAR) == sizeof(char) ? "%s\n" : "%S\n", msg); - ExitProcess(1); + TerminateProcess(GetCurrentProcess(), 1); } void OPENSSL_Uplink(volatile void **table, int index) From levitte at openssl.org Fri Feb 22 20:04:53 2019 From: levitte at openssl.org (Richard Levitte) Date: Fri, 22 Feb 2019 20:04:53 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1550865893.222066.9742.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 4af54c9b9933336d1c48f3012aca92262c36d3a8 (commit) from f6d64b5142ab59be47c1f10512ce6d58fb399131 (commit) - Log ----------------------------------------------------------------- commit 4af54c9b9933336d1c48f3012aca92262c36d3a8 Author: Richard Levitte Date: Thu Feb 21 18:25:50 2019 +0100 Windows: Call TerminateProcess, not ExitProcess Ty Baen-Price explains: > Problem and Resolution: > The following lines of code make use of the Microsoft API ExitProcess: > > ``` > Apps\Speed.c line 335: ExitProcess(ret); > Ms\uplink.c line 22: ExitProcess(1); > ``` > > These function calls are made after fatal errors are detected and > program termination is desired. ExitProcess(), however causes > _orderly_ shutdown of a process and all its threads, i.e. it unloads > all dlls and runs all destructors. See MSDN for details of exactly > what happens > (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682658(v=vs.85).aspx). > The MSDN page states that ExitProcess should never be called unless > it is _known to be safe_ to call it. These calls should simply be > replaced with calls to TerminateProcess(), which is what should be > called for _disorderly_ shutdown. > > An example of usage: > > ``` > TerminateProcess(GetCurrentProcess(), exitcode); > ``` > > Effect of Problem: > Because of a compilation error (wrong c++ runtime), my program > executed the uplink.c ExitProcess() call. This caused the single > OpenSSL thread to start executing the destructors of all my dlls, > and their objects. Unfortunately, about 30 other threads were > happily using those objects at that time, eventually causing a > 0xC0000005 ACCESS_VIOLATION. Obviously an ACCESS_VIOLATION is the > best case scenario, as I'm sure you can imagine at the consequences > of undiscovered memory corruption, even in a terminating process. And on the subject of `TerminateProcess()` being asynchronous: > That is technically true, but I think it's probably synchronous > "enough" for your purposes, since a call to TerminateProcess > suspends execution of all threads in the target process. This means > it's really only asynchronous if you're calling TerminateProcess one > some _other_ process. If you're calling TerminateProcess on your own > process, you'll never return from the TerminateProcess call. Fixes #2489 Was originally RT-4526 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8301) (cherry picked from commit 925795995018bddb053e863db8b5c52d2a9005d9) ----------------------------------------------------------------------- Summary of changes: ms/uplink.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ms/uplink.c b/ms/uplink.c index 7f7abfb..2096f2c 100644 --- a/ms/uplink.c +++ b/ms/uplink.c @@ -28,7 +28,7 @@ static TCHAR msg[128]; static void unimplemented(void) { OPENSSL_showfatal(sizeof(TCHAR) == sizeof(char) ? "%s\n" : "%S\n", msg); - ExitProcess(1); + TerminateProcess(GetCurrentProcess(), 1); } void OPENSSL_Uplink(volatile void **table, int index) From no-reply at appveyor.com Sat Feb 23 18:43:19 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sat, 23 Feb 2019 18:43:19 +0000 Subject: Build failed: openssl master.22791 Message-ID: <20190223184319.1.69E971BC906710FE@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Sun Feb 24 06:30:34 2019 From: no-reply at appveyor.com (AppVeyor) Date: Sun, 24 Feb 2019 06:30:34 +0000 Subject: Build completed: openssl master.22792 Message-ID: <20190224063034.1.4033A905CD8A9509@appveyor.com> An HTML attachment was scrubbed... URL: From scan-admin at coverity.com Sun Feb 24 07:28:27 2019 From: scan-admin at coverity.com (scan-admin at coverity.com) Date: Sun, 24 Feb 2019 07:28:27 +0000 (UTC) Subject: Coverity Scan: Analysis completed for openssl/openssl Message-ID: <5c72479a4f585_4f402ad745df4f5c68856@appnode-2.mail> Your request for analysis of openssl/openssl has been completed successfully. The results are available at https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRakUl6QyjujEohY7rPpoYUEcf-2B75FkFkxwwFKGZV8c1xA-3D-3D_19DGMz38yO7VfzGQuXkecdlEmzBoDG4v8Dvyanv-2F1I2-2Fte2D9i-2BpKoiUBxIYLnePf9ViHOfwmv4XdElYhRc42yWXoXSiomZhq5CpWARqalhtBTW-2BUf8YMh9GX5cZAOcq0hhzRl8gl2YXGElEJOFiirguJbgSJEWf-2BG2OJRVszDmTFyWmL4AXgerbjfn9nupmACFHLdTF7s6fwmyaUcCFjb6-2B-2FEQr3H1qbA-2F11mVZCtw-3D Build ID: 245750 Analysis Summary: New defects found: 4 Defects eliminated: 2 If you have difficulty understanding any defects, email us at scan-admin at coverity.com, or post your question to StackOverflow at https://u2389337.ct.sendgrid.net/wf/click?upn=OgIsEqWzmIl4S-2FzEUMxLXL-2BukuZt9UUdRZhgmgzAKchwAzH1nH3073xDEXNRgHN6q227lMNIWoOb8ZgSjAjKcg-3D-3D_19DGMz38yO7VfzGQuXkecdlEmzBoDG4v8Dvyanv-2F1I2-2Fte2D9i-2BpKoiUBxIYLnePf9ViHOfwmv4XdElYhRc420AOEnMbkE6tDTHHWB-2F-2BOSDzpbL69NSRodlF77FythGzZbV0TOfj7stT-2B7BWKCpu8JnXMVgElTZdh0HRIzq4q8Tjj1GFGB3sNoROPw4xtkSZ-2FnmdhSDPwpGeO2Cos1qyiWVK3oqQgOJE7V1h-2F4CRg2s-3D From scan-admin at coverity.com Sun Feb 24 07:48:00 2019 From: scan-admin at coverity.com (scan-admin at coverity.com) Date: Sun, 24 Feb 2019 07:48:00 +0000 (UTC) Subject: Coverity Scan: Analysis completed for OpenSSL-1.0.2 Message-ID: <5c724c2f27c07_59ed2ad745df4f5c688cc@appnode-2.mail> Your request for analysis of OpenSSL-1.0.2 has been completed successfully. The results are available at https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRakUl6QyjujEohY7rPpoYUEeuRTZVWU4ku8PUBnVPw8PQ-3D-3D_19DGMz38yO7VfzGQuXkecdlEmzBoDG4v8Dvyanv-2F1I05KfMcSN2G-2Fc2kWHS1kpRYGg8shJzwd3qQosXrvhDYpg4cX6pW5tDak-2Fdy40JQGBFJ8-2FvGeqz0vj1NvvNj536p3u42k5LdWEdGzww1tCb3jjFvYYsQL4RLSfL2mHJGnTpm7GBIGNcdtrSdQk2YQ5QPnAnHElGKuDzWbEeOowxmK5xo7A-2FDHsFmzpwrJXI1qhs-3D Build ID: 245753 Analysis Summary: New defects found: 0 Defects eliminated: 0 From yang.yang at baishancloud.com Sun Feb 24 08:58:07 2019 From: yang.yang at baishancloud.com (yang.yang at baishancloud.com) Date: Sun, 24 Feb 2019 08:58:07 +0000 Subject: [openssl] OpenSSL_1_1_0-stable update Message-ID: <1550998687.773713.1887.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_0-stable has been updated via 3318493b85a8189f6385d5489f97f0e101471f92 (commit) from f499873c2ff5a6da5f1a23c099730f97c822e90c (commit) - Log ----------------------------------------------------------------- commit 3318493b85a8189f6385d5489f97f0e101471f92 Author: Jeff Mahoney Date: Sun Feb 24 16:56:28 2019 +0800 apps/speed: fix segfault while looking up algorithm name The backport of master commit 5c6a69f539a (apps/speed: fix possible OOB access in some EC arrays) as 1.1.0 commit 4e07941373a introduced a regression. The ecdh_choices array is iterated using an element count but is NULL terminated. This means that running 'openssl speed somealgo' will result in a segfault when opt_found hits the NULL entry. Fixes #8243 CLA: trivial Signed-off-by: Jeff Mahoney Reviewed-by: Paul Yang Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8244) ----------------------------------------------------------------------- Summary of changes: apps/speed.c | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/speed.c b/apps/speed.c index 6672fe6..4595cc6 100644 --- a/apps/speed.c +++ b/apps/speed.c @@ -537,7 +537,6 @@ static const OPT_PAIR ecdh_choices[] = { {"ecdhb409", R_EC_B409}, {"ecdhb571", R_EC_B571}, {"ecdhx25519", R_EC_X25519}, - {NULL} }; # define EC_NUM OSSL_NELEM(ecdh_choices) From pauli at openssl.org Sun Feb 24 21:35:29 2019 From: pauli at openssl.org (Dr. Paul Dale) Date: Sun, 24 Feb 2019 21:35:29 +0000 Subject: [openssl] master update Message-ID: <1551044129.572673.32409.nullmailer@dev.openssl.org> The branch master has been updated via ef9f6066998718ae904fc10d46205d67aad9aebe (commit) via 71d1b229e9bc230afaea64f03833329f82f6e488 (commit) via 909f2e59832f041cdd0be538f9225f7f3061604a (commit) from 925795995018bddb053e863db8b5c52d2a9005d9 (commit) - Log ----------------------------------------------------------------- commit ef9f6066998718ae904fc10d46205d67aad9aebe Author: Pauli Date: Sun Feb 24 21:27:02 2019 +1000 CID 1442838: API usage errors Reviewed-by: Bernd Edlinger (Merged from https://github.com/openssl/openssl/pull/8318) commit 71d1b229e9bc230afaea64f03833329f82f6e488 Author: Pauli Date: Sun Feb 24 21:26:39 2019 +1000 CID 1442835: Integer Overflow Reviewed-by: Bernd Edlinger (Merged from https://github.com/openssl/openssl/pull/8318) commit 909f2e59832f041cdd0be538f9225f7f3061604a Author: Pauli Date: Sun Feb 24 21:26:20 2019 +1000 CID 1442836: Resource leaks Reviewed-by: Bernd Edlinger (Merged from https://github.com/openssl/openssl/pull/8318) ----------------------------------------------------------------------- Summary of changes: crypto/property/property.c | 3 ++- crypto/property/property_parse.c | 2 +- test/property_test.c | 6 ++---- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/crypto/property/property.c b/crypto/property/property.c index dea0dfd..e4fdc68 100644 --- a/crypto/property/property.c +++ b/crypto/property/property.c @@ -143,11 +143,12 @@ static void alg_cleanup(size_t idx, ALGORITHM *a) OSSL_METHOD_STORE *ossl_method_store_new(void) { - OSSL_METHOD_STORE *res = OPENSSL_zalloc(sizeof(*res)); + OSSL_METHOD_STORE *res; if (!RUN_ONCE(&method_store_init_flag, do_method_store_init)) return 0; + res = OPENSSL_zalloc(sizeof(*res)); if (res != NULL) { if ((res->algs = ossl_sa_ALGORITHM_new()) == NULL) { OPENSSL_free(res); diff --git a/crypto/property/property_parse.c b/crypto/property/property_parse.c index 2094d38..074da51 100644 --- a/crypto/property/property_parse.c +++ b/crypto/property/property_parse.c @@ -301,7 +301,7 @@ static OSSL_PROPERTY_LIST *stack_to_property_list(STACK_OF(PROPERTY_DEFINITION) int i; r = OPENSSL_malloc(sizeof(*r) - + (n == 0 ? 0 : n - 1) * sizeof(r->properties[0])); + + (n <= 0 ? 0 : n - 1) * sizeof(r->properties[0])); if (r != NULL) { sk_PROPERTY_DEFINITION_sort(sk); diff --git a/test/property_test.c b/test/property_test.c index 722de05..ee94252 100644 --- a/test/property_test.c +++ b/test/property_test.c @@ -304,10 +304,8 @@ static int test_property(void) for (i = 0; i < OSSL_NELEM(queries); i++) { OSSL_PROPERTY_LIST *pq = NULL; - if (!TEST_true(ossl_property_read_lock(store)) - || !TEST_true(ossl_method_store_fetch(store, queries[i].nid, - queries[i].prop, &result)) - || !TEST_true(ossl_property_unlock(store)) + if (!TEST_true(ossl_method_store_fetch(store, queries[i].nid, + queries[i].prop, &result)) || !TEST_str_eq((char *)result, queries[i].expected)) { TEST_note("iteration %zd", i + 1); ossl_property_free(pq); From no-reply at appveyor.com Mon Feb 25 07:55:51 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 25 Feb 2019 07:55:51 +0000 Subject: Build failed: openssl master.22808 Message-ID: <20190225075551.1.CF20214288016391@appveyor.com> An HTML attachment was scrubbed... URL: From matt at openssl.org Mon Feb 25 10:30:07 2019 From: matt at openssl.org (Matt Caswell) Date: Mon, 25 Feb 2019 10:30:07 +0000 Subject: [openssl] master update Message-ID: <1551090607.549732.32244.nullmailer@dev.openssl.org> The branch master has been updated via 56a98c3efde3a49084a232a56aa666533362f1a2 (commit) from ef9f6066998718ae904fc10d46205d67aad9aebe (commit) - Log ----------------------------------------------------------------- commit 56a98c3efde3a49084a232a56aa666533362f1a2 Author: David von Oheimb Date: Sun Feb 3 07:57:59 2019 +0100 fix x509 -force_pubkey option to take effect with cert input or self-signing; improve its doc Reviewed-by: Viktor Dukhovni Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8165) ----------------------------------------------------------------------- Summary of changes: apps/x509.c | 27 +++++++++++++-------------- doc/man1/x509.pod | 36 ++++++++++++++++-------------------- 2 files changed, 29 insertions(+), 34 deletions(-) diff --git a/apps/x509.c b/apps/x509.c index e9de495..e4d5e07 100644 --- a/apps/x509.c +++ b/apps/x509.c @@ -33,7 +33,7 @@ #define DEF_DAYS 30 static int callb(int ok, X509_STORE_CTX *ctx); -static int sign(X509 *x, EVP_PKEY *pkey, int days, int clrext, +static int sign(X509 *x, EVP_PKEY *pkey, EVP_PKEY *fkey, int days, int clrext, const EVP_MD *digest, CONF *conf, const char *section, int preserve_dates); static int x509_certify(X509_STORE *ctx, const char *CAfile, const EVP_MD *digest, @@ -132,7 +132,7 @@ const OPTIONS x509_options[] = { {"CAform", OPT_CAFORM, 'F', "CA format - default PEM"}, {"CAkeyform", OPT_CAKEYFORM, 'f', "CA key format - default PEM"}, {"sigopt", OPT_SIGOPT, 's', "Signature parameter in n:v form"}, - {"force_pubkey", OPT_FORCE_PUBKEY, '<', "Force the Key to put inside certificate"}, + {"force_pubkey", OPT_FORCE_PUBKEY, '<', "Force the key to put inside certificate"}, {"next_serial", OPT_NEXT_SERIAL, '-', "Increment current certificate serial number"}, {"clrreject", OPT_CLRREJECT, '-', "Clears all the prohibited or rejected uses of the certificate"}, @@ -574,18 +574,16 @@ int x509_main(int argc, char **argv) if (!set_cert_times(x, NULL, NULL, days)) goto end; - if (fkey != NULL) { - X509_set_pubkey(x, fkey); - } else { - pkey = X509_REQ_get0_pubkey(req); - X509_set_pubkey(x, pkey); - } + if (!X509_set_pubkey(x, fkey != NULL ? fkey : X509_REQ_get0_pubkey(req))) + goto end; } else { x = load_cert(infile, informat, "Certificate"); + if (x == NULL) + goto end; + if (fkey != NULL && !X509_set_pubkey(x, fkey)) + goto end; } - if (x == NULL) - goto end; if (CA_flag) { xca = load_cert(CAfile, CAformat, "CA Certificate"); if (xca == NULL) @@ -799,7 +797,8 @@ int x509_main(int argc, char **argv) goto end; } - if (!sign(x, Upkey, days, clrext, digest, extconf, extsect, preserve_dates)) + if (!sign(x, Upkey, fkey, days, clrext, digest, extconf, + extsect, preserve_dates)) goto end; } else if (CA_flag == i) { BIO_printf(bio_err, "Getting CA Private Key\n"); @@ -1054,8 +1053,8 @@ static int callb(int ok, X509_STORE_CTX *ctx) } } -/* self sign */ -static int sign(X509 *x, EVP_PKEY *pkey, int days, int clrext, +/* self-issue; self-sign unless a forced public key (fkey) is given */ +static int sign(X509 *x, EVP_PKEY *pkey, EVP_PKEY *fkey, int days, int clrext, const EVP_MD *digest, CONF *conf, const char *section, int preserve_dates) { @@ -1064,7 +1063,7 @@ static int sign(X509 *x, EVP_PKEY *pkey, int days, int clrext, goto err; if (!preserve_dates && !set_cert_times(x, NULL, NULL, days)) goto err; - if (!X509_set_pubkey(x, pkey)) + if (fkey == NULL && !X509_set_pubkey(x, pkey)) goto err; if (clrext) { while (X509_get_ext_count(x) > 0) diff --git a/doc/man1/x509.pod b/doc/man1/x509.pod index 75919ca..251e3f7 100644 --- a/doc/man1/x509.pod +++ b/doc/man1/x509.pod @@ -52,7 +52,7 @@ B B [B<-CAkey filename>] [B<-CAcreateserial>] [B<-CAserial filename>] -[B<-force_pubkey key>] +[B<-force_pubkey filename>] [B<-text>] [B<-ext extensions>] [B<-certopt option>] @@ -140,8 +140,9 @@ for all available algorithms. =item B<-preserve_dates> -When signing a certificate, preserve the "notBefore" and "notAfter" dates instead -of adjusting them to current time and duration. Cannot be used with the B<-days> option. +When signing a certificate, preserve the "notBefore" and "notAfter" dates +instead of adjusting them to current time and duration. +Cannot be used with the B<-days> option. =back @@ -354,17 +355,12 @@ can thus behave like a "mini CA". This option causes the input file to be self signed using the supplied private key. -If the input file is a certificate it sets the issuer name to the -subject name (i.e. makes it self signed) changes the public key to the -supplied value and changes the start and end dates. The start date is -set to the current time and the end date is set to a value determined -by the B<-days> option. Any certificate extensions are retained unless -the B<-clrext> option is supplied; this includes, for example, any existing -key identifier extensions. - -If the input is a certificate request then a self signed certificate -is created using the supplied private key using the subject name in -the request. +It sets the issuer name to the subject name (i.e., makes it self-issued) +and changes the public key to the supplied value (unless overridden by +B<-force_pubkey>). It sets the validity start date to the current time +and the end date to a value determined by the B<-days> option. +It retains any certificate extensions unless the B<-clrext> option is supplied; +this includes, for example, any existing key identifier extensions. =item B<-passin arg> @@ -458,14 +454,14 @@ specified then the extensions should either be contained in the unnamed L manual page for details of the extension section format. -=item B<-force_pubkey key> +=item B<-force_pubkey filename> -When a certificate is created set its public key to B instead of the -key in the certificate or certificate request. This option is useful for -creating certificates where the algorithm can't normally sign requests, for -example DH. +When a certificate is created set its public key to the key in B +instead of the key contained in the input or given with the B<-signkey> option. +This option is useful for creating self-issued certificates that are not +self-signed, for instance when the key cannot be used for signing, such as DH. -The format or B can be specified using the B<-keyform> option. +The format of the key file can be specified using the B<-keyform> option. =back From no-reply at appveyor.com Mon Feb 25 12:25:57 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 25 Feb 2019 12:25:57 +0000 Subject: Build failed: openssl master.22821 Message-ID: <20190225122557.1.2E25930DFB63DCFF@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 25 12:51:15 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 25 Feb 2019 12:51:15 +0000 Subject: Build completed: openssl master.22822 Message-ID: <20190225125115.1.C3ACE168ACF04CDD@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 25 14:14:11 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 25 Feb 2019 14:14:11 +0000 Subject: Build failed: openssl master.22825 Message-ID: <20190225141411.1.8BBE0B9AC9757335@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 25 14:26:57 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 25 Feb 2019 14:26:57 +0000 Subject: Build completed: openssl master.22826 Message-ID: <20190225142657.1.A2F1A97F5D89A845@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 25 14:44:57 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 25 Feb 2019 14:44:57 +0000 Subject: Build failed: openssl master.22827 Message-ID: <20190225144457.1.04DCAC231BFCFD98@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 25 15:38:54 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 25 Feb 2019 15:38:54 +0000 Subject: Build failed: openssl master.22829 Message-ID: <20190225153854.1.1965C0F85D62C8AD@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 25 16:06:35 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 25 Feb 2019 16:06:35 +0000 Subject: Build completed: openssl master.22830 Message-ID: <20190225160635.1.C902982A4410735F@appveyor.com> An HTML attachment was scrubbed... URL: From matt at openssl.org Mon Feb 25 16:32:06 2019 From: matt at openssl.org (Matt Caswell) Date: Mon, 25 Feb 2019 16:32:06 +0000 Subject: [openssl] master update Message-ID: <1551112326.009202.20283.nullmailer@dev.openssl.org> The branch master has been updated via 576129cd72ae054d246221f111aabf42b9c6d76d (commit) from 56a98c3efde3a49084a232a56aa666533362f1a2 (commit) - Log ----------------------------------------------------------------- commit 576129cd72ae054d246221f111aabf42b9c6d76d Author: Matt Caswell Date: Mon Feb 25 11:28:32 2019 +0000 Ensure bn_cmp_words can handle the case where n == 0 Thanks to David Benjamin who reported this, performed the analysis and suggested the patch. I have incorporated some of his analysis in the comments below. This issue can cause an out-of-bounds read. It is believed that this was not reachable until the recent "fixed top" changes. Analysis has so far only identified one code path that can encounter this - although it is possible that others may be found. The one code path only impacts 1.0.2 in certain builds. The fuzzer found a path in RSA where iqmp is too large. If the input is all zeros, the RSA CRT logic will multiply a padded zero by iqmp. Two mitigating factors: - Private keys which trip this are invalid (iqmp is not reduced mod p). Only systems which take untrusted private keys care. - In OpenSSL 1.1.x, there is a check which rejects the oversize iqmp, so the bug is only reproducible in 1.0.2 so far. Fortunately, the bug appears to be relatively harmless. The consequences of bn_cmp_word's misbehavior are: - OpenSSL may crash if the buffers are page-aligned and the previous page is non-existent. - OpenSSL will incorrectly treat two BN_ULONG buffers as not equal when they are equal. - Side channel concerns. The first is indeed a concern and is a DoS bug. The second is fine in this context. bn_cmp_word and bn_cmp_part_words are used to compute abs(a0 - a1) in Karatsuba. If a0 = a1, it does not matter whether we use a0 - a1 or a1 - a0. The third would be worth thinking about, but it is overshadowed by the entire Karatsuba implementation not being constant time. Due to the difficulty of tripping this and the low impact no CVE is felt necessary for this issue. Reviewed-by: Paul Dale Reviewed-by: Viktor Dukhovni (Merged from https://github.com/openssl/openssl/pull/8326) ----------------------------------------------------------------------- Summary of changes: crypto/bn/bn_lib.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c index 494ee49..e624caf 100644 --- a/crypto/bn/bn_lib.c +++ b/crypto/bn/bn_lib.c @@ -695,6 +695,9 @@ int bn_cmp_words(const BN_ULONG *a, const BN_ULONG *b, int n) int i; BN_ULONG aa, bb; + if (n == 0) + return 0; + aa = a[n - 1]; bb = b[n - 1]; if (aa != bb) From matt at openssl.org Mon Feb 25 16:44:09 2019 From: matt at openssl.org (Matt Caswell) Date: Mon, 25 Feb 2019 16:44:09 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551113049.027689.22208.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via df2cb82ae397ac7e1466f674ecd2309ac6de14e7 (commit) from 4af54c9b9933336d1c48f3012aca92262c36d3a8 (commit) - Log ----------------------------------------------------------------- commit df2cb82ae397ac7e1466f674ecd2309ac6de14e7 Author: Matt Caswell Date: Mon Feb 25 11:28:32 2019 +0000 Ensure bn_cmp_words can handle the case where n == 0 Thanks to David Benjamin who reported this, performed the analysis and suggested the patch. I have incorporated some of his analysis in the comments below. This issue can cause an out-of-bounds read. It is believed that this was not reachable until the recent "fixed top" changes. Analysis has so far only identified one code path that can encounter this - although it is possible that others may be found. The one code path only impacts 1.0.2 in certain builds. The fuzzer found a path in RSA where iqmp is too large. If the input is all zeros, the RSA CRT logic will multiply a padded zero by iqmp. Two mitigating factors: - Private keys which trip this are invalid (iqmp is not reduced mod p). Only systems which take untrusted private keys care. - In OpenSSL 1.1.x, there is a check which rejects the oversize iqmp, so the bug is only reproducible in 1.0.2 so far. Fortunately, the bug appears to be relatively harmless. The consequences of bn_cmp_word's misbehavior are: - OpenSSL may crash if the buffers are page-aligned and the previous page is non-existent. - OpenSSL will incorrectly treat two BN_ULONG buffers as not equal when they are equal. - Side channel concerns. The first is indeed a concern and is a DoS bug. The second is fine in this context. bn_cmp_word and bn_cmp_part_words are used to compute abs(a0 - a1) in Karatsuba. If a0 = a1, it does not matter whether we use a0 - a1 or a1 - a0. The third would be worth thinking about, but it is overshadowed by the entire Karatsuba implementation not being constant time. Due to the difficulty of tripping this and the low impact no CVE is felt necessary for this issue. Reviewed-by: Paul Dale Reviewed-by: Viktor Dukhovni (Merged from https://github.com/openssl/openssl/pull/8326) (cherry picked from commit 576129cd72ae054d246221f111aabf42b9c6d76d) ----------------------------------------------------------------------- Summary of changes: crypto/bn/bn_lib.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c index 040c4cd..06f67ed 100644 --- a/crypto/bn/bn_lib.c +++ b/crypto/bn/bn_lib.c @@ -695,6 +695,9 @@ int bn_cmp_words(const BN_ULONG *a, const BN_ULONG *b, int n) int i; BN_ULONG aa, bb; + if (n == 0) + return 0; + aa = a[n - 1]; bb = b[n - 1]; if (aa != bb) From matt at openssl.org Mon Feb 25 16:44:40 2019 From: matt at openssl.org (Matt Caswell) Date: Mon, 25 Feb 2019 16:44:40 +0000 Subject: [openssl] OpenSSL_1_1_0-stable update Message-ID: <1551113080.444834.23062.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_0-stable has been updated via ad01b01c16b0b9d95de79c3b01398e3582a5105b (commit) from 3318493b85a8189f6385d5489f97f0e101471f92 (commit) - Log ----------------------------------------------------------------- commit ad01b01c16b0b9d95de79c3b01398e3582a5105b Author: Matt Caswell Date: Mon Feb 25 11:28:32 2019 +0000 Ensure bn_cmp_words can handle the case where n == 0 Thanks to David Benjamin who reported this, performed the analysis and suggested the patch. I have incorporated some of his analysis in the comments below. This issue can cause an out-of-bounds read. It is believed that this was not reachable until the recent "fixed top" changes. Analysis has so far only identified one code path that can encounter this - although it is possible that others may be found. The one code path only impacts 1.0.2 in certain builds. The fuzzer found a path in RSA where iqmp is too large. If the input is all zeros, the RSA CRT logic will multiply a padded zero by iqmp. Two mitigating factors: - Private keys which trip this are invalid (iqmp is not reduced mod p). Only systems which take untrusted private keys care. - In OpenSSL 1.1.x, there is a check which rejects the oversize iqmp, so the bug is only reproducible in 1.0.2 so far. Fortunately, the bug appears to be relatively harmless. The consequences of bn_cmp_word's misbehavior are: - OpenSSL may crash if the buffers are page-aligned and the previous page is non-existent. - OpenSSL will incorrectly treat two BN_ULONG buffers as not equal when they are equal. - Side channel concerns. The first is indeed a concern and is a DoS bug. The second is fine in this context. bn_cmp_word and bn_cmp_part_words are used to compute abs(a0 - a1) in Karatsuba. If a0 = a1, it does not matter whether we use a0 - a1 or a1 - a0. The third would be worth thinking about, but it is overshadowed by the entire Karatsuba implementation not being constant time. Due to the difficulty of tripping this and the low impact no CVE is felt necessary for this issue. Reviewed-by: Paul Dale Reviewed-by: Viktor Dukhovni (Merged from https://github.com/openssl/openssl/pull/8326) (cherry picked from commit 576129cd72ae054d246221f111aabf42b9c6d76d) ----------------------------------------------------------------------- Summary of changes: crypto/bn/bn_lib.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c index 3f3c7bb..9885b0c 100644 --- a/crypto/bn/bn_lib.c +++ b/crypto/bn/bn_lib.c @@ -780,6 +780,9 @@ int bn_cmp_words(const BN_ULONG *a, const BN_ULONG *b, int n) int i; BN_ULONG aa, bb; + if (n == 0) + return 0; + aa = a[n - 1]; bb = b[n - 1]; if (aa != bb) From matt at openssl.org Mon Feb 25 16:45:00 2019 From: matt at openssl.org (Matt Caswell) Date: Mon, 25 Feb 2019 16:45:00 +0000 Subject: [openssl] OpenSSL_1_0_2-stable update Message-ID: <1551113100.690276.23886.nullmailer@dev.openssl.org> The branch OpenSSL_1_0_2-stable has been updated via b250f2a431ab0cc03a8a1cc4cdc1a7e9ecb052a6 (commit) from 9acdddf1acd6f6be41ddb711b6b55fe7f5481320 (commit) - Log ----------------------------------------------------------------- commit b250f2a431ab0cc03a8a1cc4cdc1a7e9ecb052a6 Author: Matt Caswell Date: Mon Feb 25 11:28:32 2019 +0000 Ensure bn_cmp_words can handle the case where n == 0 Thanks to David Benjamin who reported this, performed the analysis and suggested the patch. I have incorporated some of his analysis in the comments below. This issue can cause an out-of-bounds read. It is believed that this was not reachable until the recent "fixed top" changes. Analysis has so far only identified one code path that can encounter this - although it is possible that others may be found. The one code path only impacts 1.0.2 in certain builds. The fuzzer found a path in RSA where iqmp is too large. If the input is all zeros, the RSA CRT logic will multiply a padded zero by iqmp. Two mitigating factors: - Private keys which trip this are invalid (iqmp is not reduced mod p). Only systems which take untrusted private keys care. - In OpenSSL 1.1.x, there is a check which rejects the oversize iqmp, so the bug is only reproducible in 1.0.2 so far. Fortunately, the bug appears to be relatively harmless. The consequences of bn_cmp_word's misbehavior are: - OpenSSL may crash if the buffers are page-aligned and the previous page is non-existent. - OpenSSL will incorrectly treat two BN_ULONG buffers as not equal when they are equal. - Side channel concerns. The first is indeed a concern and is a DoS bug. The second is fine in this context. bn_cmp_word and bn_cmp_part_words are used to compute abs(a0 - a1) in Karatsuba. If a0 = a1, it does not matter whether we use a0 - a1 or a1 - a0. The third would be worth thinking about, but it is overshadowed by the entire Karatsuba implementation not being constant time. Due to the difficulty of tripping this and the low impact no CVE is felt necessary for this issue. Reviewed-by: Paul Dale Reviewed-by: Viktor Dukhovni (Merged from https://github.com/openssl/openssl/pull/8326) (cherry picked from commit 576129cd72ae054d246221f111aabf42b9c6d76d) ----------------------------------------------------------------------- Summary of changes: crypto/bn/bn_lib.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c index 9b95e5f..2a84698 100644 --- a/crypto/bn/bn_lib.c +++ b/crypto/bn/bn_lib.c @@ -836,6 +836,9 @@ int bn_cmp_words(const BN_ULONG *a, const BN_ULONG *b, int n) int i; BN_ULONG aa, bb; + if (n == 0) + return 0; + aa = a[n - 1]; bb = b[n - 1]; if (aa != bb) From no-reply at appveyor.com Mon Feb 25 16:53:44 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 25 Feb 2019 16:53:44 +0000 Subject: Build failed: openssl master.22833 Message-ID: <20190225165344.1.DC11D411BCFDB281@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 25 17:52:23 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 25 Feb 2019 17:52:23 +0000 Subject: Build completed: openssl master.22834 Message-ID: <20190225175223.1.1FC46B15A2D288B3@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Mon Feb 25 18:37:32 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 25 Feb 2019 18:37:32 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551119852.673924.2884.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via f408e2a352b59f2e7aa2160bfb6285725fe88ea7 (commit) from df2cb82ae397ac7e1466f674ecd2309ac6de14e7 (commit) - Log ----------------------------------------------------------------- commit f408e2a352b59f2e7aa2160bfb6285725fe88ea7 Author: Richard Levitte Date: Mon Feb 25 19:27:42 2019 +0100 Rearrange the inclusion of curve448/curve448_lcl.h The real cause for this change is that test/ec_internal_test.c includes ec_lcl.h, and including curve448/curve448_lcl.h from there doesn't work so well with compilers who always do inclusions relative to the C file being compiled. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8334) ----------------------------------------------------------------------- Summary of changes: crypto/ec/ec_lcl.h | 1 - crypto/ec/ecx_meth.c | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/crypto/ec/ec_lcl.h b/crypto/ec/ec_lcl.h index b3b7b28..119255f 100644 --- a/crypto/ec/ec_lcl.h +++ b/crypto/ec/ec_lcl.h @@ -15,7 +15,6 @@ #include #include "internal/refcount.h" #include "internal/ec_int.h" -#include "curve448/curve448_lcl.h" #if defined(__SUNPRO_C) # if __SUNPRO_C >= 0x520 diff --git a/crypto/ec/ecx_meth.c b/crypto/ec/ecx_meth.c index b76bfdb..efbff49 100644 --- a/crypto/ec/ecx_meth.c +++ b/crypto/ec/ecx_meth.c @@ -15,6 +15,7 @@ #include "internal/asn1_int.h" #include "internal/evp_int.h" #include "ec_lcl.h" +#include "curve448/curve448_lcl.h" #define X25519_BITS 253 #define X25519_SECURITY_BITS 128 From levitte at openssl.org Mon Feb 25 18:38:12 2019 From: levitte at openssl.org (Richard Levitte) Date: Mon, 25 Feb 2019 18:38:12 +0000 Subject: [openssl] master update Message-ID: <1551119892.384784.3777.nullmailer@dev.openssl.org> The branch master has been updated via 13d928d38b5ba4f8085cf750bf3fd55685f92a61 (commit) from 576129cd72ae054d246221f111aabf42b9c6d76d (commit) - Log ----------------------------------------------------------------- commit 13d928d38b5ba4f8085cf750bf3fd55685f92a61 Author: Richard Levitte Date: Mon Feb 25 19:27:42 2019 +0100 Rearrange the inclusion of curve448/curve448_lcl.h The real cause for this change is that test/ec_internal_test.c includes ec_lcl.h, and including curve448/curve448_lcl.h from there doesn't work so well with compilers who always do inclusions relative to the C file being compiled. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8334) (cherry picked from commit f408e2a352b59f2e7aa2160bfb6285725fe88ea7) ----------------------------------------------------------------------- Summary of changes: crypto/ec/ec_lcl.h | 1 - crypto/ec/ecx_meth.c | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/crypto/ec/ec_lcl.h b/crypto/ec/ec_lcl.h index 312b538..6b90ef3 100644 --- a/crypto/ec/ec_lcl.h +++ b/crypto/ec/ec_lcl.h @@ -15,7 +15,6 @@ #include #include "internal/refcount.h" #include "internal/ec_int.h" -#include "curve448/curve448_lcl.h" #if defined(__SUNPRO_C) # if __SUNPRO_C >= 0x520 diff --git a/crypto/ec/ecx_meth.c b/crypto/ec/ecx_meth.c index fbe9727..7d133a3 100644 --- a/crypto/ec/ecx_meth.c +++ b/crypto/ec/ecx_meth.c @@ -15,6 +15,7 @@ #include "internal/asn1_int.h" #include "internal/evp_int.h" #include "ec_lcl.h" +#include "curve448/curve448_lcl.h" #define X25519_BITS 253 #define X25519_SECURITY_BITS 128 From no-reply at appveyor.com Mon Feb 25 23:35:53 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 25 Feb 2019 23:35:53 +0000 Subject: Build failed: openssl master.22848 Message-ID: <20190225233553.1.0332D0A7AD5B5E09@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Mon Feb 25 23:55:48 2019 From: no-reply at appveyor.com (AppVeyor) Date: Mon, 25 Feb 2019 23:55:48 +0000 Subject: Build failed: openssl master.22849 Message-ID: <20190225235548.1.BBDA22C63079B3A1@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 26 01:53:21 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 26 Feb 2019 01:53:21 +0000 Subject: Build failed: openssl master.22851 Message-ID: <20190226015321.1.E06C3A70B9D0CE66@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 26 04:17:07 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 26 Feb 2019 04:17:07 +0000 Subject: Build failed: openssl master.22852 Message-ID: <20190226041707.1.C7F30174209EFBB5@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 26 09:19:36 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 26 Feb 2019 09:19:36 +0000 Subject: Build failed: openssl master.22863 Message-ID: <20190226091936.1.D073AB957C7E5B53@appveyor.com> An HTML attachment was scrubbed... URL: From matt at openssl.org Tue Feb 26 10:06:30 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 10:06:30 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551175590.152403.25526.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via f30022cd581200a4c434f0db41b596c42fafd9de (commit) from f408e2a352b59f2e7aa2160bfb6285725fe88ea7 (commit) - Log ----------------------------------------------------------------- commit f30022cd581200a4c434f0db41b596c42fafd9de Author: Richard Levitte Date: Tue Feb 26 10:41:36 2019 +0100 VMS: disable the shlibload test for now test/shlibloadtest.c needs added code for VMS shared libraries Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8342) ----------------------------------------------------------------------- Summary of changes: test/recipes/90-test_shlibload.t | 1 + 1 file changed, 1 insertion(+) diff --git a/test/recipes/90-test_shlibload.t b/test/recipes/90-test_shlibload.t index 3420017..9c51ca9 100644 --- a/test/recipes/90-test_shlibload.t +++ b/test/recipes/90-test_shlibload.t @@ -20,6 +20,7 @@ use configdata; plan skip_all => "Test only supported in a shared build" if disabled("shared"); plan skip_all => "Test is disabled on AIX" if config('target') =~ m|^aix|; +plan skip_all => "Test is disabled on VMS" if config('target') =~ m|^vms|; plan skip_all => "Test only supported in a dso build" if disabled("dso"); plan tests => 10; From matt at openssl.org Tue Feb 26 10:45:44 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 10:45:44 +0000 Subject: [openssl] master update Message-ID: <1551177944.274597.21262.nullmailer@dev.openssl.org> The branch master has been updated via 565a19eef35926b4b9675f6cc3964fb290a5b380 (commit) from 13d928d38b5ba4f8085cf750bf3fd55685f92a61 (commit) - Log ----------------------------------------------------------------- commit 565a19eef35926b4b9675f6cc3964fb290a5b380 Author: Richard Levitte Date: Tue Feb 26 11:22:16 2019 +0100 Disable 02-test_errstr.t on msys/mingw as well as MSWin32 There is too high a risk that perl and OpenSSL are linked with different C RTLs, and thereby get different messages for even the most mundane error numbers. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8343) ----------------------------------------------------------------------- Summary of changes: test/recipes/02-test_errstr.t | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/recipes/02-test_errstr.t b/test/recipes/02-test_errstr.t index a9e8ed4..3498b81 100644 --- a/test/recipes/02-test_errstr.t +++ b/test/recipes/02-test_errstr.t @@ -31,6 +31,12 @@ setup('test_errstr'); plan skip_all => 'This is unsupported for cross compiled configurations' if config('CROSS_COMPILE'); +# The same can be said when compiling OpenSSL with mingw configuration +# on Windows when built with msys perl. Similar problems are also observed +# in MSVC builds, depending on the perl implementation used. +plan skip_all => 'This is unsupported on MSYS/MinGW or MSWin32' + if $^O eq 'msys' or $^O eq 'MSWin32'; + plan skip_all => 'OpenSSL is configured "no-autoerrinit" or "no-err"' if disabled('autoerrinit') || disabled('err'); From matt at openssl.org Tue Feb 26 10:45:54 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 10:45:54 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551177954.988686.22220.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via a2854abe54df44d01a147ebaf8ca810361904783 (commit) from f30022cd581200a4c434f0db41b596c42fafd9de (commit) - Log ----------------------------------------------------------------- commit a2854abe54df44d01a147ebaf8ca810361904783 Author: Richard Levitte Date: Tue Feb 26 11:22:16 2019 +0100 Disable 02-test_errstr.t on msys/mingw as well as MSWin32 There is too high a risk that perl and OpenSSL are linked with different C RTLs, and thereby get different messages for even the most mundane error numbers. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8343) (cherry picked from commit 565a19eef35926b4b9675f6cc3964fb290a5b380) ----------------------------------------------------------------------- Summary of changes: test/recipes/02-test_errstr.t | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/recipes/02-test_errstr.t b/test/recipes/02-test_errstr.t index 35a802f..6db4761 100644 --- a/test/recipes/02-test_errstr.t +++ b/test/recipes/02-test_errstr.t @@ -31,6 +31,12 @@ setup('test_errstr'); plan skip_all => 'This is unsupported for cross compiled configurations' if config('CROSS_COMPILE'); +# The same can be said when compiling OpenSSL with mingw configuration +# on Windows when built with msys perl. Similar problems are also observed +# in MSVC builds, depending on the perl implementation used. +plan skip_all => 'This is unsupported on MSYS/MinGW or MSWin32' + if $^O eq 'msys' or $^O eq 'MSWin32'; + plan skip_all => 'OpenSSL is configured "no-autoerrinit" or "no-err"' if disabled('autoerrinit') || disabled('err'); From matt at openssl.org Tue Feb 26 10:47:01 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 10:47:01 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551178021.495400.23745.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 86f1d6ca3a7705de923cbcc942b4b74902f47053 (commit) from a2854abe54df44d01a147ebaf8ca810361904783 (commit) - Log ----------------------------------------------------------------- commit 86f1d6ca3a7705de923cbcc942b4b74902f47053 Author: Matt Caswell Date: Tue Feb 26 10:28:32 2019 +0000 Update NEWS for new release Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8344) ----------------------------------------------------------------------- Summary of changes: NEWS | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 6d2b97d..33ab03e 100644 --- a/NEWS +++ b/NEWS @@ -7,7 +7,10 @@ Major changes between OpenSSL 1.1.1a and OpenSSL 1.1.1b [under development] - o + o Change the info callback signals for the start and end of a post-handshake + message exchange in TLSv1.3. + o Fix a bug in DTLS over SCTP. This breaks interoperability with older versions + of OpenSSL like OpenSSL 1.1.0 and OpenSSL 1.0.2. Major changes between OpenSSL 1.1.1 and OpenSSL 1.1.1a [20 Nov 2018] From no-reply at appveyor.com Tue Feb 26 12:41:52 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 26 Feb 2019 12:41:52 +0000 Subject: Build failed: openssl master.22872 Message-ID: <20190226124152.1.AEDBBD091339EC62@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 26 13:03:17 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 26 Feb 2019 13:03:17 +0000 Subject: Build failed: openssl master.22873 Message-ID: <20190226130317.1.CF7F121735CA0850@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Tue Feb 26 13:08:09 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 26 Feb 2019 13:08:09 +0000 Subject: Build failed: openssl master.22874 Message-ID: <20190226130809.1.20006A6A6CF036F0@appveyor.com> An HTML attachment was scrubbed... URL: From matt at openssl.org Tue Feb 26 13:43:38 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 13:43:38 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551188618.180170.29714.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 047463833ebb713480c057a5a788a111f54b4f2e (commit) via 02f84c3e4abcae027ed8fb8b2c318afb8e191995 (commit) from 86f1d6ca3a7705de923cbcc942b4b74902f47053 (commit) - Log ----------------------------------------------------------------- commit 047463833ebb713480c057a5a788a111f54b4f2e Author: Eneas U de Queiroz Date: Thu Feb 21 14:16:12 2019 -0300 e_devcrypto: set digest input_blocksize This restores the behavior of previous versions of the /dev/crypto engine, in alignment with the default implementation. Reported-by: Gerard Looije Signed-off-by: Eneas U de Queiroz Reviewed-by: Richard Levitte Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8306) commit 02f84c3e4abcae027ed8fb8b2c318afb8e191995 Author: Eneas U de Queiroz Date: Tue Feb 12 10:44:19 2019 -0200 eng_devcrypto: close open session on init cipher_init may be called on an already initialized context, without a necessary cleanup. This separates cleanup from initialization, closing an eventual open session before creating a new one. Move the /dev/crypto session cleanup code to its own function. Signed-off-by: Eneas U de Queiroz Reviewed-by: Richard Levitte Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8306) ----------------------------------------------------------------------- Summary of changes: crypto/engine/eng_devcrypto.c | 70 ++++++++++++++++++++++++++++--------------- 1 file changed, 46 insertions(+), 24 deletions(-) diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c index fe22447..5f5086e 100644 --- a/crypto/engine/eng_devcrypto.c +++ b/crypto/engine/eng_devcrypto.c @@ -37,6 +37,15 @@ */ static int cfd; +static int clean_devcrypto_session(struct session_op *sess) { + if (ioctl(cfd, CIOCFSESSION, &sess->ses) < 0) { + SYSerr(SYS_F_IOCTL, errno); + return 0; + } + memset(sess, 0, sizeof(struct session_op)); + return 1; +} + /****************************************************************************** * * Ciphers @@ -145,7 +154,11 @@ static int cipher_init(EVP_CIPHER_CTX *ctx, const unsigned char *key, const struct cipher_data_st *cipher_d = get_cipher_data(EVP_CIPHER_CTX_nid(ctx)); - memset(&cipher_ctx->sess, 0, sizeof(cipher_ctx->sess)); + /* cleanup a previous session */ + if (cipher_ctx->sess.ses != 0 && + clean_devcrypto_session(&cipher_ctx->sess) == 0) + return 0; + cipher_ctx->sess.cipher = cipher_d->devcryptoid; cipher_ctx->sess.keylen = cipher_d->keylen; cipher_ctx->sess.key = (void *)key; @@ -284,15 +297,28 @@ static int ctr_do_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, static int cipher_ctrl(EVP_CIPHER_CTX *ctx, int type, int p1, void* p2) { + struct cipher_ctx *cipher_ctx = + (struct cipher_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx); EVP_CIPHER_CTX *to_ctx = (EVP_CIPHER_CTX *)p2; - struct cipher_ctx *cipher_ctx; + struct cipher_ctx *to_cipher_ctx; - if (type == EVP_CTRL_COPY) { + switch (type) { + case EVP_CTRL_COPY: + if (cipher_ctx == NULL) + return 1; /* when copying the context, a new session needs to be initialized */ - cipher_ctx = (struct cipher_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx); - return (cipher_ctx == NULL) - || cipher_init(to_ctx, cipher_ctx->sess.key, EVP_CIPHER_CTX_iv(ctx), + to_cipher_ctx = + (struct cipher_ctx *)EVP_CIPHER_CTX_get_cipher_data(to_ctx); + memset(&to_cipher_ctx->sess, 0, sizeof(to_cipher_ctx->sess)); + return cipher_init(to_ctx, cipher_ctx->sess.key, EVP_CIPHER_CTX_iv(ctx), (cipher_ctx->op == COP_ENCRYPT)); + + case EVP_CTRL_INIT: + memset(&cipher_ctx->sess, 0, sizeof(cipher_ctx->sess)); + return 1; + + default: + break; } return -1; @@ -303,12 +329,7 @@ static int cipher_cleanup(EVP_CIPHER_CTX *ctx) struct cipher_ctx *cipher_ctx = (struct cipher_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx); - if (ioctl(cfd, CIOCFSESSION, &cipher_ctx->sess.ses) < 0) { - SYSerr(SYS_F_IOCTL, errno); - return 0; - } - - return 1; + return clean_devcrypto_session(&cipher_ctx->sess); } /* @@ -354,6 +375,7 @@ static void prepare_cipher_methods(void) || !EVP_CIPHER_meth_set_flags(known_cipher_methods[i], cipher_data[i].flags | EVP_CIPH_CUSTOM_COPY + | EVP_CIPH_CTRL_INIT | EVP_CIPH_FLAG_DEFAULT_ASN1) || !EVP_CIPHER_meth_set_init(known_cipher_methods[i], cipher_init) || !EVP_CIPHER_meth_set_do_cipher(known_cipher_methods[i], @@ -443,29 +465,30 @@ struct digest_ctx { static const struct digest_data_st { int nid; + int blocksize; int digestlen; int devcryptoid; } digest_data[] = { #ifndef OPENSSL_NO_MD5 - { NID_md5, 16, CRYPTO_MD5 }, + { NID_md5, /* MD5_CBLOCK */ 64, 16, CRYPTO_MD5 }, #endif - { NID_sha1, 20, CRYPTO_SHA1 }, + { NID_sha1, SHA_CBLOCK, 20, CRYPTO_SHA1 }, #ifndef OPENSSL_NO_RMD160 # if !defined(CHECK_BSD_STYLE_MACROS) || defined(CRYPTO_RIPEMD160) - { NID_ripemd160, 20, CRYPTO_RIPEMD160 }, + { NID_ripemd160, /* RIPEMD160_CBLOCK */ 64, 20, CRYPTO_RIPEMD160 }, # endif #endif #if !defined(CHECK_BSD_STYLE_MACROS) || defined(CRYPTO_SHA2_224) - { NID_sha224, 224 / 8, CRYPTO_SHA2_224 }, + { NID_sha224, SHA256_CBLOCK, 224 / 8, CRYPTO_SHA2_224 }, #endif #if !defined(CHECK_BSD_STYLE_MACROS) || defined(CRYPTO_SHA2_256) - { NID_sha256, 256 / 8, CRYPTO_SHA2_256 }, + { NID_sha256, SHA256_CBLOCK, 256 / 8, CRYPTO_SHA2_256 }, #endif #if !defined(CHECK_BSD_STYLE_MACROS) || defined(CRYPTO_SHA2_384) - { NID_sha384, 384 / 8, CRYPTO_SHA2_384 }, + { NID_sha384, SHA512_CBLOCK, 384 / 8, CRYPTO_SHA2_384 }, #endif #if !defined(CHECK_BSD_STYLE_MACROS) || defined(CRYPTO_SHA2_512) - { NID_sha512, 512 / 8, CRYPTO_SHA2_512 }, + { NID_sha512, SHA512_CBLOCK, 512 / 8, CRYPTO_SHA2_512 }, #endif }; @@ -596,11 +619,8 @@ static int digest_cleanup(EVP_MD_CTX *ctx) if (digest_ctx == NULL) return 1; - if (ioctl(cfd, CIOCFSESSION, &digest_ctx->sess.ses) < 0) { - SYSerr(SYS_F_IOCTL, errno); - return 0; - } - return 1; + + return clean_devcrypto_session(&digest_ctx->sess); } static int devcrypto_test_digest(size_t digest_data_index) @@ -651,6 +671,8 @@ static void prepare_digest_methods(void) if ((known_digest_methods[i] = EVP_MD_meth_new(digest_data[i].nid, NID_undef)) == NULL + || !EVP_MD_meth_set_input_blocksize(known_digest_methods[i], + digest_data[i].blocksize) || !EVP_MD_meth_set_result_size(known_digest_methods[i], digest_data[i].digestlen) || !EVP_MD_meth_set_init(known_digest_methods[i], digest_init) From no-reply at appveyor.com Tue Feb 26 14:00:40 2019 From: no-reply at appveyor.com (AppVeyor) Date: Tue, 26 Feb 2019 14:00:40 +0000 Subject: Build completed: openssl master.22875 Message-ID: <20190226140040.1.080E5BF5AB50097E@appveyor.com> An HTML attachment was scrubbed... URL: From matt at openssl.org Tue Feb 26 14:11:14 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 14:11:14 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551190274.687576.20469.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 72a7a7021fa8bc82a11bc08bac1b0241a92143d0 (commit) from 047463833ebb713480c057a5a788a111f54b4f2e (commit) - Log ----------------------------------------------------------------- commit 72a7a7021fa8bc82a11bc08bac1b0241a92143d0 Author: Matt Caswell Date: Tue Feb 26 14:05:09 2019 +0000 Update copyright year Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8347) ----------------------------------------------------------------------- Summary of changes: Configure | 2 +- LICENSE | 2 +- apps/apps.c | 2 +- apps/ocsp.c | 2 +- apps/pkcs12.c | 2 +- apps/rehash.c | 2 +- apps/s_cb.c | 2 +- apps/s_server.c | 2 +- apps/speed.c | 2 +- apps/verify.c | 2 +- config | 2 +- crypto/aes/asm/aes-x86_64.pl | 2 +- crypto/aes/asm/aesni-x86_64.pl | 2 +- crypto/aes/asm/aesv8-armx.pl | 2 +- crypto/aes/asm/bsaes-x86_64.pl | 2 +- crypto/aes/asm/vpaes-armv8.pl | 2 +- crypto/aes/asm/vpaes-x86_64.pl | 2 +- crypto/armcap.c | 2 +- crypto/asn1/d2i_pu.c | 2 +- crypto/bio/b_addr.c | 2 +- crypto/bio/bss_file.c | 2 +- crypto/bio/bss_mem.c | 2 +- crypto/bn/asm/armv8-mont.pl | 2 +- crypto/bn/asm/ia64.S | 2 +- crypto/bn/asm/rsaz-avx2.pl | 2 +- crypto/bn/asm/sparcv8plus.S | 2 +- crypto/bn/asm/x86_64-mont5.pl | 2 +- crypto/bn/bn_depr.c | 2 +- crypto/bn/bn_exp.c | 2 +- crypto/bn/bn_lib.c | 2 +- crypto/chacha/asm/chacha-armv8.pl | 2 +- crypto/cms/cms_kari.c | 2 +- crypto/conf/conf_def.c | 2 +- crypto/conf/conf_lib.c | 2 +- crypto/conf/conf_mod.c | 2 +- crypto/conf/conf_sap.c | 2 +- crypto/conf/conf_ssl.c | 2 +- crypto/cryptlib.c | 2 +- crypto/des/asm/des_enc.m4 | 2 +- crypto/ec/asm/ecp_nistz256-armv8.pl | 2 +- crypto/ec/asm/ecp_nistz256-x86_64.pl | 2 +- crypto/ec/curve448/point_448.h | 2 +- crypto/ec/ecx_meth.c | 2 +- crypto/engine/eng_devcrypto.c | 2 +- crypto/engine/eng_lib.c | 2 +- crypto/err/err.c | 2 +- crypto/err/openssl.txt | 2 +- crypto/init.c | 2 +- crypto/modes/asm/ghash-x86_64.pl | 2 +- crypto/pem/pem_info.c | 2 +- crypto/perlasm/x86_64-xlate.pl | 2 +- crypto/poly1305/asm/poly1305-armv8.pl | 2 +- crypto/ppc_arch.h | 2 +- crypto/ppccap.c | 2 +- crypto/ppccpuid.pl | 2 +- crypto/rand/rand_unix.c | 2 +- crypto/sha/asm/keccak1600-armv8.pl | 2 +- crypto/sha/asm/sha512-armv8.pl | 2 +- crypto/srp/srp_lib.c | 2 +- crypto/srp/srp_vfy.c | 2 +- crypto/ui/ui_openssl.c | 2 +- crypto/uid.c | 2 +- crypto/x509/x_crl.c | 2 +- crypto/x509/x_pubkey.c | 2 +- crypto/x509/x_x509.c | 2 +- doc/man1/ca.pod | 2 +- doc/man1/dgst.pod | 2 +- doc/man1/ec.pod | 2 +- doc/man1/pkcs12.pod | 2 +- doc/man1/s_client.pod | 2 +- doc/man1/s_server.pod | 2 +- doc/man1/x509.pod | 2 +- doc/man3/CMS_get0_type.pod | 2 +- doc/man3/CONF_modules_load_file.pod | 2 +- doc/man3/CRYPTO_get_ex_new_index.pod | 2 +- doc/man3/EVP_PKEY_asn1_get_count.pod | 2 +- doc/man3/HMAC.pod | 2 +- doc/man3/OPENSSL_init_crypto.pod | 2 +- doc/man3/OPENSSL_malloc.pod | 2 +- doc/man3/RIPEMD160_Init.pod | 2 +- doc/man3/SSL_CONF_cmd.pod | 2 +- doc/man3/SSL_CTX_set0_CA_list.pod | 2 +- doc/man3/SSL_CTX_set_ctlog_list_file.pod | 2 +- doc/man3/SSL_CTX_set_info_callback.pod | 2 +- doc/man3/SSL_CTX_set_mode.pod | 2 +- doc/man3/SSL_CTX_set_record_padding_callback.pod | 2 +- doc/man3/SSL_CTX_set_ssl_version.pod | 2 +- doc/man3/SSL_key_update.pod | 2 +- doc/man3/SSL_read_early_data.pod | 2 +- doc/man5/config.pod | 2 +- engines/e_dasync.c | 2 +- include/internal/conf.h | 2 +- include/internal/cryptlib.h | 2 +- include/internal/sockets.h | 2 +- include/internal/thread_once.h | 2 +- include/internal/tsan_assist.h | 2 +- include/openssl/crypto.h | 2 +- include/openssl/e_os2.h | 2 +- include/openssl/evp.h | 2 +- include/openssl/ssl.h | 2 +- include/openssl/x509_vfy.h | 2 +- ms/uplink.c | 2 +- ssl/record/rec_layer_d1.c | 2 +- ssl/record/rec_layer_s3.c | 2 +- ssl/s3_enc.c | 2 +- ssl/ssl_ciph.c | 2 +- ssl/ssl_init.c | 2 +- ssl/ssl_lib.c | 2 +- ssl/ssl_locl.h | 2 +- ssl/statem/extensions.c | 2 +- ssl/statem/statem.c | 2 +- ssl/statem/statem_clnt.c | 2 +- ssl/statem/statem_lib.c | 2 +- ssl/statem/statem_locl.h | 2 +- ssl/statem/statem_srvr.c | 2 +- ssl/t1_enc.c | 2 +- ssl/tls13_enc.c | 2 +- test/bio_memleak_test.c | 2 +- test/cipherlist_test.c | 2 +- test/clienthellotest.c | 2 +- test/crltest.c | 2 +- test/drbgtest.c | 2 +- test/dtlstest.c | 2 +- test/ecdsatest.c | 2 +- test/evp_extra_test.c | 2 +- test/handshake_helper.c | 2 +- test/rdrand_sanitytest.c | 2 +- test/recipes/02-test_errstr.t | 2 +- test/recipes/70-test_sslextension.t | 2 +- test/recipes/70-test_sslrecords.t | 2 +- test/recipes/80-test_ssl_new.t | 2 +- test/recipes/90-test_bio_memleak.t | 2 +- test/recipes/90-test_gost.t | 2 +- test/recipes/90-test_shlibload.t | 2 +- test/servername_test.c | 2 +- test/shlibloadtest.c | 2 +- test/ssl-tests/29-dtls-sctp-label-bug.conf.in | 2 +- test/ssl_test_ctx.c | 2 +- test/ssl_test_ctx.h | 2 +- test/sslapitest.c | 2 +- test/ssltest_old.c | 2 +- test/ssltestlib.h | 2 +- test/testutil/main.c | 2 +- test/tls13secretstest.c | 2 +- test/x509aux.c | 2 +- util/openssl-format-source | 2 +- util/perl/TLSProxy/Alert.pm | 2 +- util/perl/TLSProxy/Certificate.pm | 2 +- util/perl/TLSProxy/ClientHello.pm | 2 +- util/perl/TLSProxy/EncryptedExtensions.pm | 2 +- util/perl/TLSProxy/Message.pm | 2 +- util/perl/TLSProxy/Proxy.pm | 2 +- util/perl/TLSProxy/Record.pm | 2 +- util/perl/TLSProxy/ServerHello.pm | 2 +- util/perl/TLSProxy/ServerKeyExchange.pm | 2 +- 155 files changed, 155 insertions(+), 155 deletions(-) diff --git a/Configure b/Configure index d300a76..6080122 100755 --- a/Configure +++ b/Configure @@ -1,6 +1,6 @@ #! /usr/bin/env perl # -*- mode: perl; -*- -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2019 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 diff --git a/LICENSE b/LICENSE index 0511f2e..9601ab4 100644 --- a/LICENSE +++ b/LICENSE @@ -10,7 +10,7 @@ --------------- /* ==================================================================== - * Copyright (c) 1998-2018 The OpenSSL Project. All rights reserved. + * Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/apps/apps.c b/apps/apps.c index 0501d2b..36cb0b2 100644 --- a/apps/apps.c +++ b/apps/apps.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/apps/ocsp.c b/apps/ocsp.c index 5ea92f3..e8aeb11 100644 --- a/apps/ocsp.c +++ b/apps/ocsp.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2019 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 diff --git a/apps/pkcs12.c b/apps/pkcs12.c index f10f8da..719a309 100644 --- a/apps/pkcs12.c +++ b/apps/pkcs12.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2019 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 diff --git a/apps/rehash.c b/apps/rehash.c index 8c23be7..2b769fb 100644 --- a/apps/rehash.c +++ b/apps/rehash.c @@ -1,5 +1,5 @@ /* - * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2013-2014 Timo Ter?s * * Licensed under the OpenSSL license (the "License"). You may not use diff --git a/apps/s_cb.c b/apps/s_cb.c index 2208f3d..d0e332a 100644 --- a/apps/s_cb.c +++ b/apps/s_cb.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/apps/s_server.c b/apps/s_server.c index caf47b3..929a08b 100644 --- a/apps/s_server.c +++ b/apps/s_server.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * diff --git a/apps/speed.c b/apps/speed.c index dbf50df..506737d 100644 --- a/apps/speed.c +++ b/apps/speed.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use diff --git a/apps/verify.c b/apps/verify.c index b2e8b4d..1f93856 100644 --- a/apps/verify.c +++ b/apps/verify.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/config b/config index 35e70f8..d0e31b6 100755 --- a/config +++ b/config @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 1998-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1998-2019 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 diff --git a/crypto/aes/asm/aes-x86_64.pl b/crypto/aes/asm/aes-x86_64.pl index 55c6414..d87e201 100755 --- a/crypto/aes/asm/aes-x86_64.pl +++ b/crypto/aes/asm/aes-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2019 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 diff --git a/crypto/aes/asm/aesni-x86_64.pl b/crypto/aes/asm/aesni-x86_64.pl index ebcd9b5..b68c14d 100644 --- a/crypto/aes/asm/aesni-x86_64.pl +++ b/crypto/aes/asm/aesni-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2019 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 diff --git a/crypto/aes/asm/aesv8-armx.pl b/crypto/aes/asm/aesv8-armx.pl index ffa52ab..eec0ed2 100755 --- a/crypto/aes/asm/aesv8-armx.pl +++ b/crypto/aes/asm/aesv8-armx.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2019 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 diff --git a/crypto/aes/asm/bsaes-x86_64.pl b/crypto/aes/asm/bsaes-x86_64.pl index 030452b..e623427 100644 --- a/crypto/aes/asm/bsaes-x86_64.pl +++ b/crypto/aes/asm/bsaes-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2019 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 diff --git a/crypto/aes/asm/vpaes-armv8.pl b/crypto/aes/asm/vpaes-armv8.pl index 5758133..e38288a 100755 --- a/crypto/aes/asm/vpaes-armv8.pl +++ b/crypto/aes/asm/vpaes-armv8.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2019 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 diff --git a/crypto/aes/asm/vpaes-x86_64.pl b/crypto/aes/asm/vpaes-x86_64.pl index ec2a8da..33d293e 100644 --- a/crypto/aes/asm/vpaes-x86_64.pl +++ b/crypto/aes/asm/vpaes-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2019 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 diff --git a/crypto/armcap.c b/crypto/armcap.c index cc75c07..58e54f0 100644 --- a/crypto/armcap.c +++ b/crypto/armcap.c @@ -1,5 +1,5 @@ /* - * Copyright 2011-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2011-2019 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 diff --git a/crypto/asn1/d2i_pu.c b/crypto/asn1/d2i_pu.c index 778114d..7bc16c7 100644 --- a/crypto/asn1/d2i_pu.c +++ b/crypto/asn1/d2i_pu.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/crypto/bio/b_addr.c b/crypto/bio/b_addr.c index a2fd4c9..4395ab7 100644 --- a/crypto/bio/b_addr.c +++ b/crypto/bio/b_addr.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/crypto/bio/bss_file.c b/crypto/bio/bss_file.c index 80fa108..0573447 100644 --- a/crypto/bio/bss_file.c +++ b/crypto/bio/bss_file.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/crypto/bio/bss_mem.c b/crypto/bio/bss_mem.c index 26caa65..10fcbf7 100644 --- a/crypto/bio/bss_mem.c +++ b/crypto/bio/bss_mem.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/crypto/bn/asm/armv8-mont.pl b/crypto/bn/asm/armv8-mont.pl index ed419c3..d8347bf 100755 --- a/crypto/bn/asm/armv8-mont.pl +++ b/crypto/bn/asm/armv8-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2019 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 diff --git a/crypto/bn/asm/ia64.S b/crypto/bn/asm/ia64.S index f7e5491..0a26735 100644 --- a/crypto/bn/asm/ia64.S +++ b/crypto/bn/asm/ia64.S @@ -3,7 +3,7 @@ .ident "ia64.S, Version 2.1" .ident "IA-64 ISA artwork by Andy Polyakov " -// Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. +// Copyright 2001-2019 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 diff --git a/crypto/bn/asm/rsaz-avx2.pl b/crypto/bn/asm/rsaz-avx2.pl index b295871..85cd73c 100755 --- a/crypto/bn/asm/rsaz-avx2.pl +++ b/crypto/bn/asm/rsaz-avx2.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2013-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2013-2019 The OpenSSL Project Authors. All Rights Reserved. # Copyright (c) 2012, Intel Corporation. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use diff --git a/crypto/bn/asm/sparcv8plus.S b/crypto/bn/asm/sparcv8plus.S index 831cf21..d520ffa 100644 --- a/crypto/bn/asm/sparcv8plus.S +++ b/crypto/bn/asm/sparcv8plus.S @@ -3,7 +3,7 @@ /* * ==================================================================== - * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2019 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 diff --git a/crypto/bn/asm/x86_64-mont5.pl b/crypto/bn/asm/x86_64-mont5.pl index 0492690..f43e13d 100755 --- a/crypto/bn/asm/x86_64-mont5.pl +++ b/crypto/bn/asm/x86_64-mont5.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2019 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 diff --git a/crypto/bn/bn_depr.c b/crypto/bn/bn_depr.c index 46ee0e9..58bcf19 100644 --- a/crypto/bn/bn_depr.c +++ b/crypto/bn/bn_depr.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2019 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 diff --git a/crypto/bn/bn_exp.c b/crypto/bn/bn_exp.c index b8d196f..88f2baf 100644 --- a/crypto/bn/bn_exp.c +++ b/crypto/bn/bn_exp.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c index 06f67ed..8286b38 100644 --- a/crypto/bn/bn_lib.c +++ b/crypto/bn/bn_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/crypto/chacha/asm/chacha-armv8.pl b/crypto/chacha/asm/chacha-armv8.pl index ae50fc9..e90be6d 100755 --- a/crypto/chacha/asm/chacha-armv8.pl +++ b/crypto/chacha/asm/chacha-armv8.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2019 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 diff --git a/crypto/cms/cms_kari.c b/crypto/cms/cms_kari.c index f104eec..5e83814 100644 --- a/crypto/cms/cms_kari.c +++ b/crypto/cms/cms_kari.c @@ -1,5 +1,5 @@ /* - * Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2013-2019 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 diff --git a/crypto/conf/conf_def.c b/crypto/conf/conf_def.c index 450eeb9..8e3f42a 100644 --- a/crypto/conf/conf_def.c +++ b/crypto/conf/conf_def.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/crypto/conf/conf_lib.c b/crypto/conf/conf_lib.c index 4ae7bd2..2d40ac9 100644 --- a/crypto/conf/conf_lib.c +++ b/crypto/conf/conf_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2019 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 diff --git a/crypto/conf/conf_mod.c b/crypto/conf/conf_mod.c index f1794e2..e703d97 100644 --- a/crypto/conf/conf_mod.c +++ b/crypto/conf/conf_mod.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2019 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 diff --git a/crypto/conf/conf_sap.c b/crypto/conf/conf_sap.c index a3306d0..2ce42f0 100644 --- a/crypto/conf/conf_sap.c +++ b/crypto/conf/conf_sap.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2019 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 diff --git a/crypto/conf/conf_ssl.c b/crypto/conf/conf_ssl.c index 8508d2e..387f2cf 100644 --- a/crypto/conf/conf_ssl.c +++ b/crypto/conf/conf_ssl.c @@ -1,5 +1,5 @@ /* - * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2019 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 diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c index 06fff16..7b761a3 100644 --- a/crypto/cryptlib.c +++ b/crypto/cryptlib.c @@ -1,5 +1,5 @@ /* - * Copyright 1998-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1998-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use diff --git a/crypto/des/asm/des_enc.m4 b/crypto/des/asm/des_enc.m4 index dad14d4..4ada97b 100644 --- a/crypto/des/asm/des_enc.m4 +++ b/crypto/des/asm/des_enc.m4 @@ -1,4 +1,4 @@ -! Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. +! Copyright 2000-2019 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 diff --git a/crypto/ec/asm/ecp_nistz256-armv8.pl b/crypto/ec/asm/ecp_nistz256-armv8.pl index d39bbe1..887ddfb 100644 --- a/crypto/ec/asm/ecp_nistz256-armv8.pl +++ b/crypto/ec/asm/ecp_nistz256-armv8.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2019 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 diff --git a/crypto/ec/asm/ecp_nistz256-x86_64.pl b/crypto/ec/asm/ecp_nistz256-x86_64.pl index b1ff2e3..87149e7 100755 --- a/crypto/ec/asm/ecp_nistz256-x86_64.pl +++ b/crypto/ec/asm/ecp_nistz256-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2019 The OpenSSL Project Authors. All Rights Reserved. # Copyright (c) 2014, Intel Corporation. All Rights Reserved. # Copyright (c) 2015 CloudFlare, Inc. # diff --git a/crypto/ec/curve448/point_448.h b/crypto/ec/curve448/point_448.h index 9dabb89..399f91b 100644 --- a/crypto/ec/curve448/point_448.h +++ b/crypto/ec/curve448/point_448.h @@ -1,5 +1,5 @@ /* - * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright 2015-2016 Cryptography Research, Inc. * * Licensed under the OpenSSL license (the "License"). You may not use diff --git a/crypto/ec/ecx_meth.c b/crypto/ec/ecx_meth.c index efbff49..e4cac99 100644 --- a/crypto/ec/ecx_meth.c +++ b/crypto/ec/ecx_meth.c @@ -1,5 +1,5 @@ /* - * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2019 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 diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c index 5f5086e..717d7c2 100644 --- a/crypto/engine/eng_devcrypto.c +++ b/crypto/engine/eng_devcrypto.c @@ -1,5 +1,5 @@ /* - * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017-2019 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 diff --git a/crypto/engine/eng_lib.c b/crypto/engine/eng_lib.c index 9e00f2d..d7f2026 100644 --- a/crypto/engine/eng_lib.c +++ b/crypto/engine/eng_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2019 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 diff --git a/crypto/err/err.c b/crypto/err/err.c index 48d8cfa..c737b2a 100644 --- a/crypto/err/err.c +++ b/crypto/err/err.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/crypto/err/openssl.txt b/crypto/err/openssl.txt index 6b5f7db..feff1dc 100644 --- a/crypto/err/openssl.txt +++ b/crypto/err/openssl.txt @@ -1,4 +1,4 @@ -# Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1999-2019 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 diff --git a/crypto/init.c b/crypto/init.c index c881fc7..b9a7334 100644 --- a/crypto/init.c +++ b/crypto/init.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/crypto/modes/asm/ghash-x86_64.pl b/crypto/modes/asm/ghash-x86_64.pl index 136b5a3..30158aa 100644 --- a/crypto/modes/asm/ghash-x86_64.pl +++ b/crypto/modes/asm/ghash-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2019 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 diff --git a/crypto/pem/pem_info.c b/crypto/pem/pem_info.c index 25dd55e..f90cb44 100644 --- a/crypto/pem/pem_info.c +++ b/crypto/pem/pem_info.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/crypto/perlasm/x86_64-xlate.pl b/crypto/perlasm/x86_64-xlate.pl index 1b0bf42..29a0eac 100755 --- a/crypto/perlasm/x86_64-xlate.pl +++ b/crypto/perlasm/x86_64-xlate.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2019 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 diff --git a/crypto/poly1305/asm/poly1305-armv8.pl b/crypto/poly1305/asm/poly1305-armv8.pl index 21897fe..6c6c9bb 100755 --- a/crypto/poly1305/asm/poly1305-armv8.pl +++ b/crypto/poly1305/asm/poly1305-armv8.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2019 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 diff --git a/crypto/ppc_arch.h b/crypto/ppc_arch.h index f0ae4ff..72bd746 100644 --- a/crypto/ppc_arch.h +++ b/crypto/ppc_arch.h @@ -1,5 +1,5 @@ /* - * Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2014-2019 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 diff --git a/crypto/ppccap.c b/crypto/ppccap.c index 0ce1951..afb9e31 100644 --- a/crypto/ppccap.c +++ b/crypto/ppccap.c @@ -1,5 +1,5 @@ /* - * Copyright 2009-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2009-2019 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 diff --git a/crypto/ppccpuid.pl b/crypto/ppccpuid.pl index f526c8a..a38445f 100755 --- a/crypto/ppccpuid.pl +++ b/crypto/ppccpuid.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2019 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 diff --git a/crypto/rand/rand_unix.c b/crypto/rand/rand_unix.c index d439c71..9cbc9ad 100644 --- a/crypto/rand/rand_unix.c +++ b/crypto/rand/rand_unix.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/crypto/sha/asm/keccak1600-armv8.pl b/crypto/sha/asm/keccak1600-armv8.pl index 768d036..a3117bd 100755 --- a/crypto/sha/asm/keccak1600-armv8.pl +++ b/crypto/sha/asm/keccak1600-armv8.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2019 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 diff --git a/crypto/sha/asm/sha512-armv8.pl b/crypto/sha/asm/sha512-armv8.pl index 60df899f..01ffe9f 100644 --- a/crypto/sha/asm/sha512-armv8.pl +++ b/crypto/sha/asm/sha512-armv8.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2019 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 diff --git a/crypto/srp/srp_lib.c b/crypto/srp/srp_lib.c index 747da88..ca20f6d 100644 --- a/crypto/srp/srp_lib.c +++ b/crypto/srp/srp_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2004-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2004, EdelKey Project. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use diff --git a/crypto/srp/srp_vfy.c b/crypto/srp/srp_vfy.c index f9988ab..eb279dd 100644 --- a/crypto/srp/srp_vfy.c +++ b/crypto/srp/srp_vfy.c @@ -1,5 +1,5 @@ /* - * Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2004-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2004, EdelKey Project. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use diff --git a/crypto/ui/ui_openssl.c b/crypto/ui/ui_openssl.c index 88c88ef..5ca418d 100644 --- a/crypto/ui/ui_openssl.c +++ b/crypto/ui/ui_openssl.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2019 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 diff --git a/crypto/uid.c b/crypto/uid.c index e1c08a7..b2b0964 100644 --- a/crypto/uid.c +++ b/crypto/uid.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2019 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 diff --git a/crypto/x509/x_crl.c b/crypto/x509/x_crl.c index a326451..12ab3cc 100644 --- a/crypto/x509/x_crl.c +++ b/crypto/x509/x_crl.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/crypto/x509/x_pubkey.c b/crypto/x509/x_pubkey.c index 06848a8..1c87b82 100644 --- a/crypto/x509/x_pubkey.c +++ b/crypto/x509/x_pubkey.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/crypto/x509/x_x509.c b/crypto/x509/x_x509.c index 720ac4c..afe59c46 100644 --- a/crypto/x509/x_x509.c +++ b/crypto/x509/x_x509.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/doc/man1/ca.pod b/doc/man1/ca.pod index 98f5dba..7385a00 100644 --- a/doc/man1/ca.pod +++ b/doc/man1/ca.pod @@ -753,7 +753,7 @@ L, L =head1 COPYRIGHT -Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2019 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 diff --git a/doc/man1/dgst.pod b/doc/man1/dgst.pod index a2d9808..66a6697 100644 --- a/doc/man1/dgst.pod +++ b/doc/man1/dgst.pod @@ -235,7 +235,7 @@ The FIPS-related options were removed in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2019 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 diff --git a/doc/man1/ec.pod b/doc/man1/ec.pod index 6c1d114..4d368e2 100644 --- a/doc/man1/ec.pod +++ b/doc/man1/ec.pod @@ -193,7 +193,7 @@ L, L, L =head1 COPYRIGHT -Copyright 2003-2017 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2003-2019 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 diff --git a/doc/man1/pkcs12.pod b/doc/man1/pkcs12.pod index f4c4c41..6f890c1 100644 --- a/doc/man1/pkcs12.pod +++ b/doc/man1/pkcs12.pod @@ -382,7 +382,7 @@ L =head1 COPYRIGHT -Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2019 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 diff --git a/doc/man1/s_client.pod b/doc/man1/s_client.pod index 0f54ee1..81d516a 100644 --- a/doc/man1/s_client.pod +++ b/doc/man1/s_client.pod @@ -828,7 +828,7 @@ The B<-name> option was added in OpenSSL 1.1.1. =head1 COPYRIGHT -Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2019 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 diff --git a/doc/man1/s_server.pod b/doc/man1/s_server.pod index 471afb9..c4c014f 100644 --- a/doc/man1/s_server.pod +++ b/doc/man1/s_server.pod @@ -845,7 +845,7 @@ The =head1 COPYRIGHT -Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2019 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 diff --git a/doc/man1/x509.pod b/doc/man1/x509.pod index 0ab7384..7878753 100644 --- a/doc/man1/x509.pod +++ b/doc/man1/x509.pod @@ -925,7 +925,7 @@ the old form must have their links rebuilt using B or similar. =head1 COPYRIGHT -Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2019 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 diff --git a/doc/man3/CMS_get0_type.pod b/doc/man3/CMS_get0_type.pod index 77af6b0..bc38a09 100644 --- a/doc/man3/CMS_get0_type.pod +++ b/doc/man3/CMS_get0_type.pod @@ -72,7 +72,7 @@ L =head1 COPYRIGHT -Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2008-2019 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 diff --git a/doc/man3/CONF_modules_load_file.pod b/doc/man3/CONF_modules_load_file.pod index 211eca0..485cf79 100644 --- a/doc/man3/CONF_modules_load_file.pod +++ b/doc/man3/CONF_modules_load_file.pod @@ -134,7 +134,7 @@ L, L =head1 COPYRIGHT -Copyright 2004-2017 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2004-2019 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 diff --git a/doc/man3/CRYPTO_get_ex_new_index.pod b/doc/man3/CRYPTO_get_ex_new_index.pod index 04ef5ec..b2d33ef 100644 --- a/doc/man3/CRYPTO_get_ex_new_index.pod +++ b/doc/man3/CRYPTO_get_ex_new_index.pod @@ -157,7 +157,7 @@ dup_func() should return 0 for failure and 1 for success. =head1 COPYRIGHT -Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2019 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 diff --git a/doc/man3/EVP_PKEY_asn1_get_count.pod b/doc/man3/EVP_PKEY_asn1_get_count.pod index a190f5e..cd99e4d 100644 --- a/doc/man3/EVP_PKEY_asn1_get_count.pod +++ b/doc/man3/EVP_PKEY_asn1_get_count.pod @@ -70,7 +70,7 @@ L, L =head1 COPYRIGHT -Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2017-2019 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 diff --git a/doc/man3/HMAC.pod b/doc/man3/HMAC.pod index 0e8439b..65386a7 100644 --- a/doc/man3/HMAC.pod +++ b/doc/man3/HMAC.pod @@ -147,7 +147,7 @@ OpenSSL before version 1.0.0. =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2019 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 diff --git a/doc/man3/OPENSSL_init_crypto.pod b/doc/man3/OPENSSL_init_crypto.pod index a642526..c7823e3 100644 --- a/doc/man3/OPENSSL_init_crypto.pod +++ b/doc/man3/OPENSSL_init_crypto.pod @@ -264,7 +264,7 @@ and OPENSSL_INIT_free() functions were added in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2019 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 diff --git a/doc/man3/OPENSSL_malloc.pod b/doc/man3/OPENSSL_malloc.pod index 57dc163..2d678c9 100644 --- a/doc/man3/OPENSSL_malloc.pod +++ b/doc/man3/OPENSSL_malloc.pod @@ -245,7 +245,7 @@ only, say, the malloc() implementation is outright dangerous.> =head1 COPYRIGHT -Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2019 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 diff --git a/doc/man3/RIPEMD160_Init.pod b/doc/man3/RIPEMD160_Init.pod index 1364aa0..d3cdf93 100644 --- a/doc/man3/RIPEMD160_Init.pod +++ b/doc/man3/RIPEMD160_Init.pod @@ -61,7 +61,7 @@ L =head1 COPYRIGHT -Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2019 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 diff --git a/doc/man3/SSL_CONF_cmd.pod b/doc/man3/SSL_CONF_cmd.pod index 2d86ce4..a74e728 100644 --- a/doc/man3/SSL_CONF_cmd.pod +++ b/doc/man3/SSL_CONF_cmd.pod @@ -683,7 +683,7 @@ B and B were added in OpenSSL 1.1.1. =head1 COPYRIGHT -Copyright 2012-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2012-2019 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 diff --git a/doc/man3/SSL_CTX_set0_CA_list.pod b/doc/man3/SSL_CTX_set0_CA_list.pod index e68e260..b483f83 100644 --- a/doc/man3/SSL_CTX_set0_CA_list.pod +++ b/doc/man3/SSL_CTX_set0_CA_list.pod @@ -178,7 +178,7 @@ L =head1 COPYRIGHT -Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2019 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 diff --git a/doc/man3/SSL_CTX_set_ctlog_list_file.pod b/doc/man3/SSL_CTX_set_ctlog_list_file.pod index 296f6e2..5fb0feb 100644 --- a/doc/man3/SSL_CTX_set_ctlog_list_file.pod +++ b/doc/man3/SSL_CTX_set_ctlog_list_file.pod @@ -43,7 +43,7 @@ L =head1 COPYRIGHT -Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2019 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 diff --git a/doc/man3/SSL_CTX_set_info_callback.pod b/doc/man3/SSL_CTX_set_info_callback.pod index 2dc82ca..01b03f9 100644 --- a/doc/man3/SSL_CTX_set_info_callback.pod +++ b/doc/man3/SSL_CTX_set_info_callback.pod @@ -156,7 +156,7 @@ L =head1 COPYRIGHT -Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2001-2019 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 diff --git a/doc/man3/SSL_CTX_set_mode.pod b/doc/man3/SSL_CTX_set_mode.pod index 4e06eb5..387d1ec 100644 --- a/doc/man3/SSL_CTX_set_mode.pod +++ b/doc/man3/SSL_CTX_set_mode.pod @@ -137,7 +137,7 @@ SSL_MODE_ASYNC was added in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2001-2019 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 diff --git a/doc/man3/SSL_CTX_set_record_padding_callback.pod b/doc/man3/SSL_CTX_set_record_padding_callback.pod index 3e25307..13e56f0 100644 --- a/doc/man3/SSL_CTX_set_record_padding_callback.pod +++ b/doc/man3/SSL_CTX_set_record_padding_callback.pod @@ -86,7 +86,7 @@ The record padding API was added for TLS 1.3 support in OpenSSL 1.1.1. =head1 COPYRIGHT -Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2017-2019 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 diff --git a/doc/man3/SSL_CTX_set_ssl_version.pod b/doc/man3/SSL_CTX_set_ssl_version.pod index 9c192d7..6c13275 100644 --- a/doc/man3/SSL_CTX_set_ssl_version.pod +++ b/doc/man3/SSL_CTX_set_ssl_version.pod @@ -60,7 +60,7 @@ L =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2019 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 diff --git a/doc/man3/SSL_key_update.pod b/doc/man3/SSL_key_update.pod index a9302a3..068ace5 100644 --- a/doc/man3/SSL_key_update.pod +++ b/doc/man3/SSL_key_update.pod @@ -100,7 +100,7 @@ OpenSSL 1.1.1. =head1 COPYRIGHT -Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2017-2019 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 diff --git a/doc/man3/SSL_read_early_data.pod b/doc/man3/SSL_read_early_data.pod index 85de887..c51fe13 100644 --- a/doc/man3/SSL_read_early_data.pod +++ b/doc/man3/SSL_read_early_data.pod @@ -364,7 +364,7 @@ All of the functions described above were added in OpenSSL 1.1.1. =head1 COPYRIGHT -Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2017-2019 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 diff --git a/doc/man5/config.pod b/doc/man5/config.pod index 7f21cdc..992fdfc 100644 --- a/doc/man5/config.pod +++ b/doc/man5/config.pod @@ -426,7 +426,7 @@ L, L, L =head1 COPYRIGHT -Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2019 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 diff --git a/engines/e_dasync.c b/engines/e_dasync.c index 1c2ccf0..5cdacb6 100644 --- a/engines/e_dasync.c +++ b/engines/e_dasync.c @@ -1,5 +1,5 @@ /* - * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2019 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 diff --git a/include/internal/conf.h b/include/internal/conf.h index 0b818c6..29bc9f9 100644 --- a/include/internal/conf.h +++ b/include/internal/conf.h @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/include/internal/cryptlib.h b/include/internal/cryptlib.h index 7e20923..b4d76d5 100644 --- a/include/internal/cryptlib.h +++ b/include/internal/cryptlib.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/include/internal/sockets.h b/include/internal/sockets.h index 18e4d3d..5bb0355 100644 --- a/include/internal/sockets.h +++ b/include/internal/sockets.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/include/internal/thread_once.h b/include/internal/thread_once.h index e268a95..8a25d04 100644 --- a/include/internal/thread_once.h +++ b/include/internal/thread_once.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/include/internal/tsan_assist.h b/include/internal/tsan_assist.h index 29409ff..38ba0c7 100644 --- a/include/internal/tsan_assist.h +++ b/include/internal/tsan_assist.h @@ -1,5 +1,5 @@ /* - * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2018-2019 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 diff --git a/include/openssl/crypto.h b/include/openssl/crypto.h index 22ad042..7d0b526 100644 --- a/include/openssl/crypto.h +++ b/include/openssl/crypto.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use diff --git a/include/openssl/e_os2.h b/include/openssl/e_os2.h index 1f8219a..97a776c 100644 --- a/include/openssl/e_os2.h +++ b/include/openssl/e_os2.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/include/openssl/evp.h b/include/openssl/evp.h index e241672..9f05b5a 100644 --- a/include/openssl/evp.h +++ b/include/openssl/evp.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index 4b77573..48e1152 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * diff --git a/include/openssl/x509_vfy.h b/include/openssl/x509_vfy.h index 800c529..adb8bce 100644 --- a/include/openssl/x509_vfy.h +++ b/include/openssl/x509_vfy.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/ms/uplink.c b/ms/uplink.c index 2096f2c..cd4e96b 100644 --- a/ms/uplink.c +++ b/ms/uplink.c @@ -1,5 +1,5 @@ /* - * Copyright 2004-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2004-2019 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 diff --git a/ssl/record/rec_layer_d1.c b/ssl/record/rec_layer_d1.c index 1e129b7..cb5d54e 100644 --- a/ssl/record/rec_layer_d1.c +++ b/ssl/record/rec_layer_d1.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2005-2019 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 diff --git a/ssl/record/rec_layer_s3.c b/ssl/record/rec_layer_s3.c index a275300..b2f97ef 100644 --- a/ssl/record/rec_layer_s3.c +++ b/ssl/record/rec_layer_s3.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 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 diff --git a/ssl/s3_enc.c b/ssl/s3_enc.c index d0acf29..2e185e9 100644 --- a/ssl/s3_enc.c +++ b/ssl/s3_enc.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright 2005 Nokia. All rights reserved. * * Licensed under the OpenSSL license (the "License"). You may not use diff --git a/ssl/ssl_ciph.c b/ssl/ssl_ciph.c index 044dd3a..b60d67a 100644 --- a/ssl/ssl_ciph.c +++ b/ssl/ssl_ciph.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * diff --git a/ssl/ssl_init.c b/ssl/ssl_init.c index e8353ec..f0969fa 100644 --- a/ssl/ssl_init.c +++ b/ssl/ssl_init.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 5bd2fcf..4440a9f 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h index 6559012..f326399 100644 --- a/ssl/ssl_locl.h +++ b/ssl/ssl_locl.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * diff --git a/ssl/statem/extensions.c b/ssl/statem/extensions.c index 0916395..c3d3441 100644 --- a/ssl/statem/extensions.c +++ b/ssl/statem/extensions.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/ssl/statem/statem.c b/ssl/statem/statem.c index f418676..e3c5ec0 100644 --- a/ssl/statem/statem.c +++ b/ssl/statem/statem.c @@ -1,5 +1,5 @@ /* - * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2019 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 diff --git a/ssl/statem/statem_clnt.c b/ssl/statem/statem_clnt.c index bb64036..e56d24d 100644 --- a/ssl/statem/statem_clnt.c +++ b/ssl/statem/statem_clnt.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * diff --git a/ssl/statem/statem_lib.c b/ssl/statem/statem_lib.c index 7e32e75..c0482b0 100644 --- a/ssl/statem/statem_lib.c +++ b/ssl/statem/statem_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use diff --git a/ssl/statem/statem_locl.h b/ssl/statem/statem_locl.h index f936c61..e27c0c1 100644 --- a/ssl/statem/statem_locl.h +++ b/ssl/statem/statem_locl.h @@ -1,5 +1,5 @@ /* - * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2019 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 diff --git a/ssl/statem/statem_srvr.c b/ssl/statem/statem_srvr.c index 0eab35c..6b8aae6 100644 --- a/ssl/statem/statem_srvr.c +++ b/ssl/statem/statem_srvr.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * diff --git a/ssl/t1_enc.c b/ssl/t1_enc.c index ac84986..57fb17a 100644 --- a/ssl/t1_enc.c +++ b/ssl/t1_enc.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright 2005 Nokia. All rights reserved. * * Licensed under the OpenSSL license (the "License"). You may not use diff --git a/ssl/tls13_enc.c b/ssl/tls13_enc.c index d663566..1f956e6 100644 --- a/ssl/tls13_enc.c +++ b/ssl/tls13_enc.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/test/bio_memleak_test.c b/test/bio_memleak_test.c index 36680e3..21b46cb 100644 --- a/test/bio_memleak_test.c +++ b/test/bio_memleak_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2018-2019 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 diff --git a/test/cipherlist_test.c b/test/cipherlist_test.c index a22f60b..8ee4910 100644 --- a/test/cipherlist_test.c +++ b/test/cipherlist_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL licenses, (the "License"); * you may not use this file except in compliance with the License. diff --git a/test/clienthellotest.c b/test/clienthellotest.c index 1045dd6..862ca9f 100644 --- a/test/clienthellotest.c +++ b/test/clienthellotest.c @@ -1,5 +1,5 @@ /* - * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2019 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 diff --git a/test/crltest.c b/test/crltest.c index 6ce9890..fe52282 100644 --- a/test/crltest.c +++ b/test/crltest.c @@ -1,5 +1,5 @@ /* - * Copyright 2015-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2019 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 diff --git a/test/drbgtest.c b/test/drbgtest.c index 23556fd..0782a7c 100644 --- a/test/drbgtest.c +++ b/test/drbgtest.c @@ -1,5 +1,5 @@ /* - * Copyright 2011-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2011-2019 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 diff --git a/test/dtlstest.c b/test/dtlstest.c index 8517eae..9e6ed44 100644 --- a/test/dtlstest.c +++ b/test/dtlstest.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/test/ecdsatest.c b/test/ecdsatest.c index f2250ae..531562e 100644 --- a/test/ecdsatest.c +++ b/test/ecdsatest.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use diff --git a/test/evp_extra_test.c b/test/evp_extra_test.c index b8644f5..918c320 100644 --- a/test/evp_extra_test.c +++ b/test/evp_extra_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2019 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 diff --git a/test/handshake_helper.c b/test/handshake_helper.c index d1842fa..27ff794 100644 --- a/test/handshake_helper.c +++ b/test/handshake_helper.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/test/rdrand_sanitytest.c b/test/rdrand_sanitytest.c index 781827b..906752a 100644 --- a/test/rdrand_sanitytest.c +++ b/test/rdrand_sanitytest.c @@ -1,5 +1,5 @@ /* - * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2018-2019 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 diff --git a/test/recipes/02-test_errstr.t b/test/recipes/02-test_errstr.t index 6db4761..3a04310 100644 --- a/test/recipes/02-test_errstr.t +++ b/test/recipes/02-test_errstr.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2018-2019 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 diff --git a/test/recipes/70-test_sslextension.t b/test/recipes/70-test_sslextension.t index 525de06..469567c 100644 --- a/test/recipes/70-test_sslextension.t +++ b/test/recipes/70-test_sslextension.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2019 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 diff --git a/test/recipes/70-test_sslrecords.t b/test/recipes/70-test_sslrecords.t index 2dc2833..bb4e354 100644 --- a/test/recipes/70-test_sslrecords.t +++ b/test/recipes/70-test_sslrecords.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2019 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 diff --git a/test/recipes/80-test_ssl_new.t b/test/recipes/80-test_ssl_new.t index 7222059..81d8f59 100644 --- a/test/recipes/80-test_ssl_new.t +++ b/test/recipes/80-test_ssl_new.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2019 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 diff --git a/test/recipes/90-test_bio_memleak.t b/test/recipes/90-test_bio_memleak.t index 93f7f92..1e063ed 100644 --- a/test/recipes/90-test_bio_memleak.t +++ b/test/recipes/90-test_bio_memleak.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2018-2019 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 diff --git a/test/recipes/90-test_gost.t b/test/recipes/90-test_gost.t index 0e33f5a..de9b0bf 100644 --- a/test/recipes/90-test_gost.t +++ b/test/recipes/90-test_gost.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2018-2019 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 diff --git a/test/recipes/90-test_shlibload.t b/test/recipes/90-test_shlibload.t index 9c51ca9..8372a61 100644 --- a/test/recipes/90-test_shlibload.t +++ b/test/recipes/90-test_shlibload.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2019 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 diff --git a/test/servername_test.c b/test/servername_test.c index 6606948..d246918 100644 --- a/test/servername_test.c +++ b/test/servername_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright 2017 BaishanCloud. All rights reserved. * * Licensed under the OpenSSL license (the "License"). You may not use diff --git a/test/shlibloadtest.c b/test/shlibloadtest.c index d88cf88..86bbfcd 100644 --- a/test/shlibloadtest.c +++ b/test/shlibloadtest.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/test/ssl-tests/29-dtls-sctp-label-bug.conf.in b/test/ssl-tests/29-dtls-sctp-label-bug.conf.in index ab04d05..9747699 100644 --- a/test/ssl-tests/29-dtls-sctp-label-bug.conf.in +++ b/test/ssl-tests/29-dtls-sctp-label-bug.conf.in @@ -1,5 +1,5 @@ # -*- mode: perl; -*- -# Copyright 2019-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy diff --git a/test/ssl_test_ctx.c b/test/ssl_test_ctx.c index cc98da2..6cdced5 100644 --- a/test/ssl_test_ctx.c +++ b/test/ssl_test_ctx.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/test/ssl_test_ctx.h b/test/ssl_test_ctx.h index 4120b8d..36d73f7 100644 --- a/test/ssl_test_ctx.h +++ b/test/ssl_test_ctx.h @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/test/sslapitest.c b/test/sslapitest.c index f51da0c..2261fe4 100644 --- a/test/sslapitest.c +++ b/test/sslapitest.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/test/ssltest_old.c b/test/ssltest_old.c index 372035a..36e6031 100644 --- a/test/ssltest_old.c +++ b/test/ssltest_old.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * diff --git a/test/ssltestlib.h b/test/ssltestlib.h index 6b34941..fa19e7d 100644 --- a/test/ssltestlib.h +++ b/test/ssltestlib.h @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/test/testutil/main.c b/test/testutil/main.c index 80c5183..d3ccdda 100644 --- a/test/testutil/main.c +++ b/test/testutil/main.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/test/tls13secretstest.c b/test/tls13secretstest.c index 7ca6b3d..f04ee14 100644 --- a/test/tls13secretstest.c +++ b/test/tls13secretstest.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 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 diff --git a/test/x509aux.c b/test/x509aux.c index de9cb46..e41f1f6 100644 --- a/test/x509aux.c +++ b/test/x509aux.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL licenses, (the "License"); * you may not use this file except in compliance with the License. diff --git a/util/openssl-format-source b/util/openssl-format-source index d629ec4..e399644 100755 --- a/util/openssl-format-source +++ b/util/openssl-format-source @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2019 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 diff --git a/util/perl/TLSProxy/Alert.pm b/util/perl/TLSProxy/Alert.pm index 1c8a7f8..e27497d 100644 --- a/util/perl/TLSProxy/Alert.pm +++ b/util/perl/TLSProxy/Alert.pm @@ -1,4 +1,4 @@ -# Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2018-2019 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 diff --git a/util/perl/TLSProxy/Certificate.pm b/util/perl/TLSProxy/Certificate.pm index a415897..7373713 100644 --- a/util/perl/TLSProxy/Certificate.pm +++ b/util/perl/TLSProxy/Certificate.pm @@ -1,4 +1,4 @@ -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2019 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 diff --git a/util/perl/TLSProxy/ClientHello.pm b/util/perl/TLSProxy/ClientHello.pm index ec48469..76dce74 100644 --- a/util/perl/TLSProxy/ClientHello.pm +++ b/util/perl/TLSProxy/ClientHello.pm @@ -1,4 +1,4 @@ -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2019 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 diff --git a/util/perl/TLSProxy/EncryptedExtensions.pm b/util/perl/TLSProxy/EncryptedExtensions.pm index cd529ee..262b720 100644 --- a/util/perl/TLSProxy/EncryptedExtensions.pm +++ b/util/perl/TLSProxy/EncryptedExtensions.pm @@ -1,4 +1,4 @@ -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2019 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 diff --git a/util/perl/TLSProxy/Message.pm b/util/perl/TLSProxy/Message.pm index 9eebfaa..5682ae3 100644 --- a/util/perl/TLSProxy/Message.pm +++ b/util/perl/TLSProxy/Message.pm @@ -1,4 +1,4 @@ -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2019 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 diff --git a/util/perl/TLSProxy/Proxy.pm b/util/perl/TLSProxy/Proxy.pm index 89c8c1d..f7bca02 100644 --- a/util/perl/TLSProxy/Proxy.pm +++ b/util/perl/TLSProxy/Proxy.pm @@ -1,4 +1,4 @@ -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2019 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 diff --git a/util/perl/TLSProxy/Record.pm b/util/perl/TLSProxy/Record.pm index add7720..841467b 100644 --- a/util/perl/TLSProxy/Record.pm +++ b/util/perl/TLSProxy/Record.pm @@ -1,4 +1,4 @@ -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2019 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 diff --git a/util/perl/TLSProxy/ServerHello.pm b/util/perl/TLSProxy/ServerHello.pm index 8f662d0..e9f1eca 100644 --- a/util/perl/TLSProxy/ServerHello.pm +++ b/util/perl/TLSProxy/ServerHello.pm @@ -1,4 +1,4 @@ -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2019 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 diff --git a/util/perl/TLSProxy/ServerKeyExchange.pm b/util/perl/TLSProxy/ServerKeyExchange.pm index 57b8377..e0086e2 100644 --- a/util/perl/TLSProxy/ServerKeyExchange.pm +++ b/util/perl/TLSProxy/ServerKeyExchange.pm @@ -1,4 +1,4 @@ -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2019 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 From matt at openssl.org Tue Feb 26 14:11:56 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 14:11:56 +0000 Subject: [openssl] OpenSSL_1_0_2-stable update Message-ID: <1551190316.078395.6532.nullmailer@dev.openssl.org> The branch OpenSSL_1_0_2-stable has been updated via c81f16952bca7793074ac926b17aed3364db2c84 (commit) from b250f2a431ab0cc03a8a1cc4cdc1a7e9ecb052a6 (commit) - Log ----------------------------------------------------------------- commit c81f16952bca7793074ac926b17aed3364db2c84 Author: Matt Caswell Date: Tue Feb 26 14:07:28 2019 +0000 Update copyright year Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8348) ----------------------------------------------------------------------- Summary of changes: crypto/bn/bn_ctx.c | 2 +- crypto/evp/evp_err.c | 2 +- crypto/evp/evp_test.c | 2 +- doc/crypto/X509_cmp_time.pod | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crypto/bn/bn_ctx.c b/crypto/bn/bn_ctx.c index 3391134..d18eedb 100644 --- a/crypto/bn/bn_ctx.c +++ b/crypto/bn/bn_ctx.c @@ -1,7 +1,7 @@ /* crypto/bn/bn_ctx.c */ /* Written by Ulf Moeller for the OpenSSL project. */ /* ==================================================================== - * Copyright (c) 1998-2004 The OpenSSL Project. All rights reserved. + * Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/crypto/evp/evp_err.c b/crypto/evp/evp_err.c index 85f5729..11647b9 100644 --- a/crypto/evp/evp_err.c +++ b/crypto/evp/evp_err.c @@ -1,6 +1,6 @@ /* crypto/evp/evp_err.c */ /* ==================================================================== - * Copyright (c) 1999-2018 The OpenSSL Project. All rights reserved. + * Copyright (c) 1999-2019 The OpenSSL Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/crypto/evp/evp_test.c b/crypto/evp/evp_test.c index 059cd49..28544a6 100755 --- a/crypto/evp/evp_test.c +++ b/crypto/evp/evp_test.c @@ -1,6 +1,6 @@ /* Written by Ben Laurie, 2001 */ /* - * Copyright (c) 2001 The OpenSSL Project. All rights reserved. + * Copyright (c) 2001-2019 The OpenSSL Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/doc/crypto/X509_cmp_time.pod b/doc/crypto/X509_cmp_time.pod index 5bf5111..f3c0750 100644 --- a/doc/crypto/X509_cmp_time.pod +++ b/doc/crypto/X509_cmp_time.pod @@ -29,7 +29,7 @@ B, and 1 otherwise. It returns 0 on error. =head1 COPYRIGHT -Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2017-2019 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 From matt at openssl.org Tue Feb 26 14:37:05 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 14:37:05 +0000 Subject: [openssl] master update Message-ID: <1551191825.224844.12522.nullmailer@dev.openssl.org> The branch master has been updated via f4800345d95d632d424f9b2725418c0c2ec6f029 (commit) from 565a19eef35926b4b9675f6cc3964fb290a5b380 (commit) - Log ----------------------------------------------------------------- commit f4800345d95d632d424f9b2725418c0c2ec6f029 Author: Matt Caswell Date: Wed Feb 20 14:21:36 2019 +0000 Clarify that SSL_shutdown() must not be called after a fatal error Follow on from CVE-2019-1559 Reviewed-by: Richard Levitte ----------------------------------------------------------------------- Summary of changes: doc/man3/SSL_get_error.pod | 13 ++++++++----- doc/man3/SSL_shutdown.pod | 4 ++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/doc/man3/SSL_get_error.pod b/doc/man3/SSL_get_error.pod index 876aac7..150dd50 100644 --- a/doc/man3/SSL_get_error.pod +++ b/doc/man3/SSL_get_error.pod @@ -138,17 +138,20 @@ Details depend on the application. =item SSL_ERROR_SYSCALL -Some non-recoverable I/O error occurred. -The OpenSSL error queue may contain more information on the error. -For socket I/O on Unix systems, consult B for details. +Some non-recoverable, fatal I/O error occurred. The OpenSSL error queue may +contain more information on the error. For socket I/O on Unix systems, consult +B for details. If this error occurs then no further I/O operations should +be performed on the connection and SSL_shutdown() must not be called. This value can also be returned for other errors, check the error queue for details. =item SSL_ERROR_SSL -A failure in the SSL library occurred, usually a protocol error. The -OpenSSL error queue contains more information on the error. +A non-recoverable, fatal error in the SSL library occurred, usually a protocol +error. The OpenSSL error queue contains more information on the error. If this +error occurs then no further I/O operations should be performed on the +connection and SSL_shutdown() must not be called. =back diff --git a/doc/man3/SSL_shutdown.pod b/doc/man3/SSL_shutdown.pod index f9b7212..6e470a1 100644 --- a/doc/man3/SSL_shutdown.pod +++ b/doc/man3/SSL_shutdown.pod @@ -22,6 +22,10 @@ Whether the operation succeeds or not, the SSL_SENT_SHUTDOWN flag is set and a currently open session is considered closed and good and will be kept in the session cache for further reuse. +Note that SSL_shutdown() must not be called if a previous fatal error has +occurred on a connection i.e. if SSL_get_error() has returned SSL_ERROR_SYSCALL +or SSL_ERROR_SSL. + The shutdown procedure consists of two steps: sending of the close_notify shutdown alert, and reception of the peer's close_notify shutdown alert. The order of those two steps depends on the application. From matt at openssl.org Tue Feb 26 14:37:22 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 14:37:22 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551191842.577392.13728.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 69fc126cfdc0171eaf57a91959beda548247b94b (commit) via 50eaac9f3337667259de725451f201e784599687 (commit) via ab874dfd3e22a7c6ea3d45bc352294546af5afff (commit) from 72a7a7021fa8bc82a11bc08bac1b0241a92143d0 (commit) - Log ----------------------------------------------------------------- commit 69fc126cfdc0171eaf57a91959beda548247b94b Author: Matt Caswell Date: Tue Feb 26 14:17:50 2019 +0000 Prepare for 1.1.1c-dev Reviewed-by: Richard Levitte commit 50eaac9f3337667259de725451f201e784599687 Author: Matt Caswell Date: Tue Feb 26 14:15:30 2019 +0000 Prepare for 1.1.1b release Reviewed-by: Richard Levitte commit ab874dfd3e22a7c6ea3d45bc352294546af5afff Author: Matt Caswell Date: Wed Feb 20 14:21:36 2019 +0000 Clarify that SSL_shutdown() must not be called after a fatal error Follow on from CVE-2019-1559 Reviewed-by: Richard Levitte ----------------------------------------------------------------------- Summary of changes: CHANGES | 6 +++++- NEWS | 6 +++++- README | 2 +- doc/man3/SSL_get_error.pod | 13 ++++++++----- doc/man3/SSL_shutdown.pod | 4 ++++ include/openssl/opensslv.h | 4 ++-- 6 files changed, 25 insertions(+), 10 deletions(-) diff --git a/CHANGES b/CHANGES index cc7502d..f58022b 100644 --- a/CHANGES +++ b/CHANGES @@ -7,7 +7,11 @@ https://github.com/openssl/openssl/commits/ and pick the appropriate release branch. - Changes between 1.1.1a and 1.1.1b [xx XXX xxxx] + Changes between 1.1.1b and 1.1.1c [xx XXX xxxx] + + *) + + Changes between 1.1.1a and 1.1.1b [26 Feb 2019] *) Added SCA hardening for modular field inversion in EC_GROUP through a new dedicated field_inv() pointer in EC_METHOD. diff --git a/NEWS b/NEWS index 33ab03e..2baab79 100644 --- a/NEWS +++ b/NEWS @@ -5,7 +5,11 @@ This file gives a brief overview of the major changes between each OpenSSL release. For more details please read the CHANGES file. - Major changes between OpenSSL 1.1.1a and OpenSSL 1.1.1b [under development] + Major changes between OpenSSL 1.1.1b and OpenSSL 1.1.1c [under development] + + o + + Major changes between OpenSSL 1.1.1a and OpenSSL 1.1.1b [26 Feb 2019] o Change the info callback signals for the start and end of a post-handshake message exchange in TLSv1.3. diff --git a/README b/README index 5b614cb..fb98b88 100644 --- a/README +++ b/README @@ -1,5 +1,5 @@ - OpenSSL 1.1.1b-dev + OpenSSL 1.1.1c-dev Copyright (c) 1998-2018 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson diff --git a/doc/man3/SSL_get_error.pod b/doc/man3/SSL_get_error.pod index a8dd7c1..5a7a4b7 100644 --- a/doc/man3/SSL_get_error.pod +++ b/doc/man3/SSL_get_error.pod @@ -138,17 +138,20 @@ Details depend on the application. =item SSL_ERROR_SYSCALL -Some non-recoverable I/O error occurred. -The OpenSSL error queue may contain more information on the error. -For socket I/O on Unix systems, consult B for details. +Some non-recoverable, fatal I/O error occurred. The OpenSSL error queue may +contain more information on the error. For socket I/O on Unix systems, consult +B for details. If this error occurs then no further I/O operations should +be performed on the connection and SSL_shutdown() must not be called. This value can also be returned for other errors, check the error queue for details. =item SSL_ERROR_SSL -A failure in the SSL library occurred, usually a protocol error. The -OpenSSL error queue contains more information on the error. +A non-recoverable, fatal error in the SSL library occurred, usually a protocol +error. The OpenSSL error queue contains more information on the error. If this +error occurs then no further I/O operations should be performed on the +connection and SSL_shutdown() must not be called. =back diff --git a/doc/man3/SSL_shutdown.pod b/doc/man3/SSL_shutdown.pod index 0a3d6d3..551fff6 100644 --- a/doc/man3/SSL_shutdown.pod +++ b/doc/man3/SSL_shutdown.pod @@ -22,6 +22,10 @@ Whether the operation succeeds or not, the SSL_SENT_SHUTDOWN flag is set and a currently open session is considered closed and good and will be kept in the session cache for further reuse. +Note that SSL_shutdown() must not be called if a previous fatal error has +occurred on a connection i.e. if SSL_get_error() has returned SSL_ERROR_SYSCALL +or SSL_ERROR_SSL. + The shutdown procedure consists of two steps: sending of the close_notify shutdown alert, and reception of the peer's close_notify shutdown alert. The order of those two steps depends on the application. diff --git a/include/openssl/opensslv.h b/include/openssl/opensslv.h index 308091f..b4b255a 100644 --- a/include/openssl/opensslv.h +++ b/include/openssl/opensslv.h @@ -39,8 +39,8 @@ extern "C" { * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for * major minor fix final patch/beta) */ -# define OPENSSL_VERSION_NUMBER 0x10101020L -# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1b-dev xx XXX xxxx" +# define OPENSSL_VERSION_NUMBER 0x10101030L +# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1c-dev xx XXX xxxx" /*- * The macros below are to be used for shared library (.so, .dll, ...) From matt at openssl.org Tue Feb 26 14:37:45 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 14:37:45 +0000 Subject: [openssl] OpenSSL_1_1_0-stable update Message-ID: <1551191865.928163.30086.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_0-stable has been updated via c62896c2c0cbd47ab01693d403e37fe5fe15aab8 (commit) via 5741d5bb74797e4532acc9f42e54c44a2726c179 (commit) from ad01b01c16b0b9d95de79c3b01398e3582a5105b (commit) - Log ----------------------------------------------------------------- commit c62896c2c0cbd47ab01693d403e37fe5fe15aab8 Author: Matt Caswell Date: Wed Feb 20 14:21:36 2019 +0000 Clarify that SSL_shutdown() must not be called after a fatal error Follow on from CVE-2019-1559 Reviewed-by: Richard Levitte commit 5741d5bb74797e4532acc9f42e54c44a2726c179 Author: Matt Caswell Date: Thu Dec 13 17:16:55 2018 +0000 Go into the error state if a fatal alert is sent or received 1.1.0 is not impacted by CVE-2019-1559, but this commit is a follow on from that. That CVE was a result of applications calling SSL_shutdown after a fatal alert has occurred. By chance 1.1.0 is not vulnerable to that issue, but this change is additional hardening to prevent other similar issues. Reviewed-by: Richard Levitte ----------------------------------------------------------------------- Summary of changes: doc/ssl/SSL_get_error.pod | 13 ++++++++----- doc/ssl/SSL_shutdown.pod | 4 ++++ ssl/record/rec_layer_d1.c | 1 + ssl/record/rec_layer_s3.c | 1 + ssl/s3_msg.c | 9 ++++++--- ssl/statem/statem.c | 1 + 6 files changed, 21 insertions(+), 8 deletions(-) diff --git a/doc/ssl/SSL_get_error.pod b/doc/ssl/SSL_get_error.pod index 47d2358..9b432a1 100644 --- a/doc/ssl/SSL_get_error.pod +++ b/doc/ssl/SSL_get_error.pod @@ -112,14 +112,17 @@ thread has completed. =item SSL_ERROR_SYSCALL -Some non-recoverable I/O error occurred. -The OpenSSL error queue may contain more information on the error. -For socket I/O on Unix systems, consult B for details. +Some non-recoverable, fatal I/O error occurred. The OpenSSL error queue may +contain more information on the error. For socket I/O on Unix systems, consult +B for details. If this error occurs then no further I/O operations should +be performed on the connection and SSL_shutdown() must not be called. =item SSL_ERROR_SSL -A failure in the SSL library occurred, usually a protocol error. The -OpenSSL error queue contains more information on the error. +A non-recoverable, fatal error in the SSL library occurred, usually a protocol +error. The OpenSSL error queue contains more information on the error. If this +error occurs then no further I/O operations should be performed on the +connection and SSL_shutdown() must not be called. =back diff --git a/doc/ssl/SSL_shutdown.pod b/doc/ssl/SSL_shutdown.pod index e8ec454..0e83cf9 100644 --- a/doc/ssl/SSL_shutdown.pod +++ b/doc/ssl/SSL_shutdown.pod @@ -22,6 +22,10 @@ Whether the operation succeeds or not, the SSL_SENT_SHUTDOWN flag is set and a currently open session is considered closed and good and will be kept in the session cache for further reuse. +Note that SSL_shutdown() must not be called if a previous fatal error has +occurred on a connection i.e. if SSL_get_error() has returned SSL_ERROR_SYSCALL +or SSL_ERROR_SSL. + The shutdown procedure consists of 2 steps: the sending of the "close notify" shutdown alert and the reception of the peer's "close notify" shutdown alert. According to the TLS standard, it is acceptable for an application diff --git a/ssl/record/rec_layer_d1.c b/ssl/record/rec_layer_d1.c index 6111a2e..4ee6e52 100644 --- a/ssl/record/rec_layer_d1.c +++ b/ssl/record/rec_layer_d1.c @@ -834,6 +834,7 @@ int dtls1_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf, s->shutdown |= SSL_RECEIVED_SHUTDOWN; SSL3_RECORD_set_read(rr); SSL_CTX_remove_session(s->session_ctx, s->session); + ossl_statem_set_error(s); return (0); } else { al = SSL_AD_ILLEGAL_PARAMETER; diff --git a/ssl/record/rec_layer_s3.c b/ssl/record/rec_layer_s3.c index 1ffc120..324102e 100644 --- a/ssl/record/rec_layer_s3.c +++ b/ssl/record/rec_layer_s3.c @@ -1410,6 +1410,7 @@ int ssl3_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf, s->shutdown |= SSL_RECEIVED_SHUTDOWN; SSL3_RECORD_set_read(rr); SSL_CTX_remove_session(s->session_ctx, s->session); + ossl_statem_set_error(s); return (0); } else { al = SSL_AD_ILLEGAL_PARAMETER; diff --git a/ssl/s3_msg.c b/ssl/s3_msg.c index 4961cc8..c4a476c 100644 --- a/ssl/s3_msg.c +++ b/ssl/s3_msg.c @@ -46,9 +46,12 @@ int ssl3_send_alert(SSL *s, int level, int desc) * protocol_version alerts */ if (desc < 0) return -1; - /* If a fatal one, remove from cache */ - if ((level == SSL3_AL_FATAL) && (s->session != NULL)) - SSL_CTX_remove_session(s->session_ctx, s->session); + /* If a fatal one, remove from cache and go into the error state */ + if (level == SSL3_AL_FATAL) { + if (s->session != NULL) + SSL_CTX_remove_session(s->session_ctx, s->session); + ossl_statem_set_error(s); + } s->s3->alert_dispatch = 1; s->s3->send_alert[0] = level; diff --git a/ssl/statem/statem.c b/ssl/statem/statem.c index 69bb40f..36c9e98 100644 --- a/ssl/statem/statem.c +++ b/ssl/statem/statem.c @@ -115,6 +115,7 @@ void ossl_statem_set_renegotiate(SSL *s) */ void ossl_statem_set_error(SSL *s) { + s->statem.in_init = 1; s->statem.state = MSG_FLOW_ERROR; } From matt at openssl.org Tue Feb 26 14:38:27 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 14:38:27 +0000 Subject: [openssl] OpenSSL_1_0_2-stable update Message-ID: <1551191907.535660.9079.nullmailer@dev.openssl.org> The branch OpenSSL_1_0_2-stable has been updated via 56ff0f643482b19f7b2d7ed532dfb94ed3a4e294 (commit) via b34cf4eb616446a1ee7bd0db0a625edf25047342 (commit) via 28c43df9288c50be6e03ee5b52dfc0e261d9eb60 (commit) via 48c8bcf5bca0ce7751f49599381e143de1b61786 (commit) via e9bbefbf0f24c57645e7ad6a5a71ae649d18ac8e (commit) from c81f16952bca7793074ac926b17aed3364db2c84 (commit) - Log ----------------------------------------------------------------- commit 56ff0f643482b19f7b2d7ed532dfb94ed3a4e294 Author: Matt Caswell Date: Tue Feb 26 14:21:45 2019 +0000 Prepare for 1.0.2s-dev Reviewed-by: Richard Levitte commit b34cf4eb616446a1ee7bd0db0a625edf25047342 Author: Matt Caswell Date: Tue Feb 26 14:20:55 2019 +0000 Prepare for 1.0.2r release Reviewed-by: Richard Levitte commit 28c43df9288c50be6e03ee5b52dfc0e261d9eb60 Author: Matt Caswell Date: Tue Feb 26 10:21:24 2019 +0000 Updates CHANGES and NEWS for the new release Reviewed-by: Richard Levitte commit 48c8bcf5bca0ce7751f49599381e143de1b61786 Author: Matt Caswell Date: Wed Feb 20 14:21:36 2019 +0000 Clarify that SSL_shutdown() must not be called after a fatal error Follow on from CVE-2019-1559 Reviewed-by: Richard Levitte commit e9bbefbf0f24c57645e7ad6a5a71ae649d18ac8e Author: Matt Caswell Date: Fri Dec 14 07:28:30 2018 +0000 Go into the error state if a fatal alert is sent or received If an application calls SSL_shutdown after a fatal alert has occured and then behaves different based on error codes from that function then the application may be vulnerable to a padding oracle. CVE-2019-1559 Reviewed-by: Richard Levitte ----------------------------------------------------------------------- Summary of changes: CHANGES | 28 +++++++++++++++++++++++++++- NEWS | 6 +++++- README | 2 +- crypto/opensslv.h | 6 +++--- doc/ssl/SSL_get_error.pod | 13 ++++++++----- doc/ssl/SSL_shutdown.pod | 4 ++++ openssl.spec | 2 +- ssl/d1_pkt.c | 1 + ssl/s3_pkt.c | 10 +++++++--- 9 files changed, 57 insertions(+), 15 deletions(-) diff --git a/CHANGES b/CHANGES index bc805bf..7080ac2 100644 --- a/CHANGES +++ b/CHANGES @@ -7,7 +7,33 @@ https://github.com/openssl/openssl/commits/ and pick the appropriate release branch. - Changes between 1.0.2q and 1.0.2r [xx XXX xxxx] + Changes between 1.0.2r and 1.0.2s [xx XXX xxxx] + + *) + + Changes between 1.0.2q and 1.0.2r [26 Feb 2019] + + *) 0-byte record padding oracle + + If an application encounters a fatal protocol error and then calls + SSL_shutdown() twice (once to send a close_notify, and once to receive one) + then OpenSSL can respond differently to the calling application if a 0 byte + record is received with invalid padding compared to if a 0 byte record is + received with an invalid MAC. If the application then behaves differently + based on that in a way that is detectable to the remote peer, then this + amounts to a padding oracle that could be used to decrypt data. + + In order for this to be exploitable "non-stitched" ciphersuites must be in + use. Stitched ciphersuites are optimised implementations of certain + commonly used ciphersuites. Also the application must call SSL_shutdown() + twice even if a protocol error has occurred (applications should not do + this but some do anyway). + + This issue was discovered by Juraj Somorovsky, Robert Merget and Nimrod + Aviram, with additional investigation by Steven Collison and Andrew + Hourselt. It was reported to OpenSSL on 10th December 2018. + (CVE-2019-1559) + [Matt Caswell] *) Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0(). [Richard Levitte] diff --git a/NEWS b/NEWS index 566ce43..a92af92 100644 --- a/NEWS +++ b/NEWS @@ -5,10 +5,14 @@ This file gives a brief overview of the major changes between each OpenSSL release. For more details please read the CHANGES file. - Major changes between OpenSSL 1.0.2q and OpenSSL 1.0.2r [under development] + Major changes between OpenSSL 1.0.2r and OpenSSL 1.0.2s [under development] o + Major changes between OpenSSL 1.0.2q and OpenSSL 1.0.2r [26 Feb 2019] + + o 0-byte record padding oracle (CVE-2019-1559) + Major changes between OpenSSL 1.0.2p and OpenSSL 1.0.2q [20 Nov 2018] o Microarchitecture timing vulnerability in ECC scalar multiplication (CVE-2018-5407) diff --git a/README b/README index a288fd6..93d66d7 100644 --- a/README +++ b/README @@ -1,5 +1,5 @@ - OpenSSL 1.0.2r-dev + OpenSSL 1.0.2s-dev Copyright (c) 1998-2018 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson diff --git a/crypto/opensslv.h b/crypto/opensslv.h index f808f1e..752c66d 100644 --- a/crypto/opensslv.h +++ b/crypto/opensslv.h @@ -30,11 +30,11 @@ extern "C" { * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for * major minor fix final patch/beta) */ -# define OPENSSL_VERSION_NUMBER 0x10002120L +# define OPENSSL_VERSION_NUMBER 0x10002130L # ifdef OPENSSL_FIPS -# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2r-fips-dev xx XXX xxxx" +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2s-fips-dev xx XXX xxxx" # else -# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2r-dev xx XXX xxxx" +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2s-dev xx XXX xxxx" # endif # define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT diff --git a/doc/ssl/SSL_get_error.pod b/doc/ssl/SSL_get_error.pod index 2a93894..7537616 100644 --- a/doc/ssl/SSL_get_error.pod +++ b/doc/ssl/SSL_get_error.pod @@ -90,14 +90,17 @@ Details depend on the application. =item SSL_ERROR_SYSCALL -Some non-recoverable I/O error occurred. -The OpenSSL error queue may contain more information on the error. -For socket I/O on Unix systems, consult B for details. +Some non-recoverable, fatal I/O error occurred. The OpenSSL error queue may +contain more information on the error. For socket I/O on Unix systems, consult +B for details. If this error occurs then no further I/O operations should +be performed on the connection and SSL_shutdown() must not be called. =item SSL_ERROR_SSL -A failure in the SSL library occurred, usually a protocol error. The -OpenSSL error queue contains more information on the error. +A non-recoverable, fatal error in the SSL library occurred, usually a protocol +error. The OpenSSL error queue contains more information on the error. If this +error occurs then no further I/O operations should be performed on the +connection and SSL_shutdown() must not be called. =back diff --git a/doc/ssl/SSL_shutdown.pod b/doc/ssl/SSL_shutdown.pod index efbff5a..e2a776c 100644 --- a/doc/ssl/SSL_shutdown.pod +++ b/doc/ssl/SSL_shutdown.pod @@ -22,6 +22,10 @@ Whether the operation succeeds or not, the SSL_SENT_SHUTDOWN flag is set and a currently open session is considered closed and good and will be kept in the session cache for further reuse. +Note that SSL_shutdown() must not be called if a previous fatal error has +occurred on a connection i.e. if SSL_get_error() has returned SSL_ERROR_SYSCALL +or SSL_ERROR_SSL. + The shutdown procedure consists of 2 steps: the sending of the "close notify" shutdown alert and the reception of the peer's "close notify" shutdown alert. According to the TLS standard, it is acceptable for an application diff --git a/openssl.spec b/openssl.spec index b42b739..7e94a22 100644 --- a/openssl.spec +++ b/openssl.spec @@ -7,7 +7,7 @@ Release: 1 Summary: Secure Sockets Layer and cryptography libraries and tools Name: openssl -Version: 1.0.2r +Version: 1.0.2s Source0: ftp://ftp.openssl.org/source/%{name}-%{version}.tar.gz License: OpenSSL Group: System Environment/Libraries diff --git a/ssl/d1_pkt.c b/ssl/d1_pkt.c index 23aa9db..c7fe977 100644 --- a/ssl/d1_pkt.c +++ b/ssl/d1_pkt.c @@ -1309,6 +1309,7 @@ int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) ERR_add_error_data(2, "SSL alert number ", tmp); s->shutdown |= SSL_RECEIVED_SHUTDOWN; SSL_CTX_remove_session(s->session_ctx, s->session); + s->state = SSL_ST_ERR; return (0); } else { al = SSL_AD_ILLEGAL_PARAMETER; diff --git a/ssl/s3_pkt.c b/ssl/s3_pkt.c index 6527df8..830b723 100644 --- a/ssl/s3_pkt.c +++ b/ssl/s3_pkt.c @@ -1500,6 +1500,7 @@ int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) ERR_add_error_data(2, "SSL alert number ", tmp); s->shutdown |= SSL_RECEIVED_SHUTDOWN; SSL_CTX_remove_session(s->session_ctx, s->session); + s->state = SSL_ST_ERR; return (0); } else { al = SSL_AD_ILLEGAL_PARAMETER; @@ -1719,9 +1720,12 @@ int ssl3_send_alert(SSL *s, int level, int desc) * protocol_version alerts */ if (desc < 0) return -1; - /* If a fatal one, remove from cache */ - if ((level == 2) && (s->session != NULL)) - SSL_CTX_remove_session(s->session_ctx, s->session); + /* If a fatal one, remove from cache and go into the error state */ + if (level == SSL3_AL_FATAL) { + if (s->session != NULL) + SSL_CTX_remove_session(s->session_ctx, s->session); + s->state = SSL_ST_ERR; + } s->s3->alert_dispatch = 1; s->s3->send_alert[0] = level; From matt at openssl.org Tue Feb 26 14:39:07 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 14:39:07 +0000 Subject: [openssl] OpenSSL_1_0_2r create Message-ID: <1551191947.983041.18515.nullmailer@dev.openssl.org> The annotated tag OpenSSL_1_0_2r has been created at 87ba6bdedab3f78680317ac88599fdbb47b0f770 (tag) tagging b34cf4eb616446a1ee7bd0db0a625edf25047342 (commit) replaces OpenSSL_1_0_2q tagged by Matt Caswell on Tue Feb 26 14:20:55 2019 +0000 - Log ----------------------------------------------------------------- OpenSSL 1.0.2r release tag -----BEGIN PGP SIGNATURE----- iQFFBAABCgAvFiEEhlersmDwVrHlGQg52cTSbQ5gRJEFAlx1S0cRHG1hdHRAb3Bl bnNzbC5vcmcACgkQ2cTSbQ5gRJHkjQf+N6w3GcQQBGTnzbyej+nxsC3UYUr6p1v8 n/BCNu0xq5U6Bt6xuR0ofBVADdKUWi3UUtBAqjICinRNbYcKsJ3W9VqDfyzkkJ6t YP3XPmCk46pFJwBX0H8PcMU135FJu3oYgVwQQlfg75O/Q2UaR4vs0XHHJW45ydWl YoP8m1RnGR1VHmYj6Pnufm5RDLVtmWkjLpkQAYqghoXHpEOn+/TK2EiqYpGls7q3 ROLX+Sw6+ceGJ/e5jKBjd9+cNU7tMP2SHsCoh0Hyj1jXKcof2Xm+/W2k6DkvWhrb InNHTilCuZ4N/jZ8Ow2aHAUBY+QaCSURfFZNVcY3bCeg2dCtAbAAdQ== =V3Uz -----END PGP SIGNATURE----- Andy Polyakov (6): rsa/rsa_eay.c: cache MONT_CTX for public modulus earlier. err/err.c: add err_clear_last_constant_time. rsa/rsa_eay.c: make RSAerr call in rsa_ossl_private_decrypt unconditional. rsa/rsa_pk1.c: remove memcpy calls from RSA_padding_check_PKCS1_type_2. rsa/rsa_oaep.c: remove memcpy calls from RSA_padding_check_PKCS1_OAEP. rsa/rsa_ssl.c: make RSA_padding_check_SSLv23 constant-time. Corinna Vinschen (1): cygwin: drop explicit O_TEXT David Woodhouse (2): Stop marking default digest for EC keys as mandatory Honour mandatory digest on private key in tls1_process_sigalgs() Dr. Matthias St. Pierre (1): doc/man3: remove copy&paste leftover Matt Caswell (8): Prepare for 1.0.2r-dev make update Ensure bn_cmp_words can handle the case where n == 0 Update copyright year Go into the error state if a fatal alert is sent or received Clarify that SSL_shutdown() must not be called after a fatal error Updates CHANGES and NEWS for the new release Prepare for 1.0.2r release Nicola Tuveri (2): Test for constant-time flag leakage in BN_CTX Clear BN_FLG_CONSTTIME on BN_CTX_get() Richard Levitte (8): VMS: ensure x509_time_test is built Docs fixup: some man3 pages had unindented code in SYNOPSIS Make EVP_PKEY_asn1_add0() stricter about its input Makefile.org: prevent .bak files to become part of the tarball Prevent calling decryption in an encryption context and vice versa make update test/evp_test.c: use EVP_DecryptUpdate when decrypting, even for AAD Move stray POD file into the fold Tobias Stoeckmann (1): Fixed typo (vi leftover). ----------------------------------------------------------------------- From matt at openssl.org Tue Feb 26 14:39:08 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 14:39:08 +0000 Subject: [openssl] OpenSSL_1_1_1b create Message-ID: <1551191948.028088.18589.nullmailer@dev.openssl.org> The annotated tag OpenSSL_1_1_1b has been created at 3be907df5e5619fb10863849d3504bbdc6e8630d (tag) tagging 50eaac9f3337667259de725451f201e784599687 (commit) replaces OpenSSL_1_1_1a tagged by Matt Caswell on Tue Feb 26 14:15:30 2019 +0000 - Log ----------------------------------------------------------------- OpenSSL 1.1.1b release tag -----BEGIN PGP SIGNATURE----- iQFFBAABCgAvFiEEhlersmDwVrHlGQg52cTSbQ5gRJEFAlx1SgIRHG1hdHRAb3Bl bnNzbC5vcmcACgkQ2cTSbQ5gRJFVBgf9EwHN46AWeAHoJXEBL2ikKvbl1OkwEUj0 7M21XMpXaCZcaEy4AvfQ2MivguF13dkze4/8LwUyn5yfObWYG8Xk4t5XSVu3r4kf q9/yqSjcD9Kp7fxHgn7yblOsRLM4nPbMS5ud4bjCo04Vo8sO/ad50NMi9/4QSdj+ sDYMPNJNN4sAroH44KOIX5BntVdOxFe+t2jA6W4Z/VE63d4tzd7sw26D/X6enAOV k41XkJ4YAxojGwFu9tBX4Z/XtnTuxd09EwFUAZvyMFRywoF7LSQbr6yMtSDs2JjU 5+iLlHvS5/Y0jFXCjKBazWlM43kRy0pDv5XrM3rE5Y6yhNOq6VRmEw== =TwQD -----END PGP SIGNATURE----- Andy Polyakov (12): rsa/rsa_ossl.c: cache MONT_CTX for public modulus earlier. err/err.c: add err_clear_last_constant_time. rsa/rsa_ossl.c: make RSAerr call in rsa_ossl_private_decrypt unconditional. rsa/rsa_pk1.c: remove memcpy calls from RSA_padding_check_PKCS1_type_2. rsa/rsa_oaep.c: remove memcpy calls from RSA_padding_check_PKCS1_OAEP. rsa/rsa_ssl.c: make RSA_padding_check_SSLv23 constant-time. Configurations/10-main.conf: remove MIPS bn_div_3_words. Configure: recognize div3w modules and add -DBN_DIV3W. bn/bn_div.c: make conditional addition unconditional bn/bn_{div|shift}.c: introduce fixed-top interfaces. err/err.c: improve err_clear_last_constant_time's portability. AArch64 assembly pack: authenticate return addresses. Behrang (1): Fixed minor typo in the req.pod docs Bernd Edlinger (8): Fix a minor nit in the hkdflabel size Fix cert with rsa instead of rsaEncryption as public key algorithm PPC: Try out if mftb works before using it Make ca command silently use default if .attr file does not exist Fix a memory leak with di2_X509_CRL reuse Fixed d2i_X509 in-place not re-hashing the ex_flags Fix a crash in reuse of i2d_X509_PUBKEY Add an entry to the CHANGES for the d2i_X509_PUBKEY fix Billy Brumley (3): Clean up BN_consttime_swap. SCA hardening for mod. field inversion in EC_GROUP [test] unit test for field_inv function pointer in EC_METHOD Christian Heimes (1): Fix function names in ct(7) documentation Corey Minyard (1): Fix a memory leak in the mem bio Corinna Vinschen (1): cygwin: drop explicit O_TEXT Daniel DeFreez (2): Fix null pointer dereference in ssl_module_init Fix null pointer dereference in cms_RecipientInfo_kari_init David Asraf (1): crypto/bn: fix return value in BN_generate_prime David Benjamin (3): Reduce inputs before the RSAZ code. Fix some CFI issues in x86_64 assembly Check for unpaired .cfi_remember_state David Woodhouse (2): Stop marking default digest for EC keys as mandatory Honour mandatory digest on private key in has_usable_cert() Dmitry Belyavskiy (3): Remove unused variables from tls1_change_cipher_state Eliminate unused buffers from ssl3_change_cipher_state Restore compatibility with GOST2001 implementations. Dr. Matthias St. Pierre (7): curve25519.c: reformat code to follow coding guidelines curve25519.c: improve formula alignment doc/man3: remove copy&paste leftover man: harmonize the various formulations in the HISTORY sections doc/man1/x509.pod: fix typo X509_STORE: fix two misspelled compatibility macros engines/dasync: add explaining comments about AES-128-CBC-HMAC-SHA1 Eneas U de Queiroz (10): INSTALL: add note about devcrypto engine eng_devcrypto: don't leak methods tables eng_devcrypto: expand digest failure cases eng_devcrypto: fix copy of unitilialized digest eng_devcrypto: close session on cleanup, not final eng_devcrypto: add cipher CTX copy function eng_devcrypto: fix ctr mode eng_devcrypto: make sure digest can do copy eng_devcrypto: close open session on init e_devcrypto: set digest input_blocksize FdaSilvaYY (4): Doc: fix reference to deprecated methods. Coverity fix in apps/oscp Coverity fix in some crypto/asn1 code Fix CID 1434549: Unchecked return value in test/evp_test.c Hubert Kario (1): SSL_CONF_cmd: fix doc for NoRenegotiation Ionut Mihalcea (1): Don't set SNI by default if hostname is not dNS name Jakub Jelen (1): Use the correct function name Jan Macku (1): Fixed typo Jung-uk Kim (1): Do not complain when /dev/crypto does not exist. Ken Goldman (1): Admit unknown pkey types at security level 0 Klotz, Tobias (1): Cleanup vxworks support to be able to compile for VxWorks 7 Mansour Ahmadi (3): fix inconsistent flen check in rsa_pk1 and rsa_oaep add missing check for BN_mod_inverse Add missing OPENSSL_clear_free before using ec->key Matt Caswell (44): Prepare for 1.1.1b-dev Disallow Ed25519 signature maleability Add an Ed25519 signature maleability test Revert "Reduce stack usage in tls13_hkdf_expand" Fix some SSL_export_keying_material() issues Make sure build_SYS_str_reasons() preserves errno Preserve errno on dlopen Document the num_tickets s_server option Disallow Ed448 signature malleability Add an Ed448 malleability test make update Fix shlibloadtest to properly execute the dso_ref test Fix a RUN_ONCE bug Implement OPENSSL_INIT_NO_ATEXIT Don't link shlibloadtest against libcrypto Test atexit handlers Introduce a no-pinshared option Support _onexit() in preference to atexit() on Windows Fix no-cmac Don't complain if we receive the cryptopro extension in the ClientHello Add a test for correct handling of the cryptopro bug extension Don't artificially limit the size of the ClientHello Check a return value in the SRP code Check more return values in the SRP code Add missing entries in ssl_mac_pkey_id Don't get the mac type in TLSv1.3 Make sure we trigger retransmits in DTLS testing Revert "Keep the DTLS timer running after the end of the handshake if appropriate" Don't leak memory from ERR_add_error_vdata() Fix no-dso builds Complain if -twopass is used incorrectly Make OPENSSL_malloc_init() a no-op Don't signal SSL_CB_HANDSHAKE_START for TLSv1.3 post-handshake messages Fix -verify_return_error in s_client Use order not degree to calculate a buffer size in ecdsatest Don't interleave handshake and other record types in TLSv1.3 Add a test for interleaving app data with handshake data in TLSv1.3 Fix dasync engine Don't restrict the number of KeyUpdate messages we can process Ensure bn_cmp_words can handle the case where n == 0 Update NEWS for new release Update copyright year Clarify that SSL_shutdown() must not be called after a fatal error Prepare for 1.1.1b release Matt Eaton (1): Update NOTES.ANDROID Matthew Hodgson (1): openssl s_server: don't use sendto() with connected UDP socket Matthias Kraft (3): Add "weak" declarations of symbols used in safestack.h and lhash.h Fix Invalid Argument return code from IP_Factory in connect_to_server(). Fix reference to symbol 'main'. Michael Haubenwallner (1): Windows/Cygwin dlls need the executable bit set Michael Richardson (2): fixed grammar typo clarify which functions are the CMS functions which must have CMS_PARTIAL set Michael Tuexen (1): Fix end-point shared secret for DTLS/SCTP Nicola Tuveri (2): Test for constant-time flag leakage in BN_CTX Clear BN_FLG_CONSTTIME on BN_CTX_get() Paul Yang (3): Fix wrong return value in ssl3_ctx_ctrl Fix access zero memory if SSL_DEBUG is enabled Fix a grammar nit in CRYPTO_get_ex_new_index.pod Pauli (1): Address a bug in the DRBG tests where the reseeding wasn't properly reinstantiating the DRBG. Petr Vorel (1): Reuse already defined macros Richard Levitte (37): Smarter build of system error text database Add an error message test recipes for system error messages Change tarball making procedure Remove all 'make dist' artifacts VMS: fix collected error strings VMS config: Typo fix, as -> AS Document the removed 'dist' target Don't export util/mktar.sh Don't export the submodules 'boringssl', 'krb5' and 'pyca-cryptography' Make sure to run util/mktar.sh from the source directory Have util/mktar.sh display the absolute path to the tarball Avoid test_errstr in a cross compiled configuration VMS build: in descrip.mms.tmpl's src2obj, do .S -> .asm too VMS build: don't forget the generation marker when removing files Don't test the collected system errors when configured to not have them Docs fixup: some man3 pages had unindented code in SYNOPSIS Make EVP_PKEY_asn1_add0() stricter about its input Prevent calling decryption in an encryption context and vice versa make update Fix error in processing $target{enable} VMS build: better treatment of .S -> .obj compilation ERR: preserve system error number in a few more places crypto/uid.c: use own macro as guard rather than AT_SECURE crypto/armcap.c, crypto/ppccap.c: stricter use of getauxval() apps/verify.c: Change an old comment to clarify what the callback does Android build: use ANDROID_NDK_HOME rather than ANDROID_NDK VMS: force 'pinshared' Better phrasing around 1.1.0 test/drbgtest.c: call OPENSSL_thread_stop() explicitly test/recipes/02-err_errstr: skip errors that may not be loaded on Windows apps/ocsp.c Use the same HAVE_FORK / NO_FORK as in speed.c Configure: stop forcing use of DEFINE macros in headers Mark generated functions unused (applies to safestack, lhash, sparse_array) Windows: Call TerminateProcess, not ExitProcess Rearrange the inclusion of curve448/curve448_lcl.h VMS: disable the shlibload test for now Disable 02-test_errstr.t on msys/mingw as well as MSWin32 Sam Roberts (3): Make some simple getters take const SSL/SSL_CTX Remove unnecessary trailing whitespace Ignore cipher suites when setting cipher list Shigeki Ohtsu (1): s_client: fix not to send a command letter of R Shreya Bhandare (1): EVP_PKEY_size declared to take a const parameter Tobias Stoeckmann (1): Fixed typo (vi leftover). Todd Short (2): Fix d2i_PublicKey() for EC keys Update d2i_PrivateKey documentation Tomas Mraz (2): Remove stray -modulus option from the ec manual page. Allow the syntax of the .include directive to optionally have '=' Vedran Mileti? (1): Add missing dots in dgst man page Viktor Dukhovni (2): Update generator copyright year. More configurable crypto and ssl library initialization batist73 (1): Android build: fix usage of NDK home variable ($ndk_var) cclauss (1): Travis CI: Use flake8 to find Python syntax errors or undefined names weinholtendian (1): Fix error message for s_server -psk option ----------------------------------------------------------------------- From matt at openssl.org Tue Feb 26 14:39:52 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 14:39:52 +0000 Subject: [web] master update Message-ID: <1551191992.429099.12163.nullmailer@dev.openssl.org> The branch master has been updated via 6f4edf054e16bec8cb590de4b77c523334ebfe28 (commit) from 604491061a61f0e554cdd38354df341f57ee9fc1 (commit) - Log ----------------------------------------------------------------- commit 6f4edf054e16bec8cb590de4b77c523334ebfe28 Author: Matt Caswell Date: Tue Feb 26 14:31:17 2019 +0000 Updates for new releases Reviewed-by: Richard Levitte ----------------------------------------------------------------------- Summary of changes: news/newsflash.txt | 2 ++ news/secadv/20190226.txt | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ news/vulnerabilities.xml | 46 +++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 news/secadv/20190226.txt diff --git a/news/newsflash.txt b/news/newsflash.txt index 5ded4d4..b458dc4 100644 --- a/news/newsflash.txt +++ b/news/newsflash.txt @@ -4,6 +4,8 @@ # Format is two fields, colon-separated; the first line is the column # headings. URL paths must all be absolute. Date: Item +26-Feb-2019: OpenSSL 1.1.1b is now available, including bug fixes +26-Feb-2019: OpenSSL 1.0.2r is now available, including bug and security fixes 11-Feb-2019: 3.0.0 Design (draft) is now available 11-Feb-2019: Strategic Architecture for OpenSSL 3.0.0 and beyond is now available 20-Nov-2018: OpenSSL 1.1.1a is now available, including bug and security fixes diff --git a/news/secadv/20190226.txt b/news/secadv/20190226.txt new file mode 100644 index 0000000..8a4a6dd --- /dev/null +++ b/news/secadv/20190226.txt @@ -0,0 +1,48 @@ +OpenSSL Security Advisory [26 February 2019] +============================================ + +0-byte record padding oracle (CVE-2019-1559) +============================================ + +Severity: Moderate + +If an application encounters a fatal protocol error and then calls +SSL_shutdown() twice (once to send a close_notify, and once to receive one) then +OpenSSL can respond differently to the calling application if a 0 byte record is +received with invalid padding compared to if a 0 byte record is received with an +invalid MAC. If the application then behaves differently based on that in a way +that is detectable to the remote peer, then this amounts to a padding oracle +that could be used to decrypt data. + +In order for this to be exploitable "non-stitched" ciphersuites must be in use. +Stitched ciphersuites are optimised implementations of certain commonly used +ciphersuites. Also the application must call SSL_shutdown() twice even if a +protocol error has occurred (applications should not do this but some do +anyway). + +This issue does not impact OpenSSL 1.1.1 or 1.1.0. + +OpenSSL 1.0.2 users should upgrade to 1.0.2r. + +This issue was discovered by Juraj Somorovsky, Robert Merget and Nimrod Aviram, +with additional investigation by Steven Collison and Andrew Hourselt. It was +reported to OpenSSL on 10th December 2018. + +Note +==== + +OpenSSL 1.0.2 and 1.1.0 are currently only receiving security updates. Support +for 1.0.2 will end on 31st December 2019. Support for 1.1.0 will end on 11th +September 2019. Users of these versions should upgrade to OpenSSL 1.1.1. + +References +========== + +URL for this Security Advisory: +https://www.openssl.org/news/secadv/20190226.txt + +Note: the online version of the advisory may be updated with additional details +over time. + +For details of OpenSSL severity classifications please see: +https://www.openssl.org/policies/secpolicy.html diff --git a/news/vulnerabilities.xml b/news/vulnerabilities.xml index d9b42bd..1732db5 100644 --- a/news/vulnerabilities.xml +++ b/news/vulnerabilities.xml @@ -7,7 +7,51 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + Padding Oracle + 0-byte record padding oracle + + If an application encounters a fatal protocol error and then calls + SSL_shutdown() twice (once to send a close_notify, and once to receive one) then + OpenSSL can respond differently to the calling application if a 0 byte record is + received with invalid padding compared to if a 0 byte record is received with an + invalid MAC. If the application then behaves differently based on that in a way + that is detectable to the remote peer, then this amounts to a padding oracle + that could be used to decrypt data. + + In order for this to be exploitable "non-stitched" ciphersuites must be in use. + Stitched ciphersuites are optimised implementations of certain commonly used + ciphersuites. Also the application must call SSL_shutdown() twice even if a + protocol error has occurred (applications should not do this but some do + anyway). + + + + From nic.tuv at gmail.com Tue Feb 26 15:51:24 2019 From: nic.tuv at gmail.com (nic.tuv at gmail.com) Date: Tue, 26 Feb 2019 15:51:24 +0000 Subject: [openssl] master update Message-ID: <1551196284.916781.11462.nullmailer@dev.openssl.org> The branch master has been updated via b3883f77df33989b0d4298ca9a21d8595dd9a8c9 (commit) from f4800345d95d632d424f9b2725418c0c2ec6f029 (commit) - Log ----------------------------------------------------------------- commit b3883f77df33989b0d4298ca9a21d8595dd9a8c9 Author: Nicola Tuveri Date: Sun Feb 24 21:29:32 2019 +0200 Fix trivial typo in EVP_DigestVerifyInit doc Reviewed-by: Paul Yang Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8319) ----------------------------------------------------------------------- Summary of changes: doc/man3/EVP_DigestVerifyInit.pod | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/man3/EVP_DigestVerifyInit.pod b/doc/man3/EVP_DigestVerifyInit.pod index d3275f2..abb2930 100644 --- a/doc/man3/EVP_DigestVerifyInit.pod +++ b/doc/man3/EVP_DigestVerifyInit.pod @@ -28,8 +28,8 @@ EVP_PKEY_CTX of the verification operation will be written to B<*pctx>: this can be used to set alternative verification options. Note that any existing value in B<*pctx> is overwritten. The EVP_PKEY_CTX value returned must not be freed directly by the application if B is not assigned an EVP_PKEY_CTX value before -being passed to EVP_DigestSignInit() (which means the EVP_PKEY_CTX is created -inside EVP_DigestSignInit() and it will be freed automatically when the +being passed to EVP_DigestVerifyInit() (which means the EVP_PKEY_CTX is created +inside EVP_DigestVerifyInit() and it will be freed automatically when the EVP_MD_CTX is freed). No B will be created by EVP_DigsetSignInit() if the passed B From nic.tuv at gmail.com Tue Feb 26 15:55:15 2019 From: nic.tuv at gmail.com (nic.tuv at gmail.com) Date: Tue, 26 Feb 2019 15:55:15 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551196515.817948.9100.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 4045f688377df30bbb750696a1ef8c8ab2162393 (commit) from 69fc126cfdc0171eaf57a91959beda548247b94b (commit) - Log ----------------------------------------------------------------- commit 4045f688377df30bbb750696a1ef8c8ab2162393 Author: Nicola Tuveri Date: Sun Feb 24 21:29:32 2019 +0200 Fix trivial typo in EVP_DigestVerifyInit doc (cherry picked from commit b3883f77df33989b0d4298ca9a21d8595dd9a8c9) Reviewed-by: Paul Yang Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8319) ----------------------------------------------------------------------- Summary of changes: doc/man3/EVP_DigestVerifyInit.pod | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/man3/EVP_DigestVerifyInit.pod b/doc/man3/EVP_DigestVerifyInit.pod index 98a0987..9220d2b 100644 --- a/doc/man3/EVP_DigestVerifyInit.pod +++ b/doc/man3/EVP_DigestVerifyInit.pod @@ -28,8 +28,8 @@ EVP_PKEY_CTX of the verification operation will be written to B<*pctx>: this can be used to set alternative verification options. Note that any existing value in B<*pctx> is overwritten. The EVP_PKEY_CTX value returned must not be freed directly by the application if B is not assigned an EVP_PKEY_CTX value before -being passed to EVP_DigestSignInit() (which means the EVP_PKEY_CTX is created -inside EVP_DigestSignInit() and it will be freed automatically when the +being passed to EVP_DigestVerifyInit() (which means the EVP_PKEY_CTX is created +inside EVP_DigestVerifyInit() and it will be freed automatically when the EVP_MD_CTX is freed). No B will be created by EVP_DigsetSignInit() if the passed B From builds at travis-ci.org Tue Feb 26 15:42:46 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 26 Feb 2019 15:42:46 +0000 Subject: Passed: openssl/openssl#23493 (OpenSSL_1_0_2r - b34cf4e) In-Reply-To: Message-ID: <5c755e76bc8c8_43fcadca0f76c23193d@b0dd6992-5242-4958-9657-f8463c63682b.mail> Build Update for openssl/openssl ------------------------------------- Build: #23493 Status: Passed Duration: 6 mins and 37 secs Commit: b34cf4e (OpenSSL_1_0_2r) Author: Matt Caswell Message: Prepare for 1.0.2r release Reviewed-by: Richard Levitte View the changeset: https://github.com/openssl/openssl/compare/OpenSSL_1_0_2r View the full build log and details: https://travis-ci.org/openssl/openssl/builds/498759594?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From nic.tuv at gmail.com Tue Feb 26 16:01:32 2019 From: nic.tuv at gmail.com (nic.tuv at gmail.com) Date: Tue, 26 Feb 2019 16:01:32 +0000 Subject: [openssl] master update Message-ID: <1551196892.737007.24860.nullmailer@dev.openssl.org> The branch master has been updated via 1a31d8017ee7e8df0eca76fee601b826699c9ac1 (commit) from b3883f77df33989b0d4298ca9a21d8595dd9a8c9 (commit) - Log ----------------------------------------------------------------- commit 1a31d8017ee7e8df0eca76fee601b826699c9ac1 Author: Billy Brumley Date: Sat Feb 23 10:12:35 2019 +0200 [test] modernize ecdsatest and extend ECDSA sign KATs Reviewed-by: Nicola Tuveri Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8314) ----------------------------------------------------------------------- Summary of changes: test/ecdsatest.c | 538 ++- test/ecdsatest.h | 10214 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 10448 insertions(+), 304 deletions(-) create mode 100644 test/ecdsatest.h diff --git a/test/ecdsatest.c b/test/ecdsatest.c index bc3adc0..03327a2 100644 --- a/test/ecdsatest.c +++ b/test/ecdsatest.c @@ -8,32 +8,27 @@ * https://www.openssl.org/source/license.html */ -#include -#include -#include - #include /* To see if OPENSSL_NO_EC is defined */ #include "testutil.h" #ifndef OPENSSL_NO_EC -# include -# include # include # include # include -# ifndef OPENSSL_NO_ENGINE -# include -# endif -# include -# include # include +# include "internal/nelem.h" +# include "ecdsatest.h" /* functions to change the RAND_METHOD */ static int fbytes(unsigned char *buf, int num); static RAND_METHOD fake_rand; static const RAND_METHOD *old_rand; +static int use_fake = 0; +static const char *numbers[2]; +static size_t crv_len = 0; +static EC_builtin_curve *curves = NULL; static int change_rand(void) { @@ -57,25 +52,10 @@ static int restore_rand(void) return 1; } -static int fbytes_counter = 0, use_fake = 0; -static const char *numbers[8] = { - "651056770906015076056810763456358567190100156695615665659", - "6140507067065001063065065565667405560006161556565665656654", - "8763001015071075675010661307616710783570106710677817767166" - "71676178726717", - "7000000175690566466555057817571571075705015757757057795755" - "55657156756655", - "1275552191113212300012030439187146164646146646466749494799", - "1542725565216523985789236956265265265235675811949404040041", - "1456427555219115346513212300075341203043918714616464614664" - "64667494947990", - "1712787255652165239672857892369562652652652356758119494040" - "40041670216363" -}; - static int fbytes(unsigned char *buf, int num) { int ret = 0; + static int fbytes_counter = 0; BIGNUM *tmp = NULL; if (use_fake == 0) @@ -83,316 +63,254 @@ static int fbytes(unsigned char *buf, int num) use_fake = 0; - if (fbytes_counter >= 8) - return 0; - if (!TEST_ptr(tmp = BN_new())) - return 0; - if (!TEST_true(BN_dec2bn(&tmp, numbers[fbytes_counter]))) { - BN_free(tmp); - return 0; - } - fbytes_counter++; - if (TEST_int_eq(BN_num_bytes(tmp), num) - && TEST_true(BN_bn2bin(tmp, buf))) - ret = 1; + if (!TEST_ptr(tmp = BN_new()) + || !TEST_int_lt(fbytes_counter, OSSL_NELEM(numbers)) + || !TEST_true(BN_hex2bn(&tmp, numbers[fbytes_counter])) + /* tmp might need leading zeros so pad it out */ + || !TEST_int_le(BN_num_bytes(tmp), num) + || !TEST_true(BN_bn2binpad(tmp, buf, num))) + goto err; + + fbytes_counter = (fbytes_counter + 1) % OSSL_NELEM(numbers); + ret = 1; + err: BN_free(tmp); return ret; } -/* some tests from the X9.62 draft */ -static int x9_62_test_internal(int nid, const char *r_in, const char *s_in) +/*- + * This function hijacks the RNG to feed it the chosen ECDSA key and nonce. + * The ECDSA KATs are from: + * - the X9.62 draft (4) + * - NIST CAVP (720) + * + * It uses the low-level ECDSA_sign_setup instead of EVP to control the RNG. + * NB: This is not how applications should use ECDSA; this is only for testing. + * + * Tests the library can successfully: + * - generate public keys that matches those KATs + * - create ECDSA signatures that match those KATs + * - accept those signatures as valid + */ +static int x9_62_tests(int n) { - int ret = 0; - const char message[] = "abc"; - unsigned char digest[SHA_DIGEST_LENGTH]; + int nid, md_nid, ret = 0; + const char *r_in = NULL, *s_in = NULL, *tbs = NULL; + unsigned char *pbuf = NULL, *qbuf = NULL, *message = NULL; + unsigned char digest[EVP_MAX_MD_SIZE]; unsigned int dgst_len = 0; - EVP_MD_CTX *md_ctx; + long q_len, msg_len = 0; + size_t p_len; + EVP_MD_CTX *mctx = NULL; EC_KEY *key = NULL; ECDSA_SIG *signature = NULL; BIGNUM *r = NULL, *s = NULL; BIGNUM *kinv = NULL, *rp = NULL; - const BIGNUM *sig_r, *sig_s; - - if (!TEST_ptr(md_ctx = EVP_MD_CTX_new())) - goto x962_int_err; - - /* get the message digest */ - if (!TEST_true(EVP_DigestInit(md_ctx, EVP_sha1())) - || !TEST_true(EVP_DigestUpdate(md_ctx, (const void *)message, 3)) - || !TEST_true(EVP_DigestFinal(md_ctx, digest, &dgst_len))) - goto x962_int_err; - - TEST_info("testing %s", OBJ_nid2sn(nid)); - - /* create the key */ - if (!TEST_ptr(key = EC_KEY_new_by_curve_name(nid))) - goto x962_int_err; + const BIGNUM *sig_r = NULL, *sig_s = NULL; + + nid = ecdsa_cavs_kats[n].nid; + md_nid = ecdsa_cavs_kats[n].md_nid; + r_in = ecdsa_cavs_kats[n].r; + s_in = ecdsa_cavs_kats[n].s; + tbs = ecdsa_cavs_kats[n].msg; + numbers[0] = ecdsa_cavs_kats[n].d; + numbers[1] = ecdsa_cavs_kats[n].k; + + TEST_info("ECDSA KATs for curve %s", OBJ_nid2sn(nid)); + + if (!TEST_ptr(mctx = EVP_MD_CTX_new()) + /* get the message digest */ + || !TEST_ptr(message = OPENSSL_hexstr2buf(tbs, &msg_len)) + || !TEST_true(EVP_DigestInit_ex(mctx, EVP_get_digestbynid(md_nid), NULL)) + || !TEST_true(EVP_DigestUpdate(mctx, message, msg_len)) + || !TEST_true(EVP_DigestFinal_ex(mctx, digest, &dgst_len)) + /* create the key */ + || !TEST_ptr(key = EC_KEY_new_by_curve_name(nid)) + /* load KAT variables */ + || !TEST_ptr(r = BN_new()) + || !TEST_ptr(s = BN_new()) + || !TEST_true(BN_hex2bn(&r, r_in)) + || !TEST_true(BN_hex2bn(&s, s_in)) + /* swap the RNG source */ + || !TEST_true(change_rand())) + goto err; + + /* public key must match KAT */ use_fake = 1; - if (!TEST_true(EC_KEY_generate_key(key))) - goto x962_int_err; - - /* create the signature */ + if (!TEST_true(EC_KEY_generate_key(key)) + || !TEST_true(p_len = EC_KEY_key2buf(key, POINT_CONVERSION_UNCOMPRESSED, + &pbuf, NULL)) + || !TEST_ptr(qbuf = OPENSSL_hexstr2buf(ecdsa_cavs_kats[n].Q, &q_len)) + || !TEST_int_eq(q_len, p_len) + || !TEST_mem_eq(qbuf, q_len, pbuf, p_len)) + goto err; + + /* create the signature via ECDSA_sign_setup to avoid use of ECDSA nonces */ use_fake = 1; - /* Use ECDSA_sign_setup to avoid use of ECDSA nonces */ - if (!TEST_true(ECDSA_sign_setup(key, NULL, &kinv, &rp))) - goto x962_int_err; - if (!TEST_ptr(signature = - ECDSA_do_sign_ex(digest, SHA_DIGEST_LENGTH, kinv, rp, key))) - goto x962_int_err; + if (!TEST_true(ECDSA_sign_setup(key, NULL, &kinv, &rp)) + || !TEST_ptr(signature = ECDSA_do_sign_ex(digest, dgst_len, + kinv, rp, key)) + /* verify the signature */ + || !TEST_int_eq(ECDSA_do_verify(digest, dgst_len, signature, key), 1)) + goto err; /* compare the created signature with the expected signature */ - if (!TEST_ptr(r = BN_new()) || !TEST_ptr(s = BN_new())) - goto x962_int_err; - if (!TEST_true(BN_dec2bn(&r, r_in)) || !TEST_true(BN_dec2bn(&s, s_in))) - goto x962_int_err; ECDSA_SIG_get0(signature, &sig_r, &sig_s); if (!TEST_BN_eq(sig_r, r) - || !TEST_BN_eq(sig_s, s)) - goto x962_int_err; - - /* verify the signature */ - if (!TEST_int_eq(ECDSA_do_verify(digest, SHA_DIGEST_LENGTH, - signature, key), 1)) - goto x962_int_err; + || !TEST_BN_eq(sig_s, s)) + goto err; ret = 1; - x962_int_err: + err: + /* restore the RNG source */ + if (!TEST_true(restore_rand())) + ret = 0; + + OPENSSL_free(message); + OPENSSL_free(pbuf); + OPENSSL_free(qbuf); EC_KEY_free(key); ECDSA_SIG_free(signature); BN_free(r); BN_free(s); - EVP_MD_CTX_free(md_ctx); + EVP_MD_CTX_free(mctx); BN_clear_free(kinv); BN_clear_free(rp); return ret; } -static int x9_62_tests(void) -{ - int ret = 0; - - /* set own rand method */ - if (!change_rand()) - goto x962_err; - - if (!TEST_true(x9_62_test_internal(NID_X9_62_prime192v1, - "3342403536405981729393488334694600415596881826869351677613", - "5735822328888155254683894997897571951568553642892029982342"))) - goto x962_err; - if (!TEST_true(x9_62_test_internal(NID_X9_62_prime239v1, - "3086361431751678114926225473006680188549593787585317781474" - "62058306432176", - "3238135532097973577080787768312505059318910517550078427819" - "78505179448783"))) - goto x962_err; - -# ifndef OPENSSL_NO_EC2M - if (!TEST_true(x9_62_test_internal(NID_X9_62_c2tnb191v1, - "87194383164871543355722284926904419997237591535066528048", - "308992691965804947361541664549085895292153777025772063598"))) - goto x962_err; - if (!TEST_true(x9_62_test_internal(NID_X9_62_c2tnb239v1, - "2159633321041961198501834003903461262881815148684178964245" - "5876922391552", - "1970303740007316867383349976549972270528498040721988191026" - "49413465737174"))) - goto x962_err; -# endif - ret = 1; - - x962_err: - if (!TEST_true(restore_rand())) - ret = 0; - return ret; -} - -static int test_builtin(void) +/*- + * Positive and negative ECDSA testing through EVP interface: + * - EVP_DigestSign (this is the one-shot version) + * - EVP_DigestVerify + * + * Tests the library can successfully: + * - create a key + * - create a signature + * - accept that signature + * - reject that signature with a different public key + * - reject that signature if its length is not correct + * - reject that signature after modifying the message + * - accept that signature after un-modifying the message + * - reject that signature after modifying the signature + * - accept that signature after un-modifying the signature + */ +static int test_builtin(int n) { - EC_builtin_curve *curves = NULL; - size_t crv_len = 0, n = 0; - EC_KEY *eckey = NULL, *wrong_eckey = NULL; - EC_GROUP *group; - ECDSA_SIG *ecdsa_sig = NULL, *modified_sig = NULL; - unsigned char digest[SHA512_DIGEST_LENGTH]; - unsigned char wrong_digest[SHA512_DIGEST_LENGTH]; - unsigned char *signature = NULL; - const unsigned char *sig_ptr; - unsigned char *sig_ptr2; - unsigned char *raw_buf = NULL; - const BIGNUM *sig_r, *sig_s; - BIGNUM *modified_r = NULL, *modified_s = NULL; - BIGNUM *unmodified_r = NULL, *unmodified_s = NULL; - unsigned int sig_len, order, r_len, s_len, bn_len, buf_len; + EC_KEY *eckey_neg = NULL, *eckey = NULL; + unsigned char dirt, offset, tbs[128]; + unsigned char *sig = NULL; + EVP_PKEY *pkey_neg = NULL, *pkey = NULL; + EVP_MD_CTX *mctx = NULL; + size_t sig_len; int nid, ret = 0; - /* fill digest values with some random data */ - if (!TEST_true(RAND_bytes(digest, SHA512_DIGEST_LENGTH)) - || !TEST_true(RAND_bytes(wrong_digest, SHA512_DIGEST_LENGTH))) - goto builtin_err; + nid = curves[n].nid; - /* create and verify a ecdsa signature with every available curve */ - /* get a list of all internal curves */ - crv_len = EC_get_builtin_curves(NULL, 0); - if (!TEST_ptr(curves = OPENSSL_malloc(sizeof(*curves) * crv_len)) - || !TEST_true(EC_get_builtin_curves(curves, crv_len))) - goto builtin_err; - - /* now create and verify a signature for every curve */ - for (n = 0; n < crv_len; n++) { - unsigned char dirt, offset; - - nid = curves[n].nid; - if (nid == NID_ipsec4 || nid == NID_ipsec3) - continue; - /* create new ecdsa key (== EC_KEY) */ - if (!TEST_ptr(eckey = EC_KEY_new()) - || !TEST_ptr(group = EC_GROUP_new_by_curve_name(nid)) - || !TEST_true(EC_KEY_set_group(eckey, group))) - goto builtin_err; - EC_GROUP_free(group); - order = EC_GROUP_order_bits(EC_KEY_get0_group(eckey)); - - TEST_info("testing %s", OBJ_nid2sn(nid)); - - /* create key */ - if (!TEST_true(EC_KEY_generate_key(eckey))) - goto builtin_err; - /* create second key */ - if (!TEST_ptr(wrong_eckey = EC_KEY_new()) - || !TEST_ptr(group = EC_GROUP_new_by_curve_name(nid)) - || !TEST_true(EC_KEY_set_group(wrong_eckey, group))) - goto builtin_err; - EC_GROUP_free(group); - if (!TEST_true(EC_KEY_generate_key(wrong_eckey))) - goto builtin_err; - - /* check key */ - if (!TEST_true(EC_KEY_check_key(eckey))) - goto builtin_err; - - /* create signature */ - sig_len = ECDSA_size(eckey); - if (!TEST_ptr(signature = OPENSSL_malloc(sig_len)) - || !TEST_true(ECDSA_sign(0, digest, SHA512_DIGEST_LENGTH, - signature, &sig_len, eckey))) - goto builtin_err; - - /* verify signature */ - if (!TEST_int_eq(ECDSA_verify(0, digest, SHA512_DIGEST_LENGTH, - signature, sig_len, eckey), - 1)) - goto builtin_err; - - /* verify signature with the wrong key */ - if (!TEST_int_ne(ECDSA_verify(0, digest, SHA512_DIGEST_LENGTH, - signature, sig_len, wrong_eckey), - 1)) - goto builtin_err; - - /* wrong digest */ - if (!TEST_int_ne(ECDSA_verify(0, wrong_digest, SHA512_DIGEST_LENGTH, - signature, sig_len, eckey), - 1)) - goto builtin_err; - - /* wrong length */ - if (!TEST_int_ne(ECDSA_verify(0, digest, SHA512_DIGEST_LENGTH, - signature, sig_len - 1, eckey), - 1)) - goto builtin_err; - - /* - * Modify a single byte of the signature: to ensure we don't garble - * the ASN1 structure, we read the raw signature and modify a byte in - * one of the bignums directly. - */ - sig_ptr = signature; - if (!TEST_ptr(ecdsa_sig = d2i_ECDSA_SIG(NULL, &sig_ptr, sig_len))) - goto builtin_err; - - ECDSA_SIG_get0(ecdsa_sig, &sig_r, &sig_s); - - /* Store the two BIGNUMs in raw_buf. */ - r_len = BN_num_bytes(sig_r); - s_len = BN_num_bytes(sig_s); - bn_len = (order + 7) / 8; - if (!TEST_false(r_len > bn_len) - || !TEST_false(s_len > bn_len)) - goto builtin_err; - buf_len = 2 * bn_len; - if (!TEST_ptr(raw_buf = OPENSSL_zalloc(buf_len))) - goto builtin_err; - BN_bn2bin(sig_r, raw_buf + bn_len - r_len); - BN_bn2bin(sig_s, raw_buf + buf_len - s_len); - - /* Modify a single byte in the buffer. */ - offset = raw_buf[10] % buf_len; - dirt = raw_buf[11] ? raw_buf[11] : 1; - raw_buf[offset] ^= dirt; - - /* Now read the BIGNUMs back in from raw_buf. */ - if (!TEST_ptr(modified_sig = ECDSA_SIG_new())) - goto builtin_err; - if (!TEST_ptr(modified_r = BN_bin2bn(raw_buf, bn_len, NULL)) - || !TEST_ptr(modified_s = BN_bin2bn(raw_buf + bn_len, - bn_len, NULL)) - || !TEST_true(ECDSA_SIG_set0(modified_sig, - modified_r, modified_s))) { - BN_free(modified_r); - BN_free(modified_s); - goto builtin_err; - } - sig_ptr2 = signature; - sig_len = i2d_ECDSA_SIG(modified_sig, &sig_ptr2); - if (!TEST_false(ECDSA_verify(0, digest, SHA512_DIGEST_LENGTH, - signature, sig_len, eckey))) - goto builtin_err; - - /* Sanity check: undo the modification and verify signature. */ - raw_buf[offset] ^= dirt; - if (!TEST_ptr(unmodified_r = BN_bin2bn(raw_buf, bn_len, NULL)) - || !TEST_ptr(unmodified_s = BN_bin2bn(raw_buf + bn_len, - bn_len, NULL)) - || !TEST_true(ECDSA_SIG_set0(modified_sig, unmodified_r, - unmodified_s))) { - BN_free(unmodified_r); - BN_free(unmodified_s); - goto builtin_err; - } - - sig_ptr2 = signature; - sig_len = i2d_ECDSA_SIG(modified_sig, &sig_ptr2); - if (!TEST_true(ECDSA_verify(0, digest, SHA512_DIGEST_LENGTH, - signature, sig_len, eckey))) - goto builtin_err; - - /* cleanup */ - ERR_clear_error(); - OPENSSL_free(signature); - signature = NULL; - EC_KEY_free(eckey); - eckey = NULL; - EC_KEY_free(wrong_eckey); - wrong_eckey = NULL; - ECDSA_SIG_free(ecdsa_sig); - ecdsa_sig = NULL; - ECDSA_SIG_free(modified_sig); - modified_sig = NULL; - OPENSSL_free(raw_buf); - raw_buf = NULL; + /* skip built-in curves where ord(G) is not prime */ + if (nid == NID_ipsec4 || nid == NID_ipsec3) { + TEST_info("skipped: ECDSA unsupported for curve %s", OBJ_nid2sn(nid)); + return 1; } - ret = 1; - builtin_err: - EC_KEY_free(eckey); - EC_KEY_free(wrong_eckey); - ECDSA_SIG_free(ecdsa_sig); - ECDSA_SIG_free(modified_sig); - OPENSSL_free(signature); - OPENSSL_free(raw_buf); - OPENSSL_free(curves); + TEST_info("testing ECDSA for curve %s", OBJ_nid2sn(nid)); + + if (!TEST_ptr(mctx = EVP_MD_CTX_new()) + /* get some random message data */ + || !TEST_true(RAND_bytes(tbs, sizeof(tbs))) + /* real key */ + || !TEST_ptr(eckey = EC_KEY_new_by_curve_name(nid)) + || !TEST_true(EC_KEY_generate_key(eckey)) + || !TEST_ptr(pkey = EVP_PKEY_new()) + || !TEST_true(EVP_PKEY_assign_EC_KEY(pkey, eckey)) + /* fake key for negative testing */ + || !TEST_ptr(eckey_neg = EC_KEY_new_by_curve_name(nid)) + || !TEST_true(EC_KEY_generate_key(eckey_neg)) + || !TEST_ptr(pkey_neg = EVP_PKEY_new()) + || !TEST_true(EVP_PKEY_assign_EC_KEY(pkey_neg, eckey_neg))) + goto err; + + sig_len = ECDSA_size(eckey); + + if (!TEST_ptr(sig = OPENSSL_malloc(sig_len)) + /* create a signature */ + || !TEST_true(EVP_DigestSignInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_true(EVP_DigestSign(mctx, sig, &sig_len, tbs, sizeof(tbs))) + || !TEST_int_le(sig_len, ECDSA_size(eckey)) + /* negative test, verify with wrong key, 0 return */ + || !TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey_neg)) + || !TEST_int_eq(EVP_DigestVerify(mctx, sig, sig_len, tbs, sizeof(tbs)), 0) + /* negative test, verify with wrong signature length, -1 return */ + || !TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_int_eq(EVP_DigestVerify(mctx, sig, sig_len - 1, tbs, sizeof(tbs)), -1) + /* positive test, verify with correct key, 1 return */ + || !TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_int_eq(EVP_DigestVerify(mctx, sig, sig_len, tbs, sizeof(tbs)), 1)) + goto err; + + /* muck with the message, test it fails with 0 return */ + tbs[0] ^= 1; + if (!TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_int_eq(EVP_DigestVerify(mctx, sig, sig_len, tbs, sizeof(tbs)), 0)) + goto err; + /* un-muck and test it verifies */ + tbs[0] ^= 1; + if (!TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_int_eq(EVP_DigestVerify(mctx, sig, sig_len, tbs, sizeof(tbs)), 1)) + goto err; + + /*- + * Muck with the ECDSA signature. The DER encoding is one of: + * - 30 LL 02 .. + * - 30 81 LL 02 .. + * + * - Sometimes this mucks with the high level DER sequence wrapper: + * in that case, DER-parsing of the whole signature should fail. + * + * - Sometimes this mucks with the DER-encoding of ECDSA.r: + * in that case, DER-parsing of ECDSA.r should fail. + * + * - Sometimes this mucks with the DER-encoding of ECDSA.s: + * in that case, DER-parsing of ECDSA.s should fail. + * + * - Sometimes this mucks with ECDSA.r: + * in that case, the signature verification should fail. + * + * - Sometimes this mucks with ECDSA.s: + * in that case, the signature verification should fail. + * + * The usual case is changing the integer value of ECDSA.r or ECDSA.s. + * Because the ratio of DER overhead to signature bytes is small. + * So most of the time it will be one of the last two cases. + * + * In any case, EVP_PKEY_verify should not return 1 for valid. + */ + offset = tbs[0] % sig_len; + dirt = tbs[1] ? tbs[1] : 1; + sig[offset] ^= dirt; + if (!TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_int_ne(EVP_DigestVerify(mctx, sig, sig_len, tbs, sizeof(tbs)), 1)) + goto err; + /* un-muck and test it verifies */ + sig[offset] ^= dirt; + if (!TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_int_eq(EVP_DigestVerify(mctx, sig, sig_len, tbs, sizeof(tbs)), 1)) + goto err; + ret = 1; + err: + EVP_PKEY_free(pkey); + EVP_PKEY_free(pkey_neg); + EVP_MD_CTX_free(mctx); + OPENSSL_free(sig); return ret; } #endif @@ -402,8 +320,20 @@ int setup_tests(void) #ifdef OPENSSL_NO_EC TEST_note("Elliptic curves are disabled."); #else - ADD_TEST(x9_62_tests); - ADD_TEST(test_builtin); + /* get a list of all internal curves */ + crv_len = EC_get_builtin_curves(NULL, 0); + if (!TEST_ptr(curves = OPENSSL_malloc(sizeof(*curves) * crv_len)) + || !TEST_true(EC_get_builtin_curves(curves, crv_len))) + return 0; + ADD_ALL_TESTS(test_builtin, crv_len); + ADD_ALL_TESTS(x9_62_tests, OSSL_NELEM(ecdsa_cavs_kats)); #endif return 1; } + +void cleanup_tests(void) +{ +#ifndef OPENSSL_NO_EC + OPENSSL_free(curves); +#endif +} diff --git a/test/ecdsatest.h b/test/ecdsatest.h new file mode 100644 index 0000000..216e66e --- /dev/null +++ b/test/ecdsatest.h @@ -0,0 +1,10214 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef ECDSATEST_CAVS_H +# define ECDSATEST_CAVS_H + +/*- + * NIST CAVP ECDSA KATs: + * https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/dss/186-3ecdsatestvectors.zip + * + * sha256sum e0d9bee3f760ca3fabb82bd43dd04c13ee64ca9e0b719c6ea64fd52c9f0dd929 + * 720 KATs from the SigGen.txt file. + * + * There are also 4 X9.62 KATs; two for prime fields and two for binary fields. + */ + +typedef struct { + const int nid; /* curve NID */ + const int md_nid; /* hash function NID */ + const char *msg; /* message to sign */ + const char *d; /* ECDSA private key */ + const char *Q; /* ECDSA public key: Q = dG */ + const char *k; /* ECDSA nonce */ + const char *r; /* ECDSA signature (r,s) */ + const char *s; +} ecdsa_cavs_kat_t; + +static const ecdsa_cavs_kat_t ecdsa_cavs_kats[] = { + /* prime KATs from X9.62 */ + {NID_X9_62_prime192v1, NID_sha1, + "616263", /* "abc" */ + "1a8d598fc15bf0fd89030b5cb1111aeb92ae8baf5ea475fb", + "0462b12d60690cdcf330babab6e69763b471f994dd702d16a563bf5ec08069705ffff65e" + "5ca5c0d69716dfcb3474373902", + "fa6de29746bbeb7f8bb1e761f85f7dfb2983169d82fa2f4e", + "885052380ff147b734c330c43d39b2c4a89f29b0f749fead", + "e9ecc78106def82bf1070cf1d4d804c3cb390046951df686"}, + {NID_X9_62_prime239v1, NID_sha1, + "616263", /* "abc" */ + "7ef7c6fabefffdea864206e80b0b08a9331ed93e698561b64ca0f7777f3d", + "045b6dc53bc61a2548ffb0f671472de6c9521a9d2d2534e65abfcbd5fe0c707fd9f1ed2e" + "65f09f6ce0893baf5e8e31e6ae82ea8c3592335be906d38dee", + "656c7196bf87dcc5d1f1020906df2782360d36b2de7a17ece37d503784af", + "2cb7f36803ebb9c427c58d8265f11fc5084747133078fc279de874fbecb0", + "2eeae988104e9c2234a3c2beb1f53bfa5dc11ff36a875d1e3ccb1f7e45cf"}, + /* prime KATs from NIST CAVP */ + {NID_secp224r1, NID_sha224, + "699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc1" + "9495df081c3fc60245b9f25fc9e301b845b3d703a694986e4641ae3c7e5a19e6d6edbf1d" + "61e535f49a8fad5f4ac26397cfec682f161a5fcd32c5e780668b0181a91955157635536a" + "22367308036e2070f544ad4fff3d5122c76fad5d", + "16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615", + "04605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc" + "806ef1df861a42505d0af9ef7c3df3959b8dfc6669", + "d9a5a7328117f48b4b8dd8c17dae722e756b3ff64bd29a527137eec0", + "2fc2cff8cdd4866b1d74e45b07d333af46b7af0888049d0fdbc7b0d6", + "8d9cc4c8ea93e0fd9d6431b9a1fd99b88f281793396321b11dac41eb"}, + {NID_secp224r1, NID_sha224, + "7de42b44db0aa8bfdcdac9add227e8f0cc7ad1d94693beb5e1d325e5f3f85b3bd033fc25" + "e9469a89733a65d1fa641f7e67d668e7c71d736233c4cba20eb83c368c506affe77946b5" + "e2ec693798aecd7ff943cd8fab90affddf5ad5b8d1af332e6c5fe4a2df16837700b2781e" + "08821d4fbdd8373517f5b19f9e63b89cfeeeef6f", + "cf020a1ff36c28511191482ed1e5259c60d383606c581948c3fbe2c5", + "04fa21f85b99d3dc18c6d53351fbcb1e2d029c00fa7d1663a3dd94695ee9e79578f8988b" + "168edff1a8b34a5ed9598cc20acd1f0aed36715d88", + "c780d047454824af98677cf310117e5f9e99627d02414f136aed8e83", + "45145f06b566ec9fd0fee1b6c6551a4535c7a3bbfc0fede45f4f5038", + "7302dff12545b069cf27df49b26e4781270585463656f2834917c3ca"}, + {NID_secp224r1, NID_sha224, + "af0da3adab82784909e2b3dadcecba21eced3c60d7572023dea171044d9a10e8ba67d31b" + "04904541b87fff32a10ccc6580869055fec6216a00320a28899859a6b61faba58a0bc10c" + "2ba07ea16f214c3ddcc9fc5622ad1253b63fe7e95227ae3c9caa9962cffc8b1c4e826003" + "6469d25ab0c8e3643a820b8b3a4d8d43e4b728f9", + "dde6f173fa9f307d206ce46b4f02851ebce9638a989330249fd30b73", + "04fc21a99b060afb0d9dbf3250ea3c4da10be94ce627a65874d8e4a630e8373ab7190890" + "326aac4aacca3eba89e15d1086a05434dd033fd3f3", + "6629366a156840477df4875cfba4f8faa809e394893e1f5525326d07", + "41f8e2b1ae5add7c24da8725a067585a3ad6d5a9ed9580beb226f23a", + "a5d71bff02dce997305dd337128046f36714398f4ef6647599712fae"}, + {NID_secp224r1, NID_sha224, + "cfa56ae89727df6b7266f69d6636bf738f9e4f15f49c42a0123edac4b3743f32ea52389f" + "919ceb90575c4184897773b2f2fc5b3fcb354880f15c93383215d3c2551fcc1b4180a1ac" + "0f69c969bbc306acd115ce3976eff518540f43ad4076dbb5fbad9ce9b3234f1148b8f5e0" + "59192ff480fc4bcbd00d25f4d9f5ed4ba5693b6c", + "aeee9071248f077590ac647794b678ad371f8e0f1e14e9fbff49671e", + "04fad0a34991bbf89982ad9cf89337b4bd2565f84d5bdd004289fc1cc35d8b6764f28c81" + "63a12855a5c266efeb9388df4994b85a8b4f1bd3bc", + "1d35d027cd5a569e25c5768c48ed0c2b127c0f99cb4e52ea094fe689", + "2258184ef9f0fa698735379972ce9adf034af76017668bfcdab978de", + "866fb8e505dea6c909c2c9143ec869d1bac2282cf12366130ff2146c"}, + {NID_secp224r1, NID_sha224, + "c223c8009018321b987a615c3414d2bb15954933569ca989de32d6bf11107bc47a330ab6" + "d88d9b50d106cf5777d1b736b14bc48deda1bc573a9a7dd42cd061860645306dce7a5ba8" + "c60f135a6a21999421ce8c4670fe7287a7e9ea3aa1e0fa82721f33e6e823957fe86e2283" + "c89ef92b13cd0333c4bb70865ae1919bf538ea34", + "29c204b2954e1406a015020f9d6b3d7c00658298feb2d17440b2c1a4", + "040e0fc15e775a75d45f872e5021b554cc0579da19125e1a49299c7630cb64fe462d025a" + "e2a1394746bdbf8251f7ca5a1d6bb13e0edf6b7b09", + "39547c10bb947d69f6c3af701f2528e011a1e80a6d04cc5a37466c02", + "86622c376d326cdf679bcabf8eb034bf49f0c188f3fc3afd0006325d", + "26613d3b33c70e635d7a998f254a5b15d2a3642bf321e8cff08f1e84"}, + {NID_secp224r1, NID_sha224, + "1c27273d95182c74c100d85b5c08f4b26874c2abc87f127f304aedbf52ef6540eba16dd6" + "64ae1e9e30ea1e66ff9cc9ab5a80b5bcbd19dde88a29ff10b50a6abd73388e8071306c68" + "d0c9f6caa26b7e68de29312be959b9f4a5481f5a2ad2070a396ed3de21096541cf58c4a1" + "3308e08867565bf2df9d649357a83cdcf18d2cd9", + "8986a97b24be042a1547642f19678de4e281a68f1e794e343dabb131", + "042c070e68e8478341938f3d5026a1fe01e778cdffbebbdd7a4cd29209cde21c9c7c6590" + "ba300715a7adac278385a5175b6b4ea749c4b6a681", + "509712f9c0f3370f6a09154159975945f0107dd1cee7327c68eaa90b", + "57afda5139b180de96373c3d649700682e37efd56ae182335f081013", + "eb6cd58650cfb26dfdf21de32fa17464a6efc46830eedc16977342e6"}, + {NID_secp224r1, NID_sha224, + "069ae374971627f6b8503f3aa63ab52bcf4f3fcae65b98cdbbf917a5b08a10dc76005671" + "4db279806a8d43485320e6fee0f1e0562e077ee270ace8d3c478d79bcdff9cf8b92fdea6" + "8421d4a276f8e62ae379387ae06b60af9eb3c40bd7a768aeffccdc8a08bc78ca2eca1806" + "1058043a0e441209c5c594842838a4d9d778a053", + "d9aa95e14cb34980cfddadddfa92bde1310acaff249f73ff5b09a974", + "043a0d4b8e5fad1ea1abb8d3fb742cd45cd0b76d136e5bbb33206ad120c90ac83276b2fa" + "3757b0f226cd7360a313bc96fd8329c76a7306cc7d", + "1f1739af68a3cee7c5f09e9e09d6485d9cd64cc4085bc2bc89795aaf", + "09bbdd003532d025d7c3204c00747cd52ecdfbc7ce3dde8ffbea23e1", + "1e745e80948779a5cc8dc5cb193beebb550ec9c2647f4948bf58ba7d"}, + {NID_secp224r1, NID_sha224, + "d0d5ae3e33600aa21c1606caec449eee678c87cb593594be1fbb048cc7cfd076e5cc7132" + "ebe290c4c014e7a517a0d5972759acfa1438d9d2e5d236d19ac92136f6252b7e5bea7588" + "dcba6522b6b18128f003ecab5cb4908832fb5a375cf820f8f0e9ee870653a73dc2282f2d" + "45622a2f0e85cba05c567baf1b9862b79a4b244e", + "380fb6154ad3d2e755a17df1f047f84712d4ec9e47d34d4054ea29a8", + "044772c27cca3348b1801ae87b01cb564c8cf9b81c23cc74468a907927de9d253935b096" + "17a1655c42d385bf48504e06fa386f5fa533a21dcb", + "14dbdffa326ba2f3d64f79ff966d9ee6c1aba0d51e9a8e59f5686dc1", + "ff6d52a09ca4c3b82da0440864d6717e1be0b50b6dcf5e1d74c0ff56", + "09490be77bc834c1efaa23410dcbf800e6fae40d62a737214c5a4418"}, + {NID_secp224r1, NID_sha224, + "79b7375ae7a4f2e4adad8765d14c1540cd9979db38076c157c1837c760ca6febbb18fd42" + "152335929b735e1a08041bd38d315cd4c6b7dd2729de8752f531f07fe4ddc4f1899debc0" + "311eef0019170b58e08895b439ddf09fbf0aeb1e2fd35c2ef7ae402308c3637733802601" + "dd218fb14c22f57870835b10818369d57d318405", + "6b98ec50d6b7f7ebc3a2183ff9388f75e924243827ddded8721186e2", + "041f249911b125348e6e0a473479105cc4b8cfb4fa32d897810fc69ffea17db03b9877d1" + "b6328329061ea67aec5a38a884362e9e5b7d7642dc", + "ab3a41fedc77d1f96f3103cc7dce215bf45054a755cf101735fef503", + "70ccc0824542e296d17a79320d422f1edcf9253840dafe4427033f40", + "e3823699c355b61ab1894be3371765fae2b720405a7ce5e790ca8c00"}, + {NID_secp224r1, NID_sha224, + "8c7de96e6880d5b6efc19646b9d3d56490775cb3faab342e64db2e388c4bd9e94c4e69a6" + "3ccdb7e007a19711e69c06f106b71c983a6d97c4589045666c6ab5ea7b5b6d096ddf6fd3" + "5b819f1506a3c37ddd40929504f9f079c8d83820fc8493f97b2298aebe48fdb4ff472b29" + "018fc2b1163a22bfbb1de413e8645e871291a9f6", + "8dda0ef4170bf73077d685e7709f6f747ced08eb4cde98ef06ab7bd7", + "047df67b960ee7a2cb62b22932457360ab1e046c1ec84b91ae65642003c764ca9fc1b0cc" + "2233fa57bdcfedaab0131fb7b5f557d6ca57f4afe0", + "9ef6ebd178a76402968bc8ec8b257174a04fb5e2d65c1ab34ab039b9", + "eef9e8428105704133e0f19636c89e570485e577786df2b09f99602a", + "8c01f0162891e4b9536243cb86a6e5c177323cca09777366caf2693c"}, + {NID_secp224r1, NID_sha224, + "c89766374c5a5ccef5823e7a9b54af835ac56afbbb517bd77bfecf3fea876bd0cc9ea486" + "e3d685cfe3fb05f25d9c67992cd7863c80a55c7a263249eb3996c4698ad7381131bf3700" + "b7b24d7ca281a100cf2b750e7f0f933e662a08d9f9e47d779fb03754bd20931262ff381a" + "2fe7d1dc94f4a0520de73fa72020494d3133ecf7", + "3dbe18cd88fa49febfcb60f0369a67b2379a466d906ac46a8b8d522b", + "04b10150fd797eb870d377f1dbfa197f7d0f0ad29965af573ec13cc42a17b63ccefbe27f" + "b2a1139e5757b1082aeaa564f478c23a8f631eed5c", + "385803b262ee2ee875838b3a645a745d2e199ae112ef73a25d68d15f", + "1d293b697f297af77872582eb7f543dc250ec79ad453300d264a3b70", + "517a91b89c4859fcc10834242e710c5f0fed90ac938aa5ccdb7c66de"}, + {NID_secp224r1, NID_sha224, + "30f0e3b502eec5646929d48fd46aa73991d82079c7bd50a38b38ec0bd84167c8cf5ba39b" + "ec26999e70208af9b445046cd9d20c82b7629ca1e51bdd00daddbc35f9eb036a15ac5789" + "8642d9db09479a38cc80a2e41e380c8a766b2d623de2de798e1eabc02234b89b85d60154" + "460c3bf12764f3fbf17fcccc82df516a2fbe4ecf", + "c906b667f38c5135ea96c95722c713dbd125d61156a546f49ddaadc6", + "043c9b4ef1748a1925578658d3af51995b989ad760790157b25fe0982655648f4ff4edfb" + "899e9a13bd8d20f5c24b35dc6a6a4e42ed5983b4a0", + "b04d78d8ac40fefadb99f389a06d93f6b5b72198c1be02dbff6195f0", + "4bdd3c84647bad93dcaffd1b54eb87fc61a5704b19d7e6d756d11ad0", + "fdd81e5dca54158514f44ba2330271eff4c618330328451e2d93b9fb"}, + {NID_secp224r1, NID_sha224, + "6bbb4bf987c8e5069e47c1a541b48b8a3e6d14bfd9ac6dfaa7503b64ab5e1a55f63e91cf" + "5c3e703ac27ad88756dd7fb2d73b909fc15302d0592b974d47e72e60ed339a40b34d39a4" + "9b69ea4a5d26ce86f3ca00a70f1cd416a6a5722e8f39d1f0e966981803d6f46dac34e4c7" + "640204cd0d9f1e53fc3acf30096cd00fa80b3ae9", + "3456745fbd51eac9b8095cd687b112f93d1b58352dbe02c66bb9b0cc", + "04f0acdfbc75a748a4a0ac55281754b5c4a364b7d61c5390b334daae1086587a6768f235" + "bf523fbfc6e062c7401ac2b0242cfe4e5fb34f4057", + "854b20c61bcdf7a89959dbf0985880bb14b628f01c65ef4f6446f1c1", + "a2601fbb9fe89f39814735febb349143baa934170ffb91c6448a7823", + "bf90f9305616020a0e34ef30803fc15fa97dffc0948452bbf6cb5f66"}, + {NID_secp224r1, NID_sha224, + "05b8f8e56214d4217323f2066f974f638f0b83689fc4ed1201848230efdc1fbca8f70359" + "cecc921050141d3b02c2f17aa306fc2ce5fc06e7d0f4be162fcd985a0b687b4ba09b681c" + "b52ffe890bf5bb4a104cb2e770c04df433013605eb8c72a09902f4246d6c22b8c191ef1b" + "0bece10d5ce2744fc7345307dd1b41b6eff0ca89", + "2c522af64baaca7b7a08044312f5e265ec6e09b2272f462cc705e4c3", + "045fad3c047074b5de1960247d0cc216b4e3fb7f3b9cd960575c8479fce4fc9c7f05ff0b" + "040eb171fdd2a1dfe2572c564c2003a08c3179a422", + "9267763383f8db55eed5b1ca8f4937dc2e0ca6175066dc3d4a4586af", + "422e2e9fe535eb62f11f5f8ce87cf2e9ec65e61c06737cf6a0019ae6", + "116cfcf0965b7bc63aecade71d189d7e98a0434b124f2afbe3ccf0a9"}, + {NID_secp224r1, NID_sha224, + "e5c979f0832242b143077bce6ef146a53bb4c53abfc033473c59f3c4095a68b7a504b609" + "f2ab163b5f88f374f0f3bff8762278b1f1c37323b9ed448e3de33e6443796a9ecaa466aa" + "75175375418186c352018a57ce874e44ae72401d5c0f401b5a51804724c10653fded9066" + "e8994d36a137fdeb9364601daeef09fd174dde4a", + "3eff7d07edda14e8beba397accfee060dbe2a41587a703bbe0a0b912", + "046dd84f4d66f362844e41a7913c40b4aad5fa9ba56bb44c2d2ed9efac15f65ebcdf2fd9" + "f8035385a330bdabec0f1cd9cc7bc31d2fadbe7cda", + "7bb48839d7717bab1fdde89bf4f7b4509d1c2c12510925e13655dead", + "127051d85326049115f307af2bc426f6c2d08f4774a0b496fb6982b1", + "6857e84418c1d1179333b4e5307e92abade0b74f7521ad78044bf597"}, + {NID_secp224r1, NID_sha256, + "2b49de971bb0f705a3fb5914eb7638d72884a6c3550667dbfdf301adf26bde02f387fd42" + "6a31be6c9ff8bfe8690c8113c88576427f1466508458349fc86036afcfb66448b947707e" + "791e71f558b2bf4e7e7507773aaf4e9af51eda95cbce0a0f752b216f8a54a045d47801ff" + "410ee411a1b66a516f278327df2462fb5619470e", + "888fc992893bdd8aa02c80768832605d020b81ae0b25474154ec89aa", + "044c741e4d20103670b7161ae72271082155838418084335338ac38fa4db7919151ac285" + "87b72bad7ab180ec8e95ab9e2c8d81d9b9d7e2e383", + "06f7a56007825433c4c61153df1a135eee2f38ec687b492ed40d9c90", + "0909c9b9cae8d2790e29db6afdb45c04f5b072c4c20410c7dc9b6772", + "298f4fcae1fe271da1e0345d11d07a1fca43f58af4c113b909eedea0"}, + {NID_secp224r1, NID_sha256, + "1fa7201d96ad4d190415f2656d1387fa886afc38e5cd18b8c60da367acf32c627d2c9ea1" + "9ef3f030e559fc2a21695cdbb65ddf6ba36a70af0d3fa292a32de31da6acc6108ab2be8b" + "d37843338f0c37c2d62648d3d49013edeb9e179dadf78bf885f95e712fcdfcc8a172e47c" + "09ab159f3a00ed7b930f628c3c48257e92fc7407", + "5b5a3e186e7d5b9b0fbdfc74a05e0a3d85dc4be4c87269190c839972", + "04897089f4ef05b943eeac06589f0e09ccc571a6add3eb1610a2fc830f62ba3f6b3e6f0f" + "062058b93e6f25b6041246c5be13584a41cae7e244", + "5b6f7eca2bcc5899fce41b8169d48cd57cf0c4a1b66a30a150072676", + "f12c9985d454ffbc899ebbbb6cf43e3debcac7f19029f8f2f35cce31", + "12fcb848adbd8b1b4c72b2b54a04d936e4a5f480ae2a3ea2e3c1baae"}, + {NID_secp224r1, NID_sha256, + "74715fe10748a5b98b138f390f7ca9629c584c5d6ad268fc455c8de2e800b73fa1ea9aae" + "e85de58baa2ce9ce68d822fc31842c6b153baef3a12bf6b4541f74af65430ae931a64c8b" + "4950ad1c76b31aea8c229b3623390e233c112586aa5907bbe419841f54f0a7d6d19c003b" + "91dc84bbb59b14ec477a1e9d194c137e21c75bbb", + "f60b3a4d4e31c7005a3d2d0f91cb096d016a8ddb5ab10ecb2a549170", + "0440a4ab1e6a9f84b4dedb81795e6a7124d1cfdfd7ec64c5d4b9e3266683aa32a3c2fc06" + "8e62626f2dafce5d7f050e826e5c145cd2d13d1b27", + "c31150420dfb38ba8347e29add189ec3e38c14b0c541497fb90bf395", + "bf6c6daa89b21211ea2c9f45192d91603378d46b1a5057962dafaf12", + "cb6b237950e0f0369323055cd1f643528c7a64616f75b11c4ddd63c7"}, + {NID_secp224r1, NID_sha256, + "d10131982dd1a1d839aba383cd72855bf41061c0cb04dfa1acad3181f240341d744ca600" + "2b52f25fb3c63f16d050c4a4ef2c0ebf5f16ce987558f4b9d4a5ad3c6b81b617de00e04b" + "a32282d8bf223bfedbb325b741dfdc8f56fa85c65d42f05f6a1330d8cc6664ad32050dd7" + "b9e3993f4d6c91e5e12cbd9e82196e009ad22560", + "c8fc474d3b1cba5981348de5aef0839e376f9f18e7588f1eed7c8c85", + "0466f49457ed15f67ed4042195856f052fe774077f61cebcb9efddc3653a6e3f3423eec7" + "308a69eb1b0416d67cc3b84d24f251d7cbdb45c079", + "5e5405ae9ab6164bb476c1bb021ec78480e0488736e4f8222920fbd9", + "7b7beaf9f696ca1a8051527478c4c075ab45aa4768937886dbf38618", + "93d4cf110a37c5a6f15c4e6024822118539e860dee2f60b8c3f462f6"}, + {NID_secp224r1, NID_sha256, + "ef9dbd90ded96ad627a0a987ab90537a3e7acc1fdfa991088e9d999fd726e3ce1e1bd89a" + "7df08d8c2bf51085254c89dc67bc21e8a1a93f33a38c18c0ce3880e958ac3e3dbe8aec49" + "f981821c4ac6812dd29fab3a9ebe7fbd799fb50f12021b48d1d9abca8842547b3b99befa" + "612cc8b4ca5f9412e0352e72ab1344a0ac2913db", + "04ef5d2a45341e2ace9af8a6ebd25f6cde45453f55b7a724eb6c21f6", + "048d642868e4d0f55ee62a2052e6b806b566d2ac79dbde7939fe72577379505a57cd5690" + "4d2523b3e1281e9021167657d38aeb7d42fc8ec849", + "ec60ea6f3d6b74d102e5574182566b7e79a69699a307fee70a2d0d22", + "2fd7fcbb7832c97ce325301dd338b279a9e28b8933284d49c6eabcf6", + "550b2f1efc312805a6ed8f252e692d8ee19eaa5bcd5d0cda63a1a3f0"}, + {NID_secp224r1, NID_sha256, + "4cc91f744ac858d3577e48813219aa3538dd813b186b42d1e6218376f07cc1cc448ddd6b" + "37240e98bf953f49cf54d65c12878b33c0bf6eb1c60254f0b6fa974f847e53abc56773ee" + "f6f29885dfc619e6a48fc15a667ca94001a0c945b6357a53221b0f4b266181456b0d2d25" + "e90708777f1a6f85971c00140c631c1991e0fd06", + "35d4bbe77d149812339e85c79483cb270bdac56bbf30b5ef3d1f4d39", + "047924b1d7f5920cce98e25094e40f2eb3eb80d70b17e14b3d36c3671c26c5af35f71e61" + "858582b7cc2b41790597c53ee514ffdf7a289d108c", + "751869c1d0e79eb30aae8fbfb6d97bfa332123fd6b6c72c9cd3c1796", + "26bb1b92b0f01e94eba5fa429271371db527ce857abba13bd1103f64", + "836aba9c63e1252c2b2d72a21e6a41b82241ebe32647e7f814652bcb"}, + {NID_secp224r1, NID_sha256, + "58f43cc1924de4bc5867664adbc9d26b4f096a43aca47c27c52851b006dc2a658919ef9c" + "e5b5ac48372703be15ac51631c2bd84b88f479f113b0569a9a09e230ec1e8e573474c607" + "5284d3e57d973829af35325d9e7dab4a5f9b065155bbcaff3642a82ef4c9b9e127d3575c" + "050721653da3b087d3fa394192897a5519527d19", + "2c291a393281b75264c9b8817af684fa86a1cdc900822f74039dc5d6", + "0418cb5826ad60e6696bf07655032a3749f6577ca36da3ccd6e66a137c194e14820fe02d" + "784fd1363ff7a30399518309765bd3f4412d646da2", + "e2a860416229dfd3f5a5cc92344ca015093a543943a0d8f73bf2b2fd", + "00e300c1ef4a8c4ca5da6413856f8981db49de29bdf03f32ffc3ceab", + "f250f18a51ba5f63e1584097841099fa6ae4e98ee458c061d1d5aed7"}, + {NID_secp224r1, NID_sha256, + "113a2806b052fde683ee09453098e402204155afb3776fd1cad3a9103421d327eab8f9ec" + "0dd050ffcc83f93b34ea707705fabeccfe43ab1a71c95298fd3ec769d99ead1066950eee" + "677d225816e0faad19cf69e1b35d16771689e2092cafe16d7c0dd7b0db73fffb8d0f3eae" + "d83004dd21e753530ec939c89ba25578fa5f785b", + "831ea25dbeda33d272a1382c5def0e83929170ab06a629eed6ee244b", + "04076518e393940d42dfd09819409d66966d8c9189c83d554a9cc8a08244d0ceaf4c0f50" + "e46bea4a52e30423ce3ada19edd363ac5694c65cb8", + "6be6dd9f6a083915ccba54626caf12d246d3aece0a7eda7d8d85599c", + "ff1460946e06fb6f5d35e8d2625ca70ffb9b45308e3fabf6ad8351b1", + "6029aa3990918e8cb8a388d53b0772e5cdfff49c3405fe0d3a95933a"}, + {NID_secp224r1, NID_sha256, + "64cbfc8f2e2149a31b3e8a80c4a552f6c62aaeb7990b6e0ee55500a9d17be04213406578" + "caf315951086dff5c2af3b5ce17d425d185101ef26f86396ba3a129a4f3f8e2dd595f59e" + "fb6c0f5c2dcc394569d7268695e9ac7daa84203f1f1895f1f9e4b514a5c9cd23baa63454" + "710144fe735ad9b8f42d8c43267aa434a26d7e5f", + "70f74c7324ef137318b610ead8ddc5b964e0eed3750b20612fc2e67b", + "04279649e2a2918e683520cde3fc98b0ae58a7100e8de35e7c9cc797b6aa4de6be34be61" + "f02880139787b9038f4554a8ef1c994b887c2974b5", + "8e984864f86f7a2a73f3edda17dbccd13fac8fa4b872814abf223b1b", + "3b18736fa11d04e27e2614cda03a63ec11a180f357b0b3192920d09c", + "2f0f3dbd570727b14fbb29155538e62c930dd51c4035275c1365dc60"}, + {NID_secp224r1, NID_sha256, + "a10a11c8e30fff118d371daf824f16c08200b83ea059436466a4611ccac93b2dea2de8c1" + "006f946196aef7fe9b0c251a391b0340f21797798278b412ff2b53842eec6450728e2bca" + "062f8337a2c204b9ea04ff660cd4d4db559f2f11c4d8ef199021339fcc82396f7a93926c" + "f5f247e37d8067fe50692de54f102bd5ab51925c", + "026be5789886d25039c11d7d58a11a6e1d52cb1d5657561f2165b8a8", + "043fa617c50b177da1a2bdb98b780ad21ad1195c4bd24465f6187de3c9e3fd8d8876dfd0" + "3a4a4e31a1acad3a08d983826d286c250c4e5620c1", + "0128b8e3f50731eb5fcc223517fc0cf6b96cd1d2807eb4524bc46f77", + "3a6b633f96f3d0b6d54f7fb29ac33709e4f0dd8fa0e51606ed9765ca", + "63e8c119dfa51784decd864f6911f2210a80f8f02d472d88df10d119"}, + {NID_secp224r1, NID_sha256, + "b3f720bf566ffa369259f4361959ae0641d2755ec264a4c4349981df2b02563275b2b9ad" + "b5aee47f7a456760a971991ffed6b17809bb9694138d1677fa916123795239353158fc6b" + "22d10f20d26f5d2dcd8c56c44373eea5b93067dba2d7c5318dac2e9e8714873cb1b37f58" + "c011fd14fa1e535554efe05f468bfc8e11cd8b99", + "e79c18d935c2839644762867aa793201f96a3cde080c5968412ce784", + "04b7ae1e992b1c7fde1141f40bd913358538ca0f07f62b729f13cea327811252d12120e0" + "4805fc171a439d382c43b68a21e1a0bdf5e4ec1da4", + "7abedab1d36f4f0959a03d968b27dd5708223b66e0fc48594d827361", + "d35047d74e1e7305bb8c1a94e8ae47cb1591c3437a3e185e00afe710", + "d9c425c9d5feb776ac8952e6c4eee0ecd68aef2f0e7bff2e49c9185e"}, + {NID_secp224r1, NID_sha256, + "0a398a46df7ccc48d1e7833f8bbc67100f1ef77a62dc78bbc115b2a662f9591fbaaa91ad" + "3d788e2fdd1b3164e45293d4f5686c151296901768028ac80ded4bf89c647ad35f0c7c4c" + "b318c0c757c1d83c44d850e5fd4677281b3f13b1ee54de79c8c042813f9d3312dcc6111a" + "68299cb7e829557d7f3d96e702f65aefc6499415", + "0d087f9d1f8ae29c9cf791490efc4a5789a9d52038c4b1d22494ad8c", + "04cd95cf8fb1cd21690f40d647f2353672a1076cc6c46bddaad2d0fc56934262f74d9ee0" + "f8a2754f64cb7415923d64bf00c94a39b52803f577", + "557d0e3995dc6377b3911546dd7aeaeec62a6d8f2af6a274382fc37f", + "56df0ea6afdcc232ceb41729eec00cf906b69b6e28423a36d3c92cc5", + "f4f70fd948c9a147f55317fdea7b8a84c33e721014552d5800d63edc"}, + {NID_secp224r1, NID_sha256, + "8c33616821a6038b448d8918668977fcf1ef5aa0cf7c341837b39bbcc9bca875a3757f4b" + "392630e9995b9bbe4eb66978b877586adaa02f99d2344dae082a7603351d8ffcfca081ab" + "403cd0acb90d078dd1d0789c2eb3185c62bff2d9f04cd38e509e3b83c12ed0a5c6808fc4" + "2f7ba5b06acdc496c8ad9be648ee6a4505f8560f", + "0830aebb6577d3a3be3ba54a4501c987b0e0bb593267b9bbadb66583", + "04b88652020e083ccc1c43dc83d1881884dd4c7e3b4e3460b344b1ea6422b69b517f86d7" + "c26dc37c0f8feb4bb07fe876149fbcc3334fd2805b", + "e4f4a3280574c704c2fde47ca81ec883d27f2c5a961a294db7cda9d2", + "b30b8a0079d9a134b5e1618c2ac63e3fbe0e95866b9dbc5f423f2707", + "3dc36746610271ef66e0aa52cc2ccadc5c9b08dc769e4dc4f6538c11"}, + {NID_secp224r1, NID_sha256, + "94d56535fd4edfe67a0daa6579f9d53bf6b7b8830ae2aeb62892ff59f18756ddf2811b44" + "9c7d20d65d54f8507de4e7c50eaa084830637812aa4b250a4d61ab67845be36e4a41cdc0" + "a70f8d6e3a63d4514f0dc197e6486015046a316153d5f3a3a4a0ae1ed7ea5fa55e12e73d" + "333333685c02e0eb636234ea7e6d4b76b4b76b5a", + "2acc9b97e625263e8e4cd164302c7d1e078bfcdd706111a13ccda5b2", + "04ce1a06f82df874dded37cca03b56c0648e4e8917ecd40ee73ee61588ceb6177b8f1ac7" + "c5c6e6e1f7737cc3026952ee392badd2cd7af32f9d", + "e401fa80f96480d437ed4f61a783888062ec33d530b188fd48016a6d", + "28674f447c4742e4087bbccfb522fbad4e18b56031d2ce8f532b078a", + "a5a7a13d15b423dd17771f73cea98d89dbffa846cc209b45c0e29b76"}, + {NID_secp224r1, NID_sha256, + "5d8ebdf9eb28b47bdafaa36bf0b66a9eaf99b6c83959da4f2b1151b4f4ecd28fb115a64c" + "0cb9491093a7e9b9c53ec423e4c72e7765bb9c818da0e8c428667e44474a71db4867130c" + "77c40bfd8544b2d7b9d6464d2b8e6a48482153256a32437c3a747231f51134dd14c70340" + "7e31146a6fcde23bededcf16950486e90ca69ac0", + "f4e873d4fb944fb52323406f933815092b7672221de4d1c45917f3fc", + "040dc2cdddb990341adb1de73f02d87fc3822485a659a15145f4251d5fcf78b2a83c7352" + "eda1af2c74e1804ea04b35f76c04e89d90281dc2bb", + "5d1476c682a64162fd2fdc82696fc8cab1469a86f707ea2757416e40", + "82982b38ed465138df4018d7cfb835edcb591cb57446ca49d163782b", + "8ef1d7b326cabee7f7ab95b7b98d3c27a069c0fd95a1599c0ccb422b"}, + {NID_secp224r1, NID_sha384, + "25e4416695f77551fdce276355528ccf1ddc2483821c5d22d751d50111ca2fadc6593b52" + "c74f4b5957494f1df25b0b2f86950d0d19229ec6506fee8581d2dd09d48418b146ff16bd" + "84a17ca0dc83b1888eb407376da6c8a88fa1e60b8c2a2471dfde4b3996ef673d5bde3d70" + "c434dc9f2488e9de16ae657d29e5e59ec922a1ec", + "62c572ee0d6f81b27e591d788bfc2f42b5105d2663078dfb58069ebd", + "04bd6ba605639b98fa8113a16a3bb004ddfaec901c98a931206165f4a5a3190b10ef39e8" + "8abd60b2293b4707512b45c6c5ed5794cc11454427", + "0f0bb1e428bcdebf4dc62a5278068efc0f8ce75f89e89b3630f102b2", + "aac0ea27e129f544abcc77f110e70bbdd5aa3e425dc39d5e8887025d", + "10e5dd06aee6b8419a04aa33d9d5678b0039c3acc3c4b61fe106bfdc"}, + {NID_secp224r1, NID_sha384, + "9164d633a553deccf3cbd2effccf1387fa3177cd28c95d94a7d1a3e159c5e5c027758cc2" + "6493301b2f4d141d8d07a5fe5fead987ce5f30abeafcb48c302afc6c2309f0e93d9b6818" + "cbb6972d222cb7b01302dfe202ae83b89f53150ae4a0e2b8fc0fd1091f19b4ab2e6ab213" + "ab322d04f2c5f57113bfad3c5675227237abf773", + "e2f86bf73ba9336fa023343060f038e9ad41e5fe868e9f80574619a3", + "04f5d5346f17898ea6bbdfff19c216a8757a5dc37b95315f5481628381ae61fd172ac8b7" + "a4f13870a932dece465834cbd4f50bbcfb802c824e", + "35724ac043e3b44b73b5a7919cf675190306d26aa67c27c28c873534", + "535147c265af138eec50c7fb570bcc8d2e6f675597b0fcc034e536bc", + "743812c188a1dddf9fb34b90738f8b2e58760d6cd20ccceb1bb9c516"}, + {NID_secp224r1, NID_sha384, + "019df05929321ecea7ee1de4f412aba1c8d3c24437db04b194a68a0a59dd871be10bd3a4" + "be6edf551350ea49fc7155a4d887e1221486291abe77a30633a4c4f7868fe2df24311cba" + "0c73804883954460e122387ed414111ff96ff1aebac8b6a6491d8a0d16e48a63bf3d027c" + "0f68ee4a4b234d73b412196706af8ea022b4dcef", + "b0a203438e2586d7575bc417a4a798e47abc22aa3955b58fc2789f17", + "04dc5d217862a1e5b00c95affa9d8b925a72b9beaeb7a86dc397e788d85f05f8e976ae1e" + "b1036eca6d683a82850795bf9127dee5f8b2859445", + "408e9c8b1f33136d6ddb93ff3a498bc09d4eee99bf69cdd5af0aa5a2", + "1b5a964c8b1fc634c6e2b82322499df1d7f0c12a4d2a77723c816ab8", + "cf54599a36ca064fae0aa936de5266f87704409d22a15d28c01b7f2a"}, + {NID_secp224r1, NID_sha384, + "5d09d2b1d3fa6e12c10d8b26dc9aabc8dc02bd06e63ff33f8bb91ede4b8694592a69e4ed" + "4cdf6820069e2b9c7803658949e877ffe23bf90bcf5ce1409c06c71d86885a94048b05ac" + "0ec9db193e489a5a2bfa367caf6aa8ecdb032be366174343f6875d2fe1785e8d77334f5f" + "469cec64998e08d3303e5c9a1923b34fdc105d65", + "efcfa50fad6fb2065f9a55f28c0c42fa24c809ccb19b6fc6d8ffb085", + "0461521a0cfb72be77ba33cb3b8e022743cd9130ff49e97093b71aa178ce0819aedaf6fc" + "e639d0e593f8ab0147eeb6058f5f2b448231584ea9", + "d1eea821f286eae6ebc1f61b08f9ad4323a3787e94af4c32cd31351b", + "b37caaa71103752ac559f9eb4943324409ebfa8b585f684dcaa5c411", + "7c28e7619e2944ab4b7be022878c8052ebdf2cae5dff4f976c49686a"}, + {NID_secp224r1, NID_sha384, + "50f6dfc81c6cf189e0a310f992907fe93356cee9dea9a41c7671a8daf3f4cfe0c459ce61" + "22c1e731dbf7593419d7114cb73b46956158a982c5d52c72f43f0f822046093c69aeff1f" + "7e4cd8af00ba655c5baa2e7b6a400b4be1f6fd51b3e4cfb35a69c80a28c5cafb771b6c2e" + "52e0aeef0e3fd045e8d40745f3f8b74fd969f816", + "61a17816937987764cdc064dc7b5b4f5b16db1023acdfe25902957dd", + "04a7e975c0a8f87c683bb8e31bc160843a7b69c945f4850bd60e1c08c08930a454dcc2aa" + "13bed7ea89368b2c9d689d816b2acf4e52585ee9c4", + "44b1fdec2629f9075f89c134ac28ff19bfddaa9db02a5d7f853582b4", + "b0f5635d8bc9c53a1d54a3ec63de59ed66e6b2358d4ab79755414326", + "67c68fe265c7e5aba4232deeafb88545a2aa266fb9f2c2bb3f3ae8d2"}, + {NID_secp224r1, NID_sha384, + "e90129ac6672c85bb7b6b18e9dc199c96c81fd65034b53c77818364d512366fb9cd1bc7c" + "82404c451e561fc1ed916c0948f6ac561b33a1ccca093f07684b8c2bafa9e966377bd208" + "556018a5bafb9edcecf70498c7140fe9c8cf3ad8b8c3b0aa489df797944465047465415b" + "b0e24333235fcdd59a98829a3941eaaf62033e82", + "79d5367314ec664aa0f6ca36f95549502a05bf8400bf532d669fab8d", + "043191f0237102dac159032ab2dde53cf56c9ec827b5caddfe9e83c02ab496b1bdcca443" + "4ac0d0d91ea38ff3bc33f9f54095bfe17796d5a9e2", + "da529c52f5cc1f435d873109cd991d6cd7e1631d9ff1dd9521dd5db6", + "8e0ac63903f4921755430572c3f08bc272790639bdf1009fe2a9a714", + "6278c841a2d0a270791fe54b36c49d426d67907aa4e4f59c8638ad97"}, + {NID_secp224r1, NID_sha384, + "3c9a483c9bee33b601549c592a82e95b4319b1e74b777877f0971bcb4273716b268e8f99" + "f876e42f942f4cf08284896bbc1ffbf094ac0956c3cedfc3580cffa8c74fc6db29a371f2" + "da2d05edb9185ece741fe0d3fabfe9d5b4d373755ebed13dc6840cfa3283b9ea46ec8b95" + "c434f253ae86998182e9cc0e95ee64f323fc74b0", + "1320eedad4745121793a7eaf732b0b4498f7cb456cac8cf45a1f66f0", + "049fdd99906ab77fd29e9021bde947d05a7a9eb153612269bfb0899bc9681b65b9ac8e4c" + "2899bb622dafb253b7bf5a6e38e5f6595f997c291a", + "66ed8d8934633f4125f593cf1b1d3745c4db1f15dde60cf46ca1c7f2", + "80199485a3a96447b39f7679cd47412a78675ba17dcbd10465dc5b48", + "a251fd9f136a3cb0dd0bc80659ae032e4a761ba7045da0034553fb8c"}, + {NID_secp224r1, NID_sha384, + "bfc073fdda63c5fccaa0ca8770c293e8154e7aec56128bbac4fdbd541d602216ebf7ca1e" + "02b514d6e396f20683802ba3f334310a9226576926e3bb19ceee27738d13377cbafeb09d" + "091043501702a07aa31d1f29d50ddc55adcf16ffd40578e734a4e6cb6535f26ad48e0c62" + "ad90e79720000e87d419e92dca3e11f943655b03", + "e18821329447d3f65ba7279e96bd4624ffa1b32b90f6e8331b1e876d", + "0446c9ed837232c47022df2f1a1578fbe65ac9f2e81c98a74cc22ea31a6fc5e9568ae62b" + "31412a0b0b367242e9fd7e518c83aa06a069e1d90d", + "a4c1eb402a2fb3af26e0e14a3d2fc8ed3bc1a8b2475270356a79fdd3", + "d478b68733d8ad44be46766e7b66af782fbdc7ff7ed0b191176da98a", + "5eae9160ccf71fd1d359d89cecce72ef8afaeee2365f6ba828aa450a"}, + {NID_secp224r1, NID_sha384, + "08079955d1a1f33728128c73673ec9f21a6ce138dcab5adc4dc068e6ab57314b9fbd8b01" + "3123b2fdafa9524fbdd0288777a233de8055cccfad83046ada6a19f01c47817496667bba" + "8fc8b9456fc0e044a562d931dab1adcb66af8b66325bdf28d83ded3e2937958ccd19da54" + "0d70ef2c189f55a506c9c0d63406394c5bd3823b", + "f73e030d5a696b358986d3efaca121cf71f775f8835a21e6135145d7", + "049ca2c6ea87ac8dd3a23a5b4010841a7c8af309038882ae44634bcf55b0a347dbd5ded3" + "b8702ac5a457e8b32bd4de06fd315095fa1b7d5fe1", + "e3cc786c1288ea567836c51d6d69dd0cab5c015987d936ccc3a4beb3", + "f1234da71761b7a0f49e661a419d2a739bdc4544bf87690e3d2f96db", + "096d16bf8020c3d3c233894ad8eb81206010e62c6e692a215e088fd4"}, + {NID_secp224r1, NID_sha384, + "23900b768f6cd42b8a8df0dcbc9cb5daec8de36b9d5c619adcc1ba2b649103d5af123746" + "cdf19c3fd0665a6fb9338156182aa06181e3c6e37ce56979612af2927440424f89cef43f" + "c754854b8a5c43370808cf5f9929cf47712512ce2f8a2a20d2e9f568c2848b27dfbe0914" + "2843c83905ffa5da3b15501761b03dbc2c5398b6", + "7a0789323f8741c157a1753ae165ecaf8e8b03a60561f8b80cee467c", + "04101271a9addd4bd1f19d00bf116c8524f52cefd598e85dc381597acb2f17d14f4d8ccb" + "28b216553718152ba7c104646d8eca986dd9ddea39", + "d169f04f05b60c625cda864d187938863964dab7bb3b9dfc04b05519", + "e4a51be686a764b709da23ab48b1985e153c6ee238d945e743907afc", + "118a8f1ffe3cd556ce6345bd1a398dd9cc3729b7fd6d8af9bfd82f40"}, + {NID_secp224r1, NID_sha384, + "1eb28c0bcdd18f73e347f957ece15b4cc83a771b0877e1feaac38e24028fb38ccea8b54e" + "e017dc7c3d5a1327bc6f40b294aa65d7dc487f278846cd101ee84202f14b38aa2c275046" + "aa2577f65ebaea41cd383e8def2fd0b4444dcf426fa75c4082cd7fa035cdb1e0d34a3c79" + "d42130f5b0273eae75bc701dda3aebe7358f41b5", + "78e795d0edb11fd9e28dc26b21e751aa89bea0d87932ef11c95c0e18", + "049edd544107977134bf6360d43ccabb3c94d627c03963c0a04b439627ece4c61d319a0e" + "41f3de7863e7c355bac94395aaa74cdb5f74a87a5b", + "36f7c0f76808b826a0a974a1fd6e155e00a73f1d34674a8f88be405a", + "3e319444438bc2cc92f323ea842cb402b3c3c2448c89869ef7998edb", + "3420cc38f058f41c31e71f4b1ad488f801111c73541de69fcee60695"}, + {NID_secp224r1, NID_sha384, + "efab51855407438fd5c250670366bca3c026ecec4a59394f00d8a4b51746d0c456436665" + "6d507e3e13e62fe7abeb976b8859895848dbaecf6582f1898ea06f00d4247702ed9721bd" + "375aa83ae4c67c2eaa6e080777ea5ecf2cf787d785389560ac91cf63a52f0373c3185e18" + "a3b8a466e21b61a239f1b77624eb1acacc76c4e1", + "bee02d8bc5bffb3fd3b4c9d6f686409f02662d10150d1e58d689966a", + "048848f964c847fe9dddc774618d4588c9cd56bbe588d7b1fb369c8bfaebbb699fbd0dc0" + "8859fe9132285fe20dff3b9d561c0640b6e0717607", + "59f1450d857b40e5552a4b8cd4ab0df2f01716635d172c1106840f21", + "a206d8398a16a991bc217f77f23c6f648384f254f255a8a876404444", + "eb1169cb5b1423dc0bfaffe565ae57f986e00de06405e3e7b605862e"}, + {NID_secp224r1, NID_sha384, + "31c29ca10279a417f0cc9b1382cf54dbfdfc89f2e6ef08c403c11f580cbf8674b141ed1a" + "417563282d99a55fc616d836421cde9424815c95e7fb7668bf3f137b29937f14882d74e0" + "34b732d78d91af7721aac4950734f5fa5d4b4d35534974f8cab6d2e6dca75ddb57e99148" + "c8a59df9fc5bcd723e546e8356f671cf2f65640a", + "dc0ddf6e501418bb8eafc5d7ccc143369e2aa441df8fc57d5f94a738", + "04063a5d632f4144376e14cfb03ad8ccf1489b613acd184d20dff66545e77727f057b043" + "d8a0f7458196b72e92d11f85b0891c6aaa9d915f58", + "ff0e5cae2671db7a1b90e22c63e7570bdd27352d45bac31e338debe0", + "5bc0b4998481ecbd3b6609184a84ca41d69b08c37138097f559259f8", + "0df8828eb1ca85e46405b94e1a2972c34c5e620a54e2f640f04aecc5"}, + {NID_secp224r1, NID_sha384, + "8db476f92e332519c1a0ece5d8deded6efbd2d8e8784eea0a6b4c3b4296c35f5f8de4317" + "e5c1627b91fb1973fee86c06e4992aa5a20cb7475c8808ff1da354d07a488dffa7838c6e" + "c1e3f99e3acba831f27bee8434eeda3eb36d0c6df3658883cd40068b1bed841310f6eb38" + "d4a3d07d85848770ff7933c054cd8b34662660b1", + "229d89b2fcf8441ffc95ebb2ac2ef156e25825782044b2b8bd6a3e01", + "04de616848d8044a44789ef1ba3a6dd66fe9257ddc57f7534e59a701be26cbf74a6d25e5" + "b34b96d30f327abd574cff7f7dbe6686573a7d6c5c", + "3b18ca6ec8e8e255ac88f64302745ca0b73ff94b2b2d48be95b4aaee", + "fa94fd8b827c06115c1eefd50afc02ce5926ee0e789667783c01c34b", + "edf766a66973cfc33e4159966c07321a7f6549c3c60e8586ef41402b"}, + {NID_secp224r1, NID_sha384, + "fcb272c828fe8fd3c6f8de9410c7b6e2b36717c1b0e5e359e9109bd7fc378978aa98182a" + "9d99961898ed88999b050d3b64d1457d7a899d6d273b9f4dde2aafa36d76329d62509043" + "c338f265fc4c7d938459b7fa3b230a9f6cb632b61489546bb4181a5ad7f0d7369b8caced" + "48eb374b075b2b325bc86add0f3b680cd9e80acd", + "97d747068147c0393a0bb5c159e2c9f1bd538f6204823294883abe28", + "043858a576eef2ce24d01766997fb81b3f3f78b6104cd188610be221d795ffc677ac7bfe" + "3e0bb4cffb17355a964c8356a807151b3cba5d1f4e", + "c1a2ec1ef16cfd5107c892790daefbed061be78bd8576696b60f64d5", + "18c908541843fcdac99b9ff6bb397f3f8094d16b42670216e4eaa2d7", + "c107a8a508ff57c5d4f78f86cc37e129c864d1c44ed5e73909613b74"}, + {NID_secp224r1, NID_sha512, + "7522492bdb916a597b8121f3e5c273b1d2800ef8c1db4f7dcbae633b60d7da5193ba53a6" + "3d7a377b351897c3b24903ae1cd1994211b259be3e6ae2cbc8970e4957fdf782c7d1bc7a" + "91c80c8ef65468d4ef35428f26e2940ae8b0bd9b8074236bf6c00d0ebe83f9ddb2ade0f8" + "35138d39f33b59f244e0037c171f1ba7045a96f5", + "ba5374541c13597bded6880849184a593d69d3d4f0b1cb4d0919cbd6", + "04ac635fe00e8b7a3c8ef5655bdfb7f83e8532e59c0cc0b6534d810ffa1d067aebeba66e" + "79b28ecfe59ac6fdf5e1970dc3a84499c9d90cd8e2", + "187ed1f45c466cbafcd4b9577fb222408c011225dcccfd20f08b8d89", + "f83d54945997584c923c09662c34cf9ad1e987da8bfd9be600e7a098", + "4ff2dba9dba992c98a095b1144a539310e1a570e20c88b7d0aa1955c"}, + {NID_secp224r1, NID_sha512, + "61097114ff855c3e34a62d9b853f8982d35f29cfa4a89893badbca7849e5fb437a1a38d6" + "451bf0ca5a0d528e352b8e4b57f2ea359a7fc8841d49dd3e570f9b016f14156b0bbc4be8" + "22e260bd147ec081454969e11cb0034b7450ef4deb7ed6edb977e2f4ed60121aa095fb0a" + "b40240dc329ecc917f5c64b4410612af065ee9dd", + "1e27187134d0a63542adf4665fba22f00cfc7b0a1e02effe913ceedc", + "04ecaea8ceea55c3bd418fd34a4ff2499e25e66a104eed846bc00c31d23933a356ab1f2d" + "abc303ff0a5d076131e77032e6f502336883bf78a7", + "34cb597deae9a3b1cada937abcd247161b19b2b336b20e2e42ae01f1", + "58177ba46fb291490b39368774accf72736412c1fb5ee0f27b9b1e02", + "58337d78b95a080bfcabb5809bee012501b4da84b8ef310a4628f11c"}, + {NID_secp224r1, NID_sha512, + "dd09ae6c982bb1440ca175a87766fefeacc49393ff797c446200662744f37a6e30c5d33b" + "a70cbd8f12277fd6cc0704c17478bbab2a3047469e9618e3c340a9c8caaff5ce7c8a4d90" + "ecae6a9b84b813419dec14460298e7521c9b7fdb7a2089328005bd51d57f92a1bcbeecd3" + "4aa40482b549e006bbf6c4ce66d34a22dda4e0e0", + "0905b40e6c29bfcbf55e04266f68f10ca8d3905001d68bb61a27749b", + "04d656b73b131aa4c6336a57849ce0d3682b6ab2113d013711e8c297626328335ffc2029" + "afbfe2a15cc5636978778c3f9dab84840b05f2e705", + "dc82840d147f893497a82f023d7d2cbf0a3a5b2ac6cc1b9b23e504be", + "583af080e0ec7c1ba5a491a84889b7b7b11ccfe18927c7c219b11757", + "b23700035349df25d839f0973bef78a7515287de6c83707907074fa6"}, + {NID_secp224r1, NID_sha512, + "37a73e2774d3b274db426c89b945696daa96035031f72cea01894b24508c7f81961ec254" + "d36ed6a0f448e11cf7950af769dc6cd2c47e52c6caf0ea92c270974f0214b4db436c36a6" + "0fb722060a6bb544462a82e1714f5906ec32886f7d59ebf289541c3a00ec1e004892ef2b" + "1286a0194f55d083c6ec92c64b8fd1452e1c68ba", + "afbaede5d75e4f241dd5b53220f3f5b9c1aa1d5d298e2d43236452dc", + "04fe83e59fc8ea8b939355d3258fe53a64d45f63031a0716b7cc416173f151d23060f1c8" + "56eb7f1f58be72a7228c3af89e43b56e9695b558c7", + "0fbbe7b40136c81a8fb894498d5502157a1cf5a89d0643de92cd38f6", + "24f3f457c7b72b7e759d5a8afbf330e31c5d8d2e36f92c0e79c5d87d", + "36fd1193def34f12a960740fd79fb38bf2b480726ccad540eb42cdf8"}, + {NID_secp224r1, NID_sha512, + "9dc2046ffdc6804544db964481abe5d2d276a2a9eeec4c7ad40215b1de23561d402db69b" + "d0f6eec2254711eea4487c64d9a6b62c3ebaf5ffa8db6e7e3a6e17154d126967a47a853a" + "6f8339bdca9be306a13c7f992ded7619b0da59909a49b1e0930360e05b47f18628a36d69" + "b2f87f2bfddd6a5d4a72f84dc76dbdd43f3a6a35", + "950b07b0c2b7539a21b5135bfede214733f2e009647d38d8b21d760c", + "04f43d13bbfcee3b724063b3910fea49fd591b81e86fdb813b1a492d0c6b4c8d6fa5dc66" + "1889e3cf5ec64997a78222837885f85d2fe9b684fb", + "83e110d0d1e700d2f36543028737d2a2f1474aa3b4b28998a39e4793", + "2685265bc878e85d10ab13293dec190881a57c4a467f8fc2170432ea", + "80a347bb49036522369339bd6485a967cdda818915d8eb947302fcf9"}, + {NID_secp224r1, NID_sha512, + "d9c6847fce688c5e7525a1098b545cb6c15dcd21a02761fc82fc664372a667390680135f" + "91c01a2fa5430c634b1a6d1cd6002d8aa021e7bf5956a7901c2f81bc25d502ba5f55a55f" + "30c0323dc68205cbefec0538e68654e7b327ac1743641896c3e740d8f66f400902b304ea" + "faa4e0d8cffae140536f0922444cc3216a675697", + "015bd9f5dfef393b431c3c7fced24385d861ccb563542574a5d2a9bc", + "04e868690641e2cda13b289a6c5d2fb175940396044d9cf27b4f2240af4c78c9abdf2b7f" + "c67ed4497001d7bcf1daca1739dc14a661f91d7c40", + "e2374350f47c08f3c1359d4edf87e61d1ba4e7dd1540d8d9062efa79", + "e12dc088d2bc032bb214c77d0e0fb749fc8e61ebe1ed72996f1084b6", + "0ab58aa31e0bba5fbc76855e6549f1036fba0a589aeab978ab01b8fb"}, + {NID_secp224r1, NID_sha512, + "69df8a01b66f04930efd2012ff2243874f256ca8758145d2a9e4ecc84d0dbdbd0dc494ae" + "06db0ccbe819918137c90957114558580d6623efbafdd342b38dad9f08708084d32f874f" + "ba04782ce26aaab78de2102ad171f8a8f2b30b5bd3d55fdac5fa3acd6f7def7e61c25339" + "38572b331ba6d1c02bd74bfdbf7337ade8f4a190", + "0a3c259df933247445acffb6d8265b601d597fb9997dc2a1eb4deef4", + "04e67f4385a9da54253cc371ee9bc6739ae6385a4b87669c7baf0c460d2bb00b6ddd7b67" + "d9ac5653ec04ca8529fbf16f815c04da3c2e58e82d", + "8bf5859665b6a23e6b05a311580f60187ba1c4ae89e44877fb48af66", + "653675fb993c3fa9e57b32e33029ec230b966e8077c72c1ec90ddefc", + "792723bf87e315147cd4303de7f1dfe95cd7658ebb95c38c1a196140"}, + {NID_secp224r1, NID_sha512, + "927524982b8d60777c1105c86fac05f634abf58c73f84fb95d81ba0b86e1e43592c4fcad" + "2e395a40fbe7005697d86088e2fb3bb7287eb3f917d4f2dc281f5cbe65d05b4f9623bca8" + "49b10a03beca6aa2056a12ebb91cf257ac448c5e9a78f8349a6a29b17c8978bef43a443c" + "bb8a149eb23f794844fc41693f2dbb97181444be", + "a1c8ef463f9e7e3dd63e677412f87cf9ea4ac9a6a2dae629da5b9916", + "04400e5cd4b315ceb309545cd3277acb70bdae2073fda6ad896ea14b27fbe1d2466cd2e1" + "16f38248bd5cabaa6cbe6c4a2694d998abd7b0c991", + "82f55a25d3ed6e47c22a6eed0fa52ed0818b87d6ea7950281dfefc09", + "16305a46a3f6f9e216ef8f6a6f5f0760d064a885657c864e1c1ea035", + "58fd97050bfbca6f87e64e1458c4ad80bae26e280356da344ad3b25d"}, + {NID_secp224r1, NID_sha512, + "5f9042283561e7f19a436d01c7ef5a950a6d77ede5629cd7e43c0a5d58e8c5673c37945a" + "453291d12938253c71dbe12c8b022ba7276eda6be034ef5ec1ec77dbd1e08f0d7b8e7725" + "b7ec671c075e008a20f77f4ab266f97079b0aa6337df59a33b881954084057b21f294dd1" + "4bcb0869a4a6f1f597955ec7bf9d19bb3537a66a", + "fa511dbf6fef7e5e9c73e4555eb75d435f7884322d9faf5d78cacc0b", + "04e8dccd706c31f895f2f261ab979cbab51b8ae28196bcc12a42046380ec246be8e71ea3" + "859cb717a59990fe22e4b76858ff49becd70739a01", + "a37d665fe4314aa4cd03eb8e6a1f366b43e11fdb419c96b48f787b62", + "05e4909bcc172ab4140be291aad4660e375032bce2d762b6269ba764", + "e347a1c9d3670690e1d8d1d4cd9579848f442199c10526488da5cebf"}, + {NID_secp224r1, NID_sha512, + "c2ae5573d3bf396523bfb703db8502fd0760cd1be528f6ddbfb95aad399e0b19f3bd9e0f" + "abdb05d49e3f893dffec5b627c9c2f7ad5f32e92e4e27a38cb5c28657657377fdfa1b66c" + "d7ac3d15c6d49df92d284db99f69744f37dc7cb4e7d52920fdb200a7942623a7057ba82e" + "467dcccaa5da416b48510d8364446a6a5e2a5aa8", + "a58bd53646400a646f0e4208320dc679a9664d1c6bfb27fdc8eac7ea", + "04e22e0dc4ecd96eb0071b72ba4b4988bf784f3fe73cb81bfb93d9ac4fb3e213e518bee1" + "367a4fb3703b9008bac9d95a1fc4aa61225fff9f3c", + "42c5b6f87d3bb1ed74f5ee8398d8f8c61e9e50ffa7a1da12d39893f9", + "5c0e5c6f057de1e99ef5d237a60d7a07fa9a42b120a82f573d9fb7b2", + "2fffc0bf550bd2f650fed085a84501cacfa6a1bb984df1f9237eaa59"}, + {NID_secp224r1, NID_sha512, + "03c1a1cd30a039d0dcb22fee2450a7fa79495a0d0f4f43d2de4d75bce003c0334a8860f5" + "c164dbd94888a9f751235a3e570d31070e3e1293a7be616af7176600585d36ac01360015" + "7d2569d491da4b8a3bf3630c26e0b9925412189f50b0ae6f04c86477932e2ecd8c354610" + "6ae1ebc684cc3adb27ed665eddece886adea4ce3", + "64bd4452b572cc95510ac2e572f41136299ff17f6e8448f4ffb571d0", + "0492521fa25c2e034d127e0921efdb167f0b2ff8b20504487ed87fa264e72c770e37375a" + "d7dc2c4e63e5701826f6606f6ffb9461ee61b4e872", + "eaf76ee4d7e00d13d8a6d03dffd07ad9a8bb6dc8176c9f93059b1b7f", + "cf5058e2a6cf5e61a138b013eb292f38a1b9f07239ae5941dbce8919", + "d14198621650d985d270bc997da6e78588fd0ef843b874c66a3de3c3"}, + {NID_secp224r1, NID_sha512, + "888f6d9bc7c86c0079fbfd42d8c08d6958f40f6e570fb0b1f03d2f8f8a63df4fcc87b379" + "a222cf835820a999d34996e08961f13b86b075e7fd1c303cd3baa44de42168561589012f" + "7e5300da4f8bdf470c07119a5d9f7ba7293568cd7c6a1b7fc1e41cda40bed7d46e5a28af" + "67ae2aabfefe67a86a1c601e6f5ee543e09bd7b6", + "7f3edb710df9d982f486233d0c176aa88f5a0ee81efa9b8145020294", + "04e7611e013e7b43ff5b8b57ad83333bffcc9e469ad23070b5791dc5947784da0a11dbe1" + "6208c6e0b6d5029e71fbec4dffc9fa046d3eeb71c9", + "94db7ef9a232593091eb9a74f289529c7e0d7fef21f80b3c8556b75e", + "a971f45bab10b1d16d7234ca8e4ec987da20d9e867f28aa063296e23", + "e38c538d65a7e1a28fd3ec53f015a7e5beb60e9d309f1e3ba4b2c3d2"}, + {NID_secp224r1, NID_sha512, + "48453340f1317769e6ee6e103153714365731163dc18f84e9f2fa4b120f9c5a9645ee2f9" + "b66c84c26d95912b422b009b64af96aa418b2427a4209f2e7513ba8e43ec8cf20b34e752" + "9b22eb1199545afe9a9f7d9bcb320aec9ee0162f91c0d1dd9674c9c284f25199c5e109f6" + "f84d7ed0d269cc6413edb81bc2c83e37d644d8b9", + "b569f8296ff1d9cc01fffd9919016e5730c1858bdb7b99527153751a", + "04242f34959516a4706172f7dede23110efa314bff22eb320ab88feeff45e3227710900a" + "8acfc9bcce728119d042f64ca40876c2b380ee46e0", + "ae61523866a8f43e6cdd42ba27a34ed06527e8a5842901a64c393f76", + "c2732a4e0815f9f785500e80147e9486994446beccf8a6a352b97585", + "6ecaece6487d7920e398f7f951ab7c7aba5832dabf03704106ad1244"}, + {NID_secp224r1, NID_sha512, + "4bdfd3b91d83108409ad765b256e0c9b9937ecf647f8e6f9fc807e2e72af8246178b3fe0" + "46b4ea10170450d71a4eec790ecb05f03d7077341de26c4db7eeae24d55c9a9093e837df" + "db38168fe8230cb9605825a1282fecd741989bfcdb34678fe077477927f66bd26d003e5d" + "da22043341a14dd31841ba483ad5ce2701e0f68e", + "41a4dd8eee39232b728516e2f21e66011e7426a6b25986c3ffa237e4", + "04c32988171caab178bf50dc7310bc7f604df5a9d19a8e602519c72d8af8985d112ad9de" + "05969e5364d943c1cc5cd198359f4c62b19da0e117", + "827d4999da81fa920c8492ccc1e2d5cdafed9754cf7382a859952071", + "89c61da7422ccd676baec07e2185c12e947a2374eede87847304be6c", + "2685379624717ea28422e8d001c090405a130b4ef9f1ac726c3ca502"}, + {NID_secp224r1, NID_sha512, + "e6cdee8558bc1eacc24e82f0624ce8d02cc8d925b4dd3dec3a72f4a4e0fb76076bfa3ef2" + "e2c33bdd7c27b322bdc09bbfee8fe46f75dbd7bbd2af09690b7137943efe21706e0a1b6d" + "3089540fc58d85ddb55ea836616db573e36c521be008893f40a0a7c349602cc178ea43be" + "59d31ec6449e7ff2c5379379f7d7645134df1bc3", + "67fa50569257c8cc89ac0325db4902003a62f30b917f53e4035a7e04", + "046773a0436a9c42635730413b19aa4166f08c69c0e5002953da42253b555138290b093b" + "f2fe79acda9131d920cd1e7ac43fb8775776cd713c", + "557cb45fd3a30b3bdbf08c56eabbd4478736024aaa52bf8448096453", + "8e92cf7a674aa5f7542dd95c695589a05747431692edd04804299b8f", + "af4908b41f8180b71a6ff10fd51f3d143147af6ddddf7534d3284ed9"}, + {NID_X9_62_prime256v1, NID_sha224, + "ff624d0ba02c7b6370c1622eec3fa2186ea681d1659e0a845448e777b75a8e77a77bb26e" + "5733179d58ef9bc8a4e8b6971aef2539f77ab0963a3415bbd6258339bd1bf55de65db520" + "c63f5b8eab3d55debd05e9494212170f5d65b3286b8b668705b1e2b2b5568610617abb51" + "d2dd0cb450ef59df4b907da90cfa7b268de8c4c2", + "708309a7449e156b0db70e5b52e606c7e094ed676ce8953bf6c14757c826f590", + "0429578c7ab6ce0d11493c95d5ea05d299d536801ca9cbd50e9924e43b733b83ab08c804" + "9879c6278b2273348474158515accaa38344106ef96803c5a05adc4800", + "58f741771620bdc428e91a32d86d230873e9140336fcfb1e122892ee1d501bdc", + "4a19274429e40522234b8785dc25fc524f179dcc95ff09b3c9770fc71f54ca0d", + "58982b79a65b7320f5b92d13bdaecdd1259e760f0f718ba933fd098f6f75d4b7"}, + {NID_X9_62_prime256v1, NID_sha224, + "9155e91fd9155eeed15afd83487ea1a3af04c5998b77c0fe8c43dcc479440a8a9a89efe8" + "83d9385cb9edfde10b43bce61fb63669935ad39419cf29ef3a936931733bfc2378e253e7" + "3b7ae9a3ec7a6a7932ab10f1e5b94d05160c053988f3bdc9167155d069337d42c9a70566" + "19efc031fa5ec7310d29bd28980b1e3559757578", + "90c5386100b137a75b0bb495002b28697a451add2f1f22cb65f735e8aaeace98", + "044a92396ff7930b1da9a873a479a28a9896af6cc3d39345b949b726dc3cd978b5475abb" + "18eaed948879b9c1453e3ef2755dd90f77519ec7b6a30297aad08e4931", + "36f853b5c54b1ec61588c9c6137eb56e7a708f09c57513093e4ecf6d739900e5", + "38b29558511061cfabdc8e5bb65ac2976d1aa2ba9a5deab8074097b2172bb9ad", + "0de2cde610502b6e03c0b23602eafbcd3faf886c81d111d156b7aa550f5bcd51"}, + {NID_X9_62_prime256v1, NID_sha224, + "b242a7586a1383368a33c88264889adfa3be45422fbef4a2df4e3c5325a9c7757017e0d5" + "cf4bbf4de7f99d189f81f1fd2f0dd645574d1eb0d547eead9375677819297c1abe62526a" + "e29fc54cdd11bfe17714f2fbd2d0d0e8d297ff98535980482dd5c1ebdc5a7274aabf1382" + "c9f2315ca61391e3943856e4c5e616c2f1f7be0d", + "a3a43cece9c1abeff81099fb344d01f7d8df66447b95a667ee368f924bccf870", + "045775174deb0248112e069cb86f1546ac7a78bc2127d0cb953bad46384dd6be5ba27020" + "952971cc0b0c3abd06e9ca3e141a4943f560564eba31e5288928bc7ce7", + "a0d9a7a245bd9b9aa86cecb89341c9de2e4f9b5d095a8150826c7ba7fb3e7df7", + "b02a440add66a9ff9c3c0e9acf1be678f6bd48a10cbdec2ad6d186ffe05f3f2a", + "a98bea42aec56a1fcecec00a1cc69b01fcbcf5de7ac1b2f2dcc09b6db064f92b"}, + {NID_X9_62_prime256v1, NID_sha224, + "b64005da76b24715880af94dba379acc25a047b06066c9bedc8f17b8c74e74f4fc720d9f" + "4ef0e2a659e0756931c080587ebdcd0f85e819aea6dacb327a9d96496da53ea21aef3b2e" + "793a9c0def5196acec99891f46ead78a85bc7ab644765781d3543da9fbf9fec916dca975" + "ef3b4271e50ecc68bf79b2d8935e2b25fc063358", + "7bbc8ff13f6f921f21e949b224c16b7176c5984d312b671cf6c2e4841135fc7f", + "04f888e913ec6f3cd8b31eb89e4f8aaa8887d30ae5348ed7118696949d5b8cc7c108895d" + "09620500d244e5035e262dea3f2867cd8967b226324d5c05220d8b410c", + "21c942f3b487accbf7fadc1c4b7a6c7567ce876c195022459fa1ebf6d04ffbaa", + "2e6cc883b8acc904ee9691ef4a9f1f5a9e5fbfde847cda3be833f949fb9c7182", + "2ac48f7a930912131a8b4e3ab495307817c465d638c2a9ea5ae9e2808806e20a"}, + {NID_X9_62_prime256v1, NID_sha224, + "fe6e1ea477640655eaa1f6e3352d4bce53eb3d95424df7f238e93d8531da8f36bc35fa6b" + "e4bf5a6a382e06e855139eb617a9cc9376b4dafacbd80876343b12628619d7cbe1bff675" + "7e3706111ed53898c0219823adbc044eaf8c6ad449df8f6aab9d444dadb5c3380eec0d91" + "694df5fc4b30280d4b87d27e67ae58a1df828963", + "daf5ec7a4eebc20d9485796c355b4a65ad254fe19b998d0507e91ea24135f45d", + "04137c465085c1b1b8cccbe9fccbe9d0295a331aaf332f3ed2e285d16e574b943bd3e8d5" + "a24cd218c19760b0e85b35a8569945aa857cbf0fd6a3ce127581b217b6", + "343251dffa56e6a612fec7b078f9c3819eab402a72686b894a47a08fd97e6c23", + "775e25a296bd259510ae9375f548997bec8a744900022945281dc8c4d94f2b5b", + "d87592ceab773ae103daebbb56a04144aaccb1e14efc1024dc36c0e382df1f70"}, + {NID_X9_62_prime256v1, NID_sha224, + "907c0c00dc080a688548957b5b8b1f33ba378de1368023dcad43242411f554eb7d392d3e" + "5c1668fad3944ff9634105343d83b8c85d2a988da5f5dc60ee0518327caed6dd5cf4e9bc" + "6222deb46d00abde745f9b71d6e7aee6c7fdfc9ed053f2c0b611d4c6863088bd012ea981" + "0ee94f8e58905970ebd07353f1f409a371ed03e3", + "8729a8396f262dabd991aa404cc1753581cea405f0d19222a0b3f210de8ee3c5", + "0482b1f1a7af9b48ca8452613d7032beb0e4f28fe710306aeccc959e4d03662a355e39f3" + "3574097b8d32b471a591972496f5d44db344c037d13f06fafc75f016fd", + "6de9e21f0b2cacc1762b3558fd44d3cf156b85dbef430dd28d59713bfb9cfa0b", + "a754b42720e71925d51fcef76151405a3696cc8f9fc9ca7b46d0b16edd7fb699", + "603924780439cc16ac4cf97c2c3065bc95353aa9179d0ab5f0322ca82f851cf2"}, + {NID_X9_62_prime256v1, NID_sha224, + "771c4d7bce05610a3e71b272096b57f0d1efcce33a1cb4f714d6ebc0865b2773ec5eedc2" + "5fae81dee1d256474dbd9676623614c150916e6ed92ce4430b26037d28fa5252ef6b10c0" + "9dc2f7ee5a36a1ea7897b69f389d9f5075e271d92f4eb97b148f3abcb1e5be0b4feb8278" + "613d18abf6da60bfe448238aa04d7f11b71f44c5", + "f1b62413935fc589ad2280f6892599ad994dae8ca3655ed4f7318cc89b61aa96", + "04e0bbfe4016eea93e6f509518cbffc25d492de6ebbf80465a461caa5bdc0181593231ee" + "7a119d84fa56e3034d50fea85929aec2eb437abc7646821e1bf805fb50", + "7a33eeb9f469afd55de2fb786847a1d3e7797929305c0f90d953b6f143bb8fc6", + "96d1c9399948254ea381631fc0f43ea808110506db8aacf081df5535ac5eb8ad", + "73bf3691260dddd9997c97313f2a70783eacf8d15bdfb34bb13025cdfae72f70"}, + {NID_X9_62_prime256v1, NID_sha224, + "a3b2825235718fc679b942e8ac38fb4f54415a213c65875b5453d18ca012320ddfbbc58b" + "991eaebadfc2d1a28d4f0cd82652b12e4d5bfda89eda3be12ac52188e38e8cce32a264a3" + "00c0e463631f525ae501348594f980392c76b4a12ddc88e5ca086cb8685d03895919a862" + "7725a3e00c4728e2b7c6f6a14fc342b2937fc3dd", + "4caaa26f93f009682bbba6db6b265aec17b7ec1542bda458e8550b9e68eed18d", + "04e3c58c1c254d11c7e781ad133e4c36dd1b5de362120d336a58e7b68813f3fbee59760d" + "b66120afe0d962c81a8e5586588fd19de2f40556371611c73af22c8a68", + "c0d37142dc8b0d614fad20c4d35af6eb819e259e513ddeac1e1c273e7e1dc1bb", + "25dd8e4086c62a40d2a310e2f90f6af5cb7e677b4dfdb4dc4e99e23ea2f0e6dc", + "90ad62c179b0c9d61f521dde1cd762bfd224b5525c39c3706f2549313ddb4f39"}, + {NID_X9_62_prime256v1, NID_sha224, + "3e6e2a9bffd729ee5d4807849cd4250021d8184cda723df6ab0e5c939d39237c8e58af9d" + "869fe62d3c97b3298a99e891e5e11aa68b11a087573a40a3e83c7965e7910d72f81cad0f" + "42accc5c25a4fd3cdd8cee63757bbbfbdae98be2bc867d3bcb1333c4632cb0a55dffeb77" + "d8b119c466cd889ec468454fabe6fbee7102deaf", + "7af4b150bb7167cb68037f280d0823ce5320c01a92b1b56ee1b88547481b1de9", + "04cb3634ec4f0cbb99986be788f889e586026d5a851e80d15382f1bdb1bda2bc7551e4e4" + "3bc16fb114896b18198a1aebe6054ba20ed0c0317c1b8776158c0e6bfb", + "98edd59fafbcaee5f64e84eb5ed59fff45d14aabada47cee2fa674377173627a", + "261a1cdb0fd93c0fb06ea6068b6b03c330a12f621a7eba76682a1d152c0e8d08", + "7ca049bad54feee101d6db807635ffb8bdb05a38e445c8c3d65d60df143514c5"}, + {NID_X9_62_prime256v1, NID_sha224, + "52e5c308e70329a17c71eaedb66bbee303c8ec48a6f1a2efb235d308563cd58553d434e1" + "2f353227a9ea28608ec9c820ed83c95124e7a886f7e832a2de1032e78dc059208f9ec354" + "170b2b1cab992b52ac01e6c0e4e1b0112686962edc53ab226dafcc9fc7baed2cd9307160" + "e8572edb125935db49289b178f35a8ad23f4f801", + "52ad53e849e30bec0e6345c3e9d98ebc808b19496c1ef16d72ab4a00bbb8c634", + "047cca1334bfc2a78728c50b370399be3f9690d445aa03c701da643eeb0b0f7fa83f7522" + "238668e615405e49b2f63faee58286000a30cdb4b564ac0df99bc8950f", + "8650c30712fc253610884fbba4a332a4574d4b7822f7776cab1df8f5fa05442a", + "a18194c7ac5829afc408d78dde19542837e7be82706c3941b2d9c5e036bb51e0", + "188ead1cdf7c1d21114ff56d0421ffd501ab978ef58337462c0fa736d86299af"}, + {NID_X9_62_prime256v1, NID_sha224, + "d3e9e82051d4c84d699453c9ff44c7c09f6523bb92232bcf30bf3c380224249de2964e87" + "1d56a364d6955c81ef91d06482a6c7c61bc70f66ef22fad128d15416e7174312619134f9" + "68f1009f92cbf99248932efb533ff113fb6d949e21d6b80dfbbe69010c8d1ccb0f3808ea" + "309bb0bac1a222168c95b088847e613749b19d04", + "80754962a864be1803bc441fa331e126005bfc6d8b09ed38b7e69d9a030a5d27", + "040aaeed6dd1ae020d6eefc98ec4241ac93cbd3c8afed05bb28007e7da5727571b2dda1d" + "5b7872eb94dfffb456115037ff8d3e72f8ebdd8fcfc42391f96809be69", + "738e050aeefe54ecba5be5f93a97bbcb7557d701f9da2d7e88483454b97b55a8", + "8cb9f41dfdcb9604e0725ac9b78fc0db916dc071186ee982f6dba3da36f02efa", + "5c87fe868fd4282fb114f5d70e9590a10a5d35cedf3ff6402ba5c4344738a32e"}, + {NID_X9_62_prime256v1, NID_sha224, + "968951c2c1918436fe19fa2fe2152656a08f9a6b8aa6201920f1b424da98cee71928897f" + "f087620cc5c551320b1e75a1e98d7d98a5bd5361c9393759614a6087cc0f7fb01fcb1737" + "83eb4c4c23961a8231ac4a07d72e683b0c1bd4c51ef1b031df875e7b8d5a6e0628949f5b" + "8f157f43dccaea3b2a4fc11181e6b451e06ceb37", + "cfa8c8bd810eb0d73585f36280ecdd296ee098511be8ad5eac68984eca8eb19d", + "04c227a2af15dfa8734e11c0c50f77e24e77ed58dd8cccf1b0e9fa06bee1c64766b68659" + "2ce3745eb300d2704083db55e1fa8274e4cb7e256889ccc0bb34a60570", + "2d6b449bb38b543d6b6d34ff8cb053f5e5b337f949b069b21f421995ebb28823", + "5e89d3c9b103c2fa3cb8cebeec23640acda0257d63ffbe2d509bfc49fab1dca6", + "d70c5b1eeb29e016af9925798d24e166c23d58fedd2f1a3bbdb1ef78cdbfb63a"}, + {NID_X9_62_prime256v1, NID_sha224, + "78048628932e1c1cdd1e70932bd7b76f704ba08d7e7d825d3de763bf1a062315f4af16ec" + "cefe0b6ebadccaf403d013f50833ce2c54e24eea8345e25f93b69bb048988d102240225c" + "eacf5003e2abdcc90299f4bf2c101585d36ecdd7a155953c674789d070480d1ef47cc785" + "8e97a6d87c41c6922a00ea12539f251826e141b4", + "b2021e2665ce543b7feadd0cd5a4bd57ffcc5b32deb860b4d736d9880855da3c", + "04722e0abad4504b7832a148746153777694714eca220eced2b2156ca64cfed3ddf0351b" + "357b3081e859c46cad5328c5afa10546e92bc6c3fd541796ac30397a75", + "b15bbce4b382145de7ecd670d947e77555ef7cd1693bd53c694e2b52b04d10e1", + "9d086dcd22da165a43091991bede9c1c14515e656633cb759ec2c17f51c35253", + "23595ad1cb714559faaecaf946beb9a71e584616030ceaed8a8470f4bf62768f"}, + {NID_X9_62_prime256v1, NID_sha224, + "9b0800c443e693067591737fdbcf0966fdfa50872d41d0c189d87cbc34c2771ee5e1255f" + "d604f09fcf167fda16437c245d299147299c69046895d22482db29aba37ff57f756716cd" + "3d6223077f747c4caffbecc0a7c9dfaaafd9a9817470ded8777e6355838ac54d11b2f0fc" + "3f43668ff949cc31de0c2d15af5ef17884e4d66a", + "0c9bce6a568ca239395fc3552755575cbcdddb1d89f6f5ab354517a057b17b48", + "044814d454495df7103e2da383aba55f7842fd84f1750ee5801ad32c10d0be6c7da0bd03" + "9d5097c8f0770477f6b18d247876e88e528bf0453eab515ffab8a9eda3", + "d414f1525cdcc41eba1652de017c034ebcc7946cb2efe4713d09f67c85b83153", + "84db02c678f9a21208cec8564d145a35ba8c6f26b4eb7e19522e439720dae44c", + "537c564da0d2dc5ac4376c5f0ca3b628d01d48df47a83d842c927e4d6db1e16d"}, + {NID_X9_62_prime256v1, NID_sha224, + "fc3b8291c172dae635a6859f525beaf01cf683765d7c86f1a4d768df7cae055f639eccc0" + "8d7a0272394d949f82d5e12d69c08e2483e11a1d28a4c61f18193106e12e5de4a9d0b4bf" + "341e2acd6b715dc83ae5ff63328f8346f35521ca378b311299947f63ec593a5e32e6bd11" + "ec4edb0e75302a9f54d21226d23314729e061016", + "1daa385ec7c7f8a09adfcaea42801a4de4c889fb5c6eb4e92bc611d596d68e3f", + "04f04e9f2831d9697ae146c7d4552e5f91085cc46778400b75b76f00205252941dbd2671" + "48174cd0c2b019cd0a5256e2f3f889d1e597160372b5a1339c8d787f10", + "7707db348ee6f60365b43a2a994e9b40ed56fe03c2c31c7e781bc4ffadcba760", + "5d95c385eeba0f15db0b80ae151912409128c9c80e554246067b8f6a36d85ea5", + "db5d8a1e345f883e4fcb3871276f170b783c1a1e9da6b6615913368a8526f1c3"}, + {NID_X9_62_prime256v1, NID_sha256, + "5905238877c77421f73e43ee3da6f2d9e2ccad5fc942dcec0cbd25482935faaf416983fe" + "165b1a045ee2bcd2e6dca3bdf46c4310a7461f9a37960ca672d3feb5473e253605fb1ddf" + "d28065b53cb5858a8ad28175bf9bd386a5e471ea7a65c17cc934a9d791e91491eb3754d0" + "3799790fe2d308d16146d5c9b0d0debd97d79ce8", + "519b423d715f8b581f4fa8ee59f4771a5b44c8130b4e3eacca54a56dda72b464", + "041ccbe91c075fc7f4f033bfa248db8fccd3565de94bbfb12f3c59ff46c271bf83ce4014" + "c68811f9a21a1fdb2c0e6113e06db7ca93b7404e78dc7ccd5ca89a4ca9", + "94a1bbb14b906a61a280f245f9e93c7f3b4a6247824f5d33b9670787642a68de", + "f3ac8061b514795b8843e3d6629527ed2afd6b1f6a555a7acabb5e6f79c8c2ac", + "8bf77819ca05a6b2786c76262bf7371cef97b218e96f175a3ccdda2acc058903"}, + {NID_X9_62_prime256v1, NID_sha256, + "c35e2f092553c55772926bdbe87c9796827d17024dbb9233a545366e2e5987dd344deb72" + "df987144b8c6c43bc41b654b94cc856e16b96d7a821c8ec039b503e3d86728c494a967d8" + "3011a0e090b5d54cd47f4e366c0912bc808fbb2ea96efac88fb3ebec9342738e225f7c7c" + "2b011ce375b56621a20642b4d36e060db4524af1", + "0f56db78ca460b055c500064824bed999a25aaf48ebb519ac201537b85479813", + "04e266ddfdc12668db30d4ca3e8f7749432c416044f2d2b8c10bf3d4012aeffa8abfa864" + "04a2e9ffe67d47c587ef7a97a7f456b863b4d02cfc6928973ab5b1cb39", + "6d3e71882c3b83b156bb14e0ab184aa9fb728068d3ae9fac421187ae0b2f34c6", + "976d3a4e9d23326dc0baa9fa560b7c4e53f42864f508483a6473b6a11079b2db", + "1b766e9ceb71ba6c01dcd46e0af462cd4cfa652ae5017d4555b8eeefe36e1932"}, + {NID_X9_62_prime256v1, NID_sha256, + "3c054e333a94259c36af09ab5b4ff9beb3492f8d5b4282d16801daccb29f70fe61a0b37f" + "fef5c04cd1b70e85b1f549a1c4dc672985e50f43ea037efa9964f096b5f62f7ffdf8d6bf" + "b2cc859558f5a393cb949dbd48f269343b5263dcdb9c556eca074f2e98e6d94c2c29a677" + "afaf806edf79b15a3fcd46e7067b7669f83188ee", + "e283871239837e13b95f789e6e1af63bf61c918c992e62bca040d64cad1fc2ef", + "0474ccd8a62fba0e667c50929a53f78c21b8ff0c3c737b0b40b1750b2302b0bde829074e" + "21f3a0ef88b9efdf10d06aa4c295cc1671f758ca0e4cd108803d0f2614", + "ad5e887eb2b380b8d8280ad6e5ff8a60f4d26243e0124c2f31a297b5d0835de2", + "35fb60f5ca0f3ca08542fb3cc641c8263a2cab7a90ee6a5e1583fac2bb6f6bd1", + "ee59d81bc9db1055cc0ed97b159d8784af04e98511d0a9a407b99bb292572e96"}, + {NID_X9_62_prime256v1, NID_sha256, + "0989122410d522af64ceb07da2c865219046b4c3d9d99b01278c07ff63eaf1039cb787ae" + "9e2dd46436cc0415f280c562bebb83a23e639e476a02ec8cff7ea06cd12c86dcc3adefbf" + "1a9e9a9b6646c7599ec631b0da9a60debeb9b3e19324977f3b4f36892c8a38671c8e1cc8" + "e50fcd50f9e51deaf98272f9266fc702e4e57c30", + "a3d2d3b7596f6592ce98b4bfe10d41837f10027a90d7bb75349490018cf72d07", + "04322f80371bf6e044bc49391d97c1714ab87f990b949bc178cb7c43b7c22d89e13c15d5" + "4a5cc6b9f09de8457e873eb3deb1fceb54b0b295da6050294fae7fd999", + "24fc90e1da13f17ef9fe84cc96b9471ed1aaac17e3a4bae33a115df4e5834f18", + "d7c562370af617b581c84a2468cc8bd50bb1cbf322de41b7887ce07c0e5884ca", + "b46d9f2d8c4bf83546ff178f1d78937c008d64e8ecc5cbb825cb21d94d670d89"}, + {NID_X9_62_prime256v1, NID_sha256, + "dc66e39f9bbfd9865318531ffe9207f934fa615a5b285708a5e9c46b7775150e818d7f24" + "d2a123df3672fff2094e3fd3df6fbe259e3989dd5edfcccbe7d45e26a775a5c4329a084f" + "057c42c13f3248e3fd6f0c76678f890f513c32292dd306eaa84a59abe34b16cb5e38d0e8" + "85525d10336ca443e1682aa04a7af832b0eee4e7", + "53a0e8a8fe93db01e7ae94e1a9882a102ebd079b3a535827d583626c272d280d", + "041bcec4570e1ec2436596b8ded58f60c3b1ebc6a403bc5543040ba829630572448af62a" + "4c683f096b28558320737bf83b9959a46ad2521004ef74cf85e67494e1", + "5d833e8d24cc7a402d7ee7ec852a3587cddeb48358cea71b0bedb8fabe84e0c4", + "18caaf7b663507a8bcd992b836dec9dc5703c080af5e51dfa3a9a7c387182604", + "77c68928ac3b88d985fb43fb615fb7ff45c18ba5c81af796c613dfa98352d29c"}, + {NID_X9_62_prime256v1, NID_sha256, + "600974e7d8c5508e2c1aab0783ad0d7c4494ab2b4da265c2fe496421c4df238b0be25f25" + "659157c8a225fb03953607f7df996acfd402f147e37aee2f1693e3bf1c35eab3ae360a2b" + "d91d04622ea47f83d863d2dfecb618e8b8bdc39e17d15d672eee03bb4ce2cc5cf6b217e5" + "faf3f336fdd87d972d3a8b8a593ba85955cc9d71", + "4af107e8e2194c830ffb712a65511bc9186a133007855b49ab4b3833aefc4a1d", + "04a32e50be3dae2c8ba3f5e4bdae14cf7645420d425ead94036c22dd6c4fc59e00d623bf" + "641160c289d6742c6257ae6ba574446dd1d0e74db3aaa80900b78d4ae9", + "e18f96f84dfa2fd3cdfaec9159d4c338cd54ad314134f0b31e20591fc238d0ab", + "8524c5024e2d9a73bde8c72d9129f57873bbad0ed05215a372a84fdbc78f2e68", + "d18c2caf3b1072f87064ec5e8953f51301cada03469c640244760328eb5a05cb"}, + {NID_X9_62_prime256v1, NID_sha256, + "dfa6cb9b39adda6c74cc8b2a8b53a12c499ab9dee01b4123642b4f11af336a91a5c9ce05" + "20eb2395a6190ecbf6169c4cba81941de8e76c9c908eb843b98ce95e0da29c5d43880402" + "64e05e07030a577cc5d176387154eabae2af52a83e85c61c7c61da930c9b19e45d7e34c8" + "516dc3c238fddd6e450a77455d534c48a152010b", + "78dfaa09f1076850b3e206e477494cddcfb822aaa0128475053592c48ebaf4ab", + "048bcfe2a721ca6d753968f564ec4315be4857e28bef1908f61a366b1f03c974790f6757" + "6a30b8e20d4232d8530b52fb4c89cbc589ede291e499ddd15fe870ab96", + "295544dbb2da3da170741c9b2c6551d40af7ed4e891445f11a02b66a5c258a77", + "c5a186d72df452015480f7f338970bfe825087f05c0088d95305f87aacc9b254", + "84a58f9e9d9e735344b316b1aa1ab5185665b85147dc82d92e969d7bee31ca30"}, + {NID_X9_62_prime256v1, NID_sha256, + "51d2547cbff92431174aa7fc7302139519d98071c755ff1c92e4694b58587ea560f72f32" + "fc6dd4dee7d22bb7387381d0256e2862d0644cdf2c277c5d740fa089830eb52bf79d1e75" + "b8596ecf0ea58a0b9df61e0c9754bfcd62efab6ea1bd216bf181c5593da79f10135a9bc6" + "e164f1854bc8859734341aad237ba29a81a3fc8b", + "80e692e3eb9fcd8c7d44e7de9f7a5952686407f90025a1d87e52c7096a62618a", + "04a88bc8430279c8c0400a77d751f26c0abc93e5de4ad9a4166357952fe041e7672d365a" + "1eef25ead579cc9a069b6abc1b16b81c35f18785ce26a10ba6d1381185", + "7c80fd66d62cc076cef2d030c17c0a69c99611549cb32c4ff662475adbe84b22", + "9d0c6afb6df3bced455b459cc21387e14929392664bb8741a3693a1795ca6902", + "d7f9ddd191f1f412869429209ee3814c75c72fa46a9cccf804a2f5cc0b7e739f"}, + {NID_X9_62_prime256v1, NID_sha256, + "558c2ac13026402bad4a0a83ebc9468e50f7ffab06d6f981e5db1d082098065bcff6f21a" + "7a74558b1e8612914b8b5a0aa28ed5b574c36ac4ea5868432a62bb8ef0695d27c1e3ceaf" + "75c7b251c65ddb268696f07c16d2767973d85beb443f211e6445e7fe5d46f0dce70d58a4" + "cd9fe70688c035688ea8c6baec65a5fc7e2c93e8", + "5e666c0db0214c3b627a8e48541cc84a8b6fd15f300da4dff5d18aec6c55b881", + "041bc487570f040dc94196c9befe8ab2b6de77208b1f38bdaae28f9645c4d2bc3aec8160" + "2abd8345e71867c8210313737865b8aa186851e1b48eaca140320f5d8f", + "2e7625a48874d86c9e467f890aaa7cd6ebdf71c0102bfdcfa24565d6af3fdce9", + "2f9e2b4e9f747c657f705bffd124ee178bbc5391c86d056717b140c153570fd9", + "f5413bfd85949da8d83de83ab0d19b2986613e224d1901d76919de23ccd03199"}, + {NID_X9_62_prime256v1, NID_sha256, + "4d55c99ef6bd54621662c3d110c3cb627c03d6311393b264ab97b90a4b15214a5593ba25" + "10a53d63fb34be251facb697c973e11b665cb7920f1684b0031b4dd370cb927ca7168b0b" + "f8ad285e05e9e31e34bc24024739fdc10b78586f29eff94412034e3b606ed850ec2c1900" + "e8e68151fc4aee5adebb066eb6da4eaa5681378e", + "f73f455271c877c4d5334627e37c278f68d143014b0a05aa62f308b2101c5308", + "04b8188bd68701fc396dab53125d4d28ea33a91daf6d21485f4770f6ea8c565dde423f05" + "8810f277f8fe076f6db56e9285a1bf2c2a1dae145095edd9c04970bc4a", + "62f8665fd6e26b3fa069e85281777a9b1f0dfd2c0b9f54a086d0c109ff9fd615", + "1cc628533d0004b2b20e7f4baad0b8bb5e0673db159bbccf92491aef61fc9620", + "880e0bbf82a8cf818ed46ba03cf0fc6c898e36fca36cc7fdb1d2db7503634430"}, + {NID_X9_62_prime256v1, NID_sha256, + "f8248ad47d97c18c984f1f5c10950dc1404713c56b6ea397e01e6dd925e903b4fadfe2c9" + "e877169e71ce3c7fe5ce70ee4255d9cdc26f6943bf48687874de64f6cf30a012512e787b" + "88059bbf561162bdcc23a3742c835ac144cc14167b1bd6727e940540a9c99f3cbb41fb1d" + "cb00d76dda04995847c657f4c19d303eb09eb48a", + "b20d705d9bd7c2b8dc60393a5357f632990e599a0975573ac67fd89b49187906", + "0451f99d2d52d4a6e734484a018b7ca2f895c2929b6754a3a03224d07ae61166ce4737da" + "963c6ef7247fb88d19f9b0c667cac7fe12837fdab88c66f10d3c14cad1", + "72b656f6b35b9ccbc712c9f1f3b1a14cbbebaec41c4bca8da18f492a062d6f6f", + "9886ae46c1415c3bc959e82b760ad760aab66885a84e620aa339fdf102465c42", + "2bf3a80bc04faa35ebecc0f4864ac02d349f6f126e0f988501b8d3075409a26c"}, + {NID_X9_62_prime256v1, NID_sha256, + "3b6ee2425940b3d240d35b97b6dcd61ed3423d8e71a0ada35d47b322d17b35ea0472f35e" + "dd1d252f87b8b65ef4b716669fc9ac28b00d34a9d66ad118c9d94e7f46d0b4f6c2b2d339" + "fd6bcd351241a387cc82609057048c12c4ec3d85c661975c45b300cb96930d89370a327c" + "98b67defaa89497aa8ef994c77f1130f752f94a4", + "d4234bebfbc821050341a37e1240efe5e33763cbbb2ef76a1c79e24724e5a5e7", + "048fb287f0202ad57ae841aea35f29b2e1d53e196d0ddd9aec24813d64c0922fb71f6daf" + "f1aa2dd2d6d3741623eecb5e7b612997a1039aab2e5cf2de969cfea573", + "d926fe10f1bfd9855610f4f5a3d666b1a149344057e35537373372ead8b1a778", + "490efd106be11fc365c7467eb89b8d39e15d65175356775deab211163c2504cb", + "644300fc0da4d40fb8c6ead510d14f0bd4e1321a469e9c0a581464c7186b7aa7"}, + {NID_X9_62_prime256v1, NID_sha256, + "c5204b81ec0a4df5b7e9fda3dc245f98082ae7f4efe81998dcaa286bd4507ca840a53d21" + "b01e904f55e38f78c3757d5a5a4a44b1d5d4e480be3afb5b394a5d2840af42b1b4083d40" + "afbfe22d702f370d32dbfd392e128ea4724d66a3701da41ae2f03bb4d91bb946c7969404" + "cb544f71eb7a49eb4c4ec55799bda1eb545143a7", + "b58f5211dff440626bb56d0ad483193d606cf21f36d9830543327292f4d25d8c", + "0468229b48c2fe19d3db034e4c15077eb7471a66031f28a980821873915298ba76303e8e" + "e3742a893f78b810991da697083dd8f11128c47651c27a56740a80c24c", + "e158bf4a2d19a99149d9cdb879294ccb7aaeae03d75ddd616ef8ae51a6dc1071", + "e67a9717ccf96841489d6541f4f6adb12d17b59a6bef847b6183b8fcf16a32eb", + "9ae6ba6d637706849a6a9fc388cf0232d85c26ea0d1fe7437adb48de58364333"}, + {NID_X9_62_prime256v1, NID_sha256, + "72e81fe221fb402148d8b7ab03549f1180bcc03d41ca59d7653801f0ba853add1f6d29ed" + "d7f9abc621b2d548f8dbf8979bd16608d2d8fc3260b4ebc0dd42482481d548c7075711b5" + "759649c41f439fad69954956c9326841ea6492956829f9e0dc789f73633b40f6ac77bcae" + "6dfc7930cfe89e526d1684365c5b0be2437fdb01", + "54c066711cdb061eda07e5275f7e95a9962c6764b84f6f1f3ab5a588e0a2afb1", + "040a7dbb8bf50cb605eb2268b081f26d6b08e012f952c4b70a5a1e6e7d46af98bbf26dd7" + "d799930062480849962ccf5004edcfd307c044f4e8f667c9baa834eeae", + "646fe933e96c3b8f9f507498e907fdd201f08478d0202c752a7c2cfebf4d061a", + "b53ce4da1aa7c0dc77a1896ab716b921499aed78df725b1504aba1597ba0c64b", + "d7c246dc7ad0e67700c373edcfdd1c0a0495fc954549ad579df6ed1438840851"}, + {NID_X9_62_prime256v1, NID_sha256, + "21188c3edd5de088dacc1076b9e1bcecd79de1003c2414c3866173054dc82dde85169baa" + "77993adb20c269f60a5226111828578bcc7c29e6e8d2dae81806152c8ba0c6ada1986a19" + "83ebeec1473a73a04795b6319d48662d40881c1723a706f516fe75300f92408aa1dc6ae4" + "288d2046f23c1aa2e54b7fb6448a0da922bd7f34", + "34fa4682bf6cb5b16783adcd18f0e6879b92185f76d7c920409f904f522db4b1", + "04105d22d9c626520faca13e7ced382dcbe93498315f00cc0ac39c4821d0d737376c47f3" + "cbbfa97dfcebe16270b8c7d5d3a5900b888c42520d751e8faf3b401ef4", + "a6f463ee72c9492bc792fe98163112837aebd07bab7a84aaed05be64db3086f4", + "542c40a18140a6266d6f0286e24e9a7bad7650e72ef0e2131e629c076d962663", + "4f7f65305e24a6bbb5cff714ba8f5a2cee5bdc89ba8d75dcbf21966ce38eb66f"}, + {NID_X9_62_prime256v1, NID_sha384, + "e0b8596b375f3306bbc6e77a0b42f7469d7e83635990e74aa6d713594a3a24498feff500" + "6790742d9c2e9b47d714bee932435db747c6e733e3d8de41f2f91311f2e9fd8e02565163" + "1ffd84f66732d3473fbd1627e63dc7194048ebec93c95c159b5039ab5e79e42c80b484a9" + "43f125de3da1e04e5bf9c16671ad55a1117d3306", + "b6faf2c8922235c589c27368a3b3e6e2f42eb6073bf9507f19eed0746c79dced", + "04e0e7b99bc62d8dd67883e39ed9fa0657789c5ff556cc1fd8dd1e2a55e9e3f24363fbfd" + "0232b95578075c903a4dbf85ad58f8350516e1ec89b0ee1f5e1362da69", + "9980b9cdfcef3ab8e219b9827ed6afdd4dbf20bd927e9cd01f15762703487007", + "f5087878e212b703578f5c66f434883f3ef414dc23e2e8d8ab6a8d159ed5ad83", + "306b4c6c20213707982dffbb30fba99b96e792163dd59dbe606e734328dd7c8a"}, + {NID_X9_62_prime256v1, NID_sha384, + "099a0131179fff4c6928e49886d2fdb3a9f239b7dd5fa828a52cbbe3fcfabecfbba3e192" + "159b887b5d13aa1e14e6a07ccbb21f6ad8b7e88fee6bea9b86dea40ffb962f38554056fb" + "7c5bb486418915f7e7e9b9033fe3baaf9a069db98bc02fa8af3d3d1859a11375d6f98aa2" + "ce632606d0800dff7f55b40f971a8586ed6b39e9", + "118958fd0ff0f0b0ed11d3cf8fa664bc17cdb5fed1f4a8fc52d0b1ae30412181", + "04afda82260c9f42122a3f11c6058839488f6d7977f6f2a263c67d06e27ea2c3550ae2bb" + "dd2207c590332c5bfeb4c8b5b16622134bd4dc55382ae806435468058b", + "23129a99eeda3d99a44a5778a46e8e7568b91c31fb7a8628c5d9820d4bed4a6b", + "e446600cab1286ebc3bb332012a2f5cc33b0a5ef7291d5a62a84de5969d77946", + "cf89b12793ee1792eb26283b48fa0bdcb45ae6f6ad4b02564bf786bb97057d5a"}, + {NID_X9_62_prime256v1, NID_sha384, + "0fbc07ea947c946bea26afa10c51511039b94ddbc4e2e4184ca3559260da24a14522d149" + "7ca5e77a5d1a8e86583aeea1f5d4ff9b04a6aa0de79cd88fdb85e01f171143535f2f7c23" + "b050289d7e05cebccdd131888572534bae0061bdcc3015206b9270b0d5af9f1da2f9de91" + "772d178a632c3261a1e7b3fb255608b3801962f9", + "3e647357cd5b754fad0fdb876eaf9b1abd7b60536f383c81ce5745ec80826431", + "04702b2c94d039e590dd5c8f9736e753cf5824aacf33ee3de74fe1f5f7c858d5ed0c2889" + "4e907af99fb0d18c9e98f19ac80dd77abfa4bebe45055c0857b82a0f4d", + "9beab7722f0bcb468e5f234e074170a60225255de494108459abdf603c6e8b35", + "c4021fb7185a07096547af1fb06932e37cf8bd90cf593dea48d48614fa237e5e", + "7fb45d09e2172bec8d3e330aa06c43fbb5f625525485234e7714b7f6e92ba8f1"}, + {NID_X9_62_prime256v1, NID_sha384, + "1e38d750d936d8522e9db1873fb4996bef97f8da3c6674a1223d29263f1234a90b751785" + "316444e9ba698bc8ab6cd010638d182c9adad4e334b2bd7529f0ae8e9a52ad60f59804b2" + "d780ed52bdd33b0bf5400147c28b4304e5e3434505ae7ce30d4b239e7e6f0ecf058badd5" + "b388eddbad64d24d2430dd04b4ddee98f972988f", + "76c17c2efc99891f3697ba4d71850e5816a1b65562cc39a13da4b6da9051b0fd", + "04d12512e934c367e4c4384dbd010e93416840288a0ba00b299b4e7c0d91578b57ebf883" + "5661d9b578f18d14ae4acf9c357c0dc8b7112fc32824a685ed72754e23", + "77cffa6f9a73904306f9fcd3f6bbb37f52d71e39931bb4aec28f9b076e436ccf", + "4d5a9d95b0f09ce8704b0f457b39059ee606092310df65d3f8ae7a2a424cf232", + "7d3c014ca470a73cef1d1da86f2a541148ad542fbccaf9149d1b0b030441a7eb"}, + {NID_X9_62_prime256v1, NID_sha384, + "abcf0e0f046b2e0672d1cc6c0a114905627cbbdefdf9752f0c31660aa95f2d0ede72d179" + "19a9e9b1add3213164e0c9b5ae3c76f1a2f79d3eeb444e6741521019d8bd5ca391b28c10" + "63347f07afcfbb705be4b52261c19ebaf1d6f054a74d86fb5d091fa7f229450996b76f0a" + "da5f977b09b58488eebfb5f5e9539a8fd89662ab", + "67b9dea6a575b5103999efffce29cca688c781782a41129fdecbce76608174de", + "04b4238b029fc0b7d9a5286d8c29b6f3d5a569e9108d44d889cd795c4a385905be8cb3ff" + "f8f6cca7187c6a9ad0a2b1d9f40ae01b32a7e8f8c4ca75d71a1fffb309", + "d02617f26ede3584f0afcfc89554cdfb2ae188c192092fdde3436335fafe43f1", + "26fd9147d0c86440689ff2d75569795650140506970791c90ace0924b44f1586", + "00a34b00c20a8099df4b0a757cbef8fea1cb3ea7ced5fbf7e987f70b25ee6d4f"}, + {NID_X9_62_prime256v1, NID_sha384, + "dc3d4884c741a4a687593c79fb4e35c5c13c781dca16db561d7e393577f7b62ca41a6e25" + "9fc1fb8d0c4e1e062517a0fdf95558b7799f20c211796167953e6372c11829beec64869d" + "67bf3ee1f1455dd87acfbdbcc597056e7fb347a17688ad32fda7ccc3572da7677d7255c2" + "61738f07763cd45973c728c6e9adbeecadc3d961", + "ecf644ea9b6c3a04fdfe2de4fdcb55fdcdfcf738c0b3176575fa91515194b566", + "04c3bdc7c795ec94620a2cfff614c13a3390a5e86c892e53a24d3ed22228bc85bf70480f" + "c5cf4aacd73e24618b61b5c56c1ced8c4f1b869580ea538e68c7a61ca3", + "53291d51f68d9a12d1dcdc58892b2f786cc15f631f16997d2a49bace513557d4", + "a860c8b286edf973ce4ce4cf6e70dc9bbf3818c36c023a845677a9963705df8b", + "5630f986b1c45e36e127dd7932221c4272a8cc6e255e89f0f0ca4ec3a9f76494"}, + {NID_X9_62_prime256v1, NID_sha384, + "719bf1911ae5b5e08f1d97b92a5089c0ab9d6f1c175ac7199086aeeaa416a17e6d6f8486" + "c711d386f284f096296689a54d330c8efb0f5fa1c5ba128d3234a3da856c2a94667ef710" + "3616a64c913135f4e1dc50e38daa60610f732ad1bedfcc396f87169392520314a6b6b9af" + "6793dbabad4599525228cc7c9c32c4d8e097ddf6", + "4961485cbc978f8456ec5ac7cfc9f7d9298f99415ecae69c8491b258c029bfee", + "048d40bf2299e05d758d421972e81cfb0cce68b949240dc30f315836acc70bef035674e6" + "f77f8b46f46cca937d83b128dffbe9bd7e0d3d08aa2cbbfdfb16f72c9a", + "373a825b5a74b7b9e02f8d4d876b577b4c3984168d704ba9f95b19c05ed590af", + "ef6fb386ad044b63feb7445fa16b10319018e9cea9ef42bca83bdad01992234a", + "ac1f42f652eb1786e57be01d847c81f7efa072ba566d4583af4f1551a3f76c65"}, + {NID_X9_62_prime256v1, NID_sha384, + "7cf19f4c851e97c5bca11a39f0074c3b7bd3274e7dd75d0447b7b84995dfc9f716bf08c2" + "5347f56fcc5e5149cb3f9cfb39d408ace5a5c47e75f7a827fa0bb9921bb5b23a6053dbe1" + "fa2bba341ac874d9b1333fc4dc224854949f5c8d8a5fedd02fb26fdfcd3be351aec0fcbe" + "f18972956c6ec0effaf057eb4420b6d28e0c008c", + "587907e7f215cf0d2cb2c9e6963d45b6e535ed426c828a6ea2fb637cca4c5cbd", + "04660da45c413cc9c9526202c16b402af602d30daaa7c342f1e722f15199407f31e6f8cb" + "b06913cc718f2d69ba2fb3137f04a41c27c676d1a80fbf30ea3ca46439", + "6b8eb7c0d8af9456b95dd70561a0e902863e6dfa1c28d0fd4a0509f1c2a647b2", + "08fabf9b57de81875bfa7a4118e3e44cfb38ec6a9b2014940207ba3b1c583038", + "a58d199b1deba7350616230d867b2747a3459421811c291836abee715b8f67b4"}, + {NID_X9_62_prime256v1, NID_sha384, + "b892ffabb809e98a99b0a79895445fc734fa1b6159f9cddb6d21e510708bdab6076633ac" + "30aaef43db566c0d21f4381db46711fe3812c5ce0fb4a40e3d5d8ab24e4e82d3560c6dc7" + "c37794ee17d4a144065ef99c8d1c88bc22ad8c4c27d85ad518fa5747ae35276fc104829d" + "3f5c72fc2a9ea55a1c3a87007cd133263f79e405", + "24b1e5676d1a9d6b645a984141a157c124531feeb92d915110aef474b1e27666", + "04b4909a5bdf25f7659f4ef35e4b811429fb2c59126e3dad09100b46aea6ebe7a6760ae0" + "15fa6af5c9749c4030fdb5de6e58c6b5b1944829105cf7edf7d3a22cfb", + "88794923d8943b5dbcc7a7a76503880ff7da632b0883aaa60a9fcc71bf880fd6", + "6ec9a340b77fae3c7827fa96d997e92722ff2a928217b6dd3c628f3d49ae4ce6", + "637b54bbcfb7e7d8a41ea317fcfca8ad74eb3bb6b778bc7ef9dec009281976f7"}, + {NID_X9_62_prime256v1, NID_sha384, + "8144e37014c95e13231cbd6fa64772771f93b44e37f7b02f592099cc146343edd4f4ec9f" + "a1bc68d7f2e9ee78fc370443aa2803ff4ca52ee49a2f4daf2c8181ea7b8475b3a0f608fc" + "3279d09e2d057fbe3f2ffbe5133796124781299c6da60cfe7ecea3abc30706ded2cdf18f" + "9d788e59f2c31662df3abe01a9b12304fb8d5c8c", + "bce49c7b03dcdc72393b0a67cf5aa5df870f5aaa6137ada1edc7862e0981ec67", + "04c786d9421d67b72b922cf3def2a25eeb5e73f34543eb50b152e738a98afb0ca5679627" + "1e79e2496f9e74b126b1123a3d067de56b5605d6f51c8f6e1d5bb93aba", + "89e690d78a5e0d2b8ce9f7fcbf34e2605fd9584760fa7729043397612dd21f94", + "07e5054c384839584624e8d730454dc27e673c4a90cbf129d88b91250341854d", + "f7e665b88614d0c5cbb3007cafe713763d81831525971f1747d92e4d1ca263a7"}, + {NID_X9_62_prime256v1, NID_sha384, + "a3683d120807f0a030feed679785326698c3702f1983eaba1b70ddfa7f0b3188060b845e" + "2b67ed57ee68087746710450f7427cb34655d719c0acbc09ac696adb4b22aba1b9322b71" + "11076e67053a55f62b501a4bca0ad9d50a868f51aeeb4ef27823236f5267e8da83e14304" + "7422ce140d66e05e44dc84fb3a4506b2a5d7caa8", + "73188a923bc0b289e81c3db48d826917910f1b957700f8925425c1fb27cabab9", + "0486662c014ab666ee770723be8da38c5cd299efc6480fc6f8c3603438fa8397b9f26b33" + "07a650c3863faaa5f642f3ba1384c3d3a02edd3d48c657c269609cc3fc", + "ec90584ab3b383b590626f36ed4f5110e49888aec7ae7a9c5ea62dd2dc378666", + "13e9ad59112fde3af4163eb5c2400b5e9a602576d5869ac1c569075f08c90ff6", + "708ac65ff2b0baaccc6dd954e2a93df46016bd04457636de06798fcc17f02be5"}, + {NID_X9_62_prime256v1, NID_sha384, + "b1df8051b213fc5f636537e37e212eb20b2423e6467a9c7081336a870e6373fc835899d5" + "9e546c0ac668cc81ce4921e88f42e6da2a109a03b4f4e819a17c955b8d099ec6b282fb49" + "5258dca13ec779c459da909475519a3477223c06b99afbd77f9922e7cbef844b93f3ce5f" + "50db816b2e0d8b1575d2e17a6b8db9111d6da578", + "f637d55763fe819541588e0c603f288a693cc66823c6bb7b8e003bd38580ebce", + "0474a4620c578601475fc169a9b84be613b4a16cb6acab8fd98848a6ec9fbd133d42b9e3" + "5d347c107e63bd55f525f915bcf1e3d2b81d002d3c39acf10fc30645a1", + "4d578f5099636234d9c1d566f1215d5d887ae5d47022be17dbf32a11a03f053b", + "113a933ebc4d94ce1cef781e4829df0c493b0685d39fb2048ce01b21c398dbba", + "3005bd4ec63dbd04ce9ff0c6246ad65d27fcf62edb2b7e461589f9f0e7446ffd"}, + {NID_X9_62_prime256v1, NID_sha384, + "0b918ede985b5c491797d0a81446b2933be312f419b212e3aae9ba5914c00af431747a9d" + "287a7c7761e9bcbc8a12aaf9d4a76d13dad59fc742f8f218ef66eb67035220a07acc1a35" + "7c5b562ecb6b895cf725c4230412fefac72097f2c2b829ed58742d7c327cad0f1058df1b" + "ddd4ae9c6d2aba25480424308684cecd6517cdd8", + "2e357d51517ff93b821f895932fddded8347f32596b812308e6f1baf7dd8a47f", + "047e4078a1d50c669fb2996dd9bacb0c3ac7ede4f58fa0fa1222e78dbf5d1f41860014e4" + "6e90cc171fbb83ea34c6b78202ea8137a7d926f0169147ed5ae3d6596f", + "be522b0940b9a40d84bf790fe6abdc252877e671f2efa63a33a65a512fc2aa5c", + "a26b9ad775ac37ff4c7f042cdc4872c5e4e5e800485f488ddfaaed379f468090", + "f88eae2019bebbba62b453b8ee3472ca5c67c267964cffe0cf2d2933c1723dff"}, + {NID_X9_62_prime256v1, NID_sha384, + "0fab26fde1a4467ca930dbe513ccc3452b70313cccde2994eead2fde85c8da1db84d7d06" + "a024c9e88629d5344224a4eae01b21a2665d5f7f36d5524bf5367d7f8b6a71ea05d413d4" + "afde33777f0a3be49c9e6aa29ea447746a9e77ce27232a550b31dd4e7c9bc8913485f2dc" + "83a56298051c92461fd46b14cc895c300a4fb874", + "77d60cacbbac86ab89009403c97289b5900466856887d3e6112af427f7f0f50b", + "04a62032dfdb87e25ed0c70cad20d927c7effeb2638e6c88ddd670f74df16090e544c5ee" + "2cf740ded468f5d2efe13daa7c5234645a37c073af35330d03a4fed976", + "06c1e692b045f425a21347ecf72833d0242906c7c1094f805566cdcb1256e394", + "eb173b51fb0aec318950d097e7fda5c34e529519631c3e2c9b4550b903da417d", + "ca2c13574bf1b7d56e9dc18315036a31b8bceddf3e2c2902dcb40f0cc9e31b45"}, + {NID_X9_62_prime256v1, NID_sha384, + "7843f157ef8566722a7d69da67de7599ee65cb3975508f70c612b3289190e364141781e0" + "b832f2d9627122742f4b5871ceeafcd09ba5ec90cae6bcc01ae32b50f13f63918dfb5177" + "df9797c6273b92d103c3f7a3fc2050d2b196cc872c57b77f9bdb1782d4195445fcc6236d" + "d8bd14c8bcbc8223a6739f6a17c9a861e8c821a6", + "486854e77962117f49e09378de6c9e3b3522fa752b10b2c810bf48db584d7388", + "04760b5624bd64d19c866e54ccd74ad7f98851afdbc3ddeae3ec2c52a135be9cfafeca15" + "ce9350877102eee0f5af18b2fed89dc86b7df0bf7bc2963c1638e36fe8", + "e4f77c6442eca239b01b0254e11a4182782d96f48ab521cc3d1d68df12b5a41a", + "bdff14e4600309c2c77f79a25963a955b5b500a7b2d34cb172cd6acd52905c7b", + "b0479cdb3df79923ec36a104a129534c5d59f622be7d613aa04530ad2507d3a2"}, + {NID_X9_62_prime256v1, NID_sha512, + "6c8572b6a3a4a9e8e03dbeed99334d41661b8a8417074f335ab1845f6cc852adb8c01d98" + "20fcf8e10699cc827a8fbdca2cbd46cc66e4e6b7ba41ec3efa733587e4a30ec552cd8dda" + "b8163e148e50f4d090782897f3ddac84a41e1fcfe8c56b6152c0097b0d634b41011471ff" + "d004f43eb4aafc038197ec6bae2b4470e869bded", + "9dd0d3a3d514c2a8adb162b81e3adfba3299309f7d2018f607bdb15b1a25f499", + "046b738de3398b6ac57b9591f9d7985dd4f32137ad3460dcf8970c1390cb9eaf8d83bc61" + "e26d2bbbd3cf2d2ab445a2bc4ab5dde41f4a13078fd1d3cc36ab596d57", + "9106192170ccb3c64684d48287bb81bbed51b40d503462c900e5c7aae43e380a", + "275fa760878b4dc05e9d157fedfd8e9b1c9c861222a712748cb4b7754c043fb1", + "699d906bb8435a05345af3b37e3b357786939e94caae257852f0503adb1e0f7e"}, + {NID_X9_62_prime256v1, NID_sha512, + "7e3c8fe162d48cc8c5b11b5e5ebc05ebc45c439bdbc0b0902145921b8383037cb0812222" + "031598cd1a56fa71694fbd304cc62938233465ec39c6e49f57dfe823983b6923c4e86563" + "3949183e6b90e9e06d8275f3907d97967d47b6239fe2847b7d49cf16ba69d2862083cf1b" + "ccf7afe34fdc90e21998964107b64abe6b89d126", + "f9bf909b7973bf0e3dad0e43dcb2d7fa8bda49dbe6e5357f8f0e2bd119be30e6", + "04f2a6674d4e86152a527199bed293fa63acde1b4d8a92b62e552210ba45c38792c72565" + "c24f0eee6a094af341ddd8579747b865f91c8ed5b44cda8a19cc93776f", + "e547791f7185850f03d0c58419648f65b9d29cdc22ed1de2a64280220cfcafba", + "4782903d2aaf8b190dab5cae2223388d2d8bd845b3875d37485c54e1ded1d3d8", + "dfb40e406bfa074f0bf832771b2b9f186e2211f0bca279644a0ca8559acf39da"}, + {NID_X9_62_prime256v1, NID_sha512, + "d5aa8ac9218ca661cd177756af6fbb5a40a3fecfd4eea6d5872fbb9a2884784aa9b5f0c0" + "23a6e0da5cf6364754ee6465b4ee2d0ddc745b02994c98427a213c849537da5a4477b3ab" + "fe02648be67f26e80b56a33150490d062aaac137aa47f11cfeddba855bab9e4e028532a5" + "63326d927f9e6e3292b1fb248ee90b6f429798db", + "724567d21ef682dfc6dc4d46853880cfa86fe6fea0efd51fac456f03c3d36ead", + "0470b877b5e365fcf08140b1eca119baba662879f38e059d074a2cb60b03ea5d395f56f9" + "4d591df40b9f3b8763ac4b3dbe622c956d5bd0c55658b6f46fa3deb201", + "79d6c967ed23c763ece9ca4b026218004c84dc2d4ccc86cf05c5d0f791f6279b", + "2ba2ea2d316f8937f184ad3028e364574d20a202e4e7513d7af57ac2456804d1", + "64fe94968d18c5967c799e0349041b9e40e6c6c92ebb475e80dd82f51cf07320"}, + {NID_X9_62_prime256v1, NID_sha512, + "790b06054afc9c3fc4dfe72df19dd5d68d108cfcfca6212804f6d534fd2fbe489bd8f64b" + "f205ce04bcb50124a12ce5238fc3fe7dd76e6fa640206af52549f133d593a1bfd423ab73" + "7f3326fa79433cde293236f90d4238f0dd38ed69492ddbd9c3eae583b6325a95dec3166f" + "e52b21658293d8c137830ef45297d67813b7a508", + "29c5d54d7d1f099d50f949bfce8d6073dae059c5a19cc70834722f18a7199edd", + "043088d4f45d274cc5f418c8ecc4cbcf96be87491f420250f8cbc01cdf2503ec47634db4" + "8198129237ed068c88ff5809f6211921a6258f548f4b64dd125921b78b", + "0508ad7774908b5705895fda5c3b7a3032bf85dab7232bf981177019f3d76460", + "acd9f3b63626c5f32103e90e1dd1695907b1904aa9b14f2132caef331321971b", + "15c04a8bd6c13ed5e9961814b2f406f064670153e4d5465dcef63c1d9dd52a87"}, + {NID_X9_62_prime256v1, NID_sha512, + "6d549aa87afdb8bfa60d22a68e2783b27e8db46041e4df04be0c261c4734b608a96f198d" + "1cdb8d082ae48579ec9defcf21fbc72803764a58c31e5323d5452b9fb57c8991d3174914" + "0da7ef067b18bf0d7dfbae6eefd0d8064f334bf7e9ec1e028daed4e86e17635ec2e409a3" + "ed1238048a45882c5c57501b314e636b9bc81cbe", + "0d8095da1abba06b0d349c226511f642dabbf1043ad41baa4e14297afe8a3117", + "0475a45758ced45ecf55f755cb56ca2601d794ebeaeb2e6107fe2fc443f580e23c5303d4" + "7d5a75ec821d51a2ee7548448208c699eca0cd89810ffc1aa4faf81ead", + "5165c54def4026ab648f7768c4f1488bcb183f6db7ffe02c7022a529a116482a", + "ebc85fc4176b446b3384ccc62fc2526b45665561a0e7e9404ac376c90e450b59", + "8b2c09428e62c5109d17ed0cf8f9fd7c370d018a2a73f701effc9b17d04852c6"}, + {NID_X9_62_prime256v1, NID_sha512, + "1906e48b7f889ee3ff7ab0807a7aa88f53f4018808870bfed6372a77330c737647961324" + "c2b4d46f6ee8b01190474951a701b048ae86579ff8e3fc889fecf926b17f98958ac7534e" + "6e781ca2db2baa380dec766cfb2a3eca2a9d5818967d64dfab84f768d24ec122eebacaab" + "0a4dc3a75f37331bb1c43dd8966cc09ec4945bbd", + "52fe57da3427b1a75cb816f61c4e8e0e0551b94c01382b1a80837940ed579e61", + "042177e20a2092a46667debdcc21e7e45d6da72f124adecbc5ada6a7bcc7b401d5550e46" + "8f2626070a080afeeb98edd75a721eb773c8e62149f3e903cf9c4d7b61", + "0464fe9674b01ff5bd8be21af3399fad66f90ad30f4e8ee6e2eb9bcccfd5185c", + "f8250f073f34034c1cde58f69a85e2f5a030703ebdd4dbfb98d3b3690db7d114", + "a9e83e05f1d6e0fef782f186bedf43684c825ac480174d48b0e4d31505e27498"}, + {NID_X9_62_prime256v1, NID_sha512, + "7b59fef13daf01afec35dea3276541be681c4916767f34d4e874464d20979863ee77ad0f" + "d1635bcdf93e9f62ed69ae52ec90aab5bbf87f8951213747ccec9f38c775c1df1e9d7f73" + "5c2ce39b42edb3b0c5086247556cfea539995c5d9689765288ec600848ecf085c01ca738" + "bbef11f5d12d4457db988b4add90be00781024ad", + "003d91611445919f59bfe3ca71fe0bfdeb0e39a7195e83ac03a37c7eceef0df2", + "047b9c592f61aae0555855d0b9ebb6fd00fb6746e8842e2523565c858630b9ba00d35b2e" + "168b1875bbc563bea5e8d63c4e38957c774a65e762959a349eaf263ba0", + "ef9df291ea27a4b45708f7608723c27d7d56b7df0599a54bc2c2fabbff373b40", + "66d057fd39958b0e4932bacd70a1769bbadcb62e4470937b45497a3d4500fabb", + "6c853b889e18b5a49ee54b54dd1aaedfdd642e30eba171c5cab677f0df9e7318"}, + {NID_X9_62_prime256v1, NID_sha512, + "041a6767a935dc3d8985eb4e608b0cbfebe7f93789d4200bcfe595277ac2b0f402889b58" + "0b72def5da778a680fd380c955421f626d52dd9a83ea180187b850e1b72a4ec6dd63235e" + "598fd15a9b19f8ce9aec1d23f0bd6ea4d92360d50f951152bc9a01354732ba0cf90aaed3" + "3c307c1de8fa3d14f9489151b8377b57c7215f0b", + "48f13d393899cd835c4193670ec62f28e4c4903e0bbe5817bf0996831a720bb7", + "0482a1a96f4648393c5e42633ecdeb1d8245c78c5ea236b5bab460dedcc8924bc0e8cbf0" + "3c34b5154f876de19f3bb6fd43cd2eabf6e7c95467bcfa8c8fc42d76fd", + "efed736e627899fea944007eea39a4a63c0c2e26491cd12adb546be3e5c68f7d", + "cf7fc24bdaa09ac0cca8497e13298b961380668613c7493954048c06385a7044", + "f38b1c8306cf82ab76ee3a772b14416b49993fe11f986e9b0f0593c52ec91525"}, + {NID_X9_62_prime256v1, NID_sha512, + "7905a9036e022c78b2c9efd40b77b0a194fbc1d45462779b0b76ad30dc52c564e48a493d" + "8249a061e62f26f453ba566538a4d43c64fb9fdbd1f36409316433c6f074e1b47b544a84" + "7de25fc67d81ac801ed9f7371a43da39001c90766f943e629d74d0436ba1240c3d7fab99" + "0d586a6d6ef1771786722df56448815f2feda48f", + "95c99cf9ec26480275f23de419e41bb779590f0eab5cf9095d37dd70cb75e870", + "0442c292b0fbcc9f457ae361d940a9d45ad9427431a105a6e5cd90a345fe3507f7313b08" + "fd2fa351908b3178051ee782cc62b9954ad95d4119aa564900f8ade70c", + "4c08dd0f8b72ae9c674e1e448d4e2afe3a1ee69927fa23bbff3716f0b99553b7", + "f2bc35eb1b8488b9e8d4a1dbb200e1abcb855458e1557dc1bf988278a174eb3b", + "ed9a2ec043a1d578e8eba6f57217976310e8674385ad2da08d6146c629de1cd9"}, + {NID_X9_62_prime256v1, NID_sha512, + "cf25e4642d4f39d15afb7aec79469d82fc9aedb8f89964e79b749a852d931d3743650280" + "4e39555f5a3c75dd958fd5291ada647c1a5e38fe7b1048f16f2b711fdd5d39acc0812ca6" + "5bd50d7f8119f2fd195ab16633503a78ee9102c1f9c4c22568e0b54bd4fa3f5ff7b49160" + "bf23e7e2231b1ebebbdaf0e4a7d4484158a87e07", + "e15e835d0e2217bc7c6f05a498f20af1cd56f2f165c23d225eb3360aa2c5cbcf", + "0489dd22052ec3ab4840206a62f2270c21e7836d1a9109a3407dd0974c7802b9aee91609" + "ba35c7008b080c77a9068d97a14ca77b97299e74945217672b2fd5faf0", + "c9f621441c235fc47ec34eef4c08625df1ec74918e1f86075b753f2589f4c60b", + "a70d1a2d555d599bfb8c9b1f0d43725341151d17a8d0845fa56f3563703528a7", + "4e05c45adf41783e394a5312f86e66871c4be4896948c85966879d5c66d54b37"}, + {NID_X9_62_prime256v1, NID_sha512, + "7562c445b35883cc937be6349b4cefc3556a80255d70f09e28c3f393daac19442a7eeced" + "cdfbe8f7628e30cd8939537ec56d5c9645d43340eb4e78fc5dd4322de8a07966b262770d" + "7ff13a071ff3dce560718e60ed3086b7e0003a6abafe91af90af86733ce8689440bf73d2" + "aa0acfe9776036e877599acbabfcb03bb3b50faa", + "808c08c0d77423a6feaaffc8f98a2948f17726e67c15eeae4e672edbe388f98c", + "04b0c0ad5e1f6001d8e9018ec611b2e3b91923e69fa6c98690ab644d650f640c42610539" + "c0b9ed21ac0a2f27527c1a61d9b47cbf033187b1a6ada006eb5b2662ed", + "1f6d4a905c761a53d54c362976717d0d7fc94d222bb5489e4830080a1a67535d", + "83404dcf8320baf206381800071e6a75160342d19743b4f176960d669dd03d07", + "3f75dcf102008b2989f81683ae45e9f1d4b67a6ef6fd5c8af44828af80e1cfb5"}, + {NID_X9_62_prime256v1, NID_sha512, + "051c2db8e71e44653ea1cb0afc9e0abdf12658e9e761bfb767c20c7ab4adfcb18ed9b5c3" + "72a3ac11d8a43c55f7f99b33355437891686d42362abd71db8b6d84dd694d6982f061217" + "8a937aa934b9ac3c0794c39027bdd767841c4370666c80dbc0f8132ca27474f553d266de" + "efd7c9dbad6d734f9006bb557567701bb7e6a7c9", + "f7c6315f0081acd8f09c7a2c3ec1b7ece20180b0a6365a27dcd8f71b729558f9", + "04250f7112d381c1751860045d9bcaf20dbeb25a001431f96ac6f19109362ffebb49fba9" + "efe73546135a5a31ab3753e247034741ce839d3d94bd73936c4a17e4aa", + "68c299be2c0c6d52d208d5d1a9e0ffa2af19b4833271404e5876e0aa93987866", + "7b195e92d2ba95911cda7570607e112d02a1c847ddaa33924734b51f5d81adab", + "10d9f206755cef70ab5143ac43f3f8d38aea2644f31d52eaf3b472ee816e11e5"}, + {NID_X9_62_prime256v1, NID_sha512, + "4dcb7b62ba31b866fce7c1feedf0be1f67bf611dbc2e2e86f004422f67b3bc1839c6958e" + "b1dc3ead137c3d7f88aa97244577a775c8021b1642a8647bba82871e3c15d0749ed343ea" + "6cad38f123835d8ef66b0719273105e924e8685b65fd5dc430efbc35b05a6097f17ebc59" + "43cdcd9abcba752b7f8f37027409bd6e11cd158f", + "f547735a9409386dbff719ce2dae03c50cb437d6b30cc7fa3ea20d9aec17e5a5", + "044ca87c5845fb04c2f76ae3273073b0523e356a445e4e95737260eba9e2d021db0f8647" + "5d07f82655320fdf2cd8db23b21905b1b1f2f9c48e2df87e24119c4880", + "91bd7d97f7ed3253cedefc144771bb8acbbda6eb24f9d752bbe1dd018e1384c7", + "008c1755d3df81e64e25270dbaa9396641556df7ffc7ac9add6739c382705397", + "77df443c729b039aded5b516b1077fecdd9986402d2c4b01734ba91e055e87fc"}, + {NID_X9_62_prime256v1, NID_sha512, + "efe55737771070d5ac79236b04e3fbaf4f2e9bed187d1930680fcf1aba769674bf426310" + "f21245006f528779347d28b8aeacd2b1d5e3456dcbf188b2be8c07f19219e4067c1e7c97" + "14784285d8bac79a76b56f2e2676ea93994f11eb573af1d03fc8ed1118eafc7f07a82f32" + "63c33eb85e497e18f435d4076a774f42d276c323", + "26a1aa4b927a516b661986895aff58f40b78cc5d0c767eda7eaa3dbb835b5628", + "0428afa3b0f81a0e95ad302f487a9b679fcdef8d3f40236ec4d4dbf4bb0cbba8b2bb4ac1" + "be8405cbae8a553fbc28e29e2e689fabe7def26d653a1dafc023f3cecf", + "f98e1933c7fad4acbe94d95c1b013e1d6931fa8f67e6dbb677b564ef7c3e56ce", + "15a9a5412d6a03edd71b84c121ce9a94cdd166e40da9ce4d79f1afff6a395a53", + "86bbc2b6c63bad706ec0b093578e3f064736ec69c0dba59b9e3e7f73762a4dc3"}, + {NID_X9_62_prime256v1, NID_sha512, + "ea95859cc13cccb37198d919803be89c2ee10befdcaf5d5afa09dcc529d333ae1e4ffd3b" + "d8ba8642203badd7a80a3f77eeee9402eed365d53f05c1a995c536f8236ba6b6ff889739" + "3506660cc8ea82b2163aa6a1855251c87d935e23857fe35b889427b449de7274d7754bde" + "ace960b4303c5dd5f745a5cfd580293d6548c832", + "6a5ca39aae2d45aa331f18a8598a3f2db32781f7c92efd4f64ee3bbe0c4c4e49", + "04c62cc4a39ace01006ad48cf49a3e71466955bbeeca5d318d672695df926b3aa4c85ccf" + "517bf2ebd9ad6a9e99254def0d74d1d2fd611e328b4a3988d4f045fe6f", + "dac00c462bc85bf39c31b5e01df33e2ec1569e6efcb334bf18f0951992ac6160", + "6e7ff8ec7a5c48e0877224a9fa8481283de45fcbee23b4c252b0c622442c26ad", + "3dfac320b9c873318117da6bd856000a392b815659e5aa2a6a1852ccb2501df3"}, + {NID_secp384r1, NID_sha224, + "39f0b25d4c15b09a0692b22fbacbb5f8aee184cb75887e2ebe0cd3be5d3815d29f9b587e" + "10b3168c939054a89df11068e5c3fac21af742bf4c3e9512f5569674e7ad8b39042bcd73" + "e4b7ce3e64fbea1c434ed01ad4ad8b5b569f6a0b9a1144f94097925672e59ba97bc4d33b" + "e2fa21b46c3dadbfb3a1f89afa199d4b44189938", + "0af857beff08046f23b03c4299eda86490393bde88e4f74348886b200555276b93b37d4f" + "6fdec17c0ea581a30c59c727", + "0400ea9d109dbaa3900461a9236453952b1f1c2a5aa12f6d500ac774acdff84ab7cb71a0" + "f91bcd55aaa57cb8b4fbb3087d0fc0e3116c9e94be583b02b21b1eb168d8facf39552793" + "60cbcd86e04ee50751054cfaebcf542538ac113d56ccc38b3e", + "e2f0ce83c5bbef3a6eccd1744f893bb52952475d2531a2854a88ff0aa9b12c65961e2e51" + "7fb334ef40e0c0d7a31ed5f5", + "c36e5f0d3de71411e6e519f63e0f56cff432330a04fefef2993fdb56343e49f2f7db5fca" + "b7728acc1e33d4692553c02e", + "0d4064399d58cd771ab9420d438757f5936c3808e97081e457bc862a0c905295dca60ee9" + "4f4537591c6c7d217453909b"}, + {NID_secp384r1, NID_sha224, + "5a3c80e608ed3ac75a6e45f6e94d374271a6d42b67a481860d5d309cc8b37c79cb61f171" + "6dc8aa84cb309ef9d68eb7fc6cf4b42333f316a5c30e74198c8b340926e340c5de47674a" + "707293c4aa2a1a2274a602f01c26b156e895499c60b38ef53fc2032e7485c168d73700d6" + "fa14232596a0e4997854a0b05d02e351b9d3de96", + "047dd5baab23f439ec23b58b7e6ff4cc37813cccb4ea73bb2308e6b82b3170edfe0e131e" + "ca50841bf1b686e651c57246", + "04de92ff09af2950854a70f2178d2ed50cc7042a7188301a1ea81d9629ad3c29795cb7f0" + "d56630a401e4d6e5bed0068d1e6135adbd8624130735e64e65ecbd43770dcc12b28e737b" + "5ed033666f34c918eb5589508e4a13b9243374a118a628dd0b", + "f3922351d14f1e5af84faab12fe57ded30f185afe5547aeb3061104740ecc42a8df0c27f" + "3877b4d855642b78938c4e05", + "38e181870cb797c1f4e6598cfd032add1cb60447d33473038d06df73919f844eddd16f40" + "f911075f8a4bacc0d924e684", + "a58dd1ca18aa31277de66c30c3bb7a14b53705ce6c547ed2cb0e336f63c42809422efffc" + "c722d1155f2254330a02b278"}, + {NID_secp384r1, NID_sha224, + "e7d974c5dbd3bfb8a2fb92fdd782f997d04be79e9713944ce13c5eb6f75dfdec811b7ee4" + "b3859114b07f263846ae13f795eec8f3cb5b7565baff68e0fdd5e09ba8b176d5a71cb03f" + "bc5546e6937fba560acb4db24bd42de1851432b96e8ca4078313cb849bce29c9d8052586" + "01d67cd0259e255f3048682e8fdbdda3398c3e31", + "54ba9c740535574cebc41ca5dc950629674ee94730353ac521aafd1c342d3f8ac52046ed" + "804264e1440d7fe409c45c83", + "043db95ded500b2506b627270bac75688dd7d44f47029adeff99397ab4b6329a38dbb278" + "a0fc58fe4914e6ae31721a6875049288341553a9ac3dc2d9e18e7a92c43dd3c25ca866f0" + "cb4c68127bef6b0e4ba85713d27d45c7d0dc57e5782a6bf733", + "04324bd078807f6b18507a93ee60da02031717217ee5ce569750737be912be72da087ac0" + "0f50e13fdf7249a6ae33f73e", + "b2752aa7abc1e5a29421c9c76620bcc3049ecc97e6bc39fcca126f505a9a1bfae3bde89f" + "b751a1aa7b66fa8db3891ef0", + "f1c69e6d818ca7ae3a477049b46420cebd910c0a9a477fd1a67a38d628d6edaac123aebf" + "ca67c53a5c80fe454dba7a9d"}, + {NID_secp384r1, NID_sha224, + "a670fda4d1d56c70de1d8680328043b2b7029633caf0ee59ffe1421c914bb937133d5a0f" + "9214846b2e0b350455a74c4ab434c56de65a17139bb8212bf1c76071a37536fa29348f87" + "1dbb26baa92eb93d97e923a6d2ffd9be25cbc33075e494e6db657bd8dc053fe4e17148d8" + "cf6e2058164f2b5766750eb01bbe7b361cdb848c", + "dabe87bbe95499bac23bc83c8b7307fe04be198f00059e2bf67c9611feaffb2c8f274f6a" + "a50eb99c3074186d8067d659", + "04c2aa0a695125279705917e02a4f258cade4c3ff9140a071414babf87764f426f7f36ff" + "da9d5f3394375d24864235476f8f9808da0ce0227cf453f9e456f557db9752e23b45cce4" + "baad5fee3844ddd7e1112bcec01ea9d67c7a76f3535bd0cb58", + "65a0305854033cbc6fe3ca139c40ca354d45801ecb59f4a923c251dc6b25d12d452d99b5" + "d6711fdb5efac812aa464cc4", + "c7fc32997d17ac79baf5789e4503f5f1a8863872bc350a91f12dd3ef8cf78c254e829217" + "809e8e00b6b8d4d85be3f1fd", + "1422e1838a22496df93486bce1142961dbd8478ae844b8dda54e210afdae0d9e930d587c" + "91bb600b0bde7237186d94e6"}, + {NID_secp384r1, NID_sha224, + "7843f918fe2588bcfe756e1f05b491d913523255aa006818be20b676c957f4edb8df863c" + "6f5f8c15b3b80c7a2aa277b70d53f210bdfb856337980c406ea140e439dd321471407f37" + "4f69877b2d82367eed51e3c82c13948616dcb301d0c31f8f0352f2846abd9e72071f446a" + "2f1bd3339a09ae41b84e150fd18f4ba5d3c6bfa0", + "df43107a1deb24d02e31d479087bd669e2bc3e50f1f44b7db9484a7143cdca6a3391bddf" + "ea72dc940dbce8ec5efbd718", + "0476bd4be5d520471162cb5c36f80038301b325f845d9642204a84d78b3e721098932827" + "bf872bde0a9f86383953667d29415116b8b878f896a5aa4dbbdc21076f27135d8bbcaaca" + "02489ef639d742bd63f377da0c8e8ab36ff19b4a7cc5d4ceb4", + "798abad5a30d1805794540057388ee05e2422901c6335f985b9d4447b3ef75524751abfe" + "ab6409ad6bf77d4ae3014558", + "98744e5c6742fa5118a74a70db4957647a3cc12add4e876b45974a6a8707809f871daadb" + "fc0b865e01624f706b65f10c", + "9e256e8da8eff5a0c83baaa1ef4f7be798eba9543bf97adb0fff8719f5406ea1207a0cf7" + "03d99aa8f02169724b492273"}, + {NID_secp384r1, NID_sha224, + "caa83d5ab07febbd2e0fe2d63738b9b7b8752594bea7aaf50345b3d2f316653a8c9222f2" + "b7877b64679e9573e81461a426029e45b8873a575094a1d572e0d32a9f0a9c6bcb9a2868" + "543b7d8bbe4a69a09e7321f05f8366cced1b72df526f895b60aed2c39c249653c7839538" + "770d4e5f47d3926ec0d168ab6a1af15bf1dca1f7", + "ea7a563ba2a7f5ab69973dca1f1a0d1572f0c59817cd3b62ad356c2099e2cdca1c553323" + "563f9dfbb333b126d84abc7f", + "04cf4717c5f5de668b785f06bdc9845df5a09e4edd83f4669756407cbb60807305c632bc" + "49f818f4a84b194369aa07736f7391e4982af8a2218f704f627d01f0508bfc8304992a2d" + "598a420bf2eb519f33bd7caf79380793733b3dba0cc5e2b9d8", + "7b9606b3df7b2a340dbc68d9754de0734e1faeb5a0135578a97628d948702235c60b20c8" + "002c8fcf906783e1b389e754", + "0d680010bed373287f9767955b5d2850e150b6713b49e453eb280148e45230c853d99ea2" + "d2f8fcbd3ddcba19aeec0af1", + "64329763a930ab5452afdb0557fef16ff71810d6343dfc9c6ae18905c3d274db6554cdc6" + "9d6078a1ca03284474a94f30"}, + {NID_secp384r1, NID_sha224, + "594603458d6534974aeeafba919c4d0f4cb6843a3af41204bbb88aeb2fca2772d305163d" + "ba863da050aabedbaf89db521955d1715de95bbcef979ecdc0c976181ece00355385f8a8" + "f8cce127c9eac15ce3e958a3ed686184674ec9a50eb63271606ee7fdcb1323da3c3db8e8" + "9cad1fb42139a32d08abcfbf0d4ccfca18c89a86", + "4cc70cb35b3ddeb0df53a6bd7bd05f8ff4392a2db7344f2d443761484b3a468a4ee3d1a8" + "b27113d57283fd18b05f7829", + "0440e1fe21df34bb85a642a0abe819ebd128f7e39b84d8dcc4a9a599b372fb9588da1484" + "600ec28b1297bb685f9ae77831f3aa69ada57879fdcbe8df19cefabc308add7d03b17b1f" + "ac2f7783fece6a8dfe20bc36f518692677d96e3f730a67a671", + "8eda401d98f5688c34d8dbebcd3991c87c0442b0379154eaa2e5287dabe9a9e34cfc1305" + "d11ff68781df25d5611b331d", + "ff2d772786e159448bba26afd8c3281941a4cb0c56fec6f5cccb4c292c4ee0f7af9bd39b" + "be2d88148732585e104fdb30", + "07a1d890770daa949a17797dca7af3e8163da981ec330c03d63d1a8312c152be6a718163" + "205ffa08da7dcc163ba261f4"}, + {NID_secp384r1, NID_sha224, + "733252d2bd35547838be22656cc7aa67eff0af0b13b428f77267a513c6824c3dbae53306" + "8b6817e82665f009560affcfe4b2ddb5b667a644fc1a42d24f24e0947e0dc50fb62c919b" + "c1fe4e7ded5e28f2e6d80fcf66a081fb2763526f8def5a81a4ddd38be0b59ee839da1643" + "eeeaee7b1927cec12cf3da67c02bc5465151e346", + "366d15e4cd7605c71560a418bd0f382fd7cd7ad3090ff1b2dfbed74336166a905e1b760c" + "f0bccee7a0e66c5ebfb831f1", + "04a143f277ab36a10b645ff6c58241ea67ffdc8acf12d60973068390f06b4d8f4d773b10" + "c1ebf6889b1cfa73ebb90f6ca17a17cad29bb507b309021f6f92cb5c10ba535f4a3e317f" + "cc68cfd02d3ccd269f465169c73d30ff308f5350d881b08aec", + "dbe545f920bc3d704c43d834bab21e40df12ec9e16a619a3e6b3f08760c26aae6e4fd91f" + "ad00f745194794b74bb1baee", + "cdc39b12bba30da66fe9554713c05880ddc27afa4d2d151440f124c351fb9496dc950465" + "16b0921083347d64369846ac", + "797d0344e49f9ba87a187c50f664e5015d449e346b1a7bd9427c5be559fc58173651880d" + "5aadf053f81899d3368d6181"}, + {NID_secp384r1, NID_sha224, + "5a182bd174feb038dfae3346267156bf663167f713dea1ce936b0edb815cd9b8c8e4d411" + "c786ba2494a81442617255db7158b142e720d86c9b56680fb9efd4298cdd69079a281534" + "94c42a24251c7ad42ecf7e97eabc1b3997529b2a297cbad2474269b87a0b1e385f2d7f8b" + "6eb8d1cd75eaf7e91d1acbecd45d7b2bfbbe3216", + "e357d869857a52a06e1ece5593d16407022354780eb9a7cb8575cef327f877d22322c006" + "b3c8c11e3d7d296a708bdb6d", + "04ce9a2185a68d6094aa5849a6efe78b349946f7380f0c79aa9664246cfcc71a879e90ad" + "78a0474f58644c6a208168150e8354fa47673cb3e07d446521345706c5515584b2602f92" + "1c3b9c44dded9e2c3f90ce47adb36d7e5f9f95a8c5ad8af397", + "1e77367ac4e10924854d135ad2f2507f39e2bafdbce33ff256bcbe9a7329b8d27185218b" + "cc3550aafbe3390e84c77292", + "df3182d49ad70959fb0c95bc7312750ce70fc87f1a328d39d9b29ac05d31305ce7209d6c" + "24d13225d9567b489f7a187b", + "d812b05abab0e96de13291e1f0da6479444ed5cd9d959b76f6cb43d394769035364f7c83" + "1a104dc7b5bd9b4a8e64df64"}, + {NID_secp384r1, NID_sha224, + "aaa99fb1c71340d785a18f6f668e898c25cf7a0ac31d13c5b388b7233408493a5a109af6" + "d07065376b96f4903df7aba2b2af671a18772bb0472490d1240cde28967680727dd4acd4" + "7e0308920a75da857a6eeedee5b6586d45dff3d8a680599665aa895c89dd7770b824b7de" + "e477ac5e7602d409d3cc553090c970b50811dbab", + "745a18db47324a3710b993d115b2834339315e84e7006eafd889fb49bd3cc5a8b50c9052" + "6e65e6c53bddd2916d14bead", + "04f692578c6f77531210aef55c9e004ce3b66cf268c6900dde31a8bbb76e7562e3fb7624" + "2de34ca330d2501030aa11946640965833b28de926c46de060aa25beaeda98f8415a6b1e" + "3564aa77870cf4c89bd4fde92c8f5d9bf0eb41721586859d8e", + "11b9b36720abcac084efdb44c9f5b7d039e3250cb1e9c47850189ba3cfc1489d858b2a44" + "df357772b61d919c7e729c0f", + "02b252c99820cf50e6ce060ab55bd4f682276e29b4ae4197417432e6a7bfb8cf0bac89df" + "e105456af805d822cee77696", + "8e248bbf7d7028d63177e565c9d1666ee5be4d1ffbfffc9c7814b0cd38f74b98f3f2cd59" + "be42b9f132bfe5ee789cd96c"}, + {NID_secp384r1, NID_sha224, + "1fadfa8254d3a0b82d137cfdd82043d5dc1fef195d5297b09cc5cfb061f59c933451c0dc" + "2a11b4037f34f88dacb803251f8880c4b72585c3c196e6fb23484ca43a191f8e41b9b9a3" + "7e2e6fcaab6738c3c62d1c98e1c620bb788b7b51a04f998a510efdba0d3418622fe8ce20" + "3b3fcd553b9b4206365a39031797ad11e49745ec", + "93f20963ea5011ff4f26481e359309e634195f6289134087bd2e83eee008c962780a6797" + "84ee7ac6acda03d663ed27e0", + "040edcde3533ea019e18f1a3cd97b7962e8823dda36c389f8f9287549f796d11376392b8" + "a01c7a80f127a8f75795e04f5463d7c458dccfc02f5148d755d59f9bbc8e3c3ea3490877" + "7928440747795955741296abcdd5386676419ed8049fedb489", + "3ad308faf04c42ee5ac69d36bc0aa9a96aacf55ea0f27dac4f52e088f023d206340a6324" + "874ffad169ff80624de24c96", + "209b72f9aae72c4339813573c3a8408a9e0be641ca863d81d9d14c48d0bf4cd44a1a7985" + "cff07b5d68f3f9478475645b", + "f6292e599b22a76eda95393cf59f4745fa6c472effd1f781879ad9a4437a98080b0b07da" + "dad0c249631c682d2836a977"}, + {NID_secp384r1, NID_sha224, + "9ecb6f5ed3ba666a8536a81ef65012c2cb8b433508798d84708abb06dfb75503886f7838" + "4fb8c7a4d2d49ef539d9b8a0b60938c7f07471dda91f258b0d99691b38a8403a2bb3f956" + "bdfd09baba16d9b6877097a9b6213481b47a06e139d23ec7abad5668d21f912fdb70d31b" + "b9adf9b3ce80e308252fa81a51674f88d02db72b", + "f175e6ac42fd48ec9d652c10707c039c67c4cc61d8c45a373dcda6e4ca6c53e947e49c24" + "e01b48e7cdf92edfe6d316a1", + "04a40c64f595491ce15790a5a87fbe64c1800247b42acd08fe5257700719f46afc8acce0" + "e4ede0517a312092d5e3d089cdd565df9dc2f381cc0c5d84f382a43a98018524c0b4708a" + "44b3e2817f9719f29fbf9c15803591ed9b4790c5adaba9f433", + "812dcaa6d4f9a43ccc553288065d13761581485aa903a500a690ccafbd330ba4818c977b" + "98c4bb57f8a182a1afacfae9", + "d000f18d3e4c162ff0d16f662e6703e7a6f5bff7a333ed266fa4f44c752415946c34945c" + "342c20f739677186b1d80ab3", + "ae7f1271c89e0aaa238710d039ea73a69110cc28fcf426f2fe6754b63a59e417fa84f903" + "cf7dccb5468b43ff083bbfd5"}, + {NID_secp384r1, NID_sha224, + "e55bfca78d98e68d1b63688db12485578f36c489766f4d0bfaa0088433ff12133aaca455" + "805095f2e655940860958b3ead111d9070778ee3bbf3e47e43d9eba8b8d9b1fdf72f793f" + "cde2bcaa334f3e35fa2cca531ea7cf27fe9ccba741e38ac26129b2d612bf54a34e0ae6c1" + "66c0fef07fcd2b9ac253d7e041a500f7be7b8369", + "46c4f0b228b28aaa0ec8cfdf1d0ed3408b7ae049312fb9eaf5f3892720e68684cc8ad298" + "44a3dc9d110edf6916dfb8bb", + "0413ddec844731b7e30c467451df08ca11d6c581cb64abd8a257671cffd26f5ccad4df7b" + "9ee8924047a88a5d2d7567609cd74ca94f590fd1d13e190cc1e03c3da6c3faab15c7dda0" + "34af3deefee8aeec3628fa8b1978c54cfcd071baa319a46ec0", + "2a9dd520207c40a379cd4036adef9ee60fa8bc8c0d39b3ad91850ac93fd543f218b16885" + "81f23481a090b0e4c73792ac", + "94e08cca20fe3866f643f53ec65faf3f2b4d80cd9bcc8ff8f88bb28da9eada324fc2d048" + "908dd3d08a9e0ebb547731bc", + "8e6f82c4d3069b14f4c844b4ca133a9503493265c9f77a7d4775eda67de76798a23dd7ea" + "48e0ac3c337dd62bf058319d"}, + {NID_secp384r1, NID_sha224, + "02c6b3c83bd34b288d96409162aa4ff114e9d134bf948046eb5ebcc0c7fe9dfceadda83e" + "d69da2fac00c8840f6c702a3fc5e6959d70f7e8af923e99e4937232ae3b841ffefd2e62f" + "ab3671a7c94a0281b8ea5bc176add57c5c9b6893fe7f5d48ce7256b96510810c4e046168" + "a3c5be9843b84d5268a50349b3444341aa5490dd", + "1d7b71ef01d0d33a8513a3aed3cabb83829589c8021087a740ca65b570777089be721a61" + "172b874a22a1f81aef3f8bb6", + "048d2721370df8f097d5a69396249a315f6037dc7045b3da11eacae6d43036f779d5de70" + "53d101768b42cc2b1283a3aaeaa046039ae662141f9954d278183eaa2e03917fe58583e3" + "2d344074d59d60caa5b0949c53066525d5cca923e2f201502e", + "d1b25ad25581cad17e96f1d302251681fee5b2efbb71c3c15ff035b2145d015d18e0e52d" + "c3187ab5a560277b3a3929b0", + "d836f52b14c7391744868daa2d5cf27eb9380b9b6176195573d5b04842e9f2fc3794d6cf" + "877feafee63d11b05f6a6bee", + "8b89042fef2c04d4bd6c9d66a06a010514321d623a5f8d57ba5ac3686872eaabca9e0ba2" + "d058ae7028e870acf03ca32d"}, + {NID_secp384r1, NID_sha224, + "94f8bfbb9dd6c9b6193e84c2023a27dea00fd48356909faec2161972439686c146184f80" + "686bc09e1a698af7df9dea3d24d9e9fd6d7348a146339c839282cf8984345dc6a51096d7" + "4ad238c35233012ad729f262481ec7cd6488f13a6ebac3f3d23438c7ccb5a66e2bf820e9" + "2b71c730bb12fd64ea1770d1f892e5b1e14a9e5c", + "cf53bdd4c91fe5aa4d82f116bd68153c907963fa3c9d478c9462bb03c79039493a8eaeb8" + "55773f2df37e4e551d509dcd", + "043a65b26c08102b44838f8c2327ea080daf1e4fc45bb279ce03af13a2f9575f0fff9e2e" + "4423a58594ce95d1e710b590cefe9dcbcb2ec6e8bd8ed3af3ff0aa619e900cc8bab3f50f" + "6e5f79fac09164fb6a2077cc4f1fed3e9ec6899e91db329bf3", + "df31908c9289d1fe25e055df199591b23e266433ab8657cc82cb3bca96b88720e229f8df" + "d42d8b78af7db69342430bca", + "6770eea9369d6718e60dd0b91aee845ff7ed7e0fcc91675f56d32e5227fd3a4612bbcb15" + "56fe94a989b9e3bcc25bb20e", + "c43072f706c98126d06a82b04251e3ecb0ba66c4bb6cd7c025919b9cc6019cdc635256d2" + "a7fa017b806b1e88649d2c0d"}, + {NID_secp384r1, NID_sha256, + "663b12ebf44b7ed3872b385477381f4b11adeb0aec9e0e2478776313d536376dc8fd5f3c" + "715bb6ddf32c01ee1d6f8b731785732c0d8441df636d8145577e7b3138e43c32a61bc124" + "2e0e73d62d624cdc924856076bdbbf1ec04ad4420732ef0c53d42479a08235fcfc4db4d8" + "69c4eb2828c73928cdc3e3758362d1b770809997", + "c602bc74a34592c311a6569661e0832c84f7207274676cc42a89f058162630184b52f0d9" + "9b855a7783c987476d7f9e6b", + "040400193b21f07cd059826e9453d3e96dd145041c97d49ff6b7047f86bb0b0439e90927" + "4cb9c282bfab88674c0765bc75f70d89c52acbc70468d2c5ae75c76d7f69b76af62dcf95" + "e99eba5dd11adf8f42ec9a425b0c5ec98e2f234a926b82a147", + "c10b5c25c4683d0b7827d0d88697cdc0932496b5299b798c0dd1e7af6cc757ccb30fcd3d" + "36ead4a804877e24f3a32443", + "b11db00cdaf53286d4483f38cd02785948477ed7ebc2ad609054551da0ab0359978c6185" + "1788aa2ec3267946d440e878", + "16007873c5b0604ce68112a8fee973e8e2b6e3319c683a762ff5065a076512d7c98b27e7" + "4b7887671048ac027df8cbf2"}, + {NID_secp384r1, NID_sha256, + "784d7f4686c01bea32cb6cab8c089fb25c341080d9832e04feac6ea63a341079cbd562a7" + "5365c63cf7e63e7e1dddc9e99db75ccee59c5295340c2bba36f457690a8f05c62ab001e3" + "d6b333780117d1456a9c8b27d6c2504db9c1428dad8ba797a4419914fcc636f0f14ede3f" + "ba49b023b12a77a2176b0b8ff55a895dcaf8dbce", + "0287f62a5aa8432ff5e95618ec8f9ccaa870dde99c30b51b7673378efe4ccac598f4bbeb" + "bfd8993f9abb747b6ad638b9", + "04b36418a3014074ec9bbcc6a4b2367a4fb464cca7ec0a324cb68670d5c5e03e7a7eb07d" + "a117c5ea50b665ab62bd02a4914ea299c30e7d76e2c5905babada2d3bb4ee5eb35a5a236" + "05cdb0d5133471a53eb9e6758e49105a4eaf29d2267ba84ef2", + "935eeab3edeb281fbd4eead0d9c0babd4b10ff18a31663ee9de3bfa9ae8f9d266441158e" + "a31c889ded9b3c592da77fd7", + "738f9cb28f3b991335ef17b62559255faf75cad370a222464a492e27bb173c7f16b22100" + "ada6b695875c7e4b1a28f158", + "bc998c30e1491cd5d60dc7d1c38333165efe036b2a78db9b8f0e85ee68619cfba654e11a" + "e5ca5ee5a87099c27cf22442"}, + {NID_secp384r1, NID_sha256, + "45e47fccc5bd6801f237cdbeac8f66ebc75f8b71a6da556d2e002352bd85bf269b6bc7c9" + "28d7bb1b0422601e4dd80b29d5906f8fcac212fe0eaaf52eda552303259cbcbe532e60ab" + "d3d38d786a45e39a2875bce675800a3eaeb9e42983d9fd9031180abd9adccc9ba30c6c19" + "8b4202c4dd70f241e969a3c412724b9b595bc28a", + "d44d3108873977036c9b97e03f914cba2f5775b68c425d550995574081191da764acc501" + "96f6d2508082a150af5cd41f", + "04c703835d723c85c643260379d8445b0c816fe9534351921e14a8e147fe140ec7b0c4d7" + "04f8dc66a232b2333b28f03deec5d0bb054053fd86c26f147c4966757aa04b00513a02d4" + "27b8d06c16055c607955efdc518d338abfe7927c195dc28588", + "c80f63e080650c8a21e4f63a62ec909adfb7d877f365d11ee1cb260baf112eb4730c161c" + "1d99dba98fc0d5bbd00dc97d", + "81de2810cde421997013513951a3d537c51a013110d6dbb29251410bcb5ba001a9686b84" + "90f1e581e282fd2ed0974b22", + "9cab0bbaffe91c7677ec3dd1f17060211a3cc0be574cbca064aa8c4b66ba6e64f3d80e83" + "da895042ca32d311c388d950"}, + {NID_secp384r1, NID_sha256, + "c33ff63b4e6891e00b2349b3f2907c417ca355560544a91e24a7a0ee260d6850aeded29f" + "c0176b6039ca6187e8333391047cceaf14b1077df8f147dad84d36b2dac5666dc2f69dc9" + "b58b88cc73956efdb3b47f91831d5875051c76b0c4e9fc087012a1f03eeee85d6745b46a" + "a50bd9cb0110c2c94508765cec162ee1aa841d73", + "d5b72cbb6ec68aca46b9c27ad992afd8ffa02cb3067b234fcfa6e272e3b31be760695ff7" + "df988b57663057ab19dd65e3", + "04135a6542612f1468d8a4d01ff1914e532b1dd64d3627db9d403dc325651d3f82b0f6f0" + "fd1dbdeca2be967c4fb3793b5fcbbd40f6d3a38d0dfb64582ff4789d7b268241bc0c36de" + "2884bccfaeeff3b7b2b46a30bb35719804e0d11124b4e7f480", + "9da6de7c87c101b68db64fea40d97f8ad974ceb88224c6796c690cbf61b8bd8eede8470b" + "3caf6e6106b66cf3f0eebd55", + "17840911ecdf6ae0428b2634f442163c2c11b8dbf0cc7a5596fbe4d33e3e52f9d99e99ad" + "169867b1f39e89c9180cedc2", + "dd7ed67e480866d0474379ea4afff72870746f4feef2153be42f13bf472b1613d7faa5c0" + "abb7f7464070f94d7cf3f234"}, + {NID_secp384r1, NID_sha256, + "f562f2b9d84b0e96a52532c3b43c39c8018c738bd8dc3797a7de7353971b2729d522d696" + "1b1f2e4df3f6a4bd3653e6d72b74fc0dba92ab939c4b542e994e5db6dd8ed4f56f651e69" + "9052e791237ae1f552f990ad156226ae8f7bf17fcbfa564f749604f97e9df0879d509857" + "47d981422a23040fe52f5ec74caf1d4aaad8a710", + "218ee54a71ef2ccf012aca231fee28a2c665fc395ff5cd20bde9b8df598c282664abf915" + "9c5b3923132983f945056d93", + "0401989ff07a7a452d8084937448be946bfedac4049cea34b3db6f7c91d07d69e926cce0" + "af3d6e88855a28120cf3dba8dfeb064e029d7539d4b301aabafe8de8870162deffe6383b" + "c63cc005add6ee1d5ced4a5761219c60cd58ad5b2a7c74aaa9", + "c5d39b436d851d94691f5f4aa9ef447f7989d984f279ae8b091aef5449ac062bcc056774" + "0f914624ad5b99fc32f9af0b", + "07d5b1b12877e8cb5e0aa5e71eeeb17bf0aa203064c7e98b3a1798a74dc9717252dc47c7" + "f06aaf1d5fe15b868323bbb9", + "69428cf101a7af5d08161a9fd7af212e02e33b6062aebdce4c96bf3a0684b5394cb902ca" + "7c2dec6e2f01f40c4576009d"}, + {NID_secp384r1, NID_sha256, + "ace953ae851f571d71779aa120915f27450b236da23e9106f8d0756abdd2586193794122" + "8d225d5fb1aa1b1ebf759b1e326aeb3b6cd0cd87edd2ab9f6a7ad67b63d2c501d6a550ed" + "b2e7c9d216cc8af78dd33546af64d00abed4d0d2cfc5c9a7b5a055dbe8f7547902d185cf" + "46937314832bc5c602419a82ab83dbd9d3bd5aff", + "e6ab171f6937c000e144950801ad91023ae8e8476856c2592d9f7d5bb7180fd729211803" + "d39a412ead6c0be761cfa5d1", + "0438bc42b8c9d8866d09b214398d584b1b24a488dfacc3420d1e9506aa825b19fdf1ba74" + "e7b8f547f47b571467fe8c4d1f5179d62668d3f6a7ab5c8e3761a685e12008fb87d0529a" + "97645f65cfb5364376c1b6682e0ffcddd0bcd995c41d013ad3", + "05e9718aea9669c9e434f73866da5f252dec6d24c47a1c4ee3233450b6ec626de9746ebe" + "095b285558dfc89fc1b622fe", + "df9bab9dd1f22ec6f27116f38831cb2089aa78aa8c073024a0faddd9a48e810a5e8e2cad" + "d80fbf8dbd6088c71fe30b5b", + "1e0e8718567d12d18558c57f9e87a755c309e4ffb497335a3adfc8d7475ce8fd882d5dc3" + "3a8f5a16274b7ad74bb7862a"}, + {NID_secp384r1, NID_sha256, + "9635ab832240be95301bedb94c5aec169eedc198cbbdfedcf41e9b586143d829b4597a6b" + "2a81902828332825fd84a785f187a3894e21bd99d22c4f94dcf34453fc052f15ec64d144" + "7c932cb38fcdd30b7be851963409c11881438cbaad7e96f9efbde317f2235d66af804477" + "a5dfe9f0c51448383830050ecf228889f83631e1", + "14acd516c7198798fd42ab0684d18df1cd1c99e304312752b3035bed6535a8975dff8acf" + "c2ba1675787c817b5bff6960", + "0429909d143cf7ee9c74b11d52f1a8f3ebd4a720c135612ca5618d3f432f03a95602ee75" + "a2057e1d7aab51d0648ac0b334404b6c5adffbadfa1b0380ae89fed96ec1ca16cc28661e" + "623d0f1c8b130fbaa96dd7257eae2bf03c2d3dcbc3dbc82c58", + "7f623c103eaa9099a0462e55f80519c565adaeffcb57a29993f3a8a92e63a560be8f0fb9" + "d23dc80bff1064bb41abad79", + "932ab291950c16b2b19a8036cd2e905714c6229cb190a73b3ea49c48dd8e76063a453c7c" + "3267a57597d2973678216296", + "d17d4c5ddbb9c27beebf526f113b416c8abfad53d11c4224813c7f351ba41a77dd4e77d6" + "e4a65bef2c9f62cc37a469a5"}, + {NID_secp384r1, NID_sha256, + "d98b9a7d4fe9d0fd95de5056af164a8b7882cd34ab5bde83a2abb32dc361eb56a479a3a6" + "119db3b91dcad26a42d2206749567f0d97c34a981a91fc734921821a429f6a53401743a5" + "c406ba9d560f956203abc9d1f32f1a13e7d7b290f75c95fdbf857ea597021461c06a3aac" + "fa554ede3d69e4ff03bbbee5b7463ec77de2b3b2", + "2e780550984f3a00cb1e412429b33493c6eb6cd86d12f9d80588c247dcf567bd04296d2d" + "4b24b889d9c54954b7f38f57", + "0437dac42ef04663238443ef33e8addee2e78c40d50a1751913a7f5c37d1f23a26c7f86e" + "16055c788b8ca9554f06b2f2efbbed1549652904e3d00c39b01cc0460dbaf3185e6190c2" + "705677a9701de1fe56dff4f4d8418ee15059ff8fc36800982d", + "b788ca82811b0d4e4841765c71eafaa1e575378beedcd3860d8b92db3d070ac5aef7c425" + "067860fbee6c50cf0c642bbb", + "7292b3851870daeb2555a8a2fb198ead78739fcfb75327e5c32a82c6b77d58983e5ad548" + "ccb75dcf9411039c9576d9b9", + "a378c61802d9f1dd062b6e18f16416a954018f77df4df95ad1b983570377d5cfce4cc786" + "1759e802c52f81abc4f49aac"}, + {NID_secp384r1, NID_sha256, + "1b4c754ac1c28dc415a71eac816bde68de7e8db66409af835838c5bb2c605111108a3bf1" + "3606ed5d8ade5ed72e50503e0de664416393d178ea4eec834d8d6f15039847b410080fd5" + "529b426e5aadd8451c20ebd92d787921f33e147bcbeb327b104d4aab1157fc1df33e4d76" + "8404b5ccb7110055c2508c600f429fd0c21b5784", + "a24d0fe90808aecc5d90626d7e6da7c9be5dfd4e1233c7f0f71f1b7c1c6fd318fafe1855" + "9c94718f044cf02ed5107cb1", + "04ec8ae1fb9bb88589d27d6f27d790392853396f37bc0c381631d85800fc668eea0886bf" + "1c6cff801147df19778d5b16041e1a8336c1e2506f8ee388b55cc648ae73b9295ea78467" + "979d2affb364536fad28120f51ec62a67cbb6ce7784780389f", + "755d025509b73cf1ea8817beb772ad150b4c17a52378be187daffe3db0158921e5e552d1" + "ca3c85df28519939f3cb794d", + "23ff2ffa62bbd427d49995d9c9950116e0d5a06ef076a4553448bc109e6482c5e87d4c83" + "3bc88de0bc722bc98cae2e61", + "9aea13d487c3ea6917e16374caafcf0321c12a80d28902dd8cd81909bb04b8c439e2491e" + "504756742d0d0bfb15a9c34c"}, + {NID_secp384r1, NID_sha256, + "3cd8c053741dd9f974c6c5dbf8a1e5728e9b5eafb1cbcfc3452f5fbbda32a8c7564dee15" + "7e8d902c52514361da6d972934a56b3276e2a9379e328e24282e0db697c5bc29090fc489" + "ec46b7b188325dd4e96494c250de0f4a89fe2ccf919eaefcfb50c288113e6df92714feb7" + "f46e0822478c796d0f4ff3447a32997e892693ce", + "1c172e25732555afee7ded67a496f3f11babc0875898619f4519c29321e201e8ba1149f2" + "c20b48e5efba235d58fea7c3", + "0413e9e2c8bbcfe26e8f5f43c86268c5980ee693236a6b8777f3a7323718baa21005b482" + "d08aafc6fa6e3667d91353544c9ba181b3ee505be030f87ecd249b00670a791489b42af0" + "4976013483ff95b630c91c01e95757e906129f2f9b4ce719a8", + "08aec9a9e58bdc028805eb5dc86073d05fff1f5fb3fd17f510fc08f9272d84ba7aa66b6f" + "77d84fe6360bd538192bf01a", + "2b4337c3dfbc886ffad7858ae2480cb62227e12205a70361c42f1a5ca9e658ee30fc3cf4" + "030d85bd065edad83b99821f", + "2550cef8574bf17fb3d6b0c9d04ab266962bac3621bac233ff2e4989712d2a4a07171c0a" + "ebd3040cd6a32c3bd3efb8b5"}, + {NID_secp384r1, NID_sha256, + "ed955dda6d9650124804d3deb6aeef900e520faf98b1ef6f14efcada7ca2433f09329b70" + "897305e59c89024d76e466b28fe02cb2a9b12e2478c66470259d7c282137a19e5a04ffad" + "ea55245c0f34a681593fedc42931d8b3321b3d82e9cc102cd00540ad311ec7bd8c9d06db" + "21bea4ca3dc74d98931ae0d40494aefc2345132c", + "5b96555dbd602e71d4d5d3aee19fd1ea084ee23d4f55c10937056762bc2015cbded2e898" + "a487f5482ab7e1e971245907", + "046e14c17bb831b0112d7f3543c5fd17c78379a516c9e0539b03b8b4bfdead2820343fc8" + "4b0382807573ded6c4d97b70037f60021d2de77546db666721c9aec84c3e2ba8de0ba774" + "43600dc77e6839bbf9316271adb22d4cb47d08f745ecb1dafd", + "7ad6f4ffd2b429ba10c6f112f800cacf1ad508cf8eba880893bb9659c1ddaaec57dcdc09" + "3a114500460d457bdde324f2", + "faea950ca513806bc59028c638d6302ffc86978c3ff1f06db015dd7c4777050186cb8dd8" + "71f5e926e1416539c1939c2f", + "2c592240eabb8a1f9878e1b5c9d5d3ced7b3a7ae571f5a86494ed2ca567a36eb72e7bea8" + "934bded29594bccf67ca84bd"}, + {NID_secp384r1, NID_sha256, + "ce395b001da2a58e49691605d44af4206306f62f561bf2394060d2a5591a350277166bed" + "043819035f1e60b5b3fb5ae113ddd0473f8ef6b2b050c472c2a264e1d8b3ca82a4f158c4" + "0f2d78d9ce5e5ea6de243f2e1f13f47f6c6f403b270912c81c636be35b396ca58468b3fb" + "60aa83911d61441a0528d973bc31f965d4059080", + "8df9c3c710a25192f3dea970910bb3784e3509874cccf4334823eb9f7a8d05b067f2d812" + "d61e878e24b093089a0b8245", + "0492c9e32b20cbe6d4ed0727c6c942cf804a72031d6dfd69078b5e78ebce2d192268f1f5" + "e2abce5aaf1f8d6a35f136837fd5167905fa7689e03b9fb1487c566f62b36f2bc1c4a2bf" + "b6a836113b5c8d46f7c1ca51b628b14397fbc06ec9a07f4849", + "258dd05919735cd48627c9fe9fac5c252604aa7c2ae0460d7c1149cd96b7bd2ba195ad39" + "3bf392a2499f06aead5ba050", + "413793bcce52eda0f5b675a8d687cce86d5c9e1659b38a89e96246b5e05f8b0934d17dbb" + "a3b2ea44c838aa5fd87125d1", + "ce7309fc2d6e3438818a1a29a997410b025b0403de20795b97c86c46034a6b02afeed279" + "aeb06522d4de941bfdf50469"}, + {NID_secp384r1, NID_sha256, + "ffefe316455ae4ffdb890bb804bf7d31424ea060ecacff419d0f7134ff76ad434063c0ec" + "0f8bb7059584d3a03f3625bb9e9f66ace1a47ac4b8f3e76fc7c420c55edb1427d1fa15b3" + "87ad73d02b0595c4e74321be8822752230a0dcfb85d60bfa186da7623a8ec3eb1633f0a2" + "94b23ae87216b14ccee9ef56418dcfab9427371e", + "6002cb01ad2ce6e7101665d47729c863b6435c3875de57a93f99da834f73e3e6e2b3880e" + "06de3e6bd1d51ea1807ab0d7", + "04e4216e1a20af8e8e3e74653ac016545001066e53e64af679ad1c85841bb475aed3e00e" + "ad052ae9955f48d675ff4ace568804c17641be21d4c6386902c9c5c888af25d97ca38370" + "3ea4a85cf93bbab360c0bbd2993374da499a303778650270b9", + "6b9507fd2844df0949f8b67b6fde986e50173713ac03df2edf65cb339859321cd3a2b9aa" + "b8356f95dec62460ab19c822", + "018891f6381ed358b422f79a299cf0789cee783ba388af4d82cbbe17f3709751b7fd9400" + "e9702820c28b9afc62fdf489", + "aef73bd590802b2fd2a65c4f7fec89f9b24ecc199a69254785925f334cd1977c5e1f858b" + "d9830d7d7d243ea707b1af0b"}, + {NID_secp384r1, NID_sha256, + "304bccb718b3a9e12669913490cc5bcc1979287b56c628fad706c354241e88d10e81445a" + "2853e3fc32ece094ba1abc3fdcab61da27f9a0fca739371049fed462ee6b08fa31cde127" + "20f8144a6f00ce9b1a7a6eadd231f126717074b4efb5c72ce673ca5859000a436f67a338" + "d698759f12c461247c45a361fb6cb661fdbe6714", + "d8559c3543afc6f7b3dc037a687bad2630283757ba7862fd23ed14e2151a4cf5fed3d249" + "268f780e0b96b6b46274a2d5", + "045f94223918f2ec9f0a08342cb99e724881c92453957c59672860f69daac01b660331a0" + "f5845e50f1f27766b219c89e7ed76d83396130d10d1168d76c7fc83742ffffbe66d9f4da" + "4ca3f95f5ad6dac8cc7bb65d16d317d37aa99fdbf30ec7439c", + "4ad5a92b5b8e170b71c8a7ed419dc624c7680004562b8d16a37b6e639f581ce81d5f0d98" + "cce44d54c4e7136229148340", + "f7baa6a5488ab462ea59aa31a36402b15880c68110b6069f51ede0c3b52a7b1e5bf926fd" + "be95768931b7d5f87058835c", + "28b1c4ef448a432f7c91b98b0c6471691e888211b6af907369a8930859b8cdb2e94f466a" + "44f4e52f46df9b0d65e35de6"}, + {NID_secp384r1, NID_sha256, + "64f9f05c2805acf59c047b5f5d2e20c39277b6d6380f70f87b72327a76170b872bfe4b25" + "c451602acfb6a631bb885e2655aee8abe44f69c90fb21ffde03cef2a452c468c6369867d" + "fd8aa26ac24e16aa53b292375a8d8fbf988e302bf00088e4c061aa12c421d8fe3cbd7273" + "b0e8993701df1c59431f436a08b8e15bd123d133", + "b9208cbfd186ddfa3efd5b71342ae1efb01a13ebc4c2a992a2cbee7254b7846a4252ece1" + "104b89d13d835911f8511224", + "04166e6d96cb60d916fd19888a2dd945a3306ff0d7b0a5e30729f47d3dac3de2be3fd5cd" + "7437e9a80d6c48cf960d2d36f8e6b2b70f131092ae210f29cc6bad701318bddb31bddf92" + "1695855c6208941100d0cee5d10799f8b835afe3ea510e8229", + "da706ab5f61531f2378b3c0a2b342108cd119eadaa88b859df64923bccfb0ec2393fd312" + "826f65c15a6587d1d460015b", + "d9124c42858080c62400e4d4d8136304e03d910cbe9b9b3487f4d27c7e0540a314d34bef" + "8c850045c8746ca631c11c42", + "bbf6424a3b70166fa799f49e918439d515327039258ef9bd88435a59c9c19659f8ec3c86" + "60720b0c08354ff60e0f5a76"}, + {NID_secp384r1, NID_sha384, + "6b45d88037392e1371d9fd1cd174e9c1838d11c3d6133dc17e65fa0c485dcca9f52d41b6" + "0161246039e42ec784d49400bffdb51459f5de654091301a09378f93464d52118b48d44b" + "30d781eb1dbed09da11fb4c818dbd442d161aba4b9edc79f05e4b7e401651395b53bd8b5" + "bd3f2aaa6a00877fa9b45cadb8e648550b4c6cbe", + "201b432d8df14324182d6261db3e4b3f46a8284482d52e370da41e6cbdf45ec2952f5db7" + "ccbce3bc29449f4fb080ac97", + "04c2b47944fb5de342d03285880177ca5f7d0f2fcad7678cce4229d6e1932fcac11bfc3c" + "3e97d942a3c56bf34123013dbf37257906a8223866eda0743c519616a76a758ae58aee81" + "c5fd35fbf3a855b7754a36d4a0672df95d6c44a81cf7620c2d", + "dcedabf85978e090f733c6e16646fa34df9ded6e5ce28c6676a00f58a25283db8885e16c" + "e5bf97f917c81e1f25c9c771", + "50835a9251bad008106177ef004b091a1e4235cd0da84fff54542b0ed755c1d6f251609d" + "14ecf18f9e1ddfe69b946e32", + "0475f3d30c6463b646e8d3bf2455830314611cbde404be518b14464fdb195fdcc92eb222" + "e61f426a4a592c00a6a89721"}, + {NID_secp384r1, NID_sha384, + "d768f41e6e8ec2125d6cf5786d1ba96668ac6566c5cdbbe407f7f2051f3ad6b1acdbfe13" + "edf0d0a86fa110f405406b69085219b5a234ebdb93153241f785d45811b3540d1c37424c" + "c7194424787a51b79679266484c787fb1ded6d1a26b9567d5ea68f04be416caf3be9bd2c" + "afa208fe2a9e234d3ae557c65d3fe6da4cb48da4", + "23d9f4ea6d87b7d6163d64256e3449255db14786401a51daa7847161bf56d494325ad2ac" + "8ba928394e01061d882c3528", + "045d42d6301c54a438f65970bae2a098cbc567e98840006e356221966c86d82e8eca515b" + "ca850eaa3cd41f175f03a0cbfd4aef5a0ceece95d382bd70ab5ce1cb77408bae42b51a08" + "816d5e5e1d3da8c18fcc95564a752730b0aabea983ccea4e2e", + "67ba379366049008593eac124f59ab017358892ee0c063d38f3758bb849fd25d867c3561" + "563cac1532a323b228dc0890", + "fb318f4cb1276282bb43f733a7fb7c567ce94f4d02924fc758635ab2d1107108bf159b85" + "db080cdc3b30fbb5400016f3", + "588e3d7af5da03eae255ecb1813100d95edc243476b724b22db8e85377660d7645ddc1c2" + "c2ee4eaea8b683dbe22f86ca"}, + {NID_secp384r1, NID_sha384, + "6af6652e92a17b7898e40b6776fabaf0d74cf88d8f0ebfa6088309cbe09fac472eeac2aa" + "8ea96b8c12e993d14c93f8ef4e8b547afe7ae5e4f3973170b35deb3239898918c70c1056" + "332c3f894cd643d2d9b93c2561aac069577bbab45803250a31cd62226cab94d8cba7261d" + "ce9fe88c210c212b54329d76a273522c8ba91ddf", + "b5f670e98d8befc46f6f51fb2997069550c2a52ebfb4e5e25dd905352d9ef89eed5c2ecd" + "16521853aadb1b52b8c42ae6", + "0444ffb2a3a95e12d87c72b5ea0a8a7cb89f56b3bd46342b2303608d7216301c21b5d292" + "1d80b6628dc512ccb84e2fc278e4c1002f1828abaec768cadcb7cf42fbf93b1709ccae6d" + "f5b134c41fae2b9a188bfbe1eccff0bd348517d7227f2071a6", + "229e67638f712f57bea4c2b02279d5ccad1e7c9e201c77f6f01aeb81ea90e62b44b2d210" + "7fd66d35e56608fff65e28e4", + "b11db592e4ebc75b6472b879b1d8ce57452c615aef20f67a280f8bca9b11a30ad4ac9d69" + "541258c7dd5d0b4ab8dd7d49", + "4eb51db8004e46d438359abf060a9444616cb46b4f99c9a05b53ba6df02e914c9c0b6cc3" + "a9791d804d2e4c0984dab1cc"}, + {NID_secp384r1, NID_sha384, + "b96d74b2265dd895d94e25092fb9262dc4f2f7a328a3c0c3da134b2d0a4e2058ca994e34" + "45c5ff4f812738e1b0c0f7a126486942a12e674a21f22d0886d68df2375f41685d694d48" + "7a718024933a7c4306f33f1a4267d469c530b0fed4e7dea520a19dd68bf0203cc87cad65" + "2260ed43b7b23f6ed140d3085875190191a0381a", + "de5975d8932533f092e76295ed6b23f10fc5fba48bfb82c6cc714826baf0126813247f8b" + "d51d5738503654ab22459976", + "04f1fabafc01fec7e96d982528d9ef3a2a18b7fe8ae0fa0673977341c7ae4ae8d8d3d674" + "20343d013a984f5f61da29ae381a31cf902c46343d01b2ebb614bc789c313b5f91f9302a" + "d9418e9c797563e2fa3d44500f47b4e26ad8fdec1a816d1dcf", + "fc5940e661542436f9265c34bce407eff6364bd471aa79b90c906d923e15c9ed96eea4e8" + "6f3238ea86161d13b7d9359d", + "c2fbdd6a56789024082173725d797ef9fd6accb6ae664b7260f9e83cb8ab2490428c8b9c" + "52e153612295432fec4d59cd", + "8056c5bb57f41f73082888b234fcda320a33250b5da012ba1fdb4924355ae679012d81d2" + "c08fc0f8634c708a4833232f"}, + {NID_secp384r1, NID_sha384, + "7cec7480a037ff40c232c1d2d6e8cd4c080bbeecdaf3886fccc9f129bb6d202c316eca76" + "c8ad4e76079afe622f833a16f4907e817260c1fa68b10c7a151a37eb8c036b057ed4652c" + "353db4b4a34b37c9a2b300fb5f5fcfb8aa8adae13db359160f70a9241546140e550af007" + "3468683377e6771b6508327408c245d78911c2cc", + "11e0d470dc31fab0f5722f87b74a6c8d7414115e58ceb38bfcdced367beac3adbf1fe9ba" + "5a04f72e978b1eb54597eabc", + "041950166989164cbfd97968c7e8adb6fbca1873ebef811ea259eb48b7d584627f0e6d6c" + "64defe23cbc95236505a252aa141ef424b5cb076d4e32accd9250ea75fcf4ffd81814040" + "c050d58c0a29b06be11edf67c911b403e418b7277417e52906", + "e56904028226eb04f8d071e3f9cefec91075a81ca0fa87b44cae148fe1ce9827b5d1910d" + "b2336d0eb9813ddba3e4d7b5", + "c38ef30f55624e8935680c29f8c24824877cf48ffc0ef015e62de1068893353030d1193b" + "f9d34237d7ce6ba92c98b0fe", + "651b8c3d5c9d5b936d300802a06d82ad54f7b1ba4327b2f031c0c5b0cb215ad4354edc7f" + "932d934e877dfa1cf51b13fe"}, + {NID_secp384r1, NID_sha384, + "00ce978603229710345c9ad7c1c2dba3596b196528eea25bd822d43ca8f76a024e292177" + "03dd0652c8a615284fc3edcc1c5ad1c8d5a8521c8e104c016a24e50c2e25066dcb56596f" + "913b872767e3627aa3e55ec812e9fdac7c2f1beade83aef093e24c9c953982adf431a776" + "880ae4583be158e11cdab1cbca3ad3a66900213d", + "5c6bbf9fbcbb7b97c9535f57b431ed1ccae1945b7e8a4f1b032016b07810bd24a9e20055" + "c0e9306650df59ef7e2cd8c2", + "042e01c5b59e619e00b79060a1e8ef695472e23bf9a511fc3d5ed77a334a242557098e40" + "972713732c5291c97adf9cf2cf563e3fe4ad807e803b9e961b08da4dde4cea8925649da0" + "d93221ce4cdceabc6a1db7612180a8c6bef3579c65539b97e9", + "03d23f1277b949cb6380211ad9d338e6f76c3eedac95989b91d0243cfb734a54b19bca45" + "a5d13d6a4b9f815d919eea77", + "abab65308f0b79c4f3a9ff28dd490acb0c320434094cef93e75adfe17e5820dc1f77544c" + "faaacdc8cf9ac8b38e174bef", + "11b783d879a6de054b316af7d56e526c3dce96c85289122e3ad927cfa77bfc50b4a96c97" + "f85b1b8221be2df083ff58fb"}, + {NID_secp384r1, NID_sha384, + "54a255c18692c6162a46add176a0ae8361dcb8948f092d8d7bac83e160431794d3b98128" + "49bf1994bcdcfba56e8540c8a9ee5b93414548f2a653191b6bb28bda8dc70d45cc1b92a4" + "89f58a2d54f85766cb3c90de7dd88e690d8ebc9a79987eee1989df35af5e35522f83d85c" + "48dda89863171c8b0bf4853ae28c2ac45c764416", + "ffc7dedeff8343721f72046bc3c126626c177b0e48e247f44fd61f8469d4d5f0a74147fa" + "baa334495cc1f986ebc5f0b1", + "0451c78c979452edd53b563f63eb3e854a5b23e87f1b2103942b65f77d024471f75c8ce1" + "cc0dfef83292b368112aa5126e313e6aaf09caa3ba30f13072b2134878f14a4a01ee8632" + "6cccbff3d079b4df097dc57985e8c8c834a10cb9d766169366", + "c3de91dbe4f777698773da70dd610ef1a7efe4dc00d734399c7dd100728006a502822a5a" + "7ff9129ffd8adf6c1fc1211a", + "f4f477855819ad8b1763f53691b76afbc4a31a638b1e08c293f9bcd55decf797f9913ca1" + "28d4b45b2e2ea3e82c6cf565", + "7c26be29569ef95480a6d0c1af49dc10a51a0a8931345e48c0c39498bfb94d62962980b5" + "6143a7b41a2fddc8794c1b7f"}, + {NID_secp384r1, NID_sha384, + "692a78f90d4f9d5aee5da536314a78d68c1feabbfe5d1ccea7f6059a66c4b310f8051c41" + "1c409ccf6e19a0cbd8b8e100c48317fe8c6d4f8a638b9551ce7ee178020f04f7da3001a0" + "e6855225fb3c9b375e4ed964588a1a41a095f3f476c42d52ffd23ce1702c93b56d4425d3" + "befcf75d0951b6fd5c05b05455bdaf205fe70ca2", + "adca364ef144a21df64b163615e8349cf74ee9dbf728104215c532073a7f74e2f6738577" + "9f7f74ab344cc3c7da061cf6", + "04ef948daae68242330a7358ef73f23b56c07e37126266db3fa6eea233a04a9b3e491523" + "3dd6754427cd4b71b75854077d009453ef1828eaff9e17c856d4fc1895ab60051312c3e1" + "db1e3766566438b2990cbf9945c2545619e3e0145bc6a79004", + "a2da3fae2e6da3cf11b49861afb34fba357fea89f54b35ce5ed7434ae09103fe53e2be75" + "b93fc579fedf919f6d5e407e", + "dda994b9c428b57e9f8bbaebba0d682e3aac6ed828e3a1e99a7fc4c804bff8df151137f5" + "39c7389d80e23d9f3ee497bf", + "a0d6b10ceffd0e1b29cf784476f9173ba6ecd2cfc7929725f2d6e24e0db5a4721683640e" + "aa2bbe151fb57560f9ce594b"}, + {NID_secp384r1, NID_sha384, + "3b309bb912ab2a51681451ed18ad79e95d968abc35423a67036a02af92f575a0c89f1b66" + "8afe22c7037ad1199e757a8f06b281c33e9a40bab69c9874e0bb680b905d909b9dc24a9f" + "e89bb3d7f7d47082b25093c59754f8c19d1f81f30334a8cdd50a3cb72f96d4b3c305e60a" + "439a7e93aeb640dd3c8de37d63c60fb469c2d3ed", + "39bea008ec8a217866dcbdb1b93da34d1d3e851d011df9ef44b7828b3453a54aa70f1df9" + "932170804eacd207e4f7e91d", + "045709ec4305a9c3271c304face6c148142490b827a73a4c17affcfd01fffd7eaa65d2fd" + "edfa2419fc64ed910823513fafb083cda1cf3be6371b6c06e729ea6299213428db571193" + "47247ec1fcd44204386cc0bca3f452d9d864b39efbfc89d6b2", + "3c90cc7b6984056f570542a51cbe497ce4c11aeae8fc35e8fd6a0d9adeb650e8644f9d1d" + "5e4341b5adc81e27f284c08f", + "d13646895afb1bfd1953551bb922809c95ad65d6abe94eb3719c899aa1f6dba6b01222c7" + "f283900fe98628b7597b6ea6", + "4a9a38afda04c0a6b0058943b679bd02205b14d0f3d49b8f31aac289129780cdb1c555de" + "f8c3f9106b478729e0c7efaa"}, + {NID_secp384r1, NID_sha384, + "f072b72b8783289463da118613c43824d11441dba364c289de03ff5fab3a6f60e85957d8" + "ff211f1cb62fa90216fb727106f692e5ae0844b11b710e5a12c69df3ed895b94e8769ecd" + "15ff433762d6e8e94d8e6a72645b213b0231344e2c968056766c5dd6b5a5df41971858b8" + "5e99afbf859400f839b42cd129068efabeea4a26", + "e849cf948b241362e3e20c458b52df044f2a72deb0f41c1bb0673e7c04cdd70811215059" + "032b5ca3cc69c345dcce4cf7", + "0406c037a0cbf43fdf335dff33de06d34348405353f9fdf2ce1361efba30fb204aea9dbd" + "2e30da0a10fd2d876188371be6360d38f3940e34679204b98fbf70b8a4d97f25443e46d0" + "807ab634ed5891ad864dd7703557aa933cd380e26eea662a43", + "32386b2593c85e877b70e5e5495936f65dc49553caef1aa6cc14d9cd370c442a0ccfab4c" + "0da9ec311b67913b1b575a9d", + "5886078d3495767e330c7507b7ca0fa07a50e59912a416d89f0ab1aa4e88153d6eaf0088" + "2d1b4aa64153153352d853b5", + "2cc10023bf1bf8ccfd14b06b82cc2114449a352389c8ff9f6f78cdc4e32bde69f3869da0" + "e17f691b329682ae7a36e1aa"}, + {NID_secp384r1, NID_sha384, + "cf4945350be8133b575c4ad6c9585e0b83ff1ed17989b6cd6c71b41b5264e828b4e11599" + "5b1ae77528e7e9002ac1b5669064442645929f9d7dd70927cb93f95edeb73e8624f4bc89" + "7ec4c2c7581cb626916f29b2d6e6c2fba8c59a71e30754b459d81b912a12798182bcff40" + "19c7bdfe929cc769bcc2414befe7d2906add4271", + "d89607475d509ef23dc9f476eae4280c986de741b63560670fa2bd605f5049f1972792c0" + "413a5b3b4b34e7a38b70b7ca", + "0449a1c631f31cf5c45b2676b1f130cbf9be683d0a50dffae0d147c1e9913ab1090c6529" + "a84f47ddc7cf025921b771355a1e207eece62f2bcc6bdabc1113158145170be97469a290" + "4eaaa93aad85b86a19719207f3e423051f5b9cbbe2754eefcb", + "78613c570c8d33b7dd1bd1561d87e36282e8cf4843e7c344a2b2bb6a0da94756d670eeaf" + "fe434f7ae7c780f7cf05ca08", + "66f92b39aa3f4aeb9e2dc03ac3855406fa3ebbab0a6c88a78d7a03482f0c9868d7b78bc0" + "81ede0947c7f37bf193074ba", + "e5c64ed98d7f3701193f25dd237d59c91c0da6e26215e0889d82e6d3e416693f8d58843c" + "f30ab10ab8d0edd9170b53ad"}, + {NID_secp384r1, NID_sha384, + "d9b5cf0b50416573ff3c63133275a18394dd4326be2041e8d97e6e4e3855a4a177e9d26d" + "fd223fe8aa74564edb49bd72de19916fb6f001f44530d5c18e2c332bce1b7415df5927ec" + "e5f3824f34d174b963136b53aef1fb78fb0c06a201a40b2db38e4d8216fc1e392a798c8a" + "b4b3a314496b7f1087804ebfa89bf96e9cdb80c0", + "083e7152734adf342520ae377087a223688de2899b10cfcb34a0b36bca500a4dfa530e23" + "43e6a39da7ae1eb0862b4a0d", + "0470a0f16b6c61172659b027ed19b18fd8f57bd28dc0501f207bd6b0bb065b5671cf3dd1" + "ed13d388dcf6ccc766597aa6044f845bf01c3c3f6126a7368c3454f51425801ee0b72e63" + "fb6799b4420bfdebe3e37c7246db627cc82c09654979c700bb", + "28096ababe29a075fbdf894709a20d0fdedb01ed3eeacb642a33a0da6aed726e13caf6cf" + "206792ec359f0c9f9b567552", + "ee2923f9b9999ea05b5e57f505bed5c6ba0420def42c6fa90eef7a6ef770786525546de2" + "7cdeb2f8586f8f29fb4ee67c", + "50ef923fb217c4cf65a48b94412fda430fac685f0da7bd574557c6c50f5b22e0c8354d99" + "f2c2f2c2691f252f93c7d84a"}, + {NID_secp384r1, NID_sha384, + "9e4042d8438a405475b7dab1cd783eb6ce1d1bffa46ac9dfda622b23ac31057b922eced8" + "e2ed7b3241efeafd7c9ab372bf16230f7134647f2956fb793989d3c885a5ae064e85ed97" + "1b64f5f561e7ddb79d49aa6ebe727c671c67879b794554c04de0e05d68264855745ef3c9" + "567bd646d5c5f8728b797c181b6b6a876e167663", + "63578d416215aff2cc78f9b926d4c7740a77c142944e104aa7422b19a616898262d46a8a" + "942d5e8d5db135ee8b09a368", + "04cadbacef4406099316db2ce3206adc636c2bb0a835847ed7941efb02862472f3150338" + "f13f4860d47f39b7e098f0a390752ad0f22c9c264336cde11bbc95d1816ed4d1b1500db6" + "b8dce259a42832e613c31178c2c7995206a62e201ba108f570", + "7b69c5d5b4d05c9950dc94c27d58403b4c52c004b80a80418ad3a89aabc5d34f21926729" + "e76afd280cc8ee88c9805a2a", + "db054addb6161ee49c6ce2e4d646d7670754747b6737ca8516e9d1e87859937c3ef9b1d2" + "663e10d7e4bd00ec85b7a97a", + "fcc504e0f00ef29587e4bc22faada4db30e2cb1ac552680a65785ae87beb666c792513f2" + "be7a3180fc544296841a0e27"}, + {NID_secp384r1, NID_sha384, + "0b14a7484a40b68a3ce1273b8a48b8fdb65ba900d98541c4bbd07b97e31bcc4c85545a03" + "e9deab3c563f47a036ff60d0361684ba241b5aa68bb46f440da22181ee328a011de98eff" + "34ba235ec10612b07bdfa6b3dc4ccc5e82d3a8d057e1862fef3def5a1804696f84699fda" + "2ec4175a54a4d08bcb4f0406fdac4eddadf5e29b", + "ed4df19971658b74868800b3b81bc877807743b25c65740f1d6377542afe2c6427612c84" + "0ada31a8eb794718f37c7283", + "0433093a0568757e8b58df5b72ea5fe5bf26e6f7aeb541b4c6a8c189c93721749bcacecc" + "f2982a2f0702586a9f812fc66febe320d09e1f0662189d50b85a20403b821ac0d000afdb" + "f66a0a33f304726c69e354d81c50b94ba3a5250efc31319cd1", + "d9b4cd1bdfa83e608289634dbfcee643f07315baf743fc91922880b55a2feda3b38ddf60" + "40d3ba10985cd1285fc690d5", + "009c74063e206a4259b53decff5445683a03f44fa67252b76bd3581081c714f882f882df" + "915e97dbeab061fa8b3cc4e7", + "d40e09d3468b46699948007e8f59845766dbf694b9c62066890dd055c0cb9a0caf0aa611" + "fb9f466ad0bbb00dbe29d7eb"}, + {NID_secp384r1, NID_sha384, + "0e646c6c3cc0f9fdedef934b7195fe3837836a9f6f263968af95ef84cd035750f3cdb649" + "de745c874a6ef66b3dd83b66068b4335bc0a97184182e3965c722b3b1aee488c3620adb8" + "35a8140e199f4fc83a88b02881816b366a09316e25685217f9221157fc05b2d8d2bc8553" + "72183da7af3f0a14148a09def37a332f8eb40dc9", + "e9c7e9a79618d6ff3274da1abd0ff3ed0ec1ae3b54c3a4fd8d68d98fb04326b7633fc637" + "e0b195228d0edba6bb1468fb", + "04a39ac353ca787982c577aff1e8601ce192aa90fd0de4c0ed627f66a8b6f02ae5131554" + "3f72ffc1c48a7269b25e7c289a9064a507b66b340b6e0e0d5ffaa67dd20e6dafc0ea6a6f" + "aee1635177af256f9108a22e9edf736ab4ae8e96dc207b1fa9", + "b094cb3a5c1440cfab9dc56d0ec2eff00f2110dea203654c70757254aa5912a7e73972e6" + "07459b1f4861e0b08a5cc763", + "ee82c0f90501136eb0dc0e459ad17bf3be1b1c8b8d05c60068a9306a346326ff7344776a" + "95f1f7e2e2cf9477130e735c", + "af10b90f203af23b7500e070536e64629ba19245d6ef39aab57fcdb1b73c4c6bf7070c62" + "63544633d3d358c12a178138"}, + {NID_secp384r1, NID_sha512, + "67d9eb88f289454d61def4764d1573db49b875cfb11e139d7eacc4b7a79d3db3bf720819" + "1b2b2078cbbcc974ec0da1ed5e0c10ec37f6181bf81c0f32972a125df64e3b3e1d838ec7" + "da8dfe0b7fcc911e43159a79c73df5fa252b98790be511d8a732fcbf011aacc7d45d8027" + "d50a347703d613ceda09f650c6104c9459537c8f", + "217afba406d8ab32ee07b0f27eef789fc201d121ffab76c8fbe3c2d352c594909abe591c" + "6f86233992362c9d631baf7c", + "04fb937e4a303617b71b6c1a25f2ac786087328a3e26bdef55e52d46ab5e69e5411bf9fc" + "55f5df9994d2bf82e8f39a153ea97d9075e92fa5bfe67e6ec18e21cc4d11fde59a68aef7" + "2c0e46a28f31a9d60385f41f39da468f4e6c3d3fbac9046765", + "90338a7f6ffce541366ca2987c3b3ca527992d1efcf1dd2723fbd241a24cff19990f2af5" + "fd6419ed2104b4a59b5ae631", + "c269d9c4619aafdf5f4b3100211dddb14693abe25551e04f9499c91152a296d7449c08b3" + "6f87d1e16e8e15fee4a7f5c8", + "77ffed5c61665152d52161dc13ac3fbae5786928a3d736f42d34a9e4d6d4a70a02d5af90" + "fa37a23a318902ae2656c071"}, + {NID_secp384r1, NID_sha512, + "45db86829c363c80160659e3c5c7d7971abb1f6f0d495709bba908d7aa99c9df64b3408a" + "51bd69aba8870e2aaff488ef138f3123cf94391d081f357e21906a4e2f311defe527c55e" + "0231579957c51def507f835cceb466eb2593a509dcbee2f09e0dde6693b2bfe17697c9e8" + "6dd672f5797339cbe9ea8a7c6309b061eca7aef5", + "0a3f45a28a355381a919372f60320d6610cfb69c3e318eb1607db3cadfc42b728b77a6a9" + "e9e333de9183c58933daf60f", + "04832cbb7061a719a316e73dbad348fa67cd17c33f40b9000a3d3b691a2a2cd821052566" + "717c3ead01089b56086af1366f1e15a048d1dce642d9ebcbfac7f92b1bcee90fd0240cc7" + "9abd29e32e0e655c4ee1fd34fb88178bba92aca100e7794ed0", + "2a78e651623ba604c42cf094fc7d046629306f508853427ba091448800d1092c041bb232" + "3035fc9d19a8d44950f7dcc3", + "0db0cc9a2bda8dd7e565ad36f91b1c5756d78164dc8a72a5bee4b6bc45ea38c7a16b01d0" + "5b1893d4e06b62db24c30385", + "abd383edaeda7d0b8de1b54fcd3c28874fed62ab266f1f84c8ba796a7b54e5e0695fdb43" + "ce7fe90ed00fa468d87bca64"}, + {NID_secp384r1, NID_sha512, + "4672fce0721d37c5be166bffa4b30d753bcf104b9b414db994b3ed33f36af4935ea59a0b" + "b92db66448b3f57dad4fc67cef10ce141bf82c536be604b89a0bc0e8bca605b867880049" + "d97142d30538fc543bd9d4fab7fdbe2f703815cdb6361beb66acff764bc275f910d16624" + "45b07b92830db69a5994857f53657ed5ca282648", + "2e408c57921939f0e0fe2e80ce74a4fa4a1b4fa7ab070206298fe894d655be50e2583af9" + "e45544b5d69c73dce8a2c8e7", + "04a2b24a5ad4a2e91f12199ed7699e3f297e27bf8b8ea8fbe7ed28366f3544cd8e680c23" + "8450f8a6422b40829d6647b25c2732be0075536e6519f6a099b975a40f8e0de337fa4d48" + "bd0762b43f41cab8deafdef9cfbb9973e457801e3bf9c93304", + "b10b6258afdde81f9c971cc1526d942e20cafac02f59fee10f98e99b8674636bff1d84a6" + "eaa49c0de8d8cfdc90d8ce84", + "be428a8de89a364a134719141ee8d776a3a8338f1132b07e01b28573d8eaf3b9008b6330" + "4c48821e53638b6141f9660b", + "866181dbef5c147d391bed6adcee408c339982c307adc718c2b9ab9e5642d8dedc36dd64" + "02559a3ab614c99c1e56b529"}, + {NID_secp384r1, NID_sha512, + "9ae48fdd9bfc5cb0f4d4761e28b2073bda05a3e3fe82c212e66701dc4573cc67a829b0f8" + "2d7520b1bf11db0c6d1743822bbe41bb0adbd7222aa5fae70fbd1a31f2d4453a01c81e06" + "4d775388468be96f6063f8673b7b8d4455fe1bd4c801ad5e625a015eaa4a1a18da490d2a" + "f8642201eaba3c611cbd65f861d8e19ca82a1ee6", + "1c285da72a8eb1c3c38faab8d3bb4e68dc95c797082b9a3991a21c1de54759071ecf2265" + "fb1eff504ab24174bc6710cf", + "0411acb1b5cc59a4f1df1913a8d6e91cbdafb8206dc44aff7d9da45906b664fc33194d99" + "35a82aa4d62f39618897c86025832ed0b9575fff52a3603bfe89f312751b4c396da98324" + "117a61b3f525d27b2266f6cfb22be07e50b6874435e380ed62", + "2513075e02cc7fb3cff7b7adde46da31c5493749b5cf02758bd5b098a838bfd4d5e4c7fb" + "8268bdc37e219c30efebe878", + "b3d638b3be45f14f170da5bdc22d2114deac93ab340a25b3af2b5c18584bb9147e00dc6c" + "67a2274f79aa4838793eb63f", + "876112bdca2c725eb2f6dbd76d07710a31f0c16d38430cb0817f320a25a9ecfec8a66137" + "d0304612ae29a6a484fd3319"}, + {NID_secp384r1, NID_sha512, + "817d6a110a8fd0ca7b4d565558f68b59a156744d4c5aac5c6610c95451793de2a756f774" + "558c61d21818d3ebeeeb71d132da1c23a02f4b305eccc5cd46bd21dfc173a8a91098354f" + "10ffbb21bf63d9f4c3feb231c736504549a78fd76d39f3ad35c36178f5c233742d2917d5" + "611d2073124845f1e3615b2ef25199a7a547e882", + "9da37e104938019fbdcf247e3df879a282c45f8fb57e6655e36b47723af42bec3b820f66" + "0436deb3de123a21de0ca37b", + "04722d0ea6891d509b18b85ca56f74deb5c3030d2a30433824123d430d03c99279572c3b" + "28ecf01e747b9db8acc55d0ba37e2605ea7092214f366f3639037bffd89fe103c646e990" + "839d3a1ced8d78edb5b9bc60d834fd8e2a3c17e920bdae023a", + "c8c18e53a9aa5915288c33132bd09323638f7995cd89162073984ed84e72e07a37e18c4c" + "023933eace92c35d10e6b1b6", + "6512a8a2be731e301dcf4803764297862bbfa0ac8daed64d8e98b34618ecb20520fc5d3c" + "f890b7783edf86e7ea407541", + "4ff10301f7b4168fae066361376007c1d7aa89a75c87719d0b54711ffef5ef3726f3eef8" + "4f7ebc025c110bde511b17f6"}, + {NID_secp384r1, NID_sha512, + "464f10ec6fb229a51db5fd0e122f2cb8a9a022117e2987f4007bf5565b2c16aba0714e2e" + "3cdd0c100d55ac3017e36fc7501ad8309ab9572aa65424c9eb2e580a119c55777676ec49" + "8df53ef6ae78fd8a988130ee0e6082bf1ef71cd4c946021018a8ca7154d13b174c638912" + "613b0bdb9001c302bf7e443ad2124ab2c1cce212", + "0661ab3bf9f7bef51bec7dff758de289154557beb9ce18cc4b8cc09a871e8322af259cf1" + "88b593dc62f03a19e75f7f69", + "04b4f100558043858efa728082d9b99ad5192b59b0947434f5ba7ff2514508a6d71ba54e" + "7221c31cb0712103272b3f6fa434f6df4eeb2da11498044635067c2715ed15ae251c78ff" + "b9030d87909ea8539b66394e93109ca54c0406cf99960c3e93", + "84a87137edb6894f96c5a8e94a3765162034feb84dfea94e1c71411170c285a80321ec79" + "99e25861844143209804882c", + "4dc9d1b949b36e3c3847ac1c7ed114e1bc9cbe76119cf6fcd3f1b69ee6ee54e3255f1bb2" + "88fe2f8bd6d4049a21793c27", + "56a561d647b62ccae1e6df818b1a6fbde66c82ef0ff69ee415f183e7daf76be22630c7e0" + "2cd3fd729dfa490f26824584"}, + {NID_secp384r1, NID_sha512, + "4e3e0fb96320ddccde8b463c273654c4f7164920b1d63430921d2e808dee403e6420eedd" + "a0a557b911d00736a4f8798dd4ef26673efd6d190988ad4929ec64f8685cfb76070a36cd" + "6a3a4bf2f54fb08a349d44642b6f614043fef9b2813b63457c76537d23da7b37310334f7" + "ba76edf1999dad86f72aa3446445a65952ac4e50", + "66e7cfdeb7f264cf786e35210f458c32223c3a12a3bc4b63d53a5776bc9b069928452484" + "f6241caa3781fd1a4109d4db", + "043c7682de540ab231daf21bf9fc80bda6abf7e17dcc79d476c7b7c3bd4d42d386877fd8" + "ba495c1b0333e04fb5fd2a15050a1582e4f4d72abea9d3476aff8369c41261f0c5dddf2c" + "a82e10f7a163f73df09473d9e5e2552187104e4cc7c6d83611", + "2fa266f5cce190eb77614933ca6a55121ad8bae168ff7a9043d96d13b5ca2fe70101ff9f" + "e1e2b2cd7413e6aa8f49abde", + "e7ecda9da0c52d0474a9f70094dc8f061d7d6a22210d3b69a7be8f389aa666f256322099" + "b87d16ad35357ea856574dba", + "ba348eb40a2830ec5a1130264ac0a8675420b1ae243e808a778135809ece21f42c0c8811" + "66321102b4f02df4c5c7ed9d"}, + {NID_secp384r1, NID_sha512, + "c466b6b6baf7e6ffa876ec06105e2d43534e0517c07b1c4c9fb67ba81ce09525a7721ec3" + "c290f2b1f65b6463d41598e7a25b2238501629953a5ca955b644354fb6856733a2e5bb8f" + "5bc21a0c803493f5539f9fb83aab3dba2c982989c2270c61ab244b68bfe1b948d00c2ed9" + "75e09c29b5f8a7effcad8652a148cc880d503217", + "92c2f7ee64af86d003ab484e12b82fcf245fc330761057fec5b7af8f7e0a2d85b468c21d" + "171460fcb829cae7b986316d", + "04ca43a306479bf8fb537d4b9ff9d635bbb2a0d60d9e854d5b7e269d09d91f78c6b90b61" + "6e4c931629453645a2bb371e14356c4d7f10e690614eaf7f82ba0f9dc1aad98130c0ad9f" + "e353deec565cc04bef789a0a4242322e0058b46cd02f2de77d", + "6ec81fb74f8725ba225f317264460ee300cfd2f02092000989acbdad4799cf55c244a65c" + "557113328fe20282e6badb55", + "cd7a4309bcebc25a8e10899fe2eda5f8b2dbcf329cd2f3d65befd67393e83fba2f8a67a1" + "5c01a6ac8314f9f5e87a9dca", + "6dcfc0426bc148e67e91d4784e3d7e9bc3b7ce3676be62daa7f3f55dfdff6d9dc735b5e3" + "e0bbd0785db1f76f7ac065f3"}, + {NID_secp384r1, NID_sha512, + "feac892b7720af80b3c9eede51e923f18d3d0c5de4c31f4aa75e36df7c7c2fd8f4177885" + "1a24b69e67dccb65e159dd5c383243bad7cfedcc5e85c8a01c34b0b94ba8e07e4c024c09" + "d279b3731e8b62f9562d3c4f5042567efe42a9d0eaaabab28bc6f11232fc8ceaaf4518d9" + "f3b2bebf020294496b7f6b879e69503f75fecd3d", + "15347caaad1067f1848a676bd0a8c52021ae604b79d02775a0459226e0391a3acd26653c" + "916fcfe86149fb0ee0904476", + "04e5a0463163964d984f5bad0072d45bc2059939e60a826ccca36c151460ae360f5d6679" + "f60fe43e999b6da5841c96e48a30f2dd425a3fa2c95d34124217250b39e3b4a14f3e6e41" + "5ae8e5b0409eb72f43f78b64d0ce6f2d49980d6f04cd1391db", + "1a2d224db4bb9c241ca5cab18920fad615fa25c1db0de0f024cb3ace0d11ef72b0568854" + "46659f67650fdff692517b1c", + "87b4de0fb21df38dfc9a4b1e350da67547e307f55b5b9dd6615e408afe7c3553a6e02722" + "847367439e636074faa2182b", + "375d965753b9ed6c6c08576726f8308c2f8dbd2737824464e71265d47907e26f615bbeb8" + "203ec617520d4ecd1851dc44"}, + {NID_secp384r1, NID_sha512, + "cf2982e3bf174ce547741b969403cd11e9553067e6af8177d89511a0eb040db924530bdb" + "a65d8b1ff714228db0737c1756f509e1506014a10736e65be2f91980a73891496e90ff27" + "14a3601c7565cdcef5a395e2e0e1652f138d90d61eaa9cba993b823245647f6e07cec9b8" + "b4449cd68a29741cd1579c66e548ca0d0acf33aa", + "ac1cb5e59bda2eff3413a3bab80308f9fb32c595283c795de4c17fdae8d4647b5f108fd0" + "801aee22adb7db129283b5aa", + "04bc6b1a718284803553c173089c397870aaaecca579bb8e81a8cfa12473cd2057567fa8" + "726a19ed427cc035baeec2c55114f82997d1129b669f0015350e47ad561b1b13441af4fb" + "44656f15ed0c5706984d66655accc52f2e943eef39cb1cdc21", + "8053a46e875f446056b06d4318fa3e8977622de7207cbf0996bf35b0e9b19aaa507f642b" + "cf0be9f048f1af09806f6946", + "a994eb15b64114ce8a9342d18b5edda96a6d76314a5ac03da723699177d352a4a9f3b712" + "1b11a91e43a6af4025da51d6", + "8183ae33a888e99aa76882da0a6705ad102f2bbd9572fad0d2e4d6d70151970469e00c52" + "20e59c14724d771c1384b302"}, + {NID_secp384r1, NID_sha512, + "bf9fdd4107ef5a6070108771ac9eee4f0c8043bf0d04db772a47294f4137e2439d94b337" + "114b074e57e0cb78d0ccf352a2833e9788ee2a1a9ffeacd34f38fcefb86653d70c7dadd4" + "cf6548d608e70acdef6c7530974b92c813798add659752a8c72b05e1ad9c65c21834ce6f" + "be49d8a1426b5a54270794436d284364fac6ec1a", + "205f1eb3dfacff2bdd8590e43e613b92512d6a415c5951bda7a6c37db3aae39b9b7ec6ed" + "d256609e75373419087fa71f", + "04c9f1f63a18c761b077a1ec35fbb2de635db9b8592c36194a01769b57728c7755d4c79b" + "3d5b97a1a4631e30c86d03f13cf8c4a38770054d5cc9bb9182e6d4638242c4fd16e869ac" + "22e44c4b9402d594e0c6f5df6a9a7de32a4893d9f6588f1950", + "ecd395c5d8b7d6e6b2b19644e0d2e6086c912c6a0f5b8ed4b94b7290b65852c9741ce8ee" + "b08d8751ead8a183e17d76c6", + "e81331d78b438b0b8d98c1be03385ba5d614af182f1677f259126cc3de7eaac6c19b02be" + "955d936b6bf9c27c6796e6f0", + "17c2b7a8e0fc93909762aa9f86f9561e759ecb88f02337b2018363be6095d9e4324a6d32" + "96046686624b5efad6b52878"}, + {NID_secp384r1, NID_sha512, + "5d634fb39a2239256107dc68db19751540b4badac9ecf2fce644724401d6d632b3ae3b2e" + "6d05746b77ddc0c899878032248c263eda08d3d004d35952ad7a9cfe19343d14b37f9f63" + "2245e7b7b5fae3cb31c5231f82b9f1884f2de7578fbf156c430257031ba97bc6579843bc" + "7f59fcb9a6449a4cd942dffa6adb929cf219f0ad", + "e21e3a739e7ded418df5d3e7bc2c4ae8da76266a1fc4c89e5b09923db80a72217f1e9615" + "8031be42914cf3ee725748c1", + "040f753171922b5334f3dd2778a64ce2da8295121939beae71ad85e5344e893be0fd03cf" + "14e1f031adec098e0c4409449c45c10a0ffc0eb2f1cec5c89b698061108313ee7d449ad5" + "80efad344f0e7cf35be8a18fca620f112e57bdc746abdace55", + "d06bea06b25e6c30e866b1eb0657b45673e37b709013fb28fd7373afc8277cbc861354f8" + "21d0bd1927e52ec083a0f41f", + "e8d4a31dd0e7d2522be62a32608e744c3775ceb606dc897899f0c73f1a40ce9a8be854cd" + "506e65cd81fd7fa2c616cb7b", + "8151b681b6b6046d3c36f332d06d9ba7751e740631cdb759f88c50a25a8e950d5023df8a" + "15c77243743733c4feaf21d5"}, + {NID_secp384r1, NID_sha512, + "c9b4ff721b3e886f0dc05856ffff0aabb64a8504b1746a47fdd73e6b7ebc068f06ac7ffa" + "44c757e4de207fc3cbfaf0469d3ac6795d40630bcafe8c658627e4bc6b86fd6a2135afbc" + "18ccc8e6d0e1e86016930ca92edc5aa3fbe2c57de136d0ea5f41642b6a5d0ddeb380f245" + "4d76a16639d663687f2a2e29fb9304243900d26d", + "93434d3c03ec1da8510b74902c3b3e0cb9e8d7dccad37594d28b93e065b468d9af4892a0" + "3763a63eae060c769119c23c", + "04a52c25f2af70e5bc6a992ecef4ea54e831ed5b9453747d28aec5cffb2fcfee05be80c5" + "cbab21606b5507aa23878adee12cf2a9afeff83f3041dc8a05f016ccae58aa1a0e0dc6be" + "9d928e97f2598c9ba5e9718d5eb74c9cfb516fd8c09f55f5b9", + "13d047708ae5228d6e3bbada0e385afdb3b735b31123454fdf40afe3c36efed563fd2cce" + "84dcc45c553b0993d9ca9ec3", + "a0203f6f2c456baac03538ed506a182e57a25151802cf4b2557613b2fb615ebd4c50ddc5" + "05f87c048a45bad3b2fc371c", + "0eab56457c4080400fa3af124761d5a01fef35f9649edba8b97d22116386f3b8b363e97e" + "f3f82616d5d825df1cf865ef"}, + {NID_secp384r1, NID_sha512, + "db2ad659cf21bc9c1f7e6469c5f262b73261d49f7b1755fc137636e8ce0202f929dca446" + "6c422284c10be8f351f36333ebc04b1888cba217c0fec872b2dfc3aa0d544e5e06a9518a" + "8cfe3df5b20fbcb14a9bf218e3bf6a8e024530a17bab50906be34d9f9bba69af0b11d8ed" + "426b9ec75c3bd1f2e5b8756e4a72ff846bc9e498", + "e36339ddbe8787062a9bc4e1540690915dd2a2f11b3fe9ee946e281a0a2cbed426df405e" + "d9cb0eca42f85443efd09e0c", + "04a1ffb4b790d1593e907369b69de10b93cddbb02c6131f787422364d9d692768ef80979" + "70306cce16c97f2b10c538efa7d0692028601ea794d2563ffe9facc7273938fab47dd00b" + "8960be15549a9c2b3f8552583eb4c6cd212fe486c159c79153", + "2226f7329378cecd697f36ae151546643d67760856854661e31d424fae662da910e2157d" + "a9bb6dfbe3622296e0b5710c", + "20dcc25b67dd997621f437f65d78347fb57f8295b1b14453b1128203cda892bcfe726a2f" + "107d30975d63172e56f11d76", + "51cff592cbef75ef8321c8fa1e4229c4298b8180e427bee4e91d1e24fc28a729cf296beb" + "728960d2a58cf26773d8e2e2"}, + {NID_secp384r1, NID_sha512, + "dbd8ddc02771a5ff7359d5216536b2e524a2d0b6ff180fa29a41a8847b6f45f1b1d52344" + "d32aea62a23ea3d8584deaaea38ee92d1314fdb4fbbecdad27ac810f02de0452332939f6" + "44aa9fe526d313cea81b9c3f6a8dbbeafc899d0cdaeb1dca05160a8a039662c4c845a3db" + "b07be2bc8c9150e344103e404411668c48aa7792", + "5da87be7af63fdaf40662bd2ba87597f54d7d52fae4b298308956cddbe5664f1e3c48cc6" + "fd3c99291b0ce7a62a99a855", + "0454c79da7f8faeeee6f3a1fdc664e405d5c0fb3b904715f3a9d89d6fda7eabe6cee86ef" + "82c19fca0d1a29e09c1acfcf18926c17d68778eb066c2078cdb688b17399e54bde5a79ef" + "1852352a58967dff02c17a792d39f95c76d146fdc086fe26b0", + "1b686b45a31b31f6de9ed5362e18a3f8c8feded3d3b251b134835843b7ae8ede57c61dc6" + "1a30993123ac7699de4b6eac", + "9dbfa147375767dde81b014f1e3bf579c44dd22486998a9b6f9e0920e53faa11eed29a4e" + "2356e393afd1f5c1b060a958", + "e4d318391f7cbfe70da78908d42db85225c85f4f2ff413ecad50aad5833abe91bdd5f6d6" + "4b0cd281398eab19452087dd"}, + {NID_secp521r1, NID_sha224, + "58ec2b2ceb80207ff51b17688bd5850f9388ce0b4a4f7316f5af6f52cfc4dde4192b6dbd" + "97b56f93d1e4073517ac6c6140429b5484e266d07127e28b8e613ddf65888cbd5242b2f0" + "eee4d5754eb11f25dfa5c3f87c790de371856c882731a157083a00d8eae29a57884dbbfc" + "d98922c12cf5d73066daabe3bf3f42cfbdb9d853", + "1d7bb864c5b5ecae019296cf9b5c63a166f5f1113942819b1933d889a96d12245777a994" + "28f93de4fc9a18d709bf91889d7f8dddd522b4c364aeae13c983e9fae46", + "0401a7596d38aac7868327ddc1ef5e8178cf052b7ebc512828e8a45955d85bef49494d15" + "278198bbcc5454358c12a2af9a3874e7002e1a2f02fcb36ff3e3b4bc0c69e70184902e51" + "5982bb225b8c84f245e61b327c08e94d41c07d0b4101a963e02fe52f6a9f33e8b1de2394" + "e0cb74c40790b4e489b5500e6804cabed0fe8c192443d4027b", + "141f679033b27ec29219afd8aa123d5e535c227badbe2c86ff6eafa5116e9778000f5385" + "79a80ca4739b1675b8ff8b6245347852aa524fe9aad781f9b672e0bb3ff", + "06b973a638bde22d8c1c0d804d94e40538526093705f92c0c4dac2c72e7db013a9c89ffc" + "5b12a396886305ddf0cbaa7f10cdd4cd8866334c8abfc800e5cca365391", + "0b0a01eca07a3964dd27d9ba6f3750615ea36434979dc73e153cd8ed1dbcde2885ead575" + "7ebcabba117a64fcff9b5085d848f107f0c9ecc83dfa2fa09ada3503028"}, + {NID_secp521r1, NID_sha224, + "2449a53e0581f1b56d1e463b1c1686d33b3491efe1f3cc0443ba05d65694597cc7a2595b" + "da9cae939166eb03cec624a788c9bbab69a39fb6554649131a56b26295683d8ac1aea969" + "040413df405325425146c1e3a138d2f4f772ae2ed917cc36465acd66150058622440d7e7" + "7b3ad621e1c43a3f277da88d850d608079d9b911", + "17e49b8ea8f9d1b7c0378e378a7a42e68e12cf78779ed41dcd29a090ae7e0f883b0d0f2c" + "bc8f0473c0ad6732bea40d371a7f363bc6537d075bd1a4c23e558b0bc73", + "0400156cd2c485012ea5d5aadad724fb87558637de37b34485c4cf7c8cbc3e4f106cb1ef" + "d3e64f0adf99ddb51e3ac991bdd90785172386cdaf2c582cc46d6c99b0fed101edeeda71" + "7554252b9f1e13553d4af028ec9e158dbe12332684fc1676dc731f39138a5d301376505a" + "9ab04d562cc1659b0be9cb2b5e03bad8b412f2699c245b0ba2", + "1dc3e60a788caa5f62cb079f332d7e5c918974643dca3ab3566a599642cd84964fbef43c" + "e94290041fe3d2c8c26104d9c73a57a7d4724613242531083b49e255f33", + "12592c0be6cce18efb2b972cd193d036dcb850f2390fa8b9b86b2f876548bc424fb3bc13" + "c1e5c415fa09d0ecfcae5bf76fb23e8322d7eecb264a2ae6d20ef50d405", + "11bc9713be88e3b9912a3e5f5d7b56f20573e979b1a75d04ce339f724bddffa4665d2599" + "5fe24d32507d8a07c5e10169f5338ef2827737f7b0291752b21237217e3"}, + {NID_secp521r1, NID_sha224, + "7ba05797b5b67e1adfafb7fae20c0c0abe1543c94cee92d5021e1abc57720a6107999c70" + "eacf3d4a79702cd4e6885fa1b7155398ac729d1ed6b45e51fe114c46caf444b20b406ad9" + "cde6b9b2687aa645b46b51ab790b67047219e7290df1a797f35949aaf912a0a8556bb210" + "18e7f70427c0fc018e461755378b981d0d9df3a9", + "135ea346852f837d10c1b2dfb8012ae8215801a7e85d4446dadd993c68d1e9206e1d8651" + "b7ed763b95f707a52410eeef4f21ae9429828289eaea1fd9caadf826ace", + "04018d40cc4573892b3e467d314c39c95615ee0510e3e4dbc9fa28f6cd1f73e7acde15ad" + "7c8c5339df9a7774f8155130e7d1f8de9139ddd6dfe1841c1e64c38ea98243017021782d" + "33dc513716c83afe7ba5e7abef9cb25b31f483661115b8d6b5ae469aaf6f3d54baa3b658" + "a9af9b6249fd4d5ea7a07cb8b600f1df72b81dac614cfc384a", + "0c24acc1edb3777212e5b0bac744eadf4eda11fa150753b355bf96b189e6f57fc02284bb" + "22d8b3cd8bba7a09aae9f4ea955b382063425a6f8da2f99b9647b147172", + "183da7b8a9f9d5f08903359c1a2435b085fcf26a2ed09ab71357bb7634054acc569535e6" + "fe81d28233e4703005fc4bf83ce794d9463d575795aa0f03398e854cefd", + "0b3621145b9866ab7809139795cc30cd0404127a7f0fafa793660491009f6c53724fdb0b" + "1ffbf0fd51c131180b8a957fe66e76d2970247c024261c768dee9abbfb9"}, + {NID_secp521r1, NID_sha224, + "716dabdb22a1c854ec60420249905a1d7ca68dd573efaff7542e76f0eae54a1828db69a3" + "9a1206cd05e10e681f24881b131e042ed9e19f5995c253840e937b809dfb8027fed71d54" + "1860f318691c13a2eb514daa5889410f256305f3b5b47cc16f7a7dad6359589b5f4568de" + "4c4aae2357a8ea5e0ebaa5b89063eb3aa44eb952", + "1393cb1ee9bfd7f7b9c057ecc66b43e807e12515f66ed7e9c9210ba1514693965988e567" + "fbad7c3f17231aacee0e9b9a4b1940504b1cd4fd5edfaa62ba4e3e476fc", + "0401e855c935139c8092092cfa733db1292530506eeb2bbb1687f9602c36d97a6714e998" + "892d5d3b842d1896a6ece9d549e9792881a256256137b3dff180c96cc5d07b018d83b6e9" + "3cd287311f7bf7c1d7f9eeabcf0b69c12f2d8f40e333e81e956d968532a37a4c04d76187" + "4df293b484cd7053b03fdbc2fdcd3b4c412d6f272fb7c93fe6", + "1d98619bdc04735d30c222fc67da82c069aea5f449af5e8c4db10c1786c0cb9e6f2cc0bb" + "66fa6be18c485570d648dafcd0a973c43d5c94e9a9dacbd3170e53fa2a0", + "0bf47fabe107ce0ec03e2ad60a79b058e1bebb18568b6a8cdbe86032e71aa30c15766105" + "b2ea952cfa79bcab046df601159f96e179bbcf252dc68ac73d31481fdae", + "1f918fec69cd07d90f9d892b7117e7519c3224947f4262f1fd97077dd5386a6c78aeddff" + "3ee97e59ea353f06029f1336f0d6ef5c0f4b17ca59343a55319b7bfc3db"}, + {NID_secp521r1, NID_sha224, + "9cc9c2f131fe3ac7ea91ae6d832c7788cbbf34f68e839269c336ceef7bef6f20c0a62ea8" + "cc340a333a3002145d07eba4cf4026a0c4b26b0217a0046701de92d573d7c87a386a1ea6" + "8dc80525b7dcc9be41b451ad9f3d16819e2a0a0b5a0c56736da3709e64761f97cae2399d" + "e2a4022dc4c3d73c7a1735c36dbde86c4bc5b6f7", + "179fa164e051c5851e8a37d82c181e809a05fea9a3f083299b22684f59aa27e40dc5a33b" + "3f7949338764d46bfe1f355134750518b856d98d9167ef07aac3092c549", + "0401857cc7bbed20e87b3fd9a104956aa20c6502192910e0e7598410526ebfe1c99397b8" + "5189612a60c51fb8f4dd5cb08a8cd2e702563062dcb043410715c5323a004601fce8d135" + "284310d2f38c216030634b32cd223222f0d9d8d2b7c55477c4b8b74fc6c96a6092f34b05" + "ca44d3633a5037c2166c479a032bb4f949f89fc1ba5236d07d", + "16d9704c0cee791f2938bb2a8a595752a3635c2f557efeecefd719414b5f2aaf846080f5" + "82c76eae7a8fddf81859b49d0131c212524d55defa67dca1a9a28ca400f", + "1c9a4e51774384e8362876a87c572e6463a54413c7c6252c552ebb182f83e45ace436ade" + "4ca373d8a7216e83efb62c8b41c4d5132a0afa65078f16d189baca39187", + "1e92a7dd5fea29a666398e1df5775cbb5664fe6943fe4c1d2bba516b7543c84df584458e" + "53919c4ffab579a26fb3c892a5d1a77b0a07428c89350f8b559e627b014"}, + {NID_secp521r1, NID_sha224, + "14c69f8d660f7a6b37b13a6d9788eff16311b67598ab8368039ea1d9146e54f55a83b3d1" + "3d7ac9652135933c68fafd993a582253be0deea282d86046c2fb6fd3a7b2c80874ced28d" + "8bed791bd4134c796bb7baf195bdd0dc6fa03fdb7f98755ca063fb1349e56fd0375cf947" + "74df4203b34495404ebb86f1c7875b85174c574c", + "13dabca37130ba278eae2b3d106b5407711b0d3b437fbf1c952f0773571570764d2c7cb8" + "896a8815f3f1975b21adc6697898e5c0a4242092fc1b80db819a4702df4", + "0400bc2aebf40cd435bc37d73c09d05f2fd71321111a767c2b0d446f90dd4a186839c694" + "ceb734e027e7ee948f0f63e4d3f1656d3d543df23c342a599306909b34710901f4c98ac0" + "3f0718e58d5d1762c920445b11dbdd60ec7f60095809204e14965a4ecb0be6fea06adbac" + "8ba431d6f144c75c199225df2a619a34be99897125b3a10af8", + "0401187c8b89945a1e48cda9ee52167789f4121e67482a7ac797899f5d3d2e623aed31e4" + "adae08a8d43e69028fa074d2650317cbc765f6ed191cf0317b4bae57881", + "1e572afed754016fba43fc33e352932c4db65efcb84e2bd159b40fc5925893b161effc40" + "240be28d8c07154d2615f605c6f0451b976522d95afd37f46602df7a12a", + "030370c1c5352c2b663ac1858b42f69545b2f58ed5b2c007f303726977d3c756b5d644ec" + "6788f94c886f78269aa190a3d8d1ae10e4fd24d937c4556fb9e1953fd6d"}, + {NID_secp521r1, NID_sha224, + "8d8e75df200c177dbfe61be61567b82177ea5ec58e2781168d2277d2fd42668f01248ca3" + "eb29ffa2689b12ae40f9c429532b6d2e1f15891322b825a0a072a1c68fa09e78cfdef3e9" + "5ed6fdf7233a43cb68236560d49a3278f0b3f47cb08f475bd9ab2f60755ea4a1767de931" + "3b71a1b9ea87ef33f34682efbda263b0f8cc2f52", + "198681adbde7840d7ccd9cf1fb82056433fb4dd26bddf909af7b3b99da1ca2c05c8d4560" + "ecd80ba68f376f8b487897e374e99a9288ed7e3645cc0d00a478aae8d16", + "040057ce3777af7032f1f82308682e71fe09f88bf29dacd5018a725e1caa4b1e2bfdd894" + "fe618f9266f31ba089856dc9c1b70e4a2faa08b4b744d1aafcd5ae99e2c7360199bcfef2" + "021bc5890d7d39ec5dc0c26956801e84cae742cf6c50386eb289b6e97754dd25a94abf81" + "f1cb1b36935b5eb29f4b32a6516d2ff6a7d23064a0daec94b3", + "19d2d74ad8ee2d85048f386998a71899ef6c960b4ab324e5fd1c0a076c5a632fd0009500" + "076522e052c5c9806eef7056da48df6b16eb71cdf0f1838b0e21715fce0", + "18ecacbcffd5414bbb96728e5f2d4c90178e27733d13617e134ec788022db124374bbaa1" + "1e2c77fe3f38d1af6e998e1b0266b77380984c423e80ffa6ff2bcafd57a", + "1c727f34b6a378f3087721a54e9796499b597ecf6666b8f18312d67e1190a8a66e878efc" + "2367b551267494e0245979ef4deed6d2cbf2c3711af6d82ccfeb101a377"}, + {NID_secp521r1, NID_sha224, + "10631c3d438870f311c905e569a58e56d20a2a560e857f0f9bac2bb7233ec40c79de1452" + "94da0937e6b5e5c34fff4e6270823e5c8553c07d4adf25f614845b2eac731c5773ebbd71" + "6ab45698d156d043859945de57473389954d223522fbafecf560b07ef9ba861bcc1df9a7" + "a89cdd6debf4cd9bf2cf28c193393569ccbd0398", + "08c4c0fd9696d86e99a6c1c32349a89a0b0c8384f2829d1281730d4e9af1df1ad5a0bcfc" + "cc6a03a703b210defd5d49a6fb82536f88b885776f0f7861c6fc010ef37", + "040164ac88ed9afe137f648dd89cdd9956682830cac5f7c1a06d19a1b19f82bb1d22dfee" + "fea30d35c11202fed93fd5ce64835d27c6564d6e181287fa04a2d20994986b005cb83669" + "265f5380ccefe6b4f85fdf0049e6703f6f378a0b2e52ed0fbbcf300afebb722f4ed48e38" + "19cb976c1d60e2ba05646b478f6dfecfbae730e9644c297f00", + "189801432cba9bf8c0763d43b6ec3b8636e62324587a4e27905b09a58e4aa66d07d096db" + "ce87824e837be1c243dd741f983c535a5dd2f077aac8beee9918258d3cb", + "0917723f7241e8dc7cd746b699ab621d068dd3a90e906aaf0a4862744b96fd4e5ccdb9c7" + "796c27f7196e693d06ec209464c3ea60ad6313e9b77cceaa14767e6651c", + "0957b0ecdc3668f6efa5d0957615bcfffd6419c5e57579b74f960f65ae3fb9e8284322ff" + "710b066f7e0959ac926d3cf9a594bdb70bbec756c96910b26a2486dee9e"}, + {NID_secp521r1, NID_sha224, + "80aad6d696cbe654faa0d0a24d2f50d46e4f00a1b488ea1a98ed06c44d1d0c568beb4ab3" + "674fc2b1d2d3da1053f28940e89ba1244899e8515cabdd66e99a77df31e90d93e37a8a24" + "0e803a998209988fc829e239150da058a300489e33bf3dcdaf7d06069e74569fee77f4e3" + "875d0a713ccd2b7e9d7be62b34b6e375e84209ef", + "1466d14f8fbe25544b209c5e6a000b771ef107867e28ed489a42015119d1aa64bff51d6b" + "7a0ac88673bbc3618c917561cff4a41cdb7c2833dab5ebb9d0ddf2ca256", + "0401dc8b71d55700573a26af6698b92b66180cf43e153edadb720780321dbb4e71d28e0a" + "488e4201d207fc4848fe9dd10dcabec44492656a3ff7a665fe932445c82d0b01920b1633" + "1b7abeb3db883a31288ef66f80b7728b008b3cc33e03a68f68d9e653a86e3177bbc00014" + "fa5ea4c1608c0d455c2e2ac7bd8ab8519ebf19955edf1baf8d", + "160d04420e0d31b0df476f83393b1f9aff68389cc3299e42ef348d97646f7531a722b66d" + "dfb9501bbb5c4a41d84c78be7233b11489bceb817d23060e6017433fab8", + "08077aabd0a342f03f912007c586cfedfc63f93d1118f720d5b62b3ce141a60f86f111df" + "d8fc2e31a6778981f1a5e28f29a7369bd7897bb41240c8d3a9c170e0ee0", + "00abc75fc154b93840579457820957e89d1260fee0a4b9bb1946f61ca1e71afd76bb5e10" + "77b3e38ceb39d1fac5ef8b217c4110617b3ad118e02b3fcc2a39ef38613"}, + {NID_secp521r1, NID_sha224, + "8a7792a2870d2dd341cd9c4a2a9ec2da753dcb0f692b70b64cef2e22071389c70b3b188d" + "ea5f409fb435cbd09082f59de6bc2ff9e65f91b7acc51e6e7f8e513148cb3c7c4664f227" + "d5c704626b0fda447aa87b9d47cd99789b88628eb642ed250312de5ba6b25f3d5342a3cb" + "b7ebd69b0044ee2b4c9ba5e3f5195afb6bea823d", + "01a99fcf54c9b85010f20dc4e48199266c70767e18b2c618044542cd0e23733817776a1a" + "45dbd74a8e8244a313d96c779f723013cd88886cb7a08ef7ee8fdd862e7", + "0401912d33b01d51e2f777bdbd1ada23f2b1a9faf2be2f2a3b152547db9b149b697dd718" + "24ca96547462e347bc4ef9530e7466318c25338c7e04323b1ba5fd25ea716200bbe9b1e3" + "a84accd69b76b253f556c63e3f374e3de0d1f5e3600fc19215533b2e40d6b32c3af33314" + "d223ea2366a51d1a337af858f69326389276f91be5c466e649", + "14fafd60cb026f50c23481867772411bb426ec6b97054e025b35db74fe8ea8f74faa2d36" + "e7d40b4652d1f61794878510b49b7b4fe4349afccd24fc45fec2fd9e9e7", + "18b1df1b6d7030a23a154cacce4a2e3761cc6251ff8bf6c9f6c89d0a15123baef9b338ad" + "a59728349ce685c03109fcde512ed01a40afd2ca34e1bc02ecf2871d45c", + "0a399f9b9e21aeddf450429fec2dc5749e4a4c7e4f94cee736004dcc089c47635da22845" + "992cd076a4f0a01d2cc1b0af6e17b81a802361699b862157ad6cad8bd1d"}, + {NID_secp521r1, NID_sha224, + "f971bcd396efb8392207b5ca72ac62649b47732fba8feaa8e84f7fb36b3edb5d7b5333fb" + "fa39a4f882cb42fe57cd1ace43d06aaad33d0603741a18bc261caa14f29ead389f7c2053" + "6d406e9d39c34079812ba26b39baedf5feb1ef1f79990496dd019c87e38c38c486ec1c25" + "1da2a8a9a57854b80fcd513285e8dee8c43a9890", + "1b6015d898611fbaf0b66a344fa18d1d488564352bf1c2da40f52cd997952f8ccb436b69" + "3851f9ccb69c519d8a033cf27035c27233324f10e9969a3b384e1c1dc73", + "040110c6177ceb44b0aec814063f297c0c890671220413dbd900e4f037a67d87583eaf4b" + "6a9a1d2092472c17641362313c6a96f19829bb982e76e3a993932b848c7a9700f6e566c4" + "e49b2ee70a900dc53295640f3a4a66732df80b29f497f4ae2fa61d0949f7f4b12556967b" + "b92201a4f5d1384d741120c95b617b99c47a61e11c93a482d6", + "1a88667b9bdfe72fb87a6999a59b8b139e18ef9273261549bc394d884db5aa64a0bc7c7d" + "38a8ef17333478d2119d826e2540560d65f52b9a6dc91be1340cfd8f8f8", + "015f73def52ea47ddb03e0a5d154999642202e06e6734ac930c1dc84756c67bbb1cca9f2" + "1f92d61bfdb2052c5dd2833349610f68139393d77250a7662ef7bd17cbe", + "155c744a729f83b27d1f325a91e63a0d564fe96ff91eaa1bad3bff17d2abffa065d14a1d" + "20a04dd993f6ed3260b60bcc6401e31f6bc75aaafe03e8c1a9cd14d2708"}, + {NID_secp521r1, NID_sha224, + "ec0d468447222506b4ead04ea1a17e2aa96eeb3e5f066367975dbaea426104f2111c45e2" + "06752896e5fa7594d74ed184493598783cb8079e0e915b638d5c317fa978d9011b44a76b" + "28d752462adf305bde321431f7f34b017c9a35bae8786755a62e746480fa3524d398a6ff" + "5fdc6cec54c07221cce61e46fd0a1af932fa8a33", + "05e0d47bf37f83bcc9cd834245c42420b68751ac552f8a4aae8c24b6064ae3d33508ecd2" + "c17ec391558ec79c8440117ad80e5e22770dac7f2017b755255000c853c", + "0401a6effc96a7f23a44bf9988f64e5cfafdae23fa14e4bee530af35d7a4ddf6b80dcd0d" + "937be9dd2db3adcda2f5216fecbce867ee67e7e3773082f255156e31358c2f01e7760190" + "dfbe07ec2df87067597087de262c1e0a12355456faba91b2e7277050d73b924e14c0e93b" + "8457a8b3e1f4207ce6e754274f88ad75c000d1b2977edc9c1a", + "18afea9a6a408db1e7a7bb1437a3d276f231eacfc57678bfa229d78681cbe4e800e60653" + "32a3128db65d3aa446bb35b517dca26b02e106e1311881a95b0302d15e8", + "01c49b3c1d21f1678bdbe1ac12167e95e06617190bdee1a729c1c649210da19e2e210f66" + "89e1310513bfe2ac6c0f4ee5f324f344b31b18df341eaadb826d07adc9b", + "129d4931ba457443012f6ffecd002f2abc3a4b65a58fee8457917ebcf24b29a1d3055b7f" + "c62939a74ebb0c3582172ee7c3c75e0b2fa2367c6e04df63a7a91d593ad"}, + {NID_secp521r1, NID_sha224, + "d891da97d2b612fa6483ee7870e0f10fc12a89f9e33d636f587f72e0049f5888782ccde3" + "ea737e2abca41492bac291e20de5b84157a43c5ea900aef761006a4471072ab6ae6d515f" + "fe227695d3ff2341355b8398f72a723ae947f9618237c4b6642a36974860b452c0c62026" + "88bc0814710cbbff4b8e0d1395e8671ae67ada01", + "1804ab8f90ff518b58019a0b30c9ed8e00326d42671b71b067e6f815ac6752fa35016bd3" + "3455ab51ad4550424034419db8314a91362c28e29a80fbd193670f56ace", + "0400a79529d23a832412825c3c2ad5f121c436af0f29990347ecfa586ce2e57fd3c7e062" + "4d8db1f099c53473dbc2578f85416ad2ac958a162051014fb96bf07f9e1d17017c0750f2" + "6df0c621d2d243c6c99f195f0086947b1bf0f43731555f5d677e2d4a082fb5fe8da87e15" + "92a5fa31777da3299cede5a6f756edf81c85b77853388bb3ab", + "042d7c36fec0415bc875deb0fab0c64548554062e618aee3aa6670ffd68ab579fe620d3a" + "9316357267fd3111c0ed567dca663acd94b646d2ba0771953cd9690ef42", + "0d01dfbef126febbdfa03ef43603fd73bc7d2296dce052216e965fed7bb8cbbc24142bfc" + "ddb60c2e0bef185833a225daa0c91a2d9665176d4ad9986da785f4bfcf0", + "16627e2614dbcd371693c10bbf579c90c31a46c8d88adf59912c0c529047b053a7c77151" + "42f64dcf5945dbc69ff5b706c4b0f5448d04dd1f0b5a4c3765148bf253d"}, + {NID_secp521r1, NID_sha224, + "924e4afc979d1fd1ec8ab17e02b69964a1f025882611d9ba57c772175926944e42c68422" + "d15f9326285538a348f9301e593e02c35a9817b160c05e21003d202473db69df695191be" + "22db05615561951867f8425f88c29ba8997a41a2f96b5cee791307369671543373ea91d5" + "ed9d6a34794d33305db8975b061864e6b0fe775f", + "0159bff3a4e42b133e20148950452d99681de6649a56b904ee3358d6dd01fb6c76ea0534" + "5cb9ea216e5f5db9ecec201880bdff0ed02ac28a6891c164036c538b8a8", + "04012d7f260e570cf548743d0557077139d65245c7b854ca58c85920ac2b290f2abfeccd" + "3bb4217ee4a29b92513ddce3b5cbf7488fb65180bb74aeb7575f8682337ef50175601862" + "30c7e8bff0bffce1272afcd37534f317b453b40716436a44e4731a3ec90a8f17c53357bc" + "54e6ff22fc5b4ca892321aa7891252d140ece88e25258b63d5", + "14b8a30f988cefdc0edec59537264edb0b697d8c4f9e8507cf72bc01c761304bd2019da1" + "d67e577b84c1c43dd034b7569f16635a771542b0399737025b8d817e1c3", + "0fc50939ebca4f4daa83e7eaf6907cb08f330c01d6ea497b86becda43dfcad47cb5c48f5" + "eb2cc924228628070bcd144088c449a7873242ba86badf796097dbecd6d", + "0ccb6463c4301ba5c043e47ed508d57dd908fd0d533af89fd3b11e76343a1cf2954ce90b" + "0eb18cbc36acd6d76b3906612d8a0feec6ebed13d88650ed9c708b28a11"}, + {NID_secp521r1, NID_sha224, + "c64319c8aa1c1ae676630045ae488aedebca19d753704182c4bf3b306b75db98e9be4382" + "34233c2f14e3b97c2f55236950629885ac1e0bd015db0f912913ffb6f1361c4cc25c3cd4" + "34583b0f7a5a9e1a549aa523614268037973b65eb59c0c16a19a49bfaa13d507b29d5c7a" + "146cd8da2917665100ac9de2d75fa48cb708ac79", + "17418dfc0fc3d38f02aa06b7df6afa9e0d08540fc40da2b459c727cff052eb0827bdb3d5" + "3f61eb3033eb083c224086e48e3eea7e85e31428ffe517328e253f166ad", + "04000188366b9419a900ab0ed9633426d51e25e8dc03f4f0e7549904243981ec469c8d6d" + "938f6714ee620e63bb0ec536376a73d24d40e58ad9eb44d1e6063f2eb4c51d009889b920" + "3d52b9243fd515294a674afd6b81df4637ffdddc43a7414741eda78d8aa862c9cbbb618a" + "cec55bb9a29aac59616fc804a52a97a9fc4d03254f4469effe", + "1211c8824dcbfa0e1e15a04779c9068aed2431daeac298260795e6a80401f11f6d52d36b" + "cee3cfa36627989c49d11475163aa201d2cd4c5394144a6bb500bbaf02b", + "1d59401b8ac438855d545a699991142685077a409de2418c7ccfe01a4771b3870e76287a" + "9654c209b58a12b0f51e8dc568e33140a6b630324f7ef17caa64bf4c139", + "143af360b7971095b3b50679a13cd49217189eaee4713f4201720175216573c68f7ac6f6" + "88bfe6eb940a2d971809bf36c0a77decc553b025ed41935a3898685183b"}, + {NID_secp521r1, NID_sha256, + "8ab8176b16278db54f84328ae0b75ef8f0cd18afdf40c04ad0927ed0f6d9e47470396c8e" + "87cde7a9be2ffbfe6c9658c88b7de4d582111119c433b2e4a504493f0a1166e3a3ea0d7b" + "93358f4a297d63f65a5e752f94e2ee7f49ebcc742fa3eb03a617d00c574245b77a200338" + "54d82964b2949e2247637239ab00baf4d170d97c", + "1e8c05996b85e6f3f875712a09c1b40672b5e7a78d5852de01585c5fb990bf3812c32455" + "34a714389ae9014d677a449efd658254e610da8e6cad33414b9d33e0d7a", + "04007d042ca19408524e68b981f1419351e3b84736c77fe58fee7d11317df2e850d960c7" + "dd10d10ba714c8a609d163502b79d682e8bbecd4f52591d2748533e45a867a0197ac6416" + "111ccf987d290459ebc8ad9ec56e49059c992155539a36a626631f4a2d89164b985154f2" + "dddc0281ee5b5178271f3a76a0914c3fcd1f97be8e8376efb3", + "0dc8daaacddb8fd2ff5c34a5ce183a42261ad3c64dbfc095e58924364dc47ea1c05e2599" + "aae917c2c95f47d6bb37da008af9f55730ddbe4d8ded24f9e8daa46db6a", + "09dd1f2a716843eedec7a6645ac834d4336e7b18e35701f06cae9d6b290d41491424735f" + "3b57e829ad5de055eaeef1778f051c1ee152bf2131a081e53df2a567a8a", + "02148e8428d70a72bc9fa986c38c2c97deda0420f222f9dc99d32c0acba699dc7ba0a2b7" + "9ce5999ff61bd0b233c744a893bc105bca5c235423e531612da65d72e62"}, + {NID_secp521r1, NID_sha256, + "c4bc2cec829036469e55acdd277745034e4e3cc4fcd2f50ec8bd89055c19795a1e051ccf" + "9aa178e12f9beab6a016a7257e391faa536eaa5c969396d4e1ade36795a82ebc709d9422" + "de8497e5b68e7292538d4ccdc6dd66d27a3ece6a2844962b77db073df9489c9710585ba0" + "3d53fa430dbc6626dc03b61d53fc180b9af5dea6", + "0b65bf33b2f27d52cbfabcadce741e691bf4762089afd37964de1a0deda98331bf8c7402" + "0a14b52d44d26e2f6fa7bcddbe83be7db17a0c8a1b376469cf92c6da27c", + "04010038bb9a7aea626de68c14c64243150e72c69e2f8a1ab922bfbdaa6f33d24fb4542c" + "0324357b0dd640bbcd07632ecd253f64ca2bfbfbf3de9b24fffd0568ab82da00faf867d9" + "5308cc36d6f46844a0f535dc70f9768eed011a2464d2f308fa1d8e72c3616aec7e705169" + "08183ffce7fdd36984a15f73efaa3858c2edf16a784d40e6c2", + "14aeb96c57d99677a1f5e4588064215e7e9af4027bfb8f31ff6126dbf341b8e6f719465e" + "4273e91ba32670feca802549808322b7ee108bb20653cf20f93284d365f", + "075ead62edf7d86c5d1bc2443d1aeb5dc034fd999e6ea012cef7499d9d050cd97d262095" + "884e9fc89a42e15bd3dee80fe3c1ba10f4caabc4aabb86347023028b663", + "129a992a6ff66d41948d11fa680f732b1a74315b804c982805190ed9d2fae223f2b14998" + "0b9241998cdea0c5672595a8a49d5186a0ef7a46c0a376f925bdda81726"}, + {NID_secp521r1, NID_sha256, + "1c1b641d0511a0625a4b33e7639d7a057e27f3a7f818e67f593286c8a4c827bb1f3e4f39" + "9027e57f18a45403a310c785b50e5a03517c72b45ef8c242a57b162debf2e80c1cf6c7b9" + "0237aede5f4ab1fcaf8187be3beb524c223cc0ceff24429eb181a5eea364a748c7132148" + "80d976c2cd497fd65ab3854ad0d6c2c1913d3a06", + "02c4e660609e99becd61c14d043e8b419a663010cc1d8f9469897d7d0a4f076a619a7214" + "a2a9d07957b028f7d8539ba7430d0b9a7de08beeeae8452d7bb0eac669d", + "0400fb3868238ca840dbb36ecc6cf04f5f773ea0ab8e8b0fdcf779dc4039a8d7146a4175" + "04e953c0cb5e7f4e599cc2c168deda8b7f16084b5582f89f2ece4cae5167f701f90b5c15" + "eeda48e747cf3ee8183166a49dbfac6161cbd09d29d40a6854f4c495e88a435892a920cd" + "aad20d41985890b648badd4f0a858ffcbd9afdfc23134ede18", + "1f875bbf882cd6dd034a87916c7b3ba54b41b2ea2ce84ebaf4e393fcf7291fee09dec2b5" + "bb8b6490997c9e62f077c34f0947fe14cec99b906dd6bf0b5d301e75ca1", + "07aa70425697736b298233249f5d0cf25c99e640c9ff88035ef1804820e1bfe7d043755f" + "02d7a079494f7fa6dc26740c4e6b7b430c63f29c67bbd3a5c88d2f0e8d1", + "0e0d42e4ff11cf5be37a9fda348514d5097a662f214687cbfb28ff42d635b13029871ca4" + "f464bb1fbce02d5da4d5fb61b2a071844259fc863d136197bec3a61e7c7"}, + {NID_secp521r1, NID_sha256, + "adb5f069b2b501a3ebb83d4f1808eb07710ac4a7b12532996855a20bcc54b2f76812915f" + "632163c3654ff13d187d007152617cf859200194b59c5e81fc6cc9eb1ceb75d654050f26" + "0caa79c265254089270ccd02607fdcf3246119738c496dc3a4bd5d3be15789fc3d29a08d" + "6d921febe2f40aef286d5d4330b07198c7f4588e", + "17c3522007a90357ff0bda7d3a36e66df88ca9721fb80e8f63f50255d47ee819068d018f" + "14c6dd7c6ad176f69a4500e6f63caf5cf780531004f85009c69b9c1230c", + "04013a4bea0eed80c66ea973a9d3d4a90b6abbb5dee57d8affaf93390a8783a20982eba6" + "44d2e2809f66530adeeee7f9a1da7515447e9ba118999f76f170c375f621f7012f9dfaee" + "40a75d8442b39b37a5c19ea124b464236e9b9a31bae6780cfd50f7ea4a700154b5ea0fee" + "b64e9b35a1b0e33e46900cca1f34d13bb17e5017769841af27", + "18388a49caeda35859ef02702c1fd45ff26991998bd9d5e189c12c36cdae3f642ddd4a79" + "561bd1d3e1cd9359de8f5c9e1604a312d207a27b08a6033f2741794ced5", + "15c6264795837dfea19f91876455f564f073c5c84a3c9d76e67872ae0447ba0d4850d872" + "1302b25bec7ebfedd2721de140b2f3dead547042b24b0876117e7093cc1", + "060eb74236c189a28ed20bd0822eb22d75f7d97c9043a3c8e3f6d4c90bc8ca02ac4d37c1" + "171c799a1c7dfd2fcbf83406b5e48c051e0fbf0fd937bfe6c3db4e18154"}, + {NID_secp521r1, NID_sha256, + "f253484d121d1ce8a88def6a3e9e78c47f4025ead6f73285bf90647102645b0c32d4d867" + "42a50b8b7a42d5f6156a6faf588212b7dc72c3ffd13973bdba732b554d8bffc57d04f816" + "7aef21ee941ee6ffb6cce0f49445bd707da8deb35dca650aaf761c3aa66a5ebccddd15ae" + "e21293f63061a7f4bfc3787c2cd62c806a1a9985", + "0c4dad55871d3bd65b016d143ddd7a195cc868b3048c8bbcb1435622036bdb5e0dec7178" + "ca0138c610238e0365968f6ddd191bbfacc91948088044d9966f652ff25", + "040014858a3b9bd426b678fdcf93fc53d17e7a9e8fe022442aaaba65399d12fd3a6a3819" + "58fb0f07ac6088f4e490506ec0f1ab4d0dbd461126f7eb46ff69cfa8bd88af018c18ce29" + "ecc6d79d26a2de0cd31c4b32e84b5e90f6ba748f86c5afbd89618aceb9079460cbd1a826" + "1ed5476973e61bf1d17ea78b022387443800c9247d21dde550", + "05577108f4187a173e5c29e927a8fc8f5ffd37e184254a6e381ff1018955aec91a35f300" + "85e8cee6a7555c10f9efdce26d62f2b4b52dfdbaeafc3a30983e2d50d5b", + "0344375ae7c804cbe32ced7a20976efae5d9c19eb88b6e24514d1d0cfb728b0f4601098b" + "18b2e98f42b5222dd5237d4d87767007bf5acb185c5526d72047e2cb1a1", + "02de4cfa908c73c1102d6fb7062baf54a056a9517701e036c9c51e09899d60051612d593" + "48945f845dffebec5aa395b2fac7229929033615788777306ccad96d0a3"}, + {NID_secp521r1, NID_sha256, + "33bab1c369c495db1610965bc0b0546a216e8dd00cd0e602a605d40bc8812bbf1ffa6714" + "3f896c436b8f7cf0bed308054f1e1ff77f4d0a13c1e831efbd0e2fcfb3eadab9f755f070" + "ba9aeaceb0a5110f2f8b0c1f7b1aa96a7f2d038a1b72e26400819b1f73d925ea4e34d6ac" + "af59d0a461a34ce5d65c9c937a80e844e323a16d", + "03d4749fadcc2008f098de70545a669133c548ce0e32eec1276ff531bcff535331445557" + "28ad8906d17f091cc0514571691107350b6561858e90dbe19633aaf31bf", + "04010fe5986b65f6e65d13c88c4d2aed781a91026904f82129d46779bdadaf6b733c845a" + "934e941ab4a285efdea9c96ecc9dc784d87e4d937b42c337b3a9cb111a96000077853768" + "a2a4d6f596f57414e57ec60b76d3cd5ece8351cd1f335ebcb8801a3d91fb82c65caaeb5c" + "31eea9918367bb5906863ff3ccaf7a6cee415e0d75c15ac2e0", + "1fbb4de337b09e935a6dc6215ffcfcb85d236cc490585e73251a8b8bac37cfa36c5d1df5" + "f4536d33659be1e7a442529a783452f7efda74a4f661b6a127f9248aaf7", + "09d8f10eeff6178594c89d6e8184f9502117384813243ddf9ccf3c8eac5dc6502c472dfc" + "1487a5caffc569f7dedd14a8ebcb310e9bacdb79fb6655aba026cdf87f2", + "0f74236c7915d638708d17c9f10e39dda358faf9bbb821d8dcda0d151aac143bfb165ad0" + "a23a65cd3de532e32cad928728f5ae1c16f58fc16577f3ca8e36f9e708b"}, + {NID_secp521r1, NID_sha256, + "08c8b7faaac8e1154042d162dca1df0f66e0001b3c5ecf49b6a4334ce4e8a754a1a8e4da" + "f8ec09cf1e521c96547aed5172ef852e82c03cddd851a9f992183ac5199594f288dbcc53" + "a9bb6128561ff3236a7b4b0dce8eaf7d45e64e782955ee1b690ce6a73ece47dc4409b690" + "de6b7928cbe60c42fc6a5ddf1d729faf1cc3885e", + "096a77b591bba65023ba92f8a51029725b555caf6eff129879d28f6400e760439d6e69ce" + "662f6f1aecf3869f7b6057b530a3c6ff8ed9e86d5944f583ee0b3fbb570", + "0400fdf6aed933dba73913142ef8bdcd4b760db8500831cd11d7707ab852a6372c05d112" + "a1e7fbc7b514c42142c7370d9f4129493cd75cc6f2daf83747078f15229db600ef91dffb" + "3c43080a59534b95ca585ee87f6145f6a0199b2b82c89f456d8bd8e6ac71c78039c08177" + "184484eb2ebd372f189db3a58fab961a75a18afec1ee32764a", + "13aa7b0471317a2a139c2f90df1c40d75e5a8a830fbaf87030fffdb2ef6f2c93d1310c9e" + "d7fe9d7bcd4fe46537ff2495bc9c4f0aaff11461f5e4bebbfbce9a8740a", + "1c7a21800962c91d4651553633b18612d931bb88bff8b743ed595b4e869437e50f8e84fb" + "f334c99061db123a1c40b73b07e203790561a37df65a660355ba2017d78", + "1301e1782559a38f1ca0eebe9bed0f5c7c33103d506a24f8a688f500ee1fe37f97b66853" + "19279e82e6fe43cfd823ccbc123309974cffa76c4f8d41ec02a3cbc45f1"}, + {NID_secp521r1, NID_sha256, + "ba74eed74282811631bd2069e862381e4e2a1e4e9a357b1c159a9ce69786f864b60fe90e" + "eb32d8b72b099986fc594965a33285f7185b415df58fead7b8b50fc60d073680881d7435" + "609ad1d22fd21e789b6730e232b0d2e888889fb82d6ad0337ab909308676164d4f47df44" + "b21190eca8ba0f94995e60ad9bb02938461eee61", + "015152382bfd4f7932a8668026e705e9e73daa8bade21e80ea62cf91bd2448ebc4487b50" + "8ca2bdaaf072e3706ba87252d64761c6885a65dcafa64c5573c224ae9e6", + "04000b8c7c0186a77dc6e9addd2018188a6a40c3e2ba396f30bbd9293dba2841d57d6086" + "6b37f587432719b544d8bf7eb06d90a8c0dc9c93b0c53d53b2f667077228ca01dd2e5c73" + "ab908ae34f701689f1cd3cf5186d3a2bc941e208bf3ef970e5e429ee9b154d73286b2e5d" + "a423e75b7c7b78c7bdf915da92279db43265a0cdefca51f86a", + "0d03506999f5cc9ec3304072984a20a9c64a22ad9b418495ca904f4bbddc96e76d34672c" + "b52763339d3f3bc5b1701c00a675b972797e3a086314da1a8d338436566", + "085406c0ff5ec91f598bb579ad8714ad718c3e133d5dcc2e67c5d2339c146b69919cac07" + "f3bc2bda218f4c7c8be04855e2ca6fff7fbdc4fc0fda87c8c3081cad4f5", + "1b45f2066e583636215ae135afc202b8bf3f301eccff2e1c0198b9aeddf695fa8179488e" + "7b622fc307f601e2f6551815117cc836bb09ef888f8e64a45d9c84ad30c"}, + {NID_secp521r1, NID_sha256, + "dc71f171a28bdc30968c39f08f999b88dc04c550e261ecf1124d67f05edeae7e87fe9b81" + "35a96fe2bc3996a4f47213d9d191184a76bd6310e1ee5cb67ea7fc3ef6f641a0ba165198" + "040fa668192b75a4754fc02c224bd4a74aade5a8c814adf151c2bfeda65165a04ef359e3" + "9847c84e312afb66d4cd1db50d41ef3fe5f31296", + "1750ff0ca0c166560b2034bc5760fe0b3915340bc43216e9de0c1d4a76550e8b2036e8b8" + "74230f8d29354aed43e183610f24fd4abd4b0be2f111dae942bd7a121f7", + "0401b4b8947192a7c0166c0e0b2791e217370836283e805f3ee11cfb78445aba3c5bc39f" + "e594e01916617ad59e7c8e740d8f2d07d88905d3f33bd5e51aafd4943c5dc601175d1172" + "32836c28e717ce2a55e59f4ec550effde30d18e3d99e42c6aa2283c7b3e7f2f6ff1fca60" + "5dde78c3a5bffa689347b4c93f51ba59a1787bb7d5e43861dc", + "023645023d6bdf20652cdce1185c4ef225c66d54f18632d99ccf743bf554d04c214c88ce" + "52a4f71ec75c899ad1b3c07c34112ca20b55c217ff1d72c9528e2774ce8", + "1e933f68ce0f8403cb16822b8e0564b1d39a35f27b53e4ae0bcdff3e051759464afbc349" + "98ba7c8a7ee34ef6c1aaa722cffe48356fd0b738058358d4c768b3186c1", + "0a67368a305508ce6d25d29c84f552a4a513998990fef4936244f891a2909c30d5fdc9e8" + "a267ecbf3c597138f4a08f7e92bee57d5420eadd700fee864bf78b2614b"}, + {NID_secp521r1, NID_sha256, + "b895788d7828aaeace4f6b61a072ffa344d8ea324962ba6dab5efda93f65bf64a0f2ac6d" + "5721d03ee70e2aef21cdba69fd29040199160e3a293b772ffb961ed694a8dc82800dab79" + "367a4809a864e4aff6bc837aaa868e952b771b76591c0bb82249034e3208e593d85973d3" + "fea753a95b16e221b2561644535c0131fe834ae7", + "023048bc16e00e58c4a4c7cc62ee80ea57f745bda35715510ed0fc29f62359ff60b0cf85" + "b673383b87a6e1a792d93ab8549281515850fa24d6a2d93a20a2fff3d6e", + "0400ba3dc98326a15999351a2ec6c59e221d7d9e7ee7152a6f71686c9797f3f330d31501" + "23620d547813ba9d7cc6c6d35cc9a087d07dff780e4821e74ad05f3762efd6018b051af9" + "824b5f614d23ecadd591e38edbfe910ad6cbebc3e8a6bec11ea90691c17deb3bc5f34a4a" + "3acd90b7b10f521f6ee7b3cfbfdc03b72d5a8783a4a77c3e4c", + "06099d2667f06c58798757632d07d8b3efbe9c1323efb0c244be6b12b3b163ba1b7cf524" + "6c98dcc0771665a66696d687af5f28ed664fd87d5093df6427523d4db84", + "10dc80ea853064a2ba5a781f108aca3785c5ec0aa45aa05ba31d4de671170797589e863d" + "54a3a986aadf6f670277f50355713dfb27d4ec7e348f787910b3cd668cd", + "018572bfad4f62e3694d1f2e6ffd432faed2e2b9d7e3611a07138212f1e79e6c394839f7" + "cfae96bc368422630016fb9346681eadc5f9699e7331c3b5fde6d65e4c6"}, + {NID_secp521r1, NID_sha256, + "2c5bd848c476e34b427cfe5676692e588e1957957db7b5704492bd02104a38216535607f" + "5d092dc40020130c04a3aaf0f1c52409834926d69a05d3f3188187a71d402a10ba34eac8" + "629b4c6359b1095f30f710219298bf06b9f19bfc299981d7e251ca232a0a85338a7e0246" + "4731d1b25d4a1f68baf97064516590644820c998", + "02b8b866ce4503bb40ffc2c3c990465c72473f901d6ebe6a119ca49fcec8221b3b4fa7ec" + "4e8e9a10dbd90c739065ad6a3a0dd98d1d6f6dcb0720f25a99357a40938", + "0401b8c7a169d5455f16bfe5df1ba5d6ec9c76e4bad9968d4f5f96be5878a7b6f71d74bf" + "ac0076dd278bc4630629f3294646f17d6b6c712b0087e2c4d576039cfdc8b9018faffd54" + "22dfd1b61432fa77b9a288b2b7d546656c0dcca3032179e6f45ee3cf61d6a447fc51731c" + "b54457343a41569fcf78cef42895f4da5efcb14ea1fc065f8d", + "0ac89e813f94042292aa1e77c73773c85cf881a9343b3f50711f13fa17b50f4e5cb04ac5" + "f6fc3106a6ef4c9732016c4e08e301eefac19199459129a41a7589e0628", + "05bc7a253a028ee8b7253979b8d689d41d8df6fae7736341f22e28b6faf0cbbdebbd2ef4" + "d73e56d2021af2c646dc15539a7c1e1c4dc9c7674808bd7968d8a66f947", + "0fd71575837a43a4cf1c47d0485cfd503c2cf36ebcea0fdef946ad29acb7fb2e7c6daf6b" + "4eb741eb211081aed6207d02569f1518988f275ad94c7fd4735cb18a92e"}, + {NID_secp521r1, NID_sha256, + "65a0b97048067a0c9040acbb5d7f6e2e6ac462e1e0064a8ce5b5bbf8e57059e25a3ef8c8" + "0fc9037ae08f63e63f5bdb9378c322ad9b2daf839fad7a75b1027abb6f70f110247da7e9" + "71c7c52914e5a4f7761854432fa16b2a521e7bcaee2c735a87cad20c535bf6d04a87340c" + "229bf9af8647eedca9e2dc0b5aa90f7fea3cdc0a", + "0a43b32ad7327ec92c0a67279f417c8ada6f40d6282fe79d6dc23b8702147a31162e6462" + "91e8df460d39d7cdbdd7b2e7c6c89509b7ed3071b68d4a518ba48e63662", + "040172fb25a3e22c2a88975d7a814f3e02d5bb74cfb0aaa082c5af580019b429fddd8c7f" + "9e09b6938f62e8c31019b25571aaceef3c0d479079db9a9b533ee8e1670abd00ff551622" + "3b6cc7c711705f15b91db559014e96d3839249c5c849f2aced228a8998177a1e91177abb" + "b24b57a8ea84d944e0c95da860ae0925f1b40c0e1b7c9e0a46", + "0383eda042e06c0297fbd279a2ad40559c5c12ad458f73458eebcc92b308d3c4fcec20a5" + "b59f698e16fa6ea02dba8661b6955f67c052f67b0a56460869f24cfdf7d", + "1b9c35356b9d068f33aa22a61370dae44a6cb030497a34fb52af23c6b684677370268f06" + "bb4433be6795a71de570088aec17ce0c9933d2f76c7edce7f406f62fedd", + "06f07ea453cfa20ad604ba855332f62834657b0b795684d50c1562a675456e37f4dae45f" + "0df47d8e27e47bc9ce9c9cbba1554c5b94b0b17401b73c8d0c0902c6cc4"}, + {NID_secp521r1, NID_sha256, + "d6e366a87808eea5d39fe77cac4b8c754e865a796062e2ec89f72165cd41fe04c4814806" + "8c570e0d29afe9011e7e7a2461f4d9897d8c1fa14b4ff88cab40059d17ab724f4039244e" + "97fcecb07f9ffeec2fb9d6b1896700fe374104a8c44af01a10e93b268d25367bf2bef488" + "b8abcc1ef0e14c3e6e1621b2d58753f21e28b86f", + "03c08fdccb089faee91dac3f56f556654a153cebb32f238488d925afd4c7027707118a37" + "2f2a2db132516e12ec25f1664953f123ac2ac8f12e0dcbbb61ff40fb721", + "040193301fc0791996ca29e2350723bd9aa0991ddbb4a78348ee72bdcd9ed63ce110ba34" + "96f2ce0331b5c00d4d674c1b70114e17ce44a73c3e16bab14ed1ee924202e400aea9b288" + "cfb2933ec0a40efa8e2108774e09b3863b3193d0dac6cc16ccaa5bd5f9ce133aec5cd3b6" + "2cbaeec04703e4b61b19572705db38cfaa1907c3d7c785b0cd", + "0d0e90d5ee7b5036655ad5c8f6a112c4b21c9449ca91c5c78421e364a2160bbac4428303" + "657bc11ea69f59fb0fe85a41b8f155a362343094456fd2a39f2a79e4804", + "1a8c23a2965d365a4c2ffd0802ae8b3a69c6b84a1ba77fd8a5f2f61e8ec3a1dcb336f136" + "e2a997252eaa94caf9b5ad6c9ecff5bf33abf547ca84985bb89908a11d7", + "1cc42a2dd97aa42b9df5ea430e0d4cb13106dd6da6e8c9315c96ed7b052db365bbde6960" + "c9a965954a4398c18ea7db9593bbfc3c3b6b3466ff806fccac3de6424ab"}, + {NID_secp521r1, NID_sha256, + "f99e1d272d0f5fb9c4f986e873d070ec638422bc04b47c715595e2cf1a701cdf88bc6c4b" + "20085b357bad12ccba67cac8a5ca07f31ba432f9154ff1fadefd487a83a9c37e49fb70a2" + "f170e58889cab0552e0a3806ccfa2a60d96e346851d84b7de6d1a4b8cf37567dc161a84f" + "13421e3412457d4bc27f6213453c8519a2d7daa2", + "0969b515f356f8bb605ee131e80e8831e340902f3c6257270f7dedb2ba9d876a2ae55b4a" + "17f5d9acd46c1b26366c7e4e4e90a0ee5cff69ed9b278e5b1156a435f7e", + "0400fc7ae62b05ed6c34077cbcbb869629528a1656e2e6d403884e79a21f5f612e91fc83" + "c3a8ac1478d58852f0e8ba120d5855983afd1a719949afa8a21aec407516c300aa705da6" + "459a90eaa2c057f2e6614fb72fc730d6fdebe70e968c93dbc9858534768ea2666553cd01" + "db132331441823950a17e8d2345a3cab039c22b21bfe7bd3b9", + "19029260f88e19360b70c11107a92f06faa64524cfbd9f70fecf02bd5a94f390582a7f4c" + "92c5313bb91dc881596768d86f75a0d6f452094adbe11d6643d1a0b2135", + "07f2158e9b9fa995199608263969498923cf918fdc736427c72ce27ce4a3540dce2e8e5e" + "63a8fc7ba46f7fa42480efbf79c6ed39521f6e6ec056079e453e80a89d9", + "08e349eed6f1e28b0dbf0a8aeb1d67e59a95b54a699f083db885f50d702f3c6a4069591a" + "faa5b80b3c75efb1674ebd32c7ead0040d115945f9a52ee3a51806cad45"}, + {NID_secp521r1, NID_sha256, + "91f1ca8ce6681f4e1f117b918ae787a888798a9df3afc9d0e922f51cdd6e7f7e55da996f" + "7e3615f1d41e4292479859a44fa18a5a006662610f1aaa2884f843c2e73d441753e0ead5" + "1dffc366250616c706f07128940dd6312ff3eda6f0e2b4e441b3d74c592b97d9cd910f97" + "9d7f39767b379e7f36a7519f2a4a251ef5e8aae1", + "013be0bf0cb060dbba02e90e43c6ba6022f201de35160192d33574a67f3f79df969d3ae8" + "7850071aac346b5f386fc645ed1977bea2e8446e0c5890784e369124418", + "040167d8b8308259c730931db828a5f69697ec0773a79bdedbaaf15114a4937011c5ae36" + "ab0503957373fee6b1c4650f91a3b0c92c2d604a3559dd2e856a9a84f551d9019d2c1346" + "aadaa3090b5981f5353243300a4ff0ab961c4ee530f4133fe85e6aab5bad42e747eee029" + "8c2b8051c8be7049109ad3e1b572dda1cac4a03010f99f206e", + "1a363a344996aac9a3ac040066a65856edfb36f10bb687d4821a2e0299b329c6b60e3547" + "dde03bdbd1afa98b0b75d79cf5aac0ef7a3116266cadf3dfbd46f8a4bfc", + "1ff097485faf32ce9e0c557ee064587c12c4834e7f0988cf181d07ba9ee15ae85a8208b6" + "1850080fc4bbedbd82536181d43973459f0d696ac5e6b8f2330b179d180", + "0306dc3c382af13c99d44db7a84ed813c8719c6ed3bbe751ead0d487b5a4aa018129862b" + "7d282cce0bc2059a56d7722f4b226f9deb85da12d5b40648bf6ec568128"}, + {NID_secp521r1, NID_sha384, + "dbc094402c5b559d53168c6f0c550d827499c6fb2186ae2db15b89b4e6f46220386d6f01" + "bebde91b6ceb3ec7b4696e2cbfd14894dd0b7d656d23396ce920044f9ca514bf115cf98e" + "caa55b950a9e49365c2f3a05be5020e93db92c37437513044973e792af814d0ffad2c8ec" + "c89ae4b35ccb19318f0b988a7d33ec5a4fe85dfe", + "095976d387d814e68aeb09abecdbf4228db7232cd3229569ade537f33e07ed0da0abdee8" + "4ab057c9a00049f45250e2719d1ecaccf91c0e6fcdd4016b75bdd98a950", + "04013b4ab7bc1ddf7fd74ca6f75ac560c94169f435361e74eba1f8e759ac70ab3af138d8" + "807aca3d8e73b5c2eb787f6dcca2718122bd94f08943a686b115d869d3f40600f293c1d6" + "27b44e7954d0546270665888144a94d437679d074787959d0d944d8223b9d4b5d068b4fb" + "bd1176a004b476810475cd2a200b83eccd226d08b444a71e71", + "0a8d90686bd1104627836afe698effe22c51aa3b651737a940f2b0f9cd72c594575e550a" + "db142e467a3f631f4429514df8296d8f5144df86faa9e3a8f13939ad5b3", + "02128f77df66d16a604ffcd1a515e039d49bf6b91a215b814b2a1c88d32039521fbd142f" + "717817b838450229025670d99c1fd5ab18bd965f093cae7accff0675aae", + "008dc65a243700a84619dce14e44ea8557e36631db1a55de15865497dbfd66e76a7471f7" + "8e510c04e613ced332aa563432a1017da8b81c146059ccc7930153103a6"}, + {NID_secp521r1, NID_sha384, + "114187efd1f6d6c46473fed0c1922987c79be2144439c6f61183caf2045bfb419f8cddc8" + "2267d14540624975f27232117729ccfeacccc7ecd5b71473c69d128152931865a60e6a10" + "4b67afe5ed443bdbcdc45372f1a85012bbc4614d4c0c534aacd9ab78664dda9b1f1e2558" + "78e8ac59e23c56a686f567e4b15c66f0e7c0931e", + "04ceb9896da32f2df630580de979515d698fbf1dd96bea889b98fc0efd0751ed35e6bcf7" + "5bc5d99172b0960ffd3d8b683fbffd4174b379fbdecd7b138bb9025574b", + "0400e7a3d30d5bd443549d50e9b297aaa87bc80b5c9e94169602d9d43d6d0c490c0bed8c" + "c2170288b106bdbf4c9f1ce53fd699af0b4c64b494b08520e57dc01ab9a8b001d81056d3" + "7aec8a75d588f6d05977416e6f24ad0117a7f4450036d695612e7bc2771caed80e580314" + "eebc88c8fc51c453f066e752481f212b57165d67f8a44f375a", + "046639c5a3ec15afae5e4a7a418ac760846512d880c359bc2c751b199ce43b10887e861b" + "14127809754dbea47f6cc0140d2817e3f5b9a80ce01abd81f81b748433a", + "0f913de91e19bd8f943d542ae357bacc942a0967abc9be6c06239a379db8cc733fa50013" + "e0b0f088bce9d630262feaa33b30d84f91bcf5ce9976e4e740fcb112f84", + "08a73a5c9c24235e0d9cecaac653f68ce5a6fb186ce67fa058d6ddbbd4d0a8c4d194e571" + "148e8ad6c8882b4e33d2f60fb23dd7d07a1ae60864e8277918f592b3dc6"}, + {NID_secp521r1, NID_sha384, + "6744b69fc2420fe00f2352399bd58719e4ecdd6d602e2c80f194d607e58b27a0854745bf" + "d6d504de2eb30b04cee0f44af710dd77e2f816ac3ac5692fad2d1d417893bb0edba2707a" + "4c146a486f8728ca696d35cc52e9c7187c82d4bdb92eb954794e5ad15133f6bfea1f025d" + "a32ada710a3014cf11095b3ff69a94d087f17753", + "00a8db566bd771a9689ea5188c63d586b9c8b576dbe74c06d618576f61365e90b843d003" + "47fdd084fec4ba229fe671ccdd5d9a3afee821a84af9560cd455ed72e8f", + "04004f5b790cbe2984b71d41af5efed6c6893d15e13f31816d55a9c2926a104eee66f1ad" + "a83115d1388551218773b8b9d1138e3e3f027bb4392c90c14fd232580b4a1100660eb160" + "e9bfc8c5619e70e948e238c6fd37739bc1bb657b8e8436e63628f91992be7e63d9a73596" + "23a1340642777b22026feb51116a6c50c54c3589b9bd39b6cb", + "1e7b5e53571a24bd102dd7ad44a4b8d8a4e60e5957bc3c4e5d3c73109f55233f072e572c" + "7892f425ba5e64d3cb7966096bb34a47e26cd5b3e3b44108b310d9f681b", + "1a88bcd7e2bdff6e497d943dde432fb3f855a7177c466319cb53b701230c299db0302762" + "69685857d1e3f28110e690f2f529c8d18115eb381f313bc891d92ad278e", + "146f1984ea879274dfd5e86ad92e564a4de081523ddbb1c397b8f9595911ef2e6501bc08" + "1584d5340f7aa47e1af036234ac6f27a5ac31f78dd3b0ff1a62693c630d"}, + {NID_secp521r1, NID_sha384, + "16001f4dcf9e76aa134b12b867f252735144e523e40fba9b4811b07448a24ef4ccf3e81f" + "e9d7f8097ae1d216a51b6eefc83880885e5b14a5eeee025c4232319c4b8bce26807d1b38" + "6ad6a964deb3bdca30ee196cfdd717facfad5c77d9b1d05fdd96875e9675e85029ecbf4f" + "94c524624746b7c42870c14a9a1454acf3354474", + "1a300b8bf028449344d0e736145d9dd7c4075a783cb749e1ec7988d60440a07021a25a3d" + "e74ea5e3d7bd4ab774d8ad6163adae31877ef0b2bd50e26e9e4be8a7b66", + "04005055b9ad726ba8a48219b0ecbfffb89f8428de895b231f676705b7de9f2022d9ff4e" + "0114ebb52dea342f9bf76b2fb060c020e29d92074ebb1fbfe5290a58c8bc1000415af7f2" + "0a6e945315adbf757316bb486c80780a0a3a15b4b9609f126d7341053a2b726ab63cb46f" + "eee527b0bf532b32b477e5671aea23d9b3c3e604b9029954b5", + "05a2e92717bb4dab3ee76724d4d9c2d58a32b873e491e36127985f0c9960c610962ca1c4" + "510dba75c98d83beebdc58b1d8678e054640951d11db1bd2d8a4ab8476b", + "104a78ce94f878822daaf00ee527fbdbf6cceb3cbb23a2caa485e4109466de8910252f92" + "379ab292cac8d1eda164f880c0067696e733fc8588a27703a3e1f5b8f1f", + "1ffe23e8ab5a31668a81161a234ea14879771fe9866f8872eb6edb672e0fe91d2bb75c97" + "67a2dfbac7c15c802211236b22ea41ecd055a0b8b311ffc4255f86d5c67"}, + {NID_secp521r1, NID_sha384, + "a9824a7b810aa16690083a00d422842971baf400c3563baa789c5653fc13416111c0236c" + "67c68e95a13cec0df50324dcc9ae780ce4232607cb57dd9b2c61b382f0fa51fd4e283e2c" + "55ffe272597651659fbd88cd03bfa9652cd54b01a7034c83a602709879e1325c77969beb" + "fd93932ce09a23eae607374602201614ff84b141", + "06a253acd79912a74270fc0703ed6507ab20a970f2bc2277f782062092cf0e60ae1ca1bb" + "44dec003169bc25ef6e7123dd04692f77b181a6d7e692e66b09d35a540c", + "0401f15c6b1df156fdd8381cd7446e039435e445f8f36f0247475058da0e371bf72753f6" + "e39f98066bc79370b038c39687ba18e16cb118fe6538b7568c5403c251f6b7012d2b4f46" + "b854eeae75f1c63f55b76bf0c604d47f870c28a50ecdeb52bba1dd9a0ff12e680804ff86" + "4111207652da7dd10b49edf66bb86be00bc06672de91982457", + "165faf3727e42fd61345cfa7b93e55fb4bf583b24bdc14ce635b6c99dbd788012f14da9a" + "210b677c44acdd851e672f1a48188d6b8946c0efeebfe8a597ba0090a2c", + "1ad9463d2759abd568626548578deefdcd8b2d050ce6d9c7ed05feca20167484b86e89bd" + "cc936fd647e0f8aedd7b6add2b8cf13ff6ff013c2b5540c6c56fda97a0c", + "1645a7d0e11015256cfb034adca198695eea6aedd44d9fbf496850ccfed950f43fffd8db" + "f41e113f2d3837d8a5dd62b2ed580112ff05800b1f73196e5576810e15b"}, + {NID_secp521r1, NID_sha384, + "90d8bbf714fd2120d2144022bf29520842d9fbd2dc8bb734b3e892ba0285c6a342d6e1e3" + "7cc11a62083566e45b039cc65506d20a7d8b51d763d25f0d9eaf3d38601af612c5798a8a" + "2c712d968592b6ed689b88bbab95259ad34da26af9dda80f2f8a02960370bdb7e7595c0a" + "4fffb465d7ad0c4665b5ec0e7d50c6a8238c7f53", + "0d5a5d3ddfd2170f9d2653b91967efc8a5157f8720d740dd974e272aab000cc1a4e6c630" + "348754ab923cafb5056fc584b3706628051c557fce67744ee58ba7a56d0", + "040128a4da5fc995678e457ceb3929adee93c280f851abe900fa21f4f809dafad4e33b38" + "1e0cd49ce8dd50e2e281cea162bfd60a1d6a1c0ee2228e6a011e171b559ab8006eb0917c" + "d72256992c49ea527f6bb0315f13d8047794a0f1da1e93737703b1c2a74a00441ef3b47b" + "6a2ff789c49ae32d91cabe7b29247aeec44f6c40a76597a2ca", + "03269983a5c2bcc98e9476f5abf82424566b1f08b17204d29e310ece88f99eb677a537f8" + "6fe2529e409cfef2c12929644100099e0de2f27c0f0ac11105a4dca935b", + "1a5257ae1e8187ba954f535b86ff9b8d6a181a3b95c250d090cb4e9c3bfbd03aa64696a7" + "6c569728ef67780d6338d70ce46da40b87a3e49bfe154b93930890dfa93", + "05b6ccdfd5c63c7db76d3a0478064a2a376e0e050cb093be795a72a549247c2e4adba918" + "3145c63d46479dbbdcf09986a6f64c09c7e16abc4853f6376c9558b014a"}, + {NID_secp521r1, NID_sha384, + "09952b1e09995e95bf0022e911c6ab1a463b0a1fdd0eec69117b34af1103c720b5760021" + "7de7cd178fef92de5391e550af72a8dcf7badf25b06dd039417f9a7d0f5be88fcd4e9655" + "931d5b605452a667c9d1bae91d3476e7d51cff4108f116a49966fb3a7cff8df1c09734ce" + "5620faf2dccb3dc5d94e7e9ac812da31f6d07a38", + "1bcedf920fa148361671b43c64e3186e1937eb1bd4b28cbd84c421472394552889bc0550" + "9aa732ef69d732b21b750523fdfd811f36467690fe94e01e64c9d5cbbe9", + "0400d33c151d202a5d4d831348e940b027ee32e4b0b9b48d823a05c67ff3bdaee0189fc6" + "680565f352c062e99968afc643208b4f9c7af185b861658a88c4ad0fcc8ba200e4441ddb" + "546468ad8ffa6074f137edfbb81e82e0e7d8f05c4c54598aa996a9cde54cb371f642bfdd" + "4ae7eca5b769696030027129a4183da93567ad142a2dff5183", + "046e619b83aac868b26d0b3cbfab55e630e0b55c461985b5d00f94ff3a5ce90ff412cebf" + "46bbd84550d2031d573ca27d924624428360708c8d8491c29eb01d30f2e", + "08427c0f0ac0263472cd423c0fb554bf3c851b9c775c566ab0f6878717bd57665830767b" + "05b7789c5c0b078195bd943dc737325552d32877ecb04a7c41bd07cd80c", + "10bb6652d6a624c40a7dd06828f15774130d02369ceb1a7d03b553e16e17b7fa5b5401f1" + "5885d5e4fc2e55c0c7a1b97871ab02f76386b93a16aa6e7eb65debac6dd"}, + {NID_secp521r1, NID_sha384, + "0bb0f80cff309c65ff7729c59c517d50fc0ed5be405ef70cb910c3f62c328c90853d4473" + "530b654dda6156e149bc2222a8a7f9be665240e2fbe9d03f78a2356af0bacd1edb84c480" + "1adc8293a8a0bd6123d1cf6ba216aca807a7eb4dca76b493eb6e3dbb69d36f0f00f85622" + "2f24d9b93ec34c3b261be2fca0451c00571928e5", + "03789e04b3a2a0254ade3380172c150d2fad033885e02ea8bea5b92db3f4adbab190ae42" + "3080a1154dfedec694c25eab46ce638be3db4e4cba67bc39f62d6e7db2d", + "0401dbc2cf19627bdccf02432b1761f296275230c150cdde823ce3141ec315d7d05e16b2" + "c29e2a67491078d5316883e933d85b4b10d4f64c477d3c4e0442dc928983a2007562e720" + "807dd118d3d8b265b3abc61a71fce43e3dce0e7b5ae18b7a4cb01ecc00d39c1f22e150a9" + "a8728997e502144f5b3f6fa9b4cb8a4136212b082ca394e3f6", + "0fbccd8d7804bdd1d1d721b5ec74d4ba37603bc306f9fce2ec241853d8e07334e6b4b12c" + "4ecca0c54bd71193dd7146507933a20737c5f3e15085830fab9b30ca57b", + "181915a3998d8fa214f9715f4ca928d09c36de168dc15c6970a8a062b5cea2dc969b2437" + "ca17b684f78a1fd583aad8e6c762c8f4ab0c91b86a497145e3ca440d307", + "15a6c18c5c77f5470b27d061eafdc26b78561941a3b2ab0f5c81d40899fc053c3d9ed12d" + "7d61e298abbae470009c7b2157731c58d7b16a66fa5abaf5e8a1b8ed394"}, + {NID_secp521r1, NID_sha384, + "7efacf213382ce30804e78b7256854d759147dba9729c51b2759465715bf2c421034c23d" + "c651c13d6cce95f71fe6a84dfbee5768163ac5789ac0474c5ddf4115684683c5f7c204b3" + "3b8bcc0c03ac58f66cef2f53b721fe2fac91ad841126101a88f512a7c2ded38549d9f050" + "d4b7961dda48a1489f026c5d111701762418cfe3", + "124700aa9186353e298edefc57bec0c7d0201cca10c1d80dd408d5d71040592b0ac59fac" + "dadfa8712445f5977ef8d4854022720c3f02d60e0732dbb2f171fcf1490", + "0400c80fc4cecae5d53348524ddba6a160b735c75b22fdb39af17e2a613d09246e3bb0fd" + "3f2978577f6db5d2118e05c7898024808f8eb8e021d7969cdcf7fc981200bb01a880c939" + "43fd446d4b3923b574d2221c1bb7b645fb5534dda60e827b497666ff586b77921f7e7f60" + "5147947194cffd2fef0678880b89cc0bc7fb74fa96d4b112d7", + "01a05238d595ded5c61d3bf6fde257dbf13095af8a5cb3a2e579e8e4c550fe31d12b71cc" + "2dbcb295e6c4fd0fb8c22d1b741c097cc59d826ced1a8771f09983143c4", + "132762bc81e9922a8d642e3a9d0218affa21fa2331cfcb9e452545c5981c64a8f7e4cc8e" + "68056023b2aa78bead59061d19c7f646c931163a91e544b106b3be8de9e", + "0c3a1b0b000c3169984132add51d611e2cb7069a262a6983d2ae72b459c36e6469509bdb" + "0f473600b8686700b08910779dee9ba83f82e755d4a4ef5f124eb09397f"}, + {NID_secp521r1, NID_sha384, + "28edff8b9d85f5f58499cc11f492abdfab25e8945975bbaeee910afa2b8fc1295ec61406" + "309ce4e09f4ab4f462959fc2a2786802466eb26d3b01be6919893ae75d0fdc2dc8a82e66" + "2550f9fce9627dd364188aaba5c6faa1b2d8a2235adfa5ad0dc140f88a2b2f103f5690e8" + "77d07fe8fd30d02d2b2729bd3d8eb5b23a21f54c", + "1f532d01af885cb4ad5c329ca5d421c5c021883bd5404c798d617679bb8b094cbb7e15c8" + "32fb436325c5302313ce5e496f9513455e7021ffad75777a19b226acfa1", + "0400c0bd76b0027b85bdd879052220da1494d503f6a4bb972105a48ae98e7dda8c2d9fd9" + "336f5646385b961ef68e8464e3a95b00f96614b1a408ceaa2c87b077b6a8fb017eb7eb5c" + "78db7819af92e8537d110d9f05a5e24f954f4dde21c224d4040f059ec99e051702f39041" + "3d2708d18f84d82998c61847475250fb844b20082cbe651a6b", + "14e66853e0f7cd3300ebcae06048532e19cbb95bee140edc1c867ce7310637651445b6df" + "eb1d99d2e32f2ffb787ebe3fe35032277f185d3dad84f95806924550abe", + "0c5b3a57161098e2e8e16e0a5ae8ecf4a14df14927eea18ed4925d11dc429dda14515932" + "3ba970174b194b9b4608a8fa2373b7a825c5e8bd80574e49698285c2c82", + "1a0c038a51796158b42eb5b0dac37aff9ab93b903a47e06ebbdd15946e4bcc9a3b3875b1" + "8cf6294c33fc6c3693cef04ed1a43d08951e664c760e2cf3fb4e47490d2"}, + {NID_secp521r1, NID_sha384, + "bae2a8897c742fd99fbf813351cd009d3f2e18d825ca22e115276484bce8f82f8c7c0c21" + "dd2af208404d8ef45bb5a6c41693912b630897d5246801bf0775aa9bbac8be98cb861d17" + "2c3563dc59e78a58ed13c66dea496471b3ad0eeae8995293e4ab97373edc1837ffc95ff1" + "cc0c1e90e64ea8680b2ca5f1e09bf86b99b343b6", + "11abf508bca68a85a54bc0659e77efad3c86112c9db04db2883e76144aa446918bb4bb07" + "84b0b6a0e9aa47399fe3de5aaecfd8894a0d130bb0c366c40d9d5050745", + "04005c0ea363a3a12633ea39d564587ebdd3a22a175ef32b9ebfc7311304b19cb3a62b5a" + "dc36f6afb6a6f7fabbf810ee89fdb72854fefd613e7798e9b9ff5938ea54c600bd06a85e" + "47b885c08124b55a3fcc07ca61647cda6efbfdbd21b24d1ea7a4c7300d46cd798e76063a" + "a979adef6f0698b15e5b7ae8a2ab39ab4f50b2d20614db6317", + "19cadb8c7eb10565aa4567e0709873918720f0e4b42b4817afb0b0547c70cd1100229dea" + "e97a276b9c98ea58b01d4839fee86336d749d123b03e8b1a31166acc110", + "0667448a8bbef1c810d40646977dc22f3dfb52a4d80928ded5e976e199cbed02fbd5a085" + "46756ece14548d721a6eb380d0e1a71ad0660dbcac6163c776eedd3e249", + "0ae7f0a238daaddb7fb4a1707fe5132daf653f8e19f732347134c96f1dd798f867c479a4" + "a4609a568a15b61afed70790adbde13ac5f68c468d0230852c1a2c22581"}, + {NID_secp521r1, NID_sha384, + "d57a26a9593e72bfc87322524639bcaae5f2252d18b99cdaa03b14445b0b8a4dd53928f6" + "6a2e4f202fb25b19cad0eb2f1bfda2ab9b0eb668cdcd0fe72f5d9ef2e45e0218590f7ab9" + "d2c9342202610c698bc786cce108a7d4a6730a13e9ea1b470e781f1237d3f84f44abde80" + "8516975546bd89075ef9a9732bfd7ee33b6f4399", + "18dbf520d58177e4b7a0627674d220137983f486dd2fd3639f19751804e80df0655db6af" + "d829cdf75238de525e1a7a9f048049b593dd64b4b96cc013f970c05ea1f", + "04018b872690c37995be324ddb5c2bd5462841bb062f8e63da248a853de79c3d6bb9a2eb" + "1e6933afda0998ca43491cc807b08ace2d5336a43d0ab50563a2d3d98755f00002ff3122" + "1aa32aa6546f35e8fe5b9361f938362a5e89e77ae130ba8bce3729e912dfac35a2fd21ef" + "e84b45b8be2a340850e4b574e1885b35c2afbe196b57c6cf4c", + "098faeb73054639cb2e4442cd68e7b3a13f4b3f397a7b26f303afa40789f8ddd3d918f1c" + "e4f0be53c8cb69c380744e2297d7fc01e2b3daef4ce64dd3a2644234753", + "09c0e7649f814f70a8416cb78bc4601472a363fe97f5c587305778169677860dd97f87b5" + "ab07c3a953bc4615fc34634509d6a25621bdded33ed42446d059509c190", + "120b90e1cfb8a1b5e530df7b17d1128bc051ca4f1a65dd9c9d9d3c59d2f00c7c1e994c52" + "b8671d40294b4d574d2c04475d5bebeacd3a0d3870a54dc7a4805614f40"}, + {NID_secp521r1, NID_sha384, + "8fdcf5084b12cfc043dd3416b46274e021bbed95d341d3c500c102a5609d3a34de29f8fa" + "9f0adb611a1f47a97ad981f8129d718fc0d6c709eab1a3490db8d550f34eb905b9e00663" + "543afc5bc155e368e0bc919a8b8c9fa42093603537a5614927efa6be819ed42ececbf1a8" + "0a61e6e0a7f9b5bc43b9238e62d5df0571fea152", + "002764f5696aa813cd55d30948585f86288ae05aeb264ca157cd09e1d09a10515a849b07" + "91b755ccc656a34707be9e52f5762d290a7d2bcd6de52c600ff862eaf4e", + "040127279c88719dc614db387f102e55104ea1c704ac7f57f3bca936f728439b76556730" + "dd7cde2ac1ad0a4c2c2f036ab6f00cf34cb87ea36113571f300713044106d20134a0786c" + "31f5f2291b83c50fb579ae4c620b95e5a8bdc0c7e1ee6b996c89d764f1b20403e7faa203" + "f397425ada297045dd8ba0e4b155d4900da249e934faab7991", + "08bffb0778cbb06466cecc114b9e89ca243a2b2b5e2597db920bc73a8bbcbe3f57144ad3" + "3409ef7faaab430e13f4c42d304d11347360c84972ca20b1539cce3a288", + "1f8f504e64a502e51e7c129517931c3b71f0d8a63b19cfe01ff7c951c6525249608b3ef5" + "d00061d77eb6b3d69581adeaa3732c773bbb9b919c3e7c71fdc09f44d06", + "058044fc64b340604ffd02a5b2918d76fd6fb59ea895feab7aa218e6f1e8c8f226eb9ee3" + "45ef8140183a69272582005077b008006aab11597e808d7ff1e8382c924"}, + {NID_secp521r1, NID_sha384, + "00669f433934992257bed55861df679804107d7fa491672574a7624949c60049b0533383" + "c88d6896c8de860704c3e6a6aefce83efa57c4d57e9ab253da5d15e1f53ab6dce218b592" + "772ab0bc01fee8e63368e85c0639301456fe2d44cd5396a7f2b22761cd03b80eba7883ee" + "de8249a2f5db2183bf00550c5c002f45a5e4fb31", + "1b0c9acd3eeb618b4b0de4db402206f0f29adc69d7ad324b6db6601b351f723ac8fe949e" + "eacd34228649bf0126276e5aceb0137d00c30dd858aef2d6b6449de2e89", + "0401811c8884486aaa083ddee1c51cb6e861cb830bd5eaa929f72efadbbd1286566ae7e7" + "ba7fde7e02529900d35ee64591652d28798bfc1bed0d192602a9cf5a7d22e3006d7fc9dd" + "494816cfd29613d4689af67f7d0a2e6fbad5d4d6e0130189172a1ab601c5ca71deaa8bfc" + "b5a190d49da191672ff6fc048e146cb902acec5eae6d87e60a", + "1fdc4f108070af3c66c9ba7b6c1f2603a19ceb4760399df81228cfc7eafde1082b5a0716" + "a3ff82fbe84726f14dd0db3376ca184a78c3c60679bab6cd45f77f9b9ce", + "1ec310339ff056faeb341c4499c43782078b04be1725ae9a6cdcb6011c46d1a4eb3d75c3" + "58225e4ec142fd1cd344186f5eb597f7ba559ddfa954824365d5b6edaec", + "005b679a33fdb7e04834f071cd0ac514c04add9f2614ab9bbd9b407b1420fed3f3e02a10" + "8e7e279899e43dcf64ae4083c289a87cd7d2103bdc036a95d36800ac7c6"}, + {NID_secp521r1, NID_sha384, + "4be81dcfab39a64d6f00c0d7fff94dabdf3473dc49f0e12900df328d6584b854fbaebaf3" + "194c433e9e21743342e2dd056b445c8aa7d30a38504b366a8fa889dc8ecec35b31300707" + "87e7bf0f22fab5bea54a07d3a75368605397ba74dbf2923ef20c37a0d9c64caebcc93157" + "456b57b98d4becb13fecb7cc7f3740a6057af287", + "181e1037bbec7ca2f271343e5f6e9125162c8a8a46ae8baa7ca7296602ae9d56c994b3b9" + "4d359f2b3b3a01deb7a123f07d9e0c2e729d37cc5abdec0f5281931308a", + "0400cfa5a8a3f15eb8c419095673f1d0bd63b396ff9813c18dfe5aa31f40b50b82481f9e" + "d2edd47ae5ea6a48ea01f7e0ad0000edf7b66f8909ee94f141d5a07efe315c018af728f7" + "318b96d57f19c1104415c8d5989565465e429bc30cf65ced12a1c5856ac86fca02388bc1" + "51cf89959a4f048597a9e728f3034aa39259b59870946187bf", + "09078beaba465ba7a8b3624e644ac1e97c654533a58ac755e90bd606e2214f11a48cb51f" + "9007865a0f569d967ea0370801421846a89f3d09eb0a481289270919f14", + "19cf91a38cc20b9269e7467857b1fc7eabb8cea915a3135f727d471e5bfcfb66d321fabe" + "283a2cf38d4c5a6ecb6e8cbee1030474373bb87fcdfcc95cf857a8d25d0", + "1cf9acd9449c57589c950f287842f9e2487c5610955b2b5035f6aacfd2402f511998a1a9" + "42b39c307fc2bcab2c8d0dae94b5547ddccfb1012ca985b3edf42bbba8b"}, + {NID_secp521r1, NID_sha512, + "9ecd500c60e701404922e58ab20cc002651fdee7cbc9336adda33e4c1088fab1964ecb79" + "04dc6856865d6c8e15041ccf2d5ac302e99d346ff2f686531d25521678d4fd3f76bbf2c8" + "93d246cb4d7693792fe18172108146853103a51f824acc621cb7311d2463c3361ea70725" + "4f2b052bc22cb8012873dcbb95bf1a5cc53ab89f", + "0f749d32704bc533ca82cef0acf103d8f4fba67f08d2678e515ed7db886267ffaf02fab0" + "080dca2359b72f574ccc29a0f218c8655c0cccf9fee6c5e567aa14cb926", + "040061387fd6b95914e885f912edfbb5fb274655027f216c4091ca83e19336740fd81aed" + "fe047f51b42bdf68161121013e0d55b117a14e4303f926c8debb77a7fdaad100e7d0c75c" + "38626e895ca21526b9f9fdf84dcecb93f2b233390550d2b1463b7ee3f58df7346435ff04" + "34199583c97c665a97f12f706f2357da4b40288def888e59e6", + "03af5ab6caa29a6de86a5bab9aa83c3b16a17ffcd52b5c60c769be3053cdddeac60812d1" + "2fecf46cfe1f3db9ac9dcf881fcec3f0aa733d4ecbb83c7593e864c6df1", + "04de826ea704ad10bc0f7538af8a3843f284f55c8b946af9235af5af74f2b76e099e4bc7" + "2fd79d28a380f8d4b4c919ac290d248c37983ba05aea42e2dd79fdd33e8", + "087488c859a96fea266ea13bf6d114c429b163be97a57559086edb64aed4a18594b46fb9" + "efc7fd25d8b2de8f09ca0587f54bd287299f47b2ff124aac566e8ee3b43"}, + {NID_secp521r1, NID_sha512, + "b3c63e5f5a21c4bfe3dbc644354d9a949186d6a9e1dd873828782aa6a0f1df2f64114a43" + "0b1c13fe8a2e09099e1ed05ef70de698161039ded73bcb50b312673bb073f8a792ac140a" + "78a8b7f3586dffb1fc8be4f54516d57418ccc9945025ce3acf1eb84f69ceee5e9bd10c18" + "c251dbc481562cd3aae54b54ab618cb1eeda33cf", + "1a4d2623a7d59c55f408331ba8d1523b94d6bf8ac83375ceb57a2b395a5bcf977cfc1623" + "4d4a97d6f6ee25a99aa5bff15ff535891bcb7ae849a583e01ac49e0e9b6", + "04004d5c8afee038984d2ea96681ec0dccb6b52dfa4ee2e2a77a23c8cf43ef19905a34d6" + "f5d8c5cf0981ed804d89d175b17d1a63522ceb1e785c0f5a1d2f3d15e513520014368b8e" + "746807b2b68f3615cd78d761a464ddd7918fc8df51d225962fdf1e3dc243e265100ff0ec" + "133359e332e44dd49afd8e5f38fe86133573432d33c02fa0a3", + "0bc2c0f37155859303de6fa539a39714e195c37c6ea826e224c8218584ae09cd0d1cc14d" + "94d93f2d83c96e4ef68517fdb3f383da5404e5a426bfc5d424e253c181b", + "1a3c4a6386c4fb614fba2cb9e74201e1aaa0001aa931a2a939c92e04b8344535a20f53c6" + "e3c69c75c2e5d2fe3549ed27e6713cb0f4a9a94f6189eb33bff7d453fce", + "16a997f81aa0bea2e1469c8c1dab7df02a8b2086ba482c43af04f2174831f2b176165879" + "5adfbdd44190a9b06fe10e578987369f3a2eced147cff89d8c2818f7471"}, + {NID_secp521r1, NID_sha512, + "6e0f96d56505ffd2d005d5677dbf926345f0ff0a5da456bbcbcfdc2d33c8d878b0bc8511" + "401c73168d161c23a88b04d7a9629a7a6fbcff241071b0d212248fcc2c94fa5c086909ad" + "b8f4b9772b4293b4acf5215ea2fc72f8cec57b5a13792d7859b6d40348fc3ba3f5e7062a" + "19075a9edb713ddcd391aefc90f46bbd81e2557b", + "14787f95fb1057a2f3867b8407e54abb91740c097dac5024be92d5d65666bb16e4879f3d" + "3904d6eab269cf5e7b632ab3c5f342108d1d4230c30165fba3a1bf1c66f", + "0400c2d540a7557f4530de35bbd94da8a6defbff783f54a65292f8f76341c996cea38795" + "805a1b97174a9147a8644282e0d7040a6f83423ef2a0453248156393a1782e0119f746c5" + "df8cec24e4849ac1870d0d8594c799d2ceb6c3bdf891dfbd2242e7ea24d6aec316621473" + "4acc4cbf4da8f71e2429c5c187b2b3a048527c861f58a9b97f", + "186cd803e6e0c9925022e41cb68671adba3ead5548c2b1cd09348ab19612b7af3820fd14" + "da5fe1d7b550ed1a3c8d2f30592cd7745a3c09ee7b5dcfa9ed31bdd0f1f", + "10ed3ab6d07a15dc3376494501c27ce5f78c8a2b30cc809d3f9c3bf1aef437e590ef66ab" + "ae4e49065ead1af5f752ec145acfa98329f17bca9991a199579c41f9229", + "08c3457fe1f93d635bb52df9218bf3b49a7a345b8a8a988ac0a254340546752cddf02e6c" + "e47eee58ea398fdc9130e55a4c09f5ae548c715f5bcd539f07a34034d78"}, + {NID_secp521r1, NID_sha512, + "3f12ab17af3c3680aad22196337cedb0a9dba22387a7c555b46e84176a6f841800455238" + "6ada4deec59fdabb0d25e1c6668a96f100b352f8dabd24b2262bd2a3d0f825602d54150b" + "dc4bcbd5b8e0ca52bc8d2c70ff2af9b03e20730d6bd9ec1d091a3e5c877259bcff4fd2c1" + "7a12bfc4b08117ec39fe4762be128d0883a37e9d", + "15807c101099c8d1d3f24b212af2c0ce525432d7779262eed0709275de9a1d8a8eeeadf2" + "f909cf08b4720815bc1205a23ad1f825618cb78bde747acad8049ca9742", + "040160d7ea2e128ab3fabd1a3ad5455cb45e2f977c2354a1345d4ae0c7ce4e492fb9ff95" + "8eddc2aa61735e5c1971fa6c99beda0f424a20c3ce969380aaa52ef5f5daa8014e4c83f9" + "0d196945fb4fe1e41913488aa53e24c1d2142d35a1eed69fed784c0ef44d71bc21afe0a0" + "065b3b87069217a5abab4355cf8f4ceae5657cd4b9c8008f1f", + "096731f8c52e72ffcc095dd2ee4eec3da13c628f570dba169b4a7460ab471149abdede0b" + "63e4f96faf57eab809c7d2f203fd5ab406c7bd79869b7fae9c62f97c794", + "1e2bf98d1186d7bd3509f517c220de51c9200981e9b344b9fb0d36f34d969026c80311e7" + "e73bb13789a99e0d59e82ebe0e9595d9747204c5f5550c30d934aa30c05", + "12fed45cc874dc3ed3a11dd70f7d5c61451fbea497dd63e226e10364e0718d3722c27c7b" + "4e5027051d54b8f2a57fc58bc070a55b1a5877b0f388d768837ef2e9cec"}, + {NID_secp521r1, NID_sha512, + "a1eed24b3b7c33296c2491d6ee092ec6124f85cf566bb5bc35bffb5c734e34547242e575" + "93e962fb76aee9e800eed2d702cc301499060b76406b347f3d1c86456978950737703c81" + "59001e6778f69c734a56e5ce5938bd0e0de0877d55adeee48b0d8dfa4ac65fd2d3ce3e12" + "878bac5c7014f9284d161b2a3e7d5c88569a45f6", + "18692def0b516edcdd362f42669999cf27a65482f9358fcab312c6869e22ac469b82ca90" + "36fe123935b8b9ed064acb347227a6e377fb156ec833dab9f170c2ac697", + "0401ceee0be3293d8c0fc3e38a78df55e85e6b4bbce0b9995251f0ac55234140f82ae0a4" + "34b2bb41dc0aa5ecf950d4628f82c7f4f67651b804d55d844a02c1da6606f701f775eb6b" + "3c5e43fc754052d1f7fc5b99137afc15d231a0199a702fc065c917e628a54e038cbfebe0" + "5c90988b65183b368a2061e5b5c1b025bbf2b748fae00ba297", + "161cf5d37953e09e12dc0091dc35d5fb3754c5c874e474d2b4a4f1a90b870dff6d99fb15" + "6498516e25b9a6a0763170702bb8507fdba4a6131c7258f6ffc3add81fd", + "14dfa43046302b81fd9a34a454dea25ccb594ace8df4f9d98556ca5076bcd44b2a9775df" + "aca50282b2c8988868e5a31d9eb08e794016996942088d43ad3379eb9a1", + "120be63bd97691f6258b5e78817f2dd6bf5a7bf79d01b8b1c3382860c4b00f89894c72f9" + "3a69f3119cb74c90b03e9ede27bd298b357b9616a7282d176f3899aaa24"}, + {NID_secp521r1, NID_sha512, + "9aace26837695e6596007a54e4bccdd5ffb16dc6844140e2eeeb584b15acb2bbffd203c7" + "4440b6ee8db676fd200b4186a8c3e957c19e74d4d865ada83f80655323dfa3570907ed3c" + "e853b6e8cc375ed2d758a2f5ad265dd3b47650517a49b3d02df9e0c60c21576378c2b3a0" + "8481eec129b2a75608e13e6420127a3a63c8a3f1", + "0a63f9cdefbccdd0d5c9630b309027fa139c31e39ca26686d76c22d4093a2a5e5ec4e230" + "8ce43eb8e563187b5bd811cc6b626eace4063047ac0420c3fdcff5bdc04", + "04014cab9759d4487987b8a00afd16d7199585b730fb0bfe63796272dde9135e7cb9e27c" + "ec51207c876d9214214b8c76f82e7363f5086902a577e1c50b4fbf35ce996601a83f0caa" + "01ca2166e1206292342f47f358009e8b891d3cb817aec290e0cf2f47e7fc637e39dca039" + "49391839684f76b94d34e5abc7bb750cb44486cce525eb0093", + "01e51fd877dbbcd2ab138fd215d508879298d10c7fcbdcc918802407088eb6ca0f18976a" + "13f2c0a57867b0298512fc85515b209c4435e9ef30ab01ba649838bc7a0", + "11a1323f6132d85482d9b0f73be838d8f9e78647934f2570fededca7c234cc46aa1b97da" + "5ac1b27b714f7a171dc4209cbb0d90e4f793c4c192dc039c31310d6d99b", + "0386a5a0fc55d36ca7231a9537fee6b9e51c2255363d9c9e7cb7185669b302660e23133e" + "b21eb56d305d36e69a79f5b6fa25b46ec61b7f699e1e9e927fb0bceca06"}, + {NID_secp521r1, NID_sha512, + "ac2175940545d4fbab6e2e651c6830aba562e0c11c919e797c43eff9f187a68a9e5a128e" + "3e2a330b955a3f4577d3f826529ad1b03d7b60f7ad678f005053b41dc0f8d267f3685c6a" + "be1a0e9a733c44b2f3ca48b90806f935141c842e3a6c06a58f5343d75e3585971a734f4a" + "e1074ce5b54f74bd9342f4bbca738d260393f43e", + "024f7d67dfc0d43a26cc7c19cb511d30a097a1e27e5efe29e9e76e43849af170fd9ad57d" + "5b22b1c8840b59ebf562371871e12d2c1baefc1abaedc872ed5d2666ad6", + "04009da1536154b46e3169265ccba2b4da9b4b06a7462a067c6909f6c0dd8e19a7bc2ac1" + "a47763ec4be06c1bec57d28c55ee936cb19588cc1398fe4ea3bd07e6676b7f014150cdf2" + "5da0925926422e1fd4dcfcffb05bdf8682c54d67a9bd438d21de5af43a15d979b320a847" + "683b6d12ac1383a7183095e9da491c3b4a7c28874625e70f87", + "1c1308f31716d85294b3b5f1dc87d616093b7654907f55289499b419f38ceeb906d2c9fe" + "4cc3d80c5a38c53f9739311b0b198111fede72ebde3b0d2bc4c2ef090d2", + "00dbf787ce07c453c6c6a67b0bf6850c8d6ca693a3e9818d7453487844c9048a7a2e48ff" + "982b64eb9712461b26b5127c4dc57f9a6ad1e15d8cd56d4fd6da7186429", + "0c6f1c7774caf198fc189beb7e21ca92ceccc3f9875f0e2d07dc1d15bcc8f210b6dd376b" + "f65bb6a454bf563d7f563c1041d62d6078828a57538b25ba54723170665"}, + {NID_secp521r1, NID_sha512, + "6266f09710e2434cb3da3b15396556765db2ddcd221dce257eab7399c7c4901359251129" + "32716af1434053b8b9fe340563e57a0b9776f9ac92cbb5fba18b05c0a2fafbed7240b3f9" + "3cd1780c980ff5fe92610e36c0177cabe82367c84cee9020cf26c1d74ae3eb9b9b512cb8" + "b3cb3d81b17cf20dc76591b2b394ef1c62ac12ee", + "0349471460c205d836aa37dcd6c7322809e4e8ef81501e5da87284b267d843897746b330" + "16f50a7b702964910361ed51d0afd9d8559a47f0b7c25b2bc952ce8ed9e", + "04000bbd4e8a016b0c254e754f68f0f4ed081320d529ecdc7899cfb5a67dd04bc85b3aa6" + "891a3ed2c9861ae76c3847d81780c23ad84153ea2042d7fd5d517a26ff3ce400645953af" + "c3c1b3b74fdf503e7d3f982d7ee17611d60f8eb42a4bddbec2b67db1f09b54440c30b44e" + "8071d404658285cb571462001218fc8c5e5b98b9fae28272e6", + "00eb2bd8bb56b9d2e97c51247baf734cc655c39e0bfda35375f0ac2fe82fad699bf19895" + "77e24afb33c3868f91111e24fefe7dec802f3323ac013bec6c048fe5568", + "14bf63bdbc014aa352544bd1e83ede484807ed760619fa6bc38c4f8640840195e1f2f149" + "b29903ca4b6934404fb1f7de5e39b1ea04dba42819c75dbef6a93ebe269", + "05d1bcf2295240ce4415042306abd494b4bda7cf36f2ee2931518d2454faa01c606be120" + "b057062f2f3a174cb09c14f57ab6ef41cb3802140da22074d0e46f908d4"}, + {NID_secp521r1, NID_sha512, + "3de9e617a6868dca1a1432d503f923535da3f9b34426b2a4822174399c73b1c1ee673114" + "10a58c17202ac767844b2024d8aa21a205707d93865693ac25a24fc87034fa3a7a7e27c3" + "344cb03b87602c15180a5fe6a9dd90cd11af4a0f150207bf2d83f55b12c088adae99aa8c" + "fa659311b3a25beb99056643760d6a282126b9b2", + "07788d34758b20efc330c67483be3999d1d1a16fd0da81ed28895ebb35ee21093d37ea1a" + "c808946c275c44454a216195eb3eb3aea1b53a329eca4eb82dd48c784f5", + "0400157d80bd426f6c3cee903c24b73faa02e758607c3e102d6e643b7269c299684fdaba" + "1acddb83ee686a60acca53cddb2fe976149205c8b8ab6ad1458bc00993cc43016e33cbed" + "05721b284dacc8c8fbe2d118c347fc2e2670e691d5d53daf6ef2dfec464a5fbf46f8efce" + "81ac226915e11d43c11c8229fca2327815e1f8da5fe95021fc", + "0a73477264a9cc69d359464abb1ac098a18c0fb3ea35e4f2e6e1b060dab05bef1255d9f9" + "c9b9fbb89712e5afe13745ae6fd5917a9aedb0f2860d03a0d8f113ea10c", + "07e315d8d958b8ce27eaf4f3782294341d2a46fb1457a60eb9fe93a9ae86f3764716c4f5" + "f124bd6b114781ed59c3f24e18aa35c903211b2f2039d85862932987d68", + "1bcc1d211ebc120a97d465b603a1bb1e470109e0a55d2f1b5c597803931bd6d7718f010d" + "7d289b31533e9fcef3d141974e5955bc7f0ee342b9cad05e29a3dded30e"}, + {NID_secp521r1, NID_sha512, + "aa48851af7ef17abe233163b7185130f4646203c205e22bcc2a5a3697bcab998c73a9ffe" + "1d3ea0b7978ce7df937a72586eb5ca60b0d939a7d1c115c820171c89c8116b7e2c7b98cf" + "0f14e4c4df3cb2f319ad3ab0ea25ff14526ddc037469f000bf82100acd4cdf94feb4eba4" + "ea1726f0569336604a473aee67d71afebb569209", + "1f98696772221e6cccd5569ed8aed3c435ee86a04689c7a64d20c30f6fe1c59cc10c6d29" + "10261d30c3b96117a669e19cfe5b696b68feeacf61f6a3dea55e6e5837a", + "04007002872c200e16d57e8e53f7bce6e9a7832c387f6f9c29c6b75526262c57bc2b56d6" + "3e9558c5761c1d62708357f586d3aab41c6a7ca3bf6c32d9c3ca40f9a2796a01fe3e5247" + "2ef224fb38d5a0a14875b52c2f50b82b99eea98d826c77e6a9ccf798de5ffa92a0d65965" + "f740c702a3027be66b9c844f1b2e96c134eb3fdf3edddcf11c", + "1a277cf0414c6adb621d1cc0311ec908401ce040c6687ed45a0cdf2910c42c9f1954a457" + "2d8e659733d5e26cbd35e3260be40017b2f5d38ec42315f5c0b056c596d", + "0d732ba8b3e9c9e0a495249e152e5bee69d94e9ff012d001b140d4b5d082aa9df77e10b6" + "5f115a594a50114722db42fa5fbe457c5bd05e7ac7ee510aa68fe7b1e7f", + "134ac5e1ee339727df80c35ff5b2891596dd14d6cfd137bafd50ab98e2c1ab4008a0bd03" + "552618d217912a9ec502a902f2353e757c3b5776309f7f2cfebf913e9cd"}, + {NID_secp521r1, NID_sha512, + "b0d5d52259af364eb2d1a5027e5f7d0afe4b999cc5dd2268cfe76f51d2f17b541bdd7867" + "e23a1bb897705153d9432a24012108979c6a2c9e2567c9531d012f9e4be764419491a52e" + "ae2e127430b0ab58cb8e216515a821b3db206447c235bf44ee304201b483b2a88844abaa" + "18bca0147dfff7e502397dd62e15524f67eb2df2", + "13c3852a6bc8825b45fd7da1754078913d77f4e586216a6eb08b6f03adce7464f5dbc2be" + "a0eb7b12d103870ef045f53d67e3600d7eba07aac5db03f71b64db1cceb", + "0400c97a4ebcbbe701c9f7be127e87079edf479b76d3c14bfbee693e1638e5bff8d4705a" + "c0c14597529dbe13356ca85eb03a418edfe144ce6cbf3533016d4efc29dbd4011c75b7a8" + "894ef64109ac2dea972e7fd5f79b75dab1bf9441a5b8b86f1dc1324426fa6cf4e7b973b4" + "4e3d0576c52e5c9edf8ce2fc18cb3c28742d44419f044667f8", + "1e25b86db041f21c2503d547e2b1b655f0b99d5b6c0e1cf2bdbd8a8c6a053f5d79d78c55" + "b4ef75bff764a74edc920b35536e3c470b6f6b8fd53898f3bbc467539ef", + "1dce45ea592b34d016497882c48dc0c7afb1c8e0f81a051800d7ab8da9d237efd892207b" + "c9401f1d30650f66af8d5349fc5b19727756270722d5a8adb0a49b72d0a", + "0b79ffcdc33e028b1ab894cb751ec792a69e3011b201a76f3b878655bc31efd1c0bf3b98" + "aea2b14f262c19d142e008b98e890ebbf464d3b025764dd2f73c4251b1a"}, + {NID_secp521r1, NID_sha512, + "9599788344976779383a7a0812a096943a1f771ee484d586af1a06207478e4c0be9c200d" + "42460fe837e24b266c8852d80d3c53cc52ffb1913fc3261145fc6da575611efd16c02605" + "9a2e64f802517ffd1b6b34de10ad2909c65c2155e8d939b8115400c1d793d23955b15f5d" + "1c13c962ff92b4a815cee0e10f8e14e1f6e6cd38", + "1654eaa1f6eec7159ee2d36fb24d15d6d33a128f36c52e2437f7d1b5a44ea4fa965c0a26" + "d0066f92c8b82bd136491e929686c8bde61b7c704daab54ed1e1bdf6b77", + "0401f269692c47a55242bb08731ff920f4915bfcecf4d4431a8b487c90d08565272c52ca" + "90c47397f7604bc643982e34d05178e979c2cff7ea1b9eaec18d69ca7382de00750bdd86" + "6fba3e92c29599c002ac6f9e2bf39af8521b7b133f70510e9918a94d3c279edec97ab75e" + "cda95e3dd7861af84c543371c055dc74eeeff7061726818327", + "1b7519becd00d750459d63a72f13318b6ac61b8c8e7077cf9415c9b4b924f35514c9c28a" + "0fae43d06e31c670a873716156aa7bc744577d62476e038b116576a9e53", + "183bddb46c249e868ef231a1ebd85d0773bf8105a092ab7d884d677a1e9b7d6014d6358c" + "09538a99d9dca8f36f163ac1827df420c3f9360cc66900a9737a7f756f3", + "0d05ee3e64bac4e56d9d8bd511c8a43941e953cba4e5d83c0553acb87091ff54f3aad4d6" + "9d9f15e520a2551cc14f2c86bb45513fef0295e381a7635486bd3917b50"}, + {NID_secp521r1, NID_sha512, + "fdde51acfd04eb0ad892ce9d6c0f90eb91ce765cbe3ce9d3f2defe8f691324d26b968b8b" + "90e77706b068585f2a3ee7bf3e910528f7403c5af745a6f9d7ba6c53abd885c3b1be5834" + "15b128f4d3f224daf8563476bd9aa61e9c8518c144335f8f879c03696bddbe3ac37a8fbe" + "de29861611feaa87e325e2f60278b4893ed57fb0", + "1cba5d561bf18656991eba9a1dde8bde547885ea1f0abe7f2837e569ca52f53df5e64e4a" + "547c4f26458b5d9626ed6d702e5ab1dd585cf36a0c84f768fac946cfd4c", + "04012857c2244fa04db3b73db4847927db63cce2fa6cb22724466d3e20bc950a9250a15e" + "afd99f236a801e5271e8f90d9e8a97f37c12f7da65bce8a2c93bcd2552620500f394e37c" + "17d5b8e35b488fa05a607dbc74264965043a1fb60e92edc212296ae72d7d6fe2e3457e67" + "be853664e1da64f57e44bd259076b3bb2b06a2c604fea1be9d", + "0e790238796fee7b5885dc0784c7041a4cc7ca4ba757d9f7906ad1fcbab5667e3734bc23" + "09a48047442535ff89144b518f730ff55c0c67eeb4c880c2dfd2fb60d69", + "1d7ce382295a2a109064ea03f0ad8761dd60eefb9c207a20e3c5551e82ac6d2ee5922b3e" + "9655a65ba6c359dcbf8fa843fbe87239a5c3e3eaecec0407d2fcdb687c2", + "161963a6237b8955a8a756d8df5dbd303140bb90143b1da5f07b32f9cb64733dc6316080" + "924733f1e2c81ade9d0be71b5b95b55666026a035a93ab3004d0bc0b19f"}, + {NID_secp521r1, NID_sha512, + "beb34c997f905c77451ac392f7957a0ab8b23325bd5c63ca31c109ac8f655a1e3094240c" + "b8a99284f8091de2ab9a7db2504d16251980b86be89ec3a3f41162698bab51848880633e" + "0b71a38f8896335853d8e836a2454ecab2acdcc052c8f659be1d703b13ae1b090334ac50" + "ab0137ddb5e8b924c0e3d2e5789daaef2fdd4a1e", + "0972e7ff25adf8a032535e5b19463cfe306b90803bf27fabc6046ae0807d2312fbab85d1" + "da61b80b2d5d48f4e5886f27fca050b84563aee1926ae6b2564cd756d63", + "0401d7f1e9e610619daa9d2efa563610a371677fe8b58048fdc55a98a49970f6afa6649c" + "516f9c72085ca3722aa595f45f2803402b01c832d28aac63d9941f1a25dfea01571facce" + "3fcfe733a8eef4e8305dfe99103a370f82b3f8d75085414f2592ad44969a2ef8196c8b98" + "09f0eca2f7ddc71c47879e3f37a40b9fecf97992b97af29721", + "0517f6e4002479dc89e8cbb55b7c426d128776ca82cf81be8c1da9557178783f40e3d047" + "db7e77867f1af030a51de470ee3128c22e9c2d642d71e4904ab5a76edfa", + "1c3262a3a3fb74fa5124b71a6c7f7b7e6d56738eabaf7666b372b299b0c99ee8a16be3df" + "88dd955de093fc8c049f76ee83a4138cee41e5fe94755d27a52ee44032f", + "072fd88bb1684c4ca9531748dfce4c161037fcd6ae5c2803b7117fb60d3db5df7df38059" + "1aaf3073a3031306b76f062dcc547ded23f6690293c34a710e7e9a226c3"}, + {NID_secp521r1, NID_sha512, + "543c374af90c34f50ee195006d5f9d8dd986d09ad182fcbefa085567275eee1e742bfe0a" + "f3d058675adeb5b9f87f248b00a9fbd2aa779129123a5b983f2f26fc3caf2ea34277550c" + "22fe8c814c739b46972d50232993cddd63a3c99e20f5c5067d9b57e2d5db94317a5a16b5" + "c12b5c4cafbc79cbc2f9940f074bbc7d0dc71e90", + "1f0ec8da29295394f2f072672db014861be33bfd9f91349dad5566ff396bea055e53b1d6" + "1c8c4e5c9f6e129ed75a49f91cce1d5530ad4e78c2b793a63195eb9f0da", + "04009ec1a3761fe3958073b9647f34202c5e8ca2428d056facc4f3fedc7077fa87f1d1eb" + "30cc74f6e3ff3d3f82df2641cea1eb3ff1529e8a3866ae2055aacec0bf68c400bed0261b" + "91f664c3ff53e337d8321cb988c3edc03b46754680097e5a8585245d80d0b7045c75a9c5" + "be7f599d3b5eea08d828acb6294ae515a3df57a37f903ef62e", + "0ac3b6d61ebda99e23301fa198d686a13c0832af594b289c9a55669ce6d6201138476901" + "3748b68465527a597ed6858a06a99d50493562b3a7dbcee975ad34657d8", + "0cef3f4babe6f9875e5db28c27d6a197d607c3641a90f10c2cc2cb302ba658aa151dc76c" + "507488b99f4b3c8bb404fb5c852f959273f412cbdd5e713c5e3f0e67f94", + "0097ed9e005416fc944e26bcc3661a09b35c128fcccdc2742739c8a301a338dd77d9d135" + "71612a3b9524a6164b09fe73643bbc31447ee31ef44a490843e4e7db23f"} +# ifndef OPENSSL_NO_EC2M + /* binary KATs from NIST CAVP */ + , {NID_sect233k1, NID_sha224, + "f23f784fe136c9fc0d169503d361e9c6148b0f1fbdcae0a97fae1af7033ddef25cb7489c" + "9963cfcb009a8cbfe44a8510a64a073eb1deae4c324ceb9302008c92c69b2dafcc9077fd" + "3cc3c7c119edc3ced36d176ceaa55ac036bf7f07f6fa215e8bb8196e59a5e1c9af4f98b9" + "0ab4970885bd7015fa26a09e03c7cf6b4b23d929", + "04c1d414696cc3657dd9df73ace56eda2636769ce7082e064c260be45a5", + "0401f228c0a75b057eb07fe7ce8223ed4163148c1fdab61e0f787271f836a900cdfa5655" + "d96ffd5ffb6027bfaa04da7b5d8fbdbb6202c8bb79f056ce43", + "058f8511089fcd59324469f6736b92693afe26bd4719e198f1f2287dc5f", + "016bafefb4933ffd00bd1db6d6c4fac8a06375603adc0aa2a5664083ff4", + "03bcb84b8f1990cfc7b88f2b8cc817105cd8e150808e7c87b310cdc47e3"}, + {NID_sect233k1, NID_sha224, + "400bcb297552bb37f2f8135a9314a35f5126788bb6fa4dc74152731ff64c5dab4b902103" + "d85443dec20e16b1d6629930cdc2bd183d4099f0e96295a63c2fe266f5e9d050c401a868" + "1b4a438efe53cbd8f2f43e2a31e9f88926a9c82917d873f6e8cd5ff5eb8c1ca36126b0bf" + "c8c2b0e85a7c9e7a45f1875ca9c82019ebedb729", + "027cb1d84865a16992476c9e353283d5d6a40c349a8e9179d1b1f403531", + "0401191227d064176f4ab020faea61330df5eb59163ecb4ea59c23e6f1f6c8012dbfbf85" + "b3624b9f56446f840602f9b839bab1368295b3ae919cb07c07", + "01a41af270269be052a62a9879638e3432a1479b05776ce61f45c0c361b", + "041a5f1d28b70bfa2925b9428ab8bac9fa174d88ae27d754824c7d16ead", + "044d359065672b3d3dfe8389fbc6fc751ca6a46820626c466174fb9b922"}, + {NID_sect233k1, NID_sha224, + "5f74d4b35c49fa454c97c05fdb6b9f6822cf1a2295f15bd766dbcb413d77c910bd8f4147" + "e8f317fac2300fa21cb80134d1b6f8ae8e50518c1f648a28506e419f5a6e8f05abffdb3d" + "d2587606c7e9c223ecff4f46b121216730ea13202b59128a7616bb2fd23a7e4a5aa08641" + "cc07b669641313febfc88d64d99447353dae3f06", + "031b443f46c4b5224237fac1022ee1570173f664aba0c84dbaa4246bdc1", + "04005f57b0e5f2e175006f4058cbb4ca9a0cac912c551ef1b94e97498fcc5a00f3a554d0" + "77b751478f8a2b7c2a9cf15effed958e0ac1a9e3db1e023c5f", + "07ff6ef3026c5a960e632beeb7313b3bca0baec76cea1fd9b82cedc3245", + "0099741698549c32a4e86aab6194527cea703ff869849c538a938585a83", + "02ad706c6f5dcff512498d84f1877eb997dfbe9b3d13b339917632d3cb1"}, + {NID_sect233k1, NID_sha224, + "8f92096876d9f81bcd992369d42d0b5877ac969004d17c8627c58d8b8b7bbf7a37e8cb6a" + "fa962b9b043bbbaa5bef4a5ee38d8bd31cb5866b828265a2f4102a616f87009cd346fcb8" + "af5519fb577c60d8792472232f33dc615655e53d2b715b15a2697b492f108b7906e1e359" + "7c6911f8cc30c7121ae338a6b747ec368f8e4a36", + "048f6ca29f35f253a4962734357c995920967b9eeff1ba5fd2080bfede5", + "04012b7ca7c21292f8795b2fbfd63a28c5a4ec8c850d6240f973c903bc817001be9855e5" + "c5a5064c27d1862010b2fd0d7be5a0180c861a288ceac89d6d", + "07dcb9725323fd7668991ce9a907b7129d53fae9016e253c53d057d195d", + "0498c4fca6ed7c2998347b464d3e562a74b0e4f3a6c1dc453aaa61bb710", + "03a77a13f011404d5c5341dcd2ca44dc2b08f21f09f524045c281fb221e"}, + {NID_sect233k1, NID_sha224, + "3d275dbde44494c45fc15fe89e2ae32aa26426a17e923e895c7941a5582fb95df4d49873" + "ab1bde358017f336b911b886b626b744806ab8113418473c441f1964159ded1b12122d53" + "ac56573167588e4b55f36b8bca8c67823883a51fb6e7f204d1c6b07ea49b577bfab9ca6b" + "8d51f72268b022e3a4db6f9d265ee8382f9b7b66", + "019b940eabbe682f961d9f3d90432e347fef3910e641656825d775705b1", + "0401efcc9f4576047c43eab1c13e0547b1c5ec1cd2afd2345fda72b5e1b50f00c7b5968a" + "f47e58f4ec15c0cd82ccd0b9f5bfde06c7f86fe5cd0105d693", + "03f783a94d1de73e4593f5d6d02238cfa0486e3ddf2bc0b95a528038e3c", + "013c467531f3f6508534ad072edb210e4182ce5a798d8a46674e92a0b4d", + "0685982aa8e2f3e46ecc03e00e7323f3b891da437235cfe9800139ee8d7"}, + {NID_sect233k1, NID_sha224, + "d2fa68e1f7dad02916b12fa38f1849d6d409dbad0344438520b4dd9b77d62d39ac9ae3cd" + "eab03ccbcfd4de703c6e798873671731c108f322b9f2a68145e3e210c9b15b879798e5c5" + "3c5022742e9819b99edabb2f44d89ae221f7a99dc84421a6905695ff91928db608f86174" + "5f17584d56e34b75c47281435b1b0b34e490692d", + "07a884b22e29fa9fe945e9ba13c0df8d786dc87cef0f77f069e182dd56c", + "04011e831647d0ffd53d75e44abceda753ab470b3cc93b457590617d925a19003db5bd0a" + "ecd6504d904bcf9dcce131abd239aeadb9a64a9811eac823cc", + "00241b763c6245b83afe61762b161c41467ef35b7f27a9c1066f02babd3", + "0514adca3481ac5f99287e6e966a5c223296b07a9456eb582ec5568688c", + "07ff6a2f7cb1d2594a11d8d0adb6fe50b4e740f025e7b4333ee26163d92"}, + {NID_sect233k1, NID_sha224, + "3830f75cf9df4eb2998c7c1b5fe11c1476bcf849c3a8fa7d3d0b5bc2292e5d07465ab8cc" + "9381c575d909e509c5dac49c78817c04e4bef18bd51bb09aa5897f21634633a5ce6d20bb" + "4638cb6c3927351eaec7b62cf4a33956916045c392f325adafb10a88a5f86d7e41dd7790" + "8fa7284210071c22aa40ef40da6339c02da05392", + "05da61f881d5a0dc085bb93764f584352882923cd237d878220ec624c1a", + "04018d740441eff1f785a14d04da4ba69540cbb469780ffd36e1dfae4f1de2018072ab30" + "e999ae26b872ef46a9a0604296d02c08fba9477d9e03f0f75d", + "000f95c5678fd08dda790cc60bfa578118f8687228a2ef5f31e71a6884b", + "074a6599b8cab75e0cf752e3f41288fbc673d52074950edb14f76524949", + "03523804351e3224e816cd4fb7191f332585f68053ddb32a85cc0fadc03"}, + {NID_sect233k1, NID_sha224, + "65b9fe15e6c35d453caa6bad39ee78a720a04b60d8a0a0f049186d2f777e48ae2d657e17" + "4df53edb7beb9f7d8f21904ed674add0cda5b62a7308de76c324a144021e8c6d387daaba" + "4ce48bf7dfe9c8aeee2c64e434ece1fa5ddcafcf3e5d0013a1eeec1742a00d384cc2ec0d" + "7eda83bb4dccfb0e57045ebfc27a4f404d03da37", + "03fe9f04647f6d82b13ec1ae5a8c2e49bc66b05649ad778eb16149ad83a", + "040158eecc6b8918e7813ef990217c603b28ed1774c740382a8af5c9af613301bbffeccd" + "41107c7e6f83e24c822d634a7ec064fae125dc8a3ecc4fc9b3", + "07731edfb3ef523a165a1b5817ab2805a5cf88043c98ea2393898e19551", + "01fa44fa18ebafee6f419fdb9de0e8365520617558b57e9ee89f2c8fc88", + "053f1b2da4cabad04fea1111d525f341417587823fce71e5bfd2353c2f1"}, + {NID_sect233k1, NID_sha224, + "d26521fd41eb5d46ece6836e188bf9cb1b461d011c41e002a935d256654d01725378e845" + "920ec4a7fd3f379df54772493df50d312c7c6aa4e909e7b83f2442c3a5e85c37d68aa015" + "098ecfb0a5e077370f4576f4bc63bf37e1dee06d780a3b6949af5e21c2a0960fcd20821e" + "f5f17bebf5fd5b3bdda260842cbbfad45667287a", + "05ebce648ace4cd555413de6a456fc487d14bf4b0b9a72311ef480d2f26", + "040020b46ecbdc36b4dc01111932090ba185eab2cdc4fa89775f2a6177c5920104cac1c8" + "00103c79642321a216bcfae497b037b29888cf9f70c507114e", + "027733120626e564b06ba71c4946c9c8bfae43f88511ec6352d2a52f407", + "0592de5184510e6ecb7be8a011f862470b918354a1ad82458cf716137fe", + "010a9c5fb6e4b70571a35c56744b57baf0108728bea2bf639af1960d1dc"}, + {NID_sect233k1, NID_sha224, + "b778c021b1a92c41dbd09963da07018075d73e54d62df5c2b7bf8abe137151650d1c1c6a" + "bce7eebd8f32e8c3e6d1433773f257bb3ba4a4fb6a02c0db1e47d03c27d3a90898ebd192" + "7c21df24c4c5443ca5b81f8ef2cc0f5e8b3d08f472bf07085df737adaedec63d99acd77b" + "87ba98225f198b791124ac2d9b191cb9251b4b00", + "056653c2f85593f789a926ba49fa3da9d7f946d8f1020508c5a527ce813", + "04010d65f6f5415dd86a83bb10118abfc1b1670a1664eb6dae99fb68b85019012c1e673e" + "575086ec1e76b90d59c2cbd2727f726f88298552b678ba7e60", + "021e26c098c9f9da9c782857fe640ff6abb21caf20a093f2277845bd10d", + "01d67cbc8209494dca1a74cee5d9894f98f03728214f7bbdac29b0c0e78", + "02215f758fcf0d8dd603e79658a8061ab45bfe6d854e52ea7074fd5654e"}, + {NID_sect233k1, NID_sha224, + "ec14e07f615960015a489ef999e308b42a4c571473b9bd64b433dabd9a1b1ad02e33eee9" + "100064405175928a94543a80f440040afa2965b4e5f95f768e7fab6d3c0a5f5e1bf1df78" + "22f78384e80f2955ea85f044ac60537d895747979f935bb0cd3673193c4a32dd7803e48d" + "7daf70a71bc2aa97236615b6411e28fc9a652145", + "049a91d320783cc70a5952c32036cfc75d41f1aa84127db2dc759fb291c", + "040190528df8fc3ae4db6e12930f176ec9c833d1668ac5808f1046366445a401f647d55c" + "e80b18a9add47fd1a8e4aa725297d9da03246f5c1ce503dd56", + "01eb80e2596d6c01431e7a4fd9e22903ea85547a31d675ff157a789a137", + "04523776d88199ebac2f96f9faa434bd81bde770ad4458ef126fde9198a", + "054665f31f92f8897482d34fcb63141a7539577037c84496167e9d3389f"}, + {NID_sect233k1, NID_sha224, + "89c645339ad0eb850e4e2fe583cee175b35feb02ed7541d7e9aace24cdd3939584f73ad3" + "9526de6399c86b36de77a018e2c70b532bd0f032f9137d10480acc30c49f9baaa86f9df0" + "033b77e98b485bf7a69cb5c281e527d3ccd1fce2415f0dda4a268ce68a0a34b16afda54e" + "d922cd6810ac8dc766df2a3a6c5e55972e9786fc", + "016a20016602fc7088a60469843e1d29ad67e3c3cb9500b1e2a00d4050a", + "04004f157541dc3a8bc8a2ad4dfb3933039b67e331b7353a2fa9ede322f4ad01348a7b8c" + "9495bcbecd556870715faf3d543cb8f2368805473bca17b82e", + "01df1ee39217d7f0d838e8b2d30a1159d8003b06e50a00d637edf08d6d1", + "045d16826bbc425637e7a05b826bc907f7453c70141d1bbd2cda63dd490", + "01ae1703cf179dfd1d5407ba2b7324cc7cac15235ee9c3756177444e122"}, + {NID_sect233k1, NID_sha224, + "ace14c4b101d2d8453c2bc22b756af016b5de537df9c3e639d208ad04ae0bf6232dc90b9" + "0c33228dc85de956db771ffde05fb4d0b15e4f218ed2771d703ae5bf981252a5bcd60c16" + "f14483131a481cbe04dc0adb1fb8aa32cb48bb5008e8a8e5c7b7465be2fd7afbc811cf5e" + "a6293b1a464669b49f55f57b93a8707e6042fda6", + "00ba922149bada2551b7be1c3df076f3f97ce93c13c50c285fef3f42363", + "04012daff2cfab994b9d1d1ba73bd2f8e7883b2d92f760b0d16351ec125fd40115666f7c" + "65b95ec2d713c5ab1a3eeaaf0f931b1859733416c3c778aa2a", + "07fc7c9503fabba0972e0e8892ec6331e0812c6452d211c5561fde79048", + "06477ec9d8d8d45418b9efe7ae47c0863ff94c43d8f392c079b870a7cf4", + "06b5a5d020b3d980b9d7880130802435ddb4e7362e36a70d193f18a7fe6"}, + {NID_sect233k1, NID_sha224, + "cec2ba0d1772c87e87d5bbbd67220692bea4301aa1a66e8dbdd7e651d45c26dc2a0d45cf" + "c32c34d76ae3e1c61db7b0fe1863457b93937d929e6ece7462ebd16adfd708353d6f7c27" + "aafe06593c76da7149b0cc574a4290b0d8fe219f3eada7082aca38dba3f78ed0d5942d09" + "5fa5556fc8bcef331ff0a6d5d1f4e6c51d4ff5af", + "02d635e12a58cc6dea44e71e87c37f91e8d08659f0b7955d24f65ab55ba", + "0401dd33d8224ffe63a32f2de5d4fcb0e5f1fca7ca2ade5b35ffbe75cdc65800bfbe9dfe" + "13f99258c787af82631ce2133dc73207c579b29869c7463943", + "04ef333049c575d6688aa04f87a6162185e4a57bb752a7f903e3aff86ff", + "01ade04af08ea1c1877779fbf6335156b1a1437f3e449f07458d700c67e", + "010fa82467d39e5ad51cda8fcedc72ee6a78dccd0c90544814e53ba9cb4"}, + {NID_sect233k1, NID_sha224, + "ffa13cd0f51ae2643d5d4edecb493ddd653e9faddcffc370e7e958abf726a5d67a2ab36c" + "ef42ea8ebe22a6f01b9c31f6ffad01e6894487d979acb5e618f765ac0ec3550ac5dbbced" + "e8f9fdbe52fbaba5c087ff382b6d7a09b2b5084227d324d98ff98793040884799b96d2ca" + "593201f4414f18c43b51c53c5e5059e0641aca02", + "0073883e5064e06814fc4de32e15f7a6cf825d2daf6eb1df8c83e25d80a", + "04000d3c79d627ee0d2d88f2de2dd082112c20dbc5ed66089454f7b8fd9f8101a2580e77" + "9753bcb023acba1b0852492b989c767f664c7047de8e6689fb", + "020231e05166271f47a91dd883c580ee313e9a07195ae511f0ee62173ec", + "0303eb4a0df97577c4cff531b3f54aa282e76669c0c5ebf4c9779c9bb82", + "0692432a7dfde09db7743f08130b3d3327dd98cbdc323627603518f70d7"}, + {NID_sect233k1, NID_sha256, + "c73e3dbac9513d0361dabe94071faf03a11cba18c06d131a172d5f0125b01a5eeb6055bf" + "72c7106fe3f4be3bd2b1771cbe7f85366dccfbc3bac20538510c3f51179cc540ddafb2f3" + "b05a0d276899674ab1d7d8fb4f6838f04e4f9e26b8c6af31540f63f4953c85840af4c57d" + "fa78c704f637dfc8dd750fe45e2c1e149986d127", + "01532271bfae8d4dfe60f69b88d3006d58e28aacfa701861cde8d624db6", + "040041c1ca965338976b4c45c28b1cb64836b3b4d3e7ba2b1323ea26fbcca201a177d042" + "fba7903007db122eabc459e37c2c7fe82e42752b267fafe4b0", + "06a54894825644901baf2ec3681ce5aaf93a18757d93ec9cbce7ccd9d65", + "03edb77fc7686b520493604db18fc69edb4cad8195a958e27ef289c4bac", + "004337ecfac57abb9271909aa43ff4e32851df7818dcd87216d051189c0"}, + {NID_sect233k1, NID_sha256, + "d00dcd0f3212a3167403abed91c20e76f5e7a7678a4fd970f944d11e6a8cd149d0aa6fd3" + "164c5a74c0f55193a4fa3d8ba6f99cabed10544625a7bd92b3e0b46edbd4a269bbc10518" + "c5268c3910a2aea567ccd32d4c7a0cbef09ea42c20b636d1f711d220e23dacdb9d1146e0" + "494401349749e5ed88e38295232a7effbae3aed6", + "0550406c0db882c6aee6cf3b6baf377375208c3e90cc44a067cee43efcf", + "040073348eaa8f2885fca3baf31830a2b28bfe983e3046418561f62ac5d24700033de5ae" + "e6d0bd4de286f1de1e80bf72e5e17083032bd4dc24577b6d2d", + "05c0e7ad0f9bbd522c862326a5734a766423fff7efbe57c51c315fa574c", + "02103f1a0200883850b6476c7d7e7d2b3e2f60923d028ee6f8227b1ec48", + "007cbbc3c6295ceafb3d9cf8411f85a045b11ef8472c5ed45346d26192a"}, + {NID_sect233k1, NID_sha256, + "3d36221f87157ca4db84884b8666660c4e2b6af330480c516cded9f3bfe132543626a39b" + "b6aed1964eb5c33ea0b95b9841665417679fceb95d199d55accfce35dd3f2283c1a7ced5" + "7d0c4b9ebe3da6e1ff2f979b6440db27caf9f6a4bbfa47e20d29ae304f4d0551fce9cc40" + "97eb2fbedb9b24680bb17d207bdccdbe799d5b0d", + "0257dc63752920b6854d6c2d1cca68589a38418c3d036e73760a12214ab", + "04011a42e9f66ecf030d0446cfb751136347d4df0ee4e031058ebdcc04df8000fb7161fa" + "c8cc5ad7bc4477a39350e419776f76f184e28abce886ae9cc5", + "00391d36c4044896ddcd68604d5f677d1df298f46abc00eb12f1165e8a1", + "04e19bdc6755a603085b66355256bce98d5fdd49b4f06b628e3e185574a", + "07697b29ce5546de969c9c4bbb5ea65f712d6cda3410f3dbfa0cd5b1a8c"}, + {NID_sect233k1, NID_sha256, + "033d82a42d0eddf58fbe3e91ddff7190e3f9fc2b1e2eede977d2c0473b358b5fce1f981c" + "a6f88fd61ce2f79e453e3a2b77d1baab2b970ed28d5dcff58873a620e195085e61c4b848" + "0d829525a1a944e8a4b63352f0291f0311f1f98ceb262804beec1c74947618f8e3b06786" + "6255878c2502966cefcdda4f5fa2b13d92ce7840", + "029025352297a7be850f8852411c09259b83219135e0e8949c1bd5b94c1", + "040184345e37f07077cc8df5947c1b1fcd8404b3c31586d6ebd91b240cf42b019dbc9091" + "a5d282fd6e62c34676a06a425e098567b990c47e61ef14d77e", + "02b2663a449ead3f8cce2459e04cf84333376624d994fd9312401ae57f1", + "03af223fd3a6b6b240e59dca83ce2477a577494438ddee3fd09632ea67f", + "0606576d89f2094572f0bbcb58a15d9a4bf10ae3667d4e35cdd8da32102"}, + {NID_sect233k1, NID_sha256, + "671a7c81b64b2919722d7b258bdbd90165bb757b53106e0af03d0eef27452942f40cf52b" + "c95cc7f6567df2613cce795f8bcfc723b2735efc35375c001d37c58480d89343697146b5" + "24835df3dbd333f7c06c98e36d3c4592ecd1f34ab57c341bb0f4c785f5b8372775f74b4b" + "ce60763fad1788e77ea158d735a64861320b36c6", + "02dc82d0e69e498528925c0e62a13fda9af8cefd047c10c3ffc2e41da3e", + "0400e5463926235ce53a85b489c3c278320ed986003962a5fc7ad4cbab0d9f01453e6edd" + "e95670a4653186ebd8246c28a94dd84f5a669bd3293176f1f0", + "034a8dfbbdc98bb1d9b175600bffd866306dffadcc4bbb6f24e7f918da5", + "03cf1407445cf1a619a280e139242056c23c58979f0b3f0aa7e1fc074e2", + "02e55f27593f2c76fafccb71493f14daf50073b35cc85f002528cc6d691"}, + {NID_sect233k1, NID_sha256, + "0ef677f4799298f4aab73b7393598041f56e902ced1726af49657b6601a06186212e3ee8" + "cd4bd33b760dfa2ea3c38884f94358d51dd479f2ccc8b0b352fa4e44fcfdcfbb24919d04" + "e6ee1108527b8e8d60e8d1b467c30c18c5455e5835d483161d3fc26b4a67d6df9e3ddd93" + "31247cb18450188752a1ca219f3396a872cb13d8", + "041535fff5d279bcd744b04e643458ce20b81df8a9e01b1181d52bb14e4", + "040021e1227457be78e49db22335139a136ba290d34871f90ab5e6a8db6ac100df43b381" + "a4d757864c39ce8d0b64d6a32e9e8be30f92a10a252d46a2e2", + "03019bd459b34133dc7331caa8976bee67f76db3a45b1793cb545e26c68", + "0025611bd4e3473aaea85228b2bf37eb1b4458d8166012aa098d9c1cab8", + "07acd38506e984fb7f1607b50837018f9b4246623dcfc9d7aceb486e76d"}, + {NID_sect233k1, NID_sha256, + "9290df0cc50c3cab6655f3a6de1f4cf613d9bc06ea7c99f38038369ff2fadefa57a3c7ae" + "7940c1b98bb1d03503cc271f7a891bf38eec93c31dcec7892dfd2e1ab337bedde3e5325e" + "d8d9cb7fa3096f6fafc3beb3a66cba66ba826d1032debfb4908cc9dded8c0099c85072da" + "ac4373fbc428fcaa9a6da02181ebc33f0cf926fb", + "000ecfe580a624df66c25e87e7689fc3b471d205970ff9ab51a64aa12ed", + "04002ca7b9c98bb8106ae14a87d5f9f7ae1f99a5524992116e68af89da6daa00a2fbee76" + "9eec313cf3c8519d3f96167477f0f06dcc470408e3f637b6c2", + "044f065c49bb7ff0772d628104bc2e222f1fde42aaa8b9345d324d7f936", + "046301f3f07922d338d5b7d82104597fc50941e4bc0a15ab5e0408f9fa1", + "03495e335905b4842b97f00b344313ca7d6a4ff60cfeaa5d589e0a31782"}, + {NID_sect233k1, NID_sha256, + "855c7be75fda372f062709827f333630acf28954a62a5193ff675f0dfeb63f32bca418f7" + "cbdb346bf388d62315b19a592267ca407120db93d4e3d7125b867c4c4670b7a57a76f617" + "34cead2caf2425eb9ff0a63293e8cd6defc9648257b401463f4533a2425e0024f1ea9336" + "5eeee3c6da20d25928602ec8b426f9b39f97f3fe", + "013c72c73358ffa168423149ecdd897f0a5f75a641de008649f00134944", + "0401c70e1b6c01477f95e718f193e13c093b101e9f16024082ac699ed6ebb601f8013a88" + "264266cb5cc5bd38e477fe0a1aa49ae4a5ff94cb58439a7c1b", + "07ad8a117f34bf2fcf7d689b8124e08118e28ebd172f8c220d57d3f0b88", + "012bc7d380192f2efe55625e39927ef799993af9451c662b562a239dfe7", + "035961b27e88d6731220f70e96d555f63853d14149df7bf6d24fc29441d"}, + {NID_sect233k1, NID_sha256, + "9c896f800281812ed57d31623d563377a5c725cec84313472b90e73f77d400f5d4fb2362" + "55741b73d46f7e5254d04099bec274db8a9af5fc7cc220d42cc172cbd3c3595c49ff74bf" + "aab7b5e46c90855b611f74753ccdbbabf92e011d52e9ba753b83ed2a251a632e1bd5c6d3" + "46e38e743950c8ce0f394a837028575fa44bcc26", + "00ac60e2e70b7c4cda64071c7738f68773c94df9456a8ec3bbb468fa7f8", + "04000109614a2ca27b7a749e53777e0f3ee2f57013ee83ea539ada6d98d8a9005668f4b2" + "7213a8a024455b398de2cd7635cb620d7401f5deb4fa9ab2f4", + "00098489f0966e27555268a94378b7b8685ac610fb0964694aae9aa716d", + "06d151437a0aac232a472af038b0fac095d224ce0e5487510e30c31d605", + "0563dbfd021c1b77f980530d0120e93c9ee4f1f092a268bd8aba7d3110e"}, + {NID_sect233k1, NID_sha256, + "139a14ead998d1a962fa47c47ef2953aa136bd912fe940709b8c560bc2a0c4bf8f3aab30" + "a8e21b7d5f487d30b0097e3da723f11b5cb4e8c5724f5a2fe0d68ee4bacbb85e5eacf180" + "94d2a8ec4506cf8497836a4a905059a998ea750adc54c27c69cbd0b0c1f9743a62f3d988" + "f3fa0a9865a73fc071f526623085a2ef12838888", + "060bf720052e8b9508a801340c213cf53bbecf4975faee63d4b44fc647a", + "040196e37671def44b35c9e8c719130389b40c7ebc0ed5ae354dc73e0c40c700d3fa0a45" + "a3cc5dfb61085290f6d18d710ad5d0d3ab31ce65b0e6915a72", + "0729c7e1de10e92634857a65a2ed75103df6bd4bf63b1ad6383c37a0435", + "06808491ffebf088476de7daf541bca3fd943d4c2089b848a130abdc0d3", + "02c0dcfff06a07e928c15a1fc2aceaa4b4dd6fe8eb67ccd4d01240f249f"}, + {NID_sect233k1, NID_sha256, + "cf4a8e754b23d0fffc1c5c80b0cb11deeaba3064b315bc2cee96db5b9881baf90d30af4b" + "69066f757b3020706def77a5fc1632d96bafba22a9c8cd3b52d535d941b3c7cc02b7fe6b" + "51639d5e2084478ab3a29d2f5e0e16639fc2833a47b58e2c3fb5b2ea1830fe2ff68e571a" + "8f281617a23d9a28db1c64ddfb1083d055030e5a", + "07cf3c216592febd8630a478b5b3e3a605084020322adb13ac0a626bc7b", + "04008eee2ea13a08d4e4d71ecd2547f6d80b8f88879c9edfab5a675831fef2005117c0d8" + "a0442ad7b95cac1a984dfb9efbb7eb3c3866955da60e6cea8a", + "038de0be25c23cbde9ed9fb259cd9a06b69bf15dafed723970dfcb91307", + "051c9c5fe50eb81a11c8e7b2db145c6b5dbff2c51def56f4981774c357c", + "053887c6cc2f21bff461c9182c17f634ee2b301c3cc4af0bb1d3075f74e"}, + {NID_sect233k1, NID_sha256, + "ae64030d4af9b36c8d3a6af0aff34e5ab201df04274691fb420b7d5c40c401ed7f3ade96" + "065d34f2490d17943e27156e7bed83cd7222d0d5a73d167855fbe7ff6c3ed87f20986ad8" + "bbbd80fed5f9705c6c783b423f641d40ff1f367f9648af5a79ea3cea0236997558bd9dcb" + "011ea4dc64d61ea1e1f85b4f696ed586bc7705be", + "061eda5999e5a9ed4485d2a0ac5510549b76ca37df858ea5d95aeed571b", + "0401642d56359cc0a5f261fdc405030d45b0d6f9c08a182d354bf2687dd9d5011bf0dcbf" + "62749a99e4b02b284aa7a6479b59b363d25319a5315423a589", + "03094fac5381a1b31e53f43a537d9e22ebe6bd2c149f2f69d792bd56f53", + "053c8c4f9a30e0500e01100bb97c00ce98f5cc6578686daa1bdbd679373", + "047086a88ea014f06d6345608bd0a6010e650b9f6f984b6efea9a4fb277"}, + {NID_sect233k1, NID_sha256, + "94a9d9cd9efa3e4ccf2a37f904dd9cab5624ec9393cf8816ea591c5e70cccd2f105388ae" + "133708fb974998ae61d218c71785f9eb808d1c28d953cc7eed00dd9854b6b4568c5ed5ee" + "3df3b58a1e04c64f1c87fee4365ec9aa41b08a6bae234dc43a0bf2f61420acdb891a40f1" + "7f246972afee75a4c0b249dee0fc8f9b9c8a243d", + "07e7e73171e4d2f2989dc024757c186485435b82544a448f5cfca05f281", + "040181c8cf579d9259020461184979757b097d5a94245a2b9a1f8a6931ee0a014baf1b76" + "1a0af3dd9c0521c6489f9a778da824283c94087698daa7cf78", + "02b57fabe6b866fd25ad8802c6b02b680c137ea9b623457b35a24d5a5f3", + "07421dbfa83859354345b9c3f1ce6242605094d924a4d38c7bd952e3910", + "05ee48a3a5119bb3433b53a625101492216421ce67fc04dacf947ec600e"}, + {NID_sect233k1, NID_sha256, + "4db998df7b90678b8aa4ec6233c9b4629800ad1f3e2cf8f7afcac62fc6982dcb290e4458" + "7015eca8dfe77dbb4a80f9bffe75b11e961e70deed14555db6dae47d49e73004f000eb86" + "77c18f7e8234bf0a5a104266167a05ef07152e7acc2f0368b37efe69c0c2feb51eedf733" + "8cf9ed398f066cf1f66bacd89ab9376d41da35a2", + "05f7270764a0444c7159d2db867930fdb0fb9fa6b8fc80ca02e11753095", + "04006806c7164a09e11629e16608b7312d9d988acefa626fe8e34e03203d11019c4200c9" + "522618dab8a16e217beb3011599ed6cc09291fe9d451f0cf02", + "04a8958c80481a18c6e0893da9ab2d48fa6ae30a0f1d0512196e658eba0", + "01d301da51eccd15e09ce0bc2d0bdcb215a43ed13792084e2969260d46f", + "031f96a2f322d27d0bef23ba7c457fdc45a6e612f7d13e9277d36c8def3"}, + {NID_sect233k1, NID_sha256, + "dbf9b8a4ae316bd2df0c80db1cb5d7038364a2634925ff957d7c03511b57d486274b2ecf" + "191746827c325a14dc94daacd66ad86d369e3f598f176c4f0eadec7e9edd13e34043efbe" + "0a801b75b8186b4a6d89ceae4fb250ab570d65b6dd7c04382738fe3f6f6c867a7d84b35b" + "20720cb0036a5d81a87126f236833831d9ff00b1", + "0179b924afa4acf30ecbe2b3c12de533a1f9675687876a7e5e5ddc8e03b", + "040175bf95ac8e768727d3b4a74c2b8a04b221247a3b8386ddf35fc39976ad0122f32f94" + "1066150c151b9db92b86f86a10cab0828a77e4f0d5c4026540", + "0210c75a63699b424585f65497c6e46988c28eff3e0977e3ade599581dc", + "06087e46c0677e3ca64a0cf030236583935d0dc03c896685dc6e446d9e2", + "0252e42b8f03b085f38c6849bd420837d985c9fe14750a654b584c4cc5d"}, + {NID_sect233k1, NID_sha384, + "986d9e5d636526f4deb7545c037fe81b09c74496ddb8e42e61650c74b6fe348593f0cf8f" + "8eca5e839baf62f17bf6ad96ec0c71dc44fdf11259dbfe7499157e402f6bd50769723541" + "50723afb632799a990c44cd0a4fa9609ec4db133e3b4700be3ea4a338e8ba1873d345e80" + "163ed60d0de274d7617a8382980bc2138b0a2a01", + "02c9eb4d392d7f2eef606e1861183acb1fc753d666225f0f154d9eda147", + "0400d58fd7b5aa570b1c4b2190ec413fbcc9ef44d33ef191b6e23abcb386900173e85377" + "bdd8dac58222cd1d0f7ed98d73d6fb6c2eaf34819b08ececa9", + "064f9fb13784c99185f334700ccfcc4ff60b7f4d613c3de6dc5d1b8dd5a", + "03bff54e3610ade656bbe002867168db1b521c49225eb9662950b01955c", + "01da3fd8c08d8e17692059c669da3c7c4c146df6d3cbeaf34598d28eaae"}, + {NID_sect233k1, NID_sha384, + "68d0be2883598bfb1433886aff118349157708690380c42b8919859d96db069c7fde6e11" + "7a3669f2cff94a0f1b66b27b09e3f1b24d26299e11552a084be428446f3174da2e041465" + "5bdceb38e58fcb065b6661190862db39c6545dead34a03584632e988d0459659dc7c7c78" + "d4d00fc2aa10465cf24b2410f14e2a62173c9962", + "024661c89b77b2c743cc175a6130904461138ddc4ef771ffb9fc2c8679a", + "040090383de7ca48f1e71a43845565a9f0c53d2c9f8c2e0f6c4ec7eb6437fc0167658227" + "2e7ebc9fd56e1010a570d744ae4fa70eed3e6eeaeb0e0eda7c", + "05cc5b36c7300a1cc3f624e9e663861b4e296f7e7a27e8f8f0a2d54eecd", + "039c6f5b484411c434ee161ebeda7aa21b7bb26bde0301d9ff92921337e", + "02aaae737aedecfd5d53af56ef154ac6430a45ff03a3495a34a5fe0e97e"}, + {NID_sect233k1, NID_sha384, + "f0ba0407485fecd7337f4b22236533a926cc744a5f06dd08276750196f1bf7ea7984278f" + "789f92dd07e36895a8bfe297ea43d4a1177c0368900e3b969d3083cbe626f0e27e7ab38e" + "185c923dff46d9ba187b2acb9cf4b23ec8eedbb8044b96b5263d956e50cd6240c66d5d96" + "517130c743752404ed09473f05d0004dc5971ff5", + "0065e20e5ce534576d7c17616cd4ede3bf4f500894850723bcc9f895f4b", + "04001413f6dd5349e94311f1d25e400b69c0f0ea446294eba4bbeb10278b850066a05055" + "d856621161d4f0e33dac82e5c0cd91ed8aa56e9abba9ec80cb", + "07377147b59dba008ed0e6b366e511f94c7f7c9088615c6d46f46736b97", + "05515a6bdfde3b4b78489194d39f4bb439f58a6b3c3f9e16c8a71590b14", + "00778f79083d11efc8ff959f607c4cee7cc8f38b855028ea248fe291adc"}, + {NID_sect233k1, NID_sha384, + "3827276694e413c886129c452c9a66e7d09dee84f5f09bf34e4baa308b4627e096c7d45c" + "f6ef45ba1d9a4019a60399feec10fa80e333e2aff1251c85ca48574d9b9e1affb9666828" + "dff5afcef3edaf5e8cae823505a0c73afe76c1bf130399fb06b092ba34ab0ae15ac6c682" + "f9ee8479b065ce75b57213b8aae0f55e4e386de5", + "014c85f66fbbd653f1e4e590cffe62c343ba6062df4b271fbd02e5d42f7", + "04018930b4a59a1c0e92febe650347c49e29a4e83cb8c507e30ad835dbc94b00a237bcd1" + "30235e34b4439293f15e7a3913d659089e38e5619fa52e3c0c", + "03c1f8d076fb4fbea91a97800607b2db3fb5a45149c0d30dce79f07e963", + "04b9d2c66d8cc55b64f3f62dc629ce8e50ae0bad8a4d14e8b6567fc87e4", + "00b9dfdbeecb061a455dd052258f3828d4b7174af972c65bd0043a9776f"}, + {NID_sect233k1, NID_sha384, + "d1afb8965b48d66b9acb1ece674d9548f83395275f2d8135554cfcc7ceb96450d850dd87" + "4529433883709483d0743798db5e0dee955a4f30ba328c7934b8dd9207f3c336cf89141a" + "175ebe23d2faed629eb4236a8aea8300604c3eb7704512f240fda66acedf1494a85058dc" + "6a31bf9531958c332b93cfe5545046876c6b99e0", + "030ac7a78593b570b29f6d3d267abb6ba7e5870ee1c8ee4f1ab2f141051", + "0400a409e90eb4314f95967607ea3de9817a0fdb439cf406135262624e7fac004b1dd719" + "434e8dfa5861887736f32ecd635878ed4b9e290c423da09059", + "027c4987ff872fe499039b4432dc889960ea8e3f07be42e36a5827b3964", + "06829b5e02b5849689d152ceacdddbfa8f68d782b3ae8da23ea48b1acbd", + "03dba0d2b4400495ee098325ae4450b32b83689349e82a69b799dac2cbc"}, + {NID_sect233k1, NID_sha384, + "4f95b71669fdfe5dc46d4b951b085e099de349fc740535175337127910acf24e9a0e4b2f" + "23196ad23880da47b740d77d74fe9bcfdcc44dd7d8d1a181ac290de5cf4da22d5034cda3" + "d8020bcc776dde8cef1786c9ce4d2c2cfb035da61406af745efb7ef1a55f2eccc5000319" + "cf1d6380963025dcea641cfd15a3106751fec286", + "06d7516aa040f7d559cae248e485834e8d9bb608279ed4d4f7e1dbcd2b3", + "040127a92888fdac8d4ba9c0243c9aca516bcb431911254bc2cf51883623a100606c30fb" + "b9958fb1140643f32c5dd582c2319f71bff197d58ba3e598bb", + "01104b6ad82327b0445e75cff0efa1281d266a9dfe4019ba2ed22dd6976", + "01f247b2850463e362ff8879054d3459b2cbae84b9d4bc005a2ccf4736b", + "05b3dbdf04758d546e54c43ca5973bd8ceba646a4dd5d17ae5d2f8ec516"}, + {NID_sect233k1, NID_sha384, + "2ad9e17780c824c4f2d1e1cbf19ab85638f2f71cb4fa3518f08085b8b358f54d4f08394a" + "5ac29cbb3cab828c5f07f41eec51e6cd61a5f2cf44dbfa46834370cebdeb328fd3bf681e" + "61011b5c2ebc8945ac7a2a8467606051008b15c89390e111999255bfe28634ce9bc2850a" + "2b55a4af1c4c2f94403c78aba1ebc87386ab7b32", + "0137050d7b455f43a8dc2516cfff5a91062c1a2727b27df41488f3dcf18", + "04015ccc90a5f3906469e3ecf7a70c429f5b50fd0ce74065d41f1bd6dccc1f00fe5611b8" + "b1b35a907bc188ad2b1fb7507d1043d148283911af3ad782e9", + "04881e879d7c76eb2ee61fe1844567316d7efaef047b96979e6dceb7858", + "03799e90bc64cfd7d0246a7fc89a4d8ed0399277cab2af40fa2ec8196d8", + "067e8728f4d8398e4e1c25775620865bcc2d4cfe635a1f4c6b7306f6d9f"}, + {NID_sect233k1, NID_sha384, + "958773c37d3eba003aa5c489f72118b3022c52b93399e9d8001695664918b86893f4922c" + "7b6e55b1855ed0fd1d8de5dc61af403ad660fec60d7c44bd0102c069957ed804d0d416fa" + "cdc1a95355ef58554606579ef89b1842f1055cfa2ae118abbc485356824cc09dddb77d06" + "71cb3011b33bc86cac526e3f6bb3293c7bdca1ff", + "001fd447b33a2ee3595b9f885c290d241422afdd74c3dc4981955a7e9ad", + "0400e706408803188263cb149428c60de57ac757f0776e5b27a2d5a859f58c0153b5e13f" + "17f0178cd90427f7d608a5659b9e03effebc89da65d59698d5", + "0339300c00cf7e8c6195ffb71e509613018e6a417782e4f52704026a510", + "0227c80e36e3571e1c783358c9ffed237b251332e8ed05a8d3b454c53b5", + "0679a32cee8ae001a18d9a9d0ed7e99e5ae67ffcd54de7b48c62e76ac8c"}, + {NID_sect233k1, NID_sha384, + "9cb2c496b1bc7f040228571e005e7e936e48e8f469e295edf914f5648701249a20bff6b9" + "8b5e862603dd9f12bb71c160aafe9df02e2e383e9b8a9a9d700f4425ce408feabbf754be" + "543f52204c849fed6c9d3e36e03dfbd9e35c18d7bb2295f1c484a66e73440a0a5aece5fe" + "80b9ade9321ef18cde3eb2db15e4b18e788b0441", + "06a061e10b4a6e7001d95411cb31bdea9c84670a59ed61b14fbbb05c8e7", + "04000ad2b726b805919cabc90d058c78896d2dd8a78484c1fec5bd5fb0e07b007e048ddb" + "487f667633d6d030338ded21a2ac5f65373ddcfe1e4a3424ae", + "013b4a86b70f0e4de6efdafd7ecc993f0d6f231b3d743ee5adf82db1515", + "0541c2d3b2c6f0655dd415e327f0ef07b03356f8047117c41e704169698", + "00300f45026200b8cc84fd564778281bd1d7e03727c242a249d9ad33338"}, + {NID_sect233k1, NID_sha384, + "9a4bc0a029e97742ed3bca207d5912cb568e4403cda106b00247520ea02008b14c041b8c" + "9b976294252da835f4ff27456039d79d90315abcb0b9b6958a22352672e229665457ec79" + "571ca80447c8ff2a86e6af3dabe7427c8bdcae65e3c6746a56079ce2cf8d22235180f466" + "46a21cd9e86032cfad874cb9c67f882fb037a13f", + "027ec31ca31acb4d2fbacb49fc085f1261b0042cc755cc97f9b199e7a37", + "0401d521f7abc2fd3b0a10732ed641cc1b7fdd7b49cf61909b215220c5253e0019e9095c" + "67af1b89ae6c486c4f9889c3f2994743eafe55bd9eafe438d9", + "0151aa44fd97be14578d68f87dbb884c960ab59d950c392e607ecae6bac", + "07be427f46958538004186d52aa50a0f83d184a9d2f4da2974163854eec", + "029d4ea73ab5b336ed44556f6944e734e531a5c71dc6c929e7253323906"}, + {NID_sect233k1, NID_sha384, + "8d89e22cf802dc68ff22d43c436c79311e705ff6fd845e77c880f399f403e6d5e9e2b355" + "11553c978171189e288cb2200fd95f84ec5ee9865c0eb9190aff6dacf783ef200e82027f" + "a992741876456472bdf27f2bd8ee55db15408c957a120eb64cd24d299818726a73fbb069" + "7eba726a326719765735b37a2dcff0c853c906bd", + "04c6f4d88e5a4f4f83196f2dda9dcf2a66eaf94d50c851f59bfcea1d876", + "0401e2677c1305f545472e373615d195d1f7a315f592e26fbbf44c4255805001638140f4" + "8bad525625a87d0e537db5500f034e71e60e8a8c48eea04108", + "02185d8ec6f35d5c3f965cd00597d93caf45bbe186d4128bf877ec304eb", + "075199f4d8af090e4666754a7dac0c1599c207735c0f54c9f11e305727c", + "008cadf59a224f812d64c2f492e7ad4a923f3463b878dffc75eca5f8fb2"}, + {NID_sect233k1, NID_sha384, + "aa1bf5a79e5339fb9ef6c2817bd95725551d064bc5064d6586c5a879901adf808dc2ef7c" + "78ec3b434b84569988db58b5e8e9782b1cbc2cc7c9b68e66f32d4ac4ebe7e75b345f654c" + "7b8a5e650acc9f170f75b7aaa3957cce248cc69cf93faf8d72abc6fc1cfa9ae2d18a7b31" + "ce720147e88e84f6563b2197882fe302449ac5ce", + "01aa169ea84365c22981bb766bfdad27e373440850569957544b0f9332a", + "0401f97d91302c70798e2278348e36bbe01587e0031ac3c422141e3d4c150400a95108f6" + "b7ff41546c98f4ea4d1b587a3280e49c6cd0d33abdebf9a1e7", + "03c9efc0f72d88168c2b1f7fa1c6e275839303c2bddca136dd19ef446c9", + "0639d1a1066465b4b2f443cd9677cfe3bf5bb33e3e9b14cab2d37f4a859", + "04582792ba78f782f112711ceaf36f5f0774b92a6fcaee327d687658835"}, + {NID_sect233k1, NID_sha384, + "475664d5e22cbe0da0d0289ca9a666a37270dc71c81cffac91f6229fa39315c1d55f7e0a" + "89b6a7a07df7d391dbdf8fb7af63d2da46ecc3b60110dbcd842da97f98d2b67f562b0364" + "ef8e1c589519024177c8ea079794f271f6d35554c0e9d0a39062383c95721b72f4e74eaa" + "fb6fbfbda02cb670a7c4c94f67b8ebc6442e84e3", + "04a665b92c0c33a3f8b9eb4b0ec061d40b603de36c87096455102ffe57b", + "0400f0ac5238553f0cd74e6f34f7f82563cb01138e5c9bac6d5e7b8b7ad4fe01903e9fd8" + "a5a2aa32913b18bddef20667061f919f8d61a5b3c814ba4aab", + "070ef25950a795b5e22fe4cf5402f49029c5d97cf9f57f0806c0bbb5855", + "01248dcf1993ac2eeacd062f853ebb4b2072357e728f0589258399ea95a", + "069800eb2e2b3a9162196dbaaf67cab4ae123ea817f223acb6e889f6d7b"}, + {NID_sect233k1, NID_sha384, + "9e5397d94465390a82a3c07e3ebf21b515776d18b4463aa5810e6b2f96ca61e92d13e034" + "fa853c3fa45411f51f79df6f799a2c6906e6a5b7896a4576a4464f9e0be2b529a43e1f50" + "3fb640d79db6b68f3a3a7deac1b5832fbe86673784ff6db1f8438f7dd332cdd1e7ad9df8" + "b6731aad1b6a72bde52e6bc62d80b8da57822c48", + "00531540d94823e19ab2b95cbc6e7492e1effcbabce875de6ba96f53aa9", + "040031ba225249916a5380235220b9657162eef43d59ccab507639e19bcd6c0062e85d61" + "366a73b62255c741a065708701c8fa024a15401a4cd58640b0", + "05375df0a23646e8033ec9e3ad269e7167a663b97b4f52cf18fbb5f50f4", + "05bdf7d643ffde5ea191553a9c99eb42fba9a8b6e2013dcc520298d224d", + "06cdd9e0d58bd4c5cfe66589ed7c7d15331f3e164dff562b6971af1a41d"}, + {NID_sect233k1, NID_sha384, + "3cc4c4192f317e52df6f8cefba6d4cd823c942aaee11b9a0ef5de5c2d181073b7085a558" + "05e9554def8dc13eb978e7396044d4f4a14be2c7605998c062095c929b9c23b2b1b2fa73" + "dd19a0c0af44ca4789f9841fa62dee8a5f91b3cc4b3264f5f67334c3f0772b30bd7431c3" + "fbbf1f34318ce1889b6e8a76ce6d42079a451e56", + "022a89addd8b85809e87e0aa2c038593ec277054842854de1197833a51c", + "04008e760b282d0ae4eeb2fcbbfdec851468fd8e04c4dec71fc2d5d3a98a1300849a56b9" + "b0b0a1ede6b9f9522685e7ace3baa57f72709aba705814d138", + "05515b025d6196ffdc8bf275479d72b29a752eb3e70ebf07d4c4e7bf74d", + "041902f9b7bc81d3a88066b03e4111ad8ff4d99dd868d5608d1f43eead4", + "059adb96af9f404d2f04d89fb39cf38ba5689f47bda749ae9aa1ecb097a"}, + {NID_sect233k1, NID_sha512, + "72cdef5bdf710978e0aa334b86b8ff4a58630da314eabe98b4d611aab56f55c526983d54" + "d19bbbf9ddba30a84b18aa0bae9f9503e9b222f842f084db83aa39625403213ca321cc0d" + "9c8a136c826e6ea4ec108b913dd0a9ce9d5b8c7e3af53c3876e56a2037ebd6d99f037a09" + "7111c837647bedfe4c494e4288ed6427c15969e3", + "01df252a11ff97b4421b3a2361db94e908e8243cd50d9179f9e03e331f1", + "040129f011fd5fedf3526f0437ae800a110435db907af60e16912d58523202008026ed86" + "afa7ec80277f322dfc8cf693089968ed9ceb8c95c930415a23", + "04fce14bc83be6f862f06680a32e9a51d1a569fdf1d9b10a89eb9fef4bf", + "04d7b8d19dd9cabc3c2245a9d2c8431c3151eeb6f49676a865e78c26c2f", + "0373e69da1fe35ce41ff344447fa7ffe6fc71e28dc68244372745739fc2"}, + {NID_sect233k1, NID_sha512, + "8e4eb88c0b2d525b2c58b8e00f32def90e6dd382301de49e0ac053dbc6b61afe926d8519" + "3e2c4948f7402a3d7c614cb2c58e060362b0516a1ba4a7425f1b3d09aa20d4c3c8993a38" + "7a3248aeec51e6efa8f558dbdcfcaa13ee08413227c8351e3107e9a3e3ac124224aaea91" + "bfe50c11c1c8ae582e718f50bc5d5c06076517d6", + "01d7125c299ebd0dbcc050f07de931c7ad0450af590d0a2d0228a66ac5d", + "04013ebde8790a113bdde87c11ccdcbc39e354b193d772921b86657f53f74a00aae910b0" + "e22f1a2505f55fef2eae47ab6d47db6e49190a5469b4b6dce5", + "0113d1737bee59f9f477f71f77a0ac1aea86aa67002c34a1b31c421cd7c", + "066f9871da9a22f07c9b2a44fb6c01ac74ba17649cecc33b729afcb488b", + "037fad90c288510d0cd8e99e5d930f4fe197df779dfd6088da48986c601"}, + {NID_sect233k1, NID_sha512, + "370fdd80f330311dbb3959666001bba61cdacf20f72f78953d946fa6cba02d24b5003f54" + "52d535609e489b9434f192011f99f918defe877d51349870e7e75502f61145f7c261dbd2" + "a0840926d824ebe9be3c5a77a3a84340aea930378367ed3615a47e3f792c7773f83f91eb" + "ea718a05fc62e9ed1d78629b2c27ae44fe8f8d4e", + "021238e66119844b146d40e48341f522f6ac2f9c8a0b33aaf95a3099a41", + "0401dc3ac1ecb670f867337b752cdbf48bed9f32589366f7c6ba7424af1d6601e3a38ded" + "8148bf45484ab6b77e0beff759812493347e32d2d54a322a2a", + "03626adf8e70506e74ea27ce740f7eed1c8b37d50415be6a2681c67ad2b", + "07a9c9056b51f1fe3e7733c6f54ed96662aa7f5a08a961f91fd6d0276df", + "05e7600e9fda45bb966fbbb5a9404af961058a128824b6d84d9d47ebdbf"}, + {NID_sect233k1, NID_sha512, + "f86c4433787c3ec3cb1663389ccf53d62f9425274ccef05fd14b1b8fef676208867764eb" + "98d16d006ee6ebdc27b8d9a8ddd303d941fdd82b630694cdc698bbe6bd52441190783428" + "6c94b24ee199fe6d646064277f244b7df3ea2d9d52a9dc6a33d7c8d6dbc919da0fa987a6" + "7621ef0829e48310e0ea2bb86fedcf4effc0b94b", + "015e1bdfdacd87c42ed439f3e243abf27fd42e54f3ebdfb47f60dbae5fe", + "0400fb7fa51c1a96baab65fc85c3b769ac84ca7b63a1fe9f507a2ee0c49395005d450aed" + "449f8f1aeaa9df0131f696c2bcd4528808d2f52b6a73f72811", + "070ca3f5dc30c70e576e2d2b30935b05b6e68598eeaafa1bfcb9e156e05", + "07e3cdc4207456773aa52b44156801b316a7ac850b3a9e717a9ae7fcdb0", + "07ad6de3ba8730ac887f045cae80fe2fb5237a8594e7125c4792d478594"}, + {NID_sect233k1, NID_sha512, + "4117d593aa92e3eae1124ec7482737cd3573fe5f0f2a5051a7ce86946a2abb9e47a0c6ea" + "75b262689b0b486476d2ab09a20efc2fb921419b1811b51a2e15891ae9e45a17ab4b96c6" + "65c6c423fc00e2d66df5804a164f0f3c958df6f25d7da6829b1fe162a0a8cf130858c83f" + "3555d6ad627db70cb41303cc6380f7b3fed2563e", + "00e09410548c17bbbf28a68c3963a52d39743a4f1ac28e6dfe7a6ede281", + "0401f5f36a21a3b7fc5ea37528566da695922d7d9b7e6800af9c1a00f68242003df4e2ba" + "0c8648cb1fa19663f31786b850e6b80068b8c007f41de08608", + "03c0a2a4bea270eaf66adfb297c0e3213254cd87b11edcd90cfcd6f3104", + "07b684e337d6778f84bdb7a6835e91877b41d6af4b76311258fbb8339d8", + "064a0c22057a858b153ecdf4d275cf5523dacafdfcb46423b5613c85691"}, + {NID_sect233k1, NID_sha512, + "882ecaff3ec8f4023df5397167f238869f78a5c499be19aea85c7486e73f66f0e08e71cf" + "85f3f1b6f6a70796bf46a18e6b555a0a87c2088640ca73051b3dd59ebfef922be0372208" + "fce602d8001681297b285701dbbe24ccb42541b5db4aac1a1c7f407e11c83db15b38cdbc" + "25e930fdc6558f64d9503e214571a435d890169b", + "049f5bea6e72d98579b78cb07d89f64503f8759dd7a73cd73713c120428", + "0400974dcd68cd85117f363812a0473e972c89551e31c74c8d99f1073eaafc00f306c905" + "1cf3b84803307beb3dc0d34a9758a4f535100e846462a49053", + "022a5564b468e706762e3ff934aa22d9aea0bf2b116b61182c9f7be19fe", + "02e050afb84e1b0591fb64d46dd7d4a939552d68bdb4213f16c5d7ec5ec", + "063225df0057d5368b2e103eb2181ff5760e6b2a9c13c83da042722c3e4"}, + {NID_sect233k1, NID_sha512, + "99b3b8f876f8359bd6369ce84f9261581c52d744b90261a1427ab9e447e6d833b6b3e89a" + "f8dc770f1dd55692d01c8bbc4277a729fddfa7cbdb2ec99133201dde44ac691a77904ca8" + "16feb0a1aaacbb9fba85048bc63d73506eb908ecd697caf582747051a3a38ac8930c9a43" + "65f407ed94ca7f2d26913c53f4c010c7ed9d7ca4", + "005eaa818690d1ca4838f0bc667be5721d178c3869884260fb230277c3b", + "0401f7b3b50167cb2ff7482240bade95f2850a02805742e6e29eabf7f9ad3400f8038a8c" + "ffa0f798a01e333251996662bc3c0ee56d94c392269b63edb7", + "064d518f7b8c87325d8edfd42a52793d87ef8db283606dd676be8584562", + "07128123004a515e277dd5b571e31bbc877cc966e27ed5b2ab2c16e881b", + "051d70485148996ec30f92097e4a12b5edf804e03e312072336bd912268"}, + {NID_sect233k1, NID_sha512, + "8c1a83023930a85c5b2f9930521b8b8963d5523a3323d87f862a17d3505ccee01246ee10" + "29b8b8c2b608772c4096d1e914cb398f027d91184a8e94e4feeae121eabb504a2a35c8bc" + "9294edd15ddd979946c14c792ad787dc2d4deffa284830fc90b3f8c0ced6a99fc6de7c41" + "b9ed261402a6b3d702ff86a9392731ecc37430c0", + "0603d89cd2f741d734587e77554fe6bbb1e5739d5ff73084d4de8ed69c4", + "040122f2b7802917e4164ac2f54033621c78cbc7040217e5ded6b9217f95bb01f867df74" + "3e73806957066c2ab45c04bf1af158e146a9d1eda9e974e0d4", + "076850b8ca9e454bdb320da624c0dc63e14ad279185e4f8c9e49905666c", + "04bc63bafd5bad022fe5db246680a0a0ccd0b50ff50482d3849c92eec7e", + "07b6d8a8446ddfc64392af0aa1763d45877023c0be9ec78db47efd3c366"}, + {NID_sect233k1, NID_sha512, + "f3c9dedd7115339dd3ede7d8d06a44de66bf80b4888ab7bc386cd40a92789042440a13d2" + "cc90dbcacca5feeec1e0e3c51724146e2c4904ed6b05c7b4e9b49d7f458ada695c5d2fc3" + "6f1193329b87c1268aa38eda9151430aa0bc004e5d2a61b9390accfc699f2efabfec785e" + "b34f52b1beff1e4c5492e922acc348667d2a3986", + "07977b3aba53616dac27b4d74930da23966a88ad98f1769674789c0be3d", + "0400aa61b4bd2fa9c61914ae306d69d3ade7d6cf621399e5791dda8a054dcd012e8d9274" + "d5593f5074c49ca34a7e2d64f9d9ccdf42df6087134b811762", + "03b8ee56bebb59207e107bb0c16938cab707e425f38b70f0bc918fc1b8a", + "068502a3e5e51f5481aad31eb6614152f4957eef1becfe3a297b023a94c", + "07b6b43be63aa79c10876179703b69caf9b03c5401b999a3c5be4737999"}, + {NID_sect233k1, NID_sha512, + "d878c4ee0bd6c84652d7f9e68df7b90cc78776d8d1b60f3e4d7465032bf401f1527ca7bf" + "d4a3dd916e13e93fadaa5e5f20c9f47d12f8fc922a9a3aaeeeef294c221ca1adf7df85b8" + "88faec8002f17ff202da1be837827619904121167bee2d2cd694a263d9a99062cada3399" + "dcbfcb283597a96ebec129c65e0850ec4cb4e2d7", + "050cd20e7eabd29008cc977d0a17e1195d79587b8f15ac2447e15daafc0", + "04001ff23ff4ea1f30663b17d8f1c67ea37b8c5df7009d0c0301db483803a400ec6bde92" + "921b83d4d84be8a67a23e1718e575101b93d9a800550a20e7d", + "041ba36d2e810e47c3de583772e9b5908c257b2aec232d855669d4dae2e", + "079e96ed1dfc4e31774159ef311805b5f8001203cf37a72921efaf5cbe5", + "00b8abcd623b17357f65ac365301a8823365ab948ae3f7fc6a4a0b8ab5d"}, + {NID_sect233k1, NID_sha512, + "ac3c118cc9cbc8eb3b74d8ccc9ecbd81d1996fb25ca43c8a43bffeb244f722b93c9e9692" + "41d45d5b81fda0b399f1e3623687190e428dae077e54cad1eff75ec2f7fbb9434bf71683" + "3421bc2634885677579c237340f76787b2eb19b446d56c0f2206099b81493349f4db0eca" + "d0e2dbe85dbff7d7070abb3d3b12ef0cec828af4", + "02dbb24fcaf9f3cd5d50d209937f0e2d134fa20ee3c9c2f1fff3dfbf302", + "0400a07240c52e385ecf75525201f9810859123bfd8ce04a5e8f4dc4ec88b2009bd81119" + "6ca9ac45b28031b9f65f9a5c4ec497d995f7dec6eb06dd2874", + "05785beb1ff70c7bea89b1fa14be09332ef94b09eebcc9fb1150bfe0d55", + "05279bb1b1ad8174e88bec4c723d65eda768c1d08d1c64c332a240a284f", + "015a90383c2c40ddcf721067b3435915a843f9c4708cc133fd1ee53f442"}, + {NID_sect233k1, NID_sha512, + "700313698cdfdcf0044ca07bf9e5f0702ece7cc66e35decb28d5f8cb7e7e5367a95cc172" + "8a90cc9a53a2b5fcd4702028b742538e9b386f5d8b4a2411579ed9553021a95bd00a73f0" + "3c4184a6145aaa367e3af76659d677fe7a2e98f9ddf4aa20eb8d1a1db72c3f5590598801" + "be7ebf44255fd7376d89d998b7068bd1296fdc38", + "0047142197d3d43fa46545b547968680ec81688589d1ec8d7c7e90eb969", + "040179450d83cd6dd1609830ec78011143eb64d2d1509ed1adfa085a58d786003ee40673" + "ac564c6b5732868d0f8a57727150a23c484228890d768dae54", + "064f8892245a198c9c819152edc168e69dc7b562ef1f54dcc1960cc7db1", + "0293f2f989fb6b6e7cf304faf3f63eef61ab89a626cf8152e15f38bf93b", + "04948643075cea6413b1c88a9bf11aa176611f56d027f2b165d00d46e87"}, + {NID_sect233k1, NID_sha512, + "0374673e1a685bdee55504ce3cd333f70084dd4ae685464a16924eccea34531663fda602" + "29166478b30193459a3113253cd6494dc26154156252dc6e822552c7c04d790eb9f8fcef" + "2ea8dd79e72f881f7f20fff93cd73ad303c0918ec27c6486c4da61f82bcd55422d16650c" + "c68bfd4b0132c1e7075bbf17dad919095860d445", + "031352b49ecde5434aac05f898e6ce4337304845d748f114c14319fe97f", + "040187ae6bc9167d9c69ce5544ad650055cb9a4e69c1772322d5722e68e7e000042187e9" + "d11a921adafc694b5cc8da9226ddad1b65f764274954b17333", + "0761189e63fc0c3b5db92b281e5a4bc0d6fdb30bd14f8e69ca85a211bc7", + "0453560e6e725a2bfe0383884ba3b3dd0816d8522d9e0762f781f6b6340", + "01aaec4bd98c765e4830de6593280779d1222918d4acf08c8fc3d0aa351"}, + {NID_sect233k1, NID_sha512, + "8b237085f135d6e94592f8d855ca397c8c1028236a3b412adefdac888245874f586d0695" + "0ee18118f751bfe26f4c31465ec34b578caa44cf1b7109ac4f6eab7f97ff9699b34271df" + "035d3bf58a2ed4bcbf7577cf8e5792b1945ebb9389b680baeb8518c8fdc5540e192aa4fd" + "e0eed0d7c82be2e362b286f582d65752c8db7038", + "0176f124c24e4420f6e726a6ca25f09dfa0c5a37e5bf879e7bdd36c3b65", + "040098c37cbd44aac5d5c749524b840fd849652349fb3e02cc8f8fd0a237900151a9a88d" + "a407ae41e52b3dad1ea6031c7a36bd834007c0cb1e2c2f2f0f", + "022e299985cf289f2fbe2b1b270fbf12ba818cd2b506f642e659cd541bf", + "0686ac0c09f90a077cb446c910e07fdf23e845487d0333efc65b9b84147", + "01688b18cb42082bea69f18511b0fd9fa35da83d738763cf13ef92a119b"}, + {NID_sect233k1, NID_sha512, + "e3a086ec15574f7017b3cd5f5a47ab7a73980f11074333490dfe9f8ad8926f9ea7c82271" + "aaa74e77133b1025b0b22a6900fbb71251bb6549341a23d194e79d03462cdad52ee0d1b6" + "f5d0d14e1136026961fa3467ccf0864bf7ae3fcc3b68cb35df7324bd9bbe58fc8aa9f63c" + "19feedf19d935b71bf5981c74fb2a487f84e453c", + "0755c48c3dbaf71042c58cb137f3632e3cf9d90b7b9a58fd378feef3d19", + "0400bd9a720553afbfc5349e4a65a21fed0444c30304f7018ec1ff6fc8d1f90109a1d6b9" + "cc4fbd0e888d0a2b6883fd06a5da347c0d4f7882fd29eabcf0", + "04fedf8785c6648798748504b1c9b6a066ab6606bc9a69534f93e908f4f", + "001e71744a1b683858444da0d270f43b0d5644424f2b38ef48a639685b3", + "07ff8199ffe723abacf1947a828e8596dc49ce655319087e4aca6ca34ee"}, + {NID_sect283k1, NID_sha224, + "ef90f85fbda05e693006e4c64e1dac56223becaf0890f73b5274e6e289a5a1de2c141b82" + "5c24d595b3fd18ca855b5c1aa60dac6b5356275b11be670692cdbe5f282f93ac7b2e410a" + "96cb9e9f80defcde98f3449f99e192bfd62040421a0ab8f99acb85369f25e5efbf81439e" + "fa8a5e1d9cf781355a0f47b037b09fe4086389a0", + "1e846c830a8ec04e8572d1a9d2df044ab47352fb346f67403a3bf87243871b164511c53", + "04012e43e20941f2641154bb66a56f2e0428a7ad22d607fb8af658df0b382bedc7d5ae22" + "cc022f226cd65052071066963b112aa302973fe2b5fdd7bb827d13da7634dd2fb9e3852d" + "db", + "03a76f87ede2b5d40a0f10e15e90e29198fc3a03943efea39ddf7afc37ed4e18832af8b", + "1be2c776c707098438fbd0561de578e4b9449f955a25626f2fbea257fc578ffa1bbbb70", + "1aeef69983da1a535b10a47e66d890c4413c7a8cd6a2511a1a670a4c573d4808f46e23a"}, + {NID_sect283k1, NID_sha224, + "a3ebc17c867cc9c7c28797f6364f6574b80c7ec5b2d8e1542a6f5db8568c15032f92cfbc" + "eefa3fe4ee654f690b0455ee5d38dd84bb8665ffc1ff8c849bdbc4aa0ddfdbbca4eb3797" + "2fcbcee8cecc1aae21ec736ef61781716b60247b7551ec4e552d0b59a53cec5964c67cf7" + "988787cedf769eabcc9cd5243f58034d96f0e43d", + "101c5ed48231a56ca0ea85eb45de0e395e6df2efd4987a226ae36489dd8b2dfbf7c465c", + "0407011260f504d809baefb54af48c890f94fa5984c8bf228baa4b6ea14d46372390d1a8" + "ac02bbfabb680659aa2611435c4058ed773467a41cdda8250f3490e4f491f1bbae452c5c" + "36", + "12a3c7f0b3d64614ff97133873d75c7c1406e316e8cf60d22139dba462055baffe6c8f5", + "0a9933496d60716a39e1c3f3bf22a7da546eafebef80dc6f25d0c109ecbc430fdb3e80a", + "0be56197a0098b022a7914c10f40207da58403d6c7d04edaf7efc96de740cd71f67e0de"}, + {NID_sect283k1, NID_sha224, + "60269efa4d0ffafbbc655f6f00578eadce7fc0a7eb7db923dca49b6f2bf3e13f7f829cc6" + "133e022c3c92143c075ab9ced0531a91e6e79848194ab98bb852f40c84e7aebe71fb8bc0" + "fd1f97ed5bb6bad6783d8dc048df42738e841d978456e055e1b8a781dfecfce2218701c7" + "af77e7894ccac5bfff360aab0b6136b978bc39c4", + "019679dc589440b11f82b3716e5b2a2bd42c3b1c83e88a28e304cf5148877faf760b4de", + "040743ae04e4b07d154ca0749a011c97a31ac68d8e1da3491f331136873598896e5320dd" + "cf0776c05891c27fd912267ac166bc9acbaecbf80ccdd887aded2d7b8c2a4a5d139833aa" + "d3", + "099ad7fba5284e406f6cf200a39e398aa0426448c09b95e691f653d6096a63adbd39965", + "0285a82340d9a6d96ed9ad0fd0916216fd20edf979df41a55835ef8fafa00d242ef6f11", + "0a8548b405c171d2a428507f7adda4944bade7cda6dc580b1d3f94e15d7e10f0a08e008"}, + {NID_sect283k1, NID_sha224, + "59d704d5b1f3a0605f1497f22f71b8f45b26138bc86371f00a4517554e7f6e7fa5d35189" + "fc656ce68bd2cb8510fa3e3c3df815dfdd749b2b6ac997d443f3954c7a927e138b579801" + "ffd035cea90840733e7884ccfe43d8d3a4a26b430673274aae312abe4ac1e1d7c67b7358" + "0fedf2d8de46572493c9205ebf0e8b4d75ccc88c", + "1703c21fb1e09f8947e12fddf166fda6f685221fbd803d75a0ae377a54a1e494e6c5e7b", + "040767564e13ae544dab22c3763c5d330a5571e07ff8f2f5ba3fd729379709b1fb184f99" + "0c027f9e5efbd1ff6ac53a6174670eb463b12f70a603354e25c577ea292b13b8e5f022ac" + "9c", + "10d875acb4d0dc211a82e78c0249e74de16768003b53830bf5648cf911fef6a57f8f048", + "02af92243b9dadcf21561ce32ca0744810478f8d5be8e0f83d9632ecd8e86ff467268b6", + "1f6c50fb3bdea228a6b623be9e2ea2c371dcfeb0e604ef1029b6766c43b193d86c02f27"}, + {NID_sect283k1, NID_sha224, + "12c8fdba3bc5f68e13f7ff8e7bee876fa68a970afc6924314dae0c2482763ced8d4752ce" + "c29ea288d350acd8a06c69289ae41ad345a1b88bcccaac903f2bff39015c289a8ad60860" + "6bfd65270a7bcdb5fb10c89bbc2d16dcb91fc9735d66103f6b1f3575622cf4d820929031" + "5b033ee1f79968939410f465a2d37add46af2d59", + "071de8eb14cbfb88e61b908990ce08b81e624ef4f2cd9cdf3dd7ca9097d5ffed9ae9a71", + "040136d50e1aa8203a0cd2c2d545b81d00b95c6b43b74b1fba3a6402abf756d38087affd" + "49046bec77240de7bde85ca4345f27c6df341c72a4eccd2cd495e86376c183ccb34f271c" + "d6", + "1d80734927505d8d4818b3bdf1aa2e5c557e5f717a5b3fb856ca9a2161bfd74a130ee38", + "07894bf10885a698899b118f57e7da22222e3d187a0aabfb99fac0ce0e134b6b44a5f90", + "07b4a87592004d6ef8345415064b4b4672db2943c7e6098a9e6d59ee3324847e753703e"}, + {NID_sect283k1, NID_sha224, + "26013a3ddf687bb2f37d9700923906f118d5cba5d8ed5113a0e3e84cff00918125108f74" + "f4b243e351aa5d07fa7c6ece29f5700f23e50286447883d2a058c3258a12e4ed8770cabe" + "627ebea7ef6e8c77811ed7d9a19c53287093e39226236587ddbc63b7ad5e7ad9895c64d1" + "d03ee432d45a067afe27d4cca920ae88a7a68db1", + "1d156eb15762ed00c4021884adbfc2426e910b18a5bc474268196f4b74e593a8f38702b", + "0400a99b45860615d7caab2f4e9bc01196a61f52f95c6c7fef615a4746d48553692d5fcf" + "13056f81a0088dec1382f8a3a863901d3443c8792cd13ce13a8f63b02d107b66d9d23bc4" + "92", + "1999524ce9525d85b562fd13634fd9ac50fb76d83b9d72d6976d6fbc47af7e1f354eee7", + "067748d49389c9b87a85b518f84f41b18f52569ba531985b8fe5e1f0cf9cffa958da3f0", + "00c44a583c704f69160c6258332f3121b022759b163c74c7c96058fa8e3a9928afee948"}, + {NID_sect283k1, NID_sha224, + "c4dbf70b9a2165e7279122460d05ceb8e43e03fbe2ae7c314007fe2b1d8567cac727a10f" + "ba5cbead0ddb167d387da8e8f3d6bc0ad851cc32885809d07a776fd4a95a979fe3833610" + "af89df0f454d9edfabe12495a118fe83add5eabb2acf54ba7ba7c4be20fc77478c0a0f07" + "26c4e60317422a612a234a7567648603b63f1c12", + "17d6eb1219cab8577168be86b61f372b27ca70fb1f1a767947895c185344e966db17aea", + "04065d8e43a290a6957230501509b95a208a6c37ddcacd1e882d97c73c38b2a256caef5e" + "8b002169cefa6ce170ce20a0b5463f5bd146224e0813acff304307da88830b0777b86cd3" + "d2", + "1519e37a66b4e665b2e3e59b8e836869a886c879aa1ed47901a6c8a8f365efbc67fb410", + "1734a8bc9a13f51d921a297bc6b2d38610c20b32b0adfd5efdd01a4db5084f3b0697904", + "0f9f00b25a33b166f09e2a819dfda80d87f6a2419a7b4162e435ee02c0fc10a669df6d4"}, + {NID_sect283k1, NID_sha224, + "b1d53b6af1face9b59af11c726b0099111d1adb3666209ba46b1744a528ed0f72be5a1b8" + "2423153b896384faebef0362343e2a4599803c08b8513708938aa8a498145fca1c63ba41" + "aff06d1a18aa2a045fce7fcd7e5552a2b98d0df97b6876f06a9cf52a7a40fb737996adda" + "97c3cedf7fe421235ac6951060eba9c0377e72a2", + "10ede9be6615b3b2a294d67da78127ffbf3a15bdba6f4fd78be7a60415b5d1a097c0cff", + "0406418eac385ce94c1982c216ffeb0b26f9c061ccdfd785ded75efc6a329385898331fd" + "a307d41f9cf1248a37fb8baea7f3545bbca707a903966019ad56e4dc810b6863e243968b" + "48", + "134ac4de6ed71106d11fa736960eef2873223aa87b1c5bf5c823de6c78092cba4726ec8", + "12a37587ddf224faaf8dab61210310792d4ccef650c98155a227bf468b7f323575115cd", + "10982c965331cf8529ef6adfe17dc3fde63dc2a557cab451d7c9408a089229e22b73d43"}, + {NID_sect283k1, NID_sha224, + "e78f538b1ac21602b00a09e3db243ef4803b447329c94a1476cd91a88ff790da71421b60" + "092c8a6e55327c7982e7655eb1fd6e40fa9b9fd2f10107dfc585994dfc5bc2143d18794a" + "39f7f69ae679b27dd11ed22040d5e93aa83f71783525a4db0c3fd7b43e57dafd0033d531" + "7680df19c2ecaadcb37ef896c61a758a5e455206", + "14f237cface123b64e8578ff33f86bfd2a8181b9c81f36b9ca31e2a446f0d91dbbe2249", + "0407aa347c03d8845f1566bbc3fa1d66ecb41ed1dab0a402405d8300591a1f3078f9fa53" + "2c063bd10274437c2690ed6df60ea632f3d4faefcc07a72ae8d85c2f999bafd373053265" + "dd", + "0570bf3b42aa44c11603d94e14b524b8cb1363306196924082ae71021707c3138503031", + "10f7f4af1c1e3f9e8e0c95f991c348bce6725f60aa12ee7b398be64728242088a469a58", + "17145a39fa4dd237e31a98daf3974138638b9462a31b87ada3eade6bf7f597195eb28b6"}, + {NID_sect283k1, NID_sha224, + "8a6ca8ec436d2c706fcbec6486b5665b21c174edee7ebe108211c388b1219a8224179f74" + "38e0bb7d6e41ac4a67337b52d4cd9a069fe6c88960ae20be29c8060efd7c62cb7a9a3713" + "6a250e68f253e7f27755df53ce7c570135641ad49b43507e5483e17b919cedffdc0d4913" + "b1d5e0ca0629876c0a551841a0fc2090d2857cce", + "08dbecb26587cb2ed7df2404e680fcfa5bf8cf6a58e87a350a1600211b3c844ca86daa5", + "04066610ce348821a77e8a6eb74a675ad9312b2622ad2e1e6d8dcd0be8b27d8384844a72" + "340014c15776bbd144c0c24bf419237db9401fb7f97a7c4c0ef50a9afd27c3964088f796" + "43", + "0204586a9314bc14bef8ccce8b9ca3874572b375d01c6b4a41c743c16502a27e91a9fb4", + "0fabfeb17bb8c1a57af7af81d99cfb7b0ecbf4e5e4a6ed483aee4be8ee4c70c2ef23941", + "08071e162dfeb068e3cad256c3603e07ae48b35f1bafdb726cf4ce32844e1a2181f23f9"}, + {NID_sect283k1, NID_sha224, + "95bee02b423d2c6e60252da4632f693a2d8f6597b4f9c6e356f670c3a9e4e80063e92fac" + "b6421d0325b99dc150464ed2ec1d0bac72a042b35d56d33d2fda686a75d582d475652221" + "8b4ddd25ed45503d90d3d185cba6cf0ac211b22aa4e1318a8316c369186f7130446dafad" + "64f7966f5414f43af37a87127534060a23c6165f", + "191badec2d28cbbe62c072c6b57eb5d4644d0c0b3283951bb66096cd15edd43a1bbde53", + "040020224b00428031056ed370147c51e68ffc02e7fe269ca15b22310a2974d383c6c83f" + "cc01686568fc4768158e75b4ef0427d8e262cd0638801ab158311749e0f432d5b69a667f" + "0d", + "03b1b6ca5e627f00176b599b68fe54e1b5a272c323a06b55e4871875c0e729c4c79326a", + "1ade251b9360a6ca1b48c2fce0768a01193a415bd23956fee1e5c4c5076b3571abae082", + "0adff25020af4e2b4908a33ce1d75c793934921267b6c4a0542924300fce40fc0031021"}, + {NID_sect283k1, NID_sha224, + "ccd7f7c0e04d1ef9a3c5617d77480bc624beed6582bc28e9e3a369b12144fcd96b735ee4" + "1713f4173b64b28c6102d82dcfc7876e06e76fc497d1d238bf6d85bb5feca630bbd0c0f0" + "fa7c0c72e28e9259087698973ac66244bc6e69c04deb22eaeaee7b20da239ab6333576f0" + "1349c76f594498620933b8969450ac2bae66db8b", + "0ff5e3d66eb57fd35ba4472effd6e7a016ca461e39000a7125e99080f6ab6ef4380dd7a", + "04019d8c1d9aca39de0e627981d21e35a628c35fd4096aaa86f61625fcd078f0400f615c" + "d5052ba2854ccd64407f6779c5e259917b251c9e34ec0d95c05488f30802b82cf4b25b53" + "89", + "16c9cabed653c57676ee46c8912cbc507b246078834f1667d0708e4c666346299c1fc03", + "12ac0ec9501ac91a2b57220e9c00ec6e815399ede94a658c36f9e89bbf1674316d65dc4", + "0c9480160c4e9db4e82b4ad26cb79e083e9e2056e68a2ea554aca45802bbb188389bc4f"}, + {NID_sect283k1, NID_sha224, + "65e9124a2606c8784c9489add2999f4cbe6186395df20838d653b263a207ec46995d2685" + "b55d1874e7ef05a6a3bb5b60a7be6751ad568cef1bcea2debfc494d1e2ece0dc8028c88f" + "1b2c6e4ee26b639c5e81f6448bd25b73ec4608a8e8cf4e0155c29b6f0a62781493b03bb7" + "384c9808529d5f87da6564ae196a365bd282f46f", + "1f3591eec4a8a3fe6ae6debe230d238a6b73cf3791cb735add1abee64239bb100f15166", + "040483e7e2b8f7ff95b86008c3042ab83a4b6a48f15ce1cedbaf3b586b56ab606e6f23a4" + "ef0287cbc8c609426f1665976e8120afb8de96b43978762ed44bea5aa1418b9af6922c60" + "66", + "08165da5f5427b38c447382c8dd0940c3bddf8f048185e6cad260031f7c0a2ffb83027e", + "09034633dbd735cec6208bb6f4455b295b7d730c9301bbd1c0e9f101399f2b3425a13fd", + "0204ec149b416ca3467e92194449cf2ca0f41ca1fde79145f3af856085b298149a3253b"}, + {NID_sect283k1, NID_sha224, + "e793c60fc725fd537d5fd38e9b4fb52e268722ae6bde5a058de8d20db301f5e8d8e1ad85" + "532198835a04b76f27ca3c972be5617a55677cffa8219eb64fe53ced242efe1b88999097" + "9227dbaaa15ed39d3b6be8c5a3237ebe12bd96f333d947f80048463d3859e34f865d83fa" + "f03894c2243a06cc96788ed952e606c2d8948271", + "05af03cdb45961e7ff35fb0146904ddd6c2bfd3cce814073d3aa56eaa9f13b4f7423926", + "04070bf676b9b0db558eeb8bb94a1248bcb599d1e8975ee13cd37dcb78af19307d1b7e57" + "d506ed9bf30c627062b99ff9d05ca03441b6194c34364cbe7b73b46ec9716ad8a9970cbc" + "99", + "192c7b1fa8f221edecbeaa51447818474dd9fc89e962e8e87400938ef0dff432a6c4b86", + "1df1a4f9578e9cae8102aab5eac70eddbabe4ced99b5bab1b1dee59c41b81e392968c14", + "0f2b1319335ee497fe3ebf1891a71cded59704365774e1ed9950f79100e70950783bc7c"}, + {NID_sect283k1, NID_sha224, + "a57682d21cebb48190199e9f57493696eae3a59acd22f64d5ef4729decf6c2615b326817" + "a6bc118bb7234bebfc7276dd998838c009a7348e46431574638dadc48538d6048d572e50" + "d9c5974d2049ebe1837dd857bcd1447b1514b62808a4e7a88162ae1bb08a0f6d3db6f258" + "74c6cd0cd4ca6333f1bd57bd192ef67e4616d182", + "1ec9710ada06e6270720692a06d488ae2ba863b905dd2fc323e7ce68dedacb35fc8c7d8", + "0405cda72b5b068f70b3c431def41b8ca1d4381e8c2fdf0821cfc17eceadf5e3eabf7987" + "b7079ae508354fe31899cda71e01cbc80e5192d24f1f13c954208d2ab8412802407ae376" + "3f", + "04f7b9372a8fed536396f0b87d4b20494786bdb8db77200c1aac1896486a05d3c940cb5", + "072ecde2a8f506f0fef273c8915a9edc29e440d48fc6cefb50e7117492fb4a13e123bed", + "0010dbd6229d770c468f5d8bd20edd6928bd8824b7fc2b10dc45fbd3242191e7557b984"}, + {NID_sect283k1, NID_sha256, + "f646e7334e191c2bf0056d3bfd23f03ef7f0777b923f962519a8399d311b8f68414c689c" + "a34b96871fae99eb7ea534fcd83e788e56eeef817cbfe33677283c736b99bf6a626f9515" + "291e842bf99f694e4e8aa7c9911c591a87d5f112b3d96b064594e2b368e6d1bf1a1cd343" + "d54916a66da22c26355266aa2884120fffb8b94d", + "0668de088c6913640fbefbe6d2c44ab26e481802dbf957044a4957c3c5d0a0fde331501", + "0400d3a50cb9d347cfe45d2a313813fec8b928a9b1defca6ff4b89c4787717f275c6b733" + "7f0762e47b0669f625c39c74d50e2b46875ef366b7c3b005c16ede69a2fba161faf6b3d0" + "db", + "0b24bf54795fa02eb9527f21ead5497a6db2bcc7849a16d206239f830df313dfb7a2716", + "0852d8b6fe93b0b36af5d99530eed08669eb9a25972fbea59f32dafe88b722bada98ab5", + "0e5b08d410f2252f724dfcecaedb37b92a6c09cde646ff6237007f4199068f945ebebe2"}, + {NID_sect283k1, NID_sha256, + "a2d7e69ea381d3edfde4664c56c4cb140d01cc4425df757975cedc995b89640dc016ab41" + "9b137ff25a6a6d64a309b23890439d2ba157262393cf93d15ca1b1ffd19373ef12367f88" + "98aaf56d5544c2f019a4854f69b3d8d320e03135bb7b675e588a5c3fe4b703938fa0f964" + "916501297cee2fd04af767155c7739419f9dbb7b", + "0e6af57cf47de1e6f07041eb5e1a413fb7ddd82f8c7f7ce957eb28a118004930bec4dbd", + "04021e31c4e4d412a261e40483b9106bbc1b0d7e7414e53d7b9fd84175229c8cefbbf6de" + "fc046ff2dc601dd407883af7dc71a6ef4286cd3b1b6ccee4fd861865bff8fb38ad51b63d" + "49", + "08f9e2113d0b223c04e678e8ebdd3aab4816681a9ef08b18a38afecc57d79c971421469", + "0d2c9113a18bd51008fd327a55c214c9584b6f1b816cf3b95e7346080da2cb07dcef8aa", + "19167051872759c36ba9eeb5d620cafd3289e8b7660fc847ff385b5143b3aca38780639"}, + {NID_sect283k1, NID_sha256, + "7088f60e9375ec6a42f705f851fc76cc833c4dcbb3352adcce9f59197c1b7121e7aa661c" + "4f8ad9f4ef280af3a2981e90c01291f7d1cf7d3ae2d96b37fe6975e11b7c6c02b8ef044d" + "1470b1a26b9c72e8c4e7b1dd83c8acc9542e2fc7d211b87841dcceea2ab8128d0ff7bb62" + "2b60faa4a89ea7008f7d55f8f9de675bc4596fd8", + "19f9b63fde8c6aa6177f2a38981505d04f8ac62bcc21007b05615d028cfe851ab9cbbc6", + "0405a3e567b227869f948180547c2713703c90698dc04864140d22b24bdf81b3996829ac" + "a505b2ba535040afed0bf6f9d850713e54013729bc6dcbaa336ebbfb9c461f7ac61af480" + "01", + "051e20545a0a98dc3fec59e4ebdf101c6aa2768f344c1e19424c1eaae4aaf7ffeb5205f", + "05fb3329f63587e8febcdec49f92de88366a9f75d0b9a0f374dadc6e7a62b833753e990", + "12edfabf1ce434c850b58804f1f31f8afb20fbb36ee69b68668e231e4c04fa75e658478"}, + {NID_sect283k1, NID_sha256, + "ffd6044ab991849939e8a29184b4d0ac3e07acb63c7e6b886df9e8254073fa800d5910b9" + "fe34fceb547565a2344eed4de394ce2251ed51ec882ee9207eb7340464c742d9d140fa09" + "64f6bcb1efcc2d13919af4f727953de41b20728ab975c1ae0ce784865f23ed1325c68daa" + "95ed5c932893610179be94f13b9a4149f09833b3", + "17704c1f436beb52f7ec97192e23e206ec09f9e8986e06bef71467c192bad6f0066b3c2", + "040329294a36ceae2b2c56bb6e21e52ec32af11aca9ab7785be9c2d79652e7960c0cf7a8" + "ae0658a89a48fb95cb7028252fa9792d91b989d7cef3fda8ba9c8e4ffaf19269f2a69f0a" + "24", + "0aa8d2e210ae40ba1f9f051ad85d37f7cdea43aad890ef802519cc5773e9a0984fe5d6b", + "1908e3a2740fa04ec0b23c964c4c3cca51c4603e7553461dd02f8319a7ca2ca09d0aef5", + "12d7860d7b438df4653fe40fb9e986cb035b1384464e061bc4ee3bb29aec74d16b0a694"}, + {NID_sect283k1, NID_sha256, + "c9f81c9ff7d80011fd41f2de97a6c1e6a22cc2da7b2b9e4c50e1354c3e139b44529ac786" + "ce795fc501dcbf11a935d4728a7bba44b4e86b5e5990fed4d3e24fa5ab6f303e1842918f" + "156e00dccebed6897c852207ae5941c630014a41696882066c2b296d39cd8658cb5830ee" + "e78e29a00335a99a0ba90722ceca5a2e9a99a2c6", + "0c7d1ac8faa689698f5c6325a3b3f35e7730bdbddabd0693f2bfdc5c838bd62f84508d4", + "040095a930071ce56f28a79a66b751283c756c4f2566ebc2a10770ca60cced6914bc9a0d" + "77046f70021e7a949c7f55b059d4c8e81ee23b13809a35932d83b8398fc8684c5a90f3ec" + "71", + "038ae832c25dcd30c1ee3f5fbe84bd8779c876c0641907695aa598132b0e581ea528332", + "0eb27c86d3ca86ef53aef0465d257e6b681f891a6357cfbf51260dc6e35a82799de0e97", + "0e8207959e8be94e7407543df80d38d9e662106ed68e1456dd1826602c5b73f27ddc901"}, + {NID_sect283k1, NID_sha256, + "a60de761eb32490184dc1d29e21fa33889295ca587b994746874c7289eb9c83e9c7bacbb" + "4066c761a06b65ecd78d701bd41f305cd7eb258c630f3febfbb0a367ad16737b146fd793" + "dab23562e8001cd113135b1c981d1ca23eb3be0fe3e24fe3fe1089caf9fd8f4f0d1f90dc" + "c7dbea4a9e2357793b65daf342b8e6d109c6dd10", + "1a173d158866db0ec665ee632b5fc397893f6a44ee17c348e7452800aadd8ce676e7fdc", + "0406a9369a93e0b5165ac6e692db035495c5cdd6df243d9756098385ad616374ac1e1efe" + "e2032f72a02c36954cd8221126e4eaec02668f454214e4508cf72b6d945e14d9b7c5d404" + "c8", + "0200713a78f58c755db4897f9b7e52057a087816a07fc388d66d34ea9e0bcf2f47e182a", + "11a26ee24610e705a42329f86aaa80d78934b4bbf19314f06eec46067d85c8377e04d91", + "077e35add124574e98e0056bbb106cd28ba8c3bc0c47063ceebbbf2684983a2a0061950"}, + {NID_sect283k1, NID_sha256, + "2cd0320cc73120ef13e83c8144b270c9a1f2049a9250ef7ee83ccc7584025140a51e2227" + "a5ebb824deff55b3affcda63ecb1fd3f337c67c08054dc82fdace0c4bb9cef1bea9dd792" + "635f655363d05903cd6b5ed50ee669bcd8157509366cd85aa40d19593265da26e5641590" + "ccf04672a6df52badd4b99964a8643d9687b499d", + "05523cfacf4ed3b74ebc30f608292e45173001d80cc801f729c5f71fc213b243f041ad5", + "040410751ae7d8bb2295f584ba3d55eda41a80b8520b02bb4e5ca669a1003d6f2829e0a0" + "1e05fe16244f76f0c8b24bd3ca3b53c697097e3ab0e2b44962ea534a655d6c7d80b857c2" + "1e", + "0a634f4cef0ba37c9ab211c57fe6574c67933280c91c8b175fa4164755bcde867fe1772", + "0b9f6946a578ee38433e98478a4c31b67e838939cbf128f023090c4848471482fd1dec7", + "157159e15a2d16da2e913c5ef00833a8e5513ee4e7d6cdc849fd822c59886d0ca3695ec"}, + {NID_sect283k1, NID_sha256, + "a743d8337bdefc4753f937e869a36439da1f8c75e1278c3f6a4a969d93787dac93293818" + "b1cbef5b8636e1a6cb3acaac1e15dbe0841c8001512b689292f3f4805997ae26ff52f7fe" + "1842512a020c448ed01af2a061f3638689446ed5f6bed9fc70726ce4104bc11142de6387" + "3fa7039830223e8f152996388417c48e0c1fa81b", + "09f6bd008c04b8823ccc3ee7d5aca535c211f35e9d9e7cfaec518b98647fbe6d28283de", + "04070019957dac0e9be0fce6abdfc00ca737096ba2d2bea9ba570acab6d73eae2132d7eb" + "060559545f82741ddd1cbb9dab0cd06454fda8abbd9d1eca752e57ec05498b14e4189f1b" + "9e", + "0fe407c226fb15bc63d37cc9840a1a1fb0ac4fc2939fbbcb6e1236831379d367669ffd9", + "0e96e301bf1193dfdd2815597e016e0a282d6e8f9d1d67a7f7e7d05288594f1ea92584e", + "07488687f13c3a2b9ae90536db7868f2bde1529ccdc0c84eb85c53ea979228d1fda7c94"}, + {NID_sect283k1, NID_sha256, + "6a7a3ad614a3a09d2dc5a80204815d0c6471057acc0fa73f3cbbf1801902c3e1cba3c113" + "4a79a8ce61994a94a5afa85ae1a44b2cdcf5153f8625713c872da36aba0afcc5c2f26636" + "dc3f60e04c256a5b023e20e2e7a3f7305bd5b3033fcf05368589f19021f8c9096a886799" + "04b657bbe5b9bee67d6e53d176fce1de9e54c64b", + "150d2812505c82584201e93f6e0cb875d29dc7bd99d9c0f98e0ed20128886e67e1f1071", + "04012c7750172bea15487a05580891aed51bf81548f4b65c51c6c54b990bae8857a20115" + "b003db9e7a17dc8b24ff080d80842f0488f17f7d43a40ce6ffad52c65f5a875b4b33efe3" + "fd", + "0c5c52dfb50b210ae13c2f664d958b2491bfa91ced638f925941234bcc4d66de1eeeb73", + "03887a270eeb515a59a7387d8acbb4e72dcdf13f317a6a93ace5cc98d69a79c64a9e7ea", + "0e922b2d021cd71e213bdb36ce3ebf56a34617d4dcca30fc05f238a1c097e38d7cbcf91"}, + {NID_sect283k1, NID_sha256, + "65bcd77a3ab345cc99b9c1300755288102a6ccf140bc7d1ad25df246ef01fd57a8614b35" + "2033b88cc6ffffe5b38b99ecf03baa365ab5529d6751a3c020d0198561969aade0909143" + "4d84ffe13b46df043d0a61e20a08e9c32b646771fea1b29e202d40aae1c7079873c3af49" + "4ecf6ef5eda855736c9338b4a5c29a086a8266fa", + "1b3fb9e1ff70f94bc9d7742ea535ca982215af3df381b5ebdf1db40c7c849a7978ceb98", + "040769a897a443c41ae7a8c1e45290ef39c40887ab8f4aa3f9ee8f3096921222ed7de457" + "39072621bfa30973da61fb6d363d66db25daf818ce79dd3268ac0520fc99ca7917fa3a23" + "60", + "03fa84ee38587f9c848b65b07c47551e27f15e7a87ed0ab705c99c8b7a4ee9e86a8e4ea", + "11b214ebe67eda2bd6e84c33be05c4373d2536e2cccf152e56b1569cc96d261e50910cd", + "0e100646cbffa016664bb57c1a67108645238573867c0b595c46e6053f844e5482a993a"}, + {NID_sect283k1, NID_sha256, + "ed1acc360d02ee6c36bbc223d91bc1d2009a3e8f8dfc4c3796cd8555b0d2b46716f4c805" + "8bf34c2d4954e098274ab9c2cbacff46a0578a14e77fe104196cbc6d2753e3bb5422b8b7" + "9fd004ac0aa920eea94925c016ece16ed4dea916fd92563ec65692a61b28ee84bef00071" + "20bb1e31bb75b8ecf68406a71af9a18b4edf5320", + "147fa46fccf0805d14c1b84ea59bb8b8283d54ca0ceefb29b5585e7141340c55b7232f7", + "0404ace4c65ce07fe5ec22c560bc553bd791434a691c2d865c52b5e38d541ef191ef4190" + "67076250c829de137b6549d22a12f196629d9d34cdd83758e5daf45fae41872c9b15190c" + "e5", + "18c4f89cc022236a0da6105f19c6661a8325d36fa285e3ca71c1a4af3dccb016cac186a", + "0271b421fd572de8a71d1b18ad2325bc0fb58cabaabacc1f015ee6b14bec49762f1f8ce", + "12e679010ccb143b7de0c3f6c82cf99a961a4f154be6c87abb111cde2d721d864d7a1bf"}, + {NID_sect283k1, NID_sha256, + "2debdb95a21d72b69c545988727366a42b819ca6398a82129c5e3772aea93fac0aae9a27" + "b11969ff0ffb9dc0301132ca2452cd863316cf24ae7696422d4dc68e37316161abc146e8" + "6f04b72d9a27a350d8545cca245b2be43c33bb822dd813d13e08a718f784845df8a4ef49" + "b02529871ec76bb3fc1ba31089359f2ede73e767", + "0fae097ea56b35a517be5480802f450eb832b244558d0cc922cd4a5b40b84d02ef11216", + "0404f6bda2dcb9560174ffa54f13fa5edf17bebd41399a1dce1fe13e82a2b487eddfe25a" + "19076dd375f2c5f24c342a8e2491271cebf5b97ac666aacecc8d693a85ebd2a93eaccd40" + "59", + "05e3a67091b9e10c7fd20fd70d51162e5d78555059802d0c3b133f49b89f37be6a119ad", + "0ddf93ef8797571af3cc9a66660c569445a2b5384f95a12d680c570694bce49bf2264cf", + "02f50d68bda006b88798d87c232f5ed1796c841074f063da03a471e0c00f08b10f410b3"}, + {NID_sect283k1, NID_sha256, + "e4e0c6c8fc01244abf81e139c961b6a6e2d95de5dff1083e8a48b40e3e5b9ed909152c92" + "b1cf2263179629cdf76ae553b58bb2e9223ce4f9ffb5f170f5f0c5ec97294c34a7529a89" + "7e9397f71198cbcd68bb4055cb8cd6b690290761b3b73303f82788379df145358afe28f2" + "997d191d968929b7a4b9a0f6228797dfaa17c613", + "026cd72e6ae19b3f4c53493fba1e8082a8df1fb7da6dc111b47a41f713f49b33f618d0c", + "0401c411f5e298c9b61023fb26765cf4132cc78ed77c07c3e815fd43032cdf0ae8b8920f" + "96035647b4c0807b287014043560d70c9b14651cddff4bdf6d44ead5e87720294ff89544" + "06", + "10e9bc449e8480474afffd20b8acd6dd08344981c4a6cc789c5338ad7e486c526d6c4fa", + "0e81594f1064e018aa3504bac75946d77f9e745673043417a47c0c82488e224cc4104d7", + "111bf8635b1bc3f6cb7f9b685077b38d67160d143ede2bd8b6ae93327d7f55c5317f00f"}, + {NID_sect283k1, NID_sha256, + "04710947b7c90855ba4e59107b919d4a1df22b503c5c4c33b286b6b08e451e6fbef8ba40" + "852f9f0ee62c9217abe6156bed46ad6f0e25f70f528f3a73d099338c578bebd6879d810e" + "6e173c2b0af1f7caacb3531ff0e6a7856e4c84db355d110febdb21c683223eb5990ef203" + "8d462ddb7962bc0feea5f850954943d53041f66a", + "198e13c7d95bbbb6e226688719639bda988867764ffa9b029018b5547850daecf58fe1f", + "04030b511d719217c485866273ffe2996a19e0a670b7a3fb077944a21f63ca2f22fe5a52" + "4a03a4d9a808e8d77c9dfcec6d033139fc33e67d7c8dfd7329c895bfb77f565391c37c8d" + "8f", + "1721f1ad4adf3c32614feb7f8df3374e24f76a32e27854a57dcafcbaaa3082b13e461ce", + "14b2622432adcfed7c2ecd2b52e43be7f611680ceb4bedbfa9dd9af54532911a07440de", + "0ece991128b10399188b18933c0d185e85d111ad401baee5ac376b84c523f130f70fee2"}, + {NID_sect283k1, NID_sha256, + "c62d07bb1ef756b6b2fad355c66b5be086b6dc387b37cbc4a63c841dba3fce65b09d3de8" + "f239e3649382d172f065b78f8a53e0283cf345de06b4ee0b4b7d8611bfce92a7d993b193" + "8419afe817611bc6df3ef74191e7e39ca2339fcb5b5cfee3166d09cd52a1a7d3779722ae" + "c328d326a11bbafb6aa417920225ac453146b9b7", + "19098a39956747de24ded56435fa1e6c30cc2b8088fe9a75f5d07b2f5939c7a60db64ad", + "04068cf5a2023753717d89d12d6861c8411e6081c3158339573dc5598b1700148d00b39d" + "c5076a22dcd4ff4f062eeff83a58d2ce6a1808af8733ae254f5157efa8ea35a85cc74469" + "2b", + "142e4907ce239cdaba562d1fa7305bacff05a75e2927800c7b7ea322b47c9ea47846e12", + "104620d752b73379e1e5d35e5b24a793d7a309685c00f8bdb97bba9876999ed9c763d0b", + "059cab3abb0738d8af4ea6dcbfca6d0ef11b6e591ca109b040347d7d4736724953cd9fa"}, + {NID_sect283k1, NID_sha384, + "e4d8d49c9bc566261d9134d5e237d9cbd6b67d2619a9bd06b7c9c139e091aa10682cbede" + "114e1d4777d9cd67a16b7d64278e99eed62bbf25ec5a5a8fabcb0a3468b0e73fd02ac653" + "3e04b1110d29da3e34f33eaa228b78341b357a5d892a61beb2168c3bd5e66bffe3f2080a" + "1e246f55a41ebf9d579e188d16991aa060460d6a", + "1636bd2be121e07ee83ac5e880cfdfca6a56f2b9d0badff003e872348368c7c2cd96b6c", + "040007acf46ab68744a9baaa33ebf6be20c1c093242b0056bb9885d93a4a9bb4640f17b2" + "ef015415c1b671e98f00c1fa364bd69cf998c0ae140485159b0a341994a4e27000e108f4" + "fb", + "0d0d4886c3500bff68455c41f5840d0313f33ac0155a693d27c66fbdb12791c2b5f8552", + "0256b8ff7d37fff7dcc8cc4461984a9bd9661643fd3a68d07fd30d426d10b8c7f4dfa34", + "1f516f8ed4372780380a798d2da04d691aec379483bc0d10560ca79edaab453d3e77585"}, + {NID_sect283k1, NID_sha384, + "2d1358fdffc14630fbc421b443d3c22ba10ef34f15c6c5bb3c73a9b8714e4c411de69b9c" + "d6628fe2eba5efc4862af66ff916505023e0514f564164b389ea422d0f1beb92adcd65ba" + "f43556614eba25e43852ba65af78f62d64b36696519ef8284ef7316ea52c365b99f63a39" + "e6701f81ad520d7445cfc0113c38ecdad4bf5b7a", + "15e5f555119c19b055b15b0c0d2813068bfc184f864e250b202384f5728bbbda1cb0f5a", + "04013cae2f0c3ba04d039c42cae27de4cf5842a3e24be35d7a3cc7f05083f02951cbeaa6" + "3b05d69ad5b7d64d6b19772a1794562b1fa5c2fea03909bc509e7d47b0e8144acb3c26fd" + "dd", + "1b881d95b7de9aed9fb5ff0085ca4da2fbd413b9b947066c98aa0257142c9000bbb30e2", + "176f9e3c9e9f98b2f5f352ca74310badf9f598f4d42cd2b26e5ea0999ae31e3c678fad2", + "1f2dba4e17470cdf7e1815d30771f352807b38080d44465f86044f5969b017c9059daf3"}, + {NID_sect283k1, NID_sha384, + "d6336faa5c3e838f4fa58626eb353d4cff9ba8f0aa0e6c3d0d850e8b22f5b0f047afc977" + "67f1afe2040b85d4e401ba688a4da7a0caca7fac450899092c4fea789231ba9b07782010" + "720f45d16d353798867dd7fef4a324520014ad5cb32684ec50cab742b750e05db040ff51" + "140e8d740f6774a059feeb493b10d8ac722f23fa", + "190c8f17bdd38669e345440d2c7631d67cee9c6548c4e7b9452377adb9303430efeda0e", + "0403235a8b7981b3ff376b6b0959a42cb56631fbb9f82f1694b9e273e6b7131e758fa0d3" + "700444e5747420d7f5ffd6119ef43b998d4ea4a58da13ff6fe7f241ccdfd4b6fd33aa93e" + "3d", + "0b2a690793107257d7bdc37c492eca48c4c9650ba0d657e6eb62042b16169fbe27f8984", + "168a83fcc67e0c155f1fa2329363729872e254f2e0c3ef85f3b3c84fa3406de4191b6e8", + "18c0f8e6b486e6d7d16b4103506d74bb2021232c0b1638858295a63ca35e0d6d26a6266"}, + {NID_sect283k1, NID_sha384, + "07384a3f650bd270b14ca388a441af201b7767a2d47e9033f50cefd3af8257ecb38f5267" + "e141cbbb2ab7327d8fc78cf27198ca3543d39553e178390bf1b921618432ad895e4f8153" + "783a7ac22f4ca3cad4560e64f1ee4a7bcad05df98ea49a3847dc2143b27c243e48be59c8" + "69a547988e2205358e8db98b635ca21b745df4d2", + "0dbbc2a0409ca58a9e39e33b95fdd15080443c1dbdb5874bee991bd1b127047f08ec9f3", + "0405a687605e54e49e3c40fc5ee8fc014a62d72e8595280a66ce7d367aac2df4d16b98de" + "b3030abd03dfc224f459dccd1606287cc30016be317c6207532a0725c957ca5fde692a9c" + "43", + "16bc5aa29cea64ce3297172f36fe4ce820c943908c21c9967697db0cd93bb8a12e42348", + "1b1fdf26a6eb2d736b8c1ab165af2ac31a4c206c5410f61ac7805a68992dbd62b457708", + "14e9a22ce703d942a4fe2e84a4c1c1b44538a33fbfe904bfbb17af6490d372acae4668e"}, + {NID_sect283k1, NID_sha384, + "824f26dcb4ce0ca020982814d5c727e629cbeeaa818c49668f8f6d743f0d0ad362b24cba" + "c48027898f386889ca5411d7d1f9afc69493b1d9ae4d7b695c9fa0a30bb59e6be2cbff79" + "231767e96cd8bba349fa2f97955d56f05430ab4ebd007064e3d5add94dfe255b6deff196" + "50883ce9966e1a2affaf84d9540f65c87ab1f936", + "05495e6c59ca1873f36b756579632fd47f9fb95b64f52589d70f2739aa6a3bf8cf8c198", + "0406df40d8259be64c8ac64a28359290bd52e843f330a68c2b605ba4f777d7bd7a798e93" + "440458667cd7021b291c3415d64f9b054db71d3fe20f232f2a2286aede89ddaf1ee8c68a" + "a0", + "138f05303ea63bad47c4c9a9d43c52c264725a668db5b631d9892daa1b71f62656cbf73", + "05e35c1f3b30b43cc9d60bf8779f3b31e053de0a390da50ea676dc9722a17ef00d68aec", + "1691ecfb826fef1ea0895242129cc3e9a14e1f84fac49d62ffc0a3455ad9c97becd5980"}, + {NID_sect283k1, NID_sha384, + "07de1e4bb9be15a710a74806d4447b093bc08ed04392d1bd5abb414f5f4b4d9d43520d0e" + "46fc81c2a97e71086b28e53242449ed37fd7ed1c5772dbabc430fcf82ad20437b38eac15" + "820421e51912325c872894452c3f8a10ddb040b35308e583c155c3707b52df467c4945f4" + "e1071126ed46611a3253c297f5cbca9e27f58448", + "1724987c9b698519b6c225cf1261b77d0300045e5fd774dcbf13f285e6bd74512cb7edf", + "04046adc9bd5f0cc0d8bc64f4ba491eae3b7f6fb4229bf94b804807c6137787adc0fed4b" + "2f041375e2c89da41af84529811ce7aef26b983ea8add6e37c32f2b00bd47f23f25e5fe1" + "94", + "02ea4ed0e87687a50dc3acc7f4c089040ddd367d1a3f470a711501ccaad63c201b87ea6", + "1be198a1b6e91453018513902f0a8a085c76a2798a2a0538ede30dab65afb6b9b0496d7", + "16342f87a813780aec006ee218a615c4e1c78c0c759d48d4094639b5b4c32a9658c4d9a"}, + {NID_sect283k1, NID_sha384, + "1edbbbe71057bf7d0bfda922be21a3a4dff57b017ebf6fa99651246cd173bdc9b11eefd0" + "48ea599c1f98e907932aa04f64ed0a007831f30daf186c88807400970904d6090b2cf181" + "e0f65f03b4234aceeb420867812562e47f452152bb1ddaaa48487170d06e47c5e9a7c0fa" + "a4fe494663d2fec22f7665ceffffc214b21c6b8f", + "1a5489091cfd51a0970508ee3e8449081ed175928ff8386592c83043a7911bbc2f8778b", + "0400aa1562c94bd16a3f8a1d6c465908ce3b83ba6711e7d8b0b9353d3c55d13dee213aba" + "700103a789854f63a139e31348f1b2608f1e71c88b5d42809f2460642ff46a470ad85735" + "43", + "18435a6d3bc02b3019e1b156ddd6f3e1bb9c5af70d1a2cd2089e677cbacc21624ec8947", + "031f561b668aeeb4df43a3a34716c4e67232f56959104b7237b26e3c95dd40e15eb076b", + "0f2ddb6e6d18a7393425c16b3e5a5aa232cc48198d63e46a601cd3ed221a8427178a0bb"}, + {NID_sect283k1, NID_sha384, + "db5cf1de38a5187af11c1f0f19a36db52f8417de997229e83072fb51a3b7152a3b383e99" + "19c1b8427582e53d4e7e25433d46cdf01492021c237ea0a87d38c71634743115a6b2aba6" + "6d3faa8003158340a5078171e0bd55a6e5d8c7fb2631a31c1204e1479bbfe79ac70d5e58" + "23af502922a900576f0088a33e42ec3e26c0089e", + "1a45ecda0788fbd7cb7a716dcf4c6e83d4148bf63ed58078690ebd238c00329c462590a", + "0407a1e2fb4e8e79e3946086fa65042362418db0dce51541121c73972a435aecb99f6340" + "23006bb02df9899ac3f207732fa7cdbc36a60c17592af7ce06b8df4255110e26a02b2318" + "00", + "1c986f88ba3d5109c0afa2c213dda8df462282f024cc8efc758a5342a0de91c40452443", + "1efbd9e0d912e170c9c55bfbdfa6106fea4a4e013e7dc26628a1aea4f6b806a51866003", + "0b1347f4f85adef612f5c3a436cfa59eaced5c7cfdbb69444936d71812a2ab2461bbb5b"}, + {NID_sect283k1, NID_sha384, + "4adaa850eec8272d25d76600aacf2cf66e754f6c5efa65c55a2a31b7bc69437d9a7e47c6" + "f51c5da93895a45221f5f92c2e20ee6a95eed3cc7249688261a35d82872284900eb54dd1" + "df6024ec48963ce43e8ed8b8cca8ed22beee8f0aadeae53726cca05443316537840ab824" + "cd1b595f36064e9a19333748d4f4972178e7f5ae", + "11461776c33f20b176dc8f2b0cb2446a9b69e55b6c7bc7457a7fb4639116b452b79661a", + "040043ba7157559659954ac58b44f19262bef9e3a00829c70af66d07cef08ad899d7f8ec" + "2301e8dd9c947b5a6decd1a26fc5d0eecc9605d22abda747fca038571bb37036d9034e80" + "61", + "18b231de7fc499b461afed9b80f4405bc005011865cdfeb25570b7c0ff79b6ae94b6ce9", + "0fb203f47a4e2e9365ce070ee7fd4540f3f7e9ecf69b4400eeded0f5a7bf6e5a5c6d004", + "0e635dc65233f27b8350db22b90a3b8611e6fd1b3e0f515e42fe8788b1376079816308e"}, + {NID_sect283k1, NID_sha384, + "11d212a99c39fb5e4ca0096bbe6c81ae1490e1b8e07374b4e773bee4fdd24a3c13d65391" + "9db663d2c32aa4db140c4ae2d472d4f878946e527ad33b3dc93012d97458f96cb622ddb5" + "6f1ce7c2474ad0d5291dc35545de47b7053d137a8e79dabe06757ab53e26eaf751111bd2" + "7690e57ffdab5337eb6f81889e9d1b1ac729012f", + "025a65f627db2b4d6cf83c5b0c00265b9b63f7656c5e3382139e4992bcdf3cab502844a", + "0405a35e7e0b914a3e01ce3a885192d2ecd27418e09898631de122db0c48e8b58658720f" + "cc0009eab47197d5f56927848855b6ff96db7c36f810ee7c89b305ef780ba8c993d65537" + "ab", + "18516ceafb61cf2c7e7c511a8918bfe394c7fb2fbc40fb3052e156cd4020fc674684f84", + "1892ac13b86ad00e38ce2427c8c78c93b08605a75ca22b3658132dcf9d9df7c4b5540a0", + "0437b33615c16a85ccb8c4769ee7c5f94122d31e2b5fe66291b401fd90257ebefe33818"}, + {NID_sect283k1, NID_sha384, + "9e4ec74c09528fdf3153a0f6955f20c70915ff524b2e19c991ec4c5b41ea9185e3e876a0" + "2ed6f27c9b3479dba951bee8680c4c99be1a626808114408856994be7444ccbd5ef9859f" + "a479b1050bb836034e20c531b4d618f5843fe1d4b613a731895b489a2363f3f5397d5ff9" + "64cf037e9b11e3ff5e1c3d403e5a46b8387c1241", + "173b28fc29f10245221a907778708b3ee62e0480aa9051d4c3eb4e8d552e6aad5509943", + "04024bb9bdef975af892ddc1bbd31314926a9c81f8f1864829edafdfe2744e793c100c04" + "83028ddde61b4361ced9c391c86c28ece9b902c48d14c61684962007dfd69d0468dfd65e" + "7f", + "199af64f79ebbc5b789d4676a07c224e4f6fd33285e5a555ac90cf65d0b669bc58ced4f", + "137d746d515b90890a413685bd9b26a1c05efee4c11a4b40bb621c9fa2580c46c20a687", + "1647f70ab7c68a0f522420893a466940ccf79067b323d940369f8b8694ccc3fc0daccad"}, + {NID_sect283k1, NID_sha384, + "5fe8253d2134c434cb0866796013722e82184638b024a5a30938039929ccd8415c71f71f" + "239c5c5a81f7a9cb493dde209f189bcf766c17c6d9589cd0c7de7f07ff9f24d2320669b5" + "89d084f8a8ea71127b9760b7355b162616afb34bcdcd416f1a062035102e29b70069b2b4" + "dbf70179b8d60bc2ee5a455efd40194533bf560a", + "0624616adcd45e1fdc6cfeab2b17230d73d91fe0b39f4664f3c6891554f9b8e238257f7", + "04010917ef84bd5c0b36c97cb5586d3057a34f2827f239cab2af2e6081c5bdffd48dccb0" + "b2078ab47fe1bd3e28055c688c78e617ddcf6c5060123e9d65c562df2e94cac973ab3b18" + "07", + "0795e229185bc1b3d6d69b08189fdd7a822cd18ac55971e4b35e51838bf12eacbc50e2e", + "185483378a162b8edd6a12f44e3aa4ff829630fe3a1c9ccc66e34775f69bb6a94282489", + "01662cde6cd497be7966a0a77b0626ba3c4b82e20bb3f2e839178a31aaf440aa0e059cd"}, + {NID_sect283k1, NID_sha384, + "db49891838fe23f0530abd4a4fbba5ea970afa5747f6a0a10d2cf4d841581ea2178705c1" + "203f00cafec91d0a72d25448072c9cf7d7ca5580b39f8589ec63128faa95cb0689574a6b" + "ebd515049a1eb9699922cde0366b5cd58aa8f3d3e847706896f7e1cac667fbfe94b2eca9" + "e7be79a810806ca4bf53f219bb30532ca2254c11", + "199757ffaa2c59e198d66824eaad37cc42d49b2e241b6a60382d05e425e800eaaf32470", + "0406ad18bdb3e51cc053f56b9f9c35e2d6eaecbc9749f41a9ffbf54634838d7745ca0648" + "9005dd77c42b31aebbbb46277176df08d81919ee0d9ddf14c3e4c0cccb207bf649c48fc8" + "b9", + "109d6332ceec5ea211f642a746a6ce055986b4a2feeed7e847904f7f411bf8361318d92", + "1a49fe690a34151056d290790a6bfa7b70958e69e9baeb30c55efc61dc5dc4934f2fc95", + "1710a4ba5b404d65f66a8fca2751a920224db0cc0266f7b0bc054069ea4cc51b1f017bb"}, + {NID_sect283k1, NID_sha384, + "29d385d09c1142a7c181fe4b6e6132e414c15aa8605b44208c0399464613b966edcc2d46" + "cf203a3f85d943d8eae658695dac74366224a0d0348083bec0106f5eb8809ae8d07f792f" + "dd7c48fb1a25d5ef3bb9acd40b20c61c821024a9acb2ede321bd2d0dda849c22d76f421c" + "bd8d51565d3c4266f666455ca1c0c3777aa44107", + "06e51381dcf21050aef2e9b97e35303cf3bd91956854ecf9b6b9827871d2efbe8201c5e", + "04052fee805d7938b8b97459b9fcb4b80cbe29f20a9aaebc07ac019539a4a966c5ee4175" + "1d078aaae02974de6530f285b4bbe87fd5d0c9a2ecfde5fdc9a3303e4b988f673c778004" + "bc", + "0b426ebda6628125d73efd84e6bbab6c4c8fcf7fa29ffb3c8d6b0a861dbf81cd18d088f", + "1270045e963b59e4a4f1237c2240a5b26a7ba8e28ea01326fbec00e5d95d40e859d88b3", + "1d721477ee1df1388e1b7f92c048e5759c060ce1291098a2fa647974a62a258a189b4cd"}, + {NID_sect283k1, NID_sha384, + "774c1cb8fb4f69ecfb5c7857d46415568d88f1f9f05a4bf64a1e1ff6d64aec16e1d09292" + "010d1f067c68dddbcde06ea49be2ad3838053f0b9c0c2383edc451ef0188565118e7b3c6" + "6a4fa372b96633dc8a753106283b02d0322df273d58cc9bd061ec219f1e1a9c8ca1400e5" + "e39c1b2c254273377dc98a1a2c44e5c2a5b89167", + "018adcc22cb9a2db64bad3d60f1608c353e091637b948914115ebd43679904f955c8732", + "0400630bdd8937e961d5396f9ea5310123a340ba316fbb7d79bf8573f27a0065c6fd6f88" + "900737a0ac1116e0e2979f973cd705588a71cec5e2a9f22e7e81fc61a4375624f55a6182" + "bc", + "10a0c04762d02f9d3014bbff287864743426cee14daa43b22149ce73d1ba609c0ba6be6", + "0ac29b041a6b95f9ab685470f50445d416df5f7ee06313185794f2b542fcc00606bed69", + "00a4241b97b6ccf0dcd533a15867f5889349ec353395d47e31c9eb6b8785736b3e285cf"}, + {NID_sect283k1, NID_sha512, + "c406aa4295f85c854b4db2de5a7a2defae53a319866921a3673af5b48c85ef22f6eb4cef" + "892c790d8e64530fc20c729b2821b5f5e515560b1ac764106560c3a6a05657e34cd6dead" + "fe2884bd288cef4ca92e1f25adde7d68a30fb0a1b3678156ced62e466718e68e9d67099a" + "d82613b8d06bdda1a7b867c2455422818ae9eeac", + "1898276f159c10d92d8d4b6ae214d68c72792a4b5f1f79936ca3c063dc8d9a88be439e2", + "040394cf9bb273923c88be7a1c49412ab8599e0cc5509926102c122326bc0b34243f7d1c" + "f3072330906f47e8fe95f63d0f0aca1115e77fc702a923c32a16505bcd9021da05fd9cf6" + "3b", + "058772fbb30227a136de616ace4a0334be0996d60e9772ae9bf672b7c38fe3ee1b24f98", + "10e0cd3fccd1728e99e2294efd6dd4797b6492ad95a789aab7fbd177475a047f1e5d38f", + "0c5e0b2d1991718355be14bc57e2d6ff9fa63e0812b9adae69f64da610cc6cbe36fe4c5"}, + {NID_sect283k1, NID_sha512, + "cb2809152f8258660933472c06ddcdb65f6d5221fa29d5b0efec9c2a7914dbbf9ce0a468" + "ce146fb333d26f510a87a6bb01bf8816756a1b5df81c5f65360957cae84ba038e37e8877" + "7580e91c34e2f5aef4fb55af7b81ad28aeba05e0b1c64a15381a6719fd2c16e38a441516" + "e1b394952d984baf9e051b1dc1bda2e12f8ba5b8", + "12ff37c808c3cc029a9cfbb67a5ed21f3bf362b49270d4ed0f1e38fad25ebd79f112a50", + "0400cc00fb36bf62e777a9f6048761e53633b92866158200c43900db95aa1342b5760290" + "90055d7e57221ad939f5639282cbfc203114ee69baab4fdf194f4d2a937d8a57b70b54a9" + "07", + "163d8eec726d01a1bbb19995777919f68689f7c2920f3549fef966593c4fb012a5c3a1e", + "0cbf5c3bf1ee58869e1d3c15a05c23217f1c252da97f79334bc79efe3f5c62164669ac9", + "1fd51644f471ea497b0560b65fdfa2fd0a6cef469021303f97753d22ce1993d1ae5b96f"}, + {NID_sect283k1, NID_sha512, + "e060af96d4a7fe512bbf26be9a27bb6a8ff37547d4a7bbbfa710db24cffcfc760dac120f" + "89f642880db2df6307f9ea5441d5932d49762d182b29d8e7fb067a61ab0df622f75cecc9" + "17e27d0326085d34581e052c85f50a37713e27518aed7c4434f86970e00a0a4b8503989e" + "72614131b7164c1bdc82d2b6aeac0787f9838476", + "02b8c1fef9c6def32b5f4127273ce384b6add4aecec957c1662f52334f5ee97f49852d4", + "04036a4fe1d77bc431012d25ff49fb5468f975353be70e7507d71966a0ef433df51dc323" + "24058d705cc883a690641f0ab85af4959ef4258a7ba9cde36dab77c125a1de1d39536658" + "4b", + "0865f59502382b324e1dbd75db150f342336fb19145fb43a733971da555ac5828a3457f", + "1ccb2e56c02cbe8038bf78dea256704ee6e51054668ba8c2ba11aef4ac6f9320d46ee8d", + "030e662c0e7d47cb3b835c63599d0c9c2e77ca47dbecd7ac834c2babeb039eb630cd0ef"}, + {NID_sect283k1, NID_sha512, + "d235c31f0a82957a087c7597673970aa39321d4c2640685a03df8388b5eae4825d1fee29" + "926f416d5e62a2e9ca1ea7cefffd31607e750fa9675983608e0f8dc895371b190574d065" + "c5c0c23ffdaf49e65362914363a3fffbc2c1bb487cbd4f69ec22dda5c7dc3bbab805c81f" + "aa85787cc176bc0e5703924f395d8c9e7e7701e2", + "0afb1c45e9a9f02942b8e04da4b815498454dde6643de186625a98b3c1c6993abc8bba4", + "04002fed49c59e9d5c09202a5dc29d8dd527a870a180feded66ea6fc94ee094122ae9765" + "6b03620820bdd5910037f5877649be38db3571a9c6ac632602d2013d0d5abe1f00133f6c" + "de", + "1fe749d9916f11100af525ee343b3b74a493f92339e432a482dc8e86ffb5affc4630037", + "120f6f13331cd4d1a5b9707483c74dc0722452062cd4534e94cf40840d22ae263244a51", + "0bc2e37a481478f879de612cf4a833f7e12b8df33f5b0d6ac5f5aa431678ff053e2bc1a"}, + {NID_sect283k1, NID_sha512, + "1a2559777a5fd8f269048feda82c4d9fceca95803f84a813789d6ed070422240e443789c" + "5231d63d5268ddebc060dfb99c4eff2ff115d2984d8bbc5c05314562ea6864fd543e7e0a" + "3b8572c017d8ae3563027d79bbe164d40a5bab354720e45094b9b26391ceb55339592fc2" + "f10b97dc9c2649f7227648f5cd2fc46d78d31c0e", + "0ff537d73a4da0ae3a4894016b71dccef3bc886f3d24a5abb7dd96cf8fdcbdf0fdc5e51", + "04001bd0537dfb29f727f91fb469c31164e1bb0ee192a5b89b880f3fa40e3e5437f0d2f9" + "e106df9bab2f9198494094a63f2ea091f60108449f0741806400694a93702f61fb0351a8" + "1e", + "0bbc511c6e1772ca6cd1cd308126c18c5db498055a4b3f1cb0dba3285f6d38b083e647f", + "1ba756f3c89b732398b90bfa2f92b2a77159c530a8020b75cdb9697c6d75c18d36040b4", + "18207cf326bfe97d657ac4197ee5c20c75431ee552681a92a5815db0d984fe597700bbf"}, + {NID_sect283k1, NID_sha512, + "658c0d3f764bbc952fa55a258bac16a5bb5184bfa76cee06baf9ee6b9ac3f116e08bb240" + "6b1dd4be487b057f3b29c2043ebc33019b2017c4deccb86f50ff15fc9248ea5fb6426112" + "0b1960525aec3cc18827c23291722c5add8a3761ff8516c61956c62b8cbb13f3d92bf3eb" + "45a70704c01bb3625d21c38ffa83a6db086ee968", + "16000d2e879906d1040b32eb6ba3caff700e5565871ac75f10c5c15b509964bbe5e14c7", + "0402ba89255d1c89e42518662611e2efe3b5e3b8043926ae9c43974ee2986185269246a4" + "3302b87762b9ada81bde958d1f9b81246f49098695391ba3b4b3b9ac5727f19fe42fd079" + "46", + "14e837476e628007b2df21b5035a39c24cd4869bb52dbbe13c9666ddd8a7e3eeae29f65", + "1b5091fc755c0f908ee13ef9bee40dd16a5710befd1e265a312e595842d52cc135fd722", + "0fa25f43c3c074d702e45d216e3704d942e9d67b3c0728645ac6c53b9be7300061e5fe5"}, + {NID_sect283k1, NID_sha512, + "4f10001e3517c2c1f973b555f4827681e096d860c4db08f1f4aef8000c9c24bebe59f8bf" + "3d7d3cac959a1a5477bb0ea43f2e746b5d14ed48a58ef35484b0ac786d2fec669f945e84" + "6ad73e6b77a9e47012a951b398941566330d89125eb3c1fbb2f06adb951ff5f047d102fd" + "f28b5cadb4a3e1a10412eb3474d2ed5c3fce78f5", + "019528d505bf0584628d0214bc857150a929d3f59619bf8f3acab545fff0977c9bcdc97", + "0400cc8863e1443e61fedc61abaff87d80450345489728d78c333b36fa28d8754a29cf3b" + "a100205ae70c35396c07f9f96aa7c59cf8a28aa2a365b4a1b68e7414d8c4ae5220c8bae9" + "ae", + "13d555426101fa3c239b7830fe0b6cf08a1c01f9a991f806c84baae20daddf5dec8f868", + "0af8bd9856dfd783217cf81b09b464614aa824b0298f35308e6427c679607853eb66c7d", + "0e6c1933d6ce25d0a00effbaf1db2cb2542cbe7521330c34286cf3bdffc20c001cd7722"}, + {NID_sect283k1, NID_sha512, + "c43ec3c3232cae59bdea7cfaf18a4672035dbd2b8b6b1b44ede376b36cc2d8baeb921e41" + "6aa177f5977da8bf1d713509e5251278b6622790056271715cd5feac58bee5baf50b216e" + "8eb886279c5a384cdb696470275b7487fe9ac4c506706f6b0f9809d1ccb102546a4297d2" + "017c2a8df9f02f30d3d1bd9aebf6a92a02e0d202", + "067795ce117bc0a389397fc22a01cfd9422cfbfb5aa44131938a8c45e48e1d5a718539c", + "04007924de08acfae6260009cc2f02daa2fc2a809e6ab4cd8858a9e9c2c15b17e29f1bc5" + "ee004f36cc2d36df63474a579b96f6e59b890782ad8fa865efd80abd798ca2938bacbf82" + "12", + "1bf3242e75f8331fe70113ec8e14ad0814850bb8cb262c7d0a44ca69de52d32dfcabd0c", + "145148d59c5be2b6d39dfa33e904c161456822ec0ad64b9dc52befbd6496c9303fc062f", + "0b75c3c404d694e086c0f5aafd534e7d8596601f675b2fac9384fca6084711e35149f9c"}, + {NID_sect283k1, NID_sha512, + "9b7d675a3d2cdeb280ea28289b5fc2a3ef6b535ebee8ad242fb031e2e1f364e8ee806568" + "b2f8627c5a5b4f51f4f65c71acdc1152c08b9211b81907b551e0ff47f5a6aca45dcfa06f" + "09bf195d19d7b165b52111b601fbd97b192f62465f8ba20773b1599c8041e91448eac7a5" + "763ca0628f40768324c5304e1119ca6a1fdb0778", + "19269dbfe4184249952a651a507584746c5b62c64cb3b17e0158aaf4d086a4afb0330c1", + "0406c60a475f2a3635fa523e1b138edc36f51e94a34e75989c2cacdf8949115d96f11ae7" + "520494d5e23ba9071b3e52c58b1d0740cf90cee7b084b9ef7a4a7be8aa47ce7b3d97c8c5" + "1d", + "111f4dc771b6ce5cc2f42172d3d70fe77c73683bdd2ea331ff711b7e9d8c3e4f2d7d6cb", + "027f224c01847c52ebc180ae81009923ae3453be1e0d94b5c2934603577f36653ecfccb", + "1e7b771631e5e72b7ddfb9c73f684b93270269ba4216cf3926e43b2ceb49756e7e7e0e6"}, + {NID_sect283k1, NID_sha512, + "f4a08daf8f66ce57a986f14b918099bcadcc4308bcde7c169ce8536a40d94a928cfc0968" + "180a2c2a242c59df73ff79a03687998c421cf9a0e661630378779a4744ae2a6cd24ff61d" + "7fcd6c11a4c8bcaf358075e96f864df0998ee98ee393b37bb38747b70bb7a208740959b4" + "5174a60153ee566e0f62528e9a5e4466186fa650", + "03835814de0d6441cd80a44e40350cc8bd62ffcc81e939a4410bb9c9259e30463c453b5", + "0405ce9f6c979bc1d6bc41f41095b7677cc184da8918265a7f0e5b9dbece2ca9e0667cfb" + "ad039a395aeaa04f5168de809164285974d306e474a610d89fd401c375c9b73f0d23dbbc" + "f0", + "0b714d734d063aa81a389be69c56dcc23bcced3517e330572f79c769645e7dd2fd55c20", + "0e4d4494f91e79f2b1d1c0e22ebf744ef448f57c951f1b5f4da3592fe60008ab00f5f7e", + "02edaa4d8731b598c24b993dc5bb4888ea3c2dfe2807daf88170982667e69b76a8ecfe0"}, + {NID_sect283k1, NID_sha512, + "864647405c70939fdb4c026bcad53218ba1d438d82c9138f0f0ecac815dbfb242307cca5" + "2c84826cf6556c51082a23f14252dfaea43ba229f7493db2bf8ae9cdb0228dab9e25cf38" + "5b504b92cca94f813acceaa1f18de851b8936c4dfe9e4e17002f02dded6b4c231ea5e614" + "ab46fcdd637b8c6193e8d0c2df1b3d883b97e1e8", + "0aee83dbed3b703cb6e60d51e373eb20e298ac005fa6a572d02fa1e6da0345558ad2a46", + "0400dc25760af992a8ecc108373281bd0d246f95933ec943f6346c1b2b941a03b33951f6" + "2206e35f02d225ba11d2ed7ea392898f78ca0deb2a47871eba6cd2be7440a410d910097d" + "e2", + "1df142187f8b27f4888075a3784aebe0fb7d80b0b6d3497a7adbb88cb6bd26cb82109c4", + "05a530bf1135ea6d599928cb0383f5d391d19be333b1577ee4eb6f2a78b54e4aac0e09b", + "06f3033cf392f698d1a1141cabf138c411f4e20687920f2915e17e805e8657a887c7953"}, + {NID_sect283k1, NID_sha512, + "c87c8f3ad5c28a027b28ae5021dbe8d425f74181d519451f1fead7a1f9dd102fa6785b14" + "7b610610cb59bfa91fa363bb79ea602a7d7e1439f874c5dce748e5c320560c2d9676f3a9" + "48754c72b6db249478b7e19c9829ab4de2e344535d3e0b7c20c272f82556a280ef491524" + "b255c4fafb9c8ecb87b0149ddd9d7bf6159e3337", + "17b65c66514019ff935e9d571a4e68e9ee4463b7b9a754b93f4f7741693f4399879fa8a", + "0405bfb704629596ed05096783e49864a11874f319b4020917f1ba700ddb0606e6e72c17" + "93069194592be64c33c2f63771af0e4100d060e9750031048002680541815b311ba8f7ff" + "a9", + "171b5c698175300b95dfd5ed8d3fd7cf4e19105ed7193b6013103555808743501ee8c46", + "13f001f287dd5c7ad9af8d0105b47caed66ede41dc1e121a602610ce20e41af91cbe586", + "1433d5263d5233c40c0ca526b3657fcce8cb88ee65105b5f5ec82b26e12bfff11c8812a"}, + {NID_sect283k1, NID_sha512, + "ac7da7611e2ade20aad64b418a16e02e79ab4894d758550210eb10013a9b5533132be701" + "f8843c840807c4167c38d21dff168d3baa65d5bcf285b73dcbb75819f8d7a20a849de335" + "e19bae2aab2ca560b93d340731f291599a5b28afd7737460d291105cbba6d0290e836f6f" + "6c1113d1b2faf90ac5de7c64e25206d79380a4ed", + "17d2071f39ba35515a8ec977ddd36ca15983e15bcda626f15af61d87d58114f4c80a8be", + "0406f09c255fdaf78d7d341fde4586526fcdec34a28448c7fe65685a67b6c33564ce9249" + "a3024ae4483fcbe3f823a7ce53db96ef2f6c68670e107e68cee4f358dfa844112d6b2144" + "e1", + "1403078da10f55724fe7b56dfc55990507307386ba82ca8f6340d33769ab1f6ca894bdd", + "0a54a35767a1cc77b2332b04694404fe5a31ed8851ccc2abfa5542b0f5acd9be9b1f02e", + "0577e0a1937172a6d45177c2b328d72f75a08a8a774a31151b89fd451d531348695d870"}, + {NID_sect283k1, NID_sha512, + "5757c472fa2f81430dd920f39b61066a28c870b80e6c96f822f8f19b398c3574d159cc22" + "120454dcd7e97be8211916e4bc8db365b2dbb99a6e597d06e6645046a0abdccbd06741e9" + "c0eedf33cb78d78a540c2a390719acc498331e694e6b0118cf4f787b51c7b7237458a614" + "9d6dbd0a08bae8097e919f970fde920485e9a0ac", + "11504659e12235855fe55220287a101e511d39a627f8a0d414446385d4a88f31507fe74", + "040192fb9bcd157c7ef385d48470c3173ccf1ef9650da7d680d8473d45ab2064a073232a" + "c3014ddf872b711157d121b0a61b88a7eeb7cd260f1f82ec5f62fa2681e28c7f2640e305" + "e7", + "17e10962721f041946bb5ffcce724c9f284b1c8970f974a069c36dd4391adb8cecb8bde", + "1546450d25e2536aa14b8751e3b3e7eeec8a6c1cd967ba0f03e6bfe64c0a59072280636", + "0159c8d6499fcfe8ac7b2e84990a714d7888d883c16c016c4b165f36d62c3493afa67f1"}, + {NID_sect283k1, NID_sha512, + "e350383d04af0f4081bf09b95d1d53040e7acc64e56b13b653df31dd119617b800e0cdfe" + "b935dfa5d94f1d7814688d8ce41021810958759cec76560e1e5c0581456acd1a02016584" + "9b2203f1c11d318d816697f36a86b59f160faeac7dba71682d3c031d0d547725ef69cbaa" + "28345512e38b75ab011911d8924b2d17a857a96b", + "16e4cbabb03215767249ba2a608708b78d7387be9e77f5efd2462467fa05e8dcde2c036", + "040112b7ea5d21df8ce52772a1b76a52ef6f0da62cb7718a467a034618b7ce701a05cd24" + "670649e0ad181437b4eeec87e202d8fab1c240f9dd9b31311284c24d89160b1895be5413" + "19", + "120e4bce412311d3e7adb36dc11d4cc1da8a4b9d6cd5219e772b3dc2b2b8ce08833748f", + "1ff2d53a8e6c1c23807eee681156a146e8f2cc1a8c262850dc69dece31860bf094e7f73", + "1e8906c0bf2a5f922ca271def90d704a1425e5cacc64bc5761b000c7df0f8f9fab51f2c"}, + {NID_sect409k1, NID_sha224, + "f153cc61981a46d8a47d17d29ec157fa93fcf644beb84558db7c99c57fb131dcbc5b6558" + "1ced5ff0b29bfdc66ff703ecdd4290f7c353c02a3e6d6867f33f3dccd1a0b6752b8a35fa" + "143f8921a5078af9c85b212564c5b795da9858c7955095938fcd10c21e35e1abe905e84c" + "8b4bc05f2a06091ce876d9519b96951d08c7ac9e", + "011c6528939672bed3e8c905b7ba594c3ce95f37fb28044f210cccd01dfdb42c10e8e1a0" + "b5d6fc757834ca7f08e98cbc52b0edd", + "04000b570ec1fd09d7b4d102f83cf37129d94c9cf2f982b702c5d1172bae2df558008518" + "493c08dac6f76a6646156f123c4f33e79800e3cfe1aafbf25a5a4536d6c0cfe13a540b4a" + "3c97d4e7bc6c0346addb4b0c32dce089a7a5385e8a3e67606b45e2062c642bbbad", + "027cecbe83853037cf46aa98e1e1e552a96af0bb24e57756d8239fea5d769b51b83f195b" + "7801b562259ee644ab4047764d130a0", + "06a1601e07dfdff9d3b4ffdbff124b717403490853099fb4a00ea98f84ddd64e908f99b4" + "0a2ba6ab88b2491a8d948fcc2f207db", + "0741d27c0dddca3641b56ba1e9bacb0da1fcee46b9e33ecc6990b98cf0db74668ef1009a" + "50e5d55f80e6642ea48689a529c8a08"}, + {NID_sect409k1, NID_sha224, + "258c91524423b5c876432b1930c7b07b56eb5e3945f1e2296a4e5bfb9b9123f800ad195d" + "6104641b1f1970bca553c2032f83d17252e52403a9381c1fc18eaffdf026f7537aa27d84" + "c5e3d6e39e651a92a41139cec5181fe794457f556b390943093be719acd23fa1ddf7ff0a" + "af0479484a381a309b4f681af74bf97caef08c22", + "07e3b714496dd118d8f3f597961eec5c43d0265bf85723b0b9b0616977e0acc2cf686cb6" + "afa6cdc19114e27ab000e762dfe467b", + "04007dea0ceb73b9bfaff7147a36436cfa7955eab02ce7fe9b60dcff3e088c5c9281be59" + "07de3e06ebb2e21dce8bf3ff85feeed50001cfa9b30af20612666e5df798f91eb4647d8f" + "5e1747c1b18adc6b73a848d987434c56d13ad78b775c4096e9f20d4878bbd9572c", + "028a8353c05129dcaa7caf0343130bf2e2186b9cb5ed0a27a565e1c24eb882617cc299d4" + "86be76fe0f8f3c52678b6992288d7c8", + "034299ca2aaaad51f12c90e8205da305523713516ba6e7d245eed8ef94a1b2409b98ae93" + "476aed6c9b9aef50406860b4e490db6", + "01a1adc76c65d77ea686d769dcd007c0101b4cdd0934402fa47dac22f8ecac28fc05c2f6" + "763a6781655ed5e7d84c41157255a4c"}, + {NID_sect409k1, NID_sha224, + "a16a0d6fd57240fe88c7c36b9f7f9040cfcaa9afc4beeb8300818c5f90cce73b819a12c3" + "1d42af33146399cdfa4ed4954d068dbb0f1f342269dd29f1fe357e7224304b67b0f924b7" + "94780fe7e6aa9dfa3380252fe7177b43e7b1789718949b9ec1b943c83ed4399491482f0f" + "59d2cb8050ab6f8b5854d76c50651428cd29c40a", + "0182d1e937b037bf7f84144f7d4c94c935269c9aae7d500aa459a7a0ec113b232dcf2829" + "08eee4c84b8106cd38cdc41db3f89e1", + "0400bd4f1ee6a967123d70d488dbf0fb43aa5e93dee5794b4492277fe559776f74075485" + "0477e275cee9f1c375403a4933dc9869200191a544b98ba954cc6e060ba26a52fecbd1f0" + "dc7c15381004cccb799a9f7960a3cedd02d36fcaeb0ceb844bb4683998d776dc5b", + "07904af733742716366f8ba07086f924697ac8a01bb4895bdb5715081ee89eaeafbff4ce" + "c44eb0ce14e774dba71bb9b091d2594", + "0723b2068957c4f2ac1df69378fc013797a3b071de30b514c3e610002dc8bfced32bd2f9" + "e8f692b653e736696cf818b0ecc1e10", + "058455b8f9abd5fcc28a4ef839ac0245c3feda1fdcbc3c171b6928c6abc931e8b0ec3438" + "2d63e414657e9319d2965fdc9eb74cc"}, + {NID_sect409k1, NID_sha224, + "d02ff569828fd1add21f6bd1c50cbdcd09222e458ee79fd5dfdba3cbb84e9d926fcf196c" + "ccedece77d5aa17f8c8cbf3a9facf0f02c71d5c1c8aeda9d75f6fd7b6f2c5c70dff992ef" + "6e02c438fb3c66da5a503b3c39acbe2a069da457595b542190d818015d462670b0807c40" + "1e36b1bfe05baff3a8ccf8d1f5f8de7840e87993", + "07ed09428f460724c8a5225a31151e031d9949493fff5703369c401762345d002c4ce424" + "294baab22d9e71edc4f854510cf0e6a", + "04007fcd003a8cde5503f5582a42738738ac7efc6cdb3813a00c072fc114006be9881c0a" + "881ca35988dcfb8088f3d07a03943cf23000e7041e666c1bed3b80a691ecff60ad4afe3a" + "544ce58030bbbcc130045e2c611d65f322ec78aff6757cb5df8ad54ee8a09616ea", + "02828c8c4bb1722b0f03262de32ca8a605c4046badb20d8eb9f19aecc5c69f199aa48d09" + "b61f285254425cb4bb5e0763dd471bb", + "06c99d796c5d4fa21c5cb7cee0b7570edc9d7e9d7c3604f5ca3766b17e44bc71d8a74ac2" + "68b8713cc2ea0adc3dc1971c062b4a1", + "075962e0ccbda2280e502559f48c8d37704964f67f8cd3b443b89be740976f1bd929c175" + "560fc8cfb282661c0fa792a5b200401"}, + {NID_sect409k1, NID_sha224, + "57befce973b225cfce7f996fa5a1a43acd160681b88a87b7de04544eb7b6a719718f1ca7" + "f559b6531bfc18fca3836d2be7f7a6e48387b7579a6845796d30e46f0dda9d82680f8c96" + "c5f0989741adef9762c3db763cae2699cb6c112543635e20ed5cfb4b55ca2ccb32d2d139" + "36085a8ff95ed658a54be73f80c912ccfe5f0ca0", + "0390f05b9619c27b800e99aeaf61ef7f6249367d5cfaeae3c7b523a8b29153eb8a77132f" + "6c4412545a842d6deb7b7aea7e2bda5", + "0401cbcfc492a2a6bb8a7341df67ef2bcdcd706afabad5e7ed1d63387ad9b0dbc47ed17b" + "82de6de936752632e43c393a93fc5cec0e0111768994b2dfe9677d9dbc45d4b55fbbafda" + "aa2b2638ba1605c35301fa557d628a87d0a7febcad9f8eb4b51fc9c807652579f6", + "00b8d236a9f8edba7b5207b4c7848807b933b214fa25cfc5a0e73f750d30051264bb9f67" + "02837b0f65a451d4ef24f047ec4e9dd", + "076bd4755427fda22a0f177624477c59de12a12621aac274b980b5e1ce5dc700591eec13" + "dc5bb48c5c8643de287a07a48a6a7fd", + "065a5b0a00548bcd7f59518f122d79c7552ca6097f3867604b462201add5f326807f0e87" + "79f2177f277e5ed25253885ca81220b"}, + {NID_sect409k1, NID_sha224, + "4277ba40cb462860ca722cb4ee71c61836d2ceba18bc91f3fad7dea478972c6da0ebc028" + "15eaaada1d1a5e93d7ab353855ccfdfc94a5742fe18daee2328871e06c1ab0a9a989d123" + "9df2d2d27f96c415e7ef9a941f06c6790675361173cc229aac7045f49eaca207f59c4976" + "19ba32e932b5c1c6576812ee5b146e2cc7de5e62", + "007d18652732596add3db31f7a0ce6020d03f3df58131b0c7c633faf619b8210cd309d6c" + "0c4083aef1a1b6d2a756adad0bfe344", + "04015ad0682962b4dfc8901a0dc77d548ed616286733cd9b3ede937cdf4401ab8b3e3516" + "d466ba43b6ab5356c4e72845767d55d27c017e4de3288ed44b48e7c47b16e2afb513c976" + "3d5bf4cbf9a357c128c94a758e3ff946957df461531def2b8d8411b81f45f0c2dd", + "01a896c30fcfdbe583d6b0119f467f47758ee01d4d601eb698f444ed0f76515c2b8053b1" + "1ae7abd0eef7aa61145a53d12d560d7", + "053b1cd57dfdd8d1802f3e295e450a155c366bdc2bd222d18a4d08369c25e53f1f633958" + "b22d80755ecaf8362d548b28dff1ba8", + "069339fc6058762a99576a96e76f75275f848102bcbc281e59fda26c98fc48a3f1061755" + "e80740a233e03287f510f4549bb1874"}, + {NID_sect409k1, NID_sha224, + "57ff6792ed4b12220d179bc0ea57ff217f322c85bd3676a681d32d7e4a3e0c8e891fd267" + "df17caba5992f68c35ff670b60b4bbdfff82404f6ed996c30539bc395120f97d4d7a652e" + "aee82bd8f9360bf8bb73748b8bbda9f9480eb54f7eaf2609d4259329e8a5ea020521e7db" + "d3ec56f23c849932cbdf2875f5d5c774a9d6b0c9", + "02a91244ea4623b63403dba807d60b914ca3b901a2523244c322f2f11251446d3f15e869" + "d086ebecfa1a39ce304e8b5c8de23e2", + "0400b7ad8f0a52ec21e54e28ef603d76652dbfecc7dd2427cfaaff3d280f0d1f62187d77" + "effcb433b5bd44c3d0c0d26c38d3f5930e0080641bb0163130be4444f79c500ceb8d6a9b" + "2cac42d21d31b2fb29da075bd41c6613f278944adfe92d3c99d494be9d4714e9b6", + "070125c89a1262a88f22e874c55ed149de6d961d6abaab2d13db9174e3cecb8f49752995" + "7058a0afe5361ddf9d3a5a3b923c7ef", + "01a28cfad13969c6449e5a0f879e01ef7dc1cdcd0bc77d20f3989c588a9cad12a4b52743" + "c12f4f6e2154ad963bf234ec96263f5", + "066d7f0b364a640c6c620e3d030448d155cffc9ffd46a6adfa1c13e1b01892463a472446" + "5aba3eb07009fa604f3af18109cb72b"}, + {NID_sect409k1, NID_sha224, + "f85113eda64478f460b60f8084220134933de049200a5f37884da7901471542e26690a5f" + "abc3cbf9e679ade71b6e54d869bc136c3d34cc4a9efcafb777abf046b5ae5429136112a9" + "a36a475121eb1f33f1f43481286fc1ada98a41064a1fa38c89e99a93065bb2a119348a9e" + "452497fd5a0d2b83a66b09da9f47a0583732adf4", + "0068c56c6b5d50d1d4e13d3837d8c5e8ba2f825e121b63e97603fdfe78bb6899600ff0dc" + "87b6b3b6868ad0d2f62b7b7a31603ff", + "0400d9a4f5992308013573f97864c23b98d276975d80cd6455e9f0d8a62d6674f3aee3d2" + "7dec15903da4e9d5908cebeb765ee02c80001f61189caacb05dfb982bcccd603a769d0e1" + "be8f9223288b5426e7f88854356fe825f11a88918085692f33b0f4c61ab09a861f", + "02ea7f0d81fbe3d4c865ff5315d1cc38f9e9a8653fc91dbdf445b62fe09b30ccddf50878" + "3ad87c8a48a6ccd5c9e817fe2977f90", + "02d7847479c16c4cba834ce5962724f185be06cc04a9a8d710cc72e6063a7b64fbf2694f" + "5b62de65d3d347d34c0dbfd5a4d93b7", + "069e32bb19d20e873d0e62b306db4d5663576e4b2fe75e8ec79b7a63f38c8f1007a817ce" + "30612e8578d48c63b04b1d34904010f"}, + {NID_sect409k1, NID_sha224, + "42811e9ee6dc509572e1cddbe5baf00afeb0c5c13e3755b922eee9e210001676082bc9ed" + "c3d78db2b5bebea7a2c0cd2b369226c2b8f83b28f33fb513407ab9d287d14b112d6c3be2" + "493805ace5cf6fd366d03cfb28f4ce3f0f060880db64d6962e997463ba7c05b6fcd1e66b" + "abe4b94afc5c2d38c7050c69571d27b66ef0090b", + "03c88084f8b78446db431bd6e240a0c050813d2a763675b0ea869cbe183df697146cf29c" + "03479af3d34587a95cd257027fbeed8", + "04015a09436de00d8d129e297ea60e04b704c0a8183d64a77d1c527189e25e21d6bb62be" + "8ef5eb2dbd833e5f9c7d5c3e69c9c018820001c32ba376d2e9de28fca644b0d567ce1f4e" + "f0aaddb2adec6213d03bc8cc99f9140005bed3cb6c3c0f5533275734aaec47404c", + "0132f4763959863a32919eb591799ffb8613797bd0b617c73654ec9eb32e2fb86631b66e" + "28e1b4cc4aeba65ba8c75aa1cfacd73", + "05fe0ccbd430d9459e0093cfe2c1d1d3edff8c1ae7111299d2e04f414c46ed2cc88ce9cc" + "9e23e187e87ef551de993f52214d609", + "0557acfe6347baafe031dc16032c45559693e2793d9b6d372670b09757c6f4a3e5ae5e55" + "264137d1859c8d9f8f03c25de409bf9"}, + {NID_sect409k1, NID_sha224, + "b38f76ede7441ae0887e689d556f43155b38dab7cde487ce9ef9a46f2957c830d4d28006" + "873fe2368197a6931f6fcaad755102686a457a7edccc8d344e2d2a9162e3d71d41c09a02" + "2539ae6d404955a6ad748231aee1f974d4f159940532fb3b1fa0254bfc5805d2fc686968" + "56fadea386c542d3cefd1be3af04ca595e54be25", + "051af7b63bf3297ae20517faaa1552f4fde65819dbbff6a52721611e5b7dc1242ed6e697" + "68cdc37ea8cdfd1a5971f06b84b5803", + "04009cd1280a2a79b182ddbd1712dbfd12cee3345a89636d7673a5fc3e1e51400603176e" + "27d538e90005625aacf5cadcc8a8c25532008b5aabedce498476b4c65ab3cdc81f819c2d" + "b670a7236c0357a86f9087b83e7568cc6e5139fb92f81975756d7dc4f48be87df2", + "00bba308a3eee9e3ab6d2482bb728bf44cde9eedde15af7300c57c2c1e6fed2ee4e404ae" + "ee3923e7871a2ff4ba6df64f9d01a87", + "07a9e69664b7b81edc5d47c014696d194b2ca4705b2e79af692b285ec476169d041dd9ee" + "f20f7d496fc49b8597574d2602757ca", + "01521d7cf6aeaf1c8dd54a7776cfac02967983083770346d9768a2629d606be90d58ea82" + "377413a0fcc3e4e66f05a0d05d933ef"}, + {NID_sect409k1, NID_sha224, + "356dc86cef7979148e995fc5abe2b14a7d5e4e42c9b3509b4363bb80c581a66f4e7e4aa5" + "3a4bfd37f9a7eccf75fdd726f348f6a3f779e6599f61bd1d668517f40453b39bcf35db08" + "52a6a6218198f52b7ceda2ec55fca5abe8e5d93af9a42b9ae4de9530c5870211bacc27c3" + "9aa094013db703de2fd3121f08d7e97dbd4e8946", + "03d65bdec48972d03811b78150a06956eb22d337dbec5416bbd8185a6322cd8c0ff80002" + "10dbd1326422289071cab65175f5d10", + "04000c9c1bb0a80c4b4863d78003e21ee60fc553ff72968c165f6eb6940250a6cb7d545c" + "6aed3760e42370df79b0d37c2d1433c486001a9d994828ac09a86c18b9758b3f6b91a577" + "5931a7a6e4d8b052204c972b993a3b420eb8ff7e91df77253a9f5847c5968b5636", + "0156d12708324cd30037753c78225d183723d3f15930f23bae854f121094bfffb5d7dece" + "1fca93bbe7457a2237760aef3db8e3f", + "071466e80e2a7cd8e6cb6dfde259a08619f880a71899c58bd4cd33c29f7b321d26953372" + "0101f2ef70f5b8e8f05c9cbe1ebc303", + "077330e08712ad709f855d92355cfb7d565efd806c6a853712916f7c943bfc79e496366d" + "eba79ef7491abad23086db341f339e5"}, + {NID_sect409k1, NID_sha224, + "06fd39a50bf25e89f1071ff81fec5d1e35b6dd68990414ee403dfdebb792627b6a4ae3d2" + "236c159e4441ff90b61ec87b1592c538515f0486b19e58583394a05e6411e69b4285d6d6" + "589982ac0eeb2c912c4948789cad741183663fc070943389d4e9a1150b8f6088fc506059" + "15e9e24b2d98a1f539024770e4820e14ae42ea8e", + "01f1a8b5f35dbbf82c102df550c72216a243f986f0325920f6186a16d1da74228cc02be6" + "024c7411160c183c923c743354f9438", + "040157ae8d90fe2416f70a7ce0669acdc0b5064ba650cb5416e59e6672e45b591774ebb2" + "f793c3a58e953da1ac08272d0b949e7b50006d49b9784f8423812967b857e25dc3af1312" + "a6ff29579f6acb6e155b6848ffac6fbce51bd2d41a22ef955f690e2487a4bbff00", + "04cc45e00847818397c6abb3d176cb8bd77814abfc253e3b0d799dff2c3e09a5195ed5e6" + "232873f2783c8e670b52a839e06bc30", + "067b418a5395216b83ab00d5568eeb62ae0693af2b0e4d052c6feb70562dcc06ef852002" + "687099dda114477871b924775e8460a", + "061d1e4d713689b2036272ad41571759b52a78e0f8a84d1f3a277aaa33ad558f0b71f3c5" + "a99d403e49df1afab66059db20f9f32"}, + {NID_sect409k1, NID_sha224, + "6daaa41150ea252a3e966a338377307d909b95080e006f13027f2be5059d9208930c5a32" + "9994c0b794ef50eb059bc6c215f68cf42260bd410f9bd86d2ad5ab7179c7c92de4a93a5f" + "6aa17de5aefea815e7c0b78a8cc53c21dc4dee037b29c9df4e12343109283ffd5d8a3b81" + "fba1b5e95506c7e01ac056c86dd0ee23bc21af0a", + "031dc621200cd174193d95e9092ffb86189c52cdbb9ed937593f2cde7c4a0264b9100e1b" + "8407336c8dfb5520d28a18dc4e39a89", + "0400904bb904d50bff09bae5dd21f425c808b41001ac917b022f7e1cda6e46504781a69b" + "aab4a6f0f100c4fff9ced26f871159cd30015cc300b0efbac707635c72bf855de4290f1b" + "8b70c16f9bd0cb771ed5c760ada04d0ff648f118d64e0aff6a6de16def15cf7437", + "07e32b1fc1cebeec3d84f56a67c8ea2b78723e7010a725ca4745e849e573e8e4a4ce11d1" + "af4ee508b80fb5336de3cb53161bf44", + "071cd81dfbacbb67be5903cbcbe402c0420adfa9d14148bea600b178fd06278572d34eb4" + "6d857085a2a4f48cd4ee9109d607dae", + "0347b1029e67a6ea2a45af1f7410dc951db813eabfd3c7f3e2c294b81e1c54fa8c98569e" + "fc580b68007bfa316424ac6eb353ac2"}, + {NID_sect409k1, NID_sha224, + "6378dd1c12c5197b57d47dc46a67949bdd1e0809004e94d49b0234126a08ad5bf8723ebf" + "d132145813136d8b7dd096f56c34248f09a65c34f60c2f80f9a51b3795f3d2518b11aaea" + "f6dd45a323794080b78f85d629e5fa719b6ab0b14c78cd908befeaef0dbfaa08cec9318b" + "bcb376d48b11b68735c9554a45293db5e9239ae1", + "016e6750245a88340b0f0665b890459f8038e9b1366f2fc1326245a88d4c523ec94429f2" + "1869ce3dbf75126e58f77241c99efaa", + "04010184fd47e8e1e4d534ca1cf67f15bc8a80921b07e251c22eb88f25395e08d7a92837" + "74aed204fb5c14aa13c63a94ee691b4ff401252ad972bb8c0b286c222f42f7d42ca6561b" + "ac5e517921bda53e51043f13e711da8a813bb6880678e4d6a16820bab819d62e59", + "07f18539d00152f5b9a75d4f114812b87024e8a8f9c9a8d12139d0a74d87986f4305bde6" + "0375918ff2dfdb88b6deda640e17364", + "0735a15e7bd1f69f4e90739d42ae239a8e9238ad28b63ce291b57cb5b99922fbd5dbb7f7" + "4fcc23117243efbd036eded6ee0f28b", + "07bb3dc77cdd4138a02e2d5fd4f6ff8516b4c95b8255c629132ea8705c399fc60f8fb660" + "ed3aae52db283aabc3626a5559dfe85"}, + {NID_sect409k1, NID_sha224, + "b898d0f9bd80e083fa541f457d14d853bba55b120424a95e1d9511c8833f48444329e034" + "9d68204c4b4581ef1c4dee23ed0a4445727a72e1e6cde422f7c10ae132a3fe681f9d741f" + "da263e73f7cdf10759467c9d76164086abf6780ad474772771eee22d195339bb8f6235e0" + "d992bbe282b13ce4fe01417f507a2c4fa155e108", + "0788fabdafeebb72f6385301e30024b56639e629a400f9c50d402cfc9b5817844f06a451" + "fbda29c7ece41dc9ffcfc625fe0ff0a", + "04009b2c36d221d18189e1617cb2f2ddcd64cdf8a42ba6acc55f04e9722b11588f7fa861" + "a3940820d9dabbab631d7fd4106c60f37e00da099cdb10dfe2d7c0a16ed332b459e7be31" + "f44b0b2d595dc948f0b073ac4e439f24f215fba5ed50aef3702731d6561eee1986", + "00581369aca680beb705f52b6bef075de83ad29034c3d6b2949b551a0bbd100897a079b4" + "9d41d5030e1a6950fdb14d70dbbdb41", + "04f62415c99c8e6750f9c41c31cf050eb58f61f62eb0b0023d61dfc30e7879d4f5a87e88" + "faf55522631a29fb69d16e15c354323", + "06df238f34b5ae664860b43ea11defe3120591cfa371367096006c03e83d372bfb70da6f" + "789665136b7dd1c59894a2fc5038c4b"}, + {NID_sect409k1, NID_sha256, + "dbe04561ea8579672a2b3afa94426a3cbc274b55263989d41a778bcb082da797d84d930c" + "a847a481789524940701cd5f1d11b460bdac0bffb0b3a3abe1ab689c519700de85a0a571" + "494ba0cfc3c865450eba7a9e916b7fa9df55e8a1c246c992e6a0b44b78274e008472bed8" + "d8411633e6520e1a906c5d0c8aafd572fe6f1f64", + "01b8dfd64563dc219d6eeb53f2e3ad1d771140d0960b211dc1f757af5e297dc7548d6133" + "ddb574711d466688f80dbd65a7bbcdc", + "0401ec530638ea0663cd3a9b237dd66402adf50d3094391f2343d7d6c52c1d14145c2454" + "64a3b771e4b1894462fbfaf440e53eef7e018349e244b24c8353811c29a60d8e02caf195" + "a424aeafdfd0361846d5ce5eb83da1901700f00fcb85a0c2543b49a8a3ccbac157", + "026a26cd09c9329cd45ceb4c798846dd81af67759794f5cadab84de19a835f8a0ae49b12" + "853b1e92822477a73891f85acce4216", + "04d83a5f9dad246717135bec6e386ec6b73be9ea6d1a17334ea2003a723d510914167d13" + "6254d6cb64b16ef7eec5044b8f2ba28", + "03e81601d0c66b507a491c530075edc5b09d770633a4c2355b3b1c7df9b200ebc7dcb706" + "be1696aab70d4c6e1c4a7e532284670"}, + {NID_sect409k1, NID_sha256, + "48a8300820fea2ad83c83f7d6b24192715329c3f159d56644e11ed25efcbd3d31600a813" + "b909812987b97d1087e74a63b4494cc031c63492b6615e9d6e5b36f62cb2ef88b9f73659" + "5800de465789f43811165a5fc093ee6d776008739de8de2a84e878748641be8bd52e5b89" + "1c4145f52bbd46644852a43108e93d86352b2a3c", + "0422131829608ff730c24ddf7e8b4a2600eaa9681eaf45432daa7d41fe2fb488fd0199d4" + "31a1ed823801ce21f4f01a4dd4248ca", + "04006ff24eb0ab812303bdc9a23719caa789eb75775e686b9511bf6e07d60447d1601a48" + "ae7f3041cef5aaf3ed2adb6feb422fbc54009a351fdc9422a81ebef5407d0d74b52a348c" + "af3cf6e1c6c2af722c408941de154619a1d54bc23a9dfc0c4964f3936d62daa6a4", + "0313ec63c34ed325d770664aed3bfd1a16eb636516eb686e806b0acf6f0d117998b30fd5" + "2068a36f03d0db3ec13e6989c6f196a", + "0088167f96d807bdd61e65fadaf0c56b623db42b831909d12641e4d00e7bca6077b36cfa" + "759fcbbf087c31f294f20a09e0bdc96", + "01cbd06232b4c73cdd13208dd254ebf9351745ee6196e3a94b9213e931f141e4cc71f3d3" + "18a67e7b8060e11e88783fca0be41cb"}, + {NID_sect409k1, NID_sha256, + "276e3a986ce33256014aaa3e55cc1f4c75fe831746b342eadb017676b0cba7c353b3a2b5" + "54522c12e6aeaf1364cd2eb765a404b3d0aa61258194a30219d76d2bfa98ad20e7e91756" + "cf65e50d7914157f283f2ba3930c0ad3a97532cc747b1cb9c806fff497f0322025a3d02f" + "f407fc7b5808585b91d95523c9d5864efdf7d983", + "0095ae8e4c7e55eb5da01acc05ecfe72a4dcd8ec152f1c8dc165014f70eb4e4a7861aeb2" + "b96c418b2d4db58659e76184e013a49", + "0400a3987d7262dc30e8ec11458ff7091ca993bc61f142ee535d544a2c88a47f96011076" + "19617a5e65cdd6d5e1a034aaa22304434201fc8af29d5134ca9baf92041b6d6aefabccac" + "a4013c55c1581ac05db6141290235ea09650a289907785d282cef1b9efb381ae66", + "066015a77c99015ed6983bb379772bd90e03b9c010e695853ebf8e461a20fc12b20bdda4" + "7eef856f162dfbd9fd4fc1ec49105d3", + "067c49b96e5bfb6a6d625346c3ecff13b8c8b7e59c764b73b256ac970aa4056460000e59" + "9a8195f2d235a75cee8e5634acfa7ed", + "03ce25ef1af0784645f0579da381542f5b8aef377e5b79193314f84853e2a07a4f1aaa4d" + "8210f3a3c249a879cfa3ea8af43a929"}, + {NID_sect409k1, NID_sha256, + "6a4fc1827c3a7256faa8ec6a0f3d23559d6949f8cc20e7f76111dc4ebd59213951cbf0ea" + "dacaeb8862d6baa0cb298645e4314b1c303bd0d5e9893304d4b7fbd36ab05fb6a5edc3fe" + "f763e3a4124d61539eb616b359c5cb55b5e2bec50c91dd95fc39ddf521aa854216eb5a70" + "7819fa6f067b316a17a3b146e7cc2dd517f7d63f", + "006f2075bd730f34df111ebda919167b1d3358ada32cd6747cb3353bcfb814a77ac70cd5" + "1b31a0e538539453bf9eaf9d8b384c9", + "0400bbc153deaec0bcc36c03d24afd20dacd9e78d104d94c279278d04b597ccccae43cd3" + "e64c9e1e58fb5408f376dd7827ede9dc3a015ae0d803acf12d9d3fd41f74357b1c93cec0" + "480f2e586d0e18f15e569d27d3d106e192ee0c1c570351eff1f463dc07d3bea933", + "0314330098250e38145d11a48f5043190c6b44f8572ae57cf83b1f3c4c03ce38b90ed5e1" + "57464c2613c82943d78c938fcde89d7", + "0160b20c370ef4b9cca3f7dd3c23f70efe6bd80751ca021731bdfb0f45ae07e5f2144c77" + "795aafdb0c3a92ebbef75fb2d334dee", + "045188dd2402ad36ae4278a9910648ed5e71d64737651c133aa89850e3bef2207d58ba41" + "69e471a4737962f5fafd50a37a28e1b"}, + {NID_sect409k1, NID_sha256, + "4b088199bd8c94775d8ee508377d672dbf50f6d2c7370e99821ec8f9387492fb2eebdbea" + "473ea18465565f79e2af418555f10c4a527e05a9e20c9c00b807dc8b350cd4ccc2d87e91" + "f66addf02ce4f43597aa258ac6fbe9365cc2c8e8bbe5c884abc929710e8423cd6722a8f4" + "73bb55804159a92a3d8b6661a536b4fb9293bb0a", + "03887d284e9ad17d38bc6da9d83c192a434c509340a7f233cebb032b09ab7c4c6e8730b4" + "a80844898616c9abcd16b753c6bb4c5", + "04012a6d5c5690ebf14ecfa54ac97b73e88e16e757c34c6bbfdc9a3a119f298860d330af" + "295756dec41eedeadc5257b202451faa06019f40ff28bb72af659d5319286fe21f018199" + "52d471ce2433ade745042a47c2dae798199c364ceb99029c2dd5cf57ef5daa2b00", + "035945b45221300f83c5fafbaf0645a7386e209d025b3e1dc367819728f630663fb732b2" + "51a019e08dde0f64dd3f60a10065c50", + "00c323c86e8cc548123d1337936d4be948bd4bce4631a2194c2bf04e1fd714df2c90e368" + "1e41a21d58d9567a5df9fc478dca8e8", + "0493d3f4d22cf8517c301f15bde52cef17c05fed2482f3ef15cdbe32c5f0975e054d45b1" + "3faf906896201942f29e5693bfbb229"}, + {NID_sect409k1, NID_sha256, + "848a13465ddcfb2dc14f7bc0db0756832c22dde1e31e4d8b3ae0dd1aafbdf15e954889e9" + "5d3bdfd6e5ebb6171fad62592c23277a89e8ba53978c9b1afedfef7e1c3f6d9f31077530" + "460b47834b30bbd84a4da601be988738aa815d3d7e72043243a5288751ee08b4815a017f" + "b5d9bd55833698a0d526b1ed79da35ef0fac93da", + "02ea5430610864257c9dc393c3addcd0d8d5bc8aab1067643b08857210464428aa85cf1a" + "e6c743fd2682255d4c8eaa46ca21e73", + "0401e502d3f47823ac7207861855fe6f6aad1fa4f2149bff2643b079da23fb270599f744" + "669b3c8ceb4cb0989aabd43d26d93c814600cdcfc138451bb59f34dc82b8128088b5ae0c" + "b8a77dce1895d5ffdfc8b4be24a206b9856954508b82b80d0163b276683489074a", + "0426b90275d720d19c6ef5c8c74c568a636257740530e3ad10de0d518c4eaad8bc58cf45" + "06cf5cdf7f2b03edd1caadb28fa3787", + "0123ad87c094c4ccfe4346dadad54a6b1ee1bffaa1b7b9094fe2e6ae785a2b77ce3f5e56" + "8e43e8b7fa997206262645f56078657", + "00d56cd5cc64736ff7ea0d9840916b1e1c94e11611f93b1b11c2ee98c79d92a8af1a560c" + "9938dc4bdd0b84252e259ae5669d1c3"}, + {NID_sect409k1, NID_sha256, + "d1850545c04ea65528849973c220205c35eae98826d169348970d1420b4d872ce233af1d" + "aa9e62f6a562544ae3a0633a954a493e9766dd5d87e47486559fdf86229a7c9e1726de21" + "895abdcf2422d438f4ad98d88b45c56742694ad5e11894253270997c049f0f419842482f" + "21c792fbe5613e2defecd485585f1835b6f4c578", + "062c757c92eaef41f5d81169ec4968145b5aa2bc1d2a3a5fd000634777748ecb93677b3d" + "a12e3be33272a8f0a52300f4a5a37c4", + "040139660fb8bbba59e8f4e95e5ee5b97227220f0e1b293901fedcc6dab86e7c5a9d20c1" + "a097ee2e926a934cce679fb8dcd8d2ed6c008ac510ddf735184e8fa9693da264194fb78d" + "a5d1cdc0bf5faadb33950ca191fe233eb8dac8adcbfe15b4f7c09d5ddeef6bcd1a", + "026868bf1764993d650aaebf117521cd146ea20067cc14a5843f726a3d68e41c3fba82a8" + "3d406b2275b3459748b3bd1a8d32f1a", + "05b17d13ae4d9535d062a2653bae4d15b9b859a87c33e175adc3ef04781bced888f3e93e" + "9804b2251a40b9344c0f8c6bd5be0ba", + "01ec3322c5beba4423b13a0528c71739a6b39f7b0e0e58a8274a8386167cadef51e5560a" + "3e9d97447e3d3c06288459fe6569345"}, + {NID_sect409k1, NID_sha256, + "421c9784d6fd507c82904e1054edf9bdd1efb58a0b211340086069ad38b7b0dd15c2345f" + "a8767ef71254ed1bd5c35f742b1d3f4765ff9007a5477ba9e5d3d5a5cb5fab4efc1cad73" + "701d4776c6c4343f42b5d94a9eb78ae428dfe5fbdd8e6ece09d5b75cf4346cf27db85635" + "2225ab04e6ea56661554fbc39916accebecb3935", + "048a313c0c11489939fc0cffc6ccb9f179093c4e13141b92dbbaac441b7ae878c9d41206" + "6e95615174a24692555cbbe904a14cf", + "0400677c2d364fa86b8b0c79af754e675ea3e806d5583e62087e01590b824d2730e31326" + "591167f02bdd29f8178787c4e1ba9d249600e7f78c423baeebf6defe9feb8ada8874ceca" + "b083ca2e71d9d8a3fbe846eda69262a1f5b4a3baccaaa4f2cc87220edb1fa6b6bf", + "012b8df87dd935775b80c62ed6c76974fa5772939a9e7372cb74e033fbae4f78d75b8bfb" + "b82240cf91009b5bef4d63ded04cbc9", + "000590a9e8de60b5cb181a1c11c2f6115c66b05e71e0c558ae203ee18e54de68016f4c7e" + "d2f01cb0cbaf1bdc45218c0fe2b1552", + "0521844eee9168a501e235de5fd19c84f052445fb0e68bba687ace45d8630070ddd3b730" + "34d1d65788a51acf91273fd187a24ed"}, + {NID_sect409k1, NID_sha256, + "7910bab15b6429947655e33a67f41b76f1d7b71534f8904d6a0472c2faded038565272d0" + "b5f51aa915e0d624e9ff48d50ebfa2f09324864f26c29ab73eb39b436c5c459c7cff4d2b" + "62992e3489cb4ddfc05d7366b161a463aa1b782641d93507de43c8cd0a0a0a9d1c644f45" + "54e3edaf7fd794248110ca9387e73ae5d00d299e", + "046e2adfe5d3549e1e6fa1fe69a7cbb4ac9b111c8903d544268f8318b0b47d4b78fe3e56" + "eb5e639ad5382e7cd5bd4b2c3e70ef6", + "04012902439be50c97aae7b40328984934d6c843415f76f3821c8e8323aba96ee41359e2" + "ce5ad3179063ea5e2c7deeda4d728d585201eb59fe96b269cc973b1fe1f3720aa9aa6ec4" + "cf303c5cccbaaebe6ef7c9f5356ec5e76b26b09479d9831d9f5aa41ae1d61f4c47", + "031893aef1baee0e21b50cff7002435b058d73dc4d8301ffdcf1e0c315d18c2b16f282e5" + "b294dc88369b25e2a1a19abffb578ab", + "039281ef10b9a2664b755a2db67b3c410276a424edf7681a5c97244eaac5826368a8095f" + "1b9b76f8e490e2783694d5bcf3565ea", + "039edd50721dd35d1704167e8cb609f309b9ed73d3c1eece181f9582aabc647c5ec8bd25" + "8e5802fb0647372e4c3929cf59ae2d5"}, + {NID_sect409k1, NID_sha256, + "e6fc96e060b956c25d50ad25443f3c30a12d199a47451a49ce88307201dfb15ed816982e" + "8888a28daa92eaf3c5584ca6ab2ca9e14577f84396de2e0ac214b24a2279f5e7b344fb73" + "87e9afc8f0a2b77a4d024a20ce6183499b17096947444bbb753d9b39e5c694239d28f9c4" + "54bb05468d17ab564ee6cea3741747ccb7f108af", + "0480103fd6180a431c837643566706e2b9597de0a1346a224d176a5b2c54aa4d064418ed" + "654a5d39f4773fb509f86473ebb373f", + "0401d39e2772ff3d26c5936ab347bd5a2940ece42b1964f030c59ab453acd7f44716ba9d" + "88f0828de1a4e730ab27fe1859915818c60140b1b66b0a87de29ba2cfa799d944b3b898f" + "e7ac43de68b01fb41464506e2f014e0d11bbc0c24996428c93bc1a5ecee5956bb2", + "06e9bd0290548d35168f7db7fc292bc161a7710b78ac49ec6a42c9423afea1310597e597" + "8b22b4dfa192489323b2317e4714d37", + "055dbf88b6221dff098345226d59d396b6773611ca6e747d26d5d758760d830693df0f5c" + "602859f9caffd0dc3790dfa08c527c2", + "03e679447b622c4b06871f2337f5a24150e76efcef9698c6fd463867508e9d7b803667c3" + "2989a881c98a90998944c070aa58b17"}, + {NID_sect409k1, NID_sha256, + "c8a8a0d41f35537e6fd523ee099eb45e1ad6ab54bed4d3e315e20227db03292e39dc1a91" + "bab439c0d20e36e7fea6ef08983f390a6b5551ac3b4f1895220b2867fab95552cef9bd87" + "02962839bd9b2c72772640e7d3be3c5889d226acbefdcb448432bc503e5a5fe7ae9ae769" + "6c720a799f9882c64ae0385f656074dd8a6821f5", + "013c489e8311c6bef02c8f58903b2ba2a98a27cb935d75a30d320af9a14fa3cbc6adcce0" + "9235a9eaf333dd05f4b2f1694985dc4", + "040046a1c0e7753cb499d19b2805df770ba54f1c6e03611c302c73c72902867c51c1cf9e" + "d154b8f30f72002421029de7ba2d8fad22002aef9c34c7c8216a805a58dd88185f404930" + "86213cb4c85e4d226bb5e892aa37be353d9123e9900f8b0790a43d55a19d78c48a", + "0491dcc881731112ad5e9e1df459c27381a7bf8270f97743466e178bf5ca903971b362b7" + "3fdbef8a75d4292e63e225396c7b32f", + "048425b76147427b8b1969bba3809dd70f0fda24cfb0e92509a7824f027b61cd38441a69" + "1efe213f3c331da8c82f94bbde511d9", + "00df36683f22e9e86c88097d75409ea297d391550440e4327f67b7af1b09141a0e7a1db4" + "0c4b0bf4d60376a6636dbeeff0b6b91"}, + {NID_sect409k1, NID_sha256, + "3407cd6d2845197cd7414a30fc3df7184da204222ffd65c4d16a12cadabf603de8043ea1" + "4f5e6ddcc22d3572dc06dec1a23cd924e1847ae285ecf01754e2d1247876431eb98e897e" + "47412a2330bb32990f9714122109e94b38f82cfdbbf2eeb4c6f88f5dbf9f0ccb47939df8" + "be321dcd9bfd9bb99cac9f94885fee7d443fbd87", + "02419bd2200f8e1d87db848b0379741685e680d9affe693eed49d82931030b6cb05d21a4" + "965f4e1df2045c8513a8f574ca9f2e7", + "0400641a6ac72455ceb142e00d6854acc5f8b86db7bb239a5054c1ed48dffb6d050458ff" + "ea8adb68613ad3cf5977ea7330268abaa201a954ab7d62796e5aed370285d3bf91ddd34e" + "ff3b995d04967db41c2171cb2157d85032c998795ed476c891702d63ff0108f45a", + "02e9928f427a86c4491a47b31454ea7d497435af81c07bc96fa61f4507494fbe4ffc1fff" + "a8faadc2a44c7e69c4f976661750f8b", + "01e8ff4cb8c58fa48aaf61488cc4118df90e8c06cbd88234cc920e5795597ffdc0ab967f" + "a7461082a49de56f02f84cd9d564316", + "06e77ac43fc7af3c126f997fe15011fa87a27479fbd5af48e28ccc2c1bedb6c0695291dd" + "67beeec3f17cbfecefbea46b6325fdd"}, + {NID_sect409k1, NID_sha256, + "ad43f8440071285d01fd79244907803601aff4bc5d14c77483a87cd742144d41c68269d7" + "6c9a83c09d2178bbcbdf99f927b378497ffdc907a75a3b0ad019e69758dfffa480871eb6" + "e1e17c8539373de611a557fad120d0bd147f8debe5f09a02e56fb607e9c1253ed592071f" + "042e42fee39775b407225a2b86a950d81bb7d7ef", + "0722951879a65bfcb414e11712ee9431eeb32319e0ff28601112f89276ffc2b96eb65c7f" + "d77d023f09914a53e2aae2c84652bad", + "0400a0304caec1b68b34c822a2a031145677fe515dda977f6932ea2a3291c6bb4fe8f297" + "b7d3c632f9b3806a8cd26e32403c27fc7a00012d4c3231898a4202f3f251802c690353ae" + "9cc28ae5089e259149bce444d31a38927dcb42ed613d4818e235884749057ebd02", + "0331611e81d3e6e3a24cc829c1cb9087a8c6f64c286e5f1acfb1ba764eea5ca55be544d3" + "cb95fb98407fb6c8f9eb1b3f7ae7386", + "056901f11ec69f91b31f7f41f7856752568b7d34ff3af1a2259fe15ae0b01391eeaffb62" + "9976525fce5d182663b7b23a8001bb3", + "04e89c3155afda2e64c749536392554cc299b70020362e6701e3a649f0a63ae5a5da4efe" + "d5c73b5e8098c0cf47d6f4c45c6fab9"}, + {NID_sect409k1, NID_sha256, + "d61a3765229dcd0b4fa6c57280f851ec2bd54d3ee2436935cd6d94e0120d0844adda1639" + "95fbc4cd9d7275da859ad8ebf30af9efbdcfc31c7c9ef42bce9011d37cf9d15fb018e117" + "bbc102f7d05750e5072f73d02c2f45509a55627a78cbd9082cbf36807759d1fe2ecbb92a" + "b30cf28434941712d38bdd100955d611987b5968", + "03f5b5a772d24bd5454bf26759dbd433fcc7bae4f5c593664c4d75da0cdf9430d7d9162b" + "ce3d7f6e13a344259da5a7d6a1635bb", + "0401ca1441b1f6e13138880196e69743206ce09c439a507a11c0fed069d4ed23676b27a3" + "a337c976c276809ae725229c9001708742013c47b14e3069af070869c12f0f39e35a6f33" + "4d98210d33c9da01ac80057911f5a392fb5c8cafeea01c1953e97d47e744160243", + "01484461d02c0337e8113e51aa7d46330f57d423b79b580a544d372524a853db9dac0c0d" + "16f733b273bf888271135a5162e70f2", + "0256d7ab133904a792987f8cea69e8e3cc674cd3c577f40ef6f12b31f52ac6366a2a3ea2" + "b2272c7bab8be00ca0d17989b6801a5", + "020d82cb9b3b1f25d993fc18b7303db4cfab91c03a97b249176f9bb2aa5ae7f589c74060" + "d25058c7acb6de1e888ff44481185b1"}, + {NID_sect409k1, NID_sha256, + "1f3c23636414ced48fab6763eed5b22537968e6bf08c178b3d31fb1f6ea773c697975970" + "1d94bc1bee7c354272811edec58eff50c93331b22723d460e56dbee90466b894354777b2" + "3b13a37d15a84c762caca70c01518bf34d0c2f072145d274b3b6c932b48bd815fe81161d" + "8507ffbc2f783bd212c29b2887af6d2ffa9d2b4d", + "046bb4a141c9099d531dd23ac440eff1f5b10f7cf34920b6b702311d490d25344c665ed5" + "211d401def24986c8094165d10f8934", + "04013db47ac0e33af0cc7d74f6ce647fd80cdc1849b15c349bf501c95893be5a440f85b9" + "b029713339fb888d7a93632ea4e0bd813601f26f7009cede02e054d6499c9280794184e2" + "12e3e1091032fe0e3c189de26d04aa8a5909569017cf06ac2a20acf579ca81f3fd", + "046e55a908f13441bab63e5327ac346781399d5a9035a72aa21df708b814b67e420b455e" + "1410014cb53e6ab00f526ceb396bcf6", + "06db7a7b03d6a85069a943fcc332cb8c54ac978810374b12eaed4a5fa5342c8eabaec238" + "bfc6107fd03d75dc2c6d258c218a186", + "010a4115161765dd0c22a0915a0d8cc01905de91d3f08c6d2d85a6a92e1dc00904f3be67" + "fef000ce19f57157deb9afba7582b59"}, + {NID_sect409k1, NID_sha384, + "ec69f2937ec793aaa3486d59d0c960ee50f640a9ce98a3becffc12d6a6c1c6c2f255d37d" + "29f9b4d068373a96beadac98fd5203a9f229bfc70bcd449640165ae5128e3f8d057769e2" + "8356e73e35d8e9af7876f608390090892c67391ddfcc1c332aa61efbf72d54bc615998b3" + "be8ab0a9d372784bea48c9fab244482c75cb2de3", + "06f2c6e9ea8109223d9a349fce14927618fc4fa95e05ecf9aba1546619eaeaca7b5815cc" + "07e97ae8cd1e9973ac603f84d838393", + "0401f5a9824584cbb0d5ed57f677caf62df77933ce19495d2df86855fb16456a50f157d1" + "8f35ff79b8a841a44ee821b36ea93b4f4001a88299000c07a9ad0e57c22fa8f15218cd90" + "ea1de5b8c56d69506ad0fd12b513ffbd224cb6ad590b79c7677a8eda47a8bdc484", + "042325aded3f71fc3ff0c84106f80a10af08d76d5e710a35d462e880e015a36d06359957" + "3ce2044537b9f62b51ed4fd2ed8b860", + "0667c74ee2d632aed13cad47e0b46a5176940652d7da613e4965876e7e22d89994bdeadd" + "6b5d9361c516fd51a4fb6b60b537e9c", + "026a01220a1166a4d0172428753e98caf0aaac5b0a09c5a3f11b2645d243991d141f59d6" + "cc502ac44b70e7c48d6b0d7b6ec4869"}, + {NID_sect409k1, NID_sha384, + "70e11efc78d7f079ae41ac3c31c96d3220f4abfe23814a2a4a78d9b1a25e838c3408bd41" + "6062e4b0a5cdadf0c6e16a11e00f59711b417751f5e4b43ecad99efbdb2a81c91a034e89" + "edc94eb552c3eba62808563cdf64453a1db07daff8742aea4a9fa738e1322da316b26dbc" + "a2954b2bc0de6da7518d28e6677dec6ba8af4285", + "004212b7fd913d794fc6bb33e0276e349c052c969ecbf6afc89b28f75a599a9242acf74d" + "ec9f374361ba296ba42a38407f9b7d6", + "04019220ebacedc60762877881262c0c3dc0c8a709fe2ea16cdaad3b680d7cc8aae8617f" + "0acc9b5c9861ede651481f39927a24ecb2018afd77bc7fe54266275fcadc0fe8d4c0dba7" + "a1264c79bc31479f4bcd02245cde991791a7b7e65fbfa907457fb6d450c0985ae4", + "04c01ff477786304b24cb9c95ed70ba376ed6e4f6b3ab2f99ac575c92d3801e7f43bab07" + "2268705d61d3e2fd881f754b9c84235", + "00987cf8ef2b382fb25a6a542e688aa96c098f5d16be0c7d46e961b4a4152c372cc06839" + "93843bf5a04f81e6068843582fca48c", + "036fba32f80cd2e66bf31baf87616027c5b107f72f11fc766b42e2774e29e10e860577c0" + "d3a27a3b49754e6a189680b7a638408"}, + {NID_sect409k1, NID_sha384, + "d922fa515e3bed60b517a2d37cafe4c041e5ab4b5c8d8d4011bf9fc4013dd8abf7add71f" + "cfde5e71d6abe76bd0f749e960cbed55711c87b5629a2c39cff48ed7d0feaf5cc4765e57" + "6a4959521f9a45fcba0dc65ae618826447e02ce6e1cab5ce8d6c96c3211adbb0660de7df" + "7453f3aa726016941d00d8ee536cc106a603d126", + "06baeebb5ffc89c94c3e8b37b9b0904e7c4b251d204894655bf3b1235710215c29820b9d" + "401c9ca7df1404d2d62d708aafe208a", + "0400a0b2a185ad7ddcaa0d8d21b643a14948d3552e25875506d64e236a90d274ad1ca678" + "e628acc208bfe6b56c02df9f5a36aa94ec00fef210c7137237da8ecfc2f069cb9390c132" + "d1c6ce961f2bb3ca925ee727c967f8a46727c8811c94ef66f20836c661a5cd1c59", + "02185be104ad16abfe4fb83de5db067d37ca58510b786b109514debef56cceb4dd6ebe53" + "b25127b85faf9c28b56d6586c26d60e", + "0404831192b4bd453c0a7e850815ac3fad88c7a2da27d29e83ca6f22213635a366018ac0" + "038b1fb1e4c512cac15b614fb69b3e2", + "06f677c361547c91428d0e200dd00777262a138afcd828238d132c56b2c232e2b446cc69" + "3fdc4013f05ce7021aea5b5b2f1b34f"}, + {NID_sect409k1, NID_sha384, + "4f64d0f6bfc542a0d4347576935bd68ca88524ead03b8d2c494061d0658e6c3e14576b5b" + "cea5f2f992f54cfb52b5c7cf1dfc517205e0454510eef1b7054a8cd06ab53ed2468193f9" + "8ff0dd62faf076549ab2a270f259276d5729996c120792c6f466a74ab65035bf38ff2c05" + "5b43e2a8b8e2449a2375ddbfc18242157bd905f8", + "008e5f66ba53e7caad1feda122a80c32c82d2c32a7237b8ee8ead44ea8f2f01d77c7056b" + "9dd60b92d051f060da8532c1fd0e8f4", + "0401a3d020a0c7e3f3fe5b3d9fa6b6148cd0c481b4f9e14dc85aeffff35e62545654fc31" + "3f930ca2e33dced28ec28d0fce6ceaeaa2013c1ac166c3c088e8a4a9d44556e3344e52e8" + "741ed1a8b526a45268086e2fe54c24d398553d509439ad4957454eb68af594e683", + "0095caaf063abba5073aa7123b2c0e1666d29bfdfdfb0c484e18931d756ed0845ea15dee" + "1e9abcbbe4576113a8806aab9476b16", + "04d6e33001933221e9eaa78da5874f639749c7396dae90f2da4ccfca15b50ee9e50521cd" + "84d78a098e0c383fab0186b3dfe1b3e", + "001e17cc7baa3e9ff4d882da970caf7d55b4e0fb7f0cdaaaa8290fe2fc9cc31d51b34b5d" + "cc825bf6799ce22fc95382d46f3f98c"}, + {NID_sect409k1, NID_sha384, + "7047d478ec5282d55db8c19c97af10951982d908c759ff590f27d57e2664f08d526cbb2b" + "fde39bdbb1aa3dca5a8d3feb50b868be6651f197abccc9d8040b623de367e2ea1d20ecd3" + "02afb9e273f4be9f3f64f2c2eb3f92d5e0e375db6549da2a589f0604bc7146562ccefd15" + "995a7c4208f640e7a17afbca69cda4e173380523", + "04ecb22b44e809f89b16abb10be062c89b41ee34e110403e42a20ce59a99afdc22f6f6dd" + "a56e1d9d1b8ce1d057f390db111def3", + "0400dbb4a6ed11f36eb78417269c1b1e9725eba1666591afaffb5582c8b4d5bee1d73922" + "b0164a05bf21a12052171abbdd3130555201eb385afe8588ceaac9f39a5cb4455e02bca4" + "8f3d2242730e0f9e06ff1db24344379f96356531676cd5af234a120f4b61f7e041", + "01cc97a718ebeffed4ca7a9a4389d6b0fafb73ab000463b68b5580267aec203b6231cfb5" + "afbf7ad8192f0947c7f40d9e060ab32", + "021a29f56c31227daf0dc5dc919434978943b80f4b18748bb5f7d6702153b966a0a4af6f" + "209ecfa3aae0e4f32a1b7c6ae58a55f", + "06921b2e2ab81517a0785c4ac3be3d7d4b4c917d7a1e4313b123ae96056a2a4a66d9e008" + "19d8c1cca5bc0d75e4e05477c1fcbff"}, + {NID_sect409k1, NID_sha384, + "1a8384b4771a410663e56eb36c5d9ede8d161a8fb0e31d3f74bcb017b9e31232bb2e2f4c" + "65a2d85bcd1cedd93ef08d4bb4af0095731574ab3f2762788a1ba3bf0ee46684da8d9dd3" + "84432fee99ed3c69213d790a5d81b351063eaf2bda71ca4868ac36be1b571024a8bf0903" + "9b347fa996d5d161078314e24b7d073e05cb3d48", + "051f9500c15ae73d6d479b9f3d2caccc2039d8d03820befc2aae3bbaf65d59bd9cb3c4e3" + "aa8bed5b3acb70a5566047ffad80729", + "0400ee8ca7f55225760c515bae053ebbf4ab23567f95c7091fee2acfff079eda297ec6a7" + "e9d526e12e5976431f9d7e52a2318ddcd80185e2c17705a2555fbb8afbe8e41ced8ace95" + "c83e198be3c7dcdeac8c2c5bdd988800f1194e553bd0348ebe6c29c16f35d50895", + "073f96451cab2d3ca9810e265b3461e0fbe7f32fd6702f06891b97969b133eafd68e53b5" + "26b5e32b0d06ab61ecd75e1bbb21b7c", + "067d55e709f6966cb2082d8021a313850c53305a3bcc926b6f9a122181665328fdc8e05a" + "88de812357be85d22c61c919876fec3", + "063d5ee4a63b1fae39f266a9f826754f5bca4d7bd414dedd16858b5c6ac2d4162e28ab57" + "215c6713320d3d6960f6b55e3f1897b"}, + {NID_sect409k1, NID_sha384, + "43513d6dd8bb0af7a6f5a2b35f99957d335a48d54f2c4019ce9518b35441d4935518976a" + "b1df37110b5b53532cd9e2c66d9f87ae7f683d7efdbe1775a6c15eecee84c6f879999d07" + "06f6779dc158c111fe8d7201983883bc8334f51dec60004eb1087347bfdab20f8f2f2605" + "56681e05fdbb8a6139857fd3bb2df5bc1f2dc143", + "00cf01dc4462cca764f4f8cbef48c51980737b9b98d1384b8de9f4c733829db7718a9b5e" + "aa46a8475c2144fe4454cb8eeb0a443", + "0400806457fbb7fc577497c937600c5a9c4df2c20cf7dad4510e5ad617fb2849bfe6956c" + "3efeab6b805cb7b63bf5d1c94e5ddb456e00915071cee2094efdcc155f893da8d83d9a5c" + "234d0f04f738b7af5b8fddaf1d3aa152fc11894a13caee0009bc106a64323e9dda", + "024968902b50febf13be11821d0d316f2daaa07737af45ce2e855aea6ed58f226d2279eb" + "e4295c5d7674104bff75b899609561a", + "0549f18f1d654f26ca134df4707694e5d9b3693bb34ab5123ce4d9e4c2b2d9756ddad957" + "a4169fc9bcea29944903080f6f5d01b", + "021887355c6360bc4ee59f1badb5325763e9428e60b31a7abed06ef03bff0b1265662d60" + "4dd2e0140c355c70fce1b56ab143201"}, + {NID_sect409k1, NID_sha384, + "752300bc5066d0efaf807183a41725e349907b7339d77c79921ead3c685b616b0eb97e70" + "8f3880fce0136c510c8cb53b22cb424af6f1c34633600939a0647c02d8f9601f9416f1d2" + "4a51657241fb559c25dfba91402cea43bca1a13718b3945b048725f3df560e6717cfc6eb" + "d894e29bff1e0c7763f15b8ea93e67385f059598", + "063a9a565497974c6dd459bea0d1196d74f263f333c31b7e8591499960e1cd79e2ef4cc8" + "709f6d54713f873b16e7b0be42f71c8", + "04018872e9d9410dbde671fc050ab88101f01d146a72d62b630b29790b20fc02cb62cd0e" + "bb5b453a46c60ec2d2c66de8715c32057801b6af51db1c42b743b89be0900d23f7da80b1" + "5f2e7a2a965c7bc13800bf58589560af4697f873b6155194badf5a19a653e63da3", + "01d3278e6e78386146fc15006258d7a62a1345db3c2e44fb8d3bf8101727bef254a9fbff" + "157072326a85b5ef4e17c5b0212bedd", + "07bd5b54d9c6d6f9c87f4a66472be2c4bb7f521ae56c1dd71781d95440b0a151d206ddf6" + "27e5ed3f9c7df2fc914a78454e97616", + "075e39ff66ab0e0d1b46f9679b95d10b692874d45fd6898c569aac28a53569646bb29f85" + "56e529ef83a15c574ad5e1c82878154"}, + {NID_sect409k1, NID_sha384, + "f620603489944769c02e2f902c2299dd5f32b5fb463c841b7e1fc0249a85d2c31684bd3d" + "aacd97de8291c5d39e84d6e59d3dde1b30c181bfe8d31b8d8e080bd191690a67fa00024a" + "c8c1b10981b40d4f88789ecc58fc69b15417fff34834e23453bb9933a43d08afab74d056" + "f366b40ad167b51ee5f008db151a12b467d3eaa2", + "041074dc186193d30aac7cc6d269b938ab40b257d095e54ba79967a377a91b8f73671470" + "cd07f0a3d1db7cf0a31ba9070625e43", + "04018fe9848dc599a759d90530480a6f11d052d2ce21a7275769ba02a61658c3b69ecc54" + "6aa6599e6699353ee1d65ce533c69fb2180192b9c41bfeb2af4f29dcd1c43d3fe72a070b" + "5d085d070acdb8c02f0dba00c9471df1dcca1006709676bc08b8ddad97310e25bc", + "036447681292dc781f7f4ed60126945354ad1df5987266038c5049d698b2ae12965b6fc5" + "8f3e944c4751406087859973d8afcd2", + "0541c22a6cb984cafddb3269ba3ee56af64cb36d03b7cd1693b112a7df20f0422219f85c" + "6820130ad53ef69fb66f3326bb863a9", + "00fa66b163ec3582760b048ba9a0fba9443d7e908b67d749d732ac9b6e89c1fcbc6d3ff4" + "e02a43ee41414b15ead0cb83749e0a9"}, + {NID_sect409k1, NID_sha384, + "5575f610762b42ce4e98d7bcf45a7a6a0d66ec7f27d6b8b17f1961249d905bc7e58e2ce0" + "806d467f106b16285dce4544c72666d08b5e2276cd0c4e13187cbda8aecf57b1855afedf" + "8fad39ee4fe009f204e60bdbec79b123456ec2d85631d382b8a2f2c7634af3992e4707f7" + "b4215e2c9d3b0aa8fb08267953883a4213669d33", + "010820db54ccf0226161aeaee79cfd2797f87702b4ee91adf8543b3c9e79579d0df8a889" + "e366ec1e0718e039b87a37c24d620e9", + "04002eb4e313f158ba7497130e2d64804ac45a7db207c55d41f39979e0303dd2641c8105" + "0fb7f24f2fd2485b90f60985cbb15d56be00a190fb6c81c104164578da6bd4f2b193cd11" + "935e1f87f14e824c2bf8c82c39f0be1a6de3dfc6dd68af8cb14f6a78f38773a7ca", + "0118e911f676f004fe581d1855e5795e5f4ddb33fb8d409d557aeea87895b7c23a513ca0" + "010f98b3a63f2c65da5e3b6c37cf5f0", + "060c7f7c47c16b294867cee3e65eac8fc828229a5d3adf8e68e14dee620e9d4e7b78c8b9" + "02b5042b5f19c94e621c52836c95ba8", + "008d036087b23319553faf835b793c73204cdbe2c1c2463e74de8f404e66ff15ce9384d2" + "6149e7300ed1a109afd1f915edef912"}, + {NID_sect409k1, NID_sha384, + "81cf067411dde2d0ab04fe5fa1e28e6975cdcc571588de60a35bd956a535fbbda4affd08" + "03d244f3f7e6902a2c9a7ef2488691b6bef7f8ffb33be09ccae4c5285265e4957f7928ea" + "5cbabd6823297f59a7cfc9939a49f26bde74c4c69e2d38c1efbacbcfdef0112138431580" + "72be84ed3c1781f67a0e2d4e9ba76a585c17fc0a", + "059d2a06e8bfd5e14a9bc8777958b85be5e97af892d2cdeb0ecbd2d5017952b5042349db" + "5fedba2e26e7b85bbb31ad313d99434", + "0400af276952a1216ac88ca7a194f5b27b7c98c78c42f852dfc1a2cd4c1a477ed16eebfd" + "c90f613b6e264576a35c45f49aef8a564c00639625074b69346dc6c617d624d63ce415a3" + "6154a817f4e18c59a3b09e01589407077b19bbbdd57b04ef8fc2cc23c673d52910", + "002728f7e9b4772ab790af0be9ed5b3eab697c4710249169d2a5782ab3797b8fa21bf8c1" + "de659e3060af5a286353402ab982320", + "02a7027c6f94cc236dc8cbae35f9c38102a663b84f66143e2fbf9a152b1a6478bd803bf3" + "171f933f63509d539a54dd348002ef5", + "0549ecf85ca1bae6d9f0038dcef90c93121a654552780f5583a7d44a73a9360c6799e76a" + "632bc8907ce4626c0439f1518e3a250"}, + {NID_sect409k1, NID_sha384, + "8ea18387940035cff2f37278d321b344231075db43c7fa7fee9bd3fdefe5e8f03e7af9de" + "afa1022eb108e19ec11fae34536a4fbac2e8c8139a081a997c080cbe8f3e2d2a72ff26ed" + "cc5338b21372fa1498e439e4d9bb12d51cc539f859047957b1b1f1fc30b90231eb06b365" + "a4d404a1fd5a0e5cef171fc95b04d0b557d78ebf", + "0405590893cbbe18f4ad99df28b5f9d17f8f1882269aff0b7eee9392859d68927a99c942" + "a3075269ddec6d69c0df2d76ab9d801", + "04006ce67ace45a9cfa0cb45e8e1d0eeb44e94bd7527fed6b563f1069140a3f36e010f85" + "e1ae5ef14d626c78465cae43230090baa601a66a58d87621b63ca662130ea342db029acc" + "2d99bf76cf6ec4e53ba71bde4b00e508d332081055a65fc6f44a96f4e947d729dd", + "0035f09e0c15b41c958596ad3f5c4bd4a3685ac94f19fb97503fb5fa29115cb18fdff4bd" + "104535847ff36650b7461550dacf2a3", + "051775fe1503ce80b3d581ea3e5ba761665568ce0eb7d6a7163d8d025d76002ca7bcf6d6" + "88b6477ae85d09c0d4017aba5ea8019", + "035cbe69edfb6fb99c9e45240b7a587c3805ab2ed6b0399c7dd8dd76187363b2ba1def66" + "b2c3dae4bc2e40d164bf0f4837798d8"}, + {NID_sect409k1, NID_sha384, + "6a253c1aa17b2b1e6624afc8e7456d366ef5b1bd78e740538260f395481148a64da0b6a5" + "8cd53d7e06c691beae1a616547cd95c4d259a371e51c2c0e334c8a5311ae31e4c7af3256" + "86ff9f7a36f731010ee1a9b8a29169ceac36a060dd23611dc9713c615424888bb574ad5f" + "5755d7311bd169336ae986c977a394bf16487c4e", + "062bbb4f565aa0f23b88ab9029d33b995729d10fcfc33ba7c4051e2fbc72f15636a834e3" + "ebfe604b927cdfc89f53c57f36890db", + "040125242acf14c7e08e9f2f0194f734841758b1eea1e37ba80b9855a14100a5f0b57bc5" + "2a0200cb640121d96769e9cabc45362f5600dcf52cb899470943a37d260aa85fe83c3869" + "c862001021660ad09b4d73f7739ad331b3566bffad590534207c6db9acf98399b5", + "06095b4ed8d51e37f6c723648af4cd4585d9d250d7519139f58a93c75f197c4bbd1142da" + "59769a5fe178415c677caed1c3da667", + "041b212a54d4396ddea2898dadc363ac3ec5385c9b3b8ef1ea17c3d2f751d4f791372385" + "48ad759b5e1700d7d78072df3bf84e3", + "0149242afc524b0c3583037da153f539aad85aa0c19c6c70852e3c3923df8c3abd0189a2" + "abba872932eee2e6f45e02f98e810bf"}, + {NID_sect409k1, NID_sha384, + "0f91d0f0139faf3b90a3d4bebd7e96ff6bb6f90f6c68321fb392637d8ab2a60d649a7b73" + "64ee6e4e274e1a8d342caee36cc11c56c54247fb0a8e8ef81ac4322b454dc9a195dc5456" + "7bf47ec8d4fa4cd32e76d78ea2d08bcbce3edbb68fd8597e56d5a9f2df4e47b2701046df" + "89615961db601bd8204584a6a6cfbb627e2a1190", + "03fad7031cf8810544a3e4bd1382c0a2e22c5a9fe4804ce67b27591fc516ee81dbac841d" + "399327168aa6abd79e2b5ef85df1528", + "0401ef0f918c683be57eeab95d5d1850bd492ace7f4b37785863647774a028e963ee2c0e" + "ea801838aa8217fad75c5780f1c36e8d4c01d5dfc69bcad46bde5539c58ebc89e1db2a3f" + "65069ed963280cc2cf228b2568bd53c6e0e164d6b63a5d3c2b8e3be9d5139a62ef", + "00eb16d784e2aed724cf1e4b72fe76b00dc80948c07f9c7524eb0e83bc59c12a8ed16fa7" + "ff21dffb8bbaa82925848a19c93884b", + "04a07e79b4f771363ad4c46cde0aadf3df4a233740a89168c97b54559029c51dc2c79b7c" + "c94a0e4e3d2f94e376fe47993da28bb", + "0360f559d37a777119b2aeebf00cc17e2edf04a2cbdf74366f5d34368d2eb2c92958e4dc" + "2b7453d5a509407a4d4643cc0235f57"}, + {NID_sect409k1, NID_sha384, + "50c17c1fe4dc84648e5c3c3ab8f7c971d4c58d8d56d2b5ddd92e35e6792111ed8dac7644" + "ac8a07ca8bb4e38e071aa47b22ffe495e9083f9bf781ac1b5fba571862c909c7aaa7b8d0" + "5ddfb7ef61c99700de734d5658f44ae9fc908c85a2dac8e7f854d6d24be805fcd7f873a9" + "1252985c5c73129c60177ba8fd99daa87b25a073", + "03db41b4f637fe7977c90e4f1a21799baaddd1826c667102414877138436cfae1b995984" + "2b8097b5276f15f2b982ee59df263c8", + "04018eb25bbdeb41c5d14edc675fcac8a523acbfadd6456632bd593ab5f694a7734b163a" + "ceb6e6b3d8ed83fa1cf7b5adb9871a6626014975abca1cb769a243936e65123167e53527" + "9197a37d8c92c7b138f31cad4e95c5f62b06f438f94c1a61634b34be7b96f09fbb", + "055fce73c9c385f007256253281c6b9d0930d127939026495d0a30f25f77fdb6b334043c" + "39fad4223852f7101fce72746ea205c", + "01d7c26e0236afeac032fc5f3dbffc8c03b04417b514adc26d6a4f697b4e87a008d5ae97" + "544a274c25ff66b98111d7c651c9381", + "07954191fad321e7f2de95a87d5a9c4527e658ef85faa6622d5f34f8bc2b84c881ededbe" + "0281456e9b70eaf7a207e253d216533"}, + {NID_sect409k1, NID_sha512, + "3583a3226e2dc463a462fefa97024e6e969c1b13bdc1d228e2d7823d9f7c09012390c253" + "5baf086588000e908309090daac6e6d2b06d2ede6fae838ed47f30b5b481185f607a3586" + "f6dea47c8f84e9d3b96d5b0ebae2462fde1e49d84d36658e87dccf5e30c0937feefd8862" + "dcdb1a1ca373f6ae41641502ac54df6633a8cec1", + "065b76c6093d9c49591293471286df1a4444e60d9d06cfa114e175afb5f119d2abeb273b" + "0596019a0ec5db5b5869f2cc827b364", + "0400266321fd15bf6b1af862496f467069819e3860f74a07825e68f3d023985bfbb838a4" + "9b6a41b6515cacf404ebf12ce0bd3d6d70001593c7a8e629599e63d3282cbea780235182" + "77e6731fe8d88cbe525ded554b51a7f8803ab9e330f210619dd07df8f67e1066a4", + "035682af873829e16b72bb86f3ee99b5d9f052e4a631b07f87d3b361c8d8260a877231db" + "cb3f4d461b4a1d4467824a26a5a6414", + "00a483dc2dc6408c256fdf63b04d71d3c58a08db7167da217f466cbbfb2d68444c10e87a" + "9a1bb04efd71135c00226e58414d407", + "078acfad2f2492f74b0281d53e4224c7544588ca9ceaeb16bf759b20c2f3d3ed69c64615" + "c247213d51800569dc8b00078de68ef"}, + {NID_sect409k1, NID_sha512, + "60ca58462d53d074b370127132f4e59f5eb8d15594dc721a94286afd082a8934e52462c9" + "c1c3910f8b50d7aa3671dafa5972958d876d7992467b2fee3795a6f9d8a7bd3003a8582e" + "a8c003aa1e02c08ab6804d85bcfa13a815d75c938671f0af0706c68bc70a6155708ca755" + "cac2fbb68b2952208d63e0e2e3d816f04c61bc03", + "07e9993f3fc1fdc4c376ef77ecded96006ac1159740bd1b2dc6ae3d97e15a67383f1fc93" + "1e460b9af3fe14a54e47919667ed06c", + "040189b82003b546f94c066963239c7a590e064b88bb4548678853545920e413f2be3212" + "5e40efb82d2c9582d2d8269c1d408a7ff0011583b267727ba6c1e17a244ba7acdcd83698" + "6089860ee312b6dc2d88a984b1fa232eb0419730db8fb94a5e077009c1d55979bf", + "07574dbe04e1ac2bb34e40f32d6f6db364a95cc5770b79888d72b74bd4dbce9fd91136e9" + "e1152424d76688dc995bbf2bea34175", + "009e42a63b41877e200829356a2191fbb6f2a9a234be58c76b0852e4f348ca61e7492f90" + "a37feb8b95a6dd6df9d1a2e61c63b4b", + "01499fdcc804fee8193de080b085b7513eb8022503de5f64dc12c04c0ba24af30e30f63f" + "0e3eac2c82eb20c6672336f8732ec5a"}, + {NID_sect409k1, NID_sha512, + "c749f9bb92ca9957ca6d0124206ebf65e860ff38a225e241950bf4526cef3f4fa9184ec8" + "3f71f813fe852dc08eca6b45b14fc7f2c6a19296529bfda007efe9d0d26492de2a902b45" + "ed39603e22f0a763dfa5deadd97ef6feb859d860baa2cfd1d066c0be0f9f4e0e2fafa69c" + "c51b12e814ad2e33b0acc0bcbe1df8cf018dcd4f", + "00c11e2979498695c660a2bdfd105b115bc4ff8664ea15cfb40c725406c6fc9a13027bd1" + "d72ffff6258f29e4e19b845243444a7", + "0400904a9bfebc23607c7c89b7aa89315343852cb894f54fe42ba4225285e58c6bc318b5" + "5691aa6a6ef22eb11f44cbda89f157d7a8019cc1826280e54832b455f0ce0cf89bdb62e9" + "73a8e819fb776b1a202b4f207b8baf9072929c9e3f6a8ff996d6d529de899b024e", + "070fe023c9341df9348f08882bef47bd8dd7f13db7215d1cd52cdbe7919031a62455ca96" + "9a8cc6db0a05a0b4befb47c142c4f34", + "035e7130d59d92ff8c4f264fb2c346e052bc305c7f57549a0fe43cc7cdac6aadf2ce1939" + "222decef4e1f900e3c2fb2c52bf53f5", + "0008d5ec1ed2091309ac11eb88157ba5122bb9b5c858a46769a130f7a941818445664ac7" + "8325e0b6d2a11bc89d08fe0e87a5bcf"}, + {NID_sect409k1, NID_sha512, + "4de8414780ea20f7943b1f1adae5e3962d96e828fee43bdbf2831bd71bd25df2976a3be3" + "7a7a667c7fbe1200de578920090d131a750c9bc09bd95b261234ea8cc25423c4ddfff565" + "6d6b32da6e2f6f530e6673a8660aeca31273bb9a3a21bbd7031a2fa71ba37c004d3d1c64" + "b2c0798783e47b2efe1a208959ac16e35d444245", + "068dfc23c6635bd1fa1076dcbd456ad6e8df7ce7c1370fe275803befc4ffad007fd062a6" + "1cf1d50b93aeb9afe1aab47a65af82a", + "04005591f8cb59ccea17bfbcb74e69f05218d16175f0547ab95f507ef8d7426c077b52b8" + "2dcd06baf6eae7a66bc72422236e589e420126a01d5c2331a2d00949e07ea9242ebb50d8" + "30b0aaa74bce841d4e43bbaa9e9aaa01ba25db7a8a2f4d72977c0f016f625cdebb", + "070682c9659089a703dd9fcdf2f3fa0c1d1ef5fae3f8f1b3dda55d9b611770244f892689" + "8c904f6952c1847d287bca21db4dd59", + "02734111e3b736ae795929f835701bf290dd50c0fd625738ab2769242c1403197a3f4dc2" + "9ca618c2e292c6bec6dccff71adb698", + "0755292cc5363fa74e0193a806879d3a275b4beebc97250fb230efbb8364b2a30098c048" + "8bcc6e20449622d6a5fd2ae24d7abe0"}, + {NID_sect409k1, NID_sha512, + "a081d54232f84bb19dbd52ec3812748e2e6486f6cf1b177b27929504ca878036547eb435" + "31bb5b3edc81bfe105370427e92831d2239cca0106d031d9fa8da9cf89c6fb6401377d59" + "36b6329ccad854e5567181b8f16a37c35f333eaa0ffe91d727d183fbab935fdac2d5670d" + "afb3fba59e4fa2df1746c58dd8360fa08af7f4e6", + "040807fb888e1d9fd33604546656a493629d94d4a0a9de2608962225ed158167f9e2438a" + "be2d12a11e2adb6c2b66ed78215b0b1", + "0401787c0e6c55acd69bde9b0a84d6022796d5b5c60fe5357bc0fa4386c16f61b38bfead" + "b6cfebee7e7701bde24418b8b5642afefa00d9579d271ba3d5e2327eb863cfdca3970700" + "55b97714e385ffc2fc23528f696dac1a4d0e535641f6c876f1819f2672a8c31cdb", + "010b8f5356d8a029659492c444876f1d274b82681d4f600cdb5fb2afde13598ddb71676d" + "9ed86e83351c70678886e8237a865d1", + "0304f43f9705d189f47ee09a079494030b0756993a93e4c6ee6b5e664f63431f99e50574" + "7c24377e5930f13492483e6cd06ebdc", + "0580d4707c97f0330f908042a6cb2a2b313f07bab34774ee03bbee63a4ff881b68def47c" + "d300fb49deb49829bf486d1efad39b8"}, + {NID_sect409k1, NID_sha512, + "ea60266f1538565b3ff42fa4bbfe319be070329059c52c8bc04a7da2824f209c1145a05e" + "551ea59ded8ca8439c328f6907da4e81d658937df614be98c7b8648818ea80ef40e49aaa" + "4431f4a211d62acf2611f5d60c446b2b25745078c643859be1b12b3141a09ab765dd63ea" + "1f2a2df015eca0840087a5db378c4c4cce76cba7", + "033bda0a02badae08fe40c239b9d59e5bfe1c4d4b9b7a5acda6790bfd77ad08dde5e93a2" + "da80ec54a7f88146d72218bbb88aa10", + "04002dec536832c8acf007daa66a47e4eeecfb6991a359f8c412299ef56c6ca2faaf18c4" + "db708493e84786a7837ab74c5fe0644cee00906c8f603b579cc2384e0803d31d577f7c91" + "c55406db3b2db91bbca323fdf3cb6d010617ad1aae7bf414c4d974f22e6f05af53", + "051e8d027e62db2397e4a807d98a24455a76eff6dc259ada89e794dec1484b44724894ee" + "ba842f60b73287642570460896dbe77", + "031769e6777444095d934d05dcdf82405c43ae91ad5fa9201568ae2aba25712717f1af2b" + "8f49f6eef373237bd70c34889d0d271", + "0023498aa50ee095f33a4081bfd70a9484089c85fc7a4569f560ed67243745c823cc0217" + "d29e2938f06ba9c8790650d10fa5b1e"}, + {NID_sect409k1, NID_sha512, + "82f38c9405ef0d26bcdd5b3fce4fb0060c3095f61403418e17c337933f0563c03691fabd" + "32ab5e896c593439e7492a9970ae325c67196d9e83fe0f9780409a930326f7e6efae035e" + "f8c321cb9ad12461edd5cde66c04739fe079db65406b3c2d22f2d04b1a4335285513d4ce" + "b901d2ca2ad10c508302266c2cd6079ff14eff4b", + "04ff431769d26b8837d3e1295f5464fe82be29edefba76323e92078a6483ea0daa962215" + "49102509a1bdcfd46a5a2e5de10c39f", + "0401beb74d427d849705cf26e26312446f27a7c5ff26ea9dc1aadca763254fe53a622de2" + "9cba4fa81ee2f9e0319e752f72be46cc7e008dfcda35a00ab77c3c47dbc05b0678cf561f" + "575369507097833e86e523dec879e0ae9583b4261f7a73c9dbd417accd4ae6688f", + "005aff3ad332af23e0dc38c16853252825076d602ed4c6d947be751af5dff3f59611e616" + "6c31740b5e5a167260adf2a5466289f", + "035c4e8e1858b9694cfef3e864ed959638ba309ba2066a28fb9d0e02a66cd4c187dc6fd8" + "ca5fabe68acbc2074168157b685aa6c", + "04ec2db89645018f9845b7ae31b8418a767e3570d401f41db18e424fe861bf09114d7860" + "6a056617613447d125a283be5bdb6ae"}, + {NID_sect409k1, NID_sha512, + "d8506fab4f681ba4ae86066aed447571eba4fe04e6585fe3be6af2ab1000a3da68c5b0c7" + "11a85ddf3a40cb7c8944eef81f2094650459e14f5b848e6add7e580b0198070f873eb3ed" + "5d0728eabd92bc1398764b94cbb4cdd7cc2027b9762dd10782658cd9e8a5022ac062fec5" + "35d892198c8a387b3d2b6f7c92b1af6ab7dd9e4a", + "03f85ca1169ca7e9df44cbc6bc7d2868c9d94e8f8b699a42ca492dca0914eb5789a90322" + "18dcef7f95f959c9554a1cd83360439", + "0400aa3c77dd4324258bebe7da5338c772d3496e3fd0e57f455459542f1a1c5b47692f51" + "c3815c9549d0c23fdc1ff610fff6847ea8005e626d6aeb86dc51f3b359b10862cd33ac99" + "27e38127f7f17426f2369d62132a2a62fb6b8354c5ca0b3e5c7c87117b4f777a0e", + "0495099cc73c9930333ae3f9d0b7057d7c70e2bc7c805c0c6a44404739b3fb68f9fafa53" + "033b54b7ad7bfaf4bbf7baba0dd5a0f", + "005612fe87c6a3a164d269da902aa43c5a4e0333770ea6334f05750be3f31ee758d16929" + "1e15b1540d40b60d1bda279599f254e", + "011a633bbc058550a597585bbc9f33099eb517795600b019255f649493d4a6dd533be8b0" + "965d9f9d9698677491bf929198ff34a"}, + {NID_sect409k1, NID_sha512, + "b3f30d34f252a4c26f396079e773142bf61c0981d912333ade3de4e27cbc72cd8a16b318" + "07f0c46116f87accb854487d83ec8c6a61565e6fca145eab70048245db08616779d7047d" + "b63aabd90dd15acbb05eaa510072c151c0518f1b34582b95f43ec7b9484b2993c176de79" + "e84566764467f72392ef31619426d159c91816d4", + "03a97deb36d68f81f50c8829d412ee5de7f9d775633cb69c09dac558182039e275fc2582" + "40517a7c4aa592e364765321f27cb12", + "04013f0f4c16a47ec3a46e7a088c1b6a63ef61eaea46aa9b2c532d8df84dbf64991bdc2c" + "81ced3635e562d1403dbcf6aab2f8aa9da003aaded3b99a454b820fed989dbf6430ddcda" + "67db58e356397d06aa137fbdb365ec43994abd9c0a9fadd2887da9539bb4ab3c44", + "06620ad14a5835b9e9e104607c317cc599416683a60ed8865acf78ae1e861246567cf9d9" + "1f759c2d4c82cec835a4784d3c231f4", + "068faabcb7c716fd73f129ebc6625f5b4660a88e47dc7dbcebab321051a61e46b74409e2" + "b0af420e1671ef4efe04973c43471ff", + "06851e5da033da0f28a89dbbdabe93ef11331c55cc03d5b096c0522370be681241fbe71d" + "1349f219ce57761c85fbe208ac36a36"}, + {NID_sect409k1, NID_sha512, + "0fb13b7c09467ad203852738eda5ddd25b17d330e82c279630b0e1f0c86681f67f6e537f" + "b00da9419114973c8559306de58b0387d86e52d821d982a60769d2f15fd5ac2ee6dc55d8" + "ac04ee247282cb2866b8cb8b4d7b4b6cfb33bfefdff09a73d727193e5fb939ff66ac5fcb" + "644a44f9083a790888cc538c5eb435243c6a34a8", + "03b1da0ffed24e1a3b5ba22bd684337f6b08053591620541bdad50c761d66201a2cf21a4" + "cc636426456525b598e96baf97d9851", + "0400116a1790e621272b56cb4579ffe6ab629a2d077b779b73e039d74f58c476283c110b" + "b18b9c9ed63de7288dd678064de68b7df60122b43afccb88982f2e07ff35468178572bd7" + "2b644322d9e1ee68f78880169a83a5bb88c6c994762a7e8d80e09333487ac30fa4", + "06d7a24f0fcad549e9c36dbc70ce264a75eb37b74db98b1f6a824ad1e5635be9818f45c7" + "544927807dc0fb3bb5fd38556e8656e", + "0232339b50bdb772d15f2cb8973f6dd9397af45cebb69adfc089bb802e9c4029dfb2078a" + "8a26d7197de10638ce512e5904ccc5d", + "056add03244174966d53105c570e8fa660ae8c5d53316a24cd26f24e29e4b7459f4c9dae" + "f07442247b63665f97a3c07d91a8706"}, + {NID_sect409k1, NID_sha512, + "f9b8124281628cf4e1da0cb4f021c8d19d815644cd80c7c8de4cc62722904ec4cddd26cc" + "4891f30b15098a25ba6923c6abf4774deb6e1883fbb409862f94467e75a725e7154be860" + "fd58347577c83adbf18535c54b102220197afa062cc1c84f6094490ce488af4a08d2c5b8" + "08a2572e18a59de96c87162f88413795351cedc1", + "040bac7e0d3b54c7753c79d43469e310d876015d948fac4e3a9765444754476af72330e8" + "8d79ee6119697aafac8435ab5690754", + "0400bd4fe8daffe47bfdfc43deca20b15da7c999084bee8983c62e3dd33740143c38d8f4" + "32cbacea51e6f53994265b2d8f4c393f6e006d88c33c31f4e143b13bedd5738bc1191fe6" + "815a099fb7b44617fdeb08daa0cb74edab7f9a8c67ac1e9c0f0fb21a9f02ef4b6b", + "020f2f6fcb3e471d47f21fb15301784f7cf3632dad3627a9ebfce587c0097871eca580bd" + "a051b100f991aa6de5edd3a7684e839", + "014f8884b5107e9ee5cf6f5d137ec9d59a85a6fa0431053d58a1400fbf0d518e8910179d" + "a1160de2c6cc8ea8ba8f3af8e0e1f6a", + "019aa8d55c8d876989f9b9559db0576f91c4610dc9187c74aae2d4f212cd94d90dd81ee4" + "483d88d866aec1ed469c5e3eed7d90c"}, + {NID_sect409k1, NID_sha512, + "4e3cd6100520db050af0daa69fe3cfe6603a223d4f2a6318fc5836db8640d4c7fb80bb78" + "1302036d2d6fb8e552b4eaef3133b98ba2d36b9ef0b86243b0391413c73d48ecbf1d1917" + "0f1b3b781b35ffd316afb1d55d1dda8e91eed5553780cb2714a93e7ece698b832e853e25" + "89c5ba2b8a997bbbbf625071ded66762af8cad42", + "025b7eb3bdefba3c5134438caf968f615b315204f348006f82e8d61057a8a8a853230cf0" + "500f9d0b8c1551a59b9184862dd2ed9", + "04017d2029cb711e52df416c54b63a95a66602a1d15c3761d91071964e0128c91ea766b3" + "d409f72d9fbb5161a459c3fd7990f87d8801e71a9c66a4d4dcf199aa329e44b99f80640f" + "c760fa7326f29c273aa13b153df5277feb3c049e407630173fdc9f735d7aee4e10", + "0575aade2692534b5a1a17d36c36973d24dc501c75c3b0b497a3d2fec80c67be7107988e" + "47199d4863044fe9176762497b5aff3", + "024c6004fa92cad446b8339917f517f04d22db47b3f9bdb83d863dadb5431866ce21b13e" + "780495bd66152ab33eeff8830cf8538", + "034aa568aca7be851d276d2235e42b6624df1cce2b97f6413dd3fc506f0f18483f95f911" + "feb0eb220415ac593f2c93dca0808fb"}, + {NID_sect409k1, NID_sha512, + "5411708381a65bef4381c9e13a04cdd5ba0c15829f7f25ccadf695f635384d8e4704cb56" + "2741747831b33852567f42fedbd190d2980f1bc921ce01c17d659d4bdd7eb787b3927fce" + "e659dd3b65132496c687f2249272a473d46326e66b3cb78dafbb522390162c168f73bdec" + "88adb145e6afecd561979846ea4c8cee38dc1686", + "0673b3a2985c95904732632e5d988d8d437a60db13215bb6aa880b348f011c609a1e8604" + "61427a8cf0d622abc47f910f5c97ffa", + "0400c4f1c0cdc44d867ed38d093eb967bfe285df897868c83ffcc0c53463e3852a1b2039" + "506d9508bf01d0d79ae537e42fa2070a5e00c2bd9343041c2c4100c5d795ef355c796a6e" + "a7954cd729e11063b14a27fc2c3a9ffdb3647613b44238eee17d9cc49e8c5dfbe0", + "019a9509f5f6d947532638a3c80782b556c553edaee9ade91e457f7b5d2c9055572fb116" + "f52cf4d3a2a0eca72fcb32b2f58e952", + "02def440e968d17d9904c5640619af2f447f74b7c067537db4a15be87df4fe68f4489704" + "7fa8af146462ceed4beae36d54e1aaa", + "013d5b00fef639c556d66420090c2cab1edc57b7257dc35addd62a5337300e94ea7ee116" + "e06b744da1b575d90da81e8ae2cd424"}, + {NID_sect409k1, NID_sha512, + "23757fa60fcabf543e603d8b31ef0cc99b3ed16b4816a84e01dbfc858872fcb79fd03d2f" + "8a1d4f28c25dc42a39e20c34f81ebccda1682ee9bd22fe323e7f8ea90cf4a2a6ebb634cd" + "1153cdc35f7306f28a2efd822bf23131baa1543d0ed5ab4c8168d3199983fbee117085f9" + "0550ec3ffa2b06070d3add1d707fc2593285ff58", + "00db7dcac414010b816236cad584dabeaec1da76c97182d1b62f87bb7fe2946a64d10430" + "571b2b29ccf2ef72c969a9f045f1f3b", + "0401f2a6cbb9c1fabc8db2848c74d918312267888d822b7dfd1634a543dcca4be7c99723" + "9f6281d1d8b5da9adc694706b7b19cfb0c01bde57a2ac15f4e6b26a373a624588a3379c8" + "eec758f3c68695e2eb1856075d90085f43283d982526c5e57913cca5e2b4169f8f", + "05a3d856ad1d6164993cc59e70f8551e2408da92c7e6cd52df51b37dc22e9ebc42fbe6b8" + "3c332eedffd4086a382056175ad7009", + "0489b0344ae4278a0376dcc64ef9ba8595bc2fd62ad22d42fb431d2863d8ca353cd9e59d" + "e4ac10108fc247d6ee9ef643f6bdb3f", + "06aa27335e15dc910515385764387798cd4a9b4cd6d99d7c42e07fc04e2bfedf8dfaa7bd" + "a396f88253357d3e2545e895d9aa3b8"}, + {NID_sect409k1, NID_sha512, + "b976314d2f066f8893307a726f450dcf2cf865c170e90e6908ce9787eec48e1e2119a731" + "b2bec3c12fd4e6282a393774251bcaef91af6ce57c63a8b45bedd72ab862cd169b7c84b8" + "f6a72084ff823a96f2f8eff3483a7ebfabdabf0998377c5a6836d88135cf61c65a0ca7ca" + "57727da68047dc635c17ad13731035fe9a6402af", + "04717efef16e1ae267e155aa1daabafc68515aa391dfeb73c13d01f3132bd22c984228dd" + "dc4dff4c39979e7585acd3f730cfcfa", + "0401526c58a3de46c95cb0527869f7d637f9441cb5504e6a01f339907c6df3d079361a41" + "571cf0a0f11996028a41682dab5decf78601581903be8a19bf8bde1d89bee0d436f061ca" + "1a3ddded4b7793fbc32ff852671103f34e16d469eacdbfa457643d1b18dd1c4107", + "05c846bf61c068b421efc472469ab1ff8d9f34847ae0065ba6f4a000be53727b3fcf97a7" + "80362566e13ebab84b9ed5f0cbbc225", + "00aa138e742ae81eafa820632f31e87bdcfce6b909d85805e46d87d1cdb8b968907470c7" + "ef5806accbf6245628c70d264fdd95d", + "04df507115384327f7b8311dfd1227c19a6124cb9bb5901bed45d8d5ca45db0903f53e7b" + "bf136350e66bf2b4f3d978f8bc546a5"}, + {NID_sect571k1, NID_sha224, + "964ad0b5acc1c4db6674e86035139f179a9d5ec711b5bae57d2988456bb136d3aade7ac9" + "ef10813e651ae4b9602308b071d75a934a6c012eb90c5eb9b2947b50fc97b1d36c5bf9eb" + "13a7b06c94212c3dcdab402a563262298defff62b836ead1f78f9d20713710fb48115cc5" + "045ba15140fbb4bdf516e4150d830d02cf30963d", + "19cf4f4d06825499949f9e0b442586fe1bfe3459813a2b92cd8de0f775a4735e02655702" + "ead8e60824180761808d9e816d60bdb0238e1e8039ca7bb63c92e1cf8433ef447e64ead", + "04007b9cb1728cba80367b62872a986e4fc7f90f269453634d9946f79b1fedf42ca67af9" + "3e97ee0601bb3166e85357e8b044e39dcc19e608eaaa8a0066ffc48aa480c0e1e8d5569c" + "bf0580858ab9223c2b2ea58df506d703d64b387a78ef43846894e7a2e47c02252bd2c1e3" + "d21ada7c21d50a08cef0f9a189c4e850c058cc57c37918251b5aaaff2321d7355b6b5556" + "44", + "0726d5e317f888dddc94c73acb14b320ff509908052868f8c6b14e531ca467c1f7c82874" + "76674efd0d636ca94c24a69d15210bb43a368a11d3453d69ca80430cbfb8b6e45d8f21a", + "04ec6205bdd8f7eab414110ed620dd3fbbda4cb3ad9e5559a114ca9344782847621961a3" + "577cbbe43d94eff6ffc8dd7dd09c049239f026a928301ffcddcc910bf196853edc86d31", + "16535b1af98a75b9bc0f122ca3ce23a01800fa33b43584a94fd8a8d6f40077eb739f07c9" + "f0e179a157a28023735fc8da2e2ebbee5f7308925900e657fae7c3b321f14fc45346f89"}, + {NID_sect571k1, NID_sha224, + "baddec4794effa668cde267016dda67bc70b847919a9aa595f93ba9dc27354399ef7a607" + "fbead31e57a8ce698beabb10f313d393980425e67cf95be45d512f00e950c0c5409573dd" + "c3d556f23daf056259ee8914e860562a674311452fed780b3e0317a7fe93baa81fb98df3" + "ae4328b28ad0ac8f8ea33efe24faee658ad026f6", + "098521a732e72ed945a549afc92318fef7156ed1d1ed9bab93b581478cb2339eb32bcef7" + "05c9bf61cf2873ddbadff8ff3806740a2e30ce67d1807a8179dfd5d952e6f8a583baf81", + "0401e09410bf4f84d53a2abf8d106fc64e643edefaea263dc98c308aea16ec75f083b3e6" + "b442ab261226c59ca5fa622db68f5cb5f2d1d465b01d0048554b0ccbf67c0aaf934d2365" + "f60361e5b43d313a62c7b3897c7db8a42116127138a1009f0bf9892981fb4fd6ae231b89" + "40e7509f96e2a49285143010dfb4516ff810a91a4d9d2974c522ff343e93e8aad00aaa78" + "b9", + "128056de96666acd09b93c5db7ba1b8fabf57251ec480d42b702940b5847d2a59b04eb51" + "01bb3990c3ae2a41181f19a2afcf08424f8b922a95df6b292b1856dc4a9dbb1c717ba5d", + "163483a7e0d1012695ce0c113ec8fae3694bccd40fc038d4038f81bd39e71c969cc7f0af" + "8313a9fdd3d028ab24a43279569dcba73fd78ad74897964ae715928b1cf7fcb779b12af", + "10aac6929432a6bc7e12ffa86e4d2421e0535fc44a1160fcfbee477c29a987e783a7f753" + "eb2278ce08954c7e90284d2ce7c42de103a9c59d8e4c459b457688ad515cf156cfc56f8"}, + {NID_sect571k1, NID_sha224, + "7ef7138fc657492d229054f8a50dcafcfcd1dc06f1c16640af3f658907e2969248b54416" + "066eb119adbfa23b8dc578aef18bba79610b9cc109394b900a25e55a779230bb858b2ddd" + "9499a7775d392328db9177aa9571c2f61dd52010b48502154e914a0c55a54edcc04a6713" + "cf7bda8744a893926118b09df877d1a4f3d95e8c", + "0336fb21549e397a190beac38a1ee10f0551952da15f71e11dfda415e5ee08da2356f114" + "d450c661f52b2b32cfc7b9be61732672691a079f0927989b7e9f4efe6095a242155b641", + "040316800fa2d8f8f3f9aa87ffb628dd7b2f63d4d8389ee86ed41bd4c3eecd3f3836ba92" + "e2ff7ee5626213f9ddb41b43561c5dc0bcc3df0a872e4b8026c09c7b52b89b4975a43f60" + "b00207f956df58f75286232967dc1d3e6507634f45c0014c48b42868fecce5b9434463ab" + "fcd2b3722a7f5ed25607270148466f6ffad6a8c86e538640ece80e84f7368d33c68807fe" + "d6", + "1517b3524b6d43dcf3964f7c35c89bf14dd1542c37606452e2035ff0bd0cd1edd6d7b801" + "ecb1f573e957131c0b3f30d5006f6e4748a11b9db10fad41961f4ae53e848c6dc6e1a52", + "1ffd4865dae7387ed797c5ffe58a929cffeab521e48284bd7d4427d5856e9d2582b91363" + "f1d353a0ab1aabfc132a778a516d4033c64cbc991d724115d72ff8e94ab4f95a9514843", + "10f010aaf1bb714042fb8cf06a9501dfd1ffa598d6b3e68e7addefe00e18f3a5db8414d6" + "25e374d9ae70bea43b57c6be4a590c28e50a548cdb2e30dd9d6e3ed1d9cdada9f8b0049"}, + {NID_sect571k1, NID_sha224, + "d58e1ff1d49a471d0567ecf8f29173dab5fe5f6184ab4cdd095c231fa7b82551f99a4829" + "94a46c3d8ebc07297fc9e952a5dee7d5f199b119f6f8b250f8fba45701ac252db725e75c" + "4da27ad77d59a4eac448e54a277986740dfee6596811e59afc9755e53d24b826c09e497e" + "29e69a22bbc85be11763064e9ecad7ae66458ca0", + "0e287ebfd9ba294128cbd484fc5121d271cd33e685bb1804f09b40aaacf64b5a9f2cde9b" + "30a4a02d3a9bda97d92f46bb8787b3c61f280b1e1a0680f1f0679d3bb34d53725d62e52", + "04052903a7afc17cce078b4b658766a67f2f75ac04e296757fd762fc05d6a7b4e4151598" + "a872eb4618efcd06c43cdc3e54f437c0ef1b091ab5e4927d3ab4227fb24d4413e0327abb" + "840385e808bee8dad1a1b84d644aa29fec324dac2242709421479fa7a712d18b54db5977" + "8724ccaf4e51a27da090c6dd0b7967024db0a8684944b77295c9624ce3aba24ff48c86ac" + "85", + "15e8cb22e371965801d99407d96200015ba58fd7eaea52c03269d8a374fc7aef17fbfd44" + "80d29b781292e179936a68ed175802f34043018ed1d6b5a4df667d859cd2ae53ed3cfcf", + "0d3a57af73b7504ef18c03ed2c52aefe1d1a3f0e27f78c11d45e9825647d5ff6e97af51a" + "5e366e52e01e5e832e4264a1d5b6967cd9debda59c955568e4c8bf804d843a49a0c5401", + "064fd7ecf4470f07b4df3b3046041e49f310a463210571606f00a1915c5220a27bb7a28c" + "d0bcdbe374651aac06d4d9e017e31879b7819301eabfe3a7afe4b53f75ccc465815b4cb"}, + {NID_sect571k1, NID_sha224, + "4949ba765c14c31f68ee0ca26bb42ba2edee63537de4a6f5c42bbd862c21288d6ff48145" + "260365193c6fd2b56dfb014da26b8a483776b717c6874f627c9a622154b824565b23e178" + "240f53ee9748c45759ba5c035b584df0f09504e95eb9bce0301653aadb860bb25e6ea6b9" + "606e0ec3bdb8089e6aa0d5763d331757490715f9", + "149de496fa8f88b2741864d0c35b3df666b87179b7bd06cd426a45f13bc87ea9f50dea85" + "e1fd02a532630e0e3a231cc3e7fbb7c7ba85b40cff1124e72c677c6a3ea6aa40ffc64b7", + "0400bb610e4308e229e4b4ddddff5c4633ef2ab40bf74514433bd068c7d59a6260ac7936" + "6dcdc039d5585e660a4cbee990a2cb55a99ea3d26dd9df856b0f3ee5b968bcc349240a9a" + "2d03e3ef4be63fde6ca09f12f8220e1d9b5016f267ca5aa09a2dca8a0e0feda9647fe0e1" + "f7ecae7147a10ff893f69a4f74172c6e9a62f0c5bd96d49b47379c9c84f5ef8e59dea104" + "bb", + "1cffdb963c2c8b8609809e998075299776b44d2808df509773f310124b5f318d7431f1ef" + "8b38fac5cd5580348abc41e6e6396767f4780656361dc9a71dcc8e7c9239d6eec5cdb94", + "0982b9989c92e1a5d25dce832bd8a3f602f0eaea69abcfda285cb3841fe3f019503e6faf" + "8a693712380a48a6af8844b6bd718f0edf3b57662a4fe82ee28d036ecc4cfc7310871c0", + "1678bec58d69def3fe35a64810b27fd06bc29d165593990f6f42c4c7676fd5d4a965fc92" + "cf20ab8616c7ac7b4b308ce6290c5e8b4edf6859fd6f6f01878f2601e22acaeb5ce1f36"}, + {NID_sect571k1, NID_sha224, + "5bc63e5c50b1650f0ed4a599960f1e4e11f6c151b2123fd71d9e3c44662312a74b685429" + "0628e20b30eaba81555acb2fb49b640bdab2528619c7fcad0f2a2880c7ea232d427d7c93" + "5fba2313370fda8863a7e7e203d63ea15d0cfa083e716ce6068c63fa616ddc225c9e413e" + "694cdf6b355cb1293af5d6cdea51168f5634e878", + "17605d7c5873d870462375d741b4bc6375f3d47f7f5e9d998917adf2137a81e63b66917b" + "3dda8968930c4b850f2270eb3187fc756e2beeaa67fe0d73053e6cc0ff0004a21250551", + "0400d8ac3e76c25cdf4902426569763f4ae0638ebb1fbcee6e12a4e0b89d6d451cf420d1" + "0441a0a9984710dcac13bfd7ba70370afdfb58e2d982ac367e178f6834b4cd2d232e7f24" + "6e012b5fd5b686e58df08b695fc333937eafad6006be5a7bfb1426206102a79bc32fd9ef" + "46e19869448fed0e917fe059b76c8b5a9c403c3921ad07e6c19ca7bbfeff5491b22f8bb9" + "61", + "09179b3ea906137dcdbb97b27f3690bbe3bc4f1f57c46ed60b8503cae97602717a0724e0" + "55a5c52199ae3f08f1586b87fbbe514667d2eef2fe44092f3c916976c7b71eed67e8fb5", + "05b28342703c83ec2df898458fea6f71030e4e9c567d140ab09cc95df29ccfe199837cd5" + "8ed00d07241988bf3c863504d065ebbeb8ed11cdcb02da0a945ff38ca58d629f76832f1", + "01442a5606791569749b5a9f20ba8eaaedd1a2ceaab2ef55d5d41271ba23f6a5b6a33c76" + "763fc99b291b07283122596a3331fcc9ac038447f3e0cb54872c140300fea65d7809191"}, + {NID_sect571k1, NID_sha224, + "610f6633718e49d232b3798654095e2efa0de11f41258b27aa01956480c870d901efa77e" + "109d5f95f1f5101d3c90fc51312d9b3019d2e42e0067eed7b457dc7fbe5466923b62c83d" + "7347e4dada571b57813bb9c21d5e308519b8eedb7a7706508ad04aa69698e03636eb30fd" + "9fb363ef3a185756494ee01175b16847f5b68076", + "09214dc2da0967912c31995cb8f5bcf4bfa832c5a2d3610f3a9857e5eee7c77100d599d9" + "ed003b4106013155dffd6c48859b846e45e0ddbc5fe24f4891c9b2df51407e9cddbd974", + "04064376a92c1227c1c479260c7497147760c103bfa5be95ca1593f29a851daf2e5c3a5c" + "73c1fe3e6e2506fcea710254ab5eb2daf8aaefc19cbce7b1c4afbaa2fcda1ef85750fc0a" + "3e070638482e5c7c17a82980b863cde11294c0df717bfa4b9f884cbbbbf80a64dd2cc7c7" + "d89ed21e10561260d372da2fb726de71863f0f60e8ad0fa5e74fb5d29bae0cbe8ad6b32f" + "6b", + "0621176102c6ebc2c810eabab9f60feb71083c07751c66f719370713ec2de9ee3957bba8" + "d768b076885db1f226a9d37588abf1b141d81b70f0af711c52edd30e92e34a1d3ed214f", + "1a21d460ae85d0703b4b10a2f77547e45135048ffea590ce86e0a1c049f8a4aa7b395f72" + "3b7480cc84e33f4772df8f181f3919f3c0b0b4f276b0f855174103a2f7bd757584425cf", + "0b56bbdf6e2be1b9e754f9b48b3ba9a13403c17c5cfcc4910112704aceea9a34209df406" + "ee40e0a10cbc26d03839f95e775e80ec5e29b156fa277a5ac68abd99c7005ea6ba2695b"}, + {NID_sect571k1, NID_sha224, + "c548f0546cee0c0400401cd540a0aa9377f27ac64492e6baaf38e794db4df83e64ca3d83" + "b67bbb46a6c269c04c2725287cce0dee984a0d468c9ce495a7e554a6835d72c7493bfe88" + "dbd5a044a148c89001b8087fb03e57c2b7212d0b175d616333a9affd8a1802dd49ba9be3" + "ab6c6d9f99a5578d26cc4707a5860c6c804d69ce", + "042f2682e9ac8b76f3c0880e12c292524601dce9ea6982dcf68bfdb0d3fbfb50dc9229e5" + "4149ef09b95bbf624eb04ce1427077f30d8536be9f69970ddb449ca22ab8368d2689ed4", + "040116135b273ef876453b9c4c39e4be5a815874857f4a72602f0d03b4ecd9a4ad73b906" + "00c71111e317df0782fc92e6ce2b194c204340bc11e68cc22ced38e99f90dbaf0f917e97" + "0d036dfa65a6e9d0ba521ade7daa2f6b01e1d14fbe7b5abd29ae71c4eff66c390914bf46" + "f09f4ab8a06dc0fad6fa257a85f993d6829b5e0add5086b8fe2ecb8027d08eec1bea981c" + "c4", + "0bf116711b31ca347d41a6cee5aa13a74e042ffbf79d2ae9448598e6950d721b3773ae6f" + "25d7b49ca9dbcd62feb011d5d556bb9f8a55a7acc9a3a166a4169351bc31a293db68eed", + "11dcb7f4103e814439df22764f776a74aa86ce9717585712b224803f0ff193d5f541d941" + "42812c726b75e8c2c37f2a4c33db6af118af73d3ec4fda49cfc911fef1eda9a470ff200", + "15fa4ada3a6e95164aa8972f14ab7572a3b898feb6cde160b8f25094f67343d35e6efdfa" + "b18793f77e09e5a42f56bae747b2b66fa9fe1e4a97e5e05ca743c058b1024cc848393b8"}, + {NID_sect571k1, NID_sha224, + "9431c6c5237f6b4b35682a0c32f68752035c8b295a1763c5dbdfd73466cea64a00ecc113" + "56d02d2a9211dc54548f5db1651e4471898402c887fbf45005a3bda271df0158c98319d4" + "d6751b8ca6b07100182957d5fe0d97c4e2294406f83e9afcae4850bb089f2252490417b5" + "afd8f07f4c795fa84c9c7cdcce26bd97273c0072", + "17ed9a9c75cf66528428e85b0f019e3488af8b893b12023ff1b4ca9c3691b74e594539af" + "a0f4d7c3863d15399b862f15e27bb077392d6bbd546ddfd46728c75177338466eb2f4ff", + "040760779389124c702686d8d7c25dccfa74fb333317bdb414965d2c271ca5e687c4cca5" + "7e6f6149e1714551761abd4d651e7b04451d8be8e58c0c9e361fe0c6771e3d547d6ac3e8" + "cd052d5725d14b9aef93b83d638377f5a19e3cd6e3584121fdfc2c3ba1a588491d7e9892" + "be081c9e7585a15b37a9cd4c204054dadf06a9f4ebe98f95f6554941982faf109c2af98c" + "65", + "104ba3049a642d9b49c4302e9173a9efaf215b67e060c5e9673521641c9c2a5b14bad25a" + "448e46faf73810979a3a50104ec8c5230a909ae588213161fbc10381d7c75b35c84046e", + "1bf3e89fb0beb1ab854a5513278dbd8b9c6b05c94ab67145ceb1ffcd93d1a2aa374db46e" + "f327043518a7f272b957dbbf9d6cbd6708f4c89f05865932b7e816b12a59647d972f6e5", + "13a8c121c9c170b244ae3a55aa2d53f4ae5af91b1f72c066207e3f52e44723bd4ae419d2" + "4821b83648cd64fa70536605912a5a9319dc446a6b2b639cb99ed2485271acafc2bc988"}, + {NID_sect571k1, NID_sha224, + "417cd5f60416f17081d2c70e9a510114e08be83573bf9deae75fbc3095dffc8a7f7325f6" + "1f9d6565381710eda871388cb17619e4448836076338ee309a2bba5f737319002e259b4a" + "875cce1bb97996101c9a7abe0278dcac203a712f0809eb3c4b85a9c380550ab0bbc5067a" + "8edfa78abf03c09b5c08f21714e1022ebfcada4a", + "1bcc09b3f2f1d26ab9955bff7e8c0f85c8a61293511a196b53d7963f4a4503849c96fb4d" + "aa68c9852ad9185e01a35f0bf298e34a09ec352cb6da34f89a1f23e8ea27712a8f43aa7", + "0401326341764a4aea222e7413a4a6f7bdc0c35ba246e3c68728ce06bdb19f2e1b9102ad" + "d88a8511130ff48c0cbe4012ab52de93329670a319f6b1e7e7dbf177667d4a98d3891ec1" + "4707a4aaa73713bf8fb3907d49e5653cf82a9587518c2f8269cd1e556a3be3589dad4c23" + "8e4c80681e141be93c318f0efddee3e378cd46512d778b9033dc8706bb843a3c3546e76e" + "4a", + "13412a98a2c14a9672ecd42db9c079a689b147ad91869c3d45a7046aa9dfd3f31edb43ce" + "6b84e9edcd7e3ac6b96d89f13878cf5befb052a6f8a4e5577bdf916adb10d908d5e99b0", + "11c8a92044a30be397007a71d9af3e4222556a10f3a07a1521c1bcef73b4ddb94fefdebb" + "a5944d5bd91313560718a8f520bb5cd5666539756a5e9b66a1b2d18fde5ae72e61d584c", + "1ea510e23ccc7596db529dfbea78c99fc78ae53da32ad7c7bdb1df01039310988ea60182" + "8fdfc59a0cd237110cfee9de8711c073be44dd4d04bca4b1cbec278b1a9ef175d93f70e"}, + {NID_sect571k1, NID_sha224, + "eced8c412a153a643ccd69596389f83b6a36880286f8aeede503452bef8305942d95734f" + "b5733f37ffeceb1c2dae7b1396c3323de11089082745c28a1756f784423fa7ad68bbfbf0" + "d93ff8b7ad62220500df6d6895788402c1f5c69c06dd9ef55e2401cf297184e411be87c1" + "bba657f847208c0e750f94a3df92f253b377b4da", + "0ec52fc3d9c272ca80623e06b15c35f349b13548ef7ee400bbfa04196850b3b8cc7b2392" + "38c827f9b0a3160cd97969ce21d66752791f5896e0385b0527d4d77e4b9fc70f04d73b2", + "0405cd2e63dcd48fc793c18776d030398dfe3f8b6978eec6d23f49240581fe1e141f6674" + "98421f4c40a9430587fa282441a78bb641894cb79d929c299f1aede218a0078c247f7402" + "5200cd2843ca87d98f6336c0adb97bbb9c5293a03e5b86d5534e2849ebbd73dff837ffa4" + "88fad7d134908234d0d7fdac8c7fafb4729ecf0516c42995fc9337f60db2f36eeac69a4e" + "42", + "1c40a15fca0c959852afcb4ca6cbcc99fb680950c64ba18ae5388bf783052b6ef3730b1f" + "b1487189ad983b6a68bcfbb707466092da52ea8893d8bc4898eb133fd771e78379b9c13", + "14485cb1caf1527350587d6695ee3df2b21c13084df0c093ca5109d7c192e7e5df2232ed" + "e11dbe5ff2f46b13dc2dedb709a0fc1641c1f32857040147599d8f179fea6b2f2417646", + "1a16ebf12c11d2d0a64b7ea124623ffdfe2650fc9603ded571e76dbd7e3b27cd32fcb709" + "e2ba04aee0e8e1b942a4e829cd0c9683aee67eec27d4244a2cefc36f84f7de209e22a62"}, + {NID_sect571k1, NID_sha224, + "30e83ea39a92036e22b7bed7639eab5e5be1d00c20b4a9b9afa9a0d1653369cbef363c11" + "9cc6f921c8f84663949c8b8dc9b743ac2b1861a480476e9b64c8f333f34b6fa0e1ddf09d" + "49618ee4f3c1f46751b5595f0aea413d4ca46f3c26b974b112cbe99c813a96a4423764c0" + "69454946f213c5f066ec38108f947abeeeb02fb8", + "06403de7627de22d1dcf6b8da5af62f9ec59ec065cc1ca1311bb98aa439a6d5985619b17" + "c17a70f59e17cf180ea6828ef57f5f1f8ef05680a9fc12ab7faad5af61e4e11fb45d341", + "0405575c329d73f261ab6897153d7261f87e9730eb5dad49c05d782cb02e483fac4a9ddf" + "f31d2fb695a62cdc44edef6398be8f4f84aea1d63d0b3a771fe91889dfac4780063d2583" + "250183e63ee783abbd00547567bb99e9b578ad8ce63d229db41c6877534487568c423d4c" + "389154af9627708d8d8f863597bc668e88f9412b21a6696d07bba06fe7aef93b26950c69" + "ed", + "0e751a4918643ba3e68bd9406a4386e876d0d66342aefb4ef75bc4dcb8cb2e2d9f8378bd" + "02c388c776535ba85d24b206f5bef4b2f23a1c99fe2f2e8ea201009ca468e5b2e21dcda", + "0ad6792fdff4c621219549834cf03808645171d944088f5a6d3cf1bd826b5588544a32f2" + "31e8428a03ec02d6c1c1243fb6b79b1cc6d732be5be8f2cedf03c1e5588822eec559b7c", + "178b64bc5f9fcedab17822e831fa52d49ed10afef1c5912893df4bd8dc960b474ed25883" + "ddc343341b696fdebd06e177f234ea45553cc83920a8c799ada2deccf1ddf1dd9aed863"}, + {NID_sect571k1, NID_sha224, + "3ed244dc16a5cb292db4b1433b0ca3226913f07377faa20c6c1402cb4d026de808ca74a6" + "d4ecdd7c4e662105bff6edb9fae0117c50aa053aef677c0750c7a446edbb879110030758" + "912e8fa666489d702d8fceb719963b24a256429bbcc869a1f4ab9de9db89263e3684d4da" + "a1df2ed94bb59dde2abba63793e5f82aa2e4db83", + "01fb980aef64254aeb9bb613ff2fc6967503db4bc1f337882f1566cbeb57489cf32e34f3" + "10549f41cba1b951f487453c29753a184e33330e90d4b973d2e406c99a239a5c3f96233", + "04036ea761ccc71ba55aeab229aaf874a7c2d1ec15d821401e2988dccf02798c4e7bea80" + "d9fb8d30be213fc80475a17f45d60c53249b66858d29c73e73117162934dd71096d74674" + "2e049bc28f4d45d29c3560915698d03271028f56c29f0ead0608cb72dd0b62490f95bbd6" + "7145a6c0adff0d6ef396b4deea6a5e2a33f242bf17e907b136c039c127d6012c88b76aab" + "3d", + "0ed404ee6b59ffc445b16f11b9b1471249443f8a7309ad8a662b7cb44c94866828c906fd" + "64784c699cd29d3d972e5db3d42157452630f14536eca23cbbdd1d37e199e5a586fc352", + "1056938496df511d745f2cb88acad279ec2d58bb36498fcd8139d426d596de6d145b765a" + "5b3e8366845fceae91d14075356a32515134e577937ce2af7e732b4e89a9164d083adaa", + "0d5156c776f2184babd69c1f200b8bd94289d45a2f8b7cd8e8afb1455e8901d8c3ed14b7" + "a23b0976b85a22b86f3ccff4ae91e286f696f39646188b675895684f33f0368098fa7ca"}, + {NID_sect571k1, NID_sha224, + "40343935d9423ad30f3fb1832bb08a5d20ddb3a55b59057cd275320db4a5835471c96cfb" + "7d67f41ef860cf5879897b8dcf307bd1a52a6226847b768ea38ff1858f59e64cd635b51e" + "6863773cc6c64b363ec47ca39266422406264668415c189e2f92447ac4c63ee5d74e95d1" + "e6af05016917ad237f482ea0b02aecadd370a8bb", + "1d96dc09dfaf602789c1dffa5c9ba130832badcf180429660daadf4cf1be5cca92fe9713" + "173861670eebfe3a0ba25bcc76aecac60a756f07b69687e05c7e25984a39556469f62b4", + "040452b1cd70e3c88bec1fd0e4b8f8e9bd5f844ffc12f3d6769eeb1c9ea90e5996199086" + "82eb5e43b1d6eea63ba9353fb64b59d6549d19cd95f2f54156c81fba53aa0dc91244e7ab" + "8b020926ca366dc657d133f0ff9149738738ce68f3cc2f61dad590e2502e8fea714b8954" + "3f43d97b46b7075c58375efa379cde208ce769a16be9a377a111a8ac51459840a223f346" + "95", + "1dfd064dbe64c25a832faea1819cd836d22583fc40b2ecbc19b1f5173c25f33ca8cb7f30" + "bcd619ef73a4c14c46e610c8996059612728f508bf7db7ab3191ad61955e8b1ba409692", + "03cbb0ae5f7c0978ad8c10c4ff099767465ed6fefb7358f3eb58a79366707107cc88b305" + "661526f2972bd16923375dd898ae72e81f290b86cf9a4dec086d7ef04d7a7bba5087f8e", + "09f77a86f0da4e35c395978603cbb9c4dcccf126b7cc924cf62732593bb1aff0dabb6d58" + "321debad4410dbfa1fb8fe249bfc336db7669e4ee13485ccf8dbde01ca4cdb9acfe5e74"}, + {NID_sect571k1, NID_sha224, + "274567f8841183e68c4f6c6b36c5a52fb0e88492e4076b9cd768bf571facf39dad6affeb" + "68941ee326ee461ce1f33c26e4bfb3c9e0cae8241fbcc14cc69c1af68701fd0be3def1e8" + "7b7d52b682ebbe1cc225c1bd177b0886e3698a06d0e410a1f92c9bdf7239189f6acde0d0" + "653815a72987671b415d1e8a70e685d6e5b14c33", + "09d98b32c8eacd135ffb8e13223690ef02c0c1f29ea8b4da193502c8cb3f39f9eed608c0" + "2fd457f2fb685ec4595e8fc8f388d26778d225d2b18c9bc8b199d8b65c0d1a6af33854a", + "040775560724ab7d98407e20af12b03634a757037f8b3854957e11900d58460ca20d93ef" + "06436921f8d4481ff9123a9eff3973e17d441511df3cd88d0d6dfc8016d2cbfb89633784" + "6303082aa4a81d4e6f0ffc94511327202f2baed72c08026e05a288eaaeaa36a1a4961f40" + "0b4712ce68778ff38be43adc2222a986ef0fecde62f861575842429816c8fc77797af018" + "c6", + "1f4acd3430931ecba5e9d986c6712467526ed94a0bfff36135da3ba7dd9870ceb38fa0b6" + "58dd391ce658774c6725360dc20e5ef41daa9cf52fa863840ca91053e7287ed29ac69f5", + "0502abe544fc3262663524cf88a5bc256b20829b7bed3e2779f559506adce3c4f3a89e18" + "bfd31819f78ae3809d9d0710c6591b2fc90039328678aed9df2fae38a74b66f69295d82", + "0b2f055248d9633cafa4db3b3cef0b76ee02f6bda3d508e19c68870e76a02c69dd1013a0" + "3fd741e854cb34f815432bf48138203177141be7209e957f4db1a958fcd45421a213c98"}, + {NID_sect571k1, NID_sha256, + "d9c99b8da92d3c2e40dea3c4025dc37770e867c4d2746c4d726b6de24250591a586c166c" + "88acb8ed340e161d4c81b9d14c919a1b06f1feb22c5ce5fca2693bdaf4994ac72c8983c8" + "7f331473fd094eccb3d5f3528e69d487562fb5a65c150a8217192f8aabfa7adcfd0b6916" + "d5000248fbbddf1ca2f38e3d9ed2b388998b7cfc", + "04d873ac744c4f68bb044783ad69e1a733cb8b8f483f2695bbd90c4211282036ad7914a5" + "3b25c3e890c6824643cffbdc4138d7ff457e3fbb99387494eb5cf2bdf1ad243a3a1e644", + "0404644456a4e5c543af7a086640fa9ff6627c2d9f17066d255c3e805db31fb1ba895682" + "e94f6ab96d6ca449b0c3f76bfd6593d182f422689b31d9dc3bc0b70df210a96d19af9ec2" + "ac01d38f8572a06ce22c1586a8329f9421414b334352f1e8b961f7e0732ee01e838eb975" + "bfb2f62132bbfd9acc6ef8899b4fd388c2b59e564fc3670da7a008ca016de678d6dded13" + "7c", + "0b050aa7266201a42dbee063ae2a21398ee1d2a190de9fbbce2468836e416b3ec18d7340" + "c81fd2a5283713f9aba33e8cbb105eaa2abbf0b687fe2713921bcbc02a4b77df21f762f", + "08351115714bc8f29b84a6e3f0a23bdc219d4271a9ee18bdab54c3acc9cb3468beb1f89b" + "0f981da5aa7d7ec7ad451bc5e91bc98440fe20f5877a4e73614820b9ab6f2bad3e2e609", + "0c64baaeed68178f5a1d8f095b0932fb73f9a02462df5e8378746ecf17d05971a0a287d5" + "a8e0317db055b02d4f4b5864597d0f9a9cb1ae68577dcaf7db09c55bf3d3575197295c9"}, + {NID_sect571k1, NID_sha256, + "d2b88a01fa17703c99e5b867c645e98feec0d6d1afaa20a97b5fce9c23f0594460142af4" + "e36a5739b8d26d3ba35a0263caa5429b4abba157f359fce701c43372500fd2ae1bc2ed80" + "bfcaf8cab7016ff93d4a27f565b7e67fe7dde22bf02c48be12114fbff2421517c825019c" + "0ccc72d927bef156140d7f0e9b6ee37af78c3efa", + "18d2eb947297a054f8a789771dd875b12b26ef057fb91235dff3b062916f85aab3365609" + "bd2a38a861439c8514e33f174c198139354e63766942f605107cb1b9709b782622b295a", + "0403f6454f1dd032a925c6bc3e1c62892c1dfaa700d3badf83f07c1185c31ea817641865" + "a129572f3351340fec331f5ed466db7bea3ffa9723c951b518ce6f3c9263a7bd6866c8b0" + "b40188877b68c10cd6ee543cc5638bf0f82db25b9327b2d81269dc61250eecb976d6568a" + "9df29277836b97973e3615e0a4345e610b33909c2340a23c61dcc6e2baf2bc363a333818" + "02", + "0ec6af799d92ab52c51cebda61ab642d4876f374edb17253a1de3e880048355e58367096" + "d3bc0402e4b93fa6a6c8d55c529b9fd68a27962c19274393ebe1bd0b1197a28125275bf", + "095c42b3ef01c0f9ab96693526e903ef3ccf0d843776089d15e77093fa9d010872d65cee" + "1801f821bcce747ddc5875eaa462b00424e6cdf0995b87c6cf33c37d4463848a6ad7fee", + "0c4f0edd4b2dff4f9fd1fea5addef6d483bb51c27bf5c7aa13f9482243e5ed5571bbe0a6" + "58543c69b731de56b6b34de27795095b3676375cb4686b45d48010fe8c941208cffded3"}, + {NID_sect571k1, NID_sha256, + "a704a1428cc894f958774368979fe075353b56790555386e3b043dc6a2919b94a11c7f85" + "883f46b4d47b324d349c28c667bf9a000daaca1d7191f2a0fd97a4867aa9f72422134a69" + "0625408a9ea4b723704690b69152655f9e9dd5fa3dd94814d97dd4f13e85c3f9bca76949" + "1c2461fbd17e28afac00bfa81371d5039013da8c", + "0594fc0b7a5cc0216d2e78eeeb6394c8225de795f4b73bec48b2f4ede185ba622b59a16d" + "d3eedf8cf2c94f2ccd6dcd205f64c97cf1b7f1e34129e94b5129502909f43940dba0746", + "040271cbd3e0d73ac19b975559450d686ed67eeaab4175435b2801e8989966d7c5ba81ee" + "7d749e43dffa12efba820462bdb274a57d04cd7e92c180cdf555686c78aad58444d5f171" + "2907c407b46e93d4c2b12c967cd3e41320ea8535a2ff24372a5791fac9e95865e14d545d" + "d3627dcb4aad2350db248ef49469ff4d59a879a84a19d1c0e5d7ad3db432af927c88aa5d" + "48", + "1e730d50a9747c7c1ce2918fda7575bb81a74757cf9625d0f0619aab7f1eb6954dbaab74" + "9e573290406e599eddd7d3376dcb3fb98c116ed7b65729dd04ece3eab1d7b4bed52326c", + "00d59ebcfb30d7b27c87d56ec2fc9286b04b39e68dc49b395f374e19647bcc58f2fdce1c" + "0dc815cb2aad55cf863a4786efd6c3a0ce56c1d92aa20a19245e74550c17fdaf7a08340", + "134e80d63c9b328e02ebafb75eabf0fafba886f48b25206cca9086e03658ce2047c94a52" + "22a206c6c5a57ddb8f59c5ba1408fc56668066fef4557124c430cbd1267455e0b31a8bb"}, + {NID_sect571k1, NID_sha256, + "f8a87c4acadee27a908718461e3b45060ae4ebb009b10a15926460bf219cb7e75dc3a993" + "fb9a741b94e2fd71615c50f6df958568f452b2cc284f0516816bc0d2e2d45f663155660a" + "26326f63f4aa42a6e1cc8462a2ec620a365257ec042f55e4047b62af689592a1a072553f" + "f174dd629a4f51837780ca232cf479a68c1ebdda", + "0f000631106c5851e8ae0802b01e7a8a8540b427a8a3956a1d36f0600be89318032320cc" + "420931d825cc964e823745c60aad3437ebc1c91d32004472e9677605fb708e5a71a0d83", + "04034136cc7b8e2dcade5cbb9b3d0e0857c485ee791f862273749b5d3757d072bbeccdd8" + "eb81c67fa6927c1aa54d823193c370fc596d0d903214d7967b905292f4b96549b3dbc9b4" + "7d056f69b42b29ea82b9f2fc377e874b58ee785010bb7f5814907fb5531789606810b716" + "13a36035cd257864e414fe0e6ea353f398745df87ccf25b3a25cce1c78f61f5039d66241" + "e6", + "009781f5d960870a289cc20f6b1af56602e5e12d9a7353e81b89a90b0a9675686f155111" + "57d9fb70b82e8b2e25534f8ad22e14ed518e62a88f1ae21c56d4ab7763808851762d3ec", + "0f3eba5ddbb8c127419fe5e8cc1aae2239bfbcd2ab43a006020b96c9e7db832fb09e0bc8" + "87aaf24848491d4de935b78141f426875f7dcf2937748afb303ec5eebd01b6a82a8c4df", + "17acc35bd81cf24f983072585ee1e096459b408da909fd82b5ea86b77154ecfbffa7fe97" + "271f50b67ca3c29ce704b28186b831300db0aa0dd6147d2d160e4aff14348ba76e6f711"}, + {NID_sect571k1, NID_sha256, + "10b5438294a77c7e517ecfe8f8cd58d75297b14116aa93e574996ec4acb21837e6297cc0" + "e7e7b5861e862062f192f2206a01b1caf42c6d7181d02c7d62b76c2881f8479449b02d32" + "c6f792714d8f70f0c75e81c7d9abb996be87f5ad9a01fe42b75855558d5f00df392b62ae" + "0d258f3f67dbeaf07208952e679a2c573aca941b", + "1023997206341c6147c536d034a9c38b4012035dc2c9b7ef0bb9cfe65e7d788296f055d5" + "08a1fd957b2dc7f9eb10c27790f15f30d81670945e54a508c57b70b46b4a09f4c769289", + "04066bd3f503cf42a20cea4a55cab75940907f38fac7fb024c55245f02d72d80336574a7" + "2fb248b1b61e3205b31489ed789ee78d88e487db3f5a1cd48efa1487916b8707e72e4be7" + "e6010b6e4330af0270abeccf0901dad2f8f64f4993ca93a7c5281dfd71c6ec405f9a9bd7" + "8008fd22fef76fb79e20a571df16c4d97244c7356e3ad16cc489d3a9b2e3fdcd5f23b48e" + "26", + "09137bd8436dd126924943e8599c87f64564297117766580e6344aa3c02056c811fb996f" + "264ac4f8f0cb33eaed5ef8f120d43a1d2b3e5e34697765ff9db4b4683ce5c1596d74723", + "03b684a66e92d352847f63196181160db3de7a304b6e43679340eaa9fc828322b5b9c16a" + "1772c981ff0febb474488daf998d4acd867e78019b61804bb675a98cef24fdad088afcb", + "02649a94d2bc243e997bdf27be7d6364459c38845c3bc8d1c8b549ad4689c8a4b4fd5519" + "3ac769b1da607dc96458e2f6abc602bb4048cf6b0933da6785795d04d10f22e439748a8"}, + {NID_sect571k1, NID_sha256, + "d83a52d43216fdb16b1b40469863ca8eff4df9fa358deccb5ffd18b3e22a9d654aedc98f" + "3dbdc4f5b4e56b4299e25d8a5a38d01b34eb93de382df1ae4d1c7f966e84b84c393d167a" + "ecc6f1192c4b42cae83748b1ee3d9147ce7de74cebd122695b455e8082f86e3e488fb0f5" + "1b3b7edcd579940d1cb9d045296e5e38f201b7ef", + "11ebf320ecf6a908ea5b868afb8e22246ce84e743e1076d6185ec65dd79043380708bf8d" + "a4ba802c3b93b8d15509bb7d7de9dc29f1e9fb0f0f2cb97a26698f955b1f7ef668122be", + "04038b2760315b0999f9629922bcdff65cfdee4938d4aab8cc3d200aa9c1db843fcbfeb9" + "da10afbf10280110c49f0c18f15c2aac4f39af35a79557c68eb6cf6afaab973538b98b0a" + "6c07da55796396e919f9b5967608af06bd01e8870354317e76bcb8597a379129e35bcb69" + "bbf6b38911a03c3076f7fbbe9b179e078b442c604519e330282f6f6c21aba515d6d73c02" + "57", + "1c219274e54a4c5e1e1aee3bf805a7002bbfe1c030cd4c8a1617dcea2a14b1d537a64cb0" + "7c5a1385edd76f3e4ea9a38e38b458d2c7bf8eb56a57fd33166bf59a8af2e9639106929", + "08677167a7ea1aec4de76d1c5effdb5a1655965850bd6498aaa4fb3fa50f213fa4d99caf" + "4145b4ba87e34797babfe614dce6ac21d9c13dd0fcd9802b1414aa92dfa18318c7e57eb", + "048d6161a3739fbb3ee1c223bc82a46255d10a86a605f6c8e1934b13f1a8662f30f8e95f" + "53848119c61f08037ee5a2440c8faa11a6b1800078ed476b2a3f4cfdb25367c8dc2989f"}, + {NID_sect571k1, NID_sha256, + "eddf5553ed4db6e8ce72cbcb59fb1eb80671c884ebd68e24bd7abe98bb1f40806de646f4" + "d509be50a3fabfa85c5630905ce81abfad8a55f4cd80208afffb9056bc67d9dd7f4660a5" + "f924af2a3745eec2daec39a3fe36131fe9eea444b92d31f6a125f12125159ba095f89968" + "a7028549466f41ad45668a861f671050d2a6f343", + "0746d5c824d78f42a1fd63d8fcca61f154ba3e75788b7a0b87f53e5420e23a935b02eaf6" + "7bace8dd8a8e7c1caee30154c2428e0a437cf12e235f41c416f92fb54528865fd4766d1", + "04063645fd3810e2458d15b43287f329c354b07324c0707f19847c544f129e4de1799996" + "f805fab7dd356567970e10eb21d875e8ee7bbce56c666511f9b4a4cca986683e937d6f0b" + "3e0595485c9a7f2a97fa7f8453df13b75682931fae10f3441042199fedba91a58c105df5" + "7b83d2a3911a2d34a2d41e451d0d2549b0a0a65b42aca40aaa618c252baec171da7937d8" + "12", + "0674788e75eb9d5ceaadad9fae036f129178fde1a584d73cf284acae3b4cbcc208ae7a5d" + "35aa473f4e1201c19ee5bbe685ff9218a8e2188f3428ab45bf09b6b600fcf81fadd8d69", + "060d6dc42329687012a93ffc5b846b4dce3df46ad12eb61437832f81f4fcdea7392582fd" + "75e701e106e5b83521759da6a22a21addb63b73783592d3f29347f3d484e05c19db148e", + "197f3b2d4f3e10425f4cb60dd1ae84fd8c87f62a2cc822342d5f0be4f0841623227c5cb0" + "f8bf83fef483a061e30ecac86cea0210036083a99fa1247b49e19a7f401a815cb68ab3b"}, + {NID_sect571k1, NID_sha256, + "3db94335f6d1a125309622c0a9d71bde1da09371f0285a93bd0aac255fa8f10a56074e0f" + "6057f1b1aecf2d86a2319590ead96a2ad1336fe844e09339b456be32374ba2e659fbe9d0" + "f2cdd83444d117d2ce3204ce4b4294dd05405634b84747ffb4227160c4e5c2c9da9815b0" + "c6d20f55705f16cdbaa13d107ae666d707ccbe6c", + "00670e72ac2de50dd2cdd975a6cdab10ac45e37ef7a28c685d77447051496b5e161f8b1b" + "93f6c7f32fce8ea05e94ed35fd7cb28c44bf51ea29cbaf5aaa31d6abca30a89430323dc", + "04054db4acd0815aa7ebec4f7661d80465c64f1fd4147507549352bc07dfcc6041ad309b" + "fb1434b60f73b3d61ebde91f849004d55257e98b6ebbbeeabe960f9429a55a36ff75c112" + "4e05b6f36f76b3b3c780b6a70bb8ea150e9cd6895ff6a6765a3516acbb4f5efa91434def" + "52dd0ab81f618ff28db10fcf39264be8e7ea76e06516335ac5ae33ba5393080f11418911" + "0c", + "0f74a0ec1a7496043d78891e308c82b4660606642ea669e4406683d44b79dd6e6a1b8102" + "92bcd6a9f59bcc2e590518bdf2e9224755654026d85cf2a3d9768d909278448f0d63fe3", + "047d808febc1065646e6a5608d62d1445d922084487a64e9ced5fafff2977eb3a7e29984" + "230946e3fc77a766820747122fdbbb9100c591ad7c9dd29d07efa2e8a43357e3c47762d", + "04dd6c8ce75bf2792ef227cd5a3102d30a9a31690ff5c21354f8dac9f826c86ebfaa0465" + "3f0ead103b1c8ea59f0a78f5d4e8eab597ec6c028ebcc57f4ce4103ac14579bd6e15166"}, + {NID_sect571k1, NID_sha256, + "69166ba40768d0a3930325405edfd85f3272f7b8e600b0b319f070274c91f9f03d0e6ec4" + "bfc7b4445e91b87cecabfecf5e77c7301ee3c6b0affca2fa02c92216698705eb75443eec" + "c25438db2d2fb4b24f4195d6b9c05c53e0868d3e58477100607ffdc31b18c40b4ad7202b" + "b034e58653daec0f6b33c024d42a3fc84bd8f86b", + "0369a3bb96f884983c23281bcd04e24a3e5f6359f81e3c8e46f3f6b865eb6bdf98a630e9" + "0646275c587e41b546d3ca7688cc207afda15cf9b25cf83bd6ad27908647f3f9de59de7", + "0400eb02f6e741b3f83a9dc50853828b8a6e0861ffc644162515a264730c662ba388ac0d" + "705f8b36f5388894df5c1bbc3582c85de141abb7712caadd2d616da589bdffdd9258808a" + "4105dbf831f450da6f8e503c19a7788c1317ebe556a458e2bfbf3137f986c9c966a14ca9" + "0344be1b76457159c9d70f13af7fe0013cf605010a8a3b84bc0fe187c7d93e4cfb2639de" + "57", + "0ce22f7f2f01355280ba2d2cda06a55771e66f598bf79c65171e08a98f1d954e4beb3ec7" + "7ab06ee60c5fd156a7098023558e3d630641579cc179739bda6d860f8ba1d5ef717ebb2", + "0ae86b40d10ca45c20bdb3db55a6dc12e9b75754679eccb44c40fa57351c23c062282e1d" + "a9e1703176e4b8f7f224982f2474494772a20269c43a18a7a03fd12d8ebb975b83ade0f", + "15ff7b34c3316d9e7ee3d7b48ebf97d98453ca32f3fc67fd08761d93cf34cfa5a2314fd0" + "752d263c3eb7cf842aeac395d41ad3c04c1a9d3808b4fb7489e880d130c35a26b702952"}, + {NID_sect571k1, NID_sha256, + "f64cb668b72f1e6dd026a478505c0eb33446ae9a2993bc7648aaed02e172fa9a0e05eeec" + "61e756ba246c1dad7e85d3f01baf734b1905c5bbd1b08d833c2cf1e079eca75b866d705c" + "407eea8618d23ebbaf269c7185984b3bd4117ecfb295ee6b47eecc8d3a78bb96552f6be3" + "14656f91caff793838226662c75cd7804b6bef79", + "026717b039df834855511815d5665ff9b654facab469390ae257b7f0eb4dfe66ea0dc037" + "242ed0c13bf229b8f7ff26da9b55fe4750d3451c62804aad493c179ae45d08ece5af085", + "040191a6d1ab9cdda2d593d5598a966efff829c04c421804c2297e658adc5c9a6092e146" + "b25c730ff7ee65cb9812ac9ea0c18dc6b60deda948b4b7568e8b8e14411a6969d7764652" + "ae03744af98387421d958b26971d21928b73bbf5b0f0ef183e9f606d0348fa715f153a60" + "b6c7991dcefead2ebb875d0c1dbd3665dc42a241c565ea0fb0e6349b4319c3de633883a5" + "16", + "0dcd28cdfe9028a4a6df1d41019bc58e4a1540ca94b717d258f2afe8bec560f3028e15ec" + "1e8bfd422415961516659fa2b006256745e85e488c359e8cbc94cd2592bbb892a19c45e", + "07ba5911415a3d21a3d98b400f61eb63ddda689bfff0c8c3ab83668b1e4bf8a703c853d3" + "585b8bdc29aa2fdc41d5e7534850f4656ec949f0a13fd18295b662c9829723e5a7fe3a1", + "1b027e38283d74c962fe0e7b58dfbf5e21ce1d9c91651bc98284008f44fddfe4cec94419" + "94e690d72a8ff3ba2b538718aa678e7de046b653403f3b7c064ee07c9c3c6d23e1b068f"}, + {NID_sect571k1, NID_sha256, + "51ee0b98eb6a3e3c1afcb35a33697c048dbf61374629ac5702a57801fafbea4d6fa5a26c" + "9d1b79d1c58257ac0106387fab2d4a1b7f8c0dadcbe7c830613531b3c209bc17f792bdba" + "1c1fae1b7528aac53dc86c2094b40194577325c05d2258303a2d17c854e7449489c43991" + "b6877a50692a6340a528a6b188440ac0cddd4c4b", + "1d642f2d393ed4abea37173e4a79534af87adf534ead4a0a1c46fb047619221e3577e6b8" + "bcc776114d01159c736ab78af3e53feac339d7afe58be8e7a8ed290f1dad960f1b5de94", + "04023d1ea50229b70b46578df6904fd528e9930985426eb2f1ce10eecbc0c16583959483" + "80c4047d67bc4072be2a2624d62a301da41a5265f040642d1937fbbb7cbd205e1db85b86" + "850625c82ccff6047b1ef4b08f1913f7366c4f6c0312c21e5ab01b598d1a9618cf5c22cd" + "dc64a4732b477dd5c06e332b846c8015a2e5a195326bca46c29cedcc2f24d37ebdb7c2ea" + "ee", + "0c9066831d61a4192ad9de23efcaf578a5d5774960a2b3e3e292e0decaef62d1701b86ec" + "6183d8e17a699d418ef9d084b982c97a55bd76c8b038ac5c639451096ca4d331f070ad8", + "005778acb38b1961195d38463abd9c19d9e07dcd997f19676633fa3c44caa44ad1a9bd63" + "435f3138ad8f22a731e749a81161c5448eb462fcbcd69ec2255cc2923ac697ed319316c", + "1a1aa90113952608dd17dbf391ed56231ecfa7d649f3274774ed2b6034a2207c05c6d8b6" + "cec480ae27b58495a50b1e5b74a17ce6cf2e43aa273c2b813c0e6c79976882b7e4b1c93"}, + {NID_sect571k1, NID_sha256, + "feee50aeacaccb6b1c3d95c6524044edb78322ee836d8159c4a4c2cc6982480567c4c6cc" + "4806a564876622266e1ebd45f2f4be851b79da025bd57d0e6acce1ec1c8c255eb89713a1" + "e4897d4ee0f7a248b9d4bd3ad5dc0e57f60ebfb65691e164bc908956a019083e923cfd33" + "dcf37c735af3462768a1e14a8051d7aee74d5228", + "08cb70be29e83f697a3e2f67d86f1c1ec9a163b5335cb4a06004b6634948bf60b8ad9df9" + "b27d2bedc4975265ce44a7884e57082d521320ca4372d38fc77b18d3fa05ad8aa5c43d6", + "0404c042bde9e90b38b48e60551d832a7c80377a81e8c5b010d0e491cf765c432b5edb07" + "71aaa5f672edf3ba108dc71459d245ad60f3884b8cf33f8cf797f36b20e4be39c8389e66" + "b4075f2454c41c0323ee1a640755077d36a65be7c2a014db36719ec217e21a9c004bae5b" + "efb499bf6be67e82d3da70475abf9dfb751c84c409fe838cf1c6ae109d27f24d75c02cc5" + "b3", + "186f16dfdd7a71f20a5e634ffc465356914bb52286d3d5ac00f3ebc02497112fcd592e1e" + "cb2ebbc819e07ea092e465e66f3e58da7a2ddd41c8787f57c135ba4c168539b4743c3a5", + "1c2140d294fafe3d9effb33ce73bb7e5485c93c7aa9d33b7535c7053831a1dbe79075713" + "794c87e52bc887ded969d2dfa6a1e2630cff96760310e04cd2a75be6fa020a12fc84d3b", + "110aa165707b7de1b3a8e05e4502701abb5ade0a27deb04fd93c6eb24ed2b67ade6c49d7" + "8e874d25247e948f704d3c5b925f84c5b07c9b289c4f8507e75d0f8927c6dad6dbce885"}, + {NID_sect571k1, NID_sha256, + "b115f7370d6a93a90fd9dfdfb292956be34b61992ce1fa5627c5e928d74bcdeea66d4040" + "c473306a0070fa8363c4303bea32f73ea3639b5c6676fa5a1d68a2cc1f91f00580d7453a" + "23ae70af4cb1f1657aa82c5b305374effe5d67d559e46a6cee6360503d21070506f1af30" + "bb000d2f2f85caa6465810f89968f33abae81cb3", + "1eef463771f9c6285f3257691dea0844687606d4dd00b6020517f190891cc1be97cfad21" + "d147ed8881b5a6e19b22ceeae30e1132476325f2de0e9af2e14c80b8c780a9d2d6c96de", + "04024de3ebe03d2d91b88794a77635aae6743e597410ae10c356a51e3af88fa7f9c4d648" + "c7d1fdb887c8313914ed554eede282b24a2e66aeafcc0cc96907bb2f3877eeb97df491be" + "f301ce1f9fd4d7d3870997f34f54f2ba8f08ac94ea94f74a766f2dbc02e4d5149802e313" + "5a2d762e3b8abb01461968f1e88cfc8c7fda49c099e392e80d57f0c14de9c4fa1eea2573" + "2b", + "026b545702baa340fb6d1bc2bb96f7fb1a77a2428cc122ea380a258c747d4e0625bbf4e3" + "dbc2ca2f15bcfea92f2417cd5d22f2bb5f38a9ba313b3bded506d3e570dcbcb86c2debd", + "091c162d040a12f08a416296a43501d92e2ecd6be302b5e1754b9ec119fb8a572626c509" + "855c7c868a07b263f66070ac986f95e4c83150a5a492d5ea8a7f8ebf556c17ad2bcc996", + "00c217fee7bb202d6399f6b1ae4e5811d9361573ed4fe1b3fe5d474cf06d0236d59dd358" + "0145dc0bc7632c721b6463c69490a67d1be1fae99e34318af6df939f9f7f36a9bb8d5e9"}, + {NID_sect571k1, NID_sha256, + "726782eb0d9720daa64e4a77b5d8dd67a1a193f15eb6b5162e3d89c925ba63b7c7e1c4bf" + "c8d6f11915b0e14d16ab53ab015317bd5958b0beb6074199e05181915496575768d026c2" + "3e92e06016598de008c3718aaabcda8b68bebca0a73ecfc7327e8d3646106b7d114dabc4" + "6cfe56265c326ee56fd2ca87abb5bed8f997c735", + "13bd452b0880b101df1aa65724fb60d5d85b37ed5419027481661a3617e0fb37bda1151b" + "9b5b41f908ba832011f7850b75a07b678e5b8cb35c5fc8b94a625e4398cd5ada2b04cc9", + "04031d88b62d2edd5f6ed29258c143bbcb3d29413afd8f86873698a9efb8d2021186415d" + "301599232989a0df5ea91ca222c5781314f200c708de30751feadc277d50e64842dd355b" + "a501c76f19ceb1be48f5540265b8b018da62fc225cc0d2d1675bf7df71456cc8e35b002a" + "220e2e80691600a2c1ae31e980d0cd22b4741c25bfbd413f10b375a4d8adf70a65c48ff0" + "06", + "1b9235221a6df49e39b4cde6650e994f624fcb5084daaa62aef54bc154949f4da9074636" + "c44f50ea40da1a3f01bf67e9b62a725ac0537a4e37ba33fdea8ba8b2286bf82901a933b", + "01dffcb5b5eb23694da4978419110ed2bc7961c571a2e68daebe21e598c8b483b34f3178" + "978708db6d78455cc1fb4f73c5ab7607cbb4f05d4d008c7bbeac88562fdaf7a370ba394", + "057018fc97d7b16d69af2b7dd4a859f09dc178a6025e1bd6839ec7c75c0383c59eee7079" + "fe61aa6bfb3e2c780d4ac0ee074e6b13223c239aa60ea1187ca4937864f89e2c65056b9"}, + {NID_sect571k1, NID_sha256, + "1c2418243fcd89c6382b7c3b2a8c341f26d08174a9e9296c4a5c98c5793a0fa48dce51e3" + "0811a96b515aa22bf9af89a43de06d696be1e531c5dece1f69fa6ecb7f20be063c602a16" + "454ddafb14385ae3f8246c3f989d0566e06e7ed1864502896ea19df8393259c4dab3b338" + "0a4a80b4103cbef4f38cb69198b7cf74ce94883b", + "1288141ec2244e4bb3f62daf4ee588aed09ce22be55e3d42e9085a947c1f8cd16533635d" + "170bd64ae0b417346fa4670c25d41387acb2a8e14407a1931d9f7c5358a14eca40974bb", + "0407ccb7b12a7d6997ed2a11eead3278a3f45ea284dfda8e17f6d926ddd6881a44d02a0f" + "7504dadbbcb0cbd6b85c113aa0d3b4efef1ca151cc38cab1aa8360a6d22e3d6fbc0ed980" + "d3031b85dc2d2096bbba6c465629ea09ae3421cacc5581770ce3479070f23b3aa938333c" + "7c691d9cb93a4533b2ce389ae34dbebe8f333cef530abe17cd21448f701608febd42d9bd" + "c0", + "1e411ab53c48cfc1ef9eda97002dc9181a78352de13fbee3bed86cb00c10e7406033fa0e" + "a97b50764b0eb2dc6eb8ea83e47bb3150ecb9437179c124f15fac6ac19b0c8bc324f171", + "14420d78f2f9f1010018848b0442ff6e6203c1dc06a4d523802190f462ed3c11c7aa7678" + "bd03ba27df01cacf4121309551877d3a2bbcfee116c59926daafce55a4e0a7d69c5c938", + "16de0b369c28ffa0bd6ed8802a503929cebb5c0a4bf0c0e99b14659b48aabfd08bcb64bc" + "2e39855d7d514d7525b3c4dfd2244f37019b5f86254cdda599bb144c8fdbaad5525cfad"}, + {NID_sect571k1, NID_sha384, + "1de4b642ec7220c64b91561caed7832044d6e811ac909f3b199cceb0d8a7db91bcdc8014" + "12044f5c34b355b95a2c6170fe497f6d5259bc20715a38cb0341c88e93029137e94d895b" + "ab464bca6568b852340a5c5d6a225475f6eefe2fc71ffa42f857d9bab768ccaf4793c80c" + "4751a5583269ddcfccf8283c46a1b34d84463e61", + "01fe06b94a27d551d409b0eb9db0b163fadcf0486e2a6074bafe167f9a3b4ce8ac11f42c" + "f72f9a1833a126b9473163d29bca2ad139dd1a5e7fedf54798bf56507326fae73a3e9a2", + "04038d4dce42bf8fffc39a5b6583a1a1864de288ef8479449d599115bfa35b37954ab288" + "ffbe81e69d58693e2c8c81639df12e4b36f62b2ab042e92a0715b518c63d0ec630051d4b" + "e1059c72c0bfb0ea1ac5e2fdd4fc380d08037a3d0eeed4990ff02e6cf5a16817ea598085" + "e28f8269da86c547e7b34e16a06724ee73776529c5b5dea4ce3321fb168827ca1cbdf885" + "6d", + "0a3b18c8c9f17badd123c674869ff428d533d2ecb8c74f9784220be7a90dda591003df52" + "59c5dfb612ac7398aa04cc9e82863eb0cbe66b6e7f45dd15dad252f74a538d5f4354c96", + "09c368c80f697c1718c55482b2c6c5c0edd7257a3a53f7193515629aa40a9716cc889d41" + "c120516b54f3a106a171082364886e5d3a1e9482a103f072988f61de68f034d658bd976", + "0e782ef47b250f40c56e3ac4de112347174bd59fd4cc991a2b538ca90cdb222d048fec62" + "e2773492a1d327152d1d6591740706fe2f8e1d65de888d47fdf173b2645813ac0fc3078"}, + {NID_sect571k1, NID_sha384, + "70279be7d7ac72a32606642ecd81b5d4d0f95fbc3c0b07d85c16adf2788601e44dedb8e5" + "5e0f9e0b4ca3ca35f5be7511b0e69224a05204af67aae11ce154af6d594d47f6e3142ad1" + "83969544aa95cae1edf42bc699137f60178c12b10a67698e37ab9f3edbfb3acdf1b3513d" + "62fe3db33b16cbb4e1f9dfe732c107f9d0c953f6", + "09cdc7e4945c485a41728f83d5188f539e372ff4fe38fffcaacbcb4522428e4f93ef4972" + "556f4398fe17bdd885768f0fb5590df495badc794d4d274e22f2f4a2535555922fa43f9", + "0403c6f046aa3007ba7f883bc1e0bb43a9a0a1daecdea3e2b6c10b2481d11a834af241d6" + "0cad7cab27b677c9ac11f2e5b5226c0a3de13029229af00e5a092340af9b230e0ed992ac" + "f406326ffcd62e1a68b63ac680a743130b1440bbcd3966207dbc8a8f4336eb6a7986aa53" + "cfa4fd7bf363b30706b4fae01568020b41caa70ee3d51db982de66b0ee39777da3fecf5b" + "01", + "0c717523a308418eeb2aeb816346b74149d56b9620774cab582f01681bec73adb779bcc7" + "462fff35685a4e1e114c8fba474c68fe2650344fc9cf610908966a9dd1779f76bce0cdd", + "0061067f377bff6a9be30c9c79d8abb7f54cc8f09eaacdc190beb27b1e6d297cd32b043b" + "31feb49958745b78e42ac074b8722e1a7653bf03611d87c44fd3891ae410b23a2140b83", + "00edbe756a5dc78c8a29baac9e2059154294e3adac9a5adeb7b27ac6e4d4086821cbd554" + "67266946ed8f6f03abff35b59434afe84067c1daa1e0bb62ee7c56b85e7f831eea99047"}, + {NID_sect571k1, NID_sha384, + "4d7e0ad520445b6a5cb46b7c77fbd367614044ae6004494c2b3a89089287e2836c73b799" + "cd8c90139eac427ebe335804c3788f3728ffb8edd7f49a4bcc76a9e24ce3c2299cea88c0" + "4645b82033115380f81b0c1d823e470631008d350cf0c0dba1915519985b8a389ccd8c80" + "9dbd5bb5051a79e631916e0d052d9b6cca18e0ef", + "02bc753d007c4491cfb8ce0a6c96455acd16d37e02c982db216b8cc1afd6d10c6be4e15a" + "3988b8b8b86b2b5b59a5c1939889024849317f27ee08a06bd8e7524d4ad83a1de208564", + "0400ea922b09e902ce3847f14d3b3afc5562dddf15811cb2e7b9e06e1b919d795f8451a3" + "dffcb92b418d30bbbd1a7ccf827ea0f1f6554387fa2fc51755799040133d7a655c7800b7" + "1301f12439a0c0df9f6ef08e89eb1a62e2cedafc0460030810b2483ad9427c48dc061e46" + "40ebbd9b4a398841c863a6e3d510e5c66934d66b317b1640bd05018a35677c6ac2c78397" + "06", + "0385f9caee4731627276875dd8d725fe79626c18841562e8a13fa7531c7be9adca565c22" + "459d519d643ea22478d7c51b4c286920b050bfa54ab7d42966e389c485b52cdb4fa1a0e", + "02ac84262fd121bbec43e81021c0f0610fd2fc0b26d66581ddaa78714ce58be469652838" + "51241d792ad6bc79af39f09d2d4bda83996ab41f1fd206b8293cdb6c4eb9d96f39efa25", + "1d9c9bc330adeee8f58ebfe8c1ba401d4433efa04a44185b0e8e20b634691bfe058770d0" + "74289e636af3e96c118edf31d72b5766c30f6fe84ade42f284fc7f2707bf27b3a309638"}, + {NID_sect571k1, NID_sha384, + "d49903f38b5c9b17542310425e59377f61f5b4f4740cd97371ee2116083f7758e69e7e2c" + "1b0950ec6b76f96e3c91c721d6f2843afde8c7505a559c8a64bca2e665aa1131b75bdf86" + "fb5b90581c7d3b61c2cff88f3fccf356ddf5ed282e27727be061b6925c51ea7f1a495f47" + "1dc8a5ca1a88bbe29e92338d3c9361460398965a", + "02082c6e61d0d72f040905d8c1c20d47b029f41ec68d6cbf43ce97c3b2a0a770557a33cb" + "803c432cfbd3958fda30ec1bba77a6613c318597a85ad02b26c44bb77ca96d9cc1194ea", + "04059ff339d505b307e05adb45aa314d47f2450e1b1aad840b5550a67c11940d0e786547" + "55a8e28fb651e12e48c66cc1ce0338114bc1ffb00965b342ef3a3caf495f1d73a69c3f3d" + "170724e9474e6de57b9f8cbf6f6bb4f73f5769e6cb0e006a34c2510b379995c9e054cc49" + "81c709ca85a3aebdf29090ca07dce5bd3c313c6153b551012d72a8f84600350e8754bc4a" + "bd", + "18d65ca6c2ef1fb32dddfb9ad4603e03c7cb1791a9ec7b41266cb68b6048aa111f5971f3" + "cbef3f0dbb9ce409b59c31cc59bd6f100ee5247f8c36f26ca77cb252331fc3be7346b5b", + "12853f9d695b8ac4431c1ccc8498f3fc4916eb6a5e66b3795a3693f3f5a29ad13e58dcda" + "ca5774f1f295e2d2d3c63c69abbcd9f388a3383371028fdcc8bd77f7554d6aa3f0431e8", + "0d1c324afdf01ea19e9453d2b7397584d773716d6a08b6e38f9a9fb104122ecfcc9de7bf" + "1e5a6cfd52a08b7cecb002ebc21798d474f035fe7d4554bf632f237bce14aad88b47d4d"}, + {NID_sect571k1, NID_sha384, + "0e3f4afc3e7b25c1bf2d98098a5a87db1224d9bb45adc6e434732b8722a708ab80a1f3f6" + "ef3c5aa70d2e1dad3e4416b12cc59171f05736c4b58bd084602c344f2f0bf3cfdcfe04c6" + "4e87597a99de23ded64b33607f7c273ec321f6462518715b11e91361e89ce5415bfc2ef5" + "20bfec378244a3bd2a4b9b6b3d68815f2f75baf6", + "0e298c93351323e2c5304015a4878997ae4e79d1c32f1dc64262e534d4f2c4b3e222356f" + "fce746763373fdfb936fd330d3214a18c07f1205b20c9a941331cd676040ba1fe3dbce7", + "0406ee4952a83477d89ea05ae63d5169cb0f7c7ff22f15728c6d69dfb30d1f28158e2667" + "f9342cfd9b32f2fd537dad47c190d82f72c03043f2a9c5d97cd09d07ed4c35b961040425" + "54026d5935dcebc0ed5a07b7ffa50de3c8aac309dddb61b8c560230379696d81d72bda3c" + "819c46387e7f026b384bb0f7b2ca90c402bb67b5e37d343cc21a8d1a0f822dbb2766030d" + "73", + "12d23969d230e0e2712f96b11e196202dd3e6ac755c824f92b9c765e3fc808d4e7236c8a" + "3c06ca2c8272c7ac953fdb936db30d892246cbdcb7f98c43177e1c30afcc162af511364", + "022f6dff5bc1eac1ef568588e2e512103cf56ebcb610e124a125fb004064a28291c19e83" + "ea08171bd1b14ac729392c7c46354e795d63e3bb087fd100642465efd817b79924408a1", + "1785e1fd773446e3b90b8704cc2723b8da2f99d1d699e817c3c4622015d178b0cebc19b3" + "a6dd972f75eb3828a386973c0a5e67ca192d69f1a84c825d1253f1062a990c3f1a947c7"}, + {NID_sect571k1, NID_sha384, + "8fe32671f6927272fd3cd8dd4e34d44d27fac8c88b41bf9a48039e914990bf06d1633b38" + "b9200ce1c2a275b9c55498e5da2d0707322c3ea0a0fd7aff598fb801628264e13047c800" + "8153e8595a0dc95d54e70b882ac2ac9314d2b78e7b93922da818d7075215e354708994af" + "66958954c92c074d132dbb2488e5a531c755a8e2", + "104f4ad56594c5cec2a988c5596d73adaa5a81802b40110dbae698ddb1f0b271fd1479c3" + "8abcdb9b234e69cd0da8a0328d2135c287d5b130a09fa0b899058e7800eb2dfcee95c1a", + "0404e8151aaf2aa6a6159622baad134be41c404982bb0101e820eac8f0a52166546c5392" + "7d9b419604e9b025757eaffac526d4fbebde5fba0841c6812dff2e9bab5054d4074a125f" + "fa04413639ad72d6eba870e1760c71966544f3f881f88880fdef1edeff47cf6c235e8dfe" + "f1eb1d8df51f9c48b985912f1f70b61fd3d4b859e052887560872fe6e95db0f435778d5c" + "4c", + "0cccd1bf3424d8bb0513fda3db93e81bd34175d84aefafd26b37eda9e767618247bdc94e" + "d2b1882bcae4c83eafc30a7a4a80806fda10a5e70b8827287eed8eac2721939a63c2175", + "05b1460e856548287683dfbb93efc869e80333a9ddcf292e2fa3b3c8d430563a01340685" + "c6db1059aaa8b298c8db9e8281f36e3a9664faa17f413cb439ef24cbdc1a4d58872ff6b", + "0c6faac191c95738f7c6ad0eceb035e5d22ae85e4bd0e27f2e65ab293717c0491be3d1b5" + "ace80f4cb4bac7e33258706010c2aa48d84c9e39c95e30805fa7669c42bad84386f7754"}, + {NID_sect571k1, NID_sha384, + "a8fa01136a0a78313a5d160c32fe5d1805eeb3730c18ca0c47818e82c48eb4c9e5b2dfe3" + "ee5facef9ec59b68f4e6f3213f77fba9f8ba06dcde546ae348d343233883894f4423331b" + "536f62373a495852977a51cb192cfbec04b5582b4ece69f345979e234de32da7a120138a" + "057a7119735c4cb19099bf48bb202e7ffac04def", + "0c4989bf33b3136bcb4ba67906eaff2bcbc6567635aa4b057acb7353ee87ba3cb4cb9838" + "f8f679729d5c6ed98e6c4199cf58605f009c6873a1b8321f83cd3c0973b7a3cfd9dbaa5", + "0403871c7781f2b4f653f0d49a224576bd1e5363d5171bd21da89f590f49fc212d8a57ac" + "8a140d923c2949ca287bea803afd763f15f909c099a07297e8ba1b37c70e1e8f0fd1fe9d" + "1c05806bd5b4858ba0814da2167d232d55bb5c41ea0a36fb28a0a151c1b79b22cb16613c" + "cd9dbf92174e42578ef88f4da6eb44918acf427fb7e4022da3376243e75410ba6ae012dd" + "fe", + "0a9eb767077886c48bc54503a0d2d62f0192d3581bd9ec253107092c22f68a15293d7c3e" + "7aff56282f0cd35e86a2b3c55c9eec079201d99b5f49946780ce6aa18b225c2dfd72cf8", + "03eec6ffb390ecb2af4f5ca17fa8a7fd6938667b319f0f61e5c7523efb77afccddddb511" + "4ca8c461b1c28dfe7eb85ab156e24e891cc6f9511d703e8b3c8443d04fd8de80f5d65f9", + "10cf3156cf71dafea6a0d6abbd503d72b13e6a684076ac900f390059cf3fc325966b3548" + "b58e14a82bf291d9689783b899db7d4baba524b0b63d31f9900a84fbabc2ccad95742f3"}, + {NID_sect571k1, NID_sha384, + "ba2d83b21c783d6ef2f3b7b10e910a418a9b9f49ae0fd37990335b3a3d15627846c9a12a" + "1f31a3d0e062ad1bec5650606ed4dd06c30e50c1e8761a29f4ea1a20f74635d5dac22e5b" + "787ac10f4ee82b338a641484f91771c128c84d31cdab0a6b9616078c898665655ee9dd4a" + "e73d33b94bf091b064928b959623aa71ff73b4db", + "1a96f2ad56e31397e236cafc108087479c9823589a5fbc3dc7488d0e5d1199cf245d7f21" + "f524cc0e8b47feca14c93fb760e631434a91188b32965053942f3bd39b3714f9d6f1a11", + "0400195bfb66e20ae295cd22d59b27b3880a890fc44ef5c720b568bf7f72266293841dcf" + "0572063a96c62736d9d4a9cce31b10c03016305a409858a79070477d3e989481ec555c81" + "460491122a199176e2492e07fae4ddbf02d2a40a21bbd99b8f742b546db2018cac27fb4b" + "1c03cff55f61b7caf13b0f3b097ffc8e1549eacab89225e0cf1e96b268eab7f9a1a69258" + "f1", + "097e28225aee5bc9a970a150502dd14bee900d3b040b0da9cb52f5824e66af46a991bbf6" + "423fe1e089cba47593af555b07b45e47b0f4141b0412ddf6e91153213c5b8645ae7bab2", + "1439928b55917e93d59341532cd1f9d09de1f6e0d9a04514bd4b692603f2cfb75a579301" + "b39b8cd92fbfc8832839691c23e0ad3efd3b4c7c3e9a366c1554c6dd13c50dd087b3055", + "1fb432e72be6fc524a7106b21d03fa71852c18c67edcb8b265db3b144214e7e6d10caad9" + "1f81616e03ae7913fea1e8d11e90d54b17705e8d04c8c20f0f4f46f117cc423ca178ff5"}, + {NID_sect571k1, NID_sha384, + "ea2d5f4e9797bfc2f33f0fccaf530db2bdf8abcec00f09a0338eefdba318221ec0e050ca" + "d1a85c3f76b784c6e8c18da2b062f333eeff18b7b781e67d6d0a4368b8231a892e0f4103" + "012348e5df53ac745e4d34e2cd1ee9369f97d4801ff485fc144b2007008036bbc07cb1c3" + "02a00054b54f3713919191e1d5052978c9c2895e", + "0c08ed8e0e0f8b0d0714b46a2164b933f8147692f18da97e5a108c44d5a5cf221cb50536" + "e41832b83bff4026c6df156386235cf5e3e9a67b7cf9b2fa7707c5e0ff33a91601b8e34", + "0402d516bdd1914c83aec1cb242710ed79efa61cbb31dcf8d238d8f5e089158b2ee2bab4" + "07e01996a1621b1a869a98227c12296cc2a71c1ef2d0f26bd6614f2ac77008048abeedaf" + "cf0151474bef5965c455eb95ca2ffe1d589107dc251d22635f4a9fc7270358b64e4d2b81" + "666b60c4a5c49902b0fa9963197b22f90a09cab97007842816f64fc49e351710db849800" + "32", + "01125bde6086753b3bcf29b7d5a4fb0a8abffa6503b4f0b39960eba226062bdade57e4d7" + "3e8c1621792626203e83fd5c231a53b0ce10890881460802788d481f233466060f73359", + "199a1e40229786b966592ae6e275874ace23d5605d0c3371a4f9eca7ce4858927958bc1c" + "2780e9f2f79767c1c72117c79c408f972006841cb621837ac002cc6510e0432d99a1f64", + "17f4e5e23e494ef149e4abce2d8a1ab10e3e6c2cc93998fc63baed6565ed350b220b2828" + "55e2824f398ae76b8679201b43450f62237f6fec643ea659e6c86abc24a63d82d9bf219"}, + {NID_sect571k1, NID_sha384, + "b2293b0a09f41decd9d8e637b1b08c2efe612f33c9c0beebb6e05033c6103b958f8aacd1" + "25d7c810b4c287349f5f922d2c6ed554be597fb8b3ba0e5a8c385ed8ae70d5ae19685298" + "f20e8d844fb5ad98db12ba7e5f45baed9045c3e86b3cac9bd55b614b82fd075954fc59bf" + "c6124cbd68edae988596575f379d8921b594c75d", + "144090a0ee38cfa21fabcc24d35139a99656911ad4f6dbffb77dbe74e7993edfa9fd63d2" + "c4f6bbdbc8ec21ba13c9f4a3576b5d6e3abeab5af5ac81b1f2bb6d4c42dde645d854d9c", + "040208729b3c7abadfc221cfad8be642588d5d1c20989fea731cfccef25886905e4b1e61" + "cf9548d89c24f5706f5243dc8aa7d5b2675c2c6d2755ce6a12e5b12c28a2cd9c597b7dac" + "b303db73ee445ffc0f6c77467f3add3b1e97061117e221687f5589a030f5248bb959bc2e" + "d98c9fb66da8679dea3949b77652dcf83ab9c50a00f6a9c22bd8d16e093b2deca4b0c759" + "6a", + "0adcadb26626eb9f8db9ae98c6808840b65d6f886a3f0c45f0b993a8bc62bb5c08dcd879" + "40dfef4f220f5e50234fba3a55e7127fcbb967ff78ce4fd6938a9bb653747116541cb85", + "18f7fb6ee028c3dd754d6e7b687560fa269b5a5fabb1d98529e0a27dc66bdb1ed79b7b5c" + "64fb71e767d9497b9255f26b8150b9903caedb25f51594f5b7ec2870515f701bd68faf5", + "09ca9519388402d5d96dd9ef2d4ebfd0ebcfa58bf8c1970d04851b2409671c9d5e4aa833" + "555df374469a4d277aab93b8df8d553399908c930f81c2d9769f1b30a13f61c02b16852"}, + {NID_sect571k1, NID_sha384, + "acce54270252e7d9e983c08c993cd6b7e3caf482a9149036afe4665bd3d0662a68180471" + "87872862d5718b8ac063477f693caf1a9baa8bdf2f36d411a796f2b46ab56f66bc949242" + "29f8264016d6769c85d9bbb7d6bb042fefdb8fde1be026b86af2017aacfe38c97309b468" + "9b23fff94f1de880064f1d3ad9d74dc804c41f41", + "1df26b672b2e3617b6b6c631d3c6be0cb49c0a690de49643e0f416215bcdaefc03fa9c70" + "8471f1d87476d58c8f147517ec8a14aa945ef001fa01984d5c3d81f7083ea500558fef4", + "040767ca8fe8f3a7addf01b230b99499b33c83db95db05e1956fb1891fed60406865291d" + "79b0daca0c307a3ec8b1bf2ac2cbab728c6ec65c013e01775ee21a29305e9403f72883a1" + "3800acfb786b09e5185dbd8abf831d12967107dc57a040d7c800d904b530eed1e19a8e52" + "e653fe8bb824cc424d7254532d0fee62e8ee7ce8e871cbf6e4ca3bc040444585b9a4e397" + "cc", + "13e5e47048122c8301258c638bc0f00f8f9646cba927335535f68f4f4f51f23ac5398ecc" + "21eb0bfe8fa6a2084e11fe67587bfa791cfbe2527797a4d98046f9df37662cb7e86a5a7", + "164b3500ad14063101b6c5ebabba53dc5acb4d6771d3b05a505e6a67727ca8ff73d996e1" + "329c0f6d8f738237ee0f0be415003e2db515ef93931e09bdd853b9497826929eac9e9a8", + "06b65511990c061a6d2a97fe2a5053c775ce2bc5471865abb7261d0436a04b79baf41a0a" + "852a57600cd4c6a114b3a8466f721a684aac2592640bc149980545daa271fa9b146f2fd"}, + {NID_sect571k1, NID_sha384, + "e25274ded4840df0d71d3369007118f002b83e2d375c78f7e29ade067db15cce21842611" + "f3f015db2efec57da77cb9d16eb1e00a8c1444d48dfda569e29fca1ebf40a22fc646a9fd" + "44460f0e473bde487634bfbdac2c312f66a1c2982c6fe76c54ac72b6c8cc9345e47cb319" + "a974b3cc4bb40634df74b4ad7e18adfa9a71ddd5", + "189918b832e9fa30161fdd927bfc267f6405335df3d66d225e17173af52a671138883bcb" + "94c4403ca3e001fcf09ef4c6488934d6775af2b1da30a8f331579af2d0fbb530298d8f9", + "04053e6b43c0551f32b7b34467d188985600c5c0ed12448f2e763609f40039f92002bc8e" + "70d8dd3e337c3507fc996a1557d5f2fb3132507e49ce653482cdc86f6ca5903b77fa1619" + "d904a9ac78a2c23be0841b96cdb1d55862e4854b530f1fa3f469ba9f7185e3f91c28d03c" + "27d9666345bdbc7a44764595b303f49cc43bc2d0e944862913d280273cfd00e15b6b55f8" + "5b", + "0b47a185140b583c330c64a10d50748e019134bacf153cb4a23753f140a4d607d5771a8f" + "0f535f9c35baae5ab6c37a55f38acd12f15be18d5bd9662383b30e4d0ce487e8cb553e9", + "1a2ae62cc9560590177aa544945377ff6ab1b34e7e32a25140f99996c130e17001563664" + "7756a5e8522c936eb1389c206ac74c012941269165f3772373047521f69510c7f3e6acf", + "1d86f4a6ab2bba7f6305c2df754652bad40d7c273ba2aadfbbe65c07ede4ac0e65fc0a37" + "a0139a6ecab296f58c6c2532701bb008bd9e1ecac2771d9384aca094537fcab47f3ef06"}, + {NID_sect571k1, NID_sha384, + "d8a4aed87c316012482819b03a1d91691f2ad11a2f46082497ea8f64880d686891f7da55" + "0b2ac17199c657d4eb9d04d5cb8eaa180f743b87d23b1c86103f9e9bb60f4e19f0ff9d16" + "0f180aed7735130c03adb62502e69be5c624ed7bda2301f30580ae0921b02e103a638f56" + "23c02c186e3bfe6ff134c762a2bcac1f879a9353", + "0bdcc175eca3a399b944eb0334ff33c4fd130999c8ac0e7b52ac5b774fbad53ccc3a3102" + "4f5262b2eecfeb2104b14bb244307effe3dbe8ed25686dbf46a42c4b6f8e34010ad826a", + "0407ab1a9279a8408828c2bd21ae6c643ad82633d636d36fd91498cfee49c8a635313f56" + "993d02cc46da3f5b78fd243516cd23c14a4c8d79cf27dfcb05f52f0cee59cad5646a9389" + "b80799beb1ada93a48819ab70b74c36d2dcc3c5cca1f7a57ec58e643924c3ceb7a90c9cd" + "9bf7ec762a2c428d16ef431a45cd5d069cd828601f903cb0a28182af2392b5ad12ac3a24" + "c6", + "04ad8d2759df82dd70ebe9f3402d3d533a1b4635dfd0024deeee52b32373550f550b9fd4" + "126aaa6c3a9b1f352c40c86e13f78e259abb17f85f0041e0cca9e2ae59f4ee3ba2fbc83", + "1cf9ce41dd5dbc3bee9f46f82e4bef10cefe79a87e8e00d002097045b9acd46364560e0f" + "d27b0be6655e73b5cff272c8764b4c80ce0e1c91a94b8d05209a28b553f589ee2fa1b11", + "149fe587b144c37df2c48c2b7749c509421cfebab734003e51383cfb773c3ef5a24fbac0" + "255cb807f5b95607121c5848d3f9656227b61d5a14042351de084d9b88745be242b6158"}, + {NID_sect571k1, NID_sha384, + "acbaa5ffc4eee0850075c0e502a70cc7a897a919f5e7bca4e798385601a26f411fdae546" + "6ba9f6b6d8d7f819a749b799fbf4a3bda9105063e74914e8583ed8b31ea4d22164bee6f1" + "4bf53afca269b901c80cb3265be32ffd4ca4bc4ddb83e11eff82ead6d75dc4aec8e5c67f" + "35d58a8a156cd1c0351abdccc0c5396c8fbe6920", + "007ab5a55a1d8ecb7f5dca2afdf9ef465569a4b0374716f604ad42a6e0271e934b09655e" + "8e2529784b69b2894bb399b02aeeae30e9e7ae70a2a8e56b9e775bd978a04c728e3951e", + "0402df88e368c8162c1dcea5ceee3a4c52cfc8d6121eb81c31236ba26dfd1874c61586d2" + "daacd96cb5ebc7053be57641bf53bf2651cfacf370cf470db86e1470bf285c7166c197e0" + "94030067763f9fa6a9082ea16dcbf53c2b6f11c9ba1817198e5a4e189dd98141ab682ba4" + "de0b3f873ae54efc080a2a03f755efeba3c0ade8ea67228b1a5a11d730302f1eb7c6bc37" + "37", + "0d3dd75ec61e0f87737812fe1ac86ba336b1512bb9f7ceac2c7d1a5b4d5dbafca57a5209" + "028cef9468ebdacb2a35988531baa094a1c901d9650f2c5d8e03a1621fb33ea85e2b506", + "184a98dec91b9afe52d4dd6b2d9f2d7e3c42e8e614332080aafd2621136ac7965beb4e8f" + "97b222c1b2e5448b79534db4e710331a2f877f8fc2a9259129f0b24d24289495da22542", + "0fa384a04c4b0b0745abea373aabc09404a6037f302e234e7a2840ff39c2b86ae37c814e" + "8bf3f3f7cf743748f2b88d02d66a3adef2028de94013c07075fb73f00555aa900337149"}, + {NID_sect571k1, NID_sha384, + "9a57b63a4f418404e8f5dcf3052b9bc04a4f6d2c33bde8651506d9cbc5542ffb9023292d" + "ea463111fb78913ccdcd182faabbff9164219b8900c7f9fb394f7d9678f77b18f8d58526" + "ec64d7c1328953b983a7c416583e05a069cd76aefe26e5f5687b70abfbf9f58f052dc086" + "3b4fc3bef805cc3bb05bf76a83235af9d6adfe66", + "1e7d4da72b1d82e17a066fe387f2a0a7fa4c60ab993ee09710531789186077f2f32b42dd" + "da497d5fb57356383e1f96973df043307f0b6519430c3f0d40d62954032872fceb7dce9", + "04037c59e95132f0027f661511d1bedc3018bffa62aad7f44d7370f5b169d683882fca3d" + "d0c4260fa8f72a47a44fb0fdcf0d7776ff0632378022bdd223753c66f98dc04904344ac7" + "4102d7f19468b8e4f32eeeaabd6e402a35f38dbb9f2476cf07881d8bcff170b0a6e1ff8c" + "b1bfdcaff734a32ae9bf34a909ae7fee689e3f1ae777812a45dd46ce13fe648016353c6b" + "b7", + "18ad70fb9c5673e5a39b3a1655ff76eb84519555a6cd88e86a26f9448a54f04516c2449b" + "ab3f75e74a8d15c69926ac43fe01ebbe7e1c97e73870e3cc4c0ca431cf614f35659e3eb", + "12abdbfb2eb08e326289fdf5615057d912749db4f17848c1ac73bf6a51fbe3e1b2732d4e" + "b656715a6c459c6c3065b67b577f21b8eaca7d657c3b3171e8a4849f55024c69487e50d", + "09609da5049092e0aa8ebcf10c204de54c968b09b9bfb3eff90b80bc675d557967b35f52" + "e459f37fd198a83a858e5d7f9f5aff8b2ef7272b236dba5857e88515ed471a60bf6da49"}, + {NID_sect571k1, NID_sha512, + "97b79c76d9c637f51294369e0bb52c4189f2fd3bd0607f91834aa71b3555605a89ff68e8" + "4fb5bda603f502f620e14e8b0c7affefafa2f0b303009ee99653ae4550a05315e551dd12" + "a4d8328279b8150d030b03c5650ed4f8d3ba7c3a5361f472f436b200b321e7863c771e20" + "ddd7bdf739c51de3676f953a5501e4477aed1bd8", + "15b7271d4319db5743119c8103a7d4c6d57e9c62f3eb93762156d2ebd159980aa57cea94" + "8e416717d715a2e458851f1b2e9ad4172bbcc53861db29c3ee0ba8e82617a5866170847", + "04003a5b9559b2058299161770166766aa65e151ac6a22a90205afd27de5eb99c5b1db36" + "9ad52f09141d3bf08884b96414c283b2669ec2a2a60c960a2f03d425dc4c229c0bb369d9" + "0f0024f3a9cf3dd257043dceefe6617a98e222e1cc820f3e19e63c64fdcf7ce8d9c7af73" + "23c9aaaef4df02e498597581082fa3767c8a38f508f4ca2c1eed6f298dc8142668a00274" + "90", + "0c585e425ae4a34f9b7b9205f095ea07599716f1eab1a8bbd934219ad760c4606ebbeb06" + "cbfd3952e045a040b8ce20603aea4f965d1b6e87eac7a61672823fb2de7767e3466c730", + "129162cce6fb05e1fc8630ec6c3a16d108bcd251719d89631497177e6fe6d1373f114ad9" + "dde6e04a4ee0b4747f91c78703012e5a058c132d54f2ccccfc0f9326b27d60322b497e4", + "140163edb5f3c4b49228e4614bfc6da9f73674eab82678ad9947b2a635f733dbce99ce32" + "09f613e2a75e62ed84db4d7d13de6d789b7cfedc0cb6a028d8316db8831db66c91791c5"}, + {NID_sect571k1, NID_sha512, + "564ad0e37c9c37a60872a4780a723d08d1159ddc77bd834d74c1025cdf3cbd5338c3fc07" + "a904fcad9b979b2a2ceb1a0139af35e5112305fd662a57af6312624b9bdd3a64849f95f5" + "9a46ca8feb2ed56f87f258518947474c1729275c4d89b7dd286ed65f286cbac76002cc63" + "b92a73ab6bd13c4adef282f32297e441bdd8fd36", + "07219ea7917d174a5386df985d0dca798ac9f8e215ab2f0003aee929a2dbd91e37fedead" + "0ed95b1e8aabcf516bdf54337b4aff7ace4c6b3179f2e919a49db50a41c9d4d58d4f636", + "0402fd7f6ea770e0a6f1eeb3318b6b609c0e76ffeaa34e75f56910e8f658b70940cd7a59" + "18328473b279f882816955b2e3702c22e0b3e03863f8d99c64f3a2c9d1c68f59a28eaf25" + "ad06c2cca84218aa019326cadae9639069dd27df4d1e95a4c8e7d7cb426e70e2d38650b3" + "82e325dc3835afa719145d16a29e4ff67de37ac8949641f0d140072f59718450a6699732" + "06", + "03413376b32f18385cced4549e231e514eadfe05fffa0b252732f5c88d13d9c6e0c35be3" + "dbf72029be5e4573b8f8829f6efbf58a12b5c161bb7055d1944eecc93f82c12c5c56d9e", + "1c45c25f3e8eef9b92142f12e4119842122ed7672fdd82c14b3c34ade3243a4c50495c06" + "b5984d0260376c4fa44c60b2e34b0084066d693943071bb663a44884927352668efcc62", + "08cdac0f4498173bf4e59de98ac9a26fc2c752cfea7a5b75141d4e1d019e25d70a717ac3" + "ebb82884436ebe1007b0488c4ff29fa31fdf02f77fd99535c99b69c9d4e5f432516da77"}, + {NID_sect571k1, NID_sha512, + "072ed5b14754fddaf54e20da42432df49bef38f4a3b1841b2db457ff86c44880727aca94" + "5770adb41269df41fc17f6a687bcaffaa45a3e59070526ed53b8dc3b78cf9a80a85461ea" + "f4b477e44d5ec4c2bab9c05aa747a5a520b35fd09e8b44539d060ba1c3470267e0dda111" + "b15dbb587614a46e1e477127f963a16cf3a43ee5", + "0bc623152253da24bf8d752bd78aedf7d5f6a2f889453ccdec14e10753335ea8bea83fd1" + "81a1f3680ed50f2324fbeaadae160cc85831750e021f3e44121ea1b1efc29a7d0069479", + "040003f3a6cc6964ab2f6da95c0a2a7b75afe4f77faff16fa28aa67809afd9495cde1f5d" + "ce079ec4e15ec8c1a2095a12e8adc409fe8729d865f50ff31ee75d7d807afd2c15cb142b" + "e9076b15c1ce931ba06dd56dd8e4f544425fba4f37f951a188c8e7eb13a2850c93b8ce60" + "f10b3783647a2d053e2764a957656a184a385e95c2013685d4954a2b2aa20e4a15dbc43b" + "78", + "1e091f4febd694879f78e83842572280daa48db65c463e66d9a7ea57b82fda531f116800" + "530a03cef2cf7e5be5eeb6e420213ff757c27b8e8a94513e417f4acc62adc02a76a4fdd", + "0264c499f7daa6ccaaf191d3502e86458ef088c9bf2ad989851c221364b24a1a3f4404fb" + "d0eb44a41938ac6ab67002faba0bdde7f44ffe6bc10def8317c4e2807c3ca711cb6cd33", + "1b91c18fc55635c5e3cff70503e7a49572ba52b11bac193230c88d6eb65eff6b2d9a01f5" + "3ab0eb34f5e208538136811157f872a8255b4d249b6ffe021b0c0763cde4d7a7e72b0b3"}, + {NID_sect571k1, NID_sha512, + "e660dbdf3e61af39b83b95d3f1970f66d616f03273f7dddb98f768452b21cd39604a31cf" + "80590d4a5e4b0d4917519e10fd325dd4ab7a52d70d154506329baefe0d5816f514ae1094" + "83122b4fa8fa1ebd7fdf1fc4e21e8d278a50c05d81c8f489596633d949c6c8fea96fe914" + "30c01522a5afbd5042be8aa47da04581b2bd21cc", + "0645947d981d258f2954558c31022a3b6ba5fa7b675312f794cb61bfff1d9ce87267e4a1" + "dacb7c8fc58624d31c85ebe22f80d26a620fed5df5bf38515e0903f0b69a606048197d8", + "0402d03e05c4b555943fd69a299249e7148e99633b286da69bbcda64e7b06ce9321d62be" + "ad7b8d095a68d9a3ab9e9cf1aeb1d8c4904a073c21806830451a79fe7a907b32df15ea45" + "67023cba4f6f1815cbe1934734a901206596c6f482011f6cb6d452329f9412d2ef456642" + "9e7d35f2d247eaa7849ee141bb16914b64920fffe6b7923cfb19759fed6e1f80d6c40a0a" + "e5", + "18955bb752f0af7d7aaccd0628dcf1f52d836fb91dc78b0fecf21ff5992d9c1f891f0eb3" + "c139803b88736ce10ba4733a523854c4ae9ac35421beff9b20e0c8daf90bece46737579", + "110a428aa96277c9a13d4529f58ecc57cd7209a7340b4a78694dd9ec800f36c9c306221f" + "a110e0b3fd65b9dcb67307b7d7678997a3143c04ba96d72be83a1cd6b01ef22acd0f82c", + "0b7ae2da5cd36006a92a5b2e6369afc2728a93edc845ccb1500e551be361f8658819f7d3" + "eb82ad41d7f2beea1a1cab6f103238a6025acbf03a2b08339841694022c17db8c6c6886"}, + {NID_sect571k1, NID_sha512, + "8c9acbdc431565feae60e08bc7da113e12372ed373f1e1fdd581f98c8a7b0c79ac4aa42c" + "7ffbc963fb4970fe26c5b5dd314b7051fe971c1186ebcb5650f7f7011a924de893f06961" + "b8c75da7bff331847feead4abd2e8b9d6ecbedac18f4eac207b948e6e4215e4d5cb483e5" + "c66ce7ad788cb89604d3a3e051539094079e7bdb", + "14cf93ca69d94ee8fbea0c8da9d76aea092b73073d8f5385b65c6dd4d567fe86bc2cfb8e" + "8be890c3c6cd9abf7dc3a17eaecee3d7a9455887863e496c48dc3e47821bd3d825b6bed", + "0403dfd1fac02ac4bd3e3017a3d94f29575238937824f80ba0b2eec185ce8c641e9fc721" + "94323c779dde8c4fd6e748e09d66e82c82add75106a0e1739f2b977d40ecd3cb15a1eca4" + "2006a73dd31226adba7ed8d08476b5af10a806fe8de72251400a83f6c9f6edf5e0cd6bd1" + "fa8f3595c3ab32b4c4548729c455e4eaf83230e1335cf181cfea6b6bfa6cd4ad75ac3278" + "cf", + "176972d9402d5d6c9753532e5ea907f256a872c100f87bd390c4d610bc00c408a97bd55d" + "ff2de1ef2fa8b9716e33a5a39bb6ed2ab541848685040656ad0468b360f42c3742c1fd0", + "00be28427524a3b0979cd82fea407463647a77ac45c489744a9998b545a13516abb9213a" + "b0d89a2f5f872d927ad48dfa502de95524f94f34b174933f3faa7b554a1c2c3a688a0ed", + "1d49594454516c1876f23f2ba0b1fa4dd8bee028bed5524b7635a2df5b8459f4832b3db5" + "f6074cf07c169cbfd9099a85ec2f5c42043c5b851c81a71c87affba34b11eda67e0ab69"}, + {NID_sect571k1, NID_sha512, + "53ef87d6ac7b9698f40b3ea9f3442e7b64207b140b7f66f73fb7d5f8f98452d30a4e493b" + "6c0e3268371e88e612b818d4d847f032ed4983817d020411a52d81fd2a17b58ebdec199d" + "817c2a8ba77042bbd747a6fd4bcc7e844ea829fd8461b389aa0b5957d92962b6d4e86385" + "a8fbca90b8fac40944607117e9a4ef6dccb8fc1e", + "033feeaaaa28f16bfaf5ea9c7319cf4561ba4fc55327a8477b6cd58ef6ccad3962ee1f3e" + "db243f3a04e7e49c8e23509fa2d63252adb186b8bc7e9255cd61fa9bc45242d42da3a68", + "0406fc62c39bdd41ef7083ae10dad59e38dad217c55864a55a6a80bffe2f5e7da977d79d" + "b9ed8c9ac22d6f096129a0c680ac93fd77da4ad96e292a19b48454f91c93a3132559fecf" + "07066f1f737ad3af3df674637aa5efbb844bbc441966bae73973481628e5c2c67cb74553" + "a7c8f2c5fc478edd8265bd6c99d6ce122a245e46fbfc21992b950f04cbda5eb220261316" + "c5", + "0a5b86b76f98310a25111cc3d1b0b70fd0c20208cd0bfd8007cb569a187c3a97edd8e716" + "aac938900c3ad8ed3a0d091a18555ab532b50f25184454d84af2beafadf754862b8ec74", + "0de2eade32f537727eeb82dce610b48106b277d15d8fbdb77cd312ab9983ab21bed05f05" + "186a5cb2b530ba72c8c68b768c26d942f9224c6e6b9e7827c48e129833cb679c70aeb29", + "15e4fb92190bbf8dcf7548057d1bd5e5ec54a6edf54f6b88f50e96ac87ed7a7b7c0fe1e1" + "174ba3e822fb7e7c083948296cdcdcfbdc4bde036a07f84d210001ded91c554ace71efe"}, + {NID_sect571k1, NID_sha512, + "dca1b7a9a313ead11c2d54739d9017ae27f9d08b3544e418aee862bb57e427636cb6aedd" + "a28e10f12aa15d2355f4f8ef112a86fec5dc46e6acef693cb8fc37c3e4885f3be3d3ab31" + "ea4d73a0de904e95c7135a149f77b621d642f9bd8ba192d39cfc58b6f19a797c4f3b4f3a" + "87054298e3ce5eda0ff7f44f8134c9a108285dfa", + "05613dfb53149bf5fdc4e08ccc1c752b0b66ab43aef2d008ed40f3df40fcbb2938d2c41e" + "3ea2dd4428aeba9059a97efe5593119673866a19d27a2ee37dd357e22b6bc849e7e22cc", + "0407ef12ccf6b64c7ca64b5da45937281ec770ede572b9a8eb685f3614bc358ce550195e" + "74666af9bb54379c1fe1304b76430d1e51a9976bba02e5781154c9bc187a31201ad99cb4" + "8e043d4ca20f06b26d75be1454e96f0568bd740165a2bc6e5b8429d557a79666bb7b9cfa" + "597d392cc5b8ecd180c37f9fe2088d7908e59ff644ab05568d974ab42ec9e01676e1b241" + "69", + "10b4b67007af35942216e9aab1d6561bf7684f334a80c7d909a6154cfde8ef06a148af10" + "4d534d7dda59b5cec7949de4086ae669edcc4d68b88347d2445edd3037525c97564ce78", + "15bfb47a27c6970fbb3256410d5c2f6c04eb308569a966790636899fdb3122f9e3015455" + "c4b50a6bd8cf519afc22ea845794f51e6994214feacf48322af48590d02cc9812960917", + "090c61f6c64381845491dac81d5273d58c59d9cfeed214527a52c8f23b0146431692a25c" + "bfd77abba22d4bc61ef24093c593c827ef645853bc8deef7c3b07bae919152b90c17f4d"}, + {NID_sect571k1, NID_sha512, + "aff61d62c8f5c31bbb7d0a64a6ac589e918bbf2f13e7ad13abb9ac26405e267249a7c992" + "2139bc28140833e10976b87e91cf28285274b2b48b63d24ac94c85c70fafa78f8ad05955" + "c0ce6c02b841ee196dab12306e3e3d6138371217e2b474f7e67a80bbb78a47e374ffe2c9" + "f86292e471c551da50d46e7b5c8331029f369767", + "11b92c8b72b86c51903387a65aa206988d443d1988253329ad3a89c902ff1ef8cf73b7f2" + "e4aaa352443bcb833712d94c3e637ec12cbe4c2d4606878576b17fae1512fc77785b737", + "04022440b63bb4557996b63faf19d9f391c5085cdc2cda3755622a6cedc676222ceb5a56" + "ec36e220e507973c0f07e4b2e2d565a69967804ad311f0658a9854b1eddfb5270f4a86b7" + "69050199c9e443555123f153249cf7256dc3e82c5d8cb611adca0cd4fbb0a9a90296bfa7" + "70c1b0c0b43e4363b0227273a9ec9f00ecf83afc605b0dd2e5e24f739dd0b4ef6bb11950" + "a0", + "0e5ebd85f5fd9a9a81067fdf51b1906023e68672d160ddcedeb35787688dcdc314359ff5" + "347907b685a718ce38a69be17de292eaef189fb9ee8c63271bd6818904cd246503dd227", + "051387b0d057985dce86cb962bbca7d9a047f70d96c20539ae7d6b7cb8bffff606f03b83" + "15f15a53049c6c1c227f86d395c2217d32aec32bbd406c790a6cd2706775ed8a0ba1ebe", + "0c7f3b7e4a8b65a58c1280110f6c2486cd2d2df7d48b49074e98accdfca4a72fa7d43bc2" + "5c6576279f4a70f22c98135ba79158bcc3452940963b556304da8e1ae88973d827bee32"}, + {NID_sect571k1, NID_sha512, + "721017294f17ef351e41256b57a64a79f3636628c4bcbe676ac9a2d96076b913dc4b246c" + "9945183ec9bd2d251441b5101eac44e2fa1bef59dec03ccd7fa5accf3b7d094d68dcf78c" + "8de4e2f19f56bf0dcb3b66b9421ec3f8b353b9fd74feb2e9affe0bf9aa421b6f03eeba3f" + "fd58fba56b3ebd094880e50de01ee62a108a24cf", + "0c3c90d5ce4375a08b85575faa78ee6bbd9e5571ce5a90582042617b807339c282cdc3b0" + "03d82006264b1c08c20af4ad4549fbde53d262facb98d923d81b8eb6093374b6a1e84cb", + "0401d900b4f64c07cb959049f2bfa18012f9bc2dccec5a73e9a48a9d5d65499e31ec4a16" + "15c4c50177c032d388263eba1a90e07ea68f081e10272e88a41389bd2626961b646c76ed" + "8e05c094fedfb5b118accd64d5d46ca2ed92b3123a62042a556ffee9e3bf709092fff882" + "31a26917d368db51d1959ad3285c7faac16ca57677651b070aa0abad96f07d35c5fb8a0e" + "e0", + "14d4070307cd269cc1a3c048ec0847edbff46f64c1ba5b734d8a800e50a0a02af57cf247" + "50d292e2c247ef1b860a9d7b5069a32f5b0546fe9e019e04af62316eb79507281fbef6d", + "1cda7f743c47ae93a9fa533145feab4c46252afabe3d54990663b5891b4979c645ccaa05" + "c744420ed6fa235952f370f5aa187250d7b069aea1123f19f0f18da18fde98100ff6ff0", + "180b4163f2eba6e3769d8345dd8cb003ea120164442efa885eda5bacd75f8d705b7f1bae" + "2976f67cdfe984430e36f93455ee7528fa6febfe92e42a002da165c63dba8fc589e7851"}, + {NID_sect571k1, NID_sha512, + "e2d1f33681759adb7954bb5248b0db3c3885fea0d4c1c0c226eb1e6d2d3ef1b9ac281a0f" + "1c2fe5175b67114b6a501e2426d1454bd5790dcbc4c232cf06b017de8a9bb39e6033f1ed" + "b5003e8de3b44cc3d6150c3c952afb442952483cc688908337b7c1a8b5c9da70937ccfa9" + "8b2b0098c530ff848010b8e8ee0a8d65283481a8", + "10f184c16228d9034271332178ed485d10b6aa76003efc160d63fea26fbbdf5552205ac7" + "df0d8c852a1210cf0ba512f20b798827b36ad56b12a826fa7dc1db45aed264ca6822659", + "0402637543ed8a11271bbbabb2cf72999f65df0104758c2fd6fbf3e1c5132ff1c1111fa5" + "504ee86bed8f219d5025f8ae07055a7849314d2d439408ea2b2ddc40320c57f5d41255d0" + "a6014e360137ae33ce6930b844d42bcda4050b25f349e9e19fc4fe82f5e4f73cf9bb5021" + "2ea875a5735faaa1d5494f1685d6c8177448dbf356b408ffc2ba0726c9befb9de9f0cebe" + "32", + "1146574a96394c82972eed1ab7ec98bd08f27653c565f0626fecb431ee4fc6f830554df3" + "5fa62b5f82eaad49524d3d4b0598cc7a2181ce9860e271812373d21be9536fc181c3f12", + "0dbf465de2c5242fb527f6e4a4188adb96a2030ed8417cd9431365173f569bfdd3e420f8" + "6947da10a703370d7f38dc43e2249a2476690829545992645c9c83d82af8adae893780d", + "1499782e0163f80de68e3a580ed08fdec8d6552ec69f186a74be89480be28a0df6acdf7c" + "65a72f115f8a59fbc28bb94af64cb3bb3cab20bd25265237a010370d9a5c781c1e26f3c"}, + {NID_sect571k1, NID_sha512, + "414fc5d2bd56b30040e105cb891788792da595583b11b8fcc7320f40dbf64d9263532dc5" + "7344dd17573c95eedf851668b5d552e8796af205f3a0043af1a829fabc2e93d9af9091fd" + "d9e0fcbcc9d6d9ec960aa60e4e2964c29a2f375400366480e513f63d124db7745847310e" + "69a38c8455e4e602056a6a4a14a8694155e0a9bf", + "181baf9d497159f837cba58a11ca435c442e5ca792ea559bff9f6a1f562c05bf6bb5914a" + "fbd1bcaea75b35f88bdd832314b249a5298622c89462344d3f28a44ba3d059df432fc71", + "0406f3915f884e250034db97327470197d13f0716d1d810e43055757460dc252f5281717" + "b3ef3fdd51085e65a0e073e78b697a21bc33137213981fc05d9b34caf7dca7a4f99be785" + "96047a96ab5ebec6201b7c65ce7a6e70effeaeea1c095a0172e9e2c7bfc88f7b05ea5750" + "76caeab189f810258373cff2484f4fb9c8167989f61aa61ae27113b5140c95f7faa505d2" + "d0", + "10e9e6047651362accc816389b26ea6befb0e34fe7363126f8c4ff9333266f46d63c4d45" + "075480da9ebdd0f8da7224b470d914ea1d68cd821f563b574bdeffdd0b3ed73ecb9133a", + "00e36644cf0861f45b333092d44fdd99f56e89bf3607f75a06920dfab0ccb1831208296a" + "a2431bdb75c5d50f15bbea2e13d185db6d7175c221858fd2b22afbeca7431c290b15d3f", + "023ee3b9ce817eb0a6733c85062cc3bc5f1ae62bdf3a74e3ec704baab05784dbb5ed01a6" + "a2a73c80a3e754c013ba886108d9eed2bc210f29a4774bfe5508ecd876ab47a8527c530"}, + {NID_sect571k1, NID_sha512, + "3b592cc8972a4782870e079b82a50f84b4c2d8ca90bd500d1ce5678982e266c391c556d8" + "162ac3aab967154d072dbc0ba1dab5545cf2651753dee2881eca5abd412fe624bf3f9d17" + "d33692d21ce23ad15ccffdfd250cb1949e73c9e40a64ebebb03852e92692dad1d7baef97" + "fe109f35b7a492b343d4b643a4a7b1723eaecb64", + "083fae86ab96bce99a53e50b7eecff38e4e25b21c4b0f6a4986915de245eae24f16b6a00" + "a4db159ebc27f5a6a072da94ab6be5bf75f5eb3f75c4452bf4ea7014392eb1e02706fb4", + "04078003779e0287bee54df31f64c58951df7999b48b647a6bac416f844485a4cd7a53a6" + "4170f9d2d31fdef0194a0c262b90e5bd33a1782d2ad56c210cf80abb5fb118cffd71ad79" + "c1073f89ebdf0e255205a7525cc12b7e1c58303ac3b3417183179c216ab8e47f33d0af32" + "38e3ae64d418ee89ef3a2cb4bc67a1d2fb1923947b9dbf3f4fa39ff82327d0ce3db24d23" + "24", + "13d126fc4033f537b00a81372031026f6a7a2062863a68e36c6909c548833d1a8f5fb5fe" + "25c7d9f2c65b1dfa974630204f71e96d657095b93cb54b00cb88f32adc08eeff4036654", + "09be9f4bcd7b8ef111337fb665379509b8b17a2212a80d5fecc685f1f362c45f930acaef" + "9df47c33c6028cf7aae424264575b4635a11edd6b005ad26cf2021051501fdd1b77d2dd", + "0dd196343ef76bec527c5929e02fbd5d02d5b0a4b5f2c8561978e600856de56d42943f1d" + "74cb81b67010bae98de0efddfcddea5d354c60c1fa76138801f6cdc5bc932c136309b6c"}, + {NID_sect571k1, NID_sha512, + "0079a02cbab3dc02601fcb5c8607d555beef7cd71a66911ab6514a4ae21c5a9c0e166f8c" + "f5fb198ec5a49a96e17cf041f35f00406b79270ebfe56dc6b8417d2529fd625686ffbc8f" + "69685aefa2fd30a937c02f25b48be4679e6fde821de928b33b12470867def874bb8c7c80" + "38ab6594346a2c44b39210d3610994ba60a05e06", + "1a663efa7bf4d8479bc535fad71e9b5e4f4281aec55967baa008ba17ac2f89cc3398d305" + "73edef29d590fddce8cb157f655e92779f59e7a18d0327d02e7daf4c1216143b3688fed", + "0406b4bb31856dc516be60a0d2d9f42508738edd4f925eca9c72a13cf136720867babb38" + "622fe97df70a1edb35735365f34c74baef9aca539aa1dfdead3324f41a16ca69bdf86b43" + "f706c4a91d3fac9e7647a6aec6e4369158bdcca2275866bcdc5a09b2f0f1eba10551da96" + "13eeb1e8d3233316b62a5f4641d6aaf669b975dfc511f2437d43c9eebe53c5115fb4741b" + "80", + "0a843d0cf776878fa9ceb163d7aaebd29ba3aea0808c3459036b258b99ccae4e2444bc32" + "11b5898c0769b7d7e036c07803497e13803132b3c6301412af3be8eb4a853e939a247a7", + "00356e282c096fe1690fdac4c0c66eda155ec42356dfc4783cff0160e1d76b33a99442d4" + "ee0e3f6e1c5bde4a16c8e18bd18f98a178c3fa4a560d8fb8b4b1d72663576f8baf8672f", + "0c5018c1383fc3847819726e1e940028892e1abd164b413293fe50f219f2059105218e4e" + "3b952b912a3258c4ae52dcc03ac5f027fdfa448a8d58e3aa5c21e790b3b47bdfbf21175"}, + {NID_sect571k1, NID_sha512, + "88573bd94ef50459814806efa868ebf92b066fbc2f7a4be9d2fa06b9dc1a72f72d783a6b" + "cbc107b18a6314511bff217037a2252e7a5cd34cf9d5b2fe9c7846931f0133b2e95876cb" + "800dc4ed7c4a4e4cc4f1195acf99fb0ec224b1f8fa8af71f72d390eca9d6be3879032a31" + "8734a63fec336c79035a43f70271def10c4955d3", + "0088d1a2c0219696a94337cd56516252b74139ea0733b17fdcbf7692c3e5f6c3989e5da2" + "aaed7468e65a5d578571928ca273ec3b6aa72cd196f560f05095cdc8346e5d31c4c2e0c", + "040357801cec0888461ffde22d83afa9ca008ac88518f4b09074d29a846f5900e024a8e5" + "947bc25ed0e5c980a58fd5e9aadfbfab31db8bec575fe886deda80134d91b3de96254653" + "020710806c7ed33f6879374c59ea144326f5948980c8013144345c5070122c0ddb7e18e9" + "f752eadf2a9b0854dfb7d9b2f0d80ff0ba46197ce6017885939e9f59b642a8fa41639ea7" + "5e", + "16940f69013026bafb6f400c037272176b04e35e9f1563d382dc9982968a186e3e152577" + "5d27150b34b8ce5e70b537f0149ce1a521d056b52e75da7e39ee8a529ed987c70b8234d", + "199058e36449ee1a3388d7357c9c1020b2e4c02144aea14b041bc584a752c94fb6e47495" + "9b24bd2c0c104f5ecfe223ebdede672298c29195033aaad5db1852ce4dc3185ba2409a6", + "11f3defd9b442378c461e2c68b239d2e4afaed691238c5ac4e0be46ebd461639a60176f9" + "884133900f988e2d730d34df5e2bd8a14681014c0a213f8d233b3c50ae3064fc38d1a19"}, + {NID_sect571k1, NID_sha512, + "d0e02045ece6e338cc8ab41d4a064c982ccb1748c48fc2fe0a6f10bdc876094358a6a90a" + "45facec798a83cc95c6795cf0f0d7c66b77e22cb114c1432bfdaa1485ff35b6a58107cac" + "3b7e58cb4f6c87c68db60b751e78f1fdfa54b8923b98caad0a4f31226956d065c083ace5" + "f1e9e91944dcca51879d782e40358d58ca758750", + "16cc8a0fd59455ed8d4de561fd518df2e008f7dfaa5f7f29ac2489a411e233917b43eb3e" + "be2596fc824be58871949545e667dbcf240dfb5e0c615ade0179d9ea2a1b1ebb8ab9384", + "0402477e678793593e2abe837961895c7ecef71af1feb882ff27cfbabfa0ba3ed771b792" + "23e7b2d2388efd371d5c325854cd60e48484f818e1a8146fbb780cd6ce06ba63c0db67df" + "8a001b696114838bb972ec6d536abd809d3a436650191c43b2bfeefab2b400d5921a7eb7" + "8e307266acc190e05f3869017f0a66f886bd6556c58aafb1042478cc768a4f86758e9f4c" + "32", + "1e1b851bb95d2913d6d35b756d49fba6f4c127dbed80fe4068260cab89c1d42f7a6843f7" + "31e83b379ccd8a4915d2e29550f3f6ccde607cd0b066dd5fa41ac2bf37bdcfc26cd4d04", + "10d4291346685fe070b267edad91154df83664dc115f058ea036c712929634d53662586b" + "b50cb6473c2170db5d4ee43be0c50532015937202e193d15d5189870691ba65aead7f3e", + "0b2a15f1ef00204bcfb5108d8f1da96ac3297aa041074b68989ff5b6b276380de7887753" + "fe3d416ba691ba0b2ad7fc065ace02815b2323fe17f6445b0fa66dba5d99d8e7d557cd5"}, + {NID_sect233r1, NID_sha224, + "f1b67fde01e60e4bb7904d906e9436a330c5cb5721fd4e0a3c75b83dade868736bb1d21c" + "fb1b5c6407c373e386ee68ec2239b700e763728eb675a153b8ac44cf2a87be85fe8ed668" + "3430cf4b7d718891cbf8d583d0a37cc952cc25fe803a7aa4fda80f05541a2f1f2601cdd0" + "c095f7110f2a84f7d641b8531572269b21cbe77b", + "056673197bfeea9bd7a8b820b4ae51a50411bf118a692bb9ed3d304da53", + "04003489be62e53910c20cb508de019c3e326f65051f26749944b4454f156a00f775ac38" + "baf19499675725e8190aeea16f52346b1c890d9583b38c7521", + "0a6c9914a55ef763913273b062475fd0188eb2d5af9c8c1dd97cb3cefc3", + "08601a42d7f7eb047e8ed9820ddce665c7277f8ef38c880b57109b7160d", + "026d6f50f0508953657df5d753c595ffb8e1c19f8d092f8ce8db54f76d0"}, + {NID_sect233r1, NID_sha224, + "1d496d96b533c632ed6a91f6e3653cdffaa5b8cc0008b35e49b2dd52fe261105c2ec7ee7" + "1a4ad5d51fdc3d36d688a3b7ccb3b3b0c3a65be17b8d8aa172e3005cfbf37a2d1b1a6e26" + "8c090c6f318e7e96f9ec9b9f5a8fbcc7558d89e840f7e76e44bed91c26ca48e6f5cbc253" + "ca2fe8cb81c484cabd24070e488f9c00cd96ad4f", + "0468f01d483144e514ec257f2e5fdee28a927f2adb19714c1f3524dd0d3", + "04016b3cad89cc42b80bb730431963526e26ae3b415b421575dfb6ed973e1701acaf7de0" + "6e20262efae01fc80969cdc1a281f68e8c8bc0d2d4fbba3a3d", + "04d261304678301985f5bb3f6ae465f11c9fe0e5031b31f194969252703", + "0878a87b2867c03f55726ea2a6db822788f4aa4e9ef609997940ee8c8b6", + "03545153f0554a8f55301d4b948043de3057cace62c8032c8ef8a11dbf8"}, + {NID_sect233r1, NID_sha224, + "723400655027f474446843645757f7e2cd466bf97275067b4bc4c9d79bb3b19b2421835d" + "69db916f24b77c381fa771fc1e7a19d2b4d09411ae55acccc615b16fd24705762b441ab6" + "7083a921fd4ae569ce0de69449aa96f5b977ac7dc022fdc8335656853796f54b3fbd1185" + "77f98920624eb0a00204f1ef83827245c06646cc", + "074052d027f05465a8083a59cdbf32600224e1f563f653b34314651517f", + "04006999290db440eb5b3291bd4bb4a1af6386654fc4d275ef136c0e03dbca01fed0b1f9" + "284e488c7fa2a010766c340bc25dc132c7679c2598e423c3c6", + "06e38460379ac3fb13f64d4de654d4fa30bd8178da0bfc29fab2a1e2e39", + "01b18bafe55e5c24fa2df4c09112b44d24e78dd09557349ceb1b916d280", + "0ad7cfa003267a6b7a99894f75720cedc9cbf820d355a6b840709f42f62"}, + {NID_sect233r1, NID_sha224, + "155860cb31a142082bcc0bad828d747e916392d21f1873b3a3c1d28ca3ff9d45ddb66a71" + "2e3856b6afd07c8d2b2a7badab296a9775b03f6fec0befa2d8d6d00fe3938df244ab46e8" + "36a3e686c8b4f918da49f0bb3940bba34a9aa22c7caf02df7758b0de01d9f47af6146344" + "b9be3842d9c055eaf0fb399cd8db95c544a62d8a", + "01856e7544223f55f80de72a6ef3822fa8fbd68eb397d06e2d76ddd35e0", + "0401a117e52f09080625f85fbaad8ebe0d3ad410f034242bf48365e88ff7350008b8bb79" + "58d191265901a3f15b2919142505efeea13df6e42da8b0dc1d", + "0aa106ad1461353865706bee9aa092b00fcf1b0108ecc1266ad5d8b6579", + "0bd6fcf49029df32fe0fa47f39cb9428d95d00a84a5afb392d7b4b365e0", + "0b17734befefebf03d1c79e59c12ed3c57e7d120dfd993bf276de559588"}, + {NID_sect233r1, NID_sha224, + "cbd6e305cc9f0dc90caee6e65a74582e9357bd25c78e33a7b14e1ac7e9397ff4466f192f" + "b432143e6df6d61a0ab808ec0a361a6d95a357a38cd3e241fe03ed883ccc364b248ee2a0" + "8702110745c2688bdcefa33c1a45b9c8b200e45cddf3e3f66b8d37eff07fbb3366ea1558" + "ef304085613c56707095724b3e134c7a7d3f8dbf", + "0860aa2b589f2defc617be73e191502e5d9952bf60547fef19eeccbca26", + "04006abc5619422b7d548c612e54df0385c293632d4d97c21e2e15ad98d0c5006c36c072" + "603681c1b03f6a023c8e987f39d931bc2a200eff82239ee38f", + "084fb252dae9a96a44212d18e15cc52d179cd5e3392ab9da57d04cd5a9d", + "037cd554e7815699f033ca9187ddb116777ef847b92353f613152c4216b", + "05f806dd062043420dd056998bdb9822b3177406a536d766c4aacdeee81"}, + {NID_sect233r1, NID_sha224, + "812a218ff1ee1472c189f63386e5b8ab341671c3a4dad27a8c6249d1c0f9a29338b471b6" + "179f17a078b6504e804ac55ca3b13e68a623041bc1a092ea2adf3fa1124bbfeb161e6d7c" + "483433f1548763b84da00352a6386e1339f674d45dab13898147ede468e0e01d2c4e0ed6" + "6b395a16cc3ded3e952ac739205f35a83376cbce", + "0d0dec052a00ccebd0c0c5d9a08272f75744a2582cec7ddd924a2b022b2", + "04016bb8c3d319b93731f1055756e57bd56d50b6b9ffbe42735925cf6f7675009dad7b87" + "a749df130b45d9cac8011101c15abb7e64bd4fbdd94107fa31", + "04098547601430c723ebcb04b23e0f1ce8b1f79ff7ed3d05ba130922b01", + "070ea6221c0d62930b019faaa856ad2c84c3989ec54040bffc42d8dadb8", + "0aa20fc58beae8ccc880e7fcb48a471faa5baeb36bbe5aee71ed9f8adb9"}, + {NID_sect233r1, NID_sha224, + "0204b1fca831919e89e108cf140b3770f531a696b1d9a4d1fb68809eb10afccc257cc90c" + "d36717c02b2f3d6d3d1d8a93cc5c48aa7ab9f9fddfe121ce9143376535a0c65e247c6558" + "eac49fd1d6d1bf431ba918c471cb3d536ad485ec51f6471a340ac75f160c4c54cd3ffb9d" + "cc123124b42df1fd2eaa005e3377c5d2d55938c6", + "08a017d717d6d1213f2b74c53281b07258738c0c7db649ea1ac46b9a3b6", + "0401eb379e27de6c04c5320cbc18e79ed9e8993710ac70ce823f1ab5762b6700f5521926" + "45d350361762aae79ffba39c33c2c5c0df208219f1b339016a", + "00e4822b2cffa327a8396301b21554da6fa52f418d67114bd58e850d935", + "0d64dbdadb4ada2d3a8892049f7fda3c733030522b44cd72ab850b77bd0", + "06fbae2d8e4fc04abd8a6e9cb011974ac851ec108e38f9c72603f7a04fc"}, + {NID_sect233r1, NID_sha224, + "2033eb48756638cb56e2cc39a3e775cfa11fce86cf71f04487dcdbc7f262bc8350a30ced" + "54d1fcb697b28a6e96f88f782947c997872307ed963e1d68985f756435af77f57755cacb" + "b4c6b50ed419deec9f39f0a549a13e54254fa0a5832dba2d943ad4aed8688889a2dd29dc" + "b4ea12abd6a6c50eabcb3981c3a0c1ca5f0b9629", + "01b56c14442b084cfd22aeef0f8028ec57c8b571c9fc1e43de05c45e47f", + "0400d450c533b13b211b8c91dad0738402a5c811460426ee2f35ae068f2c12015e1c9f9d" + "398925c619f8aa0bac746eb7907d3d510814cea185a7efe771", + "0dca09773730a2758b7f4d9257a8e6bd942c141e46bde5ca54a79468c4f", + "0379773ebb7a2860f3422d8f8f714b234e5abd8860defb19c659c9c6179", + "0cb9272a27661604425ab84632f586048483b9f9cb80b9697898e745117"}, + {NID_sect233r1, NID_sha224, + "2986ab1cfe8873009e932dc68d4727d77ccbbf378e43fe4aa7c54416346b036b89c0aad1" + "b82977c9fbc39a00f1dc916c0561d8dd70298c02b6cbfe572e0ef2058641e841c6875e85" + "15f3c1082765e046c90c956d984b76e0e8e6eb433ce26c1757ac5b13422479141971c201" + "02e9621d18f51096ae3173c2753facee2862d66e", + "05afce37c5594586ac46a34ae291f591eacb9880a7de92701977f447fbf", + "04002a069ef14f2989d2b715c5006642ba966cc84df88bbc27e713e15c47bd00f001f60b" + "8a8102a971faa2c42d3ea9cec37b49c7e6ec0cae9f7fb35713", + "09756db630ed9b708bf1ab8aae6a7559bc235c4e9f4002ed26e2f019aa1", + "06b9b2c1d214373647d9a2d24ba69741218064004614368915d5cfaacaf", + "090dd607329c27483fe43b7be137c3f51c23217c939baae40b53e65af2f"}, + {NID_sect233r1, NID_sha224, + "aabf5aa90ceef91c2155f90660adbcb0eedb996f5242cee15468ae217058ebeaad8cd4ff" + "8cdc754a8ab85ba43c59fbab6386686fad5e27ad3848fe52191c7e4b203720841501792a" + "625aef2acb6e36493b792fa55f253effca682946ad8c77e01f44e92ec3c258d0dd98d318" + "3f4dc4a0bd3eca183794abd6232a6f9e4add8f57", + "00696df05dc7a54a9908a73eb18416a155cc8df4ab26032539d86eae537", + "04008f9f494ddf8d0030746a8c0b8d215dda6cc2724f411a7ea407629294c301ea2e9f85" + "f06412d29c677aecf624a83c2fbd86482dc0d564906a91d97d", + "0d62b06628d3884f0a329a7b6b4f832fabea4ebc85ee03e63f2967e7810", + "02e39824f272d4b74810594810957963c777207217e53a672010605b9de", + "0e64bc44af64b6f879f0d32f814acfbb98795ef7b2f246b3f91cacb55cc"}, + {NID_sect233r1, NID_sha224, + "29ff209eabbde02b10b3fd559671fa53e418750c32c4a18d31cc0186d1077581bbefb877" + "0ed079f536e866414a07431ae6633955bf42a2389b6f8a565d6e4ffb4444336e00300938" + "76a26d4e3106e9ac697788e41f8a21c755eeb86a7c60f18e5e1069f16408a4c375a6a68d" + "42959f2fab7ac09736c7b37c80c05897d8566ce8", + "05ca31e88c5b2e96e433af2023a66095161710628e7bfa428944d6676b8", + "04008232d4bbe25536ea7f83c145a8d2b1cd72c383eefc2adaa1ce72c7dd9a0100b738c6" + "f1551b3240293ee8e8ec29fad0cc485ffc2cfded96b68162bb", + "0df9e1b418ca1d41d749ee998446ba1cc54bc8bf72eac6f30929b40b5c9", + "0d4248e0bb60fe46abf7bdb2effe804b9d394d8a5514a5791e149d435d3", + "0b89a459fb99cccebda754c4b2ae264c9aef7b5b610427f42c35dbe7d3a"}, + {NID_sect233r1, NID_sha224, + "97765d876c80819f4004a36d09ccba78e600efc71eb7e869d3a00f658d2ace6769c7ab1e" + "f590f41fb070aa8e08615e138df45ffbb6473d4a86ba5fdf17dd6dc9ea9ee19c0332563c" + "99e6a3451c211d286d69102b47bfa6e07d468d9bde82e5c2063fb1ebbbed6086f542cf68" + "ba46d4f214634afb1146dd5a6f3d50912ef5b824", + "0ef8fe84727a2ad8bf4e646ef28a492adfaf785a3a2ba6e6f985c649a8c", + "04003435eb25ce9891a78c120098992c666940103eefd80d9bd64f1d4ba37b00ddd6a4a0" + "1e443c92afbc247f634b85f1c858a2aaad35a26f57ad4c9126", + "09753a236759eb32e13f19b9d2ad06f7b4db4ac7b1df96813463d0cd557", + "08408fc46149dcce0753d7cae0f50c8c5fcc97acf7a1a02a9f68c0b80c7", + "0b5ffba104acc6d0cba87523382ff928859718122c4d0d2298e74985d89"}, + {NID_sect233r1, NID_sha224, + "21cf768d087d1e4eaa8a05e2008020e243116206d675c09be42ef2bc93617ecbb0575c87" + "3c6510ede9979215531b62126552738862fc4323d487992754e39d8f0d7e111e165ff254" + "200e05082f59a57ef649bccaef6f980094fad3b7ef93bceb161760e200f0a2e396fbb6b6" + "142dc84d872311bf932b84616b22231747937d58", + "03edb94b8c62f9af30c14a790c0f5d65e362a21cd8569b9725916d534c0", + "040065133691b888cd2513964b5a905ed9334cff6367e25c09db1743045d5801408e1ac7" + "21bfe2198086c1834d484b6e5692c037e09928cff87f4b5a88", + "01d8f800ba05d8173b0f1bb3aac0aff68c6b24cf98c28f5a69b0b5a52cf", + "097c07d4352e39e1878c42fe97ebd4c3ba5098706879fad9be4bb2dc2f7", + "0bc669db3a488e613665cd26da7927c6b6a073ba6b0951c00d22ab1ffd1"}, + {NID_sect233r1, NID_sha224, + "7b8e58eecdab3e40212bba6bf284f9379265b3d2baec3e4625aa08d0ced851da193c292e" + "c793dab42732c07b4e94d8b19c83aed796a7e3a6c2b954a7a9a1ff9b2bd4ca62592c8b68" + "f709f1ad38a5c8033ebb3f33d176945bfc68e9ef2b0cee2d45a13ce89d238a33c09ce2c0" + "c63c4233aba5717b85c4c161dd7648a41a5e39d8", + "00a7519be62562318da1b67d22cf8e720353d22641e0cee11c7a352bb93", + "04013b63dd8ca9044a3e518a67999a781a5b62994b6e20454003a9bdb8715c01a2f9bfaf" + "528b7f5bc8c3b02eccb71666c83e4a598b4077de999d90fe27", + "0992ba1a8331bc4d88be7dee06f96098bc2ea56668f345e187f32f38171", + "0c55b45bc7bc3092ffa82234b06ad45525b45f8904011f1bd6cd356f0cc", + "0e6163e70ab56d43fa27211b98b48f1cade127237bec1c6556020d39990"}, + {NID_sect233r1, NID_sha224, + "f8f268d2b04fe47e5052c8d0d653787384b9654f0bd2138a6f52b80713feeed452b976a9" + "0eea4edcfbb62d04f3eafe172ddebd7cdc3701ecd6008e3d82e8eb217b13b5228839f610" + "75159f3bd1e1409c08903874b6dfee2789dd72c208ae769ec8c7d52552a2b1fd73dad24d" + "e8b571f88e2184d0ee7d063a121187f97e746f2f", + "0264022fd7dc2328a6436b522793ad9406d7a586667a0daaf1bce927338", + "04012d7e7f8519a7e357510adfca2f50182dc5fa12fb2a77409fb781ed500d00ceaa9a22" + "b7ef9febd8a9962ce21d83fd2a2a938b9d7a78d669dd233974", + "026fb8fa6e746106500dd29ee32bbd03b94302ec3a123356b23b3055e51", + "0f416418f7aa4d437e7606afedf961b968a67d9a1524d60fe3f6df4d3d0", + "08d3afc975a8147fa8230fef4b16e3024180a9768702038f955357ce8df"}, + {NID_sect233r1, NID_sha256, + "d288768cbd066fad4bb2500b5683fa9e4eaedfb3dbb519b083f6b802efda0a022355565c" + "5fc6babeccb22f3adbbda450ce5d633193d1431e40c0fe631a295cf85965cd3f5937b318" + "66bd6a5300eaef9941daf54d49832acfceed90e572ef34ccc94eacd0fd6b903fee3c572b" + "963d21e2881656a214d2a4c125778dbe3bbeebca", + "0da43214e2efb7892cc1ccde6723946d2a8248a6b4d6c8872fad525ec3b", + "0400db09738bf0a0dd777f67e82be50dc8c2d8e91598bc0b8d4486f67c04a5008ef463e2" + "f37ac7c3d276676cbedf17ae11e767ec577da7ccd90cde3b74", + "0249cbd55e307a0fd10a0c70b1c0d5e2416f4d7f144779ddc11911f4a08", + "04d1c99f9d486fb92b132d68c0173df891ca757572f7acc03cb41d46bbf", + "07de2deeb58d55d65fb37f600d916cfa49f889f02ef53dcce412703d1c9"}, + {NID_sect233r1, NID_sha256, + "bf0ab46e0a756c11229b0ea961f8d57218be5b00ab8b0e91d7664cdf5e0341c412c0e992" + "d26ab12115197db39df2d1a6e18ed26a91be461432a2dfc21d98cb16003e339b0b0b1f10" + "0e4e6f4824ddac5442f22a1fac26326ed8a89cc91343d7223986d485cc8c64424e84d56b" + "e536c57e4dc5faee459b1958efd79e07e90a9811", + "0aeafa49d776b61f6a30d66ff64bd40dd8d79891dd5293c1b5cd3b46a7c", + "0401ba1b87b16122e6939da5dcadb8902177a9f9ef09194c8695008b80b588008f51ee5c" + "ea1f4fc9c44c70df57326ff121268bf4e02cd9b2626fe7c1ed", + "09d640ede5bb60b9aa78e393ed453b1643f6dade4aa20e994db53e81fac", + "0277bbfb7479077d5fb6813670fbc7f46055718199550130b122a7cb8b3", + "0f8dd350bc0bd2d84cdd374c56ff2341de4102269a1e80df7e35969d4cf"}, + {NID_sect233r1, NID_sha256, + "c7b1eeb7c19eb16e7f42b61d79e421b71de797a6cab4e0baee522fee7acdb533f7bbf585" + "5316544e1b82b4f2a18ad0a2311e7622549332122171f32fc62a90e408207e0fb90d1b05" + "2821dede9c41b15b6e07d84d5d7b9e31e6396a8ed229fb6232b3051298dc5321aa589f4e" + "289d27169f14c8cc93644916d9b72dbc92c43488", + "0e95db309f4305b621f51f93588a2678cb19aad0932f365fa0aaa3a3895", + "0401177eefc44b6070e2c41537e75c91e2f08908c0d950bc90cd2f4720b33500f751312d" + "de55b1bcabf31665deb6c12d043d5ccc89800622a557a7ed37", + "00015798ef57a771d62d194389817c93de1b225398fcc0d2b81d94054a0", + "0eef7161a167f69a6c89b0f173db2c4a7033b5d801c0d89642ce65e377b", + "04043f8985bbe0221fd595f9355c33e1930b5e10a1452e81c31259e1e3d"}, + {NID_sect233r1, NID_sha256, + "a738eb074e1f277dc665118ca055e6328059ab26da188c16f56384c566e43df8cff3d2a1" + "0d2d15c3c1406de8f734b20be5dd1ce937a4289f0ddfd7bddabd03586556eb8233b8feef" + "edaa1f49bdec6d45fd562c2a83fa9fcfc2013bdd77900857199e51fa9c7cbeab925ba8f6" + "c3c5fae46bf8e9c574b302f1e5f9c44400152a78", + "0d4319cc8e409b8755880827f3200d3f0f1c64d6356fe74eb1f5aa42499", + "0400bf65953f2d08477f7fd0428c31125184e3bad4d5da00c91991949e056200f1669d0d" + "116817d625128ae764b3fde956432552d24d98f08a12925afc", + "05e8704febc38bb8ea76f3c6433c1f0421dc5e5af959723a5a2f0e9a970", + "0307c0b838c65d1a47792cb367253bf7c9f627435f1c7ed74494b318446", + "00031a9b35e935be6620243f4878a38d4e617fb25f7a4883893366f39cd"}, + {NID_sect233r1, NID_sha256, + "b28103d77e5457c42e026e713ea6ff03722a36512da17197140117442a976f9e2139c54a" + "759fc26af5811b455e5a0d3a95362d9939c1e738045be9237b469ae2106ceed7e7842b44" + "cc0a475d5af6d781e32ff1dd1f4e1833dbc7f82b27dc7e1562d0e29213fd8911105104a7" + "a16f665b926aa137f70d868c90e72f8ee2c95b64", + "09e556c945052e5954915c773b2d47970c521fcc99139269c3ef46093b7", + "0400db68c16ffe64bede4a849812df0b8e202f74500cb7d5349aacf7f3f0260084b5892e" + "a74835e96e9dfb1bb201a4dcaf32da25dc00dca019d806f5c9", + "0d0c9e0b6d4526d5f6494d2c72f812fb8d26e17c7a44f6b5e3f9e684cad", + "0a379ac253f3aaf94cc49e91fe3f2908107a9e1a4d102e02395eb18cf08", + "0854c2f6ecbfe95cfd14045faf71ad47561e365c1dd5f515d8817c3198e"}, + {NID_sect233r1, NID_sha256, + "463d04c84521ae671bb35c0a7acb3ae509b1b0470f39b8fe7ae5f3c9fbadbeb2bcc3a87e" + "284cbdff07407a351f7ba743aeac50c4a1fef7375b90eb4af8ea2df040776bbf3e4389e7" + "a80bea40530842642b9895ab9ef5ac8ed6c9ce7917d7b3ebcf80b801da845943313988c1" + "970e7748cc306f914c37414f8247d648b580000f", + "0becc76f8a77615c4f92ae1f91645bf5bb908e75ef22fd544aae63a3c8e", + "04018cd93bfe8fc8ceef2b9be14fa947b60fb122f5099cb5bcfad0cdc601e8016de11e67" + "3011e30f6fd92025a60d7938412ac63b19d23e45bbf53c6c4a", + "04e75a7b92c42ba0581eb1201fa5b3fb2ac82460e953c26ce6bc60e145f", + "067bad23ecac0883d218b1368d822b3bf9b82453c0e5f3e336777c6a507", + "03788a331249463533384a61c47232aee6f057634c37560ee25895b2a03"}, + {NID_sect233r1, NID_sha256, + "8b2379b5553ae7db6023cb010e26ae91322bc3f94dbaa369481936f90a886e5d3827d995" + "ccf03ca59f46805fbac0337d31a8f117cc7044218a934d5bf507090e7e21178a7162c8fc" + "b39111e6967803dbf9d752f3ae737ba024d0f4f7627e08be58efbe997a164106bfe37f67" + "d2f19c0fcc7a6c7eebd96a72582a9c7bdf881896", + "020572c2a3dc3ea430cd8cde9d642081c21658e8bda165550cd9a5d37d9", + "04016117486794f14d171dfc3ccffef0396cc9fe5aa45d6d39ce0f252c416801b6a12fe2" + "adb279dbbefa4eafa273a2ddbafb2c6401067a5ef5e859fdcc", + "0edc8d0b64496da309b10630e9e5917c9a807ccd7cc7bab14360873eeab", + "0e1fdd3b7849806fe587ad93aef737ba0472409b7239981f0d325785fa2", + "0829449a0c39071a832664e8148e762efc36fda9e030e0d062458728273"}, + {NID_sect233r1, NID_sha256, + "3090bf7373731cc44c00372c1ac59280b0f36e627ccf763fa68a7be37bb0ac8cbd4f70db" + "54fc652566c78ad268f78f015e4bb1e41516fa56ac303a3bb4a52e1fe897d8338db5a6e3" + "7cad685e704b994504bd231c7dec0002dbd907a7ebfa809833e32eb23fffdb44fe4a18e1" + "1fa19d67356cfd703cf39a75b1a290b8a7c73afb", + "0769cfbf2dd8248ea1e0ac9b275c9d6ddcf923fe762079b9ed62ccbaa89", + "0401aadeee0e31ba9505da3e195d883643d260dac9fe5e86102c8ed7f88eef00d925bd5f" + "d700fcdec60cef9c9fdd304faa102d9d721b4f21291f8c96a4", + "0f2e203410107c075e25c4adc2f55dcc277883d679ea307df7d52060fa3", + "02fc0975c2e70328da4a0ad2b8bd344a8171c2c500c55b1c92270230c27", + "08871b6791f7d03796a3aa537fa820f0eac8f2463c9f918468e7588b784"}, + {NID_sect233r1, NID_sha256, + "c37389cbe3f46eeebdda343e354ccd543e96b0c2a87e057aa6b9c4895a403de706d658bb" + "c9066c140e50fef4b56af2db1f42efb70b8021254649983f1e11d04d6b10169d5a1c2093" + "b6ab89227b88a30537c776bb7575749c3ed87bcb29effd8e4f17915b4d5dff6cab9678d8" + "8f33abead1e73dbdc5c3307ff3d3b2d5fd7bfa83", + "040ea4a37b388f0cc464f7e2bf92173107b268ff77a8acf5f517b4ec0e4", + "04008acee84d29638a7285654d20f8e0653c7386140aba0bd2fc157d51764301482ba5eb" + "b82ba46654aa1eaa6a5f01e030177318921a0c99fa3f6eee9f", + "0a6fbf938e9cdd009c838196ffeb61f7f545f7e7e9a6cb18d1f595a87b1", + "096a80172a7b3b65c0a8acfa8b89cedf9cb19f6eaa5d38436c300b7c0f4", + "0b7bb96ddfc9d1324bea96836c557cf88d6ede9a93ada8fbfdfcfe56244"}, + {NID_sect233r1, NID_sha256, + "8884def8c3b9c5f856b9c2352c85ea71aae3c8d0e84ca74e70e404a21467159fc9826548" + "d16dd1ec5a75dc2c23ca37b30312f25e1194e0f9385a0499db34c855412bbf58979ffce7" + "fc3afeb7b8dbf9898df44023200d809f520db99eae315b5cf85674fab008a20340fae8f6" + "974034fd3e55bf08c5522a460680218f9757e368", + "037fc7898df9b37b5390537352f5c0b8de22659166c19d7d4df31c3938d", + "040198674b40d2a68ed94d5b2c51102393d1332404f75187130669b9de0df9013ee77d85" + "4a60f1aa74041ef1fb58727c09f13039bb4b33a818dfe9af2a", + "0cf92eebec59605b1d45848f5d06e93ff2767dfa282929208ba801a9fec", + "0f7bd93dd4df06219fb974a4e85030840c7d4877f131adccbd98cbd25de", + "0c2c4a864459488eb5498a06b0b56ce7fc98fb29b1eb9b6238da8cc8f52"}, + {NID_sect233r1, NID_sha256, + "f1fc154d469433f56c2bd42aa52237a4a4bfc08fb6d2f3f0da70a62f54e94e3f29c629c8" + "37e7adf0474fa8f23251b9b349a16848942c0d9cf5db1d0fd99527020dbe21cf0b94a9aa" + "21f376bf74da72d36f87b306b0696771efa7250c6182b426a4500ac14de4a1804b38db8d" + "4f3beefb8c9bb619ac82cb63fb37c2e1d22951f7", + "05d5069425e7a9925d2cfc6360a708147b2c1b55ede243591885147ef3b", + "0401f35f161ce0963dca70066b3a6de2a74ea1941a27cdfabd9e433d8084c701d5d9cca5" + "b741b2321d8511a777fcc2515c99ff8d13ff20266a163c94b9", + "01b9c83d36ada7e9367790ee850163ef4420104e0dd3299ef6d65191d7c", + "0dca4e804bf74aa496c15025acb4232c637c9b81e9e26d6f2065d6be21d", + "012014f77a4ddb7b266abf2c65a653988ee6f913e700f3f83f3e78c88ab"}, + {NID_sect233r1, NID_sha256, + "885cd348f7983a0721f96c0e866821223d3e5a95178b16d18652b4062b1b2278aed6f54a" + "b06f7e37ae6ce1020aa3eb812d215194bcd212302da5b971fd86aee1dcb23057dbedb569" + "bd0bbef80df538da69ae2358cb03bb77c64d3ead475c8c5ae5bfbdd75684b421a26f1a7b" + "0c37548fa32d805acdc91230dd70a48232a12846", + "0ffe3e7b82ca62b96e057ee072a4718ca20a6cc9a3e51e4fe8ed7b4b9f9", + "04010f774adc83c1893894855366f1db1962bc697b8e1d047a01a08b12da4a0078c6ff63" + "4d5dc8ffc4d8b1a53bbf94046023095a8c2b41618c4330a4de", + "005a4a50de4e97280d6ed1324214d91b271deb649a2dae18d21a0182022", + "04bc8ba9ffbca81b5f19f0d8b1306900ee642bc5cd9a9dc9867a4531b04", + "0353567acc062b83459017c70cff4f3b8ef0925032b51d7300261408549"}, + {NID_sect233r1, NID_sha256, + "ca3b0e2f1c7db4e73c699f06e432bb0f63705ba66954bec4a259bf31c161bb4861476e2f" + "2f7dde9d841d1ea6bd0990cc793cd7a10432e38735c3eeda7a0d786e8821239bdd6c4972" + "c96c2cf68ec5b935391f963a50fe16af2719c9029943b539ff0f1f5645962a6ac46c75d2" + "037fa0c7cd46deadcdfc66e1ddcaada3a376acbf", + "007a9cb5ce27c763646de414ca2a4dcdb774d69ed2bde7a817baddbc9de", + "040086d4ac1e3d54f7c154c5370f5c9a2d22cbe8f794df68974706bdc9172c017770a2cc" + "ac923423137731a14e97f6ca65a8cb3642eceb4e70c78ee929", + "0538b86e0a899281ab56d28f40bf3b7435f9a57e334a3269233766049a6", + "007ceaac3aa0e260c371843104f5cb91a057741b38889ee796e69f920e9", + "035eedd44b036b843deadb8e8df9d96b16e719ba350a634553457ae71a1"}, + {NID_sect233r1, NID_sha256, + "4b0a31b746763beee77cecd318b90acf50fac4172cf4bfb354e5a440f651cb89d7a515e0" + "9ab19e9850803ab9167c2aee3b395a5da10dc9aff799d73756dfb0a9961d93bc32f15a96" + "bf13962a03d5bd42ddc8b5928def7fc48fb063f42866fc5f96cf88fe0eb125b7c01906ad" + "6a7fdade28ccb0a421ceff50ae03a974671b2c27", + "0c03fa9e38dc1c697f70bc6381f2bacaf860bb5632fc837f728da959ac9", + "040195f386c7efe108fd1d580f0a77031e180e45a23911ba983217207a904b01a6837095" + "a64f71ec53ab1c0d9a3a39d69a514065d83f1af26870e41741", + "0d4f48085b367787a614b57c06ee8018b2e95e989c2e8cf355e71db1091", + "0391710f815babf07b6287b7aab8b9d2ce04bee2a144f4d4a46fd17cf77", + "0ef29cbd771b8a6f414ecb73b7937ffe0a108593ffc6899f28d4030a9eb"}, + {NID_sect233r1, NID_sha256, + "3011d42792b21c0f1719faf6f744d576f72c5fdfd22b1a520d0e8d47e8c2b06823d853b1" + "3c9fa039fa30a6f2e3e27bb2100c6a35f55703806bbf0f79b09d0f629f8042ec63fa0406" + "2f15f2edb92b19237980005566f02bb12a40b4ec66e4ba6c599d928b33f72d7437c0e399" + "a8e6a9068d1fef24917fc4f9ab5464ea6684dde9", + "087dba00e3fe4802e01718017510094924496bd2785d4ac1a352c530473", + "0401198518db2d1255aef955b9b80471aba60cf6d8fd1feae6d8e048ab140301833332a1" + "16214e4d9fb37c8e0ab7552b87348434a67a0c41f73972dc9c", + "0378578acdfa572b1de4e032158b28bcf00ab7dbaf07b0e772c39603216", + "0be2cb45d527a7685139290f1098de975b69957fff2c5c29059ce417950", + "06abf4afdcd2990121723b94ab8145d01cc4917cd70416620ef100c67bd"}, + {NID_sect233r1, NID_sha384, + "05a5d3a3b79f4e51b722e513620c88092a9bb02408f5f52a32e782fd4923f4fd3094fc55" + "36caf4b645d830260eba91b5173f3833dd65600fb9e246aec968b1f6ebdfddb4059fb2de" + "7e636ed60bb7affdb74aefd158e54485d5f26be373cf944c6570daf8fd7e4b77fad57300" + "667d6decf5c65db99ab8763bb4ecbb09fdf47e3a", + "05a387e7affc54a8fbb9157b5ebd400c98e2d7bd5c3e095538987d4f8d9", + "0401a97224cafc063967b25cd1a43283daa5411f3eabe9386b8b14c9768c29002cefaec5" + "141bcb084cbc9aebf28fc59780897ad1424fd439eb43eb911e", + "0fb7ec3804654b9c3675f7b3c427f6d01f83872e96de2742e59c93151fd", + "0808d829d78e65eea47122c92f8c2cbf5a8d6717a057ef1659fb6f8cd3c", + "0ef338e09dac0b12fa6109d15924efb694a0b672afb4ef05f4e6f2f7b88"}, + {NID_sect233r1, NID_sha384, + "247a101c8196eb93a440280650ad463795690bc620e46e8118db6900a71eb493d03fbcf2" + "f73a79bb47aa8e2d8c87ef70e4cfae36fae5c45fe247d8cd0f7d0718dad106526945014b" + "4f3bec324897d8e1fa2f457b8a68e61873b7fa0350fde3b87b7b001c13953c2050a24f71" + "fb77eb455053e49200ebcbba7299485c0f1a40db", + "0adae709a930d6f5a5c0e3d8ef4aab004d741d23f0ffb8287f7059890c0", + "0401541eaf3dca942957c48d693d2eaf2a456646d2fb3eb8df1779b917a9b00097379582" + "76dc31852e57063119f1d2d061616b6a2fd35b4a1a3f046954", + "0390d5ed395f8ee3478c2765525c235587dbf5bb2316df3a1e8c664185b", + "0ebcc4f84bf2deb9b3d669158998fc96d7516580675e24348ca58d70d2c", + "0b99462b85e6ce6b46e5aca221250ac9de7ccf3e63b38919b61700be866"}, + {NID_sect233r1, NID_sha384, + "a16678c71976a3ce3362ca379b3272b92e8ca7085b43752473db34e4d6b61eeed3875f49" + "f3328366fc9d0644824e0104817de458e4c1036636b18b83dbaf063f2f99818959224906" + "571c7b28873d9c702360888df151e9ad1a7003e6130033203acf8a69889be6ebd90816f2" + "abf0764f10be68653b1e56766ecc3150bef8b042", + "035d391411e6d679751092c4ea5a079c591e77ebdcb57c1d9006ae70d90", + "04001298e6f1612f90dbd2eedadfa8ecce22dff1da2d1cf057c41bd37d4b060073136a1c" + "af7dae2aaaac571a900135a51ef031643e9d5f01934333b864", + "09e343003670f61db85aedc0249db21953d232bc45488c3d6ceaa6072bb", + "04ac435e88f8e487b9b217e7d68fbba9bdea0b9685769878818f25e661c", + "074d8f4dd58c922d7e79f30950bd54c10c1cc52ae3b8d00b675c8e501a4"}, + {NID_sect233r1, NID_sha384, + "bc2f080a7f0b69a6b142b8f3fb481a43bd71d07418df4f3b802568073c1a8d35729ad197" + "f34a4e941a6dd511c63f201d1f6c34a1b66545bd5f43508c10bda1d6ef60ee5bdd25dde9" + "75e50c61f76cd36d50ee3bd8dfa2dff59524db9ef12f1e28d109b552cb42f021963f559c" + "843476b5c889fc567b7840297c5a480e18c221dc", + "084e79093f1947d6ab9cf399782436e36ef87c59a4c090930c9a74ddb10", + "04008e756774def210e2d6f76d6e4b0b43d86adca0880f017abfc911bafb5a0147e6a20c" + "1aad897829339630c5edd327ef9a7e40795630504318cb71d6", + "0ce780ea99a344d67de7921feba6ae062817101068266d5d1a140d2b49e", + "0fb2474b854b8e5d6920ed90e69b5b386a1b26a947b1cf28a13f7c5d3ac", + "072722017a67ea6754873f833fc51318d41d6ef598d3ec2d3e0eb5bf41d"}, + {NID_sect233r1, NID_sha384, + "ea71cede8b63ddc5648eb244184bae265cd65d50f77a9e25ff93f02b132487c08732544c" + "b88936d4fff7c0fedb39685822dd1c9be1158f647c605c9bb5f6a1ae34722fa08882c14b" + "36b6c93cab33c9a269c7c10f755b6453ed045ea3e56f29e95a9404ba189a0b4884812039" + "2b4dcac43148b706c3d9e4c03db410cbe5dca3da", + "079b6be015b8006f86fd81c2792bec6b42c08bee2d295cf9dc214c326ab", + "0400e24338d5e33ad12d41eb623ad0905f64d5b75835fec4e693eebf9bba100101b4297b" + "5b62fcca7c61637a2a57365e911d3bc7eb0fc7adb0a9dc7bad", + "0f06b001e5f874d16632e3c8d49f13d70f48ed4eecaff9d3b741f9d02e6", + "0de16d8fd7bb1783a2cc4b9ac1563eff3f87e4e6d75e6a32a4aed1ecb02", + "040bdb1197ee8ee51e4ecccb8d42dd985913809c131aa9224049425a052"}, + {NID_sect233r1, NID_sha384, + "319b41d16e18059a1324c37161c937e882192cd949c420ce9c59208a0ac208ebb06f894a" + "7fd78df2a3c5f23f25dee6595d3dacb25a699f115dd482ccd36fc54ba29dda279335424c" + "86b07a1b1fa76a5411bcecaf4d37065b229cdce0bac75b666c6626ec37a716e9841be93c" + "907f87453ad91d36846561f284421a89013b88c3", + "0ca9d751a060fde64336cdc88122819f4b3cd1b4e7df42d495197787894", + "04009549785f4f9c71f20133f5a1d409b244df55445beec404cf8cd4d2cadb01b246647d" + "7570f052840d4cc01182d1dc3bf357b25e5966434e1c3c2a30", + "09e99fe741cb23f7eb039f5df8414d069b5c2e3c144dcd6cbc6da56ef43", + "0cf00f519c18e7a0fcc84c1e338158399f16929ad89842ba97a4afb5bf2", + "05854ee1a6aa5a6a74bec0b4696e80aa275210183c86f45dde7002d7ae3"}, + {NID_sect233r1, NID_sha384, + "aebeee215e7b3d4c3b82db243a47506ffbf2263f6fe9de5b69286e8649d9218367c36ba9" + "5f55e48eebcbc99de3e652b0fecc4099714ee147d71b393de14a13e5044b1251e40c6791" + "f533b310df9e70a746f4c68c604b41752eca9ce5ce67cdc574a742c694ada8f20b34d0eb" + "467dce5566023f8533abfa9688d782646420c77b", + "01dde4b2d49338a10c8ebf475b3697e8480227b39bc04253a0055839e9e", + "0400504bd3a97baf9852d6d46ef3db78ee7555db752120d020cd056b1b4e50018dd305f6" + "a15e91fa46d2a6d30f2ec8fbe2baec491e26d9a2ac81155c85", + "03b78d2772b8ce01a00ffe2e6be2f9e2ca2c89ea3b29bec6d6cf31afe33", + "0c0c51fba155f98900eaa2d2935acd615e917f9dd979dc8d92f1d6e00c9", + "08c8354f95e24ed13d8ff3755e1122dbb4117c76b21b3bdc7f4dd856f8d"}, + {NID_sect233r1, NID_sha384, + "8d353a6b6f35590baef59b638914d3e934d0145b045d221d846517ceddc8ff5e3d28826d" + "3459f8ce1260f705e80923f39abc73d5949aa7aa8ad1734be0e992bff0c9a8f4cc9bdfa4" + "30d4cf52e29d3737b0cd3231b72b16e15e1a9040b832e4a920b4a1d94c4964ac6c8abb75" + "bbbdb10825f882ae44c534c7154c446421a04d87", + "02c8bea2803fd746c874fa110a716538c179c82712f38d33d0f6d037e7a", + "0400a034560353561cde19db89dbcad5c9dcb74e239efc604e86ff38a0577e0185e0b02c" + "48be2e90c916a7c8ef2b41a57ea8d4f21d8cd3a0878a03875b", + "02e39f851c57643bd799c4f3b2fcc5eec8ff7f9e9e279efa647f969cc6a", + "09b2ad7efc7ed60d9cd3dedbd4159b1e05f05ce5ec2d2cdf7a0e0657482", + "03fcbd4ace6a140c8bfebe36ff30848966bb0d3eec323cc8ddda55faf00"}, + {NID_sect233r1, NID_sha384, + "847f134b90f10ba3636ec24f36a94111f26d58428fda5bba4501e58c7bb55809f52320cb" + "e9e0df55af1e40bbac9f3eaa26a55d78b60621d4356d090d98363662f406367601eaa9eb" + "9568b1a1b319730bad7bf6a7ddf1b45eb6922faf8d065c540b671c50df758ebf8c4aca6f" + "01878e5e0012dd038c58833e2b13ebdb9a9f3fc3", + "0b9119b3b4b30cbfb98ddf0a4f6953417e515fcf0e5a94e83ebc1d1d14d", + "0401be65d340f7e99067bbbf961c2b357e1fd47a74393cae5f93a40c5dc28000c04cd8ca" + "3ee253b99e44ee6bc0e52d2f016b16f59c738b9f2bd8c1b9d8", + "02c851ba0123ff0543808931ab3857b5c15d7c10c343f232913f6e0c92e", + "0ba2b33550878e223cacb80e45e382dae84e76bca5a2ef8371b84d08572", + "08c370f82506e97cc15837f59e9779448decbd87bde0a463bc14b18edca"}, + {NID_sect233r1, NID_sha384, + "99d23950493bdd931915e9f9b65e4cd1329866c0071a19d4f7d6fd190689275b7b10fc07" + "503dd1c27a4da274dbeb3aa5cb0e71e9b7b03fc2697729b7be913756e6760098951d7015" + "df181cf14b1e0b954e6260276af553e3e59907794b863e941950718ef154669c5c262946" + "ba120892e0239e05910c2194f712db46e37e53b7", + "0f4ab2a573f3771d1e4222e251faf14e06cefed544e804c299c9a8395f5", + "0400b1f973d6495d277e24320622b9b99fccef8eb5c1c6952f35b82d4479ef0161dceea4" + "d3c9caa4f640f51b37fcbd5b8932642a94c8e7aaed5db17fdd", + "034ff28a5ed6958514c603b3af5a991e2e9b4cc2c0a7aa73ab2d70bd05d", + "01abe4a7b27395a37089f91eab27ccf29001ced1bb3348a6f919d466477", + "057449e55d3f2a4004d647ad6e8fbbd516adbb4de40b1a872ad8ecf67e2"}, + {NID_sect233r1, NID_sha384, + "7bef2487bc2bbbcbcc1570bbd4ed437c0dbcbbf63f666a3355aec49ea6ef593da25aefe9" + "ae0d94db50692475425dee3c88cdea975794ac69142c25732f3541457d68d9101c8be069" + "f2b515aadadea2019dc7abefa6c12cb3f76d9f4b5e46546f77eaf636aa8f232913092211" + "1151a4df913d18b7cf9d0308f01ad84d878adde7", + "0f4649cf30d4a5269296a45977de2652cb06d3ca2aff4475bb24517b927", + "040100ddcc8e09ba2122a6535c6a0a2dae83abf9e17687b5f6aae7ec6a2df10048f55873" + "60ee251925b7ed02de82307ba219a707705623727f98346a26", + "0a38b2bd0e9a5044db19d4312ec88d19ce1a9bf0eede8c357f898b0bc67", + "0d0ebabc8761ea215808a2c3035b14b614f64be0c2741b3d7789a8659ff", + "0f9e742bdca44c11bcab196f910c0d887e90f250817ee7027f6df8207a0"}, + {NID_sect233r1, NID_sha384, + "87c717eef6dd3c7434b2c91de05723783bef603d170f654b49a04b067b077c405d2d757c" + "e780101b930196ca4261efcfbd3fc1ebb762cc0eecf101072988aca508c41581936526d3" + "f337053000dcf77b16172492c5d654c6612bbd2523a6ad5966d7091697a29ce882fe331f" + "79a7eb59e5a3fe536263083cc59b8133bfd33c1d", + "0cca24ad914c24c011f41f80d27ea41caf41fcc8dc9dc6dff5248b2b474", + "0400175b73db13324a678b8afe086944a7ad257cd33fe9538c59b9177d1064016a98ac9e" + "0ff59de1ad94b50f8c709ccf4342f983c7530be64c3f1548fc", + "029c83def3a5c386b0bc3cf2663b8f4b02f26c6e3e14fcb17e9460087f3", + "061df783609ceb355aba3b1753d38f42434bd75c8354029966e7a788be0", + "01e8a093f53a1d73d5a994b97f2b2f210125ecd3dcdf77c68ea3199856c"}, + {NID_sect233r1, NID_sha384, + "9bf48c2aebf473b3a4a928b3b6a4d2fb7e9193c9e60bc2067f9f03083a8cc7b892bdbf05" + "601118bcc34dd283e7be996bf19b0bd36727eb9d65276b6517bf0c77ae0a9091e7a9e461" + "82a2586eb22324939801034e5ba94ba30d1bde7d8fed51eb71036fab6224f8ff30a00842" + "2efcff7ea239ff23b9f462777e62b41b396c5dc5", + "0f5e12d536ef327e3b0ba65ac5fc3f7f4880f5968f3340eb8868c1d47da", + "0400b2910f5de9475486b3975ce91c02187e8803e68586f3a1df14df67648e00f28af536" + "3ed851c42daaa810afa1fd0d2e001da7764671fd44fb6737c5", + "02a018753965bdfda98512c7f9da3e9235a4a77aab9804437b652182347", + "0b6fd02b2d84b7baf1a5eb592cde667ed6d4c2c821ca336027a72d9abdf", + "02253faa5935885945121a374010b2257123cd5db4c54a2aa0e08c8197b"}, + {NID_sect233r1, NID_sha384, + "716d25519ae8f3717da269902be4a7566d6f62b68cd0faae94bce98c8a4ac6f66215ebac" + "5407d6f64adf9d53f79f02e50921b6f0e8c805926a839443d30d9294eaa802faa7c5471d" + "81fd1db148cdc621a8dd0c096e06fb0b71943337d5325e1bca77062684873fe904ed9012" + "474ceae5b138e079f941a665a995026d13d7eed9", + "08c30d93536b8cb132277645021775d86c2ba8f199816c7539d560ac6de", + "0400d69332763cf533d48e56065e1b5255790f8c0eb23471fac9b945e6219500292df8c7" + "7d9a6803f60bf0722ed57ae2aa3bc816403b000fe2940e02dd", + "050967928d6089da5b16c88b7927de210325c8d8f5e727fa1ba3bd95b5e", + "02434697cb5c2ad95721943154bc81e2ae16332fa6629788f505bbc1522", + "09a5a6792b1b9c2e200ace5a3d50c04f69084dd9222c021ef5fce14d4b6"}, + {NID_sect233r1, NID_sha384, + "01e76755007b2ee5ac9e1d4c8adabad6d0f9c1c08ac6e2622b7c1ead89bd3ad0921b9525" + "b49a780a262fe8fc0904a80391717ad7cac9607de55f7c744af8a132ec45ce79723f4a4a" + "8c8b9ef658b360bd3890df164c9f1cd74eafb74feea251a34514ff2a57ae7a6d4bec2067" + "cbf6ee4fdaabf13721bf9ae178b9034ac5e9665b", + "0fa3f15a506ccf7b50bbbad0a54d3223f5a95eb54f0d1f4e5d0cc21469b", + "0400e797527d57fb3a18c71d1e82e7935e37e719439952d4b972f0c1e0c83500a345bef4" + "c5015e97a148b8991bed4b7ef48947b12f316b5621e94d49d5", + "075afdc12d4d50a7495f5a7d309696dca23e9356a0cab11c3b3d7b8c54d", + "0960ef460000fe8c761038bab7e29d665100494d0874b6556862c2808aa", + "08d3c004426dde6c18b1c9ae00a44ac947e36755d8c40eecf47bfa963fe"}, + {NID_sect233r1, NID_sha512, + "e95abeeb2c51a8cb75ab74253dbe130b5560cd52e2a63d501d26e1458aa568aca6694be9" + "1eee5fdfcf582c47c1c727084ee2b2c810281cf9b095808bf7e7c668eff00a6e48b06df3" + "fe6a445e092c24d5687d7d89acc8063275caac186c441bc697b2f67aa71b03294e1adeb7" + "e557c296dd91304ba0587cda3c984619f1eb4f2b", + "06400a4830889115aa88b860b3fb65905b01fd126c4aec2785518c2543a", + "0401a2051662c1681bbbf6bccbd33c44c7c7fc80b81a1bce14caa36a73f7a8011583d3ba" + "8f22080488471d8103f868100a97af94809b58bff1435b16a9", + "0ceac6e5d10c55888b9ecab8d3f6ada7f4d0bde2f109699157d194efa42", + "0c148f2337008ccc3e61501dc5df3ec95d3596d97eae96a7ab085a915d8", + "036d1debebaaef50243005e25c791b9674cd6fa986dc3d32e089fbfb2ec"}, + {NID_sect233r1, NID_sha512, + "bb8d8515365d240b2071daef0d80558fd3d0e059be9f6abb7b7a0a5f47e2ddca7d1b3b51" + "01d5c583143258520ce8db0a87f877a395615c9bf879ef46f2f20f68bbc9706f82781fad" + "69019396b27f292cdc70fff1772e90205a2225f80889f9daece1d03914d8776ac5bad24d" + "8fb190ba10a2ca17768b918c2e079d83734eb372", + "0c7b73c324250f14fac0edc941f79bdbc6933ee8f64bf94b847bee5eef6", + "0401af7266ee56bf0518f2875d4f4d9ec508a01769d9c1fd0a885a48bbd80c0084167ada" + "99502475478465315bf8163870a9ec1b43f15d68f0304ab03c", + "03badc9b8098c3b4d7e943a2365093028b579519031a8643b50c0f81eec", + "07ad4fc96c21963395f56eb63e1b0b4d2c93d827626e7bd4448697ded97", + "0e7504e6a9f662472e3e6f18a40f7645922fad2ef7313d600a5a6ee314d"}, + {NID_sect233r1, NID_sha512, + "cd8b2403435fac9caeffa21b55eaba52d7efee0f89df7142340cdffeb89556303ca01a80" + "0429397e2ff6c746743b6bc60a87133274282d4cac02e4ca90ad95d80c93b84163b96296" + "f67d40b2a1124b2b6534ab6b60fdee312fbcdf468d0e84eb85fce4ff360136bb31ced399" + "8d29cfaa3ae685e638ee272058f123c4f35f8b6b", + "03db7f28e161abf52ab0adc8c4c8544fc989af081303b8688f22b7b2eb7", + "0400ab94312e53832265b929f3d529bec33dbcc5c17b969e0afbe2d559ec3901d53b2c1b" + "e229e2c224e6e9fcb8bb0f044f3f9f5677c60bc9454f36eb06", + "034a8f980896284fe6d28b0b49703f1384d799e3f11a04b1e62da12965c", + "0e374fb355f30d7e427bc5db99ed76a914d6e286099c72f28c07302c741", + "08d5ffd41f8a1fd3de6c433635fddcfc2b21809d91496ac17571afbb856"}, + {NID_sect233r1, NID_sha512, + "4bb08eeb202564efb5bda40777d71f1bcc4c7c10b611e803e5c570876f3e319e9e2bc2d3" + "2031c56a32fc0d1fcf620d4e4377d881e9e1695bcdb78acba370b849115b86c1c4b83edf" + "a03299da8e7fd14c7cadb81a8e4911c8e427e32c8c9b67e317575331967cf58085cff0c0" + "d48ee0b8e7dc0b49687bb1c70c703a5dad08ec81", + "07e9d2fdd017d6da6029e88f78927d9ac9437f542db1f1fa99e32bfcf1a", + "04018429bf08752aa470a8f0801170a7ab96adfb168ee8212d76ab0b994e460072a5071c" + "e308d7daefb3e8f4da4681842ffe0f35dd8b071f0775c83f82", + "0a0f330e011d34714875500b70c881ff6b1c9e96da930eef75ec78ac120", + "0439bcdb86d40e8f64db5dbead95d85d6a771d811480c5765ffcbf75422", + "06c01f64e2812d18b0946ea4e6599e8cfca0a2b606c3c35c803ef2cfed3"}, + {NID_sect233r1, NID_sha512, + "0bce683d835fe64e6484328aa13e18b0956f6887b5e4442fce36ff09aed015889794e79d" + "a8aa60b4be565c78685674c51e1e7ac60db6a763c777198a56e382a03aff8b40862f961a" + "e23e8b8683b76a5577769422418972ab0049119382edde9e752b42e8b93f403c1ef8665d" + "7ce8530ce4ed9ebf6d397827cba6b7645e177231", + "0c94052760fc74c2b405ee4dd5dd2a7d38ebc16df9cc32df706075450b5", + "0401d2a5ee02d97f82ea9c8833b825cc57b0cb51d3f2a2cfa7577eba676eca0149c68d98" + "d0e9cb242962326a26164f3e3cb6d81b51f281474b0f8d333b", + "0fdd3ade90da682676d40008cebeadb9b2378d8a821e9e9428018cdc768", + "0f6d244daea95002daff2ff6513da694eee58f8b6c2d47ad121be87559a", + "0b04788fbb5655a053d0fb7a38c39e1fef68ff17860442ec8b8ad049842"}, + {NID_sect233r1, NID_sha512, + "a6defc770426daad4dafba3bbd2a69881334f7c31269b297e440926db54cdad3fd7ad200" + "f5ada2b72ad221ad99a06ecac9c2563a8deed89f0d0896991d1a652f6fa282affefbdb1c" + "1985652300d1792725071631d75a182b683a48448063c7d2563ec3d430e0fd3acea33a35" + "cd38ec0b5b07af96af71d0bfcd879d9864ededf3", + "04076b93487c2da8aeaeb4725fb53b7b41b465315335c18c6ca041175b4", + "040158755fd290910498f6c8eed83bcebcd1fcafef4878c860da118efa250c01781fdae5" + "01c2c147eca2c6c809d9428fff2f853b57c7d6add70fcfaa0e", + "07debe933553ba3420aa06e1bc52a1653f8a19b59c0bc9c47212389442e", + "09e09c6d96e33c845535468ec7f5b79cf30123538011d0b5ffd935d168f", + "0963bbae921317666f5852759e9ebf05cd026a5d9f026942835ff0daeb2"}, + {NID_sect233r1, NID_sha512, + "7803cdf4758c199962b62943f475c6c31356f5d9b997a12e21146a2399cd0dd3b97a860b" + "2ce639e2801571599136d4a8cdbfb12fd1a5ce22374991e090533ff42823a2c58d2076b7" + "72814eea7fd7a1fde68263ef912681c72c7aa3e5a7cc44ee8c65e72228b7631e600121ea" + "35bfbbc783b6ae3c0c8f80198ada218be533760b", + "076ddd73ee4fc1f5e6766e229cc7236cdfce312417ea291f7c3328d5ab1", + "04015185e029c0d4eb5102e0fe900ef3c921acc744feb44570a288015d090800ed56bf93" + "394a434cd84b521040d40452bb39755da5e273a05e8c0ba792", + "084e9e4a9c84a602c18bbb6b183d06969c8b8538e2ff901f1c2794d5eb5", + "0fde8e9b1959477ddb3423661df1e7182e4b583849d6d17fafd7dc5406c", + "01a12bd30e9c8b74912c670c0845ff5ecc77f29797160bd4992efa61f4c"}, + {NID_sect233r1, NID_sha512, + "e789461e1dad0b6e21abeb6ae2e96385549d1bae39415188c8f833233da6a3328144c97d" + "db36e0ff4d9e19d84f869e79e609c51b32de59892fb0446dd28cc164a3e53534c950d26f" + "87fb74e682db2038cde778bde06c3ee2eca2a077d8fcc2b0332e352e0e7e6487444a8ad6" + "0e78ff213b16fda9faf374dc6d27b7a3c4c6d196", + "07e1f8988ad804aae7d09a99be19384cc599e7652c02c391542be74b17b", + "0401fa4751e507740a7345e06a8964022fc6caa901cf0c2077a2c0fb86be8a00683c593a" + "0bcd123d958deb6b430d49d5a2386d44706f4149dc526ad896", + "01d288de55b90dbe72cd8f1f86a3ffbc2902f4b5f0cf4e641d32aec6f20", + "0048d16d87dbf4fb8e994dd874c10d5d16846b9ce2cbd43d09df62ca970", + "0e2ee47f422095d629c188df97e2839fc6239b9e2dc26baf8161b037236"}, + {NID_sect233r1, NID_sha512, + "9b58c145d1b6c887f2b25fb672cd49c3a1117224be697c15182d4048be92968a6500f8bc" + "f747fcf33145c13a8d72e891a6e0c4c7310c2b62f3181bf586fe32f1ecf4feee8c2c8bf6" + "c2bfdf9d5f88981ce080095c93e49a772d8e7b59f9cffccec3ca2f212ef4c6748f64e224" + "f4f098334d83108bf6f8c7b43c5eb549f1526897", + "09b2292b0244c2aabe8b43d95039984d504ebe05eaff318760e4dee739f", + "04012618d89f50b7f83ac470705dbe9ed81beb03929732a3f2aa7a636eaf59015f0f70c8" + "08e053b112a8c32ee422aac2b926c5b6a279a787fddf819990", + "0fb38174a83ceb9236fec8ea39be2b3c77c3dd2cf42d140e27838202d08", + "084941856a387a56022727f81a939d77d12b01dab603ea0cdef6d9cd6c0", + "0bb9fc30595f94d664a590ed4f163e4526809819baf96bbee629ff86bd9"}, + {NID_sect233r1, NID_sha512, + "52310a901fe9681a23dd6e02f12974d57f2c4f653322d9a0ff8b338cc6c2bd9f4765c90c" + "6b3c9fb17df3f492e67d204e39d81a8fdeb92c852a1dcc6151ed6c63049037235c6751c9" + "a902748163a567b714725b4d3995e0edbde03215c645b1a1da3147f7406245432800c50f" + "823a1f991c863427ff4c68e4e16d1b106ee40dd9", + "07ca463b50fdd92d9163f1c2bdfce2ee45ba1437b79162e3e959b814cab", + "04008eeeb146216c73ccff0096e1100008f8b1f3f0c5754c0abc4ed39f7f63018c9228b1" + "1888edd66b2e661284f583a0e8d3c3e922932cd9fc1568f959", + "0025291ec0dc2b0c709c5e69695980564552545c2497636b814aa049ccd", + "098dc98457ce6e69f77123d5d2460ff569786dd60fe07e847ed5bc14da9", + "0cd320afad2a4247fea5b74d78dc3df8967ab3159b4c8b191814d368dc2"}, + {NID_sect233r1, NID_sha512, + "ff419c011601cfaf833067cf28dbe6e935ebeddf8b5111a97f6eebf3bb28376334f329cd" + "877a134b074790a073db766efe018fce666a34650cbac285ae856fb6b3b8b96877282bc1" + "1cd9f9c8e510ed1f69bc2725a44a1d2b35de1edfd8bc9d20c7525ab0bbc27662a7cfc1bb" + "d1e0f4fce5b88411521e3893e027cc8c73acdabd", + "0c3844750f63fe0c2e930bc38fe88522f4e72a2fd0db9778ade20e939b3", + "040075acb00b5999f8b272a15a2cbdf8cb630dc3eeb1e78e58f58e467396f2016711aca4" + "24ca335878d273eca75d804d3f009a1f3628568530ef265eaa", + "0a63e7a20d100f14b8b709f0a6c383166c2151a36dc471f061b0f20dac6", + "04063be9d8e4f0f9afe0c79374c69b36910b5d2b1010e0f4db2e4cd23da", + "06a6eb90659aa79e4a2360ea9ffb99a415175dac6c3efef104bef6fd57e"}, + {NID_sect233r1, NID_sha512, + "05a89c4824c5de66587875011e704bc6e06e991ba8f3aed331cfffe55aa266a08c729f77" + "b8d082dca4d286b2d451ea838d726cc2cf298fddf2d7376714c5e37b64506f353917caec" + "525a1209391449c078c5197a371feade74f8fc8a1a1d67576edfda13c14ad324342fc0b0" + "9277941dc072ec0d39434ff1cb91fc59478fcde7", + "0a3bea235dea86506be4476eb7999dcb8e584a34238c4a894ad6823b93f", + "04014093a072c21c44d1c4beddc5c8dd9a2845db0935bbb4e1c4edb0aee032013286ed58" + "4deb744c9c35d7ae7eb9cad1c7ba2b670642de0399b230716d", + "078eda19f0cced2f84c1a7b354e5a79bec035b8bb279473f32d60f5d17f", + "0964e817f0cdc251eede4157a9bd830c476627c3f27d2931b4f593b0178", + "08dbf34e597ae06ad92b13900a4944e54a5bf0f16f586baad157da6dc96"}, + {NID_sect233r1, NID_sha512, + "13e6b5241365d9d0ef9e8b05cabb3248afd221ec02eab92284b98bda3d9272184bfe5251" + "d35705defba5085381430e99b33a3ab77d7870e5102757d065862372df2434a25556b76e" + "54ebc39d4e6c3aba5cd6acf0c335756f7d9385c1068d4cfa37526a9a58c0ccc7f87a8189" + "176c5d4f201499236058ec061357dcdb5acdba40", + "09a367cd1cffd8dfcca179e167ea437ee48e9b6f42559dda9224701d3f6", + "0401052d751901f6f8e61858d3b15eb59dedd21e4e997531ef65622d5750290112737be6" + "7ec621509d73cd613d7b448035397fa66eb881f90a6d531ea4", + "0d8dd8f1cab623ba6a4e840962fb31de97a4d14aa6dd34dd21154105030", + "0a8276d0f069f34c60b26a55d47df69e4c9ae2981afc59e14b5bfcaa498", + "09351c4b3a06b839eb2e9f450d9c3d15efa45509886ea3f2610ee1dd156"}, + {NID_sect233r1, NID_sha512, + "139a1a5090b97afb8fecfff8745efacf7dcf91a4393a7b629564e598d58d5be39c05c583" + "0d4c8ca85d29e9e2c31ad0447864e867d0ef4788ac734f8d871daebceda98d449308c2af" + "be97724c3af8a468f1925065f39e52ba4b7d15728a744b1252a20476dcfff7bcb82aa72c" + "209e72abb3c24419bc26191390ffed340c1b9c6f", + "046f4ad2522e78b9b35297d28f361fb0ce82306322aedc119251d8241be", + "0400b976c53a966e0834d5f6bc3af10a5f12cb6d16cb2303a3c6cee7d35f2201a1097cb5" + "6662265f4f2f52df375d70af086264752477c34c6af522f1ec", + "06a0d21e5aadcb0c9e3f9fedd2d896b0236dc90e33778fb114e970122bc", + "068063fe0a31b7e7925cf8959c3486985d98f58224d5f67cd0218af192b", + "0f11a22ced98173040062ff9e69d1b2a1b5a939eda0a6944e96fc62fa4a"}, + {NID_sect233r1, NID_sha512, + "3315e5cda5f252e3291b61e493ab919c20a8af1286d9660cfa2f5ca38b6defe19ebecf82" + "0787fe692d04eae8a5f5d37abfb593309569cedf45efd0cecef6951b718924c8380ba52e" + "8ab8c9bfb2261ed5f01cc5a5f9fc5fcdd269a0f122c597afdd9a836cf8f96838c3e8962c" + "1788c3ce4128719b3ef4fc88569643dcad6da16f", + "0ac82137e9c7a5ecfb8b1a7df9ab50732934566a392a6c8915ee8ca8144", + "04000f7f835f8223fa6c49eaf6650e33dc9d09e1d2bb098925d908606570b2006e659ce8" + "623767e8214b076d7588746bfdcbbed59b75bb19477366cc78", + "080655784e3e31c6a498a63d4d84f7e5a353a66641ca17d4e223441bb1d", + "07faf31d1d31ef4edac1c63072350536df84c417e0ef808c6be39617e74", + "089023aeb53ddd3e475d11c53479863739e62dd64348646581012784689"}, + {NID_sect283r1, NID_sha224, + "067f27bbcecbad85277fa3629da11a24b2f19ba1e65a69d827fad430346c9d102e1b4452" + "d04147c8133acc1e268490cd342a54065a1bd6470aabbad42fbddc54a9a76c68aceba397" + "cb350327c5e6f5a6df0b5b5560f04700d536b384dd4b412e74fd1b8f782611e9426bf8ca" + "77b2448d9a9f415bcfee30dda1ccb49737994f2d", + "299ff06e019b5f78a1aec39706b22213abb601bd62b9979bf9bc89fb702e724e3ada994", + "040405030ce5c073702cffd2d273a3799a91ef916fcd35dfadcdcd7111c2315eba8ca4c5" + "e3075988c6602a132fa0541c5fda62617c65cfa17062a1c72b17c975199ca05ab72e5fe9" + "c6", + "2af633ac1aee8993fc951712866d629b43ed4d568afa70287f971e8320fe17b69b34b5d", + "165ce308157f6ed7b5de4e2ffcaf5f7eff6cc2264f9234c61950ad7ac9e9d53b32f5b40", + "06e30c3406781f63d0fc5596331d476da0c038904a0aa181208052dc2ffbdb298568565"}, + {NID_sect283r1, NID_sha224, + "44adcb7e2462247b44c59608cbe228ada574ecb9f6f38baf30e42b589fb9b157bb0560e5" + "a2aa5523b71cc0d7f583b502bec45d9b8352f29ee1842f42a17a5b16136feaa2efa4a0ae" + "306402940ecd6b71e57d1467c98e7960de2a97f88b43487e4f4016af1292381d70c18c7e" + "6eed99a14cdeb5b3caf73688658e4c5b54c81e08", + "09c2804f8cab768248fb3fff8a055b3f4585c00de5c1615a19f9425b9432ea09afba8f2", + "0402570ff62b03a5124f08f752aa71ddc57944cd94197fd286d5a2a107b116d7b8ff1b04" + "21037714d9abe9aa0a9668fce89a3fcd5cf2e4548102a181a777c9b3f1008ac6e8d3a31a" + "2f", + "0dab5ef658ae3e2ce2bc5c88a8b8022a0ca5eb8524815ffae414327e3afaea5fcb8a7cf", + "2d99f82d92c9554722bb793988af0fd0bea776c5608f5939db7c8634eeb24ffd381dbef", + "27ceb1d01ec9a3ec0e74d79e08024359e117488020de6458fbbcad28b173918fc7d129c"}, + {NID_sect283r1, NID_sha224, + "cffee6252c7eb6d91d8fe100a1e62f0ad9f862d78ca2b747a6c17b8c9ea8980dc239b3b6" + "73310e6e7483582399163e39d889abc1a613fe77849ebc09b4f7f4fe0688b8a9869ae918" + "a88294c7ee199be50ee9460db14725ae70b449d0cb48f30e7d817ec02c0cd586119341db" + "a0b74f0279330807cfccc99c8c340b72c1764a45", + "2e625a6bc6d0ce7c06231de827068bdb0abc8ffb57c82b35ee3a0f873b9473905974d34", + "0400458bf39974812a4e0964c31f40083300454104c0d65f22c5688bfff3c256b7ea9589" + "000738dd33e32b9af93ade2dddf4147187a9270543afdfd66a0f2a53d6d3d815ef59795f" + "60", + "0a9388815c528fdadcc5d3b125c7a38db57fa8c163ba795ee00e8e307bf760619e705c9", + "2481571400ecf9dd31dbd9c905fa1006cd5bc7afae759da3312ead8d5a7dd0c25a37ab9", + "13952fa427d348b6347b9e93d4cb2c4cae3429dbea6aafd1e58d5a34805098722b3b8da"}, + {NID_sect283r1, NID_sha224, + "d058ab5dc07228253707ef224897ea0fcd09c3d5cc91fdce9e03c1c59c53fb4596be2ed9" + "29c7455e67ac7f4891aed3eb06ad88f2c4aaaabff045b959f900d1019d706b6052637585" + "1bb891494e99995928e4cd51c9616aa651ec77bd7e398916bb9ed3156391bf7fb1e29181" + "e2b011dae2edaf803607def2ac6b194929a57f45", + "376ac24e1b86f8a55c052d92a0bdc6472fa03acdcdbccbf7c321ec0ccd97aa0a66b4181", + "0407247c755b23bddf944e29348da82495b4f61d02a482c6111d8698cc77e8dda4c341f2" + "0b00f8c199138e1f4f8344facd90ac62d55f3c9a15ba7a672ce40241aa26419af790cf7d" + "d6", + "25d07c7afc5a335c2bd7863c1965a48c12f2687b2a365a7c2700b008ee8a0e8e35a68a1", + "23fc2837a879b79e470305088acf596eb0159edc2008478cc4c3841a1bd66fab34bbb5e", + "0a909b83bf77e74511063366ea1d1308a8a544864783459a60fb2669785ab1af8f4cb06"}, + {NID_sect283r1, NID_sha224, + "c86f2cc7ab5df5cf1a236fd83792769474cef464032800ffe98a44cf29dbfb6f24088160" + "eb31a11a382ff2a49f3e05e983462f5304272f96c0a002b69af3d233aebe867ee63fa466" + "66760a6889d022c18645b491f8d71b6a3b6b4ef058e280cf625198715b64b025bf044944" + "5d3dd7e1f27153926e617bd2c96638345431d1ed", + "2b50a6395fc02b9ac1841323de4520292f913519bc0d6a471aa28021322fc4dbcd7b802", + "040696d5ac4bc40e679524e246210b7bb0f93ccfe7dc506ba87be3fd018f829c93e62ad1" + "d8065953e01d9db8fc5d64516d864a33aa14af023e601d69875ac0f7af92a1e78aff0e47" + "5d", + "0aa25b43329de4e7739fd9134e4f4b3d68a64e55af47a2f6ccf71f518f19059b68d34cc", + "1338a5dda5fa09667604a6a7666b0e54e6b688b98b31c25d037ddf55ee6bee7565dad09", + "00aec025232c16e778f90785ded5348f3d5345b8344b2a762480383777328e0a0b11cb3"}, + {NID_sect283r1, NID_sha224, + "c1328d8d2e5b6ffc850a9600bd6482518ddd9cee3fc9140febb72bcd444b0cd7e8074587" + "d51b62cce4b3d4f34ad3355353fabe363369cf790db2df9fdac3a0ec4757e2dfb3b683ea" + "a3e26531691ce765742e1c0bdc0e1028d347b6085fc459df0989c6a144271454eaffe413" + "cae2ad7c8b2371fd2df1afffe56df727009765a2", + "24e5889722f6c35e18ca47effa9e415b1ba790066a91fb3c9f7b001ce28fc732b09bc23", + "0407d4a57e6aaec6b51dce5408f6a7fbe9ba9d55f5abe2da55fcf015ca25dd74eb61c155" + "6c02123390178b2992059151afb51ac652b364f562c65451eccc65d968e9e7210921c93c" + "9c", + "320d2a7f48cf3583e8d7e712b330d40ddbe4b6c128be5a43d72bf57d4227603762de7f0", + "09806a8e70742c6c4a9ee6f77fe7a36489e1fe8c442ddf9cdcfa61f019ab9b41241d949", + "061fda247ba7c198aa532906bc01d509088d6c2ba0f14ca3ecc5ba36f3595db1df3e64c"}, + {NID_sect283r1, NID_sha224, + "7176b7013ea27e94281977eacb976bb31c753bf80fa09680a29128a6fc15234f79f0e990" + "0aff3217ce9be72c378042c6c34fced0158740073d1a985fa25987fb218002e425868fda" + "5a47de51abfd04de34e2b8634cebfbdc98e80f93d94096193eaa82dc8778fc23f3765c7a" + "cdad94fdaa272df0ff0f28190c10a462ee78ac92", + "056d15b81f40b6378588a5efe43e21b95e18120d514bfdda0e7759a1d0766a8a35ce5ac", + "040306cb78fa576bdd2f43cf7b71d7e66a98b850d87ac087dd2e1ff62596a2e8d4cfff13" + "4403b1e3b12db842e00c2faef04d3e39cdb71546e4e3ecf21eacb6131c3501fa30edcc0b" + "70", + "1e8969d6cad41a40d8306d2a8db3290d547106eb59f661e0d0eeb163044a92aee4483fc", + "06786637c3bd5a95eba5ce015f151d99845255175ebb9e593d912c75cc45723612c4ed5", + "384471c17c45ddcf62b588993835bb913be88f7a8e46e52e211972ffb3b7768410bcb7a"}, + {NID_sect283r1, NID_sha224, + "4c3642ba040a9955b9d50dcd1c936688c17c363854358afa8ca49c6abd906dfdc4d89bb4" + "cab0bbc363fb5b74e1f004d4b09ec9dfeed4c0bfb482a9061a1f487a3d79195ff7b65a05" + "04bced3a28db0ebe8fcf8ab1ee4a3ae91324d15d890ac4c479144dd5538d2e36d3a58776" + "9ee9cd2d5c6f85a03362a022fe0efc4a3902b71a", + "12fb2fb5bf5f7e42a500154823a174ba2d05af71e3b0cf47fab46e673ea1822f1563def", + "0402414d172d74a6281169835d18bfaae91f1f1cdfa9ed451884466e63160ecdd4a2c790" + "6f02d892bb19b47a4fd9d851d3b101ba99acf6d11345596635cedd5d7557427a2896a913" + "c9", + "20786f42d77195bea5761f86dbed8b452f858b447d2f3775ba2a4865d738122363b50e3", + "334507412368f08bd0992a5d56581ea7139e8adc88abe4bd80dfeefdc7a37a481b18609", + "0fd8404df06a02618cdbf6c28610d5dfac9907635d9e5f2887f11a7f18cb8b7ac95b5d5"}, + {NID_sect283r1, NID_sha224, + "e471f39c18b081362adc7da47dec254dab8d765f005ac574640d78c14222639245563912" + "d942f3be212ee3cef134407334c8fe3602fa0e1629de5331643d76715dc1b0ffcebd484d" + "86c5211be4b285a31688b205fa988e6c15b36daf396ccdcc209c7dde2a732f5c31c84c7e" + "a041408ebf15e56632583af0131bd7f531b5fc45", + "30096c54fd480647e017f8cdbbdef292e799f054e3279d228b09816a757566a744a8266", + "0402d4b28fec18cd888017fd5a27a375131bec3aa7195c0a4f255eeb3616437079e356a6" + "cc027c607dcf0b068418eaa7de8da6f9707650e8d95aec571f7ec794415fc175061b4515" + "19", + "36880905a376faa594978713c2de1a90c8e27baee65bc60b1fa6508fab5abf843f66ecf", + "295193f1c64181bdf749987bbc8ff2a188126131f8f932bb8ca952ffa201f109762e18a", + "381c496b4035bba880225dcfe74fcf101103e38f9518d9427c74a5ec86ebf8f7183694e"}, + {NID_sect283r1, NID_sha224, + "8a93fe53e83075c4025228540af7e96a588520da34e3eadeb99a4ab2f3dbbb8f85fe63a3" + "b86c1f4ec912e665ca05b43e869985eae3791b91205afb1380e16c25b74e6793fa63e4a5" + "5dcf25dc22d03f09deddeb9042b620434111afe08c5657c7d754af66ad91a1b5423301b1" + "e8e6389a1404060d1b6a99fe0f89598482979e42", + "0a1b7e9c8c2dc25b494b5ef3195b294e41cd3c2c35235ab42542bd3e2a52d5826662bf9", + "0406232063dbb66a56e2a92dbdfd9b3c136eade9c214d831691d9b49c56a3962d20f14b8" + "a901b47b85bc223fde1918abf6308b74dff7f3e686af9c9d7a1855a1b77984d258c1f9ae" + "da", + "29b4221eebe151fe758218138535d81182c991c3b7fed93f9a6117e98c1c2f97e546937", + "1f8040fad671e2f32a1094413ee955ea5426bc906b8e034d87d7408e63db173b05afbfa", + "22a353c431a9e9315ff69facfa4e15f6e6ee1be2750472823db31b49b17fc759e6b94db"}, + {NID_sect283r1, NID_sha224, + "e193a8ef6f454ca1aed38bb67aca6d08280d421b196d89938c0582b7cde74dafd71716f3" + "818940af412d4a7ff3960a8517aee108ae03576b68ee7557d35e6f1ab823d124de7243dd" + "02b542591f62c80d822608572889573e4c9dc62f99d68e07800da6f83cb6f5e03d1f2ac1" + "5f90e38b4f25e0a75e354e4b60cc81c0bbe81d39", + "059b1a8fb84530bba7a607ee88310e31bc6ea6a6881603567a1081a05a3a9ff87e719ef", + "0400b9a71aa3cb4cff37586b1e522b0e332ad5962eec3dfeffcef3851976baadf611ae52" + "2606b1bf0b43b406b5edc6782fd391d9fb070fa3570d3cd5b2b66d7a95dbc45ccb162617" + "2c", + "00a77307da9845ec4572a24c9e74a17b76b6393da87a9d7b1b8456235473ff39d243ec7", + "36721835be490b5ffc4a42bee3c6d231417f7038c367efd9ecaf7fb3618ae8492906de0", + "237833bcc3e4a721e2079e579d1aaf2519c01cc238056fe0c0990dac7fe50e75eaf6f96"}, + {NID_sect283r1, NID_sha224, + "8a99b9db191f6cabc88b430bc2293e6774d5180f019d871839289e25aec29379f14606e7" + "42190b7aa062e3b29fe0254146d9614856c5140c7315015abb98ac00da2c7e33cbcc82c2" + "4b797366f12767322c4381454d9d1eeaedb616b0ea5c66d1422da459f18081f4f966d05c" + "e279c6ee69b1bf94b8388d38d4b770d9ed69025f", + "30ddc2c7a4ce300cc2b75f0f977033f16c1f8bb13aae3d494c381f9a6dc8622499ae4df", + "04047bdfd7c77ae0c53e327c15c30d90ab1c9b670fe2241dc0ffa939fec3cf6d3c1f493f" + "3a06a286aa2310a4d0468b62f3144a9da2e66d15bf86f60045824278e8986ff87a276119" + "20", + "38afc3d11c66eba3441a5ea298fa593eec57b84ea29973c306ac9d46bb8d8e2f4c8b049", + "06c830f6c0be99fea4712f1c75f5a4e439800dcf062a16d93135c3255d3cd04bef5bc7b", + "1eddfda0d0e02d382ae243e604f76939dc21f3ce106243b2d20aa562b78e620fb456428"}, + {NID_sect283r1, NID_sha224, + "5c437b331831530aa94623b1736f00b986172699f0a02a5e5df0008bf25341787e2e6604" + "6f2c929dfe0058c3cb89fc5bebbe1025bb1edd1ee31522ed568e7b5b4ca3991afdc76a68" + "cbc2c4f81863e27fdaf6a564fab2c6354e5c657de81390f8a4132669fd24a48580c716b5" + "b7961a9c091f614d11cf45dfdaec8946a54a11d8", + "07899928922fbfdb5407517725edf231d15a8b62d90b7fb6d8c8d20424850dc44f797ed", + "040614257f54514cf37df2cd78850658a85ee362764ab8186423aa0f9a1ff486557f8f16" + "7f03ceae9d1370df045d20f576931ca63bdba8885f463d5c82e5edca5116ed3d2c2b0c48" + "61", + "3395493478e69e6e1088166f622a4f9ec7feb998aa552b54bcf0fc67c06079f45a14993", + "3f31ad171dd59c9deb21851e631f223584b17f72a6807d5239ae31373512def954d5ebe", + "28f095ae43ba5bdd899573ce6823eccd8e127c6c03cb59dff43c087ca24e1ce5504d1ed"}, + {NID_sect283r1, NID_sha224, + "91aa08567d8da4c90684dc06068f69deae240212842ff1786f04ec41b40d9187aa92c764" + "01f9fcedced62876a34df82ad7c1e63b68bb2a972257ea8542bda6a7f1a020c9b122943b" + "6d651abda8b8d322a8fb762eee376daa2d3637a71ed6c4f5cf96f61c0da2d6e1dda3370d" + "80e51da2cbd8aef3267168c67359523faf910dfb", + "2a2af63d1171930758bd3e5bfdac62cca1a83a3b55a49b3f80cf0d9ee4b2082757beac0", + "0407dd6fd0868ec478e7e5c08965fa4f1efe8db4d0c04f0b6c63b5dfa397607a0d9d5ce9" + "09054ff4fba9058179a2c61951fb4955cb637b01267f8f08b3aad614738c562f602d498f" + "04", + "179482dddd033e8849abfd4991304137044d7433d7bf858a794340ea1cd66e736b821fb", + "071f4cb000ca1c51c698c867a78961e6d7defbd60109f79d1d165ed045a653ddebabd10", + "1e2975f4a1fce0b3b0e13c3f50005fa664ee9319cf774d2e107c406d36158bcecb0e5bc"}, + {NID_sect283r1, NID_sha224, + "eb5297bf408c1a55e400a20a3c10acbc5c2bc6d6ccfcc0941fb7a6fd4d2834415a6df86c" + "3a6c4b867d1215aeb8222153da8cbbb1576c92c07ca2c36d8f243fd911f9a057e39ee258" + "32454e28d7ed52a8d04169b9b9677a16b32d5d211b8573a8986e9bf36d7206417ad2771d" + "aa11bc21fd7ee1029b65ff7c9b2705a6dc9cf9cb", + "35994e89e13916ad82608f74a639e6aceb756ff913aec440519946d6434af9a60a6af49", + "0401f7805dfc9f90d4f8a1b241dc9d68aa41cb77b63d530cb3733cede23bb87ee5118e5b" + "be01c3f1aa3a1218de78a94ee8f88d3f787fdc68674e31792d919dbca681a6db1dabe89b" + "61", + "2116684a4307c67a3d8c1014b33b928a962a8daf86c4031b0c1d47315d74bad7dab2aad", + "33cab952e9382dc074d666f1f2ab2bd72ba394a404ce2fd02a6f7a4dc096d713827c94b", + "33b2886738d882146c0cd715701fe4e8b94b0d28c73a6b79d2899391119ba910bcbe3be"}, + {NID_sect283r1, NID_sha256, + "f415d0adcd533dd8318b94560f86732c262ad2c6dff9dc83e2435543f429a2158cd2fbab" + "0d96c027f71008c4895ecc644c2ceaefa80937f6cc6338d15d36e459a16bd9387a361a6d" + "800acfd834ad5aecf442e30b70f5bfa164747cf9f89325b80976052a83a5e896c00c54f8" + "1472b14329cf23bec10a8e693005de2a506ba83d", + "29639da33f48e4fb0d9efdf50bba550e739f0d2476385cba09d926e789191b6fb0a73ff", + "040770f9693777e261db9c700eb1af0b9e9d837ce5eabd8ed7864580bfb7672ced8ffca5" + "98068aef01c8126889204aaca8f3ccb089596f85e2aca773634bc5775ee4d27c77f2af83" + "e7", + "32a930fdb1ba2338554a252d1bf7f0169d18750a4ec4878d2968c5e735f98b9d0c25edb", + "30cd65f1097d3fa0d05e1d6072675f1377a883b683c54b8a1f4960f90d68f3ee8c7bd98", + "15c61ddf43386a2b8cf557760200ac06a480797e21c92e45e6a311e1a508b03c4d9632e"}, + {NID_sect283r1, NID_sha256, + "b178d86c9335b85e02178fc4551769db589ab91d823fac219c7e14e2f029753b20396238" + "9476723832f8d9631dd7764e6dd35da290afa42a794476f5c7727b3688aced848dabc995" + "4201578cc7b25801710931f45cba1199d3788d64dc0188412e70723fb25b8ecb67183581" + "50c4037b5b81466dac1686cb5270bb1c72d34bb1", + "0583a7ecbf2a975a32d07428d27ac82e5dc13d1466c4fdfc1e6a05a8d9a289f1010617d", + "0403775ec793ee4bff15027c70d9bb5dedfb7d2e41af8895faddddd4589cc5a00bd222b3" + "bb0300f7cd572d82f2f0a2d99a83977ed2034e03fdd76a0267455a524bd8199424ae5b81" + "ca", + "1e58b1f66c927f4ae16143856d67193d889debdac8eb03936f1b36d550c2f2639e13f8f", + "0f897dbc8ea12f4370fcd08e8700e5e4c68dff97495f401d01b782f2ebbe259bc0dcf25", + "3c32424fdcca39f411663284658b8f0c1f950f0cea4354f02f4b359f18e3fefac0976e1"}, + {NID_sect283r1, NID_sha256, + "c8bfe9fa7c848531aa2762d48c153cd091100858aa0d79f994fd0e31b495ec662209a9c8" + "761cd1d40c3d8c4262cf4dc83c4a2549a5cd477726ab6268b4b94a78b1c4a7e700812872" + "d7f41912a723dd9abc305420ea1e1fb1fee41bf643f3a24abd6e8fbf6fde2475e2905277" + "24a6f99fd75374bf7cb01b34d3e60d8db33c4de1", + "0f817ab1b49131fb9bbe8c112c25a36f064efa85de7506fb9cd29d81b326bf276277f7f", + "0402b3a06e07fce1848494d3227ff77d1c43f4ec3c037ad73ffebfebeeae87d3bff7f7e5" + "9a075df52e6a34229266ff28b1c217538ae23b3912e4bae8de5cad9b57b7c1c9ca8aabb2" + "e8", + "0ac57fbb899193b88fbf4ff2c502af72943b133e8d40459a833275212f6644f566f5c58", + "3e13307d5fc2b7ad24e9422355150578c78e1c99a6f9a24f9ca2e8bc6856936c5c4af2d", + "05e8b77b580cdacc2660e6f8a1877d93c5983d135d63ca0e0b06aa8daedf855c9f661fa"}, + {NID_sect283r1, NID_sha256, + "9a5f563d0f9fd1f31f3a822de628ae970954f4e71292492d727109036491c29e66b9b0f2" + "c90c26abe94c08502f5e923a9ddaf6a7d91e9541ce90d0a49f03ce4e4769753d5b7d922e" + "1ceaac4b4cfa4262732a09550aa076b8ff9d46a50fa17de17e3b6bd606698464d116fcd5" + "f1ae11bf45b0c48d3b738427cb47b0d1272b03cc", + "2782af76ffebf3e2bfc0576b70e4f4bb87c762e2bb230d278ce776310a14f5b678f29af", + "04000dc21b3be7efaba5c7f9f22591327f0f97083d4d844415d3148d227931256d026ec9" + "d401276f1d9e131f13bb129a1192fa24602fb508c9679ad2124e49c70a891777cd601955" + "fe", + "0255972b5329863f380de945574793beb0430dc416a8f2543330a125ce8d69f72dbdddf", + "25bcb54e188aef6e362a62fd88daaacc8e697dceadc8a6b6f804ce4a36856c8da6de97b", + "1e12e18e1e281606c16ed1f49804f8cfb33c29b0ae92c072d5c41ee3e6836cf1813d722"}, + {NID_sect283r1, NID_sha256, + "3d6b065721da9de82cb33ec2c27107eb399b1e69ac8fa51145ed4147e20d72e27434104e" + "76af988a3bc94f55e36677a05182fe2376dbe38195fc6a30673a4dca87336c7304f3f31d" + "49216fbdfea00fd1e105d8b0c13ab11f8892e0045e915c17dfaab07b24ed21b06af5a8ca" + "d4f45fbee5a25bb6e87466a7bc422c0bb896440b", + "31b827b88f14d3822244809096157df3c0aa99da90c00cd9f0b18dfe306f6881834e6b6", + "0407b3ed076a2901ab2625bf05fa6db10a8c156412fd2d26741738f5eeb6a91891575269" + "4606a8cc2061352c36f264d23dc2857fbe02af34397ae5130c582e885f50f2c112f141c0" + "7f", + "0b36f5d6da409c4a27f38ff9686cbf5f4714f4e17234fbee6e6deec97c9f0d4c585d42d", + "356911114c9ff9ae4f3a4fcc5379c987b9d298554cdd39ce124f04707e7fd1ea25231e9", + "13c0a321c4c5a1e89dacddae38a9b3dda32a20627e53dcdf28ee26a550797c255eefe6c"}, + {NID_sect283r1, NID_sha256, + "d125f0e2e6135567adec9e77da2afc6862e28d618416632ced829d14ee8b61116da59dfb" + "44098a40a0b927731125617e3d2f32cfbd1546a6e758c1ab6597e75db07add52ecb61d37" + "da2e9ed04df95b36ac249f4cbd794cb561655cbbe4b34834c497b3d392d78ed0db8db683" + "aff0076fb6e43acba3fa2b91210cc6cf3fa594b0", + "27da4916f1c471cff80bfa14d12aa10270fc3b26caed010c0111f6e5a40d914a3927763", + "0407d8202c88fb915446c521884fb756375a2b8d178f6a87306c1c8b67b926e830c8285c" + "150224dcebb8a7c46902532870ff855c780b2884dbce2956cd34dd6ffef8dc365b967534" + "49", + "3fcb1e759418e4539f9be76354cc1914ccf9a111338890eef723431925fa132ebad8695", + "0d4d4f23408db58a72495aaec6dc335ce85309fedccb6ade053c23347abdc9e77a81aa1", + "129b6b322573dcc79704d08921cb54f31c571573da78cb09d0aab40c4036ee8f195d88a"}, + {NID_sect283r1, NID_sha256, + "b380f97687ba24d617a42df1b14e5506edc4b62dfec35ed9fd886bb769832cec7f9adae1" + "0c21b7cd9152588797b4efc6b2b30a873d3f25e683ea9be070dd69731949a51121e534fa" + "bfa3a2eae0ee90a454182248bedf2595cd47ad08614177d58f7a773f5023b538f5f56868" + "2c83fb60e3fb1aa859948d01bf7b214e7f2dc719", + "10608eb51dc0ee97d6e488a23c582ecf0ea1df9a24db77094d87b3fb6ca98507280a934", + "040399b3e571caecdfa1efb243323159a45618702600b870954cd614e494bccd70e381f6" + "8a02e2fc57721a500611badf48fb435a6e399cea356d281e853f55ef2cf9fc5f70dc8b3d" + "a2", + "0a8045b4f55115dedd8d742545f9f2bd6e5ab81cdbd318747aebfe9f74b0cbc964b6040", + "2d022631bb7e05d316a1b130faaca5af5eac67dd25ad609e6e2a067ff74fd4ba534db2b", + "04595f184068433962d250394680701fbd2e2bd613a47e5de68fa1eb83cb08fb425571f"}, + {NID_sect283r1, NID_sha256, + "3f9ec57e4228e1a6ec49df02c58d756515305e48763ba1dc67298be9a1548576c28c82b4" + "e9b3f62357d9b3c522b16d5c496a39effbdc8290edd2cadc0019e6b9fae1e61238b13b62" + "65ad2ff413a5a0684babdb0013e7632051455e6fd943815213c555dba96cba8911e006bf" + "ddec6c3353065004538f37e48df9e339498d85c6", + "123f9eb8babed548df08cc3afc1d3b3bbed52b538d4654f2088fe76062fbea75b85a560", + "0403b2e980ae7a847394720a9cb982fc1e41f9381b0f2e08b87fdff1bf891b9637cb2248" + "5e04a367d593edfaa4e17113b6b1ea3ad185b3155b1bcbd9f00f4482e509b43bf7eb67a4" + "48", + "2adaba166d703d4d2d431a26200acea7fb47216fd04882f91c5730a55c349770d58a452", + "2c83e6a7b4fd48e1ba4fda8ed7891425213764078926d8862d0eb64765ee2900b3deccd", + "3561a949d583b7de9263d07ac427bc175b75dc52f43f3ebedf996218c94e51684ed5f9f"}, + {NID_sect283r1, NID_sha256, + "bdbd7b7bf3337bd9d21a3c6db379f95408c17e49dd394e94737ceae889f45dc0ff5d48ca" + "dc53703a16b5589939506b548f8dfd34c577c084f372166cbea320c8fd07c809b211e074" + "9ea639e68f890affa1569b66bd763c7c710989e491011371eb1d93ed9479ff0216b7f79c" + "901a2023e2cf80b565d1c0517e73117190cd2f02", + "06a18e626452111922e02e31d662f4301319946a204ae8a34f06b91dd1b5b96456365e3", + "04077c1fbe6a645b85fa0316ae412e8dc558c7c066d9aba900650749eb7b14a149ee57a2" + "5901b2f3002ff4936653412c8ccb8a67dcae18d78dcf6dcaaa75061013d2134af2c3fa0e" + "69", + "21bf4ca10d03a93d4675baa26285aaa554836bd0bab6e7fe42600ffe9137d5e304847e1", + "20702aa5b5cb45cbe8025b4ddda0a42a1ab746117d45382d018b2055b62791ad91abf54", + "12c31f9bdc096236d3ec46c4e6cdbcea47e4fba0e28d4df0fbc19e8740ce6dc0577b242"}, + {NID_sect283r1, NID_sha256, + "436b288512ea57bc24f84fdd117da9dc1858bae8c11637f99295d88fa9d05e3c053a2584" + "a6fe200ad190b3077d9a1608f660349dda405066c1562f6897ef69b6b674d6bc11fa470d" + "0b96a7cf8f6e098c9ac03b0ef415aa045867ac7c11d16cee78ecf08850ccabf70f761682" + "b561d0d0e4a889d840dc74932648ca2fb58259f7", + "3307fd717015b12a2dc76ada21442ac1d97519f66898b214c2ea317ab0f0905e819e4e9", + "0404ff9b8d60ed177df635a3953c0f5f5c0254224bc48d34329136706d6e8fa1b16ba091" + "6a02e50ef73f43ea9a5ad07c6bd68a82b7239534e195ee929aae7788c073dbe9e968c282" + "8b", + "14d8339f610b348f4639ac20dfe2b525517218f0c71b1908d407603b25f19971a1b5b4d", + "2acf3dc4e3569e5038fe97920de626ddb36bf213afa0f939785dec8319eb8321234c574", + "01db40fa416527266a3949211fd9fec158412c447c392ed6a7c7f159a1129da864d33be"}, + {NID_sect283r1, NID_sha256, + "672faa156dc188bf16bf8933d65e091c633f294486049ce96a4a403dca28a149f4f840e8" + "bef47412285363e9e89006614b013a41baad9885f1d9980cc897ffbd5f8a7d0e63feaeb4" + "2c07776efb307ed680ba1cebf470dd9bd8a2a9efc2b1daa569524394f9a50398add1a5bd" + "2f7c263f9e63c2d49461acf98444fd23341ce78d", + "14f9f412e3c7d770626e800d43cfcbba3ae6aec8563af748e8a97b67d244334b6e6d2b3", + "0402293b37c84e7514564635e517bbdb9bda0b4a41217ca64c38e94a4bd00753255b4cc3" + "890088c10bd909964ecfe10c373214544c6f60ab85b8f5545afb0fd2ac03d036db7ea9e6" + "7a", + "19b21a4d73012dd2a2ec3ee280a9b855b89e6ad53438431cdb5d2cec0e5ba21300e9bd6", + "3baaac69d182bf1a12a024dbc9a52ba244a654716e2756c36ddf8ca634129cf9d2b23b2", + "13ed92730d0a6d75f2a4a56b39f82d063e1be988dc58f0ba5f553fa88b6510116005727"}, + {NID_sect283r1, NID_sha256, + "4321334cc8ee44f1cb392a4b280a95561809dd3639ddf43b6e11cb73067597988d95b864" + "3d86c76c3c6b932d9262b9b8b55a04fba0666dd8b8ff1e8fdf799ae3945b6e30d3af3966" + "f1a6d634d5e012710d66cb447fc3375130968a2e1e647780aada2609d87247c90338dd71" + "c3bcc3902311caba27d5d4ea4d73ccea960d4bfa", + "3091a6a8bdac1e43542dce752694972e734dca31c061c7d1000754296d0748055db3f09", + "0405c0761d01020a30c478617313c67008a1332a0e6f295c5a9f01b3411eef585a9dafc6" + "9300eadfc6f7bb9986b0dd221b77b54287042ae8d1ae5788706b79a354fe785c66145bfe" + "81", + "0afb2e2e29b26a686368b127e38c2f5726fd55a13e9f87cf00e831d3fe19d9511d07e81", + "2685f634a8c16ee79acf62b7a1fb3acaec0db47c6ff5f2c97a804e9550494b128b2287b", + "12b545bd76b8d2cdfc5452291d5e4748a5e981c400daeb65c20812a65bbe936bc613219"}, + {NID_sect283r1, NID_sha256, + "2087e22094570d39fa937f15a3ef0601709a66666344186a33b487d041793fbb9709a95a" + "f250b1df0762ea98e911aeb3ff1fa19f0aca53fd4179e454e0e91636e55cc5b17cad9e15" + "75c82ad265dc34c4a66b7a31ecb9ef9dc756f2ac1d9dab35369a6bad4a0f47e629daab91" + "addc6d297d1e5d81477b3966d8c3b607ed194d88", + "1195921b91353db9bcd00510efffe009c94f6bd8d790f5fb3e5a0101c9ca5d21c6ef2eb", + "0405dd8aa95e24c054d508bc5081546677b9a8e8dad40d3f8a184af7cf07cdb09ffa2e04" + "9805032f208dc3bbad6aaab63211e13e17656c750c6c2a6e3caaf55a7c30ae5ba241d864" + "1b", + "3223c6439db7255e89c28aeb046e906ba79f4e9b8222ba5ec201b964d3666301f74967b", + "0fb7e194dae6420ac447e7d4f882da3c4859f53a948833a0a08f918acbe03c2e915d1eb", + "2336f1206b46b3166b28918bdc1c817b22ab16b355030cfd635ab3dade20d2dbde08b6a"}, + {NID_sect283r1, NID_sha256, + "15c7bca449a73b03bbfa783f5a91ca0b7916889a5d99d541e2e8593c3b176a5b634ba20b" + "34407fbd94ae1c1398f5313cab7402f3bcd7ad277a8c66d09a6df5dd086b20a0a3823fbb" + "b80980cd86bd13e527eee15656cc977103e80113539e26695addd9eef6a1f56986168d9a" + "53f8b5de833f8962c3826cca106ae9e8c00208d2", + "29dc20446e9abacb43823e12a83737b46e6e577466b5a3925e0f9d496824dadb4d4b50c", + "0404b3c1d41d8172ba15fc92d9586f29716821ea82274ac8e4fb3452ccca3e34925f1e73" + "6c023e22cec962d759bc659841f259de954911aa289e9994bd76a30149a73711bc41b299" + "04", + "0931ef56f08c379d1ddce0649f45ec21eccf3dcfa178616f45b200a06f82172b91bffe1", + "178348d533217543af694c8d3cee8177e22740b657bc6ce6df9e57f0c1f14fc9407c440", + "3eb25dc4ed42495b54679653ab1cd4d61c854207994a7318026afdfd44c89cda9247388"}, + {NID_sect283r1, NID_sha256, + "d12fbb82ee7a57eaf76b63fd6bc6c0a65c85f135f019d43ff7bc295cad15d53729d904fe" + "d63d69d3ffe8b82c0ebaf0399e2717ece40e011f710b5db46aa457c23b85545953398b81" + "4816a1e7a8ab5b0b14c4a0451b0bda9d0d2ec4a374bcaae208b7fe8056bfa17d6b7ffd4b" + "a2e9179f49b9cd781b0c06f6ce3eec26cd428cb6", + "3b9b77d19a42e9a555da8ab70aa5638890b2ed21daefa28ca6323fc658662dabcbfaf52", + "040632fdf8ebbb755c960ebf8fa5d6b679416e488faeeb021c0782352279a7ae00eed330" + "94041aa517eff6854ba04e2de6794848823e53ca580353f2b25e45fd4efd3a369cf80fbe" + "57", + "2450beeca6f1ebac3e82e3aa3239a5031f54ffe65fa6a45e2bf2ccbda448a2cf6988141", + "28664212774e23b6513f73a9b2da97f5eeafd10efe742e314f6913a6d0c0e3e581cc6cb", + "025bc733edffbc1330689e7aee0dc121b64a72dff19e1d7c5990206d6daae5bae75d0b9"}, + {NID_sect283r1, NID_sha384, + "eab0a37915c6b43b0d1e3ef92e6317b3afc8b8301b22f6059da8271fc5fe0e419ca6097d" + "aba213915855631af64e10d8382d70599d903d1535e25cbf74da3a12ba2f13c33a8562e0" + "db03edce791f1d39af8850fd1feff0eb25f9ad0a86dfab627b96e65831bffc5f6d9693d2" + "0493bc9dd6eb3e9325dea50b055768e8aa30d49c", + "0b9f8f3e89e9c1ef835390612bfe26d714e878c1c864f0a50190e5d2281081c5083923b", + "040542ea231974c079be966cf320073b0c045a2181698ae0d36a90f206ce37fa10fb9051" + "8607e6eccfe1303e218b26a9f008b8b7d0c755b3c6e0892a5f572cdc16897dcf18433f9a" + "10", + "31789e96e2ae53de7a7dbc3e46e9252015306d88af6bd62508554f89bb390a78fdbaf6b", + "0fba3bd1953a9c4cf7ce37b0cd32c0f4da0396c9f347ee2dba18d636f5c3ab058907e3e", + "15d1c9f7302731f8fcdc363ed2285be492cc03dd642335139ba71fbf962991bc7e45369"}, + {NID_sect283r1, NID_sha384, + "fdb93afd5dd1e3eaf72c7ea9a6cddb07fc2054499ffe152cb2870163eee71ace5bd420b8" + "98cb4fa80ea53fbbaece2a1eef6427b632320e9c97e38acb16b62fdbf6585b54fabf0a70" + "3307ca50f86387bed1815a05b0c8991e0743d10cdf49c8facfd7ddeb8d4a7b706b5a29e1" + "d00ac88b0ee88b3153185495ac8388cc70104154", + "3a30a1c15b9ed71e102341f97c223a9b5ea3e6a335861c3cf407ef691a18cc639dbe74c", + "04040937b263c87461eb5d409008255d4e14c54d7a86d6e3eaf2ad9c559f7a6b9d258254" + "2b07562e3a04f22ad37a1df0250215c163b45a6bd04a4b96c30fe2e2b7ded5486b172ef0" + "9d", + "13e745c76b33e6e91f47f8423653b0056014841f4df890121655ac2044f3a6d58b9e213", + "22467497bf1b5d29476f24aaf5f88d905be7900406c64033913fc88601c62063a924456", + "19cb024c7d6be51d15337a207e66fb0e473956932faf6d755393dd5a899bf63610ff887"}, + {NID_sect283r1, NID_sha384, + "c78e35d1a5b1bbb0ec21e7ba7b7c74c859d88f3e100e40ae34128cf093885dae4e87cd09" + "f3239dd8e79e25305220880dd352a650225d9bd193b9b84e488c458b0b5fde1af941c0c9" + "fdf952d2fa41f665918dccae27ab7923da4710f8c27ac8ed424992568dd6f0a6c3ecead2" + "1650ed162e0292104eef3c2d8551be866a88d279", + "083330123cc64c11888c1fd388629d0b329a50ef31a476b909a182c930ff02d0c389b93", + "0402e3a3e712676bede22893a8911ad6a683306e86487d24585bd6fe4f2657281f0bae2d" + "c80773889a95e9bd579be379fbf84dc8d26d47335253356e5b01c09eb8ed57474d6c0b04" + "91", + "0d630f20623e93c274239200393cc552d03da6bb9e74f4a44a518e2642e84e761dff7a9", + "27b8997fb98ad04488f5dc8ae5dc88b2a3231fca76d7320550c74cc540110c0cee5d8fc", + "1824f1050e85d527847faff236b7195965e7b93343ebac889b23425dc27226d50a5266c"}, + {NID_sect283r1, NID_sha384, + "e05435f695997229cce314e50065f3c5f71981988dddccaae6efb81f936b22cb48813f50" + "6d1edf5ebd69b0be34f278592c5935f0f6db0cca1ef9d62834fbf3c4c03f4da0596cb4d6" + "7b7b767e85dde7b7c6fbef7d89babe6f97b876b33594a9e36ab87079861ee556fb03274a" + "d4af527342a4794192b8933f28c6220f954c77de", + "1dc2b656c207eabc9e0d6272099babca8d149c9c4258b779c2f06de75f76d77505271c0", + "0402b03407b65809825a32ab50f1b556a65c3bbbd65cfcec898514637ce606182517fa1a" + "4d021c97e293ec74dee17c89b962356b7bd50c7b23fcc30ec7fdd0a629d11373e28380a8" + "c8", + "2d0dc9317a2af5a7d0a23c00d126b7fae4c06bda0a5c50462ba26bddf575adb091d0e50", + "211c396875b5dc71ba87ff2483b0ffbff60cc3656132fda7422a81964f1bfbcb5ecca23", + "0a0ed7bf1ca853b9b19924c706eff373b97585b692b4b535ad71cc4362073caf8f61a3f"}, + {NID_sect283r1, NID_sha384, + "0f9f36477076c4b5a7d1ceb314a397fb14646695b0803e36e98908c8a978770269f165a1" + "fed8f4b655d4efd6ad283d7f5d51b6e1e302d360e8ebf4e887c7523a757ffd55384e114b" + "bfc6b7a0ec8511079507b919065ca018573418f9e394854c5704227772161707b4d0246e" + "bceb91192f0eb2ea994ce61fd98a6d14cc8246c5", + "0081772348ff2d7a3fd57fe703555ab2e14f5d203c4cf0292f944e827e884d95f3b1d83", + "0403f7174e88ffa8bc0a770fffa4bc30a436fce331dbe7154f6e2fc0cdd09e76840f089b" + "3f0561e6aa3feffb2033ea716ae94b9a7402bccfed1fc4a137cb96fcdfe4685314f73a8b" + "b5", + "3a8c40754ef7ddd0e289b2cdac5e06c72dc3d6ae9d0351d9295aedfd6f0e88809674bae", + "1443b46c0e6bce31642dcf3037e25b6ba2b42daa9a83f5c0bbfb2487ce717c37b91f46b", + "3f59d5a925fe19c795b4992c265a3c61b2452237eb34efb9aba30208ce07d1ad47e2279"}, + {NID_sect283r1, NID_sha384, + "1d38b1c342b6611dbaf412a66c1c0b8397692755f576df33b31c2bd12b7f0707cc423376" + "391f7b00aa4e7b7fe54532e2b39c3c5284b9c8ccce48eaf9308ed338992f1d4ecde6cbe3" + "52e46339d7d602942158387881d9b493fd40cc59d4f9b53ee4191d42352c6f7bf32c331f" + "0c5afbd44a92901a4b713c7cf6ccddf7de4cc6e4", + "1eb6bf2ca1b5ffe6f6a795733eaeed12de6e87c53571e702635b9dbd0d96b47df4a005b", + "0400e64dbc1a08acf6ff0e820593cad79a46e3bd818ddef5ca0960fde799abacc7b840ed" + "db06115d3de2bdd011ad053550471368581a5f125eb0d32090646fe4407980a42988e551" + "aa", + "3b28fc6d0e4a7fc449b811b78900fb9f89885f4d4f70cb5a2b3d4f8ab87bd5448f4bfd2", + "2601923909c8c953087b0c0acda57d8c01f814dc9722171d8409d0acd2fa4d9c1314693", + "3eb316cacba93bd473a4b4acae4f2b5a5b2ac9856519032e63a0c718698956e8f35673b"}, + {NID_sect283r1, NID_sha384, + "3353ad05ef90e9762bcfedd6ef44a1e8ea0392ebef30cffd48ae620f3e567e1cd44882d5" + "14e7c6759200d4bcab18afd3038c3d3f8c50f7bba32a04eee5a4b1cfb8c349939e4efe0a" + "46fd047d02ed000d8fa1b98b0af5586f120d9ad174b3aea33905b979ece1eb3660b1e070" + "c8821b32df41904ad68bbd8ed247aabd94066f16", + "3b2a3e65e5a306bf8e3955b60e856dfa9bf68c1275a678ca056207a0ec67c96eb3f8309", + "0402c542cef892b06372af7d9c321ed5309995c1cbbf1a466e70bd30f3856ab7c5d18f4e" + "3d02a8acdc12a7cc0b54f4dec9cf61c484a5cf86c4cf6cb5ed615479123ef1c6ecbb6c7a" + "e4", + "09bb5e49188621466440a0841b007525000c2203d9821f4c6afab63ac2b97cb5e2e3dcf", + "00a09da1c4bedff47945898f4f4ee9a0857bb56be535544aff9d729ae44e23d678fc71f", + "2390be08ba0861b32ca35ba27a0c8dd1a4e96d28cb007133a096b52afa0126bf2a2abee"}, + {NID_sect283r1, NID_sha384, + "e7ec162185fe9a5803c6b03d98041422315ccdac67e48fbd07a1ef3c5661158710abc679" + "1bd0a75d56791b4ac0e7695d53c5989d9fa6a3b037583b2a80d2b154b024f1c36b63548b" + "e9afe1d51f2f68b2ba94d4ca1e69a35ac10e15ba72242aac20f7526b12ff9d3cde9a9bfd" + "70d55adf9bd92c66d092d7d08e9764c84bf7f329", + "1fd4d1af0bb7c79ed5fea7bb45574e46534387bd916649485ef15207352d7302e81dc01", + "04077057d3f93011440a78718a3cfded73e4196e7fde96e794465c51be8b679f912c10ed" + "cf059873441c590c43e0f00f80afad5b0166f94b62214ea45da29174874e44356b29eda6" + "b9", + "3f224b35737e78ec5bc9b081a601d8fe19e33b4787449d3353d2ad225358211cf9f7f0c", + "1a7bfe92c30ed1af478282786bdf7b5b89cd0fdba5e534bdf13899dab5af108803d73f6", + "2ba14810de4f5cf48b56e94bd6c439d230dfced3cb698c77627f59faff0ac5a42c43067"}, + {NID_sect283r1, NID_sha384, + "87c8f2e3f4fdebce0ca9300fc1ebcaa934f51a12b6b8f2cb6bb6eb77965468663044afeb" + "2a1334cb5a81e74b8427267f8b34b5e9ff0cf157a9f18be2b1942e32ca61dc23ea13c3f9" + "fcfa16df8fe05e067938b6994982676463fb12842d4ec532cb904cf222aa805dd0d86ab9" + "a33a83e294c6d81e8dfa273835e62e9041dc8ff6", + "20380b1136b5283e9b7f54b7535ebda33b129ceb177bf5d3d07b1daed5edd9fb3862530", + "0405e7d0931db006c6abe04671d1aede760f2b1ac5c866570f8e5a24ed356fdab49cc5cd" + "ea07004920fdb0a744cc545068bf82bc5d7a46edf9265fd7c5979b9559f5421c9a98f6db" + "89", + "3cfbb1204caf6011fceb8d4be987d9a41b81bcdd95b94919b220647d0e7a18feef4cd01", + "07096beda28c20d2e62d9b0750142d3d21b54c38c7fad1ed65e4f9b386f3dcfcc43a3c2", + "3d0af02aa39e329e4c39f2a1d6797f0e3d14554dedbcab9abbd158273a3c7116225abab"}, + {NID_sect283r1, NID_sha384, + "2ac53e8a50c4afe3b38904255b7cbf150c5f79dc15932dc0ac9aa631521f68a0d4b6bc5a" + "04d55c99a36531fd4886a23a8d99f262ecd2a9feea925d7a96ebe9b6979a207b7f9378af" + "be404fc8e959b0333572a2c911f8743c0ba64eebc7ef12fe5435d2cb0e5091ae518b6e42" + "33489efe3c16c6f21abf4e2c6808b733914e5a7d", + "19f815b98836948e0a0dc9c30828c31b13e175f1e79f23d084ae1bbe64823f4866214b5", + "0405109d8ce934972f5520101730d0a14b99213ea17772e3e7637d622a5de13fd2ffe3bf" + "fa0502927e0c7baedc4bb3ed2bd1b15fd2d06dd43424393b246dd530d5d8598b56dfcb3c" + "b7", + "10359d5cd8a9b7532c9902bbf1cb83d0d34bf37e73e7c0f5729b62a10bd4d8faa0f53a3", + "3503410a6feec71fde2feb14375d50f99ff9a2c8bef47e676bcc6c3045efa9948891ab4", + "159b1f65fd566ecfdc08b87e4ecf99ceea3088a750e2c3c9d868bb432de6a61f289d06f"}, + {NID_sect283r1, NID_sha384, + "0b201469cac4c078f587edecdcdb6efd5752cb4a3f43ab540463c4d908c27527aa3592f2" + "f9acad85dd94a3c056bd28618317ebdf2e7dd6c5ad26fa3c31dd8e5c50c60418d91c93bc" + "bb59ec1adb1db791f485ded78a5cdcddd23dd1cfa4f13443468d8a5f2d648059b9c4470d" + "0f4fe7733d56a28a2c24456b6923703ef32cf0b8", + "01854e954654e726cf4bebc0e5a840e8809fd716059211c6ffeaed36829808363164684", + "0407a6e7c542860e815d3fa24fbaf99989e8b9c812b08399056ae4f9a850a6711a7385b6" + "2200dde6bff33891a64744dce6456600f5a6a11049906608e77f8afc38b922972c805af2" + "58", + "2c9cfd376903122625c7fdca50e93d4c216f0c7d07f33b3b51e54e666e13b67dc89d290", + "18321f9ee35d47648060213df1275ae89c2ec7d17abe8093d8a431ced23aa61d3f8df4f", + "09e5a05a62b006a7787c97be38df6fb9fbc1433aa2241b5a788fa727229a18e07d7a8aa"}, + {NID_sect283r1, NID_sha384, + "fc5e4dddf4c4a328b685035ee79069770fbebcc56c14e31afb4bbcdd5220e025f31eba79" + "4fd6c05e64f19678dab33ce4f084bc32790392f14bf35669d75b6466b4214ec30d58ca90" + "ae285c9058f5804a1fc9d7a995958f2a0e84ee52e8a78b601bec04ab607ffc2091749cc5" + "48c6754ed14e2e5f92315bdacaa7a12823ef76bf", + "3548f8020819588b3202f4c1ac62eaec6a47c2a19b2900c5a3cf5b4ba5804231141c647", + "04038563f2482a399bf1c13f42f8b85ef64a3599c22da9688b97530718bfefdabca3ae86" + "3705c4aabf6d8a90af345008d5a244d0671cbe1afd08000c4eb37702a9bcba6dbc058ba6" + "da", + "32649876d776117003305f0ec9cdab5cd84bbdc747d3dad5d8d54a8fdc84d519d50df45", + "1f5160851981772c502088eef209f7f89a7c8ab35e630d16330bec7723e398fb37c84b1", + "073a7333a7037e1257d4d70be87c30bef770f9d728dd7e2615d47b399ec650aedc867c4"}, + {NID_sect283r1, NID_sha384, + "284cad790e6207e451a6a469cee3befc3ec43e047cf91b9dff1485718aa29de36a43f7c5" + "1eacd8589f0c3a96ec18e8ccfa92941b50b2132e3612d5b45e16f60d411d1c53e373e1ba" + "451352e28970ada9dcb9802102518a385dc571dcf6900971b00346098a58042e0d1d129b" + "d6801fa640a895a458a45b31318fe63ebb30c6e3", + "3cc4505005c41142308f1489226b7b542e2e7f24f1d3089ff6b92a4b0013f490ad52e60", + "040280b77ddc6648d9cc3f5557d406ea2a089c8179d4320781b2eb76ab07fcafd2535b91" + "de005f23bf4171aabbf0fd50049aa017c0dae70b065964c685bc03b958cee2fc3249149d" + "31", + "2ef488215648524f6caf85233736eddcd9d1d838c6a2799c3a68580492d40f9800bd119", + "3e8e13db22c97281307edd4037f0a75d2c70a070614e94e02c860f36a53aa738fa0db2f", + "356f2651b51a6be0c697300a8c2641bfaa1795397eac208385c3729248e36baefc173ae"}, + {NID_sect283r1, NID_sha384, + "6d46e57abea9d115deda48b69fe8e0b36144df2f6a659509ce1b514c8cc4769d46e5f71d" + "f2a084f1db4a22fdd3ef0c2f90394f2898ce291b9f279c0664aa01419f5f6bee1fc12998" + "71b27ecd57a5ac548f99d01871b8c238a6b46044c953b2e78e22346a0c7663af4db62799" + "038ffb5c21ee512e26d01e70a4ed967377ab8405", + "144a2fc8e0aa63506e14e4307df36416f963dd9da78655832f5b991af8c3eb97df78efc", + "0403fe8867b560bfb21dda517b8f4d50578a11e1d0ab7ed4ab3796580d31bdf710e8e222" + "8405a302baa3795e2d132c55d90858d14d4b17aea0ab70632b135f94bb23112d163357f8" + "ca", + "0b5225132f19419715170f5a3f26919b4127a05b4f0406f895af1e4bba95786daf95259", + "0651d17b00ed9a06bfc6a913883b5cdf51bd5f2dd22307cc5ad3bb545f623516232bb6e", + "01128d4784fc0fc050af0b97f859616d764b22f40734ba65aa15e2cf80e7bba3d15f42f"}, + {NID_sect283r1, NID_sha384, + "dd750b39bd8753f4e473c4484e2b36ce2da7576813ebe05861c339ffae1d029bc793173e" + "d394091c00685ad82f0550cb21ed1c68f0c27cb7396922239cfb886647af204e88a9101b" + "7453a8ab662e270b87a8a13f2fe61d695597382cabeb781933bebfd7d0dcd33f77266e43" + "e32d937f2dc89f67525e522977ce73e9ad36c8e1", + "24ffeaf139043ff25a395e4c560c7680c1c2155191378917eb25194136b4a69597dc277", + "0400402bf61c0e36385e5fa8371a553ed8652466fdc3ed9d4a3ce1bcc567d1f451f6703d" + "d104dbea6f67e1117116f30fe42e84383768b0da770f8a2b4cd8a4fec330a0034554a138" + "08", + "3e4e78f012eaf1778c086a3bbd9e996da0ddde651236ebdb6348062f56b36f63a901561", + "1e2312720f6fbf44d7a6449a7f30019c38e69f2e6424d4bd1054f40798e9fe58d080b86", + "379d1b610a976730dfdf3300280f1c61109ad13c788e8f8f9a8d5e0130ca9482ee417da"}, + {NID_sect283r1, NID_sha512, + "4736e59fe5812f63737eed57a570182c065538abd9fb0a1c9c2059199e7052ba57d84b5f" + "a1cda2ad9f216610361ce1dfb9334816b6bea509283756a03aaae2e5b0597f492d078b6b" + "015a40c9785dcc5d2ae266176980db04f5cffef40e16661a50ef871c5f531d73fd5d114f" + "a19bae9dd2da4267a131fc31849da38c2b78d1af", + "1d1f2e0f044a416e1087d645f60c53cb67be2efe7944b29ac832142f13d39b08ac52931", + "04010b2d7b00182ee9666a6a2bf039c4358683f234ae41a9e5485fd6594e3daa880c0dfe" + "0f00a419b2f40e573dc2dae4b22e6f56e842e50d631b6126153178585bd05a8b9e6e87e4" + "c8", + "3e4d36b479773e7a01e57c88306404a46b6e62bf494b0966b4ed57e8a16169b9a1bbfe3", + "30513169c8874141cdf05a51f20273ac6b55fe12fa345609a2fede6acbeb110f98471af", + "33fd50b214f402deed1e20bd22eba71b156305e4f5a41ab9374b481ee344ab3f27f4bcd"}, + {NID_sect283r1, NID_sha512, + "e573fa7d4bf5a5601e320130de91f4ad87eb7ca6b8998488afcef69c215b0cccd221b8b6" + "6eb0af9d699af9ad6c4b4a580e82941f31e4c0a9bd83995dd076c5ac9bebb34481061e7c" + "b1b26f6e8c6b26ee4bdf9887f7ae2eb9fad3115a21dcc96acce85d23a040c0ebbe0a56e7" + "5714dbfa803d6e279b2f4280bcb993f96ba321e1", + "1337362609df74d25f7adee382225e6a04dd6ee4c6b45fa31499ce9edb0ec046325caf9", + "040287b288ce6f65fed9f95c99fa4b8c1aaf6de65ca563df30ac67c1066d2ba2f5a554e0" + "9c025567fe183dd400d256c333da92dda2e364afe84492ede9fa0e913ca7f12069b5a44b" + "48", + "31b84ec438302155f2e84dd118c0d8479267f8d19c8c5d96d21177e20b23e0180dd6d33", + "08133e49644044bf9ba3b4c8bdc3973647d650c58fae4a7ea5a5fffabafed56e759010a", + "1d8cc410cd04b188418b20cebc8f66ab0dc29a42f9067aa2926dbadee39abce79deb396"}, + {NID_sect283r1, NID_sha512, + "7862864d0d78b44e2a28af44a0a16d8e9b1b8c4b794db0410c0a863ba011018ef43e1e11" + "f2fcda2f56fdb2a69cc817df425c9cb3b458922ba00d710190cae16d61af3c304a42fbb3" + "d0c4a74a297253fccd70aca414865b41f68b01c561be281265fa89f63f975d3101334886" + "e85929a5a47fa8dc459b663548faf8ed7484958d", + "1be00aa0afdfe92e24a2536594d4b41701ad4dfb223aab35ff49310bdba7566057fe8ac", + "04013583d8cd163fdef7c11e91f36c1d3eb2f7957d219244db883708a7c5777611b00668" + "1207a1f4df45073b838277d8da7daa7147b0f10aa98b5ec02fbbf97c89ee17f3a7ab4f3f" + "27", + "26b42f369ff9b2740147914a2698cf1ec9bab44caa3b5f05957ceb9a32073729aef0fc3", + "37640dcfa11483b3754ea027f5f239500894dda4f4c8308f0623db256eba2113c41ae61", + "2096767a1f8210b175334fad61b4c7fb4e2d6c7811b5d22521af7750f101077e2fd4e44"}, + {NID_sect283r1, NID_sha512, + "e73c96d1a84cf7cc96065b3c6a45db9531cd86a397e434072a38d5eeb9a90f62bf5d20ba" + "e22b926cfe967647d2bbb5dd1f59d6d58183f2cf8d06f4ac002ead026409ca6a1f868b40" + "6c84ff8887d737f65f9664f94801b2cd1f11aec336c0dbd4ec236d1cc4fc257489dc9709" + "dfa64eae3653ac66ab32344936c03eeb06d5852d", + "12ad0aa248db4fbc649f503e93f86104cb705d88c58e01d3ae0099590a69aa006aa7efb", + "04008d262f57f9528d55cc03c10bd63ded536bee9ecc617221d9892ae1a75b7cdee175cb" + "330754e40e8823e89fe23dd2748fb74e9e93c3b33f188f80377a32bc66f6a92da1804c04" + "cd", + "2405a351a3bf9a6dd548e8477452c4d9d719e32762754cd807a90abddd3ad380e197137", + "28c5d807ea1c3ddb7f2c90f3af644c5d6a2757336ae46c2c148752a2fc150e8183cfd83", + "397c8c52fd67b99792229194a787518db5be8e8c291b1a30e105b00f108ce41f8ec8fa9"}, + {NID_sect283r1, NID_sha512, + "a73fb0aaec838d011110d49c5e94395ce07408917bacf7689d2cfe0948c582214b263c6b" + "80e0a55f1e159086817605723740569eeaa1bae96b979679165c5c35ef2142525e943e59" + "5e6b4b160acd7ebe41de19775346363f779b1f80b6d5f0785b92a648028e456af8496102" + "d19dc6526247a654bdae3368f075fa9ee92b2f4a", + "2cfbb8f340cae8e2e2322829148981cd9e509b0c65497fd8d9da5dee9dcfd39b0f7556c", + "040260bb17da74429f049f3a7eb73fea9cbeb5b14ce553d7772a365376d0114ed2ef3087" + "d005889e41bca54c09be20dd406a6e1f11f9d31d720e0c4e2e88f381ba89a97f12fa9faf" + "f0", + "3fd7cb455cd97f7f9cb888444f39569114589612b108657ac59178ffe31a33569c9f0bb", + "048a10915fd3bf9ffab1cb13632359466ccc539128cd98c6273d5d8d26c64d57520394a", + "2d0f67f9baffbb34094c5fce36f47cb73a537ff984c89e38d073678c21148056bdd6893"}, + {NID_sect283r1, NID_sha512, + "eda775984c7c9f7db47af30dab314d070fb77e9b623baa6b73e2cbda800f167b20fdc2e7" + "219391efacf908f4ceed9b9b6bd3541b52ea087177e18c97391214758cf6455311fad336" + "ab56cfdce57a18add8cf85b0a0bd6fa7297dbaa34bfc8585b0f06a0aae055186658c227e" + "19cddb65de88d260f09f805c2e8854dcc524189d", + "070e82a1f3fa6158d15b7346dd56150faee5c98c9d07c996e01a06dc9b211b12ff62d60", + "0403d3ca5fe316a0820e84a8bb5d231bb14c810a87c7392d7f960e7cecacc56c337f88b0" + "ea027ac0ded5633a98ec5734db9de1399c83a181d522037266d856c83e5c8047c4eff2c4" + "e3", + "311b23487750c3c4b23b28424c33328c39d6f594d2a9b459a883508b985d8aca039a2b5", + "1465736c3c9e30e895b1544690e05108ca221cf2352ee4af1b5ee4130029a82b277b076", + "2819b94dca3a58cc5a96790871640fe0fae38883de6fb4712126c1c1cbfcb0c005c5af0"}, + {NID_sect283r1, NID_sha512, + "a4a13e0bfa761b9bf37fade6570d41c161e20558874911ff3bee38e5649849b159beccf3" + "21c6bc7243f99c01a2fadbab9e157e9952ca65d8ea676c74fdc976d00501c626b8465c6c" + "f0e4fd1a7d1260aea987161b821528b0b423e62ecc5193a0a49442b0c3e4ec9c4786a3a8" + "6b199c07dd3a17033d430d2c83c100f54e0a7c31", + "0b471bbc5f7a07996e370da4a09e71e2119ab3a562a273f079401951fbe4df39a4493da", + "040333e9d5e077bc64d022e49d5d207385a19282aff1b73b307523b0f861b4ce4219308c" + "8205414e431f3b90a2d4a454d073cdd81f8b224180ac4139104166ec33ab33d079dd147e" + "bf", + "3e431c39ef6f4b7674a1bf414460b58998ed7aa5b1af7ddab746cbcd2ed9f42ae3827d8", + "151df78c0f453d396d71528032933566e176eb7f6910fa9df2e9b2f5ebb6038777ef209", + "08a1c4a1e21cc63fc15a78f0a11a1bc7a59a5a31f57091a12896fa670dfdc05c04053b7"}, + {NID_sect283r1, NID_sha512, + "7ceda7a7248640f7055309ae712c19d741375d6a7e0608e07f0135bb830dc3e8863ee9e7" + "a75331a5e1bd38c42cdd484d4f45a26c2c1d4e05ce0d0ca941f4e94ecc6b371102f31633" + "629e9861de558bcb6407d66eb91f1062ac0e0409db68b9f2855296a7f42fc92359a7dae1" + "6c73fd2dddea52bd866a4d501aedd8fe3b3ea733", + "3c65cf80bfb507dff52f9bf2f93df0642020d41619b3990009409e7210fd7130ac44ffe", + "0403beb5b9b8785c5601093086b709c0a05955be42eca3d217e625349e5a875efa82d75e" + "d4007cd4e64475d628e6f562f0ac9c3f91075626063a52c2b621796e557799ab2f1ebf8d" + "bb", + "16212ce91eed7153fef806d2561912be1d988410641d5eb72d586cd4e6782deae4538a0", + "26ea04dded2cbeca81e75503932982c7fb5cc7d38a45a3fff8c4ed7f844dc759d8da302", + "061d3756e3da1c7816f0d72a8c84dd1f3b93624b631f5051c801af4e472fcf82d896c18"}, + {NID_sect283r1, NID_sha512, + "609815edfd58c0e26a4b06dded831d2f33466a130754b96d8d7c3b4d99fd4b0789ec719b" + "c25338d0ae8c5880560c02687d352d77c291e406eae865c3b26d00f2e63dc644ce7e01d6" + "e96ceeac8bc1eeb257d36cbb25d89b5fff6e30b6051506a0ae54cfaf6214f30985d54cab" + "78f708029c1fc0175bc58e888db89dea8d300abc", + "0f4d33a9c7e6744ab3c441828bf0f1866ae1c042cc54abc754e3801263a96cbb3955dfc", + "0404b925b97bbe67adbb6e918acbcae0ced8dcf11d012e1a97875b750bbb7d01945bd64d" + "f304591cc9caabc0db8fe9047e6b1f8d850ac4389fe67bb84f6846b631dc3524c8dbe6a0" + "6d", + "0483aefcad5e382351125b333dcede8ef50914b1d1f1843b075f242acba18c290c742cb", + "1fb791c288e2cd52d3837c56b02fc99f53a6ee27ad6dd9c0a31ca08d8fa64eefccc5c87", + "0a041ca35422d8985c1c706dcb0b8ece64b65285bd0a934cdb41fc08223885147281869"}, + {NID_sect283r1, NID_sha512, + "82d8ebba707b72655497320200ce719520c1ae7f46f38122958fd99322c25c9f4d4344bc" + "b77a6658df0eece5df163412ecdca58475d56b0c2d14a0361e4cef458df146925d473a43" + "692b15e9bbec550f1bde3444f2a5b2ecb55d2abd273ae999f16a32333529d94455e485ca" + "4585e6b07bedbfc2bd1eb766abf0d28bdb1ae6ec", + "3a4824bdcea6a144d85f1b194431724cc49849b6cb949b4766d641ae95477d1ec3d1464", + "0402c9eb36eca01dc2fe921933f4cebe8046b3679abed80d2f8fbcf8f254bf17be3d551a" + "56034c836aa4e946425fc9f49f3f62e33d8a0afd320292a34d0ef8bde8ad79a10e3f95f2" + "f1", + "23d8725af57d835018e8737fb4e8b2eed3ec5a83fda137c710fc1df875416ff82fba90a", + "0d9f57ba8b6a9a1cbba67adfbb938211ed2d267468f79ad39ea1eca7271d135bb67c18c", + "0f09a600d97c69ab521bd1ed6bcf0c0f69255c334e0aea06c68bba81d53e810cc553c9d"}, + {NID_sect283r1, NID_sha512, + "9c6fce18a6a96349b10c9f2f5f1505c8ab727a650b44bc0782a5f39fcb48b45fc7c1b821" + "80d5f229b8abfc807071f931d333d265fc940c93fae7520d8d40ef59d7c6e3678c6a2ecd" + "e52b6a8827b1ffc6ed269cb9832feb20e593a7e3d4708309342875199eb2ffceba7ecd70" + "7b122516c815e83e27872eda812e3ea52ee3c4a8", + "27ba543ea785df1d53d4ae4c1bd0a3a994cddf0c25d2b4e8ff17ea7aa00619e858da1a5", + "0407d375a9e78ccee85fd795e3fe6bc07f50af3456edda1ab00303f6de6b5b02fe09859c" + "63008d0d54ab9a239b5ff955452b32bfd2372fe095751bea4b56d52f79b4fda0fa635f57" + "f9", + "00ee7010af4a517502cc5d5433d98916f6750e8a9009ea04b8132268673d4a02a3e2031", + "3c147b66efa47a842eb90371eeae907f0c813ca0937e488da95ff8ee16d389f3ab902ff", + "01469d005eacd9ac84a140c93ed0aee09083a4822730a28df35058cad29267eacf03968"}, + {NID_sect283r1, NID_sha512, + "5eac15a64c7653d125605869012b8f036804817aedacbb5a5248a595ee0c12329f91e817" + "9c187192d3ed0d4ca2e202d8d4d9c93ad3f3ed931121c193af5b47a8a5dc39775b6c2d70" + "2708e5134f77a31bd62eaf87e39e6fd3f2b9f782c3057e162dd53b3addf92bf0ab99835c" + "7f6649abd1c5322a1ebb2ba313df9464a74c14d3", + "0708d0907d14dcd5f40e2903e1e90e48a0ffaa6d4d9b84ca14df4e985c294f74eb9f2d2", + "0406fb0fe1c3d5bfee5399c98518bc3ff135e0c351243fa0540717a9b1f7990eb8cf4359" + "7f05212fd4d6a50c08cd99ee5988103fa639b1123c878d416cc553639bdcee1f8e927bdc" + "8f", + "151465f40204d76f3bfc2e4052549869c19da82c678c332f536ef24567ea034358866c8", + "0803d3e8c876d46a9198f2f769faa76c4f66bc5ff4298b9640ccb8e67ff8d10f86342c4", + "00da3344354114d163d14d4c288785adbf9a8b31371c6e4420383c80ba0a430019c6acf"}, + {NID_sect283r1, NID_sha512, + "df735a7e60bc267b18f313ad56bff830be5ef119baf43ce27c6368ff1dd89f010afd4f48" + "740b11c12101c5903bfa71d6cb3d6462cf875bbd55a570ffedf3564088dfe8c8d3148231" + "b78b5adaa6c53696737d4704daa59eab8d986fc6e519e81540f201e77b923a6a4af65d71" + "73635b3b19b2023022186a7b8e869e1ed51717ab", + "21fb0a6b94080da8b8299b87457dc09d21bc430ba5f3359d92aacc1151be9941739567e", + "040179831c55ead3d11844fea2e18d25cd4d658822e626550aef1afe37d88aadbcc9bfd6" + "66075f8087d759ede340157667c1bb12be272b8318aedf2e8f8b487f4bcd12a50ca66f92" + "81", + "37833e9aab843a6b967264fdb705b419ed63fbb09c12170491019acc7c21b9ee28a00ba", + "1c9601440d109a3f4eb69a1a669bdaab9f4222a34a04ace8ae313b10bbb66811bea7d5b", + "3d2f9ad7595dcff69b65f035ce600f2667f8499d3bd25f789d3f3c1bf83d2855f68eafc"}, + {NID_sect283r1, NID_sha512, + "bb107b0eeaf175a786a61db923bc6d51dad5e922e85e57536118e032167b197b1a1f62d9" + "bbcde04922fde781665c1094181c16ac914cf6fbbfb27bb8346b2134f05c55a8c6b9b481" + "273758e380666d6e22c28577c29446cecc5c3df9ed9f1be060ca55ab2b7fda36a147aeb4" + "6df0275bb923e0876b703452fab42f6b7ad2ceb0", + "2c80151f91301fb6b0c7685bd172f20515b46bf94dbc4160d0720fbaedd40ec00084447", + "0404a62b0c9749ae9ff00dc1d50d2b4a4941741abfdf13c8e416549ea27fc26b14f191f2" + "4302c9cdab7c6512c322bd200167eb9657f8e8c84864b57480a80a3c6efbaa289ab8cbe4" + "d8", + "3df951f8c4490fc7c2d50a72a93e0e82c5a20be8d91afd890d6846bfd146169ab58b382", + "1f2accc7f7c4b5f877e12cc17b227e1ba110577c9f4e1785e6dacd8491bc6017129d798", + "27a167e6f2b43ce9663b810ed4f8ef15029fb6f2be2ddf25c014d844953f501d1dcf6d6"}, + {NID_sect283r1, NID_sha512, + "f47e49ae30b09b7666600b7a95e81b0afa1553da5e01fd917e4ce1b58dfaddb8dc8c03c0" + "f5591f533610deb6a7bb5faf5dd1ec4103a587a1a4c58a110a706b0f301a5c408b3d984c" + "210d5b4a0b347d2b5447271f25b527b3c7864f7cdfa735dfded47c63b723fa0f0413c57a" + "24ffde9a95c35f743f892ab1ed1df704cde82d9c", + "1538abd7ce8a6028d01604b1b87db3aaf720e04220edf4d1d28c2d731aa25f509e58f2f", + "0403076b5c3a12b8a2e1368c7e3458458dd7ba6c5a6dda8c82cc6b30d1ef767d36e01520" + "7f0369c7a80cf01e9f32c08f9924db08a7d0dfa5e9a8e0e29b57f5eea8506841e6e3da04" + "f0", + "3f0052ba6ae6bd7a7aeb077a764d21caced6b241f63616ae4e4f0d98d2bfc0e44dca592", + "01281bc0bd36ba1f3e1c262d98ddf4e9bf1d80dbf97db02089fdf1d2e625abb5733ec3d", + "076db2215d9f33054efb397c449f05db198d38a24749f046ee20032f5899dc142052e37"}, + {NID_sect409r1, NID_sha224, + "f2380acb0d869d1cf2e25a6bd46ebe49d1c9270624c5507be4299fe773749596d07d10f7" + "c2be1c0b27e86f27b4a6f8dff68cfe5c0b4c58dad1b4ebec7bd00ab195fdd635d9fa8a15" + "acf81816868d737b8922379648ed70022b98c388ede5355e4d50e6bc9ec57737d8843fab" + "da78054e92777c4b90466a5af35dd79e5d7a81ce", + "0beb0df3b0e05a4b5cf67abef2b1827f5f3ada4a0e6c3f23d698f15a3176cb40e85bf741" + "c9fbc78c9e207fa7302657527fd92fb", + "0401da1761981a65cb5c77ec50ebf7acc11eaf44bdd2f70242340ec26ffada7a4b5f661e" + "13d6e7ad341cd7dd1ca491cb7a0b580be3019ba11e4c4f2f5507d6bd2aa2f96b03510a03" + "d5f8c38bcc8acd08080d9effd1f8ae5a5586603b2e112964514c831bf786b2fcb2", + "091e575fc79444fd2d9021bc267a1a076438d73464726bd0fe4ac2884a374e71bd462b15" + "16b3e97c3202854bd0a286214b9e92c", + "057ab9d5cf4d18f05eaf17d3b5a4af96c3eda8ee48acf5e02eefdfe2f542cde32a37c04f" + "285794ddccbb14383a645db040bda81", + "05275de4157b32723366a0d63831e6512241e3e4416f3af02e22da8faeabbddd76116030" + "4927a71cfff4d6e8937347c9b78cd3b"}, + {NID_sect409r1, NID_sha224, + "22a97fc0a9694dabc6f274ab52eb592dbbe8beeb646ebe6cef60eff341a13017eef980ab" + "a6d24ab3afd976e2f6a84cf652654d4a54a36b2f2f62fab8858f8b0479a48fe9f47f8fd5" + "a4a1f3141a91cbca186507b2bbfef5e4c4d2df525f04ef7c4720fb443ccad540f03a2be4" + "68d88c9545d1dad579fd7cbcd103bbebc9e9f961", + "0504865a30984a9b273d1bc289d734d10e0aa56e93ab14720f1a42a27d8cc932cb8804b9" + "63175de6fe57d8eafa8ab7ea0592dfa", + "04002de5872c40a79d5238722fcb94d5158009e28fb41ea012e92028dc3c87855fba71f5" + "0e6d0dff709867de185f9a9671e7a91e2f00fbf607f69609ae96982bda3f0317fe46ad1e" + "0207030fdca702cd97fb5d5732f3abab24b10669875a64bd2a74c8603897c78d22", + "032d0f950d10d028db6e9115e9944e7c768e2da731df49dc9128bf145a747662de08cbe0" + "517fca6fa185abdfcc4e3ab604e196f", + "0e7d16daa689ddeb08074285f5293bd9f1c051ca5589e69e4b62c32af110b6f3981d9624" + "df15c7cac0ddd62aee9c41c7b6d690b", + "02f6bdcc551aef0e4e8da2df38288dcc29fe600de2f8b6cd8149f88146150790915148f0" + "69372151c3bdc4d719526eff252e610"}, + {NID_sect409r1, NID_sha224, + "af36c04af0e3fd64bf52dedf52fb788d2d1bd67fe05d98880cc7ad3c20436abf02f637fc" + "ec209fbf888903fdec8682717299f8a4386768153b7faeb6581db57fb9aaf4615b4ea8d9" + "24198fdd158363a1f40312527d6bd14c13d19985b668c6b88a7548104b1ff057d07082ee" + "a421f50062a315bc3866378f2d2d634f03fbc0cf", + "0cc08a4ea5ebe32027885a8c212870e7c45b6c610117994d6a42a284c05199414a3a0e8e" + "6645ac5c2ebf21c505a601f69c62b85", + "04009d2beb607f2bab64451327e1dc67f04f7569ffc0c67b410c6db06dc04edddb1362ce" + "8d8b8220be77c447640e7d0c676e5ad1d500ab813e800e75b6012faea43be56fe9d5a22c" + "d46fb1f4f1ba65eab19f75f2ce9d8187e4940fddc485c42cd18d40d47415a80b02", + "0cfcc307f847eb696f16af32502690711ffbaa2e60e75f80cbcf7704152d5eeb9ddeb701" + "952dd58fefb159926a83245fefa6196", + "068d1c646dca56393caf3239d9fb30d1dc56f991a8dfdbc0a7b69d273aec69a53056d955" + "3e105c7917e522ffe446cbea23227c8", + "01db30aceed2b126cf45163b9d878a6590e9ac8284a31ccb0faeba2202679f181eaebb66" + "4b5537f408b693800f24da590082dfe"}, + {NID_sect409r1, NID_sha224, + "6bd6f52a6204b60f37929aeff28c87ef61ddeecc231e52a7772275f9329add899c130956" + "f8c50ac2698aad3654fdb49b74a6427a62a11eca0a8ee8b719b8c0df7b9f0bb0af5fef49" + "18a8c83367d29fddd04b6a1ecad904471e5b59c8fe3cdb06b4f8f96419518dda960845d8" + "3c49a49f1b1f2fd1d2682a9d60c25fe3ce982cf7", + "07156ef0a74ee1119532a2a7e8c02be1559c3c21897af9d5b34553c3d0feca4a8d5929d1" + "945df824478e0c0b92a6fac8c84f639", + "04001df419310cf133408e9bdb32fd85f8f0950263e1886f2e2e108a596e7e76153ec47b" + "f9b33f69c1128dfbf52557f3c382de85f1016a15517a811c77cc67ec4fe2bcba1290e498" + "1880c071318aee28e30854692ed2d6bfb71e6e74fa97af750889ae8d010189733c", + "063f127c38160e85acdd4d5dee1db1c32cd9da6075b2d2f46b010636e374e0262a045339" + "4aaa8bbb5fe7b2dbcbcd62ad601cf51", + "0250cf50d52a5950999b9c0ddef219218f76dd9f22a2213def9ba98d258c2f8359d08d0e" + "fc208e23ea3614c9e27b2e4576b9c12", + "063479550873dea8a3ec0306ffa9252739c34c87bbac56d3d9138764347d5220bea9c27d" + "6a308dc2ec53724d6d3ac4862d1735a"}, + {NID_sect409r1, NID_sha224, + "0eb8de25f63abc9cba16823270e9b6f3fdedf0fb90f6652a34688970932e3ae98f6d3bf0" + "fefc5f247f72960a6975bff1f1acc2188a1775fe8974b2bb2b4c8d226ceb735113a14009" + "e8ce66d58808fada4e6f697fd016829913352c0f659b6be354a067df00cf74919580750a" + "a6064f21264d89dcb28b3b2d4d699115c36d1310", + "0a95c7abffa92e2c637611ccba66ff9d2ab121b40a85c5b71454cb0dca1f098ce1be8d9e" + "a4933d1a91bcd270c5a33687835d6e4", + "040048e6b8614c0c7156dc41884e17e36ef528a493c28c9e6275c3454d83beb939ccc749" + "52732c18424ba21b8ea9c528966c692141000ef9efe1145029d8d60d14dcf079d43e3cea" + "0e18010f680bddc2729ffbff9a981cef2cb595a69142b25a0a39863a929adb635a", + "0f43af45b0dd631bfe38d85979ff1612140b9cf80b4504857df17279d9d8ea12d5bcd292" + "0fcec81326f15832df6774b9c4bf5b9", + "099f403ced566fde4d9755258445b6d6c2a4e234f99425aaa78ef118321f8579fb513ccb" + "b71cc2732e31668a6a6bb0fdc7f4018", + "0d8568971a4f219d6d3d8bea6aecb4bf7de53886d2e6bbb0f71d054c63768c34d4d18830" + "00019c59168fbb32f4317330084f979"}, + {NID_sect409r1, NID_sha224, + "cad58ca7a3b9967dc0ab62a43037764f8074ef9177d60bd98f623d693333971c24a575ed" + "03cb61f4dc2e3d6285fb1204502a540f3c0bbbf23f5bbbd1544f322ce35d949d8b1d8ede" + "b82e90927ac67ad49c91007056bf5096bd690d15ac00e1874fe33293d8003a4a2b094078" + "cf09af799dde384143350c54a99e1f99cc31f2d1", + "02c438b07c6e0685d1f94a4bbafc013f8f21265d893f54e54c3ac2071606ad1ffacace0b" + "8367aad724b1d9508c65ce52282e397", + "0401fca66bdddefcc3c2072ea32f026c975a2c392dd7ed7e93e94a810e1125ec161bed69" + "8d8305830eb66fca5eeb71934ab3fd79b10189c22a2c9f1fd7624f805fdf4faeeb931709" + "d745a3feaa3cf04824f5fa58bbda144d4e96d83ce1e3282bd5fc9c50bcd68f5408", + "09230aa7b58505e2dc2f205b70a09cb9f4d8272f465b7380195ede0f7770af2a33f7623c" + "310a0520e7436835cfcaf32467f154e", + "013d0e70d8f4b1563efbd3c46feee15b88358562f769046f39df6d00477815e6b8763c02" + "3807eda87a86338c7b64214784fa2cb", + "0662f43fabd03a0c05ebba700203fa2188e16504f8655bfd0fd090b109e68220122dff7a" + "6cbb8bae08612e0d516e9f95ac15368"}, + {NID_sect409r1, NID_sha224, + "281ce2643799bbfacc7d5993683a4fa656040517854f3c2dc7c4f8848dc305382e34e894" + "d433caf12d8b493020a6a08d1fa05b08bf6c53127ad5f33bbe75b9db0615e3dd94408d02" + "8dcf3cb7598f6e7cb4c787681dabac7cba2cc06fccb7506fece6c7c1c1bf622d525ae973" + "7085ab4ac578905950002024f30159cf0d99f50c", + "09e8658f8f9e6cd98c0f4f0fd20d64d725653aeba339504def17f3ad12a63dc6157d8080" + "4e5f43f4ff48fc5573fde2c615ed31b", + "04015088531d914113a25f1598ba1d3cc611e27ea92ce8dc807fe8d446db14ef62ae2f06" + "c293bcdd739f916cfedfc481fd941b4feb00a9135dc1b0384e7169fb4648973559e50831" + "9235a3f41ba174d5f58307448671cf22a3649168495c36b0bced09ac6df98f14db", + "0d398fbed52228fe16d32a6ef539e4ee3858a1df327bec999ca25cdbc357de5a75903909" + "973bbb0a5d0269862a74623a38da515", + "0e38910abb3d84b2b26ed17d2124f4787dc5612942e98521d9f94baac3d14159eeef9e09" + "b9b20c807b479ba84640730a4ced4c8", + "0e370e575302ab0d8d08d5270fe89ba524b5bf21e43e70c4d335ec1525ff5696ced37f0d" + "e17e109fd833e5d179bcd4df42d7882"}, + {NID_sect409r1, NID_sha224, + "0c061da1a16f2be130ae3b20b89745e840bee09633fb49671db28ec9a051545f57ee07e2" + "410ae7ebc61c9af79868d3047705bfc64ac0c04ef0b286e579b650c7165443631e49e6a5" + "3c84cefa5625b1e1035a6ed89b8e839540040151132a937666524265e099272c1849f806" + "db0fdf2be64960d5b5853965099459968e5beb32", + "0c4c13f65eacce85a51881caa6f82d9e48ec2ac574947d2751823a7f072d38bd9da0cdf3" + "0b6f19084a6d291052e7bbc2e1349e1", + "0400af93430dd77e6016d1b076a52126a729f77e34bb3db11328d9edd56e29a7a09a7b6a" + "54f72076fcba886ea78ab6ad81de43a82101419e1bc339c03a8b4413ff009d76f9a19e20" + "1876ebbfbb3dc771b7df07bc19eb893ce23e40c679d7909c33af2bcd7d6306c0bc", + "0889be0918e7ef34d3ed226f967301a10fc30111b3559e37f5fa5a57dd5c73ff672c5279" + "d096c5b04c68b71d55e549d019281a5", + "0a4bddba9b7a402b584ceb82a54baab61e81973b7347e6dc9e3ce0f1e50dc21c9569d8ec" + "f8a7da97c38e92e52636eb13d3b4c02", + "063c7291656466f7bd647073a50f410a2cd9e8c938aa1fd3b28ddc1cbdd7b78b757689dd" + "661f5173f79896780ac3fdd4f3171ac"}, + {NID_sect409r1, NID_sha224, + "74ac2e1303297efc3ed8e624722df505df55b7f33964cc0d270604cc48b58205d8a11952" + "232a8feb0079baa30d7d33660268b56a5a3dd90105f0703abef8f6636a99bc63bd47d9df" + "100351bee32d8205dab0dbd2af36fd173409ff8d1fb7b24570f3c1e968458f58aea5aa2f" + "46731ee91ffd6d3a060af6b3d5020daf1362af3e", + "0da591461791ae7847e6d8dd8df46a63d3021644abe9520e158406c96540d8fd82ecfb1c" + "3f6f5cfd7688c7656cc3e3dc94e586e", + "0401f48c95301956c62e2fd931df49953519b88ec3915c8de495dcb4ccba97bee023b1a6" + "cd9a66dca29aeef8f4f1117eb954e47cdb010db6bf78cfeb92d29a922c4b05daa3cdff39" + "17ba6978fe738296956ed141c749a938ca9f8f13f711aec930e0f1948ce7daf9f6", + "00576a91862cd63acc067563626977fee6f074d5726cf4f68e80d25029d4b8efe5ea8457" + "45c45e4cd42879e52854c3f385a10b1", + "0806435400248ec38a6d362e8b2cafc3f3bd46ba5baf538cd97683f76a733ba2b4ca85fa" + "7d13b99f4076e7616e68d66f05ebd8b", + "00ecae395fb324b4366f238f0df22d011bde5db6b0cf4189e3ad47101067ba87336ca47d" + "637f09f7a40a1bc64de8c4aef7f497c"}, + {NID_sect409r1, NID_sha224, + "2afd17344552ccc577b0118caeb7dd56a0766e25f84df17c0505f9798931374b48df89a4" + "8c64e199108c36e00c0bf00a97ccde55787bb97c6765601765ab5417f3e75e35a9fe5e0f" + "85a721d9f08440ed617afcdc200b318940a1e496040a6ad9090476b0fb4fcceee77b3fea" + "11de09e7fb14853d1fff8ab12d66c101257e2d4f", + "0b5eb943f0dd390b737510e2bb703a67f2dd89dc9f6dca6790bc7a260cb2d0fb8e1a81ad" + "6009ed51010e7686d5b48233c6c1686", + "04001ac00da454bc329f7c13950c848392cb4f31594fb7837f0986f61601fe244eca3db6" + "c4f92accc2fbd1a4b8597b70e72d88b103009a364065a9f67a0aa7518b75a0b4a9140787" + "a67f852fa31342d6275c14713d484dec3116b9dbbb8af1d4945639997ded09cbc7", + "049176093dcde8549f95a8f1d1c87230046fd4b18a73243c3599815d4df8387a843bc8fe" + "1fd67f3c6bbe394547e11866f41acaf", + "09d7c4ddee55f61c5c4c2ac6efbba6164900344004976381c7b18c1de541a97cb58e14d1" + "4b6e433c4eb6d4bfe6d3e0a4e457469", + "0a9acf355bad544b3b120522365bcaa1e1dc6f1d3df1e30d3beb94f639e26147a81d154a" + "684bbafac965bc39974c505fd0f811d"}, + {NID_sect409r1, NID_sha224, + "174b2b083541f8284645a810801e72631a11bd7bb805f684a7159e055afc44357f2c80df" + "2b7853678d34a04144e0ede2327d03db6df23769ec41194a8d9d86af74d51c5bc11ea878" + "c6a80689af71d3fdaf1c651003385332a512e03dd040c33d9c328ca89ec7ee9026bbacf3" + "0a7f3a68e0d894fb9f7100ffbc64bf17679dedd1", + "09cc63f32152284fca27ab2837bf1343144336a1fdf15b9727c47e877ac69ac9cf4c97b4" + "bf42f1ab10d73de8597a554ed099efa", + "040044e655ad66ca9af330c33bc6d00ccbe4533a4c6a44a3f23c921b62eeec8cc1918e19" + "956f3ed848fed93a7fd7ddea57096d1f23003a71b221c85607821cd864af6f533f216b64" + "1ceae104b8e16dbfdfe7edcb2cf9ee0dc1679b696149ff42a051c51c861a3c7530", + "0db9bfe4c2e659006d31a7b44eb7bcd6dd23810f27c74dd587ab9af23aa5962dd18aef1e" + "95da4ebf4aabfd558cbf72d2951bd44", + "0c3b91bf0794eca7faf227c4ee4085eac6d6918803242bff4da9c5dbac2e23fc32a4d4a1" + "92d7737be22810812558f820b0a2c13", + "03120a558c0edb58ae7ba36e886084801e7604558238c85a199af6c9e7506ea4e748791b" + "04f3a92354a4f1407837d87faab66ad"}, + {NID_sect409r1, NID_sha224, + "758df71a952cdcffdc417b9fffdfb57582ab5c5473a8bdf0c2101953b023b77824263353" + "dea0e2ede1f800a5757ec6ac0e1e4e3ab5a4cd85567d2d19acc6b7069a6e7368401cba2b" + "6e642373654bec0ddd19fbf032794c15b7ef7e714e13e36875262c01e77766ed53cbcf73" + "5936dc9b33eaf2152a396349c82ca0297dbae4a5", + "09950355e8667bea8bbe3a2c4988436ab5394551b375e27fdc0c1a1d1b07ae957932f428" + "f1aca0a486e54cd0b5bb0a5c5650641", + "04002f623f81fb9a299b71ea8c58d5bd7d89e7be66ed8cfd7370de515eaceac903644383" + "38a3fcf9981f1b6f0b30bc61c4b7c15791016130b7c4061422d70b21251fa9c3d4e9636f" + "5a08cea794a0fddf74ff5ab1b750cce0f2768d54fb2fb75e2851c2296b39c0ddd2", + "038e8c70cd35591012f45f27980095c4bcbb3bd36bec594927968d3747618c7f5810ea9e" + "0a126e4d3e1e08185b031dbe0b37e5c", + "0cf957d59b03aed0e48189d2b9256b5472c8a48b4911f9cec14adce5c6b4aa22d093a116" + "364bcae01c1a739a4023da12a29c058", + "04cc2c22b243064758f52264ed84e757ff67c4f6596edcfe956b70f777d865d01e529f0a" + "8a9a6e1895168780ab60950a62d2d2c"}, + {NID_sect409r1, NID_sha224, + "b96d9f66b2000e9408d602096f032b112f0e05ea874229ab9daf6e05bee49b4722e4f2d8" + "bf2eeaab9dad94438c76b7cc64dcbb59cb4e03f9ac70487a1d24d8d6b72d7462fe738a17" + "edf381d52179b3acc0c0177c113eb4d10e8e78041deac1d56abda0ddf892edb8be956d28" + "5e7236bc6794168f8a180f622dd5f2b9e690c275", + "0a995493d6971c2d7e8fac3da9f8c0b5afd877cfb94924cfecc167f9d87002136ab253e3" + "a4f9ddf5c9c99bb1dc1af0c6a3a3c4c", + "0400ac0e558dbca0fa6f013b7282e02717e91eb73304b4f7ac5e04f12f55824c441faebe" + "5bb5af82189044827007bffb1e2655794101178bb726242c718b416b21cdc9fd90b31ba6" + "a8350f9b4ce3a188b1b5dffd0e8894ae6a417c4d74c920fda585624eed4c1d3f99", + "0d581293ab1e509baa50852bd3f21f6493cc524a2c16206e461e320c7f2c1c201b9d2a1d" + "d4207227592a6457670a67cb72eeb58", + "022624cbbae5214d2c29e273c334b9ea78e10c7efff3611574d5fdf6f67a81472b606e02" + "36aa47106097b9147fc1b56d062966e", + "08895d107ba789d88a17c30a537402591ed788206487697a72f69285ee5eb4f03cdad6c2" + "604e174ef4b9bb919d8b39bee6231c7"}, + {NID_sect409r1, NID_sha224, + "e7ae60ac55e6ba62a75d5328bbc15269d4638764169de0bf0df043d15f9152bed909b1fb" + "8c7a8d8e88ac4f552c1092b62db00958a3a827f64896f6de4bbd8fa5258d6c36e3904d82" + "d3eacf6eedba50b0242eb6b01212288448c3a9821c4fa493869c01149ff1850e8115cf9d" + "e1618cb8744626b1951d1de305745507c8b21045", + "070daf435cdc26ad66c3186267ad12d10f28d32d863f950cbfcf042fe9dfce553750ad09" + "8f82f7f1650c1126b3e4451bee6e11f", + "04019b41af3b557c274cf117d501ce7ccd04d8bff2dfc737d7efcd7888f2dda24737a678" + "8f16b3b6cd589d3f65bd95194799d65659011983077a2c371fcadbf47b10494f6ffc7ca8" + "873b3d812c45a87c48e1b49edacc0ac37e5038cf1aba20360b74c0903c23a62331", + "043fb8cb87591747d12f4897dfbbc79644b87907bdefdbd7ff0f6f2e7970c7d40bb2fc08" + "c17443d029a92487869f640607af460", + "05ea3493a8c04723de9de2cbd523481e3a8593ae8f010ecbd5add6db5a82d9b13ee7d24e" + "cb417419639d0e9f4e68d14f6799829", + "0a9bbaded0a2894e384184e166bc06e1b2fabdc70536caeb3d0cd46b955743cfa8ac6edd" + "03760d1b613fb445367734fa4270139"}, + {NID_sect409r1, NID_sha224, + "666b0dc2ddffaa7ffd57ea3b2768f02d4b77c16fa007c6d1918400d195f068cae2dcaa69" + "817e6e4c70d5b29c5598efe2d957bd12d0fafdcf5ac52dee80a2d46e77fc18cce2a49bfd" + "787ff77b942c753974d22434742bdb494590d17c42af725b1309e54566276af3bcfbf5e1" + "74d3cf191b85903faafa1583282c97e66c5da6c4", + "0f8121980dfbe9ad0bf92383c7cab95fb72d5caba96e1de7772c6a179e85414802fbb86d" + "725401451329287305570ec7fdd873a", + "0400c62f4e7eaf3f1bbae71734c86b8a40ed1297b9ba1151729f9363824425193e8605c2" + "bcd6094aecc9d7ef2a41aa6b12877291cd01882a45555b68596dbc8bb093dbf1aab9900c" + "f46653c58f5656f3688fbc72c5236297be2f0586a4031279b9014f2d3655adef41", + "0b4b5b19922bf6a34a00454374589f9c89745eb194b0352061a79401e23c0c0e1fecd759" + "7b5a7cc1c463b76cce7ab921867de00", + "0f1fcb80a4fb49348fb326e808d8ed8c21c376f0713429a22bfe16d68cab0295b21d4402" + "9083769761c4fb853662d440eba4cfa", + "0252a94a40008cc2c1a69113d8e14e989e7fe13918a2852de6930973a91784eb35e20d8a" + "e150a88c459167f8ece998cbf6c5eb7"}, + {NID_sect409r1, NID_sha256, + "3e967cbc2bd936e0b6125dc5cf885735bdcd2d95b2f764de6931c4578ac8e0e87abdf963" + "75481df67dbe1b6c43537e84ec62bfca6672cc5f3ea4125abd4a4119edffe04e42411d33" + "8e8b10abb1f1f818c50a9631a3f89feb5be5367bdcb0a8a82c96a427ba6ce99f9631d441" + "1a2b7f5b14d32cb3901dc9d285e4cf5508940942", + "047682b2e3bcb5800a531858e8137692a9b1ee98ea74e929ce4c919c26ae3b3f1d4122d0" + "7fd9a70d8315fab727ccb67004187a3", + "04017ffffc1d2009e844f8e625a3bf11749a8b4ea0b0fe3532d124112edddf72d518ef57" + "7f160962b88ee38b11445fdd356a26bcc500ca356fa8e90325aafb1826a694a55a80b2af" + "52e70ad8d507d48946392da8b9fa27b8ff6927fe5130c69809d9a2c4b1d7eff309", + "058edc8f3665ff9166af55e69aab9d468f576bcc8f652e950082a48224b4923cb9396ed4" + "ae06f05bcf7797352035484fdc501fe", + "09b46600fb3b8204d4cb63ddfaad1482dd8cf8652f63c926895b8b8ebfe27295c052b3bb" + "81dddd8687f4864f258a433010c89d0", + "0832f7674eea791b5f17db7cf9e2ab13253d870c6ab46ad01cdda30e78db8b8f51fd377d" + "d55ec7786ccc92b17364a3c17ad5be4"}, + {NID_sect409r1, NID_sha256, + "ca1c90012eba4e7c5f01d8cb3814c58f48c03a16be6ed86934014365eee547070b870d1d" + "26a872cfd28b60d9ee0a66dea223e9eaa90ee28076188d6091f26f665684f4b486af7066" + "9555db9058d485c677b2a34d4a98aa8d6f43bf6f44aff2a23c5d765e98f0438ab81be058" + "5a5be29daece5d4116f44ce6062753a3ddc505f3", + "040cd1a06233ac27f3ddd108de7c6c0982793ee620d71982697713be9fd5143658929924" + "cc88747a680779bb00da8a44e1e7d3f", + "040164e518a6719b1ad61a38a214ebb06dfb0553bc760799e668b1d0d098ae3f06dffd9b" + "84c16de90db19043d72bed2601fda14b1d018e022ceb850eb1db59e6cf63c4a7c73bea0b" + "70448a7dea77d5ee8a2e1a36cbc46454bacd5954792de82f3ec21ca6a509b0c7aa", + "04a936fccec003bd9e8eb45d27c0eaedbd452e6fe99abaa62cbd0739bcf259cfb6884d1e" + "60b82522c6146f081663f6f863576c9", + "0dec1635f2698d4666df2c217fbe3e644d27592c5607a5549c877257cba7bee29a8cac75" + "a044e72d039747d0d18de1c34acf072", + "0138493216ffc3b8aa2e0c26f4fafaccd6609e6b15f767da7c907db64b5181bfdb447d73" + "ede786144c70ddce7df7eff46dee4f2"}, + {NID_sect409r1, NID_sha256, + "a54c4351ebdb075d6a42a787647390f864b2bbfd8bb3d0e0ea9d767200fa344d1a9ff091" + "bddb186acd69bcaecd767068efe4d752d185bfe63f6674279d0e7192d2077c400bbc0d55" + "99ee28507c1253f05eae0687b965a015e1f3a292b4650106765266f5c95b77ad2d82a6a6" + "e012f233169eb6b8d83576901cfd4a927c54d7f4", + "01ca6f752aae4eb7fc9c73a08d6fbd96bfde5030d759a2507bd45b6e1d1487e53abbe98f" + "ad4f41976364e0a1d830910ccf97abc", + "0400f6b7220bd24652572b37a0ff25e75f72d583c71c159857482ca9944b956a117a6b2f" + "f96614898757b8a587e3c2b78d9943003d0118fe425768bbf3a4acade281c41c745c9ac9" + "46c2f8b95d65787fb6b64deb71e6b38fd8c721e01c87efc7c2a6d8066fe3b35a0c", + "04963aa161b5ffbe5d7e5058f0b1457ca1b9cd61d731a0470beefe5f8998904cf4594f98" + "dcb41283f66e2b07c5c5d6a6c587826", + "0abf824d43d993107b552d7ded13f49ea0ae7bb845e56ad7e53cc5f9d64f99f9f250e430" + "5ccd9f6594c92defa7f6860fab1c349", + "090a541f1844357f618e5ea34c0398ccbdab0cb363e266980ad304dfd675bc81c0345a4d" + "723fbcc76ab5ed4cb0ba0af1b71bcd9"}, + {NID_sect409r1, NID_sha256, + "6723dbddc8720feeb75e2a061b7fc49079f999fbc79ec8a8e01ab8d35b438b7049da5a23" + "c49a58101742791f84f45d5f5cf551cd7de6926a0e2c4ffa1e378f038da597368c62df8c" + "d8349bf046de46d02183dc05b3a3575f5f232dd2970057200e2c9cb60eaa6b4d72f8b73d" + "4d40b98d1cc801d1a69cb5ed780a75a4064623b2", + "0fb9b1a9597d216028902abf743d25944258b48c9762d4589fe660396130b75f6006cacf" + "de60f6204463cb8c18b032de1dd68d2", + "04019b07f7f4ba100aa9e749bcf93a2c9955c442730c5e1f6f72c1b1d132b780d92f414a" + "533282f7b66677c8cc8a3d5ba8b3cd3cf7006ec6e9c495ccf600f8c19597e9cfdb639406" + "b04f57a29dcd1a7a843c2c44e8321bb8508953e9c0503f77d36bdef24d5d39f85b", + "0757f6acf74eb02b7ff3161b476dfd8349854154186c959179f11b9a15da3dface40ae6e" + "d771096e053976866433382e640283a", + "08fe276e7f63ce5f85fce19d1739a8a9986cd3c3fbe26fd59324efd98826f9db3b228321" + "b3ad1d96145ca23cc02616d9e9d7aa6", + "016e06de8e3e0abf4a4f52bd2f827ca4c57412adcce3271fb4014069713f3723a038bf56" + "0788d8dd48430d3b30faf15ad9c0d69"}, + {NID_sect409r1, NID_sha256, + "ed53cec5e5500d62d38c829002916c657674ede4439c6f405ba672327ec677490e656bdd" + "698f114c2ab5e6a1fc94a1a8d64466cfe9eaabd23a8b5c37f76a3c0decdef73b3e7b751c" + "bf3b0817f4079560b5ea34cead88ba374201236bffc48eaf289bbaa4e828afa7d732473c" + "228ad00588c9b443d65b998f21c3d7a9e9196c08", + "032109202d754da290c266f74f47805a06e6b5c3f721a72fc97a3bffeb8887e0c642d49a" + "6bd034847d0a5ba09239c5dfdf0772d", + "0400f4dc8b94dfe0a27d4d41399005b242c3e5b14bc7cec55ff3a1561c894d73f365fa8f" + "a2ccde1fd7bf3760b96ab2db78d2d50b03013ac66e95c335b71fd1a98f101a392dd4696a" + "806239fbdd0708acc69333febb48d4b649f14f42841d66ce03f1fb557a361c12c1", + "0b010ef786c13ece3a10eaff79b93ef3899aa385dcc1914e16abba90de0ca6389d664082" + "fa727fa7c7907dc4c88bd621e6124c1", + "0488b8956c5999c317830206fc8b9f6760845c31bc4ba77584925dfe25c05a1e7d298a62" + "e9748c7278eba622713df59accdd78c", + "082701053ddfaa376c99cc42ad4587d84a358d9d8a9533888cc382623114aef51170de77" + "ecf64af02e09bee203851abb22f5d11"}, + {NID_sect409r1, NID_sha256, + "13829401bd41e9fe01329e9f5a002f90f1a6ecbf25fc63e7c1345f265ff02e496230f706" + "c6ab377ea52d8707b54f8fc5c7f089044e2bec1dfc66a07da76ee12fb9ea0697d87706b0" + "ebf677600bd2fe117f6cdefb8bd636a1b6b97549ee78f992c24acdf3a946053f06fd012a" + "9c703efb8bd929a66aa74b05d61bff0395232b00", + "080536e820fac59b3203aea928475043b2576446619001647e35693a9e65d15236c3cbc1" + "2e1bbe0eb305973535c882b70197a92", + "04016d7448c0afe992f8c59b19d6cec64d8fc5b10026a806760bbdbbf0012063f46d31e5" + "21a34771f826669c4d1ddd58d3aa13ebc901a3742a6f231546f0704345b9b83c72d50365" + "22449cf60c1b3bdfa4c8d36e499d4ce62e6e7bb05c6132bed1ae44eed17414d2da", + "042753a515e607cf9992dd1f249820dafe53993b59b1e57d8f2f9100f609cc15713d27f5" + "dff4007e078d6da1061ddd36c169c21", + "07eeb1cc19ac45f52c0b63ff8ecf4f4f35958e86cc3e3a071a35446d490a426b48b6c287" + "027b003488573a4834a06dad48520c3", + "01410d85f3f2adf065b60a126170c43e34e0883338118cd33b0b3eafea1d142480b236ce" + "49d35fefd1ce4ad3d25e0cc9268b1d2"}, + {NID_sect409r1, NID_sha256, + "e696acdfcc96a6c088069b7595ea9516a36d8fe04dedeb789fbd965db0cc64b7017a8210" + "15f6210b6989e515def5a9605fec0d337e4ac59f3101a505168bf72ab6d98ec62a71d2f9" + "4071fc05b95e98d4efc59fedc138e3e49c5d0b44d1f48f7b1e7c1944ee189b242950d2bc" + "804d31c7eeb45283c84638f043ab9533976433a4", + "0b05e5f0dad9583ea18fb8fc4d8c75fd2e3cf9e92cdd9b737485c953620d345006c31c28" + "8b380258b6500b84f729ce6730e5303", + "040157c083ad9789966905c212dcfd7c049a8ba3863fd4886e4b118b3f06445fb0d4745c" + "2a8a1193dc68915722089d0d382253b67500867e8efb575800f834c978ee2ecf0f84f72e" + "75dbbac86926b73fab8b47f38eee17a63baa02e3edb9d4f6b2fd2afc88b6de36bb", + "0c72eb08acb1d422999ee8d51f9ddef9f897dccfafd886998edd3ddf30a638dbd0ed59d6" + "8885ce242fb838f022bccd4f3b5f854", + "01f4dddcacb088f6e24d331e8b111e390735a41e1fc29da8f5ffdbf7342f4b9056786f2a" + "67159d1e57570bd69d69235ec562416", + "0809840df1ef8fce9b2edf8f970c07bdb5fb755e9d5bacd7996275c4f890173142c39299" + "ce9eeb51d21a32acfc7761d5a2cd7ef"}, + {NID_sect409r1, NID_sha256, + "4058b9a8cc15ac148909eb97fa32aafbb6077b168dde91a411dbc973df7db056dc57ff78" + "f0abcb70f70f800bd752197d681f44df4a7817c0e7f60f8f65489ecb6167c14b525e91fd" + "2cc5d8b80ba380a83d031d5827c8b1262c687c90ef0e62723d9b565557f9f6fed0db48f3" + "799274c2cd60a14303406c35802cba6261121296", + "0be1d277813e79051ca1611c783d66003ef759b9e104f32298017fb97667b94dcee1ce80" + "7dc6b4d62416e65d4120523bf6a4edc", + "0401fed0171b5b3c6d9092a6592944680a08a0d4f99f08a3ad1c22b5bbf11c0e4ab3cdae" + "9526b0ca2b1bbd961362faccd5caeb1d3701ae7d57db848e5c86c31f542f1995c76e916d" + "ea9aba882865febca630bc6a10ceb6732bd5f07f51bf2f37ecae7b7fbbca618ae0", + "09e3585213c6d6706524e3c8e753a2eb0edced626498eacd842d44a73c602d801a079f94" + "b781ae1ac5d44209e8e3c729ed4e820", + "01098d98cf83c705515494cdef8c3f50ea8316d95b3ca5f9a1296f09021de57930184ee4" + "b9f563aebf5fd0d5abc0885cd24c0f2", + "0d9706f4474a8fb0c701505516699025fde546a21a3fe519a173a3ac01f683d40b4db264" + "2330bcdfe188693b15a476cd9339ae7"}, + {NID_sect409r1, NID_sha256, + "e793237d46e265ab84ba9929b196405faa3b0e4686e8693567e53f68e6991e5767797467" + "7682a2510c4c35b1968a90b32c4941af7813775c061c008a60f9f671cf7419c94253d610" + "6b61e65034497f2d273a5058379bd986e3d917f708f0a2bebdba150f6d78a3af9c722a24" + "30ab0f4bad602e91e18aaf258e3785fee78e4502", + "073c807bd7e07379782ab790720de4ae5106f16d34e80ed70da5b1594e660c9b775db940" + "66b93e74f855f57d88b6ecc6228aace", + "0400301526b630ac3fca5085f633deadec27af353233e6f241772c7fdbfa42e47a04b0d3" + "ae38c04eef2109390a71fa9fda652343cf0137eacd97a8449ce83f19a13a248af52e512c" + "fab3e2ce1ceb789874cb08757dd9e47ac21b5c0846498d8d7cd90122c437602d52", + "09245ba1873114ee2a3e642c5b15049a3566a2f003cb3d25250028655fba98203feef5f3" + "07a9f4c77f232976d83723f2621eaa6", + "0c8136d4b998ca0544ca1430abf55601f259aac7756c75d1371de63d1471053c789833c5" + "cc257e323a71f80e21783df4efa169a", + "0e2ecc6f0a418bee5de7c2418c4ad85d981b18048f94865821de696488ee19291912ae7d" + "a1cf5fe9708e2beb18e6cad4e3f7849"}, + {NID_sect409r1, NID_sha256, + "ffb8bc80e7619a562d8506eba7658bef0c25ace3dc1d01bdc2ef00933d4fa07b80364e5e" + "5826074edd46a707dbc3b0ab19eec7ea8990839d7fc0a80b70661204c52bcbef57c1a7bd" + "c861c10766033a82dafbead283d911a9502d5f9ef0a39d35ef26f3616212d4bafcd413ff" + "d18b424fe09b48ba02ca5d97ec996205cd49d22e", + "0a68379b2296a6c944ad5dacb593b302d8ef0b05873ce12bbc371d705f308c739d21f343" + "349524aa72f05341e64f7435daef112", + "04007fa0f698535b011833dac1ac96f3739ecf0c29f7fc1f8bd635f4f98daa70a3931061" + "1ef51b2fdc8b37eee3573dc34cd2528d3900be1a9dc30dabee3403da4f2dac6622e6fb84" + "96e72f3f17c169e7b554efd84ac655e727ae9520feaecc752601d5391270cf0cfc", + "0630547017103c3f97de48ab6b942db94b2db9ed7dab0391ea9e71c1b788c547abc90088" + "de5b3e36c9ee4280bb454c7c3710999", + "0916aac91ad329d6f330cb051941c781b9e59bfbfe45c4d4f6ce0d1aca982e1c612952bc" + "ea06784c57c121b14cc0dcca783d0c2", + "06a83d93f9bb81c61ac290906d74e2d3b964c39b4e96370f19cfb4a55a3f7901bca3deef" + "4bb79ca6a798fb9b3a9b0137c5a9324"}, + {NID_sect409r1, NID_sha256, + "946bde90a5b903dd281a51d7fa93d80f3fed07eaf50c18fe9fac5acf67326bb18effa314" + "4e25c151efc006a50a274ec6c6a5d573051c4e2d117ceb0fa125acad07a10fb6534a8e5f" + "5b3da2a1136779c51377bf76c3a4a93c0c6158f729f2293e414fcb952c9509f228c804f0" + "adc1daa327a8991d48ccf4f3957c5f8ccbe3ad4a", + "026046bbb269ddb1ec14ade56175482343a21b7c265026cef3c7d6a1ae0f6a68166b9e6c" + "49a6e733ad2ad64df7137ef230038fb", + "0400d09d8118519f9d00df7514d2ff99483473f680b750604580b61017513870a3cf1c40" + "3495cba488309e2c084079d53139a3695300d25e41038c18e4ba6f4e9d14f210b71f27b8" + "ef2c1d4cdd5f63edf8fe11d548d070177e9ddae382fed2b163ff2b58546f10a99a", + "0d6b0e5d83155a035248ccea95feb0b4d1af818e5ac6d5f41f1a255dd8b482a94de0f4e0" + "37b10339d1805dbb6b22af6ba834219", + "08059524790304a37f2a0d57bb2b93cec79a827b1fdc9ce2d7dfd4d277e0f71844d33531" + "4a30bbec5598a399e197a852b5528dd", + "0e7870e2a0ed16cf340a04fed4d2048e4e231cb8918345e1852bcd3e30413a2219864851" + "121a34fc98dd99976e2b20cf1d1bf2e"}, + {NID_sect409r1, NID_sha256, + "07f3fe1369ebfcbcacd66675bd4ab22edbbff72e68709cb57d4f590e49440f01691f490c" + "58b5117bd24aa2fe2101b59c61c417c918ea08ea34bbb9b8aa17491ae5d9329affe894f4" + "2d7586017877fae3ce35bb80c97f92a004380374ec91e151995166e14ac00505fd1fa810" + "cf02981bacbcebf5f81b2e633d3a3db6737890f4", + "0bbcda66978ea526f7bd867c3303b625f11b94dd9ee6e2c2f8688ff07f2bba83c662949d" + "47ad47fa882cb7d203a7f0ef5dbc52a", + "04004cf5bc624553e833ffbee05ab863e5def062e0d57c28e71d758d6ffd3839504d7ed9" + "d3b1a040bdce8e187ae0b4ca23aa565b0100fc1a15b4f273737eb92a56928395f6518e05" + "bf946afb65ebca3787f7f8bb3d946dfd26c4831cfd171b4c66c2237409ebf224d9", + "0a2cd205d957a20c79699e91684cd22746c476a79245f11e7cdf7e6b74f07cf2fd9eea65" + "eda97e8994aaf51942e15695545abc3", + "0aa1da120fc19523e8162e6018e4ee053eb680ebc7e31d00db34f7b177c74c5e6ea344bb" + "a3c39ab7ebcd92996a1c156180b7dc9", + "071aa4588741208344b323642fe03f1cea73865ba645169df9c84bdbf7488829b83b8da1" + "72f1927de1c8cc318ede545c748c782"}, + {NID_sect409r1, NID_sha256, + "3a1cb13438e3bac9ad4ab1d319e90e2c9f118dcf1eb54d6333c674a665d41451f93cd4a9" + "334cd057a44c010edb668254517a63700a31eb0ca474c84873e486f2f8e158a1a7735362" + "ea0cff8ef17d959ffd851b21a91412709b3c729474d2cb40f6ca0e397030eb2611b40291" + "6e4b656f0fd868247d80be3ce33d52054b7661f0", + "09be3dd3442e0330750f0a6252bf9cb317f32f942ae516a4038dea2c40ca6484fb33611b" + "ef016cc64baf166c122e87c15466fd8", + "0400f05a6fdbe6f80c0f5ef3322d8accda4b9ae28c91b6198b888be713afa5e652e907e5" + "ca9aff5fe77b6546115b4c732bbd4010fd000923d07aeb8c947688e7d3dcb16ca69440e2" + "a89539a41b8fbb797523d3b766b46d257b87472f5084992422cebdc4e45556f5e4", + "094fe051a13ea8dbc89c4cc5511881a48ef5554de265f0badf8741ae5027eef25c617bb6" + "a3f454a992fc68f5a548903809de09f", + "0162687730f0ab2f57e348476d1fa4eaf13199ee44f44dad5807bbea4e5ba79e92556f28" + "7cacbbf1fdec9a8b78f37e78e52dc1c", + "01acc734e2d0c81a56ee8c0465661c365edae56228ca43184ea1d7503da3d38e7607b159" + "0f59f5190e5c7264cd0d7a39be71069"}, + {NID_sect409r1, NID_sha256, + "e58e7b881a563d54772125b2863718690a5276c93d9e1c5feabbdb5d6f7c7293ff0f8980" + "5b53663bb417fdd46874b8e6a466e7e3ff6737930a0662af1d5879b071b0dc4d014778df" + "f26a2eca5992e763bf4c4698c382ac947215aa116515876008a56e5bf547857049c38a2d" + "3737ed3393705fd346897c3beb80caab88e5b8cf", + "0ed321fa283c662e87eaab99b7715e6cdc9b42e14fa5bbe2c56fdfb381369191a42da7e5" + "74839f90a85577485f19446fccaf6cd", + "0401bbb34e6bfb1c1335c48e8b44cddd8a46486fad4313581df216002b382db1d58adcae" + "74af0d38445cac2f6cd9e2b439d106f5950084473a5da9f910b4807ec5ff450be353a187" + "af6ace821b18e096c47752b6336dbedfc4b481e356e689fd9c03ffcdbf3e4ea39f", + "06ae69e55ac1f7b0f844f5ee0b583e652e0e5bbfa4eae85c59eea1485148e34f4d33c9dd" + "d7ac071a28ac0a6191d5ed03e88bb86", + "0c3509b6c0356e4a30a82fa7411d1fe17ed190b7eebf9310c44fd568494c894a4f4a1a09" + "e58a4d030d47227e54f7220f3f79f4d", + "0d44ccff47d9fe82627393c03f882d4b98633961a897381ce8b2cd18f38d69742802d18e" + "6c988a23eb425b294f2c1b84cf42cd1"}, + {NID_sect409r1, NID_sha256, + "8889ea1da1cbed98963941f6ac24f47253ff6af52de920765214f2024aeb04f7ad469368" + "30a8eb04d95aba64ed7cda6ef242f454b67bc2de38a46b6524bd5c96739c4b580e89829a" + "61a8249ec8dc27a50f43b8554cfb6f4fa4ca6875983d4b60a1c6b49f32ddff6fac0cafb6" + "4d55c6f594b195c207a9bd920dcf20e0080920bf", + "0396b805073f3c3b552b1024dcf35559ac44f255b688871a3c6657f727a4b09f3806cbb7" + "5d26a00ae1728be632387e804775a8c", + "04009957f897a17241eec5b8415ed7ec1bde5df11583255e0a8136d076d72ef377ab3f55" + "3d6f56c054332a24098aed6d12878abbd301f58eee295765e8a55e388e235e833bc5cdc5" + "d51a1d98e13429bcb7891b25487b7fd8ed804b1856cb6071cc28756bf00924bf1e", + "021959970a6ad070d1ac518493e309289f3d9d6e2a8933bca715f53cee4ab9000ba2d014" + "7282495e15e63f258dca87a5db7eaca", + "0d1ca34413341c115f780e647519547602e0361ed4d70402f42d735353696eac6e4024ed" + "2eacf9577252d40c27297e9389d1f7e", + "08cd5bd43794b32d5bd2ccf7ae4deafffa0e0deb92b1eef9d3ef807d456e459f92e9f106" + "27b7e7574ebe3c2faa858bd3e62e187"}, + {NID_sect409r1, NID_sha384, + "55053af9370901e38622734a5bc5589f6a20e258627f381fb0c366f3dbe58394e5997e97" + "8eb7ebbc530f6e6186f48294149b8594fb551c31c50521a8c4d67e5862921695604afb23" + "977b6a69b21abe75966fdd11bfbdb6b51ab0a474c5fa07c4de7872a3bd81acc417655090" + "558dfcd5af449b3347e61fa9e839bb9457de64c1", + "0a8fe323f6736bcabe971c7d964e75dece70cb54561da48a11c40027ebddb23e41c7b486" + "00f569500fe8ea2abebdf480171dde4", + "040020f2dfee967949643b6cb8a3810524044a4b873a4984e9795e4dd7976536a2d748b8" + "cc636ef5c8fc92aba5677c4a0951a3332700956ec5433d73162c9683558f0dfe8870cfe6" + "6575f2c34c765372c7c3bc3b291e95c4e3665e4ec5e72131975f0b1f5f30b0c844", + "013f26e13d43ba05e01f92457374fe2ad1ccf94ebf22334447f9360f7f9748bf3665ec30" + "58ff6184fbfdbf7de9e1e2131cd3991", + "013c4c290cf89789bd6dc523deffa20c94e92e88a76eebe88457e30cddb066c7a43aadeb" + "0493b264cdae67532db7dadf879d991", + "043bb7a8db3d79938beedcd6ce02f375e26ce807a2afd4fc446f372fb09a69fb34734df5" + "dc8f6393f86577a8d29014494379624"}, + {NID_sect409r1, NID_sha384, + "c4264330534a6c2bbd8a3b757e0912558302ce302f835ad8c5474993832fd30036fdef40" + "b10ee37293e871db5b0b149654f9e543e22111f9709ef45732125f713c031ccfbc9a2f3a" + "ba160c241d27be4dab87ab2fa9a795752ab2daf20f9d06a98d90d01c07133adfe83cb11d" + "5176525e1bba6a9ba70ea48b224d46ddd8103f65", + "0105938ba9f25034da3e032dee121bdb192ac2128b50a2ed4bca042e96cfaf4660c9d35f" + "3e67bafd4c99f9447e6dc408e0c4471", + "0400f1a9243920d7cc26741eb828bb55e34c140b0e52837792ed6274a9aa6b5534cdc5c5" + "96a1141a746dee380c0d9c2f77094c36ef01393ed8c609751550ffd077347712f3b27a86" + "9cfb1b532c5b19c381365ae5dc8fbffcb2182777a17690616d71c66524017d861b", + "0fc52aa8c590aa28c5353568c9dc69734adfae840f1e0642b57863dc7f4faa37bf3ca789" + "a3d7afb32c57f66a61780e253f50af4", + "0c45b1629bbf3273c0e785a28cb8187ef387502ac4438a3372a5c72206a15d7c5ecf9203" + "ecfd7e0ac910b6ceee3be50c6664f81", + "0a0c2d31a47ad5f9dc2d42dc36714cdce47666f6e2f05ce0e7136f166647540d1e5fbdc7" + "c9fa0def8962f44f2f8bc9addc10057"}, + {NID_sect409r1, NID_sha384, + "3236f1ad164e1b25d828f5202e3513c80c72a577aa9af56f041fd96cf5a3363f4b827723" + "b1511a2f16360e32eac90ac55f4ee1146791420ef9e2af333c17d157b00e43992ef6f2be" + "2d2f211361e468413dd93fb69232f0a0d110bc5fff361c0410344aa0636bf809062c73a7" + "ac7c142063912b6ad7e1626fd2a384f35faffaad", + "0ce11677ca818537dbaeb880fc967dc8bead203a2538a55e756679c4a9e7975b9b3e6aba" + "4e6c6eab4152d0c0939027e9b0bd92a", + "040023c78eda396efa28c92b120c4ca1e19dc6c467234f9f73701d8966bd0826c20122af" + "5f7c9ad5a5b855b6dc517c22131fb0b5af01ea47619f91ed4a010dd49ece7ec78c5e9829" + "7220b4c239ff4a8c29aaec008011acbf7e4f985c02311ca703bf4ce4ba43412ecd", + "0dae763fced0e498e3efa1c6c412a25774c9bd6cd4bce25ab0a7266705cdd54040ec55bd" + "7e6708e71b09ffe9c19af9a1ed9c878", + "0a70694fe5da7646184b23b4b434bca1b754257b8e7fa9994dce4a7a92b7ec8c7f8cc69f" + "18d17915c6bbca24f6621f9563f7c35", + "009e6ba97ac2be8537afe7f8f8b9cde8841323b5cc63cf2ed46a7913096ff8d96040296a" + "1bf9aad691b60e1f18233964a421fe1"}, + {NID_sect409r1, NID_sha384, + "6c400ed098d8369dab6fde3553afbbd4d47836d0d12dd16015f15cb8d067a39391c85ca4" + "e78c62b8b72c1592349ff8dc52db8ccb7fd80c085fae456dba6f4a2378e184dd59238c92" + "cf04e40d43a66b342d2a1325a0bab12b1ac857f0564c27b35e6abed02ff5bbbdc3770ddb" + "b2ee0513df48bcba925da6d61583076cd3129603", + "05a239ae0f40d76d8d3589f1662b5ca12176a4b2784faa8339b54e96a1e1294433a4d83b" + "f904196f939bd8b33bdb4be340ec703", + "04009d03b7985647027a17c06b30ce9fa1b43d0484195f584fc347f7003802613b524cb5" + "641db3425ab4b3839e12c012853ea8384300818f5e270baf5a771627b098a6f9ad8a8262" + "e331c299fa0722a0df6ca09bdb9c92d22d72a73567cd5497d06639aa47349df207", + "0c22251c73998a3a49b3fc65acf01438941a8885d1c5072a5d41d779af70c044153fed40" + "80151b524af402a4e8ede4448b717d4", + "02d3a7ebe5de23e0e601c6e41616bf2a9a7fb6193fef8e3f0a7fb8128a925f7bec383366" + "9d1a304652b7bb1af5186b2f612da1e", + "0b7bb17155068a8d9b3412d04d407556ee133e1a704ec5da87ed19dfde60517501af345e" + "2e744d35d844f8ac8ad08b13b17c498"}, + {NID_sect409r1, NID_sha384, + "039a149eaef2de30b0ae457b376ce6fbf88afd4cfdec02d3c5e00400d3b0484c1cd6ba74" + "db5de65d6f2fe39871349b30fdf1ef29bcbb9e182eb3ec5629d07d98354a5dfa82d7f0db" + "3dd10d1510c0dce086848a198893ca5ad24a663494f0596b4eee86199ea85e7e8f2f76e7" + "a6bd4a052c54287f61b391f1e52f96b606151c34", + "0077390c62ac41aca995640fde0c79c76f4ea8a8dbb22323ed812bee837ab8798c5d0ba9" + "76c7aa634d4b1c2c155de2709e7352c", + "0401a9357770270c528f2af991c447bed86194d458f693a871ca38f271a9e6a566f5b9ba" + "3ef3d2f9bde959e42934c95867b280e9d1001f3a0516fed36d3622fae3f44d87c4bc67ce" + "e0a995cea242e530451d43781f2ebd163f6f521497fd7a1a6c7b93d33b77083a5c", + "02555cc113c8516d741b47ca41f53ed07d509845f140dfe7dffbd01a3f751ea9f22e12c9" + "39a2ecb1827c0e56b1b1c5459b66aa2", + "0e88333875a507520d0b62b35146e37e7ce4e2f2478a61adfcbc6e1aa9fd0195a4960c63" + "3d9d6aa9a79323b7ee00ab802768436", + "094595255e8862d14980893c095608113737f42b05b561771f56ac1d54eb521bcefeb392" + "8917c07c1bae74cb9aa80dbd34962d0"}, + {NID_sect409r1, NID_sha384, + "08617d04fffd6644c40f7dd57919f7dcf3c888f4147535d12ca658302305bb8e220bb17c" + "cdc480254004b9035b357120580882ef86aa5a061b2850100285b7d61588a664dd4f5394" + "f5478e68a80f610c9204d056009c1c9e902161eda33ef61aa902e96b6f094a9f05313569" + "2182943d38b9763055a38739a2a2d133c5dbee89", + "08bf23b09fbbed1b55769907aafb97f4759cec98649b2c9da5157517d4f85bb70157076b" + "5e4aaa7a940af042302f8be06a84ab6", + "0400883c31c474333f74ab2b86f3eac865c4b2b54975ce19c5cfd23682d041ef3deaa43c" + "9f9e2c194ccd3add6677de31fc9e07dfad00a5a36b54f4eea6b300491ca22054280b3f09" + "b202b2a6b55df9e3271c763b6d8360a330c16f936d69fa463bc0c4071707c9cf95", + "0812c83aa9dc4139f8c3f7c55509f9e10e6cceed30e16afc028b1904b4d260ed0e77acc2" + "6e711a7a8e24c75fd780ed893c0bbca", + "0fce07c6f791a05de29609b59d55b7062e82fb554341b2b2a8187baecb9c95b01ca5dbf8" + "ac88c60babe10af2edf5985b35e10db", + "02bd026a3e45ac439647a483261107829411c1b4a9ab603c080b92f605cf742754b65498" + "1460cf7aa72b5186b59d224dd015314"}, + {NID_sect409r1, NID_sha384, + "34c959f549a307f21b850ae105f41299b8bc94fc292aefc61aefbe0a1bf57576ba8d9b80" + "caac635e4edeb22530163fa9629665fcd43959f68eee32482f1845a78ed7278e6e43d09e" + "d6fedf465001afc0d61f1d2e1d747623e82a762576b879c7024e34f43104593cdd691d53" + "bccaeb8f212dc29bec6bc94cf69d0a8491db124a", + "0082ad05d19b8e16f80e53a4cccf6869ab5128c5e622ed146fa8555985ccd2aa3b9957dd" + "374586115d4d75b1c01cf98ecfc3646", + "04004428d05366b0a46e6578fc7528d185a3f85da06c4179e9c9055dc0a7fb4afbc53c94" + "954f268e36d2ba8731882bdd27d9684c810136ba6048ec672601987e9b7402fea24f88c1" + "a94717ed5a83794add0f31680592d6cafdec147dfbc400e73a6ba1d23d4cb0d707", + "0c00c897edea7bbfe1913e3da303d64d0d657a83c1eac9c111722b17c65391f2cf67b782" + "19e748ceb269d6c65f01e92e6952979", + "0624c5bcfd8e0ef22ee6b34a8b26bc051912cabac102cbf56c364a743e8150195fc55a3f" + "ec90a8fabed5eacc1799b565745bfd1", + "0cddd4937da8176ddf0de7f52a4babb1f6fccf861533f796a487f35d060ad9ed4435e5a6" + "7166782b53c20bc06fd1b36c265c1b0"}, + {NID_sect409r1, NID_sha384, + "514f4de08a6f49edbb6797c9dad6d33bfa367cc1a1b58a5becfe646c7f3352d5c5d95f74" + "56e7112c4ddc746b9076b9756ae3916c07bbe6d3823895774a42d25d44b3309d18bfe7e3" + "ccb1f85dacfec1654778c19e2981a853c1f40a7eafd16d331093110698c957fe9f1d8658" + "2706a6885543248b944bb70cdf9d2ea89190cb02", + "0af7e581aa4f9be5815f0c447e39de00da9194eee5e5f609668b9b69930b5b48a948614c" + "2250260d1917f0ebcb00ebda4bb52f8", + "040044703e0b49437315a64e397085ea2ba3f2e2c383b168f31a922e5916d590344906bd" + "2a911074b7481aae7f3f8f4807b110f2e1005a13607a3bb89a2a88e27d5eb5cac4eb498d" + "34e6ea861c80271ed0c73e1fa893adce0c1982b8a8af6a0249796e5276d369c3f7", + "08e7fcadc844456f14ce9354b218d519d86c0c5211d62904c937d6fbe8cb16264d7d41d9" + "8a15e9f73a636ac3739770738d6b46d", + "07aebfd1681bd5a2f995ad4a709e8681da742649c0530684fac251494263e98d67247e1e" + "4fc174b409e7e24a7b055500920cc82", + "07b83b9b5133aec165316021472307b8b481e6381754a9d0b4f9d683c2ee7cac94ed4d8a" + "72cef61fa1f6349b6c4a54ec38975cf"}, + {NID_sect409r1, NID_sha384, + "4e5d16cb1dcaa1abab1e371e1de02f31ef4e0944dfe1fdec45ab64326435b2af9aaf1a6e" + "d8fdf1a6ab1182bb53a844c7cfd66da30aec0d41757f5988ada0017c4ca752597a9fd363" + "7668bc1a92bb1556553f28d66805bb47f1ef91908ce098d452872da9800e77e1fbd43ffb" + "0ed6fe6a62185d4be73ae96c9241b82cefb2da22", + "06d14107b08354e6a41d7d7d50c004419db8bdc50db43428df5e86084551237223c498bc" + "e71a17e25695bc438c5c09e009c60e2", + "040088c1517355cd417a698b648508fd07a457ac13a49d1bad17dbfbc9735ee58343316e" + "3eca570bca130c753e17a69fe5bd7baff301397a697d2113d94daefe6be491ed3edce944" + "9c707a57af3a164d172cafece564d686fe0d25725c2919c60889af4d0354b05117", + "0f3bb2dd9eece25c56159f501af8b619a8c279d7ecbc08ee2af6b82ead80375e9c07227b" + "73a10918d8c89d1a2b12cb76427a7b4", + "0407b224d8d9c0f11a8e09ac8d654dc6e1119e2c2804510a84ec61f9017899f9613e37d8" + "166e0fcaae16c3cc11e9f739968c687", + "08c2bd7d02c4c537a308fa40db786ec64fbc2dd4c142b18cf9bcad66199afd4f44cbf221" + "adb3837e84173d174e9c0d534720ad3"}, + {NID_sect409r1, NID_sha384, + "e29e75269754ec1194270f5c9e8267dfdd8c696008b5ebc92bb840981fd065672f07f6a0" + "f1b19841adfc51b478371e1a0db9c3346a9f0a4ccbdecb7040191a00ddfd0a8faa0e69fc" + "f544319c0155d02797eeef99fabbc55078f9d852927c23fd931685424249b87ed0c70a4a" + "3e2d3b9a2f92830e7d8f7650c0bffa8f8986b7d5", + "099d96d2dc9c79549f031bd5346cf6a8544c312a3fbfc560dc8e378efdfe025b0e6e61e0" + "9c04c8bf4133396f993b0906c33dd30", + "0400883e00d72c60f22ab085a90901ba3e8a510f19c3d62dcb3ee5066e0be094cceb30bf" + "bed7068d0bfdf634a53e2fd002dc9e454d0194baa5d7ae2399965fc4009ea83273676e66" + "a56fd35a5939c26ccaf85633adf78b33dbed6da305979077418c625354c7fb6283", + "0c213540a452c4f2ef275dd844402dd5ea590f7df41ad35523edff09b7fbb096f8ae8a4b" + "aee95428fee03a9e6f6a14ceb90e289", + "071779b477245007ba1ef5f05446c4a08d1c2eab550db9c053e4588c9935f07ba87764f0" + "fce14d4a7b982ebba89cb056aad8cec", + "08174bb56cc85ebe7bca1de1f44cf93cf478d7fe59001c5947c66b837bd3a6d116f99dc4" + "f9acb4f378b0321228518e1ba0057e2"}, + {NID_sect409r1, NID_sha384, + "1a538eb447c18494ad5a5ad27be67fa60eb2c5cb2404eec1dbd7244cd802b17ca5497e77" + "9d5f779b981b165dab53ad19fd7bf2ea7dbb9b4baea782a43d758202f147e59d6b6b8ed5" + "4f4ea084bc18519943f6894d603e253ba3e8e339a6933bc3a0a47126087038e1c813c3f2" + "997aae321b7c95a802b4b73fc7db95897b7c91e3", + "049f347dfd361a65910e97fcefbf60013a54837f2ae657d65e02397f59dc6bca27704fed" + "3affdc3d833fdc621cc5e5f99b92a63", + "04017942b58d42da750a366d7e4cf4cf465c856cd911e5352b50bc8a12704c1ac6ad54f9" + "465e4fc5402b373d8bd4e4f8519341f133010abcea49c66730ddad7734eb1311b2626b75" + "ebbb299a28c9d60937e6833a9b3dda052379fbcf7875f18680924274fa1764158c", + "0134c70f031648bf470ccca4ec19c837051bf700c851df564ef3ceb99d7d41439293bcea" + "0c656c0e5361db92a03def51d7e4f26", + "06c0f9935abc5034a8b0a05e8d04de699b5916cb367e834f13642f0003510bfb68714be7" + "5c9e35b5e593eba45fe151d1df56d40", + "0930baf426b33eb4afbed64869a22712591db11acee7c4d3a221a1e98048f05900fe1481" + "6006854cb90631de5797f91176fdcd7"}, + {NID_sect409r1, NID_sha384, + "7502c755bbd385079a4001b8cd653287dc3054f3b57de19d0ff8f63c0308c64c56f03511" + "7a8971d43654f89b52e923947e4760ac72be073136da70c5ad7ca1658cc0a2d2a880d3a0" + "c0fe636fdb27b77ff260c4c1ef8a18da8e9fd777d732a37ae9906e6c4f381f0a3d941048" + "d5a1f6f2cb8593873fa4bb1621a44bc2bebfbcd1", + "0dd226de602af4e9f8e25784bd1bbd4cadb0a8aef525d5e2d57b9f3555feb698765672c5" + "099a7d6dd5faaded69d8d68b4804f26", + "04007ee34cc7a24e2e693f9409f52796427ed86fa71bf88c923db305ebd5a83bf3b6f761" + "2847f16d00f4a25614299a2df92bb693c301f63f177b54f8dd5c907ff318b66c2bfc1cee" + "09348c035a4413fa3cf5acde0db1c8af4fb8deaaf8a3a6f8f06b0acfd20c6f0049", + "0e19c21b05c82dd8c873e5f30c1e3aa9348327f959a4dbd9c741e233c649a426cf7bd9d8" + "e93232e496d0b93ce835f80fbcfdb2d", + "042a3907a480329a6169b439a6945cdbe8e4572779c43fa6cd1f15062559dae9eda27124" + "02ccbdf03d88a8a68b691f1f16f8f52", + "0d09fa4966d171a662a9ba6827fda830b5404f96f635edd8482ee009ec5c7b64a2a6c177" + "93993610ae8297efa9fe4c35ceb5001"}, + {NID_sect409r1, NID_sha384, + "95eca932d03f1df2e8bc90a27b9a1846963437cdafc49116ccf52e71e5a434cdb0aad5ec" + "cb2b692ca76e94f43a9f11fa2bdf94fe74af5c40e6bfd067a719523eea6b4e65730365ee" + "498ac84c46e1588b9b954f1c218920cbf71b167fc977ee2a89429590f43bf637eecd91b0" + "ce3be2d66bac5847205f76c06b914a970f543e59", + "0b6fdbc9c8c76cb2b822a940d8675889ca6f5132429da795462381ce29313a23bc132976" + "fbeb346ed4c691e651028f873ce7971", + "040147647d267afb4bdadf54baa3f5131e79dae8103f5b2ddf70e4652f9fc5495123be97" + "215b811554241c53023a247936053288bd015205cd5bf0c5154b2dad8367e1b487689b89" + "8acbbf44f9ed67a37babbec739804dfe737b324ad663cd2cad79274344397099e7", + "07321d12d616dd2ee5f843d6ed7e92d18968b3a76c0e4ccc167790afabad1b7c0dd53d82" + "aacac93d98679b203bad88d5ef0cd75", + "0672c5607acc646c67456ee77f2c02117cabd241f728ace5117626bdf91662323e756543" + "8f46a3e25c048a8e2130e27fa1fa2d3", + "064aaebf9f2fcbc843ae1128eb6c7e7d1fce2b9901dae0f60afbcb08c7f2ea1b550e1599" + "47deb87dd8959921846e2923880db6c"}, + {NID_sect409r1, NID_sha384, + "8ff68cb00d03e730dddb05fe0b2344689529096c3da6eeecaf097f22c7fa340593106b1f" + "6726f06b7ce7358edbcf801ead959438a42f94cdb467b3cd5b17fbbcf75739805f9eadc8" + "69c33c604cc58f81591b0b8bf4d42bd53a801f0f829a31af6c129fb4f20f1250f959754e" + "ff8c629b85a716b6a18465b6495798c0c5166c8c", + "0203d77fac64591eb9a18de20a9d5eacaa1c3ec58a5ecdb3008c2d642e197141d16b3a9f" + "dffe61429264f5b420f5e9926659a4c", + "04000f66ca09d15d0991b48ce7afde9a148565b73807e435ae0f16c14cd439454745f8ae" + "153786d7c40cce3f43a8aa4f0564cdcbc3000f4c919b7a97beba2559a8ad0f85dee40e8d" + "f28e23732d7de655262209a5170f94791e255e77e8c8cd64c8c9900092e0ff9d5c", + "0859bc752300d4ba5014e302aa4cd2a979b3097dcfde5c59f4bafc5bc8a99411174d2ef3" + "f7377df5a09269e3d9461be61801942", + "0691ea76acbd5e8137924bee13326ceac8231688af8595718e210bb857d6619c152e1fb4" + "6e03fa83bd6b5d81e2463f9260407eb", + "054df52eb86c679d8f8514a09f5a3062d2424cdc19fbf6927f744aaa8c444223f1c28ddc" + "84b1d135a886eb7ac7eab3c7b0a42e7"}, + {NID_sect409r1, NID_sha384, + "01451c4f09720cd53377a5ed04c907a735477378ed960235a833049d6bad6e6e89958b4c" + "4249bf0f6d4f043530c9e5426deb0ec3a12b7feb4860757b41bf602ca95655155356ec35" + "a2db8e2657998f56529be4b714364f83a140846308a2973907ed7b08e935173ebbce5e29" + "afe1444cd51c92824ede960056439555e7e74450", + "057a2e6a59d4871c3d547690237dd9846d6d5dc4ec0678aafc9c8669af8a641eed67bfea" + "4b05fd6b3b5357ec4d0caf352691ea4", + "0400351aaee4207bdac826ba17e3b08dd7f94c0c8ba0d9829d7bf0eeee7e6375458b5457" + "bd787f0ff38564734b3a0412bbddd7c37100e09c4dfbc33d61d69b5a8517baf5e4e16149" + "20cbdd89bb05f0420be757253fb92308dfe1de8db822f57b67b393d8a70d989b26", + "0fbe560003dc220e4c966b21c874b828874a33a93bb69c49909376df67e5df1652fd91a1" + "d73c7733f26c121e7a3b2d1246c9a61", + "08b85cf3a14fdfc69cd42750baf362286940994479f6ed7ce1d87af12c5ae075b311754f" + "1d37d8ed10bea092bd3d9f7afd2f1e2", + "02360bc1f7a98cc87ee2a4feadb98554cce59aa0fbfc087747c7253e54c38815cf91c851" + "7f5692f95bc7c3a713fb6ac43a34f7d"}, + {NID_sect409r1, NID_sha512, + "ccd494ca005ad706db03a3df6d5c6e876ef859ec77a54de11fe20d104377df1900b6b192" + "126c598944d19a2364b2ae87ad7fd32265d59e1f22be5833f20767793677b628f18e9619" + "f8ca32f3af3b41c31e87a98d1527e5e781bff33c1a8be3a82ea503e76afec5768d7f7dd1" + "f17dc98a9e7f92fd8c96fca0db518bd143d82e6d", + "00a3da7a6633608fcee9ce4253bbcec08d41ee6b00178ceb017de74e24d48fd89107c9f2" + "db3556063abe3cb011938f4b4871795", + "0400a6123b122d7d0d766897b15ba6b18b3a975d3d8058c9d359c6c6594cc0dc07d9ef60" + "33224b4aed63d319cc2747c0660e38897b01ab5fad5e78f380aeffca8d15e60731720184" + "ed456800967b2ca47d482957d38409ca07ea798bd892b529774e44080eb8510e6a", + "0da042642b3117f30ea5f4b354047b164bd128696b8c00cc6fcc767246daf7483284e411" + "009e05218246830940178cb4ebabf1b", + "0e4ce613e6976e9e1c30c0c93214a0a37f0632de85eaa25464b69a251d592560b2039fc5" + "9b15ed7045c29c268693d7c9e06d8ce", + "0ff3ad5ca70aac94facd842fecdf6a28afbceab80b549507954b7dea6da06d1facd11e0a" + "88e9c2a549e6971a08d1af75aba8363"}, + {NID_sect409r1, NID_sha512, + "5719e50d939a8d74efb444eb5a77cda48cbb59e7f976cdb2ea2848bfc558718b39ce27b8" + "93c229db94bf77992222d1746f8f52f858f85124a28193ae0da039c53d484681785f3367" + "f6516fbb8a86560aea9e3428551facc98cdb1e9df8e2f37db823a7abc589f667b5c93c4c" + "47061400220a2014197d514217fc252cef5a2433", + "0384723c8b4a316b450d1fce0b2645912b8acaeb3cad50860cca43bdc0206ed5b3b60ebd" + "c29b3eda305d0d60eeaec261edc24d5", + "0400fb89d87ca4282ccd048606e4d321e7ca73244b4d0c9d3df87d54e038a14939138bff" + "33c81a9ddd64abdfd698bf103e45c96f97004ff7e1706688a53a5544f4ed0f3f5e1f0fbd" + "6f21174166d25a690f260766646cc6fb39020de9327199225e44f3d95c5984fda9", + "03a9f5f26eac81dc8ca0a17acc44322d43bfd18edcbafe24113f5e5fad0ef0a3db75ad1b" + "2422c7321593e41e76eb2a767a14268", + "0c311000c27539247059e4a8d789ed4db93fbaea021272a90045bf6fdd70f4f32cd1e195" + "b99ee6f03f4fb57c3a115ffeb459af1", + "00db8bb46fe0f99b4e6e1394a5db283e310b24d6006319986dd2c4cc169c775c89d4ad98" + "d0fdbc3c0bef6b7fb6b43ef21049bd8"}, + {NID_sect409r1, NID_sha512, + "c84e5702a339259a61b5ba8ec1957f23ffc4f1eeef3a58f383d3731bbaabfcf49ce2ebb5" + "97960ac5115a2af1c62b193d4ab6c24433d5f168a1752e40145f19aeb6dee889a53a4fad" + "d13eef60e28fcc7ed6a9b8b0ca286c1b3d66a4b2c327a629d15c148049e3a0ccdccf05cf" + "22c31956014595e417060627c8125bd7c00f8850", + "0bd3136647572fef3de51b12e64b36460bd3a27dc660c164fc705417339cab21f9e1f9be" + "0f3da926df459c5ba58b701d306e67a", + "0400f45e18834d1933a2a26e95467b6db85d8c3da372e607907798745cd9847bb8f8b51f" + "996c7293b51550144f227933ba26722685005d8b108eb3591b164745d116c80afdd48701" + "87061c75af9b0c3e87dc8262586af14f4d6b1504d274c07c8e89247196d8ce8166", + "047a494645b99a3469369b72cc918708ebf453957b49ac4e209f2edd7a4861d014543754" + "e37e1d1a0f477951a0ac2b5826a470a", + "09de9e0147e1a268f80836d7db43779ce12e7947caa851d109273ba7e7dc7fc52c601f5b" + "f69cffd5adf0695cd7db8de2a64781f", + "0561aa76e1e9f2c1d4aaf6e2da143f67166f09199e1705b631d650528e94d643768cd611" + "467284a9f543e50520e3e738e5d56b9"}, + {NID_sect409r1, NID_sha512, + "c90bf11d04a708e64b6f94d4cca64b92463eae878c377b188c82c1c5f05a038be20eca2e" + "18034d46f00d9a6fc73c4084981748ee9d2915d87aee4e2321f4f9e11c176f01281913e3" + "24700d9cb474b7134fcc408fb4a7006acd9e63d4578ed4c2729d8e0d01b1e6174a43a024" + "ad261eb644ae98979c3cdab75af357f6dbdf5db1", + "0495be0b0a9d357f6155fac008cec90442200bb842d89292fde38b7256e4117284a60249" + "b3101b3f19f778b680c0d1d7422b84a", + "04011119cd910d4e962f54c9776c9180e7eac2f71cb9748ace4b7dfd2d2b3caef4964c7a" + "55caa9763e008de600b727068eda9b98650000b48246cfb7c86e9dff4ba77a3a53dbb1ce" + "fa168026b8929c42c3b0251fee5746897916e50f07dfe8b57baab7964447a2fea9", + "0ad4ab5ecb84118c33a4b06d1a9f5d2c4f1f3dd1cf71af596eea771f851d0371d2d72593" + "c926d7b69b39cdf72931f6bb11d10cb", + "0e959201622673d81ca16ed94e9e5be3f38bb8db48f9c09a585aa31ff39f14128d79d604" + "a5f93c80aa961c85bbf99e276937f4d", + "083099697856c780936ac01aea5e3a4d9b6e183639cd200464a5cc05232df30ff5220dce" + "4e2af714c580d561b72dc4969166a6a"}, + {NID_sect409r1, NID_sha512, + "e9b2a33906a1079280100039787377c2971c378b92e70a38ab41dc23979d6fb0c41e53a2" + "1b37632407adac6f212341cf6af8605b4978c85c9c16960e1674247f1795cd73b99ff28c" + "dca024f5078490513c77114c2f52288f5376872c331151d7b2c08f7794f2c1f9e0d849d3" + "2d73636f0aa899988ca561a76f74543b37cbf3a3", + "079626354dfc4eeeb51fcf232ee9e6b0130c9bd40f15ed45606bb7faeca8f359e0c3e18b" + "f12769254522fd4077eb24bd5454871", + "04007ad047bb38bde6ae2593e1e41c36b7efbce1e0ad08def9b23d25b7ea9aa336eaf102" + "17df16d32ada4af03dc193d44e6c77e67700d2b9466ecf321605b9f4f952812410800720" + "3ac32cfdc7cb87e1790ebf4bae497fb87011e0a81068e66a840d29583bb970e24c", + "0074548d1a3df580e45babda6096f4c78cd70945ff190d9da463fbb03a511c45d45dd1c4" + "6dc0b9521579fb506bf015f8b835680", + "09e04e9ffc2cafdefb600cf61e803eb78cb416304210165fa7c93c1bfefb02cd4a255512" + "622d524141de02c2cbd193991dcef67", + "01a7960232455f27768acd825b8ef91d4efacc38684d05a900a8512682ce19787033cd08" + "c1f2412b481b88ad02dacc0ddaa0ec2"}, + {NID_sect409r1, NID_sha512, + "672db3fb8cc8e5f831be700498d3ab3aef14b7548e8011b21351215fb6dfa09460d18f52" + "c02c8815baf396d856a429bb9afd602a10c213af34db80447f4c06ab4bd28873c88eb963" + "9b199042d4b2cb13cc364f734fd4ab7bebede7dd4da63decc0cc1f84e34d760013f66d71" + "641073f16c08078880b67230f2d6c6bfe17d206b", + "0ab42bc7d0e3c23f8bcf928e25f9f027b56f270398a1d37bea0ee5426b944a9c9ba6d0d7" + "796899543feedb470f70b2ab148234f", + "0401415fe81100f208ec8afd5e882e5773a0c1d46e44627732900c7e1722cd77b3ae2443" + "8a8463bf571fd6bb422d7c583439c07cff019c3ef3688ed397640e873dcb20cee9755437" + "d0023646d05612e8c360717a2e80e80f2b85860d71f9876f3a68548da7099f601d", + "08b44ec25214602de46046b2c94a45f64e9d0903f6148dfedb76a80b8e6314e87bf7dce8" + "e73b14bb274a88fa39136a00537779b", + "00ec4c5bc88a959a1234413026700bf5d4287a0263fe75daa16693bf74cb5071a64eb187" + "78da0a31210347aaa33130602f6b597", + "0b6c29b9177e89880f3eee3aff204b866020b3bf77d7c31204af383d9770804660711a85" + "79a3f1ffe325f225fc7e7894ecc601f"}, + {NID_sect409r1, NID_sha512, + "d7fd06b89226cfd66671ce5b4b656228c52d986afa7f6f30161680eb0c9cca177992a8a8" + "c40167a64165c518c55f678702125709361b536bd928567c97737bd750d0e2e6e0c00296" + "a6ca565f7c05cc8c54ae7a4e0c334c6a968fc18a959c18ebbd924457701316a4e999fb11" + "084520dac68dc2d69187134c40891af0355ba89b", + "07f7aa2216164ba689459ee5d5ca29e70ef75a5b2a4416ab588df1dcb9164330c0b405a9" + "d80c3acc41c19f58e24e17ecbc0fa7b", + "0401decae837c7258ea9d90314ac87c57aa6d49828787054cc068edc1955245271acae72" + "dce5c9cba422bee54f22e11810721c1ed50024cdc9e1b27e5d4bd024654df000bc9a0181" + "f7c0f4a90572c75e16b679f4362446993f9920e2244527801e8f6b1e9398bd8382", + "0463202dff25e6b9c633b60a3edcffc1a22031cff44dc1b0a5769214693ba02038fe5dcf" + "b4a48db7ec49b33068061616daf2fa9", + "08c06b72b73dc2655645892447fc0c0f8055838b194e8fad99fc6bd50774e1ed08313eba" + "4141018af33af95a3faa20b69bcc0bb", + "0958f104326df6008135bfbaf5c2980cba2833af1b4f04b5918bb51ab0a0df637d6a4af9" + "02a5e07db3022c134c72315f25972c2"}, + {NID_sect409r1, NID_sha512, + "83b7e9d3ec638fef51d2885fff5490c94e2509c126608f82660e5fc523032f3e85d69d9b" + "76af145f6bd916dda35775abbb6d1902bf38880f8b9259822055c5b1bc726c51029972cf" + "7474cf2a812f3251aa71813476bff55598d079f075a40c6c41498bd865ce960c518bef75" + "a873b9d010965f342dc4b35ef5c5972efe6fdd18", + "021d84f070c6823a70f1a74225a472118c93ce9dc509aa6064051ca4574939dcfa96be86" + "2069424bdf1a23f62f2868326422e64", + "0400f568f018b0dc4400bca3e9e4b0e5bd5245f15dc7acbcf4360b0be2ea5abbb87a3cd7" + "6aa653d32858438051cbefbcc4feee6f6b01fdf1e1bd7a2d3825df14f8bf8d5de8250956" + "63c3014f2eeedb9bed3c3416d56f805b623f40b847090d6b4b3bd5abc98ea55e48", + "03344dc1cd950a9c3d039b6fb6af8c5745395d2a3343d86dc6670580e331d59f6c003436" + "7a6df52423a625d70292893961ceddc", + "0fb010ba41d651fcc854762fa1437262eadfcabb95b9502a40b50f20cb34fa19ec570dad" + "2e0521809ecdb2bff3f4e7055c02bec", + "05a9c2dc0c1f946ce33f2f434c156c236b09098365a7f31e238b4685e7cd8c86a0b2455e" + "5c83907167c1324bbb37e66e0b2768d"}, + {NID_sect409r1, NID_sha512, + "c62c7bcc860f0e175128e1127dacf935ce62ae794cc4a0ce7966bceb023ac0498641d728" + "1fbc86f9ef470bbc77f608f83f8d0dd6299cf08f2cdacc7a9642e4246df131820220e5c0" + "5d0dbfceda7f16b86add4793e9b6244d96b5c07cfa23574ceb43e8e8b5483192a92b301a" + "a3b37702b8f94f0129d8af1617896b34990c9b02", + "0b6645344d17528968c719091b6e2072388881dc10bdb4c7fbf41906cadf3699b30f9c1d" + "bfb4796d009480664e6276c0359e5db", + "0400b164b075b80fc8b8ec785d5c2ef84d49f2f4d276546c9cf2e17ea4d367828e9aaab9" + "85c5cd0882204e293dba0359d47d9bdc0500a0c61f181d5d06ff20d0c41cf6d6cf7fea86" + "0075cdcbbab2efa0950e2276dafd4258a39c0fe4c45f3c04f76efa7d41392b4d34", + "0c497c621c5cd230fb1e4a4cb3af1cc9d8edf4af5c4af7f15c4ad0a8835b54de52d83bdb" + "3433808a67628912a85c5d00aa222c9", + "00b22e5773aca4d97d2da846c3947bf9cf2474101a6f0d39d31629a6aa2a4c3a77076a67" + "1e37aeb4cee0a94e82e914c8c553e04", + "06ccd79ab93e344e6f112c1e4a39e8505a2aaf5cf85595cadc6ddd1afb0b1583d9334cf1" + "c48f26e5baa38e05b6b52f9f12c141f"}, + {NID_sect409r1, NID_sha512, + "b5bf38fd9e822925254418475a1ce762a94e336f12b156b1625a4574fee11ee472d537ef" + "94b4a4b1c0a73b0140d0b818cd06636653e6c07f0f100118242a7703756f1cb1119b3477" + "c4ced99cf45e07e83b7f2749c1a5f8d8c9272d221fe17f7c6a5fb0f8a16af46f232ce406" + "aaf565c6b2766a2f6528c82e74fa1c0a7fcfd49e", + "0f8c2f770cf5f8e1f900e996ecdcd84fcff5cd959777fd005d721a419123221a3237e398" + "34b270d37752470deaa6cea023c5058", + "0401f861984fa06f15b801216a1c33672cff43740f0f736b4f4abed5656a1bee33a2aec4" + "31680942f2b0b0dce9a9196b49263fe183018633f4e057bb6d70a434f919b9ce4b7d9e61" + "fbf46c1d9638100d77881755fe9829a69d696d555b1a26e25ac1a1c27b40f909a2", + "0bdd99022dd964306955c57b226aef036527eca481622618fa7395f53e60aa95a275f1f2" + "d6e7354d8b55d3e83c85819e818199d", + "02f1330f41a86c09205004215c24f42fe582da189906fb23fbcc52136fcb4970a33b8961" + "13eeabcec8151cf3b150eaf1ec2dd88", + "0439507edbd36ebe4fa5df34d220c1441e1a4175c9b0373fc85669facebb5bda7a4b415c" + "269a7add207b461525c6cc94b7f7b22"}, + {NID_sect409r1, NID_sha512, + "6d3474770933ec01b76be789304b6fda423b12a0ae8c87a5ea8d7ee9f71300f39440e1c7" + "f5aa4b47c1a8628cfc3a490b15ef292a741344f40a8fcdd02cf3863bf3e32d53031f5037" + "03deab17fc52b3d4032f4e237dcc27231b85d3fd60b49ed7ee40c3344948d87c3f47564d" + "20a11d50e4e520bd16c8701694fc70901a5da625", + "0144adae951fe897d5812ee4a16c0be4c86c5e57e615c398f5768a1223a9be20fa82cecc" + "f8a16a31432bbfd17e594a4cd8a6a07", + "0400bce072255f7cbaf565f82db122e9c582ffcfbefadab6d79680b2506792028b200ca7" + "732a98322c290916c66c8a8ef77df6a2e501b4b6f65e678223bdbe5f8ecb68573ae3d7f1" + "11dac37d4fe3c0eb768c461187fc5859b13452381fe676257aa445bc7f38b4919d", + "0128c12479b7f0630374880b214aa26e4e8626deca57148a6c6a0e37a97e89da8acbadbb" + "fe7db28a0c5bd17303e1342af711f25", + "0a95124ec95e35747fb568e6659ff31867a4cb7c00985b36584201d1bac0775653e0a8b5" + "4cd9a9067ab3de434bc2cdf29ae287b", + "0257e5410a6f0bd94fb3b5b10500fb45b501a3734f0c718035a9a1516d2f88e10d1e38b7" + "0c791028e262e0c3128cb84e6064ea3"}, + {NID_sect409r1, NID_sha512, + "92ba7aaf71f625f7a2e024058dc8739da3567c306da4a812ed9e1542b7d1e982c1608216" + "6a59720203f4524c3bd463a662c26a82ec7b4376545206e650eed0d3dd7909dfe3810981" + "393070d15c45dc4a75a8c5bdeba533cad1ec34fd20466a61e4cde3b25af9a80a9a54afdd" + "7de1cf2a74ba32d4ea0082a037775413c61a8d1f", + "0a51f065fb32c55bf4ff6f18ba9d488d35d9f8da593adb0ab1632533284e0adc43ccdbda" + "9d9507b9862ac63b5ae7b0f78b479bb", + "040080e2f7ef17a11ae66172cf1c18eab12aca4c2ae06b8106aa1066677a93538e3dca06" + "26e836249eb884a382c3b726736565c3c301e98d37a17ea736ae58eab093fa7dce3f1079" + "1ee9ef5ec00bfb27bf3c705dd633badc94642c385dcc276f9b1fd5e01dd76ce944", + "0d5cf7b3d28459db8dd69c314f6464f770c31f239a12656368c84c64693f23733661081d" + "20dca9bec9c9659a8124b57a71ffd55", + "072ba8c1b4bfeca62e96a5649e851e9a311d7685603a11c1c299f5ed8605adaf27cae656" + "cd31335a7ae363cbae5dc7a39512c1b", + "01bb9819d25a211548461de4ff973ffbf475230baa161558d9cb7ee6f2e682dad21a465f" + "c2ae058121224f8680296d30e3692cc"}, + {NID_sect409r1, NID_sha512, + "b3fb9e48c333201324755a81f3ae5d4f0e2ae7cd24238fcc66d858e3aeb1ee03328660d6" + "399676eb1b7d8285ba571e214d935bb45516fccfab57b8eb4c3d5f1d7357c768eb7b5e7b" + "5710f599614bd4e92706eaba31f8a5e7e57af7ed13066af50b4540ccdc126b677789920c" + "ef8543907f0ba9dc92aae343d3425bd784ef483d", + "095351c0bc07acfabe6477fe85f97eab520dc96bdd58b44b036328ceadaa56a1904d2217" + "c5fd25155ff2aaf9005a3e2687fec81", + "0401c1311230cfdf5824323448c68ead5e5885ba540a21ff90b951f85d84d78e26da035b" + "fd99341b5901e1ebb18648a8dbb996fc9d0017a037929496e560cd1c936d9eb15f79fbff" + "737201dd880a69dfec31209faf5bd2846e3e664c668ad3d6500c5ed620f1bcc970", + "02234bafb54cad0d0d51f4b8508dbc8d014c303d90d21bc3f749ed7acc42f0335c5ab6d6" + "0002d3bb57cf07018e9c13b92c0a39f", + "04d0609f06320d69870a3e66f19cd46a2e0e3e13fb8b7785163a7b567bf2c0f437b4e30c" + "c67da288a3b34ce3110f6d87affe0f5", + "06c46d0248f7c309c1e5b80ac4b1459bf897e42f8f037031f5bbce0fde50af50cfdc4f60" + "d5ad3d1af152298cfe77dcab287874d"}, + {NID_sect409r1, NID_sha512, + "9ec5f7d65082264b8a50be772c44277a73ed19199eb275fe5976f9799d8629fcb4a59a8d" + "55074cd2eb2a0e02062d3f7cdeb05e62931a24fd1aaf14c257944d1b42eebd52726d6fe2" + "81211b39038e52baae077ea4df89675d860d6ba5a0f998d049614201b872e134367acc90" + "066ac602e478ac3e43c3ddf4b0ca0aac1a68591a", + "050245c1682344fef23bd549ac8d1e8e44b2840c43eec1cecd33daa4e9ef6b53f496104d" + "7432e14248682cfd6f5b4853b65adac", + "0400d2f8fe524b2108e375c9603598b555d6c4c7724c7d11039178037b3a4dc82b66c3ae" + "ffcccd89cc34dc2b2f6695892323bdd80501f98df95fc1837ec4d5239cf55e97d6b489b0" + "a8d7bf12c1ccf95f689ad23e46dcf20dbb531f5179e754f0c29c8757a1dc67493b", + "0c683f98253406c6587d87c57991fe5caa3f43b451875859feeb81176b732f1c1eed0ee4" + "4d1905d41922878617e03dac53562a7", + "00cdc9bc7d670a1b6794fd7da82d2ad1a0e92b82ae32656ddec3aca4de75f407f20fe782" + "daa0004317fa3f12cefc48518298d5d", + "03ee7c75810c2c05946b53e2f24feaa697af35174402c069b9fb03d89d73964c997eca4a" + "5d6f9482cb23c8ce337a374ffc3e186"}, + {NID_sect409r1, NID_sha512, + "61d657bf472676301503f6784b7286fb39fb4186bb88abf1edacb4a2693d0a1e2b77bbf2" + "758c84f2cbfd1753e20841b1cd4b456400d53f4d686e666943f9b6ffcdb77f510be97536" + "e9698fc84ae347d483bc8984548d1cf86b9b40d360f9c0dc5bd1c55868e26fce1460ba94" + "ef5e94eb63c9f0776a0f446c0cfd4106d9f36352", + "08d3b0277f0e9fe54581d3a9499ccd7f015c08339591326859af969d2a26284e3b3beac4" + "a0b74d324ce5cb5f38c7995e4e3a41f", + "0400ae18564ac04b54769e17df84aa54903df58decb870591dad73dbd712693d901f3f9a" + "d43a71f23b77705de2b4ec1c3bc616356f019810f92e80560979ac6e72bee505dcdef15b" + "4146185d2f8f5a955a4555523d982c34bbfc1326024410dbad3349e4c4e01c242d", + "0e52dea77fc59298cb06fb1401d11c662a04500f0470965c4cfaded13b339bde52f4fa04" + "c76a955faac16784f443b1ad9dfa0bc", + "00c917d487d2aae1651d76147de2a706a01c8b3d223afde7d20c9dd77cc2329bd3e0e4fc" + "01255b7c4ed1baae7d26667bc2e9ec6", + "0058c766fd514a405de91a4b9e99fc0b0146d954dc2e2decc2f3f066d0fe192832ad37a9" + "40949ca4e9abae0602248b3b56100ce"}, + {NID_sect571r1, NID_sha224, + "8e14f713a2c427b1f79491033994f76acbead614d12e73ac6f3f518f2052a10c1273aabe" + "628ab38e0d3d5f8ff254802e9f44a51367bf80325b6fc39d907a37f731372864747b1074" + "9ea5cb3d3a83da39c21a7b02885a8c1770e4397cedc958e4baa21d5007569dc9dd1e45d2" + "181709d900a394454090badbd0cd9c2cd2369aad", + "0f42afce7f7b3d45f3f925ab29fc3882a89c9f585177887584703cf8bd8fc572e677adfa" + "55b402446fe1e90dc855358d92c3267c35be9674b40c2ad5ce8dbe6a533c44b0ad8d2b2", + "04063dbcfc2d9171a7cc1835c1f56ecadcb59aa6d5852fde264ab25603f06817a20f2787" + "446445be8b2ba05c70fa25d9b9e34d5374febffeb536facd3da52d43d69fa7af4d4792c7" + "9207686e0629de47916af19f9013f65fa3b5f9d196916cab2f765aff31adb5a959515e83" + "fe3e00e91843c532041ba15f047e978bf2fc69627bb5cd7f3ecd74cdf1a8d623c1efd23f" + "c0", + "3fae665eb7a54f51c522ad5721d9e2648f13f3d84e3d64c8148d59c662872b5cb7d911c2" + "7bf45884f2ef717d72bd0569d9901f2308d9a68d128c042effea148cc963a8252f1426e", + "1df705ef13ce900ed61babed02e121dacd55a881ae32bd4f834fa8e362d059223b29ff3d" + "b835fa2b2db8fdb98c21dda5ef744cf24d0a798f501afa3a720a238ebd4fe3976a179b8", + "1b1e98db422fd48f1dfa049f38865f8bf9ec5618fdbfb50f21cc838051a1493e4b1e4f9e" + "a81156481e5fd84124fbab740421173862c63920e3a833aebf0762e7b5b39a1591d27c8"}, + {NID_sect571r1, NID_sha224, + "38b60d27ff08fb191811036dbfd5b39e1cc3427ff70efb67c851e9cb407f9fac6f348d28" + "9df98d055eec73299fcac068bd0fd9ffa3c5d244659e4f714a58d79f6727f323a7ee2636" + "9000e90e34e106f99f5ae2ae1b64ee89e5a1d304ef20c071a7773e9b977ed3d49f467d30" + "0a881c8371041394910f9c366942449045568f01", + "2f36613043cbf53ad36e2b38998bb867503359ae082d07d040e5a10a43e06ba9c91e7c73" + "308e41e2391b65e634f83b162cbdf4e7a44ad818fb93a978af00f06be06731d8c5886c6", + "0400fe1afd356670e1dc6bc195f9513f1dc6b03017416b5252c7b56153da538422e557d9" + "918298ba6c78283efa0288c0ac61298846a6f8adf74df21747cbe7c18a2b825a330e843c" + "d8018b7659f0a7e8e7ae5d636ea4d1d5f3a1f846d4bf3dfbd96c6ae874354db6faedf02f" + "75c4d1d8bd6a3b61e70ce58e38ea5de8cc16828f87a0667614f6640a3023b7f4aa93fba5" + "77", + "3fe351ff6ddf50752f7dfd8e5a72c9faad77dbea303fd97dc939eaad3aa7fed466fc8939" + "a7a6bb7abee63455284a5338e59dc067236dd699bdeeae1424d993a9c76fb2fe9595423", + "04a0e13a9fde9f2fef417199f8584d0f60b2f04aa6b7524cd2a2826d63043b2188ca977c" + "9567fc1ff292ed480dabc01589db8734c15aadb4ff54a552a7d9e66829fec1dc919dae6", + "01bc7d2c4ca9300d7a3001755ef25231d2852a7b9a3e91baf21f2a2bd2ff305be8a9de1d" + "1bcd7bd9eac4ce12ecf8a91c0a409726085382fb8d2428adf1b42b37b50c9e8e0535d7e"}, + {NID_sect571r1, NID_sha224, + "21709eeaf9e1953822294a478dfacfb205fc25f447a73a76a32601c00784cbf2f9ebd41c" + "22721d70cdb3842dcaff4a4f208d41c0816990e421cc4b8538ac2f347cdd0aa2a39f1aa2" + "6ace8cb6a606b23f6244894d4594a0f6a5b8f6a695fd66e1a41e2eb6a377017177fec56b" + "b58c837e311cd04c5b50575faee32606b9636ec1", + "2e74948c46930cbcd9dbe2325539c7dfdd910f309fd610e6599d425aad9ae230a8d46819" + "70a14f2a71fd08030d0a40ff40dade7de1b06a80441bbf7e2fcf1809cff39c7ef88bf9f", + "0401b75f2d281592c288fe6d5479a4e21ef626471819850cbbdf814593bae7e6ce2a35a9" + "78aea354649d979f161543fd4c12dae0efcdc2d95e82ae5874b9c04a2143535097b8a17c" + "6800c7160c2efa3aea1d18afc1a00b47209dfc750a5317ddebff04bc4d181f238d339a76" + "90c24e55be2cb0c01719d34ec986a07727f2e412aa72434efef4d64ecf7c16e2e75ebd7a" + "d8", + "0d3ae3d8e5e01ad838a7cc9a4d9b3e41eaf9894aed1d1ba597458391d4a2ae38c5d6efdb" + "4d91761a415812d77fd9ceaebbf1ad49c282e693d71d89f0e2d1bbd94698a47f1f30890", + "1e2e9e2633885c85f70208de30ae9b7f72950e2de980607f6d0e73fc1fb2a4a8afc63882" + "06c11b081540bb528a94e5386ce77a2d5c7830fca19223d57c1efe7ac488e69ae07e660", + "1250d1b920324919ef81865513db461409f6f8ad82f658dbfccfae4425906da306ba10ca" + "c84cf5379b6c1d8b252f3c6f86439413c617deadfad38a234bf2b0050fdabf7719bcc9e"}, + {NID_sect571r1, NID_sha224, + "3a131fabf3dc97334f212fce41c44300440d16de1d6060450875f7276f53c026e2a51168" + "1b5a8d75fc0d578546339542833145f7ee13c708df33e584445a75a5538829286480d339" + "be7c777c03c998a6d3f037b25799ab2d541021502a0b02a9b9c337a8b176c4f30e5b1864" + "85a6103b1d1563ad4ae73ca806a5e4daa92e9100", + "1b5fab1d36f6f6d559f65d8b01edba610620fc3a38307b1fb1c5bd63e7ffbd4a9098cb8b" + "df50975a873f5d047ee2b627b090897a7fb5f56d3f4a0f3528179e7c969926fc0d3b0e5", + "0405eb8c5a2bfc86aa9a82830d665296f74aeffa9c5b38750d0ff51d01c2dd0fb6f2209f" + "8ba89ff07297ab9b1b06168757f48cb6eee618a7b44f1b3902187c33208288f35a066659" + "2005334c203f4ee44fdfd5f99686b18696b3433f203dd148324dcfaa03a0a250cf606486" + "ef11ebcc1ed1839a76ad70909d835a4b30a014104a6ecbb284b33f50bfec33d8b5ede85a" + "c5", + "243889e7ad32076a3ea436356eb572c1b4ae402d0218d3ee43927eca0b4fc21a19926eea" + "35c37f09de4766f54e6079c34fb3c174afb953be1aac46d675bd300e717dfc2d0c3fae7", + "1d87b52dde9f502f02a502e7a331ca6dfc6204922fb94886efbe3013446d08240f6dba12" + "10a76eaf804562aa92a14d220d59b6310d6caea0274a5e1e8aa3c6b57f239191a71fe3d", + "2a5342df6908841b719f80ff905cee0ec3fd8be46396922c3f2f142393714b97128e0839" + "07a3a2343f0cf9aac73313279ed29eb44017e2a1cdd0fc86e4b7c536e9f7eb1bbd192a7"}, + {NID_sect571r1, NID_sha224, + "679d85a762f2574b0b31b516270b7d33d5e166c83e91a0f48e0f3db20b52f42f9e6ee964" + "8cf58267ffe3b713723cf3df52b5fab5c14db1e7189f7cb7170bc6ec7cc71946745e152b" + "39180f828688a5b6c0b2957ab94283b90052a3c6e36843c391aa8810f9253b639a8d5a69" + "aec10070603ad7a99dcedb544858d057a1d66b89", + "383e70c71b431eedd4574f65d01fb0304f7744d668408c847f7899eae44770a7f3243109" + "740f177d7146a27748886b7b77ecf3792b512e8d8e37c3bf4ecef2b1253df7066498f01", + "040769dd91fad550980225877d98f7c86963c88be141f91f7a3f1607e0cc6dab767aaa6c" + "eabaf46b65a7c80b6a494b0dac1da5d2fc8c5b07ef7085ed1bbdf4273da3665a6517ea1e" + "5a0282fb94b4726472248f01ee43607f7ef969446313e849998fbf0058c8ad5e24457006" + "b84fc0460b74d86ca281caa174e69fbb68673e1d28ccba17eae045eabc1839870831246a" + "14", + "336909099a1540e6f69172d55e0c88a1afa99808005bf09cc803ae1e4e4fbeac2f77f984" + "bddb482f1f13e4430e25e36962b1a4cae00f1fcd7f2c7a17372c91673d8286f9829bbdc", + "290055d578012a5b7d88fe2f70581a0fff976756b4581875cf5db07e01f09c0bdf6ab70f" + "fb5839567583d53c68e31a27c3fde12bd4f1e1315af2f742746277b1fb1349141ed3043", + "1480c63c8b90c7b51e092597fd8391a237b07f0ff7dbf615e6bdddd5aa880db29c9b9add" + "5bde7e0e81d9a37f852c26f21d750cd2f95520d16da7404c2c3feee1489aff09f298d7f"}, + {NID_sect571r1, NID_sha224, + "236152ad31ce2ffc0dead3c142cf6c770672cd2e75af4a82fda1a72e1c775cec9b481c6f" + "3e411644df7e7ee901c501405620af4b6e9667dfd46091788daa95ef2c6c9f5c240c06b1" + "5cb0df51f5f058d8a7934bd7845f007a35f99fa97200b20f3b5b14fbf1e372507f3b2f37" + "7e8d07d30fd3e222f398f26d8f428e320327f901", + "02261d4ead21f02fab19bbb0da8c272286704c8f0c6842ba47ded121e5cddef79fb34e6b" + "9694f725ca502949faecfb21e3cc062a2b4c654bd542d9a1fe8d97bdd0905c510aa0999", + "0403ef03980ea9b754b655948da63469fe526ff0ba2c0f572981d02f5693bff620b55b8e" + "9e9f9d553a78a0138072369775c7976f028631e65887cbed62fb447c9f41da86022f4b41" + "ef04446eed90f2716a7aedefa1385db9f5f803434517fcd80571adc9b7f086c9787b7630" + "6380a375668b05fbed30922746fecc0cc16f189dddab676516ed1fe4d02855a34a909753" + "89", + "0b309f6c53dee8a8956358df45e72126ec76266d38babff185d4db1d449c8fa9baa4b065" + "1af5f5b0aa70dee3dd55623060097e2f94ed12636961a7c0744b38f2f137bca239f974b", + "2b42395206ae79bd9df1c729856101ec3c4a719616701f836c9d69b542b59ce973d91951" + "853f89a0717abd4b929bc69e59cc379c941349dfb4f98d49f9dff572c614242fd370e56", + "1ecad482a8eadec6800a9d876a382125eafaa7bbd950fe5f0588126764126eb1b3844240" + "15c52ed6a335668506f25124aa78d98ec5739fe282af0c143c07da0fca53b9733e159b8"}, + {NID_sect571r1, NID_sha224, + "ba3f02c4847fae035d747db246fe4e82fb9224ff9cf568a6ae548f5dc2befb2079541d2c" + "f9aaa6b18c281a05e7ddfcdbcefb25f41dd91cb3092b3343e16985e91c912215cd99ae4a" + "099baf628e33a7b277e3c36a13aaef85418fca99f64d73b789f23ecbb76c3095ade0a5f7" + "f34836a98c5be933b44a94a2eaa3f99b1d8e7937", + "316c78f289e1860bb623082be9d9238b88e38c5e978a868bb90f776235bdff4eff591877" + "b7f350cf14c40356922b2b6aa51d64990360b2b0e44d6941b5dd9492b4f4e1f42ca163a", + "0406f4137a2c63b6b79138027464135021b034f97bcb2493943df6be844f1657a97632ac" + "80541a3b43ccc828789517efdd9f86ba171c1262a07a6b337bdb0c8d5f018302a8046a1a" + "8c0425cf553554d18f6cc97f0caca2a7eebbf266d57030014273f701562d5b1444240b9d" + "22060ac9bebb37deec393cebdad21ec7f13fe5c7f1752b4261cc2feddeb737284a6eec36" + "63", + "1e0321344bf364f1ede39a49c8051f36875ad78e4b080ece9088111739041b121f3f334c" + "6e923777fd716a52be669d6e45f381da11262fb4d09ad66dea74ca115838e19fe94b7f9", + "04f24ec978c52ffc7675a09334a895e044eb8eaf04d26c094d7607b77ac4168a02a972f5" + "77880a0d0c73f218815e3a7a70c91c50734c08d374a15fb42fd13367dbbe08fe9c2d4b5", + "060740270df0e1fdfb8e829c9601b9901223b19d07e9d7d422b9bade88a50fd6d4ec9684" + "2afc45900a0107ce85ea6d083d66ae202dba3a32e50c7c3af951cac7acdc6f4c406740b"}, + {NID_sect571r1, NID_sha224, + "6d0372b40559e075af56af853cbe18ba2d471b0fc8917764abcc69102b03d5bbe1fc1245" + "8215be66409c26c89f67c72a8933677a07f88993af6918acb074fa915fe883b24bc3d191" + "ff1b08852f07eda98977e70eba072d8bf189cd545230f59559ac05f1fa3f4e65886d0bc2" + "74a6e02e2399812b2bf91abae81e21279c5de996", + "2c1bc13f8320d97a82f3d9354e195481902214e16a4fd89332a0499208e91d50e5cabeb4" + "927ba030cb42f5bc53b10f500fa646a8c88508cb0d63ebfce5c4bd574c527d686c735ce", + "0402210791ca48aafed20de84ef9896a9c7584081f850b75884908c7b3dccc94e221401a" + "6ffd982f292a9d5f9c1d066ed493da948ac7e93977dabd7b820bfc0fd21cd8d99c072bb6" + "9c033574c6ce7da749ceb480b4e00bb1a58203bbbca5c16923992cc9767aba5483e4d46e" + "d39e71000a1fe920a4c1c211a14e63ace03635a2d77e72808e0664334890b819b3caff64" + "a3", + "2e3db2d82c4b9de2bc0dd0a93c1c5b385f75ad03d0da527a034da2876b42e43cd88dc648" + "33efef54af902d85c568bb8e71684bb16b28c32d80bb3e9911cb1b74be6ec520d99b381", + "065f4715e87ca3541ea695878ed5ccb7d2ea6eed5d6fc5ec29f9aa8deb4001cc7c06185d" + "6ab2dde4347344d44f8300a1e92513af4690d713762336d2e6a94d3324a224f06eeadeb", + "20104e0767530ce2f4351af4977b52339f34d13e458de0482bcd58ab38ee041c9adc7b05" + "650260d919b2648e2f820407fd60a8d6b4b991b86eaf29c2c4d12d3b0b45cac2ab22c5a"}, + {NID_sect571r1, NID_sha224, + "bbfe66c82bc060bd14fd0e40769d9b3a026eb447550dd9f118c30d8448f725f8366edef0" + "42447962ba7f7f833b9e9094d0ff600714697e632626e7d12a592e040bdcee166dcda939" + "52323191021bd12f3b1647d0f25a41739994659dcbb19333ca30f46f539c6f0a5c354cda" + "8969a1eda572a309950c84c7607eb8ac20163912", + "13bd80eafa67663e75d7ae139bf285d2b9f1e03d8e32153c73e26d06e86d7acad22bde9f" + "121a3f1ea674dcc1fe67bc7f5398d5e92555056bc046a02b0ba86c2a0dfe32e91add5b6", + "0404c01fef7f2fd8ee61726af1a2d046c7ac67716403b99e021082e96d733368c6c64d04" + "6986fb01a6b55cc930517762387eb2fa4a8eda23c700d88065bced8595188760170881a3" + "290189bfdc8e7a710522ab5416182c9579ca255c5009e6ee6604ab033c1388639c0f7aad" + "84642290954db9f4f7fbffd17481eabed38151160457d68ebdfd8695b5035e4e6e06532c" + "0d", + "3c5868345c5314aad5ed3a74488a85b2f049396022cdd1de855a0b33c2877f72e871805a" + "f3ed8fd7e7a392c4ff63acac6a6f0c431ce7af680984e8c81d0350abe491a01f0f9268f", + "0c7e96b9e9a5935ccd51b901aadab6e01ebde44f57e6f0b84e7b58ab4f62ffc0f3f3f980" + "665c581ee3de233ee49d11599529348f1ad3d362837c041cf98192bb324f577e973e1c7", + "2226922271fe8307bf597742618ea9c1c271c22c25b49aaa7c9292a81ecce2a55250415e" + "a2ec8ffec54bf0508e64426cb9cd7177265fecc40e056e96cab661485e789f0c435b72b"}, + {NID_sect571r1, NID_sha224, + "b35e9bf686717ce3b16a59963a32a2116130453b161a4e7ceb27b755856add836d779696" + "edcaee3b5c986523891c8836109d431e55c23afbca022437ad19e6777efabb6da3bba1f5" + "f44f905395b4cc7c9210590fd38da621582d059598e5e4569e904358e0dfc0dbfda4ce75" + "538aa97480912852bccd433a9b96c9c66e9597d2", + "30834b0a4284097cdda2ada6947c6c281f7290a49b56becefea1e2788ea3ef78fb968076" + "33c47c25138341768b241164ce0d42f7301728b928be2c047f2eb60fc2f844ab77306d2", + "04003a21f0d8e01a64b235cc455c291e3fec8de12682f05544de207d910c7c24c4cd56f3" + "354500d994380ebaa0b49a7604c6233a9aa24934c550c0e609f65fd4073cd6c1ee4170d7" + "7e067c83513e4acbdeb8343b3add40261edbf7c8fe0af7417264830edabfc40200283b92" + "484630741378b997c3f8bed7285decc6ef8633aa804b3846d3b4517e5ad836dbb1df4758" + "18", + "0031afb24fbc52b01480754837cd84a5165d5f2ad1a1d572b92ab546c049413806f0f523" + "9a77c751af4d57a84786ed1c11bc76123a82e7db3c0495b2fdc5fb9c8720eb7afb640c1", + "07a222cddfaea617f1190a0bd88af4d1983d2543dfba25c5036fe24529bbe2e382de89dc" + "1e36c1f6df59c8291d1c4277198084902e5619b64128c265bcf03b7d8cd6b663c225f11", + "1ca84c146ebbd16300b813621d503d8c754e4b11446d5ee31cbebc71f4b85ed09c5c94bb" + "dfc3570e8882ef790393234c5ee9e52f7d5b74ff4171d930af817eafc40ef203a1ce613"}, + {NID_sect571r1, NID_sha224, + "57b5ae7e95c638b258d1e09b3fcb4341e203f5706862e199b103c8fdac72cbc5155e5cf8" + "b300a0b3fb0ce1f897c45f7aefcc528182f73dd450cd84d5fe9eadff3f704dc2a01b4e84" + "7c22df430efd1c66b0199f3e5b59348af5386962a5ef25204fd230b54d58d7fae801c086" + "f8f405d3d0aa7a9a9da15c22b868817cd897d853", + "0c81a79ced1eaaafc31b69a40d9939f4e484d625db6364a8e589b6b4d336d458b44287ea" + "6c6aa7661113fc07806b147ff98216fa0c08708dc9d651821b922741deda522b4e436ad", + "04025f9b767b8796466c1cc8a1fe6286d591c04a0d115133fc7910640032b898a5c86547" + "f57794e5aac0148996151d3ecbe0d5939dbff5722679ecff378e3f21bbf1354b1eb294d1" + "a30074c2b91ef3472e60426d2fe182ccc678aa0abb8dda15a428e4f6f1ac401b015b2b7d" + "83535a0a92770cff7666659e1cd33941bea1168cffde82db0ea83668c2d387e6f4bdf28c" + "c5", + "27b407a29553203b829a87eb25d6d140e41184634ae1c64c6ec38e9012d0b06a1f4ad987" + "7d7ac4236a22145095990233e6c102a0052ba18cf6e47e289cce4f2ca21514d8868bd68", + "02416e11fe2f8e4738ecff1710dc827f4e03c8e7f04a4f52e755f0c1676abbd122eb9751" + "ec1fdf6c7ba04b4e29f8dee52bff7e9e726e28cb3de6f9abf2dbf58c0519ccc7d70f076", + "0b96f107a26097a468c1d410bf90e223cd72c5ec98d4ee4ec2e32259d7670d7e7689e62d" + "36549086139f6111884530e20f908d7be1edab75180c81a70ece341f7eda6e4a43a5ad3"}, + {NID_sect571r1, NID_sha224, + "daebfef74b452f039c999ba0528be3bd9e16deb5f46f6eae87b63db8b89952c949fd7db0" + "8311871eb2596865eed107aa065f030226ea675ee3256c31a3f85ddf4c21760582144e07" + "af208f33c5f47cc026db5403186a65a47940691ea2d74ffb1245676260ef5717dd879d8b" + "5b72d96f87fef5f762d4fd17454cb5ed83d8a11f", + "2f24670c0f77d2ca0266a743023d2c7413d56d0b5ec77b454ac59087efc4ea4d46179e10" + "278e4ba416ffd8c3f9786ed202faf8251c0ef5a9ea5371fbb35b7afe3d15a9cb4bad975", + "0402da72b8ae64c5ee717c33758ec26153a342936f9d41dcbb136590e1303b0e220ee84c" + "8a06b83d4d9fc924b8808de94dbd780cc8243bc4448efd27dfaa1572aae6abe574be6649" + "3903b3a95d962c48a81c48713247801e4ee630ec7956c9989023ba16f02f5bd1ef2edcdd" + "1c8d314be933225c64b7f8a80542b209b944e1f3fab95795ffa134e7e28e82307dc62c29" + "62", + "2bbb9abd2732994011c8d294c5342e8b1f7f3c1f5718187e9f75832604b43bf75abad5dd" + "c85e8d92cdc42656cc9f3349afad3f9022ccbb4937d9ffa9cf48314b604e82bda13475e", + "3986059f2e096a3675215698e23b53f471c578891f6d721a34a0d231d16348d5bf9853c7" + "9c4f4aa94642ad06cb7bfd11f724800cb5477636b6fc0586fb6efb8eb9bbef62329a884", + "2beda064eb3ffa1c3b5336613704b3bc3d4ff7b0e977df16477c7e33d480d678804bbdc0" + "8088186fbc4764be398a26c13f88bdd23e844be0d7ce598bb87c1b3430da02ae96b3767"}, + {NID_sect571r1, NID_sha224, + "62af0493ae79d71b552c4647d1fb7ab2f282a91cd44aebd8ef344dfd77b521b0c0a3f72e" + "4513c8ecc0e4b84efef3df9482a07ccc1b740c571c5e69cb913740a792aa231b9dc87edf" + "b72bac188293c6c6e788cb3dff32e8f483f8f34e21ee7efec71302cc3bdbfa47908a135f" + "6ef3ff179dcef26d1a3987f7be967a6c0f799b0c", + "20985f2c6fe3ea04bdbab66a8b6167e5969c073b9d53cf3c77cebbf73f4dbf75e601620e" + "c9c3107bf3fbfc6c79f8f063409bf8fe1d14b19e323d857e23dc05157d270c7514137e4", + "040010712d50ba7752962b140cfb943d9e8dc3bfa497bfe81c42606f4da5157656fe2ba5" + "cfd33ddffa0f27fabef8e267688943514df45e642ee0454e05b49f7c00f5785777897d22" + "5b01a2c7db6595c6d4c55110210c564cf102739760e7f5a29706fcb2515d99ca00949d5b" + "4f291716d0aa1e3a47efb9632410f60e2fee1ada47171f902f632bee85da75c7f3c895c2" + "4e", + "2f26eaba6452e687af452d5e1208fa011e4c84ada92a38f0a204a254641c23ffe1c184fa" + "8bfaff047db590ab40accda408717e4f30811b75cf3a5877ef99279476ab924d92565bf", + "1280adcac1c79352635f4165f9c5c1b6e1e6e33bd74d781773f483f637462f80340f8d22" + "cb24c9db5e49ace95a676df3dde53c8721f672006382ff806410bfcdbceda50e53285e6", + "07dd52973ef30dbd480047732622fb1b695fe3cfd080264d2aa30a6ff3dab4ab362518c4" + "f3de4fae042fce78c0c8fa0e763eb187eae2ff8f2e79b3f38cc3c1aea897e1f28b71a19"}, + {NID_sect571r1, NID_sha224, + "566f17851951777ebea3f8285610cd8ee5f882a68e7a4205e6fc9e2d66d210ee2505ee73" + "d6503169f7b903012d43e7e99efa493a8e6ef926b16b9ad8f52156840ab561fc6b680120" + "a88714fd66d1d0742189bf06c155e1138ee5314707173f7352e2cea0fc26e1553643f249" + "0428718e44afd8372cbb7bf5b88234318ebf4355", + "2b3d641607b8a141f876f6d285ee46aea543880e772dadd5dd83d595b9643191d9597218" + "e1d6adb081df133304037bcd2c05c24a54e6c4cca64fb2cc4569d6882315360059496d8", + "04042f2bffe25142ac6c1af26643b0f1c317b34950a8a0f112a0cd4ea4131303674328e0" + "bed5d9bc7ffcbb9712387cf67129365b4fa8a9e785b787c170463b24f6a7962c1e003c87" + "320070962ac4d3220f367f18caa7ceaadcb82fdba45cd2c034a97aab71f7f7546c09736c" + "b080c10d9a95a5f984aa4a3ed32d22636a7b3d5ab29c86d85db59f6f17ba29eb220bb141" + "b5", + "23d7021f5376e7b11be07288a0e47b4326c026df80d7e08c9a0fff11deccdadd479dad50" + "3ef2d4fa3f0ab2aada604b57fa7e09dbf5c8d493070b5faebb27cf68ad0b78bb6f3a9aa", + "3059720e7a2dfff03789e7a514f75f2af5ed18cf1568fa2a5354dcddc9d3c7a90605e9b9" + "a3d0d6fbfebddd615cdd52845ff922873079e06c4f349f7798410ee18e0c69045193668", + "1cc40209692cf5f8ed8b82372c95033e4199d378a28b9edcba516820ba21af1bcf5c5df2" + "ef4146b91fd37dff89ec8f9962eecce5c5e285d76a5f03eaf99fa132e98cc40ad66c296"}, + {NID_sect571r1, NID_sha224, + "25155825fc4f9a1c4dd1db837008e7e2594a879052431f5bfc76d0d2565b8fa726008bef" + "aeddceef73f3c60fa2cdf6d9a70e56d27210bd013034b38861ae49640ef208d3fe294ac4" + "362f8eea44f58af3af8a9167a36b5acafb7ec95652d5885a0e08067ce1dfbb45a0c89ad1" + "acb53eb404bf88fa5c3c463a0f912b5a2522a0d9", + "1afeb5ca87c81025ddf09c2b2c5ee22ba0105c0e619b67a324467485bd839030d149fee4" + "4d8bac6f5902a1245a50c3437046b7c89a84116b2147cddc645b6d2fd24d68e8d53bf5b", + "040119c46988a79e3ae8833ef096b0a1e2886c4b114ccfe881886859abc031df2b1e7581" + "8c82be8c5abafcbc5d7b3b8344e98e3f413d737938845e6eab5aec7e507f7baf0d339a36" + "2f03190912dfb5a1a31fbbbb50784b18051489a3cc0f44c42c71d3a54886ecf40507c324" + "0395e8ced37b5253b915fdedd38f75bb26df2a0a8edba865f898a15f2d96f632f7f06388" + "64", + "1facccc127c856db1994c4d9e9c76de6bffff81a88d7aa0ca1645e250e07674fba734479" + "11c5b47a1aae815d5e96164854636d3168d0344b2d2d913127011b6434d5a5e545d3bcd", + "21da49326f39577ee9f65cee64006525de88a834365a00f4f8cfb9a01dcfd6349a3d06bf" + "95990a2c17b7e95cc0589714b7a795c7016b29bc844ae9031488ca354548976eed68415", + "3364def38a8ee3116cbd971794c859776107154234d8b198efb19655647bb9228c7c6be2" + "e703672f795ed37481e994b6764d0b7c1bbeb2bd1db90b34f460278a54bd480bf4e9adf"}, + {NID_sect571r1, NID_sha256, + "29acb0fca27e2a10d7b9e7e84a79af73e420abdb0f80dd2665696638951b52dd39ca0281" + "66b47a3b6a2eaeceb1a11c152383f0bec64e862db1c249672b3770909f775b794e0b9b28" + "a5ec8635a996d912d837a5f22471b40ec2e84701a8804127a9f1a0b3c96ff654700bad31" + "67240c2518fb5dedcc1be9f56a807083e587bc56", + "32c97639b69c7cdbf419286d0a1b406d9b1f2886521a8b979a36118d2a368aace5b02dd8" + "c515f2041e6fb9f026d1e82e789dc826a56d2ef732b1bb0f49be2b696ab5d3d5694a2de", + "0400087ff1d8a4644edebd43c2d43d49e140940d215f272676fdfb72ccf58a12021de3d6" + "68f2766848044ac404fb45cf6e18fc6700f87aa53b4fac1e35e1731814f8a9d0233e2942" + "d7029fad3638177541d8392111064837bfa77b4455c21c5f7652e3fb302f4bff4a35b74d" + "e8aff3806538ef9ac86964cff755a81cb3002b6fb241ffcae8ac9621b8e034967d650836" + "ee", + "16a06e3d25873f6dae16bb2e569720ee9c6ae7b5ba36854c321a80be8b4be502b895e1a3" + "d161b001f6cbcf53d164b5485d8a5efa0476f581f9c79b3a291025be01a435e2fc5ded3", + "347138a43f3ed1a1a26f5f11549eb8a41f64aad302b6383879886216ebb6d08a4ce270d0" + "7a5bec6018eb313430ff017c1bbf78556436d9255e97aba1481f0f16b85e7320df79d69", + "28f35e1aeae288122b043deff9ac87d39478607da60cc33d999b6add6209f452f631c6ce" + "896afd92ab871387f5ea0eae5f6d5cf532e7a6ab44dcf44acb1fd1daafaf1ad5423d8e8"}, + {NID_sect571r1, NID_sha256, + "c92d67cf6536f5046e15b02158da698bcbba4ff1e4e9e9c882cda67f817210402ef917ae" + "93682c9c3dd817b21b73c6c00b7bf92ea80ecbbef2e67f4f4379d078a2b0f297742b2bb9" + "c3fa3297a7e8079f488555bd37715eec92b4b1cbf897640ae8a1d2a0fbcee5423ab31a37" + "629f98630275e35094a896cc574be0a449bb1bc3", + "0f93672159276c5a293582b9f49607bbdb970112f6c63b2b3b5d32ad3c8240c86b1af13a" + "8dff6502c6b6a17712cfd988f8cd23a60693d64104143b3f91adb37f852e9e11a0ef110", + "04019dda59a839aa2ed28f69a62a3e3a753c6fc789fe0d8551bf59095f009d0327386e6d" + "f5437846c6803df2442e0359a367d04f117e3965397576d4287398b4b8c92ad278df4a44" + "7f04159ced60503f7cfcfcd587bb3608699f54693068101a838d575715de02fff81058d0" + "25dbdda430e176f60e423e6fcbba889914f6409ce51d51e89e4cd7bbde6d24404e5b043e" + "79", + "10dd216d4b3da2fa6a75de60f722f1f128776741cba002c055d1445581242a175318291f" + "ae313eea11fd905b20d26cec845f57a3d5bf23ae4dc93d886c0594f1cf7be4f59f3e3eb", + "128d5c00a48c7352eb980d9c80781f8abcfdc1ddae415b7ac94b4d85c3d7d4f7316e2b33" + "44ca50c6ae82938bc728e640e59e2d733f0c7f7025e66c15c81e98a845c1ed4843b589d", + "1ab59ce5e54bffc68fda96c920b839fe03d1976ab36978bedd973715ed631bfc8e3edd10" + "0043ac527aeb5ca121da848bce4ec9799f55b22454e9af32848943058b257e815b04056"}, + {NID_sect571r1, NID_sha256, + "15413f614c4551e3b138b64f66d15f8964c40326a42b0afce820778eee4a88edb127fbf5" + "75da5263e5a2627b5461d311813ea868e6417615e7c4938313675009caac28bc7a2f4c0b" + "c37572d9bf36a3b1794294e09c0121ceecaa4b916df45b0dd31225415e6c87cfeeb092a0" + "08fce2c543cd62365779ae28f29fa02a15d9dcd5", + "3db080bc99c5fe7e06d5032167af56783cb423fae59fb5b3c6bce5fbedf56b7b39b17810" + "e48ea9a172881aa1f42f5e267349b60294d4a208b4437666b44abcfee5a1829e9467908", + "04059d1b3f680da784b49dde3b361eee819d67339447d7bdf7965550264eb63bcc7674b0" + "921f02e15d45466dee52b4c0a50c2bbbdf226af1662086476a9eb1236e3d4c2b6219af1b" + "db04e3466200dd6ecbc268cdc1937ac5123cbe33f32110cfdb8b7536987ddf5c9ef2464d" + "2334f315b9b489cf227a6300b6e054fe40d36c057a692f2fd3e762624069e2adefb65d24" + "d7", + "37fb32a902eae0c5d7cc9f9018a5d1a906a3d1b9adf5bfb696ff63f105cb2e736d9bc196" + "1677fc897fd3a9e9bedd370be6f25a03fad425b5a293c66180df78db33aec4a188d3db6", + "3aa8ab9fc9073429e52469088aea91f00cfba271b9dbb84818460883effa0c51d6a48c19" + "05d6f58d1312af073dc8735c29957f30324b467797acf86e028410de016338b972013ab", + "198a746411333172daef76359e7ad23035a0f5d14c283cb268828bd876b96b5f767e0c1e" + "2796def7a51429f39ab2332ac25d8e4f263f8dfb9c4c98da2ccc398fb3bb9a6b28ca28b"}, + {NID_sect571r1, NID_sha256, + "9f901557451ae2f8ec79b6d4adc794cbfd9b2e6d28f19409532d91682820205308b41498" + "a4e1ca247a2baa8da93de95e3c0f7afd6ca46bafdbdcc6d3374a12684676a50988b86a96" + "0a82180648c8c1e38f8fd9af604c7be3be4b24799f4544ac96d6360cdb83d1d0847fda21" + "642934fd6cf65385b50d86d4656987901fb88d0c", + "06ee767f6f36bb8f364f324d8346455c899a49237d759003dd52cfa13b9baa4c71347b13" + "4b24ecaee32d247c34e3787a0c64bc5d299b55c86f64b47521d22f2c09db225b0c84cc6", + "0403f971125860f4598fa310eb7a8c6b4e0c31bb721fdc17ce6df9af557beded6006b8ea" + "b10ebe7f3c4f3d759d4a87dcfc1fb767ef87beb1f5c845e3f41503a33b28b2b5aa1644dd" + "1a03296062514d4e89d2105dda5bd65a315b9770c45afe4050d8c3d15001405b1e32be58" + "67ee90cafbe4e239dd44d030b4fda855182f1fcf80963c1300cb842459aaa8c282737187" + "6c", + "2b247e2dd0024f534ed2797110df6ea4ba166c34d91c94e43b045c0ff80f124bfec1cf3b" + "e3da7c58389d352c8c5c1bc2a2e876a7e56301b1e688a085ea0222697fc63141564365c", + "2858eadd14373aeca65ee5a2cbbaceae4b54a50e0941a696406dd86d05c07c5599379c06" + "6b2288d01b2a43c9ae34bcb8c36f59d490aa8d066fd3d7e539ebc620a7176507ccfb232", + "33c20d26dca20af2c56982fcfa6f085bc5c317d01f3b1dfe0ade1ef6e3e960b18b626d17" + "d6696c936f04090ecd9606c2a6ecea1cd1883bbbca8b3dce3b0acb2688fb2834aaf922a"}, + {NID_sect571r1, NID_sha256, + "959fe5a19d7aea2ba611c7203e19f8e3f3cc101e03a98f91adfef602c424c580d5a86865" + "9368a930f9883d699fc633bd07f6cf8de474937db0bea86fa7cd140ec2f202663813033a" + "757b93bd72afba15be5e47a4eb93e8a666aa1c72c241ca3922547d63fa3732fec54afea7" + "ade84302e2f044275bb67433fb6b125b7913143c", + "38e2571d9f22309a636586d62863ed67a70538287f3ef88b88c3c2fa1a2900d48c342b6f" + "15c26b8e7fb4875cda4093b7de7ceda48fe1e2cc2975afe958040881de61f309931e48d", + "0405a221634ca85059543e2caf8bdf79c43bb78deb35e9c89e07d553bafb6b31750a1d85" + "ffa7689e528c11d8a3dae442b4fb2a4a21238d636eb04ccc04c8b5d794b0a213fe0480b1" + "d20225ff457b6cbc12d152b08025cdb7e1e921ee553add9cbf83228d678d5a9f5d3d1fb4" + "327a74c1dcb5d69a5b98f3ed1aebef0af09bd49d253a903636ef5a66844c500fa221470f" + "2f", + "3b4de49d57040141f3584ff596eda457e2835085d350b75391d90abe728723e1d1ac6413" + "979d4fc3eba98d72a01248e6510c722df15df876da881ad50539e4248facafcf311b464", + "00f259038b4d3d036bde101aab29f4558e88e604c62f967bc7a35eeacc6a56294268f8ab" + "00a34f9a0319b07754f502c98718e8b5c91093cdbff2c8496fd63d6fc2c50a35f87f423", + "2350d5406922e8822a91f7c95cfe8524f017a14cf7174ce534c60aeb351510d06ac20dc1" + "249129247b21c72c14b02b710c26c10899bcf995143aee632e294176e903645b660e998"}, + {NID_sect571r1, NID_sha256, + "97b9688d9ed5101b8cfb19e84b89cd644262ca1c7ee18944e29ddd3b4cca78e06338b270" + "385b00a5e8b91ca5e628de3bba50e36ecc695b3ea737a9cf8b36871c473a54ba17819f49" + "e730c0f253b0c769aefa6c16366fd2dd612f330e95fb119fcf3bf7f3e254438c0ab635ec" + "04a8b2424a05b483ecf65b74a93636fbab7bf1d8", + "0c8f5736f1ae65592f3ca850f43d06441aaad8c03820f3b08d8a6db46488dcfb828459f8" + "b3f34af73cce8dc7a5e3834e085a64523d890028e194214cef4003210e6eb530005b01a", + "040667ce3db45b8772f717ce20755ffaba968aa1314d75c84073042436823fb54bf8dda3" + "4a6bb45a61d610745b1fc10eb0eef71c4f55b26acceb442d822d6e2a27761c73b740f472" + "89056035da1adaae894e361f5283b3ea07b7d9f64a298be11de9fb487c2479b120381f1c" + "60cefe5d32d37e4644ac86a170f82b1c4443eb71b940b21c7a016b559c6c79835532c276" + "fd", + "190468668989a607a3aa966cad071ca8e8eb152b0dfca9205bc9417a3d612ca1105c7b90" + "340b04acd96a5223658adda16bf6b598ea9f32a2f8d1b61c2c2bdc08d6a49de246240b3", + "291e1fb18edb7a93badd6fab6f56ee0d390f3b6d298e97312d5277358511fc7621534ac0" + "35f3518cb140fa4ad5ef7d889c0d5f3f52a4e4d06bc9f647f99695531f85a4b76cb1184", + "2d916734e02b0a98406bb5a9723486a7ed40bdd0b39c4cb802af4bafd519803d23c6bed5" + "9a80c256a14eb878229942f67e0b8159d5cbf24b719043171b3958fd669adfc72eb7289"}, + {NID_sect571r1, NID_sha256, + "f08b250bf4a3980cb455338b3f4173723b3f44c97bacc9cf550149794a71426e398cb4a7" + "4bde141d8b7b4a72942f1c069676a9918e27792cb8f085ee037c78e3c468adea5123c4c6" + "4d8ca6a39f2f90140c5d2d80b669cbf0d1ccb466b18ded83a1d5f042c36188a04111c34f" + "f769abba9aedda40a87be1e24b700225e2078056", + "1ee68c3994adaaa9e0d61bfcd3bc1cdf198d3fbfe28a44e5dd518867ea04b20e795eadac" + "c48bfcf8e8216dceeaa069b756e8e99ed87b6b1d31154cc9310bc3b4555162a890b0c6c", + "0403efc83ad15d9bf889c9afbd769bdd1dc8925b0462c93868d85ca7554b540d8c3ef7b9" + "a63becc85981972eee8a70b7f948098ac050ad594ef2ec249cc3b557844bae9cb2cacbf3" + "97042a012b3a1d9e46cece4fc3460a2bedc9af4ce0289e95f69550eb3544f7c105b5769f" + "a52234ac88f9045ea5cdd4937664846d26deecf511ba6996ce4072e763e8ebdfe7096608" + "88", + "031df03a6cec2346b92d9ae7d3d983edf577d9a1bb88098f886f38536d8d8cf25def5772" + "6790604e674d036cbcb864bdedf8475ba9c850d510ef93b844c037e04348d5f48098c20", + "112dcafb63bb125d9610e59883df481bfde43589e46656b5952cdd72238cfbcfee79e916" + "5e3c9b89c9ffed12d303225ba2af19e00048e20e4edd3968807e4885003d148403321ef", + "2ded1456df54a24214d8c1d3fb314db52b046ca31458bed69bb3aeb6a9ece509ee521fb8" + "046ed43accc7e605440a09fd96db659c98a7dd606758c0c47e47acfa326b9ed73ba4b28"}, + {NID_sect571r1, NID_sha256, + "1cabd16fc29d7d919622810dc8b23c770b790b98b119eeab1b20900fa94fc2ebaf76be4f" + "5eea91fc5276c5621c8677d4d117c4a5a782ee2ca1d5b0db997fdc8a05b6b3fbb833d7a7" + "b81c3c615c2a662929760a96feefcf89e46b563314c9b77c86bf34438458b43b694ceba7" + "41b97dfcdacc0ed57652ae62856ce10ed2690770", + "3a6fbf66ebc1365ea7699c72cdac2dd85907ec59cd26e2d18713354b619ccb83b7fc0db9" + "193aa8493c1855f1a83fd987cbbb65de17c59fbe79256aa5392f4eba045346e9ba26592", + "040559dd556241f9b11d0f91c5458ef6adb783f9f5051bc12cac9f0b214f836f7b149d00" + "ba8218e873410a50445da9fbf68673f3282d783988981fb221d0579341892ba6824e0cf4" + "a5005dd0e594ce41122882538e51e9bf29d159fcbb8b29b97c5546582390ad5c59c97527" + "1c58ba1e75d70c3898fea929ef7316ee830eeefbdc69bd80d7b0e8133b977cd573a3b422" + "ee", + "1c5a193179ab859ec1166575007c3cacb30d31f341a0e82ed6d4ddb32da909dce08acfa1" + "0fb14183258caa743010fac6f7d0fb1f8c8f55c246e49a97f2bf571129144c23de8d68c", + "2625d0bdf37396585d22811a12ae7e0c3f512ffdd0bf4d048379434af46c03c6067dbe7c" + "271c417ac5307123bf58a9f2064bd2b3a2d4b4efa3027959bfe63e13a851f46a21da6e6", + "13f16b211b314a7e9918f3254da2f1aceb5340713985610f03ec1d0a33ecf9217d61076e" + "b153d8f27aa31aed3c9b165be52f8d857de362b2c88db5dccfd708a996a46b76b4ebd09"}, + {NID_sect571r1, NID_sha256, + "7bc8bbf5ebeacf40b3c82eb6eba5d994dcc6a3f2e12ef741f90f90e176d20c21e006ecda" + "f14cb5beef35bff46b2c374d9ee224516679b1a9e9255cd8ad8e60ed234f8ee7e0fc53c9" + "021488158217d4b4369cc597d6053746efa1e73340bdd73c1bd2eed57b92426fd4d278d6" + "a86e8be0f0a66ab3dfadefca8831b2f488636251", + "145748871a0b5c1cee628de04a12fd68ff2b154fda96e47afaa96389d66d22802968584f" + "6753d36618d49ed205260f09d3f5ccc2b27a34390ce58179b9834ff92a86d66ea0a97ca", + "0406cc7ce2782dd67cf1fc16f1b24ae46fd085b969d936fefc409a9bde354cfd33a154a3" + "113e837cfb88284d75a96f5fbe85274fdd0990af4a033a6c40b904a5e0f666e4d8b8bc35" + "3207adfea166087502657bf9e2c437beb2f62dab041553a06411f6c9dae83a2a2749a4e5" + "a2a36fbe23d40816b1b8d206b9f5cea20ef200b9150061ca22fee2076e31c88d60a006ef" + "4c", + "26c820dc92f97dbf545f51db7d5ba649333dde38eaa47d8a7edad9a3cf3e6780442db234" + "632458ff17e1d7b70019916708c128601ff547ac84dfb0173cf0a3c5d69ac96c3d7d395", + "338c88d1bbd0b93f3f1fe1ccfcbda65fa1667ec471730a40eda87f57b3eb63d979d8d6d8" + "19b974619799c90b09f33c051b8b522c3a1acede101857265ce1b58cc7eb5698049f494", + "3637bf89f9b66c7ebd8f91a8324eb70a510284b39f0f2e45578f26f5f1e4504ad70a3894" + "27f4d58960cbd918c2f8279de52096e25a1b0b0c3929fd5ef56bab6cde7c0d8e9d2fb30"}, + {NID_sect571r1, NID_sha256, + "0cd2a45392871c0c262e7e6f036946354bb41f9c2187b8c4d399231280682f3e0a09731f" + "bfd52c76ee63b9828c2d731f4cefee0a8c46419c398205b2ff80c67d7756db300a0a8385" + "fa287dd37d9126f75998ae1cbab5136560592118db52fbf102b7ff0a1ed45b8a91a7d99d" + "13a0f7fd4366392264aa1248d7324901467457ca", + "3c71911d24ad19c20fc1d8a044d63c9bb417abc3778d7e6234c6af79b898cbfc2f278724" + "4708d2fe203be786edbdc4c9b12b413156b7b0bab0be8af895d191d853cd58aafe1ccce", + "0406cc47aa586a73acddbc91398ff5782457e6da2b10e265153c678789d3d7fcfc485b03" + "b089eb67e6d6955d5c8c7ed5f933d84853576e76fc60332e5f0a62c3ab23690317bf1b42" + "3e015604d94ab9f2ae1d74fe46b1a070160513709de2ba8e74fbf9922e9bbe7f6e743b25" + "701a13f73eae0db0c98dc80c5f8528e16610fcf18f60eda3357ad5878add2554a6befc9d" + "39", + "3681fcc5fc1f0d7d413abf2e44cb5cce9a4a252ec449ec4f550df4a172305eecc072454e" + "fe2040aabaf4fee58ed19c9090061d3c4835c5fec38996f013e5512c0147cb14a4f0fe7", + "0d3c26796bb86b1a20ed4935bc3824bcb9742513ce91a66dd523a3c0d8a5abe63488aabb" + "806b5b113e90d3f3c80e3ffa01ad051e6b0d4edfc641689953ed65fafbaf3e554be31ff", + "2e3129ff95b06c274f7ac08882dc1da6660269f3dbd21a3e48377a628f6d81326084bbb8" + "d32b794fcbde8e574f853636fbbaba480fb36960b0994210bea319a99a46e29b79217b3"}, + {NID_sect571r1, NID_sha256, + "e97092625b09c9ae6e152e1cbee207d83361f34cb9b0e727c816a5ed851f12f91fbf88ad" + "9d4c8f9d07350f5d828fd8574eafc768bc72a2b18aaf4d2b48fb10f7c3431137b5185015" + "4de9706487d69a40a8f4cb2c799f48c5d8f518aff752500de93cbb94ab04ae1e0c7183a3" + "2d79a27291dd07b5fb6e6a4fab76e85c3a8607e2", + "18bd74698bac36ef11add6b3e3fad227ecd868f370ec04569462565d2f0af2340bf79348" + "6953a7b79ab04f0ab1f0e4fd16bf6b576cce677d543e73aa8edb0e50372f24ddfbff966", + "040231f891e63bc1c43377faa56c5799eb1c877954ca2cafdeb4883ae40bd78816ca5634" + "f48f5ef5c22dc7d3d0df208bab4149815274d7b134cadb700d166a5e3fc73e9be1bab725" + "220469ea29ef860adf24afdd386347763008ef6fe2488d902c4d513bc0183fc52742782a" + "6fe500d6b581902ccd4f9bf077f975bd5fa89bf240723b99f726c9fab4f953380745ff9e" + "17", + "1590570de563ea96eddd900e4a0a7efa2e4a0b389854e96af32bb7555f098a8cb52d160a" + "bcfbde65998c34f91338a40d40cc03e4a9a241d3b16b0e893d3f7ffdbf8912f35c7f538", + "32402fbee4831b16d762ea2cb218279f4db5e20bc8b6e2e53e89a2ef3646cfb0abbac361" + "16c8c708a1342db2fa0abd39d149e09db57aef65ad8092f37f7962f98c28331f0f20b64", + "2d1e38f40965e2697abc7df5896cf051ce5646f135d1ea0bb470a43250af8df0abf2a04c" + "a1e0f1f31013025b4136a8a6bdaa474bf50752c571f883829bc3a5482ec20e2b4a72c90"}, + {NID_sect571r1, NID_sha256, + "ae6723b8df5d6ab5fcfaa22d32fdf106d211514cb1892c7c43ca6cd85c2532f85929c8a2" + "59ed251215063cf92e1502528d1e22d5cf67efa0b8ef21e8eb2f5dff881ba1433e8bcf2b" + "6af8742ecb2bccde081e534615a305562cc22d3398f61f277d8ca785842bda85d8a40438" + "d9bf1aceaedcfc22c85533794a69cfc320931d3f", + "335699bfd058ee2e6163f55d1816bf3669acea8b73be9c4ddfe775230925e6093cff7a66" + "813adf22222c8376faa106d85ac9f3c67929bc58d8986795b6d35d5b9fa546dceabbedc", + "0407995e02dd3d40f9bc2e6f4cb1c0d29923c9022169e64532d1b357f36264d18059c44a" + "8617a6f1136e72648c9051a27714a0dc833428762275a1b5635a3ad91e65d2713236c20f" + "5006167d5839cd4476a638c50db218979a93da44dbf97281d90daa8b9b530960c689279f" + "ff6c342af97880db1e9c5ae57b91d7be727fd1c6210ec59416d1b675f4dd666e0b121d14" + "4b", + "3f037ebe0e4c3910953e123becc09c0862490e7f590245c4cdf9ea5fce930a7d7ca5d17f" + "5689edae1ce706b90efdf84cd82e06e4ab95e9e2368db91d50110eb91cf44e50cdce2cc", + "2baaf025290897a5d68c5e63543256523fb086a6f1166ddfd3d50fb307e0f0cf78b5fa89" + "5f8b71944a7b67b8afe5f3e10f2d248aedf573860c42cd7aff258055ee7cce472e8efb1", + "0f4d239f5af023ff6c94ad7f66d43201c7e40262cd92467c4ab54be8d2b8e6577d143750" + "64fbd00a6327da62f03f75262392add0ec119d820205065aa6238433fadc8d1734b8481"}, + {NID_sect571r1, NID_sha256, + "ee20c6b61886e02ed94359dff3559522ff550ca126fed4b2240ea7d999a182b7bb618c50" + "528fcbd261d5e497a991fbac0cf4c105c0f664d6a00a9001c1ed522962fb44dd4159677c" + "e8f1531019f86457c055c9cea6247086cdfe0442485cbbc4386ad002b4bd39a1a1877524" + "37f04569705cb7adc0c68f0fd059d946deb63f0b", + "2c3eaf801330b3f1b0504f2399f1d24455db29911f750c246ba0a134c3b59da8b3562911" + "197764699a92ea1d95a2aac587e24f743df1dad3e1cf7edf955203e24a0225717f8d2df", + "040703d69e2dfb13fb6e695b0b30b31d89c8789e8523a7eea15673aeb4f1909192c06c27" + "558eb55f0315f395b1f3ce84d9c304905cfda1d119bec33af9ade4420de2edbe75cc5460" + "e3075e35b2d6a8550969d49ac5d656afacf68d3a1dc6d17666f46ce3413c855b627f0891" + "912e373af2ba91211c20f067d66056e6bbc0814ff3921d944008b25d8772cc8d696bfe1d" + "09", + "0a9ebaea478893aa0e3bbfd5d007bcec5ad787d9bb5a8e9b8b79865c584966f0bf040d36" + "f62a8e97c123d2adb7f38eb49a86e9c2ce1294d04fef1b6fec7908c4ca1a70bd1699a9e", + "2d495eb5f6fb187a0ee1fa772ccefbb969e854abb445ec19ac3860f40ee65f53b92f6a79" + "7003574bccf0b9de8014ad4e5745ed264eb3ae88040ef6518809b4c66f691d496a85d51", + "1840b2977ff137f2a8f2f7c25e347cf1262fd128e008e30e4752315deb5231098c65e9a5" + "85496a9d6b5b56cd0b6d7dcb7150a077fd199be2d2de0262aa84dad414e100ac6162346"}, + {NID_sect571r1, NID_sha256, + "734a9eb8288e32f5a67cc1d88704523ca2c68b798d90e188d871d9f50d2da2063baf1ee6" + "685c45832a1818aabc9afc0bc935e97969dc983a484f16d2bedb3c7c0b8221408be2480a" + "5562d5d1e5d8763d1e474bf2826aa93a68c3b870e3bf34f4941cf590d88e1f5a8cd782a3" + "3992213f3f6b4b4f6dbfb3c3c8f21f5eaf4ef609", + "1c3ff067497e5d387f31f0ecc9c67b3c0dd6ec8c81318c492aad83c9dec6c99e4fa47447" + "f6f7082d636c2591d0df940b947d0a4ae3778e2b7cc8fb92214638399def894ada276b8", + "0402e56655e37b3e753f35eedca95f8ec07b7a3d3e14e365ec041cd9003bdb78a7a8b8ad" + "277a67da5d63dcdeb0ee8d8efb68fe61aad9b1fbef4373ab13c44efacf68cc499faf5b5d" + "be047bbec643d74874b77f0fdbbd2df3f3ff0d35f4b3e1534b2c4d5c76b8cc51693a70e1" + "7d1d4cd64713c5c05966c826458fb5411ac840ab5998bf3cd64a0769c3e075259a70aaf9" + "4d", + "149848f4534eeeb45fc38ddeace59e8f83f0bfb4cfcd2b8b7acd0bf19303051a6a8fe75d" + "4cdec1be036645beb075c772aef4a58785c16d984eb43b9b0317446bc3b3abfe7ec2cb7", + "17eb68556224f995733077501ed295088cc1184fa3872f5f11e97cf67c7bc1febebd3120" + "6a406c4479b60246a517cada5859d4f1aeb98dfc108e96e9898c6e71e59e39b6284895e", + "22904497dc7a98fbe117e4427d74f4ecfc4e14d4467c99227427e3abb8d3dcc406f3704a" + "7783d822ec1118a1d91d5945d5b902a2ad325bcc9c17c68ddf8b5323df9c2bde392710d"}, + {NID_sect571r1, NID_sha256, + "68e27cc72fec8f3f1f3882c6efa08efdf21d74d13be5171da35ef2855666ad2ea6919d21" + "dbc1cb6d296663dcbceeba2fe47a2c6507d3d4a67a61b55b0f81c93412d7e1fbe15a590e" + "342a05f55daa55f8591171303154e615e81189a523b855829a5c96621ad118f522e397e2" + "eea05c2603eeae6e3591215e29b2289bc384d8d4", + "04b4e04281b210fe78d516a5b69f878b7fa058941ee9ae8cc63b061d1eb9e12c3e0ecb87" + "17ff4623ff5bbbcdb53c48adbd9c69636506ab929c5507d7ebafae5654aad65a263e48d", + "040538049d071158c62f0102fb664a47431afe320474a173463819d5f83f6737b43880ed" + "378470d774d32ad59cd9d75e5bb06b118f1297af3f6fa910f40aaffe11e46cd56cbd29aa" + "5100a4a843af9841e2427357bdf26817656637bf4650e443ef303dd458ed092dca3cacf2" + "857d10aa190c256467ff834bc804f8557f6c3bdde89927a5f2bd55bb9d9f1f08a044cbc2" + "08", + "1191110485f56335f0e65fe04b9ad8fac1c3573cb4690db3e9f62086312d394b0e354890" + "c0f74e3df7c43e718ecf18caf6904e03bd6c0912f906de1d2bb4c49823bc6c0dbfe37f4", + "0dff371ac365cb7de248ddb2b2fdee624c527c6c1908dd287a294bb43a4be94c130bfa83" + "710b0655f21695dd91703acca64fe2e7927eaf9c2b9b230de8002798224f9505379bf34", + "2f30f31c863bdd68fae16f97fba756e033eada18cb0a23d7d4b2c9ea3c832e61b52185fc" + "d654d9eb281b92a9b102c3b17ebf02422a0e4a7a56a73974208371ef65434c38f4d7d1d"}, + {NID_sect571r1, NID_sha384, + "e67cecedf35058b80787589514a9c81c6b9f4bced4260411d2af75bc46b8b2c962dc9d26" + "0dc99ebbf8ee64950766efc0e394184bdc8e2891d66bd3300ecc880e9d6a3d0eb6153223" + "78afc3dba89938704e9a8d0c949d4bae9838805c00377e3fe5ec6a1a98ad7eaaba6b5009" + "73dac48b26b7fb2e1b9889f8c387de535d4b2363", + "30f2849a713aeac95fde5ce3af853e9d070ee60709eccf35a076567be2c43f0fa34420b0" + "fc097ff577221275a3a56e759efc32183be2d76058a7d20e5dd59f00415114d73a15b8f", + "0406d4ed3cf180e0e307745faa49247f269c3fa0a69042b3b78ad645f43eaa50d479622e" + "27429a6b6b1889944f85975fec8018d3321ed38f6c7d91f2efc98467a027ba4a02c7f231" + "b405f2ebf6abf7d53fa32865a9b6ada9bee51c1fe26cad74dd6ef78f13872f340d641700" + "31becb5073001fbca373be4e32ac3425d705ee942e6c4e639bf72379e34776680a387a0c" + "6d", + "0da9d8647d0950f558a3831b47858168b3379656e603f2bd44046ac7546892d1a7318c5a" + "9873c6ff85683edd3881a0f1af5501d17939f0825ed37bfc9a2d95faf43d3be92b237ef", + "0fc7eaeef74806606fe51882c6928a06bf552d18dcc4d326d44a540abb728146657048b2" + "0e5fe2868beb5f04f32d43e9ac23a7f22c6bf325bca24f5e3161c868911ee61baa8a3c6", + "33d63693268f3762635373fc901fd72e525965ac17e2cc009177f03bd3524107b30e4c6d" + "80bbc4f87fb1f288ed56812994541fe063f1d91afa7213bed8be5693dc6c17ec9a0714f"}, + {NID_sect571r1, NID_sha384, + "2baa1ac3f07e34b67b6af087400f261e138b070c8475378063286c16fa73578303380236" + "a4af2484ea01ba56c1c619f6ae4e5e6ac2594c8e5aae7e7f196f96fc5d0f507bebedd4d8" + "18e77b9120e5b4bc01c7ab6339e88b71d0886631cc7fd89659bf513faf149c61eb14d550" + "60c8dfc7e6e4c2b4ec8edaaa6bc36eca50a6feef", + "2ebb73d04e6e5361e20629e3ad119b33db5163ed91fd9a8aec4b774898784b6822a08992" + "118a8fe6013094bad0be1e9bf01b27c069e4335bff7e0abd28a10443818f6b825e9cef1", + "04001710eb0167e8c948d381e3a75aa1e036b70c414f69260aab434ee20b6724dd7393fc" + "487b5b3822e5e8065b06d0785a4a7be7193352d5b9eee66755ba106ba6e40f98a08c730a" + "0c06006f98fc25a641a7c6e67fedd37aaad77a9102be3e1e7d32dcb4c68029e623a42f4c" + "a7d1ea725bfd475756b80e18904107c460fc03b9bd68aa46f9dfbd60618670c4d9a68a32" + "87", + "1861e2a356a6fa8096418cde7fa17f1b893a7b63810f3fd807a82bf4c745aafdc4963eb7" + "a0ad0488a776e915b64d2b684e46d244703eb63b77835167908f2d6b06a2ed7b53f0717", + "046688e12d26cd96bb05d3f418d8ec34f4426f594acd2bfd8e9abd79405e612d60737007" + "440424bc4f546c54b7402d11880f68edd996f49277b729450f7dda5d05986b014b5244f", + "341a80e74f3a69b966ef81ae95dbdd60ed5a0446416653c4df431ff7c4b4272665a52337" + "9d76725e9fbe196018f0e747100084c823b95d7c7b1785d3623e52e9adbe773b81b49d3"}, + {NID_sect571r1, NID_sha384, + "0e640581f573068d8ebd2899a6aaeed0bf987ee11e22b05d25e88e9a1c3451f45ee3800d" + "976f4603c18a041febef07a01086832a6f7ecd5d498d52e796a9d90758c87c36f4a5b704" + "a39c456aaee2d5278183d5815d619c193da9fbc427d701bab0874bded848cb4bb066f56e" + "119b637c78aeb6eaa387c41bec6cdd4bf7b2061a", + "1bfab717d6f6e16d9bc6e89d2ffac7cbe0f808cc8ca2eb515af7ecce5f3b230303775710" + "a21bd25c2cc4566bb53c78c78e3774a9f306c751cc6e149929e45eef60f56c1d2388c6d", + "0406935c3e8b58f7bacd045e745054c227687800ddd86d6e0c8b1e426f4df0e4b71feede" + "fa9172c43becebbeee8ee382a75396fc5f29ef3d2cc55f8afa9232038609b5034513b222" + "cf0138463efe3b32259dd90b759062f848deda84f2bcc0d687c410f1ad2dd745517c96c3" + "451432b1e490902208cabb68bb872ec493eabdf1f3b07595d23a54c53e512777abffb7fc" + "65", + "00025bd48e2dbbf1ed8bd9c1514303dc503dd0799c7815870b902249cd1d7368380853d3" + "6f7fdefad973700ded1e0d66950181b0aeac73eb622c880571315f09504ed26e28e85a1", + "1b9d6ccb19b208022d3a579a66957429682517e84a71be42fd571fbbd0247609d0b5b338" + "08189efb52d21e6421d3b08821d82900577791b1c54e239b0d908bfbcdc060cfedaefb2", + "3356320389ffde577496c5b46a0de6d53005f5ae3489c0d292c5f460a3b7adc5bd204bc5" + "0a3bcc8538e0f8319c79b9024b065223b7ed9b0f211c5c224d363f5bdfe04db97f99e19"}, + {NID_sect571r1, NID_sha384, + "51a2a560ba226d629127ce1ea7e812219ceaddd23561256331458c9f11fe73990f21d0dc" + "d974a3773040090cfdc8e0f01692d951a0cbb60f8448a016c67abf46a9c150466ac77e65" + "6ea827b0ea7d1e77ea32071ba8314fc8a2edf69008f498bd1c18061d7d00f3340a7e2cd7" + "3e9766862378d8702e804a1870b442beb2d0aa14", + "00cc53bf7f1cad5e3dede4b4f4b082831604c92dd2b147869cdf1107259305b1d5035964" + "7f9f3d7d4e1e608865c65dc7c9ea46bc324dcb8423b554dc369d621743cbfb592b70eb5", + "04020187d7de90652caf1210703ef65cada3b88f978e14ce6055847be7127602ba7a5391" + "cef0fc9b009134105da7b09b49beb7ba2f961b84e6d66bd818ea99ec106c6e8428b17394" + "a60197aef36e47b571ccc0b41f948392d6061060063137d8c3b999ae507b76132fea1563" + "775be555616cb5816b9b19e42b34f9673aab833f4beb9d1a0848a4bbf2f6f44cd0398274" + "8c", + "08acd0f8f9660d21d62f391112908be73a4342767328d3375a8806dffd2598b6d77fcb47" + "93e69f2390389a78c2b11866cf0f03666a60ad088d2c77bbc49fff6efc5b7283d02bf36", + "1004bfb78dc0e4fc0f2624bec6893d717a476fc76bb5c1d94c1dbf157aab5d1dc80f98a3" + "aeabaac94d9cf9e26e1dd172f5d8fcd5b2d48cb3b7f0a4863813357b5cf8eae84478e44", + "30b1c8857977181d12c53cc2efc53a427801cde2890cf2ea2c99c6958b6869d0ac78ee2c" + "846c241362c885835af49c47d20c30f3cbfab27d9cfeaa6d858694bab059229e30bf845"}, + {NID_sect571r1, NID_sha384, + "90eeecff0a2e37df318c441df220dfea013ef29774ee92a56b213e13a798858f31e52b6c" + "cb7599e7314f12b48a89884b113c1ba0526a54f3e9a33c940944319e084bff320cf5f391" + "c02c731c4c4f8b05afa273374a1705d6c85337782ba7d36b9c00767180cad6422c11c581" + "672ff631fa4c49d41b02481568ec87ea97220400", + "2b009530cb9d586e35dd8951ccb686833afb7a37ec253e547e85b253ba999f0f186b6d4b" + "a41091615fe57678e9801b4dc94fa683511da25637b2acc9fe60936be15af16234c4ee7", + "0405913ab6a2287d946b5b6d1e6c3d64117e085da7cf6388e333cf58d22494f4b067c684" + "dca770ddbcea5db73f048b296e9c17284a8912b3cb722d9eaa17b6b1209311fb8e8757cb" + "f50007124ac6c48ac56746563db247bcfe6b20215ccc5cfb1d43c923daa07d429c8f0513" + "bd1ff1180ef0f7927fa23fda1af25d20b22c935c426f9ccb402c358b57b812516c431117" + "79", + "27a80a19e9c320b57146845fcf97d6debcffbcae877c33c62aec62a3351ef40bd90ef4c2" + "ca39f9e51086931d82eec4ee7870365cb14e9c54ae735069801ef12c571bf1c7c1cf6e6", + "1de22c8984c593a0948164e6cc8631489133972482f6a7fb1c3c13f97e4584604930d369" + "224850a1d24f267f41bc6fca04ad79326aef61f0d429e0e1b9e9d9686ee10f2bc52b104", + "085c6b34687081e280a180cd0c4ffe95cebbb0ad6d3b20a7341e467812f88c23973701cb" + "f3cd2bcd2811415d0bf0cd9df229a88754f4cb0c225a2d11f57369a29edfd7b04639055"}, + {NID_sect571r1, NID_sha384, + "d3740cad41e2e365d80ae81da97fdf06d8b6c278b505e34cb683fb55ddc5189da5435409" + "14c0accd405dbf0063f6222885fda4b316dad4a83fd03e8d7b7e936f87fc0a5b095defc8" + "a4b22fa97f00b394e672d5efd3e0a230c7e44dfeebda88641143502a400ed62e2a51f956" + "1e5d652a43d616f16699e875deb9610c77de8e1c", + "2cc2d0d7189cc8fb3565a039aee7633ddc00ff427cafad32fd2010b10fe249c9724d9178" + "5e7080203626038109158e3a61a3970aa3e51688aa7f5184b22f63af63f80d3540ec023", + "0405fe95a030efac2e5d9522680da58606e3e7544a317a3f24d726b69238367d30fa5868" + "64d8c143c3695126ce8dffbc7e7fb789f956dbf53aabbc38af988ce50f1fb30294ea3e2d" + "480193d1e745d82781ae5c3b3d2233e502959d6862fa7987c6416584504f65639ca76557" + "8378b75d3844df179cefdeccff3c4c43aeb8865063e176fd43a27c93e329f8d4f6fd5bad" + "21", + "02df3920fe4d328315353ff11b0264045248b32f48e860dc59d931ad65f39e97e3a683c7" + "b5c64b21c3fa50a9685fa11f49df9b14ddaae03eb02754b01e03f60fc6aef1e5d6d7d3c", + "1b91c4217b1580cfab56812c16bb5aefc1534ee8d049aa2e1d52a5bfc11519ff89f0d36e" + "a2bfdfce8b5d3cf1527dcf700c0208a70595e9ebe4feafd0eb597e05df54212fd6eca3e", + "21ce52440267fb16e713eabb8bf2d502c81939799f9d09cf48a50dce5da999f3b457dcd7" + "3c212d5d070056b1f373b07ad06e90d96febb7f8cdb4c423ef946f0799c038a3ee68ff4"}, + {NID_sect571r1, NID_sha384, + "5eb53b5f92121396c5ff30e0c92da48db4fbbdbf27297f9bc82614ab78f7fd863e34096c" + "615a02e349d8bc7ae4b0700130704bedf32756b5ee6af10da1cd717d624fadc57a9aa6db" + "4a6c5d6254c0e8f8c3c0d4d03c264eeeafd52cac2c1968d9d85b106167a49d0ccdbefb20" + "bdc10a2555f8149203af52853169a02db94e5e2a", + "3d8936c00c131e38c6566d2464c4e207c878070bbf681695a6cd98cab2c6e80fe98cda80" + "c66a5cf584e90a071144dda59c07b8fc7bb42464dbee5b6f739b0f2ee5fdff7e5a4e7cf", + "0400fc3a8a320e816305772bd5116cec2795d58633a9f490be8a1a360f21d2aebed6038c" + "a4a5081288b6bdb1066307c26897ce38c24f8ccc98a63e371ff6b54f6016917b430c267a" + "f7069719c868d8fd25a38a7338811904e3330a7b2289a8384bf24f6dad5312160f0093bf" + "556fa061ca5e52d6676a8f1a3e4656740c82d3cddf0ac4f903ea885d42610bf1b45d9e57" + "a1", + "050da632cd7aa58340adeb20389a2cb9897b8ec944c47e7177da65d9386a9dec5d63be7b" + "b2d0f5b4943932e1fd7d87d5d7a80bc50a63dfd101a6a28005c894c6a6fa4c652dc519c", + "0e6152b9050127bf306662f6beee81d024492b91efe87a56e70596a4a72cd02dd2f10b97" + "0c9a69909f85bf4783dcd3c32505d7c148166ab43b503ab098b6d95ef09a7932359f60e", + "1f7d68d53ba161b61eeb17139eeae1587a6bd148e288c1f73a6bfb3a0d1f6dd8f9cdc27f" + "a9e8c7a681410500c097ad01f320303421f1239b4a9c4d5446562b5b3cb2fc45a6fe239"}, + {NID_sect571r1, NID_sha384, + "5aced64f702a57ed7fabd045a40c967a485d2a70b0a5e82561d5141ef329469b2da5964a" + "34df203a980111a77adca376c643b9030aa74516f054648c1534d912ea66582adf3c655d" + "bd71ca55e47412315df5e2893e43b2e2dfe6e4dedf426f11846ebef34a99f5615460ce04" + "75f7bc54b4a4fd99e83c982097c3136ac6188a5c", + "3dc7de970bce28a943d7599f2a9010fc99435b93bc4ba884d42503ac2941aa63fd07db34" + "bcbb1127d56d6a4e277d6ca32051ea3467e376f74f98c3999d2f276b282ef8a28cf0cbc", + "0402066a50b9f961a58620f473fcf7d5eb635da47f4ce362f428669ea578d50d1c1513c1" + "45adcc03ba98f3d67bb422141c73e2f94ef9559ccfdc0be20eb206d3d114a5db302bd075" + "1f04437e655bd255e7f013d197210bed70c5c1a6cc1daccb96145c9c438c8a44b4074629" + "830d8df9914166c9378b33040d71918cdd0f47fa64b7c69f43eee0f34414b8f64882f90a" + "c3", + "3b2e20f4e258b7f0cf69a460fece9b4794a12a37c0f8e7aa6f4f51dbfaf508f6f1e0160a" + "b4388891efb09f0ca1f73178f0e8598750c9debd3ff856cb3a2872762ef9e16487a9513", + "2f265aa99ff806ffeacbf9ef7be575ce5300d3cfd4225b1835774ee075d7e530c9fdcd68" + "1584223f84a497119b4eb1fe34cd31d654c2fa262d7549acc251cece9530b26cfa3ab35", + "2c05ce4b35544bd1f20a68eae7f3483e0a0628dbb53f0466166257f69a7a110d2838a76d" + "204e7a955a8977508e65f2ef6d7deee13e4e2ec0f2b9a8b4bedc26b3502813b0334a1b0"}, + {NID_sect571r1, NID_sha384, + "43c24aea343d4e088bea25be69a332c631275c36677093e057de69cc83a4c5e70ab270e5" + "a8930f55846f1a22ec10e03007dcf0942c6761e89c65c6a4f032eed97dc3a2c7f7ed1e82" + "552fe48828a132ba16c41f6bd82a49335428a24fa1679522000e6a1d12c646e0e4b4c584" + "398577ea9493bb334fa3cee8bfdb6c2e66f46436", + "2de6ee12eefa7a4a736484b19b42a513dfc059a060976edc3b0aa4b50e98d72df6506fed" + "0499ff8480986748e938289e54a5e86c0c29733a9bcf5985aa63d8a2b57933a04a8e8e0", + "040073fa1b62d469f2991d54f1472b60da87ba51be0a9dea361d417b91a4a75373695e9f" + "27b3c672322315d7b566b1f22b96c54adce3e958080fa8a02836955f6264dad3a87fd11f" + "060452c0a07ff65fff741c96851657a5afc7eeca239622e1260414ed736a04e487157c52" + "da98a7845bcf6f311e0f2e59bb92248b6d47dcb93da6f7e0af644b7aec7603a01950293d" + "8c", + "1c87653066057636f9a98a7c69a84e103df480a92739abc4d5ba53891591e3aaaef6ef3e" + "f5e89213abbf71af9c84d3b30898580e782f557a03694446492afb05ab801d7dd631c8c", + "086d539546c61e82d74319f0180411172acaf08b5296dc6435d4ed7bd50cf23d3a071deb" + "3be01f74408e64ad244f069cd41227ba127145df5a357489f944b61606ec75e8377db81", + "0a34d9975fbd601614d04aa41506b03fc15189ee8102c0431272d691a322f3e77bcfd19d" + "8bddd19b307012b6c6349f5ecf88b5a69e83588b0e18096117f207304b38c16a9a8592b"}, + {NID_sect571r1, NID_sha384, + "e89210565959d93b483659e62cf41f0a0147ea23890c2f1a694c377a826165e363860e4b" + "084016cda878a43eb68465f81f397ecd50087a25215ce7c4ededa3552218071fa3acd7ae" + "380655fc8fa884998209ffc8a2c26f1ca19dfcfee455dad35a4e72caecd8da47eb9ee21b" + "889162f5d3032724abfd1a31e68612e18bfa9006", + "05468f0df2c9854f5f655743e79c750fd8812db28b096d97207bae7f5aafc6b6090c9c63" + "6ead9e0fde32a1ff8d539b53813733ca812b41b58ff85a941abe4f128d59fdf9847baa4", + "0406591750fbc104f82c213fe88aa620e8a960fd6140598e2e6282e0d5c5ecffd09d22ed" + "94166109561a7f4f694e171189056d8b300b54c8134485500effc7123aaa23862e897912" + "42005bf8ec10a9ac6a92c54e7fb2135e2aa4f84da571d33227bde0aa2e6c153207488223" + "5f3103d9a51e80b7a9a19067f35047ddc52462db7c634c291e8fc5eb2154f6913bd0846b" + "88", + "242308c430de514be1b9084a7e6c96894cd5615a7c71ea22316e539986e9702080ff6cee" + "f2980144c55d9749830c20c9ea90b93dfcdd28fd862b6a15748dbb3d982e4a275129c75", + "361e1b7a0f981bcc65480b370c5e09b1c2e2a67cf41646f6a3d829f663c0911589223740" + "0317601fcee78a04269411d267dad3e8fc6f069529fbdf0bcf9b5f13c9c6de1681e8b0a", + "2620c29f86cbf698cca5f79de364ae131345a802c0cccfaefdd7375dcc9ba6ccac91f709" + "43eb606506e51e2ced50491eb8f48769810b6dc178d56702838f1c2f0930f2a9e4f1db6"}, + {NID_sect571r1, NID_sha384, + "48629ec97f56273599cd9903f8a84ac2ba74275b40e1e42fa47649568babe05cf63c8417" + "d828251acc2eec525b56dc9082b68d51b0c2bbaa7389fbee15d058cf482993b2bedc5a91" + "01f1afdc79989a812478245d191550109fc17215679553c508c84e3d4cfdea377088d09e" + "b214e6f92410facee4790beeecafe72b2e3ed192", + "3d3c6a7ab9450c94aa3b8a1ffb678e5b647af24cbfd66ee3944e6f264f406295b8037674" + "71fc67936fdfed1714b4b8761a07eec86543b7c4da6bd2fcb33fa8cda4077737f398e18", + "04042d536f1b15a22f4ba80066798d8d1c2704988eeb9423319c1850a1ae6bba4097307b" + "515640ed3112e93f1f6ae67c60a4b0d2b6634aa7038a60b52b2b447fd1651857b71711c9" + "75079eb18cc7493a1c7f2f9b621969b9ce9ee37fc0701f6cf56f5d5dc6efb13a384517a3" + "87f253aae1e93bb0a919b0c22e4d6cbc79b449b268a068b7eb2853324b96715d75b8c26f" + "27", + "23ce112d60a2f7c29d77d64acd9f587e0eb75ef8e739b8548e154681efc24243594eef5e" + "33d845b1e4e89bac56f2e9586e042e0fff38bcf79c73fc9aa5fc908261df5cd2c6cb821", + "3a770df8a2bc35e122c1bd551c38400be47f2499ff57618ccd01e14a2e35e87a67b0e40f" + "9a10eee7efcc3d37b474f2840fb8c24a9adf93734680ae6b25818369c8608a2f8f338f1", + "0728a4eae5f5638a51579e224a24ecd4c997001bb8681e23a7476fbf78b4fab84497000f" + "20c1e67e8a4e4116498bcee49ff00026009af31c1037172188aacd264fde8db15c97167"}, + {NID_sect571r1, NID_sha384, + "aa3a9fe467b1ca638dd0622c9ea235a418b39b2e15ad81fee01b6892b240783d8db3c72e" + "16c13df8016dac6addbfb85232158325bd7432fca3b8bf5db3abd0b4c5ccd0999609dc42" + "199ca4680692a0805cdd68108bcb493a558ab507cec0a2782a9e976928985352edb2abc0" + "c07078b59d2fd86fda7fc76cfe573181d934c46c", + "01ce010ea8e6e1a0c26ab22eb90f0700dc73b232c429d36371e68e429792afb7223f1032" + "7708bcff779ea55fb5f22ad87aa054e84d10f5450f1bc9a89279062ea2173f55ab0f76c", + "0404b2b5acef5921e691f10ade81b91ba8e68e73b33a2494cf4ca6617707861f334eb07c" + "a96dfd681dd63f78102f8d792d66102117b739d477e431d9a3efd79bfcc18cea156db58a" + "0e07e421337d4cb7a98cf9c9c6fdf9fa242904d9906d8a6759ef64a82cbf923b2a57073e" + "a0eabd14aa4295bec84d50a1722fecad3e5f064bd3171facdfff45b170e49f185a3c193f" + "2a", + "326b62065b7c779dc398ee03a8332cfb940b0f24a7d3de4a90323d9e390ad3fb1f0036ab" + "f6f525d8d88ab6641302d10db447b78780d366f32ce36ae571e323124b21984c48aea7d", + "3d2b207b428829ed5100a92f7276e16978e374c734834b0d627cddf6aff5cab72dafefc6" + "c038a91426e35ee0f2c1acc11c55a34a89874100b89588aba7b02e19490e66eb49ef6ed", + "3259fef5c2a0779ae408b26e6c7d581fa973156cdb07c329dde0c12b6c498e7a94577719" + "865b7fcc0db078ba72a27bf338ec6b8aa41c15963538c329c55dee67833faebe3b643ad"}, + {NID_sect571r1, NID_sha384, + "6c3937014361799f1461f652841b5137eb0dcaf01dd293298d002f27e9a770b9e1a30367" + "e35c04603881f0c814cf8ecfbe1619cc49cd516b1d60d27de37ed52a5e1cc300e2face46" + "69f308ebe6747255a3d386f16778e494a7cdd10b45171b2bfcdabd91b805bf24857708c1" + "b75e368edb2874321324f83a19154d3a1578c767", + "1e7410d012aeef02b3723346d24ebafd684c99087ecccaea1cf3735d52c4c81dda41812c" + "09f1e874dc964d858ca240a19963d5dc89451f5dd6764426ae41cb23f19cbfdca0fc562", + "040400a3bb3ff07a339ff98f7c45fe032cf42c0e25de8dee2934ce42dfb0c9894f4fce27" + "fef299b41beb8579270efc7b01c0663c3f72d7bdd9f6ff5186eca9c42d15faaef8784211" + "a5006fe998f7a0db06efed050d178865a2b7de6ca7c789cedff7f2158a5e07ac1d335ec0" + "dbd213fc9465399028fad8b7f4d2cd16fb8ceae4d3d53abefd2b4037efd7f7245296bfdf" + "9d", + "2bb0fb9c428e42482d5dbdb35157ad0fa713fe732dac8604c0194e3f9738fac5cf3874bd" + "863718712a3da45b7c4612c8685465ecaec0930d9fec32ab25818d2f25fad580009b698", + "1062386d3e77043298eb88be46bd4e6f33c83a7358926b30ca06a6b7139815f6e1630f73" + "d352a2cb9bc0619d08a89d4bde1636c74b6580543ed743073eec2ae0037bea2b3c9228e", + "1ceef759d804ff7de526559636d0bc7930c096c7b959f04f8fec5d7e96129fba14c8341b" + "0ed84a64c6cce7cd5b058fab7f44dcf3e714544c9b6f9c1d46ce512870deb51856e9dec"}, + {NID_sect571r1, NID_sha384, + "12fea55ffda15db902aa6a4388b9807c89c193cbf75b5d2a4c95206fa43dedc45974c800" + "79933451bdc5b3ea015ed3ca2c54156dc61afb1bc82adefed1491302a48b9d3d2f474ab4" + "5343c611677d360515b93fb36da7a1c1b2341c9cce185c881c0beef33d43967134a190c0" + "9034ae3261f3295b79aebd3fe123616f73cf2089", + "2139839ce38eb879d266065dde5e5ea227244323b330e3ad5a0bc690f3c210f794cf18f0" + "d730693887548bfbc434f48ee10ed34cb41d52172b06e448df938170a5e17311cab8e88", + "0402ecf46b90616b534ea25cc9993942fd7576a1c4f2f443d3b1f56d4490bf0af669c9eb" + "9d110fe2a65609875e1a924bc4b9ed2ed2315047bbaeadaa1029b38a7a87dd8751d4128e" + "8002aec3a2f2557c7152a4907af68aa39485274f20927b2da70823440fbd09cbc308d46e" + "30bd6b705f615b7074fe5421ca36b4aa53861983eceae9a69649495952e75b0f060b5d26" + "e4", + "2e3412b61eb23d33ca2910dc25dd14c04d2c8b403d8077a72b9511d71ee9da6d7e1db093" + "b92287f8fb00aea0576f6712c56d80cc4e3554e0faa9c7d911e3d17682de831bf649bd9", + "06a3075efec81a86175cd1dc2bfe82e83aff1db640184a6a3ed7a0dcdef51aa0be0005c5" + "4ac05f9b65af265af7f2ec3d1d7c137184b0d695d701ff1aed194faf2efa98ce6c5e502", + "237d7ff92480fa7d6d1f5a0564a2608afe5e95ce2c29dd88853d1ad9d4d2beb8d1f0423e" + "db883faadd592394f52048bf2dc26d2dc19279477ed86621c7a5960ee3c3e2d345fda29"}, + {NID_sect571r1, NID_sha384, + "c8395546842ddb545d8ea3db4efe970453dcb06025ac3b7a25aa5ef62070f3021b9a1fea" + "91ff7055b6c398073e7886a6f71afe53c82c47b71377dfe291972503bbeb25bd477bf0e7" + "adc8a5d3f8b34ccd0080d61e121214e1b29802b711cdd8a6bb2275a2395c467ec2c15719" + "52992e448d736d8bd70ee629c75b5e32b8323a00", + "274f70fe69e4dbb55c5d404e39f5196335047113087f8711f2f67f2be4964e4fbcb86568" + "0758df1c401cd677b0971654b7a6aeb7bee0d6d80ac0de14d4f46f356b2d5545c185aa6", + "0402b2321e0a1df083919628dd8b4c318b9ded8a3e660ce5585b21e46843228b4d32da76" + "5a3776c181654aad0ce90724bf85b01b051d236342b48d41a1dbda1e9904d659c98a039a" + "97020227182fcf099d46d9882c0b0f26b0595a2a3166248898df2f3fd27c78e7c0b8b59e" + "f0ed6745660c0dea1acb567f9d943928864dd1e94f8eb6b5b8473c0c91485643189cf679" + "d2", + "2f234066c936625fca10dd080cbbb1228c4d2054cbdeafc8a0a248c0d22807fc92c661b4" + "f69586ecf9469bc4c22895cc73ecf492fb2165a12b027194d409677e7185de24f6870a3", + "3a48daa8e379b3b2f377049a4d462530c9ea67019752f4af4b4192b02d6e028386dcb9ef" + "95c8019e90e09dfc8dff5e6f6812df491906ced39befedf16caef614d8c174e7ea95fc1", + "33f18738cb26d88c8c048c58a210c7be70c71636dc62c022df1bd7747d8c67bfcf5ff2fb" + "3990ed35becf6c77755ac62aed480df55efea578671bd8d50536a10e2c0192bd42d78e2"}, + {NID_sect571r1, NID_sha512, + "10d2e00ae57176c79cdfc746c0c887abe799ee445b151b008e3d9f81eb69be40298ddf37" + "b5c45a9b6e5ff83785d8c140cf11e6a4c3879a2845796872363da24b10f1f8d9cc48f8af" + "20681dceb60dd62095d6d3b1779a4a805de3d74e38983b24c0748618e2f92ef7cac257ff" + "4bd1f41113f2891eb13c47930e69ddbe91f270fb", + "03e1b03ffca4399d5b439fac8f87a5cb06930f00d304193d7daf83d5947d0c1e293f74ae" + "f8e56849f16147133c37a6b3d1b1883e5d61d6b871ea036c5291d9a74541f28878cb986", + "0403b236fc135d849d50140fdaae1045e6ae35ef61091e98f5059b30eb16acdd0deb2bc0" + "d3544bc3a666e0014e50030134fe5466a9e4d3911ed580e28851f3747c0010888e819d3d" + "1f03a8b6627a587d289032bd76374d16771188d7ff281c39542c8977f6872fa932e5daa1" + "4e13792dea9ffe8e9f68d6b525ec99b81a5a60cfb0590cc6f297cfff8d7ba1a8bb81fe2e" + "16", + "2e56a94cfbbcd293e242f0c2a2e9df289a9480e6ba52e0f00fa19bcf2a7769bd155e6b79" + "ddbd6a8646b0e69c8baea27f8034a18796e8eb4fe6e0e2358c383521d9375d2b6b437f9", + "2eb1c5c1fc93cf3c8babed12c031cf1504e094174fd335104cbe4a2abd210b5a14b1c3a4" + "55579f1ed0517c31822340e4dd3c1f967e1b4b9d071a1072afc1a199f8c548cd449a634", + "22f97bb48641235826cf4e597fa8de849402d6bd6114ad2d7fbcf53a08247e5ee921f1bd" + "5994dffee36eedff5592bb93b8bb148214da3b7baebffbd96b4f86c55b3f6bbac142442"}, + {NID_sect571r1, NID_sha512, + "b61a0849a28672cb536fcf61ea2eb389d02ff7a09aa391744cae6597bd56703c40c50ca2" + "dee5f7ee796acfd47322f03d8dbe4d99dc8eec588b4e5467f123075b2d74b2a0b0bbfd3a" + "c5487a905fad6d6ac1421c2e564c0cf15e1f0f10bc31c249b7b46edd2462a55f85560d99" + "bde9d5b06b97817d1dbe0a67c701d6e6e7878272", + "2e09ffd8b434bb7f67d1d3ccf482164f1653c6e4ec64dec2517aa21b7a93b2b21ea1eebb" + "54734882f29303e489f02e3b741a87287e2dcdf3858eb6d2ec668f8b5b26f442ce513a2", + "04036f1be8738dd7dae4486b86a08fe90424f3673e76b10e739442e15f3bfafaf841842a" + "c98e490521b7e7bb94c127529f6ec6a42cc6f06fc80606f1210fe020ff508148f93301c9" + "d304d39666ebe99fe214336ad440d776c88eb916f2f4a3433548b87d2aebed840b424d15" + "c8341b4a0a657bf6a234d4fe78631c8e07ac1f4dc7474cd6b4545d536b7b17c160db4562" + "d9", + "378e7801566d7b77db7a474717ab2195b02957cc264a9449d4126a7cc574728ed5a4769a" + "bd5dde987ca66cfe3d45b5fc52ffd266acb8a8bb3fcb4b60f7febbf48aebe33bd3efbdd", + "3d8105f87fe3166046c08e80a28acc98a80b8b7a729623053c2a9e80afd06756edfe09bd" + "cf3035f6829ede041b745955d219dc5d30ddd8b37f6ba0f6d2857504cdc68a1ed812a10", + "34db9998dc53527114518a7ce3783d674ca8cced823fa05e2942e7a0a20b3cc583dcd930" + "c43f9b93079c5ee18a1f5a66e7c3527c18610f9b47a4da7e245ef803e0662e4d2ad721c"}, + {NID_sect571r1, NID_sha512, + "ba6be551bc60653192401ed8ff9e1acd9013d8811a7a1389528bf07438366f5772cd7aed" + "ad010c19c47622cec03a4d35b8003b39ed901b720629ab59de55a03c1ca50a62987f8da1" + "59e356245df58d5ae1936e65f3cd3acbe03ad1d0fcab4aaf2a7a947549ae776772201efb" + "c6fab1aebfa1d99994d4f43dc28f39c0f279b992", + "2a69bc1df069c6e89722521a63675f318252be629e7558f3716917998e660ac960b0b750" + "562846fe6c12ef492951e51e224754bab84a6eacd4147a5f26ae85ee4381bb14ec2a8c7", + "0404685c0358ca31883cdfd7d609afa8b1e47540a97f473e0ebe98b0aaaab9418877aeea" + "d3a26fb01a4725fda20e7223a4fe7de0df6891c0812555b8b146918d3b80edd11615d95b" + "77067c92736447946c7577965b613e18950d813a4df049a6000895f9dac34d73ea46a83c" + "6a4e7c83831af0d33026825664c44090953521175b9da2a7ac563a0fc5e13c85d34aaf49" + "f2", + "1700d9ac00a987ff3a1d0be4290979317fe60f4f8ce1e0e72a026fc89e28c0070b76ada1" + "4f7a1a66ac2e8aef17eec18b568ada4fd59c05414e55356fc17d9e5079e6cabfc1f220d", + "23a279662efec48f6cf8c7334862525b52ac37a9b03da6a063da2849f878015632427834" + "34fca02fa23e32249666ddc6f596e07750ed21de303f4f10de56f1d37101cb0826bb8bf", + "3b449467b150cba0d7c2b44280c5ac452f1217384ce121c979625d313394f6cef501b819" + "80a02567ca55da2bc313dc0754b5256b08d8e3b63ea033253b205cc5dcb014574b8e9a0"}, + {NID_sect571r1, NID_sha512, + "295720a79ac8201f40a66b06ae5d970afb15f36582897eed25cd92edcd00f70ac8e31c55" + "6eed4375ea044c2e8b227a8e02c0a3e996c9272d52ac7b3ad43b80f217295dddc84b177c" + "f1e800ad08bf7fdd021fb2f49b54162092f8d628679c4ee335abbc90c027264c8b288c6e" + "16eca3172eaa297ba50626b00fe0a0ad3a9dbeeb", + "0d11ed1b78b22b3420df4ddc4acc7c2286d9569dd6dd88e0fa3ecae69bcced68bb81bbb4" + "ca6e9b54e67856e7fdf39155aa27aecb9cc827ccb9cdcf9ac633561b27d8eebfc261aee", + "0401868a1335058a69e3ce24ea4e6e8dc25851777bb28d3a5da67b741ec9c46e26f2d2ae" + "70a48c3e4feabb3b15b3c3ebd561f667ef3b95a587621de6073b9c8a904755566c5f7a3b" + "4206365a03c3f3066eca1af17bbbd08cd52e89f8095075b415cd4b82f3364cbff008fe36" + "42fe71e8a8c634ad0e5d9979251e6cedd42cb97c2203f743210051f5ee1b70c861d2a72c" + "00", + "075e49d2ff6f2aa8b44fad90446474ee0e72323a3c39e731b6c2b075cce0cb9d193bc335" + "6f8fdae0e0143603a57028836ee6451cab101a6eb550042cb41b5c4233d3ad3e87034d1", + "207a8eed0b87efe65ec558a0ccbecb13b9215e176abd93c1a4803fcae713927ece70ec6c" + "41c621357d78a13a950958871a52621f1de7ab74befd964a0e8f4820b84af3e0811bc67", + "2f02017714f54089652e02af36ac5165e44ac4a83747c805a9e003fde4bdb29561dcead2" + "c76b02c195074396a2dcc1b93a256c721716f8eeda8dae443c3eea446118fec3cebc4dc"}, + {NID_sect571r1, NID_sha512, + "a9cff41c6dfdc4a12f31dc375a5455950077ae323d0b7a3d9a8dde73b76e9d7b94ddf9c8" + "8ae8e6c262d704052ac47681fc35adfc56c904baaa6e146eb653984369d76a85596cb744" + "941aa7b558c945ff2e81bd5ef7f00ecb4f43af23b4cea3bd4ba7b1899f1868a0c0ecfc62" + "ccb1d588955597ffbbaf34cab2838efc2b866669", + "2c36ef754b5bd065e9eadde684750acc52795be80f54dd3d7a7d743d968a18f7e404bd71" + "f8a76eb0395f396df5a7c2ff7e0ab6de35df34282fda6ee01fe5b9b68ecb4e378dbe32e", + "0404805e1a23b6eadcf91647b40903bc1fd3b9921861c942fc24d2c03d0544e7c01f004c" + "aeed04b5c4ebbce366a098a878c322cbebe7910bfb0f91b284ac1aef344152fc5831669b" + "7904f589ddb4da482ba1e9a59241b1dfbc7e9b9b69e8f69f8e90460ad58fdecc48a56842" + "ea6aa0537abec0a605ebfb713e588685a98f62e05a7d52082bfd57e3d68fb7851b37ec55" + "67", + "2f2002bdde0c0b0fd92e96abe76c0858e42fd7d94a181c711fc6753572539e18effa8155" + "cde7b1e9ceab2394f9eba874b7ea257d7c308c8ac08500f4944af5f33057650608db8fe", + "27f9109799bced42730faecdeea68259383a45033c6d5dc8d87adf994b46beb34177e013" + "700b13f1253cf756a8866218e9c8adc180f3c242c56b3de28405b36940d53c2aab24f1a", + "20a762ffb2f5a88b0e1356964fb558b555c424946109d16c7548f41a33cfe41da1f48327" + "6a27b188faf948a56670716ddf3b187570c9f514869c4492d7773d6ce453a075f9bc64f"}, + {NID_sect571r1, NID_sha512, + "efa6c582d7fcf5e431aa89b3b00180c0e78efd7ccb0384d90b80e59a115a13e55001d951" + "528c42860132531c9b8ab29dda7a657c53c2ce96fd85549f6f1810e121eb89961295335e" + "aa0e40532d85814a4206e6fffdf9bff76599da9b2e71a22ed572910b0e3bae38ad72c704" + "2579f106739a8628dea5a745168bd918736e488a", + "19ffee50be5496507e3ef5c40ee88a49625e46d1dd1686a52b09ad4a8e3ee9ef364f953b" + "fcd97c52104eecb6138067192997cd4ebadaccb73c7b2560879289a46353a756b73cc43", + "04077dca410e722009ef11b37742c2c003ab3015d0ca0328a70d9d41aae04cb64f7746f1" + "c348b08458eb3bb1788f9ffe7d0570a9b689a9b7aca43e05400bace7630d598f5b484d13" + "c407291f74cddd9ff69470cf0d92afaaddcc4c8c274d4a7a64fd94292ddc8bf080606795" + "376bb725ab4d32c72ef77dff34cfedd34aff2f463d635bfcd7e1fd002d84383dc5bf8d5d" + "23", + "2ea37750fc3bbdeec100694068d55f92fdf35bff9ed49251c4b8bbfb2dec2dd4446999af" + "8848e05c7b819aeb1864430ab4e8c1d684e1cf78947a71b04d5ab8ad61cc7e3e4e24205", + "12ff1852eaff37fee997531039adb1fb2f9b4f4199670c022e8534625fff1fa93390ee9b" + "c7204ad2ba3efc2233260943f1d2381a3cc025b78c6d1f660a7bd6f42e5ed3c123055a9", + "1b4d8abb28ef1a9d77066921ed50eba64b8433cf00c66b8467269a4a914f568cdb86c766" + "a7a6a52437c5d98cfc9a2130dfaba20f3c2001f31bba7071647d51fb9fbd5fc67ee120f"}, + {NID_sect571r1, NID_sha512, + "211acebfaf13bba33a9dd16722ec53baab92a140127d61372cbf1850f2fc894e942e25d7" + "80778235f880743953d04eca7a9205602e388172aec2abf35412b483490751f93b51239b" + "6701cb0aab14e5179b0d7f55d8586358381dd83e3e436bf69a6820317d1701750cb1fea1" + "293467ba589eec5f5779c2dbf2a9b8f28c4dc239", + "3129e96fd28c4198cc5242c1e3531a3979fae643d527044e98d7721aa56b5b4b45dfddfa" + "17a4115e10a2b4f46d92f81cbdd7e86e588a4c6d8c2b3a83f54cebcee1d1dd33e85d81a", + "04073a92abcc991e3f89d82c47fa0fec48e3e7c4d97e2525f8dc2d24da39f616af4a5a80" + "4d2603703f6db7cc9324c5b56a21009373f6605f561c8503394e7746e51273b5722ffbc2" + "3d00684c842f03a53a60cce087f4fcdbf23b7a28c48b6b6544f583342a65d97dd87037c6" + "fef176a1f00513713468273494a5be683b68c5e75bc08995fde763bb6f965da1acb7e894" + "f1", + "0165e52640fcaf8cbdbfe73cb8058c53045e7670aafb2def28d2c9eceb5ed1634b5339cc" + "47ba981eb6eb03ba714c7717e9ed5acc15c8f304702a0409bd4508015d4626cfc5484b1", + "27dcdf16b7156a7a05a752da28b5bd6b233e8a7c16eb7f9030f29c4352e6508f8424d1b5" + "ba789dac4152ac4812ff7975cce69908371a81a4d7d9dd70a8dabebdc4e3af27234f0d0", + "32a654a31f09a9803e502a1440c2bcf122780f4f47aa37e15991d9a548583fdca4880080" + "4712816b212cd3c657e6bd4cb7443a0288592541473c5086e1277250612c21346538374"}, + {NID_sect571r1, NID_sha512, + "ee592e20e0a45c18089c2e41460e65a7d22ed9714379f095d43a308bdd383128aaa6fb24" + "e9d35fd28fc95c5b792ad75c980d2cdf0f460ac60b12c5919d3cb28dac4d488196be6c2d" + "fe462b1b0ce59f8501692255840f5215c0fd8b74b1996a267a5e3b22d2841cf0a0b6315e" + "f4ec7180f1c8494f4c07d5869c01fa2711739efc", + "3d723d2697cd07dd8444f992f2ab4a063db334034c25ea9be99fd7a1f495e3a644e5ea03" + "3a41264e0d24a911e55741d0cab80a0bd678eaec2bd1e60424d4491eb86d664900d907e", + "0400c7a229b5fb9fc774c1b6250f3bba2f0972d1aada7080641c014d012db0637a0656a4" + "3024ec0ea25ff70012646dc19eeb1033aebcc96a001ba876b2f5def6e198b8d4a53f7c7f" + "4a009228a68eafaac214fdfa19923a0c19629de31ac0967c9d02c53dbf221f9affb735d3" + "bad732f381f1ca414d70920231a78f742254d895a33ffab492f8e6094a542e77962a324b" + "a4", + "3b3724a5933353bb9ff5f742f59385e780caa517a963590b7fc89882bed95cf90ca6365c" + "e8b882f2d96e56bd866a5c437733b681308c570c51ec893ea95fede66c7aaf4561173f7", + "2a487c1fc29426e8e85f0a35c177cd168a444959b2f5cd4519b9edd52af3ea829cfe964a" + "c2b59198af8e2d3859ebdf9885ebf57bdf5767da1611d3958de286f91ef397230d65599", + "10fc01efcb22b982f992efb71887bc79c3f32a9088bc2011c269924cee0f47c36452399d" + "499f2933587081b872e9fd2191c20cd5cd94927839228ebcf22cf7acdf4608a2fa66310"}, + {NID_sect571r1, NID_sha512, + "fffca41927debbd53455821441d9115db99fb31bfc69752a382f57bc7abe021f148346ee" + "29e17512c64b4918ab2391d12d6e5643bee6b5682885dc28177b292e23a37ff99b359b9c" + "f7578432af56e0ad1028a6cce7428980654c145af8daf09addbb3be11228d3c742defca9" + "d3b1667f48c63091fe3307ecf72667b02e008f24", + "1999ab45d66cd1d3a0fe6aa43bf5ef1e2a67637d53674f6fbbfb9b582be91fc42a12cdca" + "d94b50b0fc7ac55030de24a0b99fbc4314fa743ef4b5198bcc5f54d8b669fbed78e2e91", + "0400cbf3b0bb4a2e6c225aa922bea3b233da4661df5da7e0a1cd343a9b6655ee87fc60cd" + "763dee21eaa2b81c4dd5af6f4fadc3ceea643b37a6b17a6501e1b9b689fb0c4716911c1f" + "10014b5a9ae025f09066fffa6797ddf95f27eeade06b8ca5be5738f770362d5213c46ecf" + "ca58e3c60cb2bae1f8ab1bf0577c80b4fdad02819fc174cafb33df64fc0ec79713f7b252" + "09", + "253b533d3ad1c7095363e3fc80cb32471061e44dab3f9ae0ea6252f6ef169cee8badd3ec" + "cb77096ae9224f89baeee7e183058579680661655fb689419e36a61e8573de5ecb4cd09", + "3ba94f7682fb61de725a35caf1d4d799c4b05a1d1c44eb1c251dd8efab6b7d713c3fb917" + "776902a1bb202f9226558f4c1e75964349717e6dff938d0befea07a9ca1bbd429dd6318", + "226f43be8e24062180c726b5cb721cc04ffd3acd82183925523ff9e8631aecbec2c224d5" + "a291bb225f0da726d256aa822ee7cc2c7d69df3f2a5beb21132d91bea22e4c5db900cec"}, + {NID_sect571r1, NID_sha512, + "a2f71619ea04f7057e6943c2cece8594b341ec3b96c3915d924f94ba13fd7aaeed41ffa0" + "e842ade414784f1ef825fcf2dbcf7bd8263b802def45f94de596aec0c121fc06558c7bb0" + "6b9f27a9bf56c42090b5dc344e82b69c4f528d33be166764a593483f6fda0cf56e6000ff" + "363ba220f5ea0ea2c3191615c7ae3bb4fa575324", + "2ce1cae0716205330d730e6bc6dbfb6b951dc83ee3b4a7dae75d057e32e8a46e22be75b5" + "f09135452b29c34dfe81a9be2e8dcd243fbd946a0ed14a832a7802e20cfe1abfd3d6e4b", + "04075971399fa621ce535144ec1d57f544d798a0a59207166c3d657e5a80ac00e8f5b643" + "448e3546064d68ae624aaabf36face3016561a248256ff9131950ab8b04710551e12222d" + "0c0224a50f321647f47de3db4fbe1bf1e3a3dce8a834312779f66037315e3326721e3fd6" + "3d4d6ef92b7ba1fa9aeb70f92e2a6701458ac8da49ac386491f2306adcd8dd781fe75e99" + "e1", + "0ad95aa69cf9f40e13f8a72ed6d93388168abc8001670ee4d95fb4b726b1f958205ab2f4" + "58df8bb9ccf2405680d0e6951abbb922cc11d47cfded93c0efdb70caf0c54e7ae96d7e5", + "09ce019161bf29eeaf323933045f59d2efc372904ba50c4a6602b8305234a851d95f06a5" + "b56193ad5d28488102ec25e3f421a5f5c4626b435b423d612e6ab60e0a4fe5d4952e2c5", + "04f7b7ac787b361c2bdfa767da9c22152e402184a7ac133f651fdcd928239215dc917401" + "122a6d41e78299b4235e085399e594465b7f8dbfaae9bf302d83470b4295ea06bb9bd1e"}, + {NID_sect571r1, NID_sha512, + "b60415a831eca2cf60c79a334ef2f327a76d290846ee588d5d33d0a826bb0c7ec3e11dbb" + "384a7f89c8d180425dfae7463e0ea6497d2eec1dde112f1c1efccb532a2e2b66a28e2d36" + "d4252a4c3b12850d465fe21bddc441b92e6a7b0f67744f7f6e7812a0603211a26518b311" + "a5b190ed890ad852bed4f6ed13377cab3eebedf4", + "2c9d0fcfcee7e75c3245ba955ae04188b1033c55ec9c821d8de7685276bda3e9a93c3ae1" + "b003e5ea722913e7b169d67b1aa2dc8cd42adbd9368672a3f81a6817bf3e5529dcb0c8b", + "04019cba4c8ddadb596d7303331f2a22461849ebfbc78ea69277f72dcfe23d08397025ff" + "6691c61ed9958d68a9c5dd8a32048a89a2553afb9077ec43358763756b1473ab2cd8f25b" + "530319eeaa78444b7cc5d8cff4e9199ddd2c6dc7bd935a1be1d8b1c657dd5ac49bc92b0c" + "d91304ef44ddb7ecac05518301bfa0e533402043533f99549621e31dcc282a52186478df" + "2b", + "385e12170ed0b23c9c65ff7edd413145fd343dd841e85c498fae5f36e577641688999028" + "17d4dc39127010faa1da68000a511ac69f80708be5afe1631432f3bab7aaec2bdeb11b4", + "231ef400c6a3a0c7b26ba1b92341b72e138ca62d04ea2172854631c40c48081a18a57e9f" + "055748245d3e83d10d21af39935b0e50c9c86956ac46c1ea03ac4ae023d84b24f830973", + "24d37d67afafb0676cd7b5da2960cabfc804b0b3244b5e6739f8fe43d0841693d28c61b8" + "e76181f8aa24940d76fc5ea8ef3a95f72f67303e1ed85ad6e83cd2c44fd0e0f3f2f44f4"}, + {NID_sect571r1, NID_sha512, + "5d15a08226cc74cf495be681b795d0bde26b19f29aca1a8c6ef77d50271ebdcb4e5fa2df" + "23961fe11620b1c6580183f6ebdceb2c09516c8127be576496fb71449bbbf0a9d3d1c48a" + "25024619b97c3e0d8b165897db96ae9758d13ac28441d7cbfb75b23cb423e0002046358b" + "b6d64779974a5995dfe54b398f95f7d64fc52d96", + "10c057bbaa44ef0f565edc288bfe66d4f6acd8686899359bca418ba89fb690429489a37b" + "d3c6c9f3a8714b2ca225868c6a45fee360e378a676f7ea39321790f32a4b005b81dce43", + "04043b1e7d7b2aee3563813a6692f0b4b61ba82b801697c3e23724a2fbab2af80a2c56be" + "55af41def0a90cbfce7a45ec61629906055a8b2a5013740e96859e580c444ae9f0ddf73a" + "fe06742f13244f1bf156d321eab2c3095ca548c3182c405187c3de2fbcb01d0e16e1fef2" + "46012c87d4d32378629a75b694572ec8583ae0cc813ac64f10bb05a9e52e4805590482f2" + "89", + "2b8076102a6448bd4c4e192e93cdb96ea9a6c7f6753818267ee9e67644df1a4a6c9ff64b" + "be9f64904648cc640fb7f0cce69f9e02878ee950b91ad559a9ec0ae15b676d933f1620f", + "1ad97f4997037adfe306f3859d550f9fd89bce8b566e657d5742feb17466b6b8d507d581" + "0a8cbba44d671b043ddb557df084bf5d1de74ef8bbd6a93690459fc16a17b80dd6c0f28", + "3262ef6e4175e7afe095d18157f67b3d12564d54954e9964e991c31bcfe1dee7e86b3549" + "1ce818400cc0f83b819f478f2f2c2d21c6c7a6be43938841559e09bce70b0d61fe51245"}, + {NID_sect571r1, NID_sha512, + "9eca4bd88200baf61b901fca53dc1f1e7e3f83b94d58a6cc6a2adbc9b1a35fe3f8ec6178" + "7c76ed9a0d696167cd4fe46e1a0883fda564666131753c576a720125e0b712db1da02780" + "67cb899bdb14eec08737e864544663abb1d62f34a2114be07e8e3cf56e2d17099299ce6b" + "6d83b1a34e6153d7c6a32a72c7b1bf4583fcbcf7", + "2c182df7976ea93d996f3ba5d2221f3cb755cc7847bc3fe9e022fa4285046f5bfb426baf" + "a3580beea206de36f87593ae561b4b74a03fcd61fbd0e8d6fd5668f2148819a88a650aa", + "0406004b26a184ed710a5fb67e9d042f7fb9c8f5584b1f70a91b0b3be41c3fd2cd1a537e" + "962fdac8756df33f80fce2bb1bc7241d325bfc36dbaef7cf625918d589b6352fa7447189" + "10036a29b04a494abfe809d956c3cd6f84ea51a7fa28cb39a52f16137a13f72f0726a84f" + "6ae53ae24f5b468733f4cbfa0ce5bbbc1cc7b348fb996d33a45ff656a6a7557619f598a6" + "b7", + "2ab349232bcb4f4816b26bd0049e130fffc90ca0b9308edd50fb9055358a87fe798d0014" + "0b0ae01ed8b1f6bb9bfb726b253c3d4949ce9eecaa6c7fa84d1ef812669fa929f26be0f", + "0bbf2f9765b12742224ba7d064358c0305fb63e9b54a831e302a4546aa02cace798d82a1" + "88d2f536d78544c1571f481289d6ec69d117648026490e781f1eb9fca59bee05234ba7e", + "27e07ee0a1a99c90753cdc8c0291da25a82c116e62ec58b93f91086ac1cc039b35ce7d8b" + "53cdaa92a5ade65a7684b6e7ab79873dce33dcd467c39d0c764ee390b7fb25ca18912c3"}, + {NID_sect571r1, NID_sha512, + "707450bd84141f3b61beb12ffa5ae89d812dd11badcdf6a88a2d50fc70e23f6d822ff447" + "7047abc58cdfa28f97ad7f4911ae0773c04ebed1f51bb2308cf6e5712c4aaed461edd698" + "7fdd1796aab70198276b601241f6a14225dce575830ff60f935fd9f567d1d210652e4710" + "922fa793da78c8fdc30c273cb08365c9fc887f50", + "2d3a65bbe133cc98cf0eb56ee1362195968b4eab960a1d55d8b762f1361fc21348d6f275" + "d4bea1de7158fb97c995e20b92a9c887a3e332d154667ad167acc632eb88a0ead6113a2", + "04034355b54d00c3df7c2762ee2982cb777491aaf78e550c4d2ff5d5a893416eb3517671" + "dbe522b8c553fd71edfe0306cd7628324f4f748091fc5d84ad8af33b896985674649a6f4" + "e507e322a04eb600a3faf3e045959f1e9f798e1c965ced40fd4c0383c0d4e79a96bf693a" + "91d7662780990d0c9dfca77a9bc0e13551d2ab35af8a153fa34ea903961fe66996ca053b" + "64", + "0a59ac1240bcefc52456486ce23b780cc92c8b89314b8442a6898c373bd0adc3725e3eba" + "c580546d1ec82ebfb2e04c608441d962d759ab5f5af1596c6623487e1347537a3c35bf4", + "0c47ef55d93ac36cee537160bbe39c3d4504184188533edfe589a5ab6e5a3e06ef413aa4" + "8710d304f0b2bc380fd69a34aa0b8e2e9466fd8a131cb056dffe4b809a59fd83e594483", + "2d8de1e8e2a52dd1be08435cda69e673b328573edeb1767849536e6f2d5fc8f18f7bfde9" + "36d8c32ecbfa97bf976133d65641320ca1c41e81c388fd6088884bbd89274b1976470fc"}, + {NID_sect571r1, NID_sha512, + "d5ce9d59391cdc47ef942dd2a818d024ae3917deea8a5a4214e4db6a0c5e6b0936f3e632" + "fdb68a3f0006e05c44b7232013e1da5f877cd197f44fd6f60c1fd2378995e9a47534948c" + "5a09e33750f07a7165072ab38095373b07a50bc1391eb6b650ee13acd63d0352e7d9c316" + "95ea1ec6323f9b5f57b426ace56aa7fdbf419be0", + "2a920e8dc928acdd56e3655b2340d4371c793e66f67405fb7a90f31e9c4ef466cc44331d" + "1d2fe3ff7391d2576dc6640772166ef8c154a5ff1808f5dab2f03061070ec8b3f786c36", + "0405edc0fb974314e21ad40d73524d5620b7279084e3ecb9e58b06340ae53d2383efd206" + "b8b1eb3dd60c38f593efc05e2ba5fb8989472bac7db60fcada2d18d4108ab36e8c20cc71" + "0d00444cf65175f6bbaf647739cfd8407e7036fc6cc6208ccb9d776eb13e13b377136c68" + "3e108775d85b6bc5638926432a17344de965d45e042a0a8e0b63c7fc3a36fc15cf718f3b" + "af", + "35a0215892d0c52ece29559ebfa061011da8d597af6b3d1ee988ea4819be194c79a42681" + "476140738b1b5dc191485bd20c96c282ab38ddbc3987343155366b6a5d1ce7053efcd83", + "1a69a9a51f6b0dc196b2a8db2e8bf61764d4c65b038f43b5ed6b5dc2673971c32928606f" + "92b7caafb4dab3cd61ee724bba71a0d5c788cde4b96ef6b453f2a69126dafc20dbc7c82", + "13b5463636b8462cd9f479de8d114e29e7011489bcb9735ffe9ca0707a07df3c0aba0504" + "3eab387bfedd9fe982fbf04968f2be200e9e052cb4b02223b8579913d713acf94e7dc80"}, + /* binary KATs from X9.62 */ + {NID_X9_62_c2tnb191v1, NID_sha1, + "616263", /* "abc" */ + "340562e1dda332f9d2aec168249b5696ee39d0ed4d03760f", + "045de37e756bd55d72e3768cb396ffeb962614dea4ce28a2e755c0e0e02f5fb132caf416" + "ef85b229bbb8e1352003125ba1", + "3eeace72b4919d991738d521879f787cb590aff8189d2b69", + "038e5a11fb55e4c65471dcd4998452b1e02d8af7099bb930", + "0c9a08c34468c244b4e5d6b21b3c68362807416020328b6e"}, + {NID_X9_62_c2tnb239v1, NID_sha1, + "616263", /* "abc" */ + "151a30a6d843db3b25063c5108255cc4448ec0f4d426d4ec884502229c96", + "045894609ccecf9a92533f630de713a958e96c97ccb8f5abb5a688a238deed6dc2d9d0c9" + "4ebfb7d526ba6a61764175b99cb6011e2047f9f067293f57f5", + "18d114bdf47e2913463e50375dc92784a14934a124f83d28caf97c5d8aab", + "03210d71ef6c10157c0d1053dff93e8b085f1e9bc22401f7a24798a63c00", + "1c8c4343a8ecbf7c4d4e48f7d76d5658bc027c77086ec8b10097deb307d6"} +# endif /* OPENSSL_NO_EC2M */ +}; +#endif /* ECDSATEST_CAVS_H */ From nic.tuv at gmail.com Tue Feb 26 16:05:18 2019 From: nic.tuv at gmail.com (nic.tuv at gmail.com) Date: Tue, 26 Feb 2019 16:05:18 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551197118.097995.29191.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 555b2593f7e0d3376043aa5f70d657d29e2f8ad8 (commit) from 4045f688377df30bbb750696a1ef8c8ab2162393 (commit) - Log ----------------------------------------------------------------- commit 555b2593f7e0d3376043aa5f70d657d29e2f8ad8 Author: Billy Brumley Date: Sat Feb 23 10:12:35 2019 +0200 [test] modernize ecdsatest and extend ECDSA sign KATs (cherry picked from commit 1a31d8017ee7e8df0eca76fee601b826699c9ac1) Reviewed-by: Nicola Tuveri Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8314) ----------------------------------------------------------------------- Summary of changes: test/ecdsatest.c | 538 ++- test/ecdsatest.h | 10214 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 10448 insertions(+), 304 deletions(-) create mode 100644 test/ecdsatest.h diff --git a/test/ecdsatest.c b/test/ecdsatest.c index 531562e..ad2f404 100644 --- a/test/ecdsatest.c +++ b/test/ecdsatest.c @@ -8,32 +8,27 @@ * https://www.openssl.org/source/license.html */ -#include -#include -#include - #include /* To see if OPENSSL_NO_EC is defined */ #include "testutil.h" #ifndef OPENSSL_NO_EC -# include -# include # include # include # include -# ifndef OPENSSL_NO_ENGINE -# include -# endif -# include -# include # include +# include "internal/nelem.h" +# include "ecdsatest.h" /* functions to change the RAND_METHOD */ static int fbytes(unsigned char *buf, int num); static RAND_METHOD fake_rand; static const RAND_METHOD *old_rand; +static int use_fake = 0; +static const char *numbers[2]; +static size_t crv_len = 0; +static EC_builtin_curve *curves = NULL; static int change_rand(void) { @@ -57,25 +52,10 @@ static int restore_rand(void) return 1; } -static int fbytes_counter = 0, use_fake = 0; -static const char *numbers[8] = { - "651056770906015076056810763456358567190100156695615665659", - "6140507067065001063065065565667405560006161556565665656654", - "8763001015071075675010661307616710783570106710677817767166" - "71676178726717", - "7000000175690566466555057817571571075705015757757057795755" - "55657156756655", - "1275552191113212300012030439187146164646146646466749494799", - "1542725565216523985789236956265265265235675811949404040041", - "1456427555219115346513212300075341203043918714616464614664" - "64667494947990", - "1712787255652165239672857892369562652652652356758119494040" - "40041670216363" -}; - static int fbytes(unsigned char *buf, int num) { int ret = 0; + static int fbytes_counter = 0; BIGNUM *tmp = NULL; if (use_fake == 0) @@ -83,316 +63,254 @@ static int fbytes(unsigned char *buf, int num) use_fake = 0; - if (fbytes_counter >= 8) - return 0; - if (!TEST_ptr(tmp = BN_new())) - return 0; - if (!TEST_true(BN_dec2bn(&tmp, numbers[fbytes_counter]))) { - BN_free(tmp); - return 0; - } - fbytes_counter++; - if (TEST_int_eq(BN_num_bytes(tmp), num) - && TEST_true(BN_bn2bin(tmp, buf))) - ret = 1; + if (!TEST_ptr(tmp = BN_new()) + || !TEST_int_lt(fbytes_counter, OSSL_NELEM(numbers)) + || !TEST_true(BN_hex2bn(&tmp, numbers[fbytes_counter])) + /* tmp might need leading zeros so pad it out */ + || !TEST_int_le(BN_num_bytes(tmp), num) + || !TEST_true(BN_bn2binpad(tmp, buf, num))) + goto err; + + fbytes_counter = (fbytes_counter + 1) % OSSL_NELEM(numbers); + ret = 1; + err: BN_free(tmp); return ret; } -/* some tests from the X9.62 draft */ -static int x9_62_test_internal(int nid, const char *r_in, const char *s_in) +/*- + * This function hijacks the RNG to feed it the chosen ECDSA key and nonce. + * The ECDSA KATs are from: + * - the X9.62 draft (4) + * - NIST CAVP (720) + * + * It uses the low-level ECDSA_sign_setup instead of EVP to control the RNG. + * NB: This is not how applications should use ECDSA; this is only for testing. + * + * Tests the library can successfully: + * - generate public keys that matches those KATs + * - create ECDSA signatures that match those KATs + * - accept those signatures as valid + */ +static int x9_62_tests(int n) { - int ret = 0; - const char message[] = "abc"; - unsigned char digest[SHA_DIGEST_LENGTH]; + int nid, md_nid, ret = 0; + const char *r_in = NULL, *s_in = NULL, *tbs = NULL; + unsigned char *pbuf = NULL, *qbuf = NULL, *message = NULL; + unsigned char digest[EVP_MAX_MD_SIZE]; unsigned int dgst_len = 0; - EVP_MD_CTX *md_ctx; + long q_len, msg_len = 0; + size_t p_len; + EVP_MD_CTX *mctx = NULL; EC_KEY *key = NULL; ECDSA_SIG *signature = NULL; BIGNUM *r = NULL, *s = NULL; BIGNUM *kinv = NULL, *rp = NULL; - const BIGNUM *sig_r, *sig_s; - - if (!TEST_ptr(md_ctx = EVP_MD_CTX_new())) - goto x962_int_err; - - /* get the message digest */ - if (!TEST_true(EVP_DigestInit(md_ctx, EVP_sha1())) - || !TEST_true(EVP_DigestUpdate(md_ctx, (const void *)message, 3)) - || !TEST_true(EVP_DigestFinal(md_ctx, digest, &dgst_len))) - goto x962_int_err; - - TEST_info("testing %s", OBJ_nid2sn(nid)); - - /* create the key */ - if (!TEST_ptr(key = EC_KEY_new_by_curve_name(nid))) - goto x962_int_err; + const BIGNUM *sig_r = NULL, *sig_s = NULL; + + nid = ecdsa_cavs_kats[n].nid; + md_nid = ecdsa_cavs_kats[n].md_nid; + r_in = ecdsa_cavs_kats[n].r; + s_in = ecdsa_cavs_kats[n].s; + tbs = ecdsa_cavs_kats[n].msg; + numbers[0] = ecdsa_cavs_kats[n].d; + numbers[1] = ecdsa_cavs_kats[n].k; + + TEST_info("ECDSA KATs for curve %s", OBJ_nid2sn(nid)); + + if (!TEST_ptr(mctx = EVP_MD_CTX_new()) + /* get the message digest */ + || !TEST_ptr(message = OPENSSL_hexstr2buf(tbs, &msg_len)) + || !TEST_true(EVP_DigestInit_ex(mctx, EVP_get_digestbynid(md_nid), NULL)) + || !TEST_true(EVP_DigestUpdate(mctx, message, msg_len)) + || !TEST_true(EVP_DigestFinal_ex(mctx, digest, &dgst_len)) + /* create the key */ + || !TEST_ptr(key = EC_KEY_new_by_curve_name(nid)) + /* load KAT variables */ + || !TEST_ptr(r = BN_new()) + || !TEST_ptr(s = BN_new()) + || !TEST_true(BN_hex2bn(&r, r_in)) + || !TEST_true(BN_hex2bn(&s, s_in)) + /* swap the RNG source */ + || !TEST_true(change_rand())) + goto err; + + /* public key must match KAT */ use_fake = 1; - if (!TEST_true(EC_KEY_generate_key(key))) - goto x962_int_err; - - /* create the signature */ + if (!TEST_true(EC_KEY_generate_key(key)) + || !TEST_true(p_len = EC_KEY_key2buf(key, POINT_CONVERSION_UNCOMPRESSED, + &pbuf, NULL)) + || !TEST_ptr(qbuf = OPENSSL_hexstr2buf(ecdsa_cavs_kats[n].Q, &q_len)) + || !TEST_int_eq(q_len, p_len) + || !TEST_mem_eq(qbuf, q_len, pbuf, p_len)) + goto err; + + /* create the signature via ECDSA_sign_setup to avoid use of ECDSA nonces */ use_fake = 1; - /* Use ECDSA_sign_setup to avoid use of ECDSA nonces */ - if (!TEST_true(ECDSA_sign_setup(key, NULL, &kinv, &rp))) - goto x962_int_err; - if (!TEST_ptr(signature = - ECDSA_do_sign_ex(digest, SHA_DIGEST_LENGTH, kinv, rp, key))) - goto x962_int_err; + if (!TEST_true(ECDSA_sign_setup(key, NULL, &kinv, &rp)) + || !TEST_ptr(signature = ECDSA_do_sign_ex(digest, dgst_len, + kinv, rp, key)) + /* verify the signature */ + || !TEST_int_eq(ECDSA_do_verify(digest, dgst_len, signature, key), 1)) + goto err; /* compare the created signature with the expected signature */ - if (!TEST_ptr(r = BN_new()) || !TEST_ptr(s = BN_new())) - goto x962_int_err; - if (!TEST_true(BN_dec2bn(&r, r_in)) || !TEST_true(BN_dec2bn(&s, s_in))) - goto x962_int_err; ECDSA_SIG_get0(signature, &sig_r, &sig_s); if (!TEST_BN_eq(sig_r, r) - || !TEST_BN_eq(sig_s, s)) - goto x962_int_err; - - /* verify the signature */ - if (!TEST_int_eq(ECDSA_do_verify(digest, SHA_DIGEST_LENGTH, - signature, key), 1)) - goto x962_int_err; + || !TEST_BN_eq(sig_s, s)) + goto err; ret = 1; - x962_int_err: + err: + /* restore the RNG source */ + if (!TEST_true(restore_rand())) + ret = 0; + + OPENSSL_free(message); + OPENSSL_free(pbuf); + OPENSSL_free(qbuf); EC_KEY_free(key); ECDSA_SIG_free(signature); BN_free(r); BN_free(s); - EVP_MD_CTX_free(md_ctx); + EVP_MD_CTX_free(mctx); BN_clear_free(kinv); BN_clear_free(rp); return ret; } -static int x9_62_tests(void) -{ - int ret = 0; - - /* set own rand method */ - if (!change_rand()) - goto x962_err; - - if (!TEST_true(x9_62_test_internal(NID_X9_62_prime192v1, - "3342403536405981729393488334694600415596881826869351677613", - "5735822328888155254683894997897571951568553642892029982342"))) - goto x962_err; - if (!TEST_true(x9_62_test_internal(NID_X9_62_prime239v1, - "3086361431751678114926225473006680188549593787585317781474" - "62058306432176", - "3238135532097973577080787768312505059318910517550078427819" - "78505179448783"))) - goto x962_err; - -# ifndef OPENSSL_NO_EC2M - if (!TEST_true(x9_62_test_internal(NID_X9_62_c2tnb191v1, - "87194383164871543355722284926904419997237591535066528048", - "308992691965804947361541664549085895292153777025772063598"))) - goto x962_err; - if (!TEST_true(x9_62_test_internal(NID_X9_62_c2tnb239v1, - "2159633321041961198501834003903461262881815148684178964245" - "5876922391552", - "1970303740007316867383349976549972270528498040721988191026" - "49413465737174"))) - goto x962_err; -# endif - ret = 1; - - x962_err: - if (!TEST_true(restore_rand())) - ret = 0; - return ret; -} - -static int test_builtin(void) +/*- + * Positive and negative ECDSA testing through EVP interface: + * - EVP_DigestSign (this is the one-shot version) + * - EVP_DigestVerify + * + * Tests the library can successfully: + * - create a key + * - create a signature + * - accept that signature + * - reject that signature with a different public key + * - reject that signature if its length is not correct + * - reject that signature after modifying the message + * - accept that signature after un-modifying the message + * - reject that signature after modifying the signature + * - accept that signature after un-modifying the signature + */ +static int test_builtin(int n) { - EC_builtin_curve *curves = NULL; - size_t crv_len = 0, n = 0; - EC_KEY *eckey = NULL, *wrong_eckey = NULL; - EC_GROUP *group; - ECDSA_SIG *ecdsa_sig = NULL, *modified_sig = NULL; - unsigned char digest[SHA512_DIGEST_LENGTH]; - unsigned char wrong_digest[SHA512_DIGEST_LENGTH]; - unsigned char *signature = NULL; - const unsigned char *sig_ptr; - unsigned char *sig_ptr2; - unsigned char *raw_buf = NULL; - const BIGNUM *sig_r, *sig_s; - BIGNUM *modified_r = NULL, *modified_s = NULL; - BIGNUM *unmodified_r = NULL, *unmodified_s = NULL; - unsigned int sig_len, order, r_len, s_len, bn_len, buf_len; + EC_KEY *eckey_neg = NULL, *eckey = NULL; + unsigned char dirt, offset, tbs[128]; + unsigned char *sig = NULL; + EVP_PKEY *pkey_neg = NULL, *pkey = NULL; + EVP_MD_CTX *mctx = NULL; + size_t sig_len; int nid, ret = 0; - /* fill digest values with some random data */ - if (!TEST_true(RAND_bytes(digest, SHA512_DIGEST_LENGTH)) - || !TEST_true(RAND_bytes(wrong_digest, SHA512_DIGEST_LENGTH))) - goto builtin_err; + nid = curves[n].nid; - /* create and verify a ecdsa signature with every available curve */ - /* get a list of all internal curves */ - crv_len = EC_get_builtin_curves(NULL, 0); - if (!TEST_ptr(curves = OPENSSL_malloc(sizeof(*curves) * crv_len)) - || !TEST_true(EC_get_builtin_curves(curves, crv_len))) - goto builtin_err; - - /* now create and verify a signature for every curve */ - for (n = 0; n < crv_len; n++) { - unsigned char dirt, offset; - - nid = curves[n].nid; - if (nid == NID_ipsec4 || nid == NID_ipsec3) - continue; - /* create new ecdsa key (== EC_KEY) */ - if (!TEST_ptr(eckey = EC_KEY_new()) - || !TEST_ptr(group = EC_GROUP_new_by_curve_name(nid)) - || !TEST_true(EC_KEY_set_group(eckey, group))) - goto builtin_err; - EC_GROUP_free(group); - order = EC_GROUP_order_bits(EC_KEY_get0_group(eckey)); - - TEST_info("testing %s", OBJ_nid2sn(nid)); - - /* create key */ - if (!TEST_true(EC_KEY_generate_key(eckey))) - goto builtin_err; - /* create second key */ - if (!TEST_ptr(wrong_eckey = EC_KEY_new()) - || !TEST_ptr(group = EC_GROUP_new_by_curve_name(nid)) - || !TEST_true(EC_KEY_set_group(wrong_eckey, group))) - goto builtin_err; - EC_GROUP_free(group); - if (!TEST_true(EC_KEY_generate_key(wrong_eckey))) - goto builtin_err; - - /* check key */ - if (!TEST_true(EC_KEY_check_key(eckey))) - goto builtin_err; - - /* create signature */ - sig_len = ECDSA_size(eckey); - if (!TEST_ptr(signature = OPENSSL_malloc(sig_len)) - || !TEST_true(ECDSA_sign(0, digest, SHA512_DIGEST_LENGTH, - signature, &sig_len, eckey))) - goto builtin_err; - - /* verify signature */ - if (!TEST_int_eq(ECDSA_verify(0, digest, SHA512_DIGEST_LENGTH, - signature, sig_len, eckey), - 1)) - goto builtin_err; - - /* verify signature with the wrong key */ - if (!TEST_int_ne(ECDSA_verify(0, digest, SHA512_DIGEST_LENGTH, - signature, sig_len, wrong_eckey), - 1)) - goto builtin_err; - - /* wrong digest */ - if (!TEST_int_ne(ECDSA_verify(0, wrong_digest, SHA512_DIGEST_LENGTH, - signature, sig_len, eckey), - 1)) - goto builtin_err; - - /* wrong length */ - if (!TEST_int_ne(ECDSA_verify(0, digest, SHA512_DIGEST_LENGTH, - signature, sig_len - 1, eckey), - 1)) - goto builtin_err; - - /* - * Modify a single byte of the signature: to ensure we don't garble - * the ASN1 structure, we read the raw signature and modify a byte in - * one of the bignums directly. - */ - sig_ptr = signature; - if (!TEST_ptr(ecdsa_sig = d2i_ECDSA_SIG(NULL, &sig_ptr, sig_len))) - goto builtin_err; - - ECDSA_SIG_get0(ecdsa_sig, &sig_r, &sig_s); - - /* Store the two BIGNUMs in raw_buf. */ - r_len = BN_num_bytes(sig_r); - s_len = BN_num_bytes(sig_s); - bn_len = (order + 7) / 8; - if (!TEST_false(r_len > bn_len) - || !TEST_false(s_len > bn_len)) - goto builtin_err; - buf_len = 2 * bn_len; - if (!TEST_ptr(raw_buf = OPENSSL_zalloc(buf_len))) - goto builtin_err; - BN_bn2bin(sig_r, raw_buf + bn_len - r_len); - BN_bn2bin(sig_s, raw_buf + buf_len - s_len); - - /* Modify a single byte in the buffer. */ - offset = raw_buf[10] % buf_len; - dirt = raw_buf[11] ? raw_buf[11] : 1; - raw_buf[offset] ^= dirt; - - /* Now read the BIGNUMs back in from raw_buf. */ - if (!TEST_ptr(modified_sig = ECDSA_SIG_new())) - goto builtin_err; - if (!TEST_ptr(modified_r = BN_bin2bn(raw_buf, bn_len, NULL)) - || !TEST_ptr(modified_s = BN_bin2bn(raw_buf + bn_len, - bn_len, NULL)) - || !TEST_true(ECDSA_SIG_set0(modified_sig, - modified_r, modified_s))) { - BN_free(modified_r); - BN_free(modified_s); - goto builtin_err; - } - sig_ptr2 = signature; - sig_len = i2d_ECDSA_SIG(modified_sig, &sig_ptr2); - if (!TEST_false(ECDSA_verify(0, digest, SHA512_DIGEST_LENGTH, - signature, sig_len, eckey))) - goto builtin_err; - - /* Sanity check: undo the modification and verify signature. */ - raw_buf[offset] ^= dirt; - if (!TEST_ptr(unmodified_r = BN_bin2bn(raw_buf, bn_len, NULL)) - || !TEST_ptr(unmodified_s = BN_bin2bn(raw_buf + bn_len, - bn_len, NULL)) - || !TEST_true(ECDSA_SIG_set0(modified_sig, unmodified_r, - unmodified_s))) { - BN_free(unmodified_r); - BN_free(unmodified_s); - goto builtin_err; - } - - sig_ptr2 = signature; - sig_len = i2d_ECDSA_SIG(modified_sig, &sig_ptr2); - if (!TEST_true(ECDSA_verify(0, digest, SHA512_DIGEST_LENGTH, - signature, sig_len, eckey))) - goto builtin_err; - - /* cleanup */ - ERR_clear_error(); - OPENSSL_free(signature); - signature = NULL; - EC_KEY_free(eckey); - eckey = NULL; - EC_KEY_free(wrong_eckey); - wrong_eckey = NULL; - ECDSA_SIG_free(ecdsa_sig); - ecdsa_sig = NULL; - ECDSA_SIG_free(modified_sig); - modified_sig = NULL; - OPENSSL_free(raw_buf); - raw_buf = NULL; + /* skip built-in curves where ord(G) is not prime */ + if (nid == NID_ipsec4 || nid == NID_ipsec3) { + TEST_info("skipped: ECDSA unsupported for curve %s", OBJ_nid2sn(nid)); + return 1; } - ret = 1; - builtin_err: - EC_KEY_free(eckey); - EC_KEY_free(wrong_eckey); - ECDSA_SIG_free(ecdsa_sig); - ECDSA_SIG_free(modified_sig); - OPENSSL_free(signature); - OPENSSL_free(raw_buf); - OPENSSL_free(curves); + TEST_info("testing ECDSA for curve %s", OBJ_nid2sn(nid)); + + if (!TEST_ptr(mctx = EVP_MD_CTX_new()) + /* get some random message data */ + || !TEST_true(RAND_bytes(tbs, sizeof(tbs))) + /* real key */ + || !TEST_ptr(eckey = EC_KEY_new_by_curve_name(nid)) + || !TEST_true(EC_KEY_generate_key(eckey)) + || !TEST_ptr(pkey = EVP_PKEY_new()) + || !TEST_true(EVP_PKEY_assign_EC_KEY(pkey, eckey)) + /* fake key for negative testing */ + || !TEST_ptr(eckey_neg = EC_KEY_new_by_curve_name(nid)) + || !TEST_true(EC_KEY_generate_key(eckey_neg)) + || !TEST_ptr(pkey_neg = EVP_PKEY_new()) + || !TEST_true(EVP_PKEY_assign_EC_KEY(pkey_neg, eckey_neg))) + goto err; + + sig_len = ECDSA_size(eckey); + + if (!TEST_ptr(sig = OPENSSL_malloc(sig_len)) + /* create a signature */ + || !TEST_true(EVP_DigestSignInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_true(EVP_DigestSign(mctx, sig, &sig_len, tbs, sizeof(tbs))) + || !TEST_int_le(sig_len, ECDSA_size(eckey)) + /* negative test, verify with wrong key, 0 return */ + || !TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey_neg)) + || !TEST_int_eq(EVP_DigestVerify(mctx, sig, sig_len, tbs, sizeof(tbs)), 0) + /* negative test, verify with wrong signature length, -1 return */ + || !TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_int_eq(EVP_DigestVerify(mctx, sig, sig_len - 1, tbs, sizeof(tbs)), -1) + /* positive test, verify with correct key, 1 return */ + || !TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_int_eq(EVP_DigestVerify(mctx, sig, sig_len, tbs, sizeof(tbs)), 1)) + goto err; + + /* muck with the message, test it fails with 0 return */ + tbs[0] ^= 1; + if (!TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_int_eq(EVP_DigestVerify(mctx, sig, sig_len, tbs, sizeof(tbs)), 0)) + goto err; + /* un-muck and test it verifies */ + tbs[0] ^= 1; + if (!TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_int_eq(EVP_DigestVerify(mctx, sig, sig_len, tbs, sizeof(tbs)), 1)) + goto err; + + /*- + * Muck with the ECDSA signature. The DER encoding is one of: + * - 30 LL 02 .. + * - 30 81 LL 02 .. + * + * - Sometimes this mucks with the high level DER sequence wrapper: + * in that case, DER-parsing of the whole signature should fail. + * + * - Sometimes this mucks with the DER-encoding of ECDSA.r: + * in that case, DER-parsing of ECDSA.r should fail. + * + * - Sometimes this mucks with the DER-encoding of ECDSA.s: + * in that case, DER-parsing of ECDSA.s should fail. + * + * - Sometimes this mucks with ECDSA.r: + * in that case, the signature verification should fail. + * + * - Sometimes this mucks with ECDSA.s: + * in that case, the signature verification should fail. + * + * The usual case is changing the integer value of ECDSA.r or ECDSA.s. + * Because the ratio of DER overhead to signature bytes is small. + * So most of the time it will be one of the last two cases. + * + * In any case, EVP_PKEY_verify should not return 1 for valid. + */ + offset = tbs[0] % sig_len; + dirt = tbs[1] ? tbs[1] : 1; + sig[offset] ^= dirt; + if (!TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_int_ne(EVP_DigestVerify(mctx, sig, sig_len, tbs, sizeof(tbs)), 1)) + goto err; + /* un-muck and test it verifies */ + sig[offset] ^= dirt; + if (!TEST_true(EVP_MD_CTX_reset(mctx)) + || !TEST_true(EVP_DigestVerifyInit(mctx, NULL, NULL, NULL, pkey)) + || !TEST_int_eq(EVP_DigestVerify(mctx, sig, sig_len, tbs, sizeof(tbs)), 1)) + goto err; + ret = 1; + err: + EVP_PKEY_free(pkey); + EVP_PKEY_free(pkey_neg); + EVP_MD_CTX_free(mctx); + OPENSSL_free(sig); return ret; } #endif @@ -402,8 +320,20 @@ int setup_tests(void) #ifdef OPENSSL_NO_EC TEST_note("Elliptic curves are disabled."); #else - ADD_TEST(x9_62_tests); - ADD_TEST(test_builtin); + /* get a list of all internal curves */ + crv_len = EC_get_builtin_curves(NULL, 0); + if (!TEST_ptr(curves = OPENSSL_malloc(sizeof(*curves) * crv_len)) + || !TEST_true(EC_get_builtin_curves(curves, crv_len))) + return 0; + ADD_ALL_TESTS(test_builtin, crv_len); + ADD_ALL_TESTS(x9_62_tests, OSSL_NELEM(ecdsa_cavs_kats)); #endif return 1; } + +void cleanup_tests(void) +{ +#ifndef OPENSSL_NO_EC + OPENSSL_free(curves); +#endif +} diff --git a/test/ecdsatest.h b/test/ecdsatest.h new file mode 100644 index 0000000..216e66e --- /dev/null +++ b/test/ecdsatest.h @@ -0,0 +1,10214 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef ECDSATEST_CAVS_H +# define ECDSATEST_CAVS_H + +/*- + * NIST CAVP ECDSA KATs: + * https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/dss/186-3ecdsatestvectors.zip + * + * sha256sum e0d9bee3f760ca3fabb82bd43dd04c13ee64ca9e0b719c6ea64fd52c9f0dd929 + * 720 KATs from the SigGen.txt file. + * + * There are also 4 X9.62 KATs; two for prime fields and two for binary fields. + */ + +typedef struct { + const int nid; /* curve NID */ + const int md_nid; /* hash function NID */ + const char *msg; /* message to sign */ + const char *d; /* ECDSA private key */ + const char *Q; /* ECDSA public key: Q = dG */ + const char *k; /* ECDSA nonce */ + const char *r; /* ECDSA signature (r,s) */ + const char *s; +} ecdsa_cavs_kat_t; + +static const ecdsa_cavs_kat_t ecdsa_cavs_kats[] = { + /* prime KATs from X9.62 */ + {NID_X9_62_prime192v1, NID_sha1, + "616263", /* "abc" */ + "1a8d598fc15bf0fd89030b5cb1111aeb92ae8baf5ea475fb", + "0462b12d60690cdcf330babab6e69763b471f994dd702d16a563bf5ec08069705ffff65e" + "5ca5c0d69716dfcb3474373902", + "fa6de29746bbeb7f8bb1e761f85f7dfb2983169d82fa2f4e", + "885052380ff147b734c330c43d39b2c4a89f29b0f749fead", + "e9ecc78106def82bf1070cf1d4d804c3cb390046951df686"}, + {NID_X9_62_prime239v1, NID_sha1, + "616263", /* "abc" */ + "7ef7c6fabefffdea864206e80b0b08a9331ed93e698561b64ca0f7777f3d", + "045b6dc53bc61a2548ffb0f671472de6c9521a9d2d2534e65abfcbd5fe0c707fd9f1ed2e" + "65f09f6ce0893baf5e8e31e6ae82ea8c3592335be906d38dee", + "656c7196bf87dcc5d1f1020906df2782360d36b2de7a17ece37d503784af", + "2cb7f36803ebb9c427c58d8265f11fc5084747133078fc279de874fbecb0", + "2eeae988104e9c2234a3c2beb1f53bfa5dc11ff36a875d1e3ccb1f7e45cf"}, + /* prime KATs from NIST CAVP */ + {NID_secp224r1, NID_sha224, + "699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc1" + "9495df081c3fc60245b9f25fc9e301b845b3d703a694986e4641ae3c7e5a19e6d6edbf1d" + "61e535f49a8fad5f4ac26397cfec682f161a5fcd32c5e780668b0181a91955157635536a" + "22367308036e2070f544ad4fff3d5122c76fad5d", + "16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615", + "04605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc" + "806ef1df861a42505d0af9ef7c3df3959b8dfc6669", + "d9a5a7328117f48b4b8dd8c17dae722e756b3ff64bd29a527137eec0", + "2fc2cff8cdd4866b1d74e45b07d333af46b7af0888049d0fdbc7b0d6", + "8d9cc4c8ea93e0fd9d6431b9a1fd99b88f281793396321b11dac41eb"}, + {NID_secp224r1, NID_sha224, + "7de42b44db0aa8bfdcdac9add227e8f0cc7ad1d94693beb5e1d325e5f3f85b3bd033fc25" + "e9469a89733a65d1fa641f7e67d668e7c71d736233c4cba20eb83c368c506affe77946b5" + "e2ec693798aecd7ff943cd8fab90affddf5ad5b8d1af332e6c5fe4a2df16837700b2781e" + "08821d4fbdd8373517f5b19f9e63b89cfeeeef6f", + "cf020a1ff36c28511191482ed1e5259c60d383606c581948c3fbe2c5", + "04fa21f85b99d3dc18c6d53351fbcb1e2d029c00fa7d1663a3dd94695ee9e79578f8988b" + "168edff1a8b34a5ed9598cc20acd1f0aed36715d88", + "c780d047454824af98677cf310117e5f9e99627d02414f136aed8e83", + "45145f06b566ec9fd0fee1b6c6551a4535c7a3bbfc0fede45f4f5038", + "7302dff12545b069cf27df49b26e4781270585463656f2834917c3ca"}, + {NID_secp224r1, NID_sha224, + "af0da3adab82784909e2b3dadcecba21eced3c60d7572023dea171044d9a10e8ba67d31b" + "04904541b87fff32a10ccc6580869055fec6216a00320a28899859a6b61faba58a0bc10c" + "2ba07ea16f214c3ddcc9fc5622ad1253b63fe7e95227ae3c9caa9962cffc8b1c4e826003" + "6469d25ab0c8e3643a820b8b3a4d8d43e4b728f9", + "dde6f173fa9f307d206ce46b4f02851ebce9638a989330249fd30b73", + "04fc21a99b060afb0d9dbf3250ea3c4da10be94ce627a65874d8e4a630e8373ab7190890" + "326aac4aacca3eba89e15d1086a05434dd033fd3f3", + "6629366a156840477df4875cfba4f8faa809e394893e1f5525326d07", + "41f8e2b1ae5add7c24da8725a067585a3ad6d5a9ed9580beb226f23a", + "a5d71bff02dce997305dd337128046f36714398f4ef6647599712fae"}, + {NID_secp224r1, NID_sha224, + "cfa56ae89727df6b7266f69d6636bf738f9e4f15f49c42a0123edac4b3743f32ea52389f" + "919ceb90575c4184897773b2f2fc5b3fcb354880f15c93383215d3c2551fcc1b4180a1ac" + "0f69c969bbc306acd115ce3976eff518540f43ad4076dbb5fbad9ce9b3234f1148b8f5e0" + "59192ff480fc4bcbd00d25f4d9f5ed4ba5693b6c", + "aeee9071248f077590ac647794b678ad371f8e0f1e14e9fbff49671e", + "04fad0a34991bbf89982ad9cf89337b4bd2565f84d5bdd004289fc1cc35d8b6764f28c81" + "63a12855a5c266efeb9388df4994b85a8b4f1bd3bc", + "1d35d027cd5a569e25c5768c48ed0c2b127c0f99cb4e52ea094fe689", + "2258184ef9f0fa698735379972ce9adf034af76017668bfcdab978de", + "866fb8e505dea6c909c2c9143ec869d1bac2282cf12366130ff2146c"}, + {NID_secp224r1, NID_sha224, + "c223c8009018321b987a615c3414d2bb15954933569ca989de32d6bf11107bc47a330ab6" + "d88d9b50d106cf5777d1b736b14bc48deda1bc573a9a7dd42cd061860645306dce7a5ba8" + "c60f135a6a21999421ce8c4670fe7287a7e9ea3aa1e0fa82721f33e6e823957fe86e2283" + "c89ef92b13cd0333c4bb70865ae1919bf538ea34", + "29c204b2954e1406a015020f9d6b3d7c00658298feb2d17440b2c1a4", + "040e0fc15e775a75d45f872e5021b554cc0579da19125e1a49299c7630cb64fe462d025a" + "e2a1394746bdbf8251f7ca5a1d6bb13e0edf6b7b09", + "39547c10bb947d69f6c3af701f2528e011a1e80a6d04cc5a37466c02", + "86622c376d326cdf679bcabf8eb034bf49f0c188f3fc3afd0006325d", + "26613d3b33c70e635d7a998f254a5b15d2a3642bf321e8cff08f1e84"}, + {NID_secp224r1, NID_sha224, + "1c27273d95182c74c100d85b5c08f4b26874c2abc87f127f304aedbf52ef6540eba16dd6" + "64ae1e9e30ea1e66ff9cc9ab5a80b5bcbd19dde88a29ff10b50a6abd73388e8071306c68" + "d0c9f6caa26b7e68de29312be959b9f4a5481f5a2ad2070a396ed3de21096541cf58c4a1" + "3308e08867565bf2df9d649357a83cdcf18d2cd9", + "8986a97b24be042a1547642f19678de4e281a68f1e794e343dabb131", + "042c070e68e8478341938f3d5026a1fe01e778cdffbebbdd7a4cd29209cde21c9c7c6590" + "ba300715a7adac278385a5175b6b4ea749c4b6a681", + "509712f9c0f3370f6a09154159975945f0107dd1cee7327c68eaa90b", + "57afda5139b180de96373c3d649700682e37efd56ae182335f081013", + "eb6cd58650cfb26dfdf21de32fa17464a6efc46830eedc16977342e6"}, + {NID_secp224r1, NID_sha224, + "069ae374971627f6b8503f3aa63ab52bcf4f3fcae65b98cdbbf917a5b08a10dc76005671" + "4db279806a8d43485320e6fee0f1e0562e077ee270ace8d3c478d79bcdff9cf8b92fdea6" + "8421d4a276f8e62ae379387ae06b60af9eb3c40bd7a768aeffccdc8a08bc78ca2eca1806" + "1058043a0e441209c5c594842838a4d9d778a053", + "d9aa95e14cb34980cfddadddfa92bde1310acaff249f73ff5b09a974", + "043a0d4b8e5fad1ea1abb8d3fb742cd45cd0b76d136e5bbb33206ad120c90ac83276b2fa" + "3757b0f226cd7360a313bc96fd8329c76a7306cc7d", + "1f1739af68a3cee7c5f09e9e09d6485d9cd64cc4085bc2bc89795aaf", + "09bbdd003532d025d7c3204c00747cd52ecdfbc7ce3dde8ffbea23e1", + "1e745e80948779a5cc8dc5cb193beebb550ec9c2647f4948bf58ba7d"}, + {NID_secp224r1, NID_sha224, + "d0d5ae3e33600aa21c1606caec449eee678c87cb593594be1fbb048cc7cfd076e5cc7132" + "ebe290c4c014e7a517a0d5972759acfa1438d9d2e5d236d19ac92136f6252b7e5bea7588" + "dcba6522b6b18128f003ecab5cb4908832fb5a375cf820f8f0e9ee870653a73dc2282f2d" + "45622a2f0e85cba05c567baf1b9862b79a4b244e", + "380fb6154ad3d2e755a17df1f047f84712d4ec9e47d34d4054ea29a8", + "044772c27cca3348b1801ae87b01cb564c8cf9b81c23cc74468a907927de9d253935b096" + "17a1655c42d385bf48504e06fa386f5fa533a21dcb", + "14dbdffa326ba2f3d64f79ff966d9ee6c1aba0d51e9a8e59f5686dc1", + "ff6d52a09ca4c3b82da0440864d6717e1be0b50b6dcf5e1d74c0ff56", + "09490be77bc834c1efaa23410dcbf800e6fae40d62a737214c5a4418"}, + {NID_secp224r1, NID_sha224, + "79b7375ae7a4f2e4adad8765d14c1540cd9979db38076c157c1837c760ca6febbb18fd42" + "152335929b735e1a08041bd38d315cd4c6b7dd2729de8752f531f07fe4ddc4f1899debc0" + "311eef0019170b58e08895b439ddf09fbf0aeb1e2fd35c2ef7ae402308c3637733802601" + "dd218fb14c22f57870835b10818369d57d318405", + "6b98ec50d6b7f7ebc3a2183ff9388f75e924243827ddded8721186e2", + "041f249911b125348e6e0a473479105cc4b8cfb4fa32d897810fc69ffea17db03b9877d1" + "b6328329061ea67aec5a38a884362e9e5b7d7642dc", + "ab3a41fedc77d1f96f3103cc7dce215bf45054a755cf101735fef503", + "70ccc0824542e296d17a79320d422f1edcf9253840dafe4427033f40", + "e3823699c355b61ab1894be3371765fae2b720405a7ce5e790ca8c00"}, + {NID_secp224r1, NID_sha224, + "8c7de96e6880d5b6efc19646b9d3d56490775cb3faab342e64db2e388c4bd9e94c4e69a6" + "3ccdb7e007a19711e69c06f106b71c983a6d97c4589045666c6ab5ea7b5b6d096ddf6fd3" + "5b819f1506a3c37ddd40929504f9f079c8d83820fc8493f97b2298aebe48fdb4ff472b29" + "018fc2b1163a22bfbb1de413e8645e871291a9f6", + "8dda0ef4170bf73077d685e7709f6f747ced08eb4cde98ef06ab7bd7", + "047df67b960ee7a2cb62b22932457360ab1e046c1ec84b91ae65642003c764ca9fc1b0cc" + "2233fa57bdcfedaab0131fb7b5f557d6ca57f4afe0", + "9ef6ebd178a76402968bc8ec8b257174a04fb5e2d65c1ab34ab039b9", + "eef9e8428105704133e0f19636c89e570485e577786df2b09f99602a", + "8c01f0162891e4b9536243cb86a6e5c177323cca09777366caf2693c"}, + {NID_secp224r1, NID_sha224, + "c89766374c5a5ccef5823e7a9b54af835ac56afbbb517bd77bfecf3fea876bd0cc9ea486" + "e3d685cfe3fb05f25d9c67992cd7863c80a55c7a263249eb3996c4698ad7381131bf3700" + "b7b24d7ca281a100cf2b750e7f0f933e662a08d9f9e47d779fb03754bd20931262ff381a" + "2fe7d1dc94f4a0520de73fa72020494d3133ecf7", + "3dbe18cd88fa49febfcb60f0369a67b2379a466d906ac46a8b8d522b", + "04b10150fd797eb870d377f1dbfa197f7d0f0ad29965af573ec13cc42a17b63ccefbe27f" + "b2a1139e5757b1082aeaa564f478c23a8f631eed5c", + "385803b262ee2ee875838b3a645a745d2e199ae112ef73a25d68d15f", + "1d293b697f297af77872582eb7f543dc250ec79ad453300d264a3b70", + "517a91b89c4859fcc10834242e710c5f0fed90ac938aa5ccdb7c66de"}, + {NID_secp224r1, NID_sha224, + "30f0e3b502eec5646929d48fd46aa73991d82079c7bd50a38b38ec0bd84167c8cf5ba39b" + "ec26999e70208af9b445046cd9d20c82b7629ca1e51bdd00daddbc35f9eb036a15ac5789" + "8642d9db09479a38cc80a2e41e380c8a766b2d623de2de798e1eabc02234b89b85d60154" + "460c3bf12764f3fbf17fcccc82df516a2fbe4ecf", + "c906b667f38c5135ea96c95722c713dbd125d61156a546f49ddaadc6", + "043c9b4ef1748a1925578658d3af51995b989ad760790157b25fe0982655648f4ff4edfb" + "899e9a13bd8d20f5c24b35dc6a6a4e42ed5983b4a0", + "b04d78d8ac40fefadb99f389a06d93f6b5b72198c1be02dbff6195f0", + "4bdd3c84647bad93dcaffd1b54eb87fc61a5704b19d7e6d756d11ad0", + "fdd81e5dca54158514f44ba2330271eff4c618330328451e2d93b9fb"}, + {NID_secp224r1, NID_sha224, + "6bbb4bf987c8e5069e47c1a541b48b8a3e6d14bfd9ac6dfaa7503b64ab5e1a55f63e91cf" + "5c3e703ac27ad88756dd7fb2d73b909fc15302d0592b974d47e72e60ed339a40b34d39a4" + "9b69ea4a5d26ce86f3ca00a70f1cd416a6a5722e8f39d1f0e966981803d6f46dac34e4c7" + "640204cd0d9f1e53fc3acf30096cd00fa80b3ae9", + "3456745fbd51eac9b8095cd687b112f93d1b58352dbe02c66bb9b0cc", + "04f0acdfbc75a748a4a0ac55281754b5c4a364b7d61c5390b334daae1086587a6768f235" + "bf523fbfc6e062c7401ac2b0242cfe4e5fb34f4057", + "854b20c61bcdf7a89959dbf0985880bb14b628f01c65ef4f6446f1c1", + "a2601fbb9fe89f39814735febb349143baa934170ffb91c6448a7823", + "bf90f9305616020a0e34ef30803fc15fa97dffc0948452bbf6cb5f66"}, + {NID_secp224r1, NID_sha224, + "05b8f8e56214d4217323f2066f974f638f0b83689fc4ed1201848230efdc1fbca8f70359" + "cecc921050141d3b02c2f17aa306fc2ce5fc06e7d0f4be162fcd985a0b687b4ba09b681c" + "b52ffe890bf5bb4a104cb2e770c04df433013605eb8c72a09902f4246d6c22b8c191ef1b" + "0bece10d5ce2744fc7345307dd1b41b6eff0ca89", + "2c522af64baaca7b7a08044312f5e265ec6e09b2272f462cc705e4c3", + "045fad3c047074b5de1960247d0cc216b4e3fb7f3b9cd960575c8479fce4fc9c7f05ff0b" + "040eb171fdd2a1dfe2572c564c2003a08c3179a422", + "9267763383f8db55eed5b1ca8f4937dc2e0ca6175066dc3d4a4586af", + "422e2e9fe535eb62f11f5f8ce87cf2e9ec65e61c06737cf6a0019ae6", + "116cfcf0965b7bc63aecade71d189d7e98a0434b124f2afbe3ccf0a9"}, + {NID_secp224r1, NID_sha224, + "e5c979f0832242b143077bce6ef146a53bb4c53abfc033473c59f3c4095a68b7a504b609" + "f2ab163b5f88f374f0f3bff8762278b1f1c37323b9ed448e3de33e6443796a9ecaa466aa" + "75175375418186c352018a57ce874e44ae72401d5c0f401b5a51804724c10653fded9066" + "e8994d36a137fdeb9364601daeef09fd174dde4a", + "3eff7d07edda14e8beba397accfee060dbe2a41587a703bbe0a0b912", + "046dd84f4d66f362844e41a7913c40b4aad5fa9ba56bb44c2d2ed9efac15f65ebcdf2fd9" + "f8035385a330bdabec0f1cd9cc7bc31d2fadbe7cda", + "7bb48839d7717bab1fdde89bf4f7b4509d1c2c12510925e13655dead", + "127051d85326049115f307af2bc426f6c2d08f4774a0b496fb6982b1", + "6857e84418c1d1179333b4e5307e92abade0b74f7521ad78044bf597"}, + {NID_secp224r1, NID_sha256, + "2b49de971bb0f705a3fb5914eb7638d72884a6c3550667dbfdf301adf26bde02f387fd42" + "6a31be6c9ff8bfe8690c8113c88576427f1466508458349fc86036afcfb66448b947707e" + "791e71f558b2bf4e7e7507773aaf4e9af51eda95cbce0a0f752b216f8a54a045d47801ff" + "410ee411a1b66a516f278327df2462fb5619470e", + "888fc992893bdd8aa02c80768832605d020b81ae0b25474154ec89aa", + "044c741e4d20103670b7161ae72271082155838418084335338ac38fa4db7919151ac285" + "87b72bad7ab180ec8e95ab9e2c8d81d9b9d7e2e383", + "06f7a56007825433c4c61153df1a135eee2f38ec687b492ed40d9c90", + "0909c9b9cae8d2790e29db6afdb45c04f5b072c4c20410c7dc9b6772", + "298f4fcae1fe271da1e0345d11d07a1fca43f58af4c113b909eedea0"}, + {NID_secp224r1, NID_sha256, + "1fa7201d96ad4d190415f2656d1387fa886afc38e5cd18b8c60da367acf32c627d2c9ea1" + "9ef3f030e559fc2a21695cdbb65ddf6ba36a70af0d3fa292a32de31da6acc6108ab2be8b" + "d37843338f0c37c2d62648d3d49013edeb9e179dadf78bf885f95e712fcdfcc8a172e47c" + "09ab159f3a00ed7b930f628c3c48257e92fc7407", + "5b5a3e186e7d5b9b0fbdfc74a05e0a3d85dc4be4c87269190c839972", + "04897089f4ef05b943eeac06589f0e09ccc571a6add3eb1610a2fc830f62ba3f6b3e6f0f" + "062058b93e6f25b6041246c5be13584a41cae7e244", + "5b6f7eca2bcc5899fce41b8169d48cd57cf0c4a1b66a30a150072676", + "f12c9985d454ffbc899ebbbb6cf43e3debcac7f19029f8f2f35cce31", + "12fcb848adbd8b1b4c72b2b54a04d936e4a5f480ae2a3ea2e3c1baae"}, + {NID_secp224r1, NID_sha256, + "74715fe10748a5b98b138f390f7ca9629c584c5d6ad268fc455c8de2e800b73fa1ea9aae" + "e85de58baa2ce9ce68d822fc31842c6b153baef3a12bf6b4541f74af65430ae931a64c8b" + "4950ad1c76b31aea8c229b3623390e233c112586aa5907bbe419841f54f0a7d6d19c003b" + "91dc84bbb59b14ec477a1e9d194c137e21c75bbb", + "f60b3a4d4e31c7005a3d2d0f91cb096d016a8ddb5ab10ecb2a549170", + "0440a4ab1e6a9f84b4dedb81795e6a7124d1cfdfd7ec64c5d4b9e3266683aa32a3c2fc06" + "8e62626f2dafce5d7f050e826e5c145cd2d13d1b27", + "c31150420dfb38ba8347e29add189ec3e38c14b0c541497fb90bf395", + "bf6c6daa89b21211ea2c9f45192d91603378d46b1a5057962dafaf12", + "cb6b237950e0f0369323055cd1f643528c7a64616f75b11c4ddd63c7"}, + {NID_secp224r1, NID_sha256, + "d10131982dd1a1d839aba383cd72855bf41061c0cb04dfa1acad3181f240341d744ca600" + "2b52f25fb3c63f16d050c4a4ef2c0ebf5f16ce987558f4b9d4a5ad3c6b81b617de00e04b" + "a32282d8bf223bfedbb325b741dfdc8f56fa85c65d42f05f6a1330d8cc6664ad32050dd7" + "b9e3993f4d6c91e5e12cbd9e82196e009ad22560", + "c8fc474d3b1cba5981348de5aef0839e376f9f18e7588f1eed7c8c85", + "0466f49457ed15f67ed4042195856f052fe774077f61cebcb9efddc3653a6e3f3423eec7" + "308a69eb1b0416d67cc3b84d24f251d7cbdb45c079", + "5e5405ae9ab6164bb476c1bb021ec78480e0488736e4f8222920fbd9", + "7b7beaf9f696ca1a8051527478c4c075ab45aa4768937886dbf38618", + "93d4cf110a37c5a6f15c4e6024822118539e860dee2f60b8c3f462f6"}, + {NID_secp224r1, NID_sha256, + "ef9dbd90ded96ad627a0a987ab90537a3e7acc1fdfa991088e9d999fd726e3ce1e1bd89a" + "7df08d8c2bf51085254c89dc67bc21e8a1a93f33a38c18c0ce3880e958ac3e3dbe8aec49" + "f981821c4ac6812dd29fab3a9ebe7fbd799fb50f12021b48d1d9abca8842547b3b99befa" + "612cc8b4ca5f9412e0352e72ab1344a0ac2913db", + "04ef5d2a45341e2ace9af8a6ebd25f6cde45453f55b7a724eb6c21f6", + "048d642868e4d0f55ee62a2052e6b806b566d2ac79dbde7939fe72577379505a57cd5690" + "4d2523b3e1281e9021167657d38aeb7d42fc8ec849", + "ec60ea6f3d6b74d102e5574182566b7e79a69699a307fee70a2d0d22", + "2fd7fcbb7832c97ce325301dd338b279a9e28b8933284d49c6eabcf6", + "550b2f1efc312805a6ed8f252e692d8ee19eaa5bcd5d0cda63a1a3f0"}, + {NID_secp224r1, NID_sha256, + "4cc91f744ac858d3577e48813219aa3538dd813b186b42d1e6218376f07cc1cc448ddd6b" + "37240e98bf953f49cf54d65c12878b33c0bf6eb1c60254f0b6fa974f847e53abc56773ee" + "f6f29885dfc619e6a48fc15a667ca94001a0c945b6357a53221b0f4b266181456b0d2d25" + "e90708777f1a6f85971c00140c631c1991e0fd06", + "35d4bbe77d149812339e85c79483cb270bdac56bbf30b5ef3d1f4d39", + "047924b1d7f5920cce98e25094e40f2eb3eb80d70b17e14b3d36c3671c26c5af35f71e61" + "858582b7cc2b41790597c53ee514ffdf7a289d108c", + "751869c1d0e79eb30aae8fbfb6d97bfa332123fd6b6c72c9cd3c1796", + "26bb1b92b0f01e94eba5fa429271371db527ce857abba13bd1103f64", + "836aba9c63e1252c2b2d72a21e6a41b82241ebe32647e7f814652bcb"}, + {NID_secp224r1, NID_sha256, + "58f43cc1924de4bc5867664adbc9d26b4f096a43aca47c27c52851b006dc2a658919ef9c" + "e5b5ac48372703be15ac51631c2bd84b88f479f113b0569a9a09e230ec1e8e573474c607" + "5284d3e57d973829af35325d9e7dab4a5f9b065155bbcaff3642a82ef4c9b9e127d3575c" + "050721653da3b087d3fa394192897a5519527d19", + "2c291a393281b75264c9b8817af684fa86a1cdc900822f74039dc5d6", + "0418cb5826ad60e6696bf07655032a3749f6577ca36da3ccd6e66a137c194e14820fe02d" + "784fd1363ff7a30399518309765bd3f4412d646da2", + "e2a860416229dfd3f5a5cc92344ca015093a543943a0d8f73bf2b2fd", + "00e300c1ef4a8c4ca5da6413856f8981db49de29bdf03f32ffc3ceab", + "f250f18a51ba5f63e1584097841099fa6ae4e98ee458c061d1d5aed7"}, + {NID_secp224r1, NID_sha256, + "113a2806b052fde683ee09453098e402204155afb3776fd1cad3a9103421d327eab8f9ec" + "0dd050ffcc83f93b34ea707705fabeccfe43ab1a71c95298fd3ec769d99ead1066950eee" + "677d225816e0faad19cf69e1b35d16771689e2092cafe16d7c0dd7b0db73fffb8d0f3eae" + "d83004dd21e753530ec939c89ba25578fa5f785b", + "831ea25dbeda33d272a1382c5def0e83929170ab06a629eed6ee244b", + "04076518e393940d42dfd09819409d66966d8c9189c83d554a9cc8a08244d0ceaf4c0f50" + "e46bea4a52e30423ce3ada19edd363ac5694c65cb8", + "6be6dd9f6a083915ccba54626caf12d246d3aece0a7eda7d8d85599c", + "ff1460946e06fb6f5d35e8d2625ca70ffb9b45308e3fabf6ad8351b1", + "6029aa3990918e8cb8a388d53b0772e5cdfff49c3405fe0d3a95933a"}, + {NID_secp224r1, NID_sha256, + "64cbfc8f2e2149a31b3e8a80c4a552f6c62aaeb7990b6e0ee55500a9d17be04213406578" + "caf315951086dff5c2af3b5ce17d425d185101ef26f86396ba3a129a4f3f8e2dd595f59e" + "fb6c0f5c2dcc394569d7268695e9ac7daa84203f1f1895f1f9e4b514a5c9cd23baa63454" + "710144fe735ad9b8f42d8c43267aa434a26d7e5f", + "70f74c7324ef137318b610ead8ddc5b964e0eed3750b20612fc2e67b", + "04279649e2a2918e683520cde3fc98b0ae58a7100e8de35e7c9cc797b6aa4de6be34be61" + "f02880139787b9038f4554a8ef1c994b887c2974b5", + "8e984864f86f7a2a73f3edda17dbccd13fac8fa4b872814abf223b1b", + "3b18736fa11d04e27e2614cda03a63ec11a180f357b0b3192920d09c", + "2f0f3dbd570727b14fbb29155538e62c930dd51c4035275c1365dc60"}, + {NID_secp224r1, NID_sha256, + "a10a11c8e30fff118d371daf824f16c08200b83ea059436466a4611ccac93b2dea2de8c1" + "006f946196aef7fe9b0c251a391b0340f21797798278b412ff2b53842eec6450728e2bca" + "062f8337a2c204b9ea04ff660cd4d4db559f2f11c4d8ef199021339fcc82396f7a93926c" + "f5f247e37d8067fe50692de54f102bd5ab51925c", + "026be5789886d25039c11d7d58a11a6e1d52cb1d5657561f2165b8a8", + "043fa617c50b177da1a2bdb98b780ad21ad1195c4bd24465f6187de3c9e3fd8d8876dfd0" + "3a4a4e31a1acad3a08d983826d286c250c4e5620c1", + "0128b8e3f50731eb5fcc223517fc0cf6b96cd1d2807eb4524bc46f77", + "3a6b633f96f3d0b6d54f7fb29ac33709e4f0dd8fa0e51606ed9765ca", + "63e8c119dfa51784decd864f6911f2210a80f8f02d472d88df10d119"}, + {NID_secp224r1, NID_sha256, + "b3f720bf566ffa369259f4361959ae0641d2755ec264a4c4349981df2b02563275b2b9ad" + "b5aee47f7a456760a971991ffed6b17809bb9694138d1677fa916123795239353158fc6b" + "22d10f20d26f5d2dcd8c56c44373eea5b93067dba2d7c5318dac2e9e8714873cb1b37f58" + "c011fd14fa1e535554efe05f468bfc8e11cd8b99", + "e79c18d935c2839644762867aa793201f96a3cde080c5968412ce784", + "04b7ae1e992b1c7fde1141f40bd913358538ca0f07f62b729f13cea327811252d12120e0" + "4805fc171a439d382c43b68a21e1a0bdf5e4ec1da4", + "7abedab1d36f4f0959a03d968b27dd5708223b66e0fc48594d827361", + "d35047d74e1e7305bb8c1a94e8ae47cb1591c3437a3e185e00afe710", + "d9c425c9d5feb776ac8952e6c4eee0ecd68aef2f0e7bff2e49c9185e"}, + {NID_secp224r1, NID_sha256, + "0a398a46df7ccc48d1e7833f8bbc67100f1ef77a62dc78bbc115b2a662f9591fbaaa91ad" + "3d788e2fdd1b3164e45293d4f5686c151296901768028ac80ded4bf89c647ad35f0c7c4c" + "b318c0c757c1d83c44d850e5fd4677281b3f13b1ee54de79c8c042813f9d3312dcc6111a" + "68299cb7e829557d7f3d96e702f65aefc6499415", + "0d087f9d1f8ae29c9cf791490efc4a5789a9d52038c4b1d22494ad8c", + "04cd95cf8fb1cd21690f40d647f2353672a1076cc6c46bddaad2d0fc56934262f74d9ee0" + "f8a2754f64cb7415923d64bf00c94a39b52803f577", + "557d0e3995dc6377b3911546dd7aeaeec62a6d8f2af6a274382fc37f", + "56df0ea6afdcc232ceb41729eec00cf906b69b6e28423a36d3c92cc5", + "f4f70fd948c9a147f55317fdea7b8a84c33e721014552d5800d63edc"}, + {NID_secp224r1, NID_sha256, + "8c33616821a6038b448d8918668977fcf1ef5aa0cf7c341837b39bbcc9bca875a3757f4b" + "392630e9995b9bbe4eb66978b877586adaa02f99d2344dae082a7603351d8ffcfca081ab" + "403cd0acb90d078dd1d0789c2eb3185c62bff2d9f04cd38e509e3b83c12ed0a5c6808fc4" + "2f7ba5b06acdc496c8ad9be648ee6a4505f8560f", + "0830aebb6577d3a3be3ba54a4501c987b0e0bb593267b9bbadb66583", + "04b88652020e083ccc1c43dc83d1881884dd4c7e3b4e3460b344b1ea6422b69b517f86d7" + "c26dc37c0f8feb4bb07fe876149fbcc3334fd2805b", + "e4f4a3280574c704c2fde47ca81ec883d27f2c5a961a294db7cda9d2", + "b30b8a0079d9a134b5e1618c2ac63e3fbe0e95866b9dbc5f423f2707", + "3dc36746610271ef66e0aa52cc2ccadc5c9b08dc769e4dc4f6538c11"}, + {NID_secp224r1, NID_sha256, + "94d56535fd4edfe67a0daa6579f9d53bf6b7b8830ae2aeb62892ff59f18756ddf2811b44" + "9c7d20d65d54f8507de4e7c50eaa084830637812aa4b250a4d61ab67845be36e4a41cdc0" + "a70f8d6e3a63d4514f0dc197e6486015046a316153d5f3a3a4a0ae1ed7ea5fa55e12e73d" + "333333685c02e0eb636234ea7e6d4b76b4b76b5a", + "2acc9b97e625263e8e4cd164302c7d1e078bfcdd706111a13ccda5b2", + "04ce1a06f82df874dded37cca03b56c0648e4e8917ecd40ee73ee61588ceb6177b8f1ac7" + "c5c6e6e1f7737cc3026952ee392badd2cd7af32f9d", + "e401fa80f96480d437ed4f61a783888062ec33d530b188fd48016a6d", + "28674f447c4742e4087bbccfb522fbad4e18b56031d2ce8f532b078a", + "a5a7a13d15b423dd17771f73cea98d89dbffa846cc209b45c0e29b76"}, + {NID_secp224r1, NID_sha256, + "5d8ebdf9eb28b47bdafaa36bf0b66a9eaf99b6c83959da4f2b1151b4f4ecd28fb115a64c" + "0cb9491093a7e9b9c53ec423e4c72e7765bb9c818da0e8c428667e44474a71db4867130c" + "77c40bfd8544b2d7b9d6464d2b8e6a48482153256a32437c3a747231f51134dd14c70340" + "7e31146a6fcde23bededcf16950486e90ca69ac0", + "f4e873d4fb944fb52323406f933815092b7672221de4d1c45917f3fc", + "040dc2cdddb990341adb1de73f02d87fc3822485a659a15145f4251d5fcf78b2a83c7352" + "eda1af2c74e1804ea04b35f76c04e89d90281dc2bb", + "5d1476c682a64162fd2fdc82696fc8cab1469a86f707ea2757416e40", + "82982b38ed465138df4018d7cfb835edcb591cb57446ca49d163782b", + "8ef1d7b326cabee7f7ab95b7b98d3c27a069c0fd95a1599c0ccb422b"}, + {NID_secp224r1, NID_sha384, + "25e4416695f77551fdce276355528ccf1ddc2483821c5d22d751d50111ca2fadc6593b52" + "c74f4b5957494f1df25b0b2f86950d0d19229ec6506fee8581d2dd09d48418b146ff16bd" + "84a17ca0dc83b1888eb407376da6c8a88fa1e60b8c2a2471dfde4b3996ef673d5bde3d70" + "c434dc9f2488e9de16ae657d29e5e59ec922a1ec", + "62c572ee0d6f81b27e591d788bfc2f42b5105d2663078dfb58069ebd", + "04bd6ba605639b98fa8113a16a3bb004ddfaec901c98a931206165f4a5a3190b10ef39e8" + "8abd60b2293b4707512b45c6c5ed5794cc11454427", + "0f0bb1e428bcdebf4dc62a5278068efc0f8ce75f89e89b3630f102b2", + "aac0ea27e129f544abcc77f110e70bbdd5aa3e425dc39d5e8887025d", + "10e5dd06aee6b8419a04aa33d9d5678b0039c3acc3c4b61fe106bfdc"}, + {NID_secp224r1, NID_sha384, + "9164d633a553deccf3cbd2effccf1387fa3177cd28c95d94a7d1a3e159c5e5c027758cc2" + "6493301b2f4d141d8d07a5fe5fead987ce5f30abeafcb48c302afc6c2309f0e93d9b6818" + "cbb6972d222cb7b01302dfe202ae83b89f53150ae4a0e2b8fc0fd1091f19b4ab2e6ab213" + "ab322d04f2c5f57113bfad3c5675227237abf773", + "e2f86bf73ba9336fa023343060f038e9ad41e5fe868e9f80574619a3", + "04f5d5346f17898ea6bbdfff19c216a8757a5dc37b95315f5481628381ae61fd172ac8b7" + "a4f13870a932dece465834cbd4f50bbcfb802c824e", + "35724ac043e3b44b73b5a7919cf675190306d26aa67c27c28c873534", + "535147c265af138eec50c7fb570bcc8d2e6f675597b0fcc034e536bc", + "743812c188a1dddf9fb34b90738f8b2e58760d6cd20ccceb1bb9c516"}, + {NID_secp224r1, NID_sha384, + "019df05929321ecea7ee1de4f412aba1c8d3c24437db04b194a68a0a59dd871be10bd3a4" + "be6edf551350ea49fc7155a4d887e1221486291abe77a30633a4c4f7868fe2df24311cba" + "0c73804883954460e122387ed414111ff96ff1aebac8b6a6491d8a0d16e48a63bf3d027c" + "0f68ee4a4b234d73b412196706af8ea022b4dcef", + "b0a203438e2586d7575bc417a4a798e47abc22aa3955b58fc2789f17", + "04dc5d217862a1e5b00c95affa9d8b925a72b9beaeb7a86dc397e788d85f05f8e976ae1e" + "b1036eca6d683a82850795bf9127dee5f8b2859445", + "408e9c8b1f33136d6ddb93ff3a498bc09d4eee99bf69cdd5af0aa5a2", + "1b5a964c8b1fc634c6e2b82322499df1d7f0c12a4d2a77723c816ab8", + "cf54599a36ca064fae0aa936de5266f87704409d22a15d28c01b7f2a"}, + {NID_secp224r1, NID_sha384, + "5d09d2b1d3fa6e12c10d8b26dc9aabc8dc02bd06e63ff33f8bb91ede4b8694592a69e4ed" + "4cdf6820069e2b9c7803658949e877ffe23bf90bcf5ce1409c06c71d86885a94048b05ac" + "0ec9db193e489a5a2bfa367caf6aa8ecdb032be366174343f6875d2fe1785e8d77334f5f" + "469cec64998e08d3303e5c9a1923b34fdc105d65", + "efcfa50fad6fb2065f9a55f28c0c42fa24c809ccb19b6fc6d8ffb085", + "0461521a0cfb72be77ba33cb3b8e022743cd9130ff49e97093b71aa178ce0819aedaf6fc" + "e639d0e593f8ab0147eeb6058f5f2b448231584ea9", + "d1eea821f286eae6ebc1f61b08f9ad4323a3787e94af4c32cd31351b", + "b37caaa71103752ac559f9eb4943324409ebfa8b585f684dcaa5c411", + "7c28e7619e2944ab4b7be022878c8052ebdf2cae5dff4f976c49686a"}, + {NID_secp224r1, NID_sha384, + "50f6dfc81c6cf189e0a310f992907fe93356cee9dea9a41c7671a8daf3f4cfe0c459ce61" + "22c1e731dbf7593419d7114cb73b46956158a982c5d52c72f43f0f822046093c69aeff1f" + "7e4cd8af00ba655c5baa2e7b6a400b4be1f6fd51b3e4cfb35a69c80a28c5cafb771b6c2e" + "52e0aeef0e3fd045e8d40745f3f8b74fd969f816", + "61a17816937987764cdc064dc7b5b4f5b16db1023acdfe25902957dd", + "04a7e975c0a8f87c683bb8e31bc160843a7b69c945f4850bd60e1c08c08930a454dcc2aa" + "13bed7ea89368b2c9d689d816b2acf4e52585ee9c4", + "44b1fdec2629f9075f89c134ac28ff19bfddaa9db02a5d7f853582b4", + "b0f5635d8bc9c53a1d54a3ec63de59ed66e6b2358d4ab79755414326", + "67c68fe265c7e5aba4232deeafb88545a2aa266fb9f2c2bb3f3ae8d2"}, + {NID_secp224r1, NID_sha384, + "e90129ac6672c85bb7b6b18e9dc199c96c81fd65034b53c77818364d512366fb9cd1bc7c" + "82404c451e561fc1ed916c0948f6ac561b33a1ccca093f07684b8c2bafa9e966377bd208" + "556018a5bafb9edcecf70498c7140fe9c8cf3ad8b8c3b0aa489df797944465047465415b" + "b0e24333235fcdd59a98829a3941eaaf62033e82", + "79d5367314ec664aa0f6ca36f95549502a05bf8400bf532d669fab8d", + "043191f0237102dac159032ab2dde53cf56c9ec827b5caddfe9e83c02ab496b1bdcca443" + "4ac0d0d91ea38ff3bc33f9f54095bfe17796d5a9e2", + "da529c52f5cc1f435d873109cd991d6cd7e1631d9ff1dd9521dd5db6", + "8e0ac63903f4921755430572c3f08bc272790639bdf1009fe2a9a714", + "6278c841a2d0a270791fe54b36c49d426d67907aa4e4f59c8638ad97"}, + {NID_secp224r1, NID_sha384, + "3c9a483c9bee33b601549c592a82e95b4319b1e74b777877f0971bcb4273716b268e8f99" + "f876e42f942f4cf08284896bbc1ffbf094ac0956c3cedfc3580cffa8c74fc6db29a371f2" + "da2d05edb9185ece741fe0d3fabfe9d5b4d373755ebed13dc6840cfa3283b9ea46ec8b95" + "c434f253ae86998182e9cc0e95ee64f323fc74b0", + "1320eedad4745121793a7eaf732b0b4498f7cb456cac8cf45a1f66f0", + "049fdd99906ab77fd29e9021bde947d05a7a9eb153612269bfb0899bc9681b65b9ac8e4c" + "2899bb622dafb253b7bf5a6e38e5f6595f997c291a", + "66ed8d8934633f4125f593cf1b1d3745c4db1f15dde60cf46ca1c7f2", + "80199485a3a96447b39f7679cd47412a78675ba17dcbd10465dc5b48", + "a251fd9f136a3cb0dd0bc80659ae032e4a761ba7045da0034553fb8c"}, + {NID_secp224r1, NID_sha384, + "bfc073fdda63c5fccaa0ca8770c293e8154e7aec56128bbac4fdbd541d602216ebf7ca1e" + "02b514d6e396f20683802ba3f334310a9226576926e3bb19ceee27738d13377cbafeb09d" + "091043501702a07aa31d1f29d50ddc55adcf16ffd40578e734a4e6cb6535f26ad48e0c62" + "ad90e79720000e87d419e92dca3e11f943655b03", + "e18821329447d3f65ba7279e96bd4624ffa1b32b90f6e8331b1e876d", + "0446c9ed837232c47022df2f1a1578fbe65ac9f2e81c98a74cc22ea31a6fc5e9568ae62b" + "31412a0b0b367242e9fd7e518c83aa06a069e1d90d", + "a4c1eb402a2fb3af26e0e14a3d2fc8ed3bc1a8b2475270356a79fdd3", + "d478b68733d8ad44be46766e7b66af782fbdc7ff7ed0b191176da98a", + "5eae9160ccf71fd1d359d89cecce72ef8afaeee2365f6ba828aa450a"}, + {NID_secp224r1, NID_sha384, + "08079955d1a1f33728128c73673ec9f21a6ce138dcab5adc4dc068e6ab57314b9fbd8b01" + "3123b2fdafa9524fbdd0288777a233de8055cccfad83046ada6a19f01c47817496667bba" + "8fc8b9456fc0e044a562d931dab1adcb66af8b66325bdf28d83ded3e2937958ccd19da54" + "0d70ef2c189f55a506c9c0d63406394c5bd3823b", + "f73e030d5a696b358986d3efaca121cf71f775f8835a21e6135145d7", + "049ca2c6ea87ac8dd3a23a5b4010841a7c8af309038882ae44634bcf55b0a347dbd5ded3" + "b8702ac5a457e8b32bd4de06fd315095fa1b7d5fe1", + "e3cc786c1288ea567836c51d6d69dd0cab5c015987d936ccc3a4beb3", + "f1234da71761b7a0f49e661a419d2a739bdc4544bf87690e3d2f96db", + "096d16bf8020c3d3c233894ad8eb81206010e62c6e692a215e088fd4"}, + {NID_secp224r1, NID_sha384, + "23900b768f6cd42b8a8df0dcbc9cb5daec8de36b9d5c619adcc1ba2b649103d5af123746" + "cdf19c3fd0665a6fb9338156182aa06181e3c6e37ce56979612af2927440424f89cef43f" + "c754854b8a5c43370808cf5f9929cf47712512ce2f8a2a20d2e9f568c2848b27dfbe0914" + "2843c83905ffa5da3b15501761b03dbc2c5398b6", + "7a0789323f8741c157a1753ae165ecaf8e8b03a60561f8b80cee467c", + "04101271a9addd4bd1f19d00bf116c8524f52cefd598e85dc381597acb2f17d14f4d8ccb" + "28b216553718152ba7c104646d8eca986dd9ddea39", + "d169f04f05b60c625cda864d187938863964dab7bb3b9dfc04b05519", + "e4a51be686a764b709da23ab48b1985e153c6ee238d945e743907afc", + "118a8f1ffe3cd556ce6345bd1a398dd9cc3729b7fd6d8af9bfd82f40"}, + {NID_secp224r1, NID_sha384, + "1eb28c0bcdd18f73e347f957ece15b4cc83a771b0877e1feaac38e24028fb38ccea8b54e" + "e017dc7c3d5a1327bc6f40b294aa65d7dc487f278846cd101ee84202f14b38aa2c275046" + "aa2577f65ebaea41cd383e8def2fd0b4444dcf426fa75c4082cd7fa035cdb1e0d34a3c79" + "d42130f5b0273eae75bc701dda3aebe7358f41b5", + "78e795d0edb11fd9e28dc26b21e751aa89bea0d87932ef11c95c0e18", + "049edd544107977134bf6360d43ccabb3c94d627c03963c0a04b439627ece4c61d319a0e" + "41f3de7863e7c355bac94395aaa74cdb5f74a87a5b", + "36f7c0f76808b826a0a974a1fd6e155e00a73f1d34674a8f88be405a", + "3e319444438bc2cc92f323ea842cb402b3c3c2448c89869ef7998edb", + "3420cc38f058f41c31e71f4b1ad488f801111c73541de69fcee60695"}, + {NID_secp224r1, NID_sha384, + "efab51855407438fd5c250670366bca3c026ecec4a59394f00d8a4b51746d0c456436665" + "6d507e3e13e62fe7abeb976b8859895848dbaecf6582f1898ea06f00d4247702ed9721bd" + "375aa83ae4c67c2eaa6e080777ea5ecf2cf787d785389560ac91cf63a52f0373c3185e18" + "a3b8a466e21b61a239f1b77624eb1acacc76c4e1", + "bee02d8bc5bffb3fd3b4c9d6f686409f02662d10150d1e58d689966a", + "048848f964c847fe9dddc774618d4588c9cd56bbe588d7b1fb369c8bfaebbb699fbd0dc0" + "8859fe9132285fe20dff3b9d561c0640b6e0717607", + "59f1450d857b40e5552a4b8cd4ab0df2f01716635d172c1106840f21", + "a206d8398a16a991bc217f77f23c6f648384f254f255a8a876404444", + "eb1169cb5b1423dc0bfaffe565ae57f986e00de06405e3e7b605862e"}, + {NID_secp224r1, NID_sha384, + "31c29ca10279a417f0cc9b1382cf54dbfdfc89f2e6ef08c403c11f580cbf8674b141ed1a" + "417563282d99a55fc616d836421cde9424815c95e7fb7668bf3f137b29937f14882d74e0" + "34b732d78d91af7721aac4950734f5fa5d4b4d35534974f8cab6d2e6dca75ddb57e99148" + "c8a59df9fc5bcd723e546e8356f671cf2f65640a", + "dc0ddf6e501418bb8eafc5d7ccc143369e2aa441df8fc57d5f94a738", + "04063a5d632f4144376e14cfb03ad8ccf1489b613acd184d20dff66545e77727f057b043" + "d8a0f7458196b72e92d11f85b0891c6aaa9d915f58", + "ff0e5cae2671db7a1b90e22c63e7570bdd27352d45bac31e338debe0", + "5bc0b4998481ecbd3b6609184a84ca41d69b08c37138097f559259f8", + "0df8828eb1ca85e46405b94e1a2972c34c5e620a54e2f640f04aecc5"}, + {NID_secp224r1, NID_sha384, + "8db476f92e332519c1a0ece5d8deded6efbd2d8e8784eea0a6b4c3b4296c35f5f8de4317" + "e5c1627b91fb1973fee86c06e4992aa5a20cb7475c8808ff1da354d07a488dffa7838c6e" + "c1e3f99e3acba831f27bee8434eeda3eb36d0c6df3658883cd40068b1bed841310f6eb38" + "d4a3d07d85848770ff7933c054cd8b34662660b1", + "229d89b2fcf8441ffc95ebb2ac2ef156e25825782044b2b8bd6a3e01", + "04de616848d8044a44789ef1ba3a6dd66fe9257ddc57f7534e59a701be26cbf74a6d25e5" + "b34b96d30f327abd574cff7f7dbe6686573a7d6c5c", + "3b18ca6ec8e8e255ac88f64302745ca0b73ff94b2b2d48be95b4aaee", + "fa94fd8b827c06115c1eefd50afc02ce5926ee0e789667783c01c34b", + "edf766a66973cfc33e4159966c07321a7f6549c3c60e8586ef41402b"}, + {NID_secp224r1, NID_sha384, + "fcb272c828fe8fd3c6f8de9410c7b6e2b36717c1b0e5e359e9109bd7fc378978aa98182a" + "9d99961898ed88999b050d3b64d1457d7a899d6d273b9f4dde2aafa36d76329d62509043" + "c338f265fc4c7d938459b7fa3b230a9f6cb632b61489546bb4181a5ad7f0d7369b8caced" + "48eb374b075b2b325bc86add0f3b680cd9e80acd", + "97d747068147c0393a0bb5c159e2c9f1bd538f6204823294883abe28", + "043858a576eef2ce24d01766997fb81b3f3f78b6104cd188610be221d795ffc677ac7bfe" + "3e0bb4cffb17355a964c8356a807151b3cba5d1f4e", + "c1a2ec1ef16cfd5107c892790daefbed061be78bd8576696b60f64d5", + "18c908541843fcdac99b9ff6bb397f3f8094d16b42670216e4eaa2d7", + "c107a8a508ff57c5d4f78f86cc37e129c864d1c44ed5e73909613b74"}, + {NID_secp224r1, NID_sha512, + "7522492bdb916a597b8121f3e5c273b1d2800ef8c1db4f7dcbae633b60d7da5193ba53a6" + "3d7a377b351897c3b24903ae1cd1994211b259be3e6ae2cbc8970e4957fdf782c7d1bc7a" + "91c80c8ef65468d4ef35428f26e2940ae8b0bd9b8074236bf6c00d0ebe83f9ddb2ade0f8" + "35138d39f33b59f244e0037c171f1ba7045a96f5", + "ba5374541c13597bded6880849184a593d69d3d4f0b1cb4d0919cbd6", + "04ac635fe00e8b7a3c8ef5655bdfb7f83e8532e59c0cc0b6534d810ffa1d067aebeba66e" + "79b28ecfe59ac6fdf5e1970dc3a84499c9d90cd8e2", + "187ed1f45c466cbafcd4b9577fb222408c011225dcccfd20f08b8d89", + "f83d54945997584c923c09662c34cf9ad1e987da8bfd9be600e7a098", + "4ff2dba9dba992c98a095b1144a539310e1a570e20c88b7d0aa1955c"}, + {NID_secp224r1, NID_sha512, + "61097114ff855c3e34a62d9b853f8982d35f29cfa4a89893badbca7849e5fb437a1a38d6" + "451bf0ca5a0d528e352b8e4b57f2ea359a7fc8841d49dd3e570f9b016f14156b0bbc4be8" + "22e260bd147ec081454969e11cb0034b7450ef4deb7ed6edb977e2f4ed60121aa095fb0a" + "b40240dc329ecc917f5c64b4410612af065ee9dd", + "1e27187134d0a63542adf4665fba22f00cfc7b0a1e02effe913ceedc", + "04ecaea8ceea55c3bd418fd34a4ff2499e25e66a104eed846bc00c31d23933a356ab1f2d" + "abc303ff0a5d076131e77032e6f502336883bf78a7", + "34cb597deae9a3b1cada937abcd247161b19b2b336b20e2e42ae01f1", + "58177ba46fb291490b39368774accf72736412c1fb5ee0f27b9b1e02", + "58337d78b95a080bfcabb5809bee012501b4da84b8ef310a4628f11c"}, + {NID_secp224r1, NID_sha512, + "dd09ae6c982bb1440ca175a87766fefeacc49393ff797c446200662744f37a6e30c5d33b" + "a70cbd8f12277fd6cc0704c17478bbab2a3047469e9618e3c340a9c8caaff5ce7c8a4d90" + "ecae6a9b84b813419dec14460298e7521c9b7fdb7a2089328005bd51d57f92a1bcbeecd3" + "4aa40482b549e006bbf6c4ce66d34a22dda4e0e0", + "0905b40e6c29bfcbf55e04266f68f10ca8d3905001d68bb61a27749b", + "04d656b73b131aa4c6336a57849ce0d3682b6ab2113d013711e8c297626328335ffc2029" + "afbfe2a15cc5636978778c3f9dab84840b05f2e705", + "dc82840d147f893497a82f023d7d2cbf0a3a5b2ac6cc1b9b23e504be", + "583af080e0ec7c1ba5a491a84889b7b7b11ccfe18927c7c219b11757", + "b23700035349df25d839f0973bef78a7515287de6c83707907074fa6"}, + {NID_secp224r1, NID_sha512, + "37a73e2774d3b274db426c89b945696daa96035031f72cea01894b24508c7f81961ec254" + "d36ed6a0f448e11cf7950af769dc6cd2c47e52c6caf0ea92c270974f0214b4db436c36a6" + "0fb722060a6bb544462a82e1714f5906ec32886f7d59ebf289541c3a00ec1e004892ef2b" + "1286a0194f55d083c6ec92c64b8fd1452e1c68ba", + "afbaede5d75e4f241dd5b53220f3f5b9c1aa1d5d298e2d43236452dc", + "04fe83e59fc8ea8b939355d3258fe53a64d45f63031a0716b7cc416173f151d23060f1c8" + "56eb7f1f58be72a7228c3af89e43b56e9695b558c7", + "0fbbe7b40136c81a8fb894498d5502157a1cf5a89d0643de92cd38f6", + "24f3f457c7b72b7e759d5a8afbf330e31c5d8d2e36f92c0e79c5d87d", + "36fd1193def34f12a960740fd79fb38bf2b480726ccad540eb42cdf8"}, + {NID_secp224r1, NID_sha512, + "9dc2046ffdc6804544db964481abe5d2d276a2a9eeec4c7ad40215b1de23561d402db69b" + "d0f6eec2254711eea4487c64d9a6b62c3ebaf5ffa8db6e7e3a6e17154d126967a47a853a" + "6f8339bdca9be306a13c7f992ded7619b0da59909a49b1e0930360e05b47f18628a36d69" + "b2f87f2bfddd6a5d4a72f84dc76dbdd43f3a6a35", + "950b07b0c2b7539a21b5135bfede214733f2e009647d38d8b21d760c", + "04f43d13bbfcee3b724063b3910fea49fd591b81e86fdb813b1a492d0c6b4c8d6fa5dc66" + "1889e3cf5ec64997a78222837885f85d2fe9b684fb", + "83e110d0d1e700d2f36543028737d2a2f1474aa3b4b28998a39e4793", + "2685265bc878e85d10ab13293dec190881a57c4a467f8fc2170432ea", + "80a347bb49036522369339bd6485a967cdda818915d8eb947302fcf9"}, + {NID_secp224r1, NID_sha512, + "d9c6847fce688c5e7525a1098b545cb6c15dcd21a02761fc82fc664372a667390680135f" + "91c01a2fa5430c634b1a6d1cd6002d8aa021e7bf5956a7901c2f81bc25d502ba5f55a55f" + "30c0323dc68205cbefec0538e68654e7b327ac1743641896c3e740d8f66f400902b304ea" + "faa4e0d8cffae140536f0922444cc3216a675697", + "015bd9f5dfef393b431c3c7fced24385d861ccb563542574a5d2a9bc", + "04e868690641e2cda13b289a6c5d2fb175940396044d9cf27b4f2240af4c78c9abdf2b7f" + "c67ed4497001d7bcf1daca1739dc14a661f91d7c40", + "e2374350f47c08f3c1359d4edf87e61d1ba4e7dd1540d8d9062efa79", + "e12dc088d2bc032bb214c77d0e0fb749fc8e61ebe1ed72996f1084b6", + "0ab58aa31e0bba5fbc76855e6549f1036fba0a589aeab978ab01b8fb"}, + {NID_secp224r1, NID_sha512, + "69df8a01b66f04930efd2012ff2243874f256ca8758145d2a9e4ecc84d0dbdbd0dc494ae" + "06db0ccbe819918137c90957114558580d6623efbafdd342b38dad9f08708084d32f874f" + "ba04782ce26aaab78de2102ad171f8a8f2b30b5bd3d55fdac5fa3acd6f7def7e61c25339" + "38572b331ba6d1c02bd74bfdbf7337ade8f4a190", + "0a3c259df933247445acffb6d8265b601d597fb9997dc2a1eb4deef4", + "04e67f4385a9da54253cc371ee9bc6739ae6385a4b87669c7baf0c460d2bb00b6ddd7b67" + "d9ac5653ec04ca8529fbf16f815c04da3c2e58e82d", + "8bf5859665b6a23e6b05a311580f60187ba1c4ae89e44877fb48af66", + "653675fb993c3fa9e57b32e33029ec230b966e8077c72c1ec90ddefc", + "792723bf87e315147cd4303de7f1dfe95cd7658ebb95c38c1a196140"}, + {NID_secp224r1, NID_sha512, + "927524982b8d60777c1105c86fac05f634abf58c73f84fb95d81ba0b86e1e43592c4fcad" + "2e395a40fbe7005697d86088e2fb3bb7287eb3f917d4f2dc281f5cbe65d05b4f9623bca8" + "49b10a03beca6aa2056a12ebb91cf257ac448c5e9a78f8349a6a29b17c8978bef43a443c" + "bb8a149eb23f794844fc41693f2dbb97181444be", + "a1c8ef463f9e7e3dd63e677412f87cf9ea4ac9a6a2dae629da5b9916", + "04400e5cd4b315ceb309545cd3277acb70bdae2073fda6ad896ea14b27fbe1d2466cd2e1" + "16f38248bd5cabaa6cbe6c4a2694d998abd7b0c991", + "82f55a25d3ed6e47c22a6eed0fa52ed0818b87d6ea7950281dfefc09", + "16305a46a3f6f9e216ef8f6a6f5f0760d064a885657c864e1c1ea035", + "58fd97050bfbca6f87e64e1458c4ad80bae26e280356da344ad3b25d"}, + {NID_secp224r1, NID_sha512, + "5f9042283561e7f19a436d01c7ef5a950a6d77ede5629cd7e43c0a5d58e8c5673c37945a" + "453291d12938253c71dbe12c8b022ba7276eda6be034ef5ec1ec77dbd1e08f0d7b8e7725" + "b7ec671c075e008a20f77f4ab266f97079b0aa6337df59a33b881954084057b21f294dd1" + "4bcb0869a4a6f1f597955ec7bf9d19bb3537a66a", + "fa511dbf6fef7e5e9c73e4555eb75d435f7884322d9faf5d78cacc0b", + "04e8dccd706c31f895f2f261ab979cbab51b8ae28196bcc12a42046380ec246be8e71ea3" + "859cb717a59990fe22e4b76858ff49becd70739a01", + "a37d665fe4314aa4cd03eb8e6a1f366b43e11fdb419c96b48f787b62", + "05e4909bcc172ab4140be291aad4660e375032bce2d762b6269ba764", + "e347a1c9d3670690e1d8d1d4cd9579848f442199c10526488da5cebf"}, + {NID_secp224r1, NID_sha512, + "c2ae5573d3bf396523bfb703db8502fd0760cd1be528f6ddbfb95aad399e0b19f3bd9e0f" + "abdb05d49e3f893dffec5b627c9c2f7ad5f32e92e4e27a38cb5c28657657377fdfa1b66c" + "d7ac3d15c6d49df92d284db99f69744f37dc7cb4e7d52920fdb200a7942623a7057ba82e" + "467dcccaa5da416b48510d8364446a6a5e2a5aa8", + "a58bd53646400a646f0e4208320dc679a9664d1c6bfb27fdc8eac7ea", + "04e22e0dc4ecd96eb0071b72ba4b4988bf784f3fe73cb81bfb93d9ac4fb3e213e518bee1" + "367a4fb3703b9008bac9d95a1fc4aa61225fff9f3c", + "42c5b6f87d3bb1ed74f5ee8398d8f8c61e9e50ffa7a1da12d39893f9", + "5c0e5c6f057de1e99ef5d237a60d7a07fa9a42b120a82f573d9fb7b2", + "2fffc0bf550bd2f650fed085a84501cacfa6a1bb984df1f9237eaa59"}, + {NID_secp224r1, NID_sha512, + "03c1a1cd30a039d0dcb22fee2450a7fa79495a0d0f4f43d2de4d75bce003c0334a8860f5" + "c164dbd94888a9f751235a3e570d31070e3e1293a7be616af7176600585d36ac01360015" + "7d2569d491da4b8a3bf3630c26e0b9925412189f50b0ae6f04c86477932e2ecd8c354610" + "6ae1ebc684cc3adb27ed665eddece886adea4ce3", + "64bd4452b572cc95510ac2e572f41136299ff17f6e8448f4ffb571d0", + "0492521fa25c2e034d127e0921efdb167f0b2ff8b20504487ed87fa264e72c770e37375a" + "d7dc2c4e63e5701826f6606f6ffb9461ee61b4e872", + "eaf76ee4d7e00d13d8a6d03dffd07ad9a8bb6dc8176c9f93059b1b7f", + "cf5058e2a6cf5e61a138b013eb292f38a1b9f07239ae5941dbce8919", + "d14198621650d985d270bc997da6e78588fd0ef843b874c66a3de3c3"}, + {NID_secp224r1, NID_sha512, + "888f6d9bc7c86c0079fbfd42d8c08d6958f40f6e570fb0b1f03d2f8f8a63df4fcc87b379" + "a222cf835820a999d34996e08961f13b86b075e7fd1c303cd3baa44de42168561589012f" + "7e5300da4f8bdf470c07119a5d9f7ba7293568cd7c6a1b7fc1e41cda40bed7d46e5a28af" + "67ae2aabfefe67a86a1c601e6f5ee543e09bd7b6", + "7f3edb710df9d982f486233d0c176aa88f5a0ee81efa9b8145020294", + "04e7611e013e7b43ff5b8b57ad83333bffcc9e469ad23070b5791dc5947784da0a11dbe1" + "6208c6e0b6d5029e71fbec4dffc9fa046d3eeb71c9", + "94db7ef9a232593091eb9a74f289529c7e0d7fef21f80b3c8556b75e", + "a971f45bab10b1d16d7234ca8e4ec987da20d9e867f28aa063296e23", + "e38c538d65a7e1a28fd3ec53f015a7e5beb60e9d309f1e3ba4b2c3d2"}, + {NID_secp224r1, NID_sha512, + "48453340f1317769e6ee6e103153714365731163dc18f84e9f2fa4b120f9c5a9645ee2f9" + "b66c84c26d95912b422b009b64af96aa418b2427a4209f2e7513ba8e43ec8cf20b34e752" + "9b22eb1199545afe9a9f7d9bcb320aec9ee0162f91c0d1dd9674c9c284f25199c5e109f6" + "f84d7ed0d269cc6413edb81bc2c83e37d644d8b9", + "b569f8296ff1d9cc01fffd9919016e5730c1858bdb7b99527153751a", + "04242f34959516a4706172f7dede23110efa314bff22eb320ab88feeff45e3227710900a" + "8acfc9bcce728119d042f64ca40876c2b380ee46e0", + "ae61523866a8f43e6cdd42ba27a34ed06527e8a5842901a64c393f76", + "c2732a4e0815f9f785500e80147e9486994446beccf8a6a352b97585", + "6ecaece6487d7920e398f7f951ab7c7aba5832dabf03704106ad1244"}, + {NID_secp224r1, NID_sha512, + "4bdfd3b91d83108409ad765b256e0c9b9937ecf647f8e6f9fc807e2e72af8246178b3fe0" + "46b4ea10170450d71a4eec790ecb05f03d7077341de26c4db7eeae24d55c9a9093e837df" + "db38168fe8230cb9605825a1282fecd741989bfcdb34678fe077477927f66bd26d003e5d" + "da22043341a14dd31841ba483ad5ce2701e0f68e", + "41a4dd8eee39232b728516e2f21e66011e7426a6b25986c3ffa237e4", + "04c32988171caab178bf50dc7310bc7f604df5a9d19a8e602519c72d8af8985d112ad9de" + "05969e5364d943c1cc5cd198359f4c62b19da0e117", + "827d4999da81fa920c8492ccc1e2d5cdafed9754cf7382a859952071", + "89c61da7422ccd676baec07e2185c12e947a2374eede87847304be6c", + "2685379624717ea28422e8d001c090405a130b4ef9f1ac726c3ca502"}, + {NID_secp224r1, NID_sha512, + "e6cdee8558bc1eacc24e82f0624ce8d02cc8d925b4dd3dec3a72f4a4e0fb76076bfa3ef2" + "e2c33bdd7c27b322bdc09bbfee8fe46f75dbd7bbd2af09690b7137943efe21706e0a1b6d" + "3089540fc58d85ddb55ea836616db573e36c521be008893f40a0a7c349602cc178ea43be" + "59d31ec6449e7ff2c5379379f7d7645134df1bc3", + "67fa50569257c8cc89ac0325db4902003a62f30b917f53e4035a7e04", + "046773a0436a9c42635730413b19aa4166f08c69c0e5002953da42253b555138290b093b" + "f2fe79acda9131d920cd1e7ac43fb8775776cd713c", + "557cb45fd3a30b3bdbf08c56eabbd4478736024aaa52bf8448096453", + "8e92cf7a674aa5f7542dd95c695589a05747431692edd04804299b8f", + "af4908b41f8180b71a6ff10fd51f3d143147af6ddddf7534d3284ed9"}, + {NID_X9_62_prime256v1, NID_sha224, + "ff624d0ba02c7b6370c1622eec3fa2186ea681d1659e0a845448e777b75a8e77a77bb26e" + "5733179d58ef9bc8a4e8b6971aef2539f77ab0963a3415bbd6258339bd1bf55de65db520" + "c63f5b8eab3d55debd05e9494212170f5d65b3286b8b668705b1e2b2b5568610617abb51" + "d2dd0cb450ef59df4b907da90cfa7b268de8c4c2", + "708309a7449e156b0db70e5b52e606c7e094ed676ce8953bf6c14757c826f590", + "0429578c7ab6ce0d11493c95d5ea05d299d536801ca9cbd50e9924e43b733b83ab08c804" + "9879c6278b2273348474158515accaa38344106ef96803c5a05adc4800", + "58f741771620bdc428e91a32d86d230873e9140336fcfb1e122892ee1d501bdc", + "4a19274429e40522234b8785dc25fc524f179dcc95ff09b3c9770fc71f54ca0d", + "58982b79a65b7320f5b92d13bdaecdd1259e760f0f718ba933fd098f6f75d4b7"}, + {NID_X9_62_prime256v1, NID_sha224, + "9155e91fd9155eeed15afd83487ea1a3af04c5998b77c0fe8c43dcc479440a8a9a89efe8" + "83d9385cb9edfde10b43bce61fb63669935ad39419cf29ef3a936931733bfc2378e253e7" + "3b7ae9a3ec7a6a7932ab10f1e5b94d05160c053988f3bdc9167155d069337d42c9a70566" + "19efc031fa5ec7310d29bd28980b1e3559757578", + "90c5386100b137a75b0bb495002b28697a451add2f1f22cb65f735e8aaeace98", + "044a92396ff7930b1da9a873a479a28a9896af6cc3d39345b949b726dc3cd978b5475abb" + "18eaed948879b9c1453e3ef2755dd90f77519ec7b6a30297aad08e4931", + "36f853b5c54b1ec61588c9c6137eb56e7a708f09c57513093e4ecf6d739900e5", + "38b29558511061cfabdc8e5bb65ac2976d1aa2ba9a5deab8074097b2172bb9ad", + "0de2cde610502b6e03c0b23602eafbcd3faf886c81d111d156b7aa550f5bcd51"}, + {NID_X9_62_prime256v1, NID_sha224, + "b242a7586a1383368a33c88264889adfa3be45422fbef4a2df4e3c5325a9c7757017e0d5" + "cf4bbf4de7f99d189f81f1fd2f0dd645574d1eb0d547eead9375677819297c1abe62526a" + "e29fc54cdd11bfe17714f2fbd2d0d0e8d297ff98535980482dd5c1ebdc5a7274aabf1382" + "c9f2315ca61391e3943856e4c5e616c2f1f7be0d", + "a3a43cece9c1abeff81099fb344d01f7d8df66447b95a667ee368f924bccf870", + "045775174deb0248112e069cb86f1546ac7a78bc2127d0cb953bad46384dd6be5ba27020" + "952971cc0b0c3abd06e9ca3e141a4943f560564eba31e5288928bc7ce7", + "a0d9a7a245bd9b9aa86cecb89341c9de2e4f9b5d095a8150826c7ba7fb3e7df7", + "b02a440add66a9ff9c3c0e9acf1be678f6bd48a10cbdec2ad6d186ffe05f3f2a", + "a98bea42aec56a1fcecec00a1cc69b01fcbcf5de7ac1b2f2dcc09b6db064f92b"}, + {NID_X9_62_prime256v1, NID_sha224, + "b64005da76b24715880af94dba379acc25a047b06066c9bedc8f17b8c74e74f4fc720d9f" + "4ef0e2a659e0756931c080587ebdcd0f85e819aea6dacb327a9d96496da53ea21aef3b2e" + "793a9c0def5196acec99891f46ead78a85bc7ab644765781d3543da9fbf9fec916dca975" + "ef3b4271e50ecc68bf79b2d8935e2b25fc063358", + "7bbc8ff13f6f921f21e949b224c16b7176c5984d312b671cf6c2e4841135fc7f", + "04f888e913ec6f3cd8b31eb89e4f8aaa8887d30ae5348ed7118696949d5b8cc7c108895d" + "09620500d244e5035e262dea3f2867cd8967b226324d5c05220d8b410c", + "21c942f3b487accbf7fadc1c4b7a6c7567ce876c195022459fa1ebf6d04ffbaa", + "2e6cc883b8acc904ee9691ef4a9f1f5a9e5fbfde847cda3be833f949fb9c7182", + "2ac48f7a930912131a8b4e3ab495307817c465d638c2a9ea5ae9e2808806e20a"}, + {NID_X9_62_prime256v1, NID_sha224, + "fe6e1ea477640655eaa1f6e3352d4bce53eb3d95424df7f238e93d8531da8f36bc35fa6b" + "e4bf5a6a382e06e855139eb617a9cc9376b4dafacbd80876343b12628619d7cbe1bff675" + "7e3706111ed53898c0219823adbc044eaf8c6ad449df8f6aab9d444dadb5c3380eec0d91" + "694df5fc4b30280d4b87d27e67ae58a1df828963", + "daf5ec7a4eebc20d9485796c355b4a65ad254fe19b998d0507e91ea24135f45d", + "04137c465085c1b1b8cccbe9fccbe9d0295a331aaf332f3ed2e285d16e574b943bd3e8d5" + "a24cd218c19760b0e85b35a8569945aa857cbf0fd6a3ce127581b217b6", + "343251dffa56e6a612fec7b078f9c3819eab402a72686b894a47a08fd97e6c23", + "775e25a296bd259510ae9375f548997bec8a744900022945281dc8c4d94f2b5b", + "d87592ceab773ae103daebbb56a04144aaccb1e14efc1024dc36c0e382df1f70"}, + {NID_X9_62_prime256v1, NID_sha224, + "907c0c00dc080a688548957b5b8b1f33ba378de1368023dcad43242411f554eb7d392d3e" + "5c1668fad3944ff9634105343d83b8c85d2a988da5f5dc60ee0518327caed6dd5cf4e9bc" + "6222deb46d00abde745f9b71d6e7aee6c7fdfc9ed053f2c0b611d4c6863088bd012ea981" + "0ee94f8e58905970ebd07353f1f409a371ed03e3", + "8729a8396f262dabd991aa404cc1753581cea405f0d19222a0b3f210de8ee3c5", + "0482b1f1a7af9b48ca8452613d7032beb0e4f28fe710306aeccc959e4d03662a355e39f3" + "3574097b8d32b471a591972496f5d44db344c037d13f06fafc75f016fd", + "6de9e21f0b2cacc1762b3558fd44d3cf156b85dbef430dd28d59713bfb9cfa0b", + "a754b42720e71925d51fcef76151405a3696cc8f9fc9ca7b46d0b16edd7fb699", + "603924780439cc16ac4cf97c2c3065bc95353aa9179d0ab5f0322ca82f851cf2"}, + {NID_X9_62_prime256v1, NID_sha224, + "771c4d7bce05610a3e71b272096b57f0d1efcce33a1cb4f714d6ebc0865b2773ec5eedc2" + "5fae81dee1d256474dbd9676623614c150916e6ed92ce4430b26037d28fa5252ef6b10c0" + "9dc2f7ee5a36a1ea7897b69f389d9f5075e271d92f4eb97b148f3abcb1e5be0b4feb8278" + "613d18abf6da60bfe448238aa04d7f11b71f44c5", + "f1b62413935fc589ad2280f6892599ad994dae8ca3655ed4f7318cc89b61aa96", + "04e0bbfe4016eea93e6f509518cbffc25d492de6ebbf80465a461caa5bdc0181593231ee" + "7a119d84fa56e3034d50fea85929aec2eb437abc7646821e1bf805fb50", + "7a33eeb9f469afd55de2fb786847a1d3e7797929305c0f90d953b6f143bb8fc6", + "96d1c9399948254ea381631fc0f43ea808110506db8aacf081df5535ac5eb8ad", + "73bf3691260dddd9997c97313f2a70783eacf8d15bdfb34bb13025cdfae72f70"}, + {NID_X9_62_prime256v1, NID_sha224, + "a3b2825235718fc679b942e8ac38fb4f54415a213c65875b5453d18ca012320ddfbbc58b" + "991eaebadfc2d1a28d4f0cd82652b12e4d5bfda89eda3be12ac52188e38e8cce32a264a3" + "00c0e463631f525ae501348594f980392c76b4a12ddc88e5ca086cb8685d03895919a862" + "7725a3e00c4728e2b7c6f6a14fc342b2937fc3dd", + "4caaa26f93f009682bbba6db6b265aec17b7ec1542bda458e8550b9e68eed18d", + "04e3c58c1c254d11c7e781ad133e4c36dd1b5de362120d336a58e7b68813f3fbee59760d" + "b66120afe0d962c81a8e5586588fd19de2f40556371611c73af22c8a68", + "c0d37142dc8b0d614fad20c4d35af6eb819e259e513ddeac1e1c273e7e1dc1bb", + "25dd8e4086c62a40d2a310e2f90f6af5cb7e677b4dfdb4dc4e99e23ea2f0e6dc", + "90ad62c179b0c9d61f521dde1cd762bfd224b5525c39c3706f2549313ddb4f39"}, + {NID_X9_62_prime256v1, NID_sha224, + "3e6e2a9bffd729ee5d4807849cd4250021d8184cda723df6ab0e5c939d39237c8e58af9d" + "869fe62d3c97b3298a99e891e5e11aa68b11a087573a40a3e83c7965e7910d72f81cad0f" + "42accc5c25a4fd3cdd8cee63757bbbfbdae98be2bc867d3bcb1333c4632cb0a55dffeb77" + "d8b119c466cd889ec468454fabe6fbee7102deaf", + "7af4b150bb7167cb68037f280d0823ce5320c01a92b1b56ee1b88547481b1de9", + "04cb3634ec4f0cbb99986be788f889e586026d5a851e80d15382f1bdb1bda2bc7551e4e4" + "3bc16fb114896b18198a1aebe6054ba20ed0c0317c1b8776158c0e6bfb", + "98edd59fafbcaee5f64e84eb5ed59fff45d14aabada47cee2fa674377173627a", + "261a1cdb0fd93c0fb06ea6068b6b03c330a12f621a7eba76682a1d152c0e8d08", + "7ca049bad54feee101d6db807635ffb8bdb05a38e445c8c3d65d60df143514c5"}, + {NID_X9_62_prime256v1, NID_sha224, + "52e5c308e70329a17c71eaedb66bbee303c8ec48a6f1a2efb235d308563cd58553d434e1" + "2f353227a9ea28608ec9c820ed83c95124e7a886f7e832a2de1032e78dc059208f9ec354" + "170b2b1cab992b52ac01e6c0e4e1b0112686962edc53ab226dafcc9fc7baed2cd9307160" + "e8572edb125935db49289b178f35a8ad23f4f801", + "52ad53e849e30bec0e6345c3e9d98ebc808b19496c1ef16d72ab4a00bbb8c634", + "047cca1334bfc2a78728c50b370399be3f9690d445aa03c701da643eeb0b0f7fa83f7522" + "238668e615405e49b2f63faee58286000a30cdb4b564ac0df99bc8950f", + "8650c30712fc253610884fbba4a332a4574d4b7822f7776cab1df8f5fa05442a", + "a18194c7ac5829afc408d78dde19542837e7be82706c3941b2d9c5e036bb51e0", + "188ead1cdf7c1d21114ff56d0421ffd501ab978ef58337462c0fa736d86299af"}, + {NID_X9_62_prime256v1, NID_sha224, + "d3e9e82051d4c84d699453c9ff44c7c09f6523bb92232bcf30bf3c380224249de2964e87" + "1d56a364d6955c81ef91d06482a6c7c61bc70f66ef22fad128d15416e7174312619134f9" + "68f1009f92cbf99248932efb533ff113fb6d949e21d6b80dfbbe69010c8d1ccb0f3808ea" + "309bb0bac1a222168c95b088847e613749b19d04", + "80754962a864be1803bc441fa331e126005bfc6d8b09ed38b7e69d9a030a5d27", + "040aaeed6dd1ae020d6eefc98ec4241ac93cbd3c8afed05bb28007e7da5727571b2dda1d" + "5b7872eb94dfffb456115037ff8d3e72f8ebdd8fcfc42391f96809be69", + "738e050aeefe54ecba5be5f93a97bbcb7557d701f9da2d7e88483454b97b55a8", + "8cb9f41dfdcb9604e0725ac9b78fc0db916dc071186ee982f6dba3da36f02efa", + "5c87fe868fd4282fb114f5d70e9590a10a5d35cedf3ff6402ba5c4344738a32e"}, + {NID_X9_62_prime256v1, NID_sha224, + "968951c2c1918436fe19fa2fe2152656a08f9a6b8aa6201920f1b424da98cee71928897f" + "f087620cc5c551320b1e75a1e98d7d98a5bd5361c9393759614a6087cc0f7fb01fcb1737" + "83eb4c4c23961a8231ac4a07d72e683b0c1bd4c51ef1b031df875e7b8d5a6e0628949f5b" + "8f157f43dccaea3b2a4fc11181e6b451e06ceb37", + "cfa8c8bd810eb0d73585f36280ecdd296ee098511be8ad5eac68984eca8eb19d", + "04c227a2af15dfa8734e11c0c50f77e24e77ed58dd8cccf1b0e9fa06bee1c64766b68659" + "2ce3745eb300d2704083db55e1fa8274e4cb7e256889ccc0bb34a60570", + "2d6b449bb38b543d6b6d34ff8cb053f5e5b337f949b069b21f421995ebb28823", + "5e89d3c9b103c2fa3cb8cebeec23640acda0257d63ffbe2d509bfc49fab1dca6", + "d70c5b1eeb29e016af9925798d24e166c23d58fedd2f1a3bbdb1ef78cdbfb63a"}, + {NID_X9_62_prime256v1, NID_sha224, + "78048628932e1c1cdd1e70932bd7b76f704ba08d7e7d825d3de763bf1a062315f4af16ec" + "cefe0b6ebadccaf403d013f50833ce2c54e24eea8345e25f93b69bb048988d102240225c" + "eacf5003e2abdcc90299f4bf2c101585d36ecdd7a155953c674789d070480d1ef47cc785" + "8e97a6d87c41c6922a00ea12539f251826e141b4", + "b2021e2665ce543b7feadd0cd5a4bd57ffcc5b32deb860b4d736d9880855da3c", + "04722e0abad4504b7832a148746153777694714eca220eced2b2156ca64cfed3ddf0351b" + "357b3081e859c46cad5328c5afa10546e92bc6c3fd541796ac30397a75", + "b15bbce4b382145de7ecd670d947e77555ef7cd1693bd53c694e2b52b04d10e1", + "9d086dcd22da165a43091991bede9c1c14515e656633cb759ec2c17f51c35253", + "23595ad1cb714559faaecaf946beb9a71e584616030ceaed8a8470f4bf62768f"}, + {NID_X9_62_prime256v1, NID_sha224, + "9b0800c443e693067591737fdbcf0966fdfa50872d41d0c189d87cbc34c2771ee5e1255f" + "d604f09fcf167fda16437c245d299147299c69046895d22482db29aba37ff57f756716cd" + "3d6223077f747c4caffbecc0a7c9dfaaafd9a9817470ded8777e6355838ac54d11b2f0fc" + "3f43668ff949cc31de0c2d15af5ef17884e4d66a", + "0c9bce6a568ca239395fc3552755575cbcdddb1d89f6f5ab354517a057b17b48", + "044814d454495df7103e2da383aba55f7842fd84f1750ee5801ad32c10d0be6c7da0bd03" + "9d5097c8f0770477f6b18d247876e88e528bf0453eab515ffab8a9eda3", + "d414f1525cdcc41eba1652de017c034ebcc7946cb2efe4713d09f67c85b83153", + "84db02c678f9a21208cec8564d145a35ba8c6f26b4eb7e19522e439720dae44c", + "537c564da0d2dc5ac4376c5f0ca3b628d01d48df47a83d842c927e4d6db1e16d"}, + {NID_X9_62_prime256v1, NID_sha224, + "fc3b8291c172dae635a6859f525beaf01cf683765d7c86f1a4d768df7cae055f639eccc0" + "8d7a0272394d949f82d5e12d69c08e2483e11a1d28a4c61f18193106e12e5de4a9d0b4bf" + "341e2acd6b715dc83ae5ff63328f8346f35521ca378b311299947f63ec593a5e32e6bd11" + "ec4edb0e75302a9f54d21226d23314729e061016", + "1daa385ec7c7f8a09adfcaea42801a4de4c889fb5c6eb4e92bc611d596d68e3f", + "04f04e9f2831d9697ae146c7d4552e5f91085cc46778400b75b76f00205252941dbd2671" + "48174cd0c2b019cd0a5256e2f3f889d1e597160372b5a1339c8d787f10", + "7707db348ee6f60365b43a2a994e9b40ed56fe03c2c31c7e781bc4ffadcba760", + "5d95c385eeba0f15db0b80ae151912409128c9c80e554246067b8f6a36d85ea5", + "db5d8a1e345f883e4fcb3871276f170b783c1a1e9da6b6615913368a8526f1c3"}, + {NID_X9_62_prime256v1, NID_sha256, + "5905238877c77421f73e43ee3da6f2d9e2ccad5fc942dcec0cbd25482935faaf416983fe" + "165b1a045ee2bcd2e6dca3bdf46c4310a7461f9a37960ca672d3feb5473e253605fb1ddf" + "d28065b53cb5858a8ad28175bf9bd386a5e471ea7a65c17cc934a9d791e91491eb3754d0" + "3799790fe2d308d16146d5c9b0d0debd97d79ce8", + "519b423d715f8b581f4fa8ee59f4771a5b44c8130b4e3eacca54a56dda72b464", + "041ccbe91c075fc7f4f033bfa248db8fccd3565de94bbfb12f3c59ff46c271bf83ce4014" + "c68811f9a21a1fdb2c0e6113e06db7ca93b7404e78dc7ccd5ca89a4ca9", + "94a1bbb14b906a61a280f245f9e93c7f3b4a6247824f5d33b9670787642a68de", + "f3ac8061b514795b8843e3d6629527ed2afd6b1f6a555a7acabb5e6f79c8c2ac", + "8bf77819ca05a6b2786c76262bf7371cef97b218e96f175a3ccdda2acc058903"}, + {NID_X9_62_prime256v1, NID_sha256, + "c35e2f092553c55772926bdbe87c9796827d17024dbb9233a545366e2e5987dd344deb72" + "df987144b8c6c43bc41b654b94cc856e16b96d7a821c8ec039b503e3d86728c494a967d8" + "3011a0e090b5d54cd47f4e366c0912bc808fbb2ea96efac88fb3ebec9342738e225f7c7c" + "2b011ce375b56621a20642b4d36e060db4524af1", + "0f56db78ca460b055c500064824bed999a25aaf48ebb519ac201537b85479813", + "04e266ddfdc12668db30d4ca3e8f7749432c416044f2d2b8c10bf3d4012aeffa8abfa864" + "04a2e9ffe67d47c587ef7a97a7f456b863b4d02cfc6928973ab5b1cb39", + "6d3e71882c3b83b156bb14e0ab184aa9fb728068d3ae9fac421187ae0b2f34c6", + "976d3a4e9d23326dc0baa9fa560b7c4e53f42864f508483a6473b6a11079b2db", + "1b766e9ceb71ba6c01dcd46e0af462cd4cfa652ae5017d4555b8eeefe36e1932"}, + {NID_X9_62_prime256v1, NID_sha256, + "3c054e333a94259c36af09ab5b4ff9beb3492f8d5b4282d16801daccb29f70fe61a0b37f" + "fef5c04cd1b70e85b1f549a1c4dc672985e50f43ea037efa9964f096b5f62f7ffdf8d6bf" + "b2cc859558f5a393cb949dbd48f269343b5263dcdb9c556eca074f2e98e6d94c2c29a677" + "afaf806edf79b15a3fcd46e7067b7669f83188ee", + "e283871239837e13b95f789e6e1af63bf61c918c992e62bca040d64cad1fc2ef", + "0474ccd8a62fba0e667c50929a53f78c21b8ff0c3c737b0b40b1750b2302b0bde829074e" + "21f3a0ef88b9efdf10d06aa4c295cc1671f758ca0e4cd108803d0f2614", + "ad5e887eb2b380b8d8280ad6e5ff8a60f4d26243e0124c2f31a297b5d0835de2", + "35fb60f5ca0f3ca08542fb3cc641c8263a2cab7a90ee6a5e1583fac2bb6f6bd1", + "ee59d81bc9db1055cc0ed97b159d8784af04e98511d0a9a407b99bb292572e96"}, + {NID_X9_62_prime256v1, NID_sha256, + "0989122410d522af64ceb07da2c865219046b4c3d9d99b01278c07ff63eaf1039cb787ae" + "9e2dd46436cc0415f280c562bebb83a23e639e476a02ec8cff7ea06cd12c86dcc3adefbf" + "1a9e9a9b6646c7599ec631b0da9a60debeb9b3e19324977f3b4f36892c8a38671c8e1cc8" + "e50fcd50f9e51deaf98272f9266fc702e4e57c30", + "a3d2d3b7596f6592ce98b4bfe10d41837f10027a90d7bb75349490018cf72d07", + "04322f80371bf6e044bc49391d97c1714ab87f990b949bc178cb7c43b7c22d89e13c15d5" + "4a5cc6b9f09de8457e873eb3deb1fceb54b0b295da6050294fae7fd999", + "24fc90e1da13f17ef9fe84cc96b9471ed1aaac17e3a4bae33a115df4e5834f18", + "d7c562370af617b581c84a2468cc8bd50bb1cbf322de41b7887ce07c0e5884ca", + "b46d9f2d8c4bf83546ff178f1d78937c008d64e8ecc5cbb825cb21d94d670d89"}, + {NID_X9_62_prime256v1, NID_sha256, + "dc66e39f9bbfd9865318531ffe9207f934fa615a5b285708a5e9c46b7775150e818d7f24" + "d2a123df3672fff2094e3fd3df6fbe259e3989dd5edfcccbe7d45e26a775a5c4329a084f" + "057c42c13f3248e3fd6f0c76678f890f513c32292dd306eaa84a59abe34b16cb5e38d0e8" + "85525d10336ca443e1682aa04a7af832b0eee4e7", + "53a0e8a8fe93db01e7ae94e1a9882a102ebd079b3a535827d583626c272d280d", + "041bcec4570e1ec2436596b8ded58f60c3b1ebc6a403bc5543040ba829630572448af62a" + "4c683f096b28558320737bf83b9959a46ad2521004ef74cf85e67494e1", + "5d833e8d24cc7a402d7ee7ec852a3587cddeb48358cea71b0bedb8fabe84e0c4", + "18caaf7b663507a8bcd992b836dec9dc5703c080af5e51dfa3a9a7c387182604", + "77c68928ac3b88d985fb43fb615fb7ff45c18ba5c81af796c613dfa98352d29c"}, + {NID_X9_62_prime256v1, NID_sha256, + "600974e7d8c5508e2c1aab0783ad0d7c4494ab2b4da265c2fe496421c4df238b0be25f25" + "659157c8a225fb03953607f7df996acfd402f147e37aee2f1693e3bf1c35eab3ae360a2b" + "d91d04622ea47f83d863d2dfecb618e8b8bdc39e17d15d672eee03bb4ce2cc5cf6b217e5" + "faf3f336fdd87d972d3a8b8a593ba85955cc9d71", + "4af107e8e2194c830ffb712a65511bc9186a133007855b49ab4b3833aefc4a1d", + "04a32e50be3dae2c8ba3f5e4bdae14cf7645420d425ead94036c22dd6c4fc59e00d623bf" + "641160c289d6742c6257ae6ba574446dd1d0e74db3aaa80900b78d4ae9", + "e18f96f84dfa2fd3cdfaec9159d4c338cd54ad314134f0b31e20591fc238d0ab", + "8524c5024e2d9a73bde8c72d9129f57873bbad0ed05215a372a84fdbc78f2e68", + "d18c2caf3b1072f87064ec5e8953f51301cada03469c640244760328eb5a05cb"}, + {NID_X9_62_prime256v1, NID_sha256, + "dfa6cb9b39adda6c74cc8b2a8b53a12c499ab9dee01b4123642b4f11af336a91a5c9ce05" + "20eb2395a6190ecbf6169c4cba81941de8e76c9c908eb843b98ce95e0da29c5d43880402" + "64e05e07030a577cc5d176387154eabae2af52a83e85c61c7c61da930c9b19e45d7e34c8" + "516dc3c238fddd6e450a77455d534c48a152010b", + "78dfaa09f1076850b3e206e477494cddcfb822aaa0128475053592c48ebaf4ab", + "048bcfe2a721ca6d753968f564ec4315be4857e28bef1908f61a366b1f03c974790f6757" + "6a30b8e20d4232d8530b52fb4c89cbc589ede291e499ddd15fe870ab96", + "295544dbb2da3da170741c9b2c6551d40af7ed4e891445f11a02b66a5c258a77", + "c5a186d72df452015480f7f338970bfe825087f05c0088d95305f87aacc9b254", + "84a58f9e9d9e735344b316b1aa1ab5185665b85147dc82d92e969d7bee31ca30"}, + {NID_X9_62_prime256v1, NID_sha256, + "51d2547cbff92431174aa7fc7302139519d98071c755ff1c92e4694b58587ea560f72f32" + "fc6dd4dee7d22bb7387381d0256e2862d0644cdf2c277c5d740fa089830eb52bf79d1e75" + "b8596ecf0ea58a0b9df61e0c9754bfcd62efab6ea1bd216bf181c5593da79f10135a9bc6" + "e164f1854bc8859734341aad237ba29a81a3fc8b", + "80e692e3eb9fcd8c7d44e7de9f7a5952686407f90025a1d87e52c7096a62618a", + "04a88bc8430279c8c0400a77d751f26c0abc93e5de4ad9a4166357952fe041e7672d365a" + "1eef25ead579cc9a069b6abc1b16b81c35f18785ce26a10ba6d1381185", + "7c80fd66d62cc076cef2d030c17c0a69c99611549cb32c4ff662475adbe84b22", + "9d0c6afb6df3bced455b459cc21387e14929392664bb8741a3693a1795ca6902", + "d7f9ddd191f1f412869429209ee3814c75c72fa46a9cccf804a2f5cc0b7e739f"}, + {NID_X9_62_prime256v1, NID_sha256, + "558c2ac13026402bad4a0a83ebc9468e50f7ffab06d6f981e5db1d082098065bcff6f21a" + "7a74558b1e8612914b8b5a0aa28ed5b574c36ac4ea5868432a62bb8ef0695d27c1e3ceaf" + "75c7b251c65ddb268696f07c16d2767973d85beb443f211e6445e7fe5d46f0dce70d58a4" + "cd9fe70688c035688ea8c6baec65a5fc7e2c93e8", + "5e666c0db0214c3b627a8e48541cc84a8b6fd15f300da4dff5d18aec6c55b881", + "041bc487570f040dc94196c9befe8ab2b6de77208b1f38bdaae28f9645c4d2bc3aec8160" + "2abd8345e71867c8210313737865b8aa186851e1b48eaca140320f5d8f", + "2e7625a48874d86c9e467f890aaa7cd6ebdf71c0102bfdcfa24565d6af3fdce9", + "2f9e2b4e9f747c657f705bffd124ee178bbc5391c86d056717b140c153570fd9", + "f5413bfd85949da8d83de83ab0d19b2986613e224d1901d76919de23ccd03199"}, + {NID_X9_62_prime256v1, NID_sha256, + "4d55c99ef6bd54621662c3d110c3cb627c03d6311393b264ab97b90a4b15214a5593ba25" + "10a53d63fb34be251facb697c973e11b665cb7920f1684b0031b4dd370cb927ca7168b0b" + "f8ad285e05e9e31e34bc24024739fdc10b78586f29eff94412034e3b606ed850ec2c1900" + "e8e68151fc4aee5adebb066eb6da4eaa5681378e", + "f73f455271c877c4d5334627e37c278f68d143014b0a05aa62f308b2101c5308", + "04b8188bd68701fc396dab53125d4d28ea33a91daf6d21485f4770f6ea8c565dde423f05" + "8810f277f8fe076f6db56e9285a1bf2c2a1dae145095edd9c04970bc4a", + "62f8665fd6e26b3fa069e85281777a9b1f0dfd2c0b9f54a086d0c109ff9fd615", + "1cc628533d0004b2b20e7f4baad0b8bb5e0673db159bbccf92491aef61fc9620", + "880e0bbf82a8cf818ed46ba03cf0fc6c898e36fca36cc7fdb1d2db7503634430"}, + {NID_X9_62_prime256v1, NID_sha256, + "f8248ad47d97c18c984f1f5c10950dc1404713c56b6ea397e01e6dd925e903b4fadfe2c9" + "e877169e71ce3c7fe5ce70ee4255d9cdc26f6943bf48687874de64f6cf30a012512e787b" + "88059bbf561162bdcc23a3742c835ac144cc14167b1bd6727e940540a9c99f3cbb41fb1d" + "cb00d76dda04995847c657f4c19d303eb09eb48a", + "b20d705d9bd7c2b8dc60393a5357f632990e599a0975573ac67fd89b49187906", + "0451f99d2d52d4a6e734484a018b7ca2f895c2929b6754a3a03224d07ae61166ce4737da" + "963c6ef7247fb88d19f9b0c667cac7fe12837fdab88c66f10d3c14cad1", + "72b656f6b35b9ccbc712c9f1f3b1a14cbbebaec41c4bca8da18f492a062d6f6f", + "9886ae46c1415c3bc959e82b760ad760aab66885a84e620aa339fdf102465c42", + "2bf3a80bc04faa35ebecc0f4864ac02d349f6f126e0f988501b8d3075409a26c"}, + {NID_X9_62_prime256v1, NID_sha256, + "3b6ee2425940b3d240d35b97b6dcd61ed3423d8e71a0ada35d47b322d17b35ea0472f35e" + "dd1d252f87b8b65ef4b716669fc9ac28b00d34a9d66ad118c9d94e7f46d0b4f6c2b2d339" + "fd6bcd351241a387cc82609057048c12c4ec3d85c661975c45b300cb96930d89370a327c" + "98b67defaa89497aa8ef994c77f1130f752f94a4", + "d4234bebfbc821050341a37e1240efe5e33763cbbb2ef76a1c79e24724e5a5e7", + "048fb287f0202ad57ae841aea35f29b2e1d53e196d0ddd9aec24813d64c0922fb71f6daf" + "f1aa2dd2d6d3741623eecb5e7b612997a1039aab2e5cf2de969cfea573", + "d926fe10f1bfd9855610f4f5a3d666b1a149344057e35537373372ead8b1a778", + "490efd106be11fc365c7467eb89b8d39e15d65175356775deab211163c2504cb", + "644300fc0da4d40fb8c6ead510d14f0bd4e1321a469e9c0a581464c7186b7aa7"}, + {NID_X9_62_prime256v1, NID_sha256, + "c5204b81ec0a4df5b7e9fda3dc245f98082ae7f4efe81998dcaa286bd4507ca840a53d21" + "b01e904f55e38f78c3757d5a5a4a44b1d5d4e480be3afb5b394a5d2840af42b1b4083d40" + "afbfe22d702f370d32dbfd392e128ea4724d66a3701da41ae2f03bb4d91bb946c7969404" + "cb544f71eb7a49eb4c4ec55799bda1eb545143a7", + "b58f5211dff440626bb56d0ad483193d606cf21f36d9830543327292f4d25d8c", + "0468229b48c2fe19d3db034e4c15077eb7471a66031f28a980821873915298ba76303e8e" + "e3742a893f78b810991da697083dd8f11128c47651c27a56740a80c24c", + "e158bf4a2d19a99149d9cdb879294ccb7aaeae03d75ddd616ef8ae51a6dc1071", + "e67a9717ccf96841489d6541f4f6adb12d17b59a6bef847b6183b8fcf16a32eb", + "9ae6ba6d637706849a6a9fc388cf0232d85c26ea0d1fe7437adb48de58364333"}, + {NID_X9_62_prime256v1, NID_sha256, + "72e81fe221fb402148d8b7ab03549f1180bcc03d41ca59d7653801f0ba853add1f6d29ed" + "d7f9abc621b2d548f8dbf8979bd16608d2d8fc3260b4ebc0dd42482481d548c7075711b5" + "759649c41f439fad69954956c9326841ea6492956829f9e0dc789f73633b40f6ac77bcae" + "6dfc7930cfe89e526d1684365c5b0be2437fdb01", + "54c066711cdb061eda07e5275f7e95a9962c6764b84f6f1f3ab5a588e0a2afb1", + "040a7dbb8bf50cb605eb2268b081f26d6b08e012f952c4b70a5a1e6e7d46af98bbf26dd7" + "d799930062480849962ccf5004edcfd307c044f4e8f667c9baa834eeae", + "646fe933e96c3b8f9f507498e907fdd201f08478d0202c752a7c2cfebf4d061a", + "b53ce4da1aa7c0dc77a1896ab716b921499aed78df725b1504aba1597ba0c64b", + "d7c246dc7ad0e67700c373edcfdd1c0a0495fc954549ad579df6ed1438840851"}, + {NID_X9_62_prime256v1, NID_sha256, + "21188c3edd5de088dacc1076b9e1bcecd79de1003c2414c3866173054dc82dde85169baa" + "77993adb20c269f60a5226111828578bcc7c29e6e8d2dae81806152c8ba0c6ada1986a19" + "83ebeec1473a73a04795b6319d48662d40881c1723a706f516fe75300f92408aa1dc6ae4" + "288d2046f23c1aa2e54b7fb6448a0da922bd7f34", + "34fa4682bf6cb5b16783adcd18f0e6879b92185f76d7c920409f904f522db4b1", + "04105d22d9c626520faca13e7ced382dcbe93498315f00cc0ac39c4821d0d737376c47f3" + "cbbfa97dfcebe16270b8c7d5d3a5900b888c42520d751e8faf3b401ef4", + "a6f463ee72c9492bc792fe98163112837aebd07bab7a84aaed05be64db3086f4", + "542c40a18140a6266d6f0286e24e9a7bad7650e72ef0e2131e629c076d962663", + "4f7f65305e24a6bbb5cff714ba8f5a2cee5bdc89ba8d75dcbf21966ce38eb66f"}, + {NID_X9_62_prime256v1, NID_sha384, + "e0b8596b375f3306bbc6e77a0b42f7469d7e83635990e74aa6d713594a3a24498feff500" + "6790742d9c2e9b47d714bee932435db747c6e733e3d8de41f2f91311f2e9fd8e02565163" + "1ffd84f66732d3473fbd1627e63dc7194048ebec93c95c159b5039ab5e79e42c80b484a9" + "43f125de3da1e04e5bf9c16671ad55a1117d3306", + "b6faf2c8922235c589c27368a3b3e6e2f42eb6073bf9507f19eed0746c79dced", + "04e0e7b99bc62d8dd67883e39ed9fa0657789c5ff556cc1fd8dd1e2a55e9e3f24363fbfd" + "0232b95578075c903a4dbf85ad58f8350516e1ec89b0ee1f5e1362da69", + "9980b9cdfcef3ab8e219b9827ed6afdd4dbf20bd927e9cd01f15762703487007", + "f5087878e212b703578f5c66f434883f3ef414dc23e2e8d8ab6a8d159ed5ad83", + "306b4c6c20213707982dffbb30fba99b96e792163dd59dbe606e734328dd7c8a"}, + {NID_X9_62_prime256v1, NID_sha384, + "099a0131179fff4c6928e49886d2fdb3a9f239b7dd5fa828a52cbbe3fcfabecfbba3e192" + "159b887b5d13aa1e14e6a07ccbb21f6ad8b7e88fee6bea9b86dea40ffb962f38554056fb" + "7c5bb486418915f7e7e9b9033fe3baaf9a069db98bc02fa8af3d3d1859a11375d6f98aa2" + "ce632606d0800dff7f55b40f971a8586ed6b39e9", + "118958fd0ff0f0b0ed11d3cf8fa664bc17cdb5fed1f4a8fc52d0b1ae30412181", + "04afda82260c9f42122a3f11c6058839488f6d7977f6f2a263c67d06e27ea2c3550ae2bb" + "dd2207c590332c5bfeb4c8b5b16622134bd4dc55382ae806435468058b", + "23129a99eeda3d99a44a5778a46e8e7568b91c31fb7a8628c5d9820d4bed4a6b", + "e446600cab1286ebc3bb332012a2f5cc33b0a5ef7291d5a62a84de5969d77946", + "cf89b12793ee1792eb26283b48fa0bdcb45ae6f6ad4b02564bf786bb97057d5a"}, + {NID_X9_62_prime256v1, NID_sha384, + "0fbc07ea947c946bea26afa10c51511039b94ddbc4e2e4184ca3559260da24a14522d149" + "7ca5e77a5d1a8e86583aeea1f5d4ff9b04a6aa0de79cd88fdb85e01f171143535f2f7c23" + "b050289d7e05cebccdd131888572534bae0061bdcc3015206b9270b0d5af9f1da2f9de91" + "772d178a632c3261a1e7b3fb255608b3801962f9", + "3e647357cd5b754fad0fdb876eaf9b1abd7b60536f383c81ce5745ec80826431", + "04702b2c94d039e590dd5c8f9736e753cf5824aacf33ee3de74fe1f5f7c858d5ed0c2889" + "4e907af99fb0d18c9e98f19ac80dd77abfa4bebe45055c0857b82a0f4d", + "9beab7722f0bcb468e5f234e074170a60225255de494108459abdf603c6e8b35", + "c4021fb7185a07096547af1fb06932e37cf8bd90cf593dea48d48614fa237e5e", + "7fb45d09e2172bec8d3e330aa06c43fbb5f625525485234e7714b7f6e92ba8f1"}, + {NID_X9_62_prime256v1, NID_sha384, + "1e38d750d936d8522e9db1873fb4996bef97f8da3c6674a1223d29263f1234a90b751785" + "316444e9ba698bc8ab6cd010638d182c9adad4e334b2bd7529f0ae8e9a52ad60f59804b2" + "d780ed52bdd33b0bf5400147c28b4304e5e3434505ae7ce30d4b239e7e6f0ecf058badd5" + "b388eddbad64d24d2430dd04b4ddee98f972988f", + "76c17c2efc99891f3697ba4d71850e5816a1b65562cc39a13da4b6da9051b0fd", + "04d12512e934c367e4c4384dbd010e93416840288a0ba00b299b4e7c0d91578b57ebf883" + "5661d9b578f18d14ae4acf9c357c0dc8b7112fc32824a685ed72754e23", + "77cffa6f9a73904306f9fcd3f6bbb37f52d71e39931bb4aec28f9b076e436ccf", + "4d5a9d95b0f09ce8704b0f457b39059ee606092310df65d3f8ae7a2a424cf232", + "7d3c014ca470a73cef1d1da86f2a541148ad542fbccaf9149d1b0b030441a7eb"}, + {NID_X9_62_prime256v1, NID_sha384, + "abcf0e0f046b2e0672d1cc6c0a114905627cbbdefdf9752f0c31660aa95f2d0ede72d179" + "19a9e9b1add3213164e0c9b5ae3c76f1a2f79d3eeb444e6741521019d8bd5ca391b28c10" + "63347f07afcfbb705be4b52261c19ebaf1d6f054a74d86fb5d091fa7f229450996b76f0a" + "da5f977b09b58488eebfb5f5e9539a8fd89662ab", + "67b9dea6a575b5103999efffce29cca688c781782a41129fdecbce76608174de", + "04b4238b029fc0b7d9a5286d8c29b6f3d5a569e9108d44d889cd795c4a385905be8cb3ff" + "f8f6cca7187c6a9ad0a2b1d9f40ae01b32a7e8f8c4ca75d71a1fffb309", + "d02617f26ede3584f0afcfc89554cdfb2ae188c192092fdde3436335fafe43f1", + "26fd9147d0c86440689ff2d75569795650140506970791c90ace0924b44f1586", + "00a34b00c20a8099df4b0a757cbef8fea1cb3ea7ced5fbf7e987f70b25ee6d4f"}, + {NID_X9_62_prime256v1, NID_sha384, + "dc3d4884c741a4a687593c79fb4e35c5c13c781dca16db561d7e393577f7b62ca41a6e25" + "9fc1fb8d0c4e1e062517a0fdf95558b7799f20c211796167953e6372c11829beec64869d" + "67bf3ee1f1455dd87acfbdbcc597056e7fb347a17688ad32fda7ccc3572da7677d7255c2" + "61738f07763cd45973c728c6e9adbeecadc3d961", + "ecf644ea9b6c3a04fdfe2de4fdcb55fdcdfcf738c0b3176575fa91515194b566", + "04c3bdc7c795ec94620a2cfff614c13a3390a5e86c892e53a24d3ed22228bc85bf70480f" + "c5cf4aacd73e24618b61b5c56c1ced8c4f1b869580ea538e68c7a61ca3", + "53291d51f68d9a12d1dcdc58892b2f786cc15f631f16997d2a49bace513557d4", + "a860c8b286edf973ce4ce4cf6e70dc9bbf3818c36c023a845677a9963705df8b", + "5630f986b1c45e36e127dd7932221c4272a8cc6e255e89f0f0ca4ec3a9f76494"}, + {NID_X9_62_prime256v1, NID_sha384, + "719bf1911ae5b5e08f1d97b92a5089c0ab9d6f1c175ac7199086aeeaa416a17e6d6f8486" + "c711d386f284f096296689a54d330c8efb0f5fa1c5ba128d3234a3da856c2a94667ef710" + "3616a64c913135f4e1dc50e38daa60610f732ad1bedfcc396f87169392520314a6b6b9af" + "6793dbabad4599525228cc7c9c32c4d8e097ddf6", + "4961485cbc978f8456ec5ac7cfc9f7d9298f99415ecae69c8491b258c029bfee", + "048d40bf2299e05d758d421972e81cfb0cce68b949240dc30f315836acc70bef035674e6" + "f77f8b46f46cca937d83b128dffbe9bd7e0d3d08aa2cbbfdfb16f72c9a", + "373a825b5a74b7b9e02f8d4d876b577b4c3984168d704ba9f95b19c05ed590af", + "ef6fb386ad044b63feb7445fa16b10319018e9cea9ef42bca83bdad01992234a", + "ac1f42f652eb1786e57be01d847c81f7efa072ba566d4583af4f1551a3f76c65"}, + {NID_X9_62_prime256v1, NID_sha384, + "7cf19f4c851e97c5bca11a39f0074c3b7bd3274e7dd75d0447b7b84995dfc9f716bf08c2" + "5347f56fcc5e5149cb3f9cfb39d408ace5a5c47e75f7a827fa0bb9921bb5b23a6053dbe1" + "fa2bba341ac874d9b1333fc4dc224854949f5c8d8a5fedd02fb26fdfcd3be351aec0fcbe" + "f18972956c6ec0effaf057eb4420b6d28e0c008c", + "587907e7f215cf0d2cb2c9e6963d45b6e535ed426c828a6ea2fb637cca4c5cbd", + "04660da45c413cc9c9526202c16b402af602d30daaa7c342f1e722f15199407f31e6f8cb" + "b06913cc718f2d69ba2fb3137f04a41c27c676d1a80fbf30ea3ca46439", + "6b8eb7c0d8af9456b95dd70561a0e902863e6dfa1c28d0fd4a0509f1c2a647b2", + "08fabf9b57de81875bfa7a4118e3e44cfb38ec6a9b2014940207ba3b1c583038", + "a58d199b1deba7350616230d867b2747a3459421811c291836abee715b8f67b4"}, + {NID_X9_62_prime256v1, NID_sha384, + "b892ffabb809e98a99b0a79895445fc734fa1b6159f9cddb6d21e510708bdab6076633ac" + "30aaef43db566c0d21f4381db46711fe3812c5ce0fb4a40e3d5d8ab24e4e82d3560c6dc7" + "c37794ee17d4a144065ef99c8d1c88bc22ad8c4c27d85ad518fa5747ae35276fc104829d" + "3f5c72fc2a9ea55a1c3a87007cd133263f79e405", + "24b1e5676d1a9d6b645a984141a157c124531feeb92d915110aef474b1e27666", + "04b4909a5bdf25f7659f4ef35e4b811429fb2c59126e3dad09100b46aea6ebe7a6760ae0" + "15fa6af5c9749c4030fdb5de6e58c6b5b1944829105cf7edf7d3a22cfb", + "88794923d8943b5dbcc7a7a76503880ff7da632b0883aaa60a9fcc71bf880fd6", + "6ec9a340b77fae3c7827fa96d997e92722ff2a928217b6dd3c628f3d49ae4ce6", + "637b54bbcfb7e7d8a41ea317fcfca8ad74eb3bb6b778bc7ef9dec009281976f7"}, + {NID_X9_62_prime256v1, NID_sha384, + "8144e37014c95e13231cbd6fa64772771f93b44e37f7b02f592099cc146343edd4f4ec9f" + "a1bc68d7f2e9ee78fc370443aa2803ff4ca52ee49a2f4daf2c8181ea7b8475b3a0f608fc" + "3279d09e2d057fbe3f2ffbe5133796124781299c6da60cfe7ecea3abc30706ded2cdf18f" + "9d788e59f2c31662df3abe01a9b12304fb8d5c8c", + "bce49c7b03dcdc72393b0a67cf5aa5df870f5aaa6137ada1edc7862e0981ec67", + "04c786d9421d67b72b922cf3def2a25eeb5e73f34543eb50b152e738a98afb0ca5679627" + "1e79e2496f9e74b126b1123a3d067de56b5605d6f51c8f6e1d5bb93aba", + "89e690d78a5e0d2b8ce9f7fcbf34e2605fd9584760fa7729043397612dd21f94", + "07e5054c384839584624e8d730454dc27e673c4a90cbf129d88b91250341854d", + "f7e665b88614d0c5cbb3007cafe713763d81831525971f1747d92e4d1ca263a7"}, + {NID_X9_62_prime256v1, NID_sha384, + "a3683d120807f0a030feed679785326698c3702f1983eaba1b70ddfa7f0b3188060b845e" + "2b67ed57ee68087746710450f7427cb34655d719c0acbc09ac696adb4b22aba1b9322b71" + "11076e67053a55f62b501a4bca0ad9d50a868f51aeeb4ef27823236f5267e8da83e14304" + "7422ce140d66e05e44dc84fb3a4506b2a5d7caa8", + "73188a923bc0b289e81c3db48d826917910f1b957700f8925425c1fb27cabab9", + "0486662c014ab666ee770723be8da38c5cd299efc6480fc6f8c3603438fa8397b9f26b33" + "07a650c3863faaa5f642f3ba1384c3d3a02edd3d48c657c269609cc3fc", + "ec90584ab3b383b590626f36ed4f5110e49888aec7ae7a9c5ea62dd2dc378666", + "13e9ad59112fde3af4163eb5c2400b5e9a602576d5869ac1c569075f08c90ff6", + "708ac65ff2b0baaccc6dd954e2a93df46016bd04457636de06798fcc17f02be5"}, + {NID_X9_62_prime256v1, NID_sha384, + "b1df8051b213fc5f636537e37e212eb20b2423e6467a9c7081336a870e6373fc835899d5" + "9e546c0ac668cc81ce4921e88f42e6da2a109a03b4f4e819a17c955b8d099ec6b282fb49" + "5258dca13ec779c459da909475519a3477223c06b99afbd77f9922e7cbef844b93f3ce5f" + "50db816b2e0d8b1575d2e17a6b8db9111d6da578", + "f637d55763fe819541588e0c603f288a693cc66823c6bb7b8e003bd38580ebce", + "0474a4620c578601475fc169a9b84be613b4a16cb6acab8fd98848a6ec9fbd133d42b9e3" + "5d347c107e63bd55f525f915bcf1e3d2b81d002d3c39acf10fc30645a1", + "4d578f5099636234d9c1d566f1215d5d887ae5d47022be17dbf32a11a03f053b", + "113a933ebc4d94ce1cef781e4829df0c493b0685d39fb2048ce01b21c398dbba", + "3005bd4ec63dbd04ce9ff0c6246ad65d27fcf62edb2b7e461589f9f0e7446ffd"}, + {NID_X9_62_prime256v1, NID_sha384, + "0b918ede985b5c491797d0a81446b2933be312f419b212e3aae9ba5914c00af431747a9d" + "287a7c7761e9bcbc8a12aaf9d4a76d13dad59fc742f8f218ef66eb67035220a07acc1a35" + "7c5b562ecb6b895cf725c4230412fefac72097f2c2b829ed58742d7c327cad0f1058df1b" + "ddd4ae9c6d2aba25480424308684cecd6517cdd8", + "2e357d51517ff93b821f895932fddded8347f32596b812308e6f1baf7dd8a47f", + "047e4078a1d50c669fb2996dd9bacb0c3ac7ede4f58fa0fa1222e78dbf5d1f41860014e4" + "6e90cc171fbb83ea34c6b78202ea8137a7d926f0169147ed5ae3d6596f", + "be522b0940b9a40d84bf790fe6abdc252877e671f2efa63a33a65a512fc2aa5c", + "a26b9ad775ac37ff4c7f042cdc4872c5e4e5e800485f488ddfaaed379f468090", + "f88eae2019bebbba62b453b8ee3472ca5c67c267964cffe0cf2d2933c1723dff"}, + {NID_X9_62_prime256v1, NID_sha384, + "0fab26fde1a4467ca930dbe513ccc3452b70313cccde2994eead2fde85c8da1db84d7d06" + "a024c9e88629d5344224a4eae01b21a2665d5f7f36d5524bf5367d7f8b6a71ea05d413d4" + "afde33777f0a3be49c9e6aa29ea447746a9e77ce27232a550b31dd4e7c9bc8913485f2dc" + "83a56298051c92461fd46b14cc895c300a4fb874", + "77d60cacbbac86ab89009403c97289b5900466856887d3e6112af427f7f0f50b", + "04a62032dfdb87e25ed0c70cad20d927c7effeb2638e6c88ddd670f74df16090e544c5ee" + "2cf740ded468f5d2efe13daa7c5234645a37c073af35330d03a4fed976", + "06c1e692b045f425a21347ecf72833d0242906c7c1094f805566cdcb1256e394", + "eb173b51fb0aec318950d097e7fda5c34e529519631c3e2c9b4550b903da417d", + "ca2c13574bf1b7d56e9dc18315036a31b8bceddf3e2c2902dcb40f0cc9e31b45"}, + {NID_X9_62_prime256v1, NID_sha384, + "7843f157ef8566722a7d69da67de7599ee65cb3975508f70c612b3289190e364141781e0" + "b832f2d9627122742f4b5871ceeafcd09ba5ec90cae6bcc01ae32b50f13f63918dfb5177" + "df9797c6273b92d103c3f7a3fc2050d2b196cc872c57b77f9bdb1782d4195445fcc6236d" + "d8bd14c8bcbc8223a6739f6a17c9a861e8c821a6", + "486854e77962117f49e09378de6c9e3b3522fa752b10b2c810bf48db584d7388", + "04760b5624bd64d19c866e54ccd74ad7f98851afdbc3ddeae3ec2c52a135be9cfafeca15" + "ce9350877102eee0f5af18b2fed89dc86b7df0bf7bc2963c1638e36fe8", + "e4f77c6442eca239b01b0254e11a4182782d96f48ab521cc3d1d68df12b5a41a", + "bdff14e4600309c2c77f79a25963a955b5b500a7b2d34cb172cd6acd52905c7b", + "b0479cdb3df79923ec36a104a129534c5d59f622be7d613aa04530ad2507d3a2"}, + {NID_X9_62_prime256v1, NID_sha512, + "6c8572b6a3a4a9e8e03dbeed99334d41661b8a8417074f335ab1845f6cc852adb8c01d98" + "20fcf8e10699cc827a8fbdca2cbd46cc66e4e6b7ba41ec3efa733587e4a30ec552cd8dda" + "b8163e148e50f4d090782897f3ddac84a41e1fcfe8c56b6152c0097b0d634b41011471ff" + "d004f43eb4aafc038197ec6bae2b4470e869bded", + "9dd0d3a3d514c2a8adb162b81e3adfba3299309f7d2018f607bdb15b1a25f499", + "046b738de3398b6ac57b9591f9d7985dd4f32137ad3460dcf8970c1390cb9eaf8d83bc61" + "e26d2bbbd3cf2d2ab445a2bc4ab5dde41f4a13078fd1d3cc36ab596d57", + "9106192170ccb3c64684d48287bb81bbed51b40d503462c900e5c7aae43e380a", + "275fa760878b4dc05e9d157fedfd8e9b1c9c861222a712748cb4b7754c043fb1", + "699d906bb8435a05345af3b37e3b357786939e94caae257852f0503adb1e0f7e"}, + {NID_X9_62_prime256v1, NID_sha512, + "7e3c8fe162d48cc8c5b11b5e5ebc05ebc45c439bdbc0b0902145921b8383037cb0812222" + "031598cd1a56fa71694fbd304cc62938233465ec39c6e49f57dfe823983b6923c4e86563" + "3949183e6b90e9e06d8275f3907d97967d47b6239fe2847b7d49cf16ba69d2862083cf1b" + "ccf7afe34fdc90e21998964107b64abe6b89d126", + "f9bf909b7973bf0e3dad0e43dcb2d7fa8bda49dbe6e5357f8f0e2bd119be30e6", + "04f2a6674d4e86152a527199bed293fa63acde1b4d8a92b62e552210ba45c38792c72565" + "c24f0eee6a094af341ddd8579747b865f91c8ed5b44cda8a19cc93776f", + "e547791f7185850f03d0c58419648f65b9d29cdc22ed1de2a64280220cfcafba", + "4782903d2aaf8b190dab5cae2223388d2d8bd845b3875d37485c54e1ded1d3d8", + "dfb40e406bfa074f0bf832771b2b9f186e2211f0bca279644a0ca8559acf39da"}, + {NID_X9_62_prime256v1, NID_sha512, + "d5aa8ac9218ca661cd177756af6fbb5a40a3fecfd4eea6d5872fbb9a2884784aa9b5f0c0" + "23a6e0da5cf6364754ee6465b4ee2d0ddc745b02994c98427a213c849537da5a4477b3ab" + "fe02648be67f26e80b56a33150490d062aaac137aa47f11cfeddba855bab9e4e028532a5" + "63326d927f9e6e3292b1fb248ee90b6f429798db", + "724567d21ef682dfc6dc4d46853880cfa86fe6fea0efd51fac456f03c3d36ead", + "0470b877b5e365fcf08140b1eca119baba662879f38e059d074a2cb60b03ea5d395f56f9" + "4d591df40b9f3b8763ac4b3dbe622c956d5bd0c55658b6f46fa3deb201", + "79d6c967ed23c763ece9ca4b026218004c84dc2d4ccc86cf05c5d0f791f6279b", + "2ba2ea2d316f8937f184ad3028e364574d20a202e4e7513d7af57ac2456804d1", + "64fe94968d18c5967c799e0349041b9e40e6c6c92ebb475e80dd82f51cf07320"}, + {NID_X9_62_prime256v1, NID_sha512, + "790b06054afc9c3fc4dfe72df19dd5d68d108cfcfca6212804f6d534fd2fbe489bd8f64b" + "f205ce04bcb50124a12ce5238fc3fe7dd76e6fa640206af52549f133d593a1bfd423ab73" + "7f3326fa79433cde293236f90d4238f0dd38ed69492ddbd9c3eae583b6325a95dec3166f" + "e52b21658293d8c137830ef45297d67813b7a508", + "29c5d54d7d1f099d50f949bfce8d6073dae059c5a19cc70834722f18a7199edd", + "043088d4f45d274cc5f418c8ecc4cbcf96be87491f420250f8cbc01cdf2503ec47634db4" + "8198129237ed068c88ff5809f6211921a6258f548f4b64dd125921b78b", + "0508ad7774908b5705895fda5c3b7a3032bf85dab7232bf981177019f3d76460", + "acd9f3b63626c5f32103e90e1dd1695907b1904aa9b14f2132caef331321971b", + "15c04a8bd6c13ed5e9961814b2f406f064670153e4d5465dcef63c1d9dd52a87"}, + {NID_X9_62_prime256v1, NID_sha512, + "6d549aa87afdb8bfa60d22a68e2783b27e8db46041e4df04be0c261c4734b608a96f198d" + "1cdb8d082ae48579ec9defcf21fbc72803764a58c31e5323d5452b9fb57c8991d3174914" + "0da7ef067b18bf0d7dfbae6eefd0d8064f334bf7e9ec1e028daed4e86e17635ec2e409a3" + "ed1238048a45882c5c57501b314e636b9bc81cbe", + "0d8095da1abba06b0d349c226511f642dabbf1043ad41baa4e14297afe8a3117", + "0475a45758ced45ecf55f755cb56ca2601d794ebeaeb2e6107fe2fc443f580e23c5303d4" + "7d5a75ec821d51a2ee7548448208c699eca0cd89810ffc1aa4faf81ead", + "5165c54def4026ab648f7768c4f1488bcb183f6db7ffe02c7022a529a116482a", + "ebc85fc4176b446b3384ccc62fc2526b45665561a0e7e9404ac376c90e450b59", + "8b2c09428e62c5109d17ed0cf8f9fd7c370d018a2a73f701effc9b17d04852c6"}, + {NID_X9_62_prime256v1, NID_sha512, + "1906e48b7f889ee3ff7ab0807a7aa88f53f4018808870bfed6372a77330c737647961324" + "c2b4d46f6ee8b01190474951a701b048ae86579ff8e3fc889fecf926b17f98958ac7534e" + "6e781ca2db2baa380dec766cfb2a3eca2a9d5818967d64dfab84f768d24ec122eebacaab" + "0a4dc3a75f37331bb1c43dd8966cc09ec4945bbd", + "52fe57da3427b1a75cb816f61c4e8e0e0551b94c01382b1a80837940ed579e61", + "042177e20a2092a46667debdcc21e7e45d6da72f124adecbc5ada6a7bcc7b401d5550e46" + "8f2626070a080afeeb98edd75a721eb773c8e62149f3e903cf9c4d7b61", + "0464fe9674b01ff5bd8be21af3399fad66f90ad30f4e8ee6e2eb9bcccfd5185c", + "f8250f073f34034c1cde58f69a85e2f5a030703ebdd4dbfb98d3b3690db7d114", + "a9e83e05f1d6e0fef782f186bedf43684c825ac480174d48b0e4d31505e27498"}, + {NID_X9_62_prime256v1, NID_sha512, + "7b59fef13daf01afec35dea3276541be681c4916767f34d4e874464d20979863ee77ad0f" + "d1635bcdf93e9f62ed69ae52ec90aab5bbf87f8951213747ccec9f38c775c1df1e9d7f73" + "5c2ce39b42edb3b0c5086247556cfea539995c5d9689765288ec600848ecf085c01ca738" + "bbef11f5d12d4457db988b4add90be00781024ad", + "003d91611445919f59bfe3ca71fe0bfdeb0e39a7195e83ac03a37c7eceef0df2", + "047b9c592f61aae0555855d0b9ebb6fd00fb6746e8842e2523565c858630b9ba00d35b2e" + "168b1875bbc563bea5e8d63c4e38957c774a65e762959a349eaf263ba0", + "ef9df291ea27a4b45708f7608723c27d7d56b7df0599a54bc2c2fabbff373b40", + "66d057fd39958b0e4932bacd70a1769bbadcb62e4470937b45497a3d4500fabb", + "6c853b889e18b5a49ee54b54dd1aaedfdd642e30eba171c5cab677f0df9e7318"}, + {NID_X9_62_prime256v1, NID_sha512, + "041a6767a935dc3d8985eb4e608b0cbfebe7f93789d4200bcfe595277ac2b0f402889b58" + "0b72def5da778a680fd380c955421f626d52dd9a83ea180187b850e1b72a4ec6dd63235e" + "598fd15a9b19f8ce9aec1d23f0bd6ea4d92360d50f951152bc9a01354732ba0cf90aaed3" + "3c307c1de8fa3d14f9489151b8377b57c7215f0b", + "48f13d393899cd835c4193670ec62f28e4c4903e0bbe5817bf0996831a720bb7", + "0482a1a96f4648393c5e42633ecdeb1d8245c78c5ea236b5bab460dedcc8924bc0e8cbf0" + "3c34b5154f876de19f3bb6fd43cd2eabf6e7c95467bcfa8c8fc42d76fd", + "efed736e627899fea944007eea39a4a63c0c2e26491cd12adb546be3e5c68f7d", + "cf7fc24bdaa09ac0cca8497e13298b961380668613c7493954048c06385a7044", + "f38b1c8306cf82ab76ee3a772b14416b49993fe11f986e9b0f0593c52ec91525"}, + {NID_X9_62_prime256v1, NID_sha512, + "7905a9036e022c78b2c9efd40b77b0a194fbc1d45462779b0b76ad30dc52c564e48a493d" + "8249a061e62f26f453ba566538a4d43c64fb9fdbd1f36409316433c6f074e1b47b544a84" + "7de25fc67d81ac801ed9f7371a43da39001c90766f943e629d74d0436ba1240c3d7fab99" + "0d586a6d6ef1771786722df56448815f2feda48f", + "95c99cf9ec26480275f23de419e41bb779590f0eab5cf9095d37dd70cb75e870", + "0442c292b0fbcc9f457ae361d940a9d45ad9427431a105a6e5cd90a345fe3507f7313b08" + "fd2fa351908b3178051ee782cc62b9954ad95d4119aa564900f8ade70c", + "4c08dd0f8b72ae9c674e1e448d4e2afe3a1ee69927fa23bbff3716f0b99553b7", + "f2bc35eb1b8488b9e8d4a1dbb200e1abcb855458e1557dc1bf988278a174eb3b", + "ed9a2ec043a1d578e8eba6f57217976310e8674385ad2da08d6146c629de1cd9"}, + {NID_X9_62_prime256v1, NID_sha512, + "cf25e4642d4f39d15afb7aec79469d82fc9aedb8f89964e79b749a852d931d3743650280" + "4e39555f5a3c75dd958fd5291ada647c1a5e38fe7b1048f16f2b711fdd5d39acc0812ca6" + "5bd50d7f8119f2fd195ab16633503a78ee9102c1f9c4c22568e0b54bd4fa3f5ff7b49160" + "bf23e7e2231b1ebebbdaf0e4a7d4484158a87e07", + "e15e835d0e2217bc7c6f05a498f20af1cd56f2f165c23d225eb3360aa2c5cbcf", + "0489dd22052ec3ab4840206a62f2270c21e7836d1a9109a3407dd0974c7802b9aee91609" + "ba35c7008b080c77a9068d97a14ca77b97299e74945217672b2fd5faf0", + "c9f621441c235fc47ec34eef4c08625df1ec74918e1f86075b753f2589f4c60b", + "a70d1a2d555d599bfb8c9b1f0d43725341151d17a8d0845fa56f3563703528a7", + "4e05c45adf41783e394a5312f86e66871c4be4896948c85966879d5c66d54b37"}, + {NID_X9_62_prime256v1, NID_sha512, + "7562c445b35883cc937be6349b4cefc3556a80255d70f09e28c3f393daac19442a7eeced" + "cdfbe8f7628e30cd8939537ec56d5c9645d43340eb4e78fc5dd4322de8a07966b262770d" + "7ff13a071ff3dce560718e60ed3086b7e0003a6abafe91af90af86733ce8689440bf73d2" + "aa0acfe9776036e877599acbabfcb03bb3b50faa", + "808c08c0d77423a6feaaffc8f98a2948f17726e67c15eeae4e672edbe388f98c", + "04b0c0ad5e1f6001d8e9018ec611b2e3b91923e69fa6c98690ab644d650f640c42610539" + "c0b9ed21ac0a2f27527c1a61d9b47cbf033187b1a6ada006eb5b2662ed", + "1f6d4a905c761a53d54c362976717d0d7fc94d222bb5489e4830080a1a67535d", + "83404dcf8320baf206381800071e6a75160342d19743b4f176960d669dd03d07", + "3f75dcf102008b2989f81683ae45e9f1d4b67a6ef6fd5c8af44828af80e1cfb5"}, + {NID_X9_62_prime256v1, NID_sha512, + "051c2db8e71e44653ea1cb0afc9e0abdf12658e9e761bfb767c20c7ab4adfcb18ed9b5c3" + "72a3ac11d8a43c55f7f99b33355437891686d42362abd71db8b6d84dd694d6982f061217" + "8a937aa934b9ac3c0794c39027bdd767841c4370666c80dbc0f8132ca27474f553d266de" + "efd7c9dbad6d734f9006bb557567701bb7e6a7c9", + "f7c6315f0081acd8f09c7a2c3ec1b7ece20180b0a6365a27dcd8f71b729558f9", + "04250f7112d381c1751860045d9bcaf20dbeb25a001431f96ac6f19109362ffebb49fba9" + "efe73546135a5a31ab3753e247034741ce839d3d94bd73936c4a17e4aa", + "68c299be2c0c6d52d208d5d1a9e0ffa2af19b4833271404e5876e0aa93987866", + "7b195e92d2ba95911cda7570607e112d02a1c847ddaa33924734b51f5d81adab", + "10d9f206755cef70ab5143ac43f3f8d38aea2644f31d52eaf3b472ee816e11e5"}, + {NID_X9_62_prime256v1, NID_sha512, + "4dcb7b62ba31b866fce7c1feedf0be1f67bf611dbc2e2e86f004422f67b3bc1839c6958e" + "b1dc3ead137c3d7f88aa97244577a775c8021b1642a8647bba82871e3c15d0749ed343ea" + "6cad38f123835d8ef66b0719273105e924e8685b65fd5dc430efbc35b05a6097f17ebc59" + "43cdcd9abcba752b7f8f37027409bd6e11cd158f", + "f547735a9409386dbff719ce2dae03c50cb437d6b30cc7fa3ea20d9aec17e5a5", + "044ca87c5845fb04c2f76ae3273073b0523e356a445e4e95737260eba9e2d021db0f8647" + "5d07f82655320fdf2cd8db23b21905b1b1f2f9c48e2df87e24119c4880", + "91bd7d97f7ed3253cedefc144771bb8acbbda6eb24f9d752bbe1dd018e1384c7", + "008c1755d3df81e64e25270dbaa9396641556df7ffc7ac9add6739c382705397", + "77df443c729b039aded5b516b1077fecdd9986402d2c4b01734ba91e055e87fc"}, + {NID_X9_62_prime256v1, NID_sha512, + "efe55737771070d5ac79236b04e3fbaf4f2e9bed187d1930680fcf1aba769674bf426310" + "f21245006f528779347d28b8aeacd2b1d5e3456dcbf188b2be8c07f19219e4067c1e7c97" + "14784285d8bac79a76b56f2e2676ea93994f11eb573af1d03fc8ed1118eafc7f07a82f32" + "63c33eb85e497e18f435d4076a774f42d276c323", + "26a1aa4b927a516b661986895aff58f40b78cc5d0c767eda7eaa3dbb835b5628", + "0428afa3b0f81a0e95ad302f487a9b679fcdef8d3f40236ec4d4dbf4bb0cbba8b2bb4ac1" + "be8405cbae8a553fbc28e29e2e689fabe7def26d653a1dafc023f3cecf", + "f98e1933c7fad4acbe94d95c1b013e1d6931fa8f67e6dbb677b564ef7c3e56ce", + "15a9a5412d6a03edd71b84c121ce9a94cdd166e40da9ce4d79f1afff6a395a53", + "86bbc2b6c63bad706ec0b093578e3f064736ec69c0dba59b9e3e7f73762a4dc3"}, + {NID_X9_62_prime256v1, NID_sha512, + "ea95859cc13cccb37198d919803be89c2ee10befdcaf5d5afa09dcc529d333ae1e4ffd3b" + "d8ba8642203badd7a80a3f77eeee9402eed365d53f05c1a995c536f8236ba6b6ff889739" + "3506660cc8ea82b2163aa6a1855251c87d935e23857fe35b889427b449de7274d7754bde" + "ace960b4303c5dd5f745a5cfd580293d6548c832", + "6a5ca39aae2d45aa331f18a8598a3f2db32781f7c92efd4f64ee3bbe0c4c4e49", + "04c62cc4a39ace01006ad48cf49a3e71466955bbeeca5d318d672695df926b3aa4c85ccf" + "517bf2ebd9ad6a9e99254def0d74d1d2fd611e328b4a3988d4f045fe6f", + "dac00c462bc85bf39c31b5e01df33e2ec1569e6efcb334bf18f0951992ac6160", + "6e7ff8ec7a5c48e0877224a9fa8481283de45fcbee23b4c252b0c622442c26ad", + "3dfac320b9c873318117da6bd856000a392b815659e5aa2a6a1852ccb2501df3"}, + {NID_secp384r1, NID_sha224, + "39f0b25d4c15b09a0692b22fbacbb5f8aee184cb75887e2ebe0cd3be5d3815d29f9b587e" + "10b3168c939054a89df11068e5c3fac21af742bf4c3e9512f5569674e7ad8b39042bcd73" + "e4b7ce3e64fbea1c434ed01ad4ad8b5b569f6a0b9a1144f94097925672e59ba97bc4d33b" + "e2fa21b46c3dadbfb3a1f89afa199d4b44189938", + "0af857beff08046f23b03c4299eda86490393bde88e4f74348886b200555276b93b37d4f" + "6fdec17c0ea581a30c59c727", + "0400ea9d109dbaa3900461a9236453952b1f1c2a5aa12f6d500ac774acdff84ab7cb71a0" + "f91bcd55aaa57cb8b4fbb3087d0fc0e3116c9e94be583b02b21b1eb168d8facf39552793" + "60cbcd86e04ee50751054cfaebcf542538ac113d56ccc38b3e", + "e2f0ce83c5bbef3a6eccd1744f893bb52952475d2531a2854a88ff0aa9b12c65961e2e51" + "7fb334ef40e0c0d7a31ed5f5", + "c36e5f0d3de71411e6e519f63e0f56cff432330a04fefef2993fdb56343e49f2f7db5fca" + "b7728acc1e33d4692553c02e", + "0d4064399d58cd771ab9420d438757f5936c3808e97081e457bc862a0c905295dca60ee9" + "4f4537591c6c7d217453909b"}, + {NID_secp384r1, NID_sha224, + "5a3c80e608ed3ac75a6e45f6e94d374271a6d42b67a481860d5d309cc8b37c79cb61f171" + "6dc8aa84cb309ef9d68eb7fc6cf4b42333f316a5c30e74198c8b340926e340c5de47674a" + "707293c4aa2a1a2274a602f01c26b156e895499c60b38ef53fc2032e7485c168d73700d6" + "fa14232596a0e4997854a0b05d02e351b9d3de96", + "047dd5baab23f439ec23b58b7e6ff4cc37813cccb4ea73bb2308e6b82b3170edfe0e131e" + "ca50841bf1b686e651c57246", + "04de92ff09af2950854a70f2178d2ed50cc7042a7188301a1ea81d9629ad3c29795cb7f0" + "d56630a401e4d6e5bed0068d1e6135adbd8624130735e64e65ecbd43770dcc12b28e737b" + "5ed033666f34c918eb5589508e4a13b9243374a118a628dd0b", + "f3922351d14f1e5af84faab12fe57ded30f185afe5547aeb3061104740ecc42a8df0c27f" + "3877b4d855642b78938c4e05", + "38e181870cb797c1f4e6598cfd032add1cb60447d33473038d06df73919f844eddd16f40" + "f911075f8a4bacc0d924e684", + "a58dd1ca18aa31277de66c30c3bb7a14b53705ce6c547ed2cb0e336f63c42809422efffc" + "c722d1155f2254330a02b278"}, + {NID_secp384r1, NID_sha224, + "e7d974c5dbd3bfb8a2fb92fdd782f997d04be79e9713944ce13c5eb6f75dfdec811b7ee4" + "b3859114b07f263846ae13f795eec8f3cb5b7565baff68e0fdd5e09ba8b176d5a71cb03f" + "bc5546e6937fba560acb4db24bd42de1851432b96e8ca4078313cb849bce29c9d8052586" + "01d67cd0259e255f3048682e8fdbdda3398c3e31", + "54ba9c740535574cebc41ca5dc950629674ee94730353ac521aafd1c342d3f8ac52046ed" + "804264e1440d7fe409c45c83", + "043db95ded500b2506b627270bac75688dd7d44f47029adeff99397ab4b6329a38dbb278" + "a0fc58fe4914e6ae31721a6875049288341553a9ac3dc2d9e18e7a92c43dd3c25ca866f0" + "cb4c68127bef6b0e4ba85713d27d45c7d0dc57e5782a6bf733", + "04324bd078807f6b18507a93ee60da02031717217ee5ce569750737be912be72da087ac0" + "0f50e13fdf7249a6ae33f73e", + "b2752aa7abc1e5a29421c9c76620bcc3049ecc97e6bc39fcca126f505a9a1bfae3bde89f" + "b751a1aa7b66fa8db3891ef0", + "f1c69e6d818ca7ae3a477049b46420cebd910c0a9a477fd1a67a38d628d6edaac123aebf" + "ca67c53a5c80fe454dba7a9d"}, + {NID_secp384r1, NID_sha224, + "a670fda4d1d56c70de1d8680328043b2b7029633caf0ee59ffe1421c914bb937133d5a0f" + "9214846b2e0b350455a74c4ab434c56de65a17139bb8212bf1c76071a37536fa29348f87" + "1dbb26baa92eb93d97e923a6d2ffd9be25cbc33075e494e6db657bd8dc053fe4e17148d8" + "cf6e2058164f2b5766750eb01bbe7b361cdb848c", + "dabe87bbe95499bac23bc83c8b7307fe04be198f00059e2bf67c9611feaffb2c8f274f6a" + "a50eb99c3074186d8067d659", + "04c2aa0a695125279705917e02a4f258cade4c3ff9140a071414babf87764f426f7f36ff" + "da9d5f3394375d24864235476f8f9808da0ce0227cf453f9e456f557db9752e23b45cce4" + "baad5fee3844ddd7e1112bcec01ea9d67c7a76f3535bd0cb58", + "65a0305854033cbc6fe3ca139c40ca354d45801ecb59f4a923c251dc6b25d12d452d99b5" + "d6711fdb5efac812aa464cc4", + "c7fc32997d17ac79baf5789e4503f5f1a8863872bc350a91f12dd3ef8cf78c254e829217" + "809e8e00b6b8d4d85be3f1fd", + "1422e1838a22496df93486bce1142961dbd8478ae844b8dda54e210afdae0d9e930d587c" + "91bb600b0bde7237186d94e6"}, + {NID_secp384r1, NID_sha224, + "7843f918fe2588bcfe756e1f05b491d913523255aa006818be20b676c957f4edb8df863c" + "6f5f8c15b3b80c7a2aa277b70d53f210bdfb856337980c406ea140e439dd321471407f37" + "4f69877b2d82367eed51e3c82c13948616dcb301d0c31f8f0352f2846abd9e72071f446a" + "2f1bd3339a09ae41b84e150fd18f4ba5d3c6bfa0", + "df43107a1deb24d02e31d479087bd669e2bc3e50f1f44b7db9484a7143cdca6a3391bddf" + "ea72dc940dbce8ec5efbd718", + "0476bd4be5d520471162cb5c36f80038301b325f845d9642204a84d78b3e721098932827" + "bf872bde0a9f86383953667d29415116b8b878f896a5aa4dbbdc21076f27135d8bbcaaca" + "02489ef639d742bd63f377da0c8e8ab36ff19b4a7cc5d4ceb4", + "798abad5a30d1805794540057388ee05e2422901c6335f985b9d4447b3ef75524751abfe" + "ab6409ad6bf77d4ae3014558", + "98744e5c6742fa5118a74a70db4957647a3cc12add4e876b45974a6a8707809f871daadb" + "fc0b865e01624f706b65f10c", + "9e256e8da8eff5a0c83baaa1ef4f7be798eba9543bf97adb0fff8719f5406ea1207a0cf7" + "03d99aa8f02169724b492273"}, + {NID_secp384r1, NID_sha224, + "caa83d5ab07febbd2e0fe2d63738b9b7b8752594bea7aaf50345b3d2f316653a8c9222f2" + "b7877b64679e9573e81461a426029e45b8873a575094a1d572e0d32a9f0a9c6bcb9a2868" + "543b7d8bbe4a69a09e7321f05f8366cced1b72df526f895b60aed2c39c249653c7839538" + "770d4e5f47d3926ec0d168ab6a1af15bf1dca1f7", + "ea7a563ba2a7f5ab69973dca1f1a0d1572f0c59817cd3b62ad356c2099e2cdca1c553323" + "563f9dfbb333b126d84abc7f", + "04cf4717c5f5de668b785f06bdc9845df5a09e4edd83f4669756407cbb60807305c632bc" + "49f818f4a84b194369aa07736f7391e4982af8a2218f704f627d01f0508bfc8304992a2d" + "598a420bf2eb519f33bd7caf79380793733b3dba0cc5e2b9d8", + "7b9606b3df7b2a340dbc68d9754de0734e1faeb5a0135578a97628d948702235c60b20c8" + "002c8fcf906783e1b389e754", + "0d680010bed373287f9767955b5d2850e150b6713b49e453eb280148e45230c853d99ea2" + "d2f8fcbd3ddcba19aeec0af1", + "64329763a930ab5452afdb0557fef16ff71810d6343dfc9c6ae18905c3d274db6554cdc6" + "9d6078a1ca03284474a94f30"}, + {NID_secp384r1, NID_sha224, + "594603458d6534974aeeafba919c4d0f4cb6843a3af41204bbb88aeb2fca2772d305163d" + "ba863da050aabedbaf89db521955d1715de95bbcef979ecdc0c976181ece00355385f8a8" + "f8cce127c9eac15ce3e958a3ed686184674ec9a50eb63271606ee7fdcb1323da3c3db8e8" + "9cad1fb42139a32d08abcfbf0d4ccfca18c89a86", + "4cc70cb35b3ddeb0df53a6bd7bd05f8ff4392a2db7344f2d443761484b3a468a4ee3d1a8" + "b27113d57283fd18b05f7829", + "0440e1fe21df34bb85a642a0abe819ebd128f7e39b84d8dcc4a9a599b372fb9588da1484" + "600ec28b1297bb685f9ae77831f3aa69ada57879fdcbe8df19cefabc308add7d03b17b1f" + "ac2f7783fece6a8dfe20bc36f518692677d96e3f730a67a671", + "8eda401d98f5688c34d8dbebcd3991c87c0442b0379154eaa2e5287dabe9a9e34cfc1305" + "d11ff68781df25d5611b331d", + "ff2d772786e159448bba26afd8c3281941a4cb0c56fec6f5cccb4c292c4ee0f7af9bd39b" + "be2d88148732585e104fdb30", + "07a1d890770daa949a17797dca7af3e8163da981ec330c03d63d1a8312c152be6a718163" + "205ffa08da7dcc163ba261f4"}, + {NID_secp384r1, NID_sha224, + "733252d2bd35547838be22656cc7aa67eff0af0b13b428f77267a513c6824c3dbae53306" + "8b6817e82665f009560affcfe4b2ddb5b667a644fc1a42d24f24e0947e0dc50fb62c919b" + "c1fe4e7ded5e28f2e6d80fcf66a081fb2763526f8def5a81a4ddd38be0b59ee839da1643" + "eeeaee7b1927cec12cf3da67c02bc5465151e346", + "366d15e4cd7605c71560a418bd0f382fd7cd7ad3090ff1b2dfbed74336166a905e1b760c" + "f0bccee7a0e66c5ebfb831f1", + "04a143f277ab36a10b645ff6c58241ea67ffdc8acf12d60973068390f06b4d8f4d773b10" + "c1ebf6889b1cfa73ebb90f6ca17a17cad29bb507b309021f6f92cb5c10ba535f4a3e317f" + "cc68cfd02d3ccd269f465169c73d30ff308f5350d881b08aec", + "dbe545f920bc3d704c43d834bab21e40df12ec9e16a619a3e6b3f08760c26aae6e4fd91f" + "ad00f745194794b74bb1baee", + "cdc39b12bba30da66fe9554713c05880ddc27afa4d2d151440f124c351fb9496dc950465" + "16b0921083347d64369846ac", + "797d0344e49f9ba87a187c50f664e5015d449e346b1a7bd9427c5be559fc58173651880d" + "5aadf053f81899d3368d6181"}, + {NID_secp384r1, NID_sha224, + "5a182bd174feb038dfae3346267156bf663167f713dea1ce936b0edb815cd9b8c8e4d411" + "c786ba2494a81442617255db7158b142e720d86c9b56680fb9efd4298cdd69079a281534" + "94c42a24251c7ad42ecf7e97eabc1b3997529b2a297cbad2474269b87a0b1e385f2d7f8b" + "6eb8d1cd75eaf7e91d1acbecd45d7b2bfbbe3216", + "e357d869857a52a06e1ece5593d16407022354780eb9a7cb8575cef327f877d22322c006" + "b3c8c11e3d7d296a708bdb6d", + "04ce9a2185a68d6094aa5849a6efe78b349946f7380f0c79aa9664246cfcc71a879e90ad" + "78a0474f58644c6a208168150e8354fa47673cb3e07d446521345706c5515584b2602f92" + "1c3b9c44dded9e2c3f90ce47adb36d7e5f9f95a8c5ad8af397", + "1e77367ac4e10924854d135ad2f2507f39e2bafdbce33ff256bcbe9a7329b8d27185218b" + "cc3550aafbe3390e84c77292", + "df3182d49ad70959fb0c95bc7312750ce70fc87f1a328d39d9b29ac05d31305ce7209d6c" + "24d13225d9567b489f7a187b", + "d812b05abab0e96de13291e1f0da6479444ed5cd9d959b76f6cb43d394769035364f7c83" + "1a104dc7b5bd9b4a8e64df64"}, + {NID_secp384r1, NID_sha224, + "aaa99fb1c71340d785a18f6f668e898c25cf7a0ac31d13c5b388b7233408493a5a109af6" + "d07065376b96f4903df7aba2b2af671a18772bb0472490d1240cde28967680727dd4acd4" + "7e0308920a75da857a6eeedee5b6586d45dff3d8a680599665aa895c89dd7770b824b7de" + "e477ac5e7602d409d3cc553090c970b50811dbab", + "745a18db47324a3710b993d115b2834339315e84e7006eafd889fb49bd3cc5a8b50c9052" + "6e65e6c53bddd2916d14bead", + "04f692578c6f77531210aef55c9e004ce3b66cf268c6900dde31a8bbb76e7562e3fb7624" + "2de34ca330d2501030aa11946640965833b28de926c46de060aa25beaeda98f8415a6b1e" + "3564aa77870cf4c89bd4fde92c8f5d9bf0eb41721586859d8e", + "11b9b36720abcac084efdb44c9f5b7d039e3250cb1e9c47850189ba3cfc1489d858b2a44" + "df357772b61d919c7e729c0f", + "02b252c99820cf50e6ce060ab55bd4f682276e29b4ae4197417432e6a7bfb8cf0bac89df" + "e105456af805d822cee77696", + "8e248bbf7d7028d63177e565c9d1666ee5be4d1ffbfffc9c7814b0cd38f74b98f3f2cd59" + "be42b9f132bfe5ee789cd96c"}, + {NID_secp384r1, NID_sha224, + "1fadfa8254d3a0b82d137cfdd82043d5dc1fef195d5297b09cc5cfb061f59c933451c0dc" + "2a11b4037f34f88dacb803251f8880c4b72585c3c196e6fb23484ca43a191f8e41b9b9a3" + "7e2e6fcaab6738c3c62d1c98e1c620bb788b7b51a04f998a510efdba0d3418622fe8ce20" + "3b3fcd553b9b4206365a39031797ad11e49745ec", + "93f20963ea5011ff4f26481e359309e634195f6289134087bd2e83eee008c962780a6797" + "84ee7ac6acda03d663ed27e0", + "040edcde3533ea019e18f1a3cd97b7962e8823dda36c389f8f9287549f796d11376392b8" + "a01c7a80f127a8f75795e04f5463d7c458dccfc02f5148d755d59f9bbc8e3c3ea3490877" + "7928440747795955741296abcdd5386676419ed8049fedb489", + "3ad308faf04c42ee5ac69d36bc0aa9a96aacf55ea0f27dac4f52e088f023d206340a6324" + "874ffad169ff80624de24c96", + "209b72f9aae72c4339813573c3a8408a9e0be641ca863d81d9d14c48d0bf4cd44a1a7985" + "cff07b5d68f3f9478475645b", + "f6292e599b22a76eda95393cf59f4745fa6c472effd1f781879ad9a4437a98080b0b07da" + "dad0c249631c682d2836a977"}, + {NID_secp384r1, NID_sha224, + "9ecb6f5ed3ba666a8536a81ef65012c2cb8b433508798d84708abb06dfb75503886f7838" + "4fb8c7a4d2d49ef539d9b8a0b60938c7f07471dda91f258b0d99691b38a8403a2bb3f956" + "bdfd09baba16d9b6877097a9b6213481b47a06e139d23ec7abad5668d21f912fdb70d31b" + "b9adf9b3ce80e308252fa81a51674f88d02db72b", + "f175e6ac42fd48ec9d652c10707c039c67c4cc61d8c45a373dcda6e4ca6c53e947e49c24" + "e01b48e7cdf92edfe6d316a1", + "04a40c64f595491ce15790a5a87fbe64c1800247b42acd08fe5257700719f46afc8acce0" + "e4ede0517a312092d5e3d089cdd565df9dc2f381cc0c5d84f382a43a98018524c0b4708a" + "44b3e2817f9719f29fbf9c15803591ed9b4790c5adaba9f433", + "812dcaa6d4f9a43ccc553288065d13761581485aa903a500a690ccafbd330ba4818c977b" + "98c4bb57f8a182a1afacfae9", + "d000f18d3e4c162ff0d16f662e6703e7a6f5bff7a333ed266fa4f44c752415946c34945c" + "342c20f739677186b1d80ab3", + "ae7f1271c89e0aaa238710d039ea73a69110cc28fcf426f2fe6754b63a59e417fa84f903" + "cf7dccb5468b43ff083bbfd5"}, + {NID_secp384r1, NID_sha224, + "e55bfca78d98e68d1b63688db12485578f36c489766f4d0bfaa0088433ff12133aaca455" + "805095f2e655940860958b3ead111d9070778ee3bbf3e47e43d9eba8b8d9b1fdf72f793f" + "cde2bcaa334f3e35fa2cca531ea7cf27fe9ccba741e38ac26129b2d612bf54a34e0ae6c1" + "66c0fef07fcd2b9ac253d7e041a500f7be7b8369", + "46c4f0b228b28aaa0ec8cfdf1d0ed3408b7ae049312fb9eaf5f3892720e68684cc8ad298" + "44a3dc9d110edf6916dfb8bb", + "0413ddec844731b7e30c467451df08ca11d6c581cb64abd8a257671cffd26f5ccad4df7b" + "9ee8924047a88a5d2d7567609cd74ca94f590fd1d13e190cc1e03c3da6c3faab15c7dda0" + "34af3deefee8aeec3628fa8b1978c54cfcd071baa319a46ec0", + "2a9dd520207c40a379cd4036adef9ee60fa8bc8c0d39b3ad91850ac93fd543f218b16885" + "81f23481a090b0e4c73792ac", + "94e08cca20fe3866f643f53ec65faf3f2b4d80cd9bcc8ff8f88bb28da9eada324fc2d048" + "908dd3d08a9e0ebb547731bc", + "8e6f82c4d3069b14f4c844b4ca133a9503493265c9f77a7d4775eda67de76798a23dd7ea" + "48e0ac3c337dd62bf058319d"}, + {NID_secp384r1, NID_sha224, + "02c6b3c83bd34b288d96409162aa4ff114e9d134bf948046eb5ebcc0c7fe9dfceadda83e" + "d69da2fac00c8840f6c702a3fc5e6959d70f7e8af923e99e4937232ae3b841ffefd2e62f" + "ab3671a7c94a0281b8ea5bc176add57c5c9b6893fe7f5d48ce7256b96510810c4e046168" + "a3c5be9843b84d5268a50349b3444341aa5490dd", + "1d7b71ef01d0d33a8513a3aed3cabb83829589c8021087a740ca65b570777089be721a61" + "172b874a22a1f81aef3f8bb6", + "048d2721370df8f097d5a69396249a315f6037dc7045b3da11eacae6d43036f779d5de70" + "53d101768b42cc2b1283a3aaeaa046039ae662141f9954d278183eaa2e03917fe58583e3" + "2d344074d59d60caa5b0949c53066525d5cca923e2f201502e", + "d1b25ad25581cad17e96f1d302251681fee5b2efbb71c3c15ff035b2145d015d18e0e52d" + "c3187ab5a560277b3a3929b0", + "d836f52b14c7391744868daa2d5cf27eb9380b9b6176195573d5b04842e9f2fc3794d6cf" + "877feafee63d11b05f6a6bee", + "8b89042fef2c04d4bd6c9d66a06a010514321d623a5f8d57ba5ac3686872eaabca9e0ba2" + "d058ae7028e870acf03ca32d"}, + {NID_secp384r1, NID_sha224, + "94f8bfbb9dd6c9b6193e84c2023a27dea00fd48356909faec2161972439686c146184f80" + "686bc09e1a698af7df9dea3d24d9e9fd6d7348a146339c839282cf8984345dc6a51096d7" + "4ad238c35233012ad729f262481ec7cd6488f13a6ebac3f3d23438c7ccb5a66e2bf820e9" + "2b71c730bb12fd64ea1770d1f892e5b1e14a9e5c", + "cf53bdd4c91fe5aa4d82f116bd68153c907963fa3c9d478c9462bb03c79039493a8eaeb8" + "55773f2df37e4e551d509dcd", + "043a65b26c08102b44838f8c2327ea080daf1e4fc45bb279ce03af13a2f9575f0fff9e2e" + "4423a58594ce95d1e710b590cefe9dcbcb2ec6e8bd8ed3af3ff0aa619e900cc8bab3f50f" + "6e5f79fac09164fb6a2077cc4f1fed3e9ec6899e91db329bf3", + "df31908c9289d1fe25e055df199591b23e266433ab8657cc82cb3bca96b88720e229f8df" + "d42d8b78af7db69342430bca", + "6770eea9369d6718e60dd0b91aee845ff7ed7e0fcc91675f56d32e5227fd3a4612bbcb15" + "56fe94a989b9e3bcc25bb20e", + "c43072f706c98126d06a82b04251e3ecb0ba66c4bb6cd7c025919b9cc6019cdc635256d2" + "a7fa017b806b1e88649d2c0d"}, + {NID_secp384r1, NID_sha256, + "663b12ebf44b7ed3872b385477381f4b11adeb0aec9e0e2478776313d536376dc8fd5f3c" + "715bb6ddf32c01ee1d6f8b731785732c0d8441df636d8145577e7b3138e43c32a61bc124" + "2e0e73d62d624cdc924856076bdbbf1ec04ad4420732ef0c53d42479a08235fcfc4db4d8" + "69c4eb2828c73928cdc3e3758362d1b770809997", + "c602bc74a34592c311a6569661e0832c84f7207274676cc42a89f058162630184b52f0d9" + "9b855a7783c987476d7f9e6b", + "040400193b21f07cd059826e9453d3e96dd145041c97d49ff6b7047f86bb0b0439e90927" + "4cb9c282bfab88674c0765bc75f70d89c52acbc70468d2c5ae75c76d7f69b76af62dcf95" + "e99eba5dd11adf8f42ec9a425b0c5ec98e2f234a926b82a147", + "c10b5c25c4683d0b7827d0d88697cdc0932496b5299b798c0dd1e7af6cc757ccb30fcd3d" + "36ead4a804877e24f3a32443", + "b11db00cdaf53286d4483f38cd02785948477ed7ebc2ad609054551da0ab0359978c6185" + "1788aa2ec3267946d440e878", + "16007873c5b0604ce68112a8fee973e8e2b6e3319c683a762ff5065a076512d7c98b27e7" + "4b7887671048ac027df8cbf2"}, + {NID_secp384r1, NID_sha256, + "784d7f4686c01bea32cb6cab8c089fb25c341080d9832e04feac6ea63a341079cbd562a7" + "5365c63cf7e63e7e1dddc9e99db75ccee59c5295340c2bba36f457690a8f05c62ab001e3" + "d6b333780117d1456a9c8b27d6c2504db9c1428dad8ba797a4419914fcc636f0f14ede3f" + "ba49b023b12a77a2176b0b8ff55a895dcaf8dbce", + "0287f62a5aa8432ff5e95618ec8f9ccaa870dde99c30b51b7673378efe4ccac598f4bbeb" + "bfd8993f9abb747b6ad638b9", + "04b36418a3014074ec9bbcc6a4b2367a4fb464cca7ec0a324cb68670d5c5e03e7a7eb07d" + "a117c5ea50b665ab62bd02a4914ea299c30e7d76e2c5905babada2d3bb4ee5eb35a5a236" + "05cdb0d5133471a53eb9e6758e49105a4eaf29d2267ba84ef2", + "935eeab3edeb281fbd4eead0d9c0babd4b10ff18a31663ee9de3bfa9ae8f9d266441158e" + "a31c889ded9b3c592da77fd7", + "738f9cb28f3b991335ef17b62559255faf75cad370a222464a492e27bb173c7f16b22100" + "ada6b695875c7e4b1a28f158", + "bc998c30e1491cd5d60dc7d1c38333165efe036b2a78db9b8f0e85ee68619cfba654e11a" + "e5ca5ee5a87099c27cf22442"}, + {NID_secp384r1, NID_sha256, + "45e47fccc5bd6801f237cdbeac8f66ebc75f8b71a6da556d2e002352bd85bf269b6bc7c9" + "28d7bb1b0422601e4dd80b29d5906f8fcac212fe0eaaf52eda552303259cbcbe532e60ab" + "d3d38d786a45e39a2875bce675800a3eaeb9e42983d9fd9031180abd9adccc9ba30c6c19" + "8b4202c4dd70f241e969a3c412724b9b595bc28a", + "d44d3108873977036c9b97e03f914cba2f5775b68c425d550995574081191da764acc501" + "96f6d2508082a150af5cd41f", + "04c703835d723c85c643260379d8445b0c816fe9534351921e14a8e147fe140ec7b0c4d7" + "04f8dc66a232b2333b28f03deec5d0bb054053fd86c26f147c4966757aa04b00513a02d4" + "27b8d06c16055c607955efdc518d338abfe7927c195dc28588", + "c80f63e080650c8a21e4f63a62ec909adfb7d877f365d11ee1cb260baf112eb4730c161c" + "1d99dba98fc0d5bbd00dc97d", + "81de2810cde421997013513951a3d537c51a013110d6dbb29251410bcb5ba001a9686b84" + "90f1e581e282fd2ed0974b22", + "9cab0bbaffe91c7677ec3dd1f17060211a3cc0be574cbca064aa8c4b66ba6e64f3d80e83" + "da895042ca32d311c388d950"}, + {NID_secp384r1, NID_sha256, + "c33ff63b4e6891e00b2349b3f2907c417ca355560544a91e24a7a0ee260d6850aeded29f" + "c0176b6039ca6187e8333391047cceaf14b1077df8f147dad84d36b2dac5666dc2f69dc9" + "b58b88cc73956efdb3b47f91831d5875051c76b0c4e9fc087012a1f03eeee85d6745b46a" + "a50bd9cb0110c2c94508765cec162ee1aa841d73", + "d5b72cbb6ec68aca46b9c27ad992afd8ffa02cb3067b234fcfa6e272e3b31be760695ff7" + "df988b57663057ab19dd65e3", + "04135a6542612f1468d8a4d01ff1914e532b1dd64d3627db9d403dc325651d3f82b0f6f0" + "fd1dbdeca2be967c4fb3793b5fcbbd40f6d3a38d0dfb64582ff4789d7b268241bc0c36de" + "2884bccfaeeff3b7b2b46a30bb35719804e0d11124b4e7f480", + "9da6de7c87c101b68db64fea40d97f8ad974ceb88224c6796c690cbf61b8bd8eede8470b" + "3caf6e6106b66cf3f0eebd55", + "17840911ecdf6ae0428b2634f442163c2c11b8dbf0cc7a5596fbe4d33e3e52f9d99e99ad" + "169867b1f39e89c9180cedc2", + "dd7ed67e480866d0474379ea4afff72870746f4feef2153be42f13bf472b1613d7faa5c0" + "abb7f7464070f94d7cf3f234"}, + {NID_secp384r1, NID_sha256, + "f562f2b9d84b0e96a52532c3b43c39c8018c738bd8dc3797a7de7353971b2729d522d696" + "1b1f2e4df3f6a4bd3653e6d72b74fc0dba92ab939c4b542e994e5db6dd8ed4f56f651e69" + "9052e791237ae1f552f990ad156226ae8f7bf17fcbfa564f749604f97e9df0879d509857" + "47d981422a23040fe52f5ec74caf1d4aaad8a710", + "218ee54a71ef2ccf012aca231fee28a2c665fc395ff5cd20bde9b8df598c282664abf915" + "9c5b3923132983f945056d93", + "0401989ff07a7a452d8084937448be946bfedac4049cea34b3db6f7c91d07d69e926cce0" + "af3d6e88855a28120cf3dba8dfeb064e029d7539d4b301aabafe8de8870162deffe6383b" + "c63cc005add6ee1d5ced4a5761219c60cd58ad5b2a7c74aaa9", + "c5d39b436d851d94691f5f4aa9ef447f7989d984f279ae8b091aef5449ac062bcc056774" + "0f914624ad5b99fc32f9af0b", + "07d5b1b12877e8cb5e0aa5e71eeeb17bf0aa203064c7e98b3a1798a74dc9717252dc47c7" + "f06aaf1d5fe15b868323bbb9", + "69428cf101a7af5d08161a9fd7af212e02e33b6062aebdce4c96bf3a0684b5394cb902ca" + "7c2dec6e2f01f40c4576009d"}, + {NID_secp384r1, NID_sha256, + "ace953ae851f571d71779aa120915f27450b236da23e9106f8d0756abdd2586193794122" + "8d225d5fb1aa1b1ebf759b1e326aeb3b6cd0cd87edd2ab9f6a7ad67b63d2c501d6a550ed" + "b2e7c9d216cc8af78dd33546af64d00abed4d0d2cfc5c9a7b5a055dbe8f7547902d185cf" + "46937314832bc5c602419a82ab83dbd9d3bd5aff", + "e6ab171f6937c000e144950801ad91023ae8e8476856c2592d9f7d5bb7180fd729211803" + "d39a412ead6c0be761cfa5d1", + "0438bc42b8c9d8866d09b214398d584b1b24a488dfacc3420d1e9506aa825b19fdf1ba74" + "e7b8f547f47b571467fe8c4d1f5179d62668d3f6a7ab5c8e3761a685e12008fb87d0529a" + "97645f65cfb5364376c1b6682e0ffcddd0bcd995c41d013ad3", + "05e9718aea9669c9e434f73866da5f252dec6d24c47a1c4ee3233450b6ec626de9746ebe" + "095b285558dfc89fc1b622fe", + "df9bab9dd1f22ec6f27116f38831cb2089aa78aa8c073024a0faddd9a48e810a5e8e2cad" + "d80fbf8dbd6088c71fe30b5b", + "1e0e8718567d12d18558c57f9e87a755c309e4ffb497335a3adfc8d7475ce8fd882d5dc3" + "3a8f5a16274b7ad74bb7862a"}, + {NID_secp384r1, NID_sha256, + "9635ab832240be95301bedb94c5aec169eedc198cbbdfedcf41e9b586143d829b4597a6b" + "2a81902828332825fd84a785f187a3894e21bd99d22c4f94dcf34453fc052f15ec64d144" + "7c932cb38fcdd30b7be851963409c11881438cbaad7e96f9efbde317f2235d66af804477" + "a5dfe9f0c51448383830050ecf228889f83631e1", + "14acd516c7198798fd42ab0684d18df1cd1c99e304312752b3035bed6535a8975dff8acf" + "c2ba1675787c817b5bff6960", + "0429909d143cf7ee9c74b11d52f1a8f3ebd4a720c135612ca5618d3f432f03a95602ee75" + "a2057e1d7aab51d0648ac0b334404b6c5adffbadfa1b0380ae89fed96ec1ca16cc28661e" + "623d0f1c8b130fbaa96dd7257eae2bf03c2d3dcbc3dbc82c58", + "7f623c103eaa9099a0462e55f80519c565adaeffcb57a29993f3a8a92e63a560be8f0fb9" + "d23dc80bff1064bb41abad79", + "932ab291950c16b2b19a8036cd2e905714c6229cb190a73b3ea49c48dd8e76063a453c7c" + "3267a57597d2973678216296", + "d17d4c5ddbb9c27beebf526f113b416c8abfad53d11c4224813c7f351ba41a77dd4e77d6" + "e4a65bef2c9f62cc37a469a5"}, + {NID_secp384r1, NID_sha256, + "d98b9a7d4fe9d0fd95de5056af164a8b7882cd34ab5bde83a2abb32dc361eb56a479a3a6" + "119db3b91dcad26a42d2206749567f0d97c34a981a91fc734921821a429f6a53401743a5" + "c406ba9d560f956203abc9d1f32f1a13e7d7b290f75c95fdbf857ea597021461c06a3aac" + "fa554ede3d69e4ff03bbbee5b7463ec77de2b3b2", + "2e780550984f3a00cb1e412429b33493c6eb6cd86d12f9d80588c247dcf567bd04296d2d" + "4b24b889d9c54954b7f38f57", + "0437dac42ef04663238443ef33e8addee2e78c40d50a1751913a7f5c37d1f23a26c7f86e" + "16055c788b8ca9554f06b2f2efbbed1549652904e3d00c39b01cc0460dbaf3185e6190c2" + "705677a9701de1fe56dff4f4d8418ee15059ff8fc36800982d", + "b788ca82811b0d4e4841765c71eafaa1e575378beedcd3860d8b92db3d070ac5aef7c425" + "067860fbee6c50cf0c642bbb", + "7292b3851870daeb2555a8a2fb198ead78739fcfb75327e5c32a82c6b77d58983e5ad548" + "ccb75dcf9411039c9576d9b9", + "a378c61802d9f1dd062b6e18f16416a954018f77df4df95ad1b983570377d5cfce4cc786" + "1759e802c52f81abc4f49aac"}, + {NID_secp384r1, NID_sha256, + "1b4c754ac1c28dc415a71eac816bde68de7e8db66409af835838c5bb2c605111108a3bf1" + "3606ed5d8ade5ed72e50503e0de664416393d178ea4eec834d8d6f15039847b410080fd5" + "529b426e5aadd8451c20ebd92d787921f33e147bcbeb327b104d4aab1157fc1df33e4d76" + "8404b5ccb7110055c2508c600f429fd0c21b5784", + "a24d0fe90808aecc5d90626d7e6da7c9be5dfd4e1233c7f0f71f1b7c1c6fd318fafe1855" + "9c94718f044cf02ed5107cb1", + "04ec8ae1fb9bb88589d27d6f27d790392853396f37bc0c381631d85800fc668eea0886bf" + "1c6cff801147df19778d5b16041e1a8336c1e2506f8ee388b55cc648ae73b9295ea78467" + "979d2affb364536fad28120f51ec62a67cbb6ce7784780389f", + "755d025509b73cf1ea8817beb772ad150b4c17a52378be187daffe3db0158921e5e552d1" + "ca3c85df28519939f3cb794d", + "23ff2ffa62bbd427d49995d9c9950116e0d5a06ef076a4553448bc109e6482c5e87d4c83" + "3bc88de0bc722bc98cae2e61", + "9aea13d487c3ea6917e16374caafcf0321c12a80d28902dd8cd81909bb04b8c439e2491e" + "504756742d0d0bfb15a9c34c"}, + {NID_secp384r1, NID_sha256, + "3cd8c053741dd9f974c6c5dbf8a1e5728e9b5eafb1cbcfc3452f5fbbda32a8c7564dee15" + "7e8d902c52514361da6d972934a56b3276e2a9379e328e24282e0db697c5bc29090fc489" + "ec46b7b188325dd4e96494c250de0f4a89fe2ccf919eaefcfb50c288113e6df92714feb7" + "f46e0822478c796d0f4ff3447a32997e892693ce", + "1c172e25732555afee7ded67a496f3f11babc0875898619f4519c29321e201e8ba1149f2" + "c20b48e5efba235d58fea7c3", + "0413e9e2c8bbcfe26e8f5f43c86268c5980ee693236a6b8777f3a7323718baa21005b482" + "d08aafc6fa6e3667d91353544c9ba181b3ee505be030f87ecd249b00670a791489b42af0" + "4976013483ff95b630c91c01e95757e906129f2f9b4ce719a8", + "08aec9a9e58bdc028805eb5dc86073d05fff1f5fb3fd17f510fc08f9272d84ba7aa66b6f" + "77d84fe6360bd538192bf01a", + "2b4337c3dfbc886ffad7858ae2480cb62227e12205a70361c42f1a5ca9e658ee30fc3cf4" + "030d85bd065edad83b99821f", + "2550cef8574bf17fb3d6b0c9d04ab266962bac3621bac233ff2e4989712d2a4a07171c0a" + "ebd3040cd6a32c3bd3efb8b5"}, + {NID_secp384r1, NID_sha256, + "ed955dda6d9650124804d3deb6aeef900e520faf98b1ef6f14efcada7ca2433f09329b70" + "897305e59c89024d76e466b28fe02cb2a9b12e2478c66470259d7c282137a19e5a04ffad" + "ea55245c0f34a681593fedc42931d8b3321b3d82e9cc102cd00540ad311ec7bd8c9d06db" + "21bea4ca3dc74d98931ae0d40494aefc2345132c", + "5b96555dbd602e71d4d5d3aee19fd1ea084ee23d4f55c10937056762bc2015cbded2e898" + "a487f5482ab7e1e971245907", + "046e14c17bb831b0112d7f3543c5fd17c78379a516c9e0539b03b8b4bfdead2820343fc8" + "4b0382807573ded6c4d97b70037f60021d2de77546db666721c9aec84c3e2ba8de0ba774" + "43600dc77e6839bbf9316271adb22d4cb47d08f745ecb1dafd", + "7ad6f4ffd2b429ba10c6f112f800cacf1ad508cf8eba880893bb9659c1ddaaec57dcdc09" + "3a114500460d457bdde324f2", + "faea950ca513806bc59028c638d6302ffc86978c3ff1f06db015dd7c4777050186cb8dd8" + "71f5e926e1416539c1939c2f", + "2c592240eabb8a1f9878e1b5c9d5d3ced7b3a7ae571f5a86494ed2ca567a36eb72e7bea8" + "934bded29594bccf67ca84bd"}, + {NID_secp384r1, NID_sha256, + "ce395b001da2a58e49691605d44af4206306f62f561bf2394060d2a5591a350277166bed" + "043819035f1e60b5b3fb5ae113ddd0473f8ef6b2b050c472c2a264e1d8b3ca82a4f158c4" + "0f2d78d9ce5e5ea6de243f2e1f13f47f6c6f403b270912c81c636be35b396ca58468b3fb" + "60aa83911d61441a0528d973bc31f965d4059080", + "8df9c3c710a25192f3dea970910bb3784e3509874cccf4334823eb9f7a8d05b067f2d812" + "d61e878e24b093089a0b8245", + "0492c9e32b20cbe6d4ed0727c6c942cf804a72031d6dfd69078b5e78ebce2d192268f1f5" + "e2abce5aaf1f8d6a35f136837fd5167905fa7689e03b9fb1487c566f62b36f2bc1c4a2bf" + "b6a836113b5c8d46f7c1ca51b628b14397fbc06ec9a07f4849", + "258dd05919735cd48627c9fe9fac5c252604aa7c2ae0460d7c1149cd96b7bd2ba195ad39" + "3bf392a2499f06aead5ba050", + "413793bcce52eda0f5b675a8d687cce86d5c9e1659b38a89e96246b5e05f8b0934d17dbb" + "a3b2ea44c838aa5fd87125d1", + "ce7309fc2d6e3438818a1a29a997410b025b0403de20795b97c86c46034a6b02afeed279" + "aeb06522d4de941bfdf50469"}, + {NID_secp384r1, NID_sha256, + "ffefe316455ae4ffdb890bb804bf7d31424ea060ecacff419d0f7134ff76ad434063c0ec" + "0f8bb7059584d3a03f3625bb9e9f66ace1a47ac4b8f3e76fc7c420c55edb1427d1fa15b3" + "87ad73d02b0595c4e74321be8822752230a0dcfb85d60bfa186da7623a8ec3eb1633f0a2" + "94b23ae87216b14ccee9ef56418dcfab9427371e", + "6002cb01ad2ce6e7101665d47729c863b6435c3875de57a93f99da834f73e3e6e2b3880e" + "06de3e6bd1d51ea1807ab0d7", + "04e4216e1a20af8e8e3e74653ac016545001066e53e64af679ad1c85841bb475aed3e00e" + "ad052ae9955f48d675ff4ace568804c17641be21d4c6386902c9c5c888af25d97ca38370" + "3ea4a85cf93bbab360c0bbd2993374da499a303778650270b9", + "6b9507fd2844df0949f8b67b6fde986e50173713ac03df2edf65cb339859321cd3a2b9aa" + "b8356f95dec62460ab19c822", + "018891f6381ed358b422f79a299cf0789cee783ba388af4d82cbbe17f3709751b7fd9400" + "e9702820c28b9afc62fdf489", + "aef73bd590802b2fd2a65c4f7fec89f9b24ecc199a69254785925f334cd1977c5e1f858b" + "d9830d7d7d243ea707b1af0b"}, + {NID_secp384r1, NID_sha256, + "304bccb718b3a9e12669913490cc5bcc1979287b56c628fad706c354241e88d10e81445a" + "2853e3fc32ece094ba1abc3fdcab61da27f9a0fca739371049fed462ee6b08fa31cde127" + "20f8144a6f00ce9b1a7a6eadd231f126717074b4efb5c72ce673ca5859000a436f67a338" + "d698759f12c461247c45a361fb6cb661fdbe6714", + "d8559c3543afc6f7b3dc037a687bad2630283757ba7862fd23ed14e2151a4cf5fed3d249" + "268f780e0b96b6b46274a2d5", + "045f94223918f2ec9f0a08342cb99e724881c92453957c59672860f69daac01b660331a0" + "f5845e50f1f27766b219c89e7ed76d83396130d10d1168d76c7fc83742ffffbe66d9f4da" + "4ca3f95f5ad6dac8cc7bb65d16d317d37aa99fdbf30ec7439c", + "4ad5a92b5b8e170b71c8a7ed419dc624c7680004562b8d16a37b6e639f581ce81d5f0d98" + "cce44d54c4e7136229148340", + "f7baa6a5488ab462ea59aa31a36402b15880c68110b6069f51ede0c3b52a7b1e5bf926fd" + "be95768931b7d5f87058835c", + "28b1c4ef448a432f7c91b98b0c6471691e888211b6af907369a8930859b8cdb2e94f466a" + "44f4e52f46df9b0d65e35de6"}, + {NID_secp384r1, NID_sha256, + "64f9f05c2805acf59c047b5f5d2e20c39277b6d6380f70f87b72327a76170b872bfe4b25" + "c451602acfb6a631bb885e2655aee8abe44f69c90fb21ffde03cef2a452c468c6369867d" + "fd8aa26ac24e16aa53b292375a8d8fbf988e302bf00088e4c061aa12c421d8fe3cbd7273" + "b0e8993701df1c59431f436a08b8e15bd123d133", + "b9208cbfd186ddfa3efd5b71342ae1efb01a13ebc4c2a992a2cbee7254b7846a4252ece1" + "104b89d13d835911f8511224", + "04166e6d96cb60d916fd19888a2dd945a3306ff0d7b0a5e30729f47d3dac3de2be3fd5cd" + "7437e9a80d6c48cf960d2d36f8e6b2b70f131092ae210f29cc6bad701318bddb31bddf92" + "1695855c6208941100d0cee5d10799f8b835afe3ea510e8229", + "da706ab5f61531f2378b3c0a2b342108cd119eadaa88b859df64923bccfb0ec2393fd312" + "826f65c15a6587d1d460015b", + "d9124c42858080c62400e4d4d8136304e03d910cbe9b9b3487f4d27c7e0540a314d34bef" + "8c850045c8746ca631c11c42", + "bbf6424a3b70166fa799f49e918439d515327039258ef9bd88435a59c9c19659f8ec3c86" + "60720b0c08354ff60e0f5a76"}, + {NID_secp384r1, NID_sha384, + "6b45d88037392e1371d9fd1cd174e9c1838d11c3d6133dc17e65fa0c485dcca9f52d41b6" + "0161246039e42ec784d49400bffdb51459f5de654091301a09378f93464d52118b48d44b" + "30d781eb1dbed09da11fb4c818dbd442d161aba4b9edc79f05e4b7e401651395b53bd8b5" + "bd3f2aaa6a00877fa9b45cadb8e648550b4c6cbe", + "201b432d8df14324182d6261db3e4b3f46a8284482d52e370da41e6cbdf45ec2952f5db7" + "ccbce3bc29449f4fb080ac97", + "04c2b47944fb5de342d03285880177ca5f7d0f2fcad7678cce4229d6e1932fcac11bfc3c" + "3e97d942a3c56bf34123013dbf37257906a8223866eda0743c519616a76a758ae58aee81" + "c5fd35fbf3a855b7754a36d4a0672df95d6c44a81cf7620c2d", + "dcedabf85978e090f733c6e16646fa34df9ded6e5ce28c6676a00f58a25283db8885e16c" + "e5bf97f917c81e1f25c9c771", + "50835a9251bad008106177ef004b091a1e4235cd0da84fff54542b0ed755c1d6f251609d" + "14ecf18f9e1ddfe69b946e32", + "0475f3d30c6463b646e8d3bf2455830314611cbde404be518b14464fdb195fdcc92eb222" + "e61f426a4a592c00a6a89721"}, + {NID_secp384r1, NID_sha384, + "d768f41e6e8ec2125d6cf5786d1ba96668ac6566c5cdbbe407f7f2051f3ad6b1acdbfe13" + "edf0d0a86fa110f405406b69085219b5a234ebdb93153241f785d45811b3540d1c37424c" + "c7194424787a51b79679266484c787fb1ded6d1a26b9567d5ea68f04be416caf3be9bd2c" + "afa208fe2a9e234d3ae557c65d3fe6da4cb48da4", + "23d9f4ea6d87b7d6163d64256e3449255db14786401a51daa7847161bf56d494325ad2ac" + "8ba928394e01061d882c3528", + "045d42d6301c54a438f65970bae2a098cbc567e98840006e356221966c86d82e8eca515b" + "ca850eaa3cd41f175f03a0cbfd4aef5a0ceece95d382bd70ab5ce1cb77408bae42b51a08" + "816d5e5e1d3da8c18fcc95564a752730b0aabea983ccea4e2e", + "67ba379366049008593eac124f59ab017358892ee0c063d38f3758bb849fd25d867c3561" + "563cac1532a323b228dc0890", + "fb318f4cb1276282bb43f733a7fb7c567ce94f4d02924fc758635ab2d1107108bf159b85" + "db080cdc3b30fbb5400016f3", + "588e3d7af5da03eae255ecb1813100d95edc243476b724b22db8e85377660d7645ddc1c2" + "c2ee4eaea8b683dbe22f86ca"}, + {NID_secp384r1, NID_sha384, + "6af6652e92a17b7898e40b6776fabaf0d74cf88d8f0ebfa6088309cbe09fac472eeac2aa" + "8ea96b8c12e993d14c93f8ef4e8b547afe7ae5e4f3973170b35deb3239898918c70c1056" + "332c3f894cd643d2d9b93c2561aac069577bbab45803250a31cd62226cab94d8cba7261d" + "ce9fe88c210c212b54329d76a273522c8ba91ddf", + "b5f670e98d8befc46f6f51fb2997069550c2a52ebfb4e5e25dd905352d9ef89eed5c2ecd" + "16521853aadb1b52b8c42ae6", + "0444ffb2a3a95e12d87c72b5ea0a8a7cb89f56b3bd46342b2303608d7216301c21b5d292" + "1d80b6628dc512ccb84e2fc278e4c1002f1828abaec768cadcb7cf42fbf93b1709ccae6d" + "f5b134c41fae2b9a188bfbe1eccff0bd348517d7227f2071a6", + "229e67638f712f57bea4c2b02279d5ccad1e7c9e201c77f6f01aeb81ea90e62b44b2d210" + "7fd66d35e56608fff65e28e4", + "b11db592e4ebc75b6472b879b1d8ce57452c615aef20f67a280f8bca9b11a30ad4ac9d69" + "541258c7dd5d0b4ab8dd7d49", + "4eb51db8004e46d438359abf060a9444616cb46b4f99c9a05b53ba6df02e914c9c0b6cc3" + "a9791d804d2e4c0984dab1cc"}, + {NID_secp384r1, NID_sha384, + "b96d74b2265dd895d94e25092fb9262dc4f2f7a328a3c0c3da134b2d0a4e2058ca994e34" + "45c5ff4f812738e1b0c0f7a126486942a12e674a21f22d0886d68df2375f41685d694d48" + "7a718024933a7c4306f33f1a4267d469c530b0fed4e7dea520a19dd68bf0203cc87cad65" + "2260ed43b7b23f6ed140d3085875190191a0381a", + "de5975d8932533f092e76295ed6b23f10fc5fba48bfb82c6cc714826baf0126813247f8b" + "d51d5738503654ab22459976", + "04f1fabafc01fec7e96d982528d9ef3a2a18b7fe8ae0fa0673977341c7ae4ae8d8d3d674" + "20343d013a984f5f61da29ae381a31cf902c46343d01b2ebb614bc789c313b5f91f9302a" + "d9418e9c797563e2fa3d44500f47b4e26ad8fdec1a816d1dcf", + "fc5940e661542436f9265c34bce407eff6364bd471aa79b90c906d923e15c9ed96eea4e8" + "6f3238ea86161d13b7d9359d", + "c2fbdd6a56789024082173725d797ef9fd6accb6ae664b7260f9e83cb8ab2490428c8b9c" + "52e153612295432fec4d59cd", + "8056c5bb57f41f73082888b234fcda320a33250b5da012ba1fdb4924355ae679012d81d2" + "c08fc0f8634c708a4833232f"}, + {NID_secp384r1, NID_sha384, + "7cec7480a037ff40c232c1d2d6e8cd4c080bbeecdaf3886fccc9f129bb6d202c316eca76" + "c8ad4e76079afe622f833a16f4907e817260c1fa68b10c7a151a37eb8c036b057ed4652c" + "353db4b4a34b37c9a2b300fb5f5fcfb8aa8adae13db359160f70a9241546140e550af007" + "3468683377e6771b6508327408c245d78911c2cc", + "11e0d470dc31fab0f5722f87b74a6c8d7414115e58ceb38bfcdced367beac3adbf1fe9ba" + "5a04f72e978b1eb54597eabc", + "041950166989164cbfd97968c7e8adb6fbca1873ebef811ea259eb48b7d584627f0e6d6c" + "64defe23cbc95236505a252aa141ef424b5cb076d4e32accd9250ea75fcf4ffd81814040" + "c050d58c0a29b06be11edf67c911b403e418b7277417e52906", + "e56904028226eb04f8d071e3f9cefec91075a81ca0fa87b44cae148fe1ce9827b5d1910d" + "b2336d0eb9813ddba3e4d7b5", + "c38ef30f55624e8935680c29f8c24824877cf48ffc0ef015e62de1068893353030d1193b" + "f9d34237d7ce6ba92c98b0fe", + "651b8c3d5c9d5b936d300802a06d82ad54f7b1ba4327b2f031c0c5b0cb215ad4354edc7f" + "932d934e877dfa1cf51b13fe"}, + {NID_secp384r1, NID_sha384, + "00ce978603229710345c9ad7c1c2dba3596b196528eea25bd822d43ca8f76a024e292177" + "03dd0652c8a615284fc3edcc1c5ad1c8d5a8521c8e104c016a24e50c2e25066dcb56596f" + "913b872767e3627aa3e55ec812e9fdac7c2f1beade83aef093e24c9c953982adf431a776" + "880ae4583be158e11cdab1cbca3ad3a66900213d", + "5c6bbf9fbcbb7b97c9535f57b431ed1ccae1945b7e8a4f1b032016b07810bd24a9e20055" + "c0e9306650df59ef7e2cd8c2", + "042e01c5b59e619e00b79060a1e8ef695472e23bf9a511fc3d5ed77a334a242557098e40" + "972713732c5291c97adf9cf2cf563e3fe4ad807e803b9e961b08da4dde4cea8925649da0" + "d93221ce4cdceabc6a1db7612180a8c6bef3579c65539b97e9", + "03d23f1277b949cb6380211ad9d338e6f76c3eedac95989b91d0243cfb734a54b19bca45" + "a5d13d6a4b9f815d919eea77", + "abab65308f0b79c4f3a9ff28dd490acb0c320434094cef93e75adfe17e5820dc1f77544c" + "faaacdc8cf9ac8b38e174bef", + "11b783d879a6de054b316af7d56e526c3dce96c85289122e3ad927cfa77bfc50b4a96c97" + "f85b1b8221be2df083ff58fb"}, + {NID_secp384r1, NID_sha384, + "54a255c18692c6162a46add176a0ae8361dcb8948f092d8d7bac83e160431794d3b98128" + "49bf1994bcdcfba56e8540c8a9ee5b93414548f2a653191b6bb28bda8dc70d45cc1b92a4" + "89f58a2d54f85766cb3c90de7dd88e690d8ebc9a79987eee1989df35af5e35522f83d85c" + "48dda89863171c8b0bf4853ae28c2ac45c764416", + "ffc7dedeff8343721f72046bc3c126626c177b0e48e247f44fd61f8469d4d5f0a74147fa" + "baa334495cc1f986ebc5f0b1", + "0451c78c979452edd53b563f63eb3e854a5b23e87f1b2103942b65f77d024471f75c8ce1" + "cc0dfef83292b368112aa5126e313e6aaf09caa3ba30f13072b2134878f14a4a01ee8632" + "6cccbff3d079b4df097dc57985e8c8c834a10cb9d766169366", + "c3de91dbe4f777698773da70dd610ef1a7efe4dc00d734399c7dd100728006a502822a5a" + "7ff9129ffd8adf6c1fc1211a", + "f4f477855819ad8b1763f53691b76afbc4a31a638b1e08c293f9bcd55decf797f9913ca1" + "28d4b45b2e2ea3e82c6cf565", + "7c26be29569ef95480a6d0c1af49dc10a51a0a8931345e48c0c39498bfb94d62962980b5" + "6143a7b41a2fddc8794c1b7f"}, + {NID_secp384r1, NID_sha384, + "692a78f90d4f9d5aee5da536314a78d68c1feabbfe5d1ccea7f6059a66c4b310f8051c41" + "1c409ccf6e19a0cbd8b8e100c48317fe8c6d4f8a638b9551ce7ee178020f04f7da3001a0" + "e6855225fb3c9b375e4ed964588a1a41a095f3f476c42d52ffd23ce1702c93b56d4425d3" + "befcf75d0951b6fd5c05b05455bdaf205fe70ca2", + "adca364ef144a21df64b163615e8349cf74ee9dbf728104215c532073a7f74e2f6738577" + "9f7f74ab344cc3c7da061cf6", + "04ef948daae68242330a7358ef73f23b56c07e37126266db3fa6eea233a04a9b3e491523" + "3dd6754427cd4b71b75854077d009453ef1828eaff9e17c856d4fc1895ab60051312c3e1" + "db1e3766566438b2990cbf9945c2545619e3e0145bc6a79004", + "a2da3fae2e6da3cf11b49861afb34fba357fea89f54b35ce5ed7434ae09103fe53e2be75" + "b93fc579fedf919f6d5e407e", + "dda994b9c428b57e9f8bbaebba0d682e3aac6ed828e3a1e99a7fc4c804bff8df151137f5" + "39c7389d80e23d9f3ee497bf", + "a0d6b10ceffd0e1b29cf784476f9173ba6ecd2cfc7929725f2d6e24e0db5a4721683640e" + "aa2bbe151fb57560f9ce594b"}, + {NID_secp384r1, NID_sha384, + "3b309bb912ab2a51681451ed18ad79e95d968abc35423a67036a02af92f575a0c89f1b66" + "8afe22c7037ad1199e757a8f06b281c33e9a40bab69c9874e0bb680b905d909b9dc24a9f" + "e89bb3d7f7d47082b25093c59754f8c19d1f81f30334a8cdd50a3cb72f96d4b3c305e60a" + "439a7e93aeb640dd3c8de37d63c60fb469c2d3ed", + "39bea008ec8a217866dcbdb1b93da34d1d3e851d011df9ef44b7828b3453a54aa70f1df9" + "932170804eacd207e4f7e91d", + "045709ec4305a9c3271c304face6c148142490b827a73a4c17affcfd01fffd7eaa65d2fd" + "edfa2419fc64ed910823513fafb083cda1cf3be6371b6c06e729ea6299213428db571193" + "47247ec1fcd44204386cc0bca3f452d9d864b39efbfc89d6b2", + "3c90cc7b6984056f570542a51cbe497ce4c11aeae8fc35e8fd6a0d9adeb650e8644f9d1d" + "5e4341b5adc81e27f284c08f", + "d13646895afb1bfd1953551bb922809c95ad65d6abe94eb3719c899aa1f6dba6b01222c7" + "f283900fe98628b7597b6ea6", + "4a9a38afda04c0a6b0058943b679bd02205b14d0f3d49b8f31aac289129780cdb1c555de" + "f8c3f9106b478729e0c7efaa"}, + {NID_secp384r1, NID_sha384, + "f072b72b8783289463da118613c43824d11441dba364c289de03ff5fab3a6f60e85957d8" + "ff211f1cb62fa90216fb727106f692e5ae0844b11b710e5a12c69df3ed895b94e8769ecd" + "15ff433762d6e8e94d8e6a72645b213b0231344e2c968056766c5dd6b5a5df41971858b8" + "5e99afbf859400f839b42cd129068efabeea4a26", + "e849cf948b241362e3e20c458b52df044f2a72deb0f41c1bb0673e7c04cdd70811215059" + "032b5ca3cc69c345dcce4cf7", + "0406c037a0cbf43fdf335dff33de06d34348405353f9fdf2ce1361efba30fb204aea9dbd" + "2e30da0a10fd2d876188371be6360d38f3940e34679204b98fbf70b8a4d97f25443e46d0" + "807ab634ed5891ad864dd7703557aa933cd380e26eea662a43", + "32386b2593c85e877b70e5e5495936f65dc49553caef1aa6cc14d9cd370c442a0ccfab4c" + "0da9ec311b67913b1b575a9d", + "5886078d3495767e330c7507b7ca0fa07a50e59912a416d89f0ab1aa4e88153d6eaf0088" + "2d1b4aa64153153352d853b5", + "2cc10023bf1bf8ccfd14b06b82cc2114449a352389c8ff9f6f78cdc4e32bde69f3869da0" + "e17f691b329682ae7a36e1aa"}, + {NID_secp384r1, NID_sha384, + "cf4945350be8133b575c4ad6c9585e0b83ff1ed17989b6cd6c71b41b5264e828b4e11599" + "5b1ae77528e7e9002ac1b5669064442645929f9d7dd70927cb93f95edeb73e8624f4bc89" + "7ec4c2c7581cb626916f29b2d6e6c2fba8c59a71e30754b459d81b912a12798182bcff40" + "19c7bdfe929cc769bcc2414befe7d2906add4271", + "d89607475d509ef23dc9f476eae4280c986de741b63560670fa2bd605f5049f1972792c0" + "413a5b3b4b34e7a38b70b7ca", + "0449a1c631f31cf5c45b2676b1f130cbf9be683d0a50dffae0d147c1e9913ab1090c6529" + "a84f47ddc7cf025921b771355a1e207eece62f2bcc6bdabc1113158145170be97469a290" + "4eaaa93aad85b86a19719207f3e423051f5b9cbbe2754eefcb", + "78613c570c8d33b7dd1bd1561d87e36282e8cf4843e7c344a2b2bb6a0da94756d670eeaf" + "fe434f7ae7c780f7cf05ca08", + "66f92b39aa3f4aeb9e2dc03ac3855406fa3ebbab0a6c88a78d7a03482f0c9868d7b78bc0" + "81ede0947c7f37bf193074ba", + "e5c64ed98d7f3701193f25dd237d59c91c0da6e26215e0889d82e6d3e416693f8d58843c" + "f30ab10ab8d0edd9170b53ad"}, + {NID_secp384r1, NID_sha384, + "d9b5cf0b50416573ff3c63133275a18394dd4326be2041e8d97e6e4e3855a4a177e9d26d" + "fd223fe8aa74564edb49bd72de19916fb6f001f44530d5c18e2c332bce1b7415df5927ec" + "e5f3824f34d174b963136b53aef1fb78fb0c06a201a40b2db38e4d8216fc1e392a798c8a" + "b4b3a314496b7f1087804ebfa89bf96e9cdb80c0", + "083e7152734adf342520ae377087a223688de2899b10cfcb34a0b36bca500a4dfa530e23" + "43e6a39da7ae1eb0862b4a0d", + "0470a0f16b6c61172659b027ed19b18fd8f57bd28dc0501f207bd6b0bb065b5671cf3dd1" + "ed13d388dcf6ccc766597aa6044f845bf01c3c3f6126a7368c3454f51425801ee0b72e63" + "fb6799b4420bfdebe3e37c7246db627cc82c09654979c700bb", + "28096ababe29a075fbdf894709a20d0fdedb01ed3eeacb642a33a0da6aed726e13caf6cf" + "206792ec359f0c9f9b567552", + "ee2923f9b9999ea05b5e57f505bed5c6ba0420def42c6fa90eef7a6ef770786525546de2" + "7cdeb2f8586f8f29fb4ee67c", + "50ef923fb217c4cf65a48b94412fda430fac685f0da7bd574557c6c50f5b22e0c8354d99" + "f2c2f2c2691f252f93c7d84a"}, + {NID_secp384r1, NID_sha384, + "9e4042d8438a405475b7dab1cd783eb6ce1d1bffa46ac9dfda622b23ac31057b922eced8" + "e2ed7b3241efeafd7c9ab372bf16230f7134647f2956fb793989d3c885a5ae064e85ed97" + "1b64f5f561e7ddb79d49aa6ebe727c671c67879b794554c04de0e05d68264855745ef3c9" + "567bd646d5c5f8728b797c181b6b6a876e167663", + "63578d416215aff2cc78f9b926d4c7740a77c142944e104aa7422b19a616898262d46a8a" + "942d5e8d5db135ee8b09a368", + "04cadbacef4406099316db2ce3206adc636c2bb0a835847ed7941efb02862472f3150338" + "f13f4860d47f39b7e098f0a390752ad0f22c9c264336cde11bbc95d1816ed4d1b1500db6" + "b8dce259a42832e613c31178c2c7995206a62e201ba108f570", + "7b69c5d5b4d05c9950dc94c27d58403b4c52c004b80a80418ad3a89aabc5d34f21926729" + "e76afd280cc8ee88c9805a2a", + "db054addb6161ee49c6ce2e4d646d7670754747b6737ca8516e9d1e87859937c3ef9b1d2" + "663e10d7e4bd00ec85b7a97a", + "fcc504e0f00ef29587e4bc22faada4db30e2cb1ac552680a65785ae87beb666c792513f2" + "be7a3180fc544296841a0e27"}, + {NID_secp384r1, NID_sha384, + "0b14a7484a40b68a3ce1273b8a48b8fdb65ba900d98541c4bbd07b97e31bcc4c85545a03" + "e9deab3c563f47a036ff60d0361684ba241b5aa68bb46f440da22181ee328a011de98eff" + "34ba235ec10612b07bdfa6b3dc4ccc5e82d3a8d057e1862fef3def5a1804696f84699fda" + "2ec4175a54a4d08bcb4f0406fdac4eddadf5e29b", + "ed4df19971658b74868800b3b81bc877807743b25c65740f1d6377542afe2c6427612c84" + "0ada31a8eb794718f37c7283", + "0433093a0568757e8b58df5b72ea5fe5bf26e6f7aeb541b4c6a8c189c93721749bcacecc" + "f2982a2f0702586a9f812fc66febe320d09e1f0662189d50b85a20403b821ac0d000afdb" + "f66a0a33f304726c69e354d81c50b94ba3a5250efc31319cd1", + "d9b4cd1bdfa83e608289634dbfcee643f07315baf743fc91922880b55a2feda3b38ddf60" + "40d3ba10985cd1285fc690d5", + "009c74063e206a4259b53decff5445683a03f44fa67252b76bd3581081c714f882f882df" + "915e97dbeab061fa8b3cc4e7", + "d40e09d3468b46699948007e8f59845766dbf694b9c62066890dd055c0cb9a0caf0aa611" + "fb9f466ad0bbb00dbe29d7eb"}, + {NID_secp384r1, NID_sha384, + "0e646c6c3cc0f9fdedef934b7195fe3837836a9f6f263968af95ef84cd035750f3cdb649" + "de745c874a6ef66b3dd83b66068b4335bc0a97184182e3965c722b3b1aee488c3620adb8" + "35a8140e199f4fc83a88b02881816b366a09316e25685217f9221157fc05b2d8d2bc8553" + "72183da7af3f0a14148a09def37a332f8eb40dc9", + "e9c7e9a79618d6ff3274da1abd0ff3ed0ec1ae3b54c3a4fd8d68d98fb04326b7633fc637" + "e0b195228d0edba6bb1468fb", + "04a39ac353ca787982c577aff1e8601ce192aa90fd0de4c0ed627f66a8b6f02ae5131554" + "3f72ffc1c48a7269b25e7c289a9064a507b66b340b6e0e0d5ffaa67dd20e6dafc0ea6a6f" + "aee1635177af256f9108a22e9edf736ab4ae8e96dc207b1fa9", + "b094cb3a5c1440cfab9dc56d0ec2eff00f2110dea203654c70757254aa5912a7e73972e6" + "07459b1f4861e0b08a5cc763", + "ee82c0f90501136eb0dc0e459ad17bf3be1b1c8b8d05c60068a9306a346326ff7344776a" + "95f1f7e2e2cf9477130e735c", + "af10b90f203af23b7500e070536e64629ba19245d6ef39aab57fcdb1b73c4c6bf7070c62" + "63544633d3d358c12a178138"}, + {NID_secp384r1, NID_sha512, + "67d9eb88f289454d61def4764d1573db49b875cfb11e139d7eacc4b7a79d3db3bf720819" + "1b2b2078cbbcc974ec0da1ed5e0c10ec37f6181bf81c0f32972a125df64e3b3e1d838ec7" + "da8dfe0b7fcc911e43159a79c73df5fa252b98790be511d8a732fcbf011aacc7d45d8027" + "d50a347703d613ceda09f650c6104c9459537c8f", + "217afba406d8ab32ee07b0f27eef789fc201d121ffab76c8fbe3c2d352c594909abe591c" + "6f86233992362c9d631baf7c", + "04fb937e4a303617b71b6c1a25f2ac786087328a3e26bdef55e52d46ab5e69e5411bf9fc" + "55f5df9994d2bf82e8f39a153ea97d9075e92fa5bfe67e6ec18e21cc4d11fde59a68aef7" + "2c0e46a28f31a9d60385f41f39da468f4e6c3d3fbac9046765", + "90338a7f6ffce541366ca2987c3b3ca527992d1efcf1dd2723fbd241a24cff19990f2af5" + "fd6419ed2104b4a59b5ae631", + "c269d9c4619aafdf5f4b3100211dddb14693abe25551e04f9499c91152a296d7449c08b3" + "6f87d1e16e8e15fee4a7f5c8", + "77ffed5c61665152d52161dc13ac3fbae5786928a3d736f42d34a9e4d6d4a70a02d5af90" + "fa37a23a318902ae2656c071"}, + {NID_secp384r1, NID_sha512, + "45db86829c363c80160659e3c5c7d7971abb1f6f0d495709bba908d7aa99c9df64b3408a" + "51bd69aba8870e2aaff488ef138f3123cf94391d081f357e21906a4e2f311defe527c55e" + "0231579957c51def507f835cceb466eb2593a509dcbee2f09e0dde6693b2bfe17697c9e8" + "6dd672f5797339cbe9ea8a7c6309b061eca7aef5", + "0a3f45a28a355381a919372f60320d6610cfb69c3e318eb1607db3cadfc42b728b77a6a9" + "e9e333de9183c58933daf60f", + "04832cbb7061a719a316e73dbad348fa67cd17c33f40b9000a3d3b691a2a2cd821052566" + "717c3ead01089b56086af1366f1e15a048d1dce642d9ebcbfac7f92b1bcee90fd0240cc7" + "9abd29e32e0e655c4ee1fd34fb88178bba92aca100e7794ed0", + "2a78e651623ba604c42cf094fc7d046629306f508853427ba091448800d1092c041bb232" + "3035fc9d19a8d44950f7dcc3", + "0db0cc9a2bda8dd7e565ad36f91b1c5756d78164dc8a72a5bee4b6bc45ea38c7a16b01d0" + "5b1893d4e06b62db24c30385", + "abd383edaeda7d0b8de1b54fcd3c28874fed62ab266f1f84c8ba796a7b54e5e0695fdb43" + "ce7fe90ed00fa468d87bca64"}, + {NID_secp384r1, NID_sha512, + "4672fce0721d37c5be166bffa4b30d753bcf104b9b414db994b3ed33f36af4935ea59a0b" + "b92db66448b3f57dad4fc67cef10ce141bf82c536be604b89a0bc0e8bca605b867880049" + "d97142d30538fc543bd9d4fab7fdbe2f703815cdb6361beb66acff764bc275f910d16624" + "45b07b92830db69a5994857f53657ed5ca282648", + "2e408c57921939f0e0fe2e80ce74a4fa4a1b4fa7ab070206298fe894d655be50e2583af9" + "e45544b5d69c73dce8a2c8e7", + "04a2b24a5ad4a2e91f12199ed7699e3f297e27bf8b8ea8fbe7ed28366f3544cd8e680c23" + "8450f8a6422b40829d6647b25c2732be0075536e6519f6a099b975a40f8e0de337fa4d48" + "bd0762b43f41cab8deafdef9cfbb9973e457801e3bf9c93304", + "b10b6258afdde81f9c971cc1526d942e20cafac02f59fee10f98e99b8674636bff1d84a6" + "eaa49c0de8d8cfdc90d8ce84", + "be428a8de89a364a134719141ee8d776a3a8338f1132b07e01b28573d8eaf3b9008b6330" + "4c48821e53638b6141f9660b", + "866181dbef5c147d391bed6adcee408c339982c307adc718c2b9ab9e5642d8dedc36dd64" + "02559a3ab614c99c1e56b529"}, + {NID_secp384r1, NID_sha512, + "9ae48fdd9bfc5cb0f4d4761e28b2073bda05a3e3fe82c212e66701dc4573cc67a829b0f8" + "2d7520b1bf11db0c6d1743822bbe41bb0adbd7222aa5fae70fbd1a31f2d4453a01c81e06" + "4d775388468be96f6063f8673b7b8d4455fe1bd4c801ad5e625a015eaa4a1a18da490d2a" + "f8642201eaba3c611cbd65f861d8e19ca82a1ee6", + "1c285da72a8eb1c3c38faab8d3bb4e68dc95c797082b9a3991a21c1de54759071ecf2265" + "fb1eff504ab24174bc6710cf", + "0411acb1b5cc59a4f1df1913a8d6e91cbdafb8206dc44aff7d9da45906b664fc33194d99" + "35a82aa4d62f39618897c86025832ed0b9575fff52a3603bfe89f312751b4c396da98324" + "117a61b3f525d27b2266f6cfb22be07e50b6874435e380ed62", + "2513075e02cc7fb3cff7b7adde46da31c5493749b5cf02758bd5b098a838bfd4d5e4c7fb" + "8268bdc37e219c30efebe878", + "b3d638b3be45f14f170da5bdc22d2114deac93ab340a25b3af2b5c18584bb9147e00dc6c" + "67a2274f79aa4838793eb63f", + "876112bdca2c725eb2f6dbd76d07710a31f0c16d38430cb0817f320a25a9ecfec8a66137" + "d0304612ae29a6a484fd3319"}, + {NID_secp384r1, NID_sha512, + "817d6a110a8fd0ca7b4d565558f68b59a156744d4c5aac5c6610c95451793de2a756f774" + "558c61d21818d3ebeeeb71d132da1c23a02f4b305eccc5cd46bd21dfc173a8a91098354f" + "10ffbb21bf63d9f4c3feb231c736504549a78fd76d39f3ad35c36178f5c233742d2917d5" + "611d2073124845f1e3615b2ef25199a7a547e882", + "9da37e104938019fbdcf247e3df879a282c45f8fb57e6655e36b47723af42bec3b820f66" + "0436deb3de123a21de0ca37b", + "04722d0ea6891d509b18b85ca56f74deb5c3030d2a30433824123d430d03c99279572c3b" + "28ecf01e747b9db8acc55d0ba37e2605ea7092214f366f3639037bffd89fe103c646e990" + "839d3a1ced8d78edb5b9bc60d834fd8e2a3c17e920bdae023a", + "c8c18e53a9aa5915288c33132bd09323638f7995cd89162073984ed84e72e07a37e18c4c" + "023933eace92c35d10e6b1b6", + "6512a8a2be731e301dcf4803764297862bbfa0ac8daed64d8e98b34618ecb20520fc5d3c" + "f890b7783edf86e7ea407541", + "4ff10301f7b4168fae066361376007c1d7aa89a75c87719d0b54711ffef5ef3726f3eef8" + "4f7ebc025c110bde511b17f6"}, + {NID_secp384r1, NID_sha512, + "464f10ec6fb229a51db5fd0e122f2cb8a9a022117e2987f4007bf5565b2c16aba0714e2e" + "3cdd0c100d55ac3017e36fc7501ad8309ab9572aa65424c9eb2e580a119c55777676ec49" + "8df53ef6ae78fd8a988130ee0e6082bf1ef71cd4c946021018a8ca7154d13b174c638912" + "613b0bdb9001c302bf7e443ad2124ab2c1cce212", + "0661ab3bf9f7bef51bec7dff758de289154557beb9ce18cc4b8cc09a871e8322af259cf1" + "88b593dc62f03a19e75f7f69", + "04b4f100558043858efa728082d9b99ad5192b59b0947434f5ba7ff2514508a6d71ba54e" + "7221c31cb0712103272b3f6fa434f6df4eeb2da11498044635067c2715ed15ae251c78ff" + "b9030d87909ea8539b66394e93109ca54c0406cf99960c3e93", + "84a87137edb6894f96c5a8e94a3765162034feb84dfea94e1c71411170c285a80321ec79" + "99e25861844143209804882c", + "4dc9d1b949b36e3c3847ac1c7ed114e1bc9cbe76119cf6fcd3f1b69ee6ee54e3255f1bb2" + "88fe2f8bd6d4049a21793c27", + "56a561d647b62ccae1e6df818b1a6fbde66c82ef0ff69ee415f183e7daf76be22630c7e0" + "2cd3fd729dfa490f26824584"}, + {NID_secp384r1, NID_sha512, + "4e3e0fb96320ddccde8b463c273654c4f7164920b1d63430921d2e808dee403e6420eedd" + "a0a557b911d00736a4f8798dd4ef26673efd6d190988ad4929ec64f8685cfb76070a36cd" + "6a3a4bf2f54fb08a349d44642b6f614043fef9b2813b63457c76537d23da7b37310334f7" + "ba76edf1999dad86f72aa3446445a65952ac4e50", + "66e7cfdeb7f264cf786e35210f458c32223c3a12a3bc4b63d53a5776bc9b069928452484" + "f6241caa3781fd1a4109d4db", + "043c7682de540ab231daf21bf9fc80bda6abf7e17dcc79d476c7b7c3bd4d42d386877fd8" + "ba495c1b0333e04fb5fd2a15050a1582e4f4d72abea9d3476aff8369c41261f0c5dddf2c" + "a82e10f7a163f73df09473d9e5e2552187104e4cc7c6d83611", + "2fa266f5cce190eb77614933ca6a55121ad8bae168ff7a9043d96d13b5ca2fe70101ff9f" + "e1e2b2cd7413e6aa8f49abde", + "e7ecda9da0c52d0474a9f70094dc8f061d7d6a22210d3b69a7be8f389aa666f256322099" + "b87d16ad35357ea856574dba", + "ba348eb40a2830ec5a1130264ac0a8675420b1ae243e808a778135809ece21f42c0c8811" + "66321102b4f02df4c5c7ed9d"}, + {NID_secp384r1, NID_sha512, + "c466b6b6baf7e6ffa876ec06105e2d43534e0517c07b1c4c9fb67ba81ce09525a7721ec3" + "c290f2b1f65b6463d41598e7a25b2238501629953a5ca955b644354fb6856733a2e5bb8f" + "5bc21a0c803493f5539f9fb83aab3dba2c982989c2270c61ab244b68bfe1b948d00c2ed9" + "75e09c29b5f8a7effcad8652a148cc880d503217", + "92c2f7ee64af86d003ab484e12b82fcf245fc330761057fec5b7af8f7e0a2d85b468c21d" + "171460fcb829cae7b986316d", + "04ca43a306479bf8fb537d4b9ff9d635bbb2a0d60d9e854d5b7e269d09d91f78c6b90b61" + "6e4c931629453645a2bb371e14356c4d7f10e690614eaf7f82ba0f9dc1aad98130c0ad9f" + "e353deec565cc04bef789a0a4242322e0058b46cd02f2de77d", + "6ec81fb74f8725ba225f317264460ee300cfd2f02092000989acbdad4799cf55c244a65c" + "557113328fe20282e6badb55", + "cd7a4309bcebc25a8e10899fe2eda5f8b2dbcf329cd2f3d65befd67393e83fba2f8a67a1" + "5c01a6ac8314f9f5e87a9dca", + "6dcfc0426bc148e67e91d4784e3d7e9bc3b7ce3676be62daa7f3f55dfdff6d9dc735b5e3" + "e0bbd0785db1f76f7ac065f3"}, + {NID_secp384r1, NID_sha512, + "feac892b7720af80b3c9eede51e923f18d3d0c5de4c31f4aa75e36df7c7c2fd8f4177885" + "1a24b69e67dccb65e159dd5c383243bad7cfedcc5e85c8a01c34b0b94ba8e07e4c024c09" + "d279b3731e8b62f9562d3c4f5042567efe42a9d0eaaabab28bc6f11232fc8ceaaf4518d9" + "f3b2bebf020294496b7f6b879e69503f75fecd3d", + "15347caaad1067f1848a676bd0a8c52021ae604b79d02775a0459226e0391a3acd26653c" + "916fcfe86149fb0ee0904476", + "04e5a0463163964d984f5bad0072d45bc2059939e60a826ccca36c151460ae360f5d6679" + "f60fe43e999b6da5841c96e48a30f2dd425a3fa2c95d34124217250b39e3b4a14f3e6e41" + "5ae8e5b0409eb72f43f78b64d0ce6f2d49980d6f04cd1391db", + "1a2d224db4bb9c241ca5cab18920fad615fa25c1db0de0f024cb3ace0d11ef72b0568854" + "46659f67650fdff692517b1c", + "87b4de0fb21df38dfc9a4b1e350da67547e307f55b5b9dd6615e408afe7c3553a6e02722" + "847367439e636074faa2182b", + "375d965753b9ed6c6c08576726f8308c2f8dbd2737824464e71265d47907e26f615bbeb8" + "203ec617520d4ecd1851dc44"}, + {NID_secp384r1, NID_sha512, + "cf2982e3bf174ce547741b969403cd11e9553067e6af8177d89511a0eb040db924530bdb" + "a65d8b1ff714228db0737c1756f509e1506014a10736e65be2f91980a73891496e90ff27" + "14a3601c7565cdcef5a395e2e0e1652f138d90d61eaa9cba993b823245647f6e07cec9b8" + "b4449cd68a29741cd1579c66e548ca0d0acf33aa", + "ac1cb5e59bda2eff3413a3bab80308f9fb32c595283c795de4c17fdae8d4647b5f108fd0" + "801aee22adb7db129283b5aa", + "04bc6b1a718284803553c173089c397870aaaecca579bb8e81a8cfa12473cd2057567fa8" + "726a19ed427cc035baeec2c55114f82997d1129b669f0015350e47ad561b1b13441af4fb" + "44656f15ed0c5706984d66655accc52f2e943eef39cb1cdc21", + "8053a46e875f446056b06d4318fa3e8977622de7207cbf0996bf35b0e9b19aaa507f642b" + "cf0be9f048f1af09806f6946", + "a994eb15b64114ce8a9342d18b5edda96a6d76314a5ac03da723699177d352a4a9f3b712" + "1b11a91e43a6af4025da51d6", + "8183ae33a888e99aa76882da0a6705ad102f2bbd9572fad0d2e4d6d70151970469e00c52" + "20e59c14724d771c1384b302"}, + {NID_secp384r1, NID_sha512, + "bf9fdd4107ef5a6070108771ac9eee4f0c8043bf0d04db772a47294f4137e2439d94b337" + "114b074e57e0cb78d0ccf352a2833e9788ee2a1a9ffeacd34f38fcefb86653d70c7dadd4" + "cf6548d608e70acdef6c7530974b92c813798add659752a8c72b05e1ad9c65c21834ce6f" + "be49d8a1426b5a54270794436d284364fac6ec1a", + "205f1eb3dfacff2bdd8590e43e613b92512d6a415c5951bda7a6c37db3aae39b9b7ec6ed" + "d256609e75373419087fa71f", + "04c9f1f63a18c761b077a1ec35fbb2de635db9b8592c36194a01769b57728c7755d4c79b" + "3d5b97a1a4631e30c86d03f13cf8c4a38770054d5cc9bb9182e6d4638242c4fd16e869ac" + "22e44c4b9402d594e0c6f5df6a9a7de32a4893d9f6588f1950", + "ecd395c5d8b7d6e6b2b19644e0d2e6086c912c6a0f5b8ed4b94b7290b65852c9741ce8ee" + "b08d8751ead8a183e17d76c6", + "e81331d78b438b0b8d98c1be03385ba5d614af182f1677f259126cc3de7eaac6c19b02be" + "955d936b6bf9c27c6796e6f0", + "17c2b7a8e0fc93909762aa9f86f9561e759ecb88f02337b2018363be6095d9e4324a6d32" + "96046686624b5efad6b52878"}, + {NID_secp384r1, NID_sha512, + "5d634fb39a2239256107dc68db19751540b4badac9ecf2fce644724401d6d632b3ae3b2e" + "6d05746b77ddc0c899878032248c263eda08d3d004d35952ad7a9cfe19343d14b37f9f63" + "2245e7b7b5fae3cb31c5231f82b9f1884f2de7578fbf156c430257031ba97bc6579843bc" + "7f59fcb9a6449a4cd942dffa6adb929cf219f0ad", + "e21e3a739e7ded418df5d3e7bc2c4ae8da76266a1fc4c89e5b09923db80a72217f1e9615" + "8031be42914cf3ee725748c1", + "040f753171922b5334f3dd2778a64ce2da8295121939beae71ad85e5344e893be0fd03cf" + "14e1f031adec098e0c4409449c45c10a0ffc0eb2f1cec5c89b698061108313ee7d449ad5" + "80efad344f0e7cf35be8a18fca620f112e57bdc746abdace55", + "d06bea06b25e6c30e866b1eb0657b45673e37b709013fb28fd7373afc8277cbc861354f8" + "21d0bd1927e52ec083a0f41f", + "e8d4a31dd0e7d2522be62a32608e744c3775ceb606dc897899f0c73f1a40ce9a8be854cd" + "506e65cd81fd7fa2c616cb7b", + "8151b681b6b6046d3c36f332d06d9ba7751e740631cdb759f88c50a25a8e950d5023df8a" + "15c77243743733c4feaf21d5"}, + {NID_secp384r1, NID_sha512, + "c9b4ff721b3e886f0dc05856ffff0aabb64a8504b1746a47fdd73e6b7ebc068f06ac7ffa" + "44c757e4de207fc3cbfaf0469d3ac6795d40630bcafe8c658627e4bc6b86fd6a2135afbc" + "18ccc8e6d0e1e86016930ca92edc5aa3fbe2c57de136d0ea5f41642b6a5d0ddeb380f245" + "4d76a16639d663687f2a2e29fb9304243900d26d", + "93434d3c03ec1da8510b74902c3b3e0cb9e8d7dccad37594d28b93e065b468d9af4892a0" + "3763a63eae060c769119c23c", + "04a52c25f2af70e5bc6a992ecef4ea54e831ed5b9453747d28aec5cffb2fcfee05be80c5" + "cbab21606b5507aa23878adee12cf2a9afeff83f3041dc8a05f016ccae58aa1a0e0dc6be" + "9d928e97f2598c9ba5e9718d5eb74c9cfb516fd8c09f55f5b9", + "13d047708ae5228d6e3bbada0e385afdb3b735b31123454fdf40afe3c36efed563fd2cce" + "84dcc45c553b0993d9ca9ec3", + "a0203f6f2c456baac03538ed506a182e57a25151802cf4b2557613b2fb615ebd4c50ddc5" + "05f87c048a45bad3b2fc371c", + "0eab56457c4080400fa3af124761d5a01fef35f9649edba8b97d22116386f3b8b363e97e" + "f3f82616d5d825df1cf865ef"}, + {NID_secp384r1, NID_sha512, + "db2ad659cf21bc9c1f7e6469c5f262b73261d49f7b1755fc137636e8ce0202f929dca446" + "6c422284c10be8f351f36333ebc04b1888cba217c0fec872b2dfc3aa0d544e5e06a9518a" + "8cfe3df5b20fbcb14a9bf218e3bf6a8e024530a17bab50906be34d9f9bba69af0b11d8ed" + "426b9ec75c3bd1f2e5b8756e4a72ff846bc9e498", + "e36339ddbe8787062a9bc4e1540690915dd2a2f11b3fe9ee946e281a0a2cbed426df405e" + "d9cb0eca42f85443efd09e0c", + "04a1ffb4b790d1593e907369b69de10b93cddbb02c6131f787422364d9d692768ef80979" + "70306cce16c97f2b10c538efa7d0692028601ea794d2563ffe9facc7273938fab47dd00b" + "8960be15549a9c2b3f8552583eb4c6cd212fe486c159c79153", + "2226f7329378cecd697f36ae151546643d67760856854661e31d424fae662da910e2157d" + "a9bb6dfbe3622296e0b5710c", + "20dcc25b67dd997621f437f65d78347fb57f8295b1b14453b1128203cda892bcfe726a2f" + "107d30975d63172e56f11d76", + "51cff592cbef75ef8321c8fa1e4229c4298b8180e427bee4e91d1e24fc28a729cf296beb" + "728960d2a58cf26773d8e2e2"}, + {NID_secp384r1, NID_sha512, + "dbd8ddc02771a5ff7359d5216536b2e524a2d0b6ff180fa29a41a8847b6f45f1b1d52344" + "d32aea62a23ea3d8584deaaea38ee92d1314fdb4fbbecdad27ac810f02de0452332939f6" + "44aa9fe526d313cea81b9c3f6a8dbbeafc899d0cdaeb1dca05160a8a039662c4c845a3db" + "b07be2bc8c9150e344103e404411668c48aa7792", + "5da87be7af63fdaf40662bd2ba87597f54d7d52fae4b298308956cddbe5664f1e3c48cc6" + "fd3c99291b0ce7a62a99a855", + "0454c79da7f8faeeee6f3a1fdc664e405d5c0fb3b904715f3a9d89d6fda7eabe6cee86ef" + "82c19fca0d1a29e09c1acfcf18926c17d68778eb066c2078cdb688b17399e54bde5a79ef" + "1852352a58967dff02c17a792d39f95c76d146fdc086fe26b0", + "1b686b45a31b31f6de9ed5362e18a3f8c8feded3d3b251b134835843b7ae8ede57c61dc6" + "1a30993123ac7699de4b6eac", + "9dbfa147375767dde81b014f1e3bf579c44dd22486998a9b6f9e0920e53faa11eed29a4e" + "2356e393afd1f5c1b060a958", + "e4d318391f7cbfe70da78908d42db85225c85f4f2ff413ecad50aad5833abe91bdd5f6d6" + "4b0cd281398eab19452087dd"}, + {NID_secp521r1, NID_sha224, + "58ec2b2ceb80207ff51b17688bd5850f9388ce0b4a4f7316f5af6f52cfc4dde4192b6dbd" + "97b56f93d1e4073517ac6c6140429b5484e266d07127e28b8e613ddf65888cbd5242b2f0" + "eee4d5754eb11f25dfa5c3f87c790de371856c882731a157083a00d8eae29a57884dbbfc" + "d98922c12cf5d73066daabe3bf3f42cfbdb9d853", + "1d7bb864c5b5ecae019296cf9b5c63a166f5f1113942819b1933d889a96d12245777a994" + "28f93de4fc9a18d709bf91889d7f8dddd522b4c364aeae13c983e9fae46", + "0401a7596d38aac7868327ddc1ef5e8178cf052b7ebc512828e8a45955d85bef49494d15" + "278198bbcc5454358c12a2af9a3874e7002e1a2f02fcb36ff3e3b4bc0c69e70184902e51" + "5982bb225b8c84f245e61b327c08e94d41c07d0b4101a963e02fe52f6a9f33e8b1de2394" + "e0cb74c40790b4e489b5500e6804cabed0fe8c192443d4027b", + "141f679033b27ec29219afd8aa123d5e535c227badbe2c86ff6eafa5116e9778000f5385" + "79a80ca4739b1675b8ff8b6245347852aa524fe9aad781f9b672e0bb3ff", + "06b973a638bde22d8c1c0d804d94e40538526093705f92c0c4dac2c72e7db013a9c89ffc" + "5b12a396886305ddf0cbaa7f10cdd4cd8866334c8abfc800e5cca365391", + "0b0a01eca07a3964dd27d9ba6f3750615ea36434979dc73e153cd8ed1dbcde2885ead575" + "7ebcabba117a64fcff9b5085d848f107f0c9ecc83dfa2fa09ada3503028"}, + {NID_secp521r1, NID_sha224, + "2449a53e0581f1b56d1e463b1c1686d33b3491efe1f3cc0443ba05d65694597cc7a2595b" + "da9cae939166eb03cec624a788c9bbab69a39fb6554649131a56b26295683d8ac1aea969" + "040413df405325425146c1e3a138d2f4f772ae2ed917cc36465acd66150058622440d7e7" + "7b3ad621e1c43a3f277da88d850d608079d9b911", + "17e49b8ea8f9d1b7c0378e378a7a42e68e12cf78779ed41dcd29a090ae7e0f883b0d0f2c" + "bc8f0473c0ad6732bea40d371a7f363bc6537d075bd1a4c23e558b0bc73", + "0400156cd2c485012ea5d5aadad724fb87558637de37b34485c4cf7c8cbc3e4f106cb1ef" + "d3e64f0adf99ddb51e3ac991bdd90785172386cdaf2c582cc46d6c99b0fed101edeeda71" + "7554252b9f1e13553d4af028ec9e158dbe12332684fc1676dc731f39138a5d301376505a" + "9ab04d562cc1659b0be9cb2b5e03bad8b412f2699c245b0ba2", + "1dc3e60a788caa5f62cb079f332d7e5c918974643dca3ab3566a599642cd84964fbef43c" + "e94290041fe3d2c8c26104d9c73a57a7d4724613242531083b49e255f33", + "12592c0be6cce18efb2b972cd193d036dcb850f2390fa8b9b86b2f876548bc424fb3bc13" + "c1e5c415fa09d0ecfcae5bf76fb23e8322d7eecb264a2ae6d20ef50d405", + "11bc9713be88e3b9912a3e5f5d7b56f20573e979b1a75d04ce339f724bddffa4665d2599" + "5fe24d32507d8a07c5e10169f5338ef2827737f7b0291752b21237217e3"}, + {NID_secp521r1, NID_sha224, + "7ba05797b5b67e1adfafb7fae20c0c0abe1543c94cee92d5021e1abc57720a6107999c70" + "eacf3d4a79702cd4e6885fa1b7155398ac729d1ed6b45e51fe114c46caf444b20b406ad9" + "cde6b9b2687aa645b46b51ab790b67047219e7290df1a797f35949aaf912a0a8556bb210" + "18e7f70427c0fc018e461755378b981d0d9df3a9", + "135ea346852f837d10c1b2dfb8012ae8215801a7e85d4446dadd993c68d1e9206e1d8651" + "b7ed763b95f707a52410eeef4f21ae9429828289eaea1fd9caadf826ace", + "04018d40cc4573892b3e467d314c39c95615ee0510e3e4dbc9fa28f6cd1f73e7acde15ad" + "7c8c5339df9a7774f8155130e7d1f8de9139ddd6dfe1841c1e64c38ea98243017021782d" + "33dc513716c83afe7ba5e7abef9cb25b31f483661115b8d6b5ae469aaf6f3d54baa3b658" + "a9af9b6249fd4d5ea7a07cb8b600f1df72b81dac614cfc384a", + "0c24acc1edb3777212e5b0bac744eadf4eda11fa150753b355bf96b189e6f57fc02284bb" + "22d8b3cd8bba7a09aae9f4ea955b382063425a6f8da2f99b9647b147172", + "183da7b8a9f9d5f08903359c1a2435b085fcf26a2ed09ab71357bb7634054acc569535e6" + "fe81d28233e4703005fc4bf83ce794d9463d575795aa0f03398e854cefd", + "0b3621145b9866ab7809139795cc30cd0404127a7f0fafa793660491009f6c53724fdb0b" + "1ffbf0fd51c131180b8a957fe66e76d2970247c024261c768dee9abbfb9"}, + {NID_secp521r1, NID_sha224, + "716dabdb22a1c854ec60420249905a1d7ca68dd573efaff7542e76f0eae54a1828db69a3" + "9a1206cd05e10e681f24881b131e042ed9e19f5995c253840e937b809dfb8027fed71d54" + "1860f318691c13a2eb514daa5889410f256305f3b5b47cc16f7a7dad6359589b5f4568de" + "4c4aae2357a8ea5e0ebaa5b89063eb3aa44eb952", + "1393cb1ee9bfd7f7b9c057ecc66b43e807e12515f66ed7e9c9210ba1514693965988e567" + "fbad7c3f17231aacee0e9b9a4b1940504b1cd4fd5edfaa62ba4e3e476fc", + "0401e855c935139c8092092cfa733db1292530506eeb2bbb1687f9602c36d97a6714e998" + "892d5d3b842d1896a6ece9d549e9792881a256256137b3dff180c96cc5d07b018d83b6e9" + "3cd287311f7bf7c1d7f9eeabcf0b69c12f2d8f40e333e81e956d968532a37a4c04d76187" + "4df293b484cd7053b03fdbc2fdcd3b4c412d6f272fb7c93fe6", + "1d98619bdc04735d30c222fc67da82c069aea5f449af5e8c4db10c1786c0cb9e6f2cc0bb" + "66fa6be18c485570d648dafcd0a973c43d5c94e9a9dacbd3170e53fa2a0", + "0bf47fabe107ce0ec03e2ad60a79b058e1bebb18568b6a8cdbe86032e71aa30c15766105" + "b2ea952cfa79bcab046df601159f96e179bbcf252dc68ac73d31481fdae", + "1f918fec69cd07d90f9d892b7117e7519c3224947f4262f1fd97077dd5386a6c78aeddff" + "3ee97e59ea353f06029f1336f0d6ef5c0f4b17ca59343a55319b7bfc3db"}, + {NID_secp521r1, NID_sha224, + "9cc9c2f131fe3ac7ea91ae6d832c7788cbbf34f68e839269c336ceef7bef6f20c0a62ea8" + "cc340a333a3002145d07eba4cf4026a0c4b26b0217a0046701de92d573d7c87a386a1ea6" + "8dc80525b7dcc9be41b451ad9f3d16819e2a0a0b5a0c56736da3709e64761f97cae2399d" + "e2a4022dc4c3d73c7a1735c36dbde86c4bc5b6f7", + "179fa164e051c5851e8a37d82c181e809a05fea9a3f083299b22684f59aa27e40dc5a33b" + "3f7949338764d46bfe1f355134750518b856d98d9167ef07aac3092c549", + "0401857cc7bbed20e87b3fd9a104956aa20c6502192910e0e7598410526ebfe1c99397b8" + "5189612a60c51fb8f4dd5cb08a8cd2e702563062dcb043410715c5323a004601fce8d135" + "284310d2f38c216030634b32cd223222f0d9d8d2b7c55477c4b8b74fc6c96a6092f34b05" + "ca44d3633a5037c2166c479a032bb4f949f89fc1ba5236d07d", + "16d9704c0cee791f2938bb2a8a595752a3635c2f557efeecefd719414b5f2aaf846080f5" + "82c76eae7a8fddf81859b49d0131c212524d55defa67dca1a9a28ca400f", + "1c9a4e51774384e8362876a87c572e6463a54413c7c6252c552ebb182f83e45ace436ade" + "4ca373d8a7216e83efb62c8b41c4d5132a0afa65078f16d189baca39187", + "1e92a7dd5fea29a666398e1df5775cbb5664fe6943fe4c1d2bba516b7543c84df584458e" + "53919c4ffab579a26fb3c892a5d1a77b0a07428c89350f8b559e627b014"}, + {NID_secp521r1, NID_sha224, + "14c69f8d660f7a6b37b13a6d9788eff16311b67598ab8368039ea1d9146e54f55a83b3d1" + "3d7ac9652135933c68fafd993a582253be0deea282d86046c2fb6fd3a7b2c80874ced28d" + "8bed791bd4134c796bb7baf195bdd0dc6fa03fdb7f98755ca063fb1349e56fd0375cf947" + "74df4203b34495404ebb86f1c7875b85174c574c", + "13dabca37130ba278eae2b3d106b5407711b0d3b437fbf1c952f0773571570764d2c7cb8" + "896a8815f3f1975b21adc6697898e5c0a4242092fc1b80db819a4702df4", + "0400bc2aebf40cd435bc37d73c09d05f2fd71321111a767c2b0d446f90dd4a186839c694" + "ceb734e027e7ee948f0f63e4d3f1656d3d543df23c342a599306909b34710901f4c98ac0" + "3f0718e58d5d1762c920445b11dbdd60ec7f60095809204e14965a4ecb0be6fea06adbac" + "8ba431d6f144c75c199225df2a619a34be99897125b3a10af8", + "0401187c8b89945a1e48cda9ee52167789f4121e67482a7ac797899f5d3d2e623aed31e4" + "adae08a8d43e69028fa074d2650317cbc765f6ed191cf0317b4bae57881", + "1e572afed754016fba43fc33e352932c4db65efcb84e2bd159b40fc5925893b161effc40" + "240be28d8c07154d2615f605c6f0451b976522d95afd37f46602df7a12a", + "030370c1c5352c2b663ac1858b42f69545b2f58ed5b2c007f303726977d3c756b5d644ec" + "6788f94c886f78269aa190a3d8d1ae10e4fd24d937c4556fb9e1953fd6d"}, + {NID_secp521r1, NID_sha224, + "8d8e75df200c177dbfe61be61567b82177ea5ec58e2781168d2277d2fd42668f01248ca3" + "eb29ffa2689b12ae40f9c429532b6d2e1f15891322b825a0a072a1c68fa09e78cfdef3e9" + "5ed6fdf7233a43cb68236560d49a3278f0b3f47cb08f475bd9ab2f60755ea4a1767de931" + "3b71a1b9ea87ef33f34682efbda263b0f8cc2f52", + "198681adbde7840d7ccd9cf1fb82056433fb4dd26bddf909af7b3b99da1ca2c05c8d4560" + "ecd80ba68f376f8b487897e374e99a9288ed7e3645cc0d00a478aae8d16", + "040057ce3777af7032f1f82308682e71fe09f88bf29dacd5018a725e1caa4b1e2bfdd894" + "fe618f9266f31ba089856dc9c1b70e4a2faa08b4b744d1aafcd5ae99e2c7360199bcfef2" + "021bc5890d7d39ec5dc0c26956801e84cae742cf6c50386eb289b6e97754dd25a94abf81" + "f1cb1b36935b5eb29f4b32a6516d2ff6a7d23064a0daec94b3", + "19d2d74ad8ee2d85048f386998a71899ef6c960b4ab324e5fd1c0a076c5a632fd0009500" + "076522e052c5c9806eef7056da48df6b16eb71cdf0f1838b0e21715fce0", + "18ecacbcffd5414bbb96728e5f2d4c90178e27733d13617e134ec788022db124374bbaa1" + "1e2c77fe3f38d1af6e998e1b0266b77380984c423e80ffa6ff2bcafd57a", + "1c727f34b6a378f3087721a54e9796499b597ecf6666b8f18312d67e1190a8a66e878efc" + "2367b551267494e0245979ef4deed6d2cbf2c3711af6d82ccfeb101a377"}, + {NID_secp521r1, NID_sha224, + "10631c3d438870f311c905e569a58e56d20a2a560e857f0f9bac2bb7233ec40c79de1452" + "94da0937e6b5e5c34fff4e6270823e5c8553c07d4adf25f614845b2eac731c5773ebbd71" + "6ab45698d156d043859945de57473389954d223522fbafecf560b07ef9ba861bcc1df9a7" + "a89cdd6debf4cd9bf2cf28c193393569ccbd0398", + "08c4c0fd9696d86e99a6c1c32349a89a0b0c8384f2829d1281730d4e9af1df1ad5a0bcfc" + "cc6a03a703b210defd5d49a6fb82536f88b885776f0f7861c6fc010ef37", + "040164ac88ed9afe137f648dd89cdd9956682830cac5f7c1a06d19a1b19f82bb1d22dfee" + "fea30d35c11202fed93fd5ce64835d27c6564d6e181287fa04a2d20994986b005cb83669" + "265f5380ccefe6b4f85fdf0049e6703f6f378a0b2e52ed0fbbcf300afebb722f4ed48e38" + "19cb976c1d60e2ba05646b478f6dfecfbae730e9644c297f00", + "189801432cba9bf8c0763d43b6ec3b8636e62324587a4e27905b09a58e4aa66d07d096db" + "ce87824e837be1c243dd741f983c535a5dd2f077aac8beee9918258d3cb", + "0917723f7241e8dc7cd746b699ab621d068dd3a90e906aaf0a4862744b96fd4e5ccdb9c7" + "796c27f7196e693d06ec209464c3ea60ad6313e9b77cceaa14767e6651c", + "0957b0ecdc3668f6efa5d0957615bcfffd6419c5e57579b74f960f65ae3fb9e8284322ff" + "710b066f7e0959ac926d3cf9a594bdb70bbec756c96910b26a2486dee9e"}, + {NID_secp521r1, NID_sha224, + "80aad6d696cbe654faa0d0a24d2f50d46e4f00a1b488ea1a98ed06c44d1d0c568beb4ab3" + "674fc2b1d2d3da1053f28940e89ba1244899e8515cabdd66e99a77df31e90d93e37a8a24" + "0e803a998209988fc829e239150da058a300489e33bf3dcdaf7d06069e74569fee77f4e3" + "875d0a713ccd2b7e9d7be62b34b6e375e84209ef", + "1466d14f8fbe25544b209c5e6a000b771ef107867e28ed489a42015119d1aa64bff51d6b" + "7a0ac88673bbc3618c917561cff4a41cdb7c2833dab5ebb9d0ddf2ca256", + "0401dc8b71d55700573a26af6698b92b66180cf43e153edadb720780321dbb4e71d28e0a" + "488e4201d207fc4848fe9dd10dcabec44492656a3ff7a665fe932445c82d0b01920b1633" + "1b7abeb3db883a31288ef66f80b7728b008b3cc33e03a68f68d9e653a86e3177bbc00014" + "fa5ea4c1608c0d455c2e2ac7bd8ab8519ebf19955edf1baf8d", + "160d04420e0d31b0df476f83393b1f9aff68389cc3299e42ef348d97646f7531a722b66d" + "dfb9501bbb5c4a41d84c78be7233b11489bceb817d23060e6017433fab8", + "08077aabd0a342f03f912007c586cfedfc63f93d1118f720d5b62b3ce141a60f86f111df" + "d8fc2e31a6778981f1a5e28f29a7369bd7897bb41240c8d3a9c170e0ee0", + "00abc75fc154b93840579457820957e89d1260fee0a4b9bb1946f61ca1e71afd76bb5e10" + "77b3e38ceb39d1fac5ef8b217c4110617b3ad118e02b3fcc2a39ef38613"}, + {NID_secp521r1, NID_sha224, + "8a7792a2870d2dd341cd9c4a2a9ec2da753dcb0f692b70b64cef2e22071389c70b3b188d" + "ea5f409fb435cbd09082f59de6bc2ff9e65f91b7acc51e6e7f8e513148cb3c7c4664f227" + "d5c704626b0fda447aa87b9d47cd99789b88628eb642ed250312de5ba6b25f3d5342a3cb" + "b7ebd69b0044ee2b4c9ba5e3f5195afb6bea823d", + "01a99fcf54c9b85010f20dc4e48199266c70767e18b2c618044542cd0e23733817776a1a" + "45dbd74a8e8244a313d96c779f723013cd88886cb7a08ef7ee8fdd862e7", + "0401912d33b01d51e2f777bdbd1ada23f2b1a9faf2be2f2a3b152547db9b149b697dd718" + "24ca96547462e347bc4ef9530e7466318c25338c7e04323b1ba5fd25ea716200bbe9b1e3" + "a84accd69b76b253f556c63e3f374e3de0d1f5e3600fc19215533b2e40d6b32c3af33314" + "d223ea2366a51d1a337af858f69326389276f91be5c466e649", + "14fafd60cb026f50c23481867772411bb426ec6b97054e025b35db74fe8ea8f74faa2d36" + "e7d40b4652d1f61794878510b49b7b4fe4349afccd24fc45fec2fd9e9e7", + "18b1df1b6d7030a23a154cacce4a2e3761cc6251ff8bf6c9f6c89d0a15123baef9b338ad" + "a59728349ce685c03109fcde512ed01a40afd2ca34e1bc02ecf2871d45c", + "0a399f9b9e21aeddf450429fec2dc5749e4a4c7e4f94cee736004dcc089c47635da22845" + "992cd076a4f0a01d2cc1b0af6e17b81a802361699b862157ad6cad8bd1d"}, + {NID_secp521r1, NID_sha224, + "f971bcd396efb8392207b5ca72ac62649b47732fba8feaa8e84f7fb36b3edb5d7b5333fb" + "fa39a4f882cb42fe57cd1ace43d06aaad33d0603741a18bc261caa14f29ead389f7c2053" + "6d406e9d39c34079812ba26b39baedf5feb1ef1f79990496dd019c87e38c38c486ec1c25" + "1da2a8a9a57854b80fcd513285e8dee8c43a9890", + "1b6015d898611fbaf0b66a344fa18d1d488564352bf1c2da40f52cd997952f8ccb436b69" + "3851f9ccb69c519d8a033cf27035c27233324f10e9969a3b384e1c1dc73", + "040110c6177ceb44b0aec814063f297c0c890671220413dbd900e4f037a67d87583eaf4b" + "6a9a1d2092472c17641362313c6a96f19829bb982e76e3a993932b848c7a9700f6e566c4" + "e49b2ee70a900dc53295640f3a4a66732df80b29f497f4ae2fa61d0949f7f4b12556967b" + "b92201a4f5d1384d741120c95b617b99c47a61e11c93a482d6", + "1a88667b9bdfe72fb87a6999a59b8b139e18ef9273261549bc394d884db5aa64a0bc7c7d" + "38a8ef17333478d2119d826e2540560d65f52b9a6dc91be1340cfd8f8f8", + "015f73def52ea47ddb03e0a5d154999642202e06e6734ac930c1dc84756c67bbb1cca9f2" + "1f92d61bfdb2052c5dd2833349610f68139393d77250a7662ef7bd17cbe", + "155c744a729f83b27d1f325a91e63a0d564fe96ff91eaa1bad3bff17d2abffa065d14a1d" + "20a04dd993f6ed3260b60bcc6401e31f6bc75aaafe03e8c1a9cd14d2708"}, + {NID_secp521r1, NID_sha224, + "ec0d468447222506b4ead04ea1a17e2aa96eeb3e5f066367975dbaea426104f2111c45e2" + "06752896e5fa7594d74ed184493598783cb8079e0e915b638d5c317fa978d9011b44a76b" + "28d752462adf305bde321431f7f34b017c9a35bae8786755a62e746480fa3524d398a6ff" + "5fdc6cec54c07221cce61e46fd0a1af932fa8a33", + "05e0d47bf37f83bcc9cd834245c42420b68751ac552f8a4aae8c24b6064ae3d33508ecd2" + "c17ec391558ec79c8440117ad80e5e22770dac7f2017b755255000c853c", + "0401a6effc96a7f23a44bf9988f64e5cfafdae23fa14e4bee530af35d7a4ddf6b80dcd0d" + "937be9dd2db3adcda2f5216fecbce867ee67e7e3773082f255156e31358c2f01e7760190" + "dfbe07ec2df87067597087de262c1e0a12355456faba91b2e7277050d73b924e14c0e93b" + "8457a8b3e1f4207ce6e754274f88ad75c000d1b2977edc9c1a", + "18afea9a6a408db1e7a7bb1437a3d276f231eacfc57678bfa229d78681cbe4e800e60653" + "32a3128db65d3aa446bb35b517dca26b02e106e1311881a95b0302d15e8", + "01c49b3c1d21f1678bdbe1ac12167e95e06617190bdee1a729c1c649210da19e2e210f66" + "89e1310513bfe2ac6c0f4ee5f324f344b31b18df341eaadb826d07adc9b", + "129d4931ba457443012f6ffecd002f2abc3a4b65a58fee8457917ebcf24b29a1d3055b7f" + "c62939a74ebb0c3582172ee7c3c75e0b2fa2367c6e04df63a7a91d593ad"}, + {NID_secp521r1, NID_sha224, + "d891da97d2b612fa6483ee7870e0f10fc12a89f9e33d636f587f72e0049f5888782ccde3" + "ea737e2abca41492bac291e20de5b84157a43c5ea900aef761006a4471072ab6ae6d515f" + "fe227695d3ff2341355b8398f72a723ae947f9618237c4b6642a36974860b452c0c62026" + "88bc0814710cbbff4b8e0d1395e8671ae67ada01", + "1804ab8f90ff518b58019a0b30c9ed8e00326d42671b71b067e6f815ac6752fa35016bd3" + "3455ab51ad4550424034419db8314a91362c28e29a80fbd193670f56ace", + "0400a79529d23a832412825c3c2ad5f121c436af0f29990347ecfa586ce2e57fd3c7e062" + "4d8db1f099c53473dbc2578f85416ad2ac958a162051014fb96bf07f9e1d17017c0750f2" + "6df0c621d2d243c6c99f195f0086947b1bf0f43731555f5d677e2d4a082fb5fe8da87e15" + "92a5fa31777da3299cede5a6f756edf81c85b77853388bb3ab", + "042d7c36fec0415bc875deb0fab0c64548554062e618aee3aa6670ffd68ab579fe620d3a" + "9316357267fd3111c0ed567dca663acd94b646d2ba0771953cd9690ef42", + "0d01dfbef126febbdfa03ef43603fd73bc7d2296dce052216e965fed7bb8cbbc24142bfc" + "ddb60c2e0bef185833a225daa0c91a2d9665176d4ad9986da785f4bfcf0", + "16627e2614dbcd371693c10bbf579c90c31a46c8d88adf59912c0c529047b053a7c77151" + "42f64dcf5945dbc69ff5b706c4b0f5448d04dd1f0b5a4c3765148bf253d"}, + {NID_secp521r1, NID_sha224, + "924e4afc979d1fd1ec8ab17e02b69964a1f025882611d9ba57c772175926944e42c68422" + "d15f9326285538a348f9301e593e02c35a9817b160c05e21003d202473db69df695191be" + "22db05615561951867f8425f88c29ba8997a41a2f96b5cee791307369671543373ea91d5" + "ed9d6a34794d33305db8975b061864e6b0fe775f", + "0159bff3a4e42b133e20148950452d99681de6649a56b904ee3358d6dd01fb6c76ea0534" + "5cb9ea216e5f5db9ecec201880bdff0ed02ac28a6891c164036c538b8a8", + "04012d7f260e570cf548743d0557077139d65245c7b854ca58c85920ac2b290f2abfeccd" + "3bb4217ee4a29b92513ddce3b5cbf7488fb65180bb74aeb7575f8682337ef50175601862" + "30c7e8bff0bffce1272afcd37534f317b453b40716436a44e4731a3ec90a8f17c53357bc" + "54e6ff22fc5b4ca892321aa7891252d140ece88e25258b63d5", + "14b8a30f988cefdc0edec59537264edb0b697d8c4f9e8507cf72bc01c761304bd2019da1" + "d67e577b84c1c43dd034b7569f16635a771542b0399737025b8d817e1c3", + "0fc50939ebca4f4daa83e7eaf6907cb08f330c01d6ea497b86becda43dfcad47cb5c48f5" + "eb2cc924228628070bcd144088c449a7873242ba86badf796097dbecd6d", + "0ccb6463c4301ba5c043e47ed508d57dd908fd0d533af89fd3b11e76343a1cf2954ce90b" + "0eb18cbc36acd6d76b3906612d8a0feec6ebed13d88650ed9c708b28a11"}, + {NID_secp521r1, NID_sha224, + "c64319c8aa1c1ae676630045ae488aedebca19d753704182c4bf3b306b75db98e9be4382" + "34233c2f14e3b97c2f55236950629885ac1e0bd015db0f912913ffb6f1361c4cc25c3cd4" + "34583b0f7a5a9e1a549aa523614268037973b65eb59c0c16a19a49bfaa13d507b29d5c7a" + "146cd8da2917665100ac9de2d75fa48cb708ac79", + "17418dfc0fc3d38f02aa06b7df6afa9e0d08540fc40da2b459c727cff052eb0827bdb3d5" + "3f61eb3033eb083c224086e48e3eea7e85e31428ffe517328e253f166ad", + "04000188366b9419a900ab0ed9633426d51e25e8dc03f4f0e7549904243981ec469c8d6d" + "938f6714ee620e63bb0ec536376a73d24d40e58ad9eb44d1e6063f2eb4c51d009889b920" + "3d52b9243fd515294a674afd6b81df4637ffdddc43a7414741eda78d8aa862c9cbbb618a" + "cec55bb9a29aac59616fc804a52a97a9fc4d03254f4469effe", + "1211c8824dcbfa0e1e15a04779c9068aed2431daeac298260795e6a80401f11f6d52d36b" + "cee3cfa36627989c49d11475163aa201d2cd4c5394144a6bb500bbaf02b", + "1d59401b8ac438855d545a699991142685077a409de2418c7ccfe01a4771b3870e76287a" + "9654c209b58a12b0f51e8dc568e33140a6b630324f7ef17caa64bf4c139", + "143af360b7971095b3b50679a13cd49217189eaee4713f4201720175216573c68f7ac6f6" + "88bfe6eb940a2d971809bf36c0a77decc553b025ed41935a3898685183b"}, + {NID_secp521r1, NID_sha256, + "8ab8176b16278db54f84328ae0b75ef8f0cd18afdf40c04ad0927ed0f6d9e47470396c8e" + "87cde7a9be2ffbfe6c9658c88b7de4d582111119c433b2e4a504493f0a1166e3a3ea0d7b" + "93358f4a297d63f65a5e752f94e2ee7f49ebcc742fa3eb03a617d00c574245b77a200338" + "54d82964b2949e2247637239ab00baf4d170d97c", + "1e8c05996b85e6f3f875712a09c1b40672b5e7a78d5852de01585c5fb990bf3812c32455" + "34a714389ae9014d677a449efd658254e610da8e6cad33414b9d33e0d7a", + "04007d042ca19408524e68b981f1419351e3b84736c77fe58fee7d11317df2e850d960c7" + "dd10d10ba714c8a609d163502b79d682e8bbecd4f52591d2748533e45a867a0197ac6416" + "111ccf987d290459ebc8ad9ec56e49059c992155539a36a626631f4a2d89164b985154f2" + "dddc0281ee5b5178271f3a76a0914c3fcd1f97be8e8376efb3", + "0dc8daaacddb8fd2ff5c34a5ce183a42261ad3c64dbfc095e58924364dc47ea1c05e2599" + "aae917c2c95f47d6bb37da008af9f55730ddbe4d8ded24f9e8daa46db6a", + "09dd1f2a716843eedec7a6645ac834d4336e7b18e35701f06cae9d6b290d41491424735f" + "3b57e829ad5de055eaeef1778f051c1ee152bf2131a081e53df2a567a8a", + "02148e8428d70a72bc9fa986c38c2c97deda0420f222f9dc99d32c0acba699dc7ba0a2b7" + "9ce5999ff61bd0b233c744a893bc105bca5c235423e531612da65d72e62"}, + {NID_secp521r1, NID_sha256, + "c4bc2cec829036469e55acdd277745034e4e3cc4fcd2f50ec8bd89055c19795a1e051ccf" + "9aa178e12f9beab6a016a7257e391faa536eaa5c969396d4e1ade36795a82ebc709d9422" + "de8497e5b68e7292538d4ccdc6dd66d27a3ece6a2844962b77db073df9489c9710585ba0" + "3d53fa430dbc6626dc03b61d53fc180b9af5dea6", + "0b65bf33b2f27d52cbfabcadce741e691bf4762089afd37964de1a0deda98331bf8c7402" + "0a14b52d44d26e2f6fa7bcddbe83be7db17a0c8a1b376469cf92c6da27c", + "04010038bb9a7aea626de68c14c64243150e72c69e2f8a1ab922bfbdaa6f33d24fb4542c" + "0324357b0dd640bbcd07632ecd253f64ca2bfbfbf3de9b24fffd0568ab82da00faf867d9" + "5308cc36d6f46844a0f535dc70f9768eed011a2464d2f308fa1d8e72c3616aec7e705169" + "08183ffce7fdd36984a15f73efaa3858c2edf16a784d40e6c2", + "14aeb96c57d99677a1f5e4588064215e7e9af4027bfb8f31ff6126dbf341b8e6f719465e" + "4273e91ba32670feca802549808322b7ee108bb20653cf20f93284d365f", + "075ead62edf7d86c5d1bc2443d1aeb5dc034fd999e6ea012cef7499d9d050cd97d262095" + "884e9fc89a42e15bd3dee80fe3c1ba10f4caabc4aabb86347023028b663", + "129a992a6ff66d41948d11fa680f732b1a74315b804c982805190ed9d2fae223f2b14998" + "0b9241998cdea0c5672595a8a49d5186a0ef7a46c0a376f925bdda81726"}, + {NID_secp521r1, NID_sha256, + "1c1b641d0511a0625a4b33e7639d7a057e27f3a7f818e67f593286c8a4c827bb1f3e4f39" + "9027e57f18a45403a310c785b50e5a03517c72b45ef8c242a57b162debf2e80c1cf6c7b9" + "0237aede5f4ab1fcaf8187be3beb524c223cc0ceff24429eb181a5eea364a748c7132148" + "80d976c2cd497fd65ab3854ad0d6c2c1913d3a06", + "02c4e660609e99becd61c14d043e8b419a663010cc1d8f9469897d7d0a4f076a619a7214" + "a2a9d07957b028f7d8539ba7430d0b9a7de08beeeae8452d7bb0eac669d", + "0400fb3868238ca840dbb36ecc6cf04f5f773ea0ab8e8b0fdcf779dc4039a8d7146a4175" + "04e953c0cb5e7f4e599cc2c168deda8b7f16084b5582f89f2ece4cae5167f701f90b5c15" + "eeda48e747cf3ee8183166a49dbfac6161cbd09d29d40a6854f4c495e88a435892a920cd" + "aad20d41985890b648badd4f0a858ffcbd9afdfc23134ede18", + "1f875bbf882cd6dd034a87916c7b3ba54b41b2ea2ce84ebaf4e393fcf7291fee09dec2b5" + "bb8b6490997c9e62f077c34f0947fe14cec99b906dd6bf0b5d301e75ca1", + "07aa70425697736b298233249f5d0cf25c99e640c9ff88035ef1804820e1bfe7d043755f" + "02d7a079494f7fa6dc26740c4e6b7b430c63f29c67bbd3a5c88d2f0e8d1", + "0e0d42e4ff11cf5be37a9fda348514d5097a662f214687cbfb28ff42d635b13029871ca4" + "f464bb1fbce02d5da4d5fb61b2a071844259fc863d136197bec3a61e7c7"}, + {NID_secp521r1, NID_sha256, + "adb5f069b2b501a3ebb83d4f1808eb07710ac4a7b12532996855a20bcc54b2f76812915f" + "632163c3654ff13d187d007152617cf859200194b59c5e81fc6cc9eb1ceb75d654050f26" + "0caa79c265254089270ccd02607fdcf3246119738c496dc3a4bd5d3be15789fc3d29a08d" + "6d921febe2f40aef286d5d4330b07198c7f4588e", + "17c3522007a90357ff0bda7d3a36e66df88ca9721fb80e8f63f50255d47ee819068d018f" + "14c6dd7c6ad176f69a4500e6f63caf5cf780531004f85009c69b9c1230c", + "04013a4bea0eed80c66ea973a9d3d4a90b6abbb5dee57d8affaf93390a8783a20982eba6" + "44d2e2809f66530adeeee7f9a1da7515447e9ba118999f76f170c375f621f7012f9dfaee" + "40a75d8442b39b37a5c19ea124b464236e9b9a31bae6780cfd50f7ea4a700154b5ea0fee" + "b64e9b35a1b0e33e46900cca1f34d13bb17e5017769841af27", + "18388a49caeda35859ef02702c1fd45ff26991998bd9d5e189c12c36cdae3f642ddd4a79" + "561bd1d3e1cd9359de8f5c9e1604a312d207a27b08a6033f2741794ced5", + "15c6264795837dfea19f91876455f564f073c5c84a3c9d76e67872ae0447ba0d4850d872" + "1302b25bec7ebfedd2721de140b2f3dead547042b24b0876117e7093cc1", + "060eb74236c189a28ed20bd0822eb22d75f7d97c9043a3c8e3f6d4c90bc8ca02ac4d37c1" + "171c799a1c7dfd2fcbf83406b5e48c051e0fbf0fd937bfe6c3db4e18154"}, + {NID_secp521r1, NID_sha256, + "f253484d121d1ce8a88def6a3e9e78c47f4025ead6f73285bf90647102645b0c32d4d867" + "42a50b8b7a42d5f6156a6faf588212b7dc72c3ffd13973bdba732b554d8bffc57d04f816" + "7aef21ee941ee6ffb6cce0f49445bd707da8deb35dca650aaf761c3aa66a5ebccddd15ae" + "e21293f63061a7f4bfc3787c2cd62c806a1a9985", + "0c4dad55871d3bd65b016d143ddd7a195cc868b3048c8bbcb1435622036bdb5e0dec7178" + "ca0138c610238e0365968f6ddd191bbfacc91948088044d9966f652ff25", + "040014858a3b9bd426b678fdcf93fc53d17e7a9e8fe022442aaaba65399d12fd3a6a3819" + "58fb0f07ac6088f4e490506ec0f1ab4d0dbd461126f7eb46ff69cfa8bd88af018c18ce29" + "ecc6d79d26a2de0cd31c4b32e84b5e90f6ba748f86c5afbd89618aceb9079460cbd1a826" + "1ed5476973e61bf1d17ea78b022387443800c9247d21dde550", + "05577108f4187a173e5c29e927a8fc8f5ffd37e184254a6e381ff1018955aec91a35f300" + "85e8cee6a7555c10f9efdce26d62f2b4b52dfdbaeafc3a30983e2d50d5b", + "0344375ae7c804cbe32ced7a20976efae5d9c19eb88b6e24514d1d0cfb728b0f4601098b" + "18b2e98f42b5222dd5237d4d87767007bf5acb185c5526d72047e2cb1a1", + "02de4cfa908c73c1102d6fb7062baf54a056a9517701e036c9c51e09899d60051612d593" + "48945f845dffebec5aa395b2fac7229929033615788777306ccad96d0a3"}, + {NID_secp521r1, NID_sha256, + "33bab1c369c495db1610965bc0b0546a216e8dd00cd0e602a605d40bc8812bbf1ffa6714" + "3f896c436b8f7cf0bed308054f1e1ff77f4d0a13c1e831efbd0e2fcfb3eadab9f755f070" + "ba9aeaceb0a5110f2f8b0c1f7b1aa96a7f2d038a1b72e26400819b1f73d925ea4e34d6ac" + "af59d0a461a34ce5d65c9c937a80e844e323a16d", + "03d4749fadcc2008f098de70545a669133c548ce0e32eec1276ff531bcff535331445557" + "28ad8906d17f091cc0514571691107350b6561858e90dbe19633aaf31bf", + "04010fe5986b65f6e65d13c88c4d2aed781a91026904f82129d46779bdadaf6b733c845a" + "934e941ab4a285efdea9c96ecc9dc784d87e4d937b42c337b3a9cb111a96000077853768" + "a2a4d6f596f57414e57ec60b76d3cd5ece8351cd1f335ebcb8801a3d91fb82c65caaeb5c" + "31eea9918367bb5906863ff3ccaf7a6cee415e0d75c15ac2e0", + "1fbb4de337b09e935a6dc6215ffcfcb85d236cc490585e73251a8b8bac37cfa36c5d1df5" + "f4536d33659be1e7a442529a783452f7efda74a4f661b6a127f9248aaf7", + "09d8f10eeff6178594c89d6e8184f9502117384813243ddf9ccf3c8eac5dc6502c472dfc" + "1487a5caffc569f7dedd14a8ebcb310e9bacdb79fb6655aba026cdf87f2", + "0f74236c7915d638708d17c9f10e39dda358faf9bbb821d8dcda0d151aac143bfb165ad0" + "a23a65cd3de532e32cad928728f5ae1c16f58fc16577f3ca8e36f9e708b"}, + {NID_secp521r1, NID_sha256, + "08c8b7faaac8e1154042d162dca1df0f66e0001b3c5ecf49b6a4334ce4e8a754a1a8e4da" + "f8ec09cf1e521c96547aed5172ef852e82c03cddd851a9f992183ac5199594f288dbcc53" + "a9bb6128561ff3236a7b4b0dce8eaf7d45e64e782955ee1b690ce6a73ece47dc4409b690" + "de6b7928cbe60c42fc6a5ddf1d729faf1cc3885e", + "096a77b591bba65023ba92f8a51029725b555caf6eff129879d28f6400e760439d6e69ce" + "662f6f1aecf3869f7b6057b530a3c6ff8ed9e86d5944f583ee0b3fbb570", + "0400fdf6aed933dba73913142ef8bdcd4b760db8500831cd11d7707ab852a6372c05d112" + "a1e7fbc7b514c42142c7370d9f4129493cd75cc6f2daf83747078f15229db600ef91dffb" + "3c43080a59534b95ca585ee87f6145f6a0199b2b82c89f456d8bd8e6ac71c78039c08177" + "184484eb2ebd372f189db3a58fab961a75a18afec1ee32764a", + "13aa7b0471317a2a139c2f90df1c40d75e5a8a830fbaf87030fffdb2ef6f2c93d1310c9e" + "d7fe9d7bcd4fe46537ff2495bc9c4f0aaff11461f5e4bebbfbce9a8740a", + "1c7a21800962c91d4651553633b18612d931bb88bff8b743ed595b4e869437e50f8e84fb" + "f334c99061db123a1c40b73b07e203790561a37df65a660355ba2017d78", + "1301e1782559a38f1ca0eebe9bed0f5c7c33103d506a24f8a688f500ee1fe37f97b66853" + "19279e82e6fe43cfd823ccbc123309974cffa76c4f8d41ec02a3cbc45f1"}, + {NID_secp521r1, NID_sha256, + "ba74eed74282811631bd2069e862381e4e2a1e4e9a357b1c159a9ce69786f864b60fe90e" + "eb32d8b72b099986fc594965a33285f7185b415df58fead7b8b50fc60d073680881d7435" + "609ad1d22fd21e789b6730e232b0d2e888889fb82d6ad0337ab909308676164d4f47df44" + "b21190eca8ba0f94995e60ad9bb02938461eee61", + "015152382bfd4f7932a8668026e705e9e73daa8bade21e80ea62cf91bd2448ebc4487b50" + "8ca2bdaaf072e3706ba87252d64761c6885a65dcafa64c5573c224ae9e6", + "04000b8c7c0186a77dc6e9addd2018188a6a40c3e2ba396f30bbd9293dba2841d57d6086" + "6b37f587432719b544d8bf7eb06d90a8c0dc9c93b0c53d53b2f667077228ca01dd2e5c73" + "ab908ae34f701689f1cd3cf5186d3a2bc941e208bf3ef970e5e429ee9b154d73286b2e5d" + "a423e75b7c7b78c7bdf915da92279db43265a0cdefca51f86a", + "0d03506999f5cc9ec3304072984a20a9c64a22ad9b418495ca904f4bbddc96e76d34672c" + "b52763339d3f3bc5b1701c00a675b972797e3a086314da1a8d338436566", + "085406c0ff5ec91f598bb579ad8714ad718c3e133d5dcc2e67c5d2339c146b69919cac07" + "f3bc2bda218f4c7c8be04855e2ca6fff7fbdc4fc0fda87c8c3081cad4f5", + "1b45f2066e583636215ae135afc202b8bf3f301eccff2e1c0198b9aeddf695fa8179488e" + "7b622fc307f601e2f6551815117cc836bb09ef888f8e64a45d9c84ad30c"}, + {NID_secp521r1, NID_sha256, + "dc71f171a28bdc30968c39f08f999b88dc04c550e261ecf1124d67f05edeae7e87fe9b81" + "35a96fe2bc3996a4f47213d9d191184a76bd6310e1ee5cb67ea7fc3ef6f641a0ba165198" + "040fa668192b75a4754fc02c224bd4a74aade5a8c814adf151c2bfeda65165a04ef359e3" + "9847c84e312afb66d4cd1db50d41ef3fe5f31296", + "1750ff0ca0c166560b2034bc5760fe0b3915340bc43216e9de0c1d4a76550e8b2036e8b8" + "74230f8d29354aed43e183610f24fd4abd4b0be2f111dae942bd7a121f7", + "0401b4b8947192a7c0166c0e0b2791e217370836283e805f3ee11cfb78445aba3c5bc39f" + "e594e01916617ad59e7c8e740d8f2d07d88905d3f33bd5e51aafd4943c5dc601175d1172" + "32836c28e717ce2a55e59f4ec550effde30d18e3d99e42c6aa2283c7b3e7f2f6ff1fca60" + "5dde78c3a5bffa689347b4c93f51ba59a1787bb7d5e43861dc", + "023645023d6bdf20652cdce1185c4ef225c66d54f18632d99ccf743bf554d04c214c88ce" + "52a4f71ec75c899ad1b3c07c34112ca20b55c217ff1d72c9528e2774ce8", + "1e933f68ce0f8403cb16822b8e0564b1d39a35f27b53e4ae0bcdff3e051759464afbc349" + "98ba7c8a7ee34ef6c1aaa722cffe48356fd0b738058358d4c768b3186c1", + "0a67368a305508ce6d25d29c84f552a4a513998990fef4936244f891a2909c30d5fdc9e8" + "a267ecbf3c597138f4a08f7e92bee57d5420eadd700fee864bf78b2614b"}, + {NID_secp521r1, NID_sha256, + "b895788d7828aaeace4f6b61a072ffa344d8ea324962ba6dab5efda93f65bf64a0f2ac6d" + "5721d03ee70e2aef21cdba69fd29040199160e3a293b772ffb961ed694a8dc82800dab79" + "367a4809a864e4aff6bc837aaa868e952b771b76591c0bb82249034e3208e593d85973d3" + "fea753a95b16e221b2561644535c0131fe834ae7", + "023048bc16e00e58c4a4c7cc62ee80ea57f745bda35715510ed0fc29f62359ff60b0cf85" + "b673383b87a6e1a792d93ab8549281515850fa24d6a2d93a20a2fff3d6e", + "0400ba3dc98326a15999351a2ec6c59e221d7d9e7ee7152a6f71686c9797f3f330d31501" + "23620d547813ba9d7cc6c6d35cc9a087d07dff780e4821e74ad05f3762efd6018b051af9" + "824b5f614d23ecadd591e38edbfe910ad6cbebc3e8a6bec11ea90691c17deb3bc5f34a4a" + "3acd90b7b10f521f6ee7b3cfbfdc03b72d5a8783a4a77c3e4c", + "06099d2667f06c58798757632d07d8b3efbe9c1323efb0c244be6b12b3b163ba1b7cf524" + "6c98dcc0771665a66696d687af5f28ed664fd87d5093df6427523d4db84", + "10dc80ea853064a2ba5a781f108aca3785c5ec0aa45aa05ba31d4de671170797589e863d" + "54a3a986aadf6f670277f50355713dfb27d4ec7e348f787910b3cd668cd", + "018572bfad4f62e3694d1f2e6ffd432faed2e2b9d7e3611a07138212f1e79e6c394839f7" + "cfae96bc368422630016fb9346681eadc5f9699e7331c3b5fde6d65e4c6"}, + {NID_secp521r1, NID_sha256, + "2c5bd848c476e34b427cfe5676692e588e1957957db7b5704492bd02104a38216535607f" + "5d092dc40020130c04a3aaf0f1c52409834926d69a05d3f3188187a71d402a10ba34eac8" + "629b4c6359b1095f30f710219298bf06b9f19bfc299981d7e251ca232a0a85338a7e0246" + "4731d1b25d4a1f68baf97064516590644820c998", + "02b8b866ce4503bb40ffc2c3c990465c72473f901d6ebe6a119ca49fcec8221b3b4fa7ec" + "4e8e9a10dbd90c739065ad6a3a0dd98d1d6f6dcb0720f25a99357a40938", + "0401b8c7a169d5455f16bfe5df1ba5d6ec9c76e4bad9968d4f5f96be5878a7b6f71d74bf" + "ac0076dd278bc4630629f3294646f17d6b6c712b0087e2c4d576039cfdc8b9018faffd54" + "22dfd1b61432fa77b9a288b2b7d546656c0dcca3032179e6f45ee3cf61d6a447fc51731c" + "b54457343a41569fcf78cef42895f4da5efcb14ea1fc065f8d", + "0ac89e813f94042292aa1e77c73773c85cf881a9343b3f50711f13fa17b50f4e5cb04ac5" + "f6fc3106a6ef4c9732016c4e08e301eefac19199459129a41a7589e0628", + "05bc7a253a028ee8b7253979b8d689d41d8df6fae7736341f22e28b6faf0cbbdebbd2ef4" + "d73e56d2021af2c646dc15539a7c1e1c4dc9c7674808bd7968d8a66f947", + "0fd71575837a43a4cf1c47d0485cfd503c2cf36ebcea0fdef946ad29acb7fb2e7c6daf6b" + "4eb741eb211081aed6207d02569f1518988f275ad94c7fd4735cb18a92e"}, + {NID_secp521r1, NID_sha256, + "65a0b97048067a0c9040acbb5d7f6e2e6ac462e1e0064a8ce5b5bbf8e57059e25a3ef8c8" + "0fc9037ae08f63e63f5bdb9378c322ad9b2daf839fad7a75b1027abb6f70f110247da7e9" + "71c7c52914e5a4f7761854432fa16b2a521e7bcaee2c735a87cad20c535bf6d04a87340c" + "229bf9af8647eedca9e2dc0b5aa90f7fea3cdc0a", + "0a43b32ad7327ec92c0a67279f417c8ada6f40d6282fe79d6dc23b8702147a31162e6462" + "91e8df460d39d7cdbdd7b2e7c6c89509b7ed3071b68d4a518ba48e63662", + "040172fb25a3e22c2a88975d7a814f3e02d5bb74cfb0aaa082c5af580019b429fddd8c7f" + "9e09b6938f62e8c31019b25571aaceef3c0d479079db9a9b533ee8e1670abd00ff551622" + "3b6cc7c711705f15b91db559014e96d3839249c5c849f2aced228a8998177a1e91177abb" + "b24b57a8ea84d944e0c95da860ae0925f1b40c0e1b7c9e0a46", + "0383eda042e06c0297fbd279a2ad40559c5c12ad458f73458eebcc92b308d3c4fcec20a5" + "b59f698e16fa6ea02dba8661b6955f67c052f67b0a56460869f24cfdf7d", + "1b9c35356b9d068f33aa22a61370dae44a6cb030497a34fb52af23c6b684677370268f06" + "bb4433be6795a71de570088aec17ce0c9933d2f76c7edce7f406f62fedd", + "06f07ea453cfa20ad604ba855332f62834657b0b795684d50c1562a675456e37f4dae45f" + "0df47d8e27e47bc9ce9c9cbba1554c5b94b0b17401b73c8d0c0902c6cc4"}, + {NID_secp521r1, NID_sha256, + "d6e366a87808eea5d39fe77cac4b8c754e865a796062e2ec89f72165cd41fe04c4814806" + "8c570e0d29afe9011e7e7a2461f4d9897d8c1fa14b4ff88cab40059d17ab724f4039244e" + "97fcecb07f9ffeec2fb9d6b1896700fe374104a8c44af01a10e93b268d25367bf2bef488" + "b8abcc1ef0e14c3e6e1621b2d58753f21e28b86f", + "03c08fdccb089faee91dac3f56f556654a153cebb32f238488d925afd4c7027707118a37" + "2f2a2db132516e12ec25f1664953f123ac2ac8f12e0dcbbb61ff40fb721", + "040193301fc0791996ca29e2350723bd9aa0991ddbb4a78348ee72bdcd9ed63ce110ba34" + "96f2ce0331b5c00d4d674c1b70114e17ce44a73c3e16bab14ed1ee924202e400aea9b288" + "cfb2933ec0a40efa8e2108774e09b3863b3193d0dac6cc16ccaa5bd5f9ce133aec5cd3b6" + "2cbaeec04703e4b61b19572705db38cfaa1907c3d7c785b0cd", + "0d0e90d5ee7b5036655ad5c8f6a112c4b21c9449ca91c5c78421e364a2160bbac4428303" + "657bc11ea69f59fb0fe85a41b8f155a362343094456fd2a39f2a79e4804", + "1a8c23a2965d365a4c2ffd0802ae8b3a69c6b84a1ba77fd8a5f2f61e8ec3a1dcb336f136" + "e2a997252eaa94caf9b5ad6c9ecff5bf33abf547ca84985bb89908a11d7", + "1cc42a2dd97aa42b9df5ea430e0d4cb13106dd6da6e8c9315c96ed7b052db365bbde6960" + "c9a965954a4398c18ea7db9593bbfc3c3b6b3466ff806fccac3de6424ab"}, + {NID_secp521r1, NID_sha256, + "f99e1d272d0f5fb9c4f986e873d070ec638422bc04b47c715595e2cf1a701cdf88bc6c4b" + "20085b357bad12ccba67cac8a5ca07f31ba432f9154ff1fadefd487a83a9c37e49fb70a2" + "f170e58889cab0552e0a3806ccfa2a60d96e346851d84b7de6d1a4b8cf37567dc161a84f" + "13421e3412457d4bc27f6213453c8519a2d7daa2", + "0969b515f356f8bb605ee131e80e8831e340902f3c6257270f7dedb2ba9d876a2ae55b4a" + "17f5d9acd46c1b26366c7e4e4e90a0ee5cff69ed9b278e5b1156a435f7e", + "0400fc7ae62b05ed6c34077cbcbb869629528a1656e2e6d403884e79a21f5f612e91fc83" + "c3a8ac1478d58852f0e8ba120d5855983afd1a719949afa8a21aec407516c300aa705da6" + "459a90eaa2c057f2e6614fb72fc730d6fdebe70e968c93dbc9858534768ea2666553cd01" + "db132331441823950a17e8d2345a3cab039c22b21bfe7bd3b9", + "19029260f88e19360b70c11107a92f06faa64524cfbd9f70fecf02bd5a94f390582a7f4c" + "92c5313bb91dc881596768d86f75a0d6f452094adbe11d6643d1a0b2135", + "07f2158e9b9fa995199608263969498923cf918fdc736427c72ce27ce4a3540dce2e8e5e" + "63a8fc7ba46f7fa42480efbf79c6ed39521f6e6ec056079e453e80a89d9", + "08e349eed6f1e28b0dbf0a8aeb1d67e59a95b54a699f083db885f50d702f3c6a4069591a" + "faa5b80b3c75efb1674ebd32c7ead0040d115945f9a52ee3a51806cad45"}, + {NID_secp521r1, NID_sha256, + "91f1ca8ce6681f4e1f117b918ae787a888798a9df3afc9d0e922f51cdd6e7f7e55da996f" + "7e3615f1d41e4292479859a44fa18a5a006662610f1aaa2884f843c2e73d441753e0ead5" + "1dffc366250616c706f07128940dd6312ff3eda6f0e2b4e441b3d74c592b97d9cd910f97" + "9d7f39767b379e7f36a7519f2a4a251ef5e8aae1", + "013be0bf0cb060dbba02e90e43c6ba6022f201de35160192d33574a67f3f79df969d3ae8" + "7850071aac346b5f386fc645ed1977bea2e8446e0c5890784e369124418", + "040167d8b8308259c730931db828a5f69697ec0773a79bdedbaaf15114a4937011c5ae36" + "ab0503957373fee6b1c4650f91a3b0c92c2d604a3559dd2e856a9a84f551d9019d2c1346" + "aadaa3090b5981f5353243300a4ff0ab961c4ee530f4133fe85e6aab5bad42e747eee029" + "8c2b8051c8be7049109ad3e1b572dda1cac4a03010f99f206e", + "1a363a344996aac9a3ac040066a65856edfb36f10bb687d4821a2e0299b329c6b60e3547" + "dde03bdbd1afa98b0b75d79cf5aac0ef7a3116266cadf3dfbd46f8a4bfc", + "1ff097485faf32ce9e0c557ee064587c12c4834e7f0988cf181d07ba9ee15ae85a8208b6" + "1850080fc4bbedbd82536181d43973459f0d696ac5e6b8f2330b179d180", + "0306dc3c382af13c99d44db7a84ed813c8719c6ed3bbe751ead0d487b5a4aa018129862b" + "7d282cce0bc2059a56d7722f4b226f9deb85da12d5b40648bf6ec568128"}, + {NID_secp521r1, NID_sha384, + "dbc094402c5b559d53168c6f0c550d827499c6fb2186ae2db15b89b4e6f46220386d6f01" + "bebde91b6ceb3ec7b4696e2cbfd14894dd0b7d656d23396ce920044f9ca514bf115cf98e" + "caa55b950a9e49365c2f3a05be5020e93db92c37437513044973e792af814d0ffad2c8ec" + "c89ae4b35ccb19318f0b988a7d33ec5a4fe85dfe", + "095976d387d814e68aeb09abecdbf4228db7232cd3229569ade537f33e07ed0da0abdee8" + "4ab057c9a00049f45250e2719d1ecaccf91c0e6fcdd4016b75bdd98a950", + "04013b4ab7bc1ddf7fd74ca6f75ac560c94169f435361e74eba1f8e759ac70ab3af138d8" + "807aca3d8e73b5c2eb787f6dcca2718122bd94f08943a686b115d869d3f40600f293c1d6" + "27b44e7954d0546270665888144a94d437679d074787959d0d944d8223b9d4b5d068b4fb" + "bd1176a004b476810475cd2a200b83eccd226d08b444a71e71", + "0a8d90686bd1104627836afe698effe22c51aa3b651737a940f2b0f9cd72c594575e550a" + "db142e467a3f631f4429514df8296d8f5144df86faa9e3a8f13939ad5b3", + "02128f77df66d16a604ffcd1a515e039d49bf6b91a215b814b2a1c88d32039521fbd142f" + "717817b838450229025670d99c1fd5ab18bd965f093cae7accff0675aae", + "008dc65a243700a84619dce14e44ea8557e36631db1a55de15865497dbfd66e76a7471f7" + "8e510c04e613ced332aa563432a1017da8b81c146059ccc7930153103a6"}, + {NID_secp521r1, NID_sha384, + "114187efd1f6d6c46473fed0c1922987c79be2144439c6f61183caf2045bfb419f8cddc8" + "2267d14540624975f27232117729ccfeacccc7ecd5b71473c69d128152931865a60e6a10" + "4b67afe5ed443bdbcdc45372f1a85012bbc4614d4c0c534aacd9ab78664dda9b1f1e2558" + "78e8ac59e23c56a686f567e4b15c66f0e7c0931e", + "04ceb9896da32f2df630580de979515d698fbf1dd96bea889b98fc0efd0751ed35e6bcf7" + "5bc5d99172b0960ffd3d8b683fbffd4174b379fbdecd7b138bb9025574b", + "0400e7a3d30d5bd443549d50e9b297aaa87bc80b5c9e94169602d9d43d6d0c490c0bed8c" + "c2170288b106bdbf4c9f1ce53fd699af0b4c64b494b08520e57dc01ab9a8b001d81056d3" + "7aec8a75d588f6d05977416e6f24ad0117a7f4450036d695612e7bc2771caed80e580314" + "eebc88c8fc51c453f066e752481f212b57165d67f8a44f375a", + "046639c5a3ec15afae5e4a7a418ac760846512d880c359bc2c751b199ce43b10887e861b" + "14127809754dbea47f6cc0140d2817e3f5b9a80ce01abd81f81b748433a", + "0f913de91e19bd8f943d542ae357bacc942a0967abc9be6c06239a379db8cc733fa50013" + "e0b0f088bce9d630262feaa33b30d84f91bcf5ce9976e4e740fcb112f84", + "08a73a5c9c24235e0d9cecaac653f68ce5a6fb186ce67fa058d6ddbbd4d0a8c4d194e571" + "148e8ad6c8882b4e33d2f60fb23dd7d07a1ae60864e8277918f592b3dc6"}, + {NID_secp521r1, NID_sha384, + "6744b69fc2420fe00f2352399bd58719e4ecdd6d602e2c80f194d607e58b27a0854745bf" + "d6d504de2eb30b04cee0f44af710dd77e2f816ac3ac5692fad2d1d417893bb0edba2707a" + "4c146a486f8728ca696d35cc52e9c7187c82d4bdb92eb954794e5ad15133f6bfea1f025d" + "a32ada710a3014cf11095b3ff69a94d087f17753", + "00a8db566bd771a9689ea5188c63d586b9c8b576dbe74c06d618576f61365e90b843d003" + "47fdd084fec4ba229fe671ccdd5d9a3afee821a84af9560cd455ed72e8f", + "04004f5b790cbe2984b71d41af5efed6c6893d15e13f31816d55a9c2926a104eee66f1ad" + "a83115d1388551218773b8b9d1138e3e3f027bb4392c90c14fd232580b4a1100660eb160" + "e9bfc8c5619e70e948e238c6fd37739bc1bb657b8e8436e63628f91992be7e63d9a73596" + "23a1340642777b22026feb51116a6c50c54c3589b9bd39b6cb", + "1e7b5e53571a24bd102dd7ad44a4b8d8a4e60e5957bc3c4e5d3c73109f55233f072e572c" + "7892f425ba5e64d3cb7966096bb34a47e26cd5b3e3b44108b310d9f681b", + "1a88bcd7e2bdff6e497d943dde432fb3f855a7177c466319cb53b701230c299db0302762" + "69685857d1e3f28110e690f2f529c8d18115eb381f313bc891d92ad278e", + "146f1984ea879274dfd5e86ad92e564a4de081523ddbb1c397b8f9595911ef2e6501bc08" + "1584d5340f7aa47e1af036234ac6f27a5ac31f78dd3b0ff1a62693c630d"}, + {NID_secp521r1, NID_sha384, + "16001f4dcf9e76aa134b12b867f252735144e523e40fba9b4811b07448a24ef4ccf3e81f" + "e9d7f8097ae1d216a51b6eefc83880885e5b14a5eeee025c4232319c4b8bce26807d1b38" + "6ad6a964deb3bdca30ee196cfdd717facfad5c77d9b1d05fdd96875e9675e85029ecbf4f" + "94c524624746b7c42870c14a9a1454acf3354474", + "1a300b8bf028449344d0e736145d9dd7c4075a783cb749e1ec7988d60440a07021a25a3d" + "e74ea5e3d7bd4ab774d8ad6163adae31877ef0b2bd50e26e9e4be8a7b66", + "04005055b9ad726ba8a48219b0ecbfffb89f8428de895b231f676705b7de9f2022d9ff4e" + "0114ebb52dea342f9bf76b2fb060c020e29d92074ebb1fbfe5290a58c8bc1000415af7f2" + "0a6e945315adbf757316bb486c80780a0a3a15b4b9609f126d7341053a2b726ab63cb46f" + "eee527b0bf532b32b477e5671aea23d9b3c3e604b9029954b5", + "05a2e92717bb4dab3ee76724d4d9c2d58a32b873e491e36127985f0c9960c610962ca1c4" + "510dba75c98d83beebdc58b1d8678e054640951d11db1bd2d8a4ab8476b", + "104a78ce94f878822daaf00ee527fbdbf6cceb3cbb23a2caa485e4109466de8910252f92" + "379ab292cac8d1eda164f880c0067696e733fc8588a27703a3e1f5b8f1f", + "1ffe23e8ab5a31668a81161a234ea14879771fe9866f8872eb6edb672e0fe91d2bb75c97" + "67a2dfbac7c15c802211236b22ea41ecd055a0b8b311ffc4255f86d5c67"}, + {NID_secp521r1, NID_sha384, + "a9824a7b810aa16690083a00d422842971baf400c3563baa789c5653fc13416111c0236c" + "67c68e95a13cec0df50324dcc9ae780ce4232607cb57dd9b2c61b382f0fa51fd4e283e2c" + "55ffe272597651659fbd88cd03bfa9652cd54b01a7034c83a602709879e1325c77969beb" + "fd93932ce09a23eae607374602201614ff84b141", + "06a253acd79912a74270fc0703ed6507ab20a970f2bc2277f782062092cf0e60ae1ca1bb" + "44dec003169bc25ef6e7123dd04692f77b181a6d7e692e66b09d35a540c", + "0401f15c6b1df156fdd8381cd7446e039435e445f8f36f0247475058da0e371bf72753f6" + "e39f98066bc79370b038c39687ba18e16cb118fe6538b7568c5403c251f6b7012d2b4f46" + "b854eeae75f1c63f55b76bf0c604d47f870c28a50ecdeb52bba1dd9a0ff12e680804ff86" + "4111207652da7dd10b49edf66bb86be00bc06672de91982457", + "165faf3727e42fd61345cfa7b93e55fb4bf583b24bdc14ce635b6c99dbd788012f14da9a" + "210b677c44acdd851e672f1a48188d6b8946c0efeebfe8a597ba0090a2c", + "1ad9463d2759abd568626548578deefdcd8b2d050ce6d9c7ed05feca20167484b86e89bd" + "cc936fd647e0f8aedd7b6add2b8cf13ff6ff013c2b5540c6c56fda97a0c", + "1645a7d0e11015256cfb034adca198695eea6aedd44d9fbf496850ccfed950f43fffd8db" + "f41e113f2d3837d8a5dd62b2ed580112ff05800b1f73196e5576810e15b"}, + {NID_secp521r1, NID_sha384, + "90d8bbf714fd2120d2144022bf29520842d9fbd2dc8bb734b3e892ba0285c6a342d6e1e3" + "7cc11a62083566e45b039cc65506d20a7d8b51d763d25f0d9eaf3d38601af612c5798a8a" + "2c712d968592b6ed689b88bbab95259ad34da26af9dda80f2f8a02960370bdb7e7595c0a" + "4fffb465d7ad0c4665b5ec0e7d50c6a8238c7f53", + "0d5a5d3ddfd2170f9d2653b91967efc8a5157f8720d740dd974e272aab000cc1a4e6c630" + "348754ab923cafb5056fc584b3706628051c557fce67744ee58ba7a56d0", + "040128a4da5fc995678e457ceb3929adee93c280f851abe900fa21f4f809dafad4e33b38" + "1e0cd49ce8dd50e2e281cea162bfd60a1d6a1c0ee2228e6a011e171b559ab8006eb0917c" + "d72256992c49ea527f6bb0315f13d8047794a0f1da1e93737703b1c2a74a00441ef3b47b" + "6a2ff789c49ae32d91cabe7b29247aeec44f6c40a76597a2ca", + "03269983a5c2bcc98e9476f5abf82424566b1f08b17204d29e310ece88f99eb677a537f8" + "6fe2529e409cfef2c12929644100099e0de2f27c0f0ac11105a4dca935b", + "1a5257ae1e8187ba954f535b86ff9b8d6a181a3b95c250d090cb4e9c3bfbd03aa64696a7" + "6c569728ef67780d6338d70ce46da40b87a3e49bfe154b93930890dfa93", + "05b6ccdfd5c63c7db76d3a0478064a2a376e0e050cb093be795a72a549247c2e4adba918" + "3145c63d46479dbbdcf09986a6f64c09c7e16abc4853f6376c9558b014a"}, + {NID_secp521r1, NID_sha384, + "09952b1e09995e95bf0022e911c6ab1a463b0a1fdd0eec69117b34af1103c720b5760021" + "7de7cd178fef92de5391e550af72a8dcf7badf25b06dd039417f9a7d0f5be88fcd4e9655" + "931d5b605452a667c9d1bae91d3476e7d51cff4108f116a49966fb3a7cff8df1c09734ce" + "5620faf2dccb3dc5d94e7e9ac812da31f6d07a38", + "1bcedf920fa148361671b43c64e3186e1937eb1bd4b28cbd84c421472394552889bc0550" + "9aa732ef69d732b21b750523fdfd811f36467690fe94e01e64c9d5cbbe9", + "0400d33c151d202a5d4d831348e940b027ee32e4b0b9b48d823a05c67ff3bdaee0189fc6" + "680565f352c062e99968afc643208b4f9c7af185b861658a88c4ad0fcc8ba200e4441ddb" + "546468ad8ffa6074f137edfbb81e82e0e7d8f05c4c54598aa996a9cde54cb371f642bfdd" + "4ae7eca5b769696030027129a4183da93567ad142a2dff5183", + "046e619b83aac868b26d0b3cbfab55e630e0b55c461985b5d00f94ff3a5ce90ff412cebf" + "46bbd84550d2031d573ca27d924624428360708c8d8491c29eb01d30f2e", + "08427c0f0ac0263472cd423c0fb554bf3c851b9c775c566ab0f6878717bd57665830767b" + "05b7789c5c0b078195bd943dc737325552d32877ecb04a7c41bd07cd80c", + "10bb6652d6a624c40a7dd06828f15774130d02369ceb1a7d03b553e16e17b7fa5b5401f1" + "5885d5e4fc2e55c0c7a1b97871ab02f76386b93a16aa6e7eb65debac6dd"}, + {NID_secp521r1, NID_sha384, + "0bb0f80cff309c65ff7729c59c517d50fc0ed5be405ef70cb910c3f62c328c90853d4473" + "530b654dda6156e149bc2222a8a7f9be665240e2fbe9d03f78a2356af0bacd1edb84c480" + "1adc8293a8a0bd6123d1cf6ba216aca807a7eb4dca76b493eb6e3dbb69d36f0f00f85622" + "2f24d9b93ec34c3b261be2fca0451c00571928e5", + "03789e04b3a2a0254ade3380172c150d2fad033885e02ea8bea5b92db3f4adbab190ae42" + "3080a1154dfedec694c25eab46ce638be3db4e4cba67bc39f62d6e7db2d", + "0401dbc2cf19627bdccf02432b1761f296275230c150cdde823ce3141ec315d7d05e16b2" + "c29e2a67491078d5316883e933d85b4b10d4f64c477d3c4e0442dc928983a2007562e720" + "807dd118d3d8b265b3abc61a71fce43e3dce0e7b5ae18b7a4cb01ecc00d39c1f22e150a9" + "a8728997e502144f5b3f6fa9b4cb8a4136212b082ca394e3f6", + "0fbccd8d7804bdd1d1d721b5ec74d4ba37603bc306f9fce2ec241853d8e07334e6b4b12c" + "4ecca0c54bd71193dd7146507933a20737c5f3e15085830fab9b30ca57b", + "181915a3998d8fa214f9715f4ca928d09c36de168dc15c6970a8a062b5cea2dc969b2437" + "ca17b684f78a1fd583aad8e6c762c8f4ab0c91b86a497145e3ca440d307", + "15a6c18c5c77f5470b27d061eafdc26b78561941a3b2ab0f5c81d40899fc053c3d9ed12d" + "7d61e298abbae470009c7b2157731c58d7b16a66fa5abaf5e8a1b8ed394"}, + {NID_secp521r1, NID_sha384, + "7efacf213382ce30804e78b7256854d759147dba9729c51b2759465715bf2c421034c23d" + "c651c13d6cce95f71fe6a84dfbee5768163ac5789ac0474c5ddf4115684683c5f7c204b3" + "3b8bcc0c03ac58f66cef2f53b721fe2fac91ad841126101a88f512a7c2ded38549d9f050" + "d4b7961dda48a1489f026c5d111701762418cfe3", + "124700aa9186353e298edefc57bec0c7d0201cca10c1d80dd408d5d71040592b0ac59fac" + "dadfa8712445f5977ef8d4854022720c3f02d60e0732dbb2f171fcf1490", + "0400c80fc4cecae5d53348524ddba6a160b735c75b22fdb39af17e2a613d09246e3bb0fd" + "3f2978577f6db5d2118e05c7898024808f8eb8e021d7969cdcf7fc981200bb01a880c939" + "43fd446d4b3923b574d2221c1bb7b645fb5534dda60e827b497666ff586b77921f7e7f60" + "5147947194cffd2fef0678880b89cc0bc7fb74fa96d4b112d7", + "01a05238d595ded5c61d3bf6fde257dbf13095af8a5cb3a2e579e8e4c550fe31d12b71cc" + "2dbcb295e6c4fd0fb8c22d1b741c097cc59d826ced1a8771f09983143c4", + "132762bc81e9922a8d642e3a9d0218affa21fa2331cfcb9e452545c5981c64a8f7e4cc8e" + "68056023b2aa78bead59061d19c7f646c931163a91e544b106b3be8de9e", + "0c3a1b0b000c3169984132add51d611e2cb7069a262a6983d2ae72b459c36e6469509bdb" + "0f473600b8686700b08910779dee9ba83f82e755d4a4ef5f124eb09397f"}, + {NID_secp521r1, NID_sha384, + "28edff8b9d85f5f58499cc11f492abdfab25e8945975bbaeee910afa2b8fc1295ec61406" + "309ce4e09f4ab4f462959fc2a2786802466eb26d3b01be6919893ae75d0fdc2dc8a82e66" + "2550f9fce9627dd364188aaba5c6faa1b2d8a2235adfa5ad0dc140f88a2b2f103f5690e8" + "77d07fe8fd30d02d2b2729bd3d8eb5b23a21f54c", + "1f532d01af885cb4ad5c329ca5d421c5c021883bd5404c798d617679bb8b094cbb7e15c8" + "32fb436325c5302313ce5e496f9513455e7021ffad75777a19b226acfa1", + "0400c0bd76b0027b85bdd879052220da1494d503f6a4bb972105a48ae98e7dda8c2d9fd9" + "336f5646385b961ef68e8464e3a95b00f96614b1a408ceaa2c87b077b6a8fb017eb7eb5c" + "78db7819af92e8537d110d9f05a5e24f954f4dde21c224d4040f059ec99e051702f39041" + "3d2708d18f84d82998c61847475250fb844b20082cbe651a6b", + "14e66853e0f7cd3300ebcae06048532e19cbb95bee140edc1c867ce7310637651445b6df" + "eb1d99d2e32f2ffb787ebe3fe35032277f185d3dad84f95806924550abe", + "0c5b3a57161098e2e8e16e0a5ae8ecf4a14df14927eea18ed4925d11dc429dda14515932" + "3ba970174b194b9b4608a8fa2373b7a825c5e8bd80574e49698285c2c82", + "1a0c038a51796158b42eb5b0dac37aff9ab93b903a47e06ebbdd15946e4bcc9a3b3875b1" + "8cf6294c33fc6c3693cef04ed1a43d08951e664c760e2cf3fb4e47490d2"}, + {NID_secp521r1, NID_sha384, + "bae2a8897c742fd99fbf813351cd009d3f2e18d825ca22e115276484bce8f82f8c7c0c21" + "dd2af208404d8ef45bb5a6c41693912b630897d5246801bf0775aa9bbac8be98cb861d17" + "2c3563dc59e78a58ed13c66dea496471b3ad0eeae8995293e4ab97373edc1837ffc95ff1" + "cc0c1e90e64ea8680b2ca5f1e09bf86b99b343b6", + "11abf508bca68a85a54bc0659e77efad3c86112c9db04db2883e76144aa446918bb4bb07" + "84b0b6a0e9aa47399fe3de5aaecfd8894a0d130bb0c366c40d9d5050745", + "04005c0ea363a3a12633ea39d564587ebdd3a22a175ef32b9ebfc7311304b19cb3a62b5a" + "dc36f6afb6a6f7fabbf810ee89fdb72854fefd613e7798e9b9ff5938ea54c600bd06a85e" + "47b885c08124b55a3fcc07ca61647cda6efbfdbd21b24d1ea7a4c7300d46cd798e76063a" + "a979adef6f0698b15e5b7ae8a2ab39ab4f50b2d20614db6317", + "19cadb8c7eb10565aa4567e0709873918720f0e4b42b4817afb0b0547c70cd1100229dea" + "e97a276b9c98ea58b01d4839fee86336d749d123b03e8b1a31166acc110", + "0667448a8bbef1c810d40646977dc22f3dfb52a4d80928ded5e976e199cbed02fbd5a085" + "46756ece14548d721a6eb380d0e1a71ad0660dbcac6163c776eedd3e249", + "0ae7f0a238daaddb7fb4a1707fe5132daf653f8e19f732347134c96f1dd798f867c479a4" + "a4609a568a15b61afed70790adbde13ac5f68c468d0230852c1a2c22581"}, + {NID_secp521r1, NID_sha384, + "d57a26a9593e72bfc87322524639bcaae5f2252d18b99cdaa03b14445b0b8a4dd53928f6" + "6a2e4f202fb25b19cad0eb2f1bfda2ab9b0eb668cdcd0fe72f5d9ef2e45e0218590f7ab9" + "d2c9342202610c698bc786cce108a7d4a6730a13e9ea1b470e781f1237d3f84f44abde80" + "8516975546bd89075ef9a9732bfd7ee33b6f4399", + "18dbf520d58177e4b7a0627674d220137983f486dd2fd3639f19751804e80df0655db6af" + "d829cdf75238de525e1a7a9f048049b593dd64b4b96cc013f970c05ea1f", + "04018b872690c37995be324ddb5c2bd5462841bb062f8e63da248a853de79c3d6bb9a2eb" + "1e6933afda0998ca43491cc807b08ace2d5336a43d0ab50563a2d3d98755f00002ff3122" + "1aa32aa6546f35e8fe5b9361f938362a5e89e77ae130ba8bce3729e912dfac35a2fd21ef" + "e84b45b8be2a340850e4b574e1885b35c2afbe196b57c6cf4c", + "098faeb73054639cb2e4442cd68e7b3a13f4b3f397a7b26f303afa40789f8ddd3d918f1c" + "e4f0be53c8cb69c380744e2297d7fc01e2b3daef4ce64dd3a2644234753", + "09c0e7649f814f70a8416cb78bc4601472a363fe97f5c587305778169677860dd97f87b5" + "ab07c3a953bc4615fc34634509d6a25621bdded33ed42446d059509c190", + "120b90e1cfb8a1b5e530df7b17d1128bc051ca4f1a65dd9c9d9d3c59d2f00c7c1e994c52" + "b8671d40294b4d574d2c04475d5bebeacd3a0d3870a54dc7a4805614f40"}, + {NID_secp521r1, NID_sha384, + "8fdcf5084b12cfc043dd3416b46274e021bbed95d341d3c500c102a5609d3a34de29f8fa" + "9f0adb611a1f47a97ad981f8129d718fc0d6c709eab1a3490db8d550f34eb905b9e00663" + "543afc5bc155e368e0bc919a8b8c9fa42093603537a5614927efa6be819ed42ececbf1a8" + "0a61e6e0a7f9b5bc43b9238e62d5df0571fea152", + "002764f5696aa813cd55d30948585f86288ae05aeb264ca157cd09e1d09a10515a849b07" + "91b755ccc656a34707be9e52f5762d290a7d2bcd6de52c600ff862eaf4e", + "040127279c88719dc614db387f102e55104ea1c704ac7f57f3bca936f728439b76556730" + "dd7cde2ac1ad0a4c2c2f036ab6f00cf34cb87ea36113571f300713044106d20134a0786c" + "31f5f2291b83c50fb579ae4c620b95e5a8bdc0c7e1ee6b996c89d764f1b20403e7faa203" + "f397425ada297045dd8ba0e4b155d4900da249e934faab7991", + "08bffb0778cbb06466cecc114b9e89ca243a2b2b5e2597db920bc73a8bbcbe3f57144ad3" + "3409ef7faaab430e13f4c42d304d11347360c84972ca20b1539cce3a288", + "1f8f504e64a502e51e7c129517931c3b71f0d8a63b19cfe01ff7c951c6525249608b3ef5" + "d00061d77eb6b3d69581adeaa3732c773bbb9b919c3e7c71fdc09f44d06", + "058044fc64b340604ffd02a5b2918d76fd6fb59ea895feab7aa218e6f1e8c8f226eb9ee3" + "45ef8140183a69272582005077b008006aab11597e808d7ff1e8382c924"}, + {NID_secp521r1, NID_sha384, + "00669f433934992257bed55861df679804107d7fa491672574a7624949c60049b0533383" + "c88d6896c8de860704c3e6a6aefce83efa57c4d57e9ab253da5d15e1f53ab6dce218b592" + "772ab0bc01fee8e63368e85c0639301456fe2d44cd5396a7f2b22761cd03b80eba7883ee" + "de8249a2f5db2183bf00550c5c002f45a5e4fb31", + "1b0c9acd3eeb618b4b0de4db402206f0f29adc69d7ad324b6db6601b351f723ac8fe949e" + "eacd34228649bf0126276e5aceb0137d00c30dd858aef2d6b6449de2e89", + "0401811c8884486aaa083ddee1c51cb6e861cb830bd5eaa929f72efadbbd1286566ae7e7" + "ba7fde7e02529900d35ee64591652d28798bfc1bed0d192602a9cf5a7d22e3006d7fc9dd" + "494816cfd29613d4689af67f7d0a2e6fbad5d4d6e0130189172a1ab601c5ca71deaa8bfc" + "b5a190d49da191672ff6fc048e146cb902acec5eae6d87e60a", + "1fdc4f108070af3c66c9ba7b6c1f2603a19ceb4760399df81228cfc7eafde1082b5a0716" + "a3ff82fbe84726f14dd0db3376ca184a78c3c60679bab6cd45f77f9b9ce", + "1ec310339ff056faeb341c4499c43782078b04be1725ae9a6cdcb6011c46d1a4eb3d75c3" + "58225e4ec142fd1cd344186f5eb597f7ba559ddfa954824365d5b6edaec", + "005b679a33fdb7e04834f071cd0ac514c04add9f2614ab9bbd9b407b1420fed3f3e02a10" + "8e7e279899e43dcf64ae4083c289a87cd7d2103bdc036a95d36800ac7c6"}, + {NID_secp521r1, NID_sha384, + "4be81dcfab39a64d6f00c0d7fff94dabdf3473dc49f0e12900df328d6584b854fbaebaf3" + "194c433e9e21743342e2dd056b445c8aa7d30a38504b366a8fa889dc8ecec35b31300707" + "87e7bf0f22fab5bea54a07d3a75368605397ba74dbf2923ef20c37a0d9c64caebcc93157" + "456b57b98d4becb13fecb7cc7f3740a6057af287", + "181e1037bbec7ca2f271343e5f6e9125162c8a8a46ae8baa7ca7296602ae9d56c994b3b9" + "4d359f2b3b3a01deb7a123f07d9e0c2e729d37cc5abdec0f5281931308a", + "0400cfa5a8a3f15eb8c419095673f1d0bd63b396ff9813c18dfe5aa31f40b50b82481f9e" + "d2edd47ae5ea6a48ea01f7e0ad0000edf7b66f8909ee94f141d5a07efe315c018af728f7" + "318b96d57f19c1104415c8d5989565465e429bc30cf65ced12a1c5856ac86fca02388bc1" + "51cf89959a4f048597a9e728f3034aa39259b59870946187bf", + "09078beaba465ba7a8b3624e644ac1e97c654533a58ac755e90bd606e2214f11a48cb51f" + "9007865a0f569d967ea0370801421846a89f3d09eb0a481289270919f14", + "19cf91a38cc20b9269e7467857b1fc7eabb8cea915a3135f727d471e5bfcfb66d321fabe" + "283a2cf38d4c5a6ecb6e8cbee1030474373bb87fcdfcc95cf857a8d25d0", + "1cf9acd9449c57589c950f287842f9e2487c5610955b2b5035f6aacfd2402f511998a1a9" + "42b39c307fc2bcab2c8d0dae94b5547ddccfb1012ca985b3edf42bbba8b"}, + {NID_secp521r1, NID_sha512, + "9ecd500c60e701404922e58ab20cc002651fdee7cbc9336adda33e4c1088fab1964ecb79" + "04dc6856865d6c8e15041ccf2d5ac302e99d346ff2f686531d25521678d4fd3f76bbf2c8" + "93d246cb4d7693792fe18172108146853103a51f824acc621cb7311d2463c3361ea70725" + "4f2b052bc22cb8012873dcbb95bf1a5cc53ab89f", + "0f749d32704bc533ca82cef0acf103d8f4fba67f08d2678e515ed7db886267ffaf02fab0" + "080dca2359b72f574ccc29a0f218c8655c0cccf9fee6c5e567aa14cb926", + "040061387fd6b95914e885f912edfbb5fb274655027f216c4091ca83e19336740fd81aed" + "fe047f51b42bdf68161121013e0d55b117a14e4303f926c8debb77a7fdaad100e7d0c75c" + "38626e895ca21526b9f9fdf84dcecb93f2b233390550d2b1463b7ee3f58df7346435ff04" + "34199583c97c665a97f12f706f2357da4b40288def888e59e6", + "03af5ab6caa29a6de86a5bab9aa83c3b16a17ffcd52b5c60c769be3053cdddeac60812d1" + "2fecf46cfe1f3db9ac9dcf881fcec3f0aa733d4ecbb83c7593e864c6df1", + "04de826ea704ad10bc0f7538af8a3843f284f55c8b946af9235af5af74f2b76e099e4bc7" + "2fd79d28a380f8d4b4c919ac290d248c37983ba05aea42e2dd79fdd33e8", + "087488c859a96fea266ea13bf6d114c429b163be97a57559086edb64aed4a18594b46fb9" + "efc7fd25d8b2de8f09ca0587f54bd287299f47b2ff124aac566e8ee3b43"}, + {NID_secp521r1, NID_sha512, + "b3c63e5f5a21c4bfe3dbc644354d9a949186d6a9e1dd873828782aa6a0f1df2f64114a43" + "0b1c13fe8a2e09099e1ed05ef70de698161039ded73bcb50b312673bb073f8a792ac140a" + "78a8b7f3586dffb1fc8be4f54516d57418ccc9945025ce3acf1eb84f69ceee5e9bd10c18" + "c251dbc481562cd3aae54b54ab618cb1eeda33cf", + "1a4d2623a7d59c55f408331ba8d1523b94d6bf8ac83375ceb57a2b395a5bcf977cfc1623" + "4d4a97d6f6ee25a99aa5bff15ff535891bcb7ae849a583e01ac49e0e9b6", + "04004d5c8afee038984d2ea96681ec0dccb6b52dfa4ee2e2a77a23c8cf43ef19905a34d6" + "f5d8c5cf0981ed804d89d175b17d1a63522ceb1e785c0f5a1d2f3d15e513520014368b8e" + "746807b2b68f3615cd78d761a464ddd7918fc8df51d225962fdf1e3dc243e265100ff0ec" + "133359e332e44dd49afd8e5f38fe86133573432d33c02fa0a3", + "0bc2c0f37155859303de6fa539a39714e195c37c6ea826e224c8218584ae09cd0d1cc14d" + "94d93f2d83c96e4ef68517fdb3f383da5404e5a426bfc5d424e253c181b", + "1a3c4a6386c4fb614fba2cb9e74201e1aaa0001aa931a2a939c92e04b8344535a20f53c6" + "e3c69c75c2e5d2fe3549ed27e6713cb0f4a9a94f6189eb33bff7d453fce", + "16a997f81aa0bea2e1469c8c1dab7df02a8b2086ba482c43af04f2174831f2b176165879" + "5adfbdd44190a9b06fe10e578987369f3a2eced147cff89d8c2818f7471"}, + {NID_secp521r1, NID_sha512, + "6e0f96d56505ffd2d005d5677dbf926345f0ff0a5da456bbcbcfdc2d33c8d878b0bc8511" + "401c73168d161c23a88b04d7a9629a7a6fbcff241071b0d212248fcc2c94fa5c086909ad" + "b8f4b9772b4293b4acf5215ea2fc72f8cec57b5a13792d7859b6d40348fc3ba3f5e7062a" + "19075a9edb713ddcd391aefc90f46bbd81e2557b", + "14787f95fb1057a2f3867b8407e54abb91740c097dac5024be92d5d65666bb16e4879f3d" + "3904d6eab269cf5e7b632ab3c5f342108d1d4230c30165fba3a1bf1c66f", + "0400c2d540a7557f4530de35bbd94da8a6defbff783f54a65292f8f76341c996cea38795" + "805a1b97174a9147a8644282e0d7040a6f83423ef2a0453248156393a1782e0119f746c5" + "df8cec24e4849ac1870d0d8594c799d2ceb6c3bdf891dfbd2242e7ea24d6aec316621473" + "4acc4cbf4da8f71e2429c5c187b2b3a048527c861f58a9b97f", + "186cd803e6e0c9925022e41cb68671adba3ead5548c2b1cd09348ab19612b7af3820fd14" + "da5fe1d7b550ed1a3c8d2f30592cd7745a3c09ee7b5dcfa9ed31bdd0f1f", + "10ed3ab6d07a15dc3376494501c27ce5f78c8a2b30cc809d3f9c3bf1aef437e590ef66ab" + "ae4e49065ead1af5f752ec145acfa98329f17bca9991a199579c41f9229", + "08c3457fe1f93d635bb52df9218bf3b49a7a345b8a8a988ac0a254340546752cddf02e6c" + "e47eee58ea398fdc9130e55a4c09f5ae548c715f5bcd539f07a34034d78"}, + {NID_secp521r1, NID_sha512, + "3f12ab17af3c3680aad22196337cedb0a9dba22387a7c555b46e84176a6f841800455238" + "6ada4deec59fdabb0d25e1c6668a96f100b352f8dabd24b2262bd2a3d0f825602d54150b" + "dc4bcbd5b8e0ca52bc8d2c70ff2af9b03e20730d6bd9ec1d091a3e5c877259bcff4fd2c1" + "7a12bfc4b08117ec39fe4762be128d0883a37e9d", + "15807c101099c8d1d3f24b212af2c0ce525432d7779262eed0709275de9a1d8a8eeeadf2" + "f909cf08b4720815bc1205a23ad1f825618cb78bde747acad8049ca9742", + "040160d7ea2e128ab3fabd1a3ad5455cb45e2f977c2354a1345d4ae0c7ce4e492fb9ff95" + "8eddc2aa61735e5c1971fa6c99beda0f424a20c3ce969380aaa52ef5f5daa8014e4c83f9" + "0d196945fb4fe1e41913488aa53e24c1d2142d35a1eed69fed784c0ef44d71bc21afe0a0" + "065b3b87069217a5abab4355cf8f4ceae5657cd4b9c8008f1f", + "096731f8c52e72ffcc095dd2ee4eec3da13c628f570dba169b4a7460ab471149abdede0b" + "63e4f96faf57eab809c7d2f203fd5ab406c7bd79869b7fae9c62f97c794", + "1e2bf98d1186d7bd3509f517c220de51c9200981e9b344b9fb0d36f34d969026c80311e7" + "e73bb13789a99e0d59e82ebe0e9595d9747204c5f5550c30d934aa30c05", + "12fed45cc874dc3ed3a11dd70f7d5c61451fbea497dd63e226e10364e0718d3722c27c7b" + "4e5027051d54b8f2a57fc58bc070a55b1a5877b0f388d768837ef2e9cec"}, + {NID_secp521r1, NID_sha512, + "a1eed24b3b7c33296c2491d6ee092ec6124f85cf566bb5bc35bffb5c734e34547242e575" + "93e962fb76aee9e800eed2d702cc301499060b76406b347f3d1c86456978950737703c81" + "59001e6778f69c734a56e5ce5938bd0e0de0877d55adeee48b0d8dfa4ac65fd2d3ce3e12" + "878bac5c7014f9284d161b2a3e7d5c88569a45f6", + "18692def0b516edcdd362f42669999cf27a65482f9358fcab312c6869e22ac469b82ca90" + "36fe123935b8b9ed064acb347227a6e377fb156ec833dab9f170c2ac697", + "0401ceee0be3293d8c0fc3e38a78df55e85e6b4bbce0b9995251f0ac55234140f82ae0a4" + "34b2bb41dc0aa5ecf950d4628f82c7f4f67651b804d55d844a02c1da6606f701f775eb6b" + "3c5e43fc754052d1f7fc5b99137afc15d231a0199a702fc065c917e628a54e038cbfebe0" + "5c90988b65183b368a2061e5b5c1b025bbf2b748fae00ba297", + "161cf5d37953e09e12dc0091dc35d5fb3754c5c874e474d2b4a4f1a90b870dff6d99fb15" + "6498516e25b9a6a0763170702bb8507fdba4a6131c7258f6ffc3add81fd", + "14dfa43046302b81fd9a34a454dea25ccb594ace8df4f9d98556ca5076bcd44b2a9775df" + "aca50282b2c8988868e5a31d9eb08e794016996942088d43ad3379eb9a1", + "120be63bd97691f6258b5e78817f2dd6bf5a7bf79d01b8b1c3382860c4b00f89894c72f9" + "3a69f3119cb74c90b03e9ede27bd298b357b9616a7282d176f3899aaa24"}, + {NID_secp521r1, NID_sha512, + "9aace26837695e6596007a54e4bccdd5ffb16dc6844140e2eeeb584b15acb2bbffd203c7" + "4440b6ee8db676fd200b4186a8c3e957c19e74d4d865ada83f80655323dfa3570907ed3c" + "e853b6e8cc375ed2d758a2f5ad265dd3b47650517a49b3d02df9e0c60c21576378c2b3a0" + "8481eec129b2a75608e13e6420127a3a63c8a3f1", + "0a63f9cdefbccdd0d5c9630b309027fa139c31e39ca26686d76c22d4093a2a5e5ec4e230" + "8ce43eb8e563187b5bd811cc6b626eace4063047ac0420c3fdcff5bdc04", + "04014cab9759d4487987b8a00afd16d7199585b730fb0bfe63796272dde9135e7cb9e27c" + "ec51207c876d9214214b8c76f82e7363f5086902a577e1c50b4fbf35ce996601a83f0caa" + "01ca2166e1206292342f47f358009e8b891d3cb817aec290e0cf2f47e7fc637e39dca039" + "49391839684f76b94d34e5abc7bb750cb44486cce525eb0093", + "01e51fd877dbbcd2ab138fd215d508879298d10c7fcbdcc918802407088eb6ca0f18976a" + "13f2c0a57867b0298512fc85515b209c4435e9ef30ab01ba649838bc7a0", + "11a1323f6132d85482d9b0f73be838d8f9e78647934f2570fededca7c234cc46aa1b97da" + "5ac1b27b714f7a171dc4209cbb0d90e4f793c4c192dc039c31310d6d99b", + "0386a5a0fc55d36ca7231a9537fee6b9e51c2255363d9c9e7cb7185669b302660e23133e" + "b21eb56d305d36e69a79f5b6fa25b46ec61b7f699e1e9e927fb0bceca06"}, + {NID_secp521r1, NID_sha512, + "ac2175940545d4fbab6e2e651c6830aba562e0c11c919e797c43eff9f187a68a9e5a128e" + "3e2a330b955a3f4577d3f826529ad1b03d7b60f7ad678f005053b41dc0f8d267f3685c6a" + "be1a0e9a733c44b2f3ca48b90806f935141c842e3a6c06a58f5343d75e3585971a734f4a" + "e1074ce5b54f74bd9342f4bbca738d260393f43e", + "024f7d67dfc0d43a26cc7c19cb511d30a097a1e27e5efe29e9e76e43849af170fd9ad57d" + "5b22b1c8840b59ebf562371871e12d2c1baefc1abaedc872ed5d2666ad6", + "04009da1536154b46e3169265ccba2b4da9b4b06a7462a067c6909f6c0dd8e19a7bc2ac1" + "a47763ec4be06c1bec57d28c55ee936cb19588cc1398fe4ea3bd07e6676b7f014150cdf2" + "5da0925926422e1fd4dcfcffb05bdf8682c54d67a9bd438d21de5af43a15d979b320a847" + "683b6d12ac1383a7183095e9da491c3b4a7c28874625e70f87", + "1c1308f31716d85294b3b5f1dc87d616093b7654907f55289499b419f38ceeb906d2c9fe" + "4cc3d80c5a38c53f9739311b0b198111fede72ebde3b0d2bc4c2ef090d2", + "00dbf787ce07c453c6c6a67b0bf6850c8d6ca693a3e9818d7453487844c9048a7a2e48ff" + "982b64eb9712461b26b5127c4dc57f9a6ad1e15d8cd56d4fd6da7186429", + "0c6f1c7774caf198fc189beb7e21ca92ceccc3f9875f0e2d07dc1d15bcc8f210b6dd376b" + "f65bb6a454bf563d7f563c1041d62d6078828a57538b25ba54723170665"}, + {NID_secp521r1, NID_sha512, + "6266f09710e2434cb3da3b15396556765db2ddcd221dce257eab7399c7c4901359251129" + "32716af1434053b8b9fe340563e57a0b9776f9ac92cbb5fba18b05c0a2fafbed7240b3f9" + "3cd1780c980ff5fe92610e36c0177cabe82367c84cee9020cf26c1d74ae3eb9b9b512cb8" + "b3cb3d81b17cf20dc76591b2b394ef1c62ac12ee", + "0349471460c205d836aa37dcd6c7322809e4e8ef81501e5da87284b267d843897746b330" + "16f50a7b702964910361ed51d0afd9d8559a47f0b7c25b2bc952ce8ed9e", + "04000bbd4e8a016b0c254e754f68f0f4ed081320d529ecdc7899cfb5a67dd04bc85b3aa6" + "891a3ed2c9861ae76c3847d81780c23ad84153ea2042d7fd5d517a26ff3ce400645953af" + "c3c1b3b74fdf503e7d3f982d7ee17611d60f8eb42a4bddbec2b67db1f09b54440c30b44e" + "8071d404658285cb571462001218fc8c5e5b98b9fae28272e6", + "00eb2bd8bb56b9d2e97c51247baf734cc655c39e0bfda35375f0ac2fe82fad699bf19895" + "77e24afb33c3868f91111e24fefe7dec802f3323ac013bec6c048fe5568", + "14bf63bdbc014aa352544bd1e83ede484807ed760619fa6bc38c4f8640840195e1f2f149" + "b29903ca4b6934404fb1f7de5e39b1ea04dba42819c75dbef6a93ebe269", + "05d1bcf2295240ce4415042306abd494b4bda7cf36f2ee2931518d2454faa01c606be120" + "b057062f2f3a174cb09c14f57ab6ef41cb3802140da22074d0e46f908d4"}, + {NID_secp521r1, NID_sha512, + "3de9e617a6868dca1a1432d503f923535da3f9b34426b2a4822174399c73b1c1ee673114" + "10a58c17202ac767844b2024d8aa21a205707d93865693ac25a24fc87034fa3a7a7e27c3" + "344cb03b87602c15180a5fe6a9dd90cd11af4a0f150207bf2d83f55b12c088adae99aa8c" + "fa659311b3a25beb99056643760d6a282126b9b2", + "07788d34758b20efc330c67483be3999d1d1a16fd0da81ed28895ebb35ee21093d37ea1a" + "c808946c275c44454a216195eb3eb3aea1b53a329eca4eb82dd48c784f5", + "0400157d80bd426f6c3cee903c24b73faa02e758607c3e102d6e643b7269c299684fdaba" + "1acddb83ee686a60acca53cddb2fe976149205c8b8ab6ad1458bc00993cc43016e33cbed" + "05721b284dacc8c8fbe2d118c347fc2e2670e691d5d53daf6ef2dfec464a5fbf46f8efce" + "81ac226915e11d43c11c8229fca2327815e1f8da5fe95021fc", + "0a73477264a9cc69d359464abb1ac098a18c0fb3ea35e4f2e6e1b060dab05bef1255d9f9" + "c9b9fbb89712e5afe13745ae6fd5917a9aedb0f2860d03a0d8f113ea10c", + "07e315d8d958b8ce27eaf4f3782294341d2a46fb1457a60eb9fe93a9ae86f3764716c4f5" + "f124bd6b114781ed59c3f24e18aa35c903211b2f2039d85862932987d68", + "1bcc1d211ebc120a97d465b603a1bb1e470109e0a55d2f1b5c597803931bd6d7718f010d" + "7d289b31533e9fcef3d141974e5955bc7f0ee342b9cad05e29a3dded30e"}, + {NID_secp521r1, NID_sha512, + "aa48851af7ef17abe233163b7185130f4646203c205e22bcc2a5a3697bcab998c73a9ffe" + "1d3ea0b7978ce7df937a72586eb5ca60b0d939a7d1c115c820171c89c8116b7e2c7b98cf" + "0f14e4c4df3cb2f319ad3ab0ea25ff14526ddc037469f000bf82100acd4cdf94feb4eba4" + "ea1726f0569336604a473aee67d71afebb569209", + "1f98696772221e6cccd5569ed8aed3c435ee86a04689c7a64d20c30f6fe1c59cc10c6d29" + "10261d30c3b96117a669e19cfe5b696b68feeacf61f6a3dea55e6e5837a", + "04007002872c200e16d57e8e53f7bce6e9a7832c387f6f9c29c6b75526262c57bc2b56d6" + "3e9558c5761c1d62708357f586d3aab41c6a7ca3bf6c32d9c3ca40f9a2796a01fe3e5247" + "2ef224fb38d5a0a14875b52c2f50b82b99eea98d826c77e6a9ccf798de5ffa92a0d65965" + "f740c702a3027be66b9c844f1b2e96c134eb3fdf3edddcf11c", + "1a277cf0414c6adb621d1cc0311ec908401ce040c6687ed45a0cdf2910c42c9f1954a457" + "2d8e659733d5e26cbd35e3260be40017b2f5d38ec42315f5c0b056c596d", + "0d732ba8b3e9c9e0a495249e152e5bee69d94e9ff012d001b140d4b5d082aa9df77e10b6" + "5f115a594a50114722db42fa5fbe457c5bd05e7ac7ee510aa68fe7b1e7f", + "134ac5e1ee339727df80c35ff5b2891596dd14d6cfd137bafd50ab98e2c1ab4008a0bd03" + "552618d217912a9ec502a902f2353e757c3b5776309f7f2cfebf913e9cd"}, + {NID_secp521r1, NID_sha512, + "b0d5d52259af364eb2d1a5027e5f7d0afe4b999cc5dd2268cfe76f51d2f17b541bdd7867" + "e23a1bb897705153d9432a24012108979c6a2c9e2567c9531d012f9e4be764419491a52e" + "ae2e127430b0ab58cb8e216515a821b3db206447c235bf44ee304201b483b2a88844abaa" + "18bca0147dfff7e502397dd62e15524f67eb2df2", + "13c3852a6bc8825b45fd7da1754078913d77f4e586216a6eb08b6f03adce7464f5dbc2be" + "a0eb7b12d103870ef045f53d67e3600d7eba07aac5db03f71b64db1cceb", + "0400c97a4ebcbbe701c9f7be127e87079edf479b76d3c14bfbee693e1638e5bff8d4705a" + "c0c14597529dbe13356ca85eb03a418edfe144ce6cbf3533016d4efc29dbd4011c75b7a8" + "894ef64109ac2dea972e7fd5f79b75dab1bf9441a5b8b86f1dc1324426fa6cf4e7b973b4" + "4e3d0576c52e5c9edf8ce2fc18cb3c28742d44419f044667f8", + "1e25b86db041f21c2503d547e2b1b655f0b99d5b6c0e1cf2bdbd8a8c6a053f5d79d78c55" + "b4ef75bff764a74edc920b35536e3c470b6f6b8fd53898f3bbc467539ef", + "1dce45ea592b34d016497882c48dc0c7afb1c8e0f81a051800d7ab8da9d237efd892207b" + "c9401f1d30650f66af8d5349fc5b19727756270722d5a8adb0a49b72d0a", + "0b79ffcdc33e028b1ab894cb751ec792a69e3011b201a76f3b878655bc31efd1c0bf3b98" + "aea2b14f262c19d142e008b98e890ebbf464d3b025764dd2f73c4251b1a"}, + {NID_secp521r1, NID_sha512, + "9599788344976779383a7a0812a096943a1f771ee484d586af1a06207478e4c0be9c200d" + "42460fe837e24b266c8852d80d3c53cc52ffb1913fc3261145fc6da575611efd16c02605" + "9a2e64f802517ffd1b6b34de10ad2909c65c2155e8d939b8115400c1d793d23955b15f5d" + "1c13c962ff92b4a815cee0e10f8e14e1f6e6cd38", + "1654eaa1f6eec7159ee2d36fb24d15d6d33a128f36c52e2437f7d1b5a44ea4fa965c0a26" + "d0066f92c8b82bd136491e929686c8bde61b7c704daab54ed1e1bdf6b77", + "0401f269692c47a55242bb08731ff920f4915bfcecf4d4431a8b487c90d08565272c52ca" + "90c47397f7604bc643982e34d05178e979c2cff7ea1b9eaec18d69ca7382de00750bdd86" + "6fba3e92c29599c002ac6f9e2bf39af8521b7b133f70510e9918a94d3c279edec97ab75e" + "cda95e3dd7861af84c543371c055dc74eeeff7061726818327", + "1b7519becd00d750459d63a72f13318b6ac61b8c8e7077cf9415c9b4b924f35514c9c28a" + "0fae43d06e31c670a873716156aa7bc744577d62476e038b116576a9e53", + "183bddb46c249e868ef231a1ebd85d0773bf8105a092ab7d884d677a1e9b7d6014d6358c" + "09538a99d9dca8f36f163ac1827df420c3f9360cc66900a9737a7f756f3", + "0d05ee3e64bac4e56d9d8bd511c8a43941e953cba4e5d83c0553acb87091ff54f3aad4d6" + "9d9f15e520a2551cc14f2c86bb45513fef0295e381a7635486bd3917b50"}, + {NID_secp521r1, NID_sha512, + "fdde51acfd04eb0ad892ce9d6c0f90eb91ce765cbe3ce9d3f2defe8f691324d26b968b8b" + "90e77706b068585f2a3ee7bf3e910528f7403c5af745a6f9d7ba6c53abd885c3b1be5834" + "15b128f4d3f224daf8563476bd9aa61e9c8518c144335f8f879c03696bddbe3ac37a8fbe" + "de29861611feaa87e325e2f60278b4893ed57fb0", + "1cba5d561bf18656991eba9a1dde8bde547885ea1f0abe7f2837e569ca52f53df5e64e4a" + "547c4f26458b5d9626ed6d702e5ab1dd585cf36a0c84f768fac946cfd4c", + "04012857c2244fa04db3b73db4847927db63cce2fa6cb22724466d3e20bc950a9250a15e" + "afd99f236a801e5271e8f90d9e8a97f37c12f7da65bce8a2c93bcd2552620500f394e37c" + "17d5b8e35b488fa05a607dbc74264965043a1fb60e92edc212296ae72d7d6fe2e3457e67" + "be853664e1da64f57e44bd259076b3bb2b06a2c604fea1be9d", + "0e790238796fee7b5885dc0784c7041a4cc7ca4ba757d9f7906ad1fcbab5667e3734bc23" + "09a48047442535ff89144b518f730ff55c0c67eeb4c880c2dfd2fb60d69", + "1d7ce382295a2a109064ea03f0ad8761dd60eefb9c207a20e3c5551e82ac6d2ee5922b3e" + "9655a65ba6c359dcbf8fa843fbe87239a5c3e3eaecec0407d2fcdb687c2", + "161963a6237b8955a8a756d8df5dbd303140bb90143b1da5f07b32f9cb64733dc6316080" + "924733f1e2c81ade9d0be71b5b95b55666026a035a93ab3004d0bc0b19f"}, + {NID_secp521r1, NID_sha512, + "beb34c997f905c77451ac392f7957a0ab8b23325bd5c63ca31c109ac8f655a1e3094240c" + "b8a99284f8091de2ab9a7db2504d16251980b86be89ec3a3f41162698bab51848880633e" + "0b71a38f8896335853d8e836a2454ecab2acdcc052c8f659be1d703b13ae1b090334ac50" + "ab0137ddb5e8b924c0e3d2e5789daaef2fdd4a1e", + "0972e7ff25adf8a032535e5b19463cfe306b90803bf27fabc6046ae0807d2312fbab85d1" + "da61b80b2d5d48f4e5886f27fca050b84563aee1926ae6b2564cd756d63", + "0401d7f1e9e610619daa9d2efa563610a371677fe8b58048fdc55a98a49970f6afa6649c" + "516f9c72085ca3722aa595f45f2803402b01c832d28aac63d9941f1a25dfea01571facce" + "3fcfe733a8eef4e8305dfe99103a370f82b3f8d75085414f2592ad44969a2ef8196c8b98" + "09f0eca2f7ddc71c47879e3f37a40b9fecf97992b97af29721", + "0517f6e4002479dc89e8cbb55b7c426d128776ca82cf81be8c1da9557178783f40e3d047" + "db7e77867f1af030a51de470ee3128c22e9c2d642d71e4904ab5a76edfa", + "1c3262a3a3fb74fa5124b71a6c7f7b7e6d56738eabaf7666b372b299b0c99ee8a16be3df" + "88dd955de093fc8c049f76ee83a4138cee41e5fe94755d27a52ee44032f", + "072fd88bb1684c4ca9531748dfce4c161037fcd6ae5c2803b7117fb60d3db5df7df38059" + "1aaf3073a3031306b76f062dcc547ded23f6690293c34a710e7e9a226c3"}, + {NID_secp521r1, NID_sha512, + "543c374af90c34f50ee195006d5f9d8dd986d09ad182fcbefa085567275eee1e742bfe0a" + "f3d058675adeb5b9f87f248b00a9fbd2aa779129123a5b983f2f26fc3caf2ea34277550c" + "22fe8c814c739b46972d50232993cddd63a3c99e20f5c5067d9b57e2d5db94317a5a16b5" + "c12b5c4cafbc79cbc2f9940f074bbc7d0dc71e90", + "1f0ec8da29295394f2f072672db014861be33bfd9f91349dad5566ff396bea055e53b1d6" + "1c8c4e5c9f6e129ed75a49f91cce1d5530ad4e78c2b793a63195eb9f0da", + "04009ec1a3761fe3958073b9647f34202c5e8ca2428d056facc4f3fedc7077fa87f1d1eb" + "30cc74f6e3ff3d3f82df2641cea1eb3ff1529e8a3866ae2055aacec0bf68c400bed0261b" + "91f664c3ff53e337d8321cb988c3edc03b46754680097e5a8585245d80d0b7045c75a9c5" + "be7f599d3b5eea08d828acb6294ae515a3df57a37f903ef62e", + "0ac3b6d61ebda99e23301fa198d686a13c0832af594b289c9a55669ce6d6201138476901" + "3748b68465527a597ed6858a06a99d50493562b3a7dbcee975ad34657d8", + "0cef3f4babe6f9875e5db28c27d6a197d607c3641a90f10c2cc2cb302ba658aa151dc76c" + "507488b99f4b3c8bb404fb5c852f959273f412cbdd5e713c5e3f0e67f94", + "0097ed9e005416fc944e26bcc3661a09b35c128fcccdc2742739c8a301a338dd77d9d135" + "71612a3b9524a6164b09fe73643bbc31447ee31ef44a490843e4e7db23f"} +# ifndef OPENSSL_NO_EC2M + /* binary KATs from NIST CAVP */ + , {NID_sect233k1, NID_sha224, + "f23f784fe136c9fc0d169503d361e9c6148b0f1fbdcae0a97fae1af7033ddef25cb7489c" + "9963cfcb009a8cbfe44a8510a64a073eb1deae4c324ceb9302008c92c69b2dafcc9077fd" + "3cc3c7c119edc3ced36d176ceaa55ac036bf7f07f6fa215e8bb8196e59a5e1c9af4f98b9" + "0ab4970885bd7015fa26a09e03c7cf6b4b23d929", + "04c1d414696cc3657dd9df73ace56eda2636769ce7082e064c260be45a5", + "0401f228c0a75b057eb07fe7ce8223ed4163148c1fdab61e0f787271f836a900cdfa5655" + "d96ffd5ffb6027bfaa04da7b5d8fbdbb6202c8bb79f056ce43", + "058f8511089fcd59324469f6736b92693afe26bd4719e198f1f2287dc5f", + "016bafefb4933ffd00bd1db6d6c4fac8a06375603adc0aa2a5664083ff4", + "03bcb84b8f1990cfc7b88f2b8cc817105cd8e150808e7c87b310cdc47e3"}, + {NID_sect233k1, NID_sha224, + "400bcb297552bb37f2f8135a9314a35f5126788bb6fa4dc74152731ff64c5dab4b902103" + "d85443dec20e16b1d6629930cdc2bd183d4099f0e96295a63c2fe266f5e9d050c401a868" + "1b4a438efe53cbd8f2f43e2a31e9f88926a9c82917d873f6e8cd5ff5eb8c1ca36126b0bf" + "c8c2b0e85a7c9e7a45f1875ca9c82019ebedb729", + "027cb1d84865a16992476c9e353283d5d6a40c349a8e9179d1b1f403531", + "0401191227d064176f4ab020faea61330df5eb59163ecb4ea59c23e6f1f6c8012dbfbf85" + "b3624b9f56446f840602f9b839bab1368295b3ae919cb07c07", + "01a41af270269be052a62a9879638e3432a1479b05776ce61f45c0c361b", + "041a5f1d28b70bfa2925b9428ab8bac9fa174d88ae27d754824c7d16ead", + "044d359065672b3d3dfe8389fbc6fc751ca6a46820626c466174fb9b922"}, + {NID_sect233k1, NID_sha224, + "5f74d4b35c49fa454c97c05fdb6b9f6822cf1a2295f15bd766dbcb413d77c910bd8f4147" + "e8f317fac2300fa21cb80134d1b6f8ae8e50518c1f648a28506e419f5a6e8f05abffdb3d" + "d2587606c7e9c223ecff4f46b121216730ea13202b59128a7616bb2fd23a7e4a5aa08641" + "cc07b669641313febfc88d64d99447353dae3f06", + "031b443f46c4b5224237fac1022ee1570173f664aba0c84dbaa4246bdc1", + "04005f57b0e5f2e175006f4058cbb4ca9a0cac912c551ef1b94e97498fcc5a00f3a554d0" + "77b751478f8a2b7c2a9cf15effed958e0ac1a9e3db1e023c5f", + "07ff6ef3026c5a960e632beeb7313b3bca0baec76cea1fd9b82cedc3245", + "0099741698549c32a4e86aab6194527cea703ff869849c538a938585a83", + "02ad706c6f5dcff512498d84f1877eb997dfbe9b3d13b339917632d3cb1"}, + {NID_sect233k1, NID_sha224, + "8f92096876d9f81bcd992369d42d0b5877ac969004d17c8627c58d8b8b7bbf7a37e8cb6a" + "fa962b9b043bbbaa5bef4a5ee38d8bd31cb5866b828265a2f4102a616f87009cd346fcb8" + "af5519fb577c60d8792472232f33dc615655e53d2b715b15a2697b492f108b7906e1e359" + "7c6911f8cc30c7121ae338a6b747ec368f8e4a36", + "048f6ca29f35f253a4962734357c995920967b9eeff1ba5fd2080bfede5", + "04012b7ca7c21292f8795b2fbfd63a28c5a4ec8c850d6240f973c903bc817001be9855e5" + "c5a5064c27d1862010b2fd0d7be5a0180c861a288ceac89d6d", + "07dcb9725323fd7668991ce9a907b7129d53fae9016e253c53d057d195d", + "0498c4fca6ed7c2998347b464d3e562a74b0e4f3a6c1dc453aaa61bb710", + "03a77a13f011404d5c5341dcd2ca44dc2b08f21f09f524045c281fb221e"}, + {NID_sect233k1, NID_sha224, + "3d275dbde44494c45fc15fe89e2ae32aa26426a17e923e895c7941a5582fb95df4d49873" + "ab1bde358017f336b911b886b626b744806ab8113418473c441f1964159ded1b12122d53" + "ac56573167588e4b55f36b8bca8c67823883a51fb6e7f204d1c6b07ea49b577bfab9ca6b" + "8d51f72268b022e3a4db6f9d265ee8382f9b7b66", + "019b940eabbe682f961d9f3d90432e347fef3910e641656825d775705b1", + "0401efcc9f4576047c43eab1c13e0547b1c5ec1cd2afd2345fda72b5e1b50f00c7b5968a" + "f47e58f4ec15c0cd82ccd0b9f5bfde06c7f86fe5cd0105d693", + "03f783a94d1de73e4593f5d6d02238cfa0486e3ddf2bc0b95a528038e3c", + "013c467531f3f6508534ad072edb210e4182ce5a798d8a46674e92a0b4d", + "0685982aa8e2f3e46ecc03e00e7323f3b891da437235cfe9800139ee8d7"}, + {NID_sect233k1, NID_sha224, + "d2fa68e1f7dad02916b12fa38f1849d6d409dbad0344438520b4dd9b77d62d39ac9ae3cd" + "eab03ccbcfd4de703c6e798873671731c108f322b9f2a68145e3e210c9b15b879798e5c5" + "3c5022742e9819b99edabb2f44d89ae221f7a99dc84421a6905695ff91928db608f86174" + "5f17584d56e34b75c47281435b1b0b34e490692d", + "07a884b22e29fa9fe945e9ba13c0df8d786dc87cef0f77f069e182dd56c", + "04011e831647d0ffd53d75e44abceda753ab470b3cc93b457590617d925a19003db5bd0a" + "ecd6504d904bcf9dcce131abd239aeadb9a64a9811eac823cc", + "00241b763c6245b83afe61762b161c41467ef35b7f27a9c1066f02babd3", + "0514adca3481ac5f99287e6e966a5c223296b07a9456eb582ec5568688c", + "07ff6a2f7cb1d2594a11d8d0adb6fe50b4e740f025e7b4333ee26163d92"}, + {NID_sect233k1, NID_sha224, + "3830f75cf9df4eb2998c7c1b5fe11c1476bcf849c3a8fa7d3d0b5bc2292e5d07465ab8cc" + "9381c575d909e509c5dac49c78817c04e4bef18bd51bb09aa5897f21634633a5ce6d20bb" + "4638cb6c3927351eaec7b62cf4a33956916045c392f325adafb10a88a5f86d7e41dd7790" + "8fa7284210071c22aa40ef40da6339c02da05392", + "05da61f881d5a0dc085bb93764f584352882923cd237d878220ec624c1a", + "04018d740441eff1f785a14d04da4ba69540cbb469780ffd36e1dfae4f1de2018072ab30" + "e999ae26b872ef46a9a0604296d02c08fba9477d9e03f0f75d", + "000f95c5678fd08dda790cc60bfa578118f8687228a2ef5f31e71a6884b", + "074a6599b8cab75e0cf752e3f41288fbc673d52074950edb14f76524949", + "03523804351e3224e816cd4fb7191f332585f68053ddb32a85cc0fadc03"}, + {NID_sect233k1, NID_sha224, + "65b9fe15e6c35d453caa6bad39ee78a720a04b60d8a0a0f049186d2f777e48ae2d657e17" + "4df53edb7beb9f7d8f21904ed674add0cda5b62a7308de76c324a144021e8c6d387daaba" + "4ce48bf7dfe9c8aeee2c64e434ece1fa5ddcafcf3e5d0013a1eeec1742a00d384cc2ec0d" + "7eda83bb4dccfb0e57045ebfc27a4f404d03da37", + "03fe9f04647f6d82b13ec1ae5a8c2e49bc66b05649ad778eb16149ad83a", + "040158eecc6b8918e7813ef990217c603b28ed1774c740382a8af5c9af613301bbffeccd" + "41107c7e6f83e24c822d634a7ec064fae125dc8a3ecc4fc9b3", + "07731edfb3ef523a165a1b5817ab2805a5cf88043c98ea2393898e19551", + "01fa44fa18ebafee6f419fdb9de0e8365520617558b57e9ee89f2c8fc88", + "053f1b2da4cabad04fea1111d525f341417587823fce71e5bfd2353c2f1"}, + {NID_sect233k1, NID_sha224, + "d26521fd41eb5d46ece6836e188bf9cb1b461d011c41e002a935d256654d01725378e845" + "920ec4a7fd3f379df54772493df50d312c7c6aa4e909e7b83f2442c3a5e85c37d68aa015" + "098ecfb0a5e077370f4576f4bc63bf37e1dee06d780a3b6949af5e21c2a0960fcd20821e" + "f5f17bebf5fd5b3bdda260842cbbfad45667287a", + "05ebce648ace4cd555413de6a456fc487d14bf4b0b9a72311ef480d2f26", + "040020b46ecbdc36b4dc01111932090ba185eab2cdc4fa89775f2a6177c5920104cac1c8" + "00103c79642321a216bcfae497b037b29888cf9f70c507114e", + "027733120626e564b06ba71c4946c9c8bfae43f88511ec6352d2a52f407", + "0592de5184510e6ecb7be8a011f862470b918354a1ad82458cf716137fe", + "010a9c5fb6e4b70571a35c56744b57baf0108728bea2bf639af1960d1dc"}, + {NID_sect233k1, NID_sha224, + "b778c021b1a92c41dbd09963da07018075d73e54d62df5c2b7bf8abe137151650d1c1c6a" + "bce7eebd8f32e8c3e6d1433773f257bb3ba4a4fb6a02c0db1e47d03c27d3a90898ebd192" + "7c21df24c4c5443ca5b81f8ef2cc0f5e8b3d08f472bf07085df737adaedec63d99acd77b" + "87ba98225f198b791124ac2d9b191cb9251b4b00", + "056653c2f85593f789a926ba49fa3da9d7f946d8f1020508c5a527ce813", + "04010d65f6f5415dd86a83bb10118abfc1b1670a1664eb6dae99fb68b85019012c1e673e" + "575086ec1e76b90d59c2cbd2727f726f88298552b678ba7e60", + "021e26c098c9f9da9c782857fe640ff6abb21caf20a093f2277845bd10d", + "01d67cbc8209494dca1a74cee5d9894f98f03728214f7bbdac29b0c0e78", + "02215f758fcf0d8dd603e79658a8061ab45bfe6d854e52ea7074fd5654e"}, + {NID_sect233k1, NID_sha224, + "ec14e07f615960015a489ef999e308b42a4c571473b9bd64b433dabd9a1b1ad02e33eee9" + "100064405175928a94543a80f440040afa2965b4e5f95f768e7fab6d3c0a5f5e1bf1df78" + "22f78384e80f2955ea85f044ac60537d895747979f935bb0cd3673193c4a32dd7803e48d" + "7daf70a71bc2aa97236615b6411e28fc9a652145", + "049a91d320783cc70a5952c32036cfc75d41f1aa84127db2dc759fb291c", + "040190528df8fc3ae4db6e12930f176ec9c833d1668ac5808f1046366445a401f647d55c" + "e80b18a9add47fd1a8e4aa725297d9da03246f5c1ce503dd56", + "01eb80e2596d6c01431e7a4fd9e22903ea85547a31d675ff157a789a137", + "04523776d88199ebac2f96f9faa434bd81bde770ad4458ef126fde9198a", + "054665f31f92f8897482d34fcb63141a7539577037c84496167e9d3389f"}, + {NID_sect233k1, NID_sha224, + "89c645339ad0eb850e4e2fe583cee175b35feb02ed7541d7e9aace24cdd3939584f73ad3" + "9526de6399c86b36de77a018e2c70b532bd0f032f9137d10480acc30c49f9baaa86f9df0" + "033b77e98b485bf7a69cb5c281e527d3ccd1fce2415f0dda4a268ce68a0a34b16afda54e" + "d922cd6810ac8dc766df2a3a6c5e55972e9786fc", + "016a20016602fc7088a60469843e1d29ad67e3c3cb9500b1e2a00d4050a", + "04004f157541dc3a8bc8a2ad4dfb3933039b67e331b7353a2fa9ede322f4ad01348a7b8c" + "9495bcbecd556870715faf3d543cb8f2368805473bca17b82e", + "01df1ee39217d7f0d838e8b2d30a1159d8003b06e50a00d637edf08d6d1", + "045d16826bbc425637e7a05b826bc907f7453c70141d1bbd2cda63dd490", + "01ae1703cf179dfd1d5407ba2b7324cc7cac15235ee9c3756177444e122"}, + {NID_sect233k1, NID_sha224, + "ace14c4b101d2d8453c2bc22b756af016b5de537df9c3e639d208ad04ae0bf6232dc90b9" + "0c33228dc85de956db771ffde05fb4d0b15e4f218ed2771d703ae5bf981252a5bcd60c16" + "f14483131a481cbe04dc0adb1fb8aa32cb48bb5008e8a8e5c7b7465be2fd7afbc811cf5e" + "a6293b1a464669b49f55f57b93a8707e6042fda6", + "00ba922149bada2551b7be1c3df076f3f97ce93c13c50c285fef3f42363", + "04012daff2cfab994b9d1d1ba73bd2f8e7883b2d92f760b0d16351ec125fd40115666f7c" + "65b95ec2d713c5ab1a3eeaaf0f931b1859733416c3c778aa2a", + "07fc7c9503fabba0972e0e8892ec6331e0812c6452d211c5561fde79048", + "06477ec9d8d8d45418b9efe7ae47c0863ff94c43d8f392c079b870a7cf4", + "06b5a5d020b3d980b9d7880130802435ddb4e7362e36a70d193f18a7fe6"}, + {NID_sect233k1, NID_sha224, + "cec2ba0d1772c87e87d5bbbd67220692bea4301aa1a66e8dbdd7e651d45c26dc2a0d45cf" + "c32c34d76ae3e1c61db7b0fe1863457b93937d929e6ece7462ebd16adfd708353d6f7c27" + "aafe06593c76da7149b0cc574a4290b0d8fe219f3eada7082aca38dba3f78ed0d5942d09" + "5fa5556fc8bcef331ff0a6d5d1f4e6c51d4ff5af", + "02d635e12a58cc6dea44e71e87c37f91e8d08659f0b7955d24f65ab55ba", + "0401dd33d8224ffe63a32f2de5d4fcb0e5f1fca7ca2ade5b35ffbe75cdc65800bfbe9dfe" + "13f99258c787af82631ce2133dc73207c579b29869c7463943", + "04ef333049c575d6688aa04f87a6162185e4a57bb752a7f903e3aff86ff", + "01ade04af08ea1c1877779fbf6335156b1a1437f3e449f07458d700c67e", + "010fa82467d39e5ad51cda8fcedc72ee6a78dccd0c90544814e53ba9cb4"}, + {NID_sect233k1, NID_sha224, + "ffa13cd0f51ae2643d5d4edecb493ddd653e9faddcffc370e7e958abf726a5d67a2ab36c" + "ef42ea8ebe22a6f01b9c31f6ffad01e6894487d979acb5e618f765ac0ec3550ac5dbbced" + "e8f9fdbe52fbaba5c087ff382b6d7a09b2b5084227d324d98ff98793040884799b96d2ca" + "593201f4414f18c43b51c53c5e5059e0641aca02", + "0073883e5064e06814fc4de32e15f7a6cf825d2daf6eb1df8c83e25d80a", + "04000d3c79d627ee0d2d88f2de2dd082112c20dbc5ed66089454f7b8fd9f8101a2580e77" + "9753bcb023acba1b0852492b989c767f664c7047de8e6689fb", + "020231e05166271f47a91dd883c580ee313e9a07195ae511f0ee62173ec", + "0303eb4a0df97577c4cff531b3f54aa282e76669c0c5ebf4c9779c9bb82", + "0692432a7dfde09db7743f08130b3d3327dd98cbdc323627603518f70d7"}, + {NID_sect233k1, NID_sha256, + "c73e3dbac9513d0361dabe94071faf03a11cba18c06d131a172d5f0125b01a5eeb6055bf" + "72c7106fe3f4be3bd2b1771cbe7f85366dccfbc3bac20538510c3f51179cc540ddafb2f3" + "b05a0d276899674ab1d7d8fb4f6838f04e4f9e26b8c6af31540f63f4953c85840af4c57d" + "fa78c704f637dfc8dd750fe45e2c1e149986d127", + "01532271bfae8d4dfe60f69b88d3006d58e28aacfa701861cde8d624db6", + "040041c1ca965338976b4c45c28b1cb64836b3b4d3e7ba2b1323ea26fbcca201a177d042" + "fba7903007db122eabc459e37c2c7fe82e42752b267fafe4b0", + "06a54894825644901baf2ec3681ce5aaf93a18757d93ec9cbce7ccd9d65", + "03edb77fc7686b520493604db18fc69edb4cad8195a958e27ef289c4bac", + "004337ecfac57abb9271909aa43ff4e32851df7818dcd87216d051189c0"}, + {NID_sect233k1, NID_sha256, + "d00dcd0f3212a3167403abed91c20e76f5e7a7678a4fd970f944d11e6a8cd149d0aa6fd3" + "164c5a74c0f55193a4fa3d8ba6f99cabed10544625a7bd92b3e0b46edbd4a269bbc10518" + "c5268c3910a2aea567ccd32d4c7a0cbef09ea42c20b636d1f711d220e23dacdb9d1146e0" + "494401349749e5ed88e38295232a7effbae3aed6", + "0550406c0db882c6aee6cf3b6baf377375208c3e90cc44a067cee43efcf", + "040073348eaa8f2885fca3baf31830a2b28bfe983e3046418561f62ac5d24700033de5ae" + "e6d0bd4de286f1de1e80bf72e5e17083032bd4dc24577b6d2d", + "05c0e7ad0f9bbd522c862326a5734a766423fff7efbe57c51c315fa574c", + "02103f1a0200883850b6476c7d7e7d2b3e2f60923d028ee6f8227b1ec48", + "007cbbc3c6295ceafb3d9cf8411f85a045b11ef8472c5ed45346d26192a"}, + {NID_sect233k1, NID_sha256, + "3d36221f87157ca4db84884b8666660c4e2b6af330480c516cded9f3bfe132543626a39b" + "b6aed1964eb5c33ea0b95b9841665417679fceb95d199d55accfce35dd3f2283c1a7ced5" + "7d0c4b9ebe3da6e1ff2f979b6440db27caf9f6a4bbfa47e20d29ae304f4d0551fce9cc40" + "97eb2fbedb9b24680bb17d207bdccdbe799d5b0d", + "0257dc63752920b6854d6c2d1cca68589a38418c3d036e73760a12214ab", + "04011a42e9f66ecf030d0446cfb751136347d4df0ee4e031058ebdcc04df8000fb7161fa" + "c8cc5ad7bc4477a39350e419776f76f184e28abce886ae9cc5", + "00391d36c4044896ddcd68604d5f677d1df298f46abc00eb12f1165e8a1", + "04e19bdc6755a603085b66355256bce98d5fdd49b4f06b628e3e185574a", + "07697b29ce5546de969c9c4bbb5ea65f712d6cda3410f3dbfa0cd5b1a8c"}, + {NID_sect233k1, NID_sha256, + "033d82a42d0eddf58fbe3e91ddff7190e3f9fc2b1e2eede977d2c0473b358b5fce1f981c" + "a6f88fd61ce2f79e453e3a2b77d1baab2b970ed28d5dcff58873a620e195085e61c4b848" + "0d829525a1a944e8a4b63352f0291f0311f1f98ceb262804beec1c74947618f8e3b06786" + "6255878c2502966cefcdda4f5fa2b13d92ce7840", + "029025352297a7be850f8852411c09259b83219135e0e8949c1bd5b94c1", + "040184345e37f07077cc8df5947c1b1fcd8404b3c31586d6ebd91b240cf42b019dbc9091" + "a5d282fd6e62c34676a06a425e098567b990c47e61ef14d77e", + "02b2663a449ead3f8cce2459e04cf84333376624d994fd9312401ae57f1", + "03af223fd3a6b6b240e59dca83ce2477a577494438ddee3fd09632ea67f", + "0606576d89f2094572f0bbcb58a15d9a4bf10ae3667d4e35cdd8da32102"}, + {NID_sect233k1, NID_sha256, + "671a7c81b64b2919722d7b258bdbd90165bb757b53106e0af03d0eef27452942f40cf52b" + "c95cc7f6567df2613cce795f8bcfc723b2735efc35375c001d37c58480d89343697146b5" + "24835df3dbd333f7c06c98e36d3c4592ecd1f34ab57c341bb0f4c785f5b8372775f74b4b" + "ce60763fad1788e77ea158d735a64861320b36c6", + "02dc82d0e69e498528925c0e62a13fda9af8cefd047c10c3ffc2e41da3e", + "0400e5463926235ce53a85b489c3c278320ed986003962a5fc7ad4cbab0d9f01453e6edd" + "e95670a4653186ebd8246c28a94dd84f5a669bd3293176f1f0", + "034a8dfbbdc98bb1d9b175600bffd866306dffadcc4bbb6f24e7f918da5", + "03cf1407445cf1a619a280e139242056c23c58979f0b3f0aa7e1fc074e2", + "02e55f27593f2c76fafccb71493f14daf50073b35cc85f002528cc6d691"}, + {NID_sect233k1, NID_sha256, + "0ef677f4799298f4aab73b7393598041f56e902ced1726af49657b6601a06186212e3ee8" + "cd4bd33b760dfa2ea3c38884f94358d51dd479f2ccc8b0b352fa4e44fcfdcfbb24919d04" + "e6ee1108527b8e8d60e8d1b467c30c18c5455e5835d483161d3fc26b4a67d6df9e3ddd93" + "31247cb18450188752a1ca219f3396a872cb13d8", + "041535fff5d279bcd744b04e643458ce20b81df8a9e01b1181d52bb14e4", + "040021e1227457be78e49db22335139a136ba290d34871f90ab5e6a8db6ac100df43b381" + "a4d757864c39ce8d0b64d6a32e9e8be30f92a10a252d46a2e2", + "03019bd459b34133dc7331caa8976bee67f76db3a45b1793cb545e26c68", + "0025611bd4e3473aaea85228b2bf37eb1b4458d8166012aa098d9c1cab8", + "07acd38506e984fb7f1607b50837018f9b4246623dcfc9d7aceb486e76d"}, + {NID_sect233k1, NID_sha256, + "9290df0cc50c3cab6655f3a6de1f4cf613d9bc06ea7c99f38038369ff2fadefa57a3c7ae" + "7940c1b98bb1d03503cc271f7a891bf38eec93c31dcec7892dfd2e1ab337bedde3e5325e" + "d8d9cb7fa3096f6fafc3beb3a66cba66ba826d1032debfb4908cc9dded8c0099c85072da" + "ac4373fbc428fcaa9a6da02181ebc33f0cf926fb", + "000ecfe580a624df66c25e87e7689fc3b471d205970ff9ab51a64aa12ed", + "04002ca7b9c98bb8106ae14a87d5f9f7ae1f99a5524992116e68af89da6daa00a2fbee76" + "9eec313cf3c8519d3f96167477f0f06dcc470408e3f637b6c2", + "044f065c49bb7ff0772d628104bc2e222f1fde42aaa8b9345d324d7f936", + "046301f3f07922d338d5b7d82104597fc50941e4bc0a15ab5e0408f9fa1", + "03495e335905b4842b97f00b344313ca7d6a4ff60cfeaa5d589e0a31782"}, + {NID_sect233k1, NID_sha256, + "855c7be75fda372f062709827f333630acf28954a62a5193ff675f0dfeb63f32bca418f7" + "cbdb346bf388d62315b19a592267ca407120db93d4e3d7125b867c4c4670b7a57a76f617" + "34cead2caf2425eb9ff0a63293e8cd6defc9648257b401463f4533a2425e0024f1ea9336" + "5eeee3c6da20d25928602ec8b426f9b39f97f3fe", + "013c72c73358ffa168423149ecdd897f0a5f75a641de008649f00134944", + "0401c70e1b6c01477f95e718f193e13c093b101e9f16024082ac699ed6ebb601f8013a88" + "264266cb5cc5bd38e477fe0a1aa49ae4a5ff94cb58439a7c1b", + "07ad8a117f34bf2fcf7d689b8124e08118e28ebd172f8c220d57d3f0b88", + "012bc7d380192f2efe55625e39927ef799993af9451c662b562a239dfe7", + "035961b27e88d6731220f70e96d555f63853d14149df7bf6d24fc29441d"}, + {NID_sect233k1, NID_sha256, + "9c896f800281812ed57d31623d563377a5c725cec84313472b90e73f77d400f5d4fb2362" + "55741b73d46f7e5254d04099bec274db8a9af5fc7cc220d42cc172cbd3c3595c49ff74bf" + "aab7b5e46c90855b611f74753ccdbbabf92e011d52e9ba753b83ed2a251a632e1bd5c6d3" + "46e38e743950c8ce0f394a837028575fa44bcc26", + "00ac60e2e70b7c4cda64071c7738f68773c94df9456a8ec3bbb468fa7f8", + "04000109614a2ca27b7a749e53777e0f3ee2f57013ee83ea539ada6d98d8a9005668f4b2" + "7213a8a024455b398de2cd7635cb620d7401f5deb4fa9ab2f4", + "00098489f0966e27555268a94378b7b8685ac610fb0964694aae9aa716d", + "06d151437a0aac232a472af038b0fac095d224ce0e5487510e30c31d605", + "0563dbfd021c1b77f980530d0120e93c9ee4f1f092a268bd8aba7d3110e"}, + {NID_sect233k1, NID_sha256, + "139a14ead998d1a962fa47c47ef2953aa136bd912fe940709b8c560bc2a0c4bf8f3aab30" + "a8e21b7d5f487d30b0097e3da723f11b5cb4e8c5724f5a2fe0d68ee4bacbb85e5eacf180" + "94d2a8ec4506cf8497836a4a905059a998ea750adc54c27c69cbd0b0c1f9743a62f3d988" + "f3fa0a9865a73fc071f526623085a2ef12838888", + "060bf720052e8b9508a801340c213cf53bbecf4975faee63d4b44fc647a", + "040196e37671def44b35c9e8c719130389b40c7ebc0ed5ae354dc73e0c40c700d3fa0a45" + "a3cc5dfb61085290f6d18d710ad5d0d3ab31ce65b0e6915a72", + "0729c7e1de10e92634857a65a2ed75103df6bd4bf63b1ad6383c37a0435", + "06808491ffebf088476de7daf541bca3fd943d4c2089b848a130abdc0d3", + "02c0dcfff06a07e928c15a1fc2aceaa4b4dd6fe8eb67ccd4d01240f249f"}, + {NID_sect233k1, NID_sha256, + "cf4a8e754b23d0fffc1c5c80b0cb11deeaba3064b315bc2cee96db5b9881baf90d30af4b" + "69066f757b3020706def77a5fc1632d96bafba22a9c8cd3b52d535d941b3c7cc02b7fe6b" + "51639d5e2084478ab3a29d2f5e0e16639fc2833a47b58e2c3fb5b2ea1830fe2ff68e571a" + "8f281617a23d9a28db1c64ddfb1083d055030e5a", + "07cf3c216592febd8630a478b5b3e3a605084020322adb13ac0a626bc7b", + "04008eee2ea13a08d4e4d71ecd2547f6d80b8f88879c9edfab5a675831fef2005117c0d8" + "a0442ad7b95cac1a984dfb9efbb7eb3c3866955da60e6cea8a", + "038de0be25c23cbde9ed9fb259cd9a06b69bf15dafed723970dfcb91307", + "051c9c5fe50eb81a11c8e7b2db145c6b5dbff2c51def56f4981774c357c", + "053887c6cc2f21bff461c9182c17f634ee2b301c3cc4af0bb1d3075f74e"}, + {NID_sect233k1, NID_sha256, + "ae64030d4af9b36c8d3a6af0aff34e5ab201df04274691fb420b7d5c40c401ed7f3ade96" + "065d34f2490d17943e27156e7bed83cd7222d0d5a73d167855fbe7ff6c3ed87f20986ad8" + "bbbd80fed5f9705c6c783b423f641d40ff1f367f9648af5a79ea3cea0236997558bd9dcb" + "011ea4dc64d61ea1e1f85b4f696ed586bc7705be", + "061eda5999e5a9ed4485d2a0ac5510549b76ca37df858ea5d95aeed571b", + "0401642d56359cc0a5f261fdc405030d45b0d6f9c08a182d354bf2687dd9d5011bf0dcbf" + "62749a99e4b02b284aa7a6479b59b363d25319a5315423a589", + "03094fac5381a1b31e53f43a537d9e22ebe6bd2c149f2f69d792bd56f53", + "053c8c4f9a30e0500e01100bb97c00ce98f5cc6578686daa1bdbd679373", + "047086a88ea014f06d6345608bd0a6010e650b9f6f984b6efea9a4fb277"}, + {NID_sect233k1, NID_sha256, + "94a9d9cd9efa3e4ccf2a37f904dd9cab5624ec9393cf8816ea591c5e70cccd2f105388ae" + "133708fb974998ae61d218c71785f9eb808d1c28d953cc7eed00dd9854b6b4568c5ed5ee" + "3df3b58a1e04c64f1c87fee4365ec9aa41b08a6bae234dc43a0bf2f61420acdb891a40f1" + "7f246972afee75a4c0b249dee0fc8f9b9c8a243d", + "07e7e73171e4d2f2989dc024757c186485435b82544a448f5cfca05f281", + "040181c8cf579d9259020461184979757b097d5a94245a2b9a1f8a6931ee0a014baf1b76" + "1a0af3dd9c0521c6489f9a778da824283c94087698daa7cf78", + "02b57fabe6b866fd25ad8802c6b02b680c137ea9b623457b35a24d5a5f3", + "07421dbfa83859354345b9c3f1ce6242605094d924a4d38c7bd952e3910", + "05ee48a3a5119bb3433b53a625101492216421ce67fc04dacf947ec600e"}, + {NID_sect233k1, NID_sha256, + "4db998df7b90678b8aa4ec6233c9b4629800ad1f3e2cf8f7afcac62fc6982dcb290e4458" + "7015eca8dfe77dbb4a80f9bffe75b11e961e70deed14555db6dae47d49e73004f000eb86" + "77c18f7e8234bf0a5a104266167a05ef07152e7acc2f0368b37efe69c0c2feb51eedf733" + "8cf9ed398f066cf1f66bacd89ab9376d41da35a2", + "05f7270764a0444c7159d2db867930fdb0fb9fa6b8fc80ca02e11753095", + "04006806c7164a09e11629e16608b7312d9d988acefa626fe8e34e03203d11019c4200c9" + "522618dab8a16e217beb3011599ed6cc09291fe9d451f0cf02", + "04a8958c80481a18c6e0893da9ab2d48fa6ae30a0f1d0512196e658eba0", + "01d301da51eccd15e09ce0bc2d0bdcb215a43ed13792084e2969260d46f", + "031f96a2f322d27d0bef23ba7c457fdc45a6e612f7d13e9277d36c8def3"}, + {NID_sect233k1, NID_sha256, + "dbf9b8a4ae316bd2df0c80db1cb5d7038364a2634925ff957d7c03511b57d486274b2ecf" + "191746827c325a14dc94daacd66ad86d369e3f598f176c4f0eadec7e9edd13e34043efbe" + "0a801b75b8186b4a6d89ceae4fb250ab570d65b6dd7c04382738fe3f6f6c867a7d84b35b" + "20720cb0036a5d81a87126f236833831d9ff00b1", + "0179b924afa4acf30ecbe2b3c12de533a1f9675687876a7e5e5ddc8e03b", + "040175bf95ac8e768727d3b4a74c2b8a04b221247a3b8386ddf35fc39976ad0122f32f94" + "1066150c151b9db92b86f86a10cab0828a77e4f0d5c4026540", + "0210c75a63699b424585f65497c6e46988c28eff3e0977e3ade599581dc", + "06087e46c0677e3ca64a0cf030236583935d0dc03c896685dc6e446d9e2", + "0252e42b8f03b085f38c6849bd420837d985c9fe14750a654b584c4cc5d"}, + {NID_sect233k1, NID_sha384, + "986d9e5d636526f4deb7545c037fe81b09c74496ddb8e42e61650c74b6fe348593f0cf8f" + "8eca5e839baf62f17bf6ad96ec0c71dc44fdf11259dbfe7499157e402f6bd50769723541" + "50723afb632799a990c44cd0a4fa9609ec4db133e3b4700be3ea4a338e8ba1873d345e80" + "163ed60d0de274d7617a8382980bc2138b0a2a01", + "02c9eb4d392d7f2eef606e1861183acb1fc753d666225f0f154d9eda147", + "0400d58fd7b5aa570b1c4b2190ec413fbcc9ef44d33ef191b6e23abcb386900173e85377" + "bdd8dac58222cd1d0f7ed98d73d6fb6c2eaf34819b08ececa9", + "064f9fb13784c99185f334700ccfcc4ff60b7f4d613c3de6dc5d1b8dd5a", + "03bff54e3610ade656bbe002867168db1b521c49225eb9662950b01955c", + "01da3fd8c08d8e17692059c669da3c7c4c146df6d3cbeaf34598d28eaae"}, + {NID_sect233k1, NID_sha384, + "68d0be2883598bfb1433886aff118349157708690380c42b8919859d96db069c7fde6e11" + "7a3669f2cff94a0f1b66b27b09e3f1b24d26299e11552a084be428446f3174da2e041465" + "5bdceb38e58fcb065b6661190862db39c6545dead34a03584632e988d0459659dc7c7c78" + "d4d00fc2aa10465cf24b2410f14e2a62173c9962", + "024661c89b77b2c743cc175a6130904461138ddc4ef771ffb9fc2c8679a", + "040090383de7ca48f1e71a43845565a9f0c53d2c9f8c2e0f6c4ec7eb6437fc0167658227" + "2e7ebc9fd56e1010a570d744ae4fa70eed3e6eeaeb0e0eda7c", + "05cc5b36c7300a1cc3f624e9e663861b4e296f7e7a27e8f8f0a2d54eecd", + "039c6f5b484411c434ee161ebeda7aa21b7bb26bde0301d9ff92921337e", + "02aaae737aedecfd5d53af56ef154ac6430a45ff03a3495a34a5fe0e97e"}, + {NID_sect233k1, NID_sha384, + "f0ba0407485fecd7337f4b22236533a926cc744a5f06dd08276750196f1bf7ea7984278f" + "789f92dd07e36895a8bfe297ea43d4a1177c0368900e3b969d3083cbe626f0e27e7ab38e" + "185c923dff46d9ba187b2acb9cf4b23ec8eedbb8044b96b5263d956e50cd6240c66d5d96" + "517130c743752404ed09473f05d0004dc5971ff5", + "0065e20e5ce534576d7c17616cd4ede3bf4f500894850723bcc9f895f4b", + "04001413f6dd5349e94311f1d25e400b69c0f0ea446294eba4bbeb10278b850066a05055" + "d856621161d4f0e33dac82e5c0cd91ed8aa56e9abba9ec80cb", + "07377147b59dba008ed0e6b366e511f94c7f7c9088615c6d46f46736b97", + "05515a6bdfde3b4b78489194d39f4bb439f58a6b3c3f9e16c8a71590b14", + "00778f79083d11efc8ff959f607c4cee7cc8f38b855028ea248fe291adc"}, + {NID_sect233k1, NID_sha384, + "3827276694e413c886129c452c9a66e7d09dee84f5f09bf34e4baa308b4627e096c7d45c" + "f6ef45ba1d9a4019a60399feec10fa80e333e2aff1251c85ca48574d9b9e1affb9666828" + "dff5afcef3edaf5e8cae823505a0c73afe76c1bf130399fb06b092ba34ab0ae15ac6c682" + "f9ee8479b065ce75b57213b8aae0f55e4e386de5", + "014c85f66fbbd653f1e4e590cffe62c343ba6062df4b271fbd02e5d42f7", + "04018930b4a59a1c0e92febe650347c49e29a4e83cb8c507e30ad835dbc94b00a237bcd1" + "30235e34b4439293f15e7a3913d659089e38e5619fa52e3c0c", + "03c1f8d076fb4fbea91a97800607b2db3fb5a45149c0d30dce79f07e963", + "04b9d2c66d8cc55b64f3f62dc629ce8e50ae0bad8a4d14e8b6567fc87e4", + "00b9dfdbeecb061a455dd052258f3828d4b7174af972c65bd0043a9776f"}, + {NID_sect233k1, NID_sha384, + "d1afb8965b48d66b9acb1ece674d9548f83395275f2d8135554cfcc7ceb96450d850dd87" + "4529433883709483d0743798db5e0dee955a4f30ba328c7934b8dd9207f3c336cf89141a" + "175ebe23d2faed629eb4236a8aea8300604c3eb7704512f240fda66acedf1494a85058dc" + "6a31bf9531958c332b93cfe5545046876c6b99e0", + "030ac7a78593b570b29f6d3d267abb6ba7e5870ee1c8ee4f1ab2f141051", + "0400a409e90eb4314f95967607ea3de9817a0fdb439cf406135262624e7fac004b1dd719" + "434e8dfa5861887736f32ecd635878ed4b9e290c423da09059", + "027c4987ff872fe499039b4432dc889960ea8e3f07be42e36a5827b3964", + "06829b5e02b5849689d152ceacdddbfa8f68d782b3ae8da23ea48b1acbd", + "03dba0d2b4400495ee098325ae4450b32b83689349e82a69b799dac2cbc"}, + {NID_sect233k1, NID_sha384, + "4f95b71669fdfe5dc46d4b951b085e099de349fc740535175337127910acf24e9a0e4b2f" + "23196ad23880da47b740d77d74fe9bcfdcc44dd7d8d1a181ac290de5cf4da22d5034cda3" + "d8020bcc776dde8cef1786c9ce4d2c2cfb035da61406af745efb7ef1a55f2eccc5000319" + "cf1d6380963025dcea641cfd15a3106751fec286", + "06d7516aa040f7d559cae248e485834e8d9bb608279ed4d4f7e1dbcd2b3", + "040127a92888fdac8d4ba9c0243c9aca516bcb431911254bc2cf51883623a100606c30fb" + "b9958fb1140643f32c5dd582c2319f71bff197d58ba3e598bb", + "01104b6ad82327b0445e75cff0efa1281d266a9dfe4019ba2ed22dd6976", + "01f247b2850463e362ff8879054d3459b2cbae84b9d4bc005a2ccf4736b", + "05b3dbdf04758d546e54c43ca5973bd8ceba646a4dd5d17ae5d2f8ec516"}, + {NID_sect233k1, NID_sha384, + "2ad9e17780c824c4f2d1e1cbf19ab85638f2f71cb4fa3518f08085b8b358f54d4f08394a" + "5ac29cbb3cab828c5f07f41eec51e6cd61a5f2cf44dbfa46834370cebdeb328fd3bf681e" + "61011b5c2ebc8945ac7a2a8467606051008b15c89390e111999255bfe28634ce9bc2850a" + "2b55a4af1c4c2f94403c78aba1ebc87386ab7b32", + "0137050d7b455f43a8dc2516cfff5a91062c1a2727b27df41488f3dcf18", + "04015ccc90a5f3906469e3ecf7a70c429f5b50fd0ce74065d41f1bd6dccc1f00fe5611b8" + "b1b35a907bc188ad2b1fb7507d1043d148283911af3ad782e9", + "04881e879d7c76eb2ee61fe1844567316d7efaef047b96979e6dceb7858", + "03799e90bc64cfd7d0246a7fc89a4d8ed0399277cab2af40fa2ec8196d8", + "067e8728f4d8398e4e1c25775620865bcc2d4cfe635a1f4c6b7306f6d9f"}, + {NID_sect233k1, NID_sha384, + "958773c37d3eba003aa5c489f72118b3022c52b93399e9d8001695664918b86893f4922c" + "7b6e55b1855ed0fd1d8de5dc61af403ad660fec60d7c44bd0102c069957ed804d0d416fa" + "cdc1a95355ef58554606579ef89b1842f1055cfa2ae118abbc485356824cc09dddb77d06" + "71cb3011b33bc86cac526e3f6bb3293c7bdca1ff", + "001fd447b33a2ee3595b9f885c290d241422afdd74c3dc4981955a7e9ad", + "0400e706408803188263cb149428c60de57ac757f0776e5b27a2d5a859f58c0153b5e13f" + "17f0178cd90427f7d608a5659b9e03effebc89da65d59698d5", + "0339300c00cf7e8c6195ffb71e509613018e6a417782e4f52704026a510", + "0227c80e36e3571e1c783358c9ffed237b251332e8ed05a8d3b454c53b5", + "0679a32cee8ae001a18d9a9d0ed7e99e5ae67ffcd54de7b48c62e76ac8c"}, + {NID_sect233k1, NID_sha384, + "9cb2c496b1bc7f040228571e005e7e936e48e8f469e295edf914f5648701249a20bff6b9" + "8b5e862603dd9f12bb71c160aafe9df02e2e383e9b8a9a9d700f4425ce408feabbf754be" + "543f52204c849fed6c9d3e36e03dfbd9e35c18d7bb2295f1c484a66e73440a0a5aece5fe" + "80b9ade9321ef18cde3eb2db15e4b18e788b0441", + "06a061e10b4a6e7001d95411cb31bdea9c84670a59ed61b14fbbb05c8e7", + "04000ad2b726b805919cabc90d058c78896d2dd8a78484c1fec5bd5fb0e07b007e048ddb" + "487f667633d6d030338ded21a2ac5f65373ddcfe1e4a3424ae", + "013b4a86b70f0e4de6efdafd7ecc993f0d6f231b3d743ee5adf82db1515", + "0541c2d3b2c6f0655dd415e327f0ef07b03356f8047117c41e704169698", + "00300f45026200b8cc84fd564778281bd1d7e03727c242a249d9ad33338"}, + {NID_sect233k1, NID_sha384, + "9a4bc0a029e97742ed3bca207d5912cb568e4403cda106b00247520ea02008b14c041b8c" + "9b976294252da835f4ff27456039d79d90315abcb0b9b6958a22352672e229665457ec79" + "571ca80447c8ff2a86e6af3dabe7427c8bdcae65e3c6746a56079ce2cf8d22235180f466" + "46a21cd9e86032cfad874cb9c67f882fb037a13f", + "027ec31ca31acb4d2fbacb49fc085f1261b0042cc755cc97f9b199e7a37", + "0401d521f7abc2fd3b0a10732ed641cc1b7fdd7b49cf61909b215220c5253e0019e9095c" + "67af1b89ae6c486c4f9889c3f2994743eafe55bd9eafe438d9", + "0151aa44fd97be14578d68f87dbb884c960ab59d950c392e607ecae6bac", + "07be427f46958538004186d52aa50a0f83d184a9d2f4da2974163854eec", + "029d4ea73ab5b336ed44556f6944e734e531a5c71dc6c929e7253323906"}, + {NID_sect233k1, NID_sha384, + "8d89e22cf802dc68ff22d43c436c79311e705ff6fd845e77c880f399f403e6d5e9e2b355" + "11553c978171189e288cb2200fd95f84ec5ee9865c0eb9190aff6dacf783ef200e82027f" + "a992741876456472bdf27f2bd8ee55db15408c957a120eb64cd24d299818726a73fbb069" + "7eba726a326719765735b37a2dcff0c853c906bd", + "04c6f4d88e5a4f4f83196f2dda9dcf2a66eaf94d50c851f59bfcea1d876", + "0401e2677c1305f545472e373615d195d1f7a315f592e26fbbf44c4255805001638140f4" + "8bad525625a87d0e537db5500f034e71e60e8a8c48eea04108", + "02185d8ec6f35d5c3f965cd00597d93caf45bbe186d4128bf877ec304eb", + "075199f4d8af090e4666754a7dac0c1599c207735c0f54c9f11e305727c", + "008cadf59a224f812d64c2f492e7ad4a923f3463b878dffc75eca5f8fb2"}, + {NID_sect233k1, NID_sha384, + "aa1bf5a79e5339fb9ef6c2817bd95725551d064bc5064d6586c5a879901adf808dc2ef7c" + "78ec3b434b84569988db58b5e8e9782b1cbc2cc7c9b68e66f32d4ac4ebe7e75b345f654c" + "7b8a5e650acc9f170f75b7aaa3957cce248cc69cf93faf8d72abc6fc1cfa9ae2d18a7b31" + "ce720147e88e84f6563b2197882fe302449ac5ce", + "01aa169ea84365c22981bb766bfdad27e373440850569957544b0f9332a", + "0401f97d91302c70798e2278348e36bbe01587e0031ac3c422141e3d4c150400a95108f6" + "b7ff41546c98f4ea4d1b587a3280e49c6cd0d33abdebf9a1e7", + "03c9efc0f72d88168c2b1f7fa1c6e275839303c2bddca136dd19ef446c9", + "0639d1a1066465b4b2f443cd9677cfe3bf5bb33e3e9b14cab2d37f4a859", + "04582792ba78f782f112711ceaf36f5f0774b92a6fcaee327d687658835"}, + {NID_sect233k1, NID_sha384, + "475664d5e22cbe0da0d0289ca9a666a37270dc71c81cffac91f6229fa39315c1d55f7e0a" + "89b6a7a07df7d391dbdf8fb7af63d2da46ecc3b60110dbcd842da97f98d2b67f562b0364" + "ef8e1c589519024177c8ea079794f271f6d35554c0e9d0a39062383c95721b72f4e74eaa" + "fb6fbfbda02cb670a7c4c94f67b8ebc6442e84e3", + "04a665b92c0c33a3f8b9eb4b0ec061d40b603de36c87096455102ffe57b", + "0400f0ac5238553f0cd74e6f34f7f82563cb01138e5c9bac6d5e7b8b7ad4fe01903e9fd8" + "a5a2aa32913b18bddef20667061f919f8d61a5b3c814ba4aab", + "070ef25950a795b5e22fe4cf5402f49029c5d97cf9f57f0806c0bbb5855", + "01248dcf1993ac2eeacd062f853ebb4b2072357e728f0589258399ea95a", + "069800eb2e2b3a9162196dbaaf67cab4ae123ea817f223acb6e889f6d7b"}, + {NID_sect233k1, NID_sha384, + "9e5397d94465390a82a3c07e3ebf21b515776d18b4463aa5810e6b2f96ca61e92d13e034" + "fa853c3fa45411f51f79df6f799a2c6906e6a5b7896a4576a4464f9e0be2b529a43e1f50" + "3fb640d79db6b68f3a3a7deac1b5832fbe86673784ff6db1f8438f7dd332cdd1e7ad9df8" + "b6731aad1b6a72bde52e6bc62d80b8da57822c48", + "00531540d94823e19ab2b95cbc6e7492e1effcbabce875de6ba96f53aa9", + "040031ba225249916a5380235220b9657162eef43d59ccab507639e19bcd6c0062e85d61" + "366a73b62255c741a065708701c8fa024a15401a4cd58640b0", + "05375df0a23646e8033ec9e3ad269e7167a663b97b4f52cf18fbb5f50f4", + "05bdf7d643ffde5ea191553a9c99eb42fba9a8b6e2013dcc520298d224d", + "06cdd9e0d58bd4c5cfe66589ed7c7d15331f3e164dff562b6971af1a41d"}, + {NID_sect233k1, NID_sha384, + "3cc4c4192f317e52df6f8cefba6d4cd823c942aaee11b9a0ef5de5c2d181073b7085a558" + "05e9554def8dc13eb978e7396044d4f4a14be2c7605998c062095c929b9c23b2b1b2fa73" + "dd19a0c0af44ca4789f9841fa62dee8a5f91b3cc4b3264f5f67334c3f0772b30bd7431c3" + "fbbf1f34318ce1889b6e8a76ce6d42079a451e56", + "022a89addd8b85809e87e0aa2c038593ec277054842854de1197833a51c", + "04008e760b282d0ae4eeb2fcbbfdec851468fd8e04c4dec71fc2d5d3a98a1300849a56b9" + "b0b0a1ede6b9f9522685e7ace3baa57f72709aba705814d138", + "05515b025d6196ffdc8bf275479d72b29a752eb3e70ebf07d4c4e7bf74d", + "041902f9b7bc81d3a88066b03e4111ad8ff4d99dd868d5608d1f43eead4", + "059adb96af9f404d2f04d89fb39cf38ba5689f47bda749ae9aa1ecb097a"}, + {NID_sect233k1, NID_sha512, + "72cdef5bdf710978e0aa334b86b8ff4a58630da314eabe98b4d611aab56f55c526983d54" + "d19bbbf9ddba30a84b18aa0bae9f9503e9b222f842f084db83aa39625403213ca321cc0d" + "9c8a136c826e6ea4ec108b913dd0a9ce9d5b8c7e3af53c3876e56a2037ebd6d99f037a09" + "7111c837647bedfe4c494e4288ed6427c15969e3", + "01df252a11ff97b4421b3a2361db94e908e8243cd50d9179f9e03e331f1", + "040129f011fd5fedf3526f0437ae800a110435db907af60e16912d58523202008026ed86" + "afa7ec80277f322dfc8cf693089968ed9ceb8c95c930415a23", + "04fce14bc83be6f862f06680a32e9a51d1a569fdf1d9b10a89eb9fef4bf", + "04d7b8d19dd9cabc3c2245a9d2c8431c3151eeb6f49676a865e78c26c2f", + "0373e69da1fe35ce41ff344447fa7ffe6fc71e28dc68244372745739fc2"}, + {NID_sect233k1, NID_sha512, + "8e4eb88c0b2d525b2c58b8e00f32def90e6dd382301de49e0ac053dbc6b61afe926d8519" + "3e2c4948f7402a3d7c614cb2c58e060362b0516a1ba4a7425f1b3d09aa20d4c3c8993a38" + "7a3248aeec51e6efa8f558dbdcfcaa13ee08413227c8351e3107e9a3e3ac124224aaea91" + "bfe50c11c1c8ae582e718f50bc5d5c06076517d6", + "01d7125c299ebd0dbcc050f07de931c7ad0450af590d0a2d0228a66ac5d", + "04013ebde8790a113bdde87c11ccdcbc39e354b193d772921b86657f53f74a00aae910b0" + "e22f1a2505f55fef2eae47ab6d47db6e49190a5469b4b6dce5", + "0113d1737bee59f9f477f71f77a0ac1aea86aa67002c34a1b31c421cd7c", + "066f9871da9a22f07c9b2a44fb6c01ac74ba17649cecc33b729afcb488b", + "037fad90c288510d0cd8e99e5d930f4fe197df779dfd6088da48986c601"}, + {NID_sect233k1, NID_sha512, + "370fdd80f330311dbb3959666001bba61cdacf20f72f78953d946fa6cba02d24b5003f54" + "52d535609e489b9434f192011f99f918defe877d51349870e7e75502f61145f7c261dbd2" + "a0840926d824ebe9be3c5a77a3a84340aea930378367ed3615a47e3f792c7773f83f91eb" + "ea718a05fc62e9ed1d78629b2c27ae44fe8f8d4e", + "021238e66119844b146d40e48341f522f6ac2f9c8a0b33aaf95a3099a41", + "0401dc3ac1ecb670f867337b752cdbf48bed9f32589366f7c6ba7424af1d6601e3a38ded" + "8148bf45484ab6b77e0beff759812493347e32d2d54a322a2a", + "03626adf8e70506e74ea27ce740f7eed1c8b37d50415be6a2681c67ad2b", + "07a9c9056b51f1fe3e7733c6f54ed96662aa7f5a08a961f91fd6d0276df", + "05e7600e9fda45bb966fbbb5a9404af961058a128824b6d84d9d47ebdbf"}, + {NID_sect233k1, NID_sha512, + "f86c4433787c3ec3cb1663389ccf53d62f9425274ccef05fd14b1b8fef676208867764eb" + "98d16d006ee6ebdc27b8d9a8ddd303d941fdd82b630694cdc698bbe6bd52441190783428" + "6c94b24ee199fe6d646064277f244b7df3ea2d9d52a9dc6a33d7c8d6dbc919da0fa987a6" + "7621ef0829e48310e0ea2bb86fedcf4effc0b94b", + "015e1bdfdacd87c42ed439f3e243abf27fd42e54f3ebdfb47f60dbae5fe", + "0400fb7fa51c1a96baab65fc85c3b769ac84ca7b63a1fe9f507a2ee0c49395005d450aed" + "449f8f1aeaa9df0131f696c2bcd4528808d2f52b6a73f72811", + "070ca3f5dc30c70e576e2d2b30935b05b6e68598eeaafa1bfcb9e156e05", + "07e3cdc4207456773aa52b44156801b316a7ac850b3a9e717a9ae7fcdb0", + "07ad6de3ba8730ac887f045cae80fe2fb5237a8594e7125c4792d478594"}, + {NID_sect233k1, NID_sha512, + "4117d593aa92e3eae1124ec7482737cd3573fe5f0f2a5051a7ce86946a2abb9e47a0c6ea" + "75b262689b0b486476d2ab09a20efc2fb921419b1811b51a2e15891ae9e45a17ab4b96c6" + "65c6c423fc00e2d66df5804a164f0f3c958df6f25d7da6829b1fe162a0a8cf130858c83f" + "3555d6ad627db70cb41303cc6380f7b3fed2563e", + "00e09410548c17bbbf28a68c3963a52d39743a4f1ac28e6dfe7a6ede281", + "0401f5f36a21a3b7fc5ea37528566da695922d7d9b7e6800af9c1a00f68242003df4e2ba" + "0c8648cb1fa19663f31786b850e6b80068b8c007f41de08608", + "03c0a2a4bea270eaf66adfb297c0e3213254cd87b11edcd90cfcd6f3104", + "07b684e337d6778f84bdb7a6835e91877b41d6af4b76311258fbb8339d8", + "064a0c22057a858b153ecdf4d275cf5523dacafdfcb46423b5613c85691"}, + {NID_sect233k1, NID_sha512, + "882ecaff3ec8f4023df5397167f238869f78a5c499be19aea85c7486e73f66f0e08e71cf" + "85f3f1b6f6a70796bf46a18e6b555a0a87c2088640ca73051b3dd59ebfef922be0372208" + "fce602d8001681297b285701dbbe24ccb42541b5db4aac1a1c7f407e11c83db15b38cdbc" + "25e930fdc6558f64d9503e214571a435d890169b", + "049f5bea6e72d98579b78cb07d89f64503f8759dd7a73cd73713c120428", + "0400974dcd68cd85117f363812a0473e972c89551e31c74c8d99f1073eaafc00f306c905" + "1cf3b84803307beb3dc0d34a9758a4f535100e846462a49053", + "022a5564b468e706762e3ff934aa22d9aea0bf2b116b61182c9f7be19fe", + "02e050afb84e1b0591fb64d46dd7d4a939552d68bdb4213f16c5d7ec5ec", + "063225df0057d5368b2e103eb2181ff5760e6b2a9c13c83da042722c3e4"}, + {NID_sect233k1, NID_sha512, + "99b3b8f876f8359bd6369ce84f9261581c52d744b90261a1427ab9e447e6d833b6b3e89a" + "f8dc770f1dd55692d01c8bbc4277a729fddfa7cbdb2ec99133201dde44ac691a77904ca8" + "16feb0a1aaacbb9fba85048bc63d73506eb908ecd697caf582747051a3a38ac8930c9a43" + "65f407ed94ca7f2d26913c53f4c010c7ed9d7ca4", + "005eaa818690d1ca4838f0bc667be5721d178c3869884260fb230277c3b", + "0401f7b3b50167cb2ff7482240bade95f2850a02805742e6e29eabf7f9ad3400f8038a8c" + "ffa0f798a01e333251996662bc3c0ee56d94c392269b63edb7", + "064d518f7b8c87325d8edfd42a52793d87ef8db283606dd676be8584562", + "07128123004a515e277dd5b571e31bbc877cc966e27ed5b2ab2c16e881b", + "051d70485148996ec30f92097e4a12b5edf804e03e312072336bd912268"}, + {NID_sect233k1, NID_sha512, + "8c1a83023930a85c5b2f9930521b8b8963d5523a3323d87f862a17d3505ccee01246ee10" + "29b8b8c2b608772c4096d1e914cb398f027d91184a8e94e4feeae121eabb504a2a35c8bc" + "9294edd15ddd979946c14c792ad787dc2d4deffa284830fc90b3f8c0ced6a99fc6de7c41" + "b9ed261402a6b3d702ff86a9392731ecc37430c0", + "0603d89cd2f741d734587e77554fe6bbb1e5739d5ff73084d4de8ed69c4", + "040122f2b7802917e4164ac2f54033621c78cbc7040217e5ded6b9217f95bb01f867df74" + "3e73806957066c2ab45c04bf1af158e146a9d1eda9e974e0d4", + "076850b8ca9e454bdb320da624c0dc63e14ad279185e4f8c9e49905666c", + "04bc63bafd5bad022fe5db246680a0a0ccd0b50ff50482d3849c92eec7e", + "07b6d8a8446ddfc64392af0aa1763d45877023c0be9ec78db47efd3c366"}, + {NID_sect233k1, NID_sha512, + "f3c9dedd7115339dd3ede7d8d06a44de66bf80b4888ab7bc386cd40a92789042440a13d2" + "cc90dbcacca5feeec1e0e3c51724146e2c4904ed6b05c7b4e9b49d7f458ada695c5d2fc3" + "6f1193329b87c1268aa38eda9151430aa0bc004e5d2a61b9390accfc699f2efabfec785e" + "b34f52b1beff1e4c5492e922acc348667d2a3986", + "07977b3aba53616dac27b4d74930da23966a88ad98f1769674789c0be3d", + "0400aa61b4bd2fa9c61914ae306d69d3ade7d6cf621399e5791dda8a054dcd012e8d9274" + "d5593f5074c49ca34a7e2d64f9d9ccdf42df6087134b811762", + "03b8ee56bebb59207e107bb0c16938cab707e425f38b70f0bc918fc1b8a", + "068502a3e5e51f5481aad31eb6614152f4957eef1becfe3a297b023a94c", + "07b6b43be63aa79c10876179703b69caf9b03c5401b999a3c5be4737999"}, + {NID_sect233k1, NID_sha512, + "d878c4ee0bd6c84652d7f9e68df7b90cc78776d8d1b60f3e4d7465032bf401f1527ca7bf" + "d4a3dd916e13e93fadaa5e5f20c9f47d12f8fc922a9a3aaeeeef294c221ca1adf7df85b8" + "88faec8002f17ff202da1be837827619904121167bee2d2cd694a263d9a99062cada3399" + "dcbfcb283597a96ebec129c65e0850ec4cb4e2d7", + "050cd20e7eabd29008cc977d0a17e1195d79587b8f15ac2447e15daafc0", + "04001ff23ff4ea1f30663b17d8f1c67ea37b8c5df7009d0c0301db483803a400ec6bde92" + "921b83d4d84be8a67a23e1718e575101b93d9a800550a20e7d", + "041ba36d2e810e47c3de583772e9b5908c257b2aec232d855669d4dae2e", + "079e96ed1dfc4e31774159ef311805b5f8001203cf37a72921efaf5cbe5", + "00b8abcd623b17357f65ac365301a8823365ab948ae3f7fc6a4a0b8ab5d"}, + {NID_sect233k1, NID_sha512, + "ac3c118cc9cbc8eb3b74d8ccc9ecbd81d1996fb25ca43c8a43bffeb244f722b93c9e9692" + "41d45d5b81fda0b399f1e3623687190e428dae077e54cad1eff75ec2f7fbb9434bf71683" + "3421bc2634885677579c237340f76787b2eb19b446d56c0f2206099b81493349f4db0eca" + "d0e2dbe85dbff7d7070abb3d3b12ef0cec828af4", + "02dbb24fcaf9f3cd5d50d209937f0e2d134fa20ee3c9c2f1fff3dfbf302", + "0400a07240c52e385ecf75525201f9810859123bfd8ce04a5e8f4dc4ec88b2009bd81119" + "6ca9ac45b28031b9f65f9a5c4ec497d995f7dec6eb06dd2874", + "05785beb1ff70c7bea89b1fa14be09332ef94b09eebcc9fb1150bfe0d55", + "05279bb1b1ad8174e88bec4c723d65eda768c1d08d1c64c332a240a284f", + "015a90383c2c40ddcf721067b3435915a843f9c4708cc133fd1ee53f442"}, + {NID_sect233k1, NID_sha512, + "700313698cdfdcf0044ca07bf9e5f0702ece7cc66e35decb28d5f8cb7e7e5367a95cc172" + "8a90cc9a53a2b5fcd4702028b742538e9b386f5d8b4a2411579ed9553021a95bd00a73f0" + "3c4184a6145aaa367e3af76659d677fe7a2e98f9ddf4aa20eb8d1a1db72c3f5590598801" + "be7ebf44255fd7376d89d998b7068bd1296fdc38", + "0047142197d3d43fa46545b547968680ec81688589d1ec8d7c7e90eb969", + "040179450d83cd6dd1609830ec78011143eb64d2d1509ed1adfa085a58d786003ee40673" + "ac564c6b5732868d0f8a57727150a23c484228890d768dae54", + "064f8892245a198c9c819152edc168e69dc7b562ef1f54dcc1960cc7db1", + "0293f2f989fb6b6e7cf304faf3f63eef61ab89a626cf8152e15f38bf93b", + "04948643075cea6413b1c88a9bf11aa176611f56d027f2b165d00d46e87"}, + {NID_sect233k1, NID_sha512, + "0374673e1a685bdee55504ce3cd333f70084dd4ae685464a16924eccea34531663fda602" + "29166478b30193459a3113253cd6494dc26154156252dc6e822552c7c04d790eb9f8fcef" + "2ea8dd79e72f881f7f20fff93cd73ad303c0918ec27c6486c4da61f82bcd55422d16650c" + "c68bfd4b0132c1e7075bbf17dad919095860d445", + "031352b49ecde5434aac05f898e6ce4337304845d748f114c14319fe97f", + "040187ae6bc9167d9c69ce5544ad650055cb9a4e69c1772322d5722e68e7e000042187e9" + "d11a921adafc694b5cc8da9226ddad1b65f764274954b17333", + "0761189e63fc0c3b5db92b281e5a4bc0d6fdb30bd14f8e69ca85a211bc7", + "0453560e6e725a2bfe0383884ba3b3dd0816d8522d9e0762f781f6b6340", + "01aaec4bd98c765e4830de6593280779d1222918d4acf08c8fc3d0aa351"}, + {NID_sect233k1, NID_sha512, + "8b237085f135d6e94592f8d855ca397c8c1028236a3b412adefdac888245874f586d0695" + "0ee18118f751bfe26f4c31465ec34b578caa44cf1b7109ac4f6eab7f97ff9699b34271df" + "035d3bf58a2ed4bcbf7577cf8e5792b1945ebb9389b680baeb8518c8fdc5540e192aa4fd" + "e0eed0d7c82be2e362b286f582d65752c8db7038", + "0176f124c24e4420f6e726a6ca25f09dfa0c5a37e5bf879e7bdd36c3b65", + "040098c37cbd44aac5d5c749524b840fd849652349fb3e02cc8f8fd0a237900151a9a88d" + "a407ae41e52b3dad1ea6031c7a36bd834007c0cb1e2c2f2f0f", + "022e299985cf289f2fbe2b1b270fbf12ba818cd2b506f642e659cd541bf", + "0686ac0c09f90a077cb446c910e07fdf23e845487d0333efc65b9b84147", + "01688b18cb42082bea69f18511b0fd9fa35da83d738763cf13ef92a119b"}, + {NID_sect233k1, NID_sha512, + "e3a086ec15574f7017b3cd5f5a47ab7a73980f11074333490dfe9f8ad8926f9ea7c82271" + "aaa74e77133b1025b0b22a6900fbb71251bb6549341a23d194e79d03462cdad52ee0d1b6" + "f5d0d14e1136026961fa3467ccf0864bf7ae3fcc3b68cb35df7324bd9bbe58fc8aa9f63c" + "19feedf19d935b71bf5981c74fb2a487f84e453c", + "0755c48c3dbaf71042c58cb137f3632e3cf9d90b7b9a58fd378feef3d19", + "0400bd9a720553afbfc5349e4a65a21fed0444c30304f7018ec1ff6fc8d1f90109a1d6b9" + "cc4fbd0e888d0a2b6883fd06a5da347c0d4f7882fd29eabcf0", + "04fedf8785c6648798748504b1c9b6a066ab6606bc9a69534f93e908f4f", + "001e71744a1b683858444da0d270f43b0d5644424f2b38ef48a639685b3", + "07ff8199ffe723abacf1947a828e8596dc49ce655319087e4aca6ca34ee"}, + {NID_sect283k1, NID_sha224, + "ef90f85fbda05e693006e4c64e1dac56223becaf0890f73b5274e6e289a5a1de2c141b82" + "5c24d595b3fd18ca855b5c1aa60dac6b5356275b11be670692cdbe5f282f93ac7b2e410a" + "96cb9e9f80defcde98f3449f99e192bfd62040421a0ab8f99acb85369f25e5efbf81439e" + "fa8a5e1d9cf781355a0f47b037b09fe4086389a0", + "1e846c830a8ec04e8572d1a9d2df044ab47352fb346f67403a3bf87243871b164511c53", + "04012e43e20941f2641154bb66a56f2e0428a7ad22d607fb8af658df0b382bedc7d5ae22" + "cc022f226cd65052071066963b112aa302973fe2b5fdd7bb827d13da7634dd2fb9e3852d" + "db", + "03a76f87ede2b5d40a0f10e15e90e29198fc3a03943efea39ddf7afc37ed4e18832af8b", + "1be2c776c707098438fbd0561de578e4b9449f955a25626f2fbea257fc578ffa1bbbb70", + "1aeef69983da1a535b10a47e66d890c4413c7a8cd6a2511a1a670a4c573d4808f46e23a"}, + {NID_sect283k1, NID_sha224, + "a3ebc17c867cc9c7c28797f6364f6574b80c7ec5b2d8e1542a6f5db8568c15032f92cfbc" + "eefa3fe4ee654f690b0455ee5d38dd84bb8665ffc1ff8c849bdbc4aa0ddfdbbca4eb3797" + "2fcbcee8cecc1aae21ec736ef61781716b60247b7551ec4e552d0b59a53cec5964c67cf7" + "988787cedf769eabcc9cd5243f58034d96f0e43d", + "101c5ed48231a56ca0ea85eb45de0e395e6df2efd4987a226ae36489dd8b2dfbf7c465c", + "0407011260f504d809baefb54af48c890f94fa5984c8bf228baa4b6ea14d46372390d1a8" + "ac02bbfabb680659aa2611435c4058ed773467a41cdda8250f3490e4f491f1bbae452c5c" + "36", + "12a3c7f0b3d64614ff97133873d75c7c1406e316e8cf60d22139dba462055baffe6c8f5", + "0a9933496d60716a39e1c3f3bf22a7da546eafebef80dc6f25d0c109ecbc430fdb3e80a", + "0be56197a0098b022a7914c10f40207da58403d6c7d04edaf7efc96de740cd71f67e0de"}, + {NID_sect283k1, NID_sha224, + "60269efa4d0ffafbbc655f6f00578eadce7fc0a7eb7db923dca49b6f2bf3e13f7f829cc6" + "133e022c3c92143c075ab9ced0531a91e6e79848194ab98bb852f40c84e7aebe71fb8bc0" + "fd1f97ed5bb6bad6783d8dc048df42738e841d978456e055e1b8a781dfecfce2218701c7" + "af77e7894ccac5bfff360aab0b6136b978bc39c4", + "019679dc589440b11f82b3716e5b2a2bd42c3b1c83e88a28e304cf5148877faf760b4de", + "040743ae04e4b07d154ca0749a011c97a31ac68d8e1da3491f331136873598896e5320dd" + "cf0776c05891c27fd912267ac166bc9acbaecbf80ccdd887aded2d7b8c2a4a5d139833aa" + "d3", + "099ad7fba5284e406f6cf200a39e398aa0426448c09b95e691f653d6096a63adbd39965", + "0285a82340d9a6d96ed9ad0fd0916216fd20edf979df41a55835ef8fafa00d242ef6f11", + "0a8548b405c171d2a428507f7adda4944bade7cda6dc580b1d3f94e15d7e10f0a08e008"}, + {NID_sect283k1, NID_sha224, + "59d704d5b1f3a0605f1497f22f71b8f45b26138bc86371f00a4517554e7f6e7fa5d35189" + "fc656ce68bd2cb8510fa3e3c3df815dfdd749b2b6ac997d443f3954c7a927e138b579801" + "ffd035cea90840733e7884ccfe43d8d3a4a26b430673274aae312abe4ac1e1d7c67b7358" + "0fedf2d8de46572493c9205ebf0e8b4d75ccc88c", + "1703c21fb1e09f8947e12fddf166fda6f685221fbd803d75a0ae377a54a1e494e6c5e7b", + "040767564e13ae544dab22c3763c5d330a5571e07ff8f2f5ba3fd729379709b1fb184f99" + "0c027f9e5efbd1ff6ac53a6174670eb463b12f70a603354e25c577ea292b13b8e5f022ac" + "9c", + "10d875acb4d0dc211a82e78c0249e74de16768003b53830bf5648cf911fef6a57f8f048", + "02af92243b9dadcf21561ce32ca0744810478f8d5be8e0f83d9632ecd8e86ff467268b6", + "1f6c50fb3bdea228a6b623be9e2ea2c371dcfeb0e604ef1029b6766c43b193d86c02f27"}, + {NID_sect283k1, NID_sha224, + "12c8fdba3bc5f68e13f7ff8e7bee876fa68a970afc6924314dae0c2482763ced8d4752ce" + "c29ea288d350acd8a06c69289ae41ad345a1b88bcccaac903f2bff39015c289a8ad60860" + "6bfd65270a7bcdb5fb10c89bbc2d16dcb91fc9735d66103f6b1f3575622cf4d820929031" + "5b033ee1f79968939410f465a2d37add46af2d59", + "071de8eb14cbfb88e61b908990ce08b81e624ef4f2cd9cdf3dd7ca9097d5ffed9ae9a71", + "040136d50e1aa8203a0cd2c2d545b81d00b95c6b43b74b1fba3a6402abf756d38087affd" + "49046bec77240de7bde85ca4345f27c6df341c72a4eccd2cd495e86376c183ccb34f271c" + "d6", + "1d80734927505d8d4818b3bdf1aa2e5c557e5f717a5b3fb856ca9a2161bfd74a130ee38", + "07894bf10885a698899b118f57e7da22222e3d187a0aabfb99fac0ce0e134b6b44a5f90", + "07b4a87592004d6ef8345415064b4b4672db2943c7e6098a9e6d59ee3324847e753703e"}, + {NID_sect283k1, NID_sha224, + "26013a3ddf687bb2f37d9700923906f118d5cba5d8ed5113a0e3e84cff00918125108f74" + "f4b243e351aa5d07fa7c6ece29f5700f23e50286447883d2a058c3258a12e4ed8770cabe" + "627ebea7ef6e8c77811ed7d9a19c53287093e39226236587ddbc63b7ad5e7ad9895c64d1" + "d03ee432d45a067afe27d4cca920ae88a7a68db1", + "1d156eb15762ed00c4021884adbfc2426e910b18a5bc474268196f4b74e593a8f38702b", + "0400a99b45860615d7caab2f4e9bc01196a61f52f95c6c7fef615a4746d48553692d5fcf" + "13056f81a0088dec1382f8a3a863901d3443c8792cd13ce13a8f63b02d107b66d9d23bc4" + "92", + "1999524ce9525d85b562fd13634fd9ac50fb76d83b9d72d6976d6fbc47af7e1f354eee7", + "067748d49389c9b87a85b518f84f41b18f52569ba531985b8fe5e1f0cf9cffa958da3f0", + "00c44a583c704f69160c6258332f3121b022759b163c74c7c96058fa8e3a9928afee948"}, + {NID_sect283k1, NID_sha224, + "c4dbf70b9a2165e7279122460d05ceb8e43e03fbe2ae7c314007fe2b1d8567cac727a10f" + "ba5cbead0ddb167d387da8e8f3d6bc0ad851cc32885809d07a776fd4a95a979fe3833610" + "af89df0f454d9edfabe12495a118fe83add5eabb2acf54ba7ba7c4be20fc77478c0a0f07" + "26c4e60317422a612a234a7567648603b63f1c12", + "17d6eb1219cab8577168be86b61f372b27ca70fb1f1a767947895c185344e966db17aea", + "04065d8e43a290a6957230501509b95a208a6c37ddcacd1e882d97c73c38b2a256caef5e" + "8b002169cefa6ce170ce20a0b5463f5bd146224e0813acff304307da88830b0777b86cd3" + "d2", + "1519e37a66b4e665b2e3e59b8e836869a886c879aa1ed47901a6c8a8f365efbc67fb410", + "1734a8bc9a13f51d921a297bc6b2d38610c20b32b0adfd5efdd01a4db5084f3b0697904", + "0f9f00b25a33b166f09e2a819dfda80d87f6a2419a7b4162e435ee02c0fc10a669df6d4"}, + {NID_sect283k1, NID_sha224, + "b1d53b6af1face9b59af11c726b0099111d1adb3666209ba46b1744a528ed0f72be5a1b8" + "2423153b896384faebef0362343e2a4599803c08b8513708938aa8a498145fca1c63ba41" + "aff06d1a18aa2a045fce7fcd7e5552a2b98d0df97b6876f06a9cf52a7a40fb737996adda" + "97c3cedf7fe421235ac6951060eba9c0377e72a2", + "10ede9be6615b3b2a294d67da78127ffbf3a15bdba6f4fd78be7a60415b5d1a097c0cff", + "0406418eac385ce94c1982c216ffeb0b26f9c061ccdfd785ded75efc6a329385898331fd" + "a307d41f9cf1248a37fb8baea7f3545bbca707a903966019ad56e4dc810b6863e243968b" + "48", + "134ac4de6ed71106d11fa736960eef2873223aa87b1c5bf5c823de6c78092cba4726ec8", + "12a37587ddf224faaf8dab61210310792d4ccef650c98155a227bf468b7f323575115cd", + "10982c965331cf8529ef6adfe17dc3fde63dc2a557cab451d7c9408a089229e22b73d43"}, + {NID_sect283k1, NID_sha224, + "e78f538b1ac21602b00a09e3db243ef4803b447329c94a1476cd91a88ff790da71421b60" + "092c8a6e55327c7982e7655eb1fd6e40fa9b9fd2f10107dfc585994dfc5bc2143d18794a" + "39f7f69ae679b27dd11ed22040d5e93aa83f71783525a4db0c3fd7b43e57dafd0033d531" + "7680df19c2ecaadcb37ef896c61a758a5e455206", + "14f237cface123b64e8578ff33f86bfd2a8181b9c81f36b9ca31e2a446f0d91dbbe2249", + "0407aa347c03d8845f1566bbc3fa1d66ecb41ed1dab0a402405d8300591a1f3078f9fa53" + "2c063bd10274437c2690ed6df60ea632f3d4faefcc07a72ae8d85c2f999bafd373053265" + "dd", + "0570bf3b42aa44c11603d94e14b524b8cb1363306196924082ae71021707c3138503031", + "10f7f4af1c1e3f9e8e0c95f991c348bce6725f60aa12ee7b398be64728242088a469a58", + "17145a39fa4dd237e31a98daf3974138638b9462a31b87ada3eade6bf7f597195eb28b6"}, + {NID_sect283k1, NID_sha224, + "8a6ca8ec436d2c706fcbec6486b5665b21c174edee7ebe108211c388b1219a8224179f74" + "38e0bb7d6e41ac4a67337b52d4cd9a069fe6c88960ae20be29c8060efd7c62cb7a9a3713" + "6a250e68f253e7f27755df53ce7c570135641ad49b43507e5483e17b919cedffdc0d4913" + "b1d5e0ca0629876c0a551841a0fc2090d2857cce", + "08dbecb26587cb2ed7df2404e680fcfa5bf8cf6a58e87a350a1600211b3c844ca86daa5", + "04066610ce348821a77e8a6eb74a675ad9312b2622ad2e1e6d8dcd0be8b27d8384844a72" + "340014c15776bbd144c0c24bf419237db9401fb7f97a7c4c0ef50a9afd27c3964088f796" + "43", + "0204586a9314bc14bef8ccce8b9ca3874572b375d01c6b4a41c743c16502a27e91a9fb4", + "0fabfeb17bb8c1a57af7af81d99cfb7b0ecbf4e5e4a6ed483aee4be8ee4c70c2ef23941", + "08071e162dfeb068e3cad256c3603e07ae48b35f1bafdb726cf4ce32844e1a2181f23f9"}, + {NID_sect283k1, NID_sha224, + "95bee02b423d2c6e60252da4632f693a2d8f6597b4f9c6e356f670c3a9e4e80063e92fac" + "b6421d0325b99dc150464ed2ec1d0bac72a042b35d56d33d2fda686a75d582d475652221" + "8b4ddd25ed45503d90d3d185cba6cf0ac211b22aa4e1318a8316c369186f7130446dafad" + "64f7966f5414f43af37a87127534060a23c6165f", + "191badec2d28cbbe62c072c6b57eb5d4644d0c0b3283951bb66096cd15edd43a1bbde53", + "040020224b00428031056ed370147c51e68ffc02e7fe269ca15b22310a2974d383c6c83f" + "cc01686568fc4768158e75b4ef0427d8e262cd0638801ab158311749e0f432d5b69a667f" + "0d", + "03b1b6ca5e627f00176b599b68fe54e1b5a272c323a06b55e4871875c0e729c4c79326a", + "1ade251b9360a6ca1b48c2fce0768a01193a415bd23956fee1e5c4c5076b3571abae082", + "0adff25020af4e2b4908a33ce1d75c793934921267b6c4a0542924300fce40fc0031021"}, + {NID_sect283k1, NID_sha224, + "ccd7f7c0e04d1ef9a3c5617d77480bc624beed6582bc28e9e3a369b12144fcd96b735ee4" + "1713f4173b64b28c6102d82dcfc7876e06e76fc497d1d238bf6d85bb5feca630bbd0c0f0" + "fa7c0c72e28e9259087698973ac66244bc6e69c04deb22eaeaee7b20da239ab6333576f0" + "1349c76f594498620933b8969450ac2bae66db8b", + "0ff5e3d66eb57fd35ba4472effd6e7a016ca461e39000a7125e99080f6ab6ef4380dd7a", + "04019d8c1d9aca39de0e627981d21e35a628c35fd4096aaa86f61625fcd078f0400f615c" + "d5052ba2854ccd64407f6779c5e259917b251c9e34ec0d95c05488f30802b82cf4b25b53" + "89", + "16c9cabed653c57676ee46c8912cbc507b246078834f1667d0708e4c666346299c1fc03", + "12ac0ec9501ac91a2b57220e9c00ec6e815399ede94a658c36f9e89bbf1674316d65dc4", + "0c9480160c4e9db4e82b4ad26cb79e083e9e2056e68a2ea554aca45802bbb188389bc4f"}, + {NID_sect283k1, NID_sha224, + "65e9124a2606c8784c9489add2999f4cbe6186395df20838d653b263a207ec46995d2685" + "b55d1874e7ef05a6a3bb5b60a7be6751ad568cef1bcea2debfc494d1e2ece0dc8028c88f" + "1b2c6e4ee26b639c5e81f6448bd25b73ec4608a8e8cf4e0155c29b6f0a62781493b03bb7" + "384c9808529d5f87da6564ae196a365bd282f46f", + "1f3591eec4a8a3fe6ae6debe230d238a6b73cf3791cb735add1abee64239bb100f15166", + "040483e7e2b8f7ff95b86008c3042ab83a4b6a48f15ce1cedbaf3b586b56ab606e6f23a4" + "ef0287cbc8c609426f1665976e8120afb8de96b43978762ed44bea5aa1418b9af6922c60" + "66", + "08165da5f5427b38c447382c8dd0940c3bddf8f048185e6cad260031f7c0a2ffb83027e", + "09034633dbd735cec6208bb6f4455b295b7d730c9301bbd1c0e9f101399f2b3425a13fd", + "0204ec149b416ca3467e92194449cf2ca0f41ca1fde79145f3af856085b298149a3253b"}, + {NID_sect283k1, NID_sha224, + "e793c60fc725fd537d5fd38e9b4fb52e268722ae6bde5a058de8d20db301f5e8d8e1ad85" + "532198835a04b76f27ca3c972be5617a55677cffa8219eb64fe53ced242efe1b88999097" + "9227dbaaa15ed39d3b6be8c5a3237ebe12bd96f333d947f80048463d3859e34f865d83fa" + "f03894c2243a06cc96788ed952e606c2d8948271", + "05af03cdb45961e7ff35fb0146904ddd6c2bfd3cce814073d3aa56eaa9f13b4f7423926", + "04070bf676b9b0db558eeb8bb94a1248bcb599d1e8975ee13cd37dcb78af19307d1b7e57" + "d506ed9bf30c627062b99ff9d05ca03441b6194c34364cbe7b73b46ec9716ad8a9970cbc" + "99", + "192c7b1fa8f221edecbeaa51447818474dd9fc89e962e8e87400938ef0dff432a6c4b86", + "1df1a4f9578e9cae8102aab5eac70eddbabe4ced99b5bab1b1dee59c41b81e392968c14", + "0f2b1319335ee497fe3ebf1891a71cded59704365774e1ed9950f79100e70950783bc7c"}, + {NID_sect283k1, NID_sha224, + "a57682d21cebb48190199e9f57493696eae3a59acd22f64d5ef4729decf6c2615b326817" + "a6bc118bb7234bebfc7276dd998838c009a7348e46431574638dadc48538d6048d572e50" + "d9c5974d2049ebe1837dd857bcd1447b1514b62808a4e7a88162ae1bb08a0f6d3db6f258" + "74c6cd0cd4ca6333f1bd57bd192ef67e4616d182", + "1ec9710ada06e6270720692a06d488ae2ba863b905dd2fc323e7ce68dedacb35fc8c7d8", + "0405cda72b5b068f70b3c431def41b8ca1d4381e8c2fdf0821cfc17eceadf5e3eabf7987" + "b7079ae508354fe31899cda71e01cbc80e5192d24f1f13c954208d2ab8412802407ae376" + "3f", + "04f7b9372a8fed536396f0b87d4b20494786bdb8db77200c1aac1896486a05d3c940cb5", + "072ecde2a8f506f0fef273c8915a9edc29e440d48fc6cefb50e7117492fb4a13e123bed", + "0010dbd6229d770c468f5d8bd20edd6928bd8824b7fc2b10dc45fbd3242191e7557b984"}, + {NID_sect283k1, NID_sha256, + "f646e7334e191c2bf0056d3bfd23f03ef7f0777b923f962519a8399d311b8f68414c689c" + "a34b96871fae99eb7ea534fcd83e788e56eeef817cbfe33677283c736b99bf6a626f9515" + "291e842bf99f694e4e8aa7c9911c591a87d5f112b3d96b064594e2b368e6d1bf1a1cd343" + "d54916a66da22c26355266aa2884120fffb8b94d", + "0668de088c6913640fbefbe6d2c44ab26e481802dbf957044a4957c3c5d0a0fde331501", + "0400d3a50cb9d347cfe45d2a313813fec8b928a9b1defca6ff4b89c4787717f275c6b733" + "7f0762e47b0669f625c39c74d50e2b46875ef366b7c3b005c16ede69a2fba161faf6b3d0" + "db", + "0b24bf54795fa02eb9527f21ead5497a6db2bcc7849a16d206239f830df313dfb7a2716", + "0852d8b6fe93b0b36af5d99530eed08669eb9a25972fbea59f32dafe88b722bada98ab5", + "0e5b08d410f2252f724dfcecaedb37b92a6c09cde646ff6237007f4199068f945ebebe2"}, + {NID_sect283k1, NID_sha256, + "a2d7e69ea381d3edfde4664c56c4cb140d01cc4425df757975cedc995b89640dc016ab41" + "9b137ff25a6a6d64a309b23890439d2ba157262393cf93d15ca1b1ffd19373ef12367f88" + "98aaf56d5544c2f019a4854f69b3d8d320e03135bb7b675e588a5c3fe4b703938fa0f964" + "916501297cee2fd04af767155c7739419f9dbb7b", + "0e6af57cf47de1e6f07041eb5e1a413fb7ddd82f8c7f7ce957eb28a118004930bec4dbd", + "04021e31c4e4d412a261e40483b9106bbc1b0d7e7414e53d7b9fd84175229c8cefbbf6de" + "fc046ff2dc601dd407883af7dc71a6ef4286cd3b1b6ccee4fd861865bff8fb38ad51b63d" + "49", + "08f9e2113d0b223c04e678e8ebdd3aab4816681a9ef08b18a38afecc57d79c971421469", + "0d2c9113a18bd51008fd327a55c214c9584b6f1b816cf3b95e7346080da2cb07dcef8aa", + "19167051872759c36ba9eeb5d620cafd3289e8b7660fc847ff385b5143b3aca38780639"}, + {NID_sect283k1, NID_sha256, + "7088f60e9375ec6a42f705f851fc76cc833c4dcbb3352adcce9f59197c1b7121e7aa661c" + "4f8ad9f4ef280af3a2981e90c01291f7d1cf7d3ae2d96b37fe6975e11b7c6c02b8ef044d" + "1470b1a26b9c72e8c4e7b1dd83c8acc9542e2fc7d211b87841dcceea2ab8128d0ff7bb62" + "2b60faa4a89ea7008f7d55f8f9de675bc4596fd8", + "19f9b63fde8c6aa6177f2a38981505d04f8ac62bcc21007b05615d028cfe851ab9cbbc6", + "0405a3e567b227869f948180547c2713703c90698dc04864140d22b24bdf81b3996829ac" + "a505b2ba535040afed0bf6f9d850713e54013729bc6dcbaa336ebbfb9c461f7ac61af480" + "01", + "051e20545a0a98dc3fec59e4ebdf101c6aa2768f344c1e19424c1eaae4aaf7ffeb5205f", + "05fb3329f63587e8febcdec49f92de88366a9f75d0b9a0f374dadc6e7a62b833753e990", + "12edfabf1ce434c850b58804f1f31f8afb20fbb36ee69b68668e231e4c04fa75e658478"}, + {NID_sect283k1, NID_sha256, + "ffd6044ab991849939e8a29184b4d0ac3e07acb63c7e6b886df9e8254073fa800d5910b9" + "fe34fceb547565a2344eed4de394ce2251ed51ec882ee9207eb7340464c742d9d140fa09" + "64f6bcb1efcc2d13919af4f727953de41b20728ab975c1ae0ce784865f23ed1325c68daa" + "95ed5c932893610179be94f13b9a4149f09833b3", + "17704c1f436beb52f7ec97192e23e206ec09f9e8986e06bef71467c192bad6f0066b3c2", + "040329294a36ceae2b2c56bb6e21e52ec32af11aca9ab7785be9c2d79652e7960c0cf7a8" + "ae0658a89a48fb95cb7028252fa9792d91b989d7cef3fda8ba9c8e4ffaf19269f2a69f0a" + "24", + "0aa8d2e210ae40ba1f9f051ad85d37f7cdea43aad890ef802519cc5773e9a0984fe5d6b", + "1908e3a2740fa04ec0b23c964c4c3cca51c4603e7553461dd02f8319a7ca2ca09d0aef5", + "12d7860d7b438df4653fe40fb9e986cb035b1384464e061bc4ee3bb29aec74d16b0a694"}, + {NID_sect283k1, NID_sha256, + "c9f81c9ff7d80011fd41f2de97a6c1e6a22cc2da7b2b9e4c50e1354c3e139b44529ac786" + "ce795fc501dcbf11a935d4728a7bba44b4e86b5e5990fed4d3e24fa5ab6f303e1842918f" + "156e00dccebed6897c852207ae5941c630014a41696882066c2b296d39cd8658cb5830ee" + "e78e29a00335a99a0ba90722ceca5a2e9a99a2c6", + "0c7d1ac8faa689698f5c6325a3b3f35e7730bdbddabd0693f2bfdc5c838bd62f84508d4", + "040095a930071ce56f28a79a66b751283c756c4f2566ebc2a10770ca60cced6914bc9a0d" + "77046f70021e7a949c7f55b059d4c8e81ee23b13809a35932d83b8398fc8684c5a90f3ec" + "71", + "038ae832c25dcd30c1ee3f5fbe84bd8779c876c0641907695aa598132b0e581ea528332", + "0eb27c86d3ca86ef53aef0465d257e6b681f891a6357cfbf51260dc6e35a82799de0e97", + "0e8207959e8be94e7407543df80d38d9e662106ed68e1456dd1826602c5b73f27ddc901"}, + {NID_sect283k1, NID_sha256, + "a60de761eb32490184dc1d29e21fa33889295ca587b994746874c7289eb9c83e9c7bacbb" + "4066c761a06b65ecd78d701bd41f305cd7eb258c630f3febfbb0a367ad16737b146fd793" + "dab23562e8001cd113135b1c981d1ca23eb3be0fe3e24fe3fe1089caf9fd8f4f0d1f90dc" + "c7dbea4a9e2357793b65daf342b8e6d109c6dd10", + "1a173d158866db0ec665ee632b5fc397893f6a44ee17c348e7452800aadd8ce676e7fdc", + "0406a9369a93e0b5165ac6e692db035495c5cdd6df243d9756098385ad616374ac1e1efe" + "e2032f72a02c36954cd8221126e4eaec02668f454214e4508cf72b6d945e14d9b7c5d404" + "c8", + "0200713a78f58c755db4897f9b7e52057a087816a07fc388d66d34ea9e0bcf2f47e182a", + "11a26ee24610e705a42329f86aaa80d78934b4bbf19314f06eec46067d85c8377e04d91", + "077e35add124574e98e0056bbb106cd28ba8c3bc0c47063ceebbbf2684983a2a0061950"}, + {NID_sect283k1, NID_sha256, + "2cd0320cc73120ef13e83c8144b270c9a1f2049a9250ef7ee83ccc7584025140a51e2227" + "a5ebb824deff55b3affcda63ecb1fd3f337c67c08054dc82fdace0c4bb9cef1bea9dd792" + "635f655363d05903cd6b5ed50ee669bcd8157509366cd85aa40d19593265da26e5641590" + "ccf04672a6df52badd4b99964a8643d9687b499d", + "05523cfacf4ed3b74ebc30f608292e45173001d80cc801f729c5f71fc213b243f041ad5", + "040410751ae7d8bb2295f584ba3d55eda41a80b8520b02bb4e5ca669a1003d6f2829e0a0" + "1e05fe16244f76f0c8b24bd3ca3b53c697097e3ab0e2b44962ea534a655d6c7d80b857c2" + "1e", + "0a634f4cef0ba37c9ab211c57fe6574c67933280c91c8b175fa4164755bcde867fe1772", + "0b9f6946a578ee38433e98478a4c31b67e838939cbf128f023090c4848471482fd1dec7", + "157159e15a2d16da2e913c5ef00833a8e5513ee4e7d6cdc849fd822c59886d0ca3695ec"}, + {NID_sect283k1, NID_sha256, + "a743d8337bdefc4753f937e869a36439da1f8c75e1278c3f6a4a969d93787dac93293818" + "b1cbef5b8636e1a6cb3acaac1e15dbe0841c8001512b689292f3f4805997ae26ff52f7fe" + "1842512a020c448ed01af2a061f3638689446ed5f6bed9fc70726ce4104bc11142de6387" + "3fa7039830223e8f152996388417c48e0c1fa81b", + "09f6bd008c04b8823ccc3ee7d5aca535c211f35e9d9e7cfaec518b98647fbe6d28283de", + "04070019957dac0e9be0fce6abdfc00ca737096ba2d2bea9ba570acab6d73eae2132d7eb" + "060559545f82741ddd1cbb9dab0cd06454fda8abbd9d1eca752e57ec05498b14e4189f1b" + "9e", + "0fe407c226fb15bc63d37cc9840a1a1fb0ac4fc2939fbbcb6e1236831379d367669ffd9", + "0e96e301bf1193dfdd2815597e016e0a282d6e8f9d1d67a7f7e7d05288594f1ea92584e", + "07488687f13c3a2b9ae90536db7868f2bde1529ccdc0c84eb85c53ea979228d1fda7c94"}, + {NID_sect283k1, NID_sha256, + "6a7a3ad614a3a09d2dc5a80204815d0c6471057acc0fa73f3cbbf1801902c3e1cba3c113" + "4a79a8ce61994a94a5afa85ae1a44b2cdcf5153f8625713c872da36aba0afcc5c2f26636" + "dc3f60e04c256a5b023e20e2e7a3f7305bd5b3033fcf05368589f19021f8c9096a886799" + "04b657bbe5b9bee67d6e53d176fce1de9e54c64b", + "150d2812505c82584201e93f6e0cb875d29dc7bd99d9c0f98e0ed20128886e67e1f1071", + "04012c7750172bea15487a05580891aed51bf81548f4b65c51c6c54b990bae8857a20115" + "b003db9e7a17dc8b24ff080d80842f0488f17f7d43a40ce6ffad52c65f5a875b4b33efe3" + "fd", + "0c5c52dfb50b210ae13c2f664d958b2491bfa91ced638f925941234bcc4d66de1eeeb73", + "03887a270eeb515a59a7387d8acbb4e72dcdf13f317a6a93ace5cc98d69a79c64a9e7ea", + "0e922b2d021cd71e213bdb36ce3ebf56a34617d4dcca30fc05f238a1c097e38d7cbcf91"}, + {NID_sect283k1, NID_sha256, + "65bcd77a3ab345cc99b9c1300755288102a6ccf140bc7d1ad25df246ef01fd57a8614b35" + "2033b88cc6ffffe5b38b99ecf03baa365ab5529d6751a3c020d0198561969aade0909143" + "4d84ffe13b46df043d0a61e20a08e9c32b646771fea1b29e202d40aae1c7079873c3af49" + "4ecf6ef5eda855736c9338b4a5c29a086a8266fa", + "1b3fb9e1ff70f94bc9d7742ea535ca982215af3df381b5ebdf1db40c7c849a7978ceb98", + "040769a897a443c41ae7a8c1e45290ef39c40887ab8f4aa3f9ee8f3096921222ed7de457" + "39072621bfa30973da61fb6d363d66db25daf818ce79dd3268ac0520fc99ca7917fa3a23" + "60", + "03fa84ee38587f9c848b65b07c47551e27f15e7a87ed0ab705c99c8b7a4ee9e86a8e4ea", + "11b214ebe67eda2bd6e84c33be05c4373d2536e2cccf152e56b1569cc96d261e50910cd", + "0e100646cbffa016664bb57c1a67108645238573867c0b595c46e6053f844e5482a993a"}, + {NID_sect283k1, NID_sha256, + "ed1acc360d02ee6c36bbc223d91bc1d2009a3e8f8dfc4c3796cd8555b0d2b46716f4c805" + "8bf34c2d4954e098274ab9c2cbacff46a0578a14e77fe104196cbc6d2753e3bb5422b8b7" + "9fd004ac0aa920eea94925c016ece16ed4dea916fd92563ec65692a61b28ee84bef00071" + "20bb1e31bb75b8ecf68406a71af9a18b4edf5320", + "147fa46fccf0805d14c1b84ea59bb8b8283d54ca0ceefb29b5585e7141340c55b7232f7", + "0404ace4c65ce07fe5ec22c560bc553bd791434a691c2d865c52b5e38d541ef191ef4190" + "67076250c829de137b6549d22a12f196629d9d34cdd83758e5daf45fae41872c9b15190c" + "e5", + "18c4f89cc022236a0da6105f19c6661a8325d36fa285e3ca71c1a4af3dccb016cac186a", + "0271b421fd572de8a71d1b18ad2325bc0fb58cabaabacc1f015ee6b14bec49762f1f8ce", + "12e679010ccb143b7de0c3f6c82cf99a961a4f154be6c87abb111cde2d721d864d7a1bf"}, + {NID_sect283k1, NID_sha256, + "2debdb95a21d72b69c545988727366a42b819ca6398a82129c5e3772aea93fac0aae9a27" + "b11969ff0ffb9dc0301132ca2452cd863316cf24ae7696422d4dc68e37316161abc146e8" + "6f04b72d9a27a350d8545cca245b2be43c33bb822dd813d13e08a718f784845df8a4ef49" + "b02529871ec76bb3fc1ba31089359f2ede73e767", + "0fae097ea56b35a517be5480802f450eb832b244558d0cc922cd4a5b40b84d02ef11216", + "0404f6bda2dcb9560174ffa54f13fa5edf17bebd41399a1dce1fe13e82a2b487eddfe25a" + "19076dd375f2c5f24c342a8e2491271cebf5b97ac666aacecc8d693a85ebd2a93eaccd40" + "59", + "05e3a67091b9e10c7fd20fd70d51162e5d78555059802d0c3b133f49b89f37be6a119ad", + "0ddf93ef8797571af3cc9a66660c569445a2b5384f95a12d680c570694bce49bf2264cf", + "02f50d68bda006b88798d87c232f5ed1796c841074f063da03a471e0c00f08b10f410b3"}, + {NID_sect283k1, NID_sha256, + "e4e0c6c8fc01244abf81e139c961b6a6e2d95de5dff1083e8a48b40e3e5b9ed909152c92" + "b1cf2263179629cdf76ae553b58bb2e9223ce4f9ffb5f170f5f0c5ec97294c34a7529a89" + "7e9397f71198cbcd68bb4055cb8cd6b690290761b3b73303f82788379df145358afe28f2" + "997d191d968929b7a4b9a0f6228797dfaa17c613", + "026cd72e6ae19b3f4c53493fba1e8082a8df1fb7da6dc111b47a41f713f49b33f618d0c", + "0401c411f5e298c9b61023fb26765cf4132cc78ed77c07c3e815fd43032cdf0ae8b8920f" + "96035647b4c0807b287014043560d70c9b14651cddff4bdf6d44ead5e87720294ff89544" + "06", + "10e9bc449e8480474afffd20b8acd6dd08344981c4a6cc789c5338ad7e486c526d6c4fa", + "0e81594f1064e018aa3504bac75946d77f9e745673043417a47c0c82488e224cc4104d7", + "111bf8635b1bc3f6cb7f9b685077b38d67160d143ede2bd8b6ae93327d7f55c5317f00f"}, + {NID_sect283k1, NID_sha256, + "04710947b7c90855ba4e59107b919d4a1df22b503c5c4c33b286b6b08e451e6fbef8ba40" + "852f9f0ee62c9217abe6156bed46ad6f0e25f70f528f3a73d099338c578bebd6879d810e" + "6e173c2b0af1f7caacb3531ff0e6a7856e4c84db355d110febdb21c683223eb5990ef203" + "8d462ddb7962bc0feea5f850954943d53041f66a", + "198e13c7d95bbbb6e226688719639bda988867764ffa9b029018b5547850daecf58fe1f", + "04030b511d719217c485866273ffe2996a19e0a670b7a3fb077944a21f63ca2f22fe5a52" + "4a03a4d9a808e8d77c9dfcec6d033139fc33e67d7c8dfd7329c895bfb77f565391c37c8d" + "8f", + "1721f1ad4adf3c32614feb7f8df3374e24f76a32e27854a57dcafcbaaa3082b13e461ce", + "14b2622432adcfed7c2ecd2b52e43be7f611680ceb4bedbfa9dd9af54532911a07440de", + "0ece991128b10399188b18933c0d185e85d111ad401baee5ac376b84c523f130f70fee2"}, + {NID_sect283k1, NID_sha256, + "c62d07bb1ef756b6b2fad355c66b5be086b6dc387b37cbc4a63c841dba3fce65b09d3de8" + "f239e3649382d172f065b78f8a53e0283cf345de06b4ee0b4b7d8611bfce92a7d993b193" + "8419afe817611bc6df3ef74191e7e39ca2339fcb5b5cfee3166d09cd52a1a7d3779722ae" + "c328d326a11bbafb6aa417920225ac453146b9b7", + "19098a39956747de24ded56435fa1e6c30cc2b8088fe9a75f5d07b2f5939c7a60db64ad", + "04068cf5a2023753717d89d12d6861c8411e6081c3158339573dc5598b1700148d00b39d" + "c5076a22dcd4ff4f062eeff83a58d2ce6a1808af8733ae254f5157efa8ea35a85cc74469" + "2b", + "142e4907ce239cdaba562d1fa7305bacff05a75e2927800c7b7ea322b47c9ea47846e12", + "104620d752b73379e1e5d35e5b24a793d7a309685c00f8bdb97bba9876999ed9c763d0b", + "059cab3abb0738d8af4ea6dcbfca6d0ef11b6e591ca109b040347d7d4736724953cd9fa"}, + {NID_sect283k1, NID_sha384, + "e4d8d49c9bc566261d9134d5e237d9cbd6b67d2619a9bd06b7c9c139e091aa10682cbede" + "114e1d4777d9cd67a16b7d64278e99eed62bbf25ec5a5a8fabcb0a3468b0e73fd02ac653" + "3e04b1110d29da3e34f33eaa228b78341b357a5d892a61beb2168c3bd5e66bffe3f2080a" + "1e246f55a41ebf9d579e188d16991aa060460d6a", + "1636bd2be121e07ee83ac5e880cfdfca6a56f2b9d0badff003e872348368c7c2cd96b6c", + "040007acf46ab68744a9baaa33ebf6be20c1c093242b0056bb9885d93a4a9bb4640f17b2" + "ef015415c1b671e98f00c1fa364bd69cf998c0ae140485159b0a341994a4e27000e108f4" + "fb", + "0d0d4886c3500bff68455c41f5840d0313f33ac0155a693d27c66fbdb12791c2b5f8552", + "0256b8ff7d37fff7dcc8cc4461984a9bd9661643fd3a68d07fd30d426d10b8c7f4dfa34", + "1f516f8ed4372780380a798d2da04d691aec379483bc0d10560ca79edaab453d3e77585"}, + {NID_sect283k1, NID_sha384, + "2d1358fdffc14630fbc421b443d3c22ba10ef34f15c6c5bb3c73a9b8714e4c411de69b9c" + "d6628fe2eba5efc4862af66ff916505023e0514f564164b389ea422d0f1beb92adcd65ba" + "f43556614eba25e43852ba65af78f62d64b36696519ef8284ef7316ea52c365b99f63a39" + "e6701f81ad520d7445cfc0113c38ecdad4bf5b7a", + "15e5f555119c19b055b15b0c0d2813068bfc184f864e250b202384f5728bbbda1cb0f5a", + "04013cae2f0c3ba04d039c42cae27de4cf5842a3e24be35d7a3cc7f05083f02951cbeaa6" + "3b05d69ad5b7d64d6b19772a1794562b1fa5c2fea03909bc509e7d47b0e8144acb3c26fd" + "dd", + "1b881d95b7de9aed9fb5ff0085ca4da2fbd413b9b947066c98aa0257142c9000bbb30e2", + "176f9e3c9e9f98b2f5f352ca74310badf9f598f4d42cd2b26e5ea0999ae31e3c678fad2", + "1f2dba4e17470cdf7e1815d30771f352807b38080d44465f86044f5969b017c9059daf3"}, + {NID_sect283k1, NID_sha384, + "d6336faa5c3e838f4fa58626eb353d4cff9ba8f0aa0e6c3d0d850e8b22f5b0f047afc977" + "67f1afe2040b85d4e401ba688a4da7a0caca7fac450899092c4fea789231ba9b07782010" + "720f45d16d353798867dd7fef4a324520014ad5cb32684ec50cab742b750e05db040ff51" + "140e8d740f6774a059feeb493b10d8ac722f23fa", + "190c8f17bdd38669e345440d2c7631d67cee9c6548c4e7b9452377adb9303430efeda0e", + "0403235a8b7981b3ff376b6b0959a42cb56631fbb9f82f1694b9e273e6b7131e758fa0d3" + "700444e5747420d7f5ffd6119ef43b998d4ea4a58da13ff6fe7f241ccdfd4b6fd33aa93e" + "3d", + "0b2a690793107257d7bdc37c492eca48c4c9650ba0d657e6eb62042b16169fbe27f8984", + "168a83fcc67e0c155f1fa2329363729872e254f2e0c3ef85f3b3c84fa3406de4191b6e8", + "18c0f8e6b486e6d7d16b4103506d74bb2021232c0b1638858295a63ca35e0d6d26a6266"}, + {NID_sect283k1, NID_sha384, + "07384a3f650bd270b14ca388a441af201b7767a2d47e9033f50cefd3af8257ecb38f5267" + "e141cbbb2ab7327d8fc78cf27198ca3543d39553e178390bf1b921618432ad895e4f8153" + "783a7ac22f4ca3cad4560e64f1ee4a7bcad05df98ea49a3847dc2143b27c243e48be59c8" + "69a547988e2205358e8db98b635ca21b745df4d2", + "0dbbc2a0409ca58a9e39e33b95fdd15080443c1dbdb5874bee991bd1b127047f08ec9f3", + "0405a687605e54e49e3c40fc5ee8fc014a62d72e8595280a66ce7d367aac2df4d16b98de" + "b3030abd03dfc224f459dccd1606287cc30016be317c6207532a0725c957ca5fde692a9c" + "43", + "16bc5aa29cea64ce3297172f36fe4ce820c943908c21c9967697db0cd93bb8a12e42348", + "1b1fdf26a6eb2d736b8c1ab165af2ac31a4c206c5410f61ac7805a68992dbd62b457708", + "14e9a22ce703d942a4fe2e84a4c1c1b44538a33fbfe904bfbb17af6490d372acae4668e"}, + {NID_sect283k1, NID_sha384, + "824f26dcb4ce0ca020982814d5c727e629cbeeaa818c49668f8f6d743f0d0ad362b24cba" + "c48027898f386889ca5411d7d1f9afc69493b1d9ae4d7b695c9fa0a30bb59e6be2cbff79" + "231767e96cd8bba349fa2f97955d56f05430ab4ebd007064e3d5add94dfe255b6deff196" + "50883ce9966e1a2affaf84d9540f65c87ab1f936", + "05495e6c59ca1873f36b756579632fd47f9fb95b64f52589d70f2739aa6a3bf8cf8c198", + "0406df40d8259be64c8ac64a28359290bd52e843f330a68c2b605ba4f777d7bd7a798e93" + "440458667cd7021b291c3415d64f9b054db71d3fe20f232f2a2286aede89ddaf1ee8c68a" + "a0", + "138f05303ea63bad47c4c9a9d43c52c264725a668db5b631d9892daa1b71f62656cbf73", + "05e35c1f3b30b43cc9d60bf8779f3b31e053de0a390da50ea676dc9722a17ef00d68aec", + "1691ecfb826fef1ea0895242129cc3e9a14e1f84fac49d62ffc0a3455ad9c97becd5980"}, + {NID_sect283k1, NID_sha384, + "07de1e4bb9be15a710a74806d4447b093bc08ed04392d1bd5abb414f5f4b4d9d43520d0e" + "46fc81c2a97e71086b28e53242449ed37fd7ed1c5772dbabc430fcf82ad20437b38eac15" + "820421e51912325c872894452c3f8a10ddb040b35308e583c155c3707b52df467c4945f4" + "e1071126ed46611a3253c297f5cbca9e27f58448", + "1724987c9b698519b6c225cf1261b77d0300045e5fd774dcbf13f285e6bd74512cb7edf", + "04046adc9bd5f0cc0d8bc64f4ba491eae3b7f6fb4229bf94b804807c6137787adc0fed4b" + "2f041375e2c89da41af84529811ce7aef26b983ea8add6e37c32f2b00bd47f23f25e5fe1" + "94", + "02ea4ed0e87687a50dc3acc7f4c089040ddd367d1a3f470a711501ccaad63c201b87ea6", + "1be198a1b6e91453018513902f0a8a085c76a2798a2a0538ede30dab65afb6b9b0496d7", + "16342f87a813780aec006ee218a615c4e1c78c0c759d48d4094639b5b4c32a9658c4d9a"}, + {NID_sect283k1, NID_sha384, + "1edbbbe71057bf7d0bfda922be21a3a4dff57b017ebf6fa99651246cd173bdc9b11eefd0" + "48ea599c1f98e907932aa04f64ed0a007831f30daf186c88807400970904d6090b2cf181" + "e0f65f03b4234aceeb420867812562e47f452152bb1ddaaa48487170d06e47c5e9a7c0fa" + "a4fe494663d2fec22f7665ceffffc214b21c6b8f", + "1a5489091cfd51a0970508ee3e8449081ed175928ff8386592c83043a7911bbc2f8778b", + "0400aa1562c94bd16a3f8a1d6c465908ce3b83ba6711e7d8b0b9353d3c55d13dee213aba" + "700103a789854f63a139e31348f1b2608f1e71c88b5d42809f2460642ff46a470ad85735" + "43", + "18435a6d3bc02b3019e1b156ddd6f3e1bb9c5af70d1a2cd2089e677cbacc21624ec8947", + "031f561b668aeeb4df43a3a34716c4e67232f56959104b7237b26e3c95dd40e15eb076b", + "0f2ddb6e6d18a7393425c16b3e5a5aa232cc48198d63e46a601cd3ed221a8427178a0bb"}, + {NID_sect283k1, NID_sha384, + "db5cf1de38a5187af11c1f0f19a36db52f8417de997229e83072fb51a3b7152a3b383e99" + "19c1b8427582e53d4e7e25433d46cdf01492021c237ea0a87d38c71634743115a6b2aba6" + "6d3faa8003158340a5078171e0bd55a6e5d8c7fb2631a31c1204e1479bbfe79ac70d5e58" + "23af502922a900576f0088a33e42ec3e26c0089e", + "1a45ecda0788fbd7cb7a716dcf4c6e83d4148bf63ed58078690ebd238c00329c462590a", + "0407a1e2fb4e8e79e3946086fa65042362418db0dce51541121c73972a435aecb99f6340" + "23006bb02df9899ac3f207732fa7cdbc36a60c17592af7ce06b8df4255110e26a02b2318" + "00", + "1c986f88ba3d5109c0afa2c213dda8df462282f024cc8efc758a5342a0de91c40452443", + "1efbd9e0d912e170c9c55bfbdfa6106fea4a4e013e7dc26628a1aea4f6b806a51866003", + "0b1347f4f85adef612f5c3a436cfa59eaced5c7cfdbb69444936d71812a2ab2461bbb5b"}, + {NID_sect283k1, NID_sha384, + "4adaa850eec8272d25d76600aacf2cf66e754f6c5efa65c55a2a31b7bc69437d9a7e47c6" + "f51c5da93895a45221f5f92c2e20ee6a95eed3cc7249688261a35d82872284900eb54dd1" + "df6024ec48963ce43e8ed8b8cca8ed22beee8f0aadeae53726cca05443316537840ab824" + "cd1b595f36064e9a19333748d4f4972178e7f5ae", + "11461776c33f20b176dc8f2b0cb2446a9b69e55b6c7bc7457a7fb4639116b452b79661a", + "040043ba7157559659954ac58b44f19262bef9e3a00829c70af66d07cef08ad899d7f8ec" + "2301e8dd9c947b5a6decd1a26fc5d0eecc9605d22abda747fca038571bb37036d9034e80" + "61", + "18b231de7fc499b461afed9b80f4405bc005011865cdfeb25570b7c0ff79b6ae94b6ce9", + "0fb203f47a4e2e9365ce070ee7fd4540f3f7e9ecf69b4400eeded0f5a7bf6e5a5c6d004", + "0e635dc65233f27b8350db22b90a3b8611e6fd1b3e0f515e42fe8788b1376079816308e"}, + {NID_sect283k1, NID_sha384, + "11d212a99c39fb5e4ca0096bbe6c81ae1490e1b8e07374b4e773bee4fdd24a3c13d65391" + "9db663d2c32aa4db140c4ae2d472d4f878946e527ad33b3dc93012d97458f96cb622ddb5" + "6f1ce7c2474ad0d5291dc35545de47b7053d137a8e79dabe06757ab53e26eaf751111bd2" + "7690e57ffdab5337eb6f81889e9d1b1ac729012f", + "025a65f627db2b4d6cf83c5b0c00265b9b63f7656c5e3382139e4992bcdf3cab502844a", + "0405a35e7e0b914a3e01ce3a885192d2ecd27418e09898631de122db0c48e8b58658720f" + "cc0009eab47197d5f56927848855b6ff96db7c36f810ee7c89b305ef780ba8c993d65537" + "ab", + "18516ceafb61cf2c7e7c511a8918bfe394c7fb2fbc40fb3052e156cd4020fc674684f84", + "1892ac13b86ad00e38ce2427c8c78c93b08605a75ca22b3658132dcf9d9df7c4b5540a0", + "0437b33615c16a85ccb8c4769ee7c5f94122d31e2b5fe66291b401fd90257ebefe33818"}, + {NID_sect283k1, NID_sha384, + "9e4ec74c09528fdf3153a0f6955f20c70915ff524b2e19c991ec4c5b41ea9185e3e876a0" + "2ed6f27c9b3479dba951bee8680c4c99be1a626808114408856994be7444ccbd5ef9859f" + "a479b1050bb836034e20c531b4d618f5843fe1d4b613a731895b489a2363f3f5397d5ff9" + "64cf037e9b11e3ff5e1c3d403e5a46b8387c1241", + "173b28fc29f10245221a907778708b3ee62e0480aa9051d4c3eb4e8d552e6aad5509943", + "04024bb9bdef975af892ddc1bbd31314926a9c81f8f1864829edafdfe2744e793c100c04" + "83028ddde61b4361ced9c391c86c28ece9b902c48d14c61684962007dfd69d0468dfd65e" + "7f", + "199af64f79ebbc5b789d4676a07c224e4f6fd33285e5a555ac90cf65d0b669bc58ced4f", + "137d746d515b90890a413685bd9b26a1c05efee4c11a4b40bb621c9fa2580c46c20a687", + "1647f70ab7c68a0f522420893a466940ccf79067b323d940369f8b8694ccc3fc0daccad"}, + {NID_sect283k1, NID_sha384, + "5fe8253d2134c434cb0866796013722e82184638b024a5a30938039929ccd8415c71f71f" + "239c5c5a81f7a9cb493dde209f189bcf766c17c6d9589cd0c7de7f07ff9f24d2320669b5" + "89d084f8a8ea71127b9760b7355b162616afb34bcdcd416f1a062035102e29b70069b2b4" + "dbf70179b8d60bc2ee5a455efd40194533bf560a", + "0624616adcd45e1fdc6cfeab2b17230d73d91fe0b39f4664f3c6891554f9b8e238257f7", + "04010917ef84bd5c0b36c97cb5586d3057a34f2827f239cab2af2e6081c5bdffd48dccb0" + "b2078ab47fe1bd3e28055c688c78e617ddcf6c5060123e9d65c562df2e94cac973ab3b18" + "07", + "0795e229185bc1b3d6d69b08189fdd7a822cd18ac55971e4b35e51838bf12eacbc50e2e", + "185483378a162b8edd6a12f44e3aa4ff829630fe3a1c9ccc66e34775f69bb6a94282489", + "01662cde6cd497be7966a0a77b0626ba3c4b82e20bb3f2e839178a31aaf440aa0e059cd"}, + {NID_sect283k1, NID_sha384, + "db49891838fe23f0530abd4a4fbba5ea970afa5747f6a0a10d2cf4d841581ea2178705c1" + "203f00cafec91d0a72d25448072c9cf7d7ca5580b39f8589ec63128faa95cb0689574a6b" + "ebd515049a1eb9699922cde0366b5cd58aa8f3d3e847706896f7e1cac667fbfe94b2eca9" + "e7be79a810806ca4bf53f219bb30532ca2254c11", + "199757ffaa2c59e198d66824eaad37cc42d49b2e241b6a60382d05e425e800eaaf32470", + "0406ad18bdb3e51cc053f56b9f9c35e2d6eaecbc9749f41a9ffbf54634838d7745ca0648" + "9005dd77c42b31aebbbb46277176df08d81919ee0d9ddf14c3e4c0cccb207bf649c48fc8" + "b9", + "109d6332ceec5ea211f642a746a6ce055986b4a2feeed7e847904f7f411bf8361318d92", + "1a49fe690a34151056d290790a6bfa7b70958e69e9baeb30c55efc61dc5dc4934f2fc95", + "1710a4ba5b404d65f66a8fca2751a920224db0cc0266f7b0bc054069ea4cc51b1f017bb"}, + {NID_sect283k1, NID_sha384, + "29d385d09c1142a7c181fe4b6e6132e414c15aa8605b44208c0399464613b966edcc2d46" + "cf203a3f85d943d8eae658695dac74366224a0d0348083bec0106f5eb8809ae8d07f792f" + "dd7c48fb1a25d5ef3bb9acd40b20c61c821024a9acb2ede321bd2d0dda849c22d76f421c" + "bd8d51565d3c4266f666455ca1c0c3777aa44107", + "06e51381dcf21050aef2e9b97e35303cf3bd91956854ecf9b6b9827871d2efbe8201c5e", + "04052fee805d7938b8b97459b9fcb4b80cbe29f20a9aaebc07ac019539a4a966c5ee4175" + "1d078aaae02974de6530f285b4bbe87fd5d0c9a2ecfde5fdc9a3303e4b988f673c778004" + "bc", + "0b426ebda6628125d73efd84e6bbab6c4c8fcf7fa29ffb3c8d6b0a861dbf81cd18d088f", + "1270045e963b59e4a4f1237c2240a5b26a7ba8e28ea01326fbec00e5d95d40e859d88b3", + "1d721477ee1df1388e1b7f92c048e5759c060ce1291098a2fa647974a62a258a189b4cd"}, + {NID_sect283k1, NID_sha384, + "774c1cb8fb4f69ecfb5c7857d46415568d88f1f9f05a4bf64a1e1ff6d64aec16e1d09292" + "010d1f067c68dddbcde06ea49be2ad3838053f0b9c0c2383edc451ef0188565118e7b3c6" + "6a4fa372b96633dc8a753106283b02d0322df273d58cc9bd061ec219f1e1a9c8ca1400e5" + "e39c1b2c254273377dc98a1a2c44e5c2a5b89167", + "018adcc22cb9a2db64bad3d60f1608c353e091637b948914115ebd43679904f955c8732", + "0400630bdd8937e961d5396f9ea5310123a340ba316fbb7d79bf8573f27a0065c6fd6f88" + "900737a0ac1116e0e2979f973cd705588a71cec5e2a9f22e7e81fc61a4375624f55a6182" + "bc", + "10a0c04762d02f9d3014bbff287864743426cee14daa43b22149ce73d1ba609c0ba6be6", + "0ac29b041a6b95f9ab685470f50445d416df5f7ee06313185794f2b542fcc00606bed69", + "00a4241b97b6ccf0dcd533a15867f5889349ec353395d47e31c9eb6b8785736b3e285cf"}, + {NID_sect283k1, NID_sha512, + "c406aa4295f85c854b4db2de5a7a2defae53a319866921a3673af5b48c85ef22f6eb4cef" + "892c790d8e64530fc20c729b2821b5f5e515560b1ac764106560c3a6a05657e34cd6dead" + "fe2884bd288cef4ca92e1f25adde7d68a30fb0a1b3678156ced62e466718e68e9d67099a" + "d82613b8d06bdda1a7b867c2455422818ae9eeac", + "1898276f159c10d92d8d4b6ae214d68c72792a4b5f1f79936ca3c063dc8d9a88be439e2", + "040394cf9bb273923c88be7a1c49412ab8599e0cc5509926102c122326bc0b34243f7d1c" + "f3072330906f47e8fe95f63d0f0aca1115e77fc702a923c32a16505bcd9021da05fd9cf6" + "3b", + "058772fbb30227a136de616ace4a0334be0996d60e9772ae9bf672b7c38fe3ee1b24f98", + "10e0cd3fccd1728e99e2294efd6dd4797b6492ad95a789aab7fbd177475a047f1e5d38f", + "0c5e0b2d1991718355be14bc57e2d6ff9fa63e0812b9adae69f64da610cc6cbe36fe4c5"}, + {NID_sect283k1, NID_sha512, + "cb2809152f8258660933472c06ddcdb65f6d5221fa29d5b0efec9c2a7914dbbf9ce0a468" + "ce146fb333d26f510a87a6bb01bf8816756a1b5df81c5f65360957cae84ba038e37e8877" + "7580e91c34e2f5aef4fb55af7b81ad28aeba05e0b1c64a15381a6719fd2c16e38a441516" + "e1b394952d984baf9e051b1dc1bda2e12f8ba5b8", + "12ff37c808c3cc029a9cfbb67a5ed21f3bf362b49270d4ed0f1e38fad25ebd79f112a50", + "0400cc00fb36bf62e777a9f6048761e53633b92866158200c43900db95aa1342b5760290" + "90055d7e57221ad939f5639282cbfc203114ee69baab4fdf194f4d2a937d8a57b70b54a9" + "07", + "163d8eec726d01a1bbb19995777919f68689f7c2920f3549fef966593c4fb012a5c3a1e", + "0cbf5c3bf1ee58869e1d3c15a05c23217f1c252da97f79334bc79efe3f5c62164669ac9", + "1fd51644f471ea497b0560b65fdfa2fd0a6cef469021303f97753d22ce1993d1ae5b96f"}, + {NID_sect283k1, NID_sha512, + "e060af96d4a7fe512bbf26be9a27bb6a8ff37547d4a7bbbfa710db24cffcfc760dac120f" + "89f642880db2df6307f9ea5441d5932d49762d182b29d8e7fb067a61ab0df622f75cecc9" + "17e27d0326085d34581e052c85f50a37713e27518aed7c4434f86970e00a0a4b8503989e" + "72614131b7164c1bdc82d2b6aeac0787f9838476", + "02b8c1fef9c6def32b5f4127273ce384b6add4aecec957c1662f52334f5ee97f49852d4", + "04036a4fe1d77bc431012d25ff49fb5468f975353be70e7507d71966a0ef433df51dc323" + "24058d705cc883a690641f0ab85af4959ef4258a7ba9cde36dab77c125a1de1d39536658" + "4b", + "0865f59502382b324e1dbd75db150f342336fb19145fb43a733971da555ac5828a3457f", + "1ccb2e56c02cbe8038bf78dea256704ee6e51054668ba8c2ba11aef4ac6f9320d46ee8d", + "030e662c0e7d47cb3b835c63599d0c9c2e77ca47dbecd7ac834c2babeb039eb630cd0ef"}, + {NID_sect283k1, NID_sha512, + "d235c31f0a82957a087c7597673970aa39321d4c2640685a03df8388b5eae4825d1fee29" + "926f416d5e62a2e9ca1ea7cefffd31607e750fa9675983608e0f8dc895371b190574d065" + "c5c0c23ffdaf49e65362914363a3fffbc2c1bb487cbd4f69ec22dda5c7dc3bbab805c81f" + "aa85787cc176bc0e5703924f395d8c9e7e7701e2", + "0afb1c45e9a9f02942b8e04da4b815498454dde6643de186625a98b3c1c6993abc8bba4", + "04002fed49c59e9d5c09202a5dc29d8dd527a870a180feded66ea6fc94ee094122ae9765" + "6b03620820bdd5910037f5877649be38db3571a9c6ac632602d2013d0d5abe1f00133f6c" + "de", + "1fe749d9916f11100af525ee343b3b74a493f92339e432a482dc8e86ffb5affc4630037", + "120f6f13331cd4d1a5b9707483c74dc0722452062cd4534e94cf40840d22ae263244a51", + "0bc2e37a481478f879de612cf4a833f7e12b8df33f5b0d6ac5f5aa431678ff053e2bc1a"}, + {NID_sect283k1, NID_sha512, + "1a2559777a5fd8f269048feda82c4d9fceca95803f84a813789d6ed070422240e443789c" + "5231d63d5268ddebc060dfb99c4eff2ff115d2984d8bbc5c05314562ea6864fd543e7e0a" + "3b8572c017d8ae3563027d79bbe164d40a5bab354720e45094b9b26391ceb55339592fc2" + "f10b97dc9c2649f7227648f5cd2fc46d78d31c0e", + "0ff537d73a4da0ae3a4894016b71dccef3bc886f3d24a5abb7dd96cf8fdcbdf0fdc5e51", + "04001bd0537dfb29f727f91fb469c31164e1bb0ee192a5b89b880f3fa40e3e5437f0d2f9" + "e106df9bab2f9198494094a63f2ea091f60108449f0741806400694a93702f61fb0351a8" + "1e", + "0bbc511c6e1772ca6cd1cd308126c18c5db498055a4b3f1cb0dba3285f6d38b083e647f", + "1ba756f3c89b732398b90bfa2f92b2a77159c530a8020b75cdb9697c6d75c18d36040b4", + "18207cf326bfe97d657ac4197ee5c20c75431ee552681a92a5815db0d984fe597700bbf"}, + {NID_sect283k1, NID_sha512, + "658c0d3f764bbc952fa55a258bac16a5bb5184bfa76cee06baf9ee6b9ac3f116e08bb240" + "6b1dd4be487b057f3b29c2043ebc33019b2017c4deccb86f50ff15fc9248ea5fb6426112" + "0b1960525aec3cc18827c23291722c5add8a3761ff8516c61956c62b8cbb13f3d92bf3eb" + "45a70704c01bb3625d21c38ffa83a6db086ee968", + "16000d2e879906d1040b32eb6ba3caff700e5565871ac75f10c5c15b509964bbe5e14c7", + "0402ba89255d1c89e42518662611e2efe3b5e3b8043926ae9c43974ee2986185269246a4" + "3302b87762b9ada81bde958d1f9b81246f49098695391ba3b4b3b9ac5727f19fe42fd079" + "46", + "14e837476e628007b2df21b5035a39c24cd4869bb52dbbe13c9666ddd8a7e3eeae29f65", + "1b5091fc755c0f908ee13ef9bee40dd16a5710befd1e265a312e595842d52cc135fd722", + "0fa25f43c3c074d702e45d216e3704d942e9d67b3c0728645ac6c53b9be7300061e5fe5"}, + {NID_sect283k1, NID_sha512, + "4f10001e3517c2c1f973b555f4827681e096d860c4db08f1f4aef8000c9c24bebe59f8bf" + "3d7d3cac959a1a5477bb0ea43f2e746b5d14ed48a58ef35484b0ac786d2fec669f945e84" + "6ad73e6b77a9e47012a951b398941566330d89125eb3c1fbb2f06adb951ff5f047d102fd" + "f28b5cadb4a3e1a10412eb3474d2ed5c3fce78f5", + "019528d505bf0584628d0214bc857150a929d3f59619bf8f3acab545fff0977c9bcdc97", + "0400cc8863e1443e61fedc61abaff87d80450345489728d78c333b36fa28d8754a29cf3b" + "a100205ae70c35396c07f9f96aa7c59cf8a28aa2a365b4a1b68e7414d8c4ae5220c8bae9" + "ae", + "13d555426101fa3c239b7830fe0b6cf08a1c01f9a991f806c84baae20daddf5dec8f868", + "0af8bd9856dfd783217cf81b09b464614aa824b0298f35308e6427c679607853eb66c7d", + "0e6c1933d6ce25d0a00effbaf1db2cb2542cbe7521330c34286cf3bdffc20c001cd7722"}, + {NID_sect283k1, NID_sha512, + "c43ec3c3232cae59bdea7cfaf18a4672035dbd2b8b6b1b44ede376b36cc2d8baeb921e41" + "6aa177f5977da8bf1d713509e5251278b6622790056271715cd5feac58bee5baf50b216e" + "8eb886279c5a384cdb696470275b7487fe9ac4c506706f6b0f9809d1ccb102546a4297d2" + "017c2a8df9f02f30d3d1bd9aebf6a92a02e0d202", + "067795ce117bc0a389397fc22a01cfd9422cfbfb5aa44131938a8c45e48e1d5a718539c", + "04007924de08acfae6260009cc2f02daa2fc2a809e6ab4cd8858a9e9c2c15b17e29f1bc5" + "ee004f36cc2d36df63474a579b96f6e59b890782ad8fa865efd80abd798ca2938bacbf82" + "12", + "1bf3242e75f8331fe70113ec8e14ad0814850bb8cb262c7d0a44ca69de52d32dfcabd0c", + "145148d59c5be2b6d39dfa33e904c161456822ec0ad64b9dc52befbd6496c9303fc062f", + "0b75c3c404d694e086c0f5aafd534e7d8596601f675b2fac9384fca6084711e35149f9c"}, + {NID_sect283k1, NID_sha512, + "9b7d675a3d2cdeb280ea28289b5fc2a3ef6b535ebee8ad242fb031e2e1f364e8ee806568" + "b2f8627c5a5b4f51f4f65c71acdc1152c08b9211b81907b551e0ff47f5a6aca45dcfa06f" + "09bf195d19d7b165b52111b601fbd97b192f62465f8ba20773b1599c8041e91448eac7a5" + "763ca0628f40768324c5304e1119ca6a1fdb0778", + "19269dbfe4184249952a651a507584746c5b62c64cb3b17e0158aaf4d086a4afb0330c1", + "0406c60a475f2a3635fa523e1b138edc36f51e94a34e75989c2cacdf8949115d96f11ae7" + "520494d5e23ba9071b3e52c58b1d0740cf90cee7b084b9ef7a4a7be8aa47ce7b3d97c8c5" + "1d", + "111f4dc771b6ce5cc2f42172d3d70fe77c73683bdd2ea331ff711b7e9d8c3e4f2d7d6cb", + "027f224c01847c52ebc180ae81009923ae3453be1e0d94b5c2934603577f36653ecfccb", + "1e7b771631e5e72b7ddfb9c73f684b93270269ba4216cf3926e43b2ceb49756e7e7e0e6"}, + {NID_sect283k1, NID_sha512, + "f4a08daf8f66ce57a986f14b918099bcadcc4308bcde7c169ce8536a40d94a928cfc0968" + "180a2c2a242c59df73ff79a03687998c421cf9a0e661630378779a4744ae2a6cd24ff61d" + "7fcd6c11a4c8bcaf358075e96f864df0998ee98ee393b37bb38747b70bb7a208740959b4" + "5174a60153ee566e0f62528e9a5e4466186fa650", + "03835814de0d6441cd80a44e40350cc8bd62ffcc81e939a4410bb9c9259e30463c453b5", + "0405ce9f6c979bc1d6bc41f41095b7677cc184da8918265a7f0e5b9dbece2ca9e0667cfb" + "ad039a395aeaa04f5168de809164285974d306e474a610d89fd401c375c9b73f0d23dbbc" + "f0", + "0b714d734d063aa81a389be69c56dcc23bcced3517e330572f79c769645e7dd2fd55c20", + "0e4d4494f91e79f2b1d1c0e22ebf744ef448f57c951f1b5f4da3592fe60008ab00f5f7e", + "02edaa4d8731b598c24b993dc5bb4888ea3c2dfe2807daf88170982667e69b76a8ecfe0"}, + {NID_sect283k1, NID_sha512, + "864647405c70939fdb4c026bcad53218ba1d438d82c9138f0f0ecac815dbfb242307cca5" + "2c84826cf6556c51082a23f14252dfaea43ba229f7493db2bf8ae9cdb0228dab9e25cf38" + "5b504b92cca94f813acceaa1f18de851b8936c4dfe9e4e17002f02dded6b4c231ea5e614" + "ab46fcdd637b8c6193e8d0c2df1b3d883b97e1e8", + "0aee83dbed3b703cb6e60d51e373eb20e298ac005fa6a572d02fa1e6da0345558ad2a46", + "0400dc25760af992a8ecc108373281bd0d246f95933ec943f6346c1b2b941a03b33951f6" + "2206e35f02d225ba11d2ed7ea392898f78ca0deb2a47871eba6cd2be7440a410d910097d" + "e2", + "1df142187f8b27f4888075a3784aebe0fb7d80b0b6d3497a7adbb88cb6bd26cb82109c4", + "05a530bf1135ea6d599928cb0383f5d391d19be333b1577ee4eb6f2a78b54e4aac0e09b", + "06f3033cf392f698d1a1141cabf138c411f4e20687920f2915e17e805e8657a887c7953"}, + {NID_sect283k1, NID_sha512, + "c87c8f3ad5c28a027b28ae5021dbe8d425f74181d519451f1fead7a1f9dd102fa6785b14" + "7b610610cb59bfa91fa363bb79ea602a7d7e1439f874c5dce748e5c320560c2d9676f3a9" + "48754c72b6db249478b7e19c9829ab4de2e344535d3e0b7c20c272f82556a280ef491524" + "b255c4fafb9c8ecb87b0149ddd9d7bf6159e3337", + "17b65c66514019ff935e9d571a4e68e9ee4463b7b9a754b93f4f7741693f4399879fa8a", + "0405bfb704629596ed05096783e49864a11874f319b4020917f1ba700ddb0606e6e72c17" + "93069194592be64c33c2f63771af0e4100d060e9750031048002680541815b311ba8f7ff" + "a9", + "171b5c698175300b95dfd5ed8d3fd7cf4e19105ed7193b6013103555808743501ee8c46", + "13f001f287dd5c7ad9af8d0105b47caed66ede41dc1e121a602610ce20e41af91cbe586", + "1433d5263d5233c40c0ca526b3657fcce8cb88ee65105b5f5ec82b26e12bfff11c8812a"}, + {NID_sect283k1, NID_sha512, + "ac7da7611e2ade20aad64b418a16e02e79ab4894d758550210eb10013a9b5533132be701" + "f8843c840807c4167c38d21dff168d3baa65d5bcf285b73dcbb75819f8d7a20a849de335" + "e19bae2aab2ca560b93d340731f291599a5b28afd7737460d291105cbba6d0290e836f6f" + "6c1113d1b2faf90ac5de7c64e25206d79380a4ed", + "17d2071f39ba35515a8ec977ddd36ca15983e15bcda626f15af61d87d58114f4c80a8be", + "0406f09c255fdaf78d7d341fde4586526fcdec34a28448c7fe65685a67b6c33564ce9249" + "a3024ae4483fcbe3f823a7ce53db96ef2f6c68670e107e68cee4f358dfa844112d6b2144" + "e1", + "1403078da10f55724fe7b56dfc55990507307386ba82ca8f6340d33769ab1f6ca894bdd", + "0a54a35767a1cc77b2332b04694404fe5a31ed8851ccc2abfa5542b0f5acd9be9b1f02e", + "0577e0a1937172a6d45177c2b328d72f75a08a8a774a31151b89fd451d531348695d870"}, + {NID_sect283k1, NID_sha512, + "5757c472fa2f81430dd920f39b61066a28c870b80e6c96f822f8f19b398c3574d159cc22" + "120454dcd7e97be8211916e4bc8db365b2dbb99a6e597d06e6645046a0abdccbd06741e9" + "c0eedf33cb78d78a540c2a390719acc498331e694e6b0118cf4f787b51c7b7237458a614" + "9d6dbd0a08bae8097e919f970fde920485e9a0ac", + "11504659e12235855fe55220287a101e511d39a627f8a0d414446385d4a88f31507fe74", + "040192fb9bcd157c7ef385d48470c3173ccf1ef9650da7d680d8473d45ab2064a073232a" + "c3014ddf872b711157d121b0a61b88a7eeb7cd260f1f82ec5f62fa2681e28c7f2640e305" + "e7", + "17e10962721f041946bb5ffcce724c9f284b1c8970f974a069c36dd4391adb8cecb8bde", + "1546450d25e2536aa14b8751e3b3e7eeec8a6c1cd967ba0f03e6bfe64c0a59072280636", + "0159c8d6499fcfe8ac7b2e84990a714d7888d883c16c016c4b165f36d62c3493afa67f1"}, + {NID_sect283k1, NID_sha512, + "e350383d04af0f4081bf09b95d1d53040e7acc64e56b13b653df31dd119617b800e0cdfe" + "b935dfa5d94f1d7814688d8ce41021810958759cec76560e1e5c0581456acd1a02016584" + "9b2203f1c11d318d816697f36a86b59f160faeac7dba71682d3c031d0d547725ef69cbaa" + "28345512e38b75ab011911d8924b2d17a857a96b", + "16e4cbabb03215767249ba2a608708b78d7387be9e77f5efd2462467fa05e8dcde2c036", + "040112b7ea5d21df8ce52772a1b76a52ef6f0da62cb7718a467a034618b7ce701a05cd24" + "670649e0ad181437b4eeec87e202d8fab1c240f9dd9b31311284c24d89160b1895be5413" + "19", + "120e4bce412311d3e7adb36dc11d4cc1da8a4b9d6cd5219e772b3dc2b2b8ce08833748f", + "1ff2d53a8e6c1c23807eee681156a146e8f2cc1a8c262850dc69dece31860bf094e7f73", + "1e8906c0bf2a5f922ca271def90d704a1425e5cacc64bc5761b000c7df0f8f9fab51f2c"}, + {NID_sect409k1, NID_sha224, + "f153cc61981a46d8a47d17d29ec157fa93fcf644beb84558db7c99c57fb131dcbc5b6558" + "1ced5ff0b29bfdc66ff703ecdd4290f7c353c02a3e6d6867f33f3dccd1a0b6752b8a35fa" + "143f8921a5078af9c85b212564c5b795da9858c7955095938fcd10c21e35e1abe905e84c" + "8b4bc05f2a06091ce876d9519b96951d08c7ac9e", + "011c6528939672bed3e8c905b7ba594c3ce95f37fb28044f210cccd01dfdb42c10e8e1a0" + "b5d6fc757834ca7f08e98cbc52b0edd", + "04000b570ec1fd09d7b4d102f83cf37129d94c9cf2f982b702c5d1172bae2df558008518" + "493c08dac6f76a6646156f123c4f33e79800e3cfe1aafbf25a5a4536d6c0cfe13a540b4a" + "3c97d4e7bc6c0346addb4b0c32dce089a7a5385e8a3e67606b45e2062c642bbbad", + "027cecbe83853037cf46aa98e1e1e552a96af0bb24e57756d8239fea5d769b51b83f195b" + "7801b562259ee644ab4047764d130a0", + "06a1601e07dfdff9d3b4ffdbff124b717403490853099fb4a00ea98f84ddd64e908f99b4" + "0a2ba6ab88b2491a8d948fcc2f207db", + "0741d27c0dddca3641b56ba1e9bacb0da1fcee46b9e33ecc6990b98cf0db74668ef1009a" + "50e5d55f80e6642ea48689a529c8a08"}, + {NID_sect409k1, NID_sha224, + "258c91524423b5c876432b1930c7b07b56eb5e3945f1e2296a4e5bfb9b9123f800ad195d" + "6104641b1f1970bca553c2032f83d17252e52403a9381c1fc18eaffdf026f7537aa27d84" + "c5e3d6e39e651a92a41139cec5181fe794457f556b390943093be719acd23fa1ddf7ff0a" + "af0479484a381a309b4f681af74bf97caef08c22", + "07e3b714496dd118d8f3f597961eec5c43d0265bf85723b0b9b0616977e0acc2cf686cb6" + "afa6cdc19114e27ab000e762dfe467b", + "04007dea0ceb73b9bfaff7147a36436cfa7955eab02ce7fe9b60dcff3e088c5c9281be59" + "07de3e06ebb2e21dce8bf3ff85feeed50001cfa9b30af20612666e5df798f91eb4647d8f" + "5e1747c1b18adc6b73a848d987434c56d13ad78b775c4096e9f20d4878bbd9572c", + "028a8353c05129dcaa7caf0343130bf2e2186b9cb5ed0a27a565e1c24eb882617cc299d4" + "86be76fe0f8f3c52678b6992288d7c8", + "034299ca2aaaad51f12c90e8205da305523713516ba6e7d245eed8ef94a1b2409b98ae93" + "476aed6c9b9aef50406860b4e490db6", + "01a1adc76c65d77ea686d769dcd007c0101b4cdd0934402fa47dac22f8ecac28fc05c2f6" + "763a6781655ed5e7d84c41157255a4c"}, + {NID_sect409k1, NID_sha224, + "a16a0d6fd57240fe88c7c36b9f7f9040cfcaa9afc4beeb8300818c5f90cce73b819a12c3" + "1d42af33146399cdfa4ed4954d068dbb0f1f342269dd29f1fe357e7224304b67b0f924b7" + "94780fe7e6aa9dfa3380252fe7177b43e7b1789718949b9ec1b943c83ed4399491482f0f" + "59d2cb8050ab6f8b5854d76c50651428cd29c40a", + "0182d1e937b037bf7f84144f7d4c94c935269c9aae7d500aa459a7a0ec113b232dcf2829" + "08eee4c84b8106cd38cdc41db3f89e1", + "0400bd4f1ee6a967123d70d488dbf0fb43aa5e93dee5794b4492277fe559776f74075485" + "0477e275cee9f1c375403a4933dc9869200191a544b98ba954cc6e060ba26a52fecbd1f0" + "dc7c15381004cccb799a9f7960a3cedd02d36fcaeb0ceb844bb4683998d776dc5b", + "07904af733742716366f8ba07086f924697ac8a01bb4895bdb5715081ee89eaeafbff4ce" + "c44eb0ce14e774dba71bb9b091d2594", + "0723b2068957c4f2ac1df69378fc013797a3b071de30b514c3e610002dc8bfced32bd2f9" + "e8f692b653e736696cf818b0ecc1e10", + "058455b8f9abd5fcc28a4ef839ac0245c3feda1fdcbc3c171b6928c6abc931e8b0ec3438" + "2d63e414657e9319d2965fdc9eb74cc"}, + {NID_sect409k1, NID_sha224, + "d02ff569828fd1add21f6bd1c50cbdcd09222e458ee79fd5dfdba3cbb84e9d926fcf196c" + "ccedece77d5aa17f8c8cbf3a9facf0f02c71d5c1c8aeda9d75f6fd7b6f2c5c70dff992ef" + "6e02c438fb3c66da5a503b3c39acbe2a069da457595b542190d818015d462670b0807c40" + "1e36b1bfe05baff3a8ccf8d1f5f8de7840e87993", + "07ed09428f460724c8a5225a31151e031d9949493fff5703369c401762345d002c4ce424" + "294baab22d9e71edc4f854510cf0e6a", + "04007fcd003a8cde5503f5582a42738738ac7efc6cdb3813a00c072fc114006be9881c0a" + "881ca35988dcfb8088f3d07a03943cf23000e7041e666c1bed3b80a691ecff60ad4afe3a" + "544ce58030bbbcc130045e2c611d65f322ec78aff6757cb5df8ad54ee8a09616ea", + "02828c8c4bb1722b0f03262de32ca8a605c4046badb20d8eb9f19aecc5c69f199aa48d09" + "b61f285254425cb4bb5e0763dd471bb", + "06c99d796c5d4fa21c5cb7cee0b7570edc9d7e9d7c3604f5ca3766b17e44bc71d8a74ac2" + "68b8713cc2ea0adc3dc1971c062b4a1", + "075962e0ccbda2280e502559f48c8d37704964f67f8cd3b443b89be740976f1bd929c175" + "560fc8cfb282661c0fa792a5b200401"}, + {NID_sect409k1, NID_sha224, + "57befce973b225cfce7f996fa5a1a43acd160681b88a87b7de04544eb7b6a719718f1ca7" + "f559b6531bfc18fca3836d2be7f7a6e48387b7579a6845796d30e46f0dda9d82680f8c96" + "c5f0989741adef9762c3db763cae2699cb6c112543635e20ed5cfb4b55ca2ccb32d2d139" + "36085a8ff95ed658a54be73f80c912ccfe5f0ca0", + "0390f05b9619c27b800e99aeaf61ef7f6249367d5cfaeae3c7b523a8b29153eb8a77132f" + "6c4412545a842d6deb7b7aea7e2bda5", + "0401cbcfc492a2a6bb8a7341df67ef2bcdcd706afabad5e7ed1d63387ad9b0dbc47ed17b" + "82de6de936752632e43c393a93fc5cec0e0111768994b2dfe9677d9dbc45d4b55fbbafda" + "aa2b2638ba1605c35301fa557d628a87d0a7febcad9f8eb4b51fc9c807652579f6", + "00b8d236a9f8edba7b5207b4c7848807b933b214fa25cfc5a0e73f750d30051264bb9f67" + "02837b0f65a451d4ef24f047ec4e9dd", + "076bd4755427fda22a0f177624477c59de12a12621aac274b980b5e1ce5dc700591eec13" + "dc5bb48c5c8643de287a07a48a6a7fd", + "065a5b0a00548bcd7f59518f122d79c7552ca6097f3867604b462201add5f326807f0e87" + "79f2177f277e5ed25253885ca81220b"}, + {NID_sect409k1, NID_sha224, + "4277ba40cb462860ca722cb4ee71c61836d2ceba18bc91f3fad7dea478972c6da0ebc028" + "15eaaada1d1a5e93d7ab353855ccfdfc94a5742fe18daee2328871e06c1ab0a9a989d123" + "9df2d2d27f96c415e7ef9a941f06c6790675361173cc229aac7045f49eaca207f59c4976" + "19ba32e932b5c1c6576812ee5b146e2cc7de5e62", + "007d18652732596add3db31f7a0ce6020d03f3df58131b0c7c633faf619b8210cd309d6c" + "0c4083aef1a1b6d2a756adad0bfe344", + "04015ad0682962b4dfc8901a0dc77d548ed616286733cd9b3ede937cdf4401ab8b3e3516" + "d466ba43b6ab5356c4e72845767d55d27c017e4de3288ed44b48e7c47b16e2afb513c976" + "3d5bf4cbf9a357c128c94a758e3ff946957df461531def2b8d8411b81f45f0c2dd", + "01a896c30fcfdbe583d6b0119f467f47758ee01d4d601eb698f444ed0f76515c2b8053b1" + "1ae7abd0eef7aa61145a53d12d560d7", + "053b1cd57dfdd8d1802f3e295e450a155c366bdc2bd222d18a4d08369c25e53f1f633958" + "b22d80755ecaf8362d548b28dff1ba8", + "069339fc6058762a99576a96e76f75275f848102bcbc281e59fda26c98fc48a3f1061755" + "e80740a233e03287f510f4549bb1874"}, + {NID_sect409k1, NID_sha224, + "57ff6792ed4b12220d179bc0ea57ff217f322c85bd3676a681d32d7e4a3e0c8e891fd267" + "df17caba5992f68c35ff670b60b4bbdfff82404f6ed996c30539bc395120f97d4d7a652e" + "aee82bd8f9360bf8bb73748b8bbda9f9480eb54f7eaf2609d4259329e8a5ea020521e7db" + "d3ec56f23c849932cbdf2875f5d5c774a9d6b0c9", + "02a91244ea4623b63403dba807d60b914ca3b901a2523244c322f2f11251446d3f15e869" + "d086ebecfa1a39ce304e8b5c8de23e2", + "0400b7ad8f0a52ec21e54e28ef603d76652dbfecc7dd2427cfaaff3d280f0d1f62187d77" + "effcb433b5bd44c3d0c0d26c38d3f5930e0080641bb0163130be4444f79c500ceb8d6a9b" + "2cac42d21d31b2fb29da075bd41c6613f278944adfe92d3c99d494be9d4714e9b6", + "070125c89a1262a88f22e874c55ed149de6d961d6abaab2d13db9174e3cecb8f49752995" + "7058a0afe5361ddf9d3a5a3b923c7ef", + "01a28cfad13969c6449e5a0f879e01ef7dc1cdcd0bc77d20f3989c588a9cad12a4b52743" + "c12f4f6e2154ad963bf234ec96263f5", + "066d7f0b364a640c6c620e3d030448d155cffc9ffd46a6adfa1c13e1b01892463a472446" + "5aba3eb07009fa604f3af18109cb72b"}, + {NID_sect409k1, NID_sha224, + "f85113eda64478f460b60f8084220134933de049200a5f37884da7901471542e26690a5f" + "abc3cbf9e679ade71b6e54d869bc136c3d34cc4a9efcafb777abf046b5ae5429136112a9" + "a36a475121eb1f33f1f43481286fc1ada98a41064a1fa38c89e99a93065bb2a119348a9e" + "452497fd5a0d2b83a66b09da9f47a0583732adf4", + "0068c56c6b5d50d1d4e13d3837d8c5e8ba2f825e121b63e97603fdfe78bb6899600ff0dc" + "87b6b3b6868ad0d2f62b7b7a31603ff", + "0400d9a4f5992308013573f97864c23b98d276975d80cd6455e9f0d8a62d6674f3aee3d2" + "7dec15903da4e9d5908cebeb765ee02c80001f61189caacb05dfb982bcccd603a769d0e1" + "be8f9223288b5426e7f88854356fe825f11a88918085692f33b0f4c61ab09a861f", + "02ea7f0d81fbe3d4c865ff5315d1cc38f9e9a8653fc91dbdf445b62fe09b30ccddf50878" + "3ad87c8a48a6ccd5c9e817fe2977f90", + "02d7847479c16c4cba834ce5962724f185be06cc04a9a8d710cc72e6063a7b64fbf2694f" + "5b62de65d3d347d34c0dbfd5a4d93b7", + "069e32bb19d20e873d0e62b306db4d5663576e4b2fe75e8ec79b7a63f38c8f1007a817ce" + "30612e8578d48c63b04b1d34904010f"}, + {NID_sect409k1, NID_sha224, + "42811e9ee6dc509572e1cddbe5baf00afeb0c5c13e3755b922eee9e210001676082bc9ed" + "c3d78db2b5bebea7a2c0cd2b369226c2b8f83b28f33fb513407ab9d287d14b112d6c3be2" + "493805ace5cf6fd366d03cfb28f4ce3f0f060880db64d6962e997463ba7c05b6fcd1e66b" + "abe4b94afc5c2d38c7050c69571d27b66ef0090b", + "03c88084f8b78446db431bd6e240a0c050813d2a763675b0ea869cbe183df697146cf29c" + "03479af3d34587a95cd257027fbeed8", + "04015a09436de00d8d129e297ea60e04b704c0a8183d64a77d1c527189e25e21d6bb62be" + "8ef5eb2dbd833e5f9c7d5c3e69c9c018820001c32ba376d2e9de28fca644b0d567ce1f4e" + "f0aaddb2adec6213d03bc8cc99f9140005bed3cb6c3c0f5533275734aaec47404c", + "0132f4763959863a32919eb591799ffb8613797bd0b617c73654ec9eb32e2fb86631b66e" + "28e1b4cc4aeba65ba8c75aa1cfacd73", + "05fe0ccbd430d9459e0093cfe2c1d1d3edff8c1ae7111299d2e04f414c46ed2cc88ce9cc" + "9e23e187e87ef551de993f52214d609", + "0557acfe6347baafe031dc16032c45559693e2793d9b6d372670b09757c6f4a3e5ae5e55" + "264137d1859c8d9f8f03c25de409bf9"}, + {NID_sect409k1, NID_sha224, + "b38f76ede7441ae0887e689d556f43155b38dab7cde487ce9ef9a46f2957c830d4d28006" + "873fe2368197a6931f6fcaad755102686a457a7edccc8d344e2d2a9162e3d71d41c09a02" + "2539ae6d404955a6ad748231aee1f974d4f159940532fb3b1fa0254bfc5805d2fc686968" + "56fadea386c542d3cefd1be3af04ca595e54be25", + "051af7b63bf3297ae20517faaa1552f4fde65819dbbff6a52721611e5b7dc1242ed6e697" + "68cdc37ea8cdfd1a5971f06b84b5803", + "04009cd1280a2a79b182ddbd1712dbfd12cee3345a89636d7673a5fc3e1e51400603176e" + "27d538e90005625aacf5cadcc8a8c25532008b5aabedce498476b4c65ab3cdc81f819c2d" + "b670a7236c0357a86f9087b83e7568cc6e5139fb92f81975756d7dc4f48be87df2", + "00bba308a3eee9e3ab6d2482bb728bf44cde9eedde15af7300c57c2c1e6fed2ee4e404ae" + "ee3923e7871a2ff4ba6df64f9d01a87", + "07a9e69664b7b81edc5d47c014696d194b2ca4705b2e79af692b285ec476169d041dd9ee" + "f20f7d496fc49b8597574d2602757ca", + "01521d7cf6aeaf1c8dd54a7776cfac02967983083770346d9768a2629d606be90d58ea82" + "377413a0fcc3e4e66f05a0d05d933ef"}, + {NID_sect409k1, NID_sha224, + "356dc86cef7979148e995fc5abe2b14a7d5e4e42c9b3509b4363bb80c581a66f4e7e4aa5" + "3a4bfd37f9a7eccf75fdd726f348f6a3f779e6599f61bd1d668517f40453b39bcf35db08" + "52a6a6218198f52b7ceda2ec55fca5abe8e5d93af9a42b9ae4de9530c5870211bacc27c3" + "9aa094013db703de2fd3121f08d7e97dbd4e8946", + "03d65bdec48972d03811b78150a06956eb22d337dbec5416bbd8185a6322cd8c0ff80002" + "10dbd1326422289071cab65175f5d10", + "04000c9c1bb0a80c4b4863d78003e21ee60fc553ff72968c165f6eb6940250a6cb7d545c" + "6aed3760e42370df79b0d37c2d1433c486001a9d994828ac09a86c18b9758b3f6b91a577" + "5931a7a6e4d8b052204c972b993a3b420eb8ff7e91df77253a9f5847c5968b5636", + "0156d12708324cd30037753c78225d183723d3f15930f23bae854f121094bfffb5d7dece" + "1fca93bbe7457a2237760aef3db8e3f", + "071466e80e2a7cd8e6cb6dfde259a08619f880a71899c58bd4cd33c29f7b321d26953372" + "0101f2ef70f5b8e8f05c9cbe1ebc303", + "077330e08712ad709f855d92355cfb7d565efd806c6a853712916f7c943bfc79e496366d" + "eba79ef7491abad23086db341f339e5"}, + {NID_sect409k1, NID_sha224, + "06fd39a50bf25e89f1071ff81fec5d1e35b6dd68990414ee403dfdebb792627b6a4ae3d2" + "236c159e4441ff90b61ec87b1592c538515f0486b19e58583394a05e6411e69b4285d6d6" + "589982ac0eeb2c912c4948789cad741183663fc070943389d4e9a1150b8f6088fc506059" + "15e9e24b2d98a1f539024770e4820e14ae42ea8e", + "01f1a8b5f35dbbf82c102df550c72216a243f986f0325920f6186a16d1da74228cc02be6" + "024c7411160c183c923c743354f9438", + "040157ae8d90fe2416f70a7ce0669acdc0b5064ba650cb5416e59e6672e45b591774ebb2" + "f793c3a58e953da1ac08272d0b949e7b50006d49b9784f8423812967b857e25dc3af1312" + "a6ff29579f6acb6e155b6848ffac6fbce51bd2d41a22ef955f690e2487a4bbff00", + "04cc45e00847818397c6abb3d176cb8bd77814abfc253e3b0d799dff2c3e09a5195ed5e6" + "232873f2783c8e670b52a839e06bc30", + "067b418a5395216b83ab00d5568eeb62ae0693af2b0e4d052c6feb70562dcc06ef852002" + "687099dda114477871b924775e8460a", + "061d1e4d713689b2036272ad41571759b52a78e0f8a84d1f3a277aaa33ad558f0b71f3c5" + "a99d403e49df1afab66059db20f9f32"}, + {NID_sect409k1, NID_sha224, + "6daaa41150ea252a3e966a338377307d909b95080e006f13027f2be5059d9208930c5a32" + "9994c0b794ef50eb059bc6c215f68cf42260bd410f9bd86d2ad5ab7179c7c92de4a93a5f" + "6aa17de5aefea815e7c0b78a8cc53c21dc4dee037b29c9df4e12343109283ffd5d8a3b81" + "fba1b5e95506c7e01ac056c86dd0ee23bc21af0a", + "031dc621200cd174193d95e9092ffb86189c52cdbb9ed937593f2cde7c4a0264b9100e1b" + "8407336c8dfb5520d28a18dc4e39a89", + "0400904bb904d50bff09bae5dd21f425c808b41001ac917b022f7e1cda6e46504781a69b" + "aab4a6f0f100c4fff9ced26f871159cd30015cc300b0efbac707635c72bf855de4290f1b" + "8b70c16f9bd0cb771ed5c760ada04d0ff648f118d64e0aff6a6de16def15cf7437", + "07e32b1fc1cebeec3d84f56a67c8ea2b78723e7010a725ca4745e849e573e8e4a4ce11d1" + "af4ee508b80fb5336de3cb53161bf44", + "071cd81dfbacbb67be5903cbcbe402c0420adfa9d14148bea600b178fd06278572d34eb4" + "6d857085a2a4f48cd4ee9109d607dae", + "0347b1029e67a6ea2a45af1f7410dc951db813eabfd3c7f3e2c294b81e1c54fa8c98569e" + "fc580b68007bfa316424ac6eb353ac2"}, + {NID_sect409k1, NID_sha224, + "6378dd1c12c5197b57d47dc46a67949bdd1e0809004e94d49b0234126a08ad5bf8723ebf" + "d132145813136d8b7dd096f56c34248f09a65c34f60c2f80f9a51b3795f3d2518b11aaea" + "f6dd45a323794080b78f85d629e5fa719b6ab0b14c78cd908befeaef0dbfaa08cec9318b" + "bcb376d48b11b68735c9554a45293db5e9239ae1", + "016e6750245a88340b0f0665b890459f8038e9b1366f2fc1326245a88d4c523ec94429f2" + "1869ce3dbf75126e58f77241c99efaa", + "04010184fd47e8e1e4d534ca1cf67f15bc8a80921b07e251c22eb88f25395e08d7a92837" + "74aed204fb5c14aa13c63a94ee691b4ff401252ad972bb8c0b286c222f42f7d42ca6561b" + "ac5e517921bda53e51043f13e711da8a813bb6880678e4d6a16820bab819d62e59", + "07f18539d00152f5b9a75d4f114812b87024e8a8f9c9a8d12139d0a74d87986f4305bde6" + "0375918ff2dfdb88b6deda640e17364", + "0735a15e7bd1f69f4e90739d42ae239a8e9238ad28b63ce291b57cb5b99922fbd5dbb7f7" + "4fcc23117243efbd036eded6ee0f28b", + "07bb3dc77cdd4138a02e2d5fd4f6ff8516b4c95b8255c629132ea8705c399fc60f8fb660" + "ed3aae52db283aabc3626a5559dfe85"}, + {NID_sect409k1, NID_sha224, + "b898d0f9bd80e083fa541f457d14d853bba55b120424a95e1d9511c8833f48444329e034" + "9d68204c4b4581ef1c4dee23ed0a4445727a72e1e6cde422f7c10ae132a3fe681f9d741f" + "da263e73f7cdf10759467c9d76164086abf6780ad474772771eee22d195339bb8f6235e0" + "d992bbe282b13ce4fe01417f507a2c4fa155e108", + "0788fabdafeebb72f6385301e30024b56639e629a400f9c50d402cfc9b5817844f06a451" + "fbda29c7ece41dc9ffcfc625fe0ff0a", + "04009b2c36d221d18189e1617cb2f2ddcd64cdf8a42ba6acc55f04e9722b11588f7fa861" + "a3940820d9dabbab631d7fd4106c60f37e00da099cdb10dfe2d7c0a16ed332b459e7be31" + "f44b0b2d595dc948f0b073ac4e439f24f215fba5ed50aef3702731d6561eee1986", + "00581369aca680beb705f52b6bef075de83ad29034c3d6b2949b551a0bbd100897a079b4" + "9d41d5030e1a6950fdb14d70dbbdb41", + "04f62415c99c8e6750f9c41c31cf050eb58f61f62eb0b0023d61dfc30e7879d4f5a87e88" + "faf55522631a29fb69d16e15c354323", + "06df238f34b5ae664860b43ea11defe3120591cfa371367096006c03e83d372bfb70da6f" + "789665136b7dd1c59894a2fc5038c4b"}, + {NID_sect409k1, NID_sha256, + "dbe04561ea8579672a2b3afa94426a3cbc274b55263989d41a778bcb082da797d84d930c" + "a847a481789524940701cd5f1d11b460bdac0bffb0b3a3abe1ab689c519700de85a0a571" + "494ba0cfc3c865450eba7a9e916b7fa9df55e8a1c246c992e6a0b44b78274e008472bed8" + "d8411633e6520e1a906c5d0c8aafd572fe6f1f64", + "01b8dfd64563dc219d6eeb53f2e3ad1d771140d0960b211dc1f757af5e297dc7548d6133" + "ddb574711d466688f80dbd65a7bbcdc", + "0401ec530638ea0663cd3a9b237dd66402adf50d3094391f2343d7d6c52c1d14145c2454" + "64a3b771e4b1894462fbfaf440e53eef7e018349e244b24c8353811c29a60d8e02caf195" + "a424aeafdfd0361846d5ce5eb83da1901700f00fcb85a0c2543b49a8a3ccbac157", + "026a26cd09c9329cd45ceb4c798846dd81af67759794f5cadab84de19a835f8a0ae49b12" + "853b1e92822477a73891f85acce4216", + "04d83a5f9dad246717135bec6e386ec6b73be9ea6d1a17334ea2003a723d510914167d13" + "6254d6cb64b16ef7eec5044b8f2ba28", + "03e81601d0c66b507a491c530075edc5b09d770633a4c2355b3b1c7df9b200ebc7dcb706" + "be1696aab70d4c6e1c4a7e532284670"}, + {NID_sect409k1, NID_sha256, + "48a8300820fea2ad83c83f7d6b24192715329c3f159d56644e11ed25efcbd3d31600a813" + "b909812987b97d1087e74a63b4494cc031c63492b6615e9d6e5b36f62cb2ef88b9f73659" + "5800de465789f43811165a5fc093ee6d776008739de8de2a84e878748641be8bd52e5b89" + "1c4145f52bbd46644852a43108e93d86352b2a3c", + "0422131829608ff730c24ddf7e8b4a2600eaa9681eaf45432daa7d41fe2fb488fd0199d4" + "31a1ed823801ce21f4f01a4dd4248ca", + "04006ff24eb0ab812303bdc9a23719caa789eb75775e686b9511bf6e07d60447d1601a48" + "ae7f3041cef5aaf3ed2adb6feb422fbc54009a351fdc9422a81ebef5407d0d74b52a348c" + "af3cf6e1c6c2af722c408941de154619a1d54bc23a9dfc0c4964f3936d62daa6a4", + "0313ec63c34ed325d770664aed3bfd1a16eb636516eb686e806b0acf6f0d117998b30fd5" + "2068a36f03d0db3ec13e6989c6f196a", + "0088167f96d807bdd61e65fadaf0c56b623db42b831909d12641e4d00e7bca6077b36cfa" + "759fcbbf087c31f294f20a09e0bdc96", + "01cbd06232b4c73cdd13208dd254ebf9351745ee6196e3a94b9213e931f141e4cc71f3d3" + "18a67e7b8060e11e88783fca0be41cb"}, + {NID_sect409k1, NID_sha256, + "276e3a986ce33256014aaa3e55cc1f4c75fe831746b342eadb017676b0cba7c353b3a2b5" + "54522c12e6aeaf1364cd2eb765a404b3d0aa61258194a30219d76d2bfa98ad20e7e91756" + "cf65e50d7914157f283f2ba3930c0ad3a97532cc747b1cb9c806fff497f0322025a3d02f" + "f407fc7b5808585b91d95523c9d5864efdf7d983", + "0095ae8e4c7e55eb5da01acc05ecfe72a4dcd8ec152f1c8dc165014f70eb4e4a7861aeb2" + "b96c418b2d4db58659e76184e013a49", + "0400a3987d7262dc30e8ec11458ff7091ca993bc61f142ee535d544a2c88a47f96011076" + "19617a5e65cdd6d5e1a034aaa22304434201fc8af29d5134ca9baf92041b6d6aefabccac" + "a4013c55c1581ac05db6141290235ea09650a289907785d282cef1b9efb381ae66", + "066015a77c99015ed6983bb379772bd90e03b9c010e695853ebf8e461a20fc12b20bdda4" + "7eef856f162dfbd9fd4fc1ec49105d3", + "067c49b96e5bfb6a6d625346c3ecff13b8c8b7e59c764b73b256ac970aa4056460000e59" + "9a8195f2d235a75cee8e5634acfa7ed", + "03ce25ef1af0784645f0579da381542f5b8aef377e5b79193314f84853e2a07a4f1aaa4d" + "8210f3a3c249a879cfa3ea8af43a929"}, + {NID_sect409k1, NID_sha256, + "6a4fc1827c3a7256faa8ec6a0f3d23559d6949f8cc20e7f76111dc4ebd59213951cbf0ea" + "dacaeb8862d6baa0cb298645e4314b1c303bd0d5e9893304d4b7fbd36ab05fb6a5edc3fe" + "f763e3a4124d61539eb616b359c5cb55b5e2bec50c91dd95fc39ddf521aa854216eb5a70" + "7819fa6f067b316a17a3b146e7cc2dd517f7d63f", + "006f2075bd730f34df111ebda919167b1d3358ada32cd6747cb3353bcfb814a77ac70cd5" + "1b31a0e538539453bf9eaf9d8b384c9", + "0400bbc153deaec0bcc36c03d24afd20dacd9e78d104d94c279278d04b597ccccae43cd3" + "e64c9e1e58fb5408f376dd7827ede9dc3a015ae0d803acf12d9d3fd41f74357b1c93cec0" + "480f2e586d0e18f15e569d27d3d106e192ee0c1c570351eff1f463dc07d3bea933", + "0314330098250e38145d11a48f5043190c6b44f8572ae57cf83b1f3c4c03ce38b90ed5e1" + "57464c2613c82943d78c938fcde89d7", + "0160b20c370ef4b9cca3f7dd3c23f70efe6bd80751ca021731bdfb0f45ae07e5f2144c77" + "795aafdb0c3a92ebbef75fb2d334dee", + "045188dd2402ad36ae4278a9910648ed5e71d64737651c133aa89850e3bef2207d58ba41" + "69e471a4737962f5fafd50a37a28e1b"}, + {NID_sect409k1, NID_sha256, + "4b088199bd8c94775d8ee508377d672dbf50f6d2c7370e99821ec8f9387492fb2eebdbea" + "473ea18465565f79e2af418555f10c4a527e05a9e20c9c00b807dc8b350cd4ccc2d87e91" + "f66addf02ce4f43597aa258ac6fbe9365cc2c8e8bbe5c884abc929710e8423cd6722a8f4" + "73bb55804159a92a3d8b6661a536b4fb9293bb0a", + "03887d284e9ad17d38bc6da9d83c192a434c509340a7f233cebb032b09ab7c4c6e8730b4" + "a80844898616c9abcd16b753c6bb4c5", + "04012a6d5c5690ebf14ecfa54ac97b73e88e16e757c34c6bbfdc9a3a119f298860d330af" + "295756dec41eedeadc5257b202451faa06019f40ff28bb72af659d5319286fe21f018199" + "52d471ce2433ade745042a47c2dae798199c364ceb99029c2dd5cf57ef5daa2b00", + "035945b45221300f83c5fafbaf0645a7386e209d025b3e1dc367819728f630663fb732b2" + "51a019e08dde0f64dd3f60a10065c50", + "00c323c86e8cc548123d1337936d4be948bd4bce4631a2194c2bf04e1fd714df2c90e368" + "1e41a21d58d9567a5df9fc478dca8e8", + "0493d3f4d22cf8517c301f15bde52cef17c05fed2482f3ef15cdbe32c5f0975e054d45b1" + "3faf906896201942f29e5693bfbb229"}, + {NID_sect409k1, NID_sha256, + "848a13465ddcfb2dc14f7bc0db0756832c22dde1e31e4d8b3ae0dd1aafbdf15e954889e9" + "5d3bdfd6e5ebb6171fad62592c23277a89e8ba53978c9b1afedfef7e1c3f6d9f31077530" + "460b47834b30bbd84a4da601be988738aa815d3d7e72043243a5288751ee08b4815a017f" + "b5d9bd55833698a0d526b1ed79da35ef0fac93da", + "02ea5430610864257c9dc393c3addcd0d8d5bc8aab1067643b08857210464428aa85cf1a" + "e6c743fd2682255d4c8eaa46ca21e73", + "0401e502d3f47823ac7207861855fe6f6aad1fa4f2149bff2643b079da23fb270599f744" + "669b3c8ceb4cb0989aabd43d26d93c814600cdcfc138451bb59f34dc82b8128088b5ae0c" + "b8a77dce1895d5ffdfc8b4be24a206b9856954508b82b80d0163b276683489074a", + "0426b90275d720d19c6ef5c8c74c568a636257740530e3ad10de0d518c4eaad8bc58cf45" + "06cf5cdf7f2b03edd1caadb28fa3787", + "0123ad87c094c4ccfe4346dadad54a6b1ee1bffaa1b7b9094fe2e6ae785a2b77ce3f5e56" + "8e43e8b7fa997206262645f56078657", + "00d56cd5cc64736ff7ea0d9840916b1e1c94e11611f93b1b11c2ee98c79d92a8af1a560c" + "9938dc4bdd0b84252e259ae5669d1c3"}, + {NID_sect409k1, NID_sha256, + "d1850545c04ea65528849973c220205c35eae98826d169348970d1420b4d872ce233af1d" + "aa9e62f6a562544ae3a0633a954a493e9766dd5d87e47486559fdf86229a7c9e1726de21" + "895abdcf2422d438f4ad98d88b45c56742694ad5e11894253270997c049f0f419842482f" + "21c792fbe5613e2defecd485585f1835b6f4c578", + "062c757c92eaef41f5d81169ec4968145b5aa2bc1d2a3a5fd000634777748ecb93677b3d" + "a12e3be33272a8f0a52300f4a5a37c4", + "040139660fb8bbba59e8f4e95e5ee5b97227220f0e1b293901fedcc6dab86e7c5a9d20c1" + "a097ee2e926a934cce679fb8dcd8d2ed6c008ac510ddf735184e8fa9693da264194fb78d" + "a5d1cdc0bf5faadb33950ca191fe233eb8dac8adcbfe15b4f7c09d5ddeef6bcd1a", + "026868bf1764993d650aaebf117521cd146ea20067cc14a5843f726a3d68e41c3fba82a8" + "3d406b2275b3459748b3bd1a8d32f1a", + "05b17d13ae4d9535d062a2653bae4d15b9b859a87c33e175adc3ef04781bced888f3e93e" + "9804b2251a40b9344c0f8c6bd5be0ba", + "01ec3322c5beba4423b13a0528c71739a6b39f7b0e0e58a8274a8386167cadef51e5560a" + "3e9d97447e3d3c06288459fe6569345"}, + {NID_sect409k1, NID_sha256, + "421c9784d6fd507c82904e1054edf9bdd1efb58a0b211340086069ad38b7b0dd15c2345f" + "a8767ef71254ed1bd5c35f742b1d3f4765ff9007a5477ba9e5d3d5a5cb5fab4efc1cad73" + "701d4776c6c4343f42b5d94a9eb78ae428dfe5fbdd8e6ece09d5b75cf4346cf27db85635" + "2225ab04e6ea56661554fbc39916accebecb3935", + "048a313c0c11489939fc0cffc6ccb9f179093c4e13141b92dbbaac441b7ae878c9d41206" + "6e95615174a24692555cbbe904a14cf", + "0400677c2d364fa86b8b0c79af754e675ea3e806d5583e62087e01590b824d2730e31326" + "591167f02bdd29f8178787c4e1ba9d249600e7f78c423baeebf6defe9feb8ada8874ceca" + "b083ca2e71d9d8a3fbe846eda69262a1f5b4a3baccaaa4f2cc87220edb1fa6b6bf", + "012b8df87dd935775b80c62ed6c76974fa5772939a9e7372cb74e033fbae4f78d75b8bfb" + "b82240cf91009b5bef4d63ded04cbc9", + "000590a9e8de60b5cb181a1c11c2f6115c66b05e71e0c558ae203ee18e54de68016f4c7e" + "d2f01cb0cbaf1bdc45218c0fe2b1552", + "0521844eee9168a501e235de5fd19c84f052445fb0e68bba687ace45d8630070ddd3b730" + "34d1d65788a51acf91273fd187a24ed"}, + {NID_sect409k1, NID_sha256, + "7910bab15b6429947655e33a67f41b76f1d7b71534f8904d6a0472c2faded038565272d0" + "b5f51aa915e0d624e9ff48d50ebfa2f09324864f26c29ab73eb39b436c5c459c7cff4d2b" + "62992e3489cb4ddfc05d7366b161a463aa1b782641d93507de43c8cd0a0a0a9d1c644f45" + "54e3edaf7fd794248110ca9387e73ae5d00d299e", + "046e2adfe5d3549e1e6fa1fe69a7cbb4ac9b111c8903d544268f8318b0b47d4b78fe3e56" + "eb5e639ad5382e7cd5bd4b2c3e70ef6", + "04012902439be50c97aae7b40328984934d6c843415f76f3821c8e8323aba96ee41359e2" + "ce5ad3179063ea5e2c7deeda4d728d585201eb59fe96b269cc973b1fe1f3720aa9aa6ec4" + "cf303c5cccbaaebe6ef7c9f5356ec5e76b26b09479d9831d9f5aa41ae1d61f4c47", + "031893aef1baee0e21b50cff7002435b058d73dc4d8301ffdcf1e0c315d18c2b16f282e5" + "b294dc88369b25e2a1a19abffb578ab", + "039281ef10b9a2664b755a2db67b3c410276a424edf7681a5c97244eaac5826368a8095f" + "1b9b76f8e490e2783694d5bcf3565ea", + "039edd50721dd35d1704167e8cb609f309b9ed73d3c1eece181f9582aabc647c5ec8bd25" + "8e5802fb0647372e4c3929cf59ae2d5"}, + {NID_sect409k1, NID_sha256, + "e6fc96e060b956c25d50ad25443f3c30a12d199a47451a49ce88307201dfb15ed816982e" + "8888a28daa92eaf3c5584ca6ab2ca9e14577f84396de2e0ac214b24a2279f5e7b344fb73" + "87e9afc8f0a2b77a4d024a20ce6183499b17096947444bbb753d9b39e5c694239d28f9c4" + "54bb05468d17ab564ee6cea3741747ccb7f108af", + "0480103fd6180a431c837643566706e2b9597de0a1346a224d176a5b2c54aa4d064418ed" + "654a5d39f4773fb509f86473ebb373f", + "0401d39e2772ff3d26c5936ab347bd5a2940ece42b1964f030c59ab453acd7f44716ba9d" + "88f0828de1a4e730ab27fe1859915818c60140b1b66b0a87de29ba2cfa799d944b3b898f" + "e7ac43de68b01fb41464506e2f014e0d11bbc0c24996428c93bc1a5ecee5956bb2", + "06e9bd0290548d35168f7db7fc292bc161a7710b78ac49ec6a42c9423afea1310597e597" + "8b22b4dfa192489323b2317e4714d37", + "055dbf88b6221dff098345226d59d396b6773611ca6e747d26d5d758760d830693df0f5c" + "602859f9caffd0dc3790dfa08c527c2", + "03e679447b622c4b06871f2337f5a24150e76efcef9698c6fd463867508e9d7b803667c3" + "2989a881c98a90998944c070aa58b17"}, + {NID_sect409k1, NID_sha256, + "c8a8a0d41f35537e6fd523ee099eb45e1ad6ab54bed4d3e315e20227db03292e39dc1a91" + "bab439c0d20e36e7fea6ef08983f390a6b5551ac3b4f1895220b2867fab95552cef9bd87" + "02962839bd9b2c72772640e7d3be3c5889d226acbefdcb448432bc503e5a5fe7ae9ae769" + "6c720a799f9882c64ae0385f656074dd8a6821f5", + "013c489e8311c6bef02c8f58903b2ba2a98a27cb935d75a30d320af9a14fa3cbc6adcce0" + "9235a9eaf333dd05f4b2f1694985dc4", + "040046a1c0e7753cb499d19b2805df770ba54f1c6e03611c302c73c72902867c51c1cf9e" + "d154b8f30f72002421029de7ba2d8fad22002aef9c34c7c8216a805a58dd88185f404930" + "86213cb4c85e4d226bb5e892aa37be353d9123e9900f8b0790a43d55a19d78c48a", + "0491dcc881731112ad5e9e1df459c27381a7bf8270f97743466e178bf5ca903971b362b7" + "3fdbef8a75d4292e63e225396c7b32f", + "048425b76147427b8b1969bba3809dd70f0fda24cfb0e92509a7824f027b61cd38441a69" + "1efe213f3c331da8c82f94bbde511d9", + "00df36683f22e9e86c88097d75409ea297d391550440e4327f67b7af1b09141a0e7a1db4" + "0c4b0bf4d60376a6636dbeeff0b6b91"}, + {NID_sect409k1, NID_sha256, + "3407cd6d2845197cd7414a30fc3df7184da204222ffd65c4d16a12cadabf603de8043ea1" + "4f5e6ddcc22d3572dc06dec1a23cd924e1847ae285ecf01754e2d1247876431eb98e897e" + "47412a2330bb32990f9714122109e94b38f82cfdbbf2eeb4c6f88f5dbf9f0ccb47939df8" + "be321dcd9bfd9bb99cac9f94885fee7d443fbd87", + "02419bd2200f8e1d87db848b0379741685e680d9affe693eed49d82931030b6cb05d21a4" + "965f4e1df2045c8513a8f574ca9f2e7", + "0400641a6ac72455ceb142e00d6854acc5f8b86db7bb239a5054c1ed48dffb6d050458ff" + "ea8adb68613ad3cf5977ea7330268abaa201a954ab7d62796e5aed370285d3bf91ddd34e" + "ff3b995d04967db41c2171cb2157d85032c998795ed476c891702d63ff0108f45a", + "02e9928f427a86c4491a47b31454ea7d497435af81c07bc96fa61f4507494fbe4ffc1fff" + "a8faadc2a44c7e69c4f976661750f8b", + "01e8ff4cb8c58fa48aaf61488cc4118df90e8c06cbd88234cc920e5795597ffdc0ab967f" + "a7461082a49de56f02f84cd9d564316", + "06e77ac43fc7af3c126f997fe15011fa87a27479fbd5af48e28ccc2c1bedb6c0695291dd" + "67beeec3f17cbfecefbea46b6325fdd"}, + {NID_sect409k1, NID_sha256, + "ad43f8440071285d01fd79244907803601aff4bc5d14c77483a87cd742144d41c68269d7" + "6c9a83c09d2178bbcbdf99f927b378497ffdc907a75a3b0ad019e69758dfffa480871eb6" + "e1e17c8539373de611a557fad120d0bd147f8debe5f09a02e56fb607e9c1253ed592071f" + "042e42fee39775b407225a2b86a950d81bb7d7ef", + "0722951879a65bfcb414e11712ee9431eeb32319e0ff28601112f89276ffc2b96eb65c7f" + "d77d023f09914a53e2aae2c84652bad", + "0400a0304caec1b68b34c822a2a031145677fe515dda977f6932ea2a3291c6bb4fe8f297" + "b7d3c632f9b3806a8cd26e32403c27fc7a00012d4c3231898a4202f3f251802c690353ae" + "9cc28ae5089e259149bce444d31a38927dcb42ed613d4818e235884749057ebd02", + "0331611e81d3e6e3a24cc829c1cb9087a8c6f64c286e5f1acfb1ba764eea5ca55be544d3" + "cb95fb98407fb6c8f9eb1b3f7ae7386", + "056901f11ec69f91b31f7f41f7856752568b7d34ff3af1a2259fe15ae0b01391eeaffb62" + "9976525fce5d182663b7b23a8001bb3", + "04e89c3155afda2e64c749536392554cc299b70020362e6701e3a649f0a63ae5a5da4efe" + "d5c73b5e8098c0cf47d6f4c45c6fab9"}, + {NID_sect409k1, NID_sha256, + "d61a3765229dcd0b4fa6c57280f851ec2bd54d3ee2436935cd6d94e0120d0844adda1639" + "95fbc4cd9d7275da859ad8ebf30af9efbdcfc31c7c9ef42bce9011d37cf9d15fb018e117" + "bbc102f7d05750e5072f73d02c2f45509a55627a78cbd9082cbf36807759d1fe2ecbb92a" + "b30cf28434941712d38bdd100955d611987b5968", + "03f5b5a772d24bd5454bf26759dbd433fcc7bae4f5c593664c4d75da0cdf9430d7d9162b" + "ce3d7f6e13a344259da5a7d6a1635bb", + "0401ca1441b1f6e13138880196e69743206ce09c439a507a11c0fed069d4ed23676b27a3" + "a337c976c276809ae725229c9001708742013c47b14e3069af070869c12f0f39e35a6f33" + "4d98210d33c9da01ac80057911f5a392fb5c8cafeea01c1953e97d47e744160243", + "01484461d02c0337e8113e51aa7d46330f57d423b79b580a544d372524a853db9dac0c0d" + "16f733b273bf888271135a5162e70f2", + "0256d7ab133904a792987f8cea69e8e3cc674cd3c577f40ef6f12b31f52ac6366a2a3ea2" + "b2272c7bab8be00ca0d17989b6801a5", + "020d82cb9b3b1f25d993fc18b7303db4cfab91c03a97b249176f9bb2aa5ae7f589c74060" + "d25058c7acb6de1e888ff44481185b1"}, + {NID_sect409k1, NID_sha256, + "1f3c23636414ced48fab6763eed5b22537968e6bf08c178b3d31fb1f6ea773c697975970" + "1d94bc1bee7c354272811edec58eff50c93331b22723d460e56dbee90466b894354777b2" + "3b13a37d15a84c762caca70c01518bf34d0c2f072145d274b3b6c932b48bd815fe81161d" + "8507ffbc2f783bd212c29b2887af6d2ffa9d2b4d", + "046bb4a141c9099d531dd23ac440eff1f5b10f7cf34920b6b702311d490d25344c665ed5" + "211d401def24986c8094165d10f8934", + "04013db47ac0e33af0cc7d74f6ce647fd80cdc1849b15c349bf501c95893be5a440f85b9" + "b029713339fb888d7a93632ea4e0bd813601f26f7009cede02e054d6499c9280794184e2" + "12e3e1091032fe0e3c189de26d04aa8a5909569017cf06ac2a20acf579ca81f3fd", + "046e55a908f13441bab63e5327ac346781399d5a9035a72aa21df708b814b67e420b455e" + "1410014cb53e6ab00f526ceb396bcf6", + "06db7a7b03d6a85069a943fcc332cb8c54ac978810374b12eaed4a5fa5342c8eabaec238" + "bfc6107fd03d75dc2c6d258c218a186", + "010a4115161765dd0c22a0915a0d8cc01905de91d3f08c6d2d85a6a92e1dc00904f3be67" + "fef000ce19f57157deb9afba7582b59"}, + {NID_sect409k1, NID_sha384, + "ec69f2937ec793aaa3486d59d0c960ee50f640a9ce98a3becffc12d6a6c1c6c2f255d37d" + "29f9b4d068373a96beadac98fd5203a9f229bfc70bcd449640165ae5128e3f8d057769e2" + "8356e73e35d8e9af7876f608390090892c67391ddfcc1c332aa61efbf72d54bc615998b3" + "be8ab0a9d372784bea48c9fab244482c75cb2de3", + "06f2c6e9ea8109223d9a349fce14927618fc4fa95e05ecf9aba1546619eaeaca7b5815cc" + "07e97ae8cd1e9973ac603f84d838393", + "0401f5a9824584cbb0d5ed57f677caf62df77933ce19495d2df86855fb16456a50f157d1" + "8f35ff79b8a841a44ee821b36ea93b4f4001a88299000c07a9ad0e57c22fa8f15218cd90" + "ea1de5b8c56d69506ad0fd12b513ffbd224cb6ad590b79c7677a8eda47a8bdc484", + "042325aded3f71fc3ff0c84106f80a10af08d76d5e710a35d462e880e015a36d06359957" + "3ce2044537b9f62b51ed4fd2ed8b860", + "0667c74ee2d632aed13cad47e0b46a5176940652d7da613e4965876e7e22d89994bdeadd" + "6b5d9361c516fd51a4fb6b60b537e9c", + "026a01220a1166a4d0172428753e98caf0aaac5b0a09c5a3f11b2645d243991d141f59d6" + "cc502ac44b70e7c48d6b0d7b6ec4869"}, + {NID_sect409k1, NID_sha384, + "70e11efc78d7f079ae41ac3c31c96d3220f4abfe23814a2a4a78d9b1a25e838c3408bd41" + "6062e4b0a5cdadf0c6e16a11e00f59711b417751f5e4b43ecad99efbdb2a81c91a034e89" + "edc94eb552c3eba62808563cdf64453a1db07daff8742aea4a9fa738e1322da316b26dbc" + "a2954b2bc0de6da7518d28e6677dec6ba8af4285", + "004212b7fd913d794fc6bb33e0276e349c052c969ecbf6afc89b28f75a599a9242acf74d" + "ec9f374361ba296ba42a38407f9b7d6", + "04019220ebacedc60762877881262c0c3dc0c8a709fe2ea16cdaad3b680d7cc8aae8617f" + "0acc9b5c9861ede651481f39927a24ecb2018afd77bc7fe54266275fcadc0fe8d4c0dba7" + "a1264c79bc31479f4bcd02245cde991791a7b7e65fbfa907457fb6d450c0985ae4", + "04c01ff477786304b24cb9c95ed70ba376ed6e4f6b3ab2f99ac575c92d3801e7f43bab07" + "2268705d61d3e2fd881f754b9c84235", + "00987cf8ef2b382fb25a6a542e688aa96c098f5d16be0c7d46e961b4a4152c372cc06839" + "93843bf5a04f81e6068843582fca48c", + "036fba32f80cd2e66bf31baf87616027c5b107f72f11fc766b42e2774e29e10e860577c0" + "d3a27a3b49754e6a189680b7a638408"}, + {NID_sect409k1, NID_sha384, + "d922fa515e3bed60b517a2d37cafe4c041e5ab4b5c8d8d4011bf9fc4013dd8abf7add71f" + "cfde5e71d6abe76bd0f749e960cbed55711c87b5629a2c39cff48ed7d0feaf5cc4765e57" + "6a4959521f9a45fcba0dc65ae618826447e02ce6e1cab5ce8d6c96c3211adbb0660de7df" + "7453f3aa726016941d00d8ee536cc106a603d126", + "06baeebb5ffc89c94c3e8b37b9b0904e7c4b251d204894655bf3b1235710215c29820b9d" + "401c9ca7df1404d2d62d708aafe208a", + "0400a0b2a185ad7ddcaa0d8d21b643a14948d3552e25875506d64e236a90d274ad1ca678" + "e628acc208bfe6b56c02df9f5a36aa94ec00fef210c7137237da8ecfc2f069cb9390c132" + "d1c6ce961f2bb3ca925ee727c967f8a46727c8811c94ef66f20836c661a5cd1c59", + "02185be104ad16abfe4fb83de5db067d37ca58510b786b109514debef56cceb4dd6ebe53" + "b25127b85faf9c28b56d6586c26d60e", + "0404831192b4bd453c0a7e850815ac3fad88c7a2da27d29e83ca6f22213635a366018ac0" + "038b1fb1e4c512cac15b614fb69b3e2", + "06f677c361547c91428d0e200dd00777262a138afcd828238d132c56b2c232e2b446cc69" + "3fdc4013f05ce7021aea5b5b2f1b34f"}, + {NID_sect409k1, NID_sha384, + "4f64d0f6bfc542a0d4347576935bd68ca88524ead03b8d2c494061d0658e6c3e14576b5b" + "cea5f2f992f54cfb52b5c7cf1dfc517205e0454510eef1b7054a8cd06ab53ed2468193f9" + "8ff0dd62faf076549ab2a270f259276d5729996c120792c6f466a74ab65035bf38ff2c05" + "5b43e2a8b8e2449a2375ddbfc18242157bd905f8", + "008e5f66ba53e7caad1feda122a80c32c82d2c32a7237b8ee8ead44ea8f2f01d77c7056b" + "9dd60b92d051f060da8532c1fd0e8f4", + "0401a3d020a0c7e3f3fe5b3d9fa6b6148cd0c481b4f9e14dc85aeffff35e62545654fc31" + "3f930ca2e33dced28ec28d0fce6ceaeaa2013c1ac166c3c088e8a4a9d44556e3344e52e8" + "741ed1a8b526a45268086e2fe54c24d398553d509439ad4957454eb68af594e683", + "0095caaf063abba5073aa7123b2c0e1666d29bfdfdfb0c484e18931d756ed0845ea15dee" + "1e9abcbbe4576113a8806aab9476b16", + "04d6e33001933221e9eaa78da5874f639749c7396dae90f2da4ccfca15b50ee9e50521cd" + "84d78a098e0c383fab0186b3dfe1b3e", + "001e17cc7baa3e9ff4d882da970caf7d55b4e0fb7f0cdaaaa8290fe2fc9cc31d51b34b5d" + "cc825bf6799ce22fc95382d46f3f98c"}, + {NID_sect409k1, NID_sha384, + "7047d478ec5282d55db8c19c97af10951982d908c759ff590f27d57e2664f08d526cbb2b" + "fde39bdbb1aa3dca5a8d3feb50b868be6651f197abccc9d8040b623de367e2ea1d20ecd3" + "02afb9e273f4be9f3f64f2c2eb3f92d5e0e375db6549da2a589f0604bc7146562ccefd15" + "995a7c4208f640e7a17afbca69cda4e173380523", + "04ecb22b44e809f89b16abb10be062c89b41ee34e110403e42a20ce59a99afdc22f6f6dd" + "a56e1d9d1b8ce1d057f390db111def3", + "0400dbb4a6ed11f36eb78417269c1b1e9725eba1666591afaffb5582c8b4d5bee1d73922" + "b0164a05bf21a12052171abbdd3130555201eb385afe8588ceaac9f39a5cb4455e02bca4" + "8f3d2242730e0f9e06ff1db24344379f96356531676cd5af234a120f4b61f7e041", + "01cc97a718ebeffed4ca7a9a4389d6b0fafb73ab000463b68b5580267aec203b6231cfb5" + "afbf7ad8192f0947c7f40d9e060ab32", + "021a29f56c31227daf0dc5dc919434978943b80f4b18748bb5f7d6702153b966a0a4af6f" + "209ecfa3aae0e4f32a1b7c6ae58a55f", + "06921b2e2ab81517a0785c4ac3be3d7d4b4c917d7a1e4313b123ae96056a2a4a66d9e008" + "19d8c1cca5bc0d75e4e05477c1fcbff"}, + {NID_sect409k1, NID_sha384, + "1a8384b4771a410663e56eb36c5d9ede8d161a8fb0e31d3f74bcb017b9e31232bb2e2f4c" + "65a2d85bcd1cedd93ef08d4bb4af0095731574ab3f2762788a1ba3bf0ee46684da8d9dd3" + "84432fee99ed3c69213d790a5d81b351063eaf2bda71ca4868ac36be1b571024a8bf0903" + "9b347fa996d5d161078314e24b7d073e05cb3d48", + "051f9500c15ae73d6d479b9f3d2caccc2039d8d03820befc2aae3bbaf65d59bd9cb3c4e3" + "aa8bed5b3acb70a5566047ffad80729", + "0400ee8ca7f55225760c515bae053ebbf4ab23567f95c7091fee2acfff079eda297ec6a7" + "e9d526e12e5976431f9d7e52a2318ddcd80185e2c17705a2555fbb8afbe8e41ced8ace95" + "c83e198be3c7dcdeac8c2c5bdd988800f1194e553bd0348ebe6c29c16f35d50895", + "073f96451cab2d3ca9810e265b3461e0fbe7f32fd6702f06891b97969b133eafd68e53b5" + "26b5e32b0d06ab61ecd75e1bbb21b7c", + "067d55e709f6966cb2082d8021a313850c53305a3bcc926b6f9a122181665328fdc8e05a" + "88de812357be85d22c61c919876fec3", + "063d5ee4a63b1fae39f266a9f826754f5bca4d7bd414dedd16858b5c6ac2d4162e28ab57" + "215c6713320d3d6960f6b55e3f1897b"}, + {NID_sect409k1, NID_sha384, + "43513d6dd8bb0af7a6f5a2b35f99957d335a48d54f2c4019ce9518b35441d4935518976a" + "b1df37110b5b53532cd9e2c66d9f87ae7f683d7efdbe1775a6c15eecee84c6f879999d07" + "06f6779dc158c111fe8d7201983883bc8334f51dec60004eb1087347bfdab20f8f2f2605" + "56681e05fdbb8a6139857fd3bb2df5bc1f2dc143", + "00cf01dc4462cca764f4f8cbef48c51980737b9b98d1384b8de9f4c733829db7718a9b5e" + "aa46a8475c2144fe4454cb8eeb0a443", + "0400806457fbb7fc577497c937600c5a9c4df2c20cf7dad4510e5ad617fb2849bfe6956c" + "3efeab6b805cb7b63bf5d1c94e5ddb456e00915071cee2094efdcc155f893da8d83d9a5c" + "234d0f04f738b7af5b8fddaf1d3aa152fc11894a13caee0009bc106a64323e9dda", + "024968902b50febf13be11821d0d316f2daaa07737af45ce2e855aea6ed58f226d2279eb" + "e4295c5d7674104bff75b899609561a", + "0549f18f1d654f26ca134df4707694e5d9b3693bb34ab5123ce4d9e4c2b2d9756ddad957" + "a4169fc9bcea29944903080f6f5d01b", + "021887355c6360bc4ee59f1badb5325763e9428e60b31a7abed06ef03bff0b1265662d60" + "4dd2e0140c355c70fce1b56ab143201"}, + {NID_sect409k1, NID_sha384, + "752300bc5066d0efaf807183a41725e349907b7339d77c79921ead3c685b616b0eb97e70" + "8f3880fce0136c510c8cb53b22cb424af6f1c34633600939a0647c02d8f9601f9416f1d2" + "4a51657241fb559c25dfba91402cea43bca1a13718b3945b048725f3df560e6717cfc6eb" + "d894e29bff1e0c7763f15b8ea93e67385f059598", + "063a9a565497974c6dd459bea0d1196d74f263f333c31b7e8591499960e1cd79e2ef4cc8" + "709f6d54713f873b16e7b0be42f71c8", + "04018872e9d9410dbde671fc050ab88101f01d146a72d62b630b29790b20fc02cb62cd0e" + "bb5b453a46c60ec2d2c66de8715c32057801b6af51db1c42b743b89be0900d23f7da80b1" + "5f2e7a2a965c7bc13800bf58589560af4697f873b6155194badf5a19a653e63da3", + "01d3278e6e78386146fc15006258d7a62a1345db3c2e44fb8d3bf8101727bef254a9fbff" + "157072326a85b5ef4e17c5b0212bedd", + "07bd5b54d9c6d6f9c87f4a66472be2c4bb7f521ae56c1dd71781d95440b0a151d206ddf6" + "27e5ed3f9c7df2fc914a78454e97616", + "075e39ff66ab0e0d1b46f9679b95d10b692874d45fd6898c569aac28a53569646bb29f85" + "56e529ef83a15c574ad5e1c82878154"}, + {NID_sect409k1, NID_sha384, + "f620603489944769c02e2f902c2299dd5f32b5fb463c841b7e1fc0249a85d2c31684bd3d" + "aacd97de8291c5d39e84d6e59d3dde1b30c181bfe8d31b8d8e080bd191690a67fa00024a" + "c8c1b10981b40d4f88789ecc58fc69b15417fff34834e23453bb9933a43d08afab74d056" + "f366b40ad167b51ee5f008db151a12b467d3eaa2", + "041074dc186193d30aac7cc6d269b938ab40b257d095e54ba79967a377a91b8f73671470" + "cd07f0a3d1db7cf0a31ba9070625e43", + "04018fe9848dc599a759d90530480a6f11d052d2ce21a7275769ba02a61658c3b69ecc54" + "6aa6599e6699353ee1d65ce533c69fb2180192b9c41bfeb2af4f29dcd1c43d3fe72a070b" + "5d085d070acdb8c02f0dba00c9471df1dcca1006709676bc08b8ddad97310e25bc", + "036447681292dc781f7f4ed60126945354ad1df5987266038c5049d698b2ae12965b6fc5" + "8f3e944c4751406087859973d8afcd2", + "0541c22a6cb984cafddb3269ba3ee56af64cb36d03b7cd1693b112a7df20f0422219f85c" + "6820130ad53ef69fb66f3326bb863a9", + "00fa66b163ec3582760b048ba9a0fba9443d7e908b67d749d732ac9b6e89c1fcbc6d3ff4" + "e02a43ee41414b15ead0cb83749e0a9"}, + {NID_sect409k1, NID_sha384, + "5575f610762b42ce4e98d7bcf45a7a6a0d66ec7f27d6b8b17f1961249d905bc7e58e2ce0" + "806d467f106b16285dce4544c72666d08b5e2276cd0c4e13187cbda8aecf57b1855afedf" + "8fad39ee4fe009f204e60bdbec79b123456ec2d85631d382b8a2f2c7634af3992e4707f7" + "b4215e2c9d3b0aa8fb08267953883a4213669d33", + "010820db54ccf0226161aeaee79cfd2797f87702b4ee91adf8543b3c9e79579d0df8a889" + "e366ec1e0718e039b87a37c24d620e9", + "04002eb4e313f158ba7497130e2d64804ac45a7db207c55d41f39979e0303dd2641c8105" + "0fb7f24f2fd2485b90f60985cbb15d56be00a190fb6c81c104164578da6bd4f2b193cd11" + "935e1f87f14e824c2bf8c82c39f0be1a6de3dfc6dd68af8cb14f6a78f38773a7ca", + "0118e911f676f004fe581d1855e5795e5f4ddb33fb8d409d557aeea87895b7c23a513ca0" + "010f98b3a63f2c65da5e3b6c37cf5f0", + "060c7f7c47c16b294867cee3e65eac8fc828229a5d3adf8e68e14dee620e9d4e7b78c8b9" + "02b5042b5f19c94e621c52836c95ba8", + "008d036087b23319553faf835b793c73204cdbe2c1c2463e74de8f404e66ff15ce9384d2" + "6149e7300ed1a109afd1f915edef912"}, + {NID_sect409k1, NID_sha384, + "81cf067411dde2d0ab04fe5fa1e28e6975cdcc571588de60a35bd956a535fbbda4affd08" + "03d244f3f7e6902a2c9a7ef2488691b6bef7f8ffb33be09ccae4c5285265e4957f7928ea" + "5cbabd6823297f59a7cfc9939a49f26bde74c4c69e2d38c1efbacbcfdef0112138431580" + "72be84ed3c1781f67a0e2d4e9ba76a585c17fc0a", + "059d2a06e8bfd5e14a9bc8777958b85be5e97af892d2cdeb0ecbd2d5017952b5042349db" + "5fedba2e26e7b85bbb31ad313d99434", + "0400af276952a1216ac88ca7a194f5b27b7c98c78c42f852dfc1a2cd4c1a477ed16eebfd" + "c90f613b6e264576a35c45f49aef8a564c00639625074b69346dc6c617d624d63ce415a3" + "6154a817f4e18c59a3b09e01589407077b19bbbdd57b04ef8fc2cc23c673d52910", + "002728f7e9b4772ab790af0be9ed5b3eab697c4710249169d2a5782ab3797b8fa21bf8c1" + "de659e3060af5a286353402ab982320", + "02a7027c6f94cc236dc8cbae35f9c38102a663b84f66143e2fbf9a152b1a6478bd803bf3" + "171f933f63509d539a54dd348002ef5", + "0549ecf85ca1bae6d9f0038dcef90c93121a654552780f5583a7d44a73a9360c6799e76a" + "632bc8907ce4626c0439f1518e3a250"}, + {NID_sect409k1, NID_sha384, + "8ea18387940035cff2f37278d321b344231075db43c7fa7fee9bd3fdefe5e8f03e7af9de" + "afa1022eb108e19ec11fae34536a4fbac2e8c8139a081a997c080cbe8f3e2d2a72ff26ed" + "cc5338b21372fa1498e439e4d9bb12d51cc539f859047957b1b1f1fc30b90231eb06b365" + "a4d404a1fd5a0e5cef171fc95b04d0b557d78ebf", + "0405590893cbbe18f4ad99df28b5f9d17f8f1882269aff0b7eee9392859d68927a99c942" + "a3075269ddec6d69c0df2d76ab9d801", + "04006ce67ace45a9cfa0cb45e8e1d0eeb44e94bd7527fed6b563f1069140a3f36e010f85" + "e1ae5ef14d626c78465cae43230090baa601a66a58d87621b63ca662130ea342db029acc" + "2d99bf76cf6ec4e53ba71bde4b00e508d332081055a65fc6f44a96f4e947d729dd", + "0035f09e0c15b41c958596ad3f5c4bd4a3685ac94f19fb97503fb5fa29115cb18fdff4bd" + "104535847ff36650b7461550dacf2a3", + "051775fe1503ce80b3d581ea3e5ba761665568ce0eb7d6a7163d8d025d76002ca7bcf6d6" + "88b6477ae85d09c0d4017aba5ea8019", + "035cbe69edfb6fb99c9e45240b7a587c3805ab2ed6b0399c7dd8dd76187363b2ba1def66" + "b2c3dae4bc2e40d164bf0f4837798d8"}, + {NID_sect409k1, NID_sha384, + "6a253c1aa17b2b1e6624afc8e7456d366ef5b1bd78e740538260f395481148a64da0b6a5" + "8cd53d7e06c691beae1a616547cd95c4d259a371e51c2c0e334c8a5311ae31e4c7af3256" + "86ff9f7a36f731010ee1a9b8a29169ceac36a060dd23611dc9713c615424888bb574ad5f" + "5755d7311bd169336ae986c977a394bf16487c4e", + "062bbb4f565aa0f23b88ab9029d33b995729d10fcfc33ba7c4051e2fbc72f15636a834e3" + "ebfe604b927cdfc89f53c57f36890db", + "040125242acf14c7e08e9f2f0194f734841758b1eea1e37ba80b9855a14100a5f0b57bc5" + "2a0200cb640121d96769e9cabc45362f5600dcf52cb899470943a37d260aa85fe83c3869" + "c862001021660ad09b4d73f7739ad331b3566bffad590534207c6db9acf98399b5", + "06095b4ed8d51e37f6c723648af4cd4585d9d250d7519139f58a93c75f197c4bbd1142da" + "59769a5fe178415c677caed1c3da667", + "041b212a54d4396ddea2898dadc363ac3ec5385c9b3b8ef1ea17c3d2f751d4f791372385" + "48ad759b5e1700d7d78072df3bf84e3", + "0149242afc524b0c3583037da153f539aad85aa0c19c6c70852e3c3923df8c3abd0189a2" + "abba872932eee2e6f45e02f98e810bf"}, + {NID_sect409k1, NID_sha384, + "0f91d0f0139faf3b90a3d4bebd7e96ff6bb6f90f6c68321fb392637d8ab2a60d649a7b73" + "64ee6e4e274e1a8d342caee36cc11c56c54247fb0a8e8ef81ac4322b454dc9a195dc5456" + "7bf47ec8d4fa4cd32e76d78ea2d08bcbce3edbb68fd8597e56d5a9f2df4e47b2701046df" + "89615961db601bd8204584a6a6cfbb627e2a1190", + "03fad7031cf8810544a3e4bd1382c0a2e22c5a9fe4804ce67b27591fc516ee81dbac841d" + "399327168aa6abd79e2b5ef85df1528", + "0401ef0f918c683be57eeab95d5d1850bd492ace7f4b37785863647774a028e963ee2c0e" + "ea801838aa8217fad75c5780f1c36e8d4c01d5dfc69bcad46bde5539c58ebc89e1db2a3f" + "65069ed963280cc2cf228b2568bd53c6e0e164d6b63a5d3c2b8e3be9d5139a62ef", + "00eb16d784e2aed724cf1e4b72fe76b00dc80948c07f9c7524eb0e83bc59c12a8ed16fa7" + "ff21dffb8bbaa82925848a19c93884b", + "04a07e79b4f771363ad4c46cde0aadf3df4a233740a89168c97b54559029c51dc2c79b7c" + "c94a0e4e3d2f94e376fe47993da28bb", + "0360f559d37a777119b2aeebf00cc17e2edf04a2cbdf74366f5d34368d2eb2c92958e4dc" + "2b7453d5a509407a4d4643cc0235f57"}, + {NID_sect409k1, NID_sha384, + "50c17c1fe4dc84648e5c3c3ab8f7c971d4c58d8d56d2b5ddd92e35e6792111ed8dac7644" + "ac8a07ca8bb4e38e071aa47b22ffe495e9083f9bf781ac1b5fba571862c909c7aaa7b8d0" + "5ddfb7ef61c99700de734d5658f44ae9fc908c85a2dac8e7f854d6d24be805fcd7f873a9" + "1252985c5c73129c60177ba8fd99daa87b25a073", + "03db41b4f637fe7977c90e4f1a21799baaddd1826c667102414877138436cfae1b995984" + "2b8097b5276f15f2b982ee59df263c8", + "04018eb25bbdeb41c5d14edc675fcac8a523acbfadd6456632bd593ab5f694a7734b163a" + "ceb6e6b3d8ed83fa1cf7b5adb9871a6626014975abca1cb769a243936e65123167e53527" + "9197a37d8c92c7b138f31cad4e95c5f62b06f438f94c1a61634b34be7b96f09fbb", + "055fce73c9c385f007256253281c6b9d0930d127939026495d0a30f25f77fdb6b334043c" + "39fad4223852f7101fce72746ea205c", + "01d7c26e0236afeac032fc5f3dbffc8c03b04417b514adc26d6a4f697b4e87a008d5ae97" + "544a274c25ff66b98111d7c651c9381", + "07954191fad321e7f2de95a87d5a9c4527e658ef85faa6622d5f34f8bc2b84c881ededbe" + "0281456e9b70eaf7a207e253d216533"}, + {NID_sect409k1, NID_sha512, + "3583a3226e2dc463a462fefa97024e6e969c1b13bdc1d228e2d7823d9f7c09012390c253" + "5baf086588000e908309090daac6e6d2b06d2ede6fae838ed47f30b5b481185f607a3586" + "f6dea47c8f84e9d3b96d5b0ebae2462fde1e49d84d36658e87dccf5e30c0937feefd8862" + "dcdb1a1ca373f6ae41641502ac54df6633a8cec1", + "065b76c6093d9c49591293471286df1a4444e60d9d06cfa114e175afb5f119d2abeb273b" + "0596019a0ec5db5b5869f2cc827b364", + "0400266321fd15bf6b1af862496f467069819e3860f74a07825e68f3d023985bfbb838a4" + "9b6a41b6515cacf404ebf12ce0bd3d6d70001593c7a8e629599e63d3282cbea780235182" + "77e6731fe8d88cbe525ded554b51a7f8803ab9e330f210619dd07df8f67e1066a4", + "035682af873829e16b72bb86f3ee99b5d9f052e4a631b07f87d3b361c8d8260a877231db" + "cb3f4d461b4a1d4467824a26a5a6414", + "00a483dc2dc6408c256fdf63b04d71d3c58a08db7167da217f466cbbfb2d68444c10e87a" + "9a1bb04efd71135c00226e58414d407", + "078acfad2f2492f74b0281d53e4224c7544588ca9ceaeb16bf759b20c2f3d3ed69c64615" + "c247213d51800569dc8b00078de68ef"}, + {NID_sect409k1, NID_sha512, + "60ca58462d53d074b370127132f4e59f5eb8d15594dc721a94286afd082a8934e52462c9" + "c1c3910f8b50d7aa3671dafa5972958d876d7992467b2fee3795a6f9d8a7bd3003a8582e" + "a8c003aa1e02c08ab6804d85bcfa13a815d75c938671f0af0706c68bc70a6155708ca755" + "cac2fbb68b2952208d63e0e2e3d816f04c61bc03", + "07e9993f3fc1fdc4c376ef77ecded96006ac1159740bd1b2dc6ae3d97e15a67383f1fc93" + "1e460b9af3fe14a54e47919667ed06c", + "040189b82003b546f94c066963239c7a590e064b88bb4548678853545920e413f2be3212" + "5e40efb82d2c9582d2d8269c1d408a7ff0011583b267727ba6c1e17a244ba7acdcd83698" + "6089860ee312b6dc2d88a984b1fa232eb0419730db8fb94a5e077009c1d55979bf", + "07574dbe04e1ac2bb34e40f32d6f6db364a95cc5770b79888d72b74bd4dbce9fd91136e9" + "e1152424d76688dc995bbf2bea34175", + "009e42a63b41877e200829356a2191fbb6f2a9a234be58c76b0852e4f348ca61e7492f90" + "a37feb8b95a6dd6df9d1a2e61c63b4b", + "01499fdcc804fee8193de080b085b7513eb8022503de5f64dc12c04c0ba24af30e30f63f" + "0e3eac2c82eb20c6672336f8732ec5a"}, + {NID_sect409k1, NID_sha512, + "c749f9bb92ca9957ca6d0124206ebf65e860ff38a225e241950bf4526cef3f4fa9184ec8" + "3f71f813fe852dc08eca6b45b14fc7f2c6a19296529bfda007efe9d0d26492de2a902b45" + "ed39603e22f0a763dfa5deadd97ef6feb859d860baa2cfd1d066c0be0f9f4e0e2fafa69c" + "c51b12e814ad2e33b0acc0bcbe1df8cf018dcd4f", + "00c11e2979498695c660a2bdfd105b115bc4ff8664ea15cfb40c725406c6fc9a13027bd1" + "d72ffff6258f29e4e19b845243444a7", + "0400904a9bfebc23607c7c89b7aa89315343852cb894f54fe42ba4225285e58c6bc318b5" + "5691aa6a6ef22eb11f44cbda89f157d7a8019cc1826280e54832b455f0ce0cf89bdb62e9" + "73a8e819fb776b1a202b4f207b8baf9072929c9e3f6a8ff996d6d529de899b024e", + "070fe023c9341df9348f08882bef47bd8dd7f13db7215d1cd52cdbe7919031a62455ca96" + "9a8cc6db0a05a0b4befb47c142c4f34", + "035e7130d59d92ff8c4f264fb2c346e052bc305c7f57549a0fe43cc7cdac6aadf2ce1939" + "222decef4e1f900e3c2fb2c52bf53f5", + "0008d5ec1ed2091309ac11eb88157ba5122bb9b5c858a46769a130f7a941818445664ac7" + "8325e0b6d2a11bc89d08fe0e87a5bcf"}, + {NID_sect409k1, NID_sha512, + "4de8414780ea20f7943b1f1adae5e3962d96e828fee43bdbf2831bd71bd25df2976a3be3" + "7a7a667c7fbe1200de578920090d131a750c9bc09bd95b261234ea8cc25423c4ddfff565" + "6d6b32da6e2f6f530e6673a8660aeca31273bb9a3a21bbd7031a2fa71ba37c004d3d1c64" + "b2c0798783e47b2efe1a208959ac16e35d444245", + "068dfc23c6635bd1fa1076dcbd456ad6e8df7ce7c1370fe275803befc4ffad007fd062a6" + "1cf1d50b93aeb9afe1aab47a65af82a", + "04005591f8cb59ccea17bfbcb74e69f05218d16175f0547ab95f507ef8d7426c077b52b8" + "2dcd06baf6eae7a66bc72422236e589e420126a01d5c2331a2d00949e07ea9242ebb50d8" + "30b0aaa74bce841d4e43bbaa9e9aaa01ba25db7a8a2f4d72977c0f016f625cdebb", + "070682c9659089a703dd9fcdf2f3fa0c1d1ef5fae3f8f1b3dda55d9b611770244f892689" + "8c904f6952c1847d287bca21db4dd59", + "02734111e3b736ae795929f835701bf290dd50c0fd625738ab2769242c1403197a3f4dc2" + "9ca618c2e292c6bec6dccff71adb698", + "0755292cc5363fa74e0193a806879d3a275b4beebc97250fb230efbb8364b2a30098c048" + "8bcc6e20449622d6a5fd2ae24d7abe0"}, + {NID_sect409k1, NID_sha512, + "a081d54232f84bb19dbd52ec3812748e2e6486f6cf1b177b27929504ca878036547eb435" + "31bb5b3edc81bfe105370427e92831d2239cca0106d031d9fa8da9cf89c6fb6401377d59" + "36b6329ccad854e5567181b8f16a37c35f333eaa0ffe91d727d183fbab935fdac2d5670d" + "afb3fba59e4fa2df1746c58dd8360fa08af7f4e6", + "040807fb888e1d9fd33604546656a493629d94d4a0a9de2608962225ed158167f9e2438a" + "be2d12a11e2adb6c2b66ed78215b0b1", + "0401787c0e6c55acd69bde9b0a84d6022796d5b5c60fe5357bc0fa4386c16f61b38bfead" + "b6cfebee7e7701bde24418b8b5642afefa00d9579d271ba3d5e2327eb863cfdca3970700" + "55b97714e385ffc2fc23528f696dac1a4d0e535641f6c876f1819f2672a8c31cdb", + "010b8f5356d8a029659492c444876f1d274b82681d4f600cdb5fb2afde13598ddb71676d" + "9ed86e83351c70678886e8237a865d1", + "0304f43f9705d189f47ee09a079494030b0756993a93e4c6ee6b5e664f63431f99e50574" + "7c24377e5930f13492483e6cd06ebdc", + "0580d4707c97f0330f908042a6cb2a2b313f07bab34774ee03bbee63a4ff881b68def47c" + "d300fb49deb49829bf486d1efad39b8"}, + {NID_sect409k1, NID_sha512, + "ea60266f1538565b3ff42fa4bbfe319be070329059c52c8bc04a7da2824f209c1145a05e" + "551ea59ded8ca8439c328f6907da4e81d658937df614be98c7b8648818ea80ef40e49aaa" + "4431f4a211d62acf2611f5d60c446b2b25745078c643859be1b12b3141a09ab765dd63ea" + "1f2a2df015eca0840087a5db378c4c4cce76cba7", + "033bda0a02badae08fe40c239b9d59e5bfe1c4d4b9b7a5acda6790bfd77ad08dde5e93a2" + "da80ec54a7f88146d72218bbb88aa10", + "04002dec536832c8acf007daa66a47e4eeecfb6991a359f8c412299ef56c6ca2faaf18c4" + "db708493e84786a7837ab74c5fe0644cee00906c8f603b579cc2384e0803d31d577f7c91" + "c55406db3b2db91bbca323fdf3cb6d010617ad1aae7bf414c4d974f22e6f05af53", + "051e8d027e62db2397e4a807d98a24455a76eff6dc259ada89e794dec1484b44724894ee" + "ba842f60b73287642570460896dbe77", + "031769e6777444095d934d05dcdf82405c43ae91ad5fa9201568ae2aba25712717f1af2b" + "8f49f6eef373237bd70c34889d0d271", + "0023498aa50ee095f33a4081bfd70a9484089c85fc7a4569f560ed67243745c823cc0217" + "d29e2938f06ba9c8790650d10fa5b1e"}, + {NID_sect409k1, NID_sha512, + "82f38c9405ef0d26bcdd5b3fce4fb0060c3095f61403418e17c337933f0563c03691fabd" + "32ab5e896c593439e7492a9970ae325c67196d9e83fe0f9780409a930326f7e6efae035e" + "f8c321cb9ad12461edd5cde66c04739fe079db65406b3c2d22f2d04b1a4335285513d4ce" + "b901d2ca2ad10c508302266c2cd6079ff14eff4b", + "04ff431769d26b8837d3e1295f5464fe82be29edefba76323e92078a6483ea0daa962215" + "49102509a1bdcfd46a5a2e5de10c39f", + "0401beb74d427d849705cf26e26312446f27a7c5ff26ea9dc1aadca763254fe53a622de2" + "9cba4fa81ee2f9e0319e752f72be46cc7e008dfcda35a00ab77c3c47dbc05b0678cf561f" + "575369507097833e86e523dec879e0ae9583b4261f7a73c9dbd417accd4ae6688f", + "005aff3ad332af23e0dc38c16853252825076d602ed4c6d947be751af5dff3f59611e616" + "6c31740b5e5a167260adf2a5466289f", + "035c4e8e1858b9694cfef3e864ed959638ba309ba2066a28fb9d0e02a66cd4c187dc6fd8" + "ca5fabe68acbc2074168157b685aa6c", + "04ec2db89645018f9845b7ae31b8418a767e3570d401f41db18e424fe861bf09114d7860" + "6a056617613447d125a283be5bdb6ae"}, + {NID_sect409k1, NID_sha512, + "d8506fab4f681ba4ae86066aed447571eba4fe04e6585fe3be6af2ab1000a3da68c5b0c7" + "11a85ddf3a40cb7c8944eef81f2094650459e14f5b848e6add7e580b0198070f873eb3ed" + "5d0728eabd92bc1398764b94cbb4cdd7cc2027b9762dd10782658cd9e8a5022ac062fec5" + "35d892198c8a387b3d2b6f7c92b1af6ab7dd9e4a", + "03f85ca1169ca7e9df44cbc6bc7d2868c9d94e8f8b699a42ca492dca0914eb5789a90322" + "18dcef7f95f959c9554a1cd83360439", + "0400aa3c77dd4324258bebe7da5338c772d3496e3fd0e57f455459542f1a1c5b47692f51" + "c3815c9549d0c23fdc1ff610fff6847ea8005e626d6aeb86dc51f3b359b10862cd33ac99" + "27e38127f7f17426f2369d62132a2a62fb6b8354c5ca0b3e5c7c87117b4f777a0e", + "0495099cc73c9930333ae3f9d0b7057d7c70e2bc7c805c0c6a44404739b3fb68f9fafa53" + "033b54b7ad7bfaf4bbf7baba0dd5a0f", + "005612fe87c6a3a164d269da902aa43c5a4e0333770ea6334f05750be3f31ee758d16929" + "1e15b1540d40b60d1bda279599f254e", + "011a633bbc058550a597585bbc9f33099eb517795600b019255f649493d4a6dd533be8b0" + "965d9f9d9698677491bf929198ff34a"}, + {NID_sect409k1, NID_sha512, + "b3f30d34f252a4c26f396079e773142bf61c0981d912333ade3de4e27cbc72cd8a16b318" + "07f0c46116f87accb854487d83ec8c6a61565e6fca145eab70048245db08616779d7047d" + "b63aabd90dd15acbb05eaa510072c151c0518f1b34582b95f43ec7b9484b2993c176de79" + "e84566764467f72392ef31619426d159c91816d4", + "03a97deb36d68f81f50c8829d412ee5de7f9d775633cb69c09dac558182039e275fc2582" + "40517a7c4aa592e364765321f27cb12", + "04013f0f4c16a47ec3a46e7a088c1b6a63ef61eaea46aa9b2c532d8df84dbf64991bdc2c" + "81ced3635e562d1403dbcf6aab2f8aa9da003aaded3b99a454b820fed989dbf6430ddcda" + "67db58e356397d06aa137fbdb365ec43994abd9c0a9fadd2887da9539bb4ab3c44", + "06620ad14a5835b9e9e104607c317cc599416683a60ed8865acf78ae1e861246567cf9d9" + "1f759c2d4c82cec835a4784d3c231f4", + "068faabcb7c716fd73f129ebc6625f5b4660a88e47dc7dbcebab321051a61e46b74409e2" + "b0af420e1671ef4efe04973c43471ff", + "06851e5da033da0f28a89dbbdabe93ef11331c55cc03d5b096c0522370be681241fbe71d" + "1349f219ce57761c85fbe208ac36a36"}, + {NID_sect409k1, NID_sha512, + "0fb13b7c09467ad203852738eda5ddd25b17d330e82c279630b0e1f0c86681f67f6e537f" + "b00da9419114973c8559306de58b0387d86e52d821d982a60769d2f15fd5ac2ee6dc55d8" + "ac04ee247282cb2866b8cb8b4d7b4b6cfb33bfefdff09a73d727193e5fb939ff66ac5fcb" + "644a44f9083a790888cc538c5eb435243c6a34a8", + "03b1da0ffed24e1a3b5ba22bd684337f6b08053591620541bdad50c761d66201a2cf21a4" + "cc636426456525b598e96baf97d9851", + "0400116a1790e621272b56cb4579ffe6ab629a2d077b779b73e039d74f58c476283c110b" + "b18b9c9ed63de7288dd678064de68b7df60122b43afccb88982f2e07ff35468178572bd7" + "2b644322d9e1ee68f78880169a83a5bb88c6c994762a7e8d80e09333487ac30fa4", + "06d7a24f0fcad549e9c36dbc70ce264a75eb37b74db98b1f6a824ad1e5635be9818f45c7" + "544927807dc0fb3bb5fd38556e8656e", + "0232339b50bdb772d15f2cb8973f6dd9397af45cebb69adfc089bb802e9c4029dfb2078a" + "8a26d7197de10638ce512e5904ccc5d", + "056add03244174966d53105c570e8fa660ae8c5d53316a24cd26f24e29e4b7459f4c9dae" + "f07442247b63665f97a3c07d91a8706"}, + {NID_sect409k1, NID_sha512, + "f9b8124281628cf4e1da0cb4f021c8d19d815644cd80c7c8de4cc62722904ec4cddd26cc" + "4891f30b15098a25ba6923c6abf4774deb6e1883fbb409862f94467e75a725e7154be860" + "fd58347577c83adbf18535c54b102220197afa062cc1c84f6094490ce488af4a08d2c5b8" + "08a2572e18a59de96c87162f88413795351cedc1", + "040bac7e0d3b54c7753c79d43469e310d876015d948fac4e3a9765444754476af72330e8" + "8d79ee6119697aafac8435ab5690754", + "0400bd4fe8daffe47bfdfc43deca20b15da7c999084bee8983c62e3dd33740143c38d8f4" + "32cbacea51e6f53994265b2d8f4c393f6e006d88c33c31f4e143b13bedd5738bc1191fe6" + "815a099fb7b44617fdeb08daa0cb74edab7f9a8c67ac1e9c0f0fb21a9f02ef4b6b", + "020f2f6fcb3e471d47f21fb15301784f7cf3632dad3627a9ebfce587c0097871eca580bd" + "a051b100f991aa6de5edd3a7684e839", + "014f8884b5107e9ee5cf6f5d137ec9d59a85a6fa0431053d58a1400fbf0d518e8910179d" + "a1160de2c6cc8ea8ba8f3af8e0e1f6a", + "019aa8d55c8d876989f9b9559db0576f91c4610dc9187c74aae2d4f212cd94d90dd81ee4" + "483d88d866aec1ed469c5e3eed7d90c"}, + {NID_sect409k1, NID_sha512, + "4e3cd6100520db050af0daa69fe3cfe6603a223d4f2a6318fc5836db8640d4c7fb80bb78" + "1302036d2d6fb8e552b4eaef3133b98ba2d36b9ef0b86243b0391413c73d48ecbf1d1917" + "0f1b3b781b35ffd316afb1d55d1dda8e91eed5553780cb2714a93e7ece698b832e853e25" + "89c5ba2b8a997bbbbf625071ded66762af8cad42", + "025b7eb3bdefba3c5134438caf968f615b315204f348006f82e8d61057a8a8a853230cf0" + "500f9d0b8c1551a59b9184862dd2ed9", + "04017d2029cb711e52df416c54b63a95a66602a1d15c3761d91071964e0128c91ea766b3" + "d409f72d9fbb5161a459c3fd7990f87d8801e71a9c66a4d4dcf199aa329e44b99f80640f" + "c760fa7326f29c273aa13b153df5277feb3c049e407630173fdc9f735d7aee4e10", + "0575aade2692534b5a1a17d36c36973d24dc501c75c3b0b497a3d2fec80c67be7107988e" + "47199d4863044fe9176762497b5aff3", + "024c6004fa92cad446b8339917f517f04d22db47b3f9bdb83d863dadb5431866ce21b13e" + "780495bd66152ab33eeff8830cf8538", + "034aa568aca7be851d276d2235e42b6624df1cce2b97f6413dd3fc506f0f18483f95f911" + "feb0eb220415ac593f2c93dca0808fb"}, + {NID_sect409k1, NID_sha512, + "5411708381a65bef4381c9e13a04cdd5ba0c15829f7f25ccadf695f635384d8e4704cb56" + "2741747831b33852567f42fedbd190d2980f1bc921ce01c17d659d4bdd7eb787b3927fce" + "e659dd3b65132496c687f2249272a473d46326e66b3cb78dafbb522390162c168f73bdec" + "88adb145e6afecd561979846ea4c8cee38dc1686", + "0673b3a2985c95904732632e5d988d8d437a60db13215bb6aa880b348f011c609a1e8604" + "61427a8cf0d622abc47f910f5c97ffa", + "0400c4f1c0cdc44d867ed38d093eb967bfe285df897868c83ffcc0c53463e3852a1b2039" + "506d9508bf01d0d79ae537e42fa2070a5e00c2bd9343041c2c4100c5d795ef355c796a6e" + "a7954cd729e11063b14a27fc2c3a9ffdb3647613b44238eee17d9cc49e8c5dfbe0", + "019a9509f5f6d947532638a3c80782b556c553edaee9ade91e457f7b5d2c9055572fb116" + "f52cf4d3a2a0eca72fcb32b2f58e952", + "02def440e968d17d9904c5640619af2f447f74b7c067537db4a15be87df4fe68f4489704" + "7fa8af146462ceed4beae36d54e1aaa", + "013d5b00fef639c556d66420090c2cab1edc57b7257dc35addd62a5337300e94ea7ee116" + "e06b744da1b575d90da81e8ae2cd424"}, + {NID_sect409k1, NID_sha512, + "23757fa60fcabf543e603d8b31ef0cc99b3ed16b4816a84e01dbfc858872fcb79fd03d2f" + "8a1d4f28c25dc42a39e20c34f81ebccda1682ee9bd22fe323e7f8ea90cf4a2a6ebb634cd" + "1153cdc35f7306f28a2efd822bf23131baa1543d0ed5ab4c8168d3199983fbee117085f9" + "0550ec3ffa2b06070d3add1d707fc2593285ff58", + "00db7dcac414010b816236cad584dabeaec1da76c97182d1b62f87bb7fe2946a64d10430" + "571b2b29ccf2ef72c969a9f045f1f3b", + "0401f2a6cbb9c1fabc8db2848c74d918312267888d822b7dfd1634a543dcca4be7c99723" + "9f6281d1d8b5da9adc694706b7b19cfb0c01bde57a2ac15f4e6b26a373a624588a3379c8" + "eec758f3c68695e2eb1856075d90085f43283d982526c5e57913cca5e2b4169f8f", + "05a3d856ad1d6164993cc59e70f8551e2408da92c7e6cd52df51b37dc22e9ebc42fbe6b8" + "3c332eedffd4086a382056175ad7009", + "0489b0344ae4278a0376dcc64ef9ba8595bc2fd62ad22d42fb431d2863d8ca353cd9e59d" + "e4ac10108fc247d6ee9ef643f6bdb3f", + "06aa27335e15dc910515385764387798cd4a9b4cd6d99d7c42e07fc04e2bfedf8dfaa7bd" + "a396f88253357d3e2545e895d9aa3b8"}, + {NID_sect409k1, NID_sha512, + "b976314d2f066f8893307a726f450dcf2cf865c170e90e6908ce9787eec48e1e2119a731" + "b2bec3c12fd4e6282a393774251bcaef91af6ce57c63a8b45bedd72ab862cd169b7c84b8" + "f6a72084ff823a96f2f8eff3483a7ebfabdabf0998377c5a6836d88135cf61c65a0ca7ca" + "57727da68047dc635c17ad13731035fe9a6402af", + "04717efef16e1ae267e155aa1daabafc68515aa391dfeb73c13d01f3132bd22c984228dd" + "dc4dff4c39979e7585acd3f730cfcfa", + "0401526c58a3de46c95cb0527869f7d637f9441cb5504e6a01f339907c6df3d079361a41" + "571cf0a0f11996028a41682dab5decf78601581903be8a19bf8bde1d89bee0d436f061ca" + "1a3ddded4b7793fbc32ff852671103f34e16d469eacdbfa457643d1b18dd1c4107", + "05c846bf61c068b421efc472469ab1ff8d9f34847ae0065ba6f4a000be53727b3fcf97a7" + "80362566e13ebab84b9ed5f0cbbc225", + "00aa138e742ae81eafa820632f31e87bdcfce6b909d85805e46d87d1cdb8b968907470c7" + "ef5806accbf6245628c70d264fdd95d", + "04df507115384327f7b8311dfd1227c19a6124cb9bb5901bed45d8d5ca45db0903f53e7b" + "bf136350e66bf2b4f3d978f8bc546a5"}, + {NID_sect571k1, NID_sha224, + "964ad0b5acc1c4db6674e86035139f179a9d5ec711b5bae57d2988456bb136d3aade7ac9" + "ef10813e651ae4b9602308b071d75a934a6c012eb90c5eb9b2947b50fc97b1d36c5bf9eb" + "13a7b06c94212c3dcdab402a563262298defff62b836ead1f78f9d20713710fb48115cc5" + "045ba15140fbb4bdf516e4150d830d02cf30963d", + "19cf4f4d06825499949f9e0b442586fe1bfe3459813a2b92cd8de0f775a4735e02655702" + "ead8e60824180761808d9e816d60bdb0238e1e8039ca7bb63c92e1cf8433ef447e64ead", + "04007b9cb1728cba80367b62872a986e4fc7f90f269453634d9946f79b1fedf42ca67af9" + "3e97ee0601bb3166e85357e8b044e39dcc19e608eaaa8a0066ffc48aa480c0e1e8d5569c" + "bf0580858ab9223c2b2ea58df506d703d64b387a78ef43846894e7a2e47c02252bd2c1e3" + "d21ada7c21d50a08cef0f9a189c4e850c058cc57c37918251b5aaaff2321d7355b6b5556" + "44", + "0726d5e317f888dddc94c73acb14b320ff509908052868f8c6b14e531ca467c1f7c82874" + "76674efd0d636ca94c24a69d15210bb43a368a11d3453d69ca80430cbfb8b6e45d8f21a", + "04ec6205bdd8f7eab414110ed620dd3fbbda4cb3ad9e5559a114ca9344782847621961a3" + "577cbbe43d94eff6ffc8dd7dd09c049239f026a928301ffcddcc910bf196853edc86d31", + "16535b1af98a75b9bc0f122ca3ce23a01800fa33b43584a94fd8a8d6f40077eb739f07c9" + "f0e179a157a28023735fc8da2e2ebbee5f7308925900e657fae7c3b321f14fc45346f89"}, + {NID_sect571k1, NID_sha224, + "baddec4794effa668cde267016dda67bc70b847919a9aa595f93ba9dc27354399ef7a607" + "fbead31e57a8ce698beabb10f313d393980425e67cf95be45d512f00e950c0c5409573dd" + "c3d556f23daf056259ee8914e860562a674311452fed780b3e0317a7fe93baa81fb98df3" + "ae4328b28ad0ac8f8ea33efe24faee658ad026f6", + "098521a732e72ed945a549afc92318fef7156ed1d1ed9bab93b581478cb2339eb32bcef7" + "05c9bf61cf2873ddbadff8ff3806740a2e30ce67d1807a8179dfd5d952e6f8a583baf81", + "0401e09410bf4f84d53a2abf8d106fc64e643edefaea263dc98c308aea16ec75f083b3e6" + "b442ab261226c59ca5fa622db68f5cb5f2d1d465b01d0048554b0ccbf67c0aaf934d2365" + "f60361e5b43d313a62c7b3897c7db8a42116127138a1009f0bf9892981fb4fd6ae231b89" + "40e7509f96e2a49285143010dfb4516ff810a91a4d9d2974c522ff343e93e8aad00aaa78" + "b9", + "128056de96666acd09b93c5db7ba1b8fabf57251ec480d42b702940b5847d2a59b04eb51" + "01bb3990c3ae2a41181f19a2afcf08424f8b922a95df6b292b1856dc4a9dbb1c717ba5d", + "163483a7e0d1012695ce0c113ec8fae3694bccd40fc038d4038f81bd39e71c969cc7f0af" + "8313a9fdd3d028ab24a43279569dcba73fd78ad74897964ae715928b1cf7fcb779b12af", + "10aac6929432a6bc7e12ffa86e4d2421e0535fc44a1160fcfbee477c29a987e783a7f753" + "eb2278ce08954c7e90284d2ce7c42de103a9c59d8e4c459b457688ad515cf156cfc56f8"}, + {NID_sect571k1, NID_sha224, + "7ef7138fc657492d229054f8a50dcafcfcd1dc06f1c16640af3f658907e2969248b54416" + "066eb119adbfa23b8dc578aef18bba79610b9cc109394b900a25e55a779230bb858b2ddd" + "9499a7775d392328db9177aa9571c2f61dd52010b48502154e914a0c55a54edcc04a6713" + "cf7bda8744a893926118b09df877d1a4f3d95e8c", + "0336fb21549e397a190beac38a1ee10f0551952da15f71e11dfda415e5ee08da2356f114" + "d450c661f52b2b32cfc7b9be61732672691a079f0927989b7e9f4efe6095a242155b641", + "040316800fa2d8f8f3f9aa87ffb628dd7b2f63d4d8389ee86ed41bd4c3eecd3f3836ba92" + "e2ff7ee5626213f9ddb41b43561c5dc0bcc3df0a872e4b8026c09c7b52b89b4975a43f60" + "b00207f956df58f75286232967dc1d3e6507634f45c0014c48b42868fecce5b9434463ab" + "fcd2b3722a7f5ed25607270148466f6ffad6a8c86e538640ece80e84f7368d33c68807fe" + "d6", + "1517b3524b6d43dcf3964f7c35c89bf14dd1542c37606452e2035ff0bd0cd1edd6d7b801" + "ecb1f573e957131c0b3f30d5006f6e4748a11b9db10fad41961f4ae53e848c6dc6e1a52", + "1ffd4865dae7387ed797c5ffe58a929cffeab521e48284bd7d4427d5856e9d2582b91363" + "f1d353a0ab1aabfc132a778a516d4033c64cbc991d724115d72ff8e94ab4f95a9514843", + "10f010aaf1bb714042fb8cf06a9501dfd1ffa598d6b3e68e7addefe00e18f3a5db8414d6" + "25e374d9ae70bea43b57c6be4a590c28e50a548cdb2e30dd9d6e3ed1d9cdada9f8b0049"}, + {NID_sect571k1, NID_sha224, + "d58e1ff1d49a471d0567ecf8f29173dab5fe5f6184ab4cdd095c231fa7b82551f99a4829" + "94a46c3d8ebc07297fc9e952a5dee7d5f199b119f6f8b250f8fba45701ac252db725e75c" + "4da27ad77d59a4eac448e54a277986740dfee6596811e59afc9755e53d24b826c09e497e" + "29e69a22bbc85be11763064e9ecad7ae66458ca0", + "0e287ebfd9ba294128cbd484fc5121d271cd33e685bb1804f09b40aaacf64b5a9f2cde9b" + "30a4a02d3a9bda97d92f46bb8787b3c61f280b1e1a0680f1f0679d3bb34d53725d62e52", + "04052903a7afc17cce078b4b658766a67f2f75ac04e296757fd762fc05d6a7b4e4151598" + "a872eb4618efcd06c43cdc3e54f437c0ef1b091ab5e4927d3ab4227fb24d4413e0327abb" + "840385e808bee8dad1a1b84d644aa29fec324dac2242709421479fa7a712d18b54db5977" + "8724ccaf4e51a27da090c6dd0b7967024db0a8684944b77295c9624ce3aba24ff48c86ac" + "85", + "15e8cb22e371965801d99407d96200015ba58fd7eaea52c03269d8a374fc7aef17fbfd44" + "80d29b781292e179936a68ed175802f34043018ed1d6b5a4df667d859cd2ae53ed3cfcf", + "0d3a57af73b7504ef18c03ed2c52aefe1d1a3f0e27f78c11d45e9825647d5ff6e97af51a" + "5e366e52e01e5e832e4264a1d5b6967cd9debda59c955568e4c8bf804d843a49a0c5401", + "064fd7ecf4470f07b4df3b3046041e49f310a463210571606f00a1915c5220a27bb7a28c" + "d0bcdbe374651aac06d4d9e017e31879b7819301eabfe3a7afe4b53f75ccc465815b4cb"}, + {NID_sect571k1, NID_sha224, + "4949ba765c14c31f68ee0ca26bb42ba2edee63537de4a6f5c42bbd862c21288d6ff48145" + "260365193c6fd2b56dfb014da26b8a483776b717c6874f627c9a622154b824565b23e178" + "240f53ee9748c45759ba5c035b584df0f09504e95eb9bce0301653aadb860bb25e6ea6b9" + "606e0ec3bdb8089e6aa0d5763d331757490715f9", + "149de496fa8f88b2741864d0c35b3df666b87179b7bd06cd426a45f13bc87ea9f50dea85" + "e1fd02a532630e0e3a231cc3e7fbb7c7ba85b40cff1124e72c677c6a3ea6aa40ffc64b7", + "0400bb610e4308e229e4b4ddddff5c4633ef2ab40bf74514433bd068c7d59a6260ac7936" + "6dcdc039d5585e660a4cbee990a2cb55a99ea3d26dd9df856b0f3ee5b968bcc349240a9a" + "2d03e3ef4be63fde6ca09f12f8220e1d9b5016f267ca5aa09a2dca8a0e0feda9647fe0e1" + "f7ecae7147a10ff893f69a4f74172c6e9a62f0c5bd96d49b47379c9c84f5ef8e59dea104" + "bb", + "1cffdb963c2c8b8609809e998075299776b44d2808df509773f310124b5f318d7431f1ef" + "8b38fac5cd5580348abc41e6e6396767f4780656361dc9a71dcc8e7c9239d6eec5cdb94", + "0982b9989c92e1a5d25dce832bd8a3f602f0eaea69abcfda285cb3841fe3f019503e6faf" + "8a693712380a48a6af8844b6bd718f0edf3b57662a4fe82ee28d036ecc4cfc7310871c0", + "1678bec58d69def3fe35a64810b27fd06bc29d165593990f6f42c4c7676fd5d4a965fc92" + "cf20ab8616c7ac7b4b308ce6290c5e8b4edf6859fd6f6f01878f2601e22acaeb5ce1f36"}, + {NID_sect571k1, NID_sha224, + "5bc63e5c50b1650f0ed4a599960f1e4e11f6c151b2123fd71d9e3c44662312a74b685429" + "0628e20b30eaba81555acb2fb49b640bdab2528619c7fcad0f2a2880c7ea232d427d7c93" + "5fba2313370fda8863a7e7e203d63ea15d0cfa083e716ce6068c63fa616ddc225c9e413e" + "694cdf6b355cb1293af5d6cdea51168f5634e878", + "17605d7c5873d870462375d741b4bc6375f3d47f7f5e9d998917adf2137a81e63b66917b" + "3dda8968930c4b850f2270eb3187fc756e2beeaa67fe0d73053e6cc0ff0004a21250551", + "0400d8ac3e76c25cdf4902426569763f4ae0638ebb1fbcee6e12a4e0b89d6d451cf420d1" + "0441a0a9984710dcac13bfd7ba70370afdfb58e2d982ac367e178f6834b4cd2d232e7f24" + "6e012b5fd5b686e58df08b695fc333937eafad6006be5a7bfb1426206102a79bc32fd9ef" + "46e19869448fed0e917fe059b76c8b5a9c403c3921ad07e6c19ca7bbfeff5491b22f8bb9" + "61", + "09179b3ea906137dcdbb97b27f3690bbe3bc4f1f57c46ed60b8503cae97602717a0724e0" + "55a5c52199ae3f08f1586b87fbbe514667d2eef2fe44092f3c916976c7b71eed67e8fb5", + "05b28342703c83ec2df898458fea6f71030e4e9c567d140ab09cc95df29ccfe199837cd5" + "8ed00d07241988bf3c863504d065ebbeb8ed11cdcb02da0a945ff38ca58d629f76832f1", + "01442a5606791569749b5a9f20ba8eaaedd1a2ceaab2ef55d5d41271ba23f6a5b6a33c76" + "763fc99b291b07283122596a3331fcc9ac038447f3e0cb54872c140300fea65d7809191"}, + {NID_sect571k1, NID_sha224, + "610f6633718e49d232b3798654095e2efa0de11f41258b27aa01956480c870d901efa77e" + "109d5f95f1f5101d3c90fc51312d9b3019d2e42e0067eed7b457dc7fbe5466923b62c83d" + "7347e4dada571b57813bb9c21d5e308519b8eedb7a7706508ad04aa69698e03636eb30fd" + "9fb363ef3a185756494ee01175b16847f5b68076", + "09214dc2da0967912c31995cb8f5bcf4bfa832c5a2d3610f3a9857e5eee7c77100d599d9" + "ed003b4106013155dffd6c48859b846e45e0ddbc5fe24f4891c9b2df51407e9cddbd974", + "04064376a92c1227c1c479260c7497147760c103bfa5be95ca1593f29a851daf2e5c3a5c" + "73c1fe3e6e2506fcea710254ab5eb2daf8aaefc19cbce7b1c4afbaa2fcda1ef85750fc0a" + "3e070638482e5c7c17a82980b863cde11294c0df717bfa4b9f884cbbbbf80a64dd2cc7c7" + "d89ed21e10561260d372da2fb726de71863f0f60e8ad0fa5e74fb5d29bae0cbe8ad6b32f" + "6b", + "0621176102c6ebc2c810eabab9f60feb71083c07751c66f719370713ec2de9ee3957bba8" + "d768b076885db1f226a9d37588abf1b141d81b70f0af711c52edd30e92e34a1d3ed214f", + "1a21d460ae85d0703b4b10a2f77547e45135048ffea590ce86e0a1c049f8a4aa7b395f72" + "3b7480cc84e33f4772df8f181f3919f3c0b0b4f276b0f855174103a2f7bd757584425cf", + "0b56bbdf6e2be1b9e754f9b48b3ba9a13403c17c5cfcc4910112704aceea9a34209df406" + "ee40e0a10cbc26d03839f95e775e80ec5e29b156fa277a5ac68abd99c7005ea6ba2695b"}, + {NID_sect571k1, NID_sha224, + "c548f0546cee0c0400401cd540a0aa9377f27ac64492e6baaf38e794db4df83e64ca3d83" + "b67bbb46a6c269c04c2725287cce0dee984a0d468c9ce495a7e554a6835d72c7493bfe88" + "dbd5a044a148c89001b8087fb03e57c2b7212d0b175d616333a9affd8a1802dd49ba9be3" + "ab6c6d9f99a5578d26cc4707a5860c6c804d69ce", + "042f2682e9ac8b76f3c0880e12c292524601dce9ea6982dcf68bfdb0d3fbfb50dc9229e5" + "4149ef09b95bbf624eb04ce1427077f30d8536be9f69970ddb449ca22ab8368d2689ed4", + "040116135b273ef876453b9c4c39e4be5a815874857f4a72602f0d03b4ecd9a4ad73b906" + "00c71111e317df0782fc92e6ce2b194c204340bc11e68cc22ced38e99f90dbaf0f917e97" + "0d036dfa65a6e9d0ba521ade7daa2f6b01e1d14fbe7b5abd29ae71c4eff66c390914bf46" + "f09f4ab8a06dc0fad6fa257a85f993d6829b5e0add5086b8fe2ecb8027d08eec1bea981c" + "c4", + "0bf116711b31ca347d41a6cee5aa13a74e042ffbf79d2ae9448598e6950d721b3773ae6f" + "25d7b49ca9dbcd62feb011d5d556bb9f8a55a7acc9a3a166a4169351bc31a293db68eed", + "11dcb7f4103e814439df22764f776a74aa86ce9717585712b224803f0ff193d5f541d941" + "42812c726b75e8c2c37f2a4c33db6af118af73d3ec4fda49cfc911fef1eda9a470ff200", + "15fa4ada3a6e95164aa8972f14ab7572a3b898feb6cde160b8f25094f67343d35e6efdfa" + "b18793f77e09e5a42f56bae747b2b66fa9fe1e4a97e5e05ca743c058b1024cc848393b8"}, + {NID_sect571k1, NID_sha224, + "9431c6c5237f6b4b35682a0c32f68752035c8b295a1763c5dbdfd73466cea64a00ecc113" + "56d02d2a9211dc54548f5db1651e4471898402c887fbf45005a3bda271df0158c98319d4" + "d6751b8ca6b07100182957d5fe0d97c4e2294406f83e9afcae4850bb089f2252490417b5" + "afd8f07f4c795fa84c9c7cdcce26bd97273c0072", + "17ed9a9c75cf66528428e85b0f019e3488af8b893b12023ff1b4ca9c3691b74e594539af" + "a0f4d7c3863d15399b862f15e27bb077392d6bbd546ddfd46728c75177338466eb2f4ff", + "040760779389124c702686d8d7c25dccfa74fb333317bdb414965d2c271ca5e687c4cca5" + "7e6f6149e1714551761abd4d651e7b04451d8be8e58c0c9e361fe0c6771e3d547d6ac3e8" + "cd052d5725d14b9aef93b83d638377f5a19e3cd6e3584121fdfc2c3ba1a588491d7e9892" + "be081c9e7585a15b37a9cd4c204054dadf06a9f4ebe98f95f6554941982faf109c2af98c" + "65", + "104ba3049a642d9b49c4302e9173a9efaf215b67e060c5e9673521641c9c2a5b14bad25a" + "448e46faf73810979a3a50104ec8c5230a909ae588213161fbc10381d7c75b35c84046e", + "1bf3e89fb0beb1ab854a5513278dbd8b9c6b05c94ab67145ceb1ffcd93d1a2aa374db46e" + "f327043518a7f272b957dbbf9d6cbd6708f4c89f05865932b7e816b12a59647d972f6e5", + "13a8c121c9c170b244ae3a55aa2d53f4ae5af91b1f72c066207e3f52e44723bd4ae419d2" + "4821b83648cd64fa70536605912a5a9319dc446a6b2b639cb99ed2485271acafc2bc988"}, + {NID_sect571k1, NID_sha224, + "417cd5f60416f17081d2c70e9a510114e08be83573bf9deae75fbc3095dffc8a7f7325f6" + "1f9d6565381710eda871388cb17619e4448836076338ee309a2bba5f737319002e259b4a" + "875cce1bb97996101c9a7abe0278dcac203a712f0809eb3c4b85a9c380550ab0bbc5067a" + "8edfa78abf03c09b5c08f21714e1022ebfcada4a", + "1bcc09b3f2f1d26ab9955bff7e8c0f85c8a61293511a196b53d7963f4a4503849c96fb4d" + "aa68c9852ad9185e01a35f0bf298e34a09ec352cb6da34f89a1f23e8ea27712a8f43aa7", + "0401326341764a4aea222e7413a4a6f7bdc0c35ba246e3c68728ce06bdb19f2e1b9102ad" + "d88a8511130ff48c0cbe4012ab52de93329670a319f6b1e7e7dbf177667d4a98d3891ec1" + "4707a4aaa73713bf8fb3907d49e5653cf82a9587518c2f8269cd1e556a3be3589dad4c23" + "8e4c80681e141be93c318f0efddee3e378cd46512d778b9033dc8706bb843a3c3546e76e" + "4a", + "13412a98a2c14a9672ecd42db9c079a689b147ad91869c3d45a7046aa9dfd3f31edb43ce" + "6b84e9edcd7e3ac6b96d89f13878cf5befb052a6f8a4e5577bdf916adb10d908d5e99b0", + "11c8a92044a30be397007a71d9af3e4222556a10f3a07a1521c1bcef73b4ddb94fefdebb" + "a5944d5bd91313560718a8f520bb5cd5666539756a5e9b66a1b2d18fde5ae72e61d584c", + "1ea510e23ccc7596db529dfbea78c99fc78ae53da32ad7c7bdb1df01039310988ea60182" + "8fdfc59a0cd237110cfee9de8711c073be44dd4d04bca4b1cbec278b1a9ef175d93f70e"}, + {NID_sect571k1, NID_sha224, + "eced8c412a153a643ccd69596389f83b6a36880286f8aeede503452bef8305942d95734f" + "b5733f37ffeceb1c2dae7b1396c3323de11089082745c28a1756f784423fa7ad68bbfbf0" + "d93ff8b7ad62220500df6d6895788402c1f5c69c06dd9ef55e2401cf297184e411be87c1" + "bba657f847208c0e750f94a3df92f253b377b4da", + "0ec52fc3d9c272ca80623e06b15c35f349b13548ef7ee400bbfa04196850b3b8cc7b2392" + "38c827f9b0a3160cd97969ce21d66752791f5896e0385b0527d4d77e4b9fc70f04d73b2", + "0405cd2e63dcd48fc793c18776d030398dfe3f8b6978eec6d23f49240581fe1e141f6674" + "98421f4c40a9430587fa282441a78bb641894cb79d929c299f1aede218a0078c247f7402" + "5200cd2843ca87d98f6336c0adb97bbb9c5293a03e5b86d5534e2849ebbd73dff837ffa4" + "88fad7d134908234d0d7fdac8c7fafb4729ecf0516c42995fc9337f60db2f36eeac69a4e" + "42", + "1c40a15fca0c959852afcb4ca6cbcc99fb680950c64ba18ae5388bf783052b6ef3730b1f" + "b1487189ad983b6a68bcfbb707466092da52ea8893d8bc4898eb133fd771e78379b9c13", + "14485cb1caf1527350587d6695ee3df2b21c13084df0c093ca5109d7c192e7e5df2232ed" + "e11dbe5ff2f46b13dc2dedb709a0fc1641c1f32857040147599d8f179fea6b2f2417646", + "1a16ebf12c11d2d0a64b7ea124623ffdfe2650fc9603ded571e76dbd7e3b27cd32fcb709" + "e2ba04aee0e8e1b942a4e829cd0c9683aee67eec27d4244a2cefc36f84f7de209e22a62"}, + {NID_sect571k1, NID_sha224, + "30e83ea39a92036e22b7bed7639eab5e5be1d00c20b4a9b9afa9a0d1653369cbef363c11" + "9cc6f921c8f84663949c8b8dc9b743ac2b1861a480476e9b64c8f333f34b6fa0e1ddf09d" + "49618ee4f3c1f46751b5595f0aea413d4ca46f3c26b974b112cbe99c813a96a4423764c0" + "69454946f213c5f066ec38108f947abeeeb02fb8", + "06403de7627de22d1dcf6b8da5af62f9ec59ec065cc1ca1311bb98aa439a6d5985619b17" + "c17a70f59e17cf180ea6828ef57f5f1f8ef05680a9fc12ab7faad5af61e4e11fb45d341", + "0405575c329d73f261ab6897153d7261f87e9730eb5dad49c05d782cb02e483fac4a9ddf" + "f31d2fb695a62cdc44edef6398be8f4f84aea1d63d0b3a771fe91889dfac4780063d2583" + "250183e63ee783abbd00547567bb99e9b578ad8ce63d229db41c6877534487568c423d4c" + "389154af9627708d8d8f863597bc668e88f9412b21a6696d07bba06fe7aef93b26950c69" + "ed", + "0e751a4918643ba3e68bd9406a4386e876d0d66342aefb4ef75bc4dcb8cb2e2d9f8378bd" + "02c388c776535ba85d24b206f5bef4b2f23a1c99fe2f2e8ea201009ca468e5b2e21dcda", + "0ad6792fdff4c621219549834cf03808645171d944088f5a6d3cf1bd826b5588544a32f2" + "31e8428a03ec02d6c1c1243fb6b79b1cc6d732be5be8f2cedf03c1e5588822eec559b7c", + "178b64bc5f9fcedab17822e831fa52d49ed10afef1c5912893df4bd8dc960b474ed25883" + "ddc343341b696fdebd06e177f234ea45553cc83920a8c799ada2deccf1ddf1dd9aed863"}, + {NID_sect571k1, NID_sha224, + "3ed244dc16a5cb292db4b1433b0ca3226913f07377faa20c6c1402cb4d026de808ca74a6" + "d4ecdd7c4e662105bff6edb9fae0117c50aa053aef677c0750c7a446edbb879110030758" + "912e8fa666489d702d8fceb719963b24a256429bbcc869a1f4ab9de9db89263e3684d4da" + "a1df2ed94bb59dde2abba63793e5f82aa2e4db83", + "01fb980aef64254aeb9bb613ff2fc6967503db4bc1f337882f1566cbeb57489cf32e34f3" + "10549f41cba1b951f487453c29753a184e33330e90d4b973d2e406c99a239a5c3f96233", + "04036ea761ccc71ba55aeab229aaf874a7c2d1ec15d821401e2988dccf02798c4e7bea80" + "d9fb8d30be213fc80475a17f45d60c53249b66858d29c73e73117162934dd71096d74674" + "2e049bc28f4d45d29c3560915698d03271028f56c29f0ead0608cb72dd0b62490f95bbd6" + "7145a6c0adff0d6ef396b4deea6a5e2a33f242bf17e907b136c039c127d6012c88b76aab" + "3d", + "0ed404ee6b59ffc445b16f11b9b1471249443f8a7309ad8a662b7cb44c94866828c906fd" + "64784c699cd29d3d972e5db3d42157452630f14536eca23cbbdd1d37e199e5a586fc352", + "1056938496df511d745f2cb88acad279ec2d58bb36498fcd8139d426d596de6d145b765a" + "5b3e8366845fceae91d14075356a32515134e577937ce2af7e732b4e89a9164d083adaa", + "0d5156c776f2184babd69c1f200b8bd94289d45a2f8b7cd8e8afb1455e8901d8c3ed14b7" + "a23b0976b85a22b86f3ccff4ae91e286f696f39646188b675895684f33f0368098fa7ca"}, + {NID_sect571k1, NID_sha224, + "40343935d9423ad30f3fb1832bb08a5d20ddb3a55b59057cd275320db4a5835471c96cfb" + "7d67f41ef860cf5879897b8dcf307bd1a52a6226847b768ea38ff1858f59e64cd635b51e" + "6863773cc6c64b363ec47ca39266422406264668415c189e2f92447ac4c63ee5d74e95d1" + "e6af05016917ad237f482ea0b02aecadd370a8bb", + "1d96dc09dfaf602789c1dffa5c9ba130832badcf180429660daadf4cf1be5cca92fe9713" + "173861670eebfe3a0ba25bcc76aecac60a756f07b69687e05c7e25984a39556469f62b4", + "040452b1cd70e3c88bec1fd0e4b8f8e9bd5f844ffc12f3d6769eeb1c9ea90e5996199086" + "82eb5e43b1d6eea63ba9353fb64b59d6549d19cd95f2f54156c81fba53aa0dc91244e7ab" + "8b020926ca366dc657d133f0ff9149738738ce68f3cc2f61dad590e2502e8fea714b8954" + "3f43d97b46b7075c58375efa379cde208ce769a16be9a377a111a8ac51459840a223f346" + "95", + "1dfd064dbe64c25a832faea1819cd836d22583fc40b2ecbc19b1f5173c25f33ca8cb7f30" + "bcd619ef73a4c14c46e610c8996059612728f508bf7db7ab3191ad61955e8b1ba409692", + "03cbb0ae5f7c0978ad8c10c4ff099767465ed6fefb7358f3eb58a79366707107cc88b305" + "661526f2972bd16923375dd898ae72e81f290b86cf9a4dec086d7ef04d7a7bba5087f8e", + "09f77a86f0da4e35c395978603cbb9c4dcccf126b7cc924cf62732593bb1aff0dabb6d58" + "321debad4410dbfa1fb8fe249bfc336db7669e4ee13485ccf8dbde01ca4cdb9acfe5e74"}, + {NID_sect571k1, NID_sha224, + "274567f8841183e68c4f6c6b36c5a52fb0e88492e4076b9cd768bf571facf39dad6affeb" + "68941ee326ee461ce1f33c26e4bfb3c9e0cae8241fbcc14cc69c1af68701fd0be3def1e8" + "7b7d52b682ebbe1cc225c1bd177b0886e3698a06d0e410a1f92c9bdf7239189f6acde0d0" + "653815a72987671b415d1e8a70e685d6e5b14c33", + "09d98b32c8eacd135ffb8e13223690ef02c0c1f29ea8b4da193502c8cb3f39f9eed608c0" + "2fd457f2fb685ec4595e8fc8f388d26778d225d2b18c9bc8b199d8b65c0d1a6af33854a", + "040775560724ab7d98407e20af12b03634a757037f8b3854957e11900d58460ca20d93ef" + "06436921f8d4481ff9123a9eff3973e17d441511df3cd88d0d6dfc8016d2cbfb89633784" + "6303082aa4a81d4e6f0ffc94511327202f2baed72c08026e05a288eaaeaa36a1a4961f40" + "0b4712ce68778ff38be43adc2222a986ef0fecde62f861575842429816c8fc77797af018" + "c6", + "1f4acd3430931ecba5e9d986c6712467526ed94a0bfff36135da3ba7dd9870ceb38fa0b6" + "58dd391ce658774c6725360dc20e5ef41daa9cf52fa863840ca91053e7287ed29ac69f5", + "0502abe544fc3262663524cf88a5bc256b20829b7bed3e2779f559506adce3c4f3a89e18" + "bfd31819f78ae3809d9d0710c6591b2fc90039328678aed9df2fae38a74b66f69295d82", + "0b2f055248d9633cafa4db3b3cef0b76ee02f6bda3d508e19c68870e76a02c69dd1013a0" + "3fd741e854cb34f815432bf48138203177141be7209e957f4db1a958fcd45421a213c98"}, + {NID_sect571k1, NID_sha256, + "d9c99b8da92d3c2e40dea3c4025dc37770e867c4d2746c4d726b6de24250591a586c166c" + "88acb8ed340e161d4c81b9d14c919a1b06f1feb22c5ce5fca2693bdaf4994ac72c8983c8" + "7f331473fd094eccb3d5f3528e69d487562fb5a65c150a8217192f8aabfa7adcfd0b6916" + "d5000248fbbddf1ca2f38e3d9ed2b388998b7cfc", + "04d873ac744c4f68bb044783ad69e1a733cb8b8f483f2695bbd90c4211282036ad7914a5" + "3b25c3e890c6824643cffbdc4138d7ff457e3fbb99387494eb5cf2bdf1ad243a3a1e644", + "0404644456a4e5c543af7a086640fa9ff6627c2d9f17066d255c3e805db31fb1ba895682" + "e94f6ab96d6ca449b0c3f76bfd6593d182f422689b31d9dc3bc0b70df210a96d19af9ec2" + "ac01d38f8572a06ce22c1586a8329f9421414b334352f1e8b961f7e0732ee01e838eb975" + "bfb2f62132bbfd9acc6ef8899b4fd388c2b59e564fc3670da7a008ca016de678d6dded13" + "7c", + "0b050aa7266201a42dbee063ae2a21398ee1d2a190de9fbbce2468836e416b3ec18d7340" + "c81fd2a5283713f9aba33e8cbb105eaa2abbf0b687fe2713921bcbc02a4b77df21f762f", + "08351115714bc8f29b84a6e3f0a23bdc219d4271a9ee18bdab54c3acc9cb3468beb1f89b" + "0f981da5aa7d7ec7ad451bc5e91bc98440fe20f5877a4e73614820b9ab6f2bad3e2e609", + "0c64baaeed68178f5a1d8f095b0932fb73f9a02462df5e8378746ecf17d05971a0a287d5" + "a8e0317db055b02d4f4b5864597d0f9a9cb1ae68577dcaf7db09c55bf3d3575197295c9"}, + {NID_sect571k1, NID_sha256, + "d2b88a01fa17703c99e5b867c645e98feec0d6d1afaa20a97b5fce9c23f0594460142af4" + "e36a5739b8d26d3ba35a0263caa5429b4abba157f359fce701c43372500fd2ae1bc2ed80" + "bfcaf8cab7016ff93d4a27f565b7e67fe7dde22bf02c48be12114fbff2421517c825019c" + "0ccc72d927bef156140d7f0e9b6ee37af78c3efa", + "18d2eb947297a054f8a789771dd875b12b26ef057fb91235dff3b062916f85aab3365609" + "bd2a38a861439c8514e33f174c198139354e63766942f605107cb1b9709b782622b295a", + "0403f6454f1dd032a925c6bc3e1c62892c1dfaa700d3badf83f07c1185c31ea817641865" + "a129572f3351340fec331f5ed466db7bea3ffa9723c951b518ce6f3c9263a7bd6866c8b0" + "b40188877b68c10cd6ee543cc5638bf0f82db25b9327b2d81269dc61250eecb976d6568a" + "9df29277836b97973e3615e0a4345e610b33909c2340a23c61dcc6e2baf2bc363a333818" + "02", + "0ec6af799d92ab52c51cebda61ab642d4876f374edb17253a1de3e880048355e58367096" + "d3bc0402e4b93fa6a6c8d55c529b9fd68a27962c19274393ebe1bd0b1197a28125275bf", + "095c42b3ef01c0f9ab96693526e903ef3ccf0d843776089d15e77093fa9d010872d65cee" + "1801f821bcce747ddc5875eaa462b00424e6cdf0995b87c6cf33c37d4463848a6ad7fee", + "0c4f0edd4b2dff4f9fd1fea5addef6d483bb51c27bf5c7aa13f9482243e5ed5571bbe0a6" + "58543c69b731de56b6b34de27795095b3676375cb4686b45d48010fe8c941208cffded3"}, + {NID_sect571k1, NID_sha256, + "a704a1428cc894f958774368979fe075353b56790555386e3b043dc6a2919b94a11c7f85" + "883f46b4d47b324d349c28c667bf9a000daaca1d7191f2a0fd97a4867aa9f72422134a69" + "0625408a9ea4b723704690b69152655f9e9dd5fa3dd94814d97dd4f13e85c3f9bca76949" + "1c2461fbd17e28afac00bfa81371d5039013da8c", + "0594fc0b7a5cc0216d2e78eeeb6394c8225de795f4b73bec48b2f4ede185ba622b59a16d" + "d3eedf8cf2c94f2ccd6dcd205f64c97cf1b7f1e34129e94b5129502909f43940dba0746", + "040271cbd3e0d73ac19b975559450d686ed67eeaab4175435b2801e8989966d7c5ba81ee" + "7d749e43dffa12efba820462bdb274a57d04cd7e92c180cdf555686c78aad58444d5f171" + "2907c407b46e93d4c2b12c967cd3e41320ea8535a2ff24372a5791fac9e95865e14d545d" + "d3627dcb4aad2350db248ef49469ff4d59a879a84a19d1c0e5d7ad3db432af927c88aa5d" + "48", + "1e730d50a9747c7c1ce2918fda7575bb81a74757cf9625d0f0619aab7f1eb6954dbaab74" + "9e573290406e599eddd7d3376dcb3fb98c116ed7b65729dd04ece3eab1d7b4bed52326c", + "00d59ebcfb30d7b27c87d56ec2fc9286b04b39e68dc49b395f374e19647bcc58f2fdce1c" + "0dc815cb2aad55cf863a4786efd6c3a0ce56c1d92aa20a19245e74550c17fdaf7a08340", + "134e80d63c9b328e02ebafb75eabf0fafba886f48b25206cca9086e03658ce2047c94a52" + "22a206c6c5a57ddb8f59c5ba1408fc56668066fef4557124c430cbd1267455e0b31a8bb"}, + {NID_sect571k1, NID_sha256, + "f8a87c4acadee27a908718461e3b45060ae4ebb009b10a15926460bf219cb7e75dc3a993" + "fb9a741b94e2fd71615c50f6df958568f452b2cc284f0516816bc0d2e2d45f663155660a" + "26326f63f4aa42a6e1cc8462a2ec620a365257ec042f55e4047b62af689592a1a072553f" + "f174dd629a4f51837780ca232cf479a68c1ebdda", + "0f000631106c5851e8ae0802b01e7a8a8540b427a8a3956a1d36f0600be89318032320cc" + "420931d825cc964e823745c60aad3437ebc1c91d32004472e9677605fb708e5a71a0d83", + "04034136cc7b8e2dcade5cbb9b3d0e0857c485ee791f862273749b5d3757d072bbeccdd8" + "eb81c67fa6927c1aa54d823193c370fc596d0d903214d7967b905292f4b96549b3dbc9b4" + "7d056f69b42b29ea82b9f2fc377e874b58ee785010bb7f5814907fb5531789606810b716" + "13a36035cd257864e414fe0e6ea353f398745df87ccf25b3a25cce1c78f61f5039d66241" + "e6", + "009781f5d960870a289cc20f6b1af56602e5e12d9a7353e81b89a90b0a9675686f155111" + "57d9fb70b82e8b2e25534f8ad22e14ed518e62a88f1ae21c56d4ab7763808851762d3ec", + "0f3eba5ddbb8c127419fe5e8cc1aae2239bfbcd2ab43a006020b96c9e7db832fb09e0bc8" + "87aaf24848491d4de935b78141f426875f7dcf2937748afb303ec5eebd01b6a82a8c4df", + "17acc35bd81cf24f983072585ee1e096459b408da909fd82b5ea86b77154ecfbffa7fe97" + "271f50b67ca3c29ce704b28186b831300db0aa0dd6147d2d160e4aff14348ba76e6f711"}, + {NID_sect571k1, NID_sha256, + "10b5438294a77c7e517ecfe8f8cd58d75297b14116aa93e574996ec4acb21837e6297cc0" + "e7e7b5861e862062f192f2206a01b1caf42c6d7181d02c7d62b76c2881f8479449b02d32" + "c6f792714d8f70f0c75e81c7d9abb996be87f5ad9a01fe42b75855558d5f00df392b62ae" + "0d258f3f67dbeaf07208952e679a2c573aca941b", + "1023997206341c6147c536d034a9c38b4012035dc2c9b7ef0bb9cfe65e7d788296f055d5" + "08a1fd957b2dc7f9eb10c27790f15f30d81670945e54a508c57b70b46b4a09f4c769289", + "04066bd3f503cf42a20cea4a55cab75940907f38fac7fb024c55245f02d72d80336574a7" + "2fb248b1b61e3205b31489ed789ee78d88e487db3f5a1cd48efa1487916b8707e72e4be7" + "e6010b6e4330af0270abeccf0901dad2f8f64f4993ca93a7c5281dfd71c6ec405f9a9bd7" + "8008fd22fef76fb79e20a571df16c4d97244c7356e3ad16cc489d3a9b2e3fdcd5f23b48e" + "26", + "09137bd8436dd126924943e8599c87f64564297117766580e6344aa3c02056c811fb996f" + "264ac4f8f0cb33eaed5ef8f120d43a1d2b3e5e34697765ff9db4b4683ce5c1596d74723", + "03b684a66e92d352847f63196181160db3de7a304b6e43679340eaa9fc828322b5b9c16a" + "1772c981ff0febb474488daf998d4acd867e78019b61804bb675a98cef24fdad088afcb", + "02649a94d2bc243e997bdf27be7d6364459c38845c3bc8d1c8b549ad4689c8a4b4fd5519" + "3ac769b1da607dc96458e2f6abc602bb4048cf6b0933da6785795d04d10f22e439748a8"}, + {NID_sect571k1, NID_sha256, + "d83a52d43216fdb16b1b40469863ca8eff4df9fa358deccb5ffd18b3e22a9d654aedc98f" + "3dbdc4f5b4e56b4299e25d8a5a38d01b34eb93de382df1ae4d1c7f966e84b84c393d167a" + "ecc6f1192c4b42cae83748b1ee3d9147ce7de74cebd122695b455e8082f86e3e488fb0f5" + "1b3b7edcd579940d1cb9d045296e5e38f201b7ef", + "11ebf320ecf6a908ea5b868afb8e22246ce84e743e1076d6185ec65dd79043380708bf8d" + "a4ba802c3b93b8d15509bb7d7de9dc29f1e9fb0f0f2cb97a26698f955b1f7ef668122be", + "04038b2760315b0999f9629922bcdff65cfdee4938d4aab8cc3d200aa9c1db843fcbfeb9" + "da10afbf10280110c49f0c18f15c2aac4f39af35a79557c68eb6cf6afaab973538b98b0a" + "6c07da55796396e919f9b5967608af06bd01e8870354317e76bcb8597a379129e35bcb69" + "bbf6b38911a03c3076f7fbbe9b179e078b442c604519e330282f6f6c21aba515d6d73c02" + "57", + "1c219274e54a4c5e1e1aee3bf805a7002bbfe1c030cd4c8a1617dcea2a14b1d537a64cb0" + "7c5a1385edd76f3e4ea9a38e38b458d2c7bf8eb56a57fd33166bf59a8af2e9639106929", + "08677167a7ea1aec4de76d1c5effdb5a1655965850bd6498aaa4fb3fa50f213fa4d99caf" + "4145b4ba87e34797babfe614dce6ac21d9c13dd0fcd9802b1414aa92dfa18318c7e57eb", + "048d6161a3739fbb3ee1c223bc82a46255d10a86a605f6c8e1934b13f1a8662f30f8e95f" + "53848119c61f08037ee5a2440c8faa11a6b1800078ed476b2a3f4cfdb25367c8dc2989f"}, + {NID_sect571k1, NID_sha256, + "eddf5553ed4db6e8ce72cbcb59fb1eb80671c884ebd68e24bd7abe98bb1f40806de646f4" + "d509be50a3fabfa85c5630905ce81abfad8a55f4cd80208afffb9056bc67d9dd7f4660a5" + "f924af2a3745eec2daec39a3fe36131fe9eea444b92d31f6a125f12125159ba095f89968" + "a7028549466f41ad45668a861f671050d2a6f343", + "0746d5c824d78f42a1fd63d8fcca61f154ba3e75788b7a0b87f53e5420e23a935b02eaf6" + "7bace8dd8a8e7c1caee30154c2428e0a437cf12e235f41c416f92fb54528865fd4766d1", + "04063645fd3810e2458d15b43287f329c354b07324c0707f19847c544f129e4de1799996" + "f805fab7dd356567970e10eb21d875e8ee7bbce56c666511f9b4a4cca986683e937d6f0b" + "3e0595485c9a7f2a97fa7f8453df13b75682931fae10f3441042199fedba91a58c105df5" + "7b83d2a3911a2d34a2d41e451d0d2549b0a0a65b42aca40aaa618c252baec171da7937d8" + "12", + "0674788e75eb9d5ceaadad9fae036f129178fde1a584d73cf284acae3b4cbcc208ae7a5d" + "35aa473f4e1201c19ee5bbe685ff9218a8e2188f3428ab45bf09b6b600fcf81fadd8d69", + "060d6dc42329687012a93ffc5b846b4dce3df46ad12eb61437832f81f4fcdea7392582fd" + "75e701e106e5b83521759da6a22a21addb63b73783592d3f29347f3d484e05c19db148e", + "197f3b2d4f3e10425f4cb60dd1ae84fd8c87f62a2cc822342d5f0be4f0841623227c5cb0" + "f8bf83fef483a061e30ecac86cea0210036083a99fa1247b49e19a7f401a815cb68ab3b"}, + {NID_sect571k1, NID_sha256, + "3db94335f6d1a125309622c0a9d71bde1da09371f0285a93bd0aac255fa8f10a56074e0f" + "6057f1b1aecf2d86a2319590ead96a2ad1336fe844e09339b456be32374ba2e659fbe9d0" + "f2cdd83444d117d2ce3204ce4b4294dd05405634b84747ffb4227160c4e5c2c9da9815b0" + "c6d20f55705f16cdbaa13d107ae666d707ccbe6c", + "00670e72ac2de50dd2cdd975a6cdab10ac45e37ef7a28c685d77447051496b5e161f8b1b" + "93f6c7f32fce8ea05e94ed35fd7cb28c44bf51ea29cbaf5aaa31d6abca30a89430323dc", + "04054db4acd0815aa7ebec4f7661d80465c64f1fd4147507549352bc07dfcc6041ad309b" + "fb1434b60f73b3d61ebde91f849004d55257e98b6ebbbeeabe960f9429a55a36ff75c112" + "4e05b6f36f76b3b3c780b6a70bb8ea150e9cd6895ff6a6765a3516acbb4f5efa91434def" + "52dd0ab81f618ff28db10fcf39264be8e7ea76e06516335ac5ae33ba5393080f11418911" + "0c", + "0f74a0ec1a7496043d78891e308c82b4660606642ea669e4406683d44b79dd6e6a1b8102" + "92bcd6a9f59bcc2e590518bdf2e9224755654026d85cf2a3d9768d909278448f0d63fe3", + "047d808febc1065646e6a5608d62d1445d922084487a64e9ced5fafff2977eb3a7e29984" + "230946e3fc77a766820747122fdbbb9100c591ad7c9dd29d07efa2e8a43357e3c47762d", + "04dd6c8ce75bf2792ef227cd5a3102d30a9a31690ff5c21354f8dac9f826c86ebfaa0465" + "3f0ead103b1c8ea59f0a78f5d4e8eab597ec6c028ebcc57f4ce4103ac14579bd6e15166"}, + {NID_sect571k1, NID_sha256, + "69166ba40768d0a3930325405edfd85f3272f7b8e600b0b319f070274c91f9f03d0e6ec4" + "bfc7b4445e91b87cecabfecf5e77c7301ee3c6b0affca2fa02c92216698705eb75443eec" + "c25438db2d2fb4b24f4195d6b9c05c53e0868d3e58477100607ffdc31b18c40b4ad7202b" + "b034e58653daec0f6b33c024d42a3fc84bd8f86b", + "0369a3bb96f884983c23281bcd04e24a3e5f6359f81e3c8e46f3f6b865eb6bdf98a630e9" + "0646275c587e41b546d3ca7688cc207afda15cf9b25cf83bd6ad27908647f3f9de59de7", + "0400eb02f6e741b3f83a9dc50853828b8a6e0861ffc644162515a264730c662ba388ac0d" + "705f8b36f5388894df5c1bbc3582c85de141abb7712caadd2d616da589bdffdd9258808a" + "4105dbf831f450da6f8e503c19a7788c1317ebe556a458e2bfbf3137f986c9c966a14ca9" + "0344be1b76457159c9d70f13af7fe0013cf605010a8a3b84bc0fe187c7d93e4cfb2639de" + "57", + "0ce22f7f2f01355280ba2d2cda06a55771e66f598bf79c65171e08a98f1d954e4beb3ec7" + "7ab06ee60c5fd156a7098023558e3d630641579cc179739bda6d860f8ba1d5ef717ebb2", + "0ae86b40d10ca45c20bdb3db55a6dc12e9b75754679eccb44c40fa57351c23c062282e1d" + "a9e1703176e4b8f7f224982f2474494772a20269c43a18a7a03fd12d8ebb975b83ade0f", + "15ff7b34c3316d9e7ee3d7b48ebf97d98453ca32f3fc67fd08761d93cf34cfa5a2314fd0" + "752d263c3eb7cf842aeac395d41ad3c04c1a9d3808b4fb7489e880d130c35a26b702952"}, + {NID_sect571k1, NID_sha256, + "f64cb668b72f1e6dd026a478505c0eb33446ae9a2993bc7648aaed02e172fa9a0e05eeec" + "61e756ba246c1dad7e85d3f01baf734b1905c5bbd1b08d833c2cf1e079eca75b866d705c" + "407eea8618d23ebbaf269c7185984b3bd4117ecfb295ee6b47eecc8d3a78bb96552f6be3" + "14656f91caff793838226662c75cd7804b6bef79", + "026717b039df834855511815d5665ff9b654facab469390ae257b7f0eb4dfe66ea0dc037" + "242ed0c13bf229b8f7ff26da9b55fe4750d3451c62804aad493c179ae45d08ece5af085", + "040191a6d1ab9cdda2d593d5598a966efff829c04c421804c2297e658adc5c9a6092e146" + "b25c730ff7ee65cb9812ac9ea0c18dc6b60deda948b4b7568e8b8e14411a6969d7764652" + "ae03744af98387421d958b26971d21928b73bbf5b0f0ef183e9f606d0348fa715f153a60" + "b6c7991dcefead2ebb875d0c1dbd3665dc42a241c565ea0fb0e6349b4319c3de633883a5" + "16", + "0dcd28cdfe9028a4a6df1d41019bc58e4a1540ca94b717d258f2afe8bec560f3028e15ec" + "1e8bfd422415961516659fa2b006256745e85e488c359e8cbc94cd2592bbb892a19c45e", + "07ba5911415a3d21a3d98b400f61eb63ddda689bfff0c8c3ab83668b1e4bf8a703c853d3" + "585b8bdc29aa2fdc41d5e7534850f4656ec949f0a13fd18295b662c9829723e5a7fe3a1", + "1b027e38283d74c962fe0e7b58dfbf5e21ce1d9c91651bc98284008f44fddfe4cec94419" + "94e690d72a8ff3ba2b538718aa678e7de046b653403f3b7c064ee07c9c3c6d23e1b068f"}, + {NID_sect571k1, NID_sha256, + "51ee0b98eb6a3e3c1afcb35a33697c048dbf61374629ac5702a57801fafbea4d6fa5a26c" + "9d1b79d1c58257ac0106387fab2d4a1b7f8c0dadcbe7c830613531b3c209bc17f792bdba" + "1c1fae1b7528aac53dc86c2094b40194577325c05d2258303a2d17c854e7449489c43991" + "b6877a50692a6340a528a6b188440ac0cddd4c4b", + "1d642f2d393ed4abea37173e4a79534af87adf534ead4a0a1c46fb047619221e3577e6b8" + "bcc776114d01159c736ab78af3e53feac339d7afe58be8e7a8ed290f1dad960f1b5de94", + "04023d1ea50229b70b46578df6904fd528e9930985426eb2f1ce10eecbc0c16583959483" + "80c4047d67bc4072be2a2624d62a301da41a5265f040642d1937fbbb7cbd205e1db85b86" + "850625c82ccff6047b1ef4b08f1913f7366c4f6c0312c21e5ab01b598d1a9618cf5c22cd" + "dc64a4732b477dd5c06e332b846c8015a2e5a195326bca46c29cedcc2f24d37ebdb7c2ea" + "ee", + "0c9066831d61a4192ad9de23efcaf578a5d5774960a2b3e3e292e0decaef62d1701b86ec" + "6183d8e17a699d418ef9d084b982c97a55bd76c8b038ac5c639451096ca4d331f070ad8", + "005778acb38b1961195d38463abd9c19d9e07dcd997f19676633fa3c44caa44ad1a9bd63" + "435f3138ad8f22a731e749a81161c5448eb462fcbcd69ec2255cc2923ac697ed319316c", + "1a1aa90113952608dd17dbf391ed56231ecfa7d649f3274774ed2b6034a2207c05c6d8b6" + "cec480ae27b58495a50b1e5b74a17ce6cf2e43aa273c2b813c0e6c79976882b7e4b1c93"}, + {NID_sect571k1, NID_sha256, + "feee50aeacaccb6b1c3d95c6524044edb78322ee836d8159c4a4c2cc6982480567c4c6cc" + "4806a564876622266e1ebd45f2f4be851b79da025bd57d0e6acce1ec1c8c255eb89713a1" + "e4897d4ee0f7a248b9d4bd3ad5dc0e57f60ebfb65691e164bc908956a019083e923cfd33" + "dcf37c735af3462768a1e14a8051d7aee74d5228", + "08cb70be29e83f697a3e2f67d86f1c1ec9a163b5335cb4a06004b6634948bf60b8ad9df9" + "b27d2bedc4975265ce44a7884e57082d521320ca4372d38fc77b18d3fa05ad8aa5c43d6", + "0404c042bde9e90b38b48e60551d832a7c80377a81e8c5b010d0e491cf765c432b5edb07" + "71aaa5f672edf3ba108dc71459d245ad60f3884b8cf33f8cf797f36b20e4be39c8389e66" + "b4075f2454c41c0323ee1a640755077d36a65be7c2a014db36719ec217e21a9c004bae5b" + "efb499bf6be67e82d3da70475abf9dfb751c84c409fe838cf1c6ae109d27f24d75c02cc5" + "b3", + "186f16dfdd7a71f20a5e634ffc465356914bb52286d3d5ac00f3ebc02497112fcd592e1e" + "cb2ebbc819e07ea092e465e66f3e58da7a2ddd41c8787f57c135ba4c168539b4743c3a5", + "1c2140d294fafe3d9effb33ce73bb7e5485c93c7aa9d33b7535c7053831a1dbe79075713" + "794c87e52bc887ded969d2dfa6a1e2630cff96760310e04cd2a75be6fa020a12fc84d3b", + "110aa165707b7de1b3a8e05e4502701abb5ade0a27deb04fd93c6eb24ed2b67ade6c49d7" + "8e874d25247e948f704d3c5b925f84c5b07c9b289c4f8507e75d0f8927c6dad6dbce885"}, + {NID_sect571k1, NID_sha256, + "b115f7370d6a93a90fd9dfdfb292956be34b61992ce1fa5627c5e928d74bcdeea66d4040" + "c473306a0070fa8363c4303bea32f73ea3639b5c6676fa5a1d68a2cc1f91f00580d7453a" + "23ae70af4cb1f1657aa82c5b305374effe5d67d559e46a6cee6360503d21070506f1af30" + "bb000d2f2f85caa6465810f89968f33abae81cb3", + "1eef463771f9c6285f3257691dea0844687606d4dd00b6020517f190891cc1be97cfad21" + "d147ed8881b5a6e19b22ceeae30e1132476325f2de0e9af2e14c80b8c780a9d2d6c96de", + "04024de3ebe03d2d91b88794a77635aae6743e597410ae10c356a51e3af88fa7f9c4d648" + "c7d1fdb887c8313914ed554eede282b24a2e66aeafcc0cc96907bb2f3877eeb97df491be" + "f301ce1f9fd4d7d3870997f34f54f2ba8f08ac94ea94f74a766f2dbc02e4d5149802e313" + "5a2d762e3b8abb01461968f1e88cfc8c7fda49c099e392e80d57f0c14de9c4fa1eea2573" + "2b", + "026b545702baa340fb6d1bc2bb96f7fb1a77a2428cc122ea380a258c747d4e0625bbf4e3" + "dbc2ca2f15bcfea92f2417cd5d22f2bb5f38a9ba313b3bded506d3e570dcbcb86c2debd", + "091c162d040a12f08a416296a43501d92e2ecd6be302b5e1754b9ec119fb8a572626c509" + "855c7c868a07b263f66070ac986f95e4c83150a5a492d5ea8a7f8ebf556c17ad2bcc996", + "00c217fee7bb202d6399f6b1ae4e5811d9361573ed4fe1b3fe5d474cf06d0236d59dd358" + "0145dc0bc7632c721b6463c69490a67d1be1fae99e34318af6df939f9f7f36a9bb8d5e9"}, + {NID_sect571k1, NID_sha256, + "726782eb0d9720daa64e4a77b5d8dd67a1a193f15eb6b5162e3d89c925ba63b7c7e1c4bf" + "c8d6f11915b0e14d16ab53ab015317bd5958b0beb6074199e05181915496575768d026c2" + "3e92e06016598de008c3718aaabcda8b68bebca0a73ecfc7327e8d3646106b7d114dabc4" + "6cfe56265c326ee56fd2ca87abb5bed8f997c735", + "13bd452b0880b101df1aa65724fb60d5d85b37ed5419027481661a3617e0fb37bda1151b" + "9b5b41f908ba832011f7850b75a07b678e5b8cb35c5fc8b94a625e4398cd5ada2b04cc9", + "04031d88b62d2edd5f6ed29258c143bbcb3d29413afd8f86873698a9efb8d2021186415d" + "301599232989a0df5ea91ca222c5781314f200c708de30751feadc277d50e64842dd355b" + "a501c76f19ceb1be48f5540265b8b018da62fc225cc0d2d1675bf7df71456cc8e35b002a" + "220e2e80691600a2c1ae31e980d0cd22b4741c25bfbd413f10b375a4d8adf70a65c48ff0" + "06", + "1b9235221a6df49e39b4cde6650e994f624fcb5084daaa62aef54bc154949f4da9074636" + "c44f50ea40da1a3f01bf67e9b62a725ac0537a4e37ba33fdea8ba8b2286bf82901a933b", + "01dffcb5b5eb23694da4978419110ed2bc7961c571a2e68daebe21e598c8b483b34f3178" + "978708db6d78455cc1fb4f73c5ab7607cbb4f05d4d008c7bbeac88562fdaf7a370ba394", + "057018fc97d7b16d69af2b7dd4a859f09dc178a6025e1bd6839ec7c75c0383c59eee7079" + "fe61aa6bfb3e2c780d4ac0ee074e6b13223c239aa60ea1187ca4937864f89e2c65056b9"}, + {NID_sect571k1, NID_sha256, + "1c2418243fcd89c6382b7c3b2a8c341f26d08174a9e9296c4a5c98c5793a0fa48dce51e3" + "0811a96b515aa22bf9af89a43de06d696be1e531c5dece1f69fa6ecb7f20be063c602a16" + "454ddafb14385ae3f8246c3f989d0566e06e7ed1864502896ea19df8393259c4dab3b338" + "0a4a80b4103cbef4f38cb69198b7cf74ce94883b", + "1288141ec2244e4bb3f62daf4ee588aed09ce22be55e3d42e9085a947c1f8cd16533635d" + "170bd64ae0b417346fa4670c25d41387acb2a8e14407a1931d9f7c5358a14eca40974bb", + "0407ccb7b12a7d6997ed2a11eead3278a3f45ea284dfda8e17f6d926ddd6881a44d02a0f" + "7504dadbbcb0cbd6b85c113aa0d3b4efef1ca151cc38cab1aa8360a6d22e3d6fbc0ed980" + "d3031b85dc2d2096bbba6c465629ea09ae3421cacc5581770ce3479070f23b3aa938333c" + "7c691d9cb93a4533b2ce389ae34dbebe8f333cef530abe17cd21448f701608febd42d9bd" + "c0", + "1e411ab53c48cfc1ef9eda97002dc9181a78352de13fbee3bed86cb00c10e7406033fa0e" + "a97b50764b0eb2dc6eb8ea83e47bb3150ecb9437179c124f15fac6ac19b0c8bc324f171", + "14420d78f2f9f1010018848b0442ff6e6203c1dc06a4d523802190f462ed3c11c7aa7678" + "bd03ba27df01cacf4121309551877d3a2bbcfee116c59926daafce55a4e0a7d69c5c938", + "16de0b369c28ffa0bd6ed8802a503929cebb5c0a4bf0c0e99b14659b48aabfd08bcb64bc" + "2e39855d7d514d7525b3c4dfd2244f37019b5f86254cdda599bb144c8fdbaad5525cfad"}, + {NID_sect571k1, NID_sha384, + "1de4b642ec7220c64b91561caed7832044d6e811ac909f3b199cceb0d8a7db91bcdc8014" + "12044f5c34b355b95a2c6170fe497f6d5259bc20715a38cb0341c88e93029137e94d895b" + "ab464bca6568b852340a5c5d6a225475f6eefe2fc71ffa42f857d9bab768ccaf4793c80c" + "4751a5583269ddcfccf8283c46a1b34d84463e61", + "01fe06b94a27d551d409b0eb9db0b163fadcf0486e2a6074bafe167f9a3b4ce8ac11f42c" + "f72f9a1833a126b9473163d29bca2ad139dd1a5e7fedf54798bf56507326fae73a3e9a2", + "04038d4dce42bf8fffc39a5b6583a1a1864de288ef8479449d599115bfa35b37954ab288" + "ffbe81e69d58693e2c8c81639df12e4b36f62b2ab042e92a0715b518c63d0ec630051d4b" + "e1059c72c0bfb0ea1ac5e2fdd4fc380d08037a3d0eeed4990ff02e6cf5a16817ea598085" + "e28f8269da86c547e7b34e16a06724ee73776529c5b5dea4ce3321fb168827ca1cbdf885" + "6d", + "0a3b18c8c9f17badd123c674869ff428d533d2ecb8c74f9784220be7a90dda591003df52" + "59c5dfb612ac7398aa04cc9e82863eb0cbe66b6e7f45dd15dad252f74a538d5f4354c96", + "09c368c80f697c1718c55482b2c6c5c0edd7257a3a53f7193515629aa40a9716cc889d41" + "c120516b54f3a106a171082364886e5d3a1e9482a103f072988f61de68f034d658bd976", + "0e782ef47b250f40c56e3ac4de112347174bd59fd4cc991a2b538ca90cdb222d048fec62" + "e2773492a1d327152d1d6591740706fe2f8e1d65de888d47fdf173b2645813ac0fc3078"}, + {NID_sect571k1, NID_sha384, + "70279be7d7ac72a32606642ecd81b5d4d0f95fbc3c0b07d85c16adf2788601e44dedb8e5" + "5e0f9e0b4ca3ca35f5be7511b0e69224a05204af67aae11ce154af6d594d47f6e3142ad1" + "83969544aa95cae1edf42bc699137f60178c12b10a67698e37ab9f3edbfb3acdf1b3513d" + "62fe3db33b16cbb4e1f9dfe732c107f9d0c953f6", + "09cdc7e4945c485a41728f83d5188f539e372ff4fe38fffcaacbcb4522428e4f93ef4972" + "556f4398fe17bdd885768f0fb5590df495badc794d4d274e22f2f4a2535555922fa43f9", + "0403c6f046aa3007ba7f883bc1e0bb43a9a0a1daecdea3e2b6c10b2481d11a834af241d6" + "0cad7cab27b677c9ac11f2e5b5226c0a3de13029229af00e5a092340af9b230e0ed992ac" + "f406326ffcd62e1a68b63ac680a743130b1440bbcd3966207dbc8a8f4336eb6a7986aa53" + "cfa4fd7bf363b30706b4fae01568020b41caa70ee3d51db982de66b0ee39777da3fecf5b" + "01", + "0c717523a308418eeb2aeb816346b74149d56b9620774cab582f01681bec73adb779bcc7" + "462fff35685a4e1e114c8fba474c68fe2650344fc9cf610908966a9dd1779f76bce0cdd", + "0061067f377bff6a9be30c9c79d8abb7f54cc8f09eaacdc190beb27b1e6d297cd32b043b" + "31feb49958745b78e42ac074b8722e1a7653bf03611d87c44fd3891ae410b23a2140b83", + "00edbe756a5dc78c8a29baac9e2059154294e3adac9a5adeb7b27ac6e4d4086821cbd554" + "67266946ed8f6f03abff35b59434afe84067c1daa1e0bb62ee7c56b85e7f831eea99047"}, + {NID_sect571k1, NID_sha384, + "4d7e0ad520445b6a5cb46b7c77fbd367614044ae6004494c2b3a89089287e2836c73b799" + "cd8c90139eac427ebe335804c3788f3728ffb8edd7f49a4bcc76a9e24ce3c2299cea88c0" + "4645b82033115380f81b0c1d823e470631008d350cf0c0dba1915519985b8a389ccd8c80" + "9dbd5bb5051a79e631916e0d052d9b6cca18e0ef", + "02bc753d007c4491cfb8ce0a6c96455acd16d37e02c982db216b8cc1afd6d10c6be4e15a" + "3988b8b8b86b2b5b59a5c1939889024849317f27ee08a06bd8e7524d4ad83a1de208564", + "0400ea922b09e902ce3847f14d3b3afc5562dddf15811cb2e7b9e06e1b919d795f8451a3" + "dffcb92b418d30bbbd1a7ccf827ea0f1f6554387fa2fc51755799040133d7a655c7800b7" + "1301f12439a0c0df9f6ef08e89eb1a62e2cedafc0460030810b2483ad9427c48dc061e46" + "40ebbd9b4a398841c863a6e3d510e5c66934d66b317b1640bd05018a35677c6ac2c78397" + "06", + "0385f9caee4731627276875dd8d725fe79626c18841562e8a13fa7531c7be9adca565c22" + "459d519d643ea22478d7c51b4c286920b050bfa54ab7d42966e389c485b52cdb4fa1a0e", + "02ac84262fd121bbec43e81021c0f0610fd2fc0b26d66581ddaa78714ce58be469652838" + "51241d792ad6bc79af39f09d2d4bda83996ab41f1fd206b8293cdb6c4eb9d96f39efa25", + "1d9c9bc330adeee8f58ebfe8c1ba401d4433efa04a44185b0e8e20b634691bfe058770d0" + "74289e636af3e96c118edf31d72b5766c30f6fe84ade42f284fc7f2707bf27b3a309638"}, + {NID_sect571k1, NID_sha384, + "d49903f38b5c9b17542310425e59377f61f5b4f4740cd97371ee2116083f7758e69e7e2c" + "1b0950ec6b76f96e3c91c721d6f2843afde8c7505a559c8a64bca2e665aa1131b75bdf86" + "fb5b90581c7d3b61c2cff88f3fccf356ddf5ed282e27727be061b6925c51ea7f1a495f47" + "1dc8a5ca1a88bbe29e92338d3c9361460398965a", + "02082c6e61d0d72f040905d8c1c20d47b029f41ec68d6cbf43ce97c3b2a0a770557a33cb" + "803c432cfbd3958fda30ec1bba77a6613c318597a85ad02b26c44bb77ca96d9cc1194ea", + "04059ff339d505b307e05adb45aa314d47f2450e1b1aad840b5550a67c11940d0e786547" + "55a8e28fb651e12e48c66cc1ce0338114bc1ffb00965b342ef3a3caf495f1d73a69c3f3d" + "170724e9474e6de57b9f8cbf6f6bb4f73f5769e6cb0e006a34c2510b379995c9e054cc49" + "81c709ca85a3aebdf29090ca07dce5bd3c313c6153b551012d72a8f84600350e8754bc4a" + "bd", + "18d65ca6c2ef1fb32dddfb9ad4603e03c7cb1791a9ec7b41266cb68b6048aa111f5971f3" + "cbef3f0dbb9ce409b59c31cc59bd6f100ee5247f8c36f26ca77cb252331fc3be7346b5b", + "12853f9d695b8ac4431c1ccc8498f3fc4916eb6a5e66b3795a3693f3f5a29ad13e58dcda" + "ca5774f1f295e2d2d3c63c69abbcd9f388a3383371028fdcc8bd77f7554d6aa3f0431e8", + "0d1c324afdf01ea19e9453d2b7397584d773716d6a08b6e38f9a9fb104122ecfcc9de7bf" + "1e5a6cfd52a08b7cecb002ebc21798d474f035fe7d4554bf632f237bce14aad88b47d4d"}, + {NID_sect571k1, NID_sha384, + "0e3f4afc3e7b25c1bf2d98098a5a87db1224d9bb45adc6e434732b8722a708ab80a1f3f6" + "ef3c5aa70d2e1dad3e4416b12cc59171f05736c4b58bd084602c344f2f0bf3cfdcfe04c6" + "4e87597a99de23ded64b33607f7c273ec321f6462518715b11e91361e89ce5415bfc2ef5" + "20bfec378244a3bd2a4b9b6b3d68815f2f75baf6", + "0e298c93351323e2c5304015a4878997ae4e79d1c32f1dc64262e534d4f2c4b3e222356f" + "fce746763373fdfb936fd330d3214a18c07f1205b20c9a941331cd676040ba1fe3dbce7", + "0406ee4952a83477d89ea05ae63d5169cb0f7c7ff22f15728c6d69dfb30d1f28158e2667" + "f9342cfd9b32f2fd537dad47c190d82f72c03043f2a9c5d97cd09d07ed4c35b961040425" + "54026d5935dcebc0ed5a07b7ffa50de3c8aac309dddb61b8c560230379696d81d72bda3c" + "819c46387e7f026b384bb0f7b2ca90c402bb67b5e37d343cc21a8d1a0f822dbb2766030d" + "73", + "12d23969d230e0e2712f96b11e196202dd3e6ac755c824f92b9c765e3fc808d4e7236c8a" + "3c06ca2c8272c7ac953fdb936db30d892246cbdcb7f98c43177e1c30afcc162af511364", + "022f6dff5bc1eac1ef568588e2e512103cf56ebcb610e124a125fb004064a28291c19e83" + "ea08171bd1b14ac729392c7c46354e795d63e3bb087fd100642465efd817b79924408a1", + "1785e1fd773446e3b90b8704cc2723b8da2f99d1d699e817c3c4622015d178b0cebc19b3" + "a6dd972f75eb3828a386973c0a5e67ca192d69f1a84c825d1253f1062a990c3f1a947c7"}, + {NID_sect571k1, NID_sha384, + "8fe32671f6927272fd3cd8dd4e34d44d27fac8c88b41bf9a48039e914990bf06d1633b38" + "b9200ce1c2a275b9c55498e5da2d0707322c3ea0a0fd7aff598fb801628264e13047c800" + "8153e8595a0dc95d54e70b882ac2ac9314d2b78e7b93922da818d7075215e354708994af" + "66958954c92c074d132dbb2488e5a531c755a8e2", + "104f4ad56594c5cec2a988c5596d73adaa5a81802b40110dbae698ddb1f0b271fd1479c3" + "8abcdb9b234e69cd0da8a0328d2135c287d5b130a09fa0b899058e7800eb2dfcee95c1a", + "0404e8151aaf2aa6a6159622baad134be41c404982bb0101e820eac8f0a52166546c5392" + "7d9b419604e9b025757eaffac526d4fbebde5fba0841c6812dff2e9bab5054d4074a125f" + "fa04413639ad72d6eba870e1760c71966544f3f881f88880fdef1edeff47cf6c235e8dfe" + "f1eb1d8df51f9c48b985912f1f70b61fd3d4b859e052887560872fe6e95db0f435778d5c" + "4c", + "0cccd1bf3424d8bb0513fda3db93e81bd34175d84aefafd26b37eda9e767618247bdc94e" + "d2b1882bcae4c83eafc30a7a4a80806fda10a5e70b8827287eed8eac2721939a63c2175", + "05b1460e856548287683dfbb93efc869e80333a9ddcf292e2fa3b3c8d430563a01340685" + "c6db1059aaa8b298c8db9e8281f36e3a9664faa17f413cb439ef24cbdc1a4d58872ff6b", + "0c6faac191c95738f7c6ad0eceb035e5d22ae85e4bd0e27f2e65ab293717c0491be3d1b5" + "ace80f4cb4bac7e33258706010c2aa48d84c9e39c95e30805fa7669c42bad84386f7754"}, + {NID_sect571k1, NID_sha384, + "a8fa01136a0a78313a5d160c32fe5d1805eeb3730c18ca0c47818e82c48eb4c9e5b2dfe3" + "ee5facef9ec59b68f4e6f3213f77fba9f8ba06dcde546ae348d343233883894f4423331b" + "536f62373a495852977a51cb192cfbec04b5582b4ece69f345979e234de32da7a120138a" + "057a7119735c4cb19099bf48bb202e7ffac04def", + "0c4989bf33b3136bcb4ba67906eaff2bcbc6567635aa4b057acb7353ee87ba3cb4cb9838" + "f8f679729d5c6ed98e6c4199cf58605f009c6873a1b8321f83cd3c0973b7a3cfd9dbaa5", + "0403871c7781f2b4f653f0d49a224576bd1e5363d5171bd21da89f590f49fc212d8a57ac" + "8a140d923c2949ca287bea803afd763f15f909c099a07297e8ba1b37c70e1e8f0fd1fe9d" + "1c05806bd5b4858ba0814da2167d232d55bb5c41ea0a36fb28a0a151c1b79b22cb16613c" + "cd9dbf92174e42578ef88f4da6eb44918acf427fb7e4022da3376243e75410ba6ae012dd" + "fe", + "0a9eb767077886c48bc54503a0d2d62f0192d3581bd9ec253107092c22f68a15293d7c3e" + "7aff56282f0cd35e86a2b3c55c9eec079201d99b5f49946780ce6aa18b225c2dfd72cf8", + "03eec6ffb390ecb2af4f5ca17fa8a7fd6938667b319f0f61e5c7523efb77afccddddb511" + "4ca8c461b1c28dfe7eb85ab156e24e891cc6f9511d703e8b3c8443d04fd8de80f5d65f9", + "10cf3156cf71dafea6a0d6abbd503d72b13e6a684076ac900f390059cf3fc325966b3548" + "b58e14a82bf291d9689783b899db7d4baba524b0b63d31f9900a84fbabc2ccad95742f3"}, + {NID_sect571k1, NID_sha384, + "ba2d83b21c783d6ef2f3b7b10e910a418a9b9f49ae0fd37990335b3a3d15627846c9a12a" + "1f31a3d0e062ad1bec5650606ed4dd06c30e50c1e8761a29f4ea1a20f74635d5dac22e5b" + "787ac10f4ee82b338a641484f91771c128c84d31cdab0a6b9616078c898665655ee9dd4a" + "e73d33b94bf091b064928b959623aa71ff73b4db", + "1a96f2ad56e31397e236cafc108087479c9823589a5fbc3dc7488d0e5d1199cf245d7f21" + "f524cc0e8b47feca14c93fb760e631434a91188b32965053942f3bd39b3714f9d6f1a11", + "0400195bfb66e20ae295cd22d59b27b3880a890fc44ef5c720b568bf7f72266293841dcf" + "0572063a96c62736d9d4a9cce31b10c03016305a409858a79070477d3e989481ec555c81" + "460491122a199176e2492e07fae4ddbf02d2a40a21bbd99b8f742b546db2018cac27fb4b" + "1c03cff55f61b7caf13b0f3b097ffc8e1549eacab89225e0cf1e96b268eab7f9a1a69258" + "f1", + "097e28225aee5bc9a970a150502dd14bee900d3b040b0da9cb52f5824e66af46a991bbf6" + "423fe1e089cba47593af555b07b45e47b0f4141b0412ddf6e91153213c5b8645ae7bab2", + "1439928b55917e93d59341532cd1f9d09de1f6e0d9a04514bd4b692603f2cfb75a579301" + "b39b8cd92fbfc8832839691c23e0ad3efd3b4c7c3e9a366c1554c6dd13c50dd087b3055", + "1fb432e72be6fc524a7106b21d03fa71852c18c67edcb8b265db3b144214e7e6d10caad9" + "1f81616e03ae7913fea1e8d11e90d54b17705e8d04c8c20f0f4f46f117cc423ca178ff5"}, + {NID_sect571k1, NID_sha384, + "ea2d5f4e9797bfc2f33f0fccaf530db2bdf8abcec00f09a0338eefdba318221ec0e050ca" + "d1a85c3f76b784c6e8c18da2b062f333eeff18b7b781e67d6d0a4368b8231a892e0f4103" + "012348e5df53ac745e4d34e2cd1ee9369f97d4801ff485fc144b2007008036bbc07cb1c3" + "02a00054b54f3713919191e1d5052978c9c2895e", + "0c08ed8e0e0f8b0d0714b46a2164b933f8147692f18da97e5a108c44d5a5cf221cb50536" + "e41832b83bff4026c6df156386235cf5e3e9a67b7cf9b2fa7707c5e0ff33a91601b8e34", + "0402d516bdd1914c83aec1cb242710ed79efa61cbb31dcf8d238d8f5e089158b2ee2bab4" + "07e01996a1621b1a869a98227c12296cc2a71c1ef2d0f26bd6614f2ac77008048abeedaf" + "cf0151474bef5965c455eb95ca2ffe1d589107dc251d22635f4a9fc7270358b64e4d2b81" + "666b60c4a5c49902b0fa9963197b22f90a09cab97007842816f64fc49e351710db849800" + "32", + "01125bde6086753b3bcf29b7d5a4fb0a8abffa6503b4f0b39960eba226062bdade57e4d7" + "3e8c1621792626203e83fd5c231a53b0ce10890881460802788d481f233466060f73359", + "199a1e40229786b966592ae6e275874ace23d5605d0c3371a4f9eca7ce4858927958bc1c" + "2780e9f2f79767c1c72117c79c408f972006841cb621837ac002cc6510e0432d99a1f64", + "17f4e5e23e494ef149e4abce2d8a1ab10e3e6c2cc93998fc63baed6565ed350b220b2828" + "55e2824f398ae76b8679201b43450f62237f6fec643ea659e6c86abc24a63d82d9bf219"}, + {NID_sect571k1, NID_sha384, + "b2293b0a09f41decd9d8e637b1b08c2efe612f33c9c0beebb6e05033c6103b958f8aacd1" + "25d7c810b4c287349f5f922d2c6ed554be597fb8b3ba0e5a8c385ed8ae70d5ae19685298" + "f20e8d844fb5ad98db12ba7e5f45baed9045c3e86b3cac9bd55b614b82fd075954fc59bf" + "c6124cbd68edae988596575f379d8921b594c75d", + "144090a0ee38cfa21fabcc24d35139a99656911ad4f6dbffb77dbe74e7993edfa9fd63d2" + "c4f6bbdbc8ec21ba13c9f4a3576b5d6e3abeab5af5ac81b1f2bb6d4c42dde645d854d9c", + "040208729b3c7abadfc221cfad8be642588d5d1c20989fea731cfccef25886905e4b1e61" + "cf9548d89c24f5706f5243dc8aa7d5b2675c2c6d2755ce6a12e5b12c28a2cd9c597b7dac" + "b303db73ee445ffc0f6c77467f3add3b1e97061117e221687f5589a030f5248bb959bc2e" + "d98c9fb66da8679dea3949b77652dcf83ab9c50a00f6a9c22bd8d16e093b2deca4b0c759" + "6a", + "0adcadb26626eb9f8db9ae98c6808840b65d6f886a3f0c45f0b993a8bc62bb5c08dcd879" + "40dfef4f220f5e50234fba3a55e7127fcbb967ff78ce4fd6938a9bb653747116541cb85", + "18f7fb6ee028c3dd754d6e7b687560fa269b5a5fabb1d98529e0a27dc66bdb1ed79b7b5c" + "64fb71e767d9497b9255f26b8150b9903caedb25f51594f5b7ec2870515f701bd68faf5", + "09ca9519388402d5d96dd9ef2d4ebfd0ebcfa58bf8c1970d04851b2409671c9d5e4aa833" + "555df374469a4d277aab93b8df8d553399908c930f81c2d9769f1b30a13f61c02b16852"}, + {NID_sect571k1, NID_sha384, + "acce54270252e7d9e983c08c993cd6b7e3caf482a9149036afe4665bd3d0662a68180471" + "87872862d5718b8ac063477f693caf1a9baa8bdf2f36d411a796f2b46ab56f66bc949242" + "29f8264016d6769c85d9bbb7d6bb042fefdb8fde1be026b86af2017aacfe38c97309b468" + "9b23fff94f1de880064f1d3ad9d74dc804c41f41", + "1df26b672b2e3617b6b6c631d3c6be0cb49c0a690de49643e0f416215bcdaefc03fa9c70" + "8471f1d87476d58c8f147517ec8a14aa945ef001fa01984d5c3d81f7083ea500558fef4", + "040767ca8fe8f3a7addf01b230b99499b33c83db95db05e1956fb1891fed60406865291d" + "79b0daca0c307a3ec8b1bf2ac2cbab728c6ec65c013e01775ee21a29305e9403f72883a1" + "3800acfb786b09e5185dbd8abf831d12967107dc57a040d7c800d904b530eed1e19a8e52" + "e653fe8bb824cc424d7254532d0fee62e8ee7ce8e871cbf6e4ca3bc040444585b9a4e397" + "cc", + "13e5e47048122c8301258c638bc0f00f8f9646cba927335535f68f4f4f51f23ac5398ecc" + "21eb0bfe8fa6a2084e11fe67587bfa791cfbe2527797a4d98046f9df37662cb7e86a5a7", + "164b3500ad14063101b6c5ebabba53dc5acb4d6771d3b05a505e6a67727ca8ff73d996e1" + "329c0f6d8f738237ee0f0be415003e2db515ef93931e09bdd853b9497826929eac9e9a8", + "06b65511990c061a6d2a97fe2a5053c775ce2bc5471865abb7261d0436a04b79baf41a0a" + "852a57600cd4c6a114b3a8466f721a684aac2592640bc149980545daa271fa9b146f2fd"}, + {NID_sect571k1, NID_sha384, + "e25274ded4840df0d71d3369007118f002b83e2d375c78f7e29ade067db15cce21842611" + "f3f015db2efec57da77cb9d16eb1e00a8c1444d48dfda569e29fca1ebf40a22fc646a9fd" + "44460f0e473bde487634bfbdac2c312f66a1c2982c6fe76c54ac72b6c8cc9345e47cb319" + "a974b3cc4bb40634df74b4ad7e18adfa9a71ddd5", + "189918b832e9fa30161fdd927bfc267f6405335df3d66d225e17173af52a671138883bcb" + "94c4403ca3e001fcf09ef4c6488934d6775af2b1da30a8f331579af2d0fbb530298d8f9", + "04053e6b43c0551f32b7b34467d188985600c5c0ed12448f2e763609f40039f92002bc8e" + "70d8dd3e337c3507fc996a1557d5f2fb3132507e49ce653482cdc86f6ca5903b77fa1619" + "d904a9ac78a2c23be0841b96cdb1d55862e4854b530f1fa3f469ba9f7185e3f91c28d03c" + "27d9666345bdbc7a44764595b303f49cc43bc2d0e944862913d280273cfd00e15b6b55f8" + "5b", + "0b47a185140b583c330c64a10d50748e019134bacf153cb4a23753f140a4d607d5771a8f" + "0f535f9c35baae5ab6c37a55f38acd12f15be18d5bd9662383b30e4d0ce487e8cb553e9", + "1a2ae62cc9560590177aa544945377ff6ab1b34e7e32a25140f99996c130e17001563664" + "7756a5e8522c936eb1389c206ac74c012941269165f3772373047521f69510c7f3e6acf", + "1d86f4a6ab2bba7f6305c2df754652bad40d7c273ba2aadfbbe65c07ede4ac0e65fc0a37" + "a0139a6ecab296f58c6c2532701bb008bd9e1ecac2771d9384aca094537fcab47f3ef06"}, + {NID_sect571k1, NID_sha384, + "d8a4aed87c316012482819b03a1d91691f2ad11a2f46082497ea8f64880d686891f7da55" + "0b2ac17199c657d4eb9d04d5cb8eaa180f743b87d23b1c86103f9e9bb60f4e19f0ff9d16" + "0f180aed7735130c03adb62502e69be5c624ed7bda2301f30580ae0921b02e103a638f56" + "23c02c186e3bfe6ff134c762a2bcac1f879a9353", + "0bdcc175eca3a399b944eb0334ff33c4fd130999c8ac0e7b52ac5b774fbad53ccc3a3102" + "4f5262b2eecfeb2104b14bb244307effe3dbe8ed25686dbf46a42c4b6f8e34010ad826a", + "0407ab1a9279a8408828c2bd21ae6c643ad82633d636d36fd91498cfee49c8a635313f56" + "993d02cc46da3f5b78fd243516cd23c14a4c8d79cf27dfcb05f52f0cee59cad5646a9389" + "b80799beb1ada93a48819ab70b74c36d2dcc3c5cca1f7a57ec58e643924c3ceb7a90c9cd" + "9bf7ec762a2c428d16ef431a45cd5d069cd828601f903cb0a28182af2392b5ad12ac3a24" + "c6", + "04ad8d2759df82dd70ebe9f3402d3d533a1b4635dfd0024deeee52b32373550f550b9fd4" + "126aaa6c3a9b1f352c40c86e13f78e259abb17f85f0041e0cca9e2ae59f4ee3ba2fbc83", + "1cf9ce41dd5dbc3bee9f46f82e4bef10cefe79a87e8e00d002097045b9acd46364560e0f" + "d27b0be6655e73b5cff272c8764b4c80ce0e1c91a94b8d05209a28b553f589ee2fa1b11", + "149fe587b144c37df2c48c2b7749c509421cfebab734003e51383cfb773c3ef5a24fbac0" + "255cb807f5b95607121c5848d3f9656227b61d5a14042351de084d9b88745be242b6158"}, + {NID_sect571k1, NID_sha384, + "acbaa5ffc4eee0850075c0e502a70cc7a897a919f5e7bca4e798385601a26f411fdae546" + "6ba9f6b6d8d7f819a749b799fbf4a3bda9105063e74914e8583ed8b31ea4d22164bee6f1" + "4bf53afca269b901c80cb3265be32ffd4ca4bc4ddb83e11eff82ead6d75dc4aec8e5c67f" + "35d58a8a156cd1c0351abdccc0c5396c8fbe6920", + "007ab5a55a1d8ecb7f5dca2afdf9ef465569a4b0374716f604ad42a6e0271e934b09655e" + "8e2529784b69b2894bb399b02aeeae30e9e7ae70a2a8e56b9e775bd978a04c728e3951e", + "0402df88e368c8162c1dcea5ceee3a4c52cfc8d6121eb81c31236ba26dfd1874c61586d2" + "daacd96cb5ebc7053be57641bf53bf2651cfacf370cf470db86e1470bf285c7166c197e0" + "94030067763f9fa6a9082ea16dcbf53c2b6f11c9ba1817198e5a4e189dd98141ab682ba4" + "de0b3f873ae54efc080a2a03f755efeba3c0ade8ea67228b1a5a11d730302f1eb7c6bc37" + "37", + "0d3dd75ec61e0f87737812fe1ac86ba336b1512bb9f7ceac2c7d1a5b4d5dbafca57a5209" + "028cef9468ebdacb2a35988531baa094a1c901d9650f2c5d8e03a1621fb33ea85e2b506", + "184a98dec91b9afe52d4dd6b2d9f2d7e3c42e8e614332080aafd2621136ac7965beb4e8f" + "97b222c1b2e5448b79534db4e710331a2f877f8fc2a9259129f0b24d24289495da22542", + "0fa384a04c4b0b0745abea373aabc09404a6037f302e234e7a2840ff39c2b86ae37c814e" + "8bf3f3f7cf743748f2b88d02d66a3adef2028de94013c07075fb73f00555aa900337149"}, + {NID_sect571k1, NID_sha384, + "9a57b63a4f418404e8f5dcf3052b9bc04a4f6d2c33bde8651506d9cbc5542ffb9023292d" + "ea463111fb78913ccdcd182faabbff9164219b8900c7f9fb394f7d9678f77b18f8d58526" + "ec64d7c1328953b983a7c416583e05a069cd76aefe26e5f5687b70abfbf9f58f052dc086" + "3b4fc3bef805cc3bb05bf76a83235af9d6adfe66", + "1e7d4da72b1d82e17a066fe387f2a0a7fa4c60ab993ee09710531789186077f2f32b42dd" + "da497d5fb57356383e1f96973df043307f0b6519430c3f0d40d62954032872fceb7dce9", + "04037c59e95132f0027f661511d1bedc3018bffa62aad7f44d7370f5b169d683882fca3d" + "d0c4260fa8f72a47a44fb0fdcf0d7776ff0632378022bdd223753c66f98dc04904344ac7" + "4102d7f19468b8e4f32eeeaabd6e402a35f38dbb9f2476cf07881d8bcff170b0a6e1ff8c" + "b1bfdcaff734a32ae9bf34a909ae7fee689e3f1ae777812a45dd46ce13fe648016353c6b" + "b7", + "18ad70fb9c5673e5a39b3a1655ff76eb84519555a6cd88e86a26f9448a54f04516c2449b" + "ab3f75e74a8d15c69926ac43fe01ebbe7e1c97e73870e3cc4c0ca431cf614f35659e3eb", + "12abdbfb2eb08e326289fdf5615057d912749db4f17848c1ac73bf6a51fbe3e1b2732d4e" + "b656715a6c459c6c3065b67b577f21b8eaca7d657c3b3171e8a4849f55024c69487e50d", + "09609da5049092e0aa8ebcf10c204de54c968b09b9bfb3eff90b80bc675d557967b35f52" + "e459f37fd198a83a858e5d7f9f5aff8b2ef7272b236dba5857e88515ed471a60bf6da49"}, + {NID_sect571k1, NID_sha512, + "97b79c76d9c637f51294369e0bb52c4189f2fd3bd0607f91834aa71b3555605a89ff68e8" + "4fb5bda603f502f620e14e8b0c7affefafa2f0b303009ee99653ae4550a05315e551dd12" + "a4d8328279b8150d030b03c5650ed4f8d3ba7c3a5361f472f436b200b321e7863c771e20" + "ddd7bdf739c51de3676f953a5501e4477aed1bd8", + "15b7271d4319db5743119c8103a7d4c6d57e9c62f3eb93762156d2ebd159980aa57cea94" + "8e416717d715a2e458851f1b2e9ad4172bbcc53861db29c3ee0ba8e82617a5866170847", + "04003a5b9559b2058299161770166766aa65e151ac6a22a90205afd27de5eb99c5b1db36" + "9ad52f09141d3bf08884b96414c283b2669ec2a2a60c960a2f03d425dc4c229c0bb369d9" + "0f0024f3a9cf3dd257043dceefe6617a98e222e1cc820f3e19e63c64fdcf7ce8d9c7af73" + "23c9aaaef4df02e498597581082fa3767c8a38f508f4ca2c1eed6f298dc8142668a00274" + "90", + "0c585e425ae4a34f9b7b9205f095ea07599716f1eab1a8bbd934219ad760c4606ebbeb06" + "cbfd3952e045a040b8ce20603aea4f965d1b6e87eac7a61672823fb2de7767e3466c730", + "129162cce6fb05e1fc8630ec6c3a16d108bcd251719d89631497177e6fe6d1373f114ad9" + "dde6e04a4ee0b4747f91c78703012e5a058c132d54f2ccccfc0f9326b27d60322b497e4", + "140163edb5f3c4b49228e4614bfc6da9f73674eab82678ad9947b2a635f733dbce99ce32" + "09f613e2a75e62ed84db4d7d13de6d789b7cfedc0cb6a028d8316db8831db66c91791c5"}, + {NID_sect571k1, NID_sha512, + "564ad0e37c9c37a60872a4780a723d08d1159ddc77bd834d74c1025cdf3cbd5338c3fc07" + "a904fcad9b979b2a2ceb1a0139af35e5112305fd662a57af6312624b9bdd3a64849f95f5" + "9a46ca8feb2ed56f87f258518947474c1729275c4d89b7dd286ed65f286cbac76002cc63" + "b92a73ab6bd13c4adef282f32297e441bdd8fd36", + "07219ea7917d174a5386df985d0dca798ac9f8e215ab2f0003aee929a2dbd91e37fedead" + "0ed95b1e8aabcf516bdf54337b4aff7ace4c6b3179f2e919a49db50a41c9d4d58d4f636", + "0402fd7f6ea770e0a6f1eeb3318b6b609c0e76ffeaa34e75f56910e8f658b70940cd7a59" + "18328473b279f882816955b2e3702c22e0b3e03863f8d99c64f3a2c9d1c68f59a28eaf25" + "ad06c2cca84218aa019326cadae9639069dd27df4d1e95a4c8e7d7cb426e70e2d38650b3" + "82e325dc3835afa719145d16a29e4ff67de37ac8949641f0d140072f59718450a6699732" + "06", + "03413376b32f18385cced4549e231e514eadfe05fffa0b252732f5c88d13d9c6e0c35be3" + "dbf72029be5e4573b8f8829f6efbf58a12b5c161bb7055d1944eecc93f82c12c5c56d9e", + "1c45c25f3e8eef9b92142f12e4119842122ed7672fdd82c14b3c34ade3243a4c50495c06" + "b5984d0260376c4fa44c60b2e34b0084066d693943071bb663a44884927352668efcc62", + "08cdac0f4498173bf4e59de98ac9a26fc2c752cfea7a5b75141d4e1d019e25d70a717ac3" + "ebb82884436ebe1007b0488c4ff29fa31fdf02f77fd99535c99b69c9d4e5f432516da77"}, + {NID_sect571k1, NID_sha512, + "072ed5b14754fddaf54e20da42432df49bef38f4a3b1841b2db457ff86c44880727aca94" + "5770adb41269df41fc17f6a687bcaffaa45a3e59070526ed53b8dc3b78cf9a80a85461ea" + "f4b477e44d5ec4c2bab9c05aa747a5a520b35fd09e8b44539d060ba1c3470267e0dda111" + "b15dbb587614a46e1e477127f963a16cf3a43ee5", + "0bc623152253da24bf8d752bd78aedf7d5f6a2f889453ccdec14e10753335ea8bea83fd1" + "81a1f3680ed50f2324fbeaadae160cc85831750e021f3e44121ea1b1efc29a7d0069479", + "040003f3a6cc6964ab2f6da95c0a2a7b75afe4f77faff16fa28aa67809afd9495cde1f5d" + "ce079ec4e15ec8c1a2095a12e8adc409fe8729d865f50ff31ee75d7d807afd2c15cb142b" + "e9076b15c1ce931ba06dd56dd8e4f544425fba4f37f951a188c8e7eb13a2850c93b8ce60" + "f10b3783647a2d053e2764a957656a184a385e95c2013685d4954a2b2aa20e4a15dbc43b" + "78", + "1e091f4febd694879f78e83842572280daa48db65c463e66d9a7ea57b82fda531f116800" + "530a03cef2cf7e5be5eeb6e420213ff757c27b8e8a94513e417f4acc62adc02a76a4fdd", + "0264c499f7daa6ccaaf191d3502e86458ef088c9bf2ad989851c221364b24a1a3f4404fb" + "d0eb44a41938ac6ab67002faba0bdde7f44ffe6bc10def8317c4e2807c3ca711cb6cd33", + "1b91c18fc55635c5e3cff70503e7a49572ba52b11bac193230c88d6eb65eff6b2d9a01f5" + "3ab0eb34f5e208538136811157f872a8255b4d249b6ffe021b0c0763cde4d7a7e72b0b3"}, + {NID_sect571k1, NID_sha512, + "e660dbdf3e61af39b83b95d3f1970f66d616f03273f7dddb98f768452b21cd39604a31cf" + "80590d4a5e4b0d4917519e10fd325dd4ab7a52d70d154506329baefe0d5816f514ae1094" + "83122b4fa8fa1ebd7fdf1fc4e21e8d278a50c05d81c8f489596633d949c6c8fea96fe914" + "30c01522a5afbd5042be8aa47da04581b2bd21cc", + "0645947d981d258f2954558c31022a3b6ba5fa7b675312f794cb61bfff1d9ce87267e4a1" + "dacb7c8fc58624d31c85ebe22f80d26a620fed5df5bf38515e0903f0b69a606048197d8", + "0402d03e05c4b555943fd69a299249e7148e99633b286da69bbcda64e7b06ce9321d62be" + "ad7b8d095a68d9a3ab9e9cf1aeb1d8c4904a073c21806830451a79fe7a907b32df15ea45" + "67023cba4f6f1815cbe1934734a901206596c6f482011f6cb6d452329f9412d2ef456642" + "9e7d35f2d247eaa7849ee141bb16914b64920fffe6b7923cfb19759fed6e1f80d6c40a0a" + "e5", + "18955bb752f0af7d7aaccd0628dcf1f52d836fb91dc78b0fecf21ff5992d9c1f891f0eb3" + "c139803b88736ce10ba4733a523854c4ae9ac35421beff9b20e0c8daf90bece46737579", + "110a428aa96277c9a13d4529f58ecc57cd7209a7340b4a78694dd9ec800f36c9c306221f" + "a110e0b3fd65b9dcb67307b7d7678997a3143c04ba96d72be83a1cd6b01ef22acd0f82c", + "0b7ae2da5cd36006a92a5b2e6369afc2728a93edc845ccb1500e551be361f8658819f7d3" + "eb82ad41d7f2beea1a1cab6f103238a6025acbf03a2b08339841694022c17db8c6c6886"}, + {NID_sect571k1, NID_sha512, + "8c9acbdc431565feae60e08bc7da113e12372ed373f1e1fdd581f98c8a7b0c79ac4aa42c" + "7ffbc963fb4970fe26c5b5dd314b7051fe971c1186ebcb5650f7f7011a924de893f06961" + "b8c75da7bff331847feead4abd2e8b9d6ecbedac18f4eac207b948e6e4215e4d5cb483e5" + "c66ce7ad788cb89604d3a3e051539094079e7bdb", + "14cf93ca69d94ee8fbea0c8da9d76aea092b73073d8f5385b65c6dd4d567fe86bc2cfb8e" + "8be890c3c6cd9abf7dc3a17eaecee3d7a9455887863e496c48dc3e47821bd3d825b6bed", + "0403dfd1fac02ac4bd3e3017a3d94f29575238937824f80ba0b2eec185ce8c641e9fc721" + "94323c779dde8c4fd6e748e09d66e82c82add75106a0e1739f2b977d40ecd3cb15a1eca4" + "2006a73dd31226adba7ed8d08476b5af10a806fe8de72251400a83f6c9f6edf5e0cd6bd1" + "fa8f3595c3ab32b4c4548729c455e4eaf83230e1335cf181cfea6b6bfa6cd4ad75ac3278" + "cf", + "176972d9402d5d6c9753532e5ea907f256a872c100f87bd390c4d610bc00c408a97bd55d" + "ff2de1ef2fa8b9716e33a5a39bb6ed2ab541848685040656ad0468b360f42c3742c1fd0", + "00be28427524a3b0979cd82fea407463647a77ac45c489744a9998b545a13516abb9213a" + "b0d89a2f5f872d927ad48dfa502de95524f94f34b174933f3faa7b554a1c2c3a688a0ed", + "1d49594454516c1876f23f2ba0b1fa4dd8bee028bed5524b7635a2df5b8459f4832b3db5" + "f6074cf07c169cbfd9099a85ec2f5c42043c5b851c81a71c87affba34b11eda67e0ab69"}, + {NID_sect571k1, NID_sha512, + "53ef87d6ac7b9698f40b3ea9f3442e7b64207b140b7f66f73fb7d5f8f98452d30a4e493b" + "6c0e3268371e88e612b818d4d847f032ed4983817d020411a52d81fd2a17b58ebdec199d" + "817c2a8ba77042bbd747a6fd4bcc7e844ea829fd8461b389aa0b5957d92962b6d4e86385" + "a8fbca90b8fac40944607117e9a4ef6dccb8fc1e", + "033feeaaaa28f16bfaf5ea9c7319cf4561ba4fc55327a8477b6cd58ef6ccad3962ee1f3e" + "db243f3a04e7e49c8e23509fa2d63252adb186b8bc7e9255cd61fa9bc45242d42da3a68", + "0406fc62c39bdd41ef7083ae10dad59e38dad217c55864a55a6a80bffe2f5e7da977d79d" + "b9ed8c9ac22d6f096129a0c680ac93fd77da4ad96e292a19b48454f91c93a3132559fecf" + "07066f1f737ad3af3df674637aa5efbb844bbc441966bae73973481628e5c2c67cb74553" + "a7c8f2c5fc478edd8265bd6c99d6ce122a245e46fbfc21992b950f04cbda5eb220261316" + "c5", + "0a5b86b76f98310a25111cc3d1b0b70fd0c20208cd0bfd8007cb569a187c3a97edd8e716" + "aac938900c3ad8ed3a0d091a18555ab532b50f25184454d84af2beafadf754862b8ec74", + "0de2eade32f537727eeb82dce610b48106b277d15d8fbdb77cd312ab9983ab21bed05f05" + "186a5cb2b530ba72c8c68b768c26d942f9224c6e6b9e7827c48e129833cb679c70aeb29", + "15e4fb92190bbf8dcf7548057d1bd5e5ec54a6edf54f6b88f50e96ac87ed7a7b7c0fe1e1" + "174ba3e822fb7e7c083948296cdcdcfbdc4bde036a07f84d210001ded91c554ace71efe"}, + {NID_sect571k1, NID_sha512, + "dca1b7a9a313ead11c2d54739d9017ae27f9d08b3544e418aee862bb57e427636cb6aedd" + "a28e10f12aa15d2355f4f8ef112a86fec5dc46e6acef693cb8fc37c3e4885f3be3d3ab31" + "ea4d73a0de904e95c7135a149f77b621d642f9bd8ba192d39cfc58b6f19a797c4f3b4f3a" + "87054298e3ce5eda0ff7f44f8134c9a108285dfa", + "05613dfb53149bf5fdc4e08ccc1c752b0b66ab43aef2d008ed40f3df40fcbb2938d2c41e" + "3ea2dd4428aeba9059a97efe5593119673866a19d27a2ee37dd357e22b6bc849e7e22cc", + "0407ef12ccf6b64c7ca64b5da45937281ec770ede572b9a8eb685f3614bc358ce550195e" + "74666af9bb54379c1fe1304b76430d1e51a9976bba02e5781154c9bc187a31201ad99cb4" + "8e043d4ca20f06b26d75be1454e96f0568bd740165a2bc6e5b8429d557a79666bb7b9cfa" + "597d392cc5b8ecd180c37f9fe2088d7908e59ff644ab05568d974ab42ec9e01676e1b241" + "69", + "10b4b67007af35942216e9aab1d6561bf7684f334a80c7d909a6154cfde8ef06a148af10" + "4d534d7dda59b5cec7949de4086ae669edcc4d68b88347d2445edd3037525c97564ce78", + "15bfb47a27c6970fbb3256410d5c2f6c04eb308569a966790636899fdb3122f9e3015455" + "c4b50a6bd8cf519afc22ea845794f51e6994214feacf48322af48590d02cc9812960917", + "090c61f6c64381845491dac81d5273d58c59d9cfeed214527a52c8f23b0146431692a25c" + "bfd77abba22d4bc61ef24093c593c827ef645853bc8deef7c3b07bae919152b90c17f4d"}, + {NID_sect571k1, NID_sha512, + "aff61d62c8f5c31bbb7d0a64a6ac589e918bbf2f13e7ad13abb9ac26405e267249a7c992" + "2139bc28140833e10976b87e91cf28285274b2b48b63d24ac94c85c70fafa78f8ad05955" + "c0ce6c02b841ee196dab12306e3e3d6138371217e2b474f7e67a80bbb78a47e374ffe2c9" + "f86292e471c551da50d46e7b5c8331029f369767", + "11b92c8b72b86c51903387a65aa206988d443d1988253329ad3a89c902ff1ef8cf73b7f2" + "e4aaa352443bcb833712d94c3e637ec12cbe4c2d4606878576b17fae1512fc77785b737", + "04022440b63bb4557996b63faf19d9f391c5085cdc2cda3755622a6cedc676222ceb5a56" + "ec36e220e507973c0f07e4b2e2d565a69967804ad311f0658a9854b1eddfb5270f4a86b7" + "69050199c9e443555123f153249cf7256dc3e82c5d8cb611adca0cd4fbb0a9a90296bfa7" + "70c1b0c0b43e4363b0227273a9ec9f00ecf83afc605b0dd2e5e24f739dd0b4ef6bb11950" + "a0", + "0e5ebd85f5fd9a9a81067fdf51b1906023e68672d160ddcedeb35787688dcdc314359ff5" + "347907b685a718ce38a69be17de292eaef189fb9ee8c63271bd6818904cd246503dd227", + "051387b0d057985dce86cb962bbca7d9a047f70d96c20539ae7d6b7cb8bffff606f03b83" + "15f15a53049c6c1c227f86d395c2217d32aec32bbd406c790a6cd2706775ed8a0ba1ebe", + "0c7f3b7e4a8b65a58c1280110f6c2486cd2d2df7d48b49074e98accdfca4a72fa7d43bc2" + "5c6576279f4a70f22c98135ba79158bcc3452940963b556304da8e1ae88973d827bee32"}, + {NID_sect571k1, NID_sha512, + "721017294f17ef351e41256b57a64a79f3636628c4bcbe676ac9a2d96076b913dc4b246c" + "9945183ec9bd2d251441b5101eac44e2fa1bef59dec03ccd7fa5accf3b7d094d68dcf78c" + "8de4e2f19f56bf0dcb3b66b9421ec3f8b353b9fd74feb2e9affe0bf9aa421b6f03eeba3f" + "fd58fba56b3ebd094880e50de01ee62a108a24cf", + "0c3c90d5ce4375a08b85575faa78ee6bbd9e5571ce5a90582042617b807339c282cdc3b0" + "03d82006264b1c08c20af4ad4549fbde53d262facb98d923d81b8eb6093374b6a1e84cb", + "0401d900b4f64c07cb959049f2bfa18012f9bc2dccec5a73e9a48a9d5d65499e31ec4a16" + "15c4c50177c032d388263eba1a90e07ea68f081e10272e88a41389bd2626961b646c76ed" + "8e05c094fedfb5b118accd64d5d46ca2ed92b3123a62042a556ffee9e3bf709092fff882" + "31a26917d368db51d1959ad3285c7faac16ca57677651b070aa0abad96f07d35c5fb8a0e" + "e0", + "14d4070307cd269cc1a3c048ec0847edbff46f64c1ba5b734d8a800e50a0a02af57cf247" + "50d292e2c247ef1b860a9d7b5069a32f5b0546fe9e019e04af62316eb79507281fbef6d", + "1cda7f743c47ae93a9fa533145feab4c46252afabe3d54990663b5891b4979c645ccaa05" + "c744420ed6fa235952f370f5aa187250d7b069aea1123f19f0f18da18fde98100ff6ff0", + "180b4163f2eba6e3769d8345dd8cb003ea120164442efa885eda5bacd75f8d705b7f1bae" + "2976f67cdfe984430e36f93455ee7528fa6febfe92e42a002da165c63dba8fc589e7851"}, + {NID_sect571k1, NID_sha512, + "e2d1f33681759adb7954bb5248b0db3c3885fea0d4c1c0c226eb1e6d2d3ef1b9ac281a0f" + "1c2fe5175b67114b6a501e2426d1454bd5790dcbc4c232cf06b017de8a9bb39e6033f1ed" + "b5003e8de3b44cc3d6150c3c952afb442952483cc688908337b7c1a8b5c9da70937ccfa9" + "8b2b0098c530ff848010b8e8ee0a8d65283481a8", + "10f184c16228d9034271332178ed485d10b6aa76003efc160d63fea26fbbdf5552205ac7" + "df0d8c852a1210cf0ba512f20b798827b36ad56b12a826fa7dc1db45aed264ca6822659", + "0402637543ed8a11271bbbabb2cf72999f65df0104758c2fd6fbf3e1c5132ff1c1111fa5" + "504ee86bed8f219d5025f8ae07055a7849314d2d439408ea2b2ddc40320c57f5d41255d0" + "a6014e360137ae33ce6930b844d42bcda4050b25f349e9e19fc4fe82f5e4f73cf9bb5021" + "2ea875a5735faaa1d5494f1685d6c8177448dbf356b408ffc2ba0726c9befb9de9f0cebe" + "32", + "1146574a96394c82972eed1ab7ec98bd08f27653c565f0626fecb431ee4fc6f830554df3" + "5fa62b5f82eaad49524d3d4b0598cc7a2181ce9860e271812373d21be9536fc181c3f12", + "0dbf465de2c5242fb527f6e4a4188adb96a2030ed8417cd9431365173f569bfdd3e420f8" + "6947da10a703370d7f38dc43e2249a2476690829545992645c9c83d82af8adae893780d", + "1499782e0163f80de68e3a580ed08fdec8d6552ec69f186a74be89480be28a0df6acdf7c" + "65a72f115f8a59fbc28bb94af64cb3bb3cab20bd25265237a010370d9a5c781c1e26f3c"}, + {NID_sect571k1, NID_sha512, + "414fc5d2bd56b30040e105cb891788792da595583b11b8fcc7320f40dbf64d9263532dc5" + "7344dd17573c95eedf851668b5d552e8796af205f3a0043af1a829fabc2e93d9af9091fd" + "d9e0fcbcc9d6d9ec960aa60e4e2964c29a2f375400366480e513f63d124db7745847310e" + "69a38c8455e4e602056a6a4a14a8694155e0a9bf", + "181baf9d497159f837cba58a11ca435c442e5ca792ea559bff9f6a1f562c05bf6bb5914a" + "fbd1bcaea75b35f88bdd832314b249a5298622c89462344d3f28a44ba3d059df432fc71", + "0406f3915f884e250034db97327470197d13f0716d1d810e43055757460dc252f5281717" + "b3ef3fdd51085e65a0e073e78b697a21bc33137213981fc05d9b34caf7dca7a4f99be785" + "96047a96ab5ebec6201b7c65ce7a6e70effeaeea1c095a0172e9e2c7bfc88f7b05ea5750" + "76caeab189f810258373cff2484f4fb9c8167989f61aa61ae27113b5140c95f7faa505d2" + "d0", + "10e9e6047651362accc816389b26ea6befb0e34fe7363126f8c4ff9333266f46d63c4d45" + "075480da9ebdd0f8da7224b470d914ea1d68cd821f563b574bdeffdd0b3ed73ecb9133a", + "00e36644cf0861f45b333092d44fdd99f56e89bf3607f75a06920dfab0ccb1831208296a" + "a2431bdb75c5d50f15bbea2e13d185db6d7175c221858fd2b22afbeca7431c290b15d3f", + "023ee3b9ce817eb0a6733c85062cc3bc5f1ae62bdf3a74e3ec704baab05784dbb5ed01a6" + "a2a73c80a3e754c013ba886108d9eed2bc210f29a4774bfe5508ecd876ab47a8527c530"}, + {NID_sect571k1, NID_sha512, + "3b592cc8972a4782870e079b82a50f84b4c2d8ca90bd500d1ce5678982e266c391c556d8" + "162ac3aab967154d072dbc0ba1dab5545cf2651753dee2881eca5abd412fe624bf3f9d17" + "d33692d21ce23ad15ccffdfd250cb1949e73c9e40a64ebebb03852e92692dad1d7baef97" + "fe109f35b7a492b343d4b643a4a7b1723eaecb64", + "083fae86ab96bce99a53e50b7eecff38e4e25b21c4b0f6a4986915de245eae24f16b6a00" + "a4db159ebc27f5a6a072da94ab6be5bf75f5eb3f75c4452bf4ea7014392eb1e02706fb4", + "04078003779e0287bee54df31f64c58951df7999b48b647a6bac416f844485a4cd7a53a6" + "4170f9d2d31fdef0194a0c262b90e5bd33a1782d2ad56c210cf80abb5fb118cffd71ad79" + "c1073f89ebdf0e255205a7525cc12b7e1c58303ac3b3417183179c216ab8e47f33d0af32" + "38e3ae64d418ee89ef3a2cb4bc67a1d2fb1923947b9dbf3f4fa39ff82327d0ce3db24d23" + "24", + "13d126fc4033f537b00a81372031026f6a7a2062863a68e36c6909c548833d1a8f5fb5fe" + "25c7d9f2c65b1dfa974630204f71e96d657095b93cb54b00cb88f32adc08eeff4036654", + "09be9f4bcd7b8ef111337fb665379509b8b17a2212a80d5fecc685f1f362c45f930acaef" + "9df47c33c6028cf7aae424264575b4635a11edd6b005ad26cf2021051501fdd1b77d2dd", + "0dd196343ef76bec527c5929e02fbd5d02d5b0a4b5f2c8561978e600856de56d42943f1d" + "74cb81b67010bae98de0efddfcddea5d354c60c1fa76138801f6cdc5bc932c136309b6c"}, + {NID_sect571k1, NID_sha512, + "0079a02cbab3dc02601fcb5c8607d555beef7cd71a66911ab6514a4ae21c5a9c0e166f8c" + "f5fb198ec5a49a96e17cf041f35f00406b79270ebfe56dc6b8417d2529fd625686ffbc8f" + "69685aefa2fd30a937c02f25b48be4679e6fde821de928b33b12470867def874bb8c7c80" + "38ab6594346a2c44b39210d3610994ba60a05e06", + "1a663efa7bf4d8479bc535fad71e9b5e4f4281aec55967baa008ba17ac2f89cc3398d305" + "73edef29d590fddce8cb157f655e92779f59e7a18d0327d02e7daf4c1216143b3688fed", + "0406b4bb31856dc516be60a0d2d9f42508738edd4f925eca9c72a13cf136720867babb38" + "622fe97df70a1edb35735365f34c74baef9aca539aa1dfdead3324f41a16ca69bdf86b43" + "f706c4a91d3fac9e7647a6aec6e4369158bdcca2275866bcdc5a09b2f0f1eba10551da96" + "13eeb1e8d3233316b62a5f4641d6aaf669b975dfc511f2437d43c9eebe53c5115fb4741b" + "80", + "0a843d0cf776878fa9ceb163d7aaebd29ba3aea0808c3459036b258b99ccae4e2444bc32" + "11b5898c0769b7d7e036c07803497e13803132b3c6301412af3be8eb4a853e939a247a7", + "00356e282c096fe1690fdac4c0c66eda155ec42356dfc4783cff0160e1d76b33a99442d4" + "ee0e3f6e1c5bde4a16c8e18bd18f98a178c3fa4a560d8fb8b4b1d72663576f8baf8672f", + "0c5018c1383fc3847819726e1e940028892e1abd164b413293fe50f219f2059105218e4e" + "3b952b912a3258c4ae52dcc03ac5f027fdfa448a8d58e3aa5c21e790b3b47bdfbf21175"}, + {NID_sect571k1, NID_sha512, + "88573bd94ef50459814806efa868ebf92b066fbc2f7a4be9d2fa06b9dc1a72f72d783a6b" + "cbc107b18a6314511bff217037a2252e7a5cd34cf9d5b2fe9c7846931f0133b2e95876cb" + "800dc4ed7c4a4e4cc4f1195acf99fb0ec224b1f8fa8af71f72d390eca9d6be3879032a31" + "8734a63fec336c79035a43f70271def10c4955d3", + "0088d1a2c0219696a94337cd56516252b74139ea0733b17fdcbf7692c3e5f6c3989e5da2" + "aaed7468e65a5d578571928ca273ec3b6aa72cd196f560f05095cdc8346e5d31c4c2e0c", + "040357801cec0888461ffde22d83afa9ca008ac88518f4b09074d29a846f5900e024a8e5" + "947bc25ed0e5c980a58fd5e9aadfbfab31db8bec575fe886deda80134d91b3de96254653" + "020710806c7ed33f6879374c59ea144326f5948980c8013144345c5070122c0ddb7e18e9" + "f752eadf2a9b0854dfb7d9b2f0d80ff0ba46197ce6017885939e9f59b642a8fa41639ea7" + "5e", + "16940f69013026bafb6f400c037272176b04e35e9f1563d382dc9982968a186e3e152577" + "5d27150b34b8ce5e70b537f0149ce1a521d056b52e75da7e39ee8a529ed987c70b8234d", + "199058e36449ee1a3388d7357c9c1020b2e4c02144aea14b041bc584a752c94fb6e47495" + "9b24bd2c0c104f5ecfe223ebdede672298c29195033aaad5db1852ce4dc3185ba2409a6", + "11f3defd9b442378c461e2c68b239d2e4afaed691238c5ac4e0be46ebd461639a60176f9" + "884133900f988e2d730d34df5e2bd8a14681014c0a213f8d233b3c50ae3064fc38d1a19"}, + {NID_sect571k1, NID_sha512, + "d0e02045ece6e338cc8ab41d4a064c982ccb1748c48fc2fe0a6f10bdc876094358a6a90a" + "45facec798a83cc95c6795cf0f0d7c66b77e22cb114c1432bfdaa1485ff35b6a58107cac" + "3b7e58cb4f6c87c68db60b751e78f1fdfa54b8923b98caad0a4f31226956d065c083ace5" + "f1e9e91944dcca51879d782e40358d58ca758750", + "16cc8a0fd59455ed8d4de561fd518df2e008f7dfaa5f7f29ac2489a411e233917b43eb3e" + "be2596fc824be58871949545e667dbcf240dfb5e0c615ade0179d9ea2a1b1ebb8ab9384", + "0402477e678793593e2abe837961895c7ecef71af1feb882ff27cfbabfa0ba3ed771b792" + "23e7b2d2388efd371d5c325854cd60e48484f818e1a8146fbb780cd6ce06ba63c0db67df" + "8a001b696114838bb972ec6d536abd809d3a436650191c43b2bfeefab2b400d5921a7eb7" + "8e307266acc190e05f3869017f0a66f886bd6556c58aafb1042478cc768a4f86758e9f4c" + "32", + "1e1b851bb95d2913d6d35b756d49fba6f4c127dbed80fe4068260cab89c1d42f7a6843f7" + "31e83b379ccd8a4915d2e29550f3f6ccde607cd0b066dd5fa41ac2bf37bdcfc26cd4d04", + "10d4291346685fe070b267edad91154df83664dc115f058ea036c712929634d53662586b" + "b50cb6473c2170db5d4ee43be0c50532015937202e193d15d5189870691ba65aead7f3e", + "0b2a15f1ef00204bcfb5108d8f1da96ac3297aa041074b68989ff5b6b276380de7887753" + "fe3d416ba691ba0b2ad7fc065ace02815b2323fe17f6445b0fa66dba5d99d8e7d557cd5"}, + {NID_sect233r1, NID_sha224, + "f1b67fde01e60e4bb7904d906e9436a330c5cb5721fd4e0a3c75b83dade868736bb1d21c" + "fb1b5c6407c373e386ee68ec2239b700e763728eb675a153b8ac44cf2a87be85fe8ed668" + "3430cf4b7d718891cbf8d583d0a37cc952cc25fe803a7aa4fda80f05541a2f1f2601cdd0" + "c095f7110f2a84f7d641b8531572269b21cbe77b", + "056673197bfeea9bd7a8b820b4ae51a50411bf118a692bb9ed3d304da53", + "04003489be62e53910c20cb508de019c3e326f65051f26749944b4454f156a00f775ac38" + "baf19499675725e8190aeea16f52346b1c890d9583b38c7521", + "0a6c9914a55ef763913273b062475fd0188eb2d5af9c8c1dd97cb3cefc3", + "08601a42d7f7eb047e8ed9820ddce665c7277f8ef38c880b57109b7160d", + "026d6f50f0508953657df5d753c595ffb8e1c19f8d092f8ce8db54f76d0"}, + {NID_sect233r1, NID_sha224, + "1d496d96b533c632ed6a91f6e3653cdffaa5b8cc0008b35e49b2dd52fe261105c2ec7ee7" + "1a4ad5d51fdc3d36d688a3b7ccb3b3b0c3a65be17b8d8aa172e3005cfbf37a2d1b1a6e26" + "8c090c6f318e7e96f9ec9b9f5a8fbcc7558d89e840f7e76e44bed91c26ca48e6f5cbc253" + "ca2fe8cb81c484cabd24070e488f9c00cd96ad4f", + "0468f01d483144e514ec257f2e5fdee28a927f2adb19714c1f3524dd0d3", + "04016b3cad89cc42b80bb730431963526e26ae3b415b421575dfb6ed973e1701acaf7de0" + "6e20262efae01fc80969cdc1a281f68e8c8bc0d2d4fbba3a3d", + "04d261304678301985f5bb3f6ae465f11c9fe0e5031b31f194969252703", + "0878a87b2867c03f55726ea2a6db822788f4aa4e9ef609997940ee8c8b6", + "03545153f0554a8f55301d4b948043de3057cace62c8032c8ef8a11dbf8"}, + {NID_sect233r1, NID_sha224, + "723400655027f474446843645757f7e2cd466bf97275067b4bc4c9d79bb3b19b2421835d" + "69db916f24b77c381fa771fc1e7a19d2b4d09411ae55acccc615b16fd24705762b441ab6" + "7083a921fd4ae569ce0de69449aa96f5b977ac7dc022fdc8335656853796f54b3fbd1185" + "77f98920624eb0a00204f1ef83827245c06646cc", + "074052d027f05465a8083a59cdbf32600224e1f563f653b34314651517f", + "04006999290db440eb5b3291bd4bb4a1af6386654fc4d275ef136c0e03dbca01fed0b1f9" + "284e488c7fa2a010766c340bc25dc132c7679c2598e423c3c6", + "06e38460379ac3fb13f64d4de654d4fa30bd8178da0bfc29fab2a1e2e39", + "01b18bafe55e5c24fa2df4c09112b44d24e78dd09557349ceb1b916d280", + "0ad7cfa003267a6b7a99894f75720cedc9cbf820d355a6b840709f42f62"}, + {NID_sect233r1, NID_sha224, + "155860cb31a142082bcc0bad828d747e916392d21f1873b3a3c1d28ca3ff9d45ddb66a71" + "2e3856b6afd07c8d2b2a7badab296a9775b03f6fec0befa2d8d6d00fe3938df244ab46e8" + "36a3e686c8b4f918da49f0bb3940bba34a9aa22c7caf02df7758b0de01d9f47af6146344" + "b9be3842d9c055eaf0fb399cd8db95c544a62d8a", + "01856e7544223f55f80de72a6ef3822fa8fbd68eb397d06e2d76ddd35e0", + "0401a117e52f09080625f85fbaad8ebe0d3ad410f034242bf48365e88ff7350008b8bb79" + "58d191265901a3f15b2919142505efeea13df6e42da8b0dc1d", + "0aa106ad1461353865706bee9aa092b00fcf1b0108ecc1266ad5d8b6579", + "0bd6fcf49029df32fe0fa47f39cb9428d95d00a84a5afb392d7b4b365e0", + "0b17734befefebf03d1c79e59c12ed3c57e7d120dfd993bf276de559588"}, + {NID_sect233r1, NID_sha224, + "cbd6e305cc9f0dc90caee6e65a74582e9357bd25c78e33a7b14e1ac7e9397ff4466f192f" + "b432143e6df6d61a0ab808ec0a361a6d95a357a38cd3e241fe03ed883ccc364b248ee2a0" + "8702110745c2688bdcefa33c1a45b9c8b200e45cddf3e3f66b8d37eff07fbb3366ea1558" + "ef304085613c56707095724b3e134c7a7d3f8dbf", + "0860aa2b589f2defc617be73e191502e5d9952bf60547fef19eeccbca26", + "04006abc5619422b7d548c612e54df0385c293632d4d97c21e2e15ad98d0c5006c36c072" + "603681c1b03f6a023c8e987f39d931bc2a200eff82239ee38f", + "084fb252dae9a96a44212d18e15cc52d179cd5e3392ab9da57d04cd5a9d", + "037cd554e7815699f033ca9187ddb116777ef847b92353f613152c4216b", + "05f806dd062043420dd056998bdb9822b3177406a536d766c4aacdeee81"}, + {NID_sect233r1, NID_sha224, + "812a218ff1ee1472c189f63386e5b8ab341671c3a4dad27a8c6249d1c0f9a29338b471b6" + "179f17a078b6504e804ac55ca3b13e68a623041bc1a092ea2adf3fa1124bbfeb161e6d7c" + "483433f1548763b84da00352a6386e1339f674d45dab13898147ede468e0e01d2c4e0ed6" + "6b395a16cc3ded3e952ac739205f35a83376cbce", + "0d0dec052a00ccebd0c0c5d9a08272f75744a2582cec7ddd924a2b022b2", + "04016bb8c3d319b93731f1055756e57bd56d50b6b9ffbe42735925cf6f7675009dad7b87" + "a749df130b45d9cac8011101c15abb7e64bd4fbdd94107fa31", + "04098547601430c723ebcb04b23e0f1ce8b1f79ff7ed3d05ba130922b01", + "070ea6221c0d62930b019faaa856ad2c84c3989ec54040bffc42d8dadb8", + "0aa20fc58beae8ccc880e7fcb48a471faa5baeb36bbe5aee71ed9f8adb9"}, + {NID_sect233r1, NID_sha224, + "0204b1fca831919e89e108cf140b3770f531a696b1d9a4d1fb68809eb10afccc257cc90c" + "d36717c02b2f3d6d3d1d8a93cc5c48aa7ab9f9fddfe121ce9143376535a0c65e247c6558" + "eac49fd1d6d1bf431ba918c471cb3d536ad485ec51f6471a340ac75f160c4c54cd3ffb9d" + "cc123124b42df1fd2eaa005e3377c5d2d55938c6", + "08a017d717d6d1213f2b74c53281b07258738c0c7db649ea1ac46b9a3b6", + "0401eb379e27de6c04c5320cbc18e79ed9e8993710ac70ce823f1ab5762b6700f5521926" + "45d350361762aae79ffba39c33c2c5c0df208219f1b339016a", + "00e4822b2cffa327a8396301b21554da6fa52f418d67114bd58e850d935", + "0d64dbdadb4ada2d3a8892049f7fda3c733030522b44cd72ab850b77bd0", + "06fbae2d8e4fc04abd8a6e9cb011974ac851ec108e38f9c72603f7a04fc"}, + {NID_sect233r1, NID_sha224, + "2033eb48756638cb56e2cc39a3e775cfa11fce86cf71f04487dcdbc7f262bc8350a30ced" + "54d1fcb697b28a6e96f88f782947c997872307ed963e1d68985f756435af77f57755cacb" + "b4c6b50ed419deec9f39f0a549a13e54254fa0a5832dba2d943ad4aed8688889a2dd29dc" + "b4ea12abd6a6c50eabcb3981c3a0c1ca5f0b9629", + "01b56c14442b084cfd22aeef0f8028ec57c8b571c9fc1e43de05c45e47f", + "0400d450c533b13b211b8c91dad0738402a5c811460426ee2f35ae068f2c12015e1c9f9d" + "398925c619f8aa0bac746eb7907d3d510814cea185a7efe771", + "0dca09773730a2758b7f4d9257a8e6bd942c141e46bde5ca54a79468c4f", + "0379773ebb7a2860f3422d8f8f714b234e5abd8860defb19c659c9c6179", + "0cb9272a27661604425ab84632f586048483b9f9cb80b9697898e745117"}, + {NID_sect233r1, NID_sha224, + "2986ab1cfe8873009e932dc68d4727d77ccbbf378e43fe4aa7c54416346b036b89c0aad1" + "b82977c9fbc39a00f1dc916c0561d8dd70298c02b6cbfe572e0ef2058641e841c6875e85" + "15f3c1082765e046c90c956d984b76e0e8e6eb433ce26c1757ac5b13422479141971c201" + "02e9621d18f51096ae3173c2753facee2862d66e", + "05afce37c5594586ac46a34ae291f591eacb9880a7de92701977f447fbf", + "04002a069ef14f2989d2b715c5006642ba966cc84df88bbc27e713e15c47bd00f001f60b" + "8a8102a971faa2c42d3ea9cec37b49c7e6ec0cae9f7fb35713", + "09756db630ed9b708bf1ab8aae6a7559bc235c4e9f4002ed26e2f019aa1", + "06b9b2c1d214373647d9a2d24ba69741218064004614368915d5cfaacaf", + "090dd607329c27483fe43b7be137c3f51c23217c939baae40b53e65af2f"}, + {NID_sect233r1, NID_sha224, + "aabf5aa90ceef91c2155f90660adbcb0eedb996f5242cee15468ae217058ebeaad8cd4ff" + "8cdc754a8ab85ba43c59fbab6386686fad5e27ad3848fe52191c7e4b203720841501792a" + "625aef2acb6e36493b792fa55f253effca682946ad8c77e01f44e92ec3c258d0dd98d318" + "3f4dc4a0bd3eca183794abd6232a6f9e4add8f57", + "00696df05dc7a54a9908a73eb18416a155cc8df4ab26032539d86eae537", + "04008f9f494ddf8d0030746a8c0b8d215dda6cc2724f411a7ea407629294c301ea2e9f85" + "f06412d29c677aecf624a83c2fbd86482dc0d564906a91d97d", + "0d62b06628d3884f0a329a7b6b4f832fabea4ebc85ee03e63f2967e7810", + "02e39824f272d4b74810594810957963c777207217e53a672010605b9de", + "0e64bc44af64b6f879f0d32f814acfbb98795ef7b2f246b3f91cacb55cc"}, + {NID_sect233r1, NID_sha224, + "29ff209eabbde02b10b3fd559671fa53e418750c32c4a18d31cc0186d1077581bbefb877" + "0ed079f536e866414a07431ae6633955bf42a2389b6f8a565d6e4ffb4444336e00300938" + "76a26d4e3106e9ac697788e41f8a21c755eeb86a7c60f18e5e1069f16408a4c375a6a68d" + "42959f2fab7ac09736c7b37c80c05897d8566ce8", + "05ca31e88c5b2e96e433af2023a66095161710628e7bfa428944d6676b8", + "04008232d4bbe25536ea7f83c145a8d2b1cd72c383eefc2adaa1ce72c7dd9a0100b738c6" + "f1551b3240293ee8e8ec29fad0cc485ffc2cfded96b68162bb", + "0df9e1b418ca1d41d749ee998446ba1cc54bc8bf72eac6f30929b40b5c9", + "0d4248e0bb60fe46abf7bdb2effe804b9d394d8a5514a5791e149d435d3", + "0b89a459fb99cccebda754c4b2ae264c9aef7b5b610427f42c35dbe7d3a"}, + {NID_sect233r1, NID_sha224, + "97765d876c80819f4004a36d09ccba78e600efc71eb7e869d3a00f658d2ace6769c7ab1e" + "f590f41fb070aa8e08615e138df45ffbb6473d4a86ba5fdf17dd6dc9ea9ee19c0332563c" + "99e6a3451c211d286d69102b47bfa6e07d468d9bde82e5c2063fb1ebbbed6086f542cf68" + "ba46d4f214634afb1146dd5a6f3d50912ef5b824", + "0ef8fe84727a2ad8bf4e646ef28a492adfaf785a3a2ba6e6f985c649a8c", + "04003435eb25ce9891a78c120098992c666940103eefd80d9bd64f1d4ba37b00ddd6a4a0" + "1e443c92afbc247f634b85f1c858a2aaad35a26f57ad4c9126", + "09753a236759eb32e13f19b9d2ad06f7b4db4ac7b1df96813463d0cd557", + "08408fc46149dcce0753d7cae0f50c8c5fcc97acf7a1a02a9f68c0b80c7", + "0b5ffba104acc6d0cba87523382ff928859718122c4d0d2298e74985d89"}, + {NID_sect233r1, NID_sha224, + "21cf768d087d1e4eaa8a05e2008020e243116206d675c09be42ef2bc93617ecbb0575c87" + "3c6510ede9979215531b62126552738862fc4323d487992754e39d8f0d7e111e165ff254" + "200e05082f59a57ef649bccaef6f980094fad3b7ef93bceb161760e200f0a2e396fbb6b6" + "142dc84d872311bf932b84616b22231747937d58", + "03edb94b8c62f9af30c14a790c0f5d65e362a21cd8569b9725916d534c0", + "040065133691b888cd2513964b5a905ed9334cff6367e25c09db1743045d5801408e1ac7" + "21bfe2198086c1834d484b6e5692c037e09928cff87f4b5a88", + "01d8f800ba05d8173b0f1bb3aac0aff68c6b24cf98c28f5a69b0b5a52cf", + "097c07d4352e39e1878c42fe97ebd4c3ba5098706879fad9be4bb2dc2f7", + "0bc669db3a488e613665cd26da7927c6b6a073ba6b0951c00d22ab1ffd1"}, + {NID_sect233r1, NID_sha224, + "7b8e58eecdab3e40212bba6bf284f9379265b3d2baec3e4625aa08d0ced851da193c292e" + "c793dab42732c07b4e94d8b19c83aed796a7e3a6c2b954a7a9a1ff9b2bd4ca62592c8b68" + "f709f1ad38a5c8033ebb3f33d176945bfc68e9ef2b0cee2d45a13ce89d238a33c09ce2c0" + "c63c4233aba5717b85c4c161dd7648a41a5e39d8", + "00a7519be62562318da1b67d22cf8e720353d22641e0cee11c7a352bb93", + "04013b63dd8ca9044a3e518a67999a781a5b62994b6e20454003a9bdb8715c01a2f9bfaf" + "528b7f5bc8c3b02eccb71666c83e4a598b4077de999d90fe27", + "0992ba1a8331bc4d88be7dee06f96098bc2ea56668f345e187f32f38171", + "0c55b45bc7bc3092ffa82234b06ad45525b45f8904011f1bd6cd356f0cc", + "0e6163e70ab56d43fa27211b98b48f1cade127237bec1c6556020d39990"}, + {NID_sect233r1, NID_sha224, + "f8f268d2b04fe47e5052c8d0d653787384b9654f0bd2138a6f52b80713feeed452b976a9" + "0eea4edcfbb62d04f3eafe172ddebd7cdc3701ecd6008e3d82e8eb217b13b5228839f610" + "75159f3bd1e1409c08903874b6dfee2789dd72c208ae769ec8c7d52552a2b1fd73dad24d" + "e8b571f88e2184d0ee7d063a121187f97e746f2f", + "0264022fd7dc2328a6436b522793ad9406d7a586667a0daaf1bce927338", + "04012d7e7f8519a7e357510adfca2f50182dc5fa12fb2a77409fb781ed500d00ceaa9a22" + "b7ef9febd8a9962ce21d83fd2a2a938b9d7a78d669dd233974", + "026fb8fa6e746106500dd29ee32bbd03b94302ec3a123356b23b3055e51", + "0f416418f7aa4d437e7606afedf961b968a67d9a1524d60fe3f6df4d3d0", + "08d3afc975a8147fa8230fef4b16e3024180a9768702038f955357ce8df"}, + {NID_sect233r1, NID_sha256, + "d288768cbd066fad4bb2500b5683fa9e4eaedfb3dbb519b083f6b802efda0a022355565c" + "5fc6babeccb22f3adbbda450ce5d633193d1431e40c0fe631a295cf85965cd3f5937b318" + "66bd6a5300eaef9941daf54d49832acfceed90e572ef34ccc94eacd0fd6b903fee3c572b" + "963d21e2881656a214d2a4c125778dbe3bbeebca", + "0da43214e2efb7892cc1ccde6723946d2a8248a6b4d6c8872fad525ec3b", + "0400db09738bf0a0dd777f67e82be50dc8c2d8e91598bc0b8d4486f67c04a5008ef463e2" + "f37ac7c3d276676cbedf17ae11e767ec577da7ccd90cde3b74", + "0249cbd55e307a0fd10a0c70b1c0d5e2416f4d7f144779ddc11911f4a08", + "04d1c99f9d486fb92b132d68c0173df891ca757572f7acc03cb41d46bbf", + "07de2deeb58d55d65fb37f600d916cfa49f889f02ef53dcce412703d1c9"}, + {NID_sect233r1, NID_sha256, + "bf0ab46e0a756c11229b0ea961f8d57218be5b00ab8b0e91d7664cdf5e0341c412c0e992" + "d26ab12115197db39df2d1a6e18ed26a91be461432a2dfc21d98cb16003e339b0b0b1f10" + "0e4e6f4824ddac5442f22a1fac26326ed8a89cc91343d7223986d485cc8c64424e84d56b" + "e536c57e4dc5faee459b1958efd79e07e90a9811", + "0aeafa49d776b61f6a30d66ff64bd40dd8d79891dd5293c1b5cd3b46a7c", + "0401ba1b87b16122e6939da5dcadb8902177a9f9ef09194c8695008b80b588008f51ee5c" + "ea1f4fc9c44c70df57326ff121268bf4e02cd9b2626fe7c1ed", + "09d640ede5bb60b9aa78e393ed453b1643f6dade4aa20e994db53e81fac", + "0277bbfb7479077d5fb6813670fbc7f46055718199550130b122a7cb8b3", + "0f8dd350bc0bd2d84cdd374c56ff2341de4102269a1e80df7e35969d4cf"}, + {NID_sect233r1, NID_sha256, + "c7b1eeb7c19eb16e7f42b61d79e421b71de797a6cab4e0baee522fee7acdb533f7bbf585" + "5316544e1b82b4f2a18ad0a2311e7622549332122171f32fc62a90e408207e0fb90d1b05" + "2821dede9c41b15b6e07d84d5d7b9e31e6396a8ed229fb6232b3051298dc5321aa589f4e" + "289d27169f14c8cc93644916d9b72dbc92c43488", + "0e95db309f4305b621f51f93588a2678cb19aad0932f365fa0aaa3a3895", + "0401177eefc44b6070e2c41537e75c91e2f08908c0d950bc90cd2f4720b33500f751312d" + "de55b1bcabf31665deb6c12d043d5ccc89800622a557a7ed37", + "00015798ef57a771d62d194389817c93de1b225398fcc0d2b81d94054a0", + "0eef7161a167f69a6c89b0f173db2c4a7033b5d801c0d89642ce65e377b", + "04043f8985bbe0221fd595f9355c33e1930b5e10a1452e81c31259e1e3d"}, + {NID_sect233r1, NID_sha256, + "a738eb074e1f277dc665118ca055e6328059ab26da188c16f56384c566e43df8cff3d2a1" + "0d2d15c3c1406de8f734b20be5dd1ce937a4289f0ddfd7bddabd03586556eb8233b8feef" + "edaa1f49bdec6d45fd562c2a83fa9fcfc2013bdd77900857199e51fa9c7cbeab925ba8f6" + "c3c5fae46bf8e9c574b302f1e5f9c44400152a78", + "0d4319cc8e409b8755880827f3200d3f0f1c64d6356fe74eb1f5aa42499", + "0400bf65953f2d08477f7fd0428c31125184e3bad4d5da00c91991949e056200f1669d0d" + "116817d625128ae764b3fde956432552d24d98f08a12925afc", + "05e8704febc38bb8ea76f3c6433c1f0421dc5e5af959723a5a2f0e9a970", + "0307c0b838c65d1a47792cb367253bf7c9f627435f1c7ed74494b318446", + "00031a9b35e935be6620243f4878a38d4e617fb25f7a4883893366f39cd"}, + {NID_sect233r1, NID_sha256, + "b28103d77e5457c42e026e713ea6ff03722a36512da17197140117442a976f9e2139c54a" + "759fc26af5811b455e5a0d3a95362d9939c1e738045be9237b469ae2106ceed7e7842b44" + "cc0a475d5af6d781e32ff1dd1f4e1833dbc7f82b27dc7e1562d0e29213fd8911105104a7" + "a16f665b926aa137f70d868c90e72f8ee2c95b64", + "09e556c945052e5954915c773b2d47970c521fcc99139269c3ef46093b7", + "0400db68c16ffe64bede4a849812df0b8e202f74500cb7d5349aacf7f3f0260084b5892e" + "a74835e96e9dfb1bb201a4dcaf32da25dc00dca019d806f5c9", + "0d0c9e0b6d4526d5f6494d2c72f812fb8d26e17c7a44f6b5e3f9e684cad", + "0a379ac253f3aaf94cc49e91fe3f2908107a9e1a4d102e02395eb18cf08", + "0854c2f6ecbfe95cfd14045faf71ad47561e365c1dd5f515d8817c3198e"}, + {NID_sect233r1, NID_sha256, + "463d04c84521ae671bb35c0a7acb3ae509b1b0470f39b8fe7ae5f3c9fbadbeb2bcc3a87e" + "284cbdff07407a351f7ba743aeac50c4a1fef7375b90eb4af8ea2df040776bbf3e4389e7" + "a80bea40530842642b9895ab9ef5ac8ed6c9ce7917d7b3ebcf80b801da845943313988c1" + "970e7748cc306f914c37414f8247d648b580000f", + "0becc76f8a77615c4f92ae1f91645bf5bb908e75ef22fd544aae63a3c8e", + "04018cd93bfe8fc8ceef2b9be14fa947b60fb122f5099cb5bcfad0cdc601e8016de11e67" + "3011e30f6fd92025a60d7938412ac63b19d23e45bbf53c6c4a", + "04e75a7b92c42ba0581eb1201fa5b3fb2ac82460e953c26ce6bc60e145f", + "067bad23ecac0883d218b1368d822b3bf9b82453c0e5f3e336777c6a507", + "03788a331249463533384a61c47232aee6f057634c37560ee25895b2a03"}, + {NID_sect233r1, NID_sha256, + "8b2379b5553ae7db6023cb010e26ae91322bc3f94dbaa369481936f90a886e5d3827d995" + "ccf03ca59f46805fbac0337d31a8f117cc7044218a934d5bf507090e7e21178a7162c8fc" + "b39111e6967803dbf9d752f3ae737ba024d0f4f7627e08be58efbe997a164106bfe37f67" + "d2f19c0fcc7a6c7eebd96a72582a9c7bdf881896", + "020572c2a3dc3ea430cd8cde9d642081c21658e8bda165550cd9a5d37d9", + "04016117486794f14d171dfc3ccffef0396cc9fe5aa45d6d39ce0f252c416801b6a12fe2" + "adb279dbbefa4eafa273a2ddbafb2c6401067a5ef5e859fdcc", + "0edc8d0b64496da309b10630e9e5917c9a807ccd7cc7bab14360873eeab", + "0e1fdd3b7849806fe587ad93aef737ba0472409b7239981f0d325785fa2", + "0829449a0c39071a832664e8148e762efc36fda9e030e0d062458728273"}, + {NID_sect233r1, NID_sha256, + "3090bf7373731cc44c00372c1ac59280b0f36e627ccf763fa68a7be37bb0ac8cbd4f70db" + "54fc652566c78ad268f78f015e4bb1e41516fa56ac303a3bb4a52e1fe897d8338db5a6e3" + "7cad685e704b994504bd231c7dec0002dbd907a7ebfa809833e32eb23fffdb44fe4a18e1" + "1fa19d67356cfd703cf39a75b1a290b8a7c73afb", + "0769cfbf2dd8248ea1e0ac9b275c9d6ddcf923fe762079b9ed62ccbaa89", + "0401aadeee0e31ba9505da3e195d883643d260dac9fe5e86102c8ed7f88eef00d925bd5f" + "d700fcdec60cef9c9fdd304faa102d9d721b4f21291f8c96a4", + "0f2e203410107c075e25c4adc2f55dcc277883d679ea307df7d52060fa3", + "02fc0975c2e70328da4a0ad2b8bd344a8171c2c500c55b1c92270230c27", + "08871b6791f7d03796a3aa537fa820f0eac8f2463c9f918468e7588b784"}, + {NID_sect233r1, NID_sha256, + "c37389cbe3f46eeebdda343e354ccd543e96b0c2a87e057aa6b9c4895a403de706d658bb" + "c9066c140e50fef4b56af2db1f42efb70b8021254649983f1e11d04d6b10169d5a1c2093" + "b6ab89227b88a30537c776bb7575749c3ed87bcb29effd8e4f17915b4d5dff6cab9678d8" + "8f33abead1e73dbdc5c3307ff3d3b2d5fd7bfa83", + "040ea4a37b388f0cc464f7e2bf92173107b268ff77a8acf5f517b4ec0e4", + "04008acee84d29638a7285654d20f8e0653c7386140aba0bd2fc157d51764301482ba5eb" + "b82ba46654aa1eaa6a5f01e030177318921a0c99fa3f6eee9f", + "0a6fbf938e9cdd009c838196ffeb61f7f545f7e7e9a6cb18d1f595a87b1", + "096a80172a7b3b65c0a8acfa8b89cedf9cb19f6eaa5d38436c300b7c0f4", + "0b7bb96ddfc9d1324bea96836c557cf88d6ede9a93ada8fbfdfcfe56244"}, + {NID_sect233r1, NID_sha256, + "8884def8c3b9c5f856b9c2352c85ea71aae3c8d0e84ca74e70e404a21467159fc9826548" + "d16dd1ec5a75dc2c23ca37b30312f25e1194e0f9385a0499db34c855412bbf58979ffce7" + "fc3afeb7b8dbf9898df44023200d809f520db99eae315b5cf85674fab008a20340fae8f6" + "974034fd3e55bf08c5522a460680218f9757e368", + "037fc7898df9b37b5390537352f5c0b8de22659166c19d7d4df31c3938d", + "040198674b40d2a68ed94d5b2c51102393d1332404f75187130669b9de0df9013ee77d85" + "4a60f1aa74041ef1fb58727c09f13039bb4b33a818dfe9af2a", + "0cf92eebec59605b1d45848f5d06e93ff2767dfa282929208ba801a9fec", + "0f7bd93dd4df06219fb974a4e85030840c7d4877f131adccbd98cbd25de", + "0c2c4a864459488eb5498a06b0b56ce7fc98fb29b1eb9b6238da8cc8f52"}, + {NID_sect233r1, NID_sha256, + "f1fc154d469433f56c2bd42aa52237a4a4bfc08fb6d2f3f0da70a62f54e94e3f29c629c8" + "37e7adf0474fa8f23251b9b349a16848942c0d9cf5db1d0fd99527020dbe21cf0b94a9aa" + "21f376bf74da72d36f87b306b0696771efa7250c6182b426a4500ac14de4a1804b38db8d" + "4f3beefb8c9bb619ac82cb63fb37c2e1d22951f7", + "05d5069425e7a9925d2cfc6360a708147b2c1b55ede243591885147ef3b", + "0401f35f161ce0963dca70066b3a6de2a74ea1941a27cdfabd9e433d8084c701d5d9cca5" + "b741b2321d8511a777fcc2515c99ff8d13ff20266a163c94b9", + "01b9c83d36ada7e9367790ee850163ef4420104e0dd3299ef6d65191d7c", + "0dca4e804bf74aa496c15025acb4232c637c9b81e9e26d6f2065d6be21d", + "012014f77a4ddb7b266abf2c65a653988ee6f913e700f3f83f3e78c88ab"}, + {NID_sect233r1, NID_sha256, + "885cd348f7983a0721f96c0e866821223d3e5a95178b16d18652b4062b1b2278aed6f54a" + "b06f7e37ae6ce1020aa3eb812d215194bcd212302da5b971fd86aee1dcb23057dbedb569" + "bd0bbef80df538da69ae2358cb03bb77c64d3ead475c8c5ae5bfbdd75684b421a26f1a7b" + "0c37548fa32d805acdc91230dd70a48232a12846", + "0ffe3e7b82ca62b96e057ee072a4718ca20a6cc9a3e51e4fe8ed7b4b9f9", + "04010f774adc83c1893894855366f1db1962bc697b8e1d047a01a08b12da4a0078c6ff63" + "4d5dc8ffc4d8b1a53bbf94046023095a8c2b41618c4330a4de", + "005a4a50de4e97280d6ed1324214d91b271deb649a2dae18d21a0182022", + "04bc8ba9ffbca81b5f19f0d8b1306900ee642bc5cd9a9dc9867a4531b04", + "0353567acc062b83459017c70cff4f3b8ef0925032b51d7300261408549"}, + {NID_sect233r1, NID_sha256, + "ca3b0e2f1c7db4e73c699f06e432bb0f63705ba66954bec4a259bf31c161bb4861476e2f" + "2f7dde9d841d1ea6bd0990cc793cd7a10432e38735c3eeda7a0d786e8821239bdd6c4972" + "c96c2cf68ec5b935391f963a50fe16af2719c9029943b539ff0f1f5645962a6ac46c75d2" + "037fa0c7cd46deadcdfc66e1ddcaada3a376acbf", + "007a9cb5ce27c763646de414ca2a4dcdb774d69ed2bde7a817baddbc9de", + "040086d4ac1e3d54f7c154c5370f5c9a2d22cbe8f794df68974706bdc9172c017770a2cc" + "ac923423137731a14e97f6ca65a8cb3642eceb4e70c78ee929", + "0538b86e0a899281ab56d28f40bf3b7435f9a57e334a3269233766049a6", + "007ceaac3aa0e260c371843104f5cb91a057741b38889ee796e69f920e9", + "035eedd44b036b843deadb8e8df9d96b16e719ba350a634553457ae71a1"}, + {NID_sect233r1, NID_sha256, + "4b0a31b746763beee77cecd318b90acf50fac4172cf4bfb354e5a440f651cb89d7a515e0" + "9ab19e9850803ab9167c2aee3b395a5da10dc9aff799d73756dfb0a9961d93bc32f15a96" + "bf13962a03d5bd42ddc8b5928def7fc48fb063f42866fc5f96cf88fe0eb125b7c01906ad" + "6a7fdade28ccb0a421ceff50ae03a974671b2c27", + "0c03fa9e38dc1c697f70bc6381f2bacaf860bb5632fc837f728da959ac9", + "040195f386c7efe108fd1d580f0a77031e180e45a23911ba983217207a904b01a6837095" + "a64f71ec53ab1c0d9a3a39d69a514065d83f1af26870e41741", + "0d4f48085b367787a614b57c06ee8018b2e95e989c2e8cf355e71db1091", + "0391710f815babf07b6287b7aab8b9d2ce04bee2a144f4d4a46fd17cf77", + "0ef29cbd771b8a6f414ecb73b7937ffe0a108593ffc6899f28d4030a9eb"}, + {NID_sect233r1, NID_sha256, + "3011d42792b21c0f1719faf6f744d576f72c5fdfd22b1a520d0e8d47e8c2b06823d853b1" + "3c9fa039fa30a6f2e3e27bb2100c6a35f55703806bbf0f79b09d0f629f8042ec63fa0406" + "2f15f2edb92b19237980005566f02bb12a40b4ec66e4ba6c599d928b33f72d7437c0e399" + "a8e6a9068d1fef24917fc4f9ab5464ea6684dde9", + "087dba00e3fe4802e01718017510094924496bd2785d4ac1a352c530473", + "0401198518db2d1255aef955b9b80471aba60cf6d8fd1feae6d8e048ab140301833332a1" + "16214e4d9fb37c8e0ab7552b87348434a67a0c41f73972dc9c", + "0378578acdfa572b1de4e032158b28bcf00ab7dbaf07b0e772c39603216", + "0be2cb45d527a7685139290f1098de975b69957fff2c5c29059ce417950", + "06abf4afdcd2990121723b94ab8145d01cc4917cd70416620ef100c67bd"}, + {NID_sect233r1, NID_sha384, + "05a5d3a3b79f4e51b722e513620c88092a9bb02408f5f52a32e782fd4923f4fd3094fc55" + "36caf4b645d830260eba91b5173f3833dd65600fb9e246aec968b1f6ebdfddb4059fb2de" + "7e636ed60bb7affdb74aefd158e54485d5f26be373cf944c6570daf8fd7e4b77fad57300" + "667d6decf5c65db99ab8763bb4ecbb09fdf47e3a", + "05a387e7affc54a8fbb9157b5ebd400c98e2d7bd5c3e095538987d4f8d9", + "0401a97224cafc063967b25cd1a43283daa5411f3eabe9386b8b14c9768c29002cefaec5" + "141bcb084cbc9aebf28fc59780897ad1424fd439eb43eb911e", + "0fb7ec3804654b9c3675f7b3c427f6d01f83872e96de2742e59c93151fd", + "0808d829d78e65eea47122c92f8c2cbf5a8d6717a057ef1659fb6f8cd3c", + "0ef338e09dac0b12fa6109d15924efb694a0b672afb4ef05f4e6f2f7b88"}, + {NID_sect233r1, NID_sha384, + "247a101c8196eb93a440280650ad463795690bc620e46e8118db6900a71eb493d03fbcf2" + "f73a79bb47aa8e2d8c87ef70e4cfae36fae5c45fe247d8cd0f7d0718dad106526945014b" + "4f3bec324897d8e1fa2f457b8a68e61873b7fa0350fde3b87b7b001c13953c2050a24f71" + "fb77eb455053e49200ebcbba7299485c0f1a40db", + "0adae709a930d6f5a5c0e3d8ef4aab004d741d23f0ffb8287f7059890c0", + "0401541eaf3dca942957c48d693d2eaf2a456646d2fb3eb8df1779b917a9b00097379582" + "76dc31852e57063119f1d2d061616b6a2fd35b4a1a3f046954", + "0390d5ed395f8ee3478c2765525c235587dbf5bb2316df3a1e8c664185b", + "0ebcc4f84bf2deb9b3d669158998fc96d7516580675e24348ca58d70d2c", + "0b99462b85e6ce6b46e5aca221250ac9de7ccf3e63b38919b61700be866"}, + {NID_sect233r1, NID_sha384, + "a16678c71976a3ce3362ca379b3272b92e8ca7085b43752473db34e4d6b61eeed3875f49" + "f3328366fc9d0644824e0104817de458e4c1036636b18b83dbaf063f2f99818959224906" + "571c7b28873d9c702360888df151e9ad1a7003e6130033203acf8a69889be6ebd90816f2" + "abf0764f10be68653b1e56766ecc3150bef8b042", + "035d391411e6d679751092c4ea5a079c591e77ebdcb57c1d9006ae70d90", + "04001298e6f1612f90dbd2eedadfa8ecce22dff1da2d1cf057c41bd37d4b060073136a1c" + "af7dae2aaaac571a900135a51ef031643e9d5f01934333b864", + "09e343003670f61db85aedc0249db21953d232bc45488c3d6ceaa6072bb", + "04ac435e88f8e487b9b217e7d68fbba9bdea0b9685769878818f25e661c", + "074d8f4dd58c922d7e79f30950bd54c10c1cc52ae3b8d00b675c8e501a4"}, + {NID_sect233r1, NID_sha384, + "bc2f080a7f0b69a6b142b8f3fb481a43bd71d07418df4f3b802568073c1a8d35729ad197" + "f34a4e941a6dd511c63f201d1f6c34a1b66545bd5f43508c10bda1d6ef60ee5bdd25dde9" + "75e50c61f76cd36d50ee3bd8dfa2dff59524db9ef12f1e28d109b552cb42f021963f559c" + "843476b5c889fc567b7840297c5a480e18c221dc", + "084e79093f1947d6ab9cf399782436e36ef87c59a4c090930c9a74ddb10", + "04008e756774def210e2d6f76d6e4b0b43d86adca0880f017abfc911bafb5a0147e6a20c" + "1aad897829339630c5edd327ef9a7e40795630504318cb71d6", + "0ce780ea99a344d67de7921feba6ae062817101068266d5d1a140d2b49e", + "0fb2474b854b8e5d6920ed90e69b5b386a1b26a947b1cf28a13f7c5d3ac", + "072722017a67ea6754873f833fc51318d41d6ef598d3ec2d3e0eb5bf41d"}, + {NID_sect233r1, NID_sha384, + "ea71cede8b63ddc5648eb244184bae265cd65d50f77a9e25ff93f02b132487c08732544c" + "b88936d4fff7c0fedb39685822dd1c9be1158f647c605c9bb5f6a1ae34722fa08882c14b" + "36b6c93cab33c9a269c7c10f755b6453ed045ea3e56f29e95a9404ba189a0b4884812039" + "2b4dcac43148b706c3d9e4c03db410cbe5dca3da", + "079b6be015b8006f86fd81c2792bec6b42c08bee2d295cf9dc214c326ab", + "0400e24338d5e33ad12d41eb623ad0905f64d5b75835fec4e693eebf9bba100101b4297b" + "5b62fcca7c61637a2a57365e911d3bc7eb0fc7adb0a9dc7bad", + "0f06b001e5f874d16632e3c8d49f13d70f48ed4eecaff9d3b741f9d02e6", + "0de16d8fd7bb1783a2cc4b9ac1563eff3f87e4e6d75e6a32a4aed1ecb02", + "040bdb1197ee8ee51e4ecccb8d42dd985913809c131aa9224049425a052"}, + {NID_sect233r1, NID_sha384, + "319b41d16e18059a1324c37161c937e882192cd949c420ce9c59208a0ac208ebb06f894a" + "7fd78df2a3c5f23f25dee6595d3dacb25a699f115dd482ccd36fc54ba29dda279335424c" + "86b07a1b1fa76a5411bcecaf4d37065b229cdce0bac75b666c6626ec37a716e9841be93c" + "907f87453ad91d36846561f284421a89013b88c3", + "0ca9d751a060fde64336cdc88122819f4b3cd1b4e7df42d495197787894", + "04009549785f4f9c71f20133f5a1d409b244df55445beec404cf8cd4d2cadb01b246647d" + "7570f052840d4cc01182d1dc3bf357b25e5966434e1c3c2a30", + "09e99fe741cb23f7eb039f5df8414d069b5c2e3c144dcd6cbc6da56ef43", + "0cf00f519c18e7a0fcc84c1e338158399f16929ad89842ba97a4afb5bf2", + "05854ee1a6aa5a6a74bec0b4696e80aa275210183c86f45dde7002d7ae3"}, + {NID_sect233r1, NID_sha384, + "aebeee215e7b3d4c3b82db243a47506ffbf2263f6fe9de5b69286e8649d9218367c36ba9" + "5f55e48eebcbc99de3e652b0fecc4099714ee147d71b393de14a13e5044b1251e40c6791" + "f533b310df9e70a746f4c68c604b41752eca9ce5ce67cdc574a742c694ada8f20b34d0eb" + "467dce5566023f8533abfa9688d782646420c77b", + "01dde4b2d49338a10c8ebf475b3697e8480227b39bc04253a0055839e9e", + "0400504bd3a97baf9852d6d46ef3db78ee7555db752120d020cd056b1b4e50018dd305f6" + "a15e91fa46d2a6d30f2ec8fbe2baec491e26d9a2ac81155c85", + "03b78d2772b8ce01a00ffe2e6be2f9e2ca2c89ea3b29bec6d6cf31afe33", + "0c0c51fba155f98900eaa2d2935acd615e917f9dd979dc8d92f1d6e00c9", + "08c8354f95e24ed13d8ff3755e1122dbb4117c76b21b3bdc7f4dd856f8d"}, + {NID_sect233r1, NID_sha384, + "8d353a6b6f35590baef59b638914d3e934d0145b045d221d846517ceddc8ff5e3d28826d" + "3459f8ce1260f705e80923f39abc73d5949aa7aa8ad1734be0e992bff0c9a8f4cc9bdfa4" + "30d4cf52e29d3737b0cd3231b72b16e15e1a9040b832e4a920b4a1d94c4964ac6c8abb75" + "bbbdb10825f882ae44c534c7154c446421a04d87", + "02c8bea2803fd746c874fa110a716538c179c82712f38d33d0f6d037e7a", + "0400a034560353561cde19db89dbcad5c9dcb74e239efc604e86ff38a0577e0185e0b02c" + "48be2e90c916a7c8ef2b41a57ea8d4f21d8cd3a0878a03875b", + "02e39f851c57643bd799c4f3b2fcc5eec8ff7f9e9e279efa647f969cc6a", + "09b2ad7efc7ed60d9cd3dedbd4159b1e05f05ce5ec2d2cdf7a0e0657482", + "03fcbd4ace6a140c8bfebe36ff30848966bb0d3eec323cc8ddda55faf00"}, + {NID_sect233r1, NID_sha384, + "847f134b90f10ba3636ec24f36a94111f26d58428fda5bba4501e58c7bb55809f52320cb" + "e9e0df55af1e40bbac9f3eaa26a55d78b60621d4356d090d98363662f406367601eaa9eb" + "9568b1a1b319730bad7bf6a7ddf1b45eb6922faf8d065c540b671c50df758ebf8c4aca6f" + "01878e5e0012dd038c58833e2b13ebdb9a9f3fc3", + "0b9119b3b4b30cbfb98ddf0a4f6953417e515fcf0e5a94e83ebc1d1d14d", + "0401be65d340f7e99067bbbf961c2b357e1fd47a74393cae5f93a40c5dc28000c04cd8ca" + "3ee253b99e44ee6bc0e52d2f016b16f59c738b9f2bd8c1b9d8", + "02c851ba0123ff0543808931ab3857b5c15d7c10c343f232913f6e0c92e", + "0ba2b33550878e223cacb80e45e382dae84e76bca5a2ef8371b84d08572", + "08c370f82506e97cc15837f59e9779448decbd87bde0a463bc14b18edca"}, + {NID_sect233r1, NID_sha384, + "99d23950493bdd931915e9f9b65e4cd1329866c0071a19d4f7d6fd190689275b7b10fc07" + "503dd1c27a4da274dbeb3aa5cb0e71e9b7b03fc2697729b7be913756e6760098951d7015" + "df181cf14b1e0b954e6260276af553e3e59907794b863e941950718ef154669c5c262946" + "ba120892e0239e05910c2194f712db46e37e53b7", + "0f4ab2a573f3771d1e4222e251faf14e06cefed544e804c299c9a8395f5", + "0400b1f973d6495d277e24320622b9b99fccef8eb5c1c6952f35b82d4479ef0161dceea4" + "d3c9caa4f640f51b37fcbd5b8932642a94c8e7aaed5db17fdd", + "034ff28a5ed6958514c603b3af5a991e2e9b4cc2c0a7aa73ab2d70bd05d", + "01abe4a7b27395a37089f91eab27ccf29001ced1bb3348a6f919d466477", + "057449e55d3f2a4004d647ad6e8fbbd516adbb4de40b1a872ad8ecf67e2"}, + {NID_sect233r1, NID_sha384, + "7bef2487bc2bbbcbcc1570bbd4ed437c0dbcbbf63f666a3355aec49ea6ef593da25aefe9" + "ae0d94db50692475425dee3c88cdea975794ac69142c25732f3541457d68d9101c8be069" + "f2b515aadadea2019dc7abefa6c12cb3f76d9f4b5e46546f77eaf636aa8f232913092211" + "1151a4df913d18b7cf9d0308f01ad84d878adde7", + "0f4649cf30d4a5269296a45977de2652cb06d3ca2aff4475bb24517b927", + "040100ddcc8e09ba2122a6535c6a0a2dae83abf9e17687b5f6aae7ec6a2df10048f55873" + "60ee251925b7ed02de82307ba219a707705623727f98346a26", + "0a38b2bd0e9a5044db19d4312ec88d19ce1a9bf0eede8c357f898b0bc67", + "0d0ebabc8761ea215808a2c3035b14b614f64be0c2741b3d7789a8659ff", + "0f9e742bdca44c11bcab196f910c0d887e90f250817ee7027f6df8207a0"}, + {NID_sect233r1, NID_sha384, + "87c717eef6dd3c7434b2c91de05723783bef603d170f654b49a04b067b077c405d2d757c" + "e780101b930196ca4261efcfbd3fc1ebb762cc0eecf101072988aca508c41581936526d3" + "f337053000dcf77b16172492c5d654c6612bbd2523a6ad5966d7091697a29ce882fe331f" + "79a7eb59e5a3fe536263083cc59b8133bfd33c1d", + "0cca24ad914c24c011f41f80d27ea41caf41fcc8dc9dc6dff5248b2b474", + "0400175b73db13324a678b8afe086944a7ad257cd33fe9538c59b9177d1064016a98ac9e" + "0ff59de1ad94b50f8c709ccf4342f983c7530be64c3f1548fc", + "029c83def3a5c386b0bc3cf2663b8f4b02f26c6e3e14fcb17e9460087f3", + "061df783609ceb355aba3b1753d38f42434bd75c8354029966e7a788be0", + "01e8a093f53a1d73d5a994b97f2b2f210125ecd3dcdf77c68ea3199856c"}, + {NID_sect233r1, NID_sha384, + "9bf48c2aebf473b3a4a928b3b6a4d2fb7e9193c9e60bc2067f9f03083a8cc7b892bdbf05" + "601118bcc34dd283e7be996bf19b0bd36727eb9d65276b6517bf0c77ae0a9091e7a9e461" + "82a2586eb22324939801034e5ba94ba30d1bde7d8fed51eb71036fab6224f8ff30a00842" + "2efcff7ea239ff23b9f462777e62b41b396c5dc5", + "0f5e12d536ef327e3b0ba65ac5fc3f7f4880f5968f3340eb8868c1d47da", + "0400b2910f5de9475486b3975ce91c02187e8803e68586f3a1df14df67648e00f28af536" + "3ed851c42daaa810afa1fd0d2e001da7764671fd44fb6737c5", + "02a018753965bdfda98512c7f9da3e9235a4a77aab9804437b652182347", + "0b6fd02b2d84b7baf1a5eb592cde667ed6d4c2c821ca336027a72d9abdf", + "02253faa5935885945121a374010b2257123cd5db4c54a2aa0e08c8197b"}, + {NID_sect233r1, NID_sha384, + "716d25519ae8f3717da269902be4a7566d6f62b68cd0faae94bce98c8a4ac6f66215ebac" + "5407d6f64adf9d53f79f02e50921b6f0e8c805926a839443d30d9294eaa802faa7c5471d" + "81fd1db148cdc621a8dd0c096e06fb0b71943337d5325e1bca77062684873fe904ed9012" + "474ceae5b138e079f941a665a995026d13d7eed9", + "08c30d93536b8cb132277645021775d86c2ba8f199816c7539d560ac6de", + "0400d69332763cf533d48e56065e1b5255790f8c0eb23471fac9b945e6219500292df8c7" + "7d9a6803f60bf0722ed57ae2aa3bc816403b000fe2940e02dd", + "050967928d6089da5b16c88b7927de210325c8d8f5e727fa1ba3bd95b5e", + "02434697cb5c2ad95721943154bc81e2ae16332fa6629788f505bbc1522", + "09a5a6792b1b9c2e200ace5a3d50c04f69084dd9222c021ef5fce14d4b6"}, + {NID_sect233r1, NID_sha384, + "01e76755007b2ee5ac9e1d4c8adabad6d0f9c1c08ac6e2622b7c1ead89bd3ad0921b9525" + "b49a780a262fe8fc0904a80391717ad7cac9607de55f7c744af8a132ec45ce79723f4a4a" + "8c8b9ef658b360bd3890df164c9f1cd74eafb74feea251a34514ff2a57ae7a6d4bec2067" + "cbf6ee4fdaabf13721bf9ae178b9034ac5e9665b", + "0fa3f15a506ccf7b50bbbad0a54d3223f5a95eb54f0d1f4e5d0cc21469b", + "0400e797527d57fb3a18c71d1e82e7935e37e719439952d4b972f0c1e0c83500a345bef4" + "c5015e97a148b8991bed4b7ef48947b12f316b5621e94d49d5", + "075afdc12d4d50a7495f5a7d309696dca23e9356a0cab11c3b3d7b8c54d", + "0960ef460000fe8c761038bab7e29d665100494d0874b6556862c2808aa", + "08d3c004426dde6c18b1c9ae00a44ac947e36755d8c40eecf47bfa963fe"}, + {NID_sect233r1, NID_sha512, + "e95abeeb2c51a8cb75ab74253dbe130b5560cd52e2a63d501d26e1458aa568aca6694be9" + "1eee5fdfcf582c47c1c727084ee2b2c810281cf9b095808bf7e7c668eff00a6e48b06df3" + "fe6a445e092c24d5687d7d89acc8063275caac186c441bc697b2f67aa71b03294e1adeb7" + "e557c296dd91304ba0587cda3c984619f1eb4f2b", + "06400a4830889115aa88b860b3fb65905b01fd126c4aec2785518c2543a", + "0401a2051662c1681bbbf6bccbd33c44c7c7fc80b81a1bce14caa36a73f7a8011583d3ba" + "8f22080488471d8103f868100a97af94809b58bff1435b16a9", + "0ceac6e5d10c55888b9ecab8d3f6ada7f4d0bde2f109699157d194efa42", + "0c148f2337008ccc3e61501dc5df3ec95d3596d97eae96a7ab085a915d8", + "036d1debebaaef50243005e25c791b9674cd6fa986dc3d32e089fbfb2ec"}, + {NID_sect233r1, NID_sha512, + "bb8d8515365d240b2071daef0d80558fd3d0e059be9f6abb7b7a0a5f47e2ddca7d1b3b51" + "01d5c583143258520ce8db0a87f877a395615c9bf879ef46f2f20f68bbc9706f82781fad" + "69019396b27f292cdc70fff1772e90205a2225f80889f9daece1d03914d8776ac5bad24d" + "8fb190ba10a2ca17768b918c2e079d83734eb372", + "0c7b73c324250f14fac0edc941f79bdbc6933ee8f64bf94b847bee5eef6", + "0401af7266ee56bf0518f2875d4f4d9ec508a01769d9c1fd0a885a48bbd80c0084167ada" + "99502475478465315bf8163870a9ec1b43f15d68f0304ab03c", + "03badc9b8098c3b4d7e943a2365093028b579519031a8643b50c0f81eec", + "07ad4fc96c21963395f56eb63e1b0b4d2c93d827626e7bd4448697ded97", + "0e7504e6a9f662472e3e6f18a40f7645922fad2ef7313d600a5a6ee314d"}, + {NID_sect233r1, NID_sha512, + "cd8b2403435fac9caeffa21b55eaba52d7efee0f89df7142340cdffeb89556303ca01a80" + "0429397e2ff6c746743b6bc60a87133274282d4cac02e4ca90ad95d80c93b84163b96296" + "f67d40b2a1124b2b6534ab6b60fdee312fbcdf468d0e84eb85fce4ff360136bb31ced399" + "8d29cfaa3ae685e638ee272058f123c4f35f8b6b", + "03db7f28e161abf52ab0adc8c4c8544fc989af081303b8688f22b7b2eb7", + "0400ab94312e53832265b929f3d529bec33dbcc5c17b969e0afbe2d559ec3901d53b2c1b" + "e229e2c224e6e9fcb8bb0f044f3f9f5677c60bc9454f36eb06", + "034a8f980896284fe6d28b0b49703f1384d799e3f11a04b1e62da12965c", + "0e374fb355f30d7e427bc5db99ed76a914d6e286099c72f28c07302c741", + "08d5ffd41f8a1fd3de6c433635fddcfc2b21809d91496ac17571afbb856"}, + {NID_sect233r1, NID_sha512, + "4bb08eeb202564efb5bda40777d71f1bcc4c7c10b611e803e5c570876f3e319e9e2bc2d3" + "2031c56a32fc0d1fcf620d4e4377d881e9e1695bcdb78acba370b849115b86c1c4b83edf" + "a03299da8e7fd14c7cadb81a8e4911c8e427e32c8c9b67e317575331967cf58085cff0c0" + "d48ee0b8e7dc0b49687bb1c70c703a5dad08ec81", + "07e9d2fdd017d6da6029e88f78927d9ac9437f542db1f1fa99e32bfcf1a", + "04018429bf08752aa470a8f0801170a7ab96adfb168ee8212d76ab0b994e460072a5071c" + "e308d7daefb3e8f4da4681842ffe0f35dd8b071f0775c83f82", + "0a0f330e011d34714875500b70c881ff6b1c9e96da930eef75ec78ac120", + "0439bcdb86d40e8f64db5dbead95d85d6a771d811480c5765ffcbf75422", + "06c01f64e2812d18b0946ea4e6599e8cfca0a2b606c3c35c803ef2cfed3"}, + {NID_sect233r1, NID_sha512, + "0bce683d835fe64e6484328aa13e18b0956f6887b5e4442fce36ff09aed015889794e79d" + "a8aa60b4be565c78685674c51e1e7ac60db6a763c777198a56e382a03aff8b40862f961a" + "e23e8b8683b76a5577769422418972ab0049119382edde9e752b42e8b93f403c1ef8665d" + "7ce8530ce4ed9ebf6d397827cba6b7645e177231", + "0c94052760fc74c2b405ee4dd5dd2a7d38ebc16df9cc32df706075450b5", + "0401d2a5ee02d97f82ea9c8833b825cc57b0cb51d3f2a2cfa7577eba676eca0149c68d98" + "d0e9cb242962326a26164f3e3cb6d81b51f281474b0f8d333b", + "0fdd3ade90da682676d40008cebeadb9b2378d8a821e9e9428018cdc768", + "0f6d244daea95002daff2ff6513da694eee58f8b6c2d47ad121be87559a", + "0b04788fbb5655a053d0fb7a38c39e1fef68ff17860442ec8b8ad049842"}, + {NID_sect233r1, NID_sha512, + "a6defc770426daad4dafba3bbd2a69881334f7c31269b297e440926db54cdad3fd7ad200" + "f5ada2b72ad221ad99a06ecac9c2563a8deed89f0d0896991d1a652f6fa282affefbdb1c" + "1985652300d1792725071631d75a182b683a48448063c7d2563ec3d430e0fd3acea33a35" + "cd38ec0b5b07af96af71d0bfcd879d9864ededf3", + "04076b93487c2da8aeaeb4725fb53b7b41b465315335c18c6ca041175b4", + "040158755fd290910498f6c8eed83bcebcd1fcafef4878c860da118efa250c01781fdae5" + "01c2c147eca2c6c809d9428fff2f853b57c7d6add70fcfaa0e", + "07debe933553ba3420aa06e1bc52a1653f8a19b59c0bc9c47212389442e", + "09e09c6d96e33c845535468ec7f5b79cf30123538011d0b5ffd935d168f", + "0963bbae921317666f5852759e9ebf05cd026a5d9f026942835ff0daeb2"}, + {NID_sect233r1, NID_sha512, + "7803cdf4758c199962b62943f475c6c31356f5d9b997a12e21146a2399cd0dd3b97a860b" + "2ce639e2801571599136d4a8cdbfb12fd1a5ce22374991e090533ff42823a2c58d2076b7" + "72814eea7fd7a1fde68263ef912681c72c7aa3e5a7cc44ee8c65e72228b7631e600121ea" + "35bfbbc783b6ae3c0c8f80198ada218be533760b", + "076ddd73ee4fc1f5e6766e229cc7236cdfce312417ea291f7c3328d5ab1", + "04015185e029c0d4eb5102e0fe900ef3c921acc744feb44570a288015d090800ed56bf93" + "394a434cd84b521040d40452bb39755da5e273a05e8c0ba792", + "084e9e4a9c84a602c18bbb6b183d06969c8b8538e2ff901f1c2794d5eb5", + "0fde8e9b1959477ddb3423661df1e7182e4b583849d6d17fafd7dc5406c", + "01a12bd30e9c8b74912c670c0845ff5ecc77f29797160bd4992efa61f4c"}, + {NID_sect233r1, NID_sha512, + "e789461e1dad0b6e21abeb6ae2e96385549d1bae39415188c8f833233da6a3328144c97d" + "db36e0ff4d9e19d84f869e79e609c51b32de59892fb0446dd28cc164a3e53534c950d26f" + "87fb74e682db2038cde778bde06c3ee2eca2a077d8fcc2b0332e352e0e7e6487444a8ad6" + "0e78ff213b16fda9faf374dc6d27b7a3c4c6d196", + "07e1f8988ad804aae7d09a99be19384cc599e7652c02c391542be74b17b", + "0401fa4751e507740a7345e06a8964022fc6caa901cf0c2077a2c0fb86be8a00683c593a" + "0bcd123d958deb6b430d49d5a2386d44706f4149dc526ad896", + "01d288de55b90dbe72cd8f1f86a3ffbc2902f4b5f0cf4e641d32aec6f20", + "0048d16d87dbf4fb8e994dd874c10d5d16846b9ce2cbd43d09df62ca970", + "0e2ee47f422095d629c188df97e2839fc6239b9e2dc26baf8161b037236"}, + {NID_sect233r1, NID_sha512, + "9b58c145d1b6c887f2b25fb672cd49c3a1117224be697c15182d4048be92968a6500f8bc" + "f747fcf33145c13a8d72e891a6e0c4c7310c2b62f3181bf586fe32f1ecf4feee8c2c8bf6" + "c2bfdf9d5f88981ce080095c93e49a772d8e7b59f9cffccec3ca2f212ef4c6748f64e224" + "f4f098334d83108bf6f8c7b43c5eb549f1526897", + "09b2292b0244c2aabe8b43d95039984d504ebe05eaff318760e4dee739f", + "04012618d89f50b7f83ac470705dbe9ed81beb03929732a3f2aa7a636eaf59015f0f70c8" + "08e053b112a8c32ee422aac2b926c5b6a279a787fddf819990", + "0fb38174a83ceb9236fec8ea39be2b3c77c3dd2cf42d140e27838202d08", + "084941856a387a56022727f81a939d77d12b01dab603ea0cdef6d9cd6c0", + "0bb9fc30595f94d664a590ed4f163e4526809819baf96bbee629ff86bd9"}, + {NID_sect233r1, NID_sha512, + "52310a901fe9681a23dd6e02f12974d57f2c4f653322d9a0ff8b338cc6c2bd9f4765c90c" + "6b3c9fb17df3f492e67d204e39d81a8fdeb92c852a1dcc6151ed6c63049037235c6751c9" + "a902748163a567b714725b4d3995e0edbde03215c645b1a1da3147f7406245432800c50f" + "823a1f991c863427ff4c68e4e16d1b106ee40dd9", + "07ca463b50fdd92d9163f1c2bdfce2ee45ba1437b79162e3e959b814cab", + "04008eeeb146216c73ccff0096e1100008f8b1f3f0c5754c0abc4ed39f7f63018c9228b1" + "1888edd66b2e661284f583a0e8d3c3e922932cd9fc1568f959", + "0025291ec0dc2b0c709c5e69695980564552545c2497636b814aa049ccd", + "098dc98457ce6e69f77123d5d2460ff569786dd60fe07e847ed5bc14da9", + "0cd320afad2a4247fea5b74d78dc3df8967ab3159b4c8b191814d368dc2"}, + {NID_sect233r1, NID_sha512, + "ff419c011601cfaf833067cf28dbe6e935ebeddf8b5111a97f6eebf3bb28376334f329cd" + "877a134b074790a073db766efe018fce666a34650cbac285ae856fb6b3b8b96877282bc1" + "1cd9f9c8e510ed1f69bc2725a44a1d2b35de1edfd8bc9d20c7525ab0bbc27662a7cfc1bb" + "d1e0f4fce5b88411521e3893e027cc8c73acdabd", + "0c3844750f63fe0c2e930bc38fe88522f4e72a2fd0db9778ade20e939b3", + "040075acb00b5999f8b272a15a2cbdf8cb630dc3eeb1e78e58f58e467396f2016711aca4" + "24ca335878d273eca75d804d3f009a1f3628568530ef265eaa", + "0a63e7a20d100f14b8b709f0a6c383166c2151a36dc471f061b0f20dac6", + "04063be9d8e4f0f9afe0c79374c69b36910b5d2b1010e0f4db2e4cd23da", + "06a6eb90659aa79e4a2360ea9ffb99a415175dac6c3efef104bef6fd57e"}, + {NID_sect233r1, NID_sha512, + "05a89c4824c5de66587875011e704bc6e06e991ba8f3aed331cfffe55aa266a08c729f77" + "b8d082dca4d286b2d451ea838d726cc2cf298fddf2d7376714c5e37b64506f353917caec" + "525a1209391449c078c5197a371feade74f8fc8a1a1d67576edfda13c14ad324342fc0b0" + "9277941dc072ec0d39434ff1cb91fc59478fcde7", + "0a3bea235dea86506be4476eb7999dcb8e584a34238c4a894ad6823b93f", + "04014093a072c21c44d1c4beddc5c8dd9a2845db0935bbb4e1c4edb0aee032013286ed58" + "4deb744c9c35d7ae7eb9cad1c7ba2b670642de0399b230716d", + "078eda19f0cced2f84c1a7b354e5a79bec035b8bb279473f32d60f5d17f", + "0964e817f0cdc251eede4157a9bd830c476627c3f27d2931b4f593b0178", + "08dbf34e597ae06ad92b13900a4944e54a5bf0f16f586baad157da6dc96"}, + {NID_sect233r1, NID_sha512, + "13e6b5241365d9d0ef9e8b05cabb3248afd221ec02eab92284b98bda3d9272184bfe5251" + "d35705defba5085381430e99b33a3ab77d7870e5102757d065862372df2434a25556b76e" + "54ebc39d4e6c3aba5cd6acf0c335756f7d9385c1068d4cfa37526a9a58c0ccc7f87a8189" + "176c5d4f201499236058ec061357dcdb5acdba40", + "09a367cd1cffd8dfcca179e167ea437ee48e9b6f42559dda9224701d3f6", + "0401052d751901f6f8e61858d3b15eb59dedd21e4e997531ef65622d5750290112737be6" + "7ec621509d73cd613d7b448035397fa66eb881f90a6d531ea4", + "0d8dd8f1cab623ba6a4e840962fb31de97a4d14aa6dd34dd21154105030", + "0a8276d0f069f34c60b26a55d47df69e4c9ae2981afc59e14b5bfcaa498", + "09351c4b3a06b839eb2e9f450d9c3d15efa45509886ea3f2610ee1dd156"}, + {NID_sect233r1, NID_sha512, + "139a1a5090b97afb8fecfff8745efacf7dcf91a4393a7b629564e598d58d5be39c05c583" + "0d4c8ca85d29e9e2c31ad0447864e867d0ef4788ac734f8d871daebceda98d449308c2af" + "be97724c3af8a468f1925065f39e52ba4b7d15728a744b1252a20476dcfff7bcb82aa72c" + "209e72abb3c24419bc26191390ffed340c1b9c6f", + "046f4ad2522e78b9b35297d28f361fb0ce82306322aedc119251d8241be", + "0400b976c53a966e0834d5f6bc3af10a5f12cb6d16cb2303a3c6cee7d35f2201a1097cb5" + "6662265f4f2f52df375d70af086264752477c34c6af522f1ec", + "06a0d21e5aadcb0c9e3f9fedd2d896b0236dc90e33778fb114e970122bc", + "068063fe0a31b7e7925cf8959c3486985d98f58224d5f67cd0218af192b", + "0f11a22ced98173040062ff9e69d1b2a1b5a939eda0a6944e96fc62fa4a"}, + {NID_sect233r1, NID_sha512, + "3315e5cda5f252e3291b61e493ab919c20a8af1286d9660cfa2f5ca38b6defe19ebecf82" + "0787fe692d04eae8a5f5d37abfb593309569cedf45efd0cecef6951b718924c8380ba52e" + "8ab8c9bfb2261ed5f01cc5a5f9fc5fcdd269a0f122c597afdd9a836cf8f96838c3e8962c" + "1788c3ce4128719b3ef4fc88569643dcad6da16f", + "0ac82137e9c7a5ecfb8b1a7df9ab50732934566a392a6c8915ee8ca8144", + "04000f7f835f8223fa6c49eaf6650e33dc9d09e1d2bb098925d908606570b2006e659ce8" + "623767e8214b076d7588746bfdcbbed59b75bb19477366cc78", + "080655784e3e31c6a498a63d4d84f7e5a353a66641ca17d4e223441bb1d", + "07faf31d1d31ef4edac1c63072350536df84c417e0ef808c6be39617e74", + "089023aeb53ddd3e475d11c53479863739e62dd64348646581012784689"}, + {NID_sect283r1, NID_sha224, + "067f27bbcecbad85277fa3629da11a24b2f19ba1e65a69d827fad430346c9d102e1b4452" + "d04147c8133acc1e268490cd342a54065a1bd6470aabbad42fbddc54a9a76c68aceba397" + "cb350327c5e6f5a6df0b5b5560f04700d536b384dd4b412e74fd1b8f782611e9426bf8ca" + "77b2448d9a9f415bcfee30dda1ccb49737994f2d", + "299ff06e019b5f78a1aec39706b22213abb601bd62b9979bf9bc89fb702e724e3ada994", + "040405030ce5c073702cffd2d273a3799a91ef916fcd35dfadcdcd7111c2315eba8ca4c5" + "e3075988c6602a132fa0541c5fda62617c65cfa17062a1c72b17c975199ca05ab72e5fe9" + "c6", + "2af633ac1aee8993fc951712866d629b43ed4d568afa70287f971e8320fe17b69b34b5d", + "165ce308157f6ed7b5de4e2ffcaf5f7eff6cc2264f9234c61950ad7ac9e9d53b32f5b40", + "06e30c3406781f63d0fc5596331d476da0c038904a0aa181208052dc2ffbdb298568565"}, + {NID_sect283r1, NID_sha224, + "44adcb7e2462247b44c59608cbe228ada574ecb9f6f38baf30e42b589fb9b157bb0560e5" + "a2aa5523b71cc0d7f583b502bec45d9b8352f29ee1842f42a17a5b16136feaa2efa4a0ae" + "306402940ecd6b71e57d1467c98e7960de2a97f88b43487e4f4016af1292381d70c18c7e" + "6eed99a14cdeb5b3caf73688658e4c5b54c81e08", + "09c2804f8cab768248fb3fff8a055b3f4585c00de5c1615a19f9425b9432ea09afba8f2", + "0402570ff62b03a5124f08f752aa71ddc57944cd94197fd286d5a2a107b116d7b8ff1b04" + "21037714d9abe9aa0a9668fce89a3fcd5cf2e4548102a181a777c9b3f1008ac6e8d3a31a" + "2f", + "0dab5ef658ae3e2ce2bc5c88a8b8022a0ca5eb8524815ffae414327e3afaea5fcb8a7cf", + "2d99f82d92c9554722bb793988af0fd0bea776c5608f5939db7c8634eeb24ffd381dbef", + "27ceb1d01ec9a3ec0e74d79e08024359e117488020de6458fbbcad28b173918fc7d129c"}, + {NID_sect283r1, NID_sha224, + "cffee6252c7eb6d91d8fe100a1e62f0ad9f862d78ca2b747a6c17b8c9ea8980dc239b3b6" + "73310e6e7483582399163e39d889abc1a613fe77849ebc09b4f7f4fe0688b8a9869ae918" + "a88294c7ee199be50ee9460db14725ae70b449d0cb48f30e7d817ec02c0cd586119341db" + "a0b74f0279330807cfccc99c8c340b72c1764a45", + "2e625a6bc6d0ce7c06231de827068bdb0abc8ffb57c82b35ee3a0f873b9473905974d34", + "0400458bf39974812a4e0964c31f40083300454104c0d65f22c5688bfff3c256b7ea9589" + "000738dd33e32b9af93ade2dddf4147187a9270543afdfd66a0f2a53d6d3d815ef59795f" + "60", + "0a9388815c528fdadcc5d3b125c7a38db57fa8c163ba795ee00e8e307bf760619e705c9", + "2481571400ecf9dd31dbd9c905fa1006cd5bc7afae759da3312ead8d5a7dd0c25a37ab9", + "13952fa427d348b6347b9e93d4cb2c4cae3429dbea6aafd1e58d5a34805098722b3b8da"}, + {NID_sect283r1, NID_sha224, + "d058ab5dc07228253707ef224897ea0fcd09c3d5cc91fdce9e03c1c59c53fb4596be2ed9" + "29c7455e67ac7f4891aed3eb06ad88f2c4aaaabff045b959f900d1019d706b6052637585" + "1bb891494e99995928e4cd51c9616aa651ec77bd7e398916bb9ed3156391bf7fb1e29181" + "e2b011dae2edaf803607def2ac6b194929a57f45", + "376ac24e1b86f8a55c052d92a0bdc6472fa03acdcdbccbf7c321ec0ccd97aa0a66b4181", + "0407247c755b23bddf944e29348da82495b4f61d02a482c6111d8698cc77e8dda4c341f2" + "0b00f8c199138e1f4f8344facd90ac62d55f3c9a15ba7a672ce40241aa26419af790cf7d" + "d6", + "25d07c7afc5a335c2bd7863c1965a48c12f2687b2a365a7c2700b008ee8a0e8e35a68a1", + "23fc2837a879b79e470305088acf596eb0159edc2008478cc4c3841a1bd66fab34bbb5e", + "0a909b83bf77e74511063366ea1d1308a8a544864783459a60fb2669785ab1af8f4cb06"}, + {NID_sect283r1, NID_sha224, + "c86f2cc7ab5df5cf1a236fd83792769474cef464032800ffe98a44cf29dbfb6f24088160" + "eb31a11a382ff2a49f3e05e983462f5304272f96c0a002b69af3d233aebe867ee63fa466" + "66760a6889d022c18645b491f8d71b6a3b6b4ef058e280cf625198715b64b025bf044944" + "5d3dd7e1f27153926e617bd2c96638345431d1ed", + "2b50a6395fc02b9ac1841323de4520292f913519bc0d6a471aa28021322fc4dbcd7b802", + "040696d5ac4bc40e679524e246210b7bb0f93ccfe7dc506ba87be3fd018f829c93e62ad1" + "d8065953e01d9db8fc5d64516d864a33aa14af023e601d69875ac0f7af92a1e78aff0e47" + "5d", + "0aa25b43329de4e7739fd9134e4f4b3d68a64e55af47a2f6ccf71f518f19059b68d34cc", + "1338a5dda5fa09667604a6a7666b0e54e6b688b98b31c25d037ddf55ee6bee7565dad09", + "00aec025232c16e778f90785ded5348f3d5345b8344b2a762480383777328e0a0b11cb3"}, + {NID_sect283r1, NID_sha224, + "c1328d8d2e5b6ffc850a9600bd6482518ddd9cee3fc9140febb72bcd444b0cd7e8074587" + "d51b62cce4b3d4f34ad3355353fabe363369cf790db2df9fdac3a0ec4757e2dfb3b683ea" + "a3e26531691ce765742e1c0bdc0e1028d347b6085fc459df0989c6a144271454eaffe413" + "cae2ad7c8b2371fd2df1afffe56df727009765a2", + "24e5889722f6c35e18ca47effa9e415b1ba790066a91fb3c9f7b001ce28fc732b09bc23", + "0407d4a57e6aaec6b51dce5408f6a7fbe9ba9d55f5abe2da55fcf015ca25dd74eb61c155" + "6c02123390178b2992059151afb51ac652b364f562c65451eccc65d968e9e7210921c93c" + "9c", + "320d2a7f48cf3583e8d7e712b330d40ddbe4b6c128be5a43d72bf57d4227603762de7f0", + "09806a8e70742c6c4a9ee6f77fe7a36489e1fe8c442ddf9cdcfa61f019ab9b41241d949", + "061fda247ba7c198aa532906bc01d509088d6c2ba0f14ca3ecc5ba36f3595db1df3e64c"}, + {NID_sect283r1, NID_sha224, + "7176b7013ea27e94281977eacb976bb31c753bf80fa09680a29128a6fc15234f79f0e990" + "0aff3217ce9be72c378042c6c34fced0158740073d1a985fa25987fb218002e425868fda" + "5a47de51abfd04de34e2b8634cebfbdc98e80f93d94096193eaa82dc8778fc23f3765c7a" + "cdad94fdaa272df0ff0f28190c10a462ee78ac92", + "056d15b81f40b6378588a5efe43e21b95e18120d514bfdda0e7759a1d0766a8a35ce5ac", + "040306cb78fa576bdd2f43cf7b71d7e66a98b850d87ac087dd2e1ff62596a2e8d4cfff13" + "4403b1e3b12db842e00c2faef04d3e39cdb71546e4e3ecf21eacb6131c3501fa30edcc0b" + "70", + "1e8969d6cad41a40d8306d2a8db3290d547106eb59f661e0d0eeb163044a92aee4483fc", + "06786637c3bd5a95eba5ce015f151d99845255175ebb9e593d912c75cc45723612c4ed5", + "384471c17c45ddcf62b588993835bb913be88f7a8e46e52e211972ffb3b7768410bcb7a"}, + {NID_sect283r1, NID_sha224, + "4c3642ba040a9955b9d50dcd1c936688c17c363854358afa8ca49c6abd906dfdc4d89bb4" + "cab0bbc363fb5b74e1f004d4b09ec9dfeed4c0bfb482a9061a1f487a3d79195ff7b65a05" + "04bced3a28db0ebe8fcf8ab1ee4a3ae91324d15d890ac4c479144dd5538d2e36d3a58776" + "9ee9cd2d5c6f85a03362a022fe0efc4a3902b71a", + "12fb2fb5bf5f7e42a500154823a174ba2d05af71e3b0cf47fab46e673ea1822f1563def", + "0402414d172d74a6281169835d18bfaae91f1f1cdfa9ed451884466e63160ecdd4a2c790" + "6f02d892bb19b47a4fd9d851d3b101ba99acf6d11345596635cedd5d7557427a2896a913" + "c9", + "20786f42d77195bea5761f86dbed8b452f858b447d2f3775ba2a4865d738122363b50e3", + "334507412368f08bd0992a5d56581ea7139e8adc88abe4bd80dfeefdc7a37a481b18609", + "0fd8404df06a02618cdbf6c28610d5dfac9907635d9e5f2887f11a7f18cb8b7ac95b5d5"}, + {NID_sect283r1, NID_sha224, + "e471f39c18b081362adc7da47dec254dab8d765f005ac574640d78c14222639245563912" + "d942f3be212ee3cef134407334c8fe3602fa0e1629de5331643d76715dc1b0ffcebd484d" + "86c5211be4b285a31688b205fa988e6c15b36daf396ccdcc209c7dde2a732f5c31c84c7e" + "a041408ebf15e56632583af0131bd7f531b5fc45", + "30096c54fd480647e017f8cdbbdef292e799f054e3279d228b09816a757566a744a8266", + "0402d4b28fec18cd888017fd5a27a375131bec3aa7195c0a4f255eeb3616437079e356a6" + "cc027c607dcf0b068418eaa7de8da6f9707650e8d95aec571f7ec794415fc175061b4515" + "19", + "36880905a376faa594978713c2de1a90c8e27baee65bc60b1fa6508fab5abf843f66ecf", + "295193f1c64181bdf749987bbc8ff2a188126131f8f932bb8ca952ffa201f109762e18a", + "381c496b4035bba880225dcfe74fcf101103e38f9518d9427c74a5ec86ebf8f7183694e"}, + {NID_sect283r1, NID_sha224, + "8a93fe53e83075c4025228540af7e96a588520da34e3eadeb99a4ab2f3dbbb8f85fe63a3" + "b86c1f4ec912e665ca05b43e869985eae3791b91205afb1380e16c25b74e6793fa63e4a5" + "5dcf25dc22d03f09deddeb9042b620434111afe08c5657c7d754af66ad91a1b5423301b1" + "e8e6389a1404060d1b6a99fe0f89598482979e42", + "0a1b7e9c8c2dc25b494b5ef3195b294e41cd3c2c35235ab42542bd3e2a52d5826662bf9", + "0406232063dbb66a56e2a92dbdfd9b3c136eade9c214d831691d9b49c56a3962d20f14b8" + "a901b47b85bc223fde1918abf6308b74dff7f3e686af9c9d7a1855a1b77984d258c1f9ae" + "da", + "29b4221eebe151fe758218138535d81182c991c3b7fed93f9a6117e98c1c2f97e546937", + "1f8040fad671e2f32a1094413ee955ea5426bc906b8e034d87d7408e63db173b05afbfa", + "22a353c431a9e9315ff69facfa4e15f6e6ee1be2750472823db31b49b17fc759e6b94db"}, + {NID_sect283r1, NID_sha224, + "e193a8ef6f454ca1aed38bb67aca6d08280d421b196d89938c0582b7cde74dafd71716f3" + "818940af412d4a7ff3960a8517aee108ae03576b68ee7557d35e6f1ab823d124de7243dd" + "02b542591f62c80d822608572889573e4c9dc62f99d68e07800da6f83cb6f5e03d1f2ac1" + "5f90e38b4f25e0a75e354e4b60cc81c0bbe81d39", + "059b1a8fb84530bba7a607ee88310e31bc6ea6a6881603567a1081a05a3a9ff87e719ef", + "0400b9a71aa3cb4cff37586b1e522b0e332ad5962eec3dfeffcef3851976baadf611ae52" + "2606b1bf0b43b406b5edc6782fd391d9fb070fa3570d3cd5b2b66d7a95dbc45ccb162617" + "2c", + "00a77307da9845ec4572a24c9e74a17b76b6393da87a9d7b1b8456235473ff39d243ec7", + "36721835be490b5ffc4a42bee3c6d231417f7038c367efd9ecaf7fb3618ae8492906de0", + "237833bcc3e4a721e2079e579d1aaf2519c01cc238056fe0c0990dac7fe50e75eaf6f96"}, + {NID_sect283r1, NID_sha224, + "8a99b9db191f6cabc88b430bc2293e6774d5180f019d871839289e25aec29379f14606e7" + "42190b7aa062e3b29fe0254146d9614856c5140c7315015abb98ac00da2c7e33cbcc82c2" + "4b797366f12767322c4381454d9d1eeaedb616b0ea5c66d1422da459f18081f4f966d05c" + "e279c6ee69b1bf94b8388d38d4b770d9ed69025f", + "30ddc2c7a4ce300cc2b75f0f977033f16c1f8bb13aae3d494c381f9a6dc8622499ae4df", + "04047bdfd7c77ae0c53e327c15c30d90ab1c9b670fe2241dc0ffa939fec3cf6d3c1f493f" + "3a06a286aa2310a4d0468b62f3144a9da2e66d15bf86f60045824278e8986ff87a276119" + "20", + "38afc3d11c66eba3441a5ea298fa593eec57b84ea29973c306ac9d46bb8d8e2f4c8b049", + "06c830f6c0be99fea4712f1c75f5a4e439800dcf062a16d93135c3255d3cd04bef5bc7b", + "1eddfda0d0e02d382ae243e604f76939dc21f3ce106243b2d20aa562b78e620fb456428"}, + {NID_sect283r1, NID_sha224, + "5c437b331831530aa94623b1736f00b986172699f0a02a5e5df0008bf25341787e2e6604" + "6f2c929dfe0058c3cb89fc5bebbe1025bb1edd1ee31522ed568e7b5b4ca3991afdc76a68" + "cbc2c4f81863e27fdaf6a564fab2c6354e5c657de81390f8a4132669fd24a48580c716b5" + "b7961a9c091f614d11cf45dfdaec8946a54a11d8", + "07899928922fbfdb5407517725edf231d15a8b62d90b7fb6d8c8d20424850dc44f797ed", + "040614257f54514cf37df2cd78850658a85ee362764ab8186423aa0f9a1ff486557f8f16" + "7f03ceae9d1370df045d20f576931ca63bdba8885f463d5c82e5edca5116ed3d2c2b0c48" + "61", + "3395493478e69e6e1088166f622a4f9ec7feb998aa552b54bcf0fc67c06079f45a14993", + "3f31ad171dd59c9deb21851e631f223584b17f72a6807d5239ae31373512def954d5ebe", + "28f095ae43ba5bdd899573ce6823eccd8e127c6c03cb59dff43c087ca24e1ce5504d1ed"}, + {NID_sect283r1, NID_sha224, + "91aa08567d8da4c90684dc06068f69deae240212842ff1786f04ec41b40d9187aa92c764" + "01f9fcedced62876a34df82ad7c1e63b68bb2a972257ea8542bda6a7f1a020c9b122943b" + "6d651abda8b8d322a8fb762eee376daa2d3637a71ed6c4f5cf96f61c0da2d6e1dda3370d" + "80e51da2cbd8aef3267168c67359523faf910dfb", + "2a2af63d1171930758bd3e5bfdac62cca1a83a3b55a49b3f80cf0d9ee4b2082757beac0", + "0407dd6fd0868ec478e7e5c08965fa4f1efe8db4d0c04f0b6c63b5dfa397607a0d9d5ce9" + "09054ff4fba9058179a2c61951fb4955cb637b01267f8f08b3aad614738c562f602d498f" + "04", + "179482dddd033e8849abfd4991304137044d7433d7bf858a794340ea1cd66e736b821fb", + "071f4cb000ca1c51c698c867a78961e6d7defbd60109f79d1d165ed045a653ddebabd10", + "1e2975f4a1fce0b3b0e13c3f50005fa664ee9319cf774d2e107c406d36158bcecb0e5bc"}, + {NID_sect283r1, NID_sha224, + "eb5297bf408c1a55e400a20a3c10acbc5c2bc6d6ccfcc0941fb7a6fd4d2834415a6df86c" + "3a6c4b867d1215aeb8222153da8cbbb1576c92c07ca2c36d8f243fd911f9a057e39ee258" + "32454e28d7ed52a8d04169b9b9677a16b32d5d211b8573a8986e9bf36d7206417ad2771d" + "aa11bc21fd7ee1029b65ff7c9b2705a6dc9cf9cb", + "35994e89e13916ad82608f74a639e6aceb756ff913aec440519946d6434af9a60a6af49", + "0401f7805dfc9f90d4f8a1b241dc9d68aa41cb77b63d530cb3733cede23bb87ee5118e5b" + "be01c3f1aa3a1218de78a94ee8f88d3f787fdc68674e31792d919dbca681a6db1dabe89b" + "61", + "2116684a4307c67a3d8c1014b33b928a962a8daf86c4031b0c1d47315d74bad7dab2aad", + "33cab952e9382dc074d666f1f2ab2bd72ba394a404ce2fd02a6f7a4dc096d713827c94b", + "33b2886738d882146c0cd715701fe4e8b94b0d28c73a6b79d2899391119ba910bcbe3be"}, + {NID_sect283r1, NID_sha256, + "f415d0adcd533dd8318b94560f86732c262ad2c6dff9dc83e2435543f429a2158cd2fbab" + "0d96c027f71008c4895ecc644c2ceaefa80937f6cc6338d15d36e459a16bd9387a361a6d" + "800acfd834ad5aecf442e30b70f5bfa164747cf9f89325b80976052a83a5e896c00c54f8" + "1472b14329cf23bec10a8e693005de2a506ba83d", + "29639da33f48e4fb0d9efdf50bba550e739f0d2476385cba09d926e789191b6fb0a73ff", + "040770f9693777e261db9c700eb1af0b9e9d837ce5eabd8ed7864580bfb7672ced8ffca5" + "98068aef01c8126889204aaca8f3ccb089596f85e2aca773634bc5775ee4d27c77f2af83" + "e7", + "32a930fdb1ba2338554a252d1bf7f0169d18750a4ec4878d2968c5e735f98b9d0c25edb", + "30cd65f1097d3fa0d05e1d6072675f1377a883b683c54b8a1f4960f90d68f3ee8c7bd98", + "15c61ddf43386a2b8cf557760200ac06a480797e21c92e45e6a311e1a508b03c4d9632e"}, + {NID_sect283r1, NID_sha256, + "b178d86c9335b85e02178fc4551769db589ab91d823fac219c7e14e2f029753b20396238" + "9476723832f8d9631dd7764e6dd35da290afa42a794476f5c7727b3688aced848dabc995" + "4201578cc7b25801710931f45cba1199d3788d64dc0188412e70723fb25b8ecb67183581" + "50c4037b5b81466dac1686cb5270bb1c72d34bb1", + "0583a7ecbf2a975a32d07428d27ac82e5dc13d1466c4fdfc1e6a05a8d9a289f1010617d", + "0403775ec793ee4bff15027c70d9bb5dedfb7d2e41af8895faddddd4589cc5a00bd222b3" + "bb0300f7cd572d82f2f0a2d99a83977ed2034e03fdd76a0267455a524bd8199424ae5b81" + "ca", + "1e58b1f66c927f4ae16143856d67193d889debdac8eb03936f1b36d550c2f2639e13f8f", + "0f897dbc8ea12f4370fcd08e8700e5e4c68dff97495f401d01b782f2ebbe259bc0dcf25", + "3c32424fdcca39f411663284658b8f0c1f950f0cea4354f02f4b359f18e3fefac0976e1"}, + {NID_sect283r1, NID_sha256, + "c8bfe9fa7c848531aa2762d48c153cd091100858aa0d79f994fd0e31b495ec662209a9c8" + "761cd1d40c3d8c4262cf4dc83c4a2549a5cd477726ab6268b4b94a78b1c4a7e700812872" + "d7f41912a723dd9abc305420ea1e1fb1fee41bf643f3a24abd6e8fbf6fde2475e2905277" + "24a6f99fd75374bf7cb01b34d3e60d8db33c4de1", + "0f817ab1b49131fb9bbe8c112c25a36f064efa85de7506fb9cd29d81b326bf276277f7f", + "0402b3a06e07fce1848494d3227ff77d1c43f4ec3c037ad73ffebfebeeae87d3bff7f7e5" + "9a075df52e6a34229266ff28b1c217538ae23b3912e4bae8de5cad9b57b7c1c9ca8aabb2" + "e8", + "0ac57fbb899193b88fbf4ff2c502af72943b133e8d40459a833275212f6644f566f5c58", + "3e13307d5fc2b7ad24e9422355150578c78e1c99a6f9a24f9ca2e8bc6856936c5c4af2d", + "05e8b77b580cdacc2660e6f8a1877d93c5983d135d63ca0e0b06aa8daedf855c9f661fa"}, + {NID_sect283r1, NID_sha256, + "9a5f563d0f9fd1f31f3a822de628ae970954f4e71292492d727109036491c29e66b9b0f2" + "c90c26abe94c08502f5e923a9ddaf6a7d91e9541ce90d0a49f03ce4e4769753d5b7d922e" + "1ceaac4b4cfa4262732a09550aa076b8ff9d46a50fa17de17e3b6bd606698464d116fcd5" + "f1ae11bf45b0c48d3b738427cb47b0d1272b03cc", + "2782af76ffebf3e2bfc0576b70e4f4bb87c762e2bb230d278ce776310a14f5b678f29af", + "04000dc21b3be7efaba5c7f9f22591327f0f97083d4d844415d3148d227931256d026ec9" + "d401276f1d9e131f13bb129a1192fa24602fb508c9679ad2124e49c70a891777cd601955" + "fe", + "0255972b5329863f380de945574793beb0430dc416a8f2543330a125ce8d69f72dbdddf", + "25bcb54e188aef6e362a62fd88daaacc8e697dceadc8a6b6f804ce4a36856c8da6de97b", + "1e12e18e1e281606c16ed1f49804f8cfb33c29b0ae92c072d5c41ee3e6836cf1813d722"}, + {NID_sect283r1, NID_sha256, + "3d6b065721da9de82cb33ec2c27107eb399b1e69ac8fa51145ed4147e20d72e27434104e" + "76af988a3bc94f55e36677a05182fe2376dbe38195fc6a30673a4dca87336c7304f3f31d" + "49216fbdfea00fd1e105d8b0c13ab11f8892e0045e915c17dfaab07b24ed21b06af5a8ca" + "d4f45fbee5a25bb6e87466a7bc422c0bb896440b", + "31b827b88f14d3822244809096157df3c0aa99da90c00cd9f0b18dfe306f6881834e6b6", + "0407b3ed076a2901ab2625bf05fa6db10a8c156412fd2d26741738f5eeb6a91891575269" + "4606a8cc2061352c36f264d23dc2857fbe02af34397ae5130c582e885f50f2c112f141c0" + "7f", + "0b36f5d6da409c4a27f38ff9686cbf5f4714f4e17234fbee6e6deec97c9f0d4c585d42d", + "356911114c9ff9ae4f3a4fcc5379c987b9d298554cdd39ce124f04707e7fd1ea25231e9", + "13c0a321c4c5a1e89dacddae38a9b3dda32a20627e53dcdf28ee26a550797c255eefe6c"}, + {NID_sect283r1, NID_sha256, + "d125f0e2e6135567adec9e77da2afc6862e28d618416632ced829d14ee8b61116da59dfb" + "44098a40a0b927731125617e3d2f32cfbd1546a6e758c1ab6597e75db07add52ecb61d37" + "da2e9ed04df95b36ac249f4cbd794cb561655cbbe4b34834c497b3d392d78ed0db8db683" + "aff0076fb6e43acba3fa2b91210cc6cf3fa594b0", + "27da4916f1c471cff80bfa14d12aa10270fc3b26caed010c0111f6e5a40d914a3927763", + "0407d8202c88fb915446c521884fb756375a2b8d178f6a87306c1c8b67b926e830c8285c" + "150224dcebb8a7c46902532870ff855c780b2884dbce2956cd34dd6ffef8dc365b967534" + "49", + "3fcb1e759418e4539f9be76354cc1914ccf9a111338890eef723431925fa132ebad8695", + "0d4d4f23408db58a72495aaec6dc335ce85309fedccb6ade053c23347abdc9e77a81aa1", + "129b6b322573dcc79704d08921cb54f31c571573da78cb09d0aab40c4036ee8f195d88a"}, + {NID_sect283r1, NID_sha256, + "b380f97687ba24d617a42df1b14e5506edc4b62dfec35ed9fd886bb769832cec7f9adae1" + "0c21b7cd9152588797b4efc6b2b30a873d3f25e683ea9be070dd69731949a51121e534fa" + "bfa3a2eae0ee90a454182248bedf2595cd47ad08614177d58f7a773f5023b538f5f56868" + "2c83fb60e3fb1aa859948d01bf7b214e7f2dc719", + "10608eb51dc0ee97d6e488a23c582ecf0ea1df9a24db77094d87b3fb6ca98507280a934", + "040399b3e571caecdfa1efb243323159a45618702600b870954cd614e494bccd70e381f6" + "8a02e2fc57721a500611badf48fb435a6e399cea356d281e853f55ef2cf9fc5f70dc8b3d" + "a2", + "0a8045b4f55115dedd8d742545f9f2bd6e5ab81cdbd318747aebfe9f74b0cbc964b6040", + "2d022631bb7e05d316a1b130faaca5af5eac67dd25ad609e6e2a067ff74fd4ba534db2b", + "04595f184068433962d250394680701fbd2e2bd613a47e5de68fa1eb83cb08fb425571f"}, + {NID_sect283r1, NID_sha256, + "3f9ec57e4228e1a6ec49df02c58d756515305e48763ba1dc67298be9a1548576c28c82b4" + "e9b3f62357d9b3c522b16d5c496a39effbdc8290edd2cadc0019e6b9fae1e61238b13b62" + "65ad2ff413a5a0684babdb0013e7632051455e6fd943815213c555dba96cba8911e006bf" + "ddec6c3353065004538f37e48df9e339498d85c6", + "123f9eb8babed548df08cc3afc1d3b3bbed52b538d4654f2088fe76062fbea75b85a560", + "0403b2e980ae7a847394720a9cb982fc1e41f9381b0f2e08b87fdff1bf891b9637cb2248" + "5e04a367d593edfaa4e17113b6b1ea3ad185b3155b1bcbd9f00f4482e509b43bf7eb67a4" + "48", + "2adaba166d703d4d2d431a26200acea7fb47216fd04882f91c5730a55c349770d58a452", + "2c83e6a7b4fd48e1ba4fda8ed7891425213764078926d8862d0eb64765ee2900b3deccd", + "3561a949d583b7de9263d07ac427bc175b75dc52f43f3ebedf996218c94e51684ed5f9f"}, + {NID_sect283r1, NID_sha256, + "bdbd7b7bf3337bd9d21a3c6db379f95408c17e49dd394e94737ceae889f45dc0ff5d48ca" + "dc53703a16b5589939506b548f8dfd34c577c084f372166cbea320c8fd07c809b211e074" + "9ea639e68f890affa1569b66bd763c7c710989e491011371eb1d93ed9479ff0216b7f79c" + "901a2023e2cf80b565d1c0517e73117190cd2f02", + "06a18e626452111922e02e31d662f4301319946a204ae8a34f06b91dd1b5b96456365e3", + "04077c1fbe6a645b85fa0316ae412e8dc558c7c066d9aba900650749eb7b14a149ee57a2" + "5901b2f3002ff4936653412c8ccb8a67dcae18d78dcf6dcaaa75061013d2134af2c3fa0e" + "69", + "21bf4ca10d03a93d4675baa26285aaa554836bd0bab6e7fe42600ffe9137d5e304847e1", + "20702aa5b5cb45cbe8025b4ddda0a42a1ab746117d45382d018b2055b62791ad91abf54", + "12c31f9bdc096236d3ec46c4e6cdbcea47e4fba0e28d4df0fbc19e8740ce6dc0577b242"}, + {NID_sect283r1, NID_sha256, + "436b288512ea57bc24f84fdd117da9dc1858bae8c11637f99295d88fa9d05e3c053a2584" + "a6fe200ad190b3077d9a1608f660349dda405066c1562f6897ef69b6b674d6bc11fa470d" + "0b96a7cf8f6e098c9ac03b0ef415aa045867ac7c11d16cee78ecf08850ccabf70f761682" + "b561d0d0e4a889d840dc74932648ca2fb58259f7", + "3307fd717015b12a2dc76ada21442ac1d97519f66898b214c2ea317ab0f0905e819e4e9", + "0404ff9b8d60ed177df635a3953c0f5f5c0254224bc48d34329136706d6e8fa1b16ba091" + "6a02e50ef73f43ea9a5ad07c6bd68a82b7239534e195ee929aae7788c073dbe9e968c282" + "8b", + "14d8339f610b348f4639ac20dfe2b525517218f0c71b1908d407603b25f19971a1b5b4d", + "2acf3dc4e3569e5038fe97920de626ddb36bf213afa0f939785dec8319eb8321234c574", + "01db40fa416527266a3949211fd9fec158412c447c392ed6a7c7f159a1129da864d33be"}, + {NID_sect283r1, NID_sha256, + "672faa156dc188bf16bf8933d65e091c633f294486049ce96a4a403dca28a149f4f840e8" + "bef47412285363e9e89006614b013a41baad9885f1d9980cc897ffbd5f8a7d0e63feaeb4" + "2c07776efb307ed680ba1cebf470dd9bd8a2a9efc2b1daa569524394f9a50398add1a5bd" + "2f7c263f9e63c2d49461acf98444fd23341ce78d", + "14f9f412e3c7d770626e800d43cfcbba3ae6aec8563af748e8a97b67d244334b6e6d2b3", + "0402293b37c84e7514564635e517bbdb9bda0b4a41217ca64c38e94a4bd00753255b4cc3" + "890088c10bd909964ecfe10c373214544c6f60ab85b8f5545afb0fd2ac03d036db7ea9e6" + "7a", + "19b21a4d73012dd2a2ec3ee280a9b855b89e6ad53438431cdb5d2cec0e5ba21300e9bd6", + "3baaac69d182bf1a12a024dbc9a52ba244a654716e2756c36ddf8ca634129cf9d2b23b2", + "13ed92730d0a6d75f2a4a56b39f82d063e1be988dc58f0ba5f553fa88b6510116005727"}, + {NID_sect283r1, NID_sha256, + "4321334cc8ee44f1cb392a4b280a95561809dd3639ddf43b6e11cb73067597988d95b864" + "3d86c76c3c6b932d9262b9b8b55a04fba0666dd8b8ff1e8fdf799ae3945b6e30d3af3966" + "f1a6d634d5e012710d66cb447fc3375130968a2e1e647780aada2609d87247c90338dd71" + "c3bcc3902311caba27d5d4ea4d73ccea960d4bfa", + "3091a6a8bdac1e43542dce752694972e734dca31c061c7d1000754296d0748055db3f09", + "0405c0761d01020a30c478617313c67008a1332a0e6f295c5a9f01b3411eef585a9dafc6" + "9300eadfc6f7bb9986b0dd221b77b54287042ae8d1ae5788706b79a354fe785c66145bfe" + "81", + "0afb2e2e29b26a686368b127e38c2f5726fd55a13e9f87cf00e831d3fe19d9511d07e81", + "2685f634a8c16ee79acf62b7a1fb3acaec0db47c6ff5f2c97a804e9550494b128b2287b", + "12b545bd76b8d2cdfc5452291d5e4748a5e981c400daeb65c20812a65bbe936bc613219"}, + {NID_sect283r1, NID_sha256, + "2087e22094570d39fa937f15a3ef0601709a66666344186a33b487d041793fbb9709a95a" + "f250b1df0762ea98e911aeb3ff1fa19f0aca53fd4179e454e0e91636e55cc5b17cad9e15" + "75c82ad265dc34c4a66b7a31ecb9ef9dc756f2ac1d9dab35369a6bad4a0f47e629daab91" + "addc6d297d1e5d81477b3966d8c3b607ed194d88", + "1195921b91353db9bcd00510efffe009c94f6bd8d790f5fb3e5a0101c9ca5d21c6ef2eb", + "0405dd8aa95e24c054d508bc5081546677b9a8e8dad40d3f8a184af7cf07cdb09ffa2e04" + "9805032f208dc3bbad6aaab63211e13e17656c750c6c2a6e3caaf55a7c30ae5ba241d864" + "1b", + "3223c6439db7255e89c28aeb046e906ba79f4e9b8222ba5ec201b964d3666301f74967b", + "0fb7e194dae6420ac447e7d4f882da3c4859f53a948833a0a08f918acbe03c2e915d1eb", + "2336f1206b46b3166b28918bdc1c817b22ab16b355030cfd635ab3dade20d2dbde08b6a"}, + {NID_sect283r1, NID_sha256, + "15c7bca449a73b03bbfa783f5a91ca0b7916889a5d99d541e2e8593c3b176a5b634ba20b" + "34407fbd94ae1c1398f5313cab7402f3bcd7ad277a8c66d09a6df5dd086b20a0a3823fbb" + "b80980cd86bd13e527eee15656cc977103e80113539e26695addd9eef6a1f56986168d9a" + "53f8b5de833f8962c3826cca106ae9e8c00208d2", + "29dc20446e9abacb43823e12a83737b46e6e577466b5a3925e0f9d496824dadb4d4b50c", + "0404b3c1d41d8172ba15fc92d9586f29716821ea82274ac8e4fb3452ccca3e34925f1e73" + "6c023e22cec962d759bc659841f259de954911aa289e9994bd76a30149a73711bc41b299" + "04", + "0931ef56f08c379d1ddce0649f45ec21eccf3dcfa178616f45b200a06f82172b91bffe1", + "178348d533217543af694c8d3cee8177e22740b657bc6ce6df9e57f0c1f14fc9407c440", + "3eb25dc4ed42495b54679653ab1cd4d61c854207994a7318026afdfd44c89cda9247388"}, + {NID_sect283r1, NID_sha256, + "d12fbb82ee7a57eaf76b63fd6bc6c0a65c85f135f019d43ff7bc295cad15d53729d904fe" + "d63d69d3ffe8b82c0ebaf0399e2717ece40e011f710b5db46aa457c23b85545953398b81" + "4816a1e7a8ab5b0b14c4a0451b0bda9d0d2ec4a374bcaae208b7fe8056bfa17d6b7ffd4b" + "a2e9179f49b9cd781b0c06f6ce3eec26cd428cb6", + "3b9b77d19a42e9a555da8ab70aa5638890b2ed21daefa28ca6323fc658662dabcbfaf52", + "040632fdf8ebbb755c960ebf8fa5d6b679416e488faeeb021c0782352279a7ae00eed330" + "94041aa517eff6854ba04e2de6794848823e53ca580353f2b25e45fd4efd3a369cf80fbe" + "57", + "2450beeca6f1ebac3e82e3aa3239a5031f54ffe65fa6a45e2bf2ccbda448a2cf6988141", + "28664212774e23b6513f73a9b2da97f5eeafd10efe742e314f6913a6d0c0e3e581cc6cb", + "025bc733edffbc1330689e7aee0dc121b64a72dff19e1d7c5990206d6daae5bae75d0b9"}, + {NID_sect283r1, NID_sha384, + "eab0a37915c6b43b0d1e3ef92e6317b3afc8b8301b22f6059da8271fc5fe0e419ca6097d" + "aba213915855631af64e10d8382d70599d903d1535e25cbf74da3a12ba2f13c33a8562e0" + "db03edce791f1d39af8850fd1feff0eb25f9ad0a86dfab627b96e65831bffc5f6d9693d2" + "0493bc9dd6eb3e9325dea50b055768e8aa30d49c", + "0b9f8f3e89e9c1ef835390612bfe26d714e878c1c864f0a50190e5d2281081c5083923b", + "040542ea231974c079be966cf320073b0c045a2181698ae0d36a90f206ce37fa10fb9051" + "8607e6eccfe1303e218b26a9f008b8b7d0c755b3c6e0892a5f572cdc16897dcf18433f9a" + "10", + "31789e96e2ae53de7a7dbc3e46e9252015306d88af6bd62508554f89bb390a78fdbaf6b", + "0fba3bd1953a9c4cf7ce37b0cd32c0f4da0396c9f347ee2dba18d636f5c3ab058907e3e", + "15d1c9f7302731f8fcdc363ed2285be492cc03dd642335139ba71fbf962991bc7e45369"}, + {NID_sect283r1, NID_sha384, + "fdb93afd5dd1e3eaf72c7ea9a6cddb07fc2054499ffe152cb2870163eee71ace5bd420b8" + "98cb4fa80ea53fbbaece2a1eef6427b632320e9c97e38acb16b62fdbf6585b54fabf0a70" + "3307ca50f86387bed1815a05b0c8991e0743d10cdf49c8facfd7ddeb8d4a7b706b5a29e1" + "d00ac88b0ee88b3153185495ac8388cc70104154", + "3a30a1c15b9ed71e102341f97c223a9b5ea3e6a335861c3cf407ef691a18cc639dbe74c", + "04040937b263c87461eb5d409008255d4e14c54d7a86d6e3eaf2ad9c559f7a6b9d258254" + "2b07562e3a04f22ad37a1df0250215c163b45a6bd04a4b96c30fe2e2b7ded5486b172ef0" + "9d", + "13e745c76b33e6e91f47f8423653b0056014841f4df890121655ac2044f3a6d58b9e213", + "22467497bf1b5d29476f24aaf5f88d905be7900406c64033913fc88601c62063a924456", + "19cb024c7d6be51d15337a207e66fb0e473956932faf6d755393dd5a899bf63610ff887"}, + {NID_sect283r1, NID_sha384, + "c78e35d1a5b1bbb0ec21e7ba7b7c74c859d88f3e100e40ae34128cf093885dae4e87cd09" + "f3239dd8e79e25305220880dd352a650225d9bd193b9b84e488c458b0b5fde1af941c0c9" + "fdf952d2fa41f665918dccae27ab7923da4710f8c27ac8ed424992568dd6f0a6c3ecead2" + "1650ed162e0292104eef3c2d8551be866a88d279", + "083330123cc64c11888c1fd388629d0b329a50ef31a476b909a182c930ff02d0c389b93", + "0402e3a3e712676bede22893a8911ad6a683306e86487d24585bd6fe4f2657281f0bae2d" + "c80773889a95e9bd579be379fbf84dc8d26d47335253356e5b01c09eb8ed57474d6c0b04" + "91", + "0d630f20623e93c274239200393cc552d03da6bb9e74f4a44a518e2642e84e761dff7a9", + "27b8997fb98ad04488f5dc8ae5dc88b2a3231fca76d7320550c74cc540110c0cee5d8fc", + "1824f1050e85d527847faff236b7195965e7b93343ebac889b23425dc27226d50a5266c"}, + {NID_sect283r1, NID_sha384, + "e05435f695997229cce314e50065f3c5f71981988dddccaae6efb81f936b22cb48813f50" + "6d1edf5ebd69b0be34f278592c5935f0f6db0cca1ef9d62834fbf3c4c03f4da0596cb4d6" + "7b7b767e85dde7b7c6fbef7d89babe6f97b876b33594a9e36ab87079861ee556fb03274a" + "d4af527342a4794192b8933f28c6220f954c77de", + "1dc2b656c207eabc9e0d6272099babca8d149c9c4258b779c2f06de75f76d77505271c0", + "0402b03407b65809825a32ab50f1b556a65c3bbbd65cfcec898514637ce606182517fa1a" + "4d021c97e293ec74dee17c89b962356b7bd50c7b23fcc30ec7fdd0a629d11373e28380a8" + "c8", + "2d0dc9317a2af5a7d0a23c00d126b7fae4c06bda0a5c50462ba26bddf575adb091d0e50", + "211c396875b5dc71ba87ff2483b0ffbff60cc3656132fda7422a81964f1bfbcb5ecca23", + "0a0ed7bf1ca853b9b19924c706eff373b97585b692b4b535ad71cc4362073caf8f61a3f"}, + {NID_sect283r1, NID_sha384, + "0f9f36477076c4b5a7d1ceb314a397fb14646695b0803e36e98908c8a978770269f165a1" + "fed8f4b655d4efd6ad283d7f5d51b6e1e302d360e8ebf4e887c7523a757ffd55384e114b" + "bfc6b7a0ec8511079507b919065ca018573418f9e394854c5704227772161707b4d0246e" + "bceb91192f0eb2ea994ce61fd98a6d14cc8246c5", + "0081772348ff2d7a3fd57fe703555ab2e14f5d203c4cf0292f944e827e884d95f3b1d83", + "0403f7174e88ffa8bc0a770fffa4bc30a436fce331dbe7154f6e2fc0cdd09e76840f089b" + "3f0561e6aa3feffb2033ea716ae94b9a7402bccfed1fc4a137cb96fcdfe4685314f73a8b" + "b5", + "3a8c40754ef7ddd0e289b2cdac5e06c72dc3d6ae9d0351d9295aedfd6f0e88809674bae", + "1443b46c0e6bce31642dcf3037e25b6ba2b42daa9a83f5c0bbfb2487ce717c37b91f46b", + "3f59d5a925fe19c795b4992c265a3c61b2452237eb34efb9aba30208ce07d1ad47e2279"}, + {NID_sect283r1, NID_sha384, + "1d38b1c342b6611dbaf412a66c1c0b8397692755f576df33b31c2bd12b7f0707cc423376" + "391f7b00aa4e7b7fe54532e2b39c3c5284b9c8ccce48eaf9308ed338992f1d4ecde6cbe3" + "52e46339d7d602942158387881d9b493fd40cc59d4f9b53ee4191d42352c6f7bf32c331f" + "0c5afbd44a92901a4b713c7cf6ccddf7de4cc6e4", + "1eb6bf2ca1b5ffe6f6a795733eaeed12de6e87c53571e702635b9dbd0d96b47df4a005b", + "0400e64dbc1a08acf6ff0e820593cad79a46e3bd818ddef5ca0960fde799abacc7b840ed" + "db06115d3de2bdd011ad053550471368581a5f125eb0d32090646fe4407980a42988e551" + "aa", + "3b28fc6d0e4a7fc449b811b78900fb9f89885f4d4f70cb5a2b3d4f8ab87bd5448f4bfd2", + "2601923909c8c953087b0c0acda57d8c01f814dc9722171d8409d0acd2fa4d9c1314693", + "3eb316cacba93bd473a4b4acae4f2b5a5b2ac9856519032e63a0c718698956e8f35673b"}, + {NID_sect283r1, NID_sha384, + "3353ad05ef90e9762bcfedd6ef44a1e8ea0392ebef30cffd48ae620f3e567e1cd44882d5" + "14e7c6759200d4bcab18afd3038c3d3f8c50f7bba32a04eee5a4b1cfb8c349939e4efe0a" + "46fd047d02ed000d8fa1b98b0af5586f120d9ad174b3aea33905b979ece1eb3660b1e070" + "c8821b32df41904ad68bbd8ed247aabd94066f16", + "3b2a3e65e5a306bf8e3955b60e856dfa9bf68c1275a678ca056207a0ec67c96eb3f8309", + "0402c542cef892b06372af7d9c321ed5309995c1cbbf1a466e70bd30f3856ab7c5d18f4e" + "3d02a8acdc12a7cc0b54f4dec9cf61c484a5cf86c4cf6cb5ed615479123ef1c6ecbb6c7a" + "e4", + "09bb5e49188621466440a0841b007525000c2203d9821f4c6afab63ac2b97cb5e2e3dcf", + "00a09da1c4bedff47945898f4f4ee9a0857bb56be535544aff9d729ae44e23d678fc71f", + "2390be08ba0861b32ca35ba27a0c8dd1a4e96d28cb007133a096b52afa0126bf2a2abee"}, + {NID_sect283r1, NID_sha384, + "e7ec162185fe9a5803c6b03d98041422315ccdac67e48fbd07a1ef3c5661158710abc679" + "1bd0a75d56791b4ac0e7695d53c5989d9fa6a3b037583b2a80d2b154b024f1c36b63548b" + "e9afe1d51f2f68b2ba94d4ca1e69a35ac10e15ba72242aac20f7526b12ff9d3cde9a9bfd" + "70d55adf9bd92c66d092d7d08e9764c84bf7f329", + "1fd4d1af0bb7c79ed5fea7bb45574e46534387bd916649485ef15207352d7302e81dc01", + "04077057d3f93011440a78718a3cfded73e4196e7fde96e794465c51be8b679f912c10ed" + "cf059873441c590c43e0f00f80afad5b0166f94b62214ea45da29174874e44356b29eda6" + "b9", + "3f224b35737e78ec5bc9b081a601d8fe19e33b4787449d3353d2ad225358211cf9f7f0c", + "1a7bfe92c30ed1af478282786bdf7b5b89cd0fdba5e534bdf13899dab5af108803d73f6", + "2ba14810de4f5cf48b56e94bd6c439d230dfced3cb698c77627f59faff0ac5a42c43067"}, + {NID_sect283r1, NID_sha384, + "87c8f2e3f4fdebce0ca9300fc1ebcaa934f51a12b6b8f2cb6bb6eb77965468663044afeb" + "2a1334cb5a81e74b8427267f8b34b5e9ff0cf157a9f18be2b1942e32ca61dc23ea13c3f9" + "fcfa16df8fe05e067938b6994982676463fb12842d4ec532cb904cf222aa805dd0d86ab9" + "a33a83e294c6d81e8dfa273835e62e9041dc8ff6", + "20380b1136b5283e9b7f54b7535ebda33b129ceb177bf5d3d07b1daed5edd9fb3862530", + "0405e7d0931db006c6abe04671d1aede760f2b1ac5c866570f8e5a24ed356fdab49cc5cd" + "ea07004920fdb0a744cc545068bf82bc5d7a46edf9265fd7c5979b9559f5421c9a98f6db" + "89", + "3cfbb1204caf6011fceb8d4be987d9a41b81bcdd95b94919b220647d0e7a18feef4cd01", + "07096beda28c20d2e62d9b0750142d3d21b54c38c7fad1ed65e4f9b386f3dcfcc43a3c2", + "3d0af02aa39e329e4c39f2a1d6797f0e3d14554dedbcab9abbd158273a3c7116225abab"}, + {NID_sect283r1, NID_sha384, + "2ac53e8a50c4afe3b38904255b7cbf150c5f79dc15932dc0ac9aa631521f68a0d4b6bc5a" + "04d55c99a36531fd4886a23a8d99f262ecd2a9feea925d7a96ebe9b6979a207b7f9378af" + "be404fc8e959b0333572a2c911f8743c0ba64eebc7ef12fe5435d2cb0e5091ae518b6e42" + "33489efe3c16c6f21abf4e2c6808b733914e5a7d", + "19f815b98836948e0a0dc9c30828c31b13e175f1e79f23d084ae1bbe64823f4866214b5", + "0405109d8ce934972f5520101730d0a14b99213ea17772e3e7637d622a5de13fd2ffe3bf" + "fa0502927e0c7baedc4bb3ed2bd1b15fd2d06dd43424393b246dd530d5d8598b56dfcb3c" + "b7", + "10359d5cd8a9b7532c9902bbf1cb83d0d34bf37e73e7c0f5729b62a10bd4d8faa0f53a3", + "3503410a6feec71fde2feb14375d50f99ff9a2c8bef47e676bcc6c3045efa9948891ab4", + "159b1f65fd566ecfdc08b87e4ecf99ceea3088a750e2c3c9d868bb432de6a61f289d06f"}, + {NID_sect283r1, NID_sha384, + "0b201469cac4c078f587edecdcdb6efd5752cb4a3f43ab540463c4d908c27527aa3592f2" + "f9acad85dd94a3c056bd28618317ebdf2e7dd6c5ad26fa3c31dd8e5c50c60418d91c93bc" + "bb59ec1adb1db791f485ded78a5cdcddd23dd1cfa4f13443468d8a5f2d648059b9c4470d" + "0f4fe7733d56a28a2c24456b6923703ef32cf0b8", + "01854e954654e726cf4bebc0e5a840e8809fd716059211c6ffeaed36829808363164684", + "0407a6e7c542860e815d3fa24fbaf99989e8b9c812b08399056ae4f9a850a6711a7385b6" + "2200dde6bff33891a64744dce6456600f5a6a11049906608e77f8afc38b922972c805af2" + "58", + "2c9cfd376903122625c7fdca50e93d4c216f0c7d07f33b3b51e54e666e13b67dc89d290", + "18321f9ee35d47648060213df1275ae89c2ec7d17abe8093d8a431ced23aa61d3f8df4f", + "09e5a05a62b006a7787c97be38df6fb9fbc1433aa2241b5a788fa727229a18e07d7a8aa"}, + {NID_sect283r1, NID_sha384, + "fc5e4dddf4c4a328b685035ee79069770fbebcc56c14e31afb4bbcdd5220e025f31eba79" + "4fd6c05e64f19678dab33ce4f084bc32790392f14bf35669d75b6466b4214ec30d58ca90" + "ae285c9058f5804a1fc9d7a995958f2a0e84ee52e8a78b601bec04ab607ffc2091749cc5" + "48c6754ed14e2e5f92315bdacaa7a12823ef76bf", + "3548f8020819588b3202f4c1ac62eaec6a47c2a19b2900c5a3cf5b4ba5804231141c647", + "04038563f2482a399bf1c13f42f8b85ef64a3599c22da9688b97530718bfefdabca3ae86" + "3705c4aabf6d8a90af345008d5a244d0671cbe1afd08000c4eb37702a9bcba6dbc058ba6" + "da", + "32649876d776117003305f0ec9cdab5cd84bbdc747d3dad5d8d54a8fdc84d519d50df45", + "1f5160851981772c502088eef209f7f89a7c8ab35e630d16330bec7723e398fb37c84b1", + "073a7333a7037e1257d4d70be87c30bef770f9d728dd7e2615d47b399ec650aedc867c4"}, + {NID_sect283r1, NID_sha384, + "284cad790e6207e451a6a469cee3befc3ec43e047cf91b9dff1485718aa29de36a43f7c5" + "1eacd8589f0c3a96ec18e8ccfa92941b50b2132e3612d5b45e16f60d411d1c53e373e1ba" + "451352e28970ada9dcb9802102518a385dc571dcf6900971b00346098a58042e0d1d129b" + "d6801fa640a895a458a45b31318fe63ebb30c6e3", + "3cc4505005c41142308f1489226b7b542e2e7f24f1d3089ff6b92a4b0013f490ad52e60", + "040280b77ddc6648d9cc3f5557d406ea2a089c8179d4320781b2eb76ab07fcafd2535b91" + "de005f23bf4171aabbf0fd50049aa017c0dae70b065964c685bc03b958cee2fc3249149d" + "31", + "2ef488215648524f6caf85233736eddcd9d1d838c6a2799c3a68580492d40f9800bd119", + "3e8e13db22c97281307edd4037f0a75d2c70a070614e94e02c860f36a53aa738fa0db2f", + "356f2651b51a6be0c697300a8c2641bfaa1795397eac208385c3729248e36baefc173ae"}, + {NID_sect283r1, NID_sha384, + "6d46e57abea9d115deda48b69fe8e0b36144df2f6a659509ce1b514c8cc4769d46e5f71d" + "f2a084f1db4a22fdd3ef0c2f90394f2898ce291b9f279c0664aa01419f5f6bee1fc12998" + "71b27ecd57a5ac548f99d01871b8c238a6b46044c953b2e78e22346a0c7663af4db62799" + "038ffb5c21ee512e26d01e70a4ed967377ab8405", + "144a2fc8e0aa63506e14e4307df36416f963dd9da78655832f5b991af8c3eb97df78efc", + "0403fe8867b560bfb21dda517b8f4d50578a11e1d0ab7ed4ab3796580d31bdf710e8e222" + "8405a302baa3795e2d132c55d90858d14d4b17aea0ab70632b135f94bb23112d163357f8" + "ca", + "0b5225132f19419715170f5a3f26919b4127a05b4f0406f895af1e4bba95786daf95259", + "0651d17b00ed9a06bfc6a913883b5cdf51bd5f2dd22307cc5ad3bb545f623516232bb6e", + "01128d4784fc0fc050af0b97f859616d764b22f40734ba65aa15e2cf80e7bba3d15f42f"}, + {NID_sect283r1, NID_sha384, + "dd750b39bd8753f4e473c4484e2b36ce2da7576813ebe05861c339ffae1d029bc793173e" + "d394091c00685ad82f0550cb21ed1c68f0c27cb7396922239cfb886647af204e88a9101b" + "7453a8ab662e270b87a8a13f2fe61d695597382cabeb781933bebfd7d0dcd33f77266e43" + "e32d937f2dc89f67525e522977ce73e9ad36c8e1", + "24ffeaf139043ff25a395e4c560c7680c1c2155191378917eb25194136b4a69597dc277", + "0400402bf61c0e36385e5fa8371a553ed8652466fdc3ed9d4a3ce1bcc567d1f451f6703d" + "d104dbea6f67e1117116f30fe42e84383768b0da770f8a2b4cd8a4fec330a0034554a138" + "08", + "3e4e78f012eaf1778c086a3bbd9e996da0ddde651236ebdb6348062f56b36f63a901561", + "1e2312720f6fbf44d7a6449a7f30019c38e69f2e6424d4bd1054f40798e9fe58d080b86", + "379d1b610a976730dfdf3300280f1c61109ad13c788e8f8f9a8d5e0130ca9482ee417da"}, + {NID_sect283r1, NID_sha512, + "4736e59fe5812f63737eed57a570182c065538abd9fb0a1c9c2059199e7052ba57d84b5f" + "a1cda2ad9f216610361ce1dfb9334816b6bea509283756a03aaae2e5b0597f492d078b6b" + "015a40c9785dcc5d2ae266176980db04f5cffef40e16661a50ef871c5f531d73fd5d114f" + "a19bae9dd2da4267a131fc31849da38c2b78d1af", + "1d1f2e0f044a416e1087d645f60c53cb67be2efe7944b29ac832142f13d39b08ac52931", + "04010b2d7b00182ee9666a6a2bf039c4358683f234ae41a9e5485fd6594e3daa880c0dfe" + "0f00a419b2f40e573dc2dae4b22e6f56e842e50d631b6126153178585bd05a8b9e6e87e4" + "c8", + "3e4d36b479773e7a01e57c88306404a46b6e62bf494b0966b4ed57e8a16169b9a1bbfe3", + "30513169c8874141cdf05a51f20273ac6b55fe12fa345609a2fede6acbeb110f98471af", + "33fd50b214f402deed1e20bd22eba71b156305e4f5a41ab9374b481ee344ab3f27f4bcd"}, + {NID_sect283r1, NID_sha512, + "e573fa7d4bf5a5601e320130de91f4ad87eb7ca6b8998488afcef69c215b0cccd221b8b6" + "6eb0af9d699af9ad6c4b4a580e82941f31e4c0a9bd83995dd076c5ac9bebb34481061e7c" + "b1b26f6e8c6b26ee4bdf9887f7ae2eb9fad3115a21dcc96acce85d23a040c0ebbe0a56e7" + "5714dbfa803d6e279b2f4280bcb993f96ba321e1", + "1337362609df74d25f7adee382225e6a04dd6ee4c6b45fa31499ce9edb0ec046325caf9", + "040287b288ce6f65fed9f95c99fa4b8c1aaf6de65ca563df30ac67c1066d2ba2f5a554e0" + "9c025567fe183dd400d256c333da92dda2e364afe84492ede9fa0e913ca7f12069b5a44b" + "48", + "31b84ec438302155f2e84dd118c0d8479267f8d19c8c5d96d21177e20b23e0180dd6d33", + "08133e49644044bf9ba3b4c8bdc3973647d650c58fae4a7ea5a5fffabafed56e759010a", + "1d8cc410cd04b188418b20cebc8f66ab0dc29a42f9067aa2926dbadee39abce79deb396"}, + {NID_sect283r1, NID_sha512, + "7862864d0d78b44e2a28af44a0a16d8e9b1b8c4b794db0410c0a863ba011018ef43e1e11" + "f2fcda2f56fdb2a69cc817df425c9cb3b458922ba00d710190cae16d61af3c304a42fbb3" + "d0c4a74a297253fccd70aca414865b41f68b01c561be281265fa89f63f975d3101334886" + "e85929a5a47fa8dc459b663548faf8ed7484958d", + "1be00aa0afdfe92e24a2536594d4b41701ad4dfb223aab35ff49310bdba7566057fe8ac", + "04013583d8cd163fdef7c11e91f36c1d3eb2f7957d219244db883708a7c5777611b00668" + "1207a1f4df45073b838277d8da7daa7147b0f10aa98b5ec02fbbf97c89ee17f3a7ab4f3f" + "27", + "26b42f369ff9b2740147914a2698cf1ec9bab44caa3b5f05957ceb9a32073729aef0fc3", + "37640dcfa11483b3754ea027f5f239500894dda4f4c8308f0623db256eba2113c41ae61", + "2096767a1f8210b175334fad61b4c7fb4e2d6c7811b5d22521af7750f101077e2fd4e44"}, + {NID_sect283r1, NID_sha512, + "e73c96d1a84cf7cc96065b3c6a45db9531cd86a397e434072a38d5eeb9a90f62bf5d20ba" + "e22b926cfe967647d2bbb5dd1f59d6d58183f2cf8d06f4ac002ead026409ca6a1f868b40" + "6c84ff8887d737f65f9664f94801b2cd1f11aec336c0dbd4ec236d1cc4fc257489dc9709" + "dfa64eae3653ac66ab32344936c03eeb06d5852d", + "12ad0aa248db4fbc649f503e93f86104cb705d88c58e01d3ae0099590a69aa006aa7efb", + "04008d262f57f9528d55cc03c10bd63ded536bee9ecc617221d9892ae1a75b7cdee175cb" + "330754e40e8823e89fe23dd2748fb74e9e93c3b33f188f80377a32bc66f6a92da1804c04" + "cd", + "2405a351a3bf9a6dd548e8477452c4d9d719e32762754cd807a90abddd3ad380e197137", + "28c5d807ea1c3ddb7f2c90f3af644c5d6a2757336ae46c2c148752a2fc150e8183cfd83", + "397c8c52fd67b99792229194a787518db5be8e8c291b1a30e105b00f108ce41f8ec8fa9"}, + {NID_sect283r1, NID_sha512, + "a73fb0aaec838d011110d49c5e94395ce07408917bacf7689d2cfe0948c582214b263c6b" + "80e0a55f1e159086817605723740569eeaa1bae96b979679165c5c35ef2142525e943e59" + "5e6b4b160acd7ebe41de19775346363f779b1f80b6d5f0785b92a648028e456af8496102" + "d19dc6526247a654bdae3368f075fa9ee92b2f4a", + "2cfbb8f340cae8e2e2322829148981cd9e509b0c65497fd8d9da5dee9dcfd39b0f7556c", + "040260bb17da74429f049f3a7eb73fea9cbeb5b14ce553d7772a365376d0114ed2ef3087" + "d005889e41bca54c09be20dd406a6e1f11f9d31d720e0c4e2e88f381ba89a97f12fa9faf" + "f0", + "3fd7cb455cd97f7f9cb888444f39569114589612b108657ac59178ffe31a33569c9f0bb", + "048a10915fd3bf9ffab1cb13632359466ccc539128cd98c6273d5d8d26c64d57520394a", + "2d0f67f9baffbb34094c5fce36f47cb73a537ff984c89e38d073678c21148056bdd6893"}, + {NID_sect283r1, NID_sha512, + "eda775984c7c9f7db47af30dab314d070fb77e9b623baa6b73e2cbda800f167b20fdc2e7" + "219391efacf908f4ceed9b9b6bd3541b52ea087177e18c97391214758cf6455311fad336" + "ab56cfdce57a18add8cf85b0a0bd6fa7297dbaa34bfc8585b0f06a0aae055186658c227e" + "19cddb65de88d260f09f805c2e8854dcc524189d", + "070e82a1f3fa6158d15b7346dd56150faee5c98c9d07c996e01a06dc9b211b12ff62d60", + "0403d3ca5fe316a0820e84a8bb5d231bb14c810a87c7392d7f960e7cecacc56c337f88b0" + "ea027ac0ded5633a98ec5734db9de1399c83a181d522037266d856c83e5c8047c4eff2c4" + "e3", + "311b23487750c3c4b23b28424c33328c39d6f594d2a9b459a883508b985d8aca039a2b5", + "1465736c3c9e30e895b1544690e05108ca221cf2352ee4af1b5ee4130029a82b277b076", + "2819b94dca3a58cc5a96790871640fe0fae38883de6fb4712126c1c1cbfcb0c005c5af0"}, + {NID_sect283r1, NID_sha512, + "a4a13e0bfa761b9bf37fade6570d41c161e20558874911ff3bee38e5649849b159beccf3" + "21c6bc7243f99c01a2fadbab9e157e9952ca65d8ea676c74fdc976d00501c626b8465c6c" + "f0e4fd1a7d1260aea987161b821528b0b423e62ecc5193a0a49442b0c3e4ec9c4786a3a8" + "6b199c07dd3a17033d430d2c83c100f54e0a7c31", + "0b471bbc5f7a07996e370da4a09e71e2119ab3a562a273f079401951fbe4df39a4493da", + "040333e9d5e077bc64d022e49d5d207385a19282aff1b73b307523b0f861b4ce4219308c" + "8205414e431f3b90a2d4a454d073cdd81f8b224180ac4139104166ec33ab33d079dd147e" + "bf", + "3e431c39ef6f4b7674a1bf414460b58998ed7aa5b1af7ddab746cbcd2ed9f42ae3827d8", + "151df78c0f453d396d71528032933566e176eb7f6910fa9df2e9b2f5ebb6038777ef209", + "08a1c4a1e21cc63fc15a78f0a11a1bc7a59a5a31f57091a12896fa670dfdc05c04053b7"}, + {NID_sect283r1, NID_sha512, + "7ceda7a7248640f7055309ae712c19d741375d6a7e0608e07f0135bb830dc3e8863ee9e7" + "a75331a5e1bd38c42cdd484d4f45a26c2c1d4e05ce0d0ca941f4e94ecc6b371102f31633" + "629e9861de558bcb6407d66eb91f1062ac0e0409db68b9f2855296a7f42fc92359a7dae1" + "6c73fd2dddea52bd866a4d501aedd8fe3b3ea733", + "3c65cf80bfb507dff52f9bf2f93df0642020d41619b3990009409e7210fd7130ac44ffe", + "0403beb5b9b8785c5601093086b709c0a05955be42eca3d217e625349e5a875efa82d75e" + "d4007cd4e64475d628e6f562f0ac9c3f91075626063a52c2b621796e557799ab2f1ebf8d" + "bb", + "16212ce91eed7153fef806d2561912be1d988410641d5eb72d586cd4e6782deae4538a0", + "26ea04dded2cbeca81e75503932982c7fb5cc7d38a45a3fff8c4ed7f844dc759d8da302", + "061d3756e3da1c7816f0d72a8c84dd1f3b93624b631f5051c801af4e472fcf82d896c18"}, + {NID_sect283r1, NID_sha512, + "609815edfd58c0e26a4b06dded831d2f33466a130754b96d8d7c3b4d99fd4b0789ec719b" + "c25338d0ae8c5880560c02687d352d77c291e406eae865c3b26d00f2e63dc644ce7e01d6" + "e96ceeac8bc1eeb257d36cbb25d89b5fff6e30b6051506a0ae54cfaf6214f30985d54cab" + "78f708029c1fc0175bc58e888db89dea8d300abc", + "0f4d33a9c7e6744ab3c441828bf0f1866ae1c042cc54abc754e3801263a96cbb3955dfc", + "0404b925b97bbe67adbb6e918acbcae0ced8dcf11d012e1a97875b750bbb7d01945bd64d" + "f304591cc9caabc0db8fe9047e6b1f8d850ac4389fe67bb84f6846b631dc3524c8dbe6a0" + "6d", + "0483aefcad5e382351125b333dcede8ef50914b1d1f1843b075f242acba18c290c742cb", + "1fb791c288e2cd52d3837c56b02fc99f53a6ee27ad6dd9c0a31ca08d8fa64eefccc5c87", + "0a041ca35422d8985c1c706dcb0b8ece64b65285bd0a934cdb41fc08223885147281869"}, + {NID_sect283r1, NID_sha512, + "82d8ebba707b72655497320200ce719520c1ae7f46f38122958fd99322c25c9f4d4344bc" + "b77a6658df0eece5df163412ecdca58475d56b0c2d14a0361e4cef458df146925d473a43" + "692b15e9bbec550f1bde3444f2a5b2ecb55d2abd273ae999f16a32333529d94455e485ca" + "4585e6b07bedbfc2bd1eb766abf0d28bdb1ae6ec", + "3a4824bdcea6a144d85f1b194431724cc49849b6cb949b4766d641ae95477d1ec3d1464", + "0402c9eb36eca01dc2fe921933f4cebe8046b3679abed80d2f8fbcf8f254bf17be3d551a" + "56034c836aa4e946425fc9f49f3f62e33d8a0afd320292a34d0ef8bde8ad79a10e3f95f2" + "f1", + "23d8725af57d835018e8737fb4e8b2eed3ec5a83fda137c710fc1df875416ff82fba90a", + "0d9f57ba8b6a9a1cbba67adfbb938211ed2d267468f79ad39ea1eca7271d135bb67c18c", + "0f09a600d97c69ab521bd1ed6bcf0c0f69255c334e0aea06c68bba81d53e810cc553c9d"}, + {NID_sect283r1, NID_sha512, + "9c6fce18a6a96349b10c9f2f5f1505c8ab727a650b44bc0782a5f39fcb48b45fc7c1b821" + "80d5f229b8abfc807071f931d333d265fc940c93fae7520d8d40ef59d7c6e3678c6a2ecd" + "e52b6a8827b1ffc6ed269cb9832feb20e593a7e3d4708309342875199eb2ffceba7ecd70" + "7b122516c815e83e27872eda812e3ea52ee3c4a8", + "27ba543ea785df1d53d4ae4c1bd0a3a994cddf0c25d2b4e8ff17ea7aa00619e858da1a5", + "0407d375a9e78ccee85fd795e3fe6bc07f50af3456edda1ab00303f6de6b5b02fe09859c" + "63008d0d54ab9a239b5ff955452b32bfd2372fe095751bea4b56d52f79b4fda0fa635f57" + "f9", + "00ee7010af4a517502cc5d5433d98916f6750e8a9009ea04b8132268673d4a02a3e2031", + "3c147b66efa47a842eb90371eeae907f0c813ca0937e488da95ff8ee16d389f3ab902ff", + "01469d005eacd9ac84a140c93ed0aee09083a4822730a28df35058cad29267eacf03968"}, + {NID_sect283r1, NID_sha512, + "5eac15a64c7653d125605869012b8f036804817aedacbb5a5248a595ee0c12329f91e817" + "9c187192d3ed0d4ca2e202d8d4d9c93ad3f3ed931121c193af5b47a8a5dc39775b6c2d70" + "2708e5134f77a31bd62eaf87e39e6fd3f2b9f782c3057e162dd53b3addf92bf0ab99835c" + "7f6649abd1c5322a1ebb2ba313df9464a74c14d3", + "0708d0907d14dcd5f40e2903e1e90e48a0ffaa6d4d9b84ca14df4e985c294f74eb9f2d2", + "0406fb0fe1c3d5bfee5399c98518bc3ff135e0c351243fa0540717a9b1f7990eb8cf4359" + "7f05212fd4d6a50c08cd99ee5988103fa639b1123c878d416cc553639bdcee1f8e927bdc" + "8f", + "151465f40204d76f3bfc2e4052549869c19da82c678c332f536ef24567ea034358866c8", + "0803d3e8c876d46a9198f2f769faa76c4f66bc5ff4298b9640ccb8e67ff8d10f86342c4", + "00da3344354114d163d14d4c288785adbf9a8b31371c6e4420383c80ba0a430019c6acf"}, + {NID_sect283r1, NID_sha512, + "df735a7e60bc267b18f313ad56bff830be5ef119baf43ce27c6368ff1dd89f010afd4f48" + "740b11c12101c5903bfa71d6cb3d6462cf875bbd55a570ffedf3564088dfe8c8d3148231" + "b78b5adaa6c53696737d4704daa59eab8d986fc6e519e81540f201e77b923a6a4af65d71" + "73635b3b19b2023022186a7b8e869e1ed51717ab", + "21fb0a6b94080da8b8299b87457dc09d21bc430ba5f3359d92aacc1151be9941739567e", + "040179831c55ead3d11844fea2e18d25cd4d658822e626550aef1afe37d88aadbcc9bfd6" + "66075f8087d759ede340157667c1bb12be272b8318aedf2e8f8b487f4bcd12a50ca66f92" + "81", + "37833e9aab843a6b967264fdb705b419ed63fbb09c12170491019acc7c21b9ee28a00ba", + "1c9601440d109a3f4eb69a1a669bdaab9f4222a34a04ace8ae313b10bbb66811bea7d5b", + "3d2f9ad7595dcff69b65f035ce600f2667f8499d3bd25f789d3f3c1bf83d2855f68eafc"}, + {NID_sect283r1, NID_sha512, + "bb107b0eeaf175a786a61db923bc6d51dad5e922e85e57536118e032167b197b1a1f62d9" + "bbcde04922fde781665c1094181c16ac914cf6fbbfb27bb8346b2134f05c55a8c6b9b481" + "273758e380666d6e22c28577c29446cecc5c3df9ed9f1be060ca55ab2b7fda36a147aeb4" + "6df0275bb923e0876b703452fab42f6b7ad2ceb0", + "2c80151f91301fb6b0c7685bd172f20515b46bf94dbc4160d0720fbaedd40ec00084447", + "0404a62b0c9749ae9ff00dc1d50d2b4a4941741abfdf13c8e416549ea27fc26b14f191f2" + "4302c9cdab7c6512c322bd200167eb9657f8e8c84864b57480a80a3c6efbaa289ab8cbe4" + "d8", + "3df951f8c4490fc7c2d50a72a93e0e82c5a20be8d91afd890d6846bfd146169ab58b382", + "1f2accc7f7c4b5f877e12cc17b227e1ba110577c9f4e1785e6dacd8491bc6017129d798", + "27a167e6f2b43ce9663b810ed4f8ef15029fb6f2be2ddf25c014d844953f501d1dcf6d6"}, + {NID_sect283r1, NID_sha512, + "f47e49ae30b09b7666600b7a95e81b0afa1553da5e01fd917e4ce1b58dfaddb8dc8c03c0" + "f5591f533610deb6a7bb5faf5dd1ec4103a587a1a4c58a110a706b0f301a5c408b3d984c" + "210d5b4a0b347d2b5447271f25b527b3c7864f7cdfa735dfded47c63b723fa0f0413c57a" + "24ffde9a95c35f743f892ab1ed1df704cde82d9c", + "1538abd7ce8a6028d01604b1b87db3aaf720e04220edf4d1d28c2d731aa25f509e58f2f", + "0403076b5c3a12b8a2e1368c7e3458458dd7ba6c5a6dda8c82cc6b30d1ef767d36e01520" + "7f0369c7a80cf01e9f32c08f9924db08a7d0dfa5e9a8e0e29b57f5eea8506841e6e3da04" + "f0", + "3f0052ba6ae6bd7a7aeb077a764d21caced6b241f63616ae4e4f0d98d2bfc0e44dca592", + "01281bc0bd36ba1f3e1c262d98ddf4e9bf1d80dbf97db02089fdf1d2e625abb5733ec3d", + "076db2215d9f33054efb397c449f05db198d38a24749f046ee20032f5899dc142052e37"}, + {NID_sect409r1, NID_sha224, + "f2380acb0d869d1cf2e25a6bd46ebe49d1c9270624c5507be4299fe773749596d07d10f7" + "c2be1c0b27e86f27b4a6f8dff68cfe5c0b4c58dad1b4ebec7bd00ab195fdd635d9fa8a15" + "acf81816868d737b8922379648ed70022b98c388ede5355e4d50e6bc9ec57737d8843fab" + "da78054e92777c4b90466a5af35dd79e5d7a81ce", + "0beb0df3b0e05a4b5cf67abef2b1827f5f3ada4a0e6c3f23d698f15a3176cb40e85bf741" + "c9fbc78c9e207fa7302657527fd92fb", + "0401da1761981a65cb5c77ec50ebf7acc11eaf44bdd2f70242340ec26ffada7a4b5f661e" + "13d6e7ad341cd7dd1ca491cb7a0b580be3019ba11e4c4f2f5507d6bd2aa2f96b03510a03" + "d5f8c38bcc8acd08080d9effd1f8ae5a5586603b2e112964514c831bf786b2fcb2", + "091e575fc79444fd2d9021bc267a1a076438d73464726bd0fe4ac2884a374e71bd462b15" + "16b3e97c3202854bd0a286214b9e92c", + "057ab9d5cf4d18f05eaf17d3b5a4af96c3eda8ee48acf5e02eefdfe2f542cde32a37c04f" + "285794ddccbb14383a645db040bda81", + "05275de4157b32723366a0d63831e6512241e3e4416f3af02e22da8faeabbddd76116030" + "4927a71cfff4d6e8937347c9b78cd3b"}, + {NID_sect409r1, NID_sha224, + "22a97fc0a9694dabc6f274ab52eb592dbbe8beeb646ebe6cef60eff341a13017eef980ab" + "a6d24ab3afd976e2f6a84cf652654d4a54a36b2f2f62fab8858f8b0479a48fe9f47f8fd5" + "a4a1f3141a91cbca186507b2bbfef5e4c4d2df525f04ef7c4720fb443ccad540f03a2be4" + "68d88c9545d1dad579fd7cbcd103bbebc9e9f961", + "0504865a30984a9b273d1bc289d734d10e0aa56e93ab14720f1a42a27d8cc932cb8804b9" + "63175de6fe57d8eafa8ab7ea0592dfa", + "04002de5872c40a79d5238722fcb94d5158009e28fb41ea012e92028dc3c87855fba71f5" + "0e6d0dff709867de185f9a9671e7a91e2f00fbf607f69609ae96982bda3f0317fe46ad1e" + "0207030fdca702cd97fb5d5732f3abab24b10669875a64bd2a74c8603897c78d22", + "032d0f950d10d028db6e9115e9944e7c768e2da731df49dc9128bf145a747662de08cbe0" + "517fca6fa185abdfcc4e3ab604e196f", + "0e7d16daa689ddeb08074285f5293bd9f1c051ca5589e69e4b62c32af110b6f3981d9624" + "df15c7cac0ddd62aee9c41c7b6d690b", + "02f6bdcc551aef0e4e8da2df38288dcc29fe600de2f8b6cd8149f88146150790915148f0" + "69372151c3bdc4d719526eff252e610"}, + {NID_sect409r1, NID_sha224, + "af36c04af0e3fd64bf52dedf52fb788d2d1bd67fe05d98880cc7ad3c20436abf02f637fc" + "ec209fbf888903fdec8682717299f8a4386768153b7faeb6581db57fb9aaf4615b4ea8d9" + "24198fdd158363a1f40312527d6bd14c13d19985b668c6b88a7548104b1ff057d07082ee" + "a421f50062a315bc3866378f2d2d634f03fbc0cf", + "0cc08a4ea5ebe32027885a8c212870e7c45b6c610117994d6a42a284c05199414a3a0e8e" + "6645ac5c2ebf21c505a601f69c62b85", + "04009d2beb607f2bab64451327e1dc67f04f7569ffc0c67b410c6db06dc04edddb1362ce" + "8d8b8220be77c447640e7d0c676e5ad1d500ab813e800e75b6012faea43be56fe9d5a22c" + "d46fb1f4f1ba65eab19f75f2ce9d8187e4940fddc485c42cd18d40d47415a80b02", + "0cfcc307f847eb696f16af32502690711ffbaa2e60e75f80cbcf7704152d5eeb9ddeb701" + "952dd58fefb159926a83245fefa6196", + "068d1c646dca56393caf3239d9fb30d1dc56f991a8dfdbc0a7b69d273aec69a53056d955" + "3e105c7917e522ffe446cbea23227c8", + "01db30aceed2b126cf45163b9d878a6590e9ac8284a31ccb0faeba2202679f181eaebb66" + "4b5537f408b693800f24da590082dfe"}, + {NID_sect409r1, NID_sha224, + "6bd6f52a6204b60f37929aeff28c87ef61ddeecc231e52a7772275f9329add899c130956" + "f8c50ac2698aad3654fdb49b74a6427a62a11eca0a8ee8b719b8c0df7b9f0bb0af5fef49" + "18a8c83367d29fddd04b6a1ecad904471e5b59c8fe3cdb06b4f8f96419518dda960845d8" + "3c49a49f1b1f2fd1d2682a9d60c25fe3ce982cf7", + "07156ef0a74ee1119532a2a7e8c02be1559c3c21897af9d5b34553c3d0feca4a8d5929d1" + "945df824478e0c0b92a6fac8c84f639", + "04001df419310cf133408e9bdb32fd85f8f0950263e1886f2e2e108a596e7e76153ec47b" + "f9b33f69c1128dfbf52557f3c382de85f1016a15517a811c77cc67ec4fe2bcba1290e498" + "1880c071318aee28e30854692ed2d6bfb71e6e74fa97af750889ae8d010189733c", + "063f127c38160e85acdd4d5dee1db1c32cd9da6075b2d2f46b010636e374e0262a045339" + "4aaa8bbb5fe7b2dbcbcd62ad601cf51", + "0250cf50d52a5950999b9c0ddef219218f76dd9f22a2213def9ba98d258c2f8359d08d0e" + "fc208e23ea3614c9e27b2e4576b9c12", + "063479550873dea8a3ec0306ffa9252739c34c87bbac56d3d9138764347d5220bea9c27d" + "6a308dc2ec53724d6d3ac4862d1735a"}, + {NID_sect409r1, NID_sha224, + "0eb8de25f63abc9cba16823270e9b6f3fdedf0fb90f6652a34688970932e3ae98f6d3bf0" + "fefc5f247f72960a6975bff1f1acc2188a1775fe8974b2bb2b4c8d226ceb735113a14009" + "e8ce66d58808fada4e6f697fd016829913352c0f659b6be354a067df00cf74919580750a" + "a6064f21264d89dcb28b3b2d4d699115c36d1310", + "0a95c7abffa92e2c637611ccba66ff9d2ab121b40a85c5b71454cb0dca1f098ce1be8d9e" + "a4933d1a91bcd270c5a33687835d6e4", + "040048e6b8614c0c7156dc41884e17e36ef528a493c28c9e6275c3454d83beb939ccc749" + "52732c18424ba21b8ea9c528966c692141000ef9efe1145029d8d60d14dcf079d43e3cea" + "0e18010f680bddc2729ffbff9a981cef2cb595a69142b25a0a39863a929adb635a", + "0f43af45b0dd631bfe38d85979ff1612140b9cf80b4504857df17279d9d8ea12d5bcd292" + "0fcec81326f15832df6774b9c4bf5b9", + "099f403ced566fde4d9755258445b6d6c2a4e234f99425aaa78ef118321f8579fb513ccb" + "b71cc2732e31668a6a6bb0fdc7f4018", + "0d8568971a4f219d6d3d8bea6aecb4bf7de53886d2e6bbb0f71d054c63768c34d4d18830" + "00019c59168fbb32f4317330084f979"}, + {NID_sect409r1, NID_sha224, + "cad58ca7a3b9967dc0ab62a43037764f8074ef9177d60bd98f623d693333971c24a575ed" + "03cb61f4dc2e3d6285fb1204502a540f3c0bbbf23f5bbbd1544f322ce35d949d8b1d8ede" + "b82e90927ac67ad49c91007056bf5096bd690d15ac00e1874fe33293d8003a4a2b094078" + "cf09af799dde384143350c54a99e1f99cc31f2d1", + "02c438b07c6e0685d1f94a4bbafc013f8f21265d893f54e54c3ac2071606ad1ffacace0b" + "8367aad724b1d9508c65ce52282e397", + "0401fca66bdddefcc3c2072ea32f026c975a2c392dd7ed7e93e94a810e1125ec161bed69" + "8d8305830eb66fca5eeb71934ab3fd79b10189c22a2c9f1fd7624f805fdf4faeeb931709" + "d745a3feaa3cf04824f5fa58bbda144d4e96d83ce1e3282bd5fc9c50bcd68f5408", + "09230aa7b58505e2dc2f205b70a09cb9f4d8272f465b7380195ede0f7770af2a33f7623c" + "310a0520e7436835cfcaf32467f154e", + "013d0e70d8f4b1563efbd3c46feee15b88358562f769046f39df6d00477815e6b8763c02" + "3807eda87a86338c7b64214784fa2cb", + "0662f43fabd03a0c05ebba700203fa2188e16504f8655bfd0fd090b109e68220122dff7a" + "6cbb8bae08612e0d516e9f95ac15368"}, + {NID_sect409r1, NID_sha224, + "281ce2643799bbfacc7d5993683a4fa656040517854f3c2dc7c4f8848dc305382e34e894" + "d433caf12d8b493020a6a08d1fa05b08bf6c53127ad5f33bbe75b9db0615e3dd94408d02" + "8dcf3cb7598f6e7cb4c787681dabac7cba2cc06fccb7506fece6c7c1c1bf622d525ae973" + "7085ab4ac578905950002024f30159cf0d99f50c", + "09e8658f8f9e6cd98c0f4f0fd20d64d725653aeba339504def17f3ad12a63dc6157d8080" + "4e5f43f4ff48fc5573fde2c615ed31b", + "04015088531d914113a25f1598ba1d3cc611e27ea92ce8dc807fe8d446db14ef62ae2f06" + "c293bcdd739f916cfedfc481fd941b4feb00a9135dc1b0384e7169fb4648973559e50831" + "9235a3f41ba174d5f58307448671cf22a3649168495c36b0bced09ac6df98f14db", + "0d398fbed52228fe16d32a6ef539e4ee3858a1df327bec999ca25cdbc357de5a75903909" + "973bbb0a5d0269862a74623a38da515", + "0e38910abb3d84b2b26ed17d2124f4787dc5612942e98521d9f94baac3d14159eeef9e09" + "b9b20c807b479ba84640730a4ced4c8", + "0e370e575302ab0d8d08d5270fe89ba524b5bf21e43e70c4d335ec1525ff5696ced37f0d" + "e17e109fd833e5d179bcd4df42d7882"}, + {NID_sect409r1, NID_sha224, + "0c061da1a16f2be130ae3b20b89745e840bee09633fb49671db28ec9a051545f57ee07e2" + "410ae7ebc61c9af79868d3047705bfc64ac0c04ef0b286e579b650c7165443631e49e6a5" + "3c84cefa5625b1e1035a6ed89b8e839540040151132a937666524265e099272c1849f806" + "db0fdf2be64960d5b5853965099459968e5beb32", + "0c4c13f65eacce85a51881caa6f82d9e48ec2ac574947d2751823a7f072d38bd9da0cdf3" + "0b6f19084a6d291052e7bbc2e1349e1", + "0400af93430dd77e6016d1b076a52126a729f77e34bb3db11328d9edd56e29a7a09a7b6a" + "54f72076fcba886ea78ab6ad81de43a82101419e1bc339c03a8b4413ff009d76f9a19e20" + "1876ebbfbb3dc771b7df07bc19eb893ce23e40c679d7909c33af2bcd7d6306c0bc", + "0889be0918e7ef34d3ed226f967301a10fc30111b3559e37f5fa5a57dd5c73ff672c5279" + "d096c5b04c68b71d55e549d019281a5", + "0a4bddba9b7a402b584ceb82a54baab61e81973b7347e6dc9e3ce0f1e50dc21c9569d8ec" + "f8a7da97c38e92e52636eb13d3b4c02", + "063c7291656466f7bd647073a50f410a2cd9e8c938aa1fd3b28ddc1cbdd7b78b757689dd" + "661f5173f79896780ac3fdd4f3171ac"}, + {NID_sect409r1, NID_sha224, + "74ac2e1303297efc3ed8e624722df505df55b7f33964cc0d270604cc48b58205d8a11952" + "232a8feb0079baa30d7d33660268b56a5a3dd90105f0703abef8f6636a99bc63bd47d9df" + "100351bee32d8205dab0dbd2af36fd173409ff8d1fb7b24570f3c1e968458f58aea5aa2f" + "46731ee91ffd6d3a060af6b3d5020daf1362af3e", + "0da591461791ae7847e6d8dd8df46a63d3021644abe9520e158406c96540d8fd82ecfb1c" + "3f6f5cfd7688c7656cc3e3dc94e586e", + "0401f48c95301956c62e2fd931df49953519b88ec3915c8de495dcb4ccba97bee023b1a6" + "cd9a66dca29aeef8f4f1117eb954e47cdb010db6bf78cfeb92d29a922c4b05daa3cdff39" + "17ba6978fe738296956ed141c749a938ca9f8f13f711aec930e0f1948ce7daf9f6", + "00576a91862cd63acc067563626977fee6f074d5726cf4f68e80d25029d4b8efe5ea8457" + "45c45e4cd42879e52854c3f385a10b1", + "0806435400248ec38a6d362e8b2cafc3f3bd46ba5baf538cd97683f76a733ba2b4ca85fa" + "7d13b99f4076e7616e68d66f05ebd8b", + "00ecae395fb324b4366f238f0df22d011bde5db6b0cf4189e3ad47101067ba87336ca47d" + "637f09f7a40a1bc64de8c4aef7f497c"}, + {NID_sect409r1, NID_sha224, + "2afd17344552ccc577b0118caeb7dd56a0766e25f84df17c0505f9798931374b48df89a4" + "8c64e199108c36e00c0bf00a97ccde55787bb97c6765601765ab5417f3e75e35a9fe5e0f" + "85a721d9f08440ed617afcdc200b318940a1e496040a6ad9090476b0fb4fcceee77b3fea" + "11de09e7fb14853d1fff8ab12d66c101257e2d4f", + "0b5eb943f0dd390b737510e2bb703a67f2dd89dc9f6dca6790bc7a260cb2d0fb8e1a81ad" + "6009ed51010e7686d5b48233c6c1686", + "04001ac00da454bc329f7c13950c848392cb4f31594fb7837f0986f61601fe244eca3db6" + "c4f92accc2fbd1a4b8597b70e72d88b103009a364065a9f67a0aa7518b75a0b4a9140787" + "a67f852fa31342d6275c14713d484dec3116b9dbbb8af1d4945639997ded09cbc7", + "049176093dcde8549f95a8f1d1c87230046fd4b18a73243c3599815d4df8387a843bc8fe" + "1fd67f3c6bbe394547e11866f41acaf", + "09d7c4ddee55f61c5c4c2ac6efbba6164900344004976381c7b18c1de541a97cb58e14d1" + "4b6e433c4eb6d4bfe6d3e0a4e457469", + "0a9acf355bad544b3b120522365bcaa1e1dc6f1d3df1e30d3beb94f639e26147a81d154a" + "684bbafac965bc39974c505fd0f811d"}, + {NID_sect409r1, NID_sha224, + "174b2b083541f8284645a810801e72631a11bd7bb805f684a7159e055afc44357f2c80df" + "2b7853678d34a04144e0ede2327d03db6df23769ec41194a8d9d86af74d51c5bc11ea878" + "c6a80689af71d3fdaf1c651003385332a512e03dd040c33d9c328ca89ec7ee9026bbacf3" + "0a7f3a68e0d894fb9f7100ffbc64bf17679dedd1", + "09cc63f32152284fca27ab2837bf1343144336a1fdf15b9727c47e877ac69ac9cf4c97b4" + "bf42f1ab10d73de8597a554ed099efa", + "040044e655ad66ca9af330c33bc6d00ccbe4533a4c6a44a3f23c921b62eeec8cc1918e19" + "956f3ed848fed93a7fd7ddea57096d1f23003a71b221c85607821cd864af6f533f216b64" + "1ceae104b8e16dbfdfe7edcb2cf9ee0dc1679b696149ff42a051c51c861a3c7530", + "0db9bfe4c2e659006d31a7b44eb7bcd6dd23810f27c74dd587ab9af23aa5962dd18aef1e" + "95da4ebf4aabfd558cbf72d2951bd44", + "0c3b91bf0794eca7faf227c4ee4085eac6d6918803242bff4da9c5dbac2e23fc32a4d4a1" + "92d7737be22810812558f820b0a2c13", + "03120a558c0edb58ae7ba36e886084801e7604558238c85a199af6c9e7506ea4e748791b" + "04f3a92354a4f1407837d87faab66ad"}, + {NID_sect409r1, NID_sha224, + "758df71a952cdcffdc417b9fffdfb57582ab5c5473a8bdf0c2101953b023b77824263353" + "dea0e2ede1f800a5757ec6ac0e1e4e3ab5a4cd85567d2d19acc6b7069a6e7368401cba2b" + "6e642373654bec0ddd19fbf032794c15b7ef7e714e13e36875262c01e77766ed53cbcf73" + "5936dc9b33eaf2152a396349c82ca0297dbae4a5", + "09950355e8667bea8bbe3a2c4988436ab5394551b375e27fdc0c1a1d1b07ae957932f428" + "f1aca0a486e54cd0b5bb0a5c5650641", + "04002f623f81fb9a299b71ea8c58d5bd7d89e7be66ed8cfd7370de515eaceac903644383" + "38a3fcf9981f1b6f0b30bc61c4b7c15791016130b7c4061422d70b21251fa9c3d4e9636f" + "5a08cea794a0fddf74ff5ab1b750cce0f2768d54fb2fb75e2851c2296b39c0ddd2", + "038e8c70cd35591012f45f27980095c4bcbb3bd36bec594927968d3747618c7f5810ea9e" + "0a126e4d3e1e08185b031dbe0b37e5c", + "0cf957d59b03aed0e48189d2b9256b5472c8a48b4911f9cec14adce5c6b4aa22d093a116" + "364bcae01c1a739a4023da12a29c058", + "04cc2c22b243064758f52264ed84e757ff67c4f6596edcfe956b70f777d865d01e529f0a" + "8a9a6e1895168780ab60950a62d2d2c"}, + {NID_sect409r1, NID_sha224, + "b96d9f66b2000e9408d602096f032b112f0e05ea874229ab9daf6e05bee49b4722e4f2d8" + "bf2eeaab9dad94438c76b7cc64dcbb59cb4e03f9ac70487a1d24d8d6b72d7462fe738a17" + "edf381d52179b3acc0c0177c113eb4d10e8e78041deac1d56abda0ddf892edb8be956d28" + "5e7236bc6794168f8a180f622dd5f2b9e690c275", + "0a995493d6971c2d7e8fac3da9f8c0b5afd877cfb94924cfecc167f9d87002136ab253e3" + "a4f9ddf5c9c99bb1dc1af0c6a3a3c4c", + "0400ac0e558dbca0fa6f013b7282e02717e91eb73304b4f7ac5e04f12f55824c441faebe" + "5bb5af82189044827007bffb1e2655794101178bb726242c718b416b21cdc9fd90b31ba6" + "a8350f9b4ce3a188b1b5dffd0e8894ae6a417c4d74c920fda585624eed4c1d3f99", + "0d581293ab1e509baa50852bd3f21f6493cc524a2c16206e461e320c7f2c1c201b9d2a1d" + "d4207227592a6457670a67cb72eeb58", + "022624cbbae5214d2c29e273c334b9ea78e10c7efff3611574d5fdf6f67a81472b606e02" + "36aa47106097b9147fc1b56d062966e", + "08895d107ba789d88a17c30a537402591ed788206487697a72f69285ee5eb4f03cdad6c2" + "604e174ef4b9bb919d8b39bee6231c7"}, + {NID_sect409r1, NID_sha224, + "e7ae60ac55e6ba62a75d5328bbc15269d4638764169de0bf0df043d15f9152bed909b1fb" + "8c7a8d8e88ac4f552c1092b62db00958a3a827f64896f6de4bbd8fa5258d6c36e3904d82" + "d3eacf6eedba50b0242eb6b01212288448c3a9821c4fa493869c01149ff1850e8115cf9d" + "e1618cb8744626b1951d1de305745507c8b21045", + "070daf435cdc26ad66c3186267ad12d10f28d32d863f950cbfcf042fe9dfce553750ad09" + "8f82f7f1650c1126b3e4451bee6e11f", + "04019b41af3b557c274cf117d501ce7ccd04d8bff2dfc737d7efcd7888f2dda24737a678" + "8f16b3b6cd589d3f65bd95194799d65659011983077a2c371fcadbf47b10494f6ffc7ca8" + "873b3d812c45a87c48e1b49edacc0ac37e5038cf1aba20360b74c0903c23a62331", + "043fb8cb87591747d12f4897dfbbc79644b87907bdefdbd7ff0f6f2e7970c7d40bb2fc08" + "c17443d029a92487869f640607af460", + "05ea3493a8c04723de9de2cbd523481e3a8593ae8f010ecbd5add6db5a82d9b13ee7d24e" + "cb417419639d0e9f4e68d14f6799829", + "0a9bbaded0a2894e384184e166bc06e1b2fabdc70536caeb3d0cd46b955743cfa8ac6edd" + "03760d1b613fb445367734fa4270139"}, + {NID_sect409r1, NID_sha224, + "666b0dc2ddffaa7ffd57ea3b2768f02d4b77c16fa007c6d1918400d195f068cae2dcaa69" + "817e6e4c70d5b29c5598efe2d957bd12d0fafdcf5ac52dee80a2d46e77fc18cce2a49bfd" + "787ff77b942c753974d22434742bdb494590d17c42af725b1309e54566276af3bcfbf5e1" + "74d3cf191b85903faafa1583282c97e66c5da6c4", + "0f8121980dfbe9ad0bf92383c7cab95fb72d5caba96e1de7772c6a179e85414802fbb86d" + "725401451329287305570ec7fdd873a", + "0400c62f4e7eaf3f1bbae71734c86b8a40ed1297b9ba1151729f9363824425193e8605c2" + "bcd6094aecc9d7ef2a41aa6b12877291cd01882a45555b68596dbc8bb093dbf1aab9900c" + "f46653c58f5656f3688fbc72c5236297be2f0586a4031279b9014f2d3655adef41", + "0b4b5b19922bf6a34a00454374589f9c89745eb194b0352061a79401e23c0c0e1fecd759" + "7b5a7cc1c463b76cce7ab921867de00", + "0f1fcb80a4fb49348fb326e808d8ed8c21c376f0713429a22bfe16d68cab0295b21d4402" + "9083769761c4fb853662d440eba4cfa", + "0252a94a40008cc2c1a69113d8e14e989e7fe13918a2852de6930973a91784eb35e20d8a" + "e150a88c459167f8ece998cbf6c5eb7"}, + {NID_sect409r1, NID_sha256, + "3e967cbc2bd936e0b6125dc5cf885735bdcd2d95b2f764de6931c4578ac8e0e87abdf963" + "75481df67dbe1b6c43537e84ec62bfca6672cc5f3ea4125abd4a4119edffe04e42411d33" + "8e8b10abb1f1f818c50a9631a3f89feb5be5367bdcb0a8a82c96a427ba6ce99f9631d441" + "1a2b7f5b14d32cb3901dc9d285e4cf5508940942", + "047682b2e3bcb5800a531858e8137692a9b1ee98ea74e929ce4c919c26ae3b3f1d4122d0" + "7fd9a70d8315fab727ccb67004187a3", + "04017ffffc1d2009e844f8e625a3bf11749a8b4ea0b0fe3532d124112edddf72d518ef57" + "7f160962b88ee38b11445fdd356a26bcc500ca356fa8e90325aafb1826a694a55a80b2af" + "52e70ad8d507d48946392da8b9fa27b8ff6927fe5130c69809d9a2c4b1d7eff309", + "058edc8f3665ff9166af55e69aab9d468f576bcc8f652e950082a48224b4923cb9396ed4" + "ae06f05bcf7797352035484fdc501fe", + "09b46600fb3b8204d4cb63ddfaad1482dd8cf8652f63c926895b8b8ebfe27295c052b3bb" + "81dddd8687f4864f258a433010c89d0", + "0832f7674eea791b5f17db7cf9e2ab13253d870c6ab46ad01cdda30e78db8b8f51fd377d" + "d55ec7786ccc92b17364a3c17ad5be4"}, + {NID_sect409r1, NID_sha256, + "ca1c90012eba4e7c5f01d8cb3814c58f48c03a16be6ed86934014365eee547070b870d1d" + "26a872cfd28b60d9ee0a66dea223e9eaa90ee28076188d6091f26f665684f4b486af7066" + "9555db9058d485c677b2a34d4a98aa8d6f43bf6f44aff2a23c5d765e98f0438ab81be058" + "5a5be29daece5d4116f44ce6062753a3ddc505f3", + "040cd1a06233ac27f3ddd108de7c6c0982793ee620d71982697713be9fd5143658929924" + "cc88747a680779bb00da8a44e1e7d3f", + "040164e518a6719b1ad61a38a214ebb06dfb0553bc760799e668b1d0d098ae3f06dffd9b" + "84c16de90db19043d72bed2601fda14b1d018e022ceb850eb1db59e6cf63c4a7c73bea0b" + "70448a7dea77d5ee8a2e1a36cbc46454bacd5954792de82f3ec21ca6a509b0c7aa", + "04a936fccec003bd9e8eb45d27c0eaedbd452e6fe99abaa62cbd0739bcf259cfb6884d1e" + "60b82522c6146f081663f6f863576c9", + "0dec1635f2698d4666df2c217fbe3e644d27592c5607a5549c877257cba7bee29a8cac75" + "a044e72d039747d0d18de1c34acf072", + "0138493216ffc3b8aa2e0c26f4fafaccd6609e6b15f767da7c907db64b5181bfdb447d73" + "ede786144c70ddce7df7eff46dee4f2"}, + {NID_sect409r1, NID_sha256, + "a54c4351ebdb075d6a42a787647390f864b2bbfd8bb3d0e0ea9d767200fa344d1a9ff091" + "bddb186acd69bcaecd767068efe4d752d185bfe63f6674279d0e7192d2077c400bbc0d55" + "99ee28507c1253f05eae0687b965a015e1f3a292b4650106765266f5c95b77ad2d82a6a6" + "e012f233169eb6b8d83576901cfd4a927c54d7f4", + "01ca6f752aae4eb7fc9c73a08d6fbd96bfde5030d759a2507bd45b6e1d1487e53abbe98f" + "ad4f41976364e0a1d830910ccf97abc", + "0400f6b7220bd24652572b37a0ff25e75f72d583c71c159857482ca9944b956a117a6b2f" + "f96614898757b8a587e3c2b78d9943003d0118fe425768bbf3a4acade281c41c745c9ac9" + "46c2f8b95d65787fb6b64deb71e6b38fd8c721e01c87efc7c2a6d8066fe3b35a0c", + "04963aa161b5ffbe5d7e5058f0b1457ca1b9cd61d731a0470beefe5f8998904cf4594f98" + "dcb41283f66e2b07c5c5d6a6c587826", + "0abf824d43d993107b552d7ded13f49ea0ae7bb845e56ad7e53cc5f9d64f99f9f250e430" + "5ccd9f6594c92defa7f6860fab1c349", + "090a541f1844357f618e5ea34c0398ccbdab0cb363e266980ad304dfd675bc81c0345a4d" + "723fbcc76ab5ed4cb0ba0af1b71bcd9"}, + {NID_sect409r1, NID_sha256, + "6723dbddc8720feeb75e2a061b7fc49079f999fbc79ec8a8e01ab8d35b438b7049da5a23" + "c49a58101742791f84f45d5f5cf551cd7de6926a0e2c4ffa1e378f038da597368c62df8c" + "d8349bf046de46d02183dc05b3a3575f5f232dd2970057200e2c9cb60eaa6b4d72f8b73d" + "4d40b98d1cc801d1a69cb5ed780a75a4064623b2", + "0fb9b1a9597d216028902abf743d25944258b48c9762d4589fe660396130b75f6006cacf" + "de60f6204463cb8c18b032de1dd68d2", + "04019b07f7f4ba100aa9e749bcf93a2c9955c442730c5e1f6f72c1b1d132b780d92f414a" + "533282f7b66677c8cc8a3d5ba8b3cd3cf7006ec6e9c495ccf600f8c19597e9cfdb639406" + "b04f57a29dcd1a7a843c2c44e8321bb8508953e9c0503f77d36bdef24d5d39f85b", + "0757f6acf74eb02b7ff3161b476dfd8349854154186c959179f11b9a15da3dface40ae6e" + "d771096e053976866433382e640283a", + "08fe276e7f63ce5f85fce19d1739a8a9986cd3c3fbe26fd59324efd98826f9db3b228321" + "b3ad1d96145ca23cc02616d9e9d7aa6", + "016e06de8e3e0abf4a4f52bd2f827ca4c57412adcce3271fb4014069713f3723a038bf56" + "0788d8dd48430d3b30faf15ad9c0d69"}, + {NID_sect409r1, NID_sha256, + "ed53cec5e5500d62d38c829002916c657674ede4439c6f405ba672327ec677490e656bdd" + "698f114c2ab5e6a1fc94a1a8d64466cfe9eaabd23a8b5c37f76a3c0decdef73b3e7b751c" + "bf3b0817f4079560b5ea34cead88ba374201236bffc48eaf289bbaa4e828afa7d732473c" + "228ad00588c9b443d65b998f21c3d7a9e9196c08", + "032109202d754da290c266f74f47805a06e6b5c3f721a72fc97a3bffeb8887e0c642d49a" + "6bd034847d0a5ba09239c5dfdf0772d", + "0400f4dc8b94dfe0a27d4d41399005b242c3e5b14bc7cec55ff3a1561c894d73f365fa8f" + "a2ccde1fd7bf3760b96ab2db78d2d50b03013ac66e95c335b71fd1a98f101a392dd4696a" + "806239fbdd0708acc69333febb48d4b649f14f42841d66ce03f1fb557a361c12c1", + "0b010ef786c13ece3a10eaff79b93ef3899aa385dcc1914e16abba90de0ca6389d664082" + "fa727fa7c7907dc4c88bd621e6124c1", + "0488b8956c5999c317830206fc8b9f6760845c31bc4ba77584925dfe25c05a1e7d298a62" + "e9748c7278eba622713df59accdd78c", + "082701053ddfaa376c99cc42ad4587d84a358d9d8a9533888cc382623114aef51170de77" + "ecf64af02e09bee203851abb22f5d11"}, + {NID_sect409r1, NID_sha256, + "13829401bd41e9fe01329e9f5a002f90f1a6ecbf25fc63e7c1345f265ff02e496230f706" + "c6ab377ea52d8707b54f8fc5c7f089044e2bec1dfc66a07da76ee12fb9ea0697d87706b0" + "ebf677600bd2fe117f6cdefb8bd636a1b6b97549ee78f992c24acdf3a946053f06fd012a" + "9c703efb8bd929a66aa74b05d61bff0395232b00", + "080536e820fac59b3203aea928475043b2576446619001647e35693a9e65d15236c3cbc1" + "2e1bbe0eb305973535c882b70197a92", + "04016d7448c0afe992f8c59b19d6cec64d8fc5b10026a806760bbdbbf0012063f46d31e5" + "21a34771f826669c4d1ddd58d3aa13ebc901a3742a6f231546f0704345b9b83c72d50365" + "22449cf60c1b3bdfa4c8d36e499d4ce62e6e7bb05c6132bed1ae44eed17414d2da", + "042753a515e607cf9992dd1f249820dafe53993b59b1e57d8f2f9100f609cc15713d27f5" + "dff4007e078d6da1061ddd36c169c21", + "07eeb1cc19ac45f52c0b63ff8ecf4f4f35958e86cc3e3a071a35446d490a426b48b6c287" + "027b003488573a4834a06dad48520c3", + "01410d85f3f2adf065b60a126170c43e34e0883338118cd33b0b3eafea1d142480b236ce" + "49d35fefd1ce4ad3d25e0cc9268b1d2"}, + {NID_sect409r1, NID_sha256, + "e696acdfcc96a6c088069b7595ea9516a36d8fe04dedeb789fbd965db0cc64b7017a8210" + "15f6210b6989e515def5a9605fec0d337e4ac59f3101a505168bf72ab6d98ec62a71d2f9" + "4071fc05b95e98d4efc59fedc138e3e49c5d0b44d1f48f7b1e7c1944ee189b242950d2bc" + "804d31c7eeb45283c84638f043ab9533976433a4", + "0b05e5f0dad9583ea18fb8fc4d8c75fd2e3cf9e92cdd9b737485c953620d345006c31c28" + "8b380258b6500b84f729ce6730e5303", + "040157c083ad9789966905c212dcfd7c049a8ba3863fd4886e4b118b3f06445fb0d4745c" + "2a8a1193dc68915722089d0d382253b67500867e8efb575800f834c978ee2ecf0f84f72e" + "75dbbac86926b73fab8b47f38eee17a63baa02e3edb9d4f6b2fd2afc88b6de36bb", + "0c72eb08acb1d422999ee8d51f9ddef9f897dccfafd886998edd3ddf30a638dbd0ed59d6" + "8885ce242fb838f022bccd4f3b5f854", + "01f4dddcacb088f6e24d331e8b111e390735a41e1fc29da8f5ffdbf7342f4b9056786f2a" + "67159d1e57570bd69d69235ec562416", + "0809840df1ef8fce9b2edf8f970c07bdb5fb755e9d5bacd7996275c4f890173142c39299" + "ce9eeb51d21a32acfc7761d5a2cd7ef"}, + {NID_sect409r1, NID_sha256, + "4058b9a8cc15ac148909eb97fa32aafbb6077b168dde91a411dbc973df7db056dc57ff78" + "f0abcb70f70f800bd752197d681f44df4a7817c0e7f60f8f65489ecb6167c14b525e91fd" + "2cc5d8b80ba380a83d031d5827c8b1262c687c90ef0e62723d9b565557f9f6fed0db48f3" + "799274c2cd60a14303406c35802cba6261121296", + "0be1d277813e79051ca1611c783d66003ef759b9e104f32298017fb97667b94dcee1ce80" + "7dc6b4d62416e65d4120523bf6a4edc", + "0401fed0171b5b3c6d9092a6592944680a08a0d4f99f08a3ad1c22b5bbf11c0e4ab3cdae" + "9526b0ca2b1bbd961362faccd5caeb1d3701ae7d57db848e5c86c31f542f1995c76e916d" + "ea9aba882865febca630bc6a10ceb6732bd5f07f51bf2f37ecae7b7fbbca618ae0", + "09e3585213c6d6706524e3c8e753a2eb0edced626498eacd842d44a73c602d801a079f94" + "b781ae1ac5d44209e8e3c729ed4e820", + "01098d98cf83c705515494cdef8c3f50ea8316d95b3ca5f9a1296f09021de57930184ee4" + "b9f563aebf5fd0d5abc0885cd24c0f2", + "0d9706f4474a8fb0c701505516699025fde546a21a3fe519a173a3ac01f683d40b4db264" + "2330bcdfe188693b15a476cd9339ae7"}, + {NID_sect409r1, NID_sha256, + "e793237d46e265ab84ba9929b196405faa3b0e4686e8693567e53f68e6991e5767797467" + "7682a2510c4c35b1968a90b32c4941af7813775c061c008a60f9f671cf7419c94253d610" + "6b61e65034497f2d273a5058379bd986e3d917f708f0a2bebdba150f6d78a3af9c722a24" + "30ab0f4bad602e91e18aaf258e3785fee78e4502", + "073c807bd7e07379782ab790720de4ae5106f16d34e80ed70da5b1594e660c9b775db940" + "66b93e74f855f57d88b6ecc6228aace", + "0400301526b630ac3fca5085f633deadec27af353233e6f241772c7fdbfa42e47a04b0d3" + "ae38c04eef2109390a71fa9fda652343cf0137eacd97a8449ce83f19a13a248af52e512c" + "fab3e2ce1ceb789874cb08757dd9e47ac21b5c0846498d8d7cd90122c437602d52", + "09245ba1873114ee2a3e642c5b15049a3566a2f003cb3d25250028655fba98203feef5f3" + "07a9f4c77f232976d83723f2621eaa6", + "0c8136d4b998ca0544ca1430abf55601f259aac7756c75d1371de63d1471053c789833c5" + "cc257e323a71f80e21783df4efa169a", + "0e2ecc6f0a418bee5de7c2418c4ad85d981b18048f94865821de696488ee19291912ae7d" + "a1cf5fe9708e2beb18e6cad4e3f7849"}, + {NID_sect409r1, NID_sha256, + "ffb8bc80e7619a562d8506eba7658bef0c25ace3dc1d01bdc2ef00933d4fa07b80364e5e" + "5826074edd46a707dbc3b0ab19eec7ea8990839d7fc0a80b70661204c52bcbef57c1a7bd" + "c861c10766033a82dafbead283d911a9502d5f9ef0a39d35ef26f3616212d4bafcd413ff" + "d18b424fe09b48ba02ca5d97ec996205cd49d22e", + "0a68379b2296a6c944ad5dacb593b302d8ef0b05873ce12bbc371d705f308c739d21f343" + "349524aa72f05341e64f7435daef112", + "04007fa0f698535b011833dac1ac96f3739ecf0c29f7fc1f8bd635f4f98daa70a3931061" + "1ef51b2fdc8b37eee3573dc34cd2528d3900be1a9dc30dabee3403da4f2dac6622e6fb84" + "96e72f3f17c169e7b554efd84ac655e727ae9520feaecc752601d5391270cf0cfc", + "0630547017103c3f97de48ab6b942db94b2db9ed7dab0391ea9e71c1b788c547abc90088" + "de5b3e36c9ee4280bb454c7c3710999", + "0916aac91ad329d6f330cb051941c781b9e59bfbfe45c4d4f6ce0d1aca982e1c612952bc" + "ea06784c57c121b14cc0dcca783d0c2", + "06a83d93f9bb81c61ac290906d74e2d3b964c39b4e96370f19cfb4a55a3f7901bca3deef" + "4bb79ca6a798fb9b3a9b0137c5a9324"}, + {NID_sect409r1, NID_sha256, + "946bde90a5b903dd281a51d7fa93d80f3fed07eaf50c18fe9fac5acf67326bb18effa314" + "4e25c151efc006a50a274ec6c6a5d573051c4e2d117ceb0fa125acad07a10fb6534a8e5f" + "5b3da2a1136779c51377bf76c3a4a93c0c6158f729f2293e414fcb952c9509f228c804f0" + "adc1daa327a8991d48ccf4f3957c5f8ccbe3ad4a", + "026046bbb269ddb1ec14ade56175482343a21b7c265026cef3c7d6a1ae0f6a68166b9e6c" + "49a6e733ad2ad64df7137ef230038fb", + "0400d09d8118519f9d00df7514d2ff99483473f680b750604580b61017513870a3cf1c40" + "3495cba488309e2c084079d53139a3695300d25e41038c18e4ba6f4e9d14f210b71f27b8" + "ef2c1d4cdd5f63edf8fe11d548d070177e9ddae382fed2b163ff2b58546f10a99a", + "0d6b0e5d83155a035248ccea95feb0b4d1af818e5ac6d5f41f1a255dd8b482a94de0f4e0" + "37b10339d1805dbb6b22af6ba834219", + "08059524790304a37f2a0d57bb2b93cec79a827b1fdc9ce2d7dfd4d277e0f71844d33531" + "4a30bbec5598a399e197a852b5528dd", + "0e7870e2a0ed16cf340a04fed4d2048e4e231cb8918345e1852bcd3e30413a2219864851" + "121a34fc98dd99976e2b20cf1d1bf2e"}, + {NID_sect409r1, NID_sha256, + "07f3fe1369ebfcbcacd66675bd4ab22edbbff72e68709cb57d4f590e49440f01691f490c" + "58b5117bd24aa2fe2101b59c61c417c918ea08ea34bbb9b8aa17491ae5d9329affe894f4" + "2d7586017877fae3ce35bb80c97f92a004380374ec91e151995166e14ac00505fd1fa810" + "cf02981bacbcebf5f81b2e633d3a3db6737890f4", + "0bbcda66978ea526f7bd867c3303b625f11b94dd9ee6e2c2f8688ff07f2bba83c662949d" + "47ad47fa882cb7d203a7f0ef5dbc52a", + "04004cf5bc624553e833ffbee05ab863e5def062e0d57c28e71d758d6ffd3839504d7ed9" + "d3b1a040bdce8e187ae0b4ca23aa565b0100fc1a15b4f273737eb92a56928395f6518e05" + "bf946afb65ebca3787f7f8bb3d946dfd26c4831cfd171b4c66c2237409ebf224d9", + "0a2cd205d957a20c79699e91684cd22746c476a79245f11e7cdf7e6b74f07cf2fd9eea65" + "eda97e8994aaf51942e15695545abc3", + "0aa1da120fc19523e8162e6018e4ee053eb680ebc7e31d00db34f7b177c74c5e6ea344bb" + "a3c39ab7ebcd92996a1c156180b7dc9", + "071aa4588741208344b323642fe03f1cea73865ba645169df9c84bdbf7488829b83b8da1" + "72f1927de1c8cc318ede545c748c782"}, + {NID_sect409r1, NID_sha256, + "3a1cb13438e3bac9ad4ab1d319e90e2c9f118dcf1eb54d6333c674a665d41451f93cd4a9" + "334cd057a44c010edb668254517a63700a31eb0ca474c84873e486f2f8e158a1a7735362" + "ea0cff8ef17d959ffd851b21a91412709b3c729474d2cb40f6ca0e397030eb2611b40291" + "6e4b656f0fd868247d80be3ce33d52054b7661f0", + "09be3dd3442e0330750f0a6252bf9cb317f32f942ae516a4038dea2c40ca6484fb33611b" + "ef016cc64baf166c122e87c15466fd8", + "0400f05a6fdbe6f80c0f5ef3322d8accda4b9ae28c91b6198b888be713afa5e652e907e5" + "ca9aff5fe77b6546115b4c732bbd4010fd000923d07aeb8c947688e7d3dcb16ca69440e2" + "a89539a41b8fbb797523d3b766b46d257b87472f5084992422cebdc4e45556f5e4", + "094fe051a13ea8dbc89c4cc5511881a48ef5554de265f0badf8741ae5027eef25c617bb6" + "a3f454a992fc68f5a548903809de09f", + "0162687730f0ab2f57e348476d1fa4eaf13199ee44f44dad5807bbea4e5ba79e92556f28" + "7cacbbf1fdec9a8b78f37e78e52dc1c", + "01acc734e2d0c81a56ee8c0465661c365edae56228ca43184ea1d7503da3d38e7607b159" + "0f59f5190e5c7264cd0d7a39be71069"}, + {NID_sect409r1, NID_sha256, + "e58e7b881a563d54772125b2863718690a5276c93d9e1c5feabbdb5d6f7c7293ff0f8980" + "5b53663bb417fdd46874b8e6a466e7e3ff6737930a0662af1d5879b071b0dc4d014778df" + "f26a2eca5992e763bf4c4698c382ac947215aa116515876008a56e5bf547857049c38a2d" + "3737ed3393705fd346897c3beb80caab88e5b8cf", + "0ed321fa283c662e87eaab99b7715e6cdc9b42e14fa5bbe2c56fdfb381369191a42da7e5" + "74839f90a85577485f19446fccaf6cd", + "0401bbb34e6bfb1c1335c48e8b44cddd8a46486fad4313581df216002b382db1d58adcae" + "74af0d38445cac2f6cd9e2b439d106f5950084473a5da9f910b4807ec5ff450be353a187" + "af6ace821b18e096c47752b6336dbedfc4b481e356e689fd9c03ffcdbf3e4ea39f", + "06ae69e55ac1f7b0f844f5ee0b583e652e0e5bbfa4eae85c59eea1485148e34f4d33c9dd" + "d7ac071a28ac0a6191d5ed03e88bb86", + "0c3509b6c0356e4a30a82fa7411d1fe17ed190b7eebf9310c44fd568494c894a4f4a1a09" + "e58a4d030d47227e54f7220f3f79f4d", + "0d44ccff47d9fe82627393c03f882d4b98633961a897381ce8b2cd18f38d69742802d18e" + "6c988a23eb425b294f2c1b84cf42cd1"}, + {NID_sect409r1, NID_sha256, + "8889ea1da1cbed98963941f6ac24f47253ff6af52de920765214f2024aeb04f7ad469368" + "30a8eb04d95aba64ed7cda6ef242f454b67bc2de38a46b6524bd5c96739c4b580e89829a" + "61a8249ec8dc27a50f43b8554cfb6f4fa4ca6875983d4b60a1c6b49f32ddff6fac0cafb6" + "4d55c6f594b195c207a9bd920dcf20e0080920bf", + "0396b805073f3c3b552b1024dcf35559ac44f255b688871a3c6657f727a4b09f3806cbb7" + "5d26a00ae1728be632387e804775a8c", + "04009957f897a17241eec5b8415ed7ec1bde5df11583255e0a8136d076d72ef377ab3f55" + "3d6f56c054332a24098aed6d12878abbd301f58eee295765e8a55e388e235e833bc5cdc5" + "d51a1d98e13429bcb7891b25487b7fd8ed804b1856cb6071cc28756bf00924bf1e", + "021959970a6ad070d1ac518493e309289f3d9d6e2a8933bca715f53cee4ab9000ba2d014" + "7282495e15e63f258dca87a5db7eaca", + "0d1ca34413341c115f780e647519547602e0361ed4d70402f42d735353696eac6e4024ed" + "2eacf9577252d40c27297e9389d1f7e", + "08cd5bd43794b32d5bd2ccf7ae4deafffa0e0deb92b1eef9d3ef807d456e459f92e9f106" + "27b7e7574ebe3c2faa858bd3e62e187"}, + {NID_sect409r1, NID_sha384, + "55053af9370901e38622734a5bc5589f6a20e258627f381fb0c366f3dbe58394e5997e97" + "8eb7ebbc530f6e6186f48294149b8594fb551c31c50521a8c4d67e5862921695604afb23" + "977b6a69b21abe75966fdd11bfbdb6b51ab0a474c5fa07c4de7872a3bd81acc417655090" + "558dfcd5af449b3347e61fa9e839bb9457de64c1", + "0a8fe323f6736bcabe971c7d964e75dece70cb54561da48a11c40027ebddb23e41c7b486" + "00f569500fe8ea2abebdf480171dde4", + "040020f2dfee967949643b6cb8a3810524044a4b873a4984e9795e4dd7976536a2d748b8" + "cc636ef5c8fc92aba5677c4a0951a3332700956ec5433d73162c9683558f0dfe8870cfe6" + "6575f2c34c765372c7c3bc3b291e95c4e3665e4ec5e72131975f0b1f5f30b0c844", + "013f26e13d43ba05e01f92457374fe2ad1ccf94ebf22334447f9360f7f9748bf3665ec30" + "58ff6184fbfdbf7de9e1e2131cd3991", + "013c4c290cf89789bd6dc523deffa20c94e92e88a76eebe88457e30cddb066c7a43aadeb" + "0493b264cdae67532db7dadf879d991", + "043bb7a8db3d79938beedcd6ce02f375e26ce807a2afd4fc446f372fb09a69fb34734df5" + "dc8f6393f86577a8d29014494379624"}, + {NID_sect409r1, NID_sha384, + "c4264330534a6c2bbd8a3b757e0912558302ce302f835ad8c5474993832fd30036fdef40" + "b10ee37293e871db5b0b149654f9e543e22111f9709ef45732125f713c031ccfbc9a2f3a" + "ba160c241d27be4dab87ab2fa9a795752ab2daf20f9d06a98d90d01c07133adfe83cb11d" + "5176525e1bba6a9ba70ea48b224d46ddd8103f65", + "0105938ba9f25034da3e032dee121bdb192ac2128b50a2ed4bca042e96cfaf4660c9d35f" + "3e67bafd4c99f9447e6dc408e0c4471", + "0400f1a9243920d7cc26741eb828bb55e34c140b0e52837792ed6274a9aa6b5534cdc5c5" + "96a1141a746dee380c0d9c2f77094c36ef01393ed8c609751550ffd077347712f3b27a86" + "9cfb1b532c5b19c381365ae5dc8fbffcb2182777a17690616d71c66524017d861b", + "0fc52aa8c590aa28c5353568c9dc69734adfae840f1e0642b57863dc7f4faa37bf3ca789" + "a3d7afb32c57f66a61780e253f50af4", + "0c45b1629bbf3273c0e785a28cb8187ef387502ac4438a3372a5c72206a15d7c5ecf9203" + "ecfd7e0ac910b6ceee3be50c6664f81", + "0a0c2d31a47ad5f9dc2d42dc36714cdce47666f6e2f05ce0e7136f166647540d1e5fbdc7" + "c9fa0def8962f44f2f8bc9addc10057"}, + {NID_sect409r1, NID_sha384, + "3236f1ad164e1b25d828f5202e3513c80c72a577aa9af56f041fd96cf5a3363f4b827723" + "b1511a2f16360e32eac90ac55f4ee1146791420ef9e2af333c17d157b00e43992ef6f2be" + "2d2f211361e468413dd93fb69232f0a0d110bc5fff361c0410344aa0636bf809062c73a7" + "ac7c142063912b6ad7e1626fd2a384f35faffaad", + "0ce11677ca818537dbaeb880fc967dc8bead203a2538a55e756679c4a9e7975b9b3e6aba" + "4e6c6eab4152d0c0939027e9b0bd92a", + "040023c78eda396efa28c92b120c4ca1e19dc6c467234f9f73701d8966bd0826c20122af" + "5f7c9ad5a5b855b6dc517c22131fb0b5af01ea47619f91ed4a010dd49ece7ec78c5e9829" + "7220b4c239ff4a8c29aaec008011acbf7e4f985c02311ca703bf4ce4ba43412ecd", + "0dae763fced0e498e3efa1c6c412a25774c9bd6cd4bce25ab0a7266705cdd54040ec55bd" + "7e6708e71b09ffe9c19af9a1ed9c878", + "0a70694fe5da7646184b23b4b434bca1b754257b8e7fa9994dce4a7a92b7ec8c7f8cc69f" + "18d17915c6bbca24f6621f9563f7c35", + "009e6ba97ac2be8537afe7f8f8b9cde8841323b5cc63cf2ed46a7913096ff8d96040296a" + "1bf9aad691b60e1f18233964a421fe1"}, + {NID_sect409r1, NID_sha384, + "6c400ed098d8369dab6fde3553afbbd4d47836d0d12dd16015f15cb8d067a39391c85ca4" + "e78c62b8b72c1592349ff8dc52db8ccb7fd80c085fae456dba6f4a2378e184dd59238c92" + "cf04e40d43a66b342d2a1325a0bab12b1ac857f0564c27b35e6abed02ff5bbbdc3770ddb" + "b2ee0513df48bcba925da6d61583076cd3129603", + "05a239ae0f40d76d8d3589f1662b5ca12176a4b2784faa8339b54e96a1e1294433a4d83b" + "f904196f939bd8b33bdb4be340ec703", + "04009d03b7985647027a17c06b30ce9fa1b43d0484195f584fc347f7003802613b524cb5" + "641db3425ab4b3839e12c012853ea8384300818f5e270baf5a771627b098a6f9ad8a8262" + "e331c299fa0722a0df6ca09bdb9c92d22d72a73567cd5497d06639aa47349df207", + "0c22251c73998a3a49b3fc65acf01438941a8885d1c5072a5d41d779af70c044153fed40" + "80151b524af402a4e8ede4448b717d4", + "02d3a7ebe5de23e0e601c6e41616bf2a9a7fb6193fef8e3f0a7fb8128a925f7bec383366" + "9d1a304652b7bb1af5186b2f612da1e", + "0b7bb17155068a8d9b3412d04d407556ee133e1a704ec5da87ed19dfde60517501af345e" + "2e744d35d844f8ac8ad08b13b17c498"}, + {NID_sect409r1, NID_sha384, + "039a149eaef2de30b0ae457b376ce6fbf88afd4cfdec02d3c5e00400d3b0484c1cd6ba74" + "db5de65d6f2fe39871349b30fdf1ef29bcbb9e182eb3ec5629d07d98354a5dfa82d7f0db" + "3dd10d1510c0dce086848a198893ca5ad24a663494f0596b4eee86199ea85e7e8f2f76e7" + "a6bd4a052c54287f61b391f1e52f96b606151c34", + "0077390c62ac41aca995640fde0c79c76f4ea8a8dbb22323ed812bee837ab8798c5d0ba9" + "76c7aa634d4b1c2c155de2709e7352c", + "0401a9357770270c528f2af991c447bed86194d458f693a871ca38f271a9e6a566f5b9ba" + "3ef3d2f9bde959e42934c95867b280e9d1001f3a0516fed36d3622fae3f44d87c4bc67ce" + "e0a995cea242e530451d43781f2ebd163f6f521497fd7a1a6c7b93d33b77083a5c", + "02555cc113c8516d741b47ca41f53ed07d509845f140dfe7dffbd01a3f751ea9f22e12c9" + "39a2ecb1827c0e56b1b1c5459b66aa2", + "0e88333875a507520d0b62b35146e37e7ce4e2f2478a61adfcbc6e1aa9fd0195a4960c63" + "3d9d6aa9a79323b7ee00ab802768436", + "094595255e8862d14980893c095608113737f42b05b561771f56ac1d54eb521bcefeb392" + "8917c07c1bae74cb9aa80dbd34962d0"}, + {NID_sect409r1, NID_sha384, + "08617d04fffd6644c40f7dd57919f7dcf3c888f4147535d12ca658302305bb8e220bb17c" + "cdc480254004b9035b357120580882ef86aa5a061b2850100285b7d61588a664dd4f5394" + "f5478e68a80f610c9204d056009c1c9e902161eda33ef61aa902e96b6f094a9f05313569" + "2182943d38b9763055a38739a2a2d133c5dbee89", + "08bf23b09fbbed1b55769907aafb97f4759cec98649b2c9da5157517d4f85bb70157076b" + "5e4aaa7a940af042302f8be06a84ab6", + "0400883c31c474333f74ab2b86f3eac865c4b2b54975ce19c5cfd23682d041ef3deaa43c" + "9f9e2c194ccd3add6677de31fc9e07dfad00a5a36b54f4eea6b300491ca22054280b3f09" + "b202b2a6b55df9e3271c763b6d8360a330c16f936d69fa463bc0c4071707c9cf95", + "0812c83aa9dc4139f8c3f7c55509f9e10e6cceed30e16afc028b1904b4d260ed0e77acc2" + "6e711a7a8e24c75fd780ed893c0bbca", + "0fce07c6f791a05de29609b59d55b7062e82fb554341b2b2a8187baecb9c95b01ca5dbf8" + "ac88c60babe10af2edf5985b35e10db", + "02bd026a3e45ac439647a483261107829411c1b4a9ab603c080b92f605cf742754b65498" + "1460cf7aa72b5186b59d224dd015314"}, + {NID_sect409r1, NID_sha384, + "34c959f549a307f21b850ae105f41299b8bc94fc292aefc61aefbe0a1bf57576ba8d9b80" + "caac635e4edeb22530163fa9629665fcd43959f68eee32482f1845a78ed7278e6e43d09e" + "d6fedf465001afc0d61f1d2e1d747623e82a762576b879c7024e34f43104593cdd691d53" + "bccaeb8f212dc29bec6bc94cf69d0a8491db124a", + "0082ad05d19b8e16f80e53a4cccf6869ab5128c5e622ed146fa8555985ccd2aa3b9957dd" + "374586115d4d75b1c01cf98ecfc3646", + "04004428d05366b0a46e6578fc7528d185a3f85da06c4179e9c9055dc0a7fb4afbc53c94" + "954f268e36d2ba8731882bdd27d9684c810136ba6048ec672601987e9b7402fea24f88c1" + "a94717ed5a83794add0f31680592d6cafdec147dfbc400e73a6ba1d23d4cb0d707", + "0c00c897edea7bbfe1913e3da303d64d0d657a83c1eac9c111722b17c65391f2cf67b782" + "19e748ceb269d6c65f01e92e6952979", + "0624c5bcfd8e0ef22ee6b34a8b26bc051912cabac102cbf56c364a743e8150195fc55a3f" + "ec90a8fabed5eacc1799b565745bfd1", + "0cddd4937da8176ddf0de7f52a4babb1f6fccf861533f796a487f35d060ad9ed4435e5a6" + "7166782b53c20bc06fd1b36c265c1b0"}, + {NID_sect409r1, NID_sha384, + "514f4de08a6f49edbb6797c9dad6d33bfa367cc1a1b58a5becfe646c7f3352d5c5d95f74" + "56e7112c4ddc746b9076b9756ae3916c07bbe6d3823895774a42d25d44b3309d18bfe7e3" + "ccb1f85dacfec1654778c19e2981a853c1f40a7eafd16d331093110698c957fe9f1d8658" + "2706a6885543248b944bb70cdf9d2ea89190cb02", + "0af7e581aa4f9be5815f0c447e39de00da9194eee5e5f609668b9b69930b5b48a948614c" + "2250260d1917f0ebcb00ebda4bb52f8", + "040044703e0b49437315a64e397085ea2ba3f2e2c383b168f31a922e5916d590344906bd" + "2a911074b7481aae7f3f8f4807b110f2e1005a13607a3bb89a2a88e27d5eb5cac4eb498d" + "34e6ea861c80271ed0c73e1fa893adce0c1982b8a8af6a0249796e5276d369c3f7", + "08e7fcadc844456f14ce9354b218d519d86c0c5211d62904c937d6fbe8cb16264d7d41d9" + "8a15e9f73a636ac3739770738d6b46d", + "07aebfd1681bd5a2f995ad4a709e8681da742649c0530684fac251494263e98d67247e1e" + "4fc174b409e7e24a7b055500920cc82", + "07b83b9b5133aec165316021472307b8b481e6381754a9d0b4f9d683c2ee7cac94ed4d8a" + "72cef61fa1f6349b6c4a54ec38975cf"}, + {NID_sect409r1, NID_sha384, + "4e5d16cb1dcaa1abab1e371e1de02f31ef4e0944dfe1fdec45ab64326435b2af9aaf1a6e" + "d8fdf1a6ab1182bb53a844c7cfd66da30aec0d41757f5988ada0017c4ca752597a9fd363" + "7668bc1a92bb1556553f28d66805bb47f1ef91908ce098d452872da9800e77e1fbd43ffb" + "0ed6fe6a62185d4be73ae96c9241b82cefb2da22", + "06d14107b08354e6a41d7d7d50c004419db8bdc50db43428df5e86084551237223c498bc" + "e71a17e25695bc438c5c09e009c60e2", + "040088c1517355cd417a698b648508fd07a457ac13a49d1bad17dbfbc9735ee58343316e" + "3eca570bca130c753e17a69fe5bd7baff301397a697d2113d94daefe6be491ed3edce944" + "9c707a57af3a164d172cafece564d686fe0d25725c2919c60889af4d0354b05117", + "0f3bb2dd9eece25c56159f501af8b619a8c279d7ecbc08ee2af6b82ead80375e9c07227b" + "73a10918d8c89d1a2b12cb76427a7b4", + "0407b224d8d9c0f11a8e09ac8d654dc6e1119e2c2804510a84ec61f9017899f9613e37d8" + "166e0fcaae16c3cc11e9f739968c687", + "08c2bd7d02c4c537a308fa40db786ec64fbc2dd4c142b18cf9bcad66199afd4f44cbf221" + "adb3837e84173d174e9c0d534720ad3"}, + {NID_sect409r1, NID_sha384, + "e29e75269754ec1194270f5c9e8267dfdd8c696008b5ebc92bb840981fd065672f07f6a0" + "f1b19841adfc51b478371e1a0db9c3346a9f0a4ccbdecb7040191a00ddfd0a8faa0e69fc" + "f544319c0155d02797eeef99fabbc55078f9d852927c23fd931685424249b87ed0c70a4a" + "3e2d3b9a2f92830e7d8f7650c0bffa8f8986b7d5", + "099d96d2dc9c79549f031bd5346cf6a8544c312a3fbfc560dc8e378efdfe025b0e6e61e0" + "9c04c8bf4133396f993b0906c33dd30", + "0400883e00d72c60f22ab085a90901ba3e8a510f19c3d62dcb3ee5066e0be094cceb30bf" + "bed7068d0bfdf634a53e2fd002dc9e454d0194baa5d7ae2399965fc4009ea83273676e66" + "a56fd35a5939c26ccaf85633adf78b33dbed6da305979077418c625354c7fb6283", + "0c213540a452c4f2ef275dd844402dd5ea590f7df41ad35523edff09b7fbb096f8ae8a4b" + "aee95428fee03a9e6f6a14ceb90e289", + "071779b477245007ba1ef5f05446c4a08d1c2eab550db9c053e4588c9935f07ba87764f0" + "fce14d4a7b982ebba89cb056aad8cec", + "08174bb56cc85ebe7bca1de1f44cf93cf478d7fe59001c5947c66b837bd3a6d116f99dc4" + "f9acb4f378b0321228518e1ba0057e2"}, + {NID_sect409r1, NID_sha384, + "1a538eb447c18494ad5a5ad27be67fa60eb2c5cb2404eec1dbd7244cd802b17ca5497e77" + "9d5f779b981b165dab53ad19fd7bf2ea7dbb9b4baea782a43d758202f147e59d6b6b8ed5" + "4f4ea084bc18519943f6894d603e253ba3e8e339a6933bc3a0a47126087038e1c813c3f2" + "997aae321b7c95a802b4b73fc7db95897b7c91e3", + "049f347dfd361a65910e97fcefbf60013a54837f2ae657d65e02397f59dc6bca27704fed" + "3affdc3d833fdc621cc5e5f99b92a63", + "04017942b58d42da750a366d7e4cf4cf465c856cd911e5352b50bc8a12704c1ac6ad54f9" + "465e4fc5402b373d8bd4e4f8519341f133010abcea49c66730ddad7734eb1311b2626b75" + "ebbb299a28c9d60937e6833a9b3dda052379fbcf7875f18680924274fa1764158c", + "0134c70f031648bf470ccca4ec19c837051bf700c851df564ef3ceb99d7d41439293bcea" + "0c656c0e5361db92a03def51d7e4f26", + "06c0f9935abc5034a8b0a05e8d04de699b5916cb367e834f13642f0003510bfb68714be7" + "5c9e35b5e593eba45fe151d1df56d40", + "0930baf426b33eb4afbed64869a22712591db11acee7c4d3a221a1e98048f05900fe1481" + "6006854cb90631de5797f91176fdcd7"}, + {NID_sect409r1, NID_sha384, + "7502c755bbd385079a4001b8cd653287dc3054f3b57de19d0ff8f63c0308c64c56f03511" + "7a8971d43654f89b52e923947e4760ac72be073136da70c5ad7ca1658cc0a2d2a880d3a0" + "c0fe636fdb27b77ff260c4c1ef8a18da8e9fd777d732a37ae9906e6c4f381f0a3d941048" + "d5a1f6f2cb8593873fa4bb1621a44bc2bebfbcd1", + "0dd226de602af4e9f8e25784bd1bbd4cadb0a8aef525d5e2d57b9f3555feb698765672c5" + "099a7d6dd5faaded69d8d68b4804f26", + "04007ee34cc7a24e2e693f9409f52796427ed86fa71bf88c923db305ebd5a83bf3b6f761" + "2847f16d00f4a25614299a2df92bb693c301f63f177b54f8dd5c907ff318b66c2bfc1cee" + "09348c035a4413fa3cf5acde0db1c8af4fb8deaaf8a3a6f8f06b0acfd20c6f0049", + "0e19c21b05c82dd8c873e5f30c1e3aa9348327f959a4dbd9c741e233c649a426cf7bd9d8" + "e93232e496d0b93ce835f80fbcfdb2d", + "042a3907a480329a6169b439a6945cdbe8e4572779c43fa6cd1f15062559dae9eda27124" + "02ccbdf03d88a8a68b691f1f16f8f52", + "0d09fa4966d171a662a9ba6827fda830b5404f96f635edd8482ee009ec5c7b64a2a6c177" + "93993610ae8297efa9fe4c35ceb5001"}, + {NID_sect409r1, NID_sha384, + "95eca932d03f1df2e8bc90a27b9a1846963437cdafc49116ccf52e71e5a434cdb0aad5ec" + "cb2b692ca76e94f43a9f11fa2bdf94fe74af5c40e6bfd067a719523eea6b4e65730365ee" + "498ac84c46e1588b9b954f1c218920cbf71b167fc977ee2a89429590f43bf637eecd91b0" + "ce3be2d66bac5847205f76c06b914a970f543e59", + "0b6fdbc9c8c76cb2b822a940d8675889ca6f5132429da795462381ce29313a23bc132976" + "fbeb346ed4c691e651028f873ce7971", + "040147647d267afb4bdadf54baa3f5131e79dae8103f5b2ddf70e4652f9fc5495123be97" + "215b811554241c53023a247936053288bd015205cd5bf0c5154b2dad8367e1b487689b89" + "8acbbf44f9ed67a37babbec739804dfe737b324ad663cd2cad79274344397099e7", + "07321d12d616dd2ee5f843d6ed7e92d18968b3a76c0e4ccc167790afabad1b7c0dd53d82" + "aacac93d98679b203bad88d5ef0cd75", + "0672c5607acc646c67456ee77f2c02117cabd241f728ace5117626bdf91662323e756543" + "8f46a3e25c048a8e2130e27fa1fa2d3", + "064aaebf9f2fcbc843ae1128eb6c7e7d1fce2b9901dae0f60afbcb08c7f2ea1b550e1599" + "47deb87dd8959921846e2923880db6c"}, + {NID_sect409r1, NID_sha384, + "8ff68cb00d03e730dddb05fe0b2344689529096c3da6eeecaf097f22c7fa340593106b1f" + "6726f06b7ce7358edbcf801ead959438a42f94cdb467b3cd5b17fbbcf75739805f9eadc8" + "69c33c604cc58f81591b0b8bf4d42bd53a801f0f829a31af6c129fb4f20f1250f959754e" + "ff8c629b85a716b6a18465b6495798c0c5166c8c", + "0203d77fac64591eb9a18de20a9d5eacaa1c3ec58a5ecdb3008c2d642e197141d16b3a9f" + "dffe61429264f5b420f5e9926659a4c", + "04000f66ca09d15d0991b48ce7afde9a148565b73807e435ae0f16c14cd439454745f8ae" + "153786d7c40cce3f43a8aa4f0564cdcbc3000f4c919b7a97beba2559a8ad0f85dee40e8d" + "f28e23732d7de655262209a5170f94791e255e77e8c8cd64c8c9900092e0ff9d5c", + "0859bc752300d4ba5014e302aa4cd2a979b3097dcfde5c59f4bafc5bc8a99411174d2ef3" + "f7377df5a09269e3d9461be61801942", + "0691ea76acbd5e8137924bee13326ceac8231688af8595718e210bb857d6619c152e1fb4" + "6e03fa83bd6b5d81e2463f9260407eb", + "054df52eb86c679d8f8514a09f5a3062d2424cdc19fbf6927f744aaa8c444223f1c28ddc" + "84b1d135a886eb7ac7eab3c7b0a42e7"}, + {NID_sect409r1, NID_sha384, + "01451c4f09720cd53377a5ed04c907a735477378ed960235a833049d6bad6e6e89958b4c" + "4249bf0f6d4f043530c9e5426deb0ec3a12b7feb4860757b41bf602ca95655155356ec35" + "a2db8e2657998f56529be4b714364f83a140846308a2973907ed7b08e935173ebbce5e29" + "afe1444cd51c92824ede960056439555e7e74450", + "057a2e6a59d4871c3d547690237dd9846d6d5dc4ec0678aafc9c8669af8a641eed67bfea" + "4b05fd6b3b5357ec4d0caf352691ea4", + "0400351aaee4207bdac826ba17e3b08dd7f94c0c8ba0d9829d7bf0eeee7e6375458b5457" + "bd787f0ff38564734b3a0412bbddd7c37100e09c4dfbc33d61d69b5a8517baf5e4e16149" + "20cbdd89bb05f0420be757253fb92308dfe1de8db822f57b67b393d8a70d989b26", + "0fbe560003dc220e4c966b21c874b828874a33a93bb69c49909376df67e5df1652fd91a1" + "d73c7733f26c121e7a3b2d1246c9a61", + "08b85cf3a14fdfc69cd42750baf362286940994479f6ed7ce1d87af12c5ae075b311754f" + "1d37d8ed10bea092bd3d9f7afd2f1e2", + "02360bc1f7a98cc87ee2a4feadb98554cce59aa0fbfc087747c7253e54c38815cf91c851" + "7f5692f95bc7c3a713fb6ac43a34f7d"}, + {NID_sect409r1, NID_sha512, + "ccd494ca005ad706db03a3df6d5c6e876ef859ec77a54de11fe20d104377df1900b6b192" + "126c598944d19a2364b2ae87ad7fd32265d59e1f22be5833f20767793677b628f18e9619" + "f8ca32f3af3b41c31e87a98d1527e5e781bff33c1a8be3a82ea503e76afec5768d7f7dd1" + "f17dc98a9e7f92fd8c96fca0db518bd143d82e6d", + "00a3da7a6633608fcee9ce4253bbcec08d41ee6b00178ceb017de74e24d48fd89107c9f2" + "db3556063abe3cb011938f4b4871795", + "0400a6123b122d7d0d766897b15ba6b18b3a975d3d8058c9d359c6c6594cc0dc07d9ef60" + "33224b4aed63d319cc2747c0660e38897b01ab5fad5e78f380aeffca8d15e60731720184" + "ed456800967b2ca47d482957d38409ca07ea798bd892b529774e44080eb8510e6a", + "0da042642b3117f30ea5f4b354047b164bd128696b8c00cc6fcc767246daf7483284e411" + "009e05218246830940178cb4ebabf1b", + "0e4ce613e6976e9e1c30c0c93214a0a37f0632de85eaa25464b69a251d592560b2039fc5" + "9b15ed7045c29c268693d7c9e06d8ce", + "0ff3ad5ca70aac94facd842fecdf6a28afbceab80b549507954b7dea6da06d1facd11e0a" + "88e9c2a549e6971a08d1af75aba8363"}, + {NID_sect409r1, NID_sha512, + "5719e50d939a8d74efb444eb5a77cda48cbb59e7f976cdb2ea2848bfc558718b39ce27b8" + "93c229db94bf77992222d1746f8f52f858f85124a28193ae0da039c53d484681785f3367" + "f6516fbb8a86560aea9e3428551facc98cdb1e9df8e2f37db823a7abc589f667b5c93c4c" + "47061400220a2014197d514217fc252cef5a2433", + "0384723c8b4a316b450d1fce0b2645912b8acaeb3cad50860cca43bdc0206ed5b3b60ebd" + "c29b3eda305d0d60eeaec261edc24d5", + "0400fb89d87ca4282ccd048606e4d321e7ca73244b4d0c9d3df87d54e038a14939138bff" + "33c81a9ddd64abdfd698bf103e45c96f97004ff7e1706688a53a5544f4ed0f3f5e1f0fbd" + "6f21174166d25a690f260766646cc6fb39020de9327199225e44f3d95c5984fda9", + "03a9f5f26eac81dc8ca0a17acc44322d43bfd18edcbafe24113f5e5fad0ef0a3db75ad1b" + "2422c7321593e41e76eb2a767a14268", + "0c311000c27539247059e4a8d789ed4db93fbaea021272a90045bf6fdd70f4f32cd1e195" + "b99ee6f03f4fb57c3a115ffeb459af1", + "00db8bb46fe0f99b4e6e1394a5db283e310b24d6006319986dd2c4cc169c775c89d4ad98" + "d0fdbc3c0bef6b7fb6b43ef21049bd8"}, + {NID_sect409r1, NID_sha512, + "c84e5702a339259a61b5ba8ec1957f23ffc4f1eeef3a58f383d3731bbaabfcf49ce2ebb5" + "97960ac5115a2af1c62b193d4ab6c24433d5f168a1752e40145f19aeb6dee889a53a4fad" + "d13eef60e28fcc7ed6a9b8b0ca286c1b3d66a4b2c327a629d15c148049e3a0ccdccf05cf" + "22c31956014595e417060627c8125bd7c00f8850", + "0bd3136647572fef3de51b12e64b36460bd3a27dc660c164fc705417339cab21f9e1f9be" + "0f3da926df459c5ba58b701d306e67a", + "0400f45e18834d1933a2a26e95467b6db85d8c3da372e607907798745cd9847bb8f8b51f" + "996c7293b51550144f227933ba26722685005d8b108eb3591b164745d116c80afdd48701" + "87061c75af9b0c3e87dc8262586af14f4d6b1504d274c07c8e89247196d8ce8166", + "047a494645b99a3469369b72cc918708ebf453957b49ac4e209f2edd7a4861d014543754" + "e37e1d1a0f477951a0ac2b5826a470a", + "09de9e0147e1a268f80836d7db43779ce12e7947caa851d109273ba7e7dc7fc52c601f5b" + "f69cffd5adf0695cd7db8de2a64781f", + "0561aa76e1e9f2c1d4aaf6e2da143f67166f09199e1705b631d650528e94d643768cd611" + "467284a9f543e50520e3e738e5d56b9"}, + {NID_sect409r1, NID_sha512, + "c90bf11d04a708e64b6f94d4cca64b92463eae878c377b188c82c1c5f05a038be20eca2e" + "18034d46f00d9a6fc73c4084981748ee9d2915d87aee4e2321f4f9e11c176f01281913e3" + "24700d9cb474b7134fcc408fb4a7006acd9e63d4578ed4c2729d8e0d01b1e6174a43a024" + "ad261eb644ae98979c3cdab75af357f6dbdf5db1", + "0495be0b0a9d357f6155fac008cec90442200bb842d89292fde38b7256e4117284a60249" + "b3101b3f19f778b680c0d1d7422b84a", + "04011119cd910d4e962f54c9776c9180e7eac2f71cb9748ace4b7dfd2d2b3caef4964c7a" + "55caa9763e008de600b727068eda9b98650000b48246cfb7c86e9dff4ba77a3a53dbb1ce" + "fa168026b8929c42c3b0251fee5746897916e50f07dfe8b57baab7964447a2fea9", + "0ad4ab5ecb84118c33a4b06d1a9f5d2c4f1f3dd1cf71af596eea771f851d0371d2d72593" + "c926d7b69b39cdf72931f6bb11d10cb", + "0e959201622673d81ca16ed94e9e5be3f38bb8db48f9c09a585aa31ff39f14128d79d604" + "a5f93c80aa961c85bbf99e276937f4d", + "083099697856c780936ac01aea5e3a4d9b6e183639cd200464a5cc05232df30ff5220dce" + "4e2af714c580d561b72dc4969166a6a"}, + {NID_sect409r1, NID_sha512, + "e9b2a33906a1079280100039787377c2971c378b92e70a38ab41dc23979d6fb0c41e53a2" + "1b37632407adac6f212341cf6af8605b4978c85c9c16960e1674247f1795cd73b99ff28c" + "dca024f5078490513c77114c2f52288f5376872c331151d7b2c08f7794f2c1f9e0d849d3" + "2d73636f0aa899988ca561a76f74543b37cbf3a3", + "079626354dfc4eeeb51fcf232ee9e6b0130c9bd40f15ed45606bb7faeca8f359e0c3e18b" + "f12769254522fd4077eb24bd5454871", + "04007ad047bb38bde6ae2593e1e41c36b7efbce1e0ad08def9b23d25b7ea9aa336eaf102" + "17df16d32ada4af03dc193d44e6c77e67700d2b9466ecf321605b9f4f952812410800720" + "3ac32cfdc7cb87e1790ebf4bae497fb87011e0a81068e66a840d29583bb970e24c", + "0074548d1a3df580e45babda6096f4c78cd70945ff190d9da463fbb03a511c45d45dd1c4" + "6dc0b9521579fb506bf015f8b835680", + "09e04e9ffc2cafdefb600cf61e803eb78cb416304210165fa7c93c1bfefb02cd4a255512" + "622d524141de02c2cbd193991dcef67", + "01a7960232455f27768acd825b8ef91d4efacc38684d05a900a8512682ce19787033cd08" + "c1f2412b481b88ad02dacc0ddaa0ec2"}, + {NID_sect409r1, NID_sha512, + "672db3fb8cc8e5f831be700498d3ab3aef14b7548e8011b21351215fb6dfa09460d18f52" + "c02c8815baf396d856a429bb9afd602a10c213af34db80447f4c06ab4bd28873c88eb963" + "9b199042d4b2cb13cc364f734fd4ab7bebede7dd4da63decc0cc1f84e34d760013f66d71" + "641073f16c08078880b67230f2d6c6bfe17d206b", + "0ab42bc7d0e3c23f8bcf928e25f9f027b56f270398a1d37bea0ee5426b944a9c9ba6d0d7" + "796899543feedb470f70b2ab148234f", + "0401415fe81100f208ec8afd5e882e5773a0c1d46e44627732900c7e1722cd77b3ae2443" + "8a8463bf571fd6bb422d7c583439c07cff019c3ef3688ed397640e873dcb20cee9755437" + "d0023646d05612e8c360717a2e80e80f2b85860d71f9876f3a68548da7099f601d", + "08b44ec25214602de46046b2c94a45f64e9d0903f6148dfedb76a80b8e6314e87bf7dce8" + "e73b14bb274a88fa39136a00537779b", + "00ec4c5bc88a959a1234413026700bf5d4287a0263fe75daa16693bf74cb5071a64eb187" + "78da0a31210347aaa33130602f6b597", + "0b6c29b9177e89880f3eee3aff204b866020b3bf77d7c31204af383d9770804660711a85" + "79a3f1ffe325f225fc7e7894ecc601f"}, + {NID_sect409r1, NID_sha512, + "d7fd06b89226cfd66671ce5b4b656228c52d986afa7f6f30161680eb0c9cca177992a8a8" + "c40167a64165c518c55f678702125709361b536bd928567c97737bd750d0e2e6e0c00296" + "a6ca565f7c05cc8c54ae7a4e0c334c6a968fc18a959c18ebbd924457701316a4e999fb11" + "084520dac68dc2d69187134c40891af0355ba89b", + "07f7aa2216164ba689459ee5d5ca29e70ef75a5b2a4416ab588df1dcb9164330c0b405a9" + "d80c3acc41c19f58e24e17ecbc0fa7b", + "0401decae837c7258ea9d90314ac87c57aa6d49828787054cc068edc1955245271acae72" + "dce5c9cba422bee54f22e11810721c1ed50024cdc9e1b27e5d4bd024654df000bc9a0181" + "f7c0f4a90572c75e16b679f4362446993f9920e2244527801e8f6b1e9398bd8382", + "0463202dff25e6b9c633b60a3edcffc1a22031cff44dc1b0a5769214693ba02038fe5dcf" + "b4a48db7ec49b33068061616daf2fa9", + "08c06b72b73dc2655645892447fc0c0f8055838b194e8fad99fc6bd50774e1ed08313eba" + "4141018af33af95a3faa20b69bcc0bb", + "0958f104326df6008135bfbaf5c2980cba2833af1b4f04b5918bb51ab0a0df637d6a4af9" + "02a5e07db3022c134c72315f25972c2"}, + {NID_sect409r1, NID_sha512, + "83b7e9d3ec638fef51d2885fff5490c94e2509c126608f82660e5fc523032f3e85d69d9b" + "76af145f6bd916dda35775abbb6d1902bf38880f8b9259822055c5b1bc726c51029972cf" + "7474cf2a812f3251aa71813476bff55598d079f075a40c6c41498bd865ce960c518bef75" + "a873b9d010965f342dc4b35ef5c5972efe6fdd18", + "021d84f070c6823a70f1a74225a472118c93ce9dc509aa6064051ca4574939dcfa96be86" + "2069424bdf1a23f62f2868326422e64", + "0400f568f018b0dc4400bca3e9e4b0e5bd5245f15dc7acbcf4360b0be2ea5abbb87a3cd7" + "6aa653d32858438051cbefbcc4feee6f6b01fdf1e1bd7a2d3825df14f8bf8d5de8250956" + "63c3014f2eeedb9bed3c3416d56f805b623f40b847090d6b4b3bd5abc98ea55e48", + "03344dc1cd950a9c3d039b6fb6af8c5745395d2a3343d86dc6670580e331d59f6c003436" + "7a6df52423a625d70292893961ceddc", + "0fb010ba41d651fcc854762fa1437262eadfcabb95b9502a40b50f20cb34fa19ec570dad" + "2e0521809ecdb2bff3f4e7055c02bec", + "05a9c2dc0c1f946ce33f2f434c156c236b09098365a7f31e238b4685e7cd8c86a0b2455e" + "5c83907167c1324bbb37e66e0b2768d"}, + {NID_sect409r1, NID_sha512, + "c62c7bcc860f0e175128e1127dacf935ce62ae794cc4a0ce7966bceb023ac0498641d728" + "1fbc86f9ef470bbc77f608f83f8d0dd6299cf08f2cdacc7a9642e4246df131820220e5c0" + "5d0dbfceda7f16b86add4793e9b6244d96b5c07cfa23574ceb43e8e8b5483192a92b301a" + "a3b37702b8f94f0129d8af1617896b34990c9b02", + "0b6645344d17528968c719091b6e2072388881dc10bdb4c7fbf41906cadf3699b30f9c1d" + "bfb4796d009480664e6276c0359e5db", + "0400b164b075b80fc8b8ec785d5c2ef84d49f2f4d276546c9cf2e17ea4d367828e9aaab9" + "85c5cd0882204e293dba0359d47d9bdc0500a0c61f181d5d06ff20d0c41cf6d6cf7fea86" + "0075cdcbbab2efa0950e2276dafd4258a39c0fe4c45f3c04f76efa7d41392b4d34", + "0c497c621c5cd230fb1e4a4cb3af1cc9d8edf4af5c4af7f15c4ad0a8835b54de52d83bdb" + "3433808a67628912a85c5d00aa222c9", + "00b22e5773aca4d97d2da846c3947bf9cf2474101a6f0d39d31629a6aa2a4c3a77076a67" + "1e37aeb4cee0a94e82e914c8c553e04", + "06ccd79ab93e344e6f112c1e4a39e8505a2aaf5cf85595cadc6ddd1afb0b1583d9334cf1" + "c48f26e5baa38e05b6b52f9f12c141f"}, + {NID_sect409r1, NID_sha512, + "b5bf38fd9e822925254418475a1ce762a94e336f12b156b1625a4574fee11ee472d537ef" + "94b4a4b1c0a73b0140d0b818cd06636653e6c07f0f100118242a7703756f1cb1119b3477" + "c4ced99cf45e07e83b7f2749c1a5f8d8c9272d221fe17f7c6a5fb0f8a16af46f232ce406" + "aaf565c6b2766a2f6528c82e74fa1c0a7fcfd49e", + "0f8c2f770cf5f8e1f900e996ecdcd84fcff5cd959777fd005d721a419123221a3237e398" + "34b270d37752470deaa6cea023c5058", + "0401f861984fa06f15b801216a1c33672cff43740f0f736b4f4abed5656a1bee33a2aec4" + "31680942f2b0b0dce9a9196b49263fe183018633f4e057bb6d70a434f919b9ce4b7d9e61" + "fbf46c1d9638100d77881755fe9829a69d696d555b1a26e25ac1a1c27b40f909a2", + "0bdd99022dd964306955c57b226aef036527eca481622618fa7395f53e60aa95a275f1f2" + "d6e7354d8b55d3e83c85819e818199d", + "02f1330f41a86c09205004215c24f42fe582da189906fb23fbcc52136fcb4970a33b8961" + "13eeabcec8151cf3b150eaf1ec2dd88", + "0439507edbd36ebe4fa5df34d220c1441e1a4175c9b0373fc85669facebb5bda7a4b415c" + "269a7add207b461525c6cc94b7f7b22"}, + {NID_sect409r1, NID_sha512, + "6d3474770933ec01b76be789304b6fda423b12a0ae8c87a5ea8d7ee9f71300f39440e1c7" + "f5aa4b47c1a8628cfc3a490b15ef292a741344f40a8fcdd02cf3863bf3e32d53031f5037" + "03deab17fc52b3d4032f4e237dcc27231b85d3fd60b49ed7ee40c3344948d87c3f47564d" + "20a11d50e4e520bd16c8701694fc70901a5da625", + "0144adae951fe897d5812ee4a16c0be4c86c5e57e615c398f5768a1223a9be20fa82cecc" + "f8a16a31432bbfd17e594a4cd8a6a07", + "0400bce072255f7cbaf565f82db122e9c582ffcfbefadab6d79680b2506792028b200ca7" + "732a98322c290916c66c8a8ef77df6a2e501b4b6f65e678223bdbe5f8ecb68573ae3d7f1" + "11dac37d4fe3c0eb768c461187fc5859b13452381fe676257aa445bc7f38b4919d", + "0128c12479b7f0630374880b214aa26e4e8626deca57148a6c6a0e37a97e89da8acbadbb" + "fe7db28a0c5bd17303e1342af711f25", + "0a95124ec95e35747fb568e6659ff31867a4cb7c00985b36584201d1bac0775653e0a8b5" + "4cd9a9067ab3de434bc2cdf29ae287b", + "0257e5410a6f0bd94fb3b5b10500fb45b501a3734f0c718035a9a1516d2f88e10d1e38b7" + "0c791028e262e0c3128cb84e6064ea3"}, + {NID_sect409r1, NID_sha512, + "92ba7aaf71f625f7a2e024058dc8739da3567c306da4a812ed9e1542b7d1e982c1608216" + "6a59720203f4524c3bd463a662c26a82ec7b4376545206e650eed0d3dd7909dfe3810981" + "393070d15c45dc4a75a8c5bdeba533cad1ec34fd20466a61e4cde3b25af9a80a9a54afdd" + "7de1cf2a74ba32d4ea0082a037775413c61a8d1f", + "0a51f065fb32c55bf4ff6f18ba9d488d35d9f8da593adb0ab1632533284e0adc43ccdbda" + "9d9507b9862ac63b5ae7b0f78b479bb", + "040080e2f7ef17a11ae66172cf1c18eab12aca4c2ae06b8106aa1066677a93538e3dca06" + "26e836249eb884a382c3b726736565c3c301e98d37a17ea736ae58eab093fa7dce3f1079" + "1ee9ef5ec00bfb27bf3c705dd633badc94642c385dcc276f9b1fd5e01dd76ce944", + "0d5cf7b3d28459db8dd69c314f6464f770c31f239a12656368c84c64693f23733661081d" + "20dca9bec9c9659a8124b57a71ffd55", + "072ba8c1b4bfeca62e96a5649e851e9a311d7685603a11c1c299f5ed8605adaf27cae656" + "cd31335a7ae363cbae5dc7a39512c1b", + "01bb9819d25a211548461de4ff973ffbf475230baa161558d9cb7ee6f2e682dad21a465f" + "c2ae058121224f8680296d30e3692cc"}, + {NID_sect409r1, NID_sha512, + "b3fb9e48c333201324755a81f3ae5d4f0e2ae7cd24238fcc66d858e3aeb1ee03328660d6" + "399676eb1b7d8285ba571e214d935bb45516fccfab57b8eb4c3d5f1d7357c768eb7b5e7b" + "5710f599614bd4e92706eaba31f8a5e7e57af7ed13066af50b4540ccdc126b677789920c" + "ef8543907f0ba9dc92aae343d3425bd784ef483d", + "095351c0bc07acfabe6477fe85f97eab520dc96bdd58b44b036328ceadaa56a1904d2217" + "c5fd25155ff2aaf9005a3e2687fec81", + "0401c1311230cfdf5824323448c68ead5e5885ba540a21ff90b951f85d84d78e26da035b" + "fd99341b5901e1ebb18648a8dbb996fc9d0017a037929496e560cd1c936d9eb15f79fbff" + "737201dd880a69dfec31209faf5bd2846e3e664c668ad3d6500c5ed620f1bcc970", + "02234bafb54cad0d0d51f4b8508dbc8d014c303d90d21bc3f749ed7acc42f0335c5ab6d6" + "0002d3bb57cf07018e9c13b92c0a39f", + "04d0609f06320d69870a3e66f19cd46a2e0e3e13fb8b7785163a7b567bf2c0f437b4e30c" + "c67da288a3b34ce3110f6d87affe0f5", + "06c46d0248f7c309c1e5b80ac4b1459bf897e42f8f037031f5bbce0fde50af50cfdc4f60" + "d5ad3d1af152298cfe77dcab287874d"}, + {NID_sect409r1, NID_sha512, + "9ec5f7d65082264b8a50be772c44277a73ed19199eb275fe5976f9799d8629fcb4a59a8d" + "55074cd2eb2a0e02062d3f7cdeb05e62931a24fd1aaf14c257944d1b42eebd52726d6fe2" + "81211b39038e52baae077ea4df89675d860d6ba5a0f998d049614201b872e134367acc90" + "066ac602e478ac3e43c3ddf4b0ca0aac1a68591a", + "050245c1682344fef23bd549ac8d1e8e44b2840c43eec1cecd33daa4e9ef6b53f496104d" + "7432e14248682cfd6f5b4853b65adac", + "0400d2f8fe524b2108e375c9603598b555d6c4c7724c7d11039178037b3a4dc82b66c3ae" + "ffcccd89cc34dc2b2f6695892323bdd80501f98df95fc1837ec4d5239cf55e97d6b489b0" + "a8d7bf12c1ccf95f689ad23e46dcf20dbb531f5179e754f0c29c8757a1dc67493b", + "0c683f98253406c6587d87c57991fe5caa3f43b451875859feeb81176b732f1c1eed0ee4" + "4d1905d41922878617e03dac53562a7", + "00cdc9bc7d670a1b6794fd7da82d2ad1a0e92b82ae32656ddec3aca4de75f407f20fe782" + "daa0004317fa3f12cefc48518298d5d", + "03ee7c75810c2c05946b53e2f24feaa697af35174402c069b9fb03d89d73964c997eca4a" + "5d6f9482cb23c8ce337a374ffc3e186"}, + {NID_sect409r1, NID_sha512, + "61d657bf472676301503f6784b7286fb39fb4186bb88abf1edacb4a2693d0a1e2b77bbf2" + "758c84f2cbfd1753e20841b1cd4b456400d53f4d686e666943f9b6ffcdb77f510be97536" + "e9698fc84ae347d483bc8984548d1cf86b9b40d360f9c0dc5bd1c55868e26fce1460ba94" + "ef5e94eb63c9f0776a0f446c0cfd4106d9f36352", + "08d3b0277f0e9fe54581d3a9499ccd7f015c08339591326859af969d2a26284e3b3beac4" + "a0b74d324ce5cb5f38c7995e4e3a41f", + "0400ae18564ac04b54769e17df84aa54903df58decb870591dad73dbd712693d901f3f9a" + "d43a71f23b77705de2b4ec1c3bc616356f019810f92e80560979ac6e72bee505dcdef15b" + "4146185d2f8f5a955a4555523d982c34bbfc1326024410dbad3349e4c4e01c242d", + "0e52dea77fc59298cb06fb1401d11c662a04500f0470965c4cfaded13b339bde52f4fa04" + "c76a955faac16784f443b1ad9dfa0bc", + "00c917d487d2aae1651d76147de2a706a01c8b3d223afde7d20c9dd77cc2329bd3e0e4fc" + "01255b7c4ed1baae7d26667bc2e9ec6", + "0058c766fd514a405de91a4b9e99fc0b0146d954dc2e2decc2f3f066d0fe192832ad37a9" + "40949ca4e9abae0602248b3b56100ce"}, + {NID_sect571r1, NID_sha224, + "8e14f713a2c427b1f79491033994f76acbead614d12e73ac6f3f518f2052a10c1273aabe" + "628ab38e0d3d5f8ff254802e9f44a51367bf80325b6fc39d907a37f731372864747b1074" + "9ea5cb3d3a83da39c21a7b02885a8c1770e4397cedc958e4baa21d5007569dc9dd1e45d2" + "181709d900a394454090badbd0cd9c2cd2369aad", + "0f42afce7f7b3d45f3f925ab29fc3882a89c9f585177887584703cf8bd8fc572e677adfa" + "55b402446fe1e90dc855358d92c3267c35be9674b40c2ad5ce8dbe6a533c44b0ad8d2b2", + "04063dbcfc2d9171a7cc1835c1f56ecadcb59aa6d5852fde264ab25603f06817a20f2787" + "446445be8b2ba05c70fa25d9b9e34d5374febffeb536facd3da52d43d69fa7af4d4792c7" + "9207686e0629de47916af19f9013f65fa3b5f9d196916cab2f765aff31adb5a959515e83" + "fe3e00e91843c532041ba15f047e978bf2fc69627bb5cd7f3ecd74cdf1a8d623c1efd23f" + "c0", + "3fae665eb7a54f51c522ad5721d9e2648f13f3d84e3d64c8148d59c662872b5cb7d911c2" + "7bf45884f2ef717d72bd0569d9901f2308d9a68d128c042effea148cc963a8252f1426e", + "1df705ef13ce900ed61babed02e121dacd55a881ae32bd4f834fa8e362d059223b29ff3d" + "b835fa2b2db8fdb98c21dda5ef744cf24d0a798f501afa3a720a238ebd4fe3976a179b8", + "1b1e98db422fd48f1dfa049f38865f8bf9ec5618fdbfb50f21cc838051a1493e4b1e4f9e" + "a81156481e5fd84124fbab740421173862c63920e3a833aebf0762e7b5b39a1591d27c8"}, + {NID_sect571r1, NID_sha224, + "38b60d27ff08fb191811036dbfd5b39e1cc3427ff70efb67c851e9cb407f9fac6f348d28" + "9df98d055eec73299fcac068bd0fd9ffa3c5d244659e4f714a58d79f6727f323a7ee2636" + "9000e90e34e106f99f5ae2ae1b64ee89e5a1d304ef20c071a7773e9b977ed3d49f467d30" + "0a881c8371041394910f9c366942449045568f01", + "2f36613043cbf53ad36e2b38998bb867503359ae082d07d040e5a10a43e06ba9c91e7c73" + "308e41e2391b65e634f83b162cbdf4e7a44ad818fb93a978af00f06be06731d8c5886c6", + "0400fe1afd356670e1dc6bc195f9513f1dc6b03017416b5252c7b56153da538422e557d9" + "918298ba6c78283efa0288c0ac61298846a6f8adf74df21747cbe7c18a2b825a330e843c" + "d8018b7659f0a7e8e7ae5d636ea4d1d5f3a1f846d4bf3dfbd96c6ae874354db6faedf02f" + "75c4d1d8bd6a3b61e70ce58e38ea5de8cc16828f87a0667614f6640a3023b7f4aa93fba5" + "77", + "3fe351ff6ddf50752f7dfd8e5a72c9faad77dbea303fd97dc939eaad3aa7fed466fc8939" + "a7a6bb7abee63455284a5338e59dc067236dd699bdeeae1424d993a9c76fb2fe9595423", + "04a0e13a9fde9f2fef417199f8584d0f60b2f04aa6b7524cd2a2826d63043b2188ca977c" + "9567fc1ff292ed480dabc01589db8734c15aadb4ff54a552a7d9e66829fec1dc919dae6", + "01bc7d2c4ca9300d7a3001755ef25231d2852a7b9a3e91baf21f2a2bd2ff305be8a9de1d" + "1bcd7bd9eac4ce12ecf8a91c0a409726085382fb8d2428adf1b42b37b50c9e8e0535d7e"}, + {NID_sect571r1, NID_sha224, + "21709eeaf9e1953822294a478dfacfb205fc25f447a73a76a32601c00784cbf2f9ebd41c" + "22721d70cdb3842dcaff4a4f208d41c0816990e421cc4b8538ac2f347cdd0aa2a39f1aa2" + "6ace8cb6a606b23f6244894d4594a0f6a5b8f6a695fd66e1a41e2eb6a377017177fec56b" + "b58c837e311cd04c5b50575faee32606b9636ec1", + "2e74948c46930cbcd9dbe2325539c7dfdd910f309fd610e6599d425aad9ae230a8d46819" + "70a14f2a71fd08030d0a40ff40dade7de1b06a80441bbf7e2fcf1809cff39c7ef88bf9f", + "0401b75f2d281592c288fe6d5479a4e21ef626471819850cbbdf814593bae7e6ce2a35a9" + "78aea354649d979f161543fd4c12dae0efcdc2d95e82ae5874b9c04a2143535097b8a17c" + "6800c7160c2efa3aea1d18afc1a00b47209dfc750a5317ddebff04bc4d181f238d339a76" + "90c24e55be2cb0c01719d34ec986a07727f2e412aa72434efef4d64ecf7c16e2e75ebd7a" + "d8", + "0d3ae3d8e5e01ad838a7cc9a4d9b3e41eaf9894aed1d1ba597458391d4a2ae38c5d6efdb" + "4d91761a415812d77fd9ceaebbf1ad49c282e693d71d89f0e2d1bbd94698a47f1f30890", + "1e2e9e2633885c85f70208de30ae9b7f72950e2de980607f6d0e73fc1fb2a4a8afc63882" + "06c11b081540bb528a94e5386ce77a2d5c7830fca19223d57c1efe7ac488e69ae07e660", + "1250d1b920324919ef81865513db461409f6f8ad82f658dbfccfae4425906da306ba10ca" + "c84cf5379b6c1d8b252f3c6f86439413c617deadfad38a234bf2b0050fdabf7719bcc9e"}, + {NID_sect571r1, NID_sha224, + "3a131fabf3dc97334f212fce41c44300440d16de1d6060450875f7276f53c026e2a51168" + "1b5a8d75fc0d578546339542833145f7ee13c708df33e584445a75a5538829286480d339" + "be7c777c03c998a6d3f037b25799ab2d541021502a0b02a9b9c337a8b176c4f30e5b1864" + "85a6103b1d1563ad4ae73ca806a5e4daa92e9100", + "1b5fab1d36f6f6d559f65d8b01edba610620fc3a38307b1fb1c5bd63e7ffbd4a9098cb8b" + "df50975a873f5d047ee2b627b090897a7fb5f56d3f4a0f3528179e7c969926fc0d3b0e5", + "0405eb8c5a2bfc86aa9a82830d665296f74aeffa9c5b38750d0ff51d01c2dd0fb6f2209f" + "8ba89ff07297ab9b1b06168757f48cb6eee618a7b44f1b3902187c33208288f35a066659" + "2005334c203f4ee44fdfd5f99686b18696b3433f203dd148324dcfaa03a0a250cf606486" + "ef11ebcc1ed1839a76ad70909d835a4b30a014104a6ecbb284b33f50bfec33d8b5ede85a" + "c5", + "243889e7ad32076a3ea436356eb572c1b4ae402d0218d3ee43927eca0b4fc21a19926eea" + "35c37f09de4766f54e6079c34fb3c174afb953be1aac46d675bd300e717dfc2d0c3fae7", + "1d87b52dde9f502f02a502e7a331ca6dfc6204922fb94886efbe3013446d08240f6dba12" + "10a76eaf804562aa92a14d220d59b6310d6caea0274a5e1e8aa3c6b57f239191a71fe3d", + "2a5342df6908841b719f80ff905cee0ec3fd8be46396922c3f2f142393714b97128e0839" + "07a3a2343f0cf9aac73313279ed29eb44017e2a1cdd0fc86e4b7c536e9f7eb1bbd192a7"}, + {NID_sect571r1, NID_sha224, + "679d85a762f2574b0b31b516270b7d33d5e166c83e91a0f48e0f3db20b52f42f9e6ee964" + "8cf58267ffe3b713723cf3df52b5fab5c14db1e7189f7cb7170bc6ec7cc71946745e152b" + "39180f828688a5b6c0b2957ab94283b90052a3c6e36843c391aa8810f9253b639a8d5a69" + "aec10070603ad7a99dcedb544858d057a1d66b89", + "383e70c71b431eedd4574f65d01fb0304f7744d668408c847f7899eae44770a7f3243109" + "740f177d7146a27748886b7b77ecf3792b512e8d8e37c3bf4ecef2b1253df7066498f01", + "040769dd91fad550980225877d98f7c86963c88be141f91f7a3f1607e0cc6dab767aaa6c" + "eabaf46b65a7c80b6a494b0dac1da5d2fc8c5b07ef7085ed1bbdf4273da3665a6517ea1e" + "5a0282fb94b4726472248f01ee43607f7ef969446313e849998fbf0058c8ad5e24457006" + "b84fc0460b74d86ca281caa174e69fbb68673e1d28ccba17eae045eabc1839870831246a" + "14", + "336909099a1540e6f69172d55e0c88a1afa99808005bf09cc803ae1e4e4fbeac2f77f984" + "bddb482f1f13e4430e25e36962b1a4cae00f1fcd7f2c7a17372c91673d8286f9829bbdc", + "290055d578012a5b7d88fe2f70581a0fff976756b4581875cf5db07e01f09c0bdf6ab70f" + "fb5839567583d53c68e31a27c3fde12bd4f1e1315af2f742746277b1fb1349141ed3043", + "1480c63c8b90c7b51e092597fd8391a237b07f0ff7dbf615e6bdddd5aa880db29c9b9add" + "5bde7e0e81d9a37f852c26f21d750cd2f95520d16da7404c2c3feee1489aff09f298d7f"}, + {NID_sect571r1, NID_sha224, + "236152ad31ce2ffc0dead3c142cf6c770672cd2e75af4a82fda1a72e1c775cec9b481c6f" + "3e411644df7e7ee901c501405620af4b6e9667dfd46091788daa95ef2c6c9f5c240c06b1" + "5cb0df51f5f058d8a7934bd7845f007a35f99fa97200b20f3b5b14fbf1e372507f3b2f37" + "7e8d07d30fd3e222f398f26d8f428e320327f901", + "02261d4ead21f02fab19bbb0da8c272286704c8f0c6842ba47ded121e5cddef79fb34e6b" + "9694f725ca502949faecfb21e3cc062a2b4c654bd542d9a1fe8d97bdd0905c510aa0999", + "0403ef03980ea9b754b655948da63469fe526ff0ba2c0f572981d02f5693bff620b55b8e" + "9e9f9d553a78a0138072369775c7976f028631e65887cbed62fb447c9f41da86022f4b41" + "ef04446eed90f2716a7aedefa1385db9f5f803434517fcd80571adc9b7f086c9787b7630" + "6380a375668b05fbed30922746fecc0cc16f189dddab676516ed1fe4d02855a34a909753" + "89", + "0b309f6c53dee8a8956358df45e72126ec76266d38babff185d4db1d449c8fa9baa4b065" + "1af5f5b0aa70dee3dd55623060097e2f94ed12636961a7c0744b38f2f137bca239f974b", + "2b42395206ae79bd9df1c729856101ec3c4a719616701f836c9d69b542b59ce973d91951" + "853f89a0717abd4b929bc69e59cc379c941349dfb4f98d49f9dff572c614242fd370e56", + "1ecad482a8eadec6800a9d876a382125eafaa7bbd950fe5f0588126764126eb1b3844240" + "15c52ed6a335668506f25124aa78d98ec5739fe282af0c143c07da0fca53b9733e159b8"}, + {NID_sect571r1, NID_sha224, + "ba3f02c4847fae035d747db246fe4e82fb9224ff9cf568a6ae548f5dc2befb2079541d2c" + "f9aaa6b18c281a05e7ddfcdbcefb25f41dd91cb3092b3343e16985e91c912215cd99ae4a" + "099baf628e33a7b277e3c36a13aaef85418fca99f64d73b789f23ecbb76c3095ade0a5f7" + "f34836a98c5be933b44a94a2eaa3f99b1d8e7937", + "316c78f289e1860bb623082be9d9238b88e38c5e978a868bb90f776235bdff4eff591877" + "b7f350cf14c40356922b2b6aa51d64990360b2b0e44d6941b5dd9492b4f4e1f42ca163a", + "0406f4137a2c63b6b79138027464135021b034f97bcb2493943df6be844f1657a97632ac" + "80541a3b43ccc828789517efdd9f86ba171c1262a07a6b337bdb0c8d5f018302a8046a1a" + "8c0425cf553554d18f6cc97f0caca2a7eebbf266d57030014273f701562d5b1444240b9d" + "22060ac9bebb37deec393cebdad21ec7f13fe5c7f1752b4261cc2feddeb737284a6eec36" + "63", + "1e0321344bf364f1ede39a49c8051f36875ad78e4b080ece9088111739041b121f3f334c" + "6e923777fd716a52be669d6e45f381da11262fb4d09ad66dea74ca115838e19fe94b7f9", + "04f24ec978c52ffc7675a09334a895e044eb8eaf04d26c094d7607b77ac4168a02a972f5" + "77880a0d0c73f218815e3a7a70c91c50734c08d374a15fb42fd13367dbbe08fe9c2d4b5", + "060740270df0e1fdfb8e829c9601b9901223b19d07e9d7d422b9bade88a50fd6d4ec9684" + "2afc45900a0107ce85ea6d083d66ae202dba3a32e50c7c3af951cac7acdc6f4c406740b"}, + {NID_sect571r1, NID_sha224, + "6d0372b40559e075af56af853cbe18ba2d471b0fc8917764abcc69102b03d5bbe1fc1245" + "8215be66409c26c89f67c72a8933677a07f88993af6918acb074fa915fe883b24bc3d191" + "ff1b08852f07eda98977e70eba072d8bf189cd545230f59559ac05f1fa3f4e65886d0bc2" + "74a6e02e2399812b2bf91abae81e21279c5de996", + "2c1bc13f8320d97a82f3d9354e195481902214e16a4fd89332a0499208e91d50e5cabeb4" + "927ba030cb42f5bc53b10f500fa646a8c88508cb0d63ebfce5c4bd574c527d686c735ce", + "0402210791ca48aafed20de84ef9896a9c7584081f850b75884908c7b3dccc94e221401a" + "6ffd982f292a9d5f9c1d066ed493da948ac7e93977dabd7b820bfc0fd21cd8d99c072bb6" + "9c033574c6ce7da749ceb480b4e00bb1a58203bbbca5c16923992cc9767aba5483e4d46e" + "d39e71000a1fe920a4c1c211a14e63ace03635a2d77e72808e0664334890b819b3caff64" + "a3", + "2e3db2d82c4b9de2bc0dd0a93c1c5b385f75ad03d0da527a034da2876b42e43cd88dc648" + "33efef54af902d85c568bb8e71684bb16b28c32d80bb3e9911cb1b74be6ec520d99b381", + "065f4715e87ca3541ea695878ed5ccb7d2ea6eed5d6fc5ec29f9aa8deb4001cc7c06185d" + "6ab2dde4347344d44f8300a1e92513af4690d713762336d2e6a94d3324a224f06eeadeb", + "20104e0767530ce2f4351af4977b52339f34d13e458de0482bcd58ab38ee041c9adc7b05" + "650260d919b2648e2f820407fd60a8d6b4b991b86eaf29c2c4d12d3b0b45cac2ab22c5a"}, + {NID_sect571r1, NID_sha224, + "bbfe66c82bc060bd14fd0e40769d9b3a026eb447550dd9f118c30d8448f725f8366edef0" + "42447962ba7f7f833b9e9094d0ff600714697e632626e7d12a592e040bdcee166dcda939" + "52323191021bd12f3b1647d0f25a41739994659dcbb19333ca30f46f539c6f0a5c354cda" + "8969a1eda572a309950c84c7607eb8ac20163912", + "13bd80eafa67663e75d7ae139bf285d2b9f1e03d8e32153c73e26d06e86d7acad22bde9f" + "121a3f1ea674dcc1fe67bc7f5398d5e92555056bc046a02b0ba86c2a0dfe32e91add5b6", + "0404c01fef7f2fd8ee61726af1a2d046c7ac67716403b99e021082e96d733368c6c64d04" + "6986fb01a6b55cc930517762387eb2fa4a8eda23c700d88065bced8595188760170881a3" + "290189bfdc8e7a710522ab5416182c9579ca255c5009e6ee6604ab033c1388639c0f7aad" + "84642290954db9f4f7fbffd17481eabed38151160457d68ebdfd8695b5035e4e6e06532c" + "0d", + "3c5868345c5314aad5ed3a74488a85b2f049396022cdd1de855a0b33c2877f72e871805a" + "f3ed8fd7e7a392c4ff63acac6a6f0c431ce7af680984e8c81d0350abe491a01f0f9268f", + "0c7e96b9e9a5935ccd51b901aadab6e01ebde44f57e6f0b84e7b58ab4f62ffc0f3f3f980" + "665c581ee3de233ee49d11599529348f1ad3d362837c041cf98192bb324f577e973e1c7", + "2226922271fe8307bf597742618ea9c1c271c22c25b49aaa7c9292a81ecce2a55250415e" + "a2ec8ffec54bf0508e64426cb9cd7177265fecc40e056e96cab661485e789f0c435b72b"}, + {NID_sect571r1, NID_sha224, + "b35e9bf686717ce3b16a59963a32a2116130453b161a4e7ceb27b755856add836d779696" + "edcaee3b5c986523891c8836109d431e55c23afbca022437ad19e6777efabb6da3bba1f5" + "f44f905395b4cc7c9210590fd38da621582d059598e5e4569e904358e0dfc0dbfda4ce75" + "538aa97480912852bccd433a9b96c9c66e9597d2", + "30834b0a4284097cdda2ada6947c6c281f7290a49b56becefea1e2788ea3ef78fb968076" + "33c47c25138341768b241164ce0d42f7301728b928be2c047f2eb60fc2f844ab77306d2", + "04003a21f0d8e01a64b235cc455c291e3fec8de12682f05544de207d910c7c24c4cd56f3" + "354500d994380ebaa0b49a7604c6233a9aa24934c550c0e609f65fd4073cd6c1ee4170d7" + "7e067c83513e4acbdeb8343b3add40261edbf7c8fe0af7417264830edabfc40200283b92" + "484630741378b997c3f8bed7285decc6ef8633aa804b3846d3b4517e5ad836dbb1df4758" + "18", + "0031afb24fbc52b01480754837cd84a5165d5f2ad1a1d572b92ab546c049413806f0f523" + "9a77c751af4d57a84786ed1c11bc76123a82e7db3c0495b2fdc5fb9c8720eb7afb640c1", + "07a222cddfaea617f1190a0bd88af4d1983d2543dfba25c5036fe24529bbe2e382de89dc" + "1e36c1f6df59c8291d1c4277198084902e5619b64128c265bcf03b7d8cd6b663c225f11", + "1ca84c146ebbd16300b813621d503d8c754e4b11446d5ee31cbebc71f4b85ed09c5c94bb" + "dfc3570e8882ef790393234c5ee9e52f7d5b74ff4171d930af817eafc40ef203a1ce613"}, + {NID_sect571r1, NID_sha224, + "57b5ae7e95c638b258d1e09b3fcb4341e203f5706862e199b103c8fdac72cbc5155e5cf8" + "b300a0b3fb0ce1f897c45f7aefcc528182f73dd450cd84d5fe9eadff3f704dc2a01b4e84" + "7c22df430efd1c66b0199f3e5b59348af5386962a5ef25204fd230b54d58d7fae801c086" + "f8f405d3d0aa7a9a9da15c22b868817cd897d853", + "0c81a79ced1eaaafc31b69a40d9939f4e484d625db6364a8e589b6b4d336d458b44287ea" + "6c6aa7661113fc07806b147ff98216fa0c08708dc9d651821b922741deda522b4e436ad", + "04025f9b767b8796466c1cc8a1fe6286d591c04a0d115133fc7910640032b898a5c86547" + "f57794e5aac0148996151d3ecbe0d5939dbff5722679ecff378e3f21bbf1354b1eb294d1" + "a30074c2b91ef3472e60426d2fe182ccc678aa0abb8dda15a428e4f6f1ac401b015b2b7d" + "83535a0a92770cff7666659e1cd33941bea1168cffde82db0ea83668c2d387e6f4bdf28c" + "c5", + "27b407a29553203b829a87eb25d6d140e41184634ae1c64c6ec38e9012d0b06a1f4ad987" + "7d7ac4236a22145095990233e6c102a0052ba18cf6e47e289cce4f2ca21514d8868bd68", + "02416e11fe2f8e4738ecff1710dc827f4e03c8e7f04a4f52e755f0c1676abbd122eb9751" + "ec1fdf6c7ba04b4e29f8dee52bff7e9e726e28cb3de6f9abf2dbf58c0519ccc7d70f076", + "0b96f107a26097a468c1d410bf90e223cd72c5ec98d4ee4ec2e32259d7670d7e7689e62d" + "36549086139f6111884530e20f908d7be1edab75180c81a70ece341f7eda6e4a43a5ad3"}, + {NID_sect571r1, NID_sha224, + "daebfef74b452f039c999ba0528be3bd9e16deb5f46f6eae87b63db8b89952c949fd7db0" + "8311871eb2596865eed107aa065f030226ea675ee3256c31a3f85ddf4c21760582144e07" + "af208f33c5f47cc026db5403186a65a47940691ea2d74ffb1245676260ef5717dd879d8b" + "5b72d96f87fef5f762d4fd17454cb5ed83d8a11f", + "2f24670c0f77d2ca0266a743023d2c7413d56d0b5ec77b454ac59087efc4ea4d46179e10" + "278e4ba416ffd8c3f9786ed202faf8251c0ef5a9ea5371fbb35b7afe3d15a9cb4bad975", + "0402da72b8ae64c5ee717c33758ec26153a342936f9d41dcbb136590e1303b0e220ee84c" + "8a06b83d4d9fc924b8808de94dbd780cc8243bc4448efd27dfaa1572aae6abe574be6649" + "3903b3a95d962c48a81c48713247801e4ee630ec7956c9989023ba16f02f5bd1ef2edcdd" + "1c8d314be933225c64b7f8a80542b209b944e1f3fab95795ffa134e7e28e82307dc62c29" + "62", + "2bbb9abd2732994011c8d294c5342e8b1f7f3c1f5718187e9f75832604b43bf75abad5dd" + "c85e8d92cdc42656cc9f3349afad3f9022ccbb4937d9ffa9cf48314b604e82bda13475e", + "3986059f2e096a3675215698e23b53f471c578891f6d721a34a0d231d16348d5bf9853c7" + "9c4f4aa94642ad06cb7bfd11f724800cb5477636b6fc0586fb6efb8eb9bbef62329a884", + "2beda064eb3ffa1c3b5336613704b3bc3d4ff7b0e977df16477c7e33d480d678804bbdc0" + "8088186fbc4764be398a26c13f88bdd23e844be0d7ce598bb87c1b3430da02ae96b3767"}, + {NID_sect571r1, NID_sha224, + "62af0493ae79d71b552c4647d1fb7ab2f282a91cd44aebd8ef344dfd77b521b0c0a3f72e" + "4513c8ecc0e4b84efef3df9482a07ccc1b740c571c5e69cb913740a792aa231b9dc87edf" + "b72bac188293c6c6e788cb3dff32e8f483f8f34e21ee7efec71302cc3bdbfa47908a135f" + "6ef3ff179dcef26d1a3987f7be967a6c0f799b0c", + "20985f2c6fe3ea04bdbab66a8b6167e5969c073b9d53cf3c77cebbf73f4dbf75e601620e" + "c9c3107bf3fbfc6c79f8f063409bf8fe1d14b19e323d857e23dc05157d270c7514137e4", + "040010712d50ba7752962b140cfb943d9e8dc3bfa497bfe81c42606f4da5157656fe2ba5" + "cfd33ddffa0f27fabef8e267688943514df45e642ee0454e05b49f7c00f5785777897d22" + "5b01a2c7db6595c6d4c55110210c564cf102739760e7f5a29706fcb2515d99ca00949d5b" + "4f291716d0aa1e3a47efb9632410f60e2fee1ada47171f902f632bee85da75c7f3c895c2" + "4e", + "2f26eaba6452e687af452d5e1208fa011e4c84ada92a38f0a204a254641c23ffe1c184fa" + "8bfaff047db590ab40accda408717e4f30811b75cf3a5877ef99279476ab924d92565bf", + "1280adcac1c79352635f4165f9c5c1b6e1e6e33bd74d781773f483f637462f80340f8d22" + "cb24c9db5e49ace95a676df3dde53c8721f672006382ff806410bfcdbceda50e53285e6", + "07dd52973ef30dbd480047732622fb1b695fe3cfd080264d2aa30a6ff3dab4ab362518c4" + "f3de4fae042fce78c0c8fa0e763eb187eae2ff8f2e79b3f38cc3c1aea897e1f28b71a19"}, + {NID_sect571r1, NID_sha224, + "566f17851951777ebea3f8285610cd8ee5f882a68e7a4205e6fc9e2d66d210ee2505ee73" + "d6503169f7b903012d43e7e99efa493a8e6ef926b16b9ad8f52156840ab561fc6b680120" + "a88714fd66d1d0742189bf06c155e1138ee5314707173f7352e2cea0fc26e1553643f249" + "0428718e44afd8372cbb7bf5b88234318ebf4355", + "2b3d641607b8a141f876f6d285ee46aea543880e772dadd5dd83d595b9643191d9597218" + "e1d6adb081df133304037bcd2c05c24a54e6c4cca64fb2cc4569d6882315360059496d8", + "04042f2bffe25142ac6c1af26643b0f1c317b34950a8a0f112a0cd4ea4131303674328e0" + "bed5d9bc7ffcbb9712387cf67129365b4fa8a9e785b787c170463b24f6a7962c1e003c87" + "320070962ac4d3220f367f18caa7ceaadcb82fdba45cd2c034a97aab71f7f7546c09736c" + "b080c10d9a95a5f984aa4a3ed32d22636a7b3d5ab29c86d85db59f6f17ba29eb220bb141" + "b5", + "23d7021f5376e7b11be07288a0e47b4326c026df80d7e08c9a0fff11deccdadd479dad50" + "3ef2d4fa3f0ab2aada604b57fa7e09dbf5c8d493070b5faebb27cf68ad0b78bb6f3a9aa", + "3059720e7a2dfff03789e7a514f75f2af5ed18cf1568fa2a5354dcddc9d3c7a90605e9b9" + "a3d0d6fbfebddd615cdd52845ff922873079e06c4f349f7798410ee18e0c69045193668", + "1cc40209692cf5f8ed8b82372c95033e4199d378a28b9edcba516820ba21af1bcf5c5df2" + "ef4146b91fd37dff89ec8f9962eecce5c5e285d76a5f03eaf99fa132e98cc40ad66c296"}, + {NID_sect571r1, NID_sha224, + "25155825fc4f9a1c4dd1db837008e7e2594a879052431f5bfc76d0d2565b8fa726008bef" + "aeddceef73f3c60fa2cdf6d9a70e56d27210bd013034b38861ae49640ef208d3fe294ac4" + "362f8eea44f58af3af8a9167a36b5acafb7ec95652d5885a0e08067ce1dfbb45a0c89ad1" + "acb53eb404bf88fa5c3c463a0f912b5a2522a0d9", + "1afeb5ca87c81025ddf09c2b2c5ee22ba0105c0e619b67a324467485bd839030d149fee4" + "4d8bac6f5902a1245a50c3437046b7c89a84116b2147cddc645b6d2fd24d68e8d53bf5b", + "040119c46988a79e3ae8833ef096b0a1e2886c4b114ccfe881886859abc031df2b1e7581" + "8c82be8c5abafcbc5d7b3b8344e98e3f413d737938845e6eab5aec7e507f7baf0d339a36" + "2f03190912dfb5a1a31fbbbb50784b18051489a3cc0f44c42c71d3a54886ecf40507c324" + "0395e8ced37b5253b915fdedd38f75bb26df2a0a8edba865f898a15f2d96f632f7f06388" + "64", + "1facccc127c856db1994c4d9e9c76de6bffff81a88d7aa0ca1645e250e07674fba734479" + "11c5b47a1aae815d5e96164854636d3168d0344b2d2d913127011b6434d5a5e545d3bcd", + "21da49326f39577ee9f65cee64006525de88a834365a00f4f8cfb9a01dcfd6349a3d06bf" + "95990a2c17b7e95cc0589714b7a795c7016b29bc844ae9031488ca354548976eed68415", + "3364def38a8ee3116cbd971794c859776107154234d8b198efb19655647bb9228c7c6be2" + "e703672f795ed37481e994b6764d0b7c1bbeb2bd1db90b34f460278a54bd480bf4e9adf"}, + {NID_sect571r1, NID_sha256, + "29acb0fca27e2a10d7b9e7e84a79af73e420abdb0f80dd2665696638951b52dd39ca0281" + "66b47a3b6a2eaeceb1a11c152383f0bec64e862db1c249672b3770909f775b794e0b9b28" + "a5ec8635a996d912d837a5f22471b40ec2e84701a8804127a9f1a0b3c96ff654700bad31" + "67240c2518fb5dedcc1be9f56a807083e587bc56", + "32c97639b69c7cdbf419286d0a1b406d9b1f2886521a8b979a36118d2a368aace5b02dd8" + "c515f2041e6fb9f026d1e82e789dc826a56d2ef732b1bb0f49be2b696ab5d3d5694a2de", + "0400087ff1d8a4644edebd43c2d43d49e140940d215f272676fdfb72ccf58a12021de3d6" + "68f2766848044ac404fb45cf6e18fc6700f87aa53b4fac1e35e1731814f8a9d0233e2942" + "d7029fad3638177541d8392111064837bfa77b4455c21c5f7652e3fb302f4bff4a35b74d" + "e8aff3806538ef9ac86964cff755a81cb3002b6fb241ffcae8ac9621b8e034967d650836" + "ee", + "16a06e3d25873f6dae16bb2e569720ee9c6ae7b5ba36854c321a80be8b4be502b895e1a3" + "d161b001f6cbcf53d164b5485d8a5efa0476f581f9c79b3a291025be01a435e2fc5ded3", + "347138a43f3ed1a1a26f5f11549eb8a41f64aad302b6383879886216ebb6d08a4ce270d0" + "7a5bec6018eb313430ff017c1bbf78556436d9255e97aba1481f0f16b85e7320df79d69", + "28f35e1aeae288122b043deff9ac87d39478607da60cc33d999b6add6209f452f631c6ce" + "896afd92ab871387f5ea0eae5f6d5cf532e7a6ab44dcf44acb1fd1daafaf1ad5423d8e8"}, + {NID_sect571r1, NID_sha256, + "c92d67cf6536f5046e15b02158da698bcbba4ff1e4e9e9c882cda67f817210402ef917ae" + "93682c9c3dd817b21b73c6c00b7bf92ea80ecbbef2e67f4f4379d078a2b0f297742b2bb9" + "c3fa3297a7e8079f488555bd37715eec92b4b1cbf897640ae8a1d2a0fbcee5423ab31a37" + "629f98630275e35094a896cc574be0a449bb1bc3", + "0f93672159276c5a293582b9f49607bbdb970112f6c63b2b3b5d32ad3c8240c86b1af13a" + "8dff6502c6b6a17712cfd988f8cd23a60693d64104143b3f91adb37f852e9e11a0ef110", + "04019dda59a839aa2ed28f69a62a3e3a753c6fc789fe0d8551bf59095f009d0327386e6d" + "f5437846c6803df2442e0359a367d04f117e3965397576d4287398b4b8c92ad278df4a44" + "7f04159ced60503f7cfcfcd587bb3608699f54693068101a838d575715de02fff81058d0" + "25dbdda430e176f60e423e6fcbba889914f6409ce51d51e89e4cd7bbde6d24404e5b043e" + "79", + "10dd216d4b3da2fa6a75de60f722f1f128776741cba002c055d1445581242a175318291f" + "ae313eea11fd905b20d26cec845f57a3d5bf23ae4dc93d886c0594f1cf7be4f59f3e3eb", + "128d5c00a48c7352eb980d9c80781f8abcfdc1ddae415b7ac94b4d85c3d7d4f7316e2b33" + "44ca50c6ae82938bc728e640e59e2d733f0c7f7025e66c15c81e98a845c1ed4843b589d", + "1ab59ce5e54bffc68fda96c920b839fe03d1976ab36978bedd973715ed631bfc8e3edd10" + "0043ac527aeb5ca121da848bce4ec9799f55b22454e9af32848943058b257e815b04056"}, + {NID_sect571r1, NID_sha256, + "15413f614c4551e3b138b64f66d15f8964c40326a42b0afce820778eee4a88edb127fbf5" + "75da5263e5a2627b5461d311813ea868e6417615e7c4938313675009caac28bc7a2f4c0b" + "c37572d9bf36a3b1794294e09c0121ceecaa4b916df45b0dd31225415e6c87cfeeb092a0" + "08fce2c543cd62365779ae28f29fa02a15d9dcd5", + "3db080bc99c5fe7e06d5032167af56783cb423fae59fb5b3c6bce5fbedf56b7b39b17810" + "e48ea9a172881aa1f42f5e267349b60294d4a208b4437666b44abcfee5a1829e9467908", + "04059d1b3f680da784b49dde3b361eee819d67339447d7bdf7965550264eb63bcc7674b0" + "921f02e15d45466dee52b4c0a50c2bbbdf226af1662086476a9eb1236e3d4c2b6219af1b" + "db04e3466200dd6ecbc268cdc1937ac5123cbe33f32110cfdb8b7536987ddf5c9ef2464d" + "2334f315b9b489cf227a6300b6e054fe40d36c057a692f2fd3e762624069e2adefb65d24" + "d7", + "37fb32a902eae0c5d7cc9f9018a5d1a906a3d1b9adf5bfb696ff63f105cb2e736d9bc196" + "1677fc897fd3a9e9bedd370be6f25a03fad425b5a293c66180df78db33aec4a188d3db6", + "3aa8ab9fc9073429e52469088aea91f00cfba271b9dbb84818460883effa0c51d6a48c19" + "05d6f58d1312af073dc8735c29957f30324b467797acf86e028410de016338b972013ab", + "198a746411333172daef76359e7ad23035a0f5d14c283cb268828bd876b96b5f767e0c1e" + "2796def7a51429f39ab2332ac25d8e4f263f8dfb9c4c98da2ccc398fb3bb9a6b28ca28b"}, + {NID_sect571r1, NID_sha256, + "9f901557451ae2f8ec79b6d4adc794cbfd9b2e6d28f19409532d91682820205308b41498" + "a4e1ca247a2baa8da93de95e3c0f7afd6ca46bafdbdcc6d3374a12684676a50988b86a96" + "0a82180648c8c1e38f8fd9af604c7be3be4b24799f4544ac96d6360cdb83d1d0847fda21" + "642934fd6cf65385b50d86d4656987901fb88d0c", + "06ee767f6f36bb8f364f324d8346455c899a49237d759003dd52cfa13b9baa4c71347b13" + "4b24ecaee32d247c34e3787a0c64bc5d299b55c86f64b47521d22f2c09db225b0c84cc6", + "0403f971125860f4598fa310eb7a8c6b4e0c31bb721fdc17ce6df9af557beded6006b8ea" + "b10ebe7f3c4f3d759d4a87dcfc1fb767ef87beb1f5c845e3f41503a33b28b2b5aa1644dd" + "1a03296062514d4e89d2105dda5bd65a315b9770c45afe4050d8c3d15001405b1e32be58" + "67ee90cafbe4e239dd44d030b4fda855182f1fcf80963c1300cb842459aaa8c282737187" + "6c", + "2b247e2dd0024f534ed2797110df6ea4ba166c34d91c94e43b045c0ff80f124bfec1cf3b" + "e3da7c58389d352c8c5c1bc2a2e876a7e56301b1e688a085ea0222697fc63141564365c", + "2858eadd14373aeca65ee5a2cbbaceae4b54a50e0941a696406dd86d05c07c5599379c06" + "6b2288d01b2a43c9ae34bcb8c36f59d490aa8d066fd3d7e539ebc620a7176507ccfb232", + "33c20d26dca20af2c56982fcfa6f085bc5c317d01f3b1dfe0ade1ef6e3e960b18b626d17" + "d6696c936f04090ecd9606c2a6ecea1cd1883bbbca8b3dce3b0acb2688fb2834aaf922a"}, + {NID_sect571r1, NID_sha256, + "959fe5a19d7aea2ba611c7203e19f8e3f3cc101e03a98f91adfef602c424c580d5a86865" + "9368a930f9883d699fc633bd07f6cf8de474937db0bea86fa7cd140ec2f202663813033a" + "757b93bd72afba15be5e47a4eb93e8a666aa1c72c241ca3922547d63fa3732fec54afea7" + "ade84302e2f044275bb67433fb6b125b7913143c", + "38e2571d9f22309a636586d62863ed67a70538287f3ef88b88c3c2fa1a2900d48c342b6f" + "15c26b8e7fb4875cda4093b7de7ceda48fe1e2cc2975afe958040881de61f309931e48d", + "0405a221634ca85059543e2caf8bdf79c43bb78deb35e9c89e07d553bafb6b31750a1d85" + "ffa7689e528c11d8a3dae442b4fb2a4a21238d636eb04ccc04c8b5d794b0a213fe0480b1" + "d20225ff457b6cbc12d152b08025cdb7e1e921ee553add9cbf83228d678d5a9f5d3d1fb4" + "327a74c1dcb5d69a5b98f3ed1aebef0af09bd49d253a903636ef5a66844c500fa221470f" + "2f", + "3b4de49d57040141f3584ff596eda457e2835085d350b75391d90abe728723e1d1ac6413" + "979d4fc3eba98d72a01248e6510c722df15df876da881ad50539e4248facafcf311b464", + "00f259038b4d3d036bde101aab29f4558e88e604c62f967bc7a35eeacc6a56294268f8ab" + "00a34f9a0319b07754f502c98718e8b5c91093cdbff2c8496fd63d6fc2c50a35f87f423", + "2350d5406922e8822a91f7c95cfe8524f017a14cf7174ce534c60aeb351510d06ac20dc1" + "249129247b21c72c14b02b710c26c10899bcf995143aee632e294176e903645b660e998"}, + {NID_sect571r1, NID_sha256, + "97b9688d9ed5101b8cfb19e84b89cd644262ca1c7ee18944e29ddd3b4cca78e06338b270" + "385b00a5e8b91ca5e628de3bba50e36ecc695b3ea737a9cf8b36871c473a54ba17819f49" + "e730c0f253b0c769aefa6c16366fd2dd612f330e95fb119fcf3bf7f3e254438c0ab635ec" + "04a8b2424a05b483ecf65b74a93636fbab7bf1d8", + "0c8f5736f1ae65592f3ca850f43d06441aaad8c03820f3b08d8a6db46488dcfb828459f8" + "b3f34af73cce8dc7a5e3834e085a64523d890028e194214cef4003210e6eb530005b01a", + "040667ce3db45b8772f717ce20755ffaba968aa1314d75c84073042436823fb54bf8dda3" + "4a6bb45a61d610745b1fc10eb0eef71c4f55b26acceb442d822d6e2a27761c73b740f472" + "89056035da1adaae894e361f5283b3ea07b7d9f64a298be11de9fb487c2479b120381f1c" + "60cefe5d32d37e4644ac86a170f82b1c4443eb71b940b21c7a016b559c6c79835532c276" + "fd", + "190468668989a607a3aa966cad071ca8e8eb152b0dfca9205bc9417a3d612ca1105c7b90" + "340b04acd96a5223658adda16bf6b598ea9f32a2f8d1b61c2c2bdc08d6a49de246240b3", + "291e1fb18edb7a93badd6fab6f56ee0d390f3b6d298e97312d5277358511fc7621534ac0" + "35f3518cb140fa4ad5ef7d889c0d5f3f52a4e4d06bc9f647f99695531f85a4b76cb1184", + "2d916734e02b0a98406bb5a9723486a7ed40bdd0b39c4cb802af4bafd519803d23c6bed5" + "9a80c256a14eb878229942f67e0b8159d5cbf24b719043171b3958fd669adfc72eb7289"}, + {NID_sect571r1, NID_sha256, + "f08b250bf4a3980cb455338b3f4173723b3f44c97bacc9cf550149794a71426e398cb4a7" + "4bde141d8b7b4a72942f1c069676a9918e27792cb8f085ee037c78e3c468adea5123c4c6" + "4d8ca6a39f2f90140c5d2d80b669cbf0d1ccb466b18ded83a1d5f042c36188a04111c34f" + "f769abba9aedda40a87be1e24b700225e2078056", + "1ee68c3994adaaa9e0d61bfcd3bc1cdf198d3fbfe28a44e5dd518867ea04b20e795eadac" + "c48bfcf8e8216dceeaa069b756e8e99ed87b6b1d31154cc9310bc3b4555162a890b0c6c", + "0403efc83ad15d9bf889c9afbd769bdd1dc8925b0462c93868d85ca7554b540d8c3ef7b9" + "a63becc85981972eee8a70b7f948098ac050ad594ef2ec249cc3b557844bae9cb2cacbf3" + "97042a012b3a1d9e46cece4fc3460a2bedc9af4ce0289e95f69550eb3544f7c105b5769f" + "a52234ac88f9045ea5cdd4937664846d26deecf511ba6996ce4072e763e8ebdfe7096608" + "88", + "031df03a6cec2346b92d9ae7d3d983edf577d9a1bb88098f886f38536d8d8cf25def5772" + "6790604e674d036cbcb864bdedf8475ba9c850d510ef93b844c037e04348d5f48098c20", + "112dcafb63bb125d9610e59883df481bfde43589e46656b5952cdd72238cfbcfee79e916" + "5e3c9b89c9ffed12d303225ba2af19e00048e20e4edd3968807e4885003d148403321ef", + "2ded1456df54a24214d8c1d3fb314db52b046ca31458bed69bb3aeb6a9ece509ee521fb8" + "046ed43accc7e605440a09fd96db659c98a7dd606758c0c47e47acfa326b9ed73ba4b28"}, + {NID_sect571r1, NID_sha256, + "1cabd16fc29d7d919622810dc8b23c770b790b98b119eeab1b20900fa94fc2ebaf76be4f" + "5eea91fc5276c5621c8677d4d117c4a5a782ee2ca1d5b0db997fdc8a05b6b3fbb833d7a7" + "b81c3c615c2a662929760a96feefcf89e46b563314c9b77c86bf34438458b43b694ceba7" + "41b97dfcdacc0ed57652ae62856ce10ed2690770", + "3a6fbf66ebc1365ea7699c72cdac2dd85907ec59cd26e2d18713354b619ccb83b7fc0db9" + "193aa8493c1855f1a83fd987cbbb65de17c59fbe79256aa5392f4eba045346e9ba26592", + "040559dd556241f9b11d0f91c5458ef6adb783f9f5051bc12cac9f0b214f836f7b149d00" + "ba8218e873410a50445da9fbf68673f3282d783988981fb221d0579341892ba6824e0cf4" + "a5005dd0e594ce41122882538e51e9bf29d159fcbb8b29b97c5546582390ad5c59c97527" + "1c58ba1e75d70c3898fea929ef7316ee830eeefbdc69bd80d7b0e8133b977cd573a3b422" + "ee", + "1c5a193179ab859ec1166575007c3cacb30d31f341a0e82ed6d4ddb32da909dce08acfa1" + "0fb14183258caa743010fac6f7d0fb1f8c8f55c246e49a97f2bf571129144c23de8d68c", + "2625d0bdf37396585d22811a12ae7e0c3f512ffdd0bf4d048379434af46c03c6067dbe7c" + "271c417ac5307123bf58a9f2064bd2b3a2d4b4efa3027959bfe63e13a851f46a21da6e6", + "13f16b211b314a7e9918f3254da2f1aceb5340713985610f03ec1d0a33ecf9217d61076e" + "b153d8f27aa31aed3c9b165be52f8d857de362b2c88db5dccfd708a996a46b76b4ebd09"}, + {NID_sect571r1, NID_sha256, + "7bc8bbf5ebeacf40b3c82eb6eba5d994dcc6a3f2e12ef741f90f90e176d20c21e006ecda" + "f14cb5beef35bff46b2c374d9ee224516679b1a9e9255cd8ad8e60ed234f8ee7e0fc53c9" + "021488158217d4b4369cc597d6053746efa1e73340bdd73c1bd2eed57b92426fd4d278d6" + "a86e8be0f0a66ab3dfadefca8831b2f488636251", + "145748871a0b5c1cee628de04a12fd68ff2b154fda96e47afaa96389d66d22802968584f" + "6753d36618d49ed205260f09d3f5ccc2b27a34390ce58179b9834ff92a86d66ea0a97ca", + "0406cc7ce2782dd67cf1fc16f1b24ae46fd085b969d936fefc409a9bde354cfd33a154a3" + "113e837cfb88284d75a96f5fbe85274fdd0990af4a033a6c40b904a5e0f666e4d8b8bc35" + "3207adfea166087502657bf9e2c437beb2f62dab041553a06411f6c9dae83a2a2749a4e5" + "a2a36fbe23d40816b1b8d206b9f5cea20ef200b9150061ca22fee2076e31c88d60a006ef" + "4c", + "26c820dc92f97dbf545f51db7d5ba649333dde38eaa47d8a7edad9a3cf3e6780442db234" + "632458ff17e1d7b70019916708c128601ff547ac84dfb0173cf0a3c5d69ac96c3d7d395", + "338c88d1bbd0b93f3f1fe1ccfcbda65fa1667ec471730a40eda87f57b3eb63d979d8d6d8" + "19b974619799c90b09f33c051b8b522c3a1acede101857265ce1b58cc7eb5698049f494", + "3637bf89f9b66c7ebd8f91a8324eb70a510284b39f0f2e45578f26f5f1e4504ad70a3894" + "27f4d58960cbd918c2f8279de52096e25a1b0b0c3929fd5ef56bab6cde7c0d8e9d2fb30"}, + {NID_sect571r1, NID_sha256, + "0cd2a45392871c0c262e7e6f036946354bb41f9c2187b8c4d399231280682f3e0a09731f" + "bfd52c76ee63b9828c2d731f4cefee0a8c46419c398205b2ff80c67d7756db300a0a8385" + "fa287dd37d9126f75998ae1cbab5136560592118db52fbf102b7ff0a1ed45b8a91a7d99d" + "13a0f7fd4366392264aa1248d7324901467457ca", + "3c71911d24ad19c20fc1d8a044d63c9bb417abc3778d7e6234c6af79b898cbfc2f278724" + "4708d2fe203be786edbdc4c9b12b413156b7b0bab0be8af895d191d853cd58aafe1ccce", + "0406cc47aa586a73acddbc91398ff5782457e6da2b10e265153c678789d3d7fcfc485b03" + "b089eb67e6d6955d5c8c7ed5f933d84853576e76fc60332e5f0a62c3ab23690317bf1b42" + "3e015604d94ab9f2ae1d74fe46b1a070160513709de2ba8e74fbf9922e9bbe7f6e743b25" + "701a13f73eae0db0c98dc80c5f8528e16610fcf18f60eda3357ad5878add2554a6befc9d" + "39", + "3681fcc5fc1f0d7d413abf2e44cb5cce9a4a252ec449ec4f550df4a172305eecc072454e" + "fe2040aabaf4fee58ed19c9090061d3c4835c5fec38996f013e5512c0147cb14a4f0fe7", + "0d3c26796bb86b1a20ed4935bc3824bcb9742513ce91a66dd523a3c0d8a5abe63488aabb" + "806b5b113e90d3f3c80e3ffa01ad051e6b0d4edfc641689953ed65fafbaf3e554be31ff", + "2e3129ff95b06c274f7ac08882dc1da6660269f3dbd21a3e48377a628f6d81326084bbb8" + "d32b794fcbde8e574f853636fbbaba480fb36960b0994210bea319a99a46e29b79217b3"}, + {NID_sect571r1, NID_sha256, + "e97092625b09c9ae6e152e1cbee207d83361f34cb9b0e727c816a5ed851f12f91fbf88ad" + "9d4c8f9d07350f5d828fd8574eafc768bc72a2b18aaf4d2b48fb10f7c3431137b5185015" + "4de9706487d69a40a8f4cb2c799f48c5d8f518aff752500de93cbb94ab04ae1e0c7183a3" + "2d79a27291dd07b5fb6e6a4fab76e85c3a8607e2", + "18bd74698bac36ef11add6b3e3fad227ecd868f370ec04569462565d2f0af2340bf79348" + "6953a7b79ab04f0ab1f0e4fd16bf6b576cce677d543e73aa8edb0e50372f24ddfbff966", + "040231f891e63bc1c43377faa56c5799eb1c877954ca2cafdeb4883ae40bd78816ca5634" + "f48f5ef5c22dc7d3d0df208bab4149815274d7b134cadb700d166a5e3fc73e9be1bab725" + "220469ea29ef860adf24afdd386347763008ef6fe2488d902c4d513bc0183fc52742782a" + "6fe500d6b581902ccd4f9bf077f975bd5fa89bf240723b99f726c9fab4f953380745ff9e" + "17", + "1590570de563ea96eddd900e4a0a7efa2e4a0b389854e96af32bb7555f098a8cb52d160a" + "bcfbde65998c34f91338a40d40cc03e4a9a241d3b16b0e893d3f7ffdbf8912f35c7f538", + "32402fbee4831b16d762ea2cb218279f4db5e20bc8b6e2e53e89a2ef3646cfb0abbac361" + "16c8c708a1342db2fa0abd39d149e09db57aef65ad8092f37f7962f98c28331f0f20b64", + "2d1e38f40965e2697abc7df5896cf051ce5646f135d1ea0bb470a43250af8df0abf2a04c" + "a1e0f1f31013025b4136a8a6bdaa474bf50752c571f883829bc3a5482ec20e2b4a72c90"}, + {NID_sect571r1, NID_sha256, + "ae6723b8df5d6ab5fcfaa22d32fdf106d211514cb1892c7c43ca6cd85c2532f85929c8a2" + "59ed251215063cf92e1502528d1e22d5cf67efa0b8ef21e8eb2f5dff881ba1433e8bcf2b" + "6af8742ecb2bccde081e534615a305562cc22d3398f61f277d8ca785842bda85d8a40438" + "d9bf1aceaedcfc22c85533794a69cfc320931d3f", + "335699bfd058ee2e6163f55d1816bf3669acea8b73be9c4ddfe775230925e6093cff7a66" + "813adf22222c8376faa106d85ac9f3c67929bc58d8986795b6d35d5b9fa546dceabbedc", + "0407995e02dd3d40f9bc2e6f4cb1c0d29923c9022169e64532d1b357f36264d18059c44a" + "8617a6f1136e72648c9051a27714a0dc833428762275a1b5635a3ad91e65d2713236c20f" + "5006167d5839cd4476a638c50db218979a93da44dbf97281d90daa8b9b530960c689279f" + "ff6c342af97880db1e9c5ae57b91d7be727fd1c6210ec59416d1b675f4dd666e0b121d14" + "4b", + "3f037ebe0e4c3910953e123becc09c0862490e7f590245c4cdf9ea5fce930a7d7ca5d17f" + "5689edae1ce706b90efdf84cd82e06e4ab95e9e2368db91d50110eb91cf44e50cdce2cc", + "2baaf025290897a5d68c5e63543256523fb086a6f1166ddfd3d50fb307e0f0cf78b5fa89" + "5f8b71944a7b67b8afe5f3e10f2d248aedf573860c42cd7aff258055ee7cce472e8efb1", + "0f4d239f5af023ff6c94ad7f66d43201c7e40262cd92467c4ab54be8d2b8e6577d143750" + "64fbd00a6327da62f03f75262392add0ec119d820205065aa6238433fadc8d1734b8481"}, + {NID_sect571r1, NID_sha256, + "ee20c6b61886e02ed94359dff3559522ff550ca126fed4b2240ea7d999a182b7bb618c50" + "528fcbd261d5e497a991fbac0cf4c105c0f664d6a00a9001c1ed522962fb44dd4159677c" + "e8f1531019f86457c055c9cea6247086cdfe0442485cbbc4386ad002b4bd39a1a1877524" + "37f04569705cb7adc0c68f0fd059d946deb63f0b", + "2c3eaf801330b3f1b0504f2399f1d24455db29911f750c246ba0a134c3b59da8b3562911" + "197764699a92ea1d95a2aac587e24f743df1dad3e1cf7edf955203e24a0225717f8d2df", + "040703d69e2dfb13fb6e695b0b30b31d89c8789e8523a7eea15673aeb4f1909192c06c27" + "558eb55f0315f395b1f3ce84d9c304905cfda1d119bec33af9ade4420de2edbe75cc5460" + "e3075e35b2d6a8550969d49ac5d656afacf68d3a1dc6d17666f46ce3413c855b627f0891" + "912e373af2ba91211c20f067d66056e6bbc0814ff3921d944008b25d8772cc8d696bfe1d" + "09", + "0a9ebaea478893aa0e3bbfd5d007bcec5ad787d9bb5a8e9b8b79865c584966f0bf040d36" + "f62a8e97c123d2adb7f38eb49a86e9c2ce1294d04fef1b6fec7908c4ca1a70bd1699a9e", + "2d495eb5f6fb187a0ee1fa772ccefbb969e854abb445ec19ac3860f40ee65f53b92f6a79" + "7003574bccf0b9de8014ad4e5745ed264eb3ae88040ef6518809b4c66f691d496a85d51", + "1840b2977ff137f2a8f2f7c25e347cf1262fd128e008e30e4752315deb5231098c65e9a5" + "85496a9d6b5b56cd0b6d7dcb7150a077fd199be2d2de0262aa84dad414e100ac6162346"}, + {NID_sect571r1, NID_sha256, + "734a9eb8288e32f5a67cc1d88704523ca2c68b798d90e188d871d9f50d2da2063baf1ee6" + "685c45832a1818aabc9afc0bc935e97969dc983a484f16d2bedb3c7c0b8221408be2480a" + "5562d5d1e5d8763d1e474bf2826aa93a68c3b870e3bf34f4941cf590d88e1f5a8cd782a3" + "3992213f3f6b4b4f6dbfb3c3c8f21f5eaf4ef609", + "1c3ff067497e5d387f31f0ecc9c67b3c0dd6ec8c81318c492aad83c9dec6c99e4fa47447" + "f6f7082d636c2591d0df940b947d0a4ae3778e2b7cc8fb92214638399def894ada276b8", + "0402e56655e37b3e753f35eedca95f8ec07b7a3d3e14e365ec041cd9003bdb78a7a8b8ad" + "277a67da5d63dcdeb0ee8d8efb68fe61aad9b1fbef4373ab13c44efacf68cc499faf5b5d" + "be047bbec643d74874b77f0fdbbd2df3f3ff0d35f4b3e1534b2c4d5c76b8cc51693a70e1" + "7d1d4cd64713c5c05966c826458fb5411ac840ab5998bf3cd64a0769c3e075259a70aaf9" + "4d", + "149848f4534eeeb45fc38ddeace59e8f83f0bfb4cfcd2b8b7acd0bf19303051a6a8fe75d" + "4cdec1be036645beb075c772aef4a58785c16d984eb43b9b0317446bc3b3abfe7ec2cb7", + "17eb68556224f995733077501ed295088cc1184fa3872f5f11e97cf67c7bc1febebd3120" + "6a406c4479b60246a517cada5859d4f1aeb98dfc108e96e9898c6e71e59e39b6284895e", + "22904497dc7a98fbe117e4427d74f4ecfc4e14d4467c99227427e3abb8d3dcc406f3704a" + "7783d822ec1118a1d91d5945d5b902a2ad325bcc9c17c68ddf8b5323df9c2bde392710d"}, + {NID_sect571r1, NID_sha256, + "68e27cc72fec8f3f1f3882c6efa08efdf21d74d13be5171da35ef2855666ad2ea6919d21" + "dbc1cb6d296663dcbceeba2fe47a2c6507d3d4a67a61b55b0f81c93412d7e1fbe15a590e" + "342a05f55daa55f8591171303154e615e81189a523b855829a5c96621ad118f522e397e2" + "eea05c2603eeae6e3591215e29b2289bc384d8d4", + "04b4e04281b210fe78d516a5b69f878b7fa058941ee9ae8cc63b061d1eb9e12c3e0ecb87" + "17ff4623ff5bbbcdb53c48adbd9c69636506ab929c5507d7ebafae5654aad65a263e48d", + "040538049d071158c62f0102fb664a47431afe320474a173463819d5f83f6737b43880ed" + "378470d774d32ad59cd9d75e5bb06b118f1297af3f6fa910f40aaffe11e46cd56cbd29aa" + "5100a4a843af9841e2427357bdf26817656637bf4650e443ef303dd458ed092dca3cacf2" + "857d10aa190c256467ff834bc804f8557f6c3bdde89927a5f2bd55bb9d9f1f08a044cbc2" + "08", + "1191110485f56335f0e65fe04b9ad8fac1c3573cb4690db3e9f62086312d394b0e354890" + "c0f74e3df7c43e718ecf18caf6904e03bd6c0912f906de1d2bb4c49823bc6c0dbfe37f4", + "0dff371ac365cb7de248ddb2b2fdee624c527c6c1908dd287a294bb43a4be94c130bfa83" + "710b0655f21695dd91703acca64fe2e7927eaf9c2b9b230de8002798224f9505379bf34", + "2f30f31c863bdd68fae16f97fba756e033eada18cb0a23d7d4b2c9ea3c832e61b52185fc" + "d654d9eb281b92a9b102c3b17ebf02422a0e4a7a56a73974208371ef65434c38f4d7d1d"}, + {NID_sect571r1, NID_sha384, + "e67cecedf35058b80787589514a9c81c6b9f4bced4260411d2af75bc46b8b2c962dc9d26" + "0dc99ebbf8ee64950766efc0e394184bdc8e2891d66bd3300ecc880e9d6a3d0eb6153223" + "78afc3dba89938704e9a8d0c949d4bae9838805c00377e3fe5ec6a1a98ad7eaaba6b5009" + "73dac48b26b7fb2e1b9889f8c387de535d4b2363", + "30f2849a713aeac95fde5ce3af853e9d070ee60709eccf35a076567be2c43f0fa34420b0" + "fc097ff577221275a3a56e759efc32183be2d76058a7d20e5dd59f00415114d73a15b8f", + "0406d4ed3cf180e0e307745faa49247f269c3fa0a69042b3b78ad645f43eaa50d479622e" + "27429a6b6b1889944f85975fec8018d3321ed38f6c7d91f2efc98467a027ba4a02c7f231" + "b405f2ebf6abf7d53fa32865a9b6ada9bee51c1fe26cad74dd6ef78f13872f340d641700" + "31becb5073001fbca373be4e32ac3425d705ee942e6c4e639bf72379e34776680a387a0c" + "6d", + "0da9d8647d0950f558a3831b47858168b3379656e603f2bd44046ac7546892d1a7318c5a" + "9873c6ff85683edd3881a0f1af5501d17939f0825ed37bfc9a2d95faf43d3be92b237ef", + "0fc7eaeef74806606fe51882c6928a06bf552d18dcc4d326d44a540abb728146657048b2" + "0e5fe2868beb5f04f32d43e9ac23a7f22c6bf325bca24f5e3161c868911ee61baa8a3c6", + "33d63693268f3762635373fc901fd72e525965ac17e2cc009177f03bd3524107b30e4c6d" + "80bbc4f87fb1f288ed56812994541fe063f1d91afa7213bed8be5693dc6c17ec9a0714f"}, + {NID_sect571r1, NID_sha384, + "2baa1ac3f07e34b67b6af087400f261e138b070c8475378063286c16fa73578303380236" + "a4af2484ea01ba56c1c619f6ae4e5e6ac2594c8e5aae7e7f196f96fc5d0f507bebedd4d8" + "18e77b9120e5b4bc01c7ab6339e88b71d0886631cc7fd89659bf513faf149c61eb14d550" + "60c8dfc7e6e4c2b4ec8edaaa6bc36eca50a6feef", + "2ebb73d04e6e5361e20629e3ad119b33db5163ed91fd9a8aec4b774898784b6822a08992" + "118a8fe6013094bad0be1e9bf01b27c069e4335bff7e0abd28a10443818f6b825e9cef1", + "04001710eb0167e8c948d381e3a75aa1e036b70c414f69260aab434ee20b6724dd7393fc" + "487b5b3822e5e8065b06d0785a4a7be7193352d5b9eee66755ba106ba6e40f98a08c730a" + "0c06006f98fc25a641a7c6e67fedd37aaad77a9102be3e1e7d32dcb4c68029e623a42f4c" + "a7d1ea725bfd475756b80e18904107c460fc03b9bd68aa46f9dfbd60618670c4d9a68a32" + "87", + "1861e2a356a6fa8096418cde7fa17f1b893a7b63810f3fd807a82bf4c745aafdc4963eb7" + "a0ad0488a776e915b64d2b684e46d244703eb63b77835167908f2d6b06a2ed7b53f0717", + "046688e12d26cd96bb05d3f418d8ec34f4426f594acd2bfd8e9abd79405e612d60737007" + "440424bc4f546c54b7402d11880f68edd996f49277b729450f7dda5d05986b014b5244f", + "341a80e74f3a69b966ef81ae95dbdd60ed5a0446416653c4df431ff7c4b4272665a52337" + "9d76725e9fbe196018f0e747100084c823b95d7c7b1785d3623e52e9adbe773b81b49d3"}, + {NID_sect571r1, NID_sha384, + "0e640581f573068d8ebd2899a6aaeed0bf987ee11e22b05d25e88e9a1c3451f45ee3800d" + "976f4603c18a041febef07a01086832a6f7ecd5d498d52e796a9d90758c87c36f4a5b704" + "a39c456aaee2d5278183d5815d619c193da9fbc427d701bab0874bded848cb4bb066f56e" + "119b637c78aeb6eaa387c41bec6cdd4bf7b2061a", + "1bfab717d6f6e16d9bc6e89d2ffac7cbe0f808cc8ca2eb515af7ecce5f3b230303775710" + "a21bd25c2cc4566bb53c78c78e3774a9f306c751cc6e149929e45eef60f56c1d2388c6d", + "0406935c3e8b58f7bacd045e745054c227687800ddd86d6e0c8b1e426f4df0e4b71feede" + "fa9172c43becebbeee8ee382a75396fc5f29ef3d2cc55f8afa9232038609b5034513b222" + "cf0138463efe3b32259dd90b759062f848deda84f2bcc0d687c410f1ad2dd745517c96c3" + "451432b1e490902208cabb68bb872ec493eabdf1f3b07595d23a54c53e512777abffb7fc" + "65", + "00025bd48e2dbbf1ed8bd9c1514303dc503dd0799c7815870b902249cd1d7368380853d3" + "6f7fdefad973700ded1e0d66950181b0aeac73eb622c880571315f09504ed26e28e85a1", + "1b9d6ccb19b208022d3a579a66957429682517e84a71be42fd571fbbd0247609d0b5b338" + "08189efb52d21e6421d3b08821d82900577791b1c54e239b0d908bfbcdc060cfedaefb2", + "3356320389ffde577496c5b46a0de6d53005f5ae3489c0d292c5f460a3b7adc5bd204bc5" + "0a3bcc8538e0f8319c79b9024b065223b7ed9b0f211c5c224d363f5bdfe04db97f99e19"}, + {NID_sect571r1, NID_sha384, + "51a2a560ba226d629127ce1ea7e812219ceaddd23561256331458c9f11fe73990f21d0dc" + "d974a3773040090cfdc8e0f01692d951a0cbb60f8448a016c67abf46a9c150466ac77e65" + "6ea827b0ea7d1e77ea32071ba8314fc8a2edf69008f498bd1c18061d7d00f3340a7e2cd7" + "3e9766862378d8702e804a1870b442beb2d0aa14", + "00cc53bf7f1cad5e3dede4b4f4b082831604c92dd2b147869cdf1107259305b1d5035964" + "7f9f3d7d4e1e608865c65dc7c9ea46bc324dcb8423b554dc369d621743cbfb592b70eb5", + "04020187d7de90652caf1210703ef65cada3b88f978e14ce6055847be7127602ba7a5391" + "cef0fc9b009134105da7b09b49beb7ba2f961b84e6d66bd818ea99ec106c6e8428b17394" + "a60197aef36e47b571ccc0b41f948392d6061060063137d8c3b999ae507b76132fea1563" + "775be555616cb5816b9b19e42b34f9673aab833f4beb9d1a0848a4bbf2f6f44cd0398274" + "8c", + "08acd0f8f9660d21d62f391112908be73a4342767328d3375a8806dffd2598b6d77fcb47" + "93e69f2390389a78c2b11866cf0f03666a60ad088d2c77bbc49fff6efc5b7283d02bf36", + "1004bfb78dc0e4fc0f2624bec6893d717a476fc76bb5c1d94c1dbf157aab5d1dc80f98a3" + "aeabaac94d9cf9e26e1dd172f5d8fcd5b2d48cb3b7f0a4863813357b5cf8eae84478e44", + "30b1c8857977181d12c53cc2efc53a427801cde2890cf2ea2c99c6958b6869d0ac78ee2c" + "846c241362c885835af49c47d20c30f3cbfab27d9cfeaa6d858694bab059229e30bf845"}, + {NID_sect571r1, NID_sha384, + "90eeecff0a2e37df318c441df220dfea013ef29774ee92a56b213e13a798858f31e52b6c" + "cb7599e7314f12b48a89884b113c1ba0526a54f3e9a33c940944319e084bff320cf5f391" + "c02c731c4c4f8b05afa273374a1705d6c85337782ba7d36b9c00767180cad6422c11c581" + "672ff631fa4c49d41b02481568ec87ea97220400", + "2b009530cb9d586e35dd8951ccb686833afb7a37ec253e547e85b253ba999f0f186b6d4b" + "a41091615fe57678e9801b4dc94fa683511da25637b2acc9fe60936be15af16234c4ee7", + "0405913ab6a2287d946b5b6d1e6c3d64117e085da7cf6388e333cf58d22494f4b067c684" + "dca770ddbcea5db73f048b296e9c17284a8912b3cb722d9eaa17b6b1209311fb8e8757cb" + "f50007124ac6c48ac56746563db247bcfe6b20215ccc5cfb1d43c923daa07d429c8f0513" + "bd1ff1180ef0f7927fa23fda1af25d20b22c935c426f9ccb402c358b57b812516c431117" + "79", + "27a80a19e9c320b57146845fcf97d6debcffbcae877c33c62aec62a3351ef40bd90ef4c2" + "ca39f9e51086931d82eec4ee7870365cb14e9c54ae735069801ef12c571bf1c7c1cf6e6", + "1de22c8984c593a0948164e6cc8631489133972482f6a7fb1c3c13f97e4584604930d369" + "224850a1d24f267f41bc6fca04ad79326aef61f0d429e0e1b9e9d9686ee10f2bc52b104", + "085c6b34687081e280a180cd0c4ffe95cebbb0ad6d3b20a7341e467812f88c23973701cb" + "f3cd2bcd2811415d0bf0cd9df229a88754f4cb0c225a2d11f57369a29edfd7b04639055"}, + {NID_sect571r1, NID_sha384, + "d3740cad41e2e365d80ae81da97fdf06d8b6c278b505e34cb683fb55ddc5189da5435409" + "14c0accd405dbf0063f6222885fda4b316dad4a83fd03e8d7b7e936f87fc0a5b095defc8" + "a4b22fa97f00b394e672d5efd3e0a230c7e44dfeebda88641143502a400ed62e2a51f956" + "1e5d652a43d616f16699e875deb9610c77de8e1c", + "2cc2d0d7189cc8fb3565a039aee7633ddc00ff427cafad32fd2010b10fe249c9724d9178" + "5e7080203626038109158e3a61a3970aa3e51688aa7f5184b22f63af63f80d3540ec023", + "0405fe95a030efac2e5d9522680da58606e3e7544a317a3f24d726b69238367d30fa5868" + "64d8c143c3695126ce8dffbc7e7fb789f956dbf53aabbc38af988ce50f1fb30294ea3e2d" + "480193d1e745d82781ae5c3b3d2233e502959d6862fa7987c6416584504f65639ca76557" + "8378b75d3844df179cefdeccff3c4c43aeb8865063e176fd43a27c93e329f8d4f6fd5bad" + "21", + "02df3920fe4d328315353ff11b0264045248b32f48e860dc59d931ad65f39e97e3a683c7" + "b5c64b21c3fa50a9685fa11f49df9b14ddaae03eb02754b01e03f60fc6aef1e5d6d7d3c", + "1b91c4217b1580cfab56812c16bb5aefc1534ee8d049aa2e1d52a5bfc11519ff89f0d36e" + "a2bfdfce8b5d3cf1527dcf700c0208a70595e9ebe4feafd0eb597e05df54212fd6eca3e", + "21ce52440267fb16e713eabb8bf2d502c81939799f9d09cf48a50dce5da999f3b457dcd7" + "3c212d5d070056b1f373b07ad06e90d96febb7f8cdb4c423ef946f0799c038a3ee68ff4"}, + {NID_sect571r1, NID_sha384, + "5eb53b5f92121396c5ff30e0c92da48db4fbbdbf27297f9bc82614ab78f7fd863e34096c" + "615a02e349d8bc7ae4b0700130704bedf32756b5ee6af10da1cd717d624fadc57a9aa6db" + "4a6c5d6254c0e8f8c3c0d4d03c264eeeafd52cac2c1968d9d85b106167a49d0ccdbefb20" + "bdc10a2555f8149203af52853169a02db94e5e2a", + "3d8936c00c131e38c6566d2464c4e207c878070bbf681695a6cd98cab2c6e80fe98cda80" + "c66a5cf584e90a071144dda59c07b8fc7bb42464dbee5b6f739b0f2ee5fdff7e5a4e7cf", + "0400fc3a8a320e816305772bd5116cec2795d58633a9f490be8a1a360f21d2aebed6038c" + "a4a5081288b6bdb1066307c26897ce38c24f8ccc98a63e371ff6b54f6016917b430c267a" + "f7069719c868d8fd25a38a7338811904e3330a7b2289a8384bf24f6dad5312160f0093bf" + "556fa061ca5e52d6676a8f1a3e4656740c82d3cddf0ac4f903ea885d42610bf1b45d9e57" + "a1", + "050da632cd7aa58340adeb20389a2cb9897b8ec944c47e7177da65d9386a9dec5d63be7b" + "b2d0f5b4943932e1fd7d87d5d7a80bc50a63dfd101a6a28005c894c6a6fa4c652dc519c", + "0e6152b9050127bf306662f6beee81d024492b91efe87a56e70596a4a72cd02dd2f10b97" + "0c9a69909f85bf4783dcd3c32505d7c148166ab43b503ab098b6d95ef09a7932359f60e", + "1f7d68d53ba161b61eeb17139eeae1587a6bd148e288c1f73a6bfb3a0d1f6dd8f9cdc27f" + "a9e8c7a681410500c097ad01f320303421f1239b4a9c4d5446562b5b3cb2fc45a6fe239"}, + {NID_sect571r1, NID_sha384, + "5aced64f702a57ed7fabd045a40c967a485d2a70b0a5e82561d5141ef329469b2da5964a" + "34df203a980111a77adca376c643b9030aa74516f054648c1534d912ea66582adf3c655d" + "bd71ca55e47412315df5e2893e43b2e2dfe6e4dedf426f11846ebef34a99f5615460ce04" + "75f7bc54b4a4fd99e83c982097c3136ac6188a5c", + "3dc7de970bce28a943d7599f2a9010fc99435b93bc4ba884d42503ac2941aa63fd07db34" + "bcbb1127d56d6a4e277d6ca32051ea3467e376f74f98c3999d2f276b282ef8a28cf0cbc", + "0402066a50b9f961a58620f473fcf7d5eb635da47f4ce362f428669ea578d50d1c1513c1" + "45adcc03ba98f3d67bb422141c73e2f94ef9559ccfdc0be20eb206d3d114a5db302bd075" + "1f04437e655bd255e7f013d197210bed70c5c1a6cc1daccb96145c9c438c8a44b4074629" + "830d8df9914166c9378b33040d71918cdd0f47fa64b7c69f43eee0f34414b8f64882f90a" + "c3", + "3b2e20f4e258b7f0cf69a460fece9b4794a12a37c0f8e7aa6f4f51dbfaf508f6f1e0160a" + "b4388891efb09f0ca1f73178f0e8598750c9debd3ff856cb3a2872762ef9e16487a9513", + "2f265aa99ff806ffeacbf9ef7be575ce5300d3cfd4225b1835774ee075d7e530c9fdcd68" + "1584223f84a497119b4eb1fe34cd31d654c2fa262d7549acc251cece9530b26cfa3ab35", + "2c05ce4b35544bd1f20a68eae7f3483e0a0628dbb53f0466166257f69a7a110d2838a76d" + "204e7a955a8977508e65f2ef6d7deee13e4e2ec0f2b9a8b4bedc26b3502813b0334a1b0"}, + {NID_sect571r1, NID_sha384, + "43c24aea343d4e088bea25be69a332c631275c36677093e057de69cc83a4c5e70ab270e5" + "a8930f55846f1a22ec10e03007dcf0942c6761e89c65c6a4f032eed97dc3a2c7f7ed1e82" + "552fe48828a132ba16c41f6bd82a49335428a24fa1679522000e6a1d12c646e0e4b4c584" + "398577ea9493bb334fa3cee8bfdb6c2e66f46436", + "2de6ee12eefa7a4a736484b19b42a513dfc059a060976edc3b0aa4b50e98d72df6506fed" + "0499ff8480986748e938289e54a5e86c0c29733a9bcf5985aa63d8a2b57933a04a8e8e0", + "040073fa1b62d469f2991d54f1472b60da87ba51be0a9dea361d417b91a4a75373695e9f" + "27b3c672322315d7b566b1f22b96c54adce3e958080fa8a02836955f6264dad3a87fd11f" + "060452c0a07ff65fff741c96851657a5afc7eeca239622e1260414ed736a04e487157c52" + "da98a7845bcf6f311e0f2e59bb92248b6d47dcb93da6f7e0af644b7aec7603a01950293d" + "8c", + "1c87653066057636f9a98a7c69a84e103df480a92739abc4d5ba53891591e3aaaef6ef3e" + "f5e89213abbf71af9c84d3b30898580e782f557a03694446492afb05ab801d7dd631c8c", + "086d539546c61e82d74319f0180411172acaf08b5296dc6435d4ed7bd50cf23d3a071deb" + "3be01f74408e64ad244f069cd41227ba127145df5a357489f944b61606ec75e8377db81", + "0a34d9975fbd601614d04aa41506b03fc15189ee8102c0431272d691a322f3e77bcfd19d" + "8bddd19b307012b6c6349f5ecf88b5a69e83588b0e18096117f207304b38c16a9a8592b"}, + {NID_sect571r1, NID_sha384, + "e89210565959d93b483659e62cf41f0a0147ea23890c2f1a694c377a826165e363860e4b" + "084016cda878a43eb68465f81f397ecd50087a25215ce7c4ededa3552218071fa3acd7ae" + "380655fc8fa884998209ffc8a2c26f1ca19dfcfee455dad35a4e72caecd8da47eb9ee21b" + "889162f5d3032724abfd1a31e68612e18bfa9006", + "05468f0df2c9854f5f655743e79c750fd8812db28b096d97207bae7f5aafc6b6090c9c63" + "6ead9e0fde32a1ff8d539b53813733ca812b41b58ff85a941abe4f128d59fdf9847baa4", + "0406591750fbc104f82c213fe88aa620e8a960fd6140598e2e6282e0d5c5ecffd09d22ed" + "94166109561a7f4f694e171189056d8b300b54c8134485500effc7123aaa23862e897912" + "42005bf8ec10a9ac6a92c54e7fb2135e2aa4f84da571d33227bde0aa2e6c153207488223" + "5f3103d9a51e80b7a9a19067f35047ddc52462db7c634c291e8fc5eb2154f6913bd0846b" + "88", + "242308c430de514be1b9084a7e6c96894cd5615a7c71ea22316e539986e9702080ff6cee" + "f2980144c55d9749830c20c9ea90b93dfcdd28fd862b6a15748dbb3d982e4a275129c75", + "361e1b7a0f981bcc65480b370c5e09b1c2e2a67cf41646f6a3d829f663c0911589223740" + "0317601fcee78a04269411d267dad3e8fc6f069529fbdf0bcf9b5f13c9c6de1681e8b0a", + "2620c29f86cbf698cca5f79de364ae131345a802c0cccfaefdd7375dcc9ba6ccac91f709" + "43eb606506e51e2ced50491eb8f48769810b6dc178d56702838f1c2f0930f2a9e4f1db6"}, + {NID_sect571r1, NID_sha384, + "48629ec97f56273599cd9903f8a84ac2ba74275b40e1e42fa47649568babe05cf63c8417" + "d828251acc2eec525b56dc9082b68d51b0c2bbaa7389fbee15d058cf482993b2bedc5a91" + "01f1afdc79989a812478245d191550109fc17215679553c508c84e3d4cfdea377088d09e" + "b214e6f92410facee4790beeecafe72b2e3ed192", + "3d3c6a7ab9450c94aa3b8a1ffb678e5b647af24cbfd66ee3944e6f264f406295b8037674" + "71fc67936fdfed1714b4b8761a07eec86543b7c4da6bd2fcb33fa8cda4077737f398e18", + "04042d536f1b15a22f4ba80066798d8d1c2704988eeb9423319c1850a1ae6bba4097307b" + "515640ed3112e93f1f6ae67c60a4b0d2b6634aa7038a60b52b2b447fd1651857b71711c9" + "75079eb18cc7493a1c7f2f9b621969b9ce9ee37fc0701f6cf56f5d5dc6efb13a384517a3" + "87f253aae1e93bb0a919b0c22e4d6cbc79b449b268a068b7eb2853324b96715d75b8c26f" + "27", + "23ce112d60a2f7c29d77d64acd9f587e0eb75ef8e739b8548e154681efc24243594eef5e" + "33d845b1e4e89bac56f2e9586e042e0fff38bcf79c73fc9aa5fc908261df5cd2c6cb821", + "3a770df8a2bc35e122c1bd551c38400be47f2499ff57618ccd01e14a2e35e87a67b0e40f" + "9a10eee7efcc3d37b474f2840fb8c24a9adf93734680ae6b25818369c8608a2f8f338f1", + "0728a4eae5f5638a51579e224a24ecd4c997001bb8681e23a7476fbf78b4fab84497000f" + "20c1e67e8a4e4116498bcee49ff00026009af31c1037172188aacd264fde8db15c97167"}, + {NID_sect571r1, NID_sha384, + "aa3a9fe467b1ca638dd0622c9ea235a418b39b2e15ad81fee01b6892b240783d8db3c72e" + "16c13df8016dac6addbfb85232158325bd7432fca3b8bf5db3abd0b4c5ccd0999609dc42" + "199ca4680692a0805cdd68108bcb493a558ab507cec0a2782a9e976928985352edb2abc0" + "c07078b59d2fd86fda7fc76cfe573181d934c46c", + "01ce010ea8e6e1a0c26ab22eb90f0700dc73b232c429d36371e68e429792afb7223f1032" + "7708bcff779ea55fb5f22ad87aa054e84d10f5450f1bc9a89279062ea2173f55ab0f76c", + "0404b2b5acef5921e691f10ade81b91ba8e68e73b33a2494cf4ca6617707861f334eb07c" + "a96dfd681dd63f78102f8d792d66102117b739d477e431d9a3efd79bfcc18cea156db58a" + "0e07e421337d4cb7a98cf9c9c6fdf9fa242904d9906d8a6759ef64a82cbf923b2a57073e" + "a0eabd14aa4295bec84d50a1722fecad3e5f064bd3171facdfff45b170e49f185a3c193f" + "2a", + "326b62065b7c779dc398ee03a8332cfb940b0f24a7d3de4a90323d9e390ad3fb1f0036ab" + "f6f525d8d88ab6641302d10db447b78780d366f32ce36ae571e323124b21984c48aea7d", + "3d2b207b428829ed5100a92f7276e16978e374c734834b0d627cddf6aff5cab72dafefc6" + "c038a91426e35ee0f2c1acc11c55a34a89874100b89588aba7b02e19490e66eb49ef6ed", + "3259fef5c2a0779ae408b26e6c7d581fa973156cdb07c329dde0c12b6c498e7a94577719" + "865b7fcc0db078ba72a27bf338ec6b8aa41c15963538c329c55dee67833faebe3b643ad"}, + {NID_sect571r1, NID_sha384, + "6c3937014361799f1461f652841b5137eb0dcaf01dd293298d002f27e9a770b9e1a30367" + "e35c04603881f0c814cf8ecfbe1619cc49cd516b1d60d27de37ed52a5e1cc300e2face46" + "69f308ebe6747255a3d386f16778e494a7cdd10b45171b2bfcdabd91b805bf24857708c1" + "b75e368edb2874321324f83a19154d3a1578c767", + "1e7410d012aeef02b3723346d24ebafd684c99087ecccaea1cf3735d52c4c81dda41812c" + "09f1e874dc964d858ca240a19963d5dc89451f5dd6764426ae41cb23f19cbfdca0fc562", + "040400a3bb3ff07a339ff98f7c45fe032cf42c0e25de8dee2934ce42dfb0c9894f4fce27" + "fef299b41beb8579270efc7b01c0663c3f72d7bdd9f6ff5186eca9c42d15faaef8784211" + "a5006fe998f7a0db06efed050d178865a2b7de6ca7c789cedff7f2158a5e07ac1d335ec0" + "dbd213fc9465399028fad8b7f4d2cd16fb8ceae4d3d53abefd2b4037efd7f7245296bfdf" + "9d", + "2bb0fb9c428e42482d5dbdb35157ad0fa713fe732dac8604c0194e3f9738fac5cf3874bd" + "863718712a3da45b7c4612c8685465ecaec0930d9fec32ab25818d2f25fad580009b698", + "1062386d3e77043298eb88be46bd4e6f33c83a7358926b30ca06a6b7139815f6e1630f73" + "d352a2cb9bc0619d08a89d4bde1636c74b6580543ed743073eec2ae0037bea2b3c9228e", + "1ceef759d804ff7de526559636d0bc7930c096c7b959f04f8fec5d7e96129fba14c8341b" + "0ed84a64c6cce7cd5b058fab7f44dcf3e714544c9b6f9c1d46ce512870deb51856e9dec"}, + {NID_sect571r1, NID_sha384, + "12fea55ffda15db902aa6a4388b9807c89c193cbf75b5d2a4c95206fa43dedc45974c800" + "79933451bdc5b3ea015ed3ca2c54156dc61afb1bc82adefed1491302a48b9d3d2f474ab4" + "5343c611677d360515b93fb36da7a1c1b2341c9cce185c881c0beef33d43967134a190c0" + "9034ae3261f3295b79aebd3fe123616f73cf2089", + "2139839ce38eb879d266065dde5e5ea227244323b330e3ad5a0bc690f3c210f794cf18f0" + "d730693887548bfbc434f48ee10ed34cb41d52172b06e448df938170a5e17311cab8e88", + "0402ecf46b90616b534ea25cc9993942fd7576a1c4f2f443d3b1f56d4490bf0af669c9eb" + "9d110fe2a65609875e1a924bc4b9ed2ed2315047bbaeadaa1029b38a7a87dd8751d4128e" + "8002aec3a2f2557c7152a4907af68aa39485274f20927b2da70823440fbd09cbc308d46e" + "30bd6b705f615b7074fe5421ca36b4aa53861983eceae9a69649495952e75b0f060b5d26" + "e4", + "2e3412b61eb23d33ca2910dc25dd14c04d2c8b403d8077a72b9511d71ee9da6d7e1db093" + "b92287f8fb00aea0576f6712c56d80cc4e3554e0faa9c7d911e3d17682de831bf649bd9", + "06a3075efec81a86175cd1dc2bfe82e83aff1db640184a6a3ed7a0dcdef51aa0be0005c5" + "4ac05f9b65af265af7f2ec3d1d7c137184b0d695d701ff1aed194faf2efa98ce6c5e502", + "237d7ff92480fa7d6d1f5a0564a2608afe5e95ce2c29dd88853d1ad9d4d2beb8d1f0423e" + "db883faadd592394f52048bf2dc26d2dc19279477ed86621c7a5960ee3c3e2d345fda29"}, + {NID_sect571r1, NID_sha384, + "c8395546842ddb545d8ea3db4efe970453dcb06025ac3b7a25aa5ef62070f3021b9a1fea" + "91ff7055b6c398073e7886a6f71afe53c82c47b71377dfe291972503bbeb25bd477bf0e7" + "adc8a5d3f8b34ccd0080d61e121214e1b29802b711cdd8a6bb2275a2395c467ec2c15719" + "52992e448d736d8bd70ee629c75b5e32b8323a00", + "274f70fe69e4dbb55c5d404e39f5196335047113087f8711f2f67f2be4964e4fbcb86568" + "0758df1c401cd677b0971654b7a6aeb7bee0d6d80ac0de14d4f46f356b2d5545c185aa6", + "0402b2321e0a1df083919628dd8b4c318b9ded8a3e660ce5585b21e46843228b4d32da76" + "5a3776c181654aad0ce90724bf85b01b051d236342b48d41a1dbda1e9904d659c98a039a" + "97020227182fcf099d46d9882c0b0f26b0595a2a3166248898df2f3fd27c78e7c0b8b59e" + "f0ed6745660c0dea1acb567f9d943928864dd1e94f8eb6b5b8473c0c91485643189cf679" + "d2", + "2f234066c936625fca10dd080cbbb1228c4d2054cbdeafc8a0a248c0d22807fc92c661b4" + "f69586ecf9469bc4c22895cc73ecf492fb2165a12b027194d409677e7185de24f6870a3", + "3a48daa8e379b3b2f377049a4d462530c9ea67019752f4af4b4192b02d6e028386dcb9ef" + "95c8019e90e09dfc8dff5e6f6812df491906ced39befedf16caef614d8c174e7ea95fc1", + "33f18738cb26d88c8c048c58a210c7be70c71636dc62c022df1bd7747d8c67bfcf5ff2fb" + "3990ed35becf6c77755ac62aed480df55efea578671bd8d50536a10e2c0192bd42d78e2"}, + {NID_sect571r1, NID_sha512, + "10d2e00ae57176c79cdfc746c0c887abe799ee445b151b008e3d9f81eb69be40298ddf37" + "b5c45a9b6e5ff83785d8c140cf11e6a4c3879a2845796872363da24b10f1f8d9cc48f8af" + "20681dceb60dd62095d6d3b1779a4a805de3d74e38983b24c0748618e2f92ef7cac257ff" + "4bd1f41113f2891eb13c47930e69ddbe91f270fb", + "03e1b03ffca4399d5b439fac8f87a5cb06930f00d304193d7daf83d5947d0c1e293f74ae" + "f8e56849f16147133c37a6b3d1b1883e5d61d6b871ea036c5291d9a74541f28878cb986", + "0403b236fc135d849d50140fdaae1045e6ae35ef61091e98f5059b30eb16acdd0deb2bc0" + "d3544bc3a666e0014e50030134fe5466a9e4d3911ed580e28851f3747c0010888e819d3d" + "1f03a8b6627a587d289032bd76374d16771188d7ff281c39542c8977f6872fa932e5daa1" + "4e13792dea9ffe8e9f68d6b525ec99b81a5a60cfb0590cc6f297cfff8d7ba1a8bb81fe2e" + "16", + "2e56a94cfbbcd293e242f0c2a2e9df289a9480e6ba52e0f00fa19bcf2a7769bd155e6b79" + "ddbd6a8646b0e69c8baea27f8034a18796e8eb4fe6e0e2358c383521d9375d2b6b437f9", + "2eb1c5c1fc93cf3c8babed12c031cf1504e094174fd335104cbe4a2abd210b5a14b1c3a4" + "55579f1ed0517c31822340e4dd3c1f967e1b4b9d071a1072afc1a199f8c548cd449a634", + "22f97bb48641235826cf4e597fa8de849402d6bd6114ad2d7fbcf53a08247e5ee921f1bd" + "5994dffee36eedff5592bb93b8bb148214da3b7baebffbd96b4f86c55b3f6bbac142442"}, + {NID_sect571r1, NID_sha512, + "b61a0849a28672cb536fcf61ea2eb389d02ff7a09aa391744cae6597bd56703c40c50ca2" + "dee5f7ee796acfd47322f03d8dbe4d99dc8eec588b4e5467f123075b2d74b2a0b0bbfd3a" + "c5487a905fad6d6ac1421c2e564c0cf15e1f0f10bc31c249b7b46edd2462a55f85560d99" + "bde9d5b06b97817d1dbe0a67c701d6e6e7878272", + "2e09ffd8b434bb7f67d1d3ccf482164f1653c6e4ec64dec2517aa21b7a93b2b21ea1eebb" + "54734882f29303e489f02e3b741a87287e2dcdf3858eb6d2ec668f8b5b26f442ce513a2", + "04036f1be8738dd7dae4486b86a08fe90424f3673e76b10e739442e15f3bfafaf841842a" + "c98e490521b7e7bb94c127529f6ec6a42cc6f06fc80606f1210fe020ff508148f93301c9" + "d304d39666ebe99fe214336ad440d776c88eb916f2f4a3433548b87d2aebed840b424d15" + "c8341b4a0a657bf6a234d4fe78631c8e07ac1f4dc7474cd6b4545d536b7b17c160db4562" + "d9", + "378e7801566d7b77db7a474717ab2195b02957cc264a9449d4126a7cc574728ed5a4769a" + "bd5dde987ca66cfe3d45b5fc52ffd266acb8a8bb3fcb4b60f7febbf48aebe33bd3efbdd", + "3d8105f87fe3166046c08e80a28acc98a80b8b7a729623053c2a9e80afd06756edfe09bd" + "cf3035f6829ede041b745955d219dc5d30ddd8b37f6ba0f6d2857504cdc68a1ed812a10", + "34db9998dc53527114518a7ce3783d674ca8cced823fa05e2942e7a0a20b3cc583dcd930" + "c43f9b93079c5ee18a1f5a66e7c3527c18610f9b47a4da7e245ef803e0662e4d2ad721c"}, + {NID_sect571r1, NID_sha512, + "ba6be551bc60653192401ed8ff9e1acd9013d8811a7a1389528bf07438366f5772cd7aed" + "ad010c19c47622cec03a4d35b8003b39ed901b720629ab59de55a03c1ca50a62987f8da1" + "59e356245df58d5ae1936e65f3cd3acbe03ad1d0fcab4aaf2a7a947549ae776772201efb" + "c6fab1aebfa1d99994d4f43dc28f39c0f279b992", + "2a69bc1df069c6e89722521a63675f318252be629e7558f3716917998e660ac960b0b750" + "562846fe6c12ef492951e51e224754bab84a6eacd4147a5f26ae85ee4381bb14ec2a8c7", + "0404685c0358ca31883cdfd7d609afa8b1e47540a97f473e0ebe98b0aaaab9418877aeea" + "d3a26fb01a4725fda20e7223a4fe7de0df6891c0812555b8b146918d3b80edd11615d95b" + "77067c92736447946c7577965b613e18950d813a4df049a6000895f9dac34d73ea46a83c" + "6a4e7c83831af0d33026825664c44090953521175b9da2a7ac563a0fc5e13c85d34aaf49" + "f2", + "1700d9ac00a987ff3a1d0be4290979317fe60f4f8ce1e0e72a026fc89e28c0070b76ada1" + "4f7a1a66ac2e8aef17eec18b568ada4fd59c05414e55356fc17d9e5079e6cabfc1f220d", + "23a279662efec48f6cf8c7334862525b52ac37a9b03da6a063da2849f878015632427834" + "34fca02fa23e32249666ddc6f596e07750ed21de303f4f10de56f1d37101cb0826bb8bf", + "3b449467b150cba0d7c2b44280c5ac452f1217384ce121c979625d313394f6cef501b819" + "80a02567ca55da2bc313dc0754b5256b08d8e3b63ea033253b205cc5dcb014574b8e9a0"}, + {NID_sect571r1, NID_sha512, + "295720a79ac8201f40a66b06ae5d970afb15f36582897eed25cd92edcd00f70ac8e31c55" + "6eed4375ea044c2e8b227a8e02c0a3e996c9272d52ac7b3ad43b80f217295dddc84b177c" + "f1e800ad08bf7fdd021fb2f49b54162092f8d628679c4ee335abbc90c027264c8b288c6e" + "16eca3172eaa297ba50626b00fe0a0ad3a9dbeeb", + "0d11ed1b78b22b3420df4ddc4acc7c2286d9569dd6dd88e0fa3ecae69bcced68bb81bbb4" + "ca6e9b54e67856e7fdf39155aa27aecb9cc827ccb9cdcf9ac633561b27d8eebfc261aee", + "0401868a1335058a69e3ce24ea4e6e8dc25851777bb28d3a5da67b741ec9c46e26f2d2ae" + "70a48c3e4feabb3b15b3c3ebd561f667ef3b95a587621de6073b9c8a904755566c5f7a3b" + "4206365a03c3f3066eca1af17bbbd08cd52e89f8095075b415cd4b82f3364cbff008fe36" + "42fe71e8a8c634ad0e5d9979251e6cedd42cb97c2203f743210051f5ee1b70c861d2a72c" + "00", + "075e49d2ff6f2aa8b44fad90446474ee0e72323a3c39e731b6c2b075cce0cb9d193bc335" + "6f8fdae0e0143603a57028836ee6451cab101a6eb550042cb41b5c4233d3ad3e87034d1", + "207a8eed0b87efe65ec558a0ccbecb13b9215e176abd93c1a4803fcae713927ece70ec6c" + "41c621357d78a13a950958871a52621f1de7ab74befd964a0e8f4820b84af3e0811bc67", + "2f02017714f54089652e02af36ac5165e44ac4a83747c805a9e003fde4bdb29561dcead2" + "c76b02c195074396a2dcc1b93a256c721716f8eeda8dae443c3eea446118fec3cebc4dc"}, + {NID_sect571r1, NID_sha512, + "a9cff41c6dfdc4a12f31dc375a5455950077ae323d0b7a3d9a8dde73b76e9d7b94ddf9c8" + "8ae8e6c262d704052ac47681fc35adfc56c904baaa6e146eb653984369d76a85596cb744" + "941aa7b558c945ff2e81bd5ef7f00ecb4f43af23b4cea3bd4ba7b1899f1868a0c0ecfc62" + "ccb1d588955597ffbbaf34cab2838efc2b866669", + "2c36ef754b5bd065e9eadde684750acc52795be80f54dd3d7a7d743d968a18f7e404bd71" + "f8a76eb0395f396df5a7c2ff7e0ab6de35df34282fda6ee01fe5b9b68ecb4e378dbe32e", + "0404805e1a23b6eadcf91647b40903bc1fd3b9921861c942fc24d2c03d0544e7c01f004c" + "aeed04b5c4ebbce366a098a878c322cbebe7910bfb0f91b284ac1aef344152fc5831669b" + "7904f589ddb4da482ba1e9a59241b1dfbc7e9b9b69e8f69f8e90460ad58fdecc48a56842" + "ea6aa0537abec0a605ebfb713e588685a98f62e05a7d52082bfd57e3d68fb7851b37ec55" + "67", + "2f2002bdde0c0b0fd92e96abe76c0858e42fd7d94a181c711fc6753572539e18effa8155" + "cde7b1e9ceab2394f9eba874b7ea257d7c308c8ac08500f4944af5f33057650608db8fe", + "27f9109799bced42730faecdeea68259383a45033c6d5dc8d87adf994b46beb34177e013" + "700b13f1253cf756a8866218e9c8adc180f3c242c56b3de28405b36940d53c2aab24f1a", + "20a762ffb2f5a88b0e1356964fb558b555c424946109d16c7548f41a33cfe41da1f48327" + "6a27b188faf948a56670716ddf3b187570c9f514869c4492d7773d6ce453a075f9bc64f"}, + {NID_sect571r1, NID_sha512, + "efa6c582d7fcf5e431aa89b3b00180c0e78efd7ccb0384d90b80e59a115a13e55001d951" + "528c42860132531c9b8ab29dda7a657c53c2ce96fd85549f6f1810e121eb89961295335e" + "aa0e40532d85814a4206e6fffdf9bff76599da9b2e71a22ed572910b0e3bae38ad72c704" + "2579f106739a8628dea5a745168bd918736e488a", + "19ffee50be5496507e3ef5c40ee88a49625e46d1dd1686a52b09ad4a8e3ee9ef364f953b" + "fcd97c52104eecb6138067192997cd4ebadaccb73c7b2560879289a46353a756b73cc43", + "04077dca410e722009ef11b37742c2c003ab3015d0ca0328a70d9d41aae04cb64f7746f1" + "c348b08458eb3bb1788f9ffe7d0570a9b689a9b7aca43e05400bace7630d598f5b484d13" + "c407291f74cddd9ff69470cf0d92afaaddcc4c8c274d4a7a64fd94292ddc8bf080606795" + "376bb725ab4d32c72ef77dff34cfedd34aff2f463d635bfcd7e1fd002d84383dc5bf8d5d" + "23", + "2ea37750fc3bbdeec100694068d55f92fdf35bff9ed49251c4b8bbfb2dec2dd4446999af" + "8848e05c7b819aeb1864430ab4e8c1d684e1cf78947a71b04d5ab8ad61cc7e3e4e24205", + "12ff1852eaff37fee997531039adb1fb2f9b4f4199670c022e8534625fff1fa93390ee9b" + "c7204ad2ba3efc2233260943f1d2381a3cc025b78c6d1f660a7bd6f42e5ed3c123055a9", + "1b4d8abb28ef1a9d77066921ed50eba64b8433cf00c66b8467269a4a914f568cdb86c766" + "a7a6a52437c5d98cfc9a2130dfaba20f3c2001f31bba7071647d51fb9fbd5fc67ee120f"}, + {NID_sect571r1, NID_sha512, + "211acebfaf13bba33a9dd16722ec53baab92a140127d61372cbf1850f2fc894e942e25d7" + "80778235f880743953d04eca7a9205602e388172aec2abf35412b483490751f93b51239b" + "6701cb0aab14e5179b0d7f55d8586358381dd83e3e436bf69a6820317d1701750cb1fea1" + "293467ba589eec5f5779c2dbf2a9b8f28c4dc239", + "3129e96fd28c4198cc5242c1e3531a3979fae643d527044e98d7721aa56b5b4b45dfddfa" + "17a4115e10a2b4f46d92f81cbdd7e86e588a4c6d8c2b3a83f54cebcee1d1dd33e85d81a", + "04073a92abcc991e3f89d82c47fa0fec48e3e7c4d97e2525f8dc2d24da39f616af4a5a80" + "4d2603703f6db7cc9324c5b56a21009373f6605f561c8503394e7746e51273b5722ffbc2" + "3d00684c842f03a53a60cce087f4fcdbf23b7a28c48b6b6544f583342a65d97dd87037c6" + "fef176a1f00513713468273494a5be683b68c5e75bc08995fde763bb6f965da1acb7e894" + "f1", + "0165e52640fcaf8cbdbfe73cb8058c53045e7670aafb2def28d2c9eceb5ed1634b5339cc" + "47ba981eb6eb03ba714c7717e9ed5acc15c8f304702a0409bd4508015d4626cfc5484b1", + "27dcdf16b7156a7a05a752da28b5bd6b233e8a7c16eb7f9030f29c4352e6508f8424d1b5" + "ba789dac4152ac4812ff7975cce69908371a81a4d7d9dd70a8dabebdc4e3af27234f0d0", + "32a654a31f09a9803e502a1440c2bcf122780f4f47aa37e15991d9a548583fdca4880080" + "4712816b212cd3c657e6bd4cb7443a0288592541473c5086e1277250612c21346538374"}, + {NID_sect571r1, NID_sha512, + "ee592e20e0a45c18089c2e41460e65a7d22ed9714379f095d43a308bdd383128aaa6fb24" + "e9d35fd28fc95c5b792ad75c980d2cdf0f460ac60b12c5919d3cb28dac4d488196be6c2d" + "fe462b1b0ce59f8501692255840f5215c0fd8b74b1996a267a5e3b22d2841cf0a0b6315e" + "f4ec7180f1c8494f4c07d5869c01fa2711739efc", + "3d723d2697cd07dd8444f992f2ab4a063db334034c25ea9be99fd7a1f495e3a644e5ea03" + "3a41264e0d24a911e55741d0cab80a0bd678eaec2bd1e60424d4491eb86d664900d907e", + "0400c7a229b5fb9fc774c1b6250f3bba2f0972d1aada7080641c014d012db0637a0656a4" + "3024ec0ea25ff70012646dc19eeb1033aebcc96a001ba876b2f5def6e198b8d4a53f7c7f" + "4a009228a68eafaac214fdfa19923a0c19629de31ac0967c9d02c53dbf221f9affb735d3" + "bad732f381f1ca414d70920231a78f742254d895a33ffab492f8e6094a542e77962a324b" + "a4", + "3b3724a5933353bb9ff5f742f59385e780caa517a963590b7fc89882bed95cf90ca6365c" + "e8b882f2d96e56bd866a5c437733b681308c570c51ec893ea95fede66c7aaf4561173f7", + "2a487c1fc29426e8e85f0a35c177cd168a444959b2f5cd4519b9edd52af3ea829cfe964a" + "c2b59198af8e2d3859ebdf9885ebf57bdf5767da1611d3958de286f91ef397230d65599", + "10fc01efcb22b982f992efb71887bc79c3f32a9088bc2011c269924cee0f47c36452399d" + "499f2933587081b872e9fd2191c20cd5cd94927839228ebcf22cf7acdf4608a2fa66310"}, + {NID_sect571r1, NID_sha512, + "fffca41927debbd53455821441d9115db99fb31bfc69752a382f57bc7abe021f148346ee" + "29e17512c64b4918ab2391d12d6e5643bee6b5682885dc28177b292e23a37ff99b359b9c" + "f7578432af56e0ad1028a6cce7428980654c145af8daf09addbb3be11228d3c742defca9" + "d3b1667f48c63091fe3307ecf72667b02e008f24", + "1999ab45d66cd1d3a0fe6aa43bf5ef1e2a67637d53674f6fbbfb9b582be91fc42a12cdca" + "d94b50b0fc7ac55030de24a0b99fbc4314fa743ef4b5198bcc5f54d8b669fbed78e2e91", + "0400cbf3b0bb4a2e6c225aa922bea3b233da4661df5da7e0a1cd343a9b6655ee87fc60cd" + "763dee21eaa2b81c4dd5af6f4fadc3ceea643b37a6b17a6501e1b9b689fb0c4716911c1f" + "10014b5a9ae025f09066fffa6797ddf95f27eeade06b8ca5be5738f770362d5213c46ecf" + "ca58e3c60cb2bae1f8ab1bf0577c80b4fdad02819fc174cafb33df64fc0ec79713f7b252" + "09", + "253b533d3ad1c7095363e3fc80cb32471061e44dab3f9ae0ea6252f6ef169cee8badd3ec" + "cb77096ae9224f89baeee7e183058579680661655fb689419e36a61e8573de5ecb4cd09", + "3ba94f7682fb61de725a35caf1d4d799c4b05a1d1c44eb1c251dd8efab6b7d713c3fb917" + "776902a1bb202f9226558f4c1e75964349717e6dff938d0befea07a9ca1bbd429dd6318", + "226f43be8e24062180c726b5cb721cc04ffd3acd82183925523ff9e8631aecbec2c224d5" + "a291bb225f0da726d256aa822ee7cc2c7d69df3f2a5beb21132d91bea22e4c5db900cec"}, + {NID_sect571r1, NID_sha512, + "a2f71619ea04f7057e6943c2cece8594b341ec3b96c3915d924f94ba13fd7aaeed41ffa0" + "e842ade414784f1ef825fcf2dbcf7bd8263b802def45f94de596aec0c121fc06558c7bb0" + "6b9f27a9bf56c42090b5dc344e82b69c4f528d33be166764a593483f6fda0cf56e6000ff" + "363ba220f5ea0ea2c3191615c7ae3bb4fa575324", + "2ce1cae0716205330d730e6bc6dbfb6b951dc83ee3b4a7dae75d057e32e8a46e22be75b5" + "f09135452b29c34dfe81a9be2e8dcd243fbd946a0ed14a832a7802e20cfe1abfd3d6e4b", + "04075971399fa621ce535144ec1d57f544d798a0a59207166c3d657e5a80ac00e8f5b643" + "448e3546064d68ae624aaabf36face3016561a248256ff9131950ab8b04710551e12222d" + "0c0224a50f321647f47de3db4fbe1bf1e3a3dce8a834312779f66037315e3326721e3fd6" + "3d4d6ef92b7ba1fa9aeb70f92e2a6701458ac8da49ac386491f2306adcd8dd781fe75e99" + "e1", + "0ad95aa69cf9f40e13f8a72ed6d93388168abc8001670ee4d95fb4b726b1f958205ab2f4" + "58df8bb9ccf2405680d0e6951abbb922cc11d47cfded93c0efdb70caf0c54e7ae96d7e5", + "09ce019161bf29eeaf323933045f59d2efc372904ba50c4a6602b8305234a851d95f06a5" + "b56193ad5d28488102ec25e3f421a5f5c4626b435b423d612e6ab60e0a4fe5d4952e2c5", + "04f7b7ac787b361c2bdfa767da9c22152e402184a7ac133f651fdcd928239215dc917401" + "122a6d41e78299b4235e085399e594465b7f8dbfaae9bf302d83470b4295ea06bb9bd1e"}, + {NID_sect571r1, NID_sha512, + "b60415a831eca2cf60c79a334ef2f327a76d290846ee588d5d33d0a826bb0c7ec3e11dbb" + "384a7f89c8d180425dfae7463e0ea6497d2eec1dde112f1c1efccb532a2e2b66a28e2d36" + "d4252a4c3b12850d465fe21bddc441b92e6a7b0f67744f7f6e7812a0603211a26518b311" + "a5b190ed890ad852bed4f6ed13377cab3eebedf4", + "2c9d0fcfcee7e75c3245ba955ae04188b1033c55ec9c821d8de7685276bda3e9a93c3ae1" + "b003e5ea722913e7b169d67b1aa2dc8cd42adbd9368672a3f81a6817bf3e5529dcb0c8b", + "04019cba4c8ddadb596d7303331f2a22461849ebfbc78ea69277f72dcfe23d08397025ff" + "6691c61ed9958d68a9c5dd8a32048a89a2553afb9077ec43358763756b1473ab2cd8f25b" + "530319eeaa78444b7cc5d8cff4e9199ddd2c6dc7bd935a1be1d8b1c657dd5ac49bc92b0c" + "d91304ef44ddb7ecac05518301bfa0e533402043533f99549621e31dcc282a52186478df" + "2b", + "385e12170ed0b23c9c65ff7edd413145fd343dd841e85c498fae5f36e577641688999028" + "17d4dc39127010faa1da68000a511ac69f80708be5afe1631432f3bab7aaec2bdeb11b4", + "231ef400c6a3a0c7b26ba1b92341b72e138ca62d04ea2172854631c40c48081a18a57e9f" + "055748245d3e83d10d21af39935b0e50c9c86956ac46c1ea03ac4ae023d84b24f830973", + "24d37d67afafb0676cd7b5da2960cabfc804b0b3244b5e6739f8fe43d0841693d28c61b8" + "e76181f8aa24940d76fc5ea8ef3a95f72f67303e1ed85ad6e83cd2c44fd0e0f3f2f44f4"}, + {NID_sect571r1, NID_sha512, + "5d15a08226cc74cf495be681b795d0bde26b19f29aca1a8c6ef77d50271ebdcb4e5fa2df" + "23961fe11620b1c6580183f6ebdceb2c09516c8127be576496fb71449bbbf0a9d3d1c48a" + "25024619b97c3e0d8b165897db96ae9758d13ac28441d7cbfb75b23cb423e0002046358b" + "b6d64779974a5995dfe54b398f95f7d64fc52d96", + "10c057bbaa44ef0f565edc288bfe66d4f6acd8686899359bca418ba89fb690429489a37b" + "d3c6c9f3a8714b2ca225868c6a45fee360e378a676f7ea39321790f32a4b005b81dce43", + "04043b1e7d7b2aee3563813a6692f0b4b61ba82b801697c3e23724a2fbab2af80a2c56be" + "55af41def0a90cbfce7a45ec61629906055a8b2a5013740e96859e580c444ae9f0ddf73a" + "fe06742f13244f1bf156d321eab2c3095ca548c3182c405187c3de2fbcb01d0e16e1fef2" + "46012c87d4d32378629a75b694572ec8583ae0cc813ac64f10bb05a9e52e4805590482f2" + "89", + "2b8076102a6448bd4c4e192e93cdb96ea9a6c7f6753818267ee9e67644df1a4a6c9ff64b" + "be9f64904648cc640fb7f0cce69f9e02878ee950b91ad559a9ec0ae15b676d933f1620f", + "1ad97f4997037adfe306f3859d550f9fd89bce8b566e657d5742feb17466b6b8d507d581" + "0a8cbba44d671b043ddb557df084bf5d1de74ef8bbd6a93690459fc16a17b80dd6c0f28", + "3262ef6e4175e7afe095d18157f67b3d12564d54954e9964e991c31bcfe1dee7e86b3549" + "1ce818400cc0f83b819f478f2f2c2d21c6c7a6be43938841559e09bce70b0d61fe51245"}, + {NID_sect571r1, NID_sha512, + "9eca4bd88200baf61b901fca53dc1f1e7e3f83b94d58a6cc6a2adbc9b1a35fe3f8ec6178" + "7c76ed9a0d696167cd4fe46e1a0883fda564666131753c576a720125e0b712db1da02780" + "67cb899bdb14eec08737e864544663abb1d62f34a2114be07e8e3cf56e2d17099299ce6b" + "6d83b1a34e6153d7c6a32a72c7b1bf4583fcbcf7", + "2c182df7976ea93d996f3ba5d2221f3cb755cc7847bc3fe9e022fa4285046f5bfb426baf" + "a3580beea206de36f87593ae561b4b74a03fcd61fbd0e8d6fd5668f2148819a88a650aa", + "0406004b26a184ed710a5fb67e9d042f7fb9c8f5584b1f70a91b0b3be41c3fd2cd1a537e" + "962fdac8756df33f80fce2bb1bc7241d325bfc36dbaef7cf625918d589b6352fa7447189" + "10036a29b04a494abfe809d956c3cd6f84ea51a7fa28cb39a52f16137a13f72f0726a84f" + "6ae53ae24f5b468733f4cbfa0ce5bbbc1cc7b348fb996d33a45ff656a6a7557619f598a6" + "b7", + "2ab349232bcb4f4816b26bd0049e130fffc90ca0b9308edd50fb9055358a87fe798d0014" + "0b0ae01ed8b1f6bb9bfb726b253c3d4949ce9eecaa6c7fa84d1ef812669fa929f26be0f", + "0bbf2f9765b12742224ba7d064358c0305fb63e9b54a831e302a4546aa02cace798d82a1" + "88d2f536d78544c1571f481289d6ec69d117648026490e781f1eb9fca59bee05234ba7e", + "27e07ee0a1a99c90753cdc8c0291da25a82c116e62ec58b93f91086ac1cc039b35ce7d8b" + "53cdaa92a5ade65a7684b6e7ab79873dce33dcd467c39d0c764ee390b7fb25ca18912c3"}, + {NID_sect571r1, NID_sha512, + "707450bd84141f3b61beb12ffa5ae89d812dd11badcdf6a88a2d50fc70e23f6d822ff447" + "7047abc58cdfa28f97ad7f4911ae0773c04ebed1f51bb2308cf6e5712c4aaed461edd698" + "7fdd1796aab70198276b601241f6a14225dce575830ff60f935fd9f567d1d210652e4710" + "922fa793da78c8fdc30c273cb08365c9fc887f50", + "2d3a65bbe133cc98cf0eb56ee1362195968b4eab960a1d55d8b762f1361fc21348d6f275" + "d4bea1de7158fb97c995e20b92a9c887a3e332d154667ad167acc632eb88a0ead6113a2", + "04034355b54d00c3df7c2762ee2982cb777491aaf78e550c4d2ff5d5a893416eb3517671" + "dbe522b8c553fd71edfe0306cd7628324f4f748091fc5d84ad8af33b896985674649a6f4" + "e507e322a04eb600a3faf3e045959f1e9f798e1c965ced40fd4c0383c0d4e79a96bf693a" + "91d7662780990d0c9dfca77a9bc0e13551d2ab35af8a153fa34ea903961fe66996ca053b" + "64", + "0a59ac1240bcefc52456486ce23b780cc92c8b89314b8442a6898c373bd0adc3725e3eba" + "c580546d1ec82ebfb2e04c608441d962d759ab5f5af1596c6623487e1347537a3c35bf4", + "0c47ef55d93ac36cee537160bbe39c3d4504184188533edfe589a5ab6e5a3e06ef413aa4" + "8710d304f0b2bc380fd69a34aa0b8e2e9466fd8a131cb056dffe4b809a59fd83e594483", + "2d8de1e8e2a52dd1be08435cda69e673b328573edeb1767849536e6f2d5fc8f18f7bfde9" + "36d8c32ecbfa97bf976133d65641320ca1c41e81c388fd6088884bbd89274b1976470fc"}, + {NID_sect571r1, NID_sha512, + "d5ce9d59391cdc47ef942dd2a818d024ae3917deea8a5a4214e4db6a0c5e6b0936f3e632" + "fdb68a3f0006e05c44b7232013e1da5f877cd197f44fd6f60c1fd2378995e9a47534948c" + "5a09e33750f07a7165072ab38095373b07a50bc1391eb6b650ee13acd63d0352e7d9c316" + "95ea1ec6323f9b5f57b426ace56aa7fdbf419be0", + "2a920e8dc928acdd56e3655b2340d4371c793e66f67405fb7a90f31e9c4ef466cc44331d" + "1d2fe3ff7391d2576dc6640772166ef8c154a5ff1808f5dab2f03061070ec8b3f786c36", + "0405edc0fb974314e21ad40d73524d5620b7279084e3ecb9e58b06340ae53d2383efd206" + "b8b1eb3dd60c38f593efc05e2ba5fb8989472bac7db60fcada2d18d4108ab36e8c20cc71" + "0d00444cf65175f6bbaf647739cfd8407e7036fc6cc6208ccb9d776eb13e13b377136c68" + "3e108775d85b6bc5638926432a17344de965d45e042a0a8e0b63c7fc3a36fc15cf718f3b" + "af", + "35a0215892d0c52ece29559ebfa061011da8d597af6b3d1ee988ea4819be194c79a42681" + "476140738b1b5dc191485bd20c96c282ab38ddbc3987343155366b6a5d1ce7053efcd83", + "1a69a9a51f6b0dc196b2a8db2e8bf61764d4c65b038f43b5ed6b5dc2673971c32928606f" + "92b7caafb4dab3cd61ee724bba71a0d5c788cde4b96ef6b453f2a69126dafc20dbc7c82", + "13b5463636b8462cd9f479de8d114e29e7011489bcb9735ffe9ca0707a07df3c0aba0504" + "3eab387bfedd9fe982fbf04968f2be200e9e052cb4b02223b8579913d713acf94e7dc80"}, + /* binary KATs from X9.62 */ + {NID_X9_62_c2tnb191v1, NID_sha1, + "616263", /* "abc" */ + "340562e1dda332f9d2aec168249b5696ee39d0ed4d03760f", + "045de37e756bd55d72e3768cb396ffeb962614dea4ce28a2e755c0e0e02f5fb132caf416" + "ef85b229bbb8e1352003125ba1", + "3eeace72b4919d991738d521879f787cb590aff8189d2b69", + "038e5a11fb55e4c65471dcd4998452b1e02d8af7099bb930", + "0c9a08c34468c244b4e5d6b21b3c68362807416020328b6e"}, + {NID_X9_62_c2tnb239v1, NID_sha1, + "616263", /* "abc" */ + "151a30a6d843db3b25063c5108255cc4448ec0f4d426d4ec884502229c96", + "045894609ccecf9a92533f630de713a958e96c97ccb8f5abb5a688a238deed6dc2d9d0c9" + "4ebfb7d526ba6a61764175b99cb6011e2047f9f067293f57f5", + "18d114bdf47e2913463e50375dc92784a14934a124f83d28caf97c5d8aab", + "03210d71ef6c10157c0d1053dff93e8b085f1e9bc22401f7a24798a63c00", + "1c8c4343a8ecbf7c4d4e48f7d76d5658bc027c77086ec8b10097deb307d6"} +# endif /* OPENSSL_NO_EC2M */ +}; +#endif /* ECDSATEST_CAVS_H */ From builds at travis-ci.org Tue Feb 26 16:01:53 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 26 Feb 2019 16:01:53 +0000 Subject: Passed: openssl/openssl#23494 (OpenSSL_1_1_1b - 50eaac9) In-Reply-To: Message-ID: <5c7562f181e38_43ff5eff0f4a4202859@3f9c0133-8f5e-43e7-aaa6-8bc6fec58e84.mail> Build Update for openssl/openssl ------------------------------------- Build: #23494 Status: Passed Duration: 23 mins and 17 secs Commit: 50eaac9 (OpenSSL_1_1_1b) Author: Matt Caswell Message: Prepare for 1.1.1b release Reviewed-by: Richard Levitte View the changeset: https://github.com/openssl/openssl/compare/OpenSSL_1_1_1b View the full build log and details: https://travis-ci.org/openssl/openssl/builds/498759621?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From matt at openssl.org Tue Feb 26 19:07:15 2019 From: matt at openssl.org (Matt Caswell) Date: Tue, 26 Feb 2019 19:07:15 +0000 Subject: [web] master update Message-ID: <1551208035.008481.28485.nullmailer@dev.openssl.org> The branch master has been updated via 4b05bbb28879460b203a4c99ed0c70c12c63a265 (commit) from 6f4edf054e16bec8cb590de4b77c523334ebfe28 (commit) - Log ----------------------------------------------------------------- commit 4b05bbb28879460b203a4c99ed0c70c12c63a265 Author: Matt Caswell Date: Tue Feb 26 16:49:35 2019 +0000 Clarify the advisory regarding AEAD ciphersuites Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/web/pull/121) ----------------------------------------------------------------------- Summary of changes: news/secadv/20190226.txt | 4 +++- news/vulnerabilities.xml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/news/secadv/20190226.txt b/news/secadv/20190226.txt index 8a4a6dd..64cdbe2 100644 --- a/news/secadv/20190226.txt +++ b/news/secadv/20190226.txt @@ -18,7 +18,7 @@ In order for this to be exploitable "non-stitched" ciphersuites must be in use. Stitched ciphersuites are optimised implementations of certain commonly used ciphersuites. Also the application must call SSL_shutdown() twice even if a protocol error has occurred (applications should not do this but some do -anyway). +anyway). AEAD ciphersuites are not impacted. This issue does not impact OpenSSL 1.1.1 or 1.1.0. @@ -28,6 +28,8 @@ This issue was discovered by Juraj Somorovsky, Robert Merget and Nimrod Aviram, with additional investigation by Steven Collison and Andrew Hourselt. It was reported to OpenSSL on 10th December 2018. +Note: Advisory updated to make it clearer that AEAD ciphersuites are not impacted. + Note ==== diff --git a/news/vulnerabilities.xml b/news/vulnerabilities.xml index 1732db5..5286f54 100644 --- a/news/vulnerabilities.xml +++ b/news/vulnerabilities.xml @@ -47,7 +47,7 @@ Stitched ciphersuites are optimised implementations of certain commonly used ciphersuites. Also the application must call SSL_shutdown() twice even if a protocol error has occurred (applications should not do this but some do - anyway). + anyway). AEAD ciphersuites are not impacted. From levitte at openssl.org Tue Feb 26 21:44:56 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 26 Feb 2019 21:44:56 +0000 Subject: [openssl] master update Message-ID: <1551217496.229155.25132.nullmailer@dev.openssl.org> The branch master has been updated via fa4d419c25c07b49789df96b32c4a1a85a984fa1 (commit) from 1a31d8017ee7e8df0eca76fee601b826699c9ac1 (commit) - Log ----------------------------------------------------------------- commit fa4d419c25c07b49789df96b32c4a1a85a984fa1 Author: Richard Levitte Date: Tue Feb 26 13:08:31 2019 +0100 Add BN_native2bn and BN_bn2nativepad, for native BIGNUM import/export These are a couple of utility functions, to make import and export of BIGNUMs to byte strings in platform native for (little-endian or big-endian) easier. Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8346) ----------------------------------------------------------------------- Summary of changes: crypto/bn/bn_lib.c | 18 ++++++++++++++++++ doc/man3/BN_bn2bin.pod | 14 +++++++++++--- include/openssl/bn.h | 2 ++ util/libcrypto.num | 2 ++ 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c index e624caf..6de17c3 100644 --- a/crypto/bn/bn_lib.c +++ b/crypto/bn/bn_lib.c @@ -536,6 +536,24 @@ int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen) return tolen; } +BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret) +{ +#ifdef B_ENDIAN + return BN_bin2bn(s, len, ret); +#else + return BN_lebin2bn(s, len, ret); +#endif +} + +int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen) +{ +#ifdef B_ENDIAN + return BN_bn2binpad(a, to, tolen); +#else + return BN_bn2lebinpad(a, to, tolen); +#endif +} + int BN_ucmp(const BIGNUM *a, const BIGNUM *b) { int i; diff --git a/doc/man3/BN_bn2bin.pod b/doc/man3/BN_bn2bin.pod index ffc8f9b..52b7328 100644 --- a/doc/man3/BN_bn2bin.pod +++ b/doc/man3/BN_bn2bin.pod @@ -3,9 +3,9 @@ =head1 NAME BN_bn2binpad, -BN_bn2bin, BN_bin2bn, BN_bn2lebinpad, BN_lebin2bn, BN_bn2hex, BN_bn2dec, -BN_hex2bn, BN_dec2bn, BN_print, BN_print_fp, BN_bn2mpi, -BN_mpi2bn - format conversions +BN_bn2bin, BN_bin2bn, BN_bn2lebinpad, BN_lebin2bn, +BN_bn2nativepad, BN_native2bn, BN_bn2hex, BN_bn2dec, BN_hex2bn, BN_dec2bn, +BN_print, BN_print_fp, BN_bn2mpi, BN_mpi2bn - format conversions =head1 SYNOPSIS @@ -18,6 +18,9 @@ BN_mpi2bn - format conversions int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); + int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen); + BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret); + char *BN_bn2hex(const BIGNUM *a); char *BN_bn2dec(const BIGNUM *a); int BN_hex2bn(BIGNUM **a, const char *str); @@ -47,6 +50,11 @@ NULL, a new B is created. BN_bn2lebinpad() and BN_lebin2bn() are identical to BN_bn2binpad() and BN_bin2bn() except the buffer is in little-endian format. +BN_bn2nativepad() and BN_native2bn() are identical to BN_bn2binpad() and +BN_bin2bn() except the buffer is in native format, i.e. most significant +byte first on big-endian platforms, and least significant byte first on +little-endian platforms. + BN_bn2hex() and BN_bn2dec() return printable strings containing the hexadecimal and decimal encoding of B respectively. For negative numbers, the string is prefaced with a leading '-'. The string must be diff --git a/include/openssl/bn.h b/include/openssl/bn.h index 113193c..57d2ddd 100644 --- a/include/openssl/bn.h +++ b/include/openssl/bn.h @@ -223,6 +223,8 @@ int BN_bn2bin(const BIGNUM *a, unsigned char *to); int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen); BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen); BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); int BN_bn2mpi(const BIGNUM *a, unsigned char *to); int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); diff --git a/util/libcrypto.num b/util/libcrypto.num index 991a9fe..9957cf8 100644 --- a/util/libcrypto.num +++ b/util/libcrypto.num @@ -4644,3 +4644,5 @@ CRYPTO_alloc_ex_data 4599 3_0_0 EXIST::FUNCTION: OPENSSL_CTX_new 4600 3_0_0 EXIST::FUNCTION: OPENSSL_CTX_free 4601 3_0_0 EXIST::FUNCTION: OPENSSL_LH_flush 4602 3_0_0 EXIST::FUNCTION: +BN_native2bn 4603 3_0_0 EXIST::FUNCTION: +BN_bn2nativepad 4604 3_0_0 EXIST::FUNCTION: From levitte at openssl.org Tue Feb 26 21:48:07 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 26 Feb 2019 21:48:07 +0000 Subject: [openssl] master update Message-ID: <1551217687.068746.2017.nullmailer@dev.openssl.org> The branch master has been updated via 4089b4340701e3c13e07169e67a7d14519c98658 (commit) from fa4d419c25c07b49789df96b32c4a1a85a984fa1 (commit) - Log ----------------------------------------------------------------- commit 4089b4340701e3c13e07169e67a7d14519c98658 Author: Richard Levitte Date: Fri Feb 15 11:48:24 2019 +0100 Revert "Configure: stop forcing use of DEFINE macros in headers" Github PR #8246 provides a better solution to the problem. This reverts commit f11ffa505f8a9345145a26a05bf77b012b6941bd. [extended tests] Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8247) ----------------------------------------------------------------------- Summary of changes: Configure | 3 --- 1 file changed, 3 deletions(-) diff --git a/Configure b/Configure index 03053bc..83e7e17 100755 --- a/Configure +++ b/Configure @@ -145,8 +145,6 @@ my $gcc_devteam_warn = "-DDEBUG_UNUSED" # -Wlanguage-extension-token -- no, we use asm() # -Wunused-macros -- no, too tricky for BN and _XOPEN_SOURCE etc # -Wextended-offsetof -- no, needed in CMS ASN1 code -# -Wunused-function -- no, it forces header use of safestack et al -# DEFINE macros my $clang_devteam_warn = "" . " -Wswitch-default" . " -Wno-parentheses-equality" @@ -156,7 +154,6 @@ my $clang_devteam_warn = "" . " -Wincompatible-pointer-types-discards-qualifiers" . " -Wmissing-variable-declarations" . " -Wno-unknown-warning-option" - . " -Wno-unused-function" ; # This adds backtrace information to the memory leak info. Is only used From levitte at openssl.org Tue Feb 26 21:49:20 2019 From: levitte at openssl.org (Richard Levitte) Date: Tue, 26 Feb 2019 21:49:20 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551217760.338750.17115.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via e8dc6580368fdc26384fc69d58e038a3e1c6e368 (commit) from 555b2593f7e0d3376043aa5f70d657d29e2f8ad8 (commit) - Log ----------------------------------------------------------------- commit e8dc6580368fdc26384fc69d58e038a3e1c6e368 Author: Richard Levitte Date: Fri Feb 15 11:48:24 2019 +0100 Revert "Configure: stop forcing use of DEFINE macros in headers" Github PR #8246 provides a better solution to the problem. This reverts commit f11ffa505f8a9345145a26a05bf77b012b6941bd. [extended tests] Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/8247) (cherry picked from commit 4089b4340701e3c13e07169e67a7d14519c98658) ----------------------------------------------------------------------- Summary of changes: Configure | 3 --- 1 file changed, 3 deletions(-) diff --git a/Configure b/Configure index 6080122..aefd0ff 100755 --- a/Configure +++ b/Configure @@ -144,8 +144,6 @@ my $gcc_devteam_warn = "-DDEBUG_UNUSED" # -Wlanguage-extension-token -- no, we use asm() # -Wunused-macros -- no, too tricky for BN and _XOPEN_SOURCE etc # -Wextended-offsetof -- no, needed in CMS ASN1 code -# -Wunused-function -- no, it forces header use of safestack et al -# DEFINE macros my $clang_devteam_warn = "" . " -Wswitch-default" . " -Wno-parentheses-equality" @@ -155,7 +153,6 @@ my $clang_devteam_warn = "" . " -Wincompatible-pointer-types-discards-qualifiers" . " -Wmissing-variable-declarations" . " -Wno-unknown-warning-option" - . " -Wno-unused-function" ; # This adds backtrace information to the memory leak info. Is only used From builds at travis-ci.org Tue Feb 26 22:08:22 2019 From: builds at travis-ci.org (Travis CI) Date: Tue, 26 Feb 2019 22:08:22 +0000 Subject: Broken: openssl/openssl#23501 (master - fa4d419) In-Reply-To: Message-ID: <5c75b8d667467_43fc2d3f193183582f6@1ea655f8-006c-4647-8099-c4237ef479a0.mail> Build Update for openssl/openssl ------------------------------------- Build: #23501 Status: Broken Duration: 22 mins and 35 secs Commit: fa4d419 (master) Author: Richard Levitte Message: Add BN_native2bn and BN_bn2nativepad, for native BIGNUM import/export These are a couple of utility functions, to make import and export of BIGNUMs to byte strings in platform native for (little-endian or big-endian) easier. Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8346) View the changeset: https://github.com/openssl/openssl/compare/1a31d8017ee7...fa4d419c25c0 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/498956982?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From yang.yang at baishancloud.com Wed Feb 27 02:11:05 2019 From: yang.yang at baishancloud.com (yang.yang at baishancloud.com) Date: Wed, 27 Feb 2019 02:11:05 +0000 Subject: [openssl] master update Message-ID: <1551233465.441841.3861.nullmailer@dev.openssl.org> The branch master has been updated via e766f4a0531bffdab8ad2038279b755928d7a40a (commit) via a7cef52f9b961dcb1e5d0c3b75185a12a88ad2db (commit) from 4089b4340701e3c13e07169e67a7d14519c98658 (commit) - Log ----------------------------------------------------------------- commit e766f4a0531bffdab8ad2038279b755928d7a40a Author: Paul Yang Date: Mon Feb 25 17:34:03 2019 +0800 Fix the default digest algorthm of SM2 Currently SM2 shares the ameth with EC, so the current default digest algorithm returned is SHA256. This fixes the default digest algorithm of SM2 to SM3, which is the only valid digest algorithm for SM2 signature. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8186) commit a7cef52f9b961dcb1e5d0c3b75185a12a88ad2db Author: Paul Yang Date: Wed Jan 16 16:16:28 2019 +0800 Support raw input data in apps/pkeyutl Some signature algorithms require special treatment for digesting, such as SM2. This patch adds the ability of handling raw input data in apps/pkeyutl other than accepting only pre-hashed input data. Beside, SM2 requries an ID string when signing or verifying a piece of data, this patch also adds the ability for apps/pkeyutil to specify that ID string. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8186) ----------------------------------------------------------------------- Summary of changes: apps/pkeyutl.c | 169 ++++++++++++++++++++++++++++++++++++----- crypto/ec/ec_ameth.c | 7 +- crypto/sm2/sm2_pmeth.c | 3 + doc/man1/pkeyutl.pod | 45 +++++++++++ test/certs/sm2.crt | 13 ++++ test/certs/sm2.key | 5 ++ test/recipes/20-test_pkeyutl.t | 43 +++++++++++ 7 files changed, 267 insertions(+), 18 deletions(-) create mode 100644 test/certs/sm2.crt create mode 100644 test/certs/sm2.key create mode 100644 test/recipes/20-test_pkeyutl.t diff --git a/apps/pkeyutl.c b/apps/pkeyutl.c index 8ee4a30..b3452d3 100644 --- a/apps/pkeyutl.c +++ b/apps/pkeyutl.c @@ -22,7 +22,7 @@ static EVP_PKEY_CTX *init_ctx(const char *kdfalg, int *pkeysize, const char *keyfile, int keyform, int key_type, char *passinarg, int pkey_op, ENGINE *e, - const int impl); + const int impl, EVP_PKEY **ppkey); static int setup_peer(EVP_PKEY_CTX *ctx, int peerform, const char *file, ENGINE *e); @@ -31,6 +31,11 @@ static int do_keyop(EVP_PKEY_CTX *ctx, int pkey_op, unsigned char *out, size_t *poutlen, const unsigned char *in, size_t inlen); +static int do_raw_keyop(int pkey_op, EVP_PKEY_CTX *ctx, + const EVP_MD *md, EVP_PKEY *pkey, BIO *in, + unsigned char *sig, int siglen, + unsigned char **out, size_t *poutlen); + typedef enum OPTION_choice { OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, OPT_ENGINE, OPT_ENGINE_IMPL, OPT_IN, OPT_OUT, @@ -38,12 +43,16 @@ typedef enum OPTION_choice { OPT_VERIFY, OPT_VERIFYRECOVER, OPT_REV, OPT_ENCRYPT, OPT_DECRYPT, OPT_DERIVE, OPT_SIGFILE, OPT_INKEY, OPT_PEERKEY, OPT_PASSIN, OPT_PEERFORM, OPT_KEYFORM, OPT_PKEYOPT, OPT_PKEYOPT_PASSIN, OPT_KDF, - OPT_KDFLEN, OPT_R_ENUM + OPT_KDFLEN, OPT_R_ENUM, + OPT_RAWIN, OPT_DIGEST } OPTION_CHOICE; const OPTIONS pkeyutl_options[] = { {"help", OPT_HELP, '-', "Display this summary"}, {"in", OPT_IN, '<', "Input file - default stdin"}, + {"rawin", OPT_RAWIN, '-', "Indicate the input data is in raw form"}, + {"digest", OPT_DIGEST, 's', + "Specify the digest algorithm when signing the raw input data"}, {"out", OPT_OUT, '>', "Output file - default stdout"}, {"pubin", OPT_PUBIN, '-', "Input is a public key"}, {"certin", OPT_CERTIN, '-', "Input is a cert with a public key"}, @@ -82,6 +91,7 @@ int pkeyutl_main(int argc, char **argv) BIO *in = NULL, *out = NULL; ENGINE *e = NULL; EVP_PKEY_CTX *ctx = NULL; + EVP_PKEY *pkey = NULL; char *infile = NULL, *outfile = NULL, *sigfile = NULL, *passinarg = NULL; char hexdump = 0, asn1parse = 0, rev = 0, *prog; unsigned char *buf_in = NULL, *buf_out = NULL, *sig = NULL; @@ -97,6 +107,8 @@ int pkeyutl_main(int argc, char **argv) int kdflen = 0; STACK_OF(OPENSSL_STRING) *pkeyopts = NULL; STACK_OF(OPENSSL_STRING) *pkeyopts_passin = NULL; + int rawin = 0; + const EVP_MD *md = NULL; prog = opt_init(argc, argv, pkeyutl_options); while ((o = opt_next()) != OPT_EOF) { @@ -203,12 +215,39 @@ int pkeyutl_main(int argc, char **argv) goto end; } break; + case OPT_RAWIN: + rawin = 1; + break; + case OPT_DIGEST: + if (!opt_md(opt_arg(), &md)) + goto end; + break; } } argc = opt_num_rest(); if (argc != 0) goto opthelp; + if (rawin && pkey_op != EVP_PKEY_OP_SIGN && pkey_op != EVP_PKEY_OP_VERIFY) { + BIO_printf(bio_err, + "%s: -rawin can only be used with -sign or -verify\n", + prog); + goto opthelp; + } + + if (md != NULL && !rawin) { + BIO_printf(bio_err, + "%s: -digest can only be used with -rawin\n", + prog); + goto opthelp; + } + + if (rawin && rev) { + BIO_printf(bio_err, "%s: -rev cannot be used with raw input\n", + prog); + goto opthelp; + } + if (kdfalg != NULL) { if (kdflen == 0) { BIO_printf(bio_err, @@ -225,7 +264,7 @@ int pkeyutl_main(int argc, char **argv) goto opthelp; } ctx = init_ctx(kdfalg, &keysize, inkey, keyform, key_type, - passinarg, pkey_op, e, engine_impl); + passinarg, pkey_op, e, engine_impl, &pkey); if (ctx == NULL) { BIO_printf(bio_err, "%s: Error initializing context\n", prog); ERR_print_errors(bio_err); @@ -327,7 +366,8 @@ int pkeyutl_main(int argc, char **argv) } } - if (in != NULL) { + /* Raw input data is handled elsewhere */ + if (in != NULL && !rawin) { /* Read the input data */ buf_inlen = bio_to_mem(&buf_in, keysize * 10, in); if (buf_inlen < 0) { @@ -346,8 +386,9 @@ int pkeyutl_main(int argc, char **argv) } } - /* Sanity check the input */ - if (buf_inlen > EVP_MAX_MD_SIZE + /* Sanity check the input if the input is not raw */ + if (!rawin + && buf_inlen > EVP_MAX_MD_SIZE && (pkey_op == EVP_PKEY_OP_SIGN || pkey_op == EVP_PKEY_OP_VERIFY || pkey_op == EVP_PKEY_OP_VERIFYRECOVER)) { @@ -357,8 +398,13 @@ int pkeyutl_main(int argc, char **argv) } if (pkey_op == EVP_PKEY_OP_VERIFY) { - rv = EVP_PKEY_verify(ctx, sig, (size_t)siglen, - buf_in, (size_t)buf_inlen); + if (rawin) { + rv = do_raw_keyop(pkey_op, ctx, md, pkey, in, sig, siglen, + NULL, 0); + } else { + rv = EVP_PKEY_verify(ctx, sig, (size_t)siglen, + buf_in, (size_t)buf_inlen); + } if (rv == 1) { BIO_puts(out, "Signature Verified Successfully\n"); ret = 0; @@ -371,14 +417,20 @@ int pkeyutl_main(int argc, char **argv) buf_outlen = kdflen; rv = 1; } else { - rv = do_keyop(ctx, pkey_op, NULL, (size_t *)&buf_outlen, - buf_in, (size_t)buf_inlen); - } - if (rv > 0 && buf_outlen != 0) { - buf_out = app_malloc(buf_outlen, "buffer output"); - rv = do_keyop(ctx, pkey_op, - buf_out, (size_t *)&buf_outlen, - buf_in, (size_t)buf_inlen); + if (rawin) { + /* rawin allocates the buffer in do_raw_keyop() */ + rv = do_raw_keyop(pkey_op, ctx, md, pkey, in, NULL, 0, + &buf_out, (size_t *)&buf_outlen); + } else { + rv = do_keyop(ctx, pkey_op, NULL, (size_t *)&buf_outlen, + buf_in, (size_t)buf_inlen); + if (rv > 0 && buf_outlen != 0) { + buf_out = app_malloc(buf_outlen, "buffer output"); + rv = do_keyop(ctx, pkey_op, + buf_out, (size_t *)&buf_outlen, + buf_in, (size_t)buf_inlen); + } + } } if (rv <= 0) { if (pkey_op != EVP_PKEY_OP_DERIVE) { @@ -416,7 +468,7 @@ int pkeyutl_main(int argc, char **argv) static EVP_PKEY_CTX *init_ctx(const char *kdfalg, int *pkeysize, const char *keyfile, int keyform, int key_type, char *passinarg, int pkey_op, ENGINE *e, - const int engine_impl) + const int engine_impl, EVP_PKEY **ppkey) { EVP_PKEY *pkey = NULL; EVP_PKEY_CTX *ctx = NULL; @@ -474,10 +526,25 @@ static EVP_PKEY_CTX *init_ctx(const char *kdfalg, int *pkeysize, } ctx = EVP_PKEY_CTX_new_id(kdfnid, impl); } else { + EC_KEY *eckey = NULL; + const EC_GROUP *group = NULL; + int nid; + if (pkey == NULL) goto end; + /* SM2 needs a special treatment */ + if (EVP_PKEY_id(pkey) == EVP_PKEY_EC) { + if ((eckey = EVP_PKEY_get0_EC_KEY(pkey)) == NULL + || (group = EC_KEY_get0_group(eckey)) == NULL + || (nid = EC_GROUP_get_curve_name(group)) == 0) + goto end; + if (nid == NID_sm2) + EVP_PKEY_set_alias_type(pkey, EVP_PKEY_SM2); + } *pkeysize = EVP_PKEY_size(pkey); ctx = EVP_PKEY_CTX_new(pkey, impl); + if (ppkey != NULL) + *ppkey = pkey; EVP_PKEY_free(pkey); } @@ -574,3 +641,71 @@ static int do_keyop(EVP_PKEY_CTX *ctx, int pkey_op, } return rv; } + +#define TBUF_MAXSIZE 2048 + +static int do_raw_keyop(int pkey_op, EVP_PKEY_CTX *ctx, + const EVP_MD *md, EVP_PKEY *pkey, BIO *in, + unsigned char *sig, int siglen, + unsigned char **out, size_t *poutlen) +{ + int rv = 0; + EVP_MD_CTX *mctx = NULL; + unsigned char tbuf[TBUF_MAXSIZE]; + int tbuf_len = 0; + + if ((mctx = EVP_MD_CTX_new()) == NULL) { + BIO_printf(bio_err, "Error: out of memory\n"); + return rv; + } + EVP_MD_CTX_set_pkey_ctx(mctx, ctx); + + switch(pkey_op) { + case EVP_PKEY_OP_VERIFY: + if (EVP_DigestVerifyInit(mctx, NULL, md, NULL, pkey) != 1) + goto end; + for (;;) { + tbuf_len = BIO_read(in, tbuf, TBUF_MAXSIZE); + if (tbuf_len == 0) + break; + if (tbuf_len < 0) { + BIO_printf(bio_err, "Error reading raw input data\n"); + goto end; + } + rv = EVP_DigestVerifyUpdate(mctx, tbuf, (size_t)tbuf_len); + if (rv != 1) { + BIO_printf(bio_err, "Error verifying raw input data\n"); + goto end; + } + } + rv = EVP_DigestVerifyFinal(mctx, sig, (size_t)siglen); + break; + case EVP_PKEY_OP_SIGN: + if (EVP_DigestSignInit(mctx, NULL, md, NULL, pkey) != 1) + goto end; + for (;;) { + tbuf_len = BIO_read(in, tbuf, TBUF_MAXSIZE); + if (tbuf_len == 0) + break; + if (tbuf_len < 0) { + BIO_printf(bio_err, "Error reading raw input data\n"); + goto end; + } + rv = EVP_DigestSignUpdate(mctx, tbuf, (size_t)tbuf_len); + if (rv != 1) { + BIO_printf(bio_err, "Error signing raw input data\n"); + goto end; + } + } + rv = EVP_DigestSignFinal(mctx, NULL, poutlen); + if (rv == 1 && out != NULL) { + *out = app_malloc(*poutlen, "buffer output"); + rv = EVP_DigestSignFinal(mctx, *out, poutlen); + } + break; + } + + end: + EVP_MD_CTX_free(mctx); + return rv; +} diff --git a/crypto/ec/ec_ameth.c b/crypto/ec/ec_ameth.c index 54d55ad..2beeb82 100644 --- a/crypto/ec/ec_ameth.c +++ b/crypto/ec/ec_ameth.c @@ -504,7 +504,12 @@ static int ec_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2) #endif case ASN1_PKEY_CTRL_DEFAULT_MD_NID: - *(int *)arg2 = NID_sha256; + if (EVP_PKEY_id(pkey) == EVP_PKEY_SM2) { + /* For SM2, the only valid digest-alg is SM3 */ + *(int *)arg2 = NID_sm3; + } else { + *(int *)arg2 = NID_sha256; + } return 1; case ASN1_PKEY_CTRL_SET1_TLS_ENCPT: diff --git a/crypto/sm2/sm2_pmeth.c b/crypto/sm2/sm2_pmeth.c index 8ae7556..5ca430f 100644 --- a/crypto/sm2/sm2_pmeth.c +++ b/crypto/sm2/sm2_pmeth.c @@ -248,6 +248,9 @@ static int pkey_sm2_ctrl_str(EVP_PKEY_CTX *ctx, else return -2; return EVP_PKEY_CTX_set_ec_param_enc(ctx, param_enc); + } else if (strcmp(type, "sm2_id") == 0) { + return pkey_sm2_ctrl(ctx, EVP_PKEY_CTRL_SET1_ID, + (int)strlen(value), (void *)value); } return -2; diff --git a/doc/man1/pkeyutl.pod b/doc/man1/pkeyutl.pod index 24354db..c566f6d 100644 --- a/doc/man1/pkeyutl.pod +++ b/doc/man1/pkeyutl.pod @@ -10,6 +10,8 @@ pkeyutl - public key algorithm utility B B [B<-help>] [B<-in file>] +[B<-rawin>] +[B<-digest algorithm>] [B<-out file>] [B<-sigfile file>] [B<-inkey file>] @@ -55,6 +57,23 @@ Print out a usage message. This specifies the input filename to read data from or standard input if this option is not specified. +=item B<-rawin> + +This indicates that the input data is raw data, which is not hashed by any +message digest algorithm. The user can specify a digest algorithm by using +the B<-digest> option. This option can only be used with B<-sign> and +B<-verify>. + +=item B<-digest algorithm> + +This specifies the digest algorithm which is used to hash the input data before +signing or verifying it with the input key. This option could be omitted if the +signature algorithm does not require one (for instance, EdDSA). If this option +is omitted but the signature algorithm requires one, a default value will be +used. For signature algorithms like RSA, DSA and ECDSA, SHA-256 will be the +default digest algorithm. For SM2, it will be SM3. If this option is present, +then the B<-rawin> option must be also specified to B. + =item B<-out filename> Specifies the output filename to write to or standard output by @@ -300,6 +319,22 @@ this digest is assumed by default. The X25519 and X448 algorithms support key derivation only. Currently there are no additional options. +=head1 SM2 + +The SM2 algorithm supports sign, verify, encrypt and decrypt operations. For +the sign and verify operations, SM2 requires an ID string to be passed in. The +following B value is supported: + +=over 4 + +=item B + +This sets the ID string used in SM2 sign or verify operations. While verifying +an SM2 signature, the ID string must be the same one used when signing the data. +Otherwise the verification will fail. + +=back + =head1 EXAMPLES Sign some data using a private key: @@ -338,6 +373,16 @@ Derive using the same algorithm, but read key from environment variable MYPASS: openssl pkeyutl -kdf scrypt -kdflen 16 -pkeyopt_passin pass:env:MYPASS \ -pkeyopt hexsalt:aabbcc -pkeyopt N:16384 -pkeyopt r:8 -pkeyopt p:1 +Sign some data using an L private key and a specific ID: + + openssl pkeyutl -sign -in file -inkey sm2.key -out sig -rawin -digest sm3 \ + -pkeyopt sm2_id:someid + +Verify some data using an L certificate and a specific ID: + + openssl pkeyutl -verify -certin -in file -inkey sm2.cert -sigfile sig \ + -rawin -digest sm3 -pkeyopt sm2_id:someid + =head1 SEE ALSO L, L, L diff --git a/test/certs/sm2.crt b/test/certs/sm2.crt new file mode 100644 index 0000000..189abb1 --- /dev/null +++ b/test/certs/sm2.crt @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIIB6DCCAY6gAwIBAgIJAKH2BR6ITHZeMAoGCCqBHM9VAYN1MGgxCzAJBgNVBAYT +AkNOMQswCQYDVQQIDAJMTjERMA8GA1UEBwwIU2hlbnlhbmcxETAPBgNVBAoMCFRl +c3QgT3JnMRAwDgYDVQQLDAdUZXN0IE9VMRQwEgYDVQQDDAtUZXN0IFNNMiBDQTAe +Fw0xOTAyMTkwNzA1NDhaFw0yMzAzMzAwNzA1NDhaMG8xCzAJBgNVBAYTAkNOMQsw +CQYDVQQIDAJMTjERMA8GA1UEBwwIU2hlbnlhbmcxETAPBgNVBAoMCFRlc3QgT3Jn +MRAwDgYDVQQLDAdUZXN0IE9VMRswGQYDVQQDDBJUZXN0IFNNMiBTaWduIENlcnQw +WTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAQwqeNkWp7fiu1KZnuDkAucpM8piEzE +TL1ymrcrOBvv8mhNNkeb20asbWgFQI2zOrSM99/sXGn9rM2/usM/MlcaoxowGDAJ +BgNVHRMEAjAAMAsGA1UdDwQEAwIGwDAKBggqgRzPVQGDdQNIADBFAiEA9edBnAqT +TNuGIUIvXsj6/nP+AzXA9HGtAIY4nrqW8LkCIHyZzhRTlxYtgfqkDl0OK5QQRCZH +OZOfmtx613VyzXwc +-----END CERTIFICATE----- diff --git a/test/certs/sm2.key b/test/certs/sm2.key new file mode 100644 index 0000000..1efd364 --- /dev/null +++ b/test/certs/sm2.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQgSKhk+4xGyDI+IS2H +WVfFPDxh1qv5+wtrddaIsGNXGZihRANCAAQwqeNkWp7fiu1KZnuDkAucpM8piEzE +TL1ymrcrOBvv8mhNNkeb20asbWgFQI2zOrSM99/sXGn9rM2/usM/Mlca +-----END PRIVATE KEY----- diff --git a/test/recipes/20-test_pkeyutl.t b/test/recipes/20-test_pkeyutl.t new file mode 100644 index 0000000..a051138 --- /dev/null +++ b/test/recipes/20-test_pkeyutl.t @@ -0,0 +1,43 @@ +#! /usr/bin/env perl +# Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +use strict; +use warnings; + +use File::Spec; +use OpenSSL::Test qw/:DEFAULT srctop_file/; +use OpenSSL::Test::Utils; + +setup("test_pkeyutl"); + +plan tests => 2; + +sub sign +{ + # Utilize the sm2.crt as the TBS file + return run(app(([ 'openssl', 'pkeyutl', '-sign', + '-in', srctop_file('test', 'certs', 'sm2.crt'), + '-inkey', srctop_file('test', 'certs', 'sm2.key'), + '-out', 'signature.sm2', '-rawin', + '-digest', 'sm3', '-pkeyopt', 'sm2_id:someid']))); +} + +sub verify +{ + # Utilize the sm2.crt as the TBS file + return run(app(([ 'openssl', 'pkeyutl', '-verify', '-certin', + '-in', srctop_file('test', 'certs', 'sm2.crt'), + '-inkey', srctop_file('test', 'certs', 'sm2.crt'), + '-sigfile', 'signature.sm2', '-rawin', + '-digest', 'sm3', '-pkeyopt', 'sm2_id:someid']))); +} + +ok(sign, "Sign a piece of data using SM2"); +ok(verify, "Verify an SM2 signature against a piece of data"); + +unlink 'signature.sm2'; From yang.yang at baishancloud.com Wed Feb 27 02:11:19 2019 From: yang.yang at baishancloud.com (yang.yang at baishancloud.com) Date: Wed, 27 Feb 2019 02:11:19 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551233479.675916.4919.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 9c6d536f532a737216f2ae0e7d168c99ed989a0d (commit) from e8dc6580368fdc26384fc69d58e038a3e1c6e368 (commit) - Log ----------------------------------------------------------------- commit 9c6d536f532a737216f2ae0e7d168c99ed989a0d Author: Paul Yang Date: Mon Feb 25 17:34:03 2019 +0800 Fix the default digest algorthm of SM2 Currently SM2 shares the ameth with EC, so the current default digest algorithm returned is SHA256. This fixes the default digest algorithm of SM2 to SM3, which is the only valid digest algorithm for SM2 signature. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8186) (cherry picked from commit e766f4a0531bffdab8ad2038279b755928d7a40a) ----------------------------------------------------------------------- Summary of changes: crypto/ec/ec_ameth.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crypto/ec/ec_ameth.c b/crypto/ec/ec_ameth.c index 8b363e0..48aa801 100644 --- a/crypto/ec/ec_ameth.c +++ b/crypto/ec/ec_ameth.c @@ -504,7 +504,12 @@ static int ec_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2) #endif case ASN1_PKEY_CTRL_DEFAULT_MD_NID: - *(int *)arg2 = NID_sha256; + if (EVP_PKEY_id(pkey) == EVP_PKEY_SM2) { + /* For SM2, the only valid digest-alg is SM3 */ + *(int *)arg2 = NID_sm3; + } else { + *(int *)arg2 = NID_sha256; + } return 1; case ASN1_PKEY_CTRL_SET1_TLS_ENCPT: From no-reply at appveyor.com Wed Feb 27 03:59:15 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 27 Feb 2019 03:59:15 +0000 Subject: Build failed: openssl master.22906 Message-ID: <20190227035915.1.AED8C0A7BC0117C8@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 27 07:50:10 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 27 Feb 2019 07:50:10 +0000 Subject: Build completed: openssl master.22907 Message-ID: <20190227075010.1.ED63F3DAB32721D7@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 27 08:01:25 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 27 Feb 2019 08:01:25 +0000 Subject: Build failed: openssl master.22912 Message-ID: <20190227080125.1.5383333E7FC85CF8@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 27 08:53:38 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 27 Feb 2019 08:53:38 +0000 Subject: Build failed: openssl master.22914 Message-ID: <20190227085338.1.80A71A5BBB48F7DB@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Wed Feb 27 10:31:13 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 27 Feb 2019 10:31:13 +0000 Subject: [openssl] master update Message-ID: <1551263473.723132.23116.nullmailer@dev.openssl.org> The branch master has been updated via 546ca2f4f5f7e26f7352116754e77f63804b78a6 (commit) from e766f4a0531bffdab8ad2038279b755928d7a40a (commit) - Log ----------------------------------------------------------------- commit 546ca2f4f5f7e26f7352116754e77f63804b78a6 Author: Richard Levitte Date: Wed Feb 27 09:53:17 2019 +0100 The use of the likes of UINT32_MAX requires internal/numbers.h Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8354) ----------------------------------------------------------------------- Summary of changes: crypto/evp/pbe_scrypt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/crypto/evp/pbe_scrypt.c b/crypto/evp/pbe_scrypt.c index 7224025..cad0440 100644 --- a/crypto/evp/pbe_scrypt.c +++ b/crypto/evp/pbe_scrypt.c @@ -10,6 +10,7 @@ #include #include #include +#include "internal/numbers.h" #ifndef OPENSSL_NO_SCRYPT From levitte at openssl.org Wed Feb 27 10:33:47 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 27 Feb 2019 10:33:47 +0000 Subject: [openssl] master update Message-ID: <1551263627.247320.25431.nullmailer@dev.openssl.org> The branch master has been updated via 149c12d5e41b238ce4af6d1b6b3a767b40293bd7 (commit) via 2fce15b58b2502a614529707eb45b6e5cac4eb15 (commit) via 88780b1c5f6000fe6731fec74efe697bcf493b6c (commit) from 546ca2f4f5f7e26f7352116754e77f63804b78a6 (commit) - Log ----------------------------------------------------------------- commit 149c12d5e41b238ce4af6d1b6b3a767b40293bd7 Author: Richard Levitte Date: Wed Feb 13 04:23:14 2019 +0100 Make the padlock engine build correctly Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8220) commit 2fce15b58b2502a614529707eb45b6e5cac4eb15 Author: Richard Levitte Date: Wed Feb 13 04:21:59 2019 +0100 Ensure configured module specific and application specific defines are used Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8220) commit 88780b1c5f6000fe6731fec74efe697bcf493b6c Author: Richard Levitte Date: Wed Feb 13 03:58:52 2019 +0100 Add PADLOCK_ASM to dso_defines rather than lib_defines Since the padlock code is an engine, the assembler is for a module, not a library link to when building a program... there's a distinction. Fixes #2311 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8220) ----------------------------------------------------------------------- Summary of changes: Configurations/unix-Makefile.tmpl | 8 ++++++-- Configure | 2 +- engines/e_padlock.c | 6 +++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 1e6709f..dfae9af 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -231,8 +231,8 @@ LIB_CPPFLAGS={- our $lib_cppflags = join(' ', $target{lib_cppflags} || (), $target{shared_cppflag} || (), (map { '-D'.$_ } - @{$config{lib_defines}}, - @{$config{shared_defines}}), + @{$config{lib_defines} || ()}, + @{$config{shared_defines} || ()}), @{$config{lib_cppflags}}, @{$config{shared_cppflag}}); join(' ', $lib_cppflags, @@ -256,6 +256,9 @@ LIB_LDFLAGS={- join(' ', $target{shared_ldflag} || (), LIB_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS) DSO_CPPFLAGS={- join(' ', $target{dso_cppflags} || (), $target{module_cppflags} || (), + (map { '-D'.$_ } + @{$config{dso_defines} || ()}, + @{$config{module_defines} || ()}), @{$config{dso_cppflags}}, @{$config{module_cppflags}}, '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -} @@ -276,6 +279,7 @@ DSO_LDFLAGS={- join(' ', $target{dso_ldflags} || (), '$(CNF_LDFLAGS)', '$(LDFLAGS)') -} DSO_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS) BIN_CPPFLAGS={- join(' ', $target{bin_cppflags} || (), + (map { '-D'.$_ } @{$config{bin_defines} || ()}), @{$config{bin_cppflags}}, '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -} BIN_CFLAGS={- join(' ', $target{bin_cflags} || (), diff --git a/Configure b/Configure index 83e7e17..2765639 100755 --- a/Configure +++ b/Configure @@ -1415,7 +1415,7 @@ unless ($disabled{asm}) { push @{$config{lib_defines}}, "X25519_ASM"; } if ($target{padlock_asm_src} ne $table{DEFAULTS}->{padlock_asm_src}) { - push @{$config{lib_defines}}, "PADLOCK_ASM"; + push @{$config{dso_defines}}, "PADLOCK_ASM"; } if ($target{poly1305_asm_src} ne "") { push @{$config{lib_defines}}, "POLY1305_ASM"; diff --git a/engines/e_padlock.c b/engines/e_padlock.c index daf8c94..10b5a05 100644 --- a/engines/e_padlock.c +++ b/engines/e_padlock.c @@ -28,7 +28,7 @@ */ # undef COMPILE_HW_PADLOCK -# if !defined(I386_ONLY) && defined(PADLOCK_ASM) +# if defined(PADLOCK_ASM) # define COMPILE_HW_PADLOCK # ifdef OPENSSL_NO_DYNAMIC_ENGINE static ENGINE *ENGINE_padlock(void); @@ -135,7 +135,7 @@ static int padlock_init(ENGINE *e) * This stuff is needed if this ENGINE is being compiled into a * self-contained shared-library. */ -# ifdef DYNAMIC_ENGINE +# ifndef OPENSSL_NO_DYNAMIC_ENGINE static int padlock_bind_fn(ENGINE *e, const char *id) { if (id && (strcmp(id, padlock_id) != 0)) { @@ -151,7 +151,7 @@ static int padlock_bind_fn(ENGINE *e, const char *id) IMPLEMENT_DYNAMIC_CHECK_FN() IMPLEMENT_DYNAMIC_BIND_FN(padlock_bind_fn) -# endif /* DYNAMIC_ENGINE */ +# endif /* !OPENSSL_NO_DYNAMIC_ENGINE */ /* ===== Here comes the "real" engine ===== */ /* Some AES-related constants */ From levitte at openssl.org Wed Feb 27 10:34:45 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 27 Feb 2019 10:34:45 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551263686.000192.26885.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via e8926acfe25418d029656d4abb321096a2cf17c5 (commit) via 5dcfd143e1409b0915875f9dcbbba253db41b138 (commit) via 9c8516b63cec92a53f3064ce3acb6d672eeea7a1 (commit) from 9c6d536f532a737216f2ae0e7d168c99ed989a0d (commit) - Log ----------------------------------------------------------------- commit e8926acfe25418d029656d4abb321096a2cf17c5 Author: Richard Levitte Date: Wed Feb 13 04:23:14 2019 +0100 Make the padlock engine build correctly Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8220) (cherry picked from commit 149c12d5e41b238ce4af6d1b6b3a767b40293bd7) commit 5dcfd143e1409b0915875f9dcbbba253db41b138 Author: Richard Levitte Date: Wed Feb 13 04:21:59 2019 +0100 Ensure configured module specific and application specific defines are used Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8220) (cherry picked from commit 2fce15b58b2502a614529707eb45b6e5cac4eb15) commit 9c8516b63cec92a53f3064ce3acb6d672eeea7a1 Author: Richard Levitte Date: Wed Feb 13 03:58:52 2019 +0100 Add PADLOCK_ASM to dso_defines rather than lib_defines Since the padlock code is an engine, the assembler is for a module, not a library link to when building a program... there's a distinction. Fixes #2311 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8220) (cherry picked from commit 88780b1c5f6000fe6731fec74efe697bcf493b6c) ----------------------------------------------------------------------- Summary of changes: Configurations/unix-Makefile.tmpl | 8 ++++++-- Configure | 2 +- engines/e_padlock.c | 6 +++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 288b792..1292053 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -260,8 +260,8 @@ LIB_CPPFLAGS={- our $lib_cppflags = join(' ', $target{lib_cppflags} || (), $target{shared_cppflag} || (), (map { '-D'.$_ } - @{$config{lib_defines}}, - @{$config{shared_defines}}), + @{$config{lib_defines} || ()}, + @{$config{shared_defines} || ()}), @{$config{lib_cppflags}}, @{$config{shared_cppflag}}); join(' ', $lib_cppflags, @@ -285,6 +285,9 @@ LIB_LDFLAGS={- join(' ', $target{shared_ldflag} || (), LIB_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS) DSO_CPPFLAGS={- join(' ', $target{dso_cppflags} || (), $target{module_cppflags} || (), + (map { '-D'.$_ } + @{$config{dso_defines} || ()}, + @{$config{module_defines} || ()}), @{$config{dso_cppflags}}, @{$config{module_cppflags}}, '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -} @@ -305,6 +308,7 @@ DSO_LDFLAGS={- join(' ', $target{dso_ldflags} || (), '$(CNF_LDFLAGS)', '$(LDFLAGS)') -} DSO_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS) BIN_CPPFLAGS={- join(' ', $target{bin_cppflags} || (), + (map { '-D'.$_ } @{$config{bin_defines} || ()}), @{$config{bin_cppflags}}, '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -} BIN_CFLAGS={- join(' ', $target{bin_cflags} || (), diff --git a/Configure b/Configure index aefd0ff..65aa110 100755 --- a/Configure +++ b/Configure @@ -1419,7 +1419,7 @@ unless ($disabled{asm}) { push @{$config{lib_defines}}, "X25519_ASM"; } if ($target{padlock_asm_src} ne $table{DEFAULTS}->{padlock_asm_src}) { - push @{$config{lib_defines}}, "PADLOCK_ASM"; + push @{$config{dso_defines}}, "PADLOCK_ASM"; } if ($target{poly1305_asm_src} ne "") { push @{$config{lib_defines}}, "POLY1305_ASM"; diff --git a/engines/e_padlock.c b/engines/e_padlock.c index f6b1f16..f6c2159 100644 --- a/engines/e_padlock.c +++ b/engines/e_padlock.c @@ -41,7 +41,7 @@ */ # undef COMPILE_HW_PADLOCK -# if !defined(I386_ONLY) && defined(PADLOCK_ASM) +# if defined(PADLOCK_ASM) # define COMPILE_HW_PADLOCK # ifdef OPENSSL_NO_DYNAMIC_ENGINE static ENGINE *ENGINE_padlock(void); @@ -148,7 +148,7 @@ static int padlock_init(ENGINE *e) * This stuff is needed if this ENGINE is being compiled into a * self-contained shared-library. */ -# ifdef DYNAMIC_ENGINE +# ifndef OPENSSL_NO_DYNAMIC_ENGINE static int padlock_bind_fn(ENGINE *e, const char *id) { if (id && (strcmp(id, padlock_id) != 0)) { @@ -164,7 +164,7 @@ static int padlock_bind_fn(ENGINE *e, const char *id) IMPLEMENT_DYNAMIC_CHECK_FN() IMPLEMENT_DYNAMIC_BIND_FN(padlock_bind_fn) -# endif /* DYNAMIC_ENGINE */ +# endif /* !OPENSSL_NO_DYNAMIC_ENGINE */ /* ===== Here comes the "real" engine ===== */ /* Some AES-related constants */ From matt at openssl.org Wed Feb 27 11:40:23 2019 From: matt at openssl.org (Matt Caswell) Date: Wed, 27 Feb 2019 11:40:23 +0000 Subject: [openssl] master update Message-ID: <1551267623.649077.10465.nullmailer@dev.openssl.org> The branch master has been updated via 8d76481b189b7195ef932e0fb8f0e23ab0120771 (commit) from 149c12d5e41b238ce4af6d1b6b3a767b40293bd7 (commit) - Log ----------------------------------------------------------------- commit 8d76481b189b7195ef932e0fb8f0e23ab0120771 Author: Simo Sorce Date: Wed Sep 19 16:23:45 2018 -0400 Implement SSH KDF SSH's KDF is defined in RFC 4253 in Section 7.2 Signed-off-by: Simo Sorce Reviewed-by: Paul Dale Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/7290) ----------------------------------------------------------------------- Summary of changes: crypto/err/openssl.txt | 7 + crypto/evp/kdf_lib.c | 3 +- crypto/include/internal/evp_int.h | 1 + crypto/kdf/build.info | 2 +- crypto/kdf/kdf_err.c | 8 + crypto/kdf/sshkdf.c | 288 ++ crypto/objects/obj_dat.h | 9 +- crypto/objects/obj_mac.num | 1 + crypto/objects/objects.txt | 3 + doc/man7/EVP_KDF_SSHKDF.pod | 175 ++ include/openssl/kdf.h | 10 + include/openssl/kdferr.h | 7 + include/openssl/obj_mac.h | 4 + test/recipes/30-test_evp_data/evpkdf.txt | 4853 ++++++++++++++++++++++++++++++ 14 files changed, 5366 insertions(+), 5 deletions(-) create mode 100644 crypto/kdf/sshkdf.c create mode 100644 doc/man7/EVP_KDF_SSHKDF.pod diff --git a/crypto/err/openssl.txt b/crypto/err/openssl.txt index 82c33f0..aec6a8d 100644 --- a/crypto/err/openssl.txt +++ b/crypto/err/openssl.txt @@ -852,6 +852,10 @@ KDF_F_KDF_SCRYPT_CTRL_UINT32:121:kdf_scrypt_ctrl_uint32 KDF_F_KDF_SCRYPT_CTRL_UINT64:122:kdf_scrypt_ctrl_uint64 KDF_F_KDF_SCRYPT_DERIVE:123:kdf_scrypt_derive KDF_F_KDF_SCRYPT_NEW:124:kdf_scrypt_new +KDF_F_KDF_SSHKDF_CTRL:130:kdf_sshkdf_ctrl +KDF_F_KDF_SSHKDF_CTRL_STR:131:kdf_sshkdf_ctrl_str +KDF_F_KDF_SSHKDF_DERIVE:132:kdf_sshkdf_derive +KDF_F_KDF_SSHKDF_NEW:133:kdf_sshkdf_new KDF_F_KDF_TLS1_PRF_CTRL_STR:125:kdf_tls1_prf_ctrl_str KDF_F_KDF_TLS1_PRF_DERIVE:126:kdf_tls1_prf_derive KDF_F_KDF_TLS1_PRF_NEW:127:kdf_tls1_prf_new @@ -2353,6 +2357,9 @@ KDF_R_MISSING_PASS:110:missing pass KDF_R_MISSING_SALT:111:missing salt KDF_R_MISSING_SECRET:107:missing secret KDF_R_MISSING_SEED:106:missing seed +KDF_R_MISSING_SESSION_ID:113:missing session id +KDF_R_MISSING_TYPE:114:missing type +KDF_R_MISSING_XCGHASH:115:missing xcghash KDF_R_UNKNOWN_PARAMETER_TYPE:103:unknown parameter type KDF_R_VALUE_ERROR:108:value error KDF_R_VALUE_MISSING:102:value missing diff --git a/crypto/evp/kdf_lib.c b/crypto/evp/kdf_lib.c index 05f5cec..811fe72 100644 --- a/crypto/evp/kdf_lib.c +++ b/crypto/evp/kdf_lib.c @@ -29,7 +29,8 @@ static const EVP_KDF_METHOD *standard_methods[] = { &scrypt_kdf_meth, #endif &tls1_prf_kdf_meth, - &hkdf_kdf_meth + &hkdf_kdf_meth, + &sshkdf_kdf_meth, }; DECLARE_OBJ_BSEARCH_CMP_FN(const EVP_KDF_METHOD *, const EVP_KDF_METHOD *, diff --git a/crypto/include/internal/evp_int.h b/crypto/include/internal/evp_int.h index b3dbbe2..dc75fe9 100644 --- a/crypto/include/internal/evp_int.h +++ b/crypto/include/internal/evp_int.h @@ -168,6 +168,7 @@ extern const EVP_KDF_METHOD pbkdf2_kdf_meth; extern const EVP_KDF_METHOD scrypt_kdf_meth; extern const EVP_KDF_METHOD tls1_prf_kdf_meth; extern const EVP_KDF_METHOD hkdf_kdf_meth; +extern const EVP_KDF_METHOD sshkdf_kdf_meth; struct evp_md_st { int type; diff --git a/crypto/kdf/build.info b/crypto/kdf/build.info index dce960e..f483c77 100644 --- a/crypto/kdf/build.info +++ b/crypto/kdf/build.info @@ -1,3 +1,3 @@ LIBS=../../libcrypto SOURCE[../../libcrypto]=\ - tls1_prf.c kdf_err.c kdf_util.c hkdf.c scrypt.c pbkdf2.c + tls1_prf.c kdf_err.c kdf_util.c hkdf.c scrypt.c pbkdf2.c sshkdf.c diff --git a/crypto/kdf/kdf_err.c b/crypto/kdf/kdf_err.c index b62c25f..a70f521 100644 --- a/crypto/kdf/kdf_err.c +++ b/crypto/kdf/kdf_err.c @@ -31,6 +31,11 @@ static const ERR_STRING_DATA KDF_str_functs[] = { "kdf_scrypt_ctrl_uint64"}, {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_SCRYPT_DERIVE, 0), "kdf_scrypt_derive"}, {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_SCRYPT_NEW, 0), "kdf_scrypt_new"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_SSHKDF_CTRL, 0), "kdf_sshkdf_ctrl"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_SSHKDF_CTRL_STR, 0), + "kdf_sshkdf_ctrl_str"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_SSHKDF_DERIVE, 0), "kdf_sshkdf_derive"}, + {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_SSHKDF_NEW, 0), "kdf_sshkdf_new"}, {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_TLS1_PRF_CTRL_STR, 0), "kdf_tls1_prf_ctrl_str"}, {ERR_PACK(ERR_LIB_KDF, KDF_F_KDF_TLS1_PRF_DERIVE, 0), @@ -70,6 +75,9 @@ static const ERR_STRING_DATA KDF_str_reasons[] = { {ERR_PACK(ERR_LIB_KDF, 0, KDF_R_MISSING_SALT), "missing salt"}, {ERR_PACK(ERR_LIB_KDF, 0, KDF_R_MISSING_SECRET), "missing secret"}, {ERR_PACK(ERR_LIB_KDF, 0, KDF_R_MISSING_SEED), "missing seed"}, + {ERR_PACK(ERR_LIB_KDF, 0, KDF_R_MISSING_SESSION_ID), "missing session id"}, + {ERR_PACK(ERR_LIB_KDF, 0, KDF_R_MISSING_TYPE), "missing type"}, + {ERR_PACK(ERR_LIB_KDF, 0, KDF_R_MISSING_XCGHASH), "missing xcghash"}, {ERR_PACK(ERR_LIB_KDF, 0, KDF_R_UNKNOWN_PARAMETER_TYPE), "unknown parameter type"}, {ERR_PACK(ERR_LIB_KDF, 0, KDF_R_VALUE_ERROR), "value error"}, diff --git a/crypto/kdf/sshkdf.c b/crypto/kdf/sshkdf.c new file mode 100644 index 0000000..24f37cb --- /dev/null +++ b/crypto/kdf/sshkdf.c @@ -0,0 +1,288 @@ +/* + * Copyright 2018-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 + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include +#include +#include +#include +#include "internal/cryptlib.h" +#include "internal/evp_int.h" +#include "kdf_local.h" + +/* See RFC 4253, Section 7.2 */ + +static void kdf_sshkdf_reset(EVP_KDF_IMPL *impl); +static int SSHKDF(const EVP_MD *evp_md, + const unsigned char *key, size_t key_len, + const unsigned char *xcghash, size_t xcghash_len, + const unsigned char *session_id, size_t session_id_len, + char type, unsigned char *okey, size_t okey_len); + +struct evp_kdf_impl_st { + const EVP_MD *md; + unsigned char *key; /* K */ + size_t key_len; + unsigned char *xcghash; /* H */ + size_t xcghash_len; + char type; /* X */ + unsigned char *session_id; + size_t session_id_len; +}; + +static EVP_KDF_IMPL *kdf_sshkdf_new(void) +{ + EVP_KDF_IMPL *impl; + + if ((impl = OPENSSL_zalloc(sizeof(*impl))) == NULL) + KDFerr(KDF_F_KDF_SSHKDF_NEW, ERR_R_MALLOC_FAILURE); + return impl; +} + +static void kdf_sshkdf_free(EVP_KDF_IMPL *impl) +{ + kdf_sshkdf_reset(impl); + OPENSSL_free(impl); +} + +static void kdf_sshkdf_reset(EVP_KDF_IMPL *impl) +{ + OPENSSL_clear_free(impl->key, impl->key_len); + OPENSSL_clear_free(impl->xcghash, impl->xcghash_len); + OPENSSL_clear_free(impl->session_id, impl->session_id_len); + memset(impl, 0, sizeof(*impl)); +} + +static int kdf_sshkdf_parse_buffer_arg(unsigned char **dst, size_t *dst_len, + va_list args) +{ + const unsigned char *p; + size_t len; + + p = va_arg(args, const unsigned char *); + len = va_arg(args, size_t); + OPENSSL_clear_free(*dst, *dst_len); + *dst = OPENSSL_memdup(p, len); + if (*dst == NULL) + return 0; + + *dst_len = len; + return 1; +} + +static int kdf_sshkdf_ctrl(EVP_KDF_IMPL *impl, int cmd, va_list args) +{ + int t; + + switch (cmd) { + case EVP_KDF_CTRL_SET_MD: + impl->md = va_arg(args, const EVP_MD *); + if (impl->md == NULL) + return 0; + + return 1; + + case EVP_KDF_CTRL_SET_KEY: + return kdf_sshkdf_parse_buffer_arg(&impl->key, + &impl->key_len, args); + + case EVP_KDF_CTRL_SET_SSHKDF_XCGHASH: + return kdf_sshkdf_parse_buffer_arg(&impl->xcghash, + &impl->xcghash_len, args); + + case EVP_KDF_CTRL_SET_SSHKDF_SESSION_ID: + return kdf_sshkdf_parse_buffer_arg(&impl->session_id, + &impl->session_id_len, args); + + case EVP_KDF_CTRL_SET_SSHKDF_TYPE: + t = va_arg(args, int); + if (t < 65 || t > 70) { + KDFerr(KDF_F_KDF_SSHKDF_CTRL, KDF_R_VALUE_ERROR); + return 0; + } + + impl->type = (char)t; + return 1; + + default: + return -2; + + } +} + +static int kdf_sshkdf_ctrl_str(EVP_KDF_IMPL *impl, const char *type, + const char *value) +{ + if (value == NULL) { + KDFerr(KDF_F_KDF_SSHKDF_CTRL_STR, KDF_R_VALUE_MISSING); + return 0; + } + + if (strcmp(type, "md") == 0) + return kdf_md2ctrl(impl, kdf_sshkdf_ctrl, EVP_KDF_CTRL_SET_MD, value); + + if (strcmp(type, "key") == 0) + return kdf_str2ctrl(impl, kdf_sshkdf_ctrl, + EVP_KDF_CTRL_SET_KEY, value); + + if (strcmp(type, "hexkey") == 0) + return kdf_hex2ctrl(impl, kdf_sshkdf_ctrl, + EVP_KDF_CTRL_SET_KEY, value); + + if (strcmp(type, "xcghash") == 0) + return kdf_str2ctrl(impl, kdf_sshkdf_ctrl, + EVP_KDF_CTRL_SET_SSHKDF_XCGHASH, value); + + if (strcmp(type, "hexxcghash") == 0) + return kdf_hex2ctrl(impl, kdf_sshkdf_ctrl, + EVP_KDF_CTRL_SET_SSHKDF_XCGHASH, value); + + if (strcmp(type, "session_id") == 0) + return kdf_str2ctrl(impl, kdf_sshkdf_ctrl, + EVP_KDF_CTRL_SET_SSHKDF_SESSION_ID, value); + + if (strcmp(type, "hexsession_id") == 0) + return kdf_hex2ctrl(impl, kdf_sshkdf_ctrl, + EVP_KDF_CTRL_SET_SSHKDF_SESSION_ID, value); + + if (strcmp(type, "type") == 0) { + if (strlen(value) != 1) { + KDFerr(KDF_F_KDF_SSHKDF_CTRL_STR, KDF_R_VALUE_ERROR); + return 0; + } + + return call_ctrl(kdf_sshkdf_ctrl, impl, EVP_KDF_CTRL_SET_SSHKDF_TYPE, + (int)value[0]); + } + + KDFerr(KDF_F_KDF_SSHKDF_CTRL_STR, KDF_R_UNKNOWN_PARAMETER_TYPE); + return -2; +} + +static size_t kdf_sshkdf_size(EVP_KDF_IMPL *impl) +{ + return SIZE_MAX; +} + +static int kdf_sshkdf_derive(EVP_KDF_IMPL *impl, unsigned char *key, + size_t keylen) +{ + if (impl->md == NULL) { + KDFerr(KDF_F_KDF_SSHKDF_DERIVE, KDF_R_MISSING_MESSAGE_DIGEST); + return 0; + } + if (impl->key == NULL) { + KDFerr(KDF_F_KDF_SSHKDF_DERIVE, KDF_R_MISSING_KEY); + return 0; + } + if (impl->xcghash == NULL) { + KDFerr(KDF_F_KDF_SSHKDF_DERIVE, KDF_R_MISSING_XCGHASH); + return 0; + } + if (impl->session_id == NULL) { + KDFerr(KDF_F_KDF_SSHKDF_DERIVE, KDF_R_MISSING_SESSION_ID); + return 0; + } + if (impl->type == 0) { + KDFerr(KDF_F_KDF_SSHKDF_DERIVE, KDF_R_MISSING_TYPE); + return 0; + } + return SSHKDF(impl->md, impl->key, impl->key_len, + impl->xcghash, impl->xcghash_len, + impl->session_id, impl->session_id_len, + impl->type, key, keylen); +} + +const EVP_KDF_METHOD sshkdf_kdf_meth = { + EVP_KDF_SSHKDF, + kdf_sshkdf_new, + kdf_sshkdf_free, + kdf_sshkdf_reset, + kdf_sshkdf_ctrl, + kdf_sshkdf_ctrl_str, + kdf_sshkdf_size, + kdf_sshkdf_derive, +}; + +static int SSHKDF(const EVP_MD *evp_md, + const unsigned char *key, size_t key_len, + const unsigned char *xcghash, size_t xcghash_len, + const unsigned char *session_id, size_t session_id_len, + char type, unsigned char *okey, size_t okey_len) +{ + EVP_MD_CTX *md = NULL; + unsigned char digest[EVP_MAX_MD_SIZE]; + unsigned int dsize = 0; + size_t cursize = 0; + int ret = 0; + + md = EVP_MD_CTX_new(); + if (md == NULL) + return 0; + + if (!EVP_DigestInit_ex(md, evp_md, NULL)) + goto out; + + if (!EVP_DigestUpdate(md, key, key_len)) + goto out; + + if (!EVP_DigestUpdate(md, xcghash, xcghash_len)) + goto out; + + if (!EVP_DigestUpdate(md, &type, 1)) + goto out; + + if (!EVP_DigestUpdate(md, session_id, session_id_len)) + goto out; + + if (!EVP_DigestFinal_ex(md, digest, &dsize)) + goto out; + + if (okey_len < dsize) { + memcpy(okey, digest, okey_len); + ret = 1; + goto out; + } + + memcpy(okey, digest, dsize); + + for (cursize = dsize; cursize < okey_len; cursize += dsize) { + + if (!EVP_DigestInit_ex(md, evp_md, NULL)) + goto out; + + if (!EVP_DigestUpdate(md, key, key_len)) + goto out; + + if (!EVP_DigestUpdate(md, xcghash, xcghash_len)) + goto out; + + if (!EVP_DigestUpdate(md, okey, cursize)) + goto out; + + if (!EVP_DigestFinal_ex(md, digest, &dsize)) + goto out; + + if (okey_len < cursize + dsize) { + memcpy(okey + cursize, digest, okey_len - cursize); + ret = 1; + goto out; + } + + memcpy(okey + cursize, digest, dsize); + } + + ret = 1; + +out: + EVP_MD_CTX_free(md); + OPENSSL_cleanse(digest, EVP_MAX_MD_SIZE); + return ret; +} + diff --git a/crypto/objects/obj_dat.h b/crypto/objects/obj_dat.h index 78a9e7a..e7c59d6 100644 --- a/crypto/objects/obj_dat.h +++ b/crypto/objects/obj_dat.h @@ -1079,7 +1079,7 @@ static const unsigned char so[7767] = { 0x28,0xCC,0x45,0x03,0x04, /* [ 7761] OBJ_gmac */ }; -#define NUM_NID 1203 +#define NUM_NID 1204 static const ASN1_OBJECT nid_objs[NUM_NID] = { {"UNDEF", "undefined", NID_undef}, {"rsadsi", "RSA Data Security, Inc.", NID_rsadsi, 6, &so[0]}, @@ -2284,9 +2284,10 @@ static const ASN1_OBJECT nid_objs[NUM_NID] = { {"AES-256-SIV", "aes-256-siv", NID_aes_256_siv}, {"BLAKE2BMAC", "blake2bmac", NID_blake2bmac}, {"BLAKE2SMAC", "blake2smac", NID_blake2smac}, + {"SSHKDF", "sshkdf", NID_sshkdf}, }; -#define NUM_SN 1194 +#define NUM_SN 1195 static const unsigned int sn_objs[NUM_SN] = { 364, /* "AD_DVCS" */ 419, /* "AES-128-CBC" */ @@ -2572,6 +2573,7 @@ static const unsigned int sn_objs[NUM_SN] = { 167, /* "SMIME-CAPS" */ 100, /* "SN" */ 1006, /* "SNILS" */ + 1203, /* "SSHKDF" */ 16, /* "ST" */ 143, /* "SXNetID" */ 1062, /* "SipHash" */ @@ -3484,7 +3486,7 @@ static const unsigned int sn_objs[NUM_SN] = { 1093, /* "x509ExtAdmission" */ }; -#define NUM_LN 1194 +#define NUM_LN 1195 static const unsigned int ln_objs[NUM_LN] = { 363, /* "AD Time Stamping" */ 405, /* "ANSI X9.62" */ @@ -4634,6 +4636,7 @@ static const unsigned int ln_objs[NUM_LN] = { 1139, /* "sm4-ctr" */ 1133, /* "sm4-ecb" */ 1135, /* "sm4-ofb" */ + 1203, /* "sshkdf" */ 16, /* "stateOrProvinceName" */ 660, /* "streetAddress" */ 498, /* "subtreeMaximumQuality" */ diff --git a/crypto/objects/obj_mac.num b/crypto/objects/obj_mac.num index 8779020..623e7e8 100644 --- a/crypto/objects/obj_mac.num +++ b/crypto/objects/obj_mac.num @@ -1200,3 +1200,4 @@ aes_192_siv 1199 aes_256_siv 1200 blake2bmac 1201 blake2smac 1202 +sshkdf 1203 diff --git a/crypto/objects/objects.txt b/crypto/objects/objects.txt index 344b67b..cb0b99c 100644 --- a/crypto/objects/objects.txt +++ b/crypto/objects/objects.txt @@ -1609,6 +1609,9 @@ secg-scheme 14 3 : dhSinglePass-cofactorDH-sha512kdf-scheme # NID for HKDF : HKDF : hkdf +# NID for SSHKDF + : SSHKDF : sshkdf + # RFC 4556 1 3 6 1 5 2 3 : id-pkinit id-pkinit 4 : pkInitClientAuth : PKINIT Client Auth diff --git a/doc/man7/EVP_KDF_SSHKDF.pod b/doc/man7/EVP_KDF_SSHKDF.pod new file mode 100644 index 0000000..9c9734e --- /dev/null +++ b/doc/man7/EVP_KDF_SSHKDF.pod @@ -0,0 +1,175 @@ +=pod + +=head1 NAME + +EVP_KDF_SSHKDF - The SSHKDF EVP_KDF implementation + +=head1 DESCRIPTION + +Support for computing the B KDF through the B API. + +The EVP_KDF_SSHKDF algorithm implements the SSHKDF key derivation function. +It is defined in RFC 4253, section 7.2 and is used by SSH to derive IVs, +encryption keys and integrity keys. +Five inputs are required to perform key derivation: The hashing function +(for example SHA256), the Initial Key, the Exchange Hash, the Session ID, +and the derivation key type. + +=head2 Numeric identity + +B is the numeric identity for this implementation; it +can be used with the EVP_KDF_CTX_new_id() function. + +=head2 Supported controls + +The supported controls are: + +=over 4 + +=item B + +=item B + +These controls work as described in L. + +=item B + +=item B + +These controls expect two arguments: C, C + +They set the respective values to the first B bytes of the buffer +B. If a value is already set, the contents are replaced. + +EVP_KDF_ctrl_str() takes two type strings for these controls: + +=over 4 + +=item "xcghash" + +=item "session_id" + +The value string is used as is. + +=item "hexxcghash" + +=item "hexsession_id" + +The value string is expected to be a hexadecimal number, which will be +decoded before being passed on as the control value. + +=back + +=item B + +This control expects one argument: C + +Sets the type for the SSHHKDF operation. There are six supported types: + +=over 4 + +=item EVP_KDF_SSHKDF_TYPE_ININITAL_IV_CLI_TO_SRV + +The Initial IV from client to server. +A single char of value 65 (ASCII char 'A'). + +=item EVP_KDF_SSHKDF_TYPE_ININITAL_IV_SRV_TO_CLI + +The Initial IV from server to client +A single char of value 66 (ASCII char 'B'). + +=item EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_CLI_TO_SRV + +The Encryption Key from client to server +A single char of value 67 (ASCII char 'C'). + +=item EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_SRV_TO_CLI + +The Encryption Key from server to client +A single char of value 68 (ASCII char 'D'). + +=item EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_CLI_TO_SRV + +The Integrity Key from client to server +A single char of value 69 (ASCII char 'E'). + +=item EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_SRV_TO_CLI + +The Integrity Key from client to server +A single char of value 70 (ASCII char 'F'). + +=back + +EVP_KDF_ctrl_str() type string: "type" + +The value is a string of length one character. The only valid values +are the numerical values of the ASCII caracters: "A" (65) to "F" (70). + +=back + +=head1 NOTES + +A context for SSHKDF can be obtained by calling: + + EVP_KDF_CTX *kctx = EVP_KDF_CTX_new_id(EVP_KDF_SSHKDF); + +The output length of the SSHKDF derivation is specified via the C +parameter to the L function. +Since the SSHKDF output length is variable, calling L +to obtain the requisite length is not meaningful. The caller must +allocate a buffer of the desired length, and pass that buffer to the +L function along with the desired length. + +=head1 EXAMPLE + +This example derives an 8 byte IV using SHA-256 with a 1K "key" and appropriate +"xcghash" and "session_id" values: + + EVP_KDF_CTX *kctx; + unsigned char key[1024] = "01234..."; + unsigned char xcghash[32] = "012345..."; + unsigned char session_id[32] = "012345..."; + unsigned char out[8]; + size_t outlen = sizeof(out); + kctx = EVP_KDF_CTX_new_id(EVP_KDF_SSHKDF); + + if (EVP_KDF_CTX_set_md(kctx, EVP_sha256()) <= 0) + /* Error */ + if (EVP_KDF_CTX_set1_key(kctx, key, 1024) <= 0) + /* Error */ + if (EVP_KDF_CTX_set1_sshkdf_xcghash(kctx, xcghash, 32) <= 0) + /* Error */ + if (EVP_KDF_CTX_set1_sshkdf_session_id(kctx, session_id, 32) <= 0) + /* Error */ + if (EVP_KDF_CTX_set_sshkdf_type(kctx, + EVP_KDF_SSHKDF_TYPE_ININITAL_IV_CLI_TO_SRV) <= 0) + /* Error */ + if (EVP_KDF_derive(kctx, out, &outlen) <= 0) + /* Error */ + + +=head1 CONFORMING TO + +RFC 4253 + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L + +=head1 COPYRIGHT + +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 +in the file LICENSE in the source distribution or at +L. + +=cut + diff --git a/include/openssl/kdf.h b/include/openssl/kdf.h index 663ba90..acd9449 100644 --- a/include/openssl/kdf.h +++ b/include/openssl/kdf.h @@ -22,6 +22,7 @@ extern "C" { # define EVP_KDF_SCRYPT NID_id_scrypt # define EVP_KDF_TLS1_PRF NID_tls1_prf # define EVP_KDF_HKDF NID_hkdf +# define EVP_KDF_SSHKDF NID_sshkdf EVP_KDF_CTX *EVP_KDF_CTX_new_id(int id); void EVP_KDF_CTX_free(EVP_KDF_CTX *ctx); @@ -49,11 +50,20 @@ int EVP_KDF_derive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen); # define EVP_KDF_CTRL_SET_SCRYPT_N 0x0d /* uint64_t */ # define EVP_KDF_CTRL_SET_SCRYPT_R 0x0e /* uint32_t */ # define EVP_KDF_CTRL_SET_SCRYPT_P 0x0f /* uint32_t */ +# define EVP_KDF_CTRL_SET_SSHKDF_XCGHASH 0x10 /* unsigned char *, size_t */ +# define EVP_KDF_CTRL_SET_SSHKDF_SESSION_ID 0x11 /* unsigned char *, size_t */ +# define EVP_KDF_CTRL_SET_SSHKDF_TYPE 0x12 /* int */ # define EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND 0 # define EVP_KDF_HKDF_MODE_EXTRACT_ONLY 1 # define EVP_KDF_HKDF_MODE_EXPAND_ONLY 2 +#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_CLI_TO_SRV 65 +#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_SRV_TO_CLI 66 +#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_CLI_TO_SRV 67 +#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_SRV_TO_CLI 68 +#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_CLI_TO_SRV 69 +#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_SRV_TO_CLI 70 /**** The legacy PKEY-based KDF API follows. ****/ diff --git a/include/openssl/kdferr.h b/include/openssl/kdferr.h index a143959..6ef4da2 100644 --- a/include/openssl/kdferr.h +++ b/include/openssl/kdferr.h @@ -32,6 +32,10 @@ int ERR_load_KDF_strings(void); # define KDF_F_KDF_SCRYPT_CTRL_UINT64 122 # define KDF_F_KDF_SCRYPT_DERIVE 123 # define KDF_F_KDF_SCRYPT_NEW 124 +# define KDF_F_KDF_SSHKDF_CTRL 130 +# define KDF_F_KDF_SSHKDF_CTRL_STR 131 +# define KDF_F_KDF_SSHKDF_DERIVE 132 +# define KDF_F_KDF_SSHKDF_NEW 133 # define KDF_F_KDF_TLS1_PRF_CTRL_STR 125 # define KDF_F_KDF_TLS1_PRF_DERIVE 126 # define KDF_F_KDF_TLS1_PRF_NEW 127 @@ -62,6 +66,9 @@ int ERR_load_KDF_strings(void); # define KDF_R_MISSING_SALT 111 # define KDF_R_MISSING_SECRET 107 # define KDF_R_MISSING_SEED 106 +# define KDF_R_MISSING_SESSION_ID 113 +# define KDF_R_MISSING_TYPE 114 +# define KDF_R_MISSING_XCGHASH 115 # define KDF_R_UNKNOWN_PARAMETER_TYPE 103 # define KDF_R_VALUE_ERROR 108 # define KDF_R_VALUE_MISSING 102 diff --git a/include/openssl/obj_mac.h b/include/openssl/obj_mac.h index 97b2204..80353ad 100644 --- a/include/openssl/obj_mac.h +++ b/include/openssl/obj_mac.h @@ -4991,6 +4991,10 @@ #define LN_hkdf "hkdf" #define NID_hkdf 1036 +#define SN_sshkdf "SSHKDF" +#define LN_sshkdf "sshkdf" +#define NID_sshkdf 1203 + #define SN_id_pkinit "id-pkinit" #define NID_id_pkinit 1031 #define OBJ_id_pkinit 1L,3L,6L,1L,5L,2L,3L diff --git a/test/recipes/30-test_evp_data/evpkdf.txt b/test/recipes/30-test_evp_data/evpkdf.txt index 6e34d38..bbaa24f 100644 --- a/test/recipes/30-test_evp_data/evpkdf.txt +++ b/test/recipes/30-test_evp_data/evpkdf.txt @@ -433,3 +433,4856 @@ Ctrl.iter = iter:1 Ctrl.digest = digest:sha512 Output = 00ef42cdbfc98d29db20976608e455567fdddf14 +Title = SSHKDF tests (from NIST CAVS 14.1 test vectors) + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008055bae931c07fd824bf10add1902b6fbc7c665347383498a686929ff5a25f8e40cb6645ea814fb1a5e0a11f852f86255641e5ed986e83a78bc8269480eac0b0dfd770cab92e7a28dd87ff452466d6ae867cead63b366b1c286e6c4811a9f14c27aea14c5171d49b78c06e3735d36e6a3be321dd5fc82308f34ee1cb17fba94a59 +Ctrl.hexxcghash = hexxcghash:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.hexsession_id = hexsession_id:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.type = type:A +Output = e2f627c0b43f1ac1 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008055bae931c07fd824bf10add1902b6fbc7c665347383498a686929ff5a25f8e40cb6645ea814fb1a5e0a11f852f86255641e5ed986e83a78bc8269480eac0b0dfd770cab92e7a28dd87ff452466d6ae867cead63b366b1c286e6c4811a9f14c27aea14c5171d49b78c06e3735d36e6a3be321dd5fc82308f34ee1cb17fba94a59 +Ctrl.hexxcghash = hexxcghash:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.hexsession_id = hexsession_id:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.type = type:B +Output = 58471445f342b181 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008055bae931c07fd824bf10add1902b6fbc7c665347383498a686929ff5a25f8e40cb6645ea814fb1a5e0a11f852f86255641e5ed986e83a78bc8269480eac0b0dfd770cab92e7a28dd87ff452466d6ae867cead63b366b1c286e6c4811a9f14c27aea14c5171d49b78c06e3735d36e6a3be321dd5fc82308f34ee1cb17fba94a59 +Ctrl.hexxcghash = hexxcghash:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.hexsession_id = hexsession_id:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.type = type:C +Output = 1ca9d310f86d51f6cb8e7007cb2b220d55c5281ce680b533 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008055bae931c07fd824bf10add1902b6fbc7c665347383498a686929ff5a25f8e40cb6645ea814fb1a5e0a11f852f86255641e5ed986e83a78bc8269480eac0b0dfd770cab92e7a28dd87ff452466d6ae867cead63b366b1c286e6c4811a9f14c27aea14c5171d49b78c06e3735d36e6a3be321dd5fc82308f34ee1cb17fba94a59 +Ctrl.hexxcghash = hexxcghash:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.hexsession_id = hexsession_id:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.type = type:D +Output = 2c60df8603d34cc1dbb03c11f725a44b44008851c73d6844 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008055bae931c07fd824bf10add1902b6fbc7c665347383498a686929ff5a25f8e40cb6645ea814fb1a5e0a11f852f86255641e5ed986e83a78bc8269480eac0b0dfd770cab92e7a28dd87ff452466d6ae867cead63b366b1c286e6c4811a9f14c27aea14c5171d49b78c06e3735d36e6a3be321dd5fc82308f34ee1cb17fba94a59 +Ctrl.hexxcghash = hexxcghash:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.hexsession_id = hexsession_id:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.type = type:E +Output = 472eb8a26166ae6aa8e06868e45c3b26e6eeed06 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008055bae931c07fd824bf10add1902b6fbc7c665347383498a686929ff5a25f8e40cb6645ea814fb1a5e0a11f852f86255641e5ed986e83a78bc8269480eac0b0dfd770cab92e7a28dd87ff452466d6ae867cead63b366b1c286e6c4811a9f14c27aea14c5171d49b78c06e3735d36e6a3be321dd5fc82308f34ee1cb17fba94a59 +Ctrl.hexxcghash = hexxcghash:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.hexsession_id = hexsession_id:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.type = type:F +Output = e3e2fdb9d7bc21165a3dbe47e1eceb7764390bab + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100ec6f2c5f0517fd92f730567bd783138302917c277552b1b3fdf2b67d6edb6fa81bd17f7ebbe339b54b171341e6522b91611f8274cc88652a458f8041261040818a268497e949e12f57271318b2b3194c29760cbb767c0fc8833b272994e18682da807e6c9f235d88ef89c203c6f756d25cc2bea199b02c955b8b40cbc04f9208 +Ctrl.hexxcghash = hexxcghash:ee40eef61bea3da8c2b1cec40fc4cdac892a2626 +Ctrl.hexsession_id = hexsession_id:ca9aad244e24797fd348d1250387c8aa45a0110a +Ctrl.type = type:A +Output = 55a1015757de84cb + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100ec6f2c5f0517fd92f730567bd783138302917c277552b1b3fdf2b67d6edb6fa81bd17f7ebbe339b54b171341e6522b91611f8274cc88652a458f8041261040818a268497e949e12f57271318b2b3194c29760cbb767c0fc8833b272994e18682da807e6c9f235d88ef89c203c6f756d25cc2bea199b02c955b8b40cbc04f9208 +Ctrl.hexxcghash = hexxcghash:ee40eef61bea3da8c2b1cec40fc4cdac892a2626 +Ctrl.hexsession_id = hexsession_id:ca9aad244e24797fd348d1250387c8aa45a0110a +Ctrl.type = type:B +Output = 7e57f61d5735f4fb + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100ec6f2c5f0517fd92f730567bd783138302917c277552b1b3fdf2b67d6edb6fa81bd17f7ebbe339b54b171341e6522b91611f8274cc88652a458f8041261040818a268497e949e12f57271318b2b3194c29760cbb767c0fc8833b272994e18682da807e6c9f235d88ef89c203c6f756d25cc2bea199b02c955b8b40cbc04f9208 +Ctrl.hexxcghash = hexxcghash:ee40eef61bea3da8c2b1cec40fc4cdac892a2626 +Ctrl.hexsession_id = hexsession_id:ca9aad244e24797fd348d1250387c8aa45a0110a +Ctrl.type = type:C +Output = dd1c24bde1af845e82207541e3e173aec822fb904a94ae3c + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100ec6f2c5f0517fd92f730567bd783138302917c277552b1b3fdf2b67d6edb6fa81bd17f7ebbe339b54b171341e6522b91611f8274cc88652a458f8041261040818a268497e949e12f57271318b2b3194c29760cbb767c0fc8833b272994e18682da807e6c9f235d88ef89c203c6f756d25cc2bea199b02c955b8b40cbc04f9208 +Ctrl.hexxcghash = hexxcghash:ee40eef61bea3da8c2b1cec40fc4cdac892a2626 +Ctrl.hexsession_id = hexsession_id:ca9aad244e24797fd348d1250387c8aa45a0110a +Ctrl.type = type:D +Output = cbbfdc9442af6db7f8c4dcaa4b0b5d0163e0e204476aa2a0 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100ec6f2c5f0517fd92f730567bd783138302917c277552b1b3fdf2b67d6edb6fa81bd17f7ebbe339b54b171341e6522b91611f8274cc88652a458f8041261040818a268497e949e12f57271318b2b3194c29760cbb767c0fc8833b272994e18682da807e6c9f235d88ef89c203c6f756d25cc2bea199b02c955b8b40cbc04f9208 +Ctrl.hexxcghash = hexxcghash:ee40eef61bea3da8c2b1cec40fc4cdac892a2626 +Ctrl.hexsession_id = hexsession_id:ca9aad244e24797fd348d1250387c8aa45a0110a +Ctrl.type = type:E +Output = e153e04886c0dc446dde9a9b3b13efb77151764d + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100ec6f2c5f0517fd92f730567bd783138302917c277552b1b3fdf2b67d6edb6fa81bd17f7ebbe339b54b171341e6522b91611f8274cc88652a458f8041261040818a268497e949e12f57271318b2b3194c29760cbb767c0fc8833b272994e18682da807e6c9f235d88ef89c203c6f756d25cc2bea199b02c955b8b40cbc04f9208 +Ctrl.hexxcghash = hexxcghash:ee40eef61bea3da8c2b1cec40fc4cdac892a2626 +Ctrl.hexsession_id = hexsession_id:ca9aad244e24797fd348d1250387c8aa45a0110a +Ctrl.type = type:F +Output = c8e4f61bd6b5abb2c6e06eca7b302349435e4842 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100a3beebff410a7cdc0ac56dad0152a7f6da6b1d4195285ce96f8b59930d8c3ccbc518bc043eb60362388ea87c20db3b490b490ba9b90f086004ba3e389cb3a715d477c2b1e480e3419c36cd83e237e241462ee79758f4ff5bf7a5e1eae58a6834778a658c60b2e157d36b16371f97660ad4abfd4a2703dba7cab055be4c778b62 +Ctrl.hexxcghash = hexxcghash:b81915a9656128d2add5e5741914d765226f93e2 +Ctrl.hexsession_id = hexsession_id:2872e0c92fc3074d4f40e408a2ebd83e2fc7bccd +Ctrl.type = type:A +Output = 054eaf5d7dea31e7 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100a3beebff410a7cdc0ac56dad0152a7f6da6b1d4195285ce96f8b59930d8c3ccbc518bc043eb60362388ea87c20db3b490b490ba9b90f086004ba3e389cb3a715d477c2b1e480e3419c36cd83e237e241462ee79758f4ff5bf7a5e1eae58a6834778a658c60b2e157d36b16371f97660ad4abfd4a2703dba7cab055be4c778b62 +Ctrl.hexxcghash = hexxcghash:b81915a9656128d2add5e5741914d765226f93e2 +Ctrl.hexsession_id = hexsession_id:2872e0c92fc3074d4f40e408a2ebd83e2fc7bccd +Ctrl.type = type:B +Output = 6ce586c127da010f + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100a3beebff410a7cdc0ac56dad0152a7f6da6b1d4195285ce96f8b59930d8c3ccbc518bc043eb60362388ea87c20db3b490b490ba9b90f086004ba3e389cb3a715d477c2b1e480e3419c36cd83e237e241462ee79758f4ff5bf7a5e1eae58a6834778a658c60b2e157d36b16371f97660ad4abfd4a2703dba7cab055be4c778b62 +Ctrl.hexxcghash = hexxcghash:b81915a9656128d2add5e5741914d765226f93e2 +Ctrl.hexsession_id = hexsession_id:2872e0c92fc3074d4f40e408a2ebd83e2fc7bccd +Ctrl.type = type:C +Output = 7907bf3d7c58ce72714b2adb1a14f156194b14378a4a7c49 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100a3beebff410a7cdc0ac56dad0152a7f6da6b1d4195285ce96f8b59930d8c3ccbc518bc043eb60362388ea87c20db3b490b490ba9b90f086004ba3e389cb3a715d477c2b1e480e3419c36cd83e237e241462ee79758f4ff5bf7a5e1eae58a6834778a658c60b2e157d36b16371f97660ad4abfd4a2703dba7cab055be4c778b62 +Ctrl.hexxcghash = hexxcghash:b81915a9656128d2add5e5741914d765226f93e2 +Ctrl.hexsession_id = hexsession_id:2872e0c92fc3074d4f40e408a2ebd83e2fc7bccd +Ctrl.type = type:D +Output = c34757dc104e7b811f6550bbc3888e1d4297578fd88b2ca5 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100a3beebff410a7cdc0ac56dad0152a7f6da6b1d4195285ce96f8b59930d8c3ccbc518bc043eb60362388ea87c20db3b490b490ba9b90f086004ba3e389cb3a715d477c2b1e480e3419c36cd83e237e241462ee79758f4ff5bf7a5e1eae58a6834778a658c60b2e157d36b16371f97660ad4abfd4a2703dba7cab055be4c778b62 +Ctrl.hexxcghash = hexxcghash:b81915a9656128d2add5e5741914d765226f93e2 +Ctrl.hexsession_id = hexsession_id:2872e0c92fc3074d4f40e408a2ebd83e2fc7bccd +Ctrl.type = type:E +Output = e463e05ef70e61f994ee3cd20d504cb6eddb9b1a + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100a3beebff410a7cdc0ac56dad0152a7f6da6b1d4195285ce96f8b59930d8c3ccbc518bc043eb60362388ea87c20db3b490b490ba9b90f086004ba3e389cb3a715d477c2b1e480e3419c36cd83e237e241462ee79758f4ff5bf7a5e1eae58a6834778a658c60b2e157d36b16371f97660ad4abfd4a2703dba7cab055be4c778b62 +Ctrl.hexxcghash = hexxcghash:b81915a9656128d2add5e5741914d765226f93e2 +Ctrl.hexsession_id = hexsession_id:2872e0c92fc3074d4f40e408a2ebd83e2fc7bccd +Ctrl.type = type:F +Output = 676cf1dfc887e122353eead2b1e644f9d9def944 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008017357de60344a125ca41d9ea51eb304a571d7f0aa37a5e36d4b7a5473546f7226583cefe7c06f6f94b97da0da2517190fa02a0337a3bc9ddfeeb68b953613d4d5e473783f137a82246b8260fb3451363adda1813acdf6b10861e022e23a00db9b5a893fcefd6b647f6a73904aa9c3b53e5d879d7e84f052dfabe15a27c1f3aa9 +Ctrl.hexxcghash = hexxcghash:28fcf3bc600f6bb0b9594b01283d085e149b2586 +Ctrl.hexsession_id = hexsession_id:4d6b90988de45dfd08e8167504a6253a8552c200 +Ctrl.type = type:A +Output = bc4b5164911bc87b + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008017357de60344a125ca41d9ea51eb304a571d7f0aa37a5e36d4b7a5473546f7226583cefe7c06f6f94b97da0da2517190fa02a0337a3bc9ddfeeb68b953613d4d5e473783f137a82246b8260fb3451363adda1813acdf6b10861e022e23a00db9b5a893fcefd6b647f6a73904aa9c3b53e5d879d7e84f052dfabe15a27c1f3aa9 +Ctrl.hexxcghash = hexxcghash:28fcf3bc600f6bb0b9594b01283d085e149b2586 +Ctrl.hexsession_id = hexsession_id:4d6b90988de45dfd08e8167504a6253a8552c200 +Ctrl.type = type:B +Output = d791c5986b27257e + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008017357de60344a125ca41d9ea51eb304a571d7f0aa37a5e36d4b7a5473546f7226583cefe7c06f6f94b97da0da2517190fa02a0337a3bc9ddfeeb68b953613d4d5e473783f137a82246b8260fb3451363adda1813acdf6b10861e022e23a00db9b5a893fcefd6b647f6a73904aa9c3b53e5d879d7e84f052dfabe15a27c1f3aa9 +Ctrl.hexxcghash = hexxcghash:28fcf3bc600f6bb0b9594b01283d085e149b2586 +Ctrl.hexsession_id = hexsession_id:4d6b90988de45dfd08e8167504a6253a8552c200 +Ctrl.type = type:C +Output = de8e99bb3f60ccf0583712528aa3dd0418fdb90d0a588012 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008017357de60344a125ca41d9ea51eb304a571d7f0aa37a5e36d4b7a5473546f7226583cefe7c06f6f94b97da0da2517190fa02a0337a3bc9ddfeeb68b953613d4d5e473783f137a82246b8260fb3451363adda1813acdf6b10861e022e23a00db9b5a893fcefd6b647f6a73904aa9c3b53e5d879d7e84f052dfabe15a27c1f3aa9 +Ctrl.hexxcghash = hexxcghash:28fcf3bc600f6bb0b9594b01283d085e149b2586 +Ctrl.hexsession_id = hexsession_id:4d6b90988de45dfd08e8167504a6253a8552c200 +Ctrl.type = type:D +Output = f37f75a685f1eaf4fd270b946d84734e96aa3b4ed130afc6 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008017357de60344a125ca41d9ea51eb304a571d7f0aa37a5e36d4b7a5473546f7226583cefe7c06f6f94b97da0da2517190fa02a0337a3bc9ddfeeb68b953613d4d5e473783f137a82246b8260fb3451363adda1813acdf6b10861e022e23a00db9b5a893fcefd6b647f6a73904aa9c3b53e5d879d7e84f052dfabe15a27c1f3aa9 +Ctrl.hexxcghash = hexxcghash:28fcf3bc600f6bb0b9594b01283d085e149b2586 +Ctrl.hexsession_id = hexsession_id:4d6b90988de45dfd08e8167504a6253a8552c200 +Ctrl.type = type:E +Output = 658f04b0f59aab071b9e11ec9ff187ee10e80254 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008017357de60344a125ca41d9ea51eb304a571d7f0aa37a5e36d4b7a5473546f7226583cefe7c06f6f94b97da0da2517190fa02a0337a3bc9ddfeeb68b953613d4d5e473783f137a82246b8260fb3451363adda1813acdf6b10861e022e23a00db9b5a893fcefd6b647f6a73904aa9c3b53e5d879d7e84f052dfabe15a27c1f3aa9 +Ctrl.hexxcghash = hexxcghash:28fcf3bc600f6bb0b9594b01283d085e149b2586 +Ctrl.hexsession_id = hexsession_id:4d6b90988de45dfd08e8167504a6253a8552c200 +Ctrl.type = type:F +Output = b030809222ff7a12b0df35072d67f314ab1d5eda + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000000803c3ce2b19e0cadf8ad02438c695efcd3018c833657318bfaef7b9c278cd7e8d7b3a2249f9d586832c3dee727ada167056ff1febc9210186ba47cc1dfaaf08101fb89742ebf4f3e291a20c94a7a6f7877799151d177e163ce3e57ef863c0cda0311265fbac157879150a715e309392b3e521dcf03224717ff5e0030e480f20dff +Ctrl.hexxcghash = hexxcghash:46a674c532460a80cdc5c6da9a8c3bdf4f3ff614 +Ctrl.hexsession_id = hexsession_id:aedeb64df7119db53202e959dc84be3e5285512d +Ctrl.type = type:A +Output = 7a74ec799ef16865 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000000803c3ce2b19e0cadf8ad02438c695efcd3018c833657318bfaef7b9c278cd7e8d7b3a2249f9d586832c3dee727ada167056ff1febc9210186ba47cc1dfaaf08101fb89742ebf4f3e291a20c94a7a6f7877799151d177e163ce3e57ef863c0cda0311265fbac157879150a715e309392b3e521dcf03224717ff5e0030e480f20dff +Ctrl.hexxcghash = hexxcghash:46a674c532460a80cdc5c6da9a8c3bdf4f3ff614 +Ctrl.hexsession_id = hexsession_id:aedeb64df7119db53202e959dc84be3e5285512d +Ctrl.type = type:B +Output = 6e544fc6db0ca1ba + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000000803c3ce2b19e0cadf8ad02438c695efcd3018c833657318bfaef7b9c278cd7e8d7b3a2249f9d586832c3dee727ada167056ff1febc9210186ba47cc1dfaaf08101fb89742ebf4f3e291a20c94a7a6f7877799151d177e163ce3e57ef863c0cda0311265fbac157879150a715e309392b3e521dcf03224717ff5e0030e480f20dff +Ctrl.hexxcghash = hexxcghash:46a674c532460a80cdc5c6da9a8c3bdf4f3ff614 +Ctrl.hexsession_id = hexsession_id:aedeb64df7119db53202e959dc84be3e5285512d +Ctrl.type = type:C +Output = 658226b1b10b2033fa88838b619572b18e81e80c76507918 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000000803c3ce2b19e0cadf8ad02438c695efcd3018c833657318bfaef7b9c278cd7e8d7b3a2249f9d586832c3dee727ada167056ff1febc9210186ba47cc1dfaaf08101fb89742ebf4f3e291a20c94a7a6f7877799151d177e163ce3e57ef863c0cda0311265fbac157879150a715e309392b3e521dcf03224717ff5e0030e480f20dff +Ctrl.hexxcghash = hexxcghash:46a674c532460a80cdc5c6da9a8c3bdf4f3ff614 +Ctrl.hexsession_id = hexsession_id:aedeb64df7119db53202e959dc84be3e5285512d +Ctrl.type = type:D +Output = 327298c8660685efcb01c5c0df49faebb15c0e93b0f6c65d + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000000803c3ce2b19e0cadf8ad02438c695efcd3018c833657318bfaef7b9c278cd7e8d7b3a2249f9d586832c3dee727ada167056ff1febc9210186ba47cc1dfaaf08101fb89742ebf4f3e291a20c94a7a6f7877799151d177e163ce3e57ef863c0cda0311265fbac157879150a715e309392b3e521dcf03224717ff5e0030e480f20dff +Ctrl.hexxcghash = hexxcghash:46a674c532460a80cdc5c6da9a8c3bdf4f3ff614 +Ctrl.hexsession_id = hexsession_id:aedeb64df7119db53202e959dc84be3e5285512d +Ctrl.type = type:E +Output = 6b618a10aeaa12c9a8d2bcb10e975605582c00e5 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000000803c3ce2b19e0cadf8ad02438c695efcd3018c833657318bfaef7b9c278cd7e8d7b3a2249f9d586832c3dee727ada167056ff1febc9210186ba47cc1dfaaf08101fb89742ebf4f3e291a20c94a7a6f7877799151d177e163ce3e57ef863c0cda0311265fbac157879150a715e309392b3e521dcf03224717ff5e0030e480f20dff +Ctrl.hexxcghash = hexxcghash:46a674c532460a80cdc5c6da9a8c3bdf4f3ff614 +Ctrl.hexsession_id = hexsession_id:aedeb64df7119db53202e959dc84be3e5285512d +Ctrl.type = type:F +Output = 6d4ce50da9de90d6f746e812a2e74bcd921f5612 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008075957f464f5a7985e1a3ffb7d5814ff9ceb8fb1584a3f5cc454c37139e9b880940442cce2aef94d9d0462c4dc313ed7a8cc3f9a58c38a98ef0236e3cc78fb63b6f82e9c503097b7a08ef2261dda68c7bfe9f83ac790d1f9ff57605d24f4bdfedde23cc5aabba248bc91d3fe1d4394485bc4421730a297694c09bdf024ac2eac3 +Ctrl.hexxcghash = hexxcghash:0a70b4f26b1985d48ece540f1de6304fdb38212f +Ctrl.hexsession_id = hexsession_id:2f0ce0e2da2e2bf11eae2ab98e9734412d47a19a +Ctrl.type = type:A +Output = b655839abcb1a7b8 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008075957f464f5a7985e1a3ffb7d5814ff9ceb8fb1584a3f5cc454c37139e9b880940442cce2aef94d9d0462c4dc313ed7a8cc3f9a58c38a98ef0236e3cc78fb63b6f82e9c503097b7a08ef2261dda68c7bfe9f83ac790d1f9ff57605d24f4bdfedde23cc5aabba248bc91d3fe1d4394485bc4421730a297694c09bdf024ac2eac3 +Ctrl.hexxcghash = hexxcghash:0a70b4f26b1985d48ece540f1de6304fdb38212f +Ctrl.hexsession_id = hexsession_id:2f0ce0e2da2e2bf11eae2ab98e9734412d47a19a +Ctrl.type = type:B +Output = 98f9ec980831a8bc + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008075957f464f5a7985e1a3ffb7d5814ff9ceb8fb1584a3f5cc454c37139e9b880940442cce2aef94d9d0462c4dc313ed7a8cc3f9a58c38a98ef0236e3cc78fb63b6f82e9c503097b7a08ef2261dda68c7bfe9f83ac790d1f9ff57605d24f4bdfedde23cc5aabba248bc91d3fe1d4394485bc4421730a297694c09bdf024ac2eac3 +Ctrl.hexxcghash = hexxcghash:0a70b4f26b1985d48ece540f1de6304fdb38212f +Ctrl.hexsession_id = hexsession_id:2f0ce0e2da2e2bf11eae2ab98e9734412d47a19a +Ctrl.type = type:C +Output = 31a63b64cfa8b6a12ba165096dad8d127cd3f3b67698b670 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008075957f464f5a7985e1a3ffb7d5814ff9ceb8fb1584a3f5cc454c37139e9b880940442cce2aef94d9d0462c4dc313ed7a8cc3f9a58c38a98ef0236e3cc78fb63b6f82e9c503097b7a08ef2261dda68c7bfe9f83ac790d1f9ff57605d24f4bdfedde23cc5aabba248bc91d3fe1d4394485bc4421730a297694c09bdf024ac2eac3 +Ctrl.hexxcghash = hexxcghash:0a70b4f26b1985d48ece540f1de6304fdb38212f +Ctrl.hexsession_id = hexsession_id:2f0ce0e2da2e2bf11eae2ab98e9734412d47a19a +Ctrl.type = type:D +Output = 8bd79633967b92f0039a38a2d421e12840ea5c31b43c4e90 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008075957f464f5a7985e1a3ffb7d5814ff9ceb8fb1584a3f5cc454c37139e9b880940442cce2aef94d9d0462c4dc313ed7a8cc3f9a58c38a98ef0236e3cc78fb63b6f82e9c503097b7a08ef2261dda68c7bfe9f83ac790d1f9ff57605d24f4bdfedde23cc5aabba248bc91d3fe1d4394485bc4421730a297694c09bdf024ac2eac3 +Ctrl.hexxcghash = hexxcghash:0a70b4f26b1985d48ece540f1de6304fdb38212f +Ctrl.hexsession_id = hexsession_id:2f0ce0e2da2e2bf11eae2ab98e9734412d47a19a +Ctrl.type = type:E +Output = 37eccade73b422d1108e390eaa28c646b554a721 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008075957f464f5a7985e1a3ffb7d5814ff9ceb8fb1584a3f5cc454c37139e9b880940442cce2aef94d9d0462c4dc313ed7a8cc3f9a58c38a98ef0236e3cc78fb63b6f82e9c503097b7a08ef2261dda68c7bfe9f83ac790d1f9ff57605d24f4bdfedde23cc5aabba248bc91d3fe1d4394485bc4421730a297694c09bdf024ac2eac3 +Ctrl.hexxcghash = hexxcghash:0a70b4f26b1985d48ece540f1de6304fdb38212f +Ctrl.hexsession_id = hexsession_id:2f0ce0e2da2e2bf11eae2ab98e9734412d47a19a +Ctrl.type = type:F +Output = 013a20fc8f53ef08aae0a836b9410153a877983a + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100c050aa3d848750af69d1c04d6cb0a1ef8a4f25be4b16c927ff7313e83680b1b7a92b6100fa773cea9958fc7efb1a475fc71eda8be8efc92ad198a34d6ae017f12b76f39c82b741994b0d42ada1807fa7803876d21d93b129d75dc9aba4811ef51925e49e4bf4f5313e8fee0625d8727da8bcb15eb15da2d237082fc5499621ef +Ctrl.hexxcghash = hexxcghash:5ea2568ee7ddcdb3260dfdf54e15e4d494ca9023 +Ctrl.hexsession_id = hexsession_id:bc8988ac5f9058ee76536472b1706c5c338bd114 +Ctrl.type = type:A +Output = 12f6c3ac60d6ee3b + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100c050aa3d848750af69d1c04d6cb0a1ef8a4f25be4b16c927ff7313e83680b1b7a92b6100fa773cea9958fc7efb1a475fc71eda8be8efc92ad198a34d6ae017f12b76f39c82b741994b0d42ada1807fa7803876d21d93b129d75dc9aba4811ef51925e49e4bf4f5313e8fee0625d8727da8bcb15eb15da2d237082fc5499621ef +Ctrl.hexxcghash = hexxcghash:5ea2568ee7ddcdb3260dfdf54e15e4d494ca9023 +Ctrl.hexsession_id = hexsession_id:bc8988ac5f9058ee76536472b1706c5c338bd114 +Ctrl.type = type:B +Output = 536d106e00aec6fd + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100c050aa3d848750af69d1c04d6cb0a1ef8a4f25be4b16c927ff7313e83680b1b7a92b6100fa773cea9958fc7efb1a475fc71eda8be8efc92ad198a34d6ae017f12b76f39c82b741994b0d42ada1807fa7803876d21d93b129d75dc9aba4811ef51925e49e4bf4f5313e8fee0625d8727da8bcb15eb15da2d237082fc5499621ef +Ctrl.hexxcghash = hexxcghash:5ea2568ee7ddcdb3260dfdf54e15e4d494ca9023 +Ctrl.hexsession_id = hexsession_id:bc8988ac5f9058ee76536472b1706c5c338bd114 +Ctrl.type = type:C +Output = 26b8ec66854d0f0aa98f6888be628ebc75900c3738d47894 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100c050aa3d848750af69d1c04d6cb0a1ef8a4f25be4b16c927ff7313e83680b1b7a92b6100fa773cea9958fc7efb1a475fc71eda8be8efc92ad198a34d6ae017f12b76f39c82b741994b0d42ada1807fa7803876d21d93b129d75dc9aba4811ef51925e49e4bf4f5313e8fee0625d8727da8bcb15eb15da2d237082fc5499621ef +Ctrl.hexxcghash = hexxcghash:5ea2568ee7ddcdb3260dfdf54e15e4d494ca9023 +Ctrl.hexsession_id = hexsession_id:bc8988ac5f9058ee76536472b1706c5c338bd114 +Ctrl.type = type:D +Output = d5d3b3817214eeb3bf292dffc77daeab062ac7fcd2e3a2bd + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100c050aa3d848750af69d1c04d6cb0a1ef8a4f25be4b16c927ff7313e83680b1b7a92b6100fa773cea9958fc7efb1a475fc71eda8be8efc92ad198a34d6ae017f12b76f39c82b741994b0d42ada1807fa7803876d21d93b129d75dc9aba4811ef51925e49e4bf4f5313e8fee0625d8727da8bcb15eb15da2d237082fc5499621ef +Ctrl.hexxcghash = hexxcghash:5ea2568ee7ddcdb3260dfdf54e15e4d494ca9023 +Ctrl.hexsession_id = hexsession_id:bc8988ac5f9058ee76536472b1706c5c338bd114 +Ctrl.type = type:E +Output = 014613aef22194307bc0678f6edd1ccff240adfa + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100c050aa3d848750af69d1c04d6cb0a1ef8a4f25be4b16c927ff7313e83680b1b7a92b6100fa773cea9958fc7efb1a475fc71eda8be8efc92ad198a34d6ae017f12b76f39c82b741994b0d42ada1807fa7803876d21d93b129d75dc9aba4811ef51925e49e4bf4f5313e8fee0625d8727da8bcb15eb15da2d237082fc5499621ef +Ctrl.hexxcghash = hexxcghash:5ea2568ee7ddcdb3260dfdf54e15e4d494ca9023 +Ctrl.hexsession_id = hexsession_id:bc8988ac5f9058ee76536472b1706c5c338bd114 +Ctrl.type = type:F +Output = 5057b4cc2c300f7546d358a75daf58233b71da1a + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100f00388418be28ae3235c5b640d000df44f6e65782cad783726a507e2c645a056307f1ab7b4cd24d38640118105d7415c2ecea77e33e7b8a9dc9d205e3fdfb718769754213c0782ee18c7db1408e780369bccfb8233581cda4fbb133b3c41d0a7afa6996f31f8dd36fa3dd82efb23dcaa1ec5e37caae3af639123190fe7795983 +Ctrl.hexxcghash = hexxcghash:fc48c85ac48ee97be3ce45c10807a666e8e9b639 +Ctrl.hexsession_id = hexsession_id:d36e8c070b97795dfb10a3c2e41e4d0d70382606 +Ctrl.type = type:A +Output = d160f91f36027ff9 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100f00388418be28ae3235c5b640d000df44f6e65782cad783726a507e2c645a056307f1ab7b4cd24d38640118105d7415c2ecea77e33e7b8a9dc9d205e3fdfb718769754213c0782ee18c7db1408e780369bccfb8233581cda4fbb133b3c41d0a7afa6996f31f8dd36fa3dd82efb23dcaa1ec5e37caae3af639123190fe7795983 +Ctrl.hexxcghash = hexxcghash:fc48c85ac48ee97be3ce45c10807a666e8e9b639 +Ctrl.hexsession_id = hexsession_id:d36e8c070b97795dfb10a3c2e41e4d0d70382606 +Ctrl.type = type:B +Output = 0d02ec310663bbcc + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100f00388418be28ae3235c5b640d000df44f6e65782cad783726a507e2c645a056307f1ab7b4cd24d38640118105d7415c2ecea77e33e7b8a9dc9d205e3fdfb718769754213c0782ee18c7db1408e780369bccfb8233581cda4fbb133b3c41d0a7afa6996f31f8dd36fa3dd82efb23dcaa1ec5e37caae3af639123190fe7795983 +Ctrl.hexxcghash = hexxcghash:fc48c85ac48ee97be3ce45c10807a666e8e9b639 +Ctrl.hexsession_id = hexsession_id:d36e8c070b97795dfb10a3c2e41e4d0d70382606 +Ctrl.type = type:C +Output = 03b66f451ad93a01914dd3372d980bea3de94993e176ea01 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100f00388418be28ae3235c5b640d000df44f6e65782cad783726a507e2c645a056307f1ab7b4cd24d38640118105d7415c2ecea77e33e7b8a9dc9d205e3fdfb718769754213c0782ee18c7db1408e780369bccfb8233581cda4fbb133b3c41d0a7afa6996f31f8dd36fa3dd82efb23dcaa1ec5e37caae3af639123190fe7795983 +Ctrl.hexxcghash = hexxcghash:fc48c85ac48ee97be3ce45c10807a666e8e9b639 +Ctrl.hexsession_id = hexsession_id:d36e8c070b97795dfb10a3c2e41e4d0d70382606 +Ctrl.type = type:D +Output = c2db767cbbdf2f839eb2f37ada87a041d220b9f58842d0db + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100f00388418be28ae3235c5b640d000df44f6e65782cad783726a507e2c645a056307f1ab7b4cd24d38640118105d7415c2ecea77e33e7b8a9dc9d205e3fdfb718769754213c0782ee18c7db1408e780369bccfb8233581cda4fbb133b3c41d0a7afa6996f31f8dd36fa3dd82efb23dcaa1ec5e37caae3af639123190fe7795983 +Ctrl.hexxcghash = hexxcghash:fc48c85ac48ee97be3ce45c10807a666e8e9b639 +Ctrl.hexsession_id = hexsession_id:d36e8c070b97795dfb10a3c2e41e4d0d70382606 +Ctrl.type = type:E +Output = 0b2944c26dcf4cc877cdc55c4e9b1b8155e3874b + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100f00388418be28ae3235c5b640d000df44f6e65782cad783726a507e2c645a056307f1ab7b4cd24d38640118105d7415c2ecea77e33e7b8a9dc9d205e3fdfb718769754213c0782ee18c7db1408e780369bccfb8233581cda4fbb133b3c41d0a7afa6996f31f8dd36fa3dd82efb23dcaa1ec5e37caae3af639123190fe7795983 +Ctrl.hexxcghash = hexxcghash:fc48c85ac48ee97be3ce45c10807a666e8e9b639 +Ctrl.hexsession_id = hexsession_id:d36e8c070b97795dfb10a3c2e41e4d0d70382606 +Ctrl.type = type:F +Output = f7977d574c7d9e4f34ecd6b405c765963f0dfe57 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:00000081009dc61278a79fdb00ee937c0418668ac0176fdfd0297ebc86ee391e3e8db147f01d782650f1e30391d3c1fe62425842119fe41b76243ed47f6c30370dd1cc1b10e3bdac2730287b0e5901e487563d700d56078ed88d20c300250a3da5f2128db56230d90bb99e90aca80da446d8dddac49e2f2db1b37f9e1b65834adf8fdbcd31 +Ctrl.hexxcghash = hexxcghash:3c63a552ac5313d219ec30f1e926e2c52e992929 +Ctrl.hexsession_id = hexsession_id:a17e0e9cc2741d861f4c7195c29c75e4c38e9ba0 +Ctrl.type = type:A +Output = e4387818ab7f4fa6 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:00000081009dc61278a79fdb00ee937c0418668ac0176fdfd0297ebc86ee391e3e8db147f01d782650f1e30391d3c1fe62425842119fe41b76243ed47f6c30370dd1cc1b10e3bdac2730287b0e5901e487563d700d56078ed88d20c300250a3da5f2128db56230d90bb99e90aca80da446d8dddac49e2f2db1b37f9e1b65834adf8fdbcd31 +Ctrl.hexxcghash = hexxcghash:3c63a552ac5313d219ec30f1e926e2c52e992929 +Ctrl.hexsession_id = hexsession_id:a17e0e9cc2741d861f4c7195c29c75e4c38e9ba0 +Ctrl.type = type:B +Output = 1daabebcc8a064df + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:00000081009dc61278a79fdb00ee937c0418668ac0176fdfd0297ebc86ee391e3e8db147f01d782650f1e30391d3c1fe62425842119fe41b76243ed47f6c30370dd1cc1b10e3bdac2730287b0e5901e487563d700d56078ed88d20c300250a3da5f2128db56230d90bb99e90aca80da446d8dddac49e2f2db1b37f9e1b65834adf8fdbcd31 +Ctrl.hexxcghash = hexxcghash:3c63a552ac5313d219ec30f1e926e2c52e992929 +Ctrl.hexsession_id = hexsession_id:a17e0e9cc2741d861f4c7195c29c75e4c38e9ba0 +Ctrl.type = type:C +Output = 9fffad3aec53cd719c1d500850c2f38d8eea04606f78b402 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:00000081009dc61278a79fdb00ee937c0418668ac0176fdfd0297ebc86ee391e3e8db147f01d782650f1e30391d3c1fe62425842119fe41b76243ed47f6c30370dd1cc1b10e3bdac2730287b0e5901e487563d700d56078ed88d20c300250a3da5f2128db56230d90bb99e90aca80da446d8dddac49e2f2db1b37f9e1b65834adf8fdbcd31 +Ctrl.hexxcghash = hexxcghash:3c63a552ac5313d219ec30f1e926e2c52e992929 +Ctrl.hexsession_id = hexsession_id:a17e0e9cc2741d861f4c7195c29c75e4c38e9ba0 +Ctrl.type = type:D +Output = 6b196bce2aa2bd912ffd67a94fc42dec1051376f73ec3ce2 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:00000081009dc61278a79fdb00ee937c0418668ac0176fdfd0297ebc86ee391e3e8db147f01d782650f1e30391d3c1fe62425842119fe41b76243ed47f6c30370dd1cc1b10e3bdac2730287b0e5901e487563d700d56078ed88d20c300250a3da5f2128db56230d90bb99e90aca80da446d8dddac49e2f2db1b37f9e1b65834adf8fdbcd31 +Ctrl.hexxcghash = hexxcghash:3c63a552ac5313d219ec30f1e926e2c52e992929 +Ctrl.hexsession_id = hexsession_id:a17e0e9cc2741d861f4c7195c29c75e4c38e9ba0 +Ctrl.type = type:E +Output = beab583906e6bed005558c102a5b5fd6ee71485f + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:00000081009dc61278a79fdb00ee937c0418668ac0176fdfd0297ebc86ee391e3e8db147f01d782650f1e30391d3c1fe62425842119fe41b76243ed47f6c30370dd1cc1b10e3bdac2730287b0e5901e487563d700d56078ed88d20c300250a3da5f2128db56230d90bb99e90aca80da446d8dddac49e2f2db1b37f9e1b65834adf8fdbcd31 +Ctrl.hexxcghash = hexxcghash:3c63a552ac5313d219ec30f1e926e2c52e992929 +Ctrl.hexsession_id = hexsession_id:a17e0e9cc2741d861f4c7195c29c75e4c38e9ba0 +Ctrl.type = type:F +Output = 105140594b5b9061de7ff2afac09bce81b75d6c6 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100df75bb7ce0b66431ca073a5768dbc6930b024b8d6804a5ef9f3f3c9341b8c8b7216eaf26536ac671ab360eff568502e596adbf41b795d329d136ebe44c60ff4ffd58ed99b40a228cab6c8ed9733702e75f7750e58f04cbb78402eec2877205a0ba3f48318543489dc4885dcdc51c4658acbc28f9a82c563ac20b582cff8c432d +Ctrl.hexxcghash = hexxcghash:c08ddd40832cc96fe373b67a4850b86848e48f70 +Ctrl.hexsession_id = hexsession_id:477c8d32e73a475707e0085cf235d605ed564a1c +Ctrl.type = type:A +Output = ef982c8fd0fd464f + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100df75bb7ce0b66431ca073a5768dbc6930b024b8d6804a5ef9f3f3c9341b8c8b7216eaf26536ac671ab360eff568502e596adbf41b795d329d136ebe44c60ff4ffd58ed99b40a228cab6c8ed9733702e75f7750e58f04cbb78402eec2877205a0ba3f48318543489dc4885dcdc51c4658acbc28f9a82c563ac20b582cff8c432d +Ctrl.hexxcghash = hexxcghash:c08ddd40832cc96fe373b67a4850b86848e48f70 +Ctrl.hexsession_id = hexsession_id:477c8d32e73a475707e0085cf235d605ed564a1c +Ctrl.type = type:B +Output = 845ad3ba4d359326 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100df75bb7ce0b66431ca073a5768dbc6930b024b8d6804a5ef9f3f3c9341b8c8b7216eaf26536ac671ab360eff568502e596adbf41b795d329d136ebe44c60ff4ffd58ed99b40a228cab6c8ed9733702e75f7750e58f04cbb78402eec2877205a0ba3f48318543489dc4885dcdc51c4658acbc28f9a82c563ac20b582cff8c432d +Ctrl.hexxcghash = hexxcghash:c08ddd40832cc96fe373b67a4850b86848e48f70 +Ctrl.hexsession_id = hexsession_id:477c8d32e73a475707e0085cf235d605ed564a1c +Ctrl.type = type:C +Output = d9e516001b6b1a17268e507fa6e13f6bc9c3ded0020ef841 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100df75bb7ce0b66431ca073a5768dbc6930b024b8d6804a5ef9f3f3c9341b8c8b7216eaf26536ac671ab360eff568502e596adbf41b795d329d136ebe44c60ff4ffd58ed99b40a228cab6c8ed9733702e75f7750e58f04cbb78402eec2877205a0ba3f48318543489dc4885dcdc51c4658acbc28f9a82c563ac20b582cff8c432d +Ctrl.hexxcghash = hexxcghash:c08ddd40832cc96fe373b67a4850b86848e48f70 +Ctrl.hexsession_id = hexsession_id:477c8d32e73a475707e0085cf235d605ed564a1c +Ctrl.type = type:D +Output = d57d2f3c25b536442d8c7f36d62778d06fb6e7d4b5c7ab76 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100df75bb7ce0b66431ca073a5768dbc6930b024b8d6804a5ef9f3f3c9341b8c8b7216eaf26536ac671ab360eff568502e596adbf41b795d329d136ebe44c60ff4ffd58ed99b40a228cab6c8ed9733702e75f7750e58f04cbb78402eec2877205a0ba3f48318543489dc4885dcdc51c4658acbc28f9a82c563ac20b582cff8c432d +Ctrl.hexxcghash = hexxcghash:c08ddd40832cc96fe373b67a4850b86848e48f70 +Ctrl.hexsession_id = hexsession_id:477c8d32e73a475707e0085cf235d605ed564a1c +Ctrl.type = type:E +Output = f0b75425b271eb82645b1f1424b2a838dbcf6f98 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008100df75bb7ce0b66431ca073a5768dbc6930b024b8d6804a5ef9f3f3c9341b8c8b7216eaf26536ac671ab360eff568502e596adbf41b795d329d136ebe44c60ff4ffd58ed99b40a228cab6c8ed9733702e75f7750e58f04cbb78402eec2877205a0ba3f48318543489dc4885dcdc51c4658acbc28f9a82c563ac20b582cff8c432d +Ctrl.hexxcghash = hexxcghash:c08ddd40832cc96fe373b67a4850b86848e48f70 +Ctrl.hexsession_id = hexsession_id:477c8d32e73a475707e0085cf235d605ed564a1c +Ctrl.type = type:F +Output = cdf59b2327588ffd18becfc0e5bb526014101401 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001010085a60bcca88b096c418e825f3de4fd8920ecce617afadda2ca8001e8eba07e58e60e70a9a05b8ddc29d5636d33c407d5f23952b65326e113f28d89bc6ba3a4c3b71ae239d6d1bd295466682d1c675bdb88a3259f474fe54a0f4004ddc46b442451654e1e66d0c93d7b310f28a8db7b95eee7abc61e71dee322b4e732baf9ec7ce189b889d536da1a55a2cc29e1666aa9c0e702f4412206bd207302fe84043c664394bde0e0a47d0a7a947c95997e1dbaeecd2efae12cacef8eab2f6b2478dedcebb3264827cf226e13f8082931db410fbc03352e7dde82fd1f58caab3115aa065ac6e2a1c7b1c1b2d5fa3447bf9839d76cfa5822b097bff9106f37eba1250145 +Ctrl.hexxcghash = hexxcghash:dde6f8e070ef32a27ff04ad1045c65b2dfa33e03 +Ctrl.hexsession_id = hexsession_id:dde6f8e070ef32a27ff04ad1045c65b2dfa33e03 +Ctrl.type = type:A +Output = 79c9195e683ae10750960cb55c4d4c0b + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001010085a60bcca88b096c418e825f3de4fd8920ecce617afadda2ca8001e8eba07e58e60e70a9a05b8ddc29d5636d33c407d5f23952b65326e113f28d89bc6ba3a4c3b71ae239d6d1bd295466682d1c675bdb88a3259f474fe54a0f4004ddc46b442451654e1e66d0c93d7b310f28a8db7b95eee7abc61e71dee322b4e732baf9ec7ce189b889d536da1a55a2cc29e1666aa9c0e702f4412206bd207302fe84043c664394bde0e0a47d0a7a947c95997e1dbaeecd2efae12cacef8eab2f6b2478dedcebb3264827cf226e13f8082931db410fbc03352e7dde82fd1f58caab3115aa065ac6e2a1c7b1c1b2d5fa3447bf9839d76cfa5822b097bff9106f37eba1250145 +Ctrl.hexxcghash = hexxcghash:dde6f8e070ef32a27ff04ad1045c65b2dfa33e03 +Ctrl.hexsession_id = hexsession_id:dde6f8e070ef32a27ff04ad1045c65b2dfa33e03 +Ctrl.type = type:B +Output = ef00b448ab9fd6523bb5143a0a818750 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001010085a60bcca88b096c418e825f3de4fd8920ecce617afadda2ca8001e8eba07e58e60e70a9a05b8ddc29d5636d33c407d5f23952b65326e113f28d89bc6ba3a4c3b71ae239d6d1bd295466682d1c675bdb88a3259f474fe54a0f4004ddc46b442451654e1e66d0c93d7b310f28a8db7b95eee7abc61e71dee322b4e732baf9ec7ce189b889d536da1a55a2cc29e1666aa9c0e702f4412206bd207302fe84043c664394bde0e0a47d0a7a947c95997e1dbaeecd2efae12cacef8eab2f6b2478dedcebb3264827cf226e13f8082931db410fbc03352e7dde82fd1f58caab3115aa065ac6e2a1c7b1c1b2d5fa3447bf9839d76cfa5822b097bff9106f37eba1250145 +Ctrl.hexxcghash = hexxcghash:dde6f8e070ef32a27ff04ad1045c65b2dfa33e03 +Ctrl.hexsession_id = hexsession_id:dde6f8e070ef32a27ff04ad1045c65b2dfa33e03 +Ctrl.type = type:C +Output = 51c8b4aaf5e42443be0aa3c50aa7e1dd + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001010085a60bcca88b096c418e825f3de4fd8920ecce617afadda2ca8001e8eba07e58e60e70a9a05b8ddc29d5636d33c407d5f23952b65326e113f28d89bc6ba3a4c3b71ae239d6d1bd295466682d1c675bdb88a3259f474fe54a0f4004ddc46b442451654e1e66d0c93d7b310f28a8db7b95eee7abc61e71dee322b4e732baf9ec7ce189b889d536da1a55a2cc29e1666aa9c0e702f4412206bd207302fe84043c664394bde0e0a47d0a7a947c95997e1dbaeecd2efae12cacef8eab2f6b2478dedcebb3264827cf226e13f8082931db410fbc03352e7dde82fd1f58caab3115aa065ac6e2a1c7b1c1b2d5fa3447bf9839d76cfa5822b097bff9106f37eba1250145 +Ctrl.hexxcghash = hexxcghash:dde6f8e070ef32a27ff04ad1045c65b2dfa33e03 +Ctrl.hexsession_id = hexsession_id:dde6f8e070ef32a27ff04ad1045c65b2dfa33e03 +Ctrl.type = type:D +Output = 4153a587397fb14dc3faad028fdb7ecc + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001010085a60bcca88b096c418e825f3de4fd8920ecce617afadda2ca8001e8eba07e58e60e70a9a05b8ddc29d5636d33c407d5f23952b65326e113f28d89bc6ba3a4c3b71ae239d6d1bd295466682d1c675bdb88a3259f474fe54a0f4004ddc46b442451654e1e66d0c93d7b310f28a8db7b95eee7abc61e71dee322b4e732baf9ec7ce189b889d536da1a55a2cc29e1666aa9c0e702f4412206bd207302fe84043c664394bde0e0a47d0a7a947c95997e1dbaeecd2efae12cacef8eab2f6b2478dedcebb3264827cf226e13f8082931db410fbc03352e7dde82fd1f58caab3115aa065ac6e2a1c7b1c1b2d5fa3447bf9839d76cfa5822b097bff9106f37eba1250145 +Ctrl.hexxcghash = hexxcghash:dde6f8e070ef32a27ff04ad1045c65b2dfa33e03 +Ctrl.hexsession_id = hexsession_id:dde6f8e070ef32a27ff04ad1045c65b2dfa33e03 +Ctrl.type = type:E +Output = d23e36347052a1cfb4a7789df48627e8a31345c7 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001010085a60bcca88b096c418e825f3de4fd8920ecce617afadda2ca8001e8eba07e58e60e70a9a05b8ddc29d5636d33c407d5f23952b65326e113f28d89bc6ba3a4c3b71ae239d6d1bd295466682d1c675bdb88a3259f474fe54a0f4004ddc46b442451654e1e66d0c93d7b310f28a8db7b95eee7abc61e71dee322b4e732baf9ec7ce189b889d536da1a55a2cc29e1666aa9c0e702f4412206bd207302fe84043c664394bde0e0a47d0a7a947c95997e1dbaeecd2efae12cacef8eab2f6b2478dedcebb3264827cf226e13f8082931db410fbc03352e7dde82fd1f58caab3115aa065ac6e2a1c7b1c1b2d5fa3447bf9839d76cfa5822b097bff9106f37eba1250145 +Ctrl.hexxcghash = hexxcghash:dde6f8e070ef32a27ff04ad1045c65b2dfa33e03 +Ctrl.hexsession_id = hexsession_id:dde6f8e070ef32a27ff04ad1045c65b2dfa33e03 +Ctrl.type = type:F +Output = c1286e92655912d923154c460702a31424bd6b01 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010100c0724e077d7237441eb79039debaa851c0bf411e69cd5314f3c72aa45760c9969985b34291fb64bf964b719d2b989e40a0e9fbccdb23536a78f1b55ebbda809f862e8ec3561c15c4288595546e09789cbc2491050073222397957c9090b7f8f96e3fefbc5f438c72ca8bb48f6337e208ee9b3f630a8c5b40b9fafca8e55be0a0cf4046884a0a049b4557da4ddb7a344226f4707c706e96467b1568ad4d10363aa9eb04b91efbada0c1c292475ce9893a27d4a1deb4a262d980141e63756adf3d5fbcf6ebde919cfd44052984704af6ba360e190fecfc730a5e470785d3061ee5f495cd697af97f90bbc11f2e4e41e57ce25f34b9c4ec9f3c051d964ad0c036b4 +Ctrl.hexxcghash = hexxcghash:5ae93beda675546c8a783974925aca9b365a6d8e +Ctrl.hexsession_id = hexsession_id:bb0bfeb33b78474b2d53232b3122506992c0cae4 +Ctrl.type = type:A +Output = 739ad52e454ba3457735b7c5304c6578 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010100c0724e077d7237441eb79039debaa851c0bf411e69cd5314f3c72aa45760c9969985b34291fb64bf964b719d2b989e40a0e9fbccdb23536a78f1b55ebbda809f862e8ec3561c15c4288595546e09789cbc2491050073222397957c9090b7f8f96e3fefbc5f438c72ca8bb48f6337e208ee9b3f630a8c5b40b9fafca8e55be0a0cf4046884a0a049b4557da4ddb7a344226f4707c706e96467b1568ad4d10363aa9eb04b91efbada0c1c292475ce9893a27d4a1deb4a262d980141e63756adf3d5fbcf6ebde919cfd44052984704af6ba360e190fecfc730a5e470785d3061ee5f495cd697af97f90bbc11f2e4e41e57ce25f34b9c4ec9f3c051d964ad0c036b4 +Ctrl.hexxcghash = hexxcghash:5ae93beda675546c8a783974925aca9b365a6d8e +Ctrl.hexsession_id = hexsession_id:bb0bfeb33b78474b2d53232b3122506992c0cae4 +Ctrl.type = type:B +Output = 3bd9f9d9f06aa521d2f53e40fc5d9f90 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010100c0724e077d7237441eb79039debaa851c0bf411e69cd5314f3c72aa45760c9969985b34291fb64bf964b719d2b989e40a0e9fbccdb23536a78f1b55ebbda809f862e8ec3561c15c4288595546e09789cbc2491050073222397957c9090b7f8f96e3fefbc5f438c72ca8bb48f6337e208ee9b3f630a8c5b40b9fafca8e55be0a0cf4046884a0a049b4557da4ddb7a344226f4707c706e96467b1568ad4d10363aa9eb04b91efbada0c1c292475ce9893a27d4a1deb4a262d980141e63756adf3d5fbcf6ebde919cfd44052984704af6ba360e190fecfc730a5e470785d3061ee5f495cd697af97f90bbc11f2e4e41e57ce25f34b9c4ec9f3c051d964ad0c036b4 +Ctrl.hexxcghash = hexxcghash:5ae93beda675546c8a783974925aca9b365a6d8e +Ctrl.hexsession_id = hexsession_id:bb0bfeb33b78474b2d53232b3122506992c0cae4 +Ctrl.type = type:C +Output = 335cd2813bebd3d5e1dda4c1e14c23de + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010100c0724e077d7237441eb79039debaa851c0bf411e69cd5314f3c72aa45760c9969985b34291fb64bf964b719d2b989e40a0e9fbccdb23536a78f1b55ebbda809f862e8ec3561c15c4288595546e09789cbc2491050073222397957c9090b7f8f96e3fefbc5f438c72ca8bb48f6337e208ee9b3f630a8c5b40b9fafca8e55be0a0cf4046884a0a049b4557da4ddb7a344226f4707c706e96467b1568ad4d10363aa9eb04b91efbada0c1c292475ce9893a27d4a1deb4a262d980141e63756adf3d5fbcf6ebde919cfd44052984704af6ba360e190fecfc730a5e470785d3061ee5f495cd697af97f90bbc11f2e4e41e57ce25f34b9c4ec9f3c051d964ad0c036b4 +Ctrl.hexxcghash = hexxcghash:5ae93beda675546c8a783974925aca9b365a6d8e +Ctrl.hexsession_id = hexsession_id:bb0bfeb33b78474b2d53232b3122506992c0cae4 +Ctrl.type = type:D +Output = fd25c5ae649645d8c0cfff0d4d8e7a47 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010100c0724e077d7237441eb79039debaa851c0bf411e69cd5314f3c72aa45760c9969985b34291fb64bf964b719d2b989e40a0e9fbccdb23536a78f1b55ebbda809f862e8ec3561c15c4288595546e09789cbc2491050073222397957c9090b7f8f96e3fefbc5f438c72ca8bb48f6337e208ee9b3f630a8c5b40b9fafca8e55be0a0cf4046884a0a049b4557da4ddb7a344226f4707c706e96467b1568ad4d10363aa9eb04b91efbada0c1c292475ce9893a27d4a1deb4a262d980141e63756adf3d5fbcf6ebde919cfd44052984704af6ba360e190fecfc730a5e470785d3061ee5f495cd697af97f90bbc11f2e4e41e57ce25f34b9c4ec9f3c051d964ad0c036b4 +Ctrl.hexxcghash = hexxcghash:5ae93beda675546c8a783974925aca9b365a6d8e +Ctrl.hexsession_id = hexsession_id:bb0bfeb33b78474b2d53232b3122506992c0cae4 +Ctrl.type = type:E +Output = 90e89773d04623553d4d298e6aa75781d8a6544b + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010100c0724e077d7237441eb79039debaa851c0bf411e69cd5314f3c72aa45760c9969985b34291fb64bf964b719d2b989e40a0e9fbccdb23536a78f1b55ebbda809f862e8ec3561c15c4288595546e09789cbc2491050073222397957c9090b7f8f96e3fefbc5f438c72ca8bb48f6337e208ee9b3f630a8c5b40b9fafca8e55be0a0cf4046884a0a049b4557da4ddb7a344226f4707c706e96467b1568ad4d10363aa9eb04b91efbada0c1c292475ce9893a27d4a1deb4a262d980141e63756adf3d5fbcf6ebde919cfd44052984704af6ba360e190fecfc730a5e470785d3061ee5f495cd697af97f90bbc11f2e4e41e57ce25f34b9c4ec9f3c051d964ad0c036b4 +Ctrl.hexxcghash = hexxcghash:5ae93beda675546c8a783974925aca9b365a6d8e +Ctrl.hexsession_id = hexsession_id:bb0bfeb33b78474b2d53232b3122506992c0cae4 +Ctrl.type = type:F +Output = 86a3f05a5f844b23d787cccbda37a3d773a4d049 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001004c48728c828a34a5ff90188cd749d5ccf849d8f96d78072bc8c3a766e4be2c4bfdb8d0310225f05b0373fa582b5a9e78b6a05d958a7b82d944d00697a1ef2119e7545bdf2c6dc2e8cb2215ff58a0163c116b0b326caa50e6384e4e4ab424bfada5d15af1d22f34dc5f8bfd5c823c4b9253fe858a9d7f17bf0be17951bce751b8c2f0b3be25bad6054b39fb2d687d4e69c07d79f4952e65315b1f712cee11707a4984f29df9aac7a7274772f60a2f207ec6a35e1478aa9ae8045dc53417b220bf60124d988e376bf18414400bbe2ac4654716fd26b3a90ae53215ff906364ef82a08686a1977126c64d6d3f381e8477d55f8e79a0e0719089e073fffdbf828cde +Ctrl.hexxcghash = hexxcghash:edeac369fd19f7dd1e8e48d0c69f9df5fe5475b4 +Ctrl.hexsession_id = hexsession_id:30d9cd8d63a203aeff4a99d8c299676f21a2c74e +Ctrl.type = type:A +Output = d2d06d589e6e696556e3d44d7d05decb + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001004c48728c828a34a5ff90188cd749d5ccf849d8f96d78072bc8c3a766e4be2c4bfdb8d0310225f05b0373fa582b5a9e78b6a05d958a7b82d944d00697a1ef2119e7545bdf2c6dc2e8cb2215ff58a0163c116b0b326caa50e6384e4e4ab424bfada5d15af1d22f34dc5f8bfd5c823c4b9253fe858a9d7f17bf0be17951bce751b8c2f0b3be25bad6054b39fb2d687d4e69c07d79f4952e65315b1f712cee11707a4984f29df9aac7a7274772f60a2f207ec6a35e1478aa9ae8045dc53417b220bf60124d988e376bf18414400bbe2ac4654716fd26b3a90ae53215ff906364ef82a08686a1977126c64d6d3f381e8477d55f8e79a0e0719089e073fffdbf828cde +Ctrl.hexxcghash = hexxcghash:edeac369fd19f7dd1e8e48d0c69f9df5fe5475b4 +Ctrl.hexsession_id = hexsession_id:30d9cd8d63a203aeff4a99d8c299676f21a2c74e +Ctrl.type = type:B +Output = 14e3a886b715206e837b70fe7c02b941 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001004c48728c828a34a5ff90188cd749d5ccf849d8f96d78072bc8c3a766e4be2c4bfdb8d0310225f05b0373fa582b5a9e78b6a05d958a7b82d944d00697a1ef2119e7545bdf2c6dc2e8cb2215ff58a0163c116b0b326caa50e6384e4e4ab424bfada5d15af1d22f34dc5f8bfd5c823c4b9253fe858a9d7f17bf0be17951bce751b8c2f0b3be25bad6054b39fb2d687d4e69c07d79f4952e65315b1f712cee11707a4984f29df9aac7a7274772f60a2f207ec6a35e1478aa9ae8045dc53417b220bf60124d988e376bf18414400bbe2ac4654716fd26b3a90ae53215ff906364ef82a08686a1977126c64d6d3f381e8477d55f8e79a0e0719089e073fffdbf828cde +Ctrl.hexxcghash = hexxcghash:edeac369fd19f7dd1e8e48d0c69f9df5fe5475b4 +Ctrl.hexsession_id = hexsession_id:30d9cd8d63a203aeff4a99d8c299676f21a2c74e +Ctrl.type = type:C +Output = 98625cf9741819273a0d6852ca7ab592 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001004c48728c828a34a5ff90188cd749d5ccf849d8f96d78072bc8c3a766e4be2c4bfdb8d0310225f05b0373fa582b5a9e78b6a05d958a7b82d944d00697a1ef2119e7545bdf2c6dc2e8cb2215ff58a0163c116b0b326caa50e6384e4e4ab424bfada5d15af1d22f34dc5f8bfd5c823c4b9253fe858a9d7f17bf0be17951bce751b8c2f0b3be25bad6054b39fb2d687d4e69c07d79f4952e65315b1f712cee11707a4984f29df9aac7a7274772f60a2f207ec6a35e1478aa9ae8045dc53417b220bf60124d988e376bf18414400bbe2ac4654716fd26b3a90ae53215ff906364ef82a08686a1977126c64d6d3f381e8477d55f8e79a0e0719089e073fffdbf828cde +Ctrl.hexxcghash = hexxcghash:edeac369fd19f7dd1e8e48d0c69f9df5fe5475b4 +Ctrl.hexsession_id = hexsession_id:30d9cd8d63a203aeff4a99d8c299676f21a2c74e +Ctrl.type = type:D +Output = a7b273f04d537856015e06075c94c398 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001004c48728c828a34a5ff90188cd749d5ccf849d8f96d78072bc8c3a766e4be2c4bfdb8d0310225f05b0373fa582b5a9e78b6a05d958a7b82d944d00697a1ef2119e7545bdf2c6dc2e8cb2215ff58a0163c116b0b326caa50e6384e4e4ab424bfada5d15af1d22f34dc5f8bfd5c823c4b9253fe858a9d7f17bf0be17951bce751b8c2f0b3be25bad6054b39fb2d687d4e69c07d79f4952e65315b1f712cee11707a4984f29df9aac7a7274772f60a2f207ec6a35e1478aa9ae8045dc53417b220bf60124d988e376bf18414400bbe2ac4654716fd26b3a90ae53215ff906364ef82a08686a1977126c64d6d3f381e8477d55f8e79a0e0719089e073fffdbf828cde +Ctrl.hexxcghash = hexxcghash:edeac369fd19f7dd1e8e48d0c69f9df5fe5475b4 +Ctrl.hexsession_id = hexsession_id:30d9cd8d63a203aeff4a99d8c299676f21a2c74e +Ctrl.type = type:E +Output = 3e1afa980d05ec30e9a55331ac301c10305999e2 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001004c48728c828a34a5ff90188cd749d5ccf849d8f96d78072bc8c3a766e4be2c4bfdb8d0310225f05b0373fa582b5a9e78b6a05d958a7b82d944d00697a1ef2119e7545bdf2c6dc2e8cb2215ff58a0163c116b0b326caa50e6384e4e4ab424bfada5d15af1d22f34dc5f8bfd5c823c4b9253fe858a9d7f17bf0be17951bce751b8c2f0b3be25bad6054b39fb2d687d4e69c07d79f4952e65315b1f712cee11707a4984f29df9aac7a7274772f60a2f207ec6a35e1478aa9ae8045dc53417b220bf60124d988e376bf18414400bbe2ac4654716fd26b3a90ae53215ff906364ef82a08686a1977126c64d6d3f381e8477d55f8e79a0e0719089e073fffdbf828cde +Ctrl.hexxcghash = hexxcghash:edeac369fd19f7dd1e8e48d0c69f9df5fe5475b4 +Ctrl.hexsession_id = hexsession_id:30d9cd8d63a203aeff4a99d8c299676f21a2c74e +Ctrl.type = type:F +Output = b993c4254669c7a51ed713ddaf7174fd5296fe57 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010100f6fa934f303a9db720352fca5a6bae671857d44053d61132a6d36d76cee686fd31ea796407306ad3cb500f99b8881641ce304217910179ca03d3638c89419127542d2f6eea999c637070a3a2e2d17419fd2d53a23dc0bbad1333089a64c232c4328ca5d6db233777a93932407741a9fe4c8efd13e9f2f411368fd2035d05175f8710b79a77bd4749df3027eef44f1d050fd01458cd1c6d1fe67d774f4e056533305ad39ecf5a6e4898186b8b66e95c9546081c7df6df7a433887bb0333d0fb16418bb2d399b2be0b02978e5bbc97b57e67e88aa073ba3280a386209029bdc3d8f448eb18e29c87811142629827c54aa19d150b6eb6fb7a33d746b11d27d9d474 +Ctrl.hexxcghash = hexxcghash:6dffed964fd4044cb99b5f8770abef82d02c1cd1 +Ctrl.hexsession_id = hexsession_id:d98f1e884633c4632568e1dd0a54e4c8508c279d +Ctrl.type = type:A +Output = d9c0ed6b7fbf066d4f3cff7d2585ef5b + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010100f6fa934f303a9db720352fca5a6bae671857d44053d61132a6d36d76cee686fd31ea796407306ad3cb500f99b8881641ce304217910179ca03d3638c89419127542d2f6eea999c637070a3a2e2d17419fd2d53a23dc0bbad1333089a64c232c4328ca5d6db233777a93932407741a9fe4c8efd13e9f2f411368fd2035d05175f8710b79a77bd4749df3027eef44f1d050fd01458cd1c6d1fe67d774f4e056533305ad39ecf5a6e4898186b8b66e95c9546081c7df6df7a433887bb0333d0fb16418bb2d399b2be0b02978e5bbc97b57e67e88aa073ba3280a386209029bdc3d8f448eb18e29c87811142629827c54aa19d150b6eb6fb7a33d746b11d27d9d474 +Ctrl.hexxcghash = hexxcghash:6dffed964fd4044cb99b5f8770abef82d02c1cd1 +Ctrl.hexsession_id = hexsession_id:d98f1e884633c4632568e1dd0a54e4c8508c279d +Ctrl.type = type:B +Output = da13833aa2c086e5d76595132f4e5fc6 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010100f6fa934f303a9db720352fca5a6bae671857d44053d61132a6d36d76cee686fd31ea796407306ad3cb500f99b8881641ce304217910179ca03d3638c89419127542d2f6eea999c637070a3a2e2d17419fd2d53a23dc0bbad1333089a64c232c4328ca5d6db233777a93932407741a9fe4c8efd13e9f2f411368fd2035d05175f8710b79a77bd4749df3027eef44f1d050fd01458cd1c6d1fe67d774f4e056533305ad39ecf5a6e4898186b8b66e95c9546081c7df6df7a433887bb0333d0fb16418bb2d399b2be0b02978e5bbc97b57e67e88aa073ba3280a386209029bdc3d8f448eb18e29c87811142629827c54aa19d150b6eb6fb7a33d746b11d27d9d474 +Ctrl.hexxcghash = hexxcghash:6dffed964fd4044cb99b5f8770abef82d02c1cd1 +Ctrl.hexsession_id = hexsession_id:d98f1e884633c4632568e1dd0a54e4c8508c279d +Ctrl.type = type:C +Output = 9e27400587b646397a7655be0e5763ec + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010100f6fa934f303a9db720352fca5a6bae671857d44053d61132a6d36d76cee686fd31ea796407306ad3cb500f99b8881641ce304217910179ca03d3638c89419127542d2f6eea999c637070a3a2e2d17419fd2d53a23dc0bbad1333089a64c232c4328ca5d6db233777a93932407741a9fe4c8efd13e9f2f411368fd2035d05175f8710b79a77bd4749df3027eef44f1d050fd01458cd1c6d1fe67d774f4e056533305ad39ecf5a6e4898186b8b66e95c9546081c7df6df7a433887bb0333d0fb16418bb2d399b2be0b02978e5bbc97b57e67e88aa073ba3280a386209029bdc3d8f448eb18e29c87811142629827c54aa19d150b6eb6fb7a33d746b11d27d9d474 +Ctrl.hexxcghash = hexxcghash:6dffed964fd4044cb99b5f8770abef82d02c1cd1 +Ctrl.hexsession_id = hexsession_id:d98f1e884633c4632568e1dd0a54e4c8508c279d +Ctrl.type = type:D +Output = 91b95d5cce7f2aec14776f49f652a305 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010100f6fa934f303a9db720352fca5a6bae671857d44053d61132a6d36d76cee686fd31ea796407306ad3cb500f99b8881641ce304217910179ca03d3638c89419127542d2f6eea999c637070a3a2e2d17419fd2d53a23dc0bbad1333089a64c232c4328ca5d6db233777a93932407741a9fe4c8efd13e9f2f411368fd2035d05175f8710b79a77bd4749df3027eef44f1d050fd01458cd1c6d1fe67d774f4e056533305ad39ecf5a6e4898186b8b66e95c9546081c7df6df7a433887bb0333d0fb16418bb2d399b2be0b02978e5bbc97b57e67e88aa073ba3280a386209029bdc3d8f448eb18e29c87811142629827c54aa19d150b6eb6fb7a33d746b11d27d9d474 +Ctrl.hexxcghash = hexxcghash:6dffed964fd4044cb99b5f8770abef82d02c1cd1 +Ctrl.hexsession_id = hexsession_id:d98f1e884633c4632568e1dd0a54e4c8508c279d +Ctrl.type = type:E +Output = a97dc9a99e37c983a4922cd2ecdfa394b71141ce + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010100f6fa934f303a9db720352fca5a6bae671857d44053d61132a6d36d76cee686fd31ea796407306ad3cb500f99b8881641ce304217910179ca03d3638c89419127542d2f6eea999c637070a3a2e2d17419fd2d53a23dc0bbad1333089a64c232c4328ca5d6db233777a93932407741a9fe4c8efd13e9f2f411368fd2035d05175f8710b79a77bd4749df3027eef44f1d050fd01458cd1c6d1fe67d774f4e056533305ad39ecf5a6e4898186b8b66e95c9546081c7df6df7a433887bb0333d0fb16418bb2d399b2be0b02978e5bbc97b57e67e88aa073ba3280a386209029bdc3d8f448eb18e29c87811142629827c54aa19d150b6eb6fb7a33d746b11d27d9d474 +Ctrl.hexxcghash = hexxcghash:6dffed964fd4044cb99b5f8770abef82d02c1cd1 +Ctrl.hexsession_id = hexsession_id:d98f1e884633c4632568e1dd0a54e4c8508c279d +Ctrl.type = type:F +Output = 173d846f9790c742ca86af4bff5f965c6088a05b + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001000a341cb148554046ac79686473c7e924486ae79c9dd1878a647687d3562cc81e5379c20df44edd6bfa8b9a26cdc06c6eb5f02272f90992ef58c65fe3e98725e9434a8512aef4c2093d27c57a1aee5f5b6861025001d20b5bc8666c4930107f563035bca6ddc91ff9d15ebb56d2628146d3baa3c6f81dc73602518c2aef4906e08b2ffa67e4528d92b1b3bcbd3a9e421d86413bb355574bb68f94bf75221918ca4f6624445b0afa0c26e270788490cbab1abd41a42200ab9e76a2f8b8ffbe0c5ef7a230b5bf7018cfd170ccd009058092d2446ebe73c5f0bf2d9ceca311502af621880eb18e46edc7832765c00e2599fbb82402b039eb5c5ae376690a717c0344 +Ctrl.hexxcghash = hexxcghash:4cee9b1867e94911e8f9fbd9ec3375d25c955f97 +Ctrl.hexsession_id = hexsession_id:2aefdaa6f14ac3ec200a951fd74433cddc01193a +Ctrl.type = type:A +Output = 6fa496847cda7367cb32b8be9aae3f85 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001000a341cb148554046ac79686473c7e924486ae79c9dd1878a647687d3562cc81e5379c20df44edd6bfa8b9a26cdc06c6eb5f02272f90992ef58c65fe3e98725e9434a8512aef4c2093d27c57a1aee5f5b6861025001d20b5bc8666c4930107f563035bca6ddc91ff9d15ebb56d2628146d3baa3c6f81dc73602518c2aef4906e08b2ffa67e4528d92b1b3bcbd3a9e421d86413bb355574bb68f94bf75221918ca4f6624445b0afa0c26e270788490cbab1abd41a42200ab9e76a2f8b8ffbe0c5ef7a230b5bf7018cfd170ccd009058092d2446ebe73c5f0bf2d9ceca311502af621880eb18e46edc7832765c00e2599fbb82402b039eb5c5ae376690a717c0344 +Ctrl.hexxcghash = hexxcghash:4cee9b1867e94911e8f9fbd9ec3375d25c955f97 +Ctrl.hexsession_id = hexsession_id:2aefdaa6f14ac3ec200a951fd74433cddc01193a +Ctrl.type = type:B +Output = 702ac8636520b7c6169ddc660781de9f + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001000a341cb148554046ac79686473c7e924486ae79c9dd1878a647687d3562cc81e5379c20df44edd6bfa8b9a26cdc06c6eb5f02272f90992ef58c65fe3e98725e9434a8512aef4c2093d27c57a1aee5f5b6861025001d20b5bc8666c4930107f563035bca6ddc91ff9d15ebb56d2628146d3baa3c6f81dc73602518c2aef4906e08b2ffa67e4528d92b1b3bcbd3a9e421d86413bb355574bb68f94bf75221918ca4f6624445b0afa0c26e270788490cbab1abd41a42200ab9e76a2f8b8ffbe0c5ef7a230b5bf7018cfd170ccd009058092d2446ebe73c5f0bf2d9ceca311502af621880eb18e46edc7832765c00e2599fbb82402b039eb5c5ae376690a717c0344 +Ctrl.hexxcghash = hexxcghash:4cee9b1867e94911e8f9fbd9ec3375d25c955f97 +Ctrl.hexsession_id = hexsession_id:2aefdaa6f14ac3ec200a951fd74433cddc01193a +Ctrl.type = type:C +Output = 6ffd703180af7c2207d5fa9e467272e3 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001000a341cb148554046ac79686473c7e924486ae79c9dd1878a647687d3562cc81e5379c20df44edd6bfa8b9a26cdc06c6eb5f02272f90992ef58c65fe3e98725e9434a8512aef4c2093d27c57a1aee5f5b6861025001d20b5bc8666c4930107f563035bca6ddc91ff9d15ebb56d2628146d3baa3c6f81dc73602518c2aef4906e08b2ffa67e4528d92b1b3bcbd3a9e421d86413bb355574bb68f94bf75221918ca4f6624445b0afa0c26e270788490cbab1abd41a42200ab9e76a2f8b8ffbe0c5ef7a230b5bf7018cfd170ccd009058092d2446ebe73c5f0bf2d9ceca311502af621880eb18e46edc7832765c00e2599fbb82402b039eb5c5ae376690a717c0344 +Ctrl.hexxcghash = hexxcghash:4cee9b1867e94911e8f9fbd9ec3375d25c955f97 +Ctrl.hexsession_id = hexsession_id:2aefdaa6f14ac3ec200a951fd74433cddc01193a +Ctrl.type = type:D +Output = 7ae5281e377f230dcc9854cf995f663d + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001000a341cb148554046ac79686473c7e924486ae79c9dd1878a647687d3562cc81e5379c20df44edd6bfa8b9a26cdc06c6eb5f02272f90992ef58c65fe3e98725e9434a8512aef4c2093d27c57a1aee5f5b6861025001d20b5bc8666c4930107f563035bca6ddc91ff9d15ebb56d2628146d3baa3c6f81dc73602518c2aef4906e08b2ffa67e4528d92b1b3bcbd3a9e421d86413bb355574bb68f94bf75221918ca4f6624445b0afa0c26e270788490cbab1abd41a42200ab9e76a2f8b8ffbe0c5ef7a230b5bf7018cfd170ccd009058092d2446ebe73c5f0bf2d9ceca311502af621880eb18e46edc7832765c00e2599fbb82402b039eb5c5ae376690a717c0344 +Ctrl.hexxcghash = hexxcghash:4cee9b1867e94911e8f9fbd9ec3375d25c955f97 +Ctrl.hexsession_id = hexsession_id:2aefdaa6f14ac3ec200a951fd74433cddc01193a +Ctrl.type = type:E +Output = fbcb152df7a3f12a8f174f9ca31bb31b124ae3c2 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001000a341cb148554046ac79686473c7e924486ae79c9dd1878a647687d3562cc81e5379c20df44edd6bfa8b9a26cdc06c6eb5f02272f90992ef58c65fe3e98725e9434a8512aef4c2093d27c57a1aee5f5b6861025001d20b5bc8666c4930107f563035bca6ddc91ff9d15ebb56d2628146d3baa3c6f81dc73602518c2aef4906e08b2ffa67e4528d92b1b3bcbd3a9e421d86413bb355574bb68f94bf75221918ca4f6624445b0afa0c26e270788490cbab1abd41a42200ab9e76a2f8b8ffbe0c5ef7a230b5bf7018cfd170ccd009058092d2446ebe73c5f0bf2d9ceca311502af621880eb18e46edc7832765c00e2599fbb82402b039eb5c5ae376690a717c0344 +Ctrl.hexxcghash = hexxcghash:4cee9b1867e94911e8f9fbd9ec3375d25c955f97 +Ctrl.hexsession_id = hexsession_id:2aefdaa6f14ac3ec200a951fd74433cddc01193a +Ctrl.type = type:F +Output = 3f0c57fbccfb7306cff23bdaf69d70a8a394b34b + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010011afb59055b4e8e0840d76a2d28a3ec1cf3fe7e436b585eab29cc3149e1fa610d979fcc1483a0ea2b426f8e25bc87bae94bdcbeaa80501a3c554d996f1656ac9be75ecefa46273b3ab8a66468cb4a16b3630cbc41df49ebe3917b5afba24d669264e11689f1a401abc557a0c4cf22ad9323056642c2bf7fea0907ba2274b7666dd144e66e1f39371a14ccafa030bad4c6e04f7b22f1e14f9a37ad6aaa3642f66068863a74ed4a07e87494f0ace772b682845fb27efd7f1a99f09b419f43d8443302534e4c59c0d3c59736e47375ff6e96c167247c5196a7c8849adb527e9ccbfae797ea311181978197f924dcf0db7367f84baa27db6e554ba6b764550d2834f +Ctrl.hexxcghash = hexxcghash:7ced7b72644be681615e503ecafe0c8f7124c85b +Ctrl.hexsession_id = hexsession_id:95d4ca5b0107d3d9f94ef857d7a64f685d3fecdc +Ctrl.type = type:A +Output = 7e37ea52156fad1903709e1d3229721f + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010011afb59055b4e8e0840d76a2d28a3ec1cf3fe7e436b585eab29cc3149e1fa610d979fcc1483a0ea2b426f8e25bc87bae94bdcbeaa80501a3c554d996f1656ac9be75ecefa46273b3ab8a66468cb4a16b3630cbc41df49ebe3917b5afba24d669264e11689f1a401abc557a0c4cf22ad9323056642c2bf7fea0907ba2274b7666dd144e66e1f39371a14ccafa030bad4c6e04f7b22f1e14f9a37ad6aaa3642f66068863a74ed4a07e87494f0ace772b682845fb27efd7f1a99f09b419f43d8443302534e4c59c0d3c59736e47375ff6e96c167247c5196a7c8849adb527e9ccbfae797ea311181978197f924dcf0db7367f84baa27db6e554ba6b764550d2834f +Ctrl.hexxcghash = hexxcghash:7ced7b72644be681615e503ecafe0c8f7124c85b +Ctrl.hexsession_id = hexsession_id:95d4ca5b0107d3d9f94ef857d7a64f685d3fecdc +Ctrl.type = type:B +Output = c15569583de413e08293bf1689a9afe8 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010011afb59055b4e8e0840d76a2d28a3ec1cf3fe7e436b585eab29cc3149e1fa610d979fcc1483a0ea2b426f8e25bc87bae94bdcbeaa80501a3c554d996f1656ac9be75ecefa46273b3ab8a66468cb4a16b3630cbc41df49ebe3917b5afba24d669264e11689f1a401abc557a0c4cf22ad9323056642c2bf7fea0907ba2274b7666dd144e66e1f39371a14ccafa030bad4c6e04f7b22f1e14f9a37ad6aaa3642f66068863a74ed4a07e87494f0ace772b682845fb27efd7f1a99f09b419f43d8443302534e4c59c0d3c59736e47375ff6e96c167247c5196a7c8849adb527e9ccbfae797ea311181978197f924dcf0db7367f84baa27db6e554ba6b764550d2834f +Ctrl.hexxcghash = hexxcghash:7ced7b72644be681615e503ecafe0c8f7124c85b +Ctrl.hexsession_id = hexsession_id:95d4ca5b0107d3d9f94ef857d7a64f685d3fecdc +Ctrl.type = type:C +Output = 0c85227539f5e328c64172280759d9bf + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010011afb59055b4e8e0840d76a2d28a3ec1cf3fe7e436b585eab29cc3149e1fa610d979fcc1483a0ea2b426f8e25bc87bae94bdcbeaa80501a3c554d996f1656ac9be75ecefa46273b3ab8a66468cb4a16b3630cbc41df49ebe3917b5afba24d669264e11689f1a401abc557a0c4cf22ad9323056642c2bf7fea0907ba2274b7666dd144e66e1f39371a14ccafa030bad4c6e04f7b22f1e14f9a37ad6aaa3642f66068863a74ed4a07e87494f0ace772b682845fb27efd7f1a99f09b419f43d8443302534e4c59c0d3c59736e47375ff6e96c167247c5196a7c8849adb527e9ccbfae797ea311181978197f924dcf0db7367f84baa27db6e554ba6b764550d2834f +Ctrl.hexxcghash = hexxcghash:7ced7b72644be681615e503ecafe0c8f7124c85b +Ctrl.hexsession_id = hexsession_id:95d4ca5b0107d3d9f94ef857d7a64f685d3fecdc +Ctrl.type = type:D +Output = 3dbc42d9e7128e861b87781546cedc8e + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010011afb59055b4e8e0840d76a2d28a3ec1cf3fe7e436b585eab29cc3149e1fa610d979fcc1483a0ea2b426f8e25bc87bae94bdcbeaa80501a3c554d996f1656ac9be75ecefa46273b3ab8a66468cb4a16b3630cbc41df49ebe3917b5afba24d669264e11689f1a401abc557a0c4cf22ad9323056642c2bf7fea0907ba2274b7666dd144e66e1f39371a14ccafa030bad4c6e04f7b22f1e14f9a37ad6aaa3642f66068863a74ed4a07e87494f0ace772b682845fb27efd7f1a99f09b419f43d8443302534e4c59c0d3c59736e47375ff6e96c167247c5196a7c8849adb527e9ccbfae797ea311181978197f924dcf0db7367f84baa27db6e554ba6b764550d2834f +Ctrl.hexxcghash = hexxcghash:7ced7b72644be681615e503ecafe0c8f7124c85b +Ctrl.hexsession_id = hexsession_id:95d4ca5b0107d3d9f94ef857d7a64f685d3fecdc +Ctrl.type = type:E +Output = 1ec0d15e38ea1b48da963837dbf30cef855a92c7 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010011afb59055b4e8e0840d76a2d28a3ec1cf3fe7e436b585eab29cc3149e1fa610d979fcc1483a0ea2b426f8e25bc87bae94bdcbeaa80501a3c554d996f1656ac9be75ecefa46273b3ab8a66468cb4a16b3630cbc41df49ebe3917b5afba24d669264e11689f1a401abc557a0c4cf22ad9323056642c2bf7fea0907ba2274b7666dd144e66e1f39371a14ccafa030bad4c6e04f7b22f1e14f9a37ad6aaa3642f66068863a74ed4a07e87494f0ace772b682845fb27efd7f1a99f09b419f43d8443302534e4c59c0d3c59736e47375ff6e96c167247c5196a7c8849adb527e9ccbfae797ea311181978197f924dcf0db7367f84baa27db6e554ba6b764550d2834f +Ctrl.hexxcghash = hexxcghash:7ced7b72644be681615e503ecafe0c8f7124c85b +Ctrl.hexsession_id = hexsession_id:95d4ca5b0107d3d9f94ef857d7a64f685d3fecdc +Ctrl.type = type:F +Output = eea8ea042a079fcf8416a8b244fafab35adeca8a + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001002f14b1acdf871bec4ea5720a3e921cf16a796559b2a094a0d1e45021dcabff152a0e3dca4115239454dc407a6474c8fcd395273a6487c6736710610aeb607707b7ef87203a081646af53ba037f29316a3dec4ce80ec04775b8697db46f7e4f4b38d69de832a25cf0a5484c9b36a48950d50dfe77ac5da63a1c2314ffa8cb68f0c201bbfb7a1a89837b9f57465d14635bda2abf601a06bbd8f70af0169c39209dcda9fb1416a9eadb5ea4deb358566190a62a44d6765d9a25b5157ed5e0f5317f0ed3f6eacebe07ba214e2ef9f654dbc2fa3dc2f227124a3f56a40905c9c86cd64b0ed80c4299d86f59d5f06b9c026a28feea5c5fafbe7ba90283de867dd55858 +Ctrl.hexxcghash = hexxcghash:5fb6dff3272cb949856a57f2645a56d957dc4606 +Ctrl.hexsession_id = hexsession_id:5160cab836d899193077dc67485ef41669ec5d8a +Ctrl.type = type:A +Output = f2faef6e274814ed7ca544484ac21a3a + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001002f14b1acdf871bec4ea5720a3e921cf16a796559b2a094a0d1e45021dcabff152a0e3dca4115239454dc407a6474c8fcd395273a6487c6736710610aeb607707b7ef87203a081646af53ba037f29316a3dec4ce80ec04775b8697db46f7e4f4b38d69de832a25cf0a5484c9b36a48950d50dfe77ac5da63a1c2314ffa8cb68f0c201bbfb7a1a89837b9f57465d14635bda2abf601a06bbd8f70af0169c39209dcda9fb1416a9eadb5ea4deb358566190a62a44d6765d9a25b5157ed5e0f5317f0ed3f6eacebe07ba214e2ef9f654dbc2fa3dc2f227124a3f56a40905c9c86cd64b0ed80c4299d86f59d5f06b9c026a28feea5c5fafbe7ba90283de867dd55858 +Ctrl.hexxcghash = hexxcghash:5fb6dff3272cb949856a57f2645a56d957dc4606 +Ctrl.hexsession_id = hexsession_id:5160cab836d899193077dc67485ef41669ec5d8a +Ctrl.type = type:B +Output = 3ca9bc0f3c65c257fa160a4d1c5e3520 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001002f14b1acdf871bec4ea5720a3e921cf16a796559b2a094a0d1e45021dcabff152a0e3dca4115239454dc407a6474c8fcd395273a6487c6736710610aeb607707b7ef87203a081646af53ba037f29316a3dec4ce80ec04775b8697db46f7e4f4b38d69de832a25cf0a5484c9b36a48950d50dfe77ac5da63a1c2314ffa8cb68f0c201bbfb7a1a89837b9f57465d14635bda2abf601a06bbd8f70af0169c39209dcda9fb1416a9eadb5ea4deb358566190a62a44d6765d9a25b5157ed5e0f5317f0ed3f6eacebe07ba214e2ef9f654dbc2fa3dc2f227124a3f56a40905c9c86cd64b0ed80c4299d86f59d5f06b9c026a28feea5c5fafbe7ba90283de867dd55858 +Ctrl.hexxcghash = hexxcghash:5fb6dff3272cb949856a57f2645a56d957dc4606 +Ctrl.hexsession_id = hexsession_id:5160cab836d899193077dc67485ef41669ec5d8a +Ctrl.type = type:C +Output = fcdf0545b51aca6515bccf6ed0ecb582 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001002f14b1acdf871bec4ea5720a3e921cf16a796559b2a094a0d1e45021dcabff152a0e3dca4115239454dc407a6474c8fcd395273a6487c6736710610aeb607707b7ef87203a081646af53ba037f29316a3dec4ce80ec04775b8697db46f7e4f4b38d69de832a25cf0a5484c9b36a48950d50dfe77ac5da63a1c2314ffa8cb68f0c201bbfb7a1a89837b9f57465d14635bda2abf601a06bbd8f70af0169c39209dcda9fb1416a9eadb5ea4deb358566190a62a44d6765d9a25b5157ed5e0f5317f0ed3f6eacebe07ba214e2ef9f654dbc2fa3dc2f227124a3f56a40905c9c86cd64b0ed80c4299d86f59d5f06b9c026a28feea5c5fafbe7ba90283de867dd55858 +Ctrl.hexxcghash = hexxcghash:5fb6dff3272cb949856a57f2645a56d957dc4606 +Ctrl.hexsession_id = hexsession_id:5160cab836d899193077dc67485ef41669ec5d8a +Ctrl.type = type:D +Output = 86ea895a310c3bbd1aac209b2362d58a + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001002f14b1acdf871bec4ea5720a3e921cf16a796559b2a094a0d1e45021dcabff152a0e3dca4115239454dc407a6474c8fcd395273a6487c6736710610aeb607707b7ef87203a081646af53ba037f29316a3dec4ce80ec04775b8697db46f7e4f4b38d69de832a25cf0a5484c9b36a48950d50dfe77ac5da63a1c2314ffa8cb68f0c201bbfb7a1a89837b9f57465d14635bda2abf601a06bbd8f70af0169c39209dcda9fb1416a9eadb5ea4deb358566190a62a44d6765d9a25b5157ed5e0f5317f0ed3f6eacebe07ba214e2ef9f654dbc2fa3dc2f227124a3f56a40905c9c86cd64b0ed80c4299d86f59d5f06b9c026a28feea5c5fafbe7ba90283de867dd55858 +Ctrl.hexxcghash = hexxcghash:5fb6dff3272cb949856a57f2645a56d957dc4606 +Ctrl.hexsession_id = hexsession_id:5160cab836d899193077dc67485ef41669ec5d8a +Ctrl.type = type:E +Output = 12a4f2b749e2bf88c1f8437e5ff61de761fd48b3 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001002f14b1acdf871bec4ea5720a3e921cf16a796559b2a094a0d1e45021dcabff152a0e3dca4115239454dc407a6474c8fcd395273a6487c6736710610aeb607707b7ef87203a081646af53ba037f29316a3dec4ce80ec04775b8697db46f7e4f4b38d69de832a25cf0a5484c9b36a48950d50dfe77ac5da63a1c2314ffa8cb68f0c201bbfb7a1a89837b9f57465d14635bda2abf601a06bbd8f70af0169c39209dcda9fb1416a9eadb5ea4deb358566190a62a44d6765d9a25b5157ed5e0f5317f0ed3f6eacebe07ba214e2ef9f654dbc2fa3dc2f227124a3f56a40905c9c86cd64b0ed80c4299d86f59d5f06b9c026a28feea5c5fafbe7ba90283de867dd55858 +Ctrl.hexxcghash = hexxcghash:5fb6dff3272cb949856a57f2645a56d957dc4606 +Ctrl.hexsession_id = hexsession_id:5160cab836d899193077dc67485ef41669ec5d8a +Ctrl.type = type:F +Output = a3a9276a120db379ec780e434879a54935db954d + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010060cc18ebbeb9b25cb16a58bfa47644110ceab67f274daf67157e923b70f775a4168bb7911d0e53075044366e503fbffcf3fcf9249e551d69211715b681ba3a28dd133dbada24dcf80d2bf67a1d6c0477f108f8763b30fe28c6d0b54e59e7e580692453d05a30d38e134d6117ca999ace80a57d088228b2a9f001e57d3a8b1cdffe55fda194f01189ec2bb0d99fc8570a9d822a94dddb22f4ba3c88f2ee1045dafa2d106e5c2c09519e47ad9eaf2301569c9258a2deda9d3ea5b0c73f00d8d12579e5931d5253220d60eeb12fcefc98bc8f390e52b3b407280a31283628963c1131b6fd584be948c3fb4d316fa4a1b135513a174cafb0d394bb4afbee6cbe796e +Ctrl.hexxcghash = hexxcghash:501c76e6b5791e343fb6e7597e890c7dea7f04e5 +Ctrl.hexsession_id = hexsession_id:68e1f225f2e63df7bedbab15112b3670f03eed56 +Ctrl.type = type:A +Output = e53f2f61d8919e097cb99627fe668385 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010060cc18ebbeb9b25cb16a58bfa47644110ceab67f274daf67157e923b70f775a4168bb7911d0e53075044366e503fbffcf3fcf9249e551d69211715b681ba3a28dd133dbada24dcf80d2bf67a1d6c0477f108f8763b30fe28c6d0b54e59e7e580692453d05a30d38e134d6117ca999ace80a57d088228b2a9f001e57d3a8b1cdffe55fda194f01189ec2bb0d99fc8570a9d822a94dddb22f4ba3c88f2ee1045dafa2d106e5c2c09519e47ad9eaf2301569c9258a2deda9d3ea5b0c73f00d8d12579e5931d5253220d60eeb12fcefc98bc8f390e52b3b407280a31283628963c1131b6fd584be948c3fb4d316fa4a1b135513a174cafb0d394bb4afbee6cbe796e +Ctrl.hexxcghash = hexxcghash:501c76e6b5791e343fb6e7597e890c7dea7f04e5 +Ctrl.hexsession_id = hexsession_id:68e1f225f2e63df7bedbab15112b3670f03eed56 +Ctrl.type = type:B +Output = cea80fd8dc06654ed80b0ec150835537 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010060cc18ebbeb9b25cb16a58bfa47644110ceab67f274daf67157e923b70f775a4168bb7911d0e53075044366e503fbffcf3fcf9249e551d69211715b681ba3a28dd133dbada24dcf80d2bf67a1d6c0477f108f8763b30fe28c6d0b54e59e7e580692453d05a30d38e134d6117ca999ace80a57d088228b2a9f001e57d3a8b1cdffe55fda194f01189ec2bb0d99fc8570a9d822a94dddb22f4ba3c88f2ee1045dafa2d106e5c2c09519e47ad9eaf2301569c9258a2deda9d3ea5b0c73f00d8d12579e5931d5253220d60eeb12fcefc98bc8f390e52b3b407280a31283628963c1131b6fd584be948c3fb4d316fa4a1b135513a174cafb0d394bb4afbee6cbe796e +Ctrl.hexxcghash = hexxcghash:501c76e6b5791e343fb6e7597e890c7dea7f04e5 +Ctrl.hexsession_id = hexsession_id:68e1f225f2e63df7bedbab15112b3670f03eed56 +Ctrl.type = type:C +Output = d5ba475e737bed349b8931ba38d426e9 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010060cc18ebbeb9b25cb16a58bfa47644110ceab67f274daf67157e923b70f775a4168bb7911d0e53075044366e503fbffcf3fcf9249e551d69211715b681ba3a28dd133dbada24dcf80d2bf67a1d6c0477f108f8763b30fe28c6d0b54e59e7e580692453d05a30d38e134d6117ca999ace80a57d088228b2a9f001e57d3a8b1cdffe55fda194f01189ec2bb0d99fc8570a9d822a94dddb22f4ba3c88f2ee1045dafa2d106e5c2c09519e47ad9eaf2301569c9258a2deda9d3ea5b0c73f00d8d12579e5931d5253220d60eeb12fcefc98bc8f390e52b3b407280a31283628963c1131b6fd584be948c3fb4d316fa4a1b135513a174cafb0d394bb4afbee6cbe796e +Ctrl.hexxcghash = hexxcghash:501c76e6b5791e343fb6e7597e890c7dea7f04e5 +Ctrl.hexsession_id = hexsession_id:68e1f225f2e63df7bedbab15112b3670f03eed56 +Ctrl.type = type:D +Output = f3ea92b4f365ab2fb8403ad8ecd2d17c + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010060cc18ebbeb9b25cb16a58bfa47644110ceab67f274daf67157e923b70f775a4168bb7911d0e53075044366e503fbffcf3fcf9249e551d69211715b681ba3a28dd133dbada24dcf80d2bf67a1d6c0477f108f8763b30fe28c6d0b54e59e7e580692453d05a30d38e134d6117ca999ace80a57d088228b2a9f001e57d3a8b1cdffe55fda194f01189ec2bb0d99fc8570a9d822a94dddb22f4ba3c88f2ee1045dafa2d106e5c2c09519e47ad9eaf2301569c9258a2deda9d3ea5b0c73f00d8d12579e5931d5253220d60eeb12fcefc98bc8f390e52b3b407280a31283628963c1131b6fd584be948c3fb4d316fa4a1b135513a174cafb0d394bb4afbee6cbe796e +Ctrl.hexxcghash = hexxcghash:501c76e6b5791e343fb6e7597e890c7dea7f04e5 +Ctrl.hexsession_id = hexsession_id:68e1f225f2e63df7bedbab15112b3670f03eed56 +Ctrl.type = type:E +Output = 41fa718884738fd6fd9ee9fd5af05f0de9400952 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010060cc18ebbeb9b25cb16a58bfa47644110ceab67f274daf67157e923b70f775a4168bb7911d0e53075044366e503fbffcf3fcf9249e551d69211715b681ba3a28dd133dbada24dcf80d2bf67a1d6c0477f108f8763b30fe28c6d0b54e59e7e580692453d05a30d38e134d6117ca999ace80a57d088228b2a9f001e57d3a8b1cdffe55fda194f01189ec2bb0d99fc8570a9d822a94dddb22f4ba3c88f2ee1045dafa2d106e5c2c09519e47ad9eaf2301569c9258a2deda9d3ea5b0c73f00d8d12579e5931d5253220d60eeb12fcefc98bc8f390e52b3b407280a31283628963c1131b6fd584be948c3fb4d316fa4a1b135513a174cafb0d394bb4afbee6cbe796e +Ctrl.hexxcghash = hexxcghash:501c76e6b5791e343fb6e7597e890c7dea7f04e5 +Ctrl.hexsession_id = hexsession_id:68e1f225f2e63df7bedbab15112b3670f03eed56 +Ctrl.type = type:F +Output = 91395bbd90abb140d0984ed5e77836590bf44695 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010072a106d13e5148877457b7a8c853cfabd151d1b1acde6d776b7affc23c653a3b1c893398c7d83e039fbea9dc739dc14f3a9348af154f840d2f88e3c1982758adeaeb78cff050046d26a9a13391099eea03e9fb853e95c117edaac5b36736e63cb5ad72b346cf1fb342169f5e538591988daec82e0e9a2f4a57db22df8af92424f63111d87991345fd4458abab42cdbfcb84abb222701575a50274a7c6cc38355740cc04bfaff33467c816a70242142fd5467b1713eeec1e0d0f2fcfaf66602dcc31c4105d928a7185ebf53a6e792f419f57573e6dc6d1221e6907f6ad958d2a0c8fe096ce43e403316ae92f93acd1cac7878c9011bc71eff81d4353d7b0c13b1 +Ctrl.hexxcghash = hexxcghash:9acf1f808aeac5b11460192c8f191491b62fc66a +Ctrl.hexsession_id = hexsession_id:4c662e4dc764cbcb1b3eed4de4375f85c8b2f56c +Ctrl.type = type:A +Output = 04d3c0a3f5e33ae373c637ef45897779 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010072a106d13e5148877457b7a8c853cfabd151d1b1acde6d776b7affc23c653a3b1c893398c7d83e039fbea9dc739dc14f3a9348af154f840d2f88e3c1982758adeaeb78cff050046d26a9a13391099eea03e9fb853e95c117edaac5b36736e63cb5ad72b346cf1fb342169f5e538591988daec82e0e9a2f4a57db22df8af92424f63111d87991345fd4458abab42cdbfcb84abb222701575a50274a7c6cc38355740cc04bfaff33467c816a70242142fd5467b1713eeec1e0d0f2fcfaf66602dcc31c4105d928a7185ebf53a6e792f419f57573e6dc6d1221e6907f6ad958d2a0c8fe096ce43e403316ae92f93acd1cac7878c9011bc71eff81d4353d7b0c13b1 +Ctrl.hexxcghash = hexxcghash:9acf1f808aeac5b11460192c8f191491b62fc66a +Ctrl.hexsession_id = hexsession_id:4c662e4dc764cbcb1b3eed4de4375f85c8b2f56c +Ctrl.type = type:B +Output = c5a45bfbf6d7c14c5d3a953b4848e433 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010072a106d13e5148877457b7a8c853cfabd151d1b1acde6d776b7affc23c653a3b1c893398c7d83e039fbea9dc739dc14f3a9348af154f840d2f88e3c1982758adeaeb78cff050046d26a9a13391099eea03e9fb853e95c117edaac5b36736e63cb5ad72b346cf1fb342169f5e538591988daec82e0e9a2f4a57db22df8af92424f63111d87991345fd4458abab42cdbfcb84abb222701575a50274a7c6cc38355740cc04bfaff33467c816a70242142fd5467b1713eeec1e0d0f2fcfaf66602dcc31c4105d928a7185ebf53a6e792f419f57573e6dc6d1221e6907f6ad958d2a0c8fe096ce43e403316ae92f93acd1cac7878c9011bc71eff81d4353d7b0c13b1 +Ctrl.hexxcghash = hexxcghash:9acf1f808aeac5b11460192c8f191491b62fc66a +Ctrl.hexsession_id = hexsession_id:4c662e4dc764cbcb1b3eed4de4375f85c8b2f56c +Ctrl.type = type:C +Output = 3a16d0da2f785e2c325b45109778910a + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010072a106d13e5148877457b7a8c853cfabd151d1b1acde6d776b7affc23c653a3b1c893398c7d83e039fbea9dc739dc14f3a9348af154f840d2f88e3c1982758adeaeb78cff050046d26a9a13391099eea03e9fb853e95c117edaac5b36736e63cb5ad72b346cf1fb342169f5e538591988daec82e0e9a2f4a57db22df8af92424f63111d87991345fd4458abab42cdbfcb84abb222701575a50274a7c6cc38355740cc04bfaff33467c816a70242142fd5467b1713eeec1e0d0f2fcfaf66602dcc31c4105d928a7185ebf53a6e792f419f57573e6dc6d1221e6907f6ad958d2a0c8fe096ce43e403316ae92f93acd1cac7878c9011bc71eff81d4353d7b0c13b1 +Ctrl.hexxcghash = hexxcghash:9acf1f808aeac5b11460192c8f191491b62fc66a +Ctrl.hexsession_id = hexsession_id:4c662e4dc764cbcb1b3eed4de4375f85c8b2f56c +Ctrl.type = type:D +Output = 902b38dd6c759945e671c1de7d99e918 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010072a106d13e5148877457b7a8c853cfabd151d1b1acde6d776b7affc23c653a3b1c893398c7d83e039fbea9dc739dc14f3a9348af154f840d2f88e3c1982758adeaeb78cff050046d26a9a13391099eea03e9fb853e95c117edaac5b36736e63cb5ad72b346cf1fb342169f5e538591988daec82e0e9a2f4a57db22df8af92424f63111d87991345fd4458abab42cdbfcb84abb222701575a50274a7c6cc38355740cc04bfaff33467c816a70242142fd5467b1713eeec1e0d0f2fcfaf66602dcc31c4105d928a7185ebf53a6e792f419f57573e6dc6d1221e6907f6ad958d2a0c8fe096ce43e403316ae92f93acd1cac7878c9011bc71eff81d4353d7b0c13b1 +Ctrl.hexxcghash = hexxcghash:9acf1f808aeac5b11460192c8f191491b62fc66a +Ctrl.hexsession_id = hexsession_id:4c662e4dc764cbcb1b3eed4de4375f85c8b2f56c +Ctrl.type = type:E +Output = b573244de3127f6aa5457e792219dc89defaaecd + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000010072a106d13e5148877457b7a8c853cfabd151d1b1acde6d776b7affc23c653a3b1c893398c7d83e039fbea9dc739dc14f3a9348af154f840d2f88e3c1982758adeaeb78cff050046d26a9a13391099eea03e9fb853e95c117edaac5b36736e63cb5ad72b346cf1fb342169f5e538591988daec82e0e9a2f4a57db22df8af92424f63111d87991345fd4458abab42cdbfcb84abb222701575a50274a7c6cc38355740cc04bfaff33467c816a70242142fd5467b1713eeec1e0d0f2fcfaf66602dcc31c4105d928a7185ebf53a6e792f419f57573e6dc6d1221e6907f6ad958d2a0c8fe096ce43e403316ae92f93acd1cac7878c9011bc71eff81d4353d7b0c13b1 +Ctrl.hexxcghash = hexxcghash:9acf1f808aeac5b11460192c8f191491b62fc66a +Ctrl.hexsession_id = hexsession_id:4c662e4dc764cbcb1b3eed4de4375f85c8b2f56c +Ctrl.type = type:F +Output = 6cd221005dd1f0de4f472f48d15e61dcc2e91e99 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001003644f9ee24c3ec2e2fe16cdece326cdf5c1309e931bc41f245d3b76f2bdbef0bae58e850e10dcbd0d18356b4f98957a3b95f64c85d1af12ab01fe967e52a632761074f27406a29618192f1cbebae2c25e42f6e9fc00a737e4c92398403ab946a6c33e675e529b5c7364f36d64f07ff65889866dee99293bd5bb5f6454a77bbe0cbfd746d54e5bc948c617c5a1d5d3d2b65fa6a86c5f42c5e01f92a8e97a96f848e50ecb1b495a0e87323b44f5b9dd25ab34a94c077b7490657d1d8f9a9acef2785de82b02ef9fb670faf841ae9b479d2d538ae8e38eaf6e74b884c18c9dafc19b6c9728ff3411537555b3b3b69f6f039958ffb0790e58b09bd8c63819ee50ea5 +Ctrl.hexxcghash = hexxcghash:4d31fdb68c8f42f38cae260bf6402e47de93aac7 +Ctrl.hexsession_id = hexsession_id:47caa2c09bb4dc9d6aeb697a76046bdf1fcd879b +Ctrl.type = type:A +Output = 5f9deaf2ee4f05af0a8a813ef6bb9549 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001003644f9ee24c3ec2e2fe16cdece326cdf5c1309e931bc41f245d3b76f2bdbef0bae58e850e10dcbd0d18356b4f98957a3b95f64c85d1af12ab01fe967e52a632761074f27406a29618192f1cbebae2c25e42f6e9fc00a737e4c92398403ab946a6c33e675e529b5c7364f36d64f07ff65889866dee99293bd5bb5f6454a77bbe0cbfd746d54e5bc948c617c5a1d5d3d2b65fa6a86c5f42c5e01f92a8e97a96f848e50ecb1b495a0e87323b44f5b9dd25ab34a94c077b7490657d1d8f9a9acef2785de82b02ef9fb670faf841ae9b479d2d538ae8e38eaf6e74b884c18c9dafc19b6c9728ff3411537555b3b3b69f6f039958ffb0790e58b09bd8c63819ee50ea5 +Ctrl.hexxcghash = hexxcghash:4d31fdb68c8f42f38cae260bf6402e47de93aac7 +Ctrl.hexsession_id = hexsession_id:47caa2c09bb4dc9d6aeb697a76046bdf1fcd879b +Ctrl.type = type:B +Output = a2ea4b795f9c9de1d786d0c771df2b84 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001003644f9ee24c3ec2e2fe16cdece326cdf5c1309e931bc41f245d3b76f2bdbef0bae58e850e10dcbd0d18356b4f98957a3b95f64c85d1af12ab01fe967e52a632761074f27406a29618192f1cbebae2c25e42f6e9fc00a737e4c92398403ab946a6c33e675e529b5c7364f36d64f07ff65889866dee99293bd5bb5f6454a77bbe0cbfd746d54e5bc948c617c5a1d5d3d2b65fa6a86c5f42c5e01f92a8e97a96f848e50ecb1b495a0e87323b44f5b9dd25ab34a94c077b7490657d1d8f9a9acef2785de82b02ef9fb670faf841ae9b479d2d538ae8e38eaf6e74b884c18c9dafc19b6c9728ff3411537555b3b3b69f6f039958ffb0790e58b09bd8c63819ee50ea5 +Ctrl.hexxcghash = hexxcghash:4d31fdb68c8f42f38cae260bf6402e47de93aac7 +Ctrl.hexsession_id = hexsession_id:47caa2c09bb4dc9d6aeb697a76046bdf1fcd879b +Ctrl.type = type:C +Output = 13f828f8f1e5532a04f138681bc8259d + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001003644f9ee24c3ec2e2fe16cdece326cdf5c1309e931bc41f245d3b76f2bdbef0bae58e850e10dcbd0d18356b4f98957a3b95f64c85d1af12ab01fe967e52a632761074f27406a29618192f1cbebae2c25e42f6e9fc00a737e4c92398403ab946a6c33e675e529b5c7364f36d64f07ff65889866dee99293bd5bb5f6454a77bbe0cbfd746d54e5bc948c617c5a1d5d3d2b65fa6a86c5f42c5e01f92a8e97a96f848e50ecb1b495a0e87323b44f5b9dd25ab34a94c077b7490657d1d8f9a9acef2785de82b02ef9fb670faf841ae9b479d2d538ae8e38eaf6e74b884c18c9dafc19b6c9728ff3411537555b3b3b69f6f039958ffb0790e58b09bd8c63819ee50ea5 +Ctrl.hexxcghash = hexxcghash:4d31fdb68c8f42f38cae260bf6402e47de93aac7 +Ctrl.hexsession_id = hexsession_id:47caa2c09bb4dc9d6aeb697a76046bdf1fcd879b +Ctrl.type = type:D +Output = 7231ce5fd725391e058cd78815f44625 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001003644f9ee24c3ec2e2fe16cdece326cdf5c1309e931bc41f245d3b76f2bdbef0bae58e850e10dcbd0d18356b4f98957a3b95f64c85d1af12ab01fe967e52a632761074f27406a29618192f1cbebae2c25e42f6e9fc00a737e4c92398403ab946a6c33e675e529b5c7364f36d64f07ff65889866dee99293bd5bb5f6454a77bbe0cbfd746d54e5bc948c617c5a1d5d3d2b65fa6a86c5f42c5e01f92a8e97a96f848e50ecb1b495a0e87323b44f5b9dd25ab34a94c077b7490657d1d8f9a9acef2785de82b02ef9fb670faf841ae9b479d2d538ae8e38eaf6e74b884c18c9dafc19b6c9728ff3411537555b3b3b69f6f039958ffb0790e58b09bd8c63819ee50ea5 +Ctrl.hexxcghash = hexxcghash:4d31fdb68c8f42f38cae260bf6402e47de93aac7 +Ctrl.hexsession_id = hexsession_id:47caa2c09bb4dc9d6aeb697a76046bdf1fcd879b +Ctrl.type = type:E +Output = 937b7e16ed0b2324203cdae904fc55cbe25067a1 + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:000001003644f9ee24c3ec2e2fe16cdece326cdf5c1309e931bc41f245d3b76f2bdbef0bae58e850e10dcbd0d18356b4f98957a3b95f64c85d1af12ab01fe967e52a632761074f27406a29618192f1cbebae2c25e42f6e9fc00a737e4c92398403ab946a6c33e675e529b5c7364f36d64f07ff65889866dee99293bd5bb5f6454a77bbe0cbfd746d54e5bc948c617c5a1d5d3d2b65fa6a86c5f42c5e01f92a8e97a96f848e50ecb1b495a0e87323b44f5b9dd25ab34a94c077b7490657d1d8f9a9acef2785de82b02ef9fb670faf841ae9b479d2d538ae8e38eaf6e74b884c18c9dafc19b6c9728ff3411537555b3b3b69f6f039958ffb0790e58b09bd8c63819ee50ea5 +Ctrl.hexxcghash = hexxcghash:4d31fdb68c8f42f38cae260bf6402e47de93aac7 +Ctrl.hexsession_id = hexsession_id:47caa2c09bb4dc9d6aeb697a76046bdf1fcd879b +Ctrl.type = type:F +Output = d7536b911dc79d5953455ba6e15cb5fec7c14025 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:00000081008de60df019c23966d215d9b8490ac493dfae59b99dbefdad81d2c9e761205c93a696dbd9e538cc57cd3e24c2798d2c56561d6803e8ee24e112babef84ad5a2c571c572339f2b38f1345164314f8f4714047f0c66650f10051044f8dcd256bfe8171302a81ce13f47f7375db80a6bbf8ce7d8f96e03fc6275fd5dacfbdd166792 +Ctrl.hexxcghash = hexxcghash:e69fbbee90f0cb7c57996c6f3f9ec4c7de9f0c43b7c993ec3ec1d4ca +Ctrl.hexsession_id = hexsession_id:e69fbbee90f0cb7c57996c6f3f9ec4c7de9f0c43b7c993ec3ec1d4ca +Ctrl.type = type:A +Output = 9fff6c6a6d1f5c31 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:00000081008de60df019c23966d215d9b8490ac493dfae59b99dbefdad81d2c9e761205c93a696dbd9e538cc57cd3e24c2798d2c56561d6803e8ee24e112babef84ad5a2c571c572339f2b38f1345164314f8f4714047f0c66650f10051044f8dcd256bfe8171302a81ce13f47f7375db80a6bbf8ce7d8f96e03fc6275fd5dacfbdd166792 +Ctrl.hexxcghash = hexxcghash:e69fbbee90f0cb7c57996c6f3f9ec4c7de9f0c43b7c993ec3ec1d4ca +Ctrl.hexsession_id = hexsession_id:e69fbbee90f0cb7c57996c6f3f9ec4c7de9f0c43b7c993ec3ec1d4ca +Ctrl.type = type:B +Output = 8e0ae78c64d2fe2a + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:00000081008de60df019c23966d215d9b8490ac493dfae59b99dbefdad81d2c9e761205c93a696dbd9e538cc57cd3e24c2798d2c56561d6803e8ee24e112babef84ad5a2c571c572339f2b38f1345164314f8f4714047f0c66650f10051044f8dcd256bfe8171302a81ce13f47f7375db80a6bbf8ce7d8f96e03fc6275fd5dacfbdd166792 +Ctrl.hexxcghash = hexxcghash:e69fbbee90f0cb7c57996c6f3f9ec4c7de9f0c43b7c993ec3ec1d4ca +Ctrl.hexsession_id = hexsession_id:e69fbbee90f0cb7c57996c6f3f9ec4c7de9f0c43b7c993ec3ec1d4ca +Ctrl.type = type:C +Output = 9044f963ffb56b94556a38aac5398a7072ffba60258500be + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:00000081008de60df019c23966d215d9b8490ac493dfae59b99dbefdad81d2c9e761205c93a696dbd9e538cc57cd3e24c2798d2c56561d6803e8ee24e112babef84ad5a2c571c572339f2b38f1345164314f8f4714047f0c66650f10051044f8dcd256bfe8171302a81ce13f47f7375db80a6bbf8ce7d8f96e03fc6275fd5dacfbdd166792 +Ctrl.hexxcghash = hexxcghash:e69fbbee90f0cb7c57996c6f3f9ec4c7de9f0c43b7c993ec3ec1d4ca +Ctrl.hexsession_id = hexsession_id:e69fbbee90f0cb7c57996c6f3f9ec4c7de9f0c43b7c993ec3ec1d4ca +Ctrl.type = type:D +Output = a861a317ea42b050901aff367b5a1d0abd5c497c77311ba2 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:00000081008de60df019c23966d215d9b8490ac493dfae59b99dbefdad81d2c9e761205c93a696dbd9e538cc57cd3e24c2798d2c56561d6803e8ee24e112babef84ad5a2c571c572339f2b38f1345164314f8f4714047f0c66650f10051044f8dcd256bfe8171302a81ce13f47f7375db80a6bbf8ce7d8f96e03fc6275fd5dacfbdd166792 +Ctrl.hexxcghash = hexxcghash:e69fbbee90f0cb7c57996c6f3f9ec4c7de9f0c43b7c993ec3ec1d4ca +Ctrl.hexsession_id = hexsession_id:e69fbbee90f0cb7c57996c6f3f9ec4c7de9f0c43b7c993ec3ec1d4ca +Ctrl.type = type:E +Output = 43225d64b6da6f070925ad1c8b7ac88893f9a7cba0dfc55ddea42eec + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:00000081008de60df019c23966d215d9b8490ac493dfae59b99dbefdad81d2c9e761205c93a696dbd9e538cc57cd3e24c2798d2c56561d6803e8ee24e112babef84ad5a2c571c572339f2b38f1345164314f8f4714047f0c66650f10051044f8dcd256bfe8171302a81ce13f47f7375db80a6bbf8ce7d8f96e03fc6275fd5dacfbdd166792 +Ctrl.hexxcghash = hexxcghash:e69fbbee90f0cb7c57996c6f3f9ec4c7de9f0c43b7c993ec3ec1d4ca +Ctrl.hexsession_id = hexsession_id:e69fbbee90f0cb7c57996c6f3f9ec4c7de9f0c43b7c993ec3ec1d4ca +Ctrl.type = type:F +Output = eb31db29bbafca2773f815fa478d927943288588e371ae9ba0414d98 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100a03d807fef48a50d8a04d9b6721979c5904412c3bcfe69ebd4c2554debe82a695a66fb9d844c6ef3aa4b745c2a4c8dbc4ba26742e0d1159ded83edca0bec61c7303e81f9d7f3169b7c97573b9184ec3c5286d9646e96595f064d61013431628f5c57bcb1bf79bcd1b0177ab4520c1a1a9b34b5067d9f465c9b03154d57f1b42f +Ctrl.hexxcghash = hexxcghash:03af4bd15a37aa7816d826332dcd9daa1537770fd0bcafbafe30033d +Ctrl.hexsession_id = hexsession_id:36084ca3dc535b37d533d034d891fabc20e3b0270bb8c008066bfac8 +Ctrl.type = type:A +Output = bf2d6e03ba930c71 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100a03d807fef48a50d8a04d9b6721979c5904412c3bcfe69ebd4c2554debe82a695a66fb9d844c6ef3aa4b745c2a4c8dbc4ba26742e0d1159ded83edca0bec61c7303e81f9d7f3169b7c97573b9184ec3c5286d9646e96595f064d61013431628f5c57bcb1bf79bcd1b0177ab4520c1a1a9b34b5067d9f465c9b03154d57f1b42f +Ctrl.hexxcghash = hexxcghash:03af4bd15a37aa7816d826332dcd9daa1537770fd0bcafbafe30033d +Ctrl.hexsession_id = hexsession_id:36084ca3dc535b37d533d034d891fabc20e3b0270bb8c008066bfac8 +Ctrl.type = type:B +Output = ff14fadc19a0bd8a + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100a03d807fef48a50d8a04d9b6721979c5904412c3bcfe69ebd4c2554debe82a695a66fb9d844c6ef3aa4b745c2a4c8dbc4ba26742e0d1159ded83edca0bec61c7303e81f9d7f3169b7c97573b9184ec3c5286d9646e96595f064d61013431628f5c57bcb1bf79bcd1b0177ab4520c1a1a9b34b5067d9f465c9b03154d57f1b42f +Ctrl.hexxcghash = hexxcghash:03af4bd15a37aa7816d826332dcd9daa1537770fd0bcafbafe30033d +Ctrl.hexsession_id = hexsession_id:36084ca3dc535b37d533d034d891fabc20e3b0270bb8c008066bfac8 +Ctrl.type = type:C +Output = 34a70734eaebeb8608cbb91098fa13326f37ccc5d408584d + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100a03d807fef48a50d8a04d9b6721979c5904412c3bcfe69ebd4c2554debe82a695a66fb9d844c6ef3aa4b745c2a4c8dbc4ba26742e0d1159ded83edca0bec61c7303e81f9d7f3169b7c97573b9184ec3c5286d9646e96595f064d61013431628f5c57bcb1bf79bcd1b0177ab4520c1a1a9b34b5067d9f465c9b03154d57f1b42f +Ctrl.hexxcghash = hexxcghash:03af4bd15a37aa7816d826332dcd9daa1537770fd0bcafbafe30033d +Ctrl.hexsession_id = hexsession_id:36084ca3dc535b37d533d034d891fabc20e3b0270bb8c008066bfac8 +Ctrl.type = type:D +Output = f993da8f2e840b836c8980fa2d780a1b4eeef77046988eed + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100a03d807fef48a50d8a04d9b6721979c5904412c3bcfe69ebd4c2554debe82a695a66fb9d844c6ef3aa4b745c2a4c8dbc4ba26742e0d1159ded83edca0bec61c7303e81f9d7f3169b7c97573b9184ec3c5286d9646e96595f064d61013431628f5c57bcb1bf79bcd1b0177ab4520c1a1a9b34b5067d9f465c9b03154d57f1b42f +Ctrl.hexxcghash = hexxcghash:03af4bd15a37aa7816d826332dcd9daa1537770fd0bcafbafe30033d +Ctrl.hexsession_id = hexsession_id:36084ca3dc535b37d533d034d891fabc20e3b0270bb8c008066bfac8 +Ctrl.type = type:E +Output = a274441c86dd146cfab25d87344bd5a880d374d300aa8e1fe4919378 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100a03d807fef48a50d8a04d9b6721979c5904412c3bcfe69ebd4c2554debe82a695a66fb9d844c6ef3aa4b745c2a4c8dbc4ba26742e0d1159ded83edca0bec61c7303e81f9d7f3169b7c97573b9184ec3c5286d9646e96595f064d61013431628f5c57bcb1bf79bcd1b0177ab4520c1a1a9b34b5067d9f465c9b03154d57f1b42f +Ctrl.hexxcghash = hexxcghash:03af4bd15a37aa7816d826332dcd9daa1537770fd0bcafbafe30033d +Ctrl.hexsession_id = hexsession_id:36084ca3dc535b37d533d034d891fabc20e3b0270bb8c008066bfac8 +Ctrl.type = type:F +Output = 7774dc48324cca24901bedc37224cb291d6202fb6b5e1d9315a9bd10 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100d09e300c8b93b8c759f96910b319b8fd9c9c8c1b704b65649f525b6c16732ee37f499ac729bdce9ea493811954849e8eeb449cb2f4485fe78b0f538038178ad3e1b95ef13fcf0134f1199ad742b31d5f222ed7927283a008c970143af46965acde32139c2448db5cc11fd55e534779f1b5d7757b27e3a3881a3596b0b002ff7e +Ctrl.hexxcghash = hexxcghash:be8559339a1b231a59a8feae904c00decaf970ff8e83018662c65fa8 +Ctrl.hexsession_id = hexsession_id:a8378fd158677fac292c5cce8a9efdbd5c5c98ee6f056a5e6e771b6b +Ctrl.type = type:A +Output = 75bc82b271311f53 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100d09e300c8b93b8c759f96910b319b8fd9c9c8c1b704b65649f525b6c16732ee37f499ac729bdce9ea493811954849e8eeb449cb2f4485fe78b0f538038178ad3e1b95ef13fcf0134f1199ad742b31d5f222ed7927283a008c970143af46965acde32139c2448db5cc11fd55e534779f1b5d7757b27e3a3881a3596b0b002ff7e +Ctrl.hexxcghash = hexxcghash:be8559339a1b231a59a8feae904c00decaf970ff8e83018662c65fa8 +Ctrl.hexsession_id = hexsession_id:a8378fd158677fac292c5cce8a9efdbd5c5c98ee6f056a5e6e771b6b +Ctrl.type = type:B +Output = 602d69e77b8c30b3 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100d09e300c8b93b8c759f96910b319b8fd9c9c8c1b704b65649f525b6c16732ee37f499ac729bdce9ea493811954849e8eeb449cb2f4485fe78b0f538038178ad3e1b95ef13fcf0134f1199ad742b31d5f222ed7927283a008c970143af46965acde32139c2448db5cc11fd55e534779f1b5d7757b27e3a3881a3596b0b002ff7e +Ctrl.hexxcghash = hexxcghash:be8559339a1b231a59a8feae904c00decaf970ff8e83018662c65fa8 +Ctrl.hexsession_id = hexsession_id:a8378fd158677fac292c5cce8a9efdbd5c5c98ee6f056a5e6e771b6b +Ctrl.type = type:C +Output = e0c8856a26b2f4804e98809d5b81cdb360b43884a33d4fef + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100d09e300c8b93b8c759f96910b319b8fd9c9c8c1b704b65649f525b6c16732ee37f499ac729bdce9ea493811954849e8eeb449cb2f4485fe78b0f538038178ad3e1b95ef13fcf0134f1199ad742b31d5f222ed7927283a008c970143af46965acde32139c2448db5cc11fd55e534779f1b5d7757b27e3a3881a3596b0b002ff7e +Ctrl.hexxcghash = hexxcghash:be8559339a1b231a59a8feae904c00decaf970ff8e83018662c65fa8 +Ctrl.hexsession_id = hexsession_id:a8378fd158677fac292c5cce8a9efdbd5c5c98ee6f056a5e6e771b6b +Ctrl.type = type:D +Output = e661555415bcab0b1f2d4b4387cda213cdd93f8458a2ace4 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100d09e300c8b93b8c759f96910b319b8fd9c9c8c1b704b65649f525b6c16732ee37f499ac729bdce9ea493811954849e8eeb449cb2f4485fe78b0f538038178ad3e1b95ef13fcf0134f1199ad742b31d5f222ed7927283a008c970143af46965acde32139c2448db5cc11fd55e534779f1b5d7757b27e3a3881a3596b0b002ff7e +Ctrl.hexxcghash = hexxcghash:be8559339a1b231a59a8feae904c00decaf970ff8e83018662c65fa8 +Ctrl.hexsession_id = hexsession_id:a8378fd158677fac292c5cce8a9efdbd5c5c98ee6f056a5e6e771b6b +Ctrl.type = type:E +Output = a368f66127573c79e2d936032f75c3d11c0131455eb9b6c5384582de + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100d09e300c8b93b8c759f96910b319b8fd9c9c8c1b704b65649f525b6c16732ee37f499ac729bdce9ea493811954849e8eeb449cb2f4485fe78b0f538038178ad3e1b95ef13fcf0134f1199ad742b31d5f222ed7927283a008c970143af46965acde32139c2448db5cc11fd55e534779f1b5d7757b27e3a3881a3596b0b002ff7e +Ctrl.hexxcghash = hexxcghash:be8559339a1b231a59a8feae904c00decaf970ff8e83018662c65fa8 +Ctrl.hexsession_id = hexsession_id:a8378fd158677fac292c5cce8a9efdbd5c5c98ee6f056a5e6e771b6b +Ctrl.type = type:F +Output = 779f09f514bdf7ed4a01788f10146367ce2ddf2aacebb961524c002a + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008057352c4a26aa011e9b9e101736ab6b1369c73f553848d159b01bf2c7671074cdcdc73b8c697649dc7465197c2f17560d0045246410063f20d8d29518e7b25d871886346acccd9ec1b2d74b19b4aff16953714266d1440247859958f010f3fe616859c07315169c5bb5547c6dfdaf4a219daa3a78f546958f56e14fdf64c3b26e +Ctrl.hexxcghash = hexxcghash:dca302cd4ee29d88b3f909f73e19d920099b8c18062e875cb762257b +Ctrl.hexsession_id = hexsession_id:2f6368dd5f1a6a8db98f74331850c110aa0e58f06a10ca8178171d95 +Ctrl.type = type:A +Output = 386bc0b99215c8fa + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008057352c4a26aa011e9b9e101736ab6b1369c73f553848d159b01bf2c7671074cdcdc73b8c697649dc7465197c2f17560d0045246410063f20d8d29518e7b25d871886346acccd9ec1b2d74b19b4aff16953714266d1440247859958f010f3fe616859c07315169c5bb5547c6dfdaf4a219daa3a78f546958f56e14fdf64c3b26e +Ctrl.hexxcghash = hexxcghash:dca302cd4ee29d88b3f909f73e19d920099b8c18062e875cb762257b +Ctrl.hexsession_id = hexsession_id:2f6368dd5f1a6a8db98f74331850c110aa0e58f06a10ca8178171d95 +Ctrl.type = type:B +Output = c793dba9a68f70a4 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008057352c4a26aa011e9b9e101736ab6b1369c73f553848d159b01bf2c7671074cdcdc73b8c697649dc7465197c2f17560d0045246410063f20d8d29518e7b25d871886346acccd9ec1b2d74b19b4aff16953714266d1440247859958f010f3fe616859c07315169c5bb5547c6dfdaf4a219daa3a78f546958f56e14fdf64c3b26e +Ctrl.hexxcghash = hexxcghash:dca302cd4ee29d88b3f909f73e19d920099b8c18062e875cb762257b +Ctrl.hexsession_id = hexsession_id:2f6368dd5f1a6a8db98f74331850c110aa0e58f06a10ca8178171d95 +Ctrl.type = type:C +Output = 3dcaea7c946c2de76811482556299aa9bf96c8eef11fb2d6 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008057352c4a26aa011e9b9e101736ab6b1369c73f553848d159b01bf2c7671074cdcdc73b8c697649dc7465197c2f17560d0045246410063f20d8d29518e7b25d871886346acccd9ec1b2d74b19b4aff16953714266d1440247859958f010f3fe616859c07315169c5bb5547c6dfdaf4a219daa3a78f546958f56e14fdf64c3b26e +Ctrl.hexxcghash = hexxcghash:dca302cd4ee29d88b3f909f73e19d920099b8c18062e875cb762257b +Ctrl.hexsession_id = hexsession_id:2f6368dd5f1a6a8db98f74331850c110aa0e58f06a10ca8178171d95 +Ctrl.type = type:D +Output = fd078ef65922006809729f9533c8742e9f973f7ff37ba987 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008057352c4a26aa011e9b9e101736ab6b1369c73f553848d159b01bf2c7671074cdcdc73b8c697649dc7465197c2f17560d0045246410063f20d8d29518e7b25d871886346acccd9ec1b2d74b19b4aff16953714266d1440247859958f010f3fe616859c07315169c5bb5547c6dfdaf4a219daa3a78f546958f56e14fdf64c3b26e +Ctrl.hexxcghash = hexxcghash:dca302cd4ee29d88b3f909f73e19d920099b8c18062e875cb762257b +Ctrl.hexsession_id = hexsession_id:2f6368dd5f1a6a8db98f74331850c110aa0e58f06a10ca8178171d95 +Ctrl.type = type:E +Output = 83a1924fa5f7ceffeba7f519ac51a86a2746a93eb194db51a4596ca1 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008057352c4a26aa011e9b9e101736ab6b1369c73f553848d159b01bf2c7671074cdcdc73b8c697649dc7465197c2f17560d0045246410063f20d8d29518e7b25d871886346acccd9ec1b2d74b19b4aff16953714266d1440247859958f010f3fe616859c07315169c5bb5547c6dfdaf4a219daa3a78f546958f56e14fdf64c3b26e +Ctrl.hexxcghash = hexxcghash:dca302cd4ee29d88b3f909f73e19d920099b8c18062e875cb762257b +Ctrl.hexsession_id = hexsession_id:2f6368dd5f1a6a8db98f74331850c110aa0e58f06a10ca8178171d95 +Ctrl.type = type:F +Output = e16507d1bbd53b41f9bb2f0f21b5112eb6cd1eb0489fb5e754212390 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:00000081008d372970f67a75a1748e6967c67a1f5665a3d6f71d6d24ab113bedb42ad544de34e67df7f644f78e5dcfd12e25b7cb8655aa9f07fef59058e42450aee5d4a733887535313e06c7e6426598284fdaa33ff88e1b6174c33199f2630ec42c8d7d9b92ea3d83a1bf8514b153fd9cf9c520636a0de9c6ba8b9318465ddcaa293367e5 +Ctrl.hexxcghash = hexxcghash:683a0b23e8bf98e03178a032a65e743e429c805b8de04407f73ab21b +Ctrl.hexsession_id = hexsession_id:0e9de6ef124b670db44ade438920db01b5e6fb69a482816a303fcef7 +Ctrl.type = type:A +Output = 0e764ebe0d523aae + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:00000081008d372970f67a75a1748e6967c67a1f5665a3d6f71d6d24ab113bedb42ad544de34e67df7f644f78e5dcfd12e25b7cb8655aa9f07fef59058e42450aee5d4a733887535313e06c7e6426598284fdaa33ff88e1b6174c33199f2630ec42c8d7d9b92ea3d83a1bf8514b153fd9cf9c520636a0de9c6ba8b9318465ddcaa293367e5 +Ctrl.hexxcghash = hexxcghash:683a0b23e8bf98e03178a032a65e743e429c805b8de04407f73ab21b +Ctrl.hexsession_id = hexsession_id:0e9de6ef124b670db44ade438920db01b5e6fb69a482816a303fcef7 +Ctrl.type = type:B +Output = 24bd2eff86c2a8dc + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:00000081008d372970f67a75a1748e6967c67a1f5665a3d6f71d6d24ab113bedb42ad544de34e67df7f644f78e5dcfd12e25b7cb8655aa9f07fef59058e42450aee5d4a733887535313e06c7e6426598284fdaa33ff88e1b6174c33199f2630ec42c8d7d9b92ea3d83a1bf8514b153fd9cf9c520636a0de9c6ba8b9318465ddcaa293367e5 +Ctrl.hexxcghash = hexxcghash:683a0b23e8bf98e03178a032a65e743e429c805b8de04407f73ab21b +Ctrl.hexsession_id = hexsession_id:0e9de6ef124b670db44ade438920db01b5e6fb69a482816a303fcef7 +Ctrl.type = type:C +Output = 26c01e3d56c1b928f65aaa1b6a15f5b8d41de187b4bb5fdc + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:00000081008d372970f67a75a1748e6967c67a1f5665a3d6f71d6d24ab113bedb42ad544de34e67df7f644f78e5dcfd12e25b7cb8655aa9f07fef59058e42450aee5d4a733887535313e06c7e6426598284fdaa33ff88e1b6174c33199f2630ec42c8d7d9b92ea3d83a1bf8514b153fd9cf9c520636a0de9c6ba8b9318465ddcaa293367e5 +Ctrl.hexxcghash = hexxcghash:683a0b23e8bf98e03178a032a65e743e429c805b8de04407f73ab21b +Ctrl.hexsession_id = hexsession_id:0e9de6ef124b670db44ade438920db01b5e6fb69a482816a303fcef7 +Ctrl.type = type:D +Output = e0cc3bdb6d69d10893eeb73b892d746acea151f24247fd9c + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:00000081008d372970f67a75a1748e6967c67a1f5665a3d6f71d6d24ab113bedb42ad544de34e67df7f644f78e5dcfd12e25b7cb8655aa9f07fef59058e42450aee5d4a733887535313e06c7e6426598284fdaa33ff88e1b6174c33199f2630ec42c8d7d9b92ea3d83a1bf8514b153fd9cf9c520636a0de9c6ba8b9318465ddcaa293367e5 +Ctrl.hexxcghash = hexxcghash:683a0b23e8bf98e03178a032a65e743e429c805b8de04407f73ab21b +Ctrl.hexsession_id = hexsession_id:0e9de6ef124b670db44ade438920db01b5e6fb69a482816a303fcef7 +Ctrl.type = type:E +Output = bf442ba6ec794f20584528686cedbaa568c13b895f642fe5cb3542bb + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:00000081008d372970f67a75a1748e6967c67a1f5665a3d6f71d6d24ab113bedb42ad544de34e67df7f644f78e5dcfd12e25b7cb8655aa9f07fef59058e42450aee5d4a733887535313e06c7e6426598284fdaa33ff88e1b6174c33199f2630ec42c8d7d9b92ea3d83a1bf8514b153fd9cf9c520636a0de9c6ba8b9318465ddcaa293367e5 +Ctrl.hexxcghash = hexxcghash:683a0b23e8bf98e03178a032a65e743e429c805b8de04407f73ab21b +Ctrl.hexsession_id = hexsession_id:0e9de6ef124b670db44ade438920db01b5e6fb69a482816a303fcef7 +Ctrl.type = type:F +Output = 65ab453e5ffd1b5e1540aa547766d7c177204c319642f93059bdf257 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008004a70cf5e546c0920433bf16dcda3076d9195b5c35ad6b83b6a51e880f22fddaae0d358e35037bbe1e66f2422c29ff30a39822e067930b9faf59f844441dee6f233635a00c7cb71596f8589194016132ebbe204d98fc7f9bb0b7f4e6b6a68f488a59138d9859729d938de6ace9d08be86301bbd4e80d4650391ef3599a6f0bc0 +Ctrl.hexxcghash = hexxcghash:a05a5c2d8beb394b7befaecfe3f4227cd81a28d90ac64ec78ce170b6 +Ctrl.hexsession_id = hexsession_id:1380b38f6b6997a47ce234b7d3d6afb5960e721a348a725704c19cff +Ctrl.type = type:A +Output = 45799bbb09fd8804 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008004a70cf5e546c0920433bf16dcda3076d9195b5c35ad6b83b6a51e880f22fddaae0d358e35037bbe1e66f2422c29ff30a39822e067930b9faf59f844441dee6f233635a00c7cb71596f8589194016132ebbe204d98fc7f9bb0b7f4e6b6a68f488a59138d9859729d938de6ace9d08be86301bbd4e80d4650391ef3599a6f0bc0 +Ctrl.hexxcghash = hexxcghash:a05a5c2d8beb394b7befaecfe3f4227cd81a28d90ac64ec78ce170b6 +Ctrl.hexsession_id = hexsession_id:1380b38f6b6997a47ce234b7d3d6afb5960e721a348a725704c19cff +Ctrl.type = type:B +Output = b787b009f3313be0 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008004a70cf5e546c0920433bf16dcda3076d9195b5c35ad6b83b6a51e880f22fddaae0d358e35037bbe1e66f2422c29ff30a39822e067930b9faf59f844441dee6f233635a00c7cb71596f8589194016132ebbe204d98fc7f9bb0b7f4e6b6a68f488a59138d9859729d938de6ace9d08be86301bbd4e80d4650391ef3599a6f0bc0 +Ctrl.hexxcghash = hexxcghash:a05a5c2d8beb394b7befaecfe3f4227cd81a28d90ac64ec78ce170b6 +Ctrl.hexsession_id = hexsession_id:1380b38f6b6997a47ce234b7d3d6afb5960e721a348a725704c19cff +Ctrl.type = type:C +Output = c4cbb547c997e8fddb9e56ef5df91327766668a43a958a8e + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008004a70cf5e546c0920433bf16dcda3076d9195b5c35ad6b83b6a51e880f22fddaae0d358e35037bbe1e66f2422c29ff30a39822e067930b9faf59f844441dee6f233635a00c7cb71596f8589194016132ebbe204d98fc7f9bb0b7f4e6b6a68f488a59138d9859729d938de6ace9d08be86301bbd4e80d4650391ef3599a6f0bc0 +Ctrl.hexxcghash = hexxcghash:a05a5c2d8beb394b7befaecfe3f4227cd81a28d90ac64ec78ce170b6 +Ctrl.hexsession_id = hexsession_id:1380b38f6b6997a47ce234b7d3d6afb5960e721a348a725704c19cff +Ctrl.type = type:D +Output = b55b7cca0a0363b84b40b79366b87db7c440dec5bf89e952 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008004a70cf5e546c0920433bf16dcda3076d9195b5c35ad6b83b6a51e880f22fddaae0d358e35037bbe1e66f2422c29ff30a39822e067930b9faf59f844441dee6f233635a00c7cb71596f8589194016132ebbe204d98fc7f9bb0b7f4e6b6a68f488a59138d9859729d938de6ace9d08be86301bbd4e80d4650391ef3599a6f0bc0 +Ctrl.hexxcghash = hexxcghash:a05a5c2d8beb394b7befaecfe3f4227cd81a28d90ac64ec78ce170b6 +Ctrl.hexsession_id = hexsession_id:1380b38f6b6997a47ce234b7d3d6afb5960e721a348a725704c19cff +Ctrl.type = type:E +Output = 9c6399e5f4db0fc7652268d7423230ee5ffc0a210c26568dc5c0ab7d + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008004a70cf5e546c0920433bf16dcda3076d9195b5c35ad6b83b6a51e880f22fddaae0d358e35037bbe1e66f2422c29ff30a39822e067930b9faf59f844441dee6f233635a00c7cb71596f8589194016132ebbe204d98fc7f9bb0b7f4e6b6a68f488a59138d9859729d938de6ace9d08be86301bbd4e80d4650391ef3599a6f0bc0 +Ctrl.hexxcghash = hexxcghash:a05a5c2d8beb394b7befaecfe3f4227cd81a28d90ac64ec78ce170b6 +Ctrl.hexsession_id = hexsession_id:1380b38f6b6997a47ce234b7d3d6afb5960e721a348a725704c19cff +Ctrl.type = type:F +Output = 9824301c33daae0f1b75eb472d6f0b4ef2cea0b2f61e204b6aefb0bd + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100d07c8a0c16c5f000ff00db6161555ea6b6b400803fe250288a9b88b48ced381de3f46982210216dff4defdbb007e98ea47f891ae3f38e09f56c96913406c13ed35cade3f2f80c6c6402e7ab097decc9e7ecc377b9965991422b54b8fcf34b9635cdc6b1cb698c61cd8377f3fadf1ba9e289d83767ca24370661085461a0b348e +Ctrl.hexxcghash = hexxcghash:45dfee14ec8160cb1ccd769d2db4785b9773aeedde0c6ca0f75324df +Ctrl.hexsession_id = hexsession_id:0f15315853288a987cec1e0668f34fa54537304f7082673d74d4f970 +Ctrl.type = type:A +Output = 2958928e5fd3c6e4 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100d07c8a0c16c5f000ff00db6161555ea6b6b400803fe250288a9b88b48ced381de3f46982210216dff4defdbb007e98ea47f891ae3f38e09f56c96913406c13ed35cade3f2f80c6c6402e7ab097decc9e7ecc377b9965991422b54b8fcf34b9635cdc6b1cb698c61cd8377f3fadf1ba9e289d83767ca24370661085461a0b348e +Ctrl.hexxcghash = hexxcghash:45dfee14ec8160cb1ccd769d2db4785b9773aeedde0c6ca0f75324df +Ctrl.hexsession_id = hexsession_id:0f15315853288a987cec1e0668f34fa54537304f7082673d74d4f970 +Ctrl.type = type:B +Output = aa91bee1a3b3374c + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100d07c8a0c16c5f000ff00db6161555ea6b6b400803fe250288a9b88b48ced381de3f46982210216dff4defdbb007e98ea47f891ae3f38e09f56c96913406c13ed35cade3f2f80c6c6402e7ab097decc9e7ecc377b9965991422b54b8fcf34b9635cdc6b1cb698c61cd8377f3fadf1ba9e289d83767ca24370661085461a0b348e +Ctrl.hexxcghash = hexxcghash:45dfee14ec8160cb1ccd769d2db4785b9773aeedde0c6ca0f75324df +Ctrl.hexsession_id = hexsession_id:0f15315853288a987cec1e0668f34fa54537304f7082673d74d4f970 +Ctrl.type = type:C +Output = 6fdac559eb1d6af7fc7fbaa4f9a15fd4145b97b9418518d9 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100d07c8a0c16c5f000ff00db6161555ea6b6b400803fe250288a9b88b48ced381de3f46982210216dff4defdbb007e98ea47f891ae3f38e09f56c96913406c13ed35cade3f2f80c6c6402e7ab097decc9e7ecc377b9965991422b54b8fcf34b9635cdc6b1cb698c61cd8377f3fadf1ba9e289d83767ca24370661085461a0b348e +Ctrl.hexxcghash = hexxcghash:45dfee14ec8160cb1ccd769d2db4785b9773aeedde0c6ca0f75324df +Ctrl.hexsession_id = hexsession_id:0f15315853288a987cec1e0668f34fa54537304f7082673d74d4f970 +Ctrl.type = type:D +Output = 5a8271402756f7eac59f09b5020f7b05f6475fc3a2e2b482 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100d07c8a0c16c5f000ff00db6161555ea6b6b400803fe250288a9b88b48ced381de3f46982210216dff4defdbb007e98ea47f891ae3f38e09f56c96913406c13ed35cade3f2f80c6c6402e7ab097decc9e7ecc377b9965991422b54b8fcf34b9635cdc6b1cb698c61cd8377f3fadf1ba9e289d83767ca24370661085461a0b348e +Ctrl.hexxcghash = hexxcghash:45dfee14ec8160cb1ccd769d2db4785b9773aeedde0c6ca0f75324df +Ctrl.hexsession_id = hexsession_id:0f15315853288a987cec1e0668f34fa54537304f7082673d74d4f970 +Ctrl.type = type:E +Output = 910de4a4a437cab056f7c38037f0196c524464237c5e332e79564a90 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100d07c8a0c16c5f000ff00db6161555ea6b6b400803fe250288a9b88b48ced381de3f46982210216dff4defdbb007e98ea47f891ae3f38e09f56c96913406c13ed35cade3f2f80c6c6402e7ab097decc9e7ecc377b9965991422b54b8fcf34b9635cdc6b1cb698c61cd8377f3fadf1ba9e289d83767ca24370661085461a0b348e +Ctrl.hexxcghash = hexxcghash:45dfee14ec8160cb1ccd769d2db4785b9773aeedde0c6ca0f75324df +Ctrl.hexsession_id = hexsession_id:0f15315853288a987cec1e0668f34fa54537304f7082673d74d4f970 +Ctrl.type = type:F +Output = 0bfa6ed5dc8ab0fc1bb9feb966d7107137ebf3f754ac71c2a16a9c22 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000000807f046e0e1a0050fe544cd0bf194fdb0a07efe7708498a1b25aad90641e8befdef8f4aacb538ccc446d02d3896e1cc34d9a8becdcc48d10e73460f7c0c58eb51707d37f1eaa0008cb21c89e8b226a3e60c76f9f9f5af2a16abca346a81c66ec0199167b17e0d8cb3baea9a9c700632f585e0cd467e779eba02bc24eff22b6425c +Ctrl.hexxcghash = hexxcghash:b63c992199e370cde19b640077bbbac92c6a8a0f206b4d560935cee5 +Ctrl.hexsession_id = hexsession_id:ee00f86c7ecc4ce74a3ece1699802b7420ca4d49cc74b23399c23545 +Ctrl.type = type:A +Output = 82204d79e13252f1 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000000807f046e0e1a0050fe544cd0bf194fdb0a07efe7708498a1b25aad90641e8befdef8f4aacb538ccc446d02d3896e1cc34d9a8becdcc48d10e73460f7c0c58eb51707d37f1eaa0008cb21c89e8b226a3e60c76f9f9f5af2a16abca346a81c66ec0199167b17e0d8cb3baea9a9c700632f585e0cd467e779eba02bc24eff22b6425c +Ctrl.hexxcghash = hexxcghash:b63c992199e370cde19b640077bbbac92c6a8a0f206b4d560935cee5 +Ctrl.hexsession_id = hexsession_id:ee00f86c7ecc4ce74a3ece1699802b7420ca4d49cc74b23399c23545 +Ctrl.type = type:B +Output = a76ff923488c7bd3 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000000807f046e0e1a0050fe544cd0bf194fdb0a07efe7708498a1b25aad90641e8befdef8f4aacb538ccc446d02d3896e1cc34d9a8becdcc48d10e73460f7c0c58eb51707d37f1eaa0008cb21c89e8b226a3e60c76f9f9f5af2a16abca346a81c66ec0199167b17e0d8cb3baea9a9c700632f585e0cd467e779eba02bc24eff22b6425c +Ctrl.hexxcghash = hexxcghash:b63c992199e370cde19b640077bbbac92c6a8a0f206b4d560935cee5 +Ctrl.hexsession_id = hexsession_id:ee00f86c7ecc4ce74a3ece1699802b7420ca4d49cc74b23399c23545 +Ctrl.type = type:C +Output = 8ba3bd224890bdd4dd07d2a5a98e5efcd95d82c66583d098 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000000807f046e0e1a0050fe544cd0bf194fdb0a07efe7708498a1b25aad90641e8befdef8f4aacb538ccc446d02d3896e1cc34d9a8becdcc48d10e73460f7c0c58eb51707d37f1eaa0008cb21c89e8b226a3e60c76f9f9f5af2a16abca346a81c66ec0199167b17e0d8cb3baea9a9c700632f585e0cd467e779eba02bc24eff22b6425c +Ctrl.hexxcghash = hexxcghash:b63c992199e370cde19b640077bbbac92c6a8a0f206b4d560935cee5 +Ctrl.hexsession_id = hexsession_id:ee00f86c7ecc4ce74a3ece1699802b7420ca4d49cc74b23399c23545 +Ctrl.type = type:D +Output = a04a3844933ca1bb45848bc1a7626e4c50dc46aa5376d027 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000000807f046e0e1a0050fe544cd0bf194fdb0a07efe7708498a1b25aad90641e8befdef8f4aacb538ccc446d02d3896e1cc34d9a8becdcc48d10e73460f7c0c58eb51707d37f1eaa0008cb21c89e8b226a3e60c76f9f9f5af2a16abca346a81c66ec0199167b17e0d8cb3baea9a9c700632f585e0cd467e779eba02bc24eff22b6425c +Ctrl.hexxcghash = hexxcghash:b63c992199e370cde19b640077bbbac92c6a8a0f206b4d560935cee5 +Ctrl.hexsession_id = hexsession_id:ee00f86c7ecc4ce74a3ece1699802b7420ca4d49cc74b23399c23545 +Ctrl.type = type:E +Output = 393f2f152d6c6d063f284cadd1fd9d700928188b7fea31f74b44fbc6 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000000807f046e0e1a0050fe544cd0bf194fdb0a07efe7708498a1b25aad90641e8befdef8f4aacb538ccc446d02d3896e1cc34d9a8becdcc48d10e73460f7c0c58eb51707d37f1eaa0008cb21c89e8b226a3e60c76f9f9f5af2a16abca346a81c66ec0199167b17e0d8cb3baea9a9c700632f585e0cd467e779eba02bc24eff22b6425c +Ctrl.hexxcghash = hexxcghash:b63c992199e370cde19b640077bbbac92c6a8a0f206b4d560935cee5 +Ctrl.hexsession_id = hexsession_id:ee00f86c7ecc4ce74a3ece1699802b7420ca4d49cc74b23399c23545 +Ctrl.type = type:F +Output = f27f2cd72b22e1719f91b912d6c9d180985121d32bd217e348cd2003 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100b51d0e3d21612b3bde548bf3da6d474166972f602beb1b876b7045a595483ec0bfb707eaf7c0d416d028a3ed7cff460cad66e2284e3190a746d3304678c91b2654b3ab147aece57e3bb5f4d30d4d7c01e065f70b12b9270ebec306a178870d1fd814806c3dbdc16d4bd7e843de8e5414ff336e735bc5c8241ab0ae08197159d6 +Ctrl.hexxcghash = hexxcghash:1eacc2c8e8ec2c3a5af31c6d498301e82664f60899223ef4348f4467 +Ctrl.hexsession_id = hexsession_id:ddc879c0f221147bd70a1cedf5578fd8f196290357945fe75e551262 +Ctrl.type = type:A +Output = f843e3c6a1621998 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100b51d0e3d21612b3bde548bf3da6d474166972f602beb1b876b7045a595483ec0bfb707eaf7c0d416d028a3ed7cff460cad66e2284e3190a746d3304678c91b2654b3ab147aece57e3bb5f4d30d4d7c01e065f70b12b9270ebec306a178870d1fd814806c3dbdc16d4bd7e843de8e5414ff336e735bc5c8241ab0ae08197159d6 +Ctrl.hexxcghash = hexxcghash:1eacc2c8e8ec2c3a5af31c6d498301e82664f60899223ef4348f4467 +Ctrl.hexsession_id = hexsession_id:ddc879c0f221147bd70a1cedf5578fd8f196290357945fe75e551262 +Ctrl.type = type:B +Output = 128b2d8968cfaad5 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100b51d0e3d21612b3bde548bf3da6d474166972f602beb1b876b7045a595483ec0bfb707eaf7c0d416d028a3ed7cff460cad66e2284e3190a746d3304678c91b2654b3ab147aece57e3bb5f4d30d4d7c01e065f70b12b9270ebec306a178870d1fd814806c3dbdc16d4bd7e843de8e5414ff336e735bc5c8241ab0ae08197159d6 +Ctrl.hexxcghash = hexxcghash:1eacc2c8e8ec2c3a5af31c6d498301e82664f60899223ef4348f4467 +Ctrl.hexsession_id = hexsession_id:ddc879c0f221147bd70a1cedf5578fd8f196290357945fe75e551262 +Ctrl.type = type:C +Output = d6c4d2685753580dea2c6a6eb6add592011356eb9e868d44 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100b51d0e3d21612b3bde548bf3da6d474166972f602beb1b876b7045a595483ec0bfb707eaf7c0d416d028a3ed7cff460cad66e2284e3190a746d3304678c91b2654b3ab147aece57e3bb5f4d30d4d7c01e065f70b12b9270ebec306a178870d1fd814806c3dbdc16d4bd7e843de8e5414ff336e735bc5c8241ab0ae08197159d6 +Ctrl.hexxcghash = hexxcghash:1eacc2c8e8ec2c3a5af31c6d498301e82664f60899223ef4348f4467 +Ctrl.hexsession_id = hexsession_id:ddc879c0f221147bd70a1cedf5578fd8f196290357945fe75e551262 +Ctrl.type = type:D +Output = 92af60f4858f3d14efaac039130389ab9ae1237f0da09a29 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100b51d0e3d21612b3bde548bf3da6d474166972f602beb1b876b7045a595483ec0bfb707eaf7c0d416d028a3ed7cff460cad66e2284e3190a746d3304678c91b2654b3ab147aece57e3bb5f4d30d4d7c01e065f70b12b9270ebec306a178870d1fd814806c3dbdc16d4bd7e843de8e5414ff336e735bc5c8241ab0ae08197159d6 +Ctrl.hexxcghash = hexxcghash:1eacc2c8e8ec2c3a5af31c6d498301e82664f60899223ef4348f4467 +Ctrl.hexsession_id = hexsession_id:ddc879c0f221147bd70a1cedf5578fd8f196290357945fe75e551262 +Ctrl.type = type:E +Output = a37af93c8f25e145def1c5397bec2ee2119cc0e0bd4854fe23b2e3d1 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000008100b51d0e3d21612b3bde548bf3da6d474166972f602beb1b876b7045a595483ec0bfb707eaf7c0d416d028a3ed7cff460cad66e2284e3190a746d3304678c91b2654b3ab147aece57e3bb5f4d30d4d7c01e065f70b12b9270ebec306a178870d1fd814806c3dbdc16d4bd7e843de8e5414ff336e735bc5c8241ab0ae08197159d6 +Ctrl.hexxcghash = hexxcghash:1eacc2c8e8ec2c3a5af31c6d498301e82664f60899223ef4348f4467 +Ctrl.hexsession_id = hexsession_id:ddc879c0f221147bd70a1cedf5578fd8f196290357945fe75e551262 +Ctrl.type = type:F +Output = d44def5fcec300da5913ca109c0fd7a2c2cbcedd2c3e3216c5cb0d95 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000000810088a2add0cc5918c649c6bbc82930ae99326188faa20e2cfc8f819cc44bdd99d1638fbbd380197beda58c039c239fdcced533db7ea31635b835f5f92725490e7638d40a017b89f48406faab653aa03721af5d7c5c61d4519e7c07f99974c1f715b1ce3fcffc50b2a6cc9b4e45a76791b862ac87524d2b52fe6c706f5a73e5dc0a +Ctrl.hexxcghash = hexxcghash:321ef6b92cae9df351c1b7d2253325536e659df52acd4a8787b45217 +Ctrl.hexsession_id = hexsession_id:340edbc8aeec53501158ad2ea7650abcbb906348d57b14b61524469e +Ctrl.type = type:A +Output = 4276fab65090b420 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000000810088a2add0cc5918c649c6bbc82930ae99326188faa20e2cfc8f819cc44bdd99d1638fbbd380197beda58c039c239fdcced533db7ea31635b835f5f92725490e7638d40a017b89f48406faab653aa03721af5d7c5c61d4519e7c07f99974c1f715b1ce3fcffc50b2a6cc9b4e45a76791b862ac87524d2b52fe6c706f5a73e5dc0a +Ctrl.hexxcghash = hexxcghash:321ef6b92cae9df351c1b7d2253325536e659df52acd4a8787b45217 +Ctrl.hexsession_id = hexsession_id:340edbc8aeec53501158ad2ea7650abcbb906348d57b14b61524469e +Ctrl.type = type:B +Output = 00303ca4f9a5a6f8 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000000810088a2add0cc5918c649c6bbc82930ae99326188faa20e2cfc8f819cc44bdd99d1638fbbd380197beda58c039c239fdcced533db7ea31635b835f5f92725490e7638d40a017b89f48406faab653aa03721af5d7c5c61d4519e7c07f99974c1f715b1ce3fcffc50b2a6cc9b4e45a76791b862ac87524d2b52fe6c706f5a73e5dc0a +Ctrl.hexxcghash = hexxcghash:321ef6b92cae9df351c1b7d2253325536e659df52acd4a8787b45217 +Ctrl.hexsession_id = hexsession_id:340edbc8aeec53501158ad2ea7650abcbb906348d57b14b61524469e +Ctrl.type = type:C +Output = 3d67892281e9c6ed6535d7ae69e832f6723afd545763bd3d + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000000810088a2add0cc5918c649c6bbc82930ae99326188faa20e2cfc8f819cc44bdd99d1638fbbd380197beda58c039c239fdcced533db7ea31635b835f5f92725490e7638d40a017b89f48406faab653aa03721af5d7c5c61d4519e7c07f99974c1f715b1ce3fcffc50b2a6cc9b4e45a76791b862ac87524d2b52fe6c706f5a73e5dc0a +Ctrl.hexxcghash = hexxcghash:321ef6b92cae9df351c1b7d2253325536e659df52acd4a8787b45217 +Ctrl.hexsession_id = hexsession_id:340edbc8aeec53501158ad2ea7650abcbb906348d57b14b61524469e +Ctrl.type = type:D +Output = 5a5844e6c47eacc172e0012044037668a653758b96310350 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000000810088a2add0cc5918c649c6bbc82930ae99326188faa20e2cfc8f819cc44bdd99d1638fbbd380197beda58c039c239fdcced533db7ea31635b835f5f92725490e7638d40a017b89f48406faab653aa03721af5d7c5c61d4519e7c07f99974c1f715b1ce3fcffc50b2a6cc9b4e45a76791b862ac87524d2b52fe6c706f5a73e5dc0a +Ctrl.hexxcghash = hexxcghash:321ef6b92cae9df351c1b7d2253325536e659df52acd4a8787b45217 +Ctrl.hexsession_id = hexsession_id:340edbc8aeec53501158ad2ea7650abcbb906348d57b14b61524469e +Ctrl.type = type:E +Output = 4783fb6e98db788f6594c2b82e751528590c41780adce2ffba234290 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000000810088a2add0cc5918c649c6bbc82930ae99326188faa20e2cfc8f819cc44bdd99d1638fbbd380197beda58c039c239fdcced533db7ea31635b835f5f92725490e7638d40a017b89f48406faab653aa03721af5d7c5c61d4519e7c07f99974c1f715b1ce3fcffc50b2a6cc9b4e45a76791b862ac87524d2b52fe6c706f5a73e5dc0a +Ctrl.hexxcghash = hexxcghash:321ef6b92cae9df351c1b7d2253325536e659df52acd4a8787b45217 +Ctrl.hexsession_id = hexsession_id:340edbc8aeec53501158ad2ea7650abcbb906348d57b14b61524469e +Ctrl.type = type:F +Output = 7c60752b0b5a0f0027507ecd88e6af2b78e462a98459bf0511152663 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100d62744a1ee5a4d03d761f48fb63ece42d9204e00016dad042ae7cbe600cb9e93535bc36d2f94d715cf8c2cd948caf876b4948429cb85ac73765949495af8380a56b68d1d3eeb4d9b310e2c53db5f51a7b8382759273c0be30862df81ca420f414c3ea8e6a1fb4875257ccc536e971c8dc07e600e265e642489266604f94ee995f96ef02eac771bb88bc66c57d229edfba1e484fd1c8b49e11e594aefa681f26ea28c348615d3e0a2dc76845d2d19543751ce444c7b65fa449a74639fa13c123d025200efa7012b209400746e03bd6a7bc938b926107da0491407bd952602d14a7fa743cbd51d5090a22c76a336f06b5e6dc5ecf70c803da8dcbff149c5013c36 +Ctrl.hexxcghash = hexxcghash:273ab849318045321f672fdf9b4bc250c4b46717374bfb3322bc7701 +Ctrl.hexsession_id = hexsession_id:273ab849318045321f672fdf9b4bc250c4b46717374bfb3322bc7701 +Ctrl.type = type:A +Output = 2512664639690af9f64afd16d9ccf3d3 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100d62744a1ee5a4d03d761f48fb63ece42d9204e00016dad042ae7cbe600cb9e93535bc36d2f94d715cf8c2cd948caf876b4948429cb85ac73765949495af8380a56b68d1d3eeb4d9b310e2c53db5f51a7b8382759273c0be30862df81ca420f414c3ea8e6a1fb4875257ccc536e971c8dc07e600e265e642489266604f94ee995f96ef02eac771bb88bc66c57d229edfba1e484fd1c8b49e11e594aefa681f26ea28c348615d3e0a2dc76845d2d19543751ce444c7b65fa449a74639fa13c123d025200efa7012b209400746e03bd6a7bc938b926107da0491407bd952602d14a7fa743cbd51d5090a22c76a336f06b5e6dc5ecf70c803da8dcbff149c5013c36 +Ctrl.hexxcghash = hexxcghash:273ab849318045321f672fdf9b4bc250c4b46717374bfb3322bc7701 +Ctrl.hexsession_id = hexsession_id:273ab849318045321f672fdf9b4bc250c4b46717374bfb3322bc7701 +Ctrl.type = type:B +Output = c13223796f394c6d1ffd18c22c09f27a + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100d62744a1ee5a4d03d761f48fb63ece42d9204e00016dad042ae7cbe600cb9e93535bc36d2f94d715cf8c2cd948caf876b4948429cb85ac73765949495af8380a56b68d1d3eeb4d9b310e2c53db5f51a7b8382759273c0be30862df81ca420f414c3ea8e6a1fb4875257ccc536e971c8dc07e600e265e642489266604f94ee995f96ef02eac771bb88bc66c57d229edfba1e484fd1c8b49e11e594aefa681f26ea28c348615d3e0a2dc76845d2d19543751ce444c7b65fa449a74639fa13c123d025200efa7012b209400746e03bd6a7bc938b926107da0491407bd952602d14a7fa743cbd51d5090a22c76a336f06b5e6dc5ecf70c803da8dcbff149c5013c36 +Ctrl.hexxcghash = hexxcghash:273ab849318045321f672fdf9b4bc250c4b46717374bfb3322bc7701 +Ctrl.hexsession_id = hexsession_id:273ab849318045321f672fdf9b4bc250c4b46717374bfb3322bc7701 +Ctrl.type = type:C +Output = 7be659a7cbeda28722315d96444a5c98 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100d62744a1ee5a4d03d761f48fb63ece42d9204e00016dad042ae7cbe600cb9e93535bc36d2f94d715cf8c2cd948caf876b4948429cb85ac73765949495af8380a56b68d1d3eeb4d9b310e2c53db5f51a7b8382759273c0be30862df81ca420f414c3ea8e6a1fb4875257ccc536e971c8dc07e600e265e642489266604f94ee995f96ef02eac771bb88bc66c57d229edfba1e484fd1c8b49e11e594aefa681f26ea28c348615d3e0a2dc76845d2d19543751ce444c7b65fa449a74639fa13c123d025200efa7012b209400746e03bd6a7bc938b926107da0491407bd952602d14a7fa743cbd51d5090a22c76a336f06b5e6dc5ecf70c803da8dcbff149c5013c36 +Ctrl.hexxcghash = hexxcghash:273ab849318045321f672fdf9b4bc250c4b46717374bfb3322bc7701 +Ctrl.hexsession_id = hexsession_id:273ab849318045321f672fdf9b4bc250c4b46717374bfb3322bc7701 +Ctrl.type = type:D +Output = bdfbd698c518aa45c35d7afd7bd91150 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100d62744a1ee5a4d03d761f48fb63ece42d9204e00016dad042ae7cbe600cb9e93535bc36d2f94d715cf8c2cd948caf876b4948429cb85ac73765949495af8380a56b68d1d3eeb4d9b310e2c53db5f51a7b8382759273c0be30862df81ca420f414c3ea8e6a1fb4875257ccc536e971c8dc07e600e265e642489266604f94ee995f96ef02eac771bb88bc66c57d229edfba1e484fd1c8b49e11e594aefa681f26ea28c348615d3e0a2dc76845d2d19543751ce444c7b65fa449a74639fa13c123d025200efa7012b209400746e03bd6a7bc938b926107da0491407bd952602d14a7fa743cbd51d5090a22c76a336f06b5e6dc5ecf70c803da8dcbff149c5013c36 +Ctrl.hexxcghash = hexxcghash:273ab849318045321f672fdf9b4bc250c4b46717374bfb3322bc7701 +Ctrl.hexsession_id = hexsession_id:273ab849318045321f672fdf9b4bc250c4b46717374bfb3322bc7701 +Ctrl.type = type:E +Output = dd38b79b081713ac3007ffd88d5cd67f43fbb36c983e0fc1cd273d84 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100d62744a1ee5a4d03d761f48fb63ece42d9204e00016dad042ae7cbe600cb9e93535bc36d2f94d715cf8c2cd948caf876b4948429cb85ac73765949495af8380a56b68d1d3eeb4d9b310e2c53db5f51a7b8382759273c0be30862df81ca420f414c3ea8e6a1fb4875257ccc536e971c8dc07e600e265e642489266604f94ee995f96ef02eac771bb88bc66c57d229edfba1e484fd1c8b49e11e594aefa681f26ea28c348615d3e0a2dc76845d2d19543751ce444c7b65fa449a74639fa13c123d025200efa7012b209400746e03bd6a7bc938b926107da0491407bd952602d14a7fa743cbd51d5090a22c76a336f06b5e6dc5ecf70c803da8dcbff149c5013c36 +Ctrl.hexxcghash = hexxcghash:273ab849318045321f672fdf9b4bc250c4b46717374bfb3322bc7701 +Ctrl.hexsession_id = hexsession_id:273ab849318045321f672fdf9b4bc250c4b46717374bfb3322bc7701 +Ctrl.type = type:F +Output = edf713ecfb21b9e9c2d9d04c882d5ded433dcf459ff5b0fe7cd45bb1 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100d9b92844753a5eadc2ef7e84372a56bd096cc1d57a5c282811658d7df87564f202e800c774e75bbb53f47e835f207300ccd4661fd8a73b6ff87770c2c036346e99fadc5193171e1e732f3b6a017808a150ee02c4b6e70d87462e51825a94bda27fa9cbe18c7ef20d0b0201cb7526e0e9bac21b877e5064000290424387a9aa98da563ee2a5ef36af4b442a69eb631b88b8e3a0f073aa5dda589c4aa0e4e007e0d0036a231d52137d724fd60d41f42512214853e7acf8bde77e377842468f4216a15d0c8fe033c2b133bf651c82fda6d227e3c3f0cb7d0a9eba7c35eeefcf683ddde696fdeba5ec124e701f01bf5b0d59a667c75633dea07670b07baa20f313c3 +Ctrl.hexxcghash = hexxcghash:a510774a9b07b05e4e0eaf9409d77028a511a9565784b69ab3c03ffc +Ctrl.hexsession_id = hexsession_id:49c4ad412d13870d0e9c6855e2881fc032aab36fa3ab3598a7f1153e +Ctrl.type = type:A +Output = f3064d3f3ed09eefd34731a2c60c1a80 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100d9b92844753a5eadc2ef7e84372a56bd096cc1d57a5c282811658d7df87564f202e800c774e75bbb53f47e835f207300ccd4661fd8a73b6ff87770c2c036346e99fadc5193171e1e732f3b6a017808a150ee02c4b6e70d87462e51825a94bda27fa9cbe18c7ef20d0b0201cb7526e0e9bac21b877e5064000290424387a9aa98da563ee2a5ef36af4b442a69eb631b88b8e3a0f073aa5dda589c4aa0e4e007e0d0036a231d52137d724fd60d41f42512214853e7acf8bde77e377842468f4216a15d0c8fe033c2b133bf651c82fda6d227e3c3f0cb7d0a9eba7c35eeefcf683ddde696fdeba5ec124e701f01bf5b0d59a667c75633dea07670b07baa20f313c3 +Ctrl.hexxcghash = hexxcghash:a510774a9b07b05e4e0eaf9409d77028a511a9565784b69ab3c03ffc +Ctrl.hexsession_id = hexsession_id:49c4ad412d13870d0e9c6855e2881fc032aab36fa3ab3598a7f1153e +Ctrl.type = type:B +Output = 1f7f508d9c4cf1004a220f26e0e6c184 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100d9b92844753a5eadc2ef7e84372a56bd096cc1d57a5c282811658d7df87564f202e800c774e75bbb53f47e835f207300ccd4661fd8a73b6ff87770c2c036346e99fadc5193171e1e732f3b6a017808a150ee02c4b6e70d87462e51825a94bda27fa9cbe18c7ef20d0b0201cb7526e0e9bac21b877e5064000290424387a9aa98da563ee2a5ef36af4b442a69eb631b88b8e3a0f073aa5dda589c4aa0e4e007e0d0036a231d52137d724fd60d41f42512214853e7acf8bde77e377842468f4216a15d0c8fe033c2b133bf651c82fda6d227e3c3f0cb7d0a9eba7c35eeefcf683ddde696fdeba5ec124e701f01bf5b0d59a667c75633dea07670b07baa20f313c3 +Ctrl.hexxcghash = hexxcghash:a510774a9b07b05e4e0eaf9409d77028a511a9565784b69ab3c03ffc +Ctrl.hexsession_id = hexsession_id:49c4ad412d13870d0e9c6855e2881fc032aab36fa3ab3598a7f1153e +Ctrl.type = type:C +Output = 2ad48a77fa12fcb5d3d3e98d5bb87d76 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100d9b92844753a5eadc2ef7e84372a56bd096cc1d57a5c282811658d7df87564f202e800c774e75bbb53f47e835f207300ccd4661fd8a73b6ff87770c2c036346e99fadc5193171e1e732f3b6a017808a150ee02c4b6e70d87462e51825a94bda27fa9cbe18c7ef20d0b0201cb7526e0e9bac21b877e5064000290424387a9aa98da563ee2a5ef36af4b442a69eb631b88b8e3a0f073aa5dda589c4aa0e4e007e0d0036a231d52137d724fd60d41f42512214853e7acf8bde77e377842468f4216a15d0c8fe033c2b133bf651c82fda6d227e3c3f0cb7d0a9eba7c35eeefcf683ddde696fdeba5ec124e701f01bf5b0d59a667c75633dea07670b07baa20f313c3 +Ctrl.hexxcghash = hexxcghash:a510774a9b07b05e4e0eaf9409d77028a511a9565784b69ab3c03ffc +Ctrl.hexsession_id = hexsession_id:49c4ad412d13870d0e9c6855e2881fc032aab36fa3ab3598a7f1153e +Ctrl.type = type:D +Output = 0433db7fd40d9d0dc9df6e9eed8059e4 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100d9b92844753a5eadc2ef7e84372a56bd096cc1d57a5c282811658d7df87564f202e800c774e75bbb53f47e835f207300ccd4661fd8a73b6ff87770c2c036346e99fadc5193171e1e732f3b6a017808a150ee02c4b6e70d87462e51825a94bda27fa9cbe18c7ef20d0b0201cb7526e0e9bac21b877e5064000290424387a9aa98da563ee2a5ef36af4b442a69eb631b88b8e3a0f073aa5dda589c4aa0e4e007e0d0036a231d52137d724fd60d41f42512214853e7acf8bde77e377842468f4216a15d0c8fe033c2b133bf651c82fda6d227e3c3f0cb7d0a9eba7c35eeefcf683ddde696fdeba5ec124e701f01bf5b0d59a667c75633dea07670b07baa20f313c3 +Ctrl.hexxcghash = hexxcghash:a510774a9b07b05e4e0eaf9409d77028a511a9565784b69ab3c03ffc +Ctrl.hexsession_id = hexsession_id:49c4ad412d13870d0e9c6855e2881fc032aab36fa3ab3598a7f1153e +Ctrl.type = type:E +Output = b07884f15910c6a083143ef9bda115d05c9e4c4057c1987c4f78a1b6 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100d9b92844753a5eadc2ef7e84372a56bd096cc1d57a5c282811658d7df87564f202e800c774e75bbb53f47e835f207300ccd4661fd8a73b6ff87770c2c036346e99fadc5193171e1e732f3b6a017808a150ee02c4b6e70d87462e51825a94bda27fa9cbe18c7ef20d0b0201cb7526e0e9bac21b877e5064000290424387a9aa98da563ee2a5ef36af4b442a69eb631b88b8e3a0f073aa5dda589c4aa0e4e007e0d0036a231d52137d724fd60d41f42512214853e7acf8bde77e377842468f4216a15d0c8fe033c2b133bf651c82fda6d227e3c3f0cb7d0a9eba7c35eeefcf683ddde696fdeba5ec124e701f01bf5b0d59a667c75633dea07670b07baa20f313c3 +Ctrl.hexxcghash = hexxcghash:a510774a9b07b05e4e0eaf9409d77028a511a9565784b69ab3c03ffc +Ctrl.hexsession_id = hexsession_id:49c4ad412d13870d0e9c6855e2881fc032aab36fa3ab3598a7f1153e +Ctrl.type = type:F +Output = f838da7b26311dbd529f742d901709229482cea9d7ac9f0c2cd14200 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010012641156f363edf89c1824532fcf379a846dd042ac173d6b9b75651d7aa911ebe75f5dd3b502a7d6ec331f095ed08505e86f51008242357b3d29d75db82619066c2ecb3ba78e8de8fceeb206bfa39ef3e6617d1f20e4a092ac6bd589904fe0ce4fac2d73c7396a54084bf71e929ae0c5c7e67e1795e73f9fab8c6ee90254f27dae6750e1f8769af5b235f9f7aef302f1fc4015f60af34656a1a8187159a4d6c4b3be40abe9ad5cb56a52f5407186b42fdce7a691b917550719fc7eef858030dcb2829a07a39ca279d9deb0487b893d4c7bbc41cde4eb366188f38bdb4289b8a95ae757864e963cbe4f5eced9aebf3b33ebb3c75b7e405816366e609e16f8bc56 +Ctrl.hexxcghash = hexxcghash:d041364fa73e42f0c9c49d2ad25a758c3f4691761d9caf6dfd2ad690 +Ctrl.hexsession_id = hexsession_id:1fea0e79508d3b2caf0e275c463626ad7d57c6cfc1da79a5bce2fa53 +Ctrl.type = type:A +Output = d8c60bf582892d2cd03956774614b9f1 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010012641156f363edf89c1824532fcf379a846dd042ac173d6b9b75651d7aa911ebe75f5dd3b502a7d6ec331f095ed08505e86f51008242357b3d29d75db82619066c2ecb3ba78e8de8fceeb206bfa39ef3e6617d1f20e4a092ac6bd589904fe0ce4fac2d73c7396a54084bf71e929ae0c5c7e67e1795e73f9fab8c6ee90254f27dae6750e1f8769af5b235f9f7aef302f1fc4015f60af34656a1a8187159a4d6c4b3be40abe9ad5cb56a52f5407186b42fdce7a691b917550719fc7eef858030dcb2829a07a39ca279d9deb0487b893d4c7bbc41cde4eb366188f38bdb4289b8a95ae757864e963cbe4f5eced9aebf3b33ebb3c75b7e405816366e609e16f8bc56 +Ctrl.hexxcghash = hexxcghash:d041364fa73e42f0c9c49d2ad25a758c3f4691761d9caf6dfd2ad690 +Ctrl.hexsession_id = hexsession_id:1fea0e79508d3b2caf0e275c463626ad7d57c6cfc1da79a5bce2fa53 +Ctrl.type = type:B +Output = bac1bef6d6dd92de55bc174c9db77a54 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010012641156f363edf89c1824532fcf379a846dd042ac173d6b9b75651d7aa911ebe75f5dd3b502a7d6ec331f095ed08505e86f51008242357b3d29d75db82619066c2ecb3ba78e8de8fceeb206bfa39ef3e6617d1f20e4a092ac6bd589904fe0ce4fac2d73c7396a54084bf71e929ae0c5c7e67e1795e73f9fab8c6ee90254f27dae6750e1f8769af5b235f9f7aef302f1fc4015f60af34656a1a8187159a4d6c4b3be40abe9ad5cb56a52f5407186b42fdce7a691b917550719fc7eef858030dcb2829a07a39ca279d9deb0487b893d4c7bbc41cde4eb366188f38bdb4289b8a95ae757864e963cbe4f5eced9aebf3b33ebb3c75b7e405816366e609e16f8bc56 +Ctrl.hexxcghash = hexxcghash:d041364fa73e42f0c9c49d2ad25a758c3f4691761d9caf6dfd2ad690 +Ctrl.hexsession_id = hexsession_id:1fea0e79508d3b2caf0e275c463626ad7d57c6cfc1da79a5bce2fa53 +Ctrl.type = type:C +Output = bdf96d88d7ac4f0daa62d29948a5c891 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010012641156f363edf89c1824532fcf379a846dd042ac173d6b9b75651d7aa911ebe75f5dd3b502a7d6ec331f095ed08505e86f51008242357b3d29d75db82619066c2ecb3ba78e8de8fceeb206bfa39ef3e6617d1f20e4a092ac6bd589904fe0ce4fac2d73c7396a54084bf71e929ae0c5c7e67e1795e73f9fab8c6ee90254f27dae6750e1f8769af5b235f9f7aef302f1fc4015f60af34656a1a8187159a4d6c4b3be40abe9ad5cb56a52f5407186b42fdce7a691b917550719fc7eef858030dcb2829a07a39ca279d9deb0487b893d4c7bbc41cde4eb366188f38bdb4289b8a95ae757864e963cbe4f5eced9aebf3b33ebb3c75b7e405816366e609e16f8bc56 +Ctrl.hexxcghash = hexxcghash:d041364fa73e42f0c9c49d2ad25a758c3f4691761d9caf6dfd2ad690 +Ctrl.hexsession_id = hexsession_id:1fea0e79508d3b2caf0e275c463626ad7d57c6cfc1da79a5bce2fa53 +Ctrl.type = type:D +Output = ef0dbe568b4f3fbcb8b2665ed7ed0f8d + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010012641156f363edf89c1824532fcf379a846dd042ac173d6b9b75651d7aa911ebe75f5dd3b502a7d6ec331f095ed08505e86f51008242357b3d29d75db82619066c2ecb3ba78e8de8fceeb206bfa39ef3e6617d1f20e4a092ac6bd589904fe0ce4fac2d73c7396a54084bf71e929ae0c5c7e67e1795e73f9fab8c6ee90254f27dae6750e1f8769af5b235f9f7aef302f1fc4015f60af34656a1a8187159a4d6c4b3be40abe9ad5cb56a52f5407186b42fdce7a691b917550719fc7eef858030dcb2829a07a39ca279d9deb0487b893d4c7bbc41cde4eb366188f38bdb4289b8a95ae757864e963cbe4f5eced9aebf3b33ebb3c75b7e405816366e609e16f8bc56 +Ctrl.hexxcghash = hexxcghash:d041364fa73e42f0c9c49d2ad25a758c3f4691761d9caf6dfd2ad690 +Ctrl.hexsession_id = hexsession_id:1fea0e79508d3b2caf0e275c463626ad7d57c6cfc1da79a5bce2fa53 +Ctrl.type = type:E +Output = 315d50a1b29f9d556c983432b98bf437893c1a892cf69880353d9797 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010012641156f363edf89c1824532fcf379a846dd042ac173d6b9b75651d7aa911ebe75f5dd3b502a7d6ec331f095ed08505e86f51008242357b3d29d75db82619066c2ecb3ba78e8de8fceeb206bfa39ef3e6617d1f20e4a092ac6bd589904fe0ce4fac2d73c7396a54084bf71e929ae0c5c7e67e1795e73f9fab8c6ee90254f27dae6750e1f8769af5b235f9f7aef302f1fc4015f60af34656a1a8187159a4d6c4b3be40abe9ad5cb56a52f5407186b42fdce7a691b917550719fc7eef858030dcb2829a07a39ca279d9deb0487b893d4c7bbc41cde4eb366188f38bdb4289b8a95ae757864e963cbe4f5eced9aebf3b33ebb3c75b7e405816366e609e16f8bc56 +Ctrl.hexxcghash = hexxcghash:d041364fa73e42f0c9c49d2ad25a758c3f4691761d9caf6dfd2ad690 +Ctrl.hexsession_id = hexsession_id:1fea0e79508d3b2caf0e275c463626ad7d57c6cfc1da79a5bce2fa53 +Ctrl.type = type:F +Output = 612e3ac6651f9c7d99c532da0820f079292d9b33d36b684198665f5e + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100ecfd38c0707d59db0b361a449a22ddc63f055678e253ffbc8324a306ff06e31590fcdf6fc271665335f01af804619f4367489d7829ca756cd14d2147f2c6b2c0355847955ebe89ed2133dc74283732c4f821a7cadcaa9abf661fa9fcf81b0596c454fdac23d79267c5a832979217df61f9bb04c0fa69f5fdae2407da763210f0b7c1097463505b0da86ad71c20c1c57accaae353919cb2708aa378a5ff598d0a4b21b7527b2dbd271957fbbf04f5787076fb7f8afdfb75ddb5fa142ab427e026c87033fe2c6f22454ebace3f77646d0ee447cd1d339c9a21ce86c0b233c7fcbd6d1d165e14d57908777cde654b7fc3c3db7e62951b359ec71fe475356dc6a58b +Ctrl.hexxcghash = hexxcghash:7af5885d52c4173000c45dd2b0fbeb21fa5722aa65eecb1bf977248a +Ctrl.hexsession_id = hexsession_id:122e2d181cca7dcec6f30a8b027b4d29275d342af5fd82794b24560f +Ctrl.type = type:A +Output = e0d36ac1de6cc8514d25ff824bfaaa37 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100ecfd38c0707d59db0b361a449a22ddc63f055678e253ffbc8324a306ff06e31590fcdf6fc271665335f01af804619f4367489d7829ca756cd14d2147f2c6b2c0355847955ebe89ed2133dc74283732c4f821a7cadcaa9abf661fa9fcf81b0596c454fdac23d79267c5a832979217df61f9bb04c0fa69f5fdae2407da763210f0b7c1097463505b0da86ad71c20c1c57accaae353919cb2708aa378a5ff598d0a4b21b7527b2dbd271957fbbf04f5787076fb7f8afdfb75ddb5fa142ab427e026c87033fe2c6f22454ebace3f77646d0ee447cd1d339c9a21ce86c0b233c7fcbd6d1d165e14d57908777cde654b7fc3c3db7e62951b359ec71fe475356dc6a58b +Ctrl.hexxcghash = hexxcghash:7af5885d52c4173000c45dd2b0fbeb21fa5722aa65eecb1bf977248a +Ctrl.hexsession_id = hexsession_id:122e2d181cca7dcec6f30a8b027b4d29275d342af5fd82794b24560f +Ctrl.type = type:B +Output = 58c896b4d1a9507e7da2234a1a538d78 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100ecfd38c0707d59db0b361a449a22ddc63f055678e253ffbc8324a306ff06e31590fcdf6fc271665335f01af804619f4367489d7829ca756cd14d2147f2c6b2c0355847955ebe89ed2133dc74283732c4f821a7cadcaa9abf661fa9fcf81b0596c454fdac23d79267c5a832979217df61f9bb04c0fa69f5fdae2407da763210f0b7c1097463505b0da86ad71c20c1c57accaae353919cb2708aa378a5ff598d0a4b21b7527b2dbd271957fbbf04f5787076fb7f8afdfb75ddb5fa142ab427e026c87033fe2c6f22454ebace3f77646d0ee447cd1d339c9a21ce86c0b233c7fcbd6d1d165e14d57908777cde654b7fc3c3db7e62951b359ec71fe475356dc6a58b +Ctrl.hexxcghash = hexxcghash:7af5885d52c4173000c45dd2b0fbeb21fa5722aa65eecb1bf977248a +Ctrl.hexsession_id = hexsession_id:122e2d181cca7dcec6f30a8b027b4d29275d342af5fd82794b24560f +Ctrl.type = type:C +Output = 5966df5cb582234585b4c4312318f829 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100ecfd38c0707d59db0b361a449a22ddc63f055678e253ffbc8324a306ff06e31590fcdf6fc271665335f01af804619f4367489d7829ca756cd14d2147f2c6b2c0355847955ebe89ed2133dc74283732c4f821a7cadcaa9abf661fa9fcf81b0596c454fdac23d79267c5a832979217df61f9bb04c0fa69f5fdae2407da763210f0b7c1097463505b0da86ad71c20c1c57accaae353919cb2708aa378a5ff598d0a4b21b7527b2dbd271957fbbf04f5787076fb7f8afdfb75ddb5fa142ab427e026c87033fe2c6f22454ebace3f77646d0ee447cd1d339c9a21ce86c0b233c7fcbd6d1d165e14d57908777cde654b7fc3c3db7e62951b359ec71fe475356dc6a58b +Ctrl.hexxcghash = hexxcghash:7af5885d52c4173000c45dd2b0fbeb21fa5722aa65eecb1bf977248a +Ctrl.hexsession_id = hexsession_id:122e2d181cca7dcec6f30a8b027b4d29275d342af5fd82794b24560f +Ctrl.type = type:D +Output = 40d8bdab78c9dac2b2d14d1c8bd41405 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100ecfd38c0707d59db0b361a449a22ddc63f055678e253ffbc8324a306ff06e31590fcdf6fc271665335f01af804619f4367489d7829ca756cd14d2147f2c6b2c0355847955ebe89ed2133dc74283732c4f821a7cadcaa9abf661fa9fcf81b0596c454fdac23d79267c5a832979217df61f9bb04c0fa69f5fdae2407da763210f0b7c1097463505b0da86ad71c20c1c57accaae353919cb2708aa378a5ff598d0a4b21b7527b2dbd271957fbbf04f5787076fb7f8afdfb75ddb5fa142ab427e026c87033fe2c6f22454ebace3f77646d0ee447cd1d339c9a21ce86c0b233c7fcbd6d1d165e14d57908777cde654b7fc3c3db7e62951b359ec71fe475356dc6a58b +Ctrl.hexxcghash = hexxcghash:7af5885d52c4173000c45dd2b0fbeb21fa5722aa65eecb1bf977248a +Ctrl.hexsession_id = hexsession_id:122e2d181cca7dcec6f30a8b027b4d29275d342af5fd82794b24560f +Ctrl.type = type:E +Output = 1af4707570794ff6c718c817ccb9fca5edf22a3a8d493a861633fb7a + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100ecfd38c0707d59db0b361a449a22ddc63f055678e253ffbc8324a306ff06e31590fcdf6fc271665335f01af804619f4367489d7829ca756cd14d2147f2c6b2c0355847955ebe89ed2133dc74283732c4f821a7cadcaa9abf661fa9fcf81b0596c454fdac23d79267c5a832979217df61f9bb04c0fa69f5fdae2407da763210f0b7c1097463505b0da86ad71c20c1c57accaae353919cb2708aa378a5ff598d0a4b21b7527b2dbd271957fbbf04f5787076fb7f8afdfb75ddb5fa142ab427e026c87033fe2c6f22454ebace3f77646d0ee447cd1d339c9a21ce86c0b233c7fcbd6d1d165e14d57908777cde654b7fc3c3db7e62951b359ec71fe475356dc6a58b +Ctrl.hexxcghash = hexxcghash:7af5885d52c4173000c45dd2b0fbeb21fa5722aa65eecb1bf977248a +Ctrl.hexsession_id = hexsession_id:122e2d181cca7dcec6f30a8b027b4d29275d342af5fd82794b24560f +Ctrl.type = type:F +Output = 4e6edd5d86f0a3b92595fb2d4f0f9b0f0ed1e850c84014224270bcbc + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000001002dde91723fa969756f5a597683fa0ef938423ffcf3b3d0262f9ba0d69d72ffc3afbf2ccb9bbc42332f97d3857b44575e30849fe19e77688e9102d9909585d9e53835eee4127aee038deaf8501c70cfd209ef755f84613365d9b2150009f9055300b74c593f8204b84c7faaac87c781e7bdda8c54bf0ec170e4dbf71cd15825c949ebaa934797333124e63db50efe0f33f5224687c097b22d52de36045659622dd214effab378b6bff298c84436831f85540a5eac0b68d51fa1abd18d19ce5452aefe729b7d384e038927ee8f0c2ddffd1cb6ea537a90d9b06bce3bd01fdf4370d62d985ab80417d1256d38ab3874297163a020052b42e73e8ef64950851e7da2 +Ctrl.hexxcghash = hexxcghash:590c8e3800ddfd382f0b3023c7a8753bd013e756855ffbca1dee0f01 +Ctrl.hexsession_id = hexsession_id:5e4528c7ff85f2ed7d632c4355e2524438ee83ef0e1695524921408d +Ctrl.type = type:A +Output = d30b7efda77a1008d78487fb1c9df511 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000001002dde91723fa969756f5a597683fa0ef938423ffcf3b3d0262f9ba0d69d72ffc3afbf2ccb9bbc42332f97d3857b44575e30849fe19e77688e9102d9909585d9e53835eee4127aee038deaf8501c70cfd209ef755f84613365d9b2150009f9055300b74c593f8204b84c7faaac87c781e7bdda8c54bf0ec170e4dbf71cd15825c949ebaa934797333124e63db50efe0f33f5224687c097b22d52de36045659622dd214effab378b6bff298c84436831f85540a5eac0b68d51fa1abd18d19ce5452aefe729b7d384e038927ee8f0c2ddffd1cb6ea537a90d9b06bce3bd01fdf4370d62d985ab80417d1256d38ab3874297163a020052b42e73e8ef64950851e7da2 +Ctrl.hexxcghash = hexxcghash:590c8e3800ddfd382f0b3023c7a8753bd013e756855ffbca1dee0f01 +Ctrl.hexsession_id = hexsession_id:5e4528c7ff85f2ed7d632c4355e2524438ee83ef0e1695524921408d +Ctrl.type = type:B +Output = 498b3d9f14446a028d1aed8bc4748e34 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000001002dde91723fa969756f5a597683fa0ef938423ffcf3b3d0262f9ba0d69d72ffc3afbf2ccb9bbc42332f97d3857b44575e30849fe19e77688e9102d9909585d9e53835eee4127aee038deaf8501c70cfd209ef755f84613365d9b2150009f9055300b74c593f8204b84c7faaac87c781e7bdda8c54bf0ec170e4dbf71cd15825c949ebaa934797333124e63db50efe0f33f5224687c097b22d52de36045659622dd214effab378b6bff298c84436831f85540a5eac0b68d51fa1abd18d19ce5452aefe729b7d384e038927ee8f0c2ddffd1cb6ea537a90d9b06bce3bd01fdf4370d62d985ab80417d1256d38ab3874297163a020052b42e73e8ef64950851e7da2 +Ctrl.hexxcghash = hexxcghash:590c8e3800ddfd382f0b3023c7a8753bd013e756855ffbca1dee0f01 +Ctrl.hexsession_id = hexsession_id:5e4528c7ff85f2ed7d632c4355e2524438ee83ef0e1695524921408d +Ctrl.type = type:C +Output = f4909273c39ef8819b353cde80f57cc9 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000001002dde91723fa969756f5a597683fa0ef938423ffcf3b3d0262f9ba0d69d72ffc3afbf2ccb9bbc42332f97d3857b44575e30849fe19e77688e9102d9909585d9e53835eee4127aee038deaf8501c70cfd209ef755f84613365d9b2150009f9055300b74c593f8204b84c7faaac87c781e7bdda8c54bf0ec170e4dbf71cd15825c949ebaa934797333124e63db50efe0f33f5224687c097b22d52de36045659622dd214effab378b6bff298c84436831f85540a5eac0b68d51fa1abd18d19ce5452aefe729b7d384e038927ee8f0c2ddffd1cb6ea537a90d9b06bce3bd01fdf4370d62d985ab80417d1256d38ab3874297163a020052b42e73e8ef64950851e7da2 +Ctrl.hexxcghash = hexxcghash:590c8e3800ddfd382f0b3023c7a8753bd013e756855ffbca1dee0f01 +Ctrl.hexsession_id = hexsession_id:5e4528c7ff85f2ed7d632c4355e2524438ee83ef0e1695524921408d +Ctrl.type = type:D +Output = b31337a6ecd02f4beb9bf4af12ea4e11 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000001002dde91723fa969756f5a597683fa0ef938423ffcf3b3d0262f9ba0d69d72ffc3afbf2ccb9bbc42332f97d3857b44575e30849fe19e77688e9102d9909585d9e53835eee4127aee038deaf8501c70cfd209ef755f84613365d9b2150009f9055300b74c593f8204b84c7faaac87c781e7bdda8c54bf0ec170e4dbf71cd15825c949ebaa934797333124e63db50efe0f33f5224687c097b22d52de36045659622dd214effab378b6bff298c84436831f85540a5eac0b68d51fa1abd18d19ce5452aefe729b7d384e038927ee8f0c2ddffd1cb6ea537a90d9b06bce3bd01fdf4370d62d985ab80417d1256d38ab3874297163a020052b42e73e8ef64950851e7da2 +Ctrl.hexxcghash = hexxcghash:590c8e3800ddfd382f0b3023c7a8753bd013e756855ffbca1dee0f01 +Ctrl.hexsession_id = hexsession_id:5e4528c7ff85f2ed7d632c4355e2524438ee83ef0e1695524921408d +Ctrl.type = type:E +Output = 6f3da7bb4b64ad3e1171083a62eca5e755563e639594b848243760d8 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000001002dde91723fa969756f5a597683fa0ef938423ffcf3b3d0262f9ba0d69d72ffc3afbf2ccb9bbc42332f97d3857b44575e30849fe19e77688e9102d9909585d9e53835eee4127aee038deaf8501c70cfd209ef755f84613365d9b2150009f9055300b74c593f8204b84c7faaac87c781e7bdda8c54bf0ec170e4dbf71cd15825c949ebaa934797333124e63db50efe0f33f5224687c097b22d52de36045659622dd214effab378b6bff298c84436831f85540a5eac0b68d51fa1abd18d19ce5452aefe729b7d384e038927ee8f0c2ddffd1cb6ea537a90d9b06bce3bd01fdf4370d62d985ab80417d1256d38ab3874297163a020052b42e73e8ef64950851e7da2 +Ctrl.hexxcghash = hexxcghash:590c8e3800ddfd382f0b3023c7a8753bd013e756855ffbca1dee0f01 +Ctrl.hexsession_id = hexsession_id:5e4528c7ff85f2ed7d632c4355e2524438ee83ef0e1695524921408d +Ctrl.type = type:F +Output = e88506aa4a4ffa33675c4a296abf91e24450a496e56f8465e9a7525c + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100be7e6428be4ff862e2b9fe69f055bbbeaa51b7666d51e1ad2e5fe12e2f7a171121147311780840e5d1345c6a24eb3e2d7bace8c88cddae9a062c7aacc7ae87d31ef7d4c52dc2e35f364266c9c34e1ff703a61a8fb39397344ac94e75a42fc956dcc887e50e67018d5a74c89c1a8555ebff4a4baf5b4916aea1dd95c126df390882143908821ecf68511e986bd379cf0871fe1a2679241b339f3317f76c65dc2b121e15a0b8891d9c0120b8a8a383a1dd5eb6fbd65d22a03b7987f843d454e4e1f09b9e2d37ef2be72b7f8accade301c772f74a582afab960dfa43a167275771f6a9be5a9f275cea55e9661a54b1c3210042f824fe783969fa60ad23b748a6b56 +Ctrl.hexxcghash = hexxcghash:97e793420ceda1730dac88f0d7dc52d8713a79a0b48ddb2af45dd143 +Ctrl.hexsession_id = hexsession_id:16dd0d6aca3757eec6e9dc3c4a5f590cb7911cd3cabc80815527b73c +Ctrl.type = type:A +Output = c5cbb653102d99457c33c88921b5dbe4 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100be7e6428be4ff862e2b9fe69f055bbbeaa51b7666d51e1ad2e5fe12e2f7a171121147311780840e5d1345c6a24eb3e2d7bace8c88cddae9a062c7aacc7ae87d31ef7d4c52dc2e35f364266c9c34e1ff703a61a8fb39397344ac94e75a42fc956dcc887e50e67018d5a74c89c1a8555ebff4a4baf5b4916aea1dd95c126df390882143908821ecf68511e986bd379cf0871fe1a2679241b339f3317f76c65dc2b121e15a0b8891d9c0120b8a8a383a1dd5eb6fbd65d22a03b7987f843d454e4e1f09b9e2d37ef2be72b7f8accade301c772f74a582afab960dfa43a167275771f6a9be5a9f275cea55e9661a54b1c3210042f824fe783969fa60ad23b748a6b56 +Ctrl.hexxcghash = hexxcghash:97e793420ceda1730dac88f0d7dc52d8713a79a0b48ddb2af45dd143 +Ctrl.hexsession_id = hexsession_id:16dd0d6aca3757eec6e9dc3c4a5f590cb7911cd3cabc80815527b73c +Ctrl.type = type:B +Output = dd9b1c786c7f739832629f7666e4e21e + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100be7e6428be4ff862e2b9fe69f055bbbeaa51b7666d51e1ad2e5fe12e2f7a171121147311780840e5d1345c6a24eb3e2d7bace8c88cddae9a062c7aacc7ae87d31ef7d4c52dc2e35f364266c9c34e1ff703a61a8fb39397344ac94e75a42fc956dcc887e50e67018d5a74c89c1a8555ebff4a4baf5b4916aea1dd95c126df390882143908821ecf68511e986bd379cf0871fe1a2679241b339f3317f76c65dc2b121e15a0b8891d9c0120b8a8a383a1dd5eb6fbd65d22a03b7987f843d454e4e1f09b9e2d37ef2be72b7f8accade301c772f74a582afab960dfa43a167275771f6a9be5a9f275cea55e9661a54b1c3210042f824fe783969fa60ad23b748a6b56 +Ctrl.hexxcghash = hexxcghash:97e793420ceda1730dac88f0d7dc52d8713a79a0b48ddb2af45dd143 +Ctrl.hexsession_id = hexsession_id:16dd0d6aca3757eec6e9dc3c4a5f590cb7911cd3cabc80815527b73c +Ctrl.type = type:C +Output = c33d08d706ffac1811f157526b08086f + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100be7e6428be4ff862e2b9fe69f055bbbeaa51b7666d51e1ad2e5fe12e2f7a171121147311780840e5d1345c6a24eb3e2d7bace8c88cddae9a062c7aacc7ae87d31ef7d4c52dc2e35f364266c9c34e1ff703a61a8fb39397344ac94e75a42fc956dcc887e50e67018d5a74c89c1a8555ebff4a4baf5b4916aea1dd95c126df390882143908821ecf68511e986bd379cf0871fe1a2679241b339f3317f76c65dc2b121e15a0b8891d9c0120b8a8a383a1dd5eb6fbd65d22a03b7987f843d454e4e1f09b9e2d37ef2be72b7f8accade301c772f74a582afab960dfa43a167275771f6a9be5a9f275cea55e9661a54b1c3210042f824fe783969fa60ad23b748a6b56 +Ctrl.hexxcghash = hexxcghash:97e793420ceda1730dac88f0d7dc52d8713a79a0b48ddb2af45dd143 +Ctrl.hexsession_id = hexsession_id:16dd0d6aca3757eec6e9dc3c4a5f590cb7911cd3cabc80815527b73c +Ctrl.type = type:D +Output = 5750b617b71a239d99fc412796f6d986 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100be7e6428be4ff862e2b9fe69f055bbbeaa51b7666d51e1ad2e5fe12e2f7a171121147311780840e5d1345c6a24eb3e2d7bace8c88cddae9a062c7aacc7ae87d31ef7d4c52dc2e35f364266c9c34e1ff703a61a8fb39397344ac94e75a42fc956dcc887e50e67018d5a74c89c1a8555ebff4a4baf5b4916aea1dd95c126df390882143908821ecf68511e986bd379cf0871fe1a2679241b339f3317f76c65dc2b121e15a0b8891d9c0120b8a8a383a1dd5eb6fbd65d22a03b7987f843d454e4e1f09b9e2d37ef2be72b7f8accade301c772f74a582afab960dfa43a167275771f6a9be5a9f275cea55e9661a54b1c3210042f824fe783969fa60ad23b748a6b56 +Ctrl.hexxcghash = hexxcghash:97e793420ceda1730dac88f0d7dc52d8713a79a0b48ddb2af45dd143 +Ctrl.hexsession_id = hexsession_id:16dd0d6aca3757eec6e9dc3c4a5f590cb7911cd3cabc80815527b73c +Ctrl.type = type:E +Output = 4c2edee4688119e17723fede94d81c141cb2dd632dde5e223fcd12c2 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100be7e6428be4ff862e2b9fe69f055bbbeaa51b7666d51e1ad2e5fe12e2f7a171121147311780840e5d1345c6a24eb3e2d7bace8c88cddae9a062c7aacc7ae87d31ef7d4c52dc2e35f364266c9c34e1ff703a61a8fb39397344ac94e75a42fc956dcc887e50e67018d5a74c89c1a8555ebff4a4baf5b4916aea1dd95c126df390882143908821ecf68511e986bd379cf0871fe1a2679241b339f3317f76c65dc2b121e15a0b8891d9c0120b8a8a383a1dd5eb6fbd65d22a03b7987f843d454e4e1f09b9e2d37ef2be72b7f8accade301c772f74a582afab960dfa43a167275771f6a9be5a9f275cea55e9661a54b1c3210042f824fe783969fa60ad23b748a6b56 +Ctrl.hexxcghash = hexxcghash:97e793420ceda1730dac88f0d7dc52d8713a79a0b48ddb2af45dd143 +Ctrl.hexsession_id = hexsession_id:16dd0d6aca3757eec6e9dc3c4a5f590cb7911cd3cabc80815527b73c +Ctrl.type = type:F +Output = b48103cd81397bed3bf618b2ef30a44ea806b0ad07aa098a8a33273e + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100c810e36b6ae23b2dac234f36b4ddfe820762b53478eaea205cdab848c384f2c5fe262bc471971ff42a1ff8fdfff81cdc66371a75e9fda5d7d0bd656523603255c3e0970435f995948ec98d87942cefe2194e475a507e2928e0cfbba63962c75794aa53e8a385a5d1599d88dd1684a827914da576f9e06caaecc586bb98425621a5afaf86003cabe86fcd3964a390f47302bbbee8536f24024c5c31f031e80e6bcf2a3e24d4f0b6bd42250996f12a8a5c99b09a42a737e3cbf481e002c334fe3b7626419266e0036339b1592d3bf43245c449a65e43946e60112c1f8aff8963ff56e365c6f56c36b2208eadf591360554d2b116d3374341bd5779ebcdf7ba93de +Ctrl.hexxcghash = hexxcghash:f8a7854ec21f252f679b924f0f3d34639fe976de146ddb8e93c4e4d9 +Ctrl.hexsession_id = hexsession_id:6bebea19564c0f65dd96446496f7d7c7198a5b08bcdacf29449808ba +Ctrl.type = type:A +Output = c8bc1d232edd620e0282af630d596a6c + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100c810e36b6ae23b2dac234f36b4ddfe820762b53478eaea205cdab848c384f2c5fe262bc471971ff42a1ff8fdfff81cdc66371a75e9fda5d7d0bd656523603255c3e0970435f995948ec98d87942cefe2194e475a507e2928e0cfbba63962c75794aa53e8a385a5d1599d88dd1684a827914da576f9e06caaecc586bb98425621a5afaf86003cabe86fcd3964a390f47302bbbee8536f24024c5c31f031e80e6bcf2a3e24d4f0b6bd42250996f12a8a5c99b09a42a737e3cbf481e002c334fe3b7626419266e0036339b1592d3bf43245c449a65e43946e60112c1f8aff8963ff56e365c6f56c36b2208eadf591360554d2b116d3374341bd5779ebcdf7ba93de +Ctrl.hexxcghash = hexxcghash:f8a7854ec21f252f679b924f0f3d34639fe976de146ddb8e93c4e4d9 +Ctrl.hexsession_id = hexsession_id:6bebea19564c0f65dd96446496f7d7c7198a5b08bcdacf29449808ba +Ctrl.type = type:B +Output = 6a90269aab1a3e3612eec97a45db11e1 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100c810e36b6ae23b2dac234f36b4ddfe820762b53478eaea205cdab848c384f2c5fe262bc471971ff42a1ff8fdfff81cdc66371a75e9fda5d7d0bd656523603255c3e0970435f995948ec98d87942cefe2194e475a507e2928e0cfbba63962c75794aa53e8a385a5d1599d88dd1684a827914da576f9e06caaecc586bb98425621a5afaf86003cabe86fcd3964a390f47302bbbee8536f24024c5c31f031e80e6bcf2a3e24d4f0b6bd42250996f12a8a5c99b09a42a737e3cbf481e002c334fe3b7626419266e0036339b1592d3bf43245c449a65e43946e60112c1f8aff8963ff56e365c6f56c36b2208eadf591360554d2b116d3374341bd5779ebcdf7ba93de +Ctrl.hexxcghash = hexxcghash:f8a7854ec21f252f679b924f0f3d34639fe976de146ddb8e93c4e4d9 +Ctrl.hexsession_id = hexsession_id:6bebea19564c0f65dd96446496f7d7c7198a5b08bcdacf29449808ba +Ctrl.type = type:C +Output = ebb8a6227e789d33fa072355cb2851ac + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100c810e36b6ae23b2dac234f36b4ddfe820762b53478eaea205cdab848c384f2c5fe262bc471971ff42a1ff8fdfff81cdc66371a75e9fda5d7d0bd656523603255c3e0970435f995948ec98d87942cefe2194e475a507e2928e0cfbba63962c75794aa53e8a385a5d1599d88dd1684a827914da576f9e06caaecc586bb98425621a5afaf86003cabe86fcd3964a390f47302bbbee8536f24024c5c31f031e80e6bcf2a3e24d4f0b6bd42250996f12a8a5c99b09a42a737e3cbf481e002c334fe3b7626419266e0036339b1592d3bf43245c449a65e43946e60112c1f8aff8963ff56e365c6f56c36b2208eadf591360554d2b116d3374341bd5779ebcdf7ba93de +Ctrl.hexxcghash = hexxcghash:f8a7854ec21f252f679b924f0f3d34639fe976de146ddb8e93c4e4d9 +Ctrl.hexsession_id = hexsession_id:6bebea19564c0f65dd96446496f7d7c7198a5b08bcdacf29449808ba +Ctrl.type = type:D +Output = 9662ff73b11bd2978ffceb7545f6054e + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100c810e36b6ae23b2dac234f36b4ddfe820762b53478eaea205cdab848c384f2c5fe262bc471971ff42a1ff8fdfff81cdc66371a75e9fda5d7d0bd656523603255c3e0970435f995948ec98d87942cefe2194e475a507e2928e0cfbba63962c75794aa53e8a385a5d1599d88dd1684a827914da576f9e06caaecc586bb98425621a5afaf86003cabe86fcd3964a390f47302bbbee8536f24024c5c31f031e80e6bcf2a3e24d4f0b6bd42250996f12a8a5c99b09a42a737e3cbf481e002c334fe3b7626419266e0036339b1592d3bf43245c449a65e43946e60112c1f8aff8963ff56e365c6f56c36b2208eadf591360554d2b116d3374341bd5779ebcdf7ba93de +Ctrl.hexxcghash = hexxcghash:f8a7854ec21f252f679b924f0f3d34639fe976de146ddb8e93c4e4d9 +Ctrl.hexsession_id = hexsession_id:6bebea19564c0f65dd96446496f7d7c7198a5b08bcdacf29449808ba +Ctrl.type = type:E +Output = 9eb35f9a8a6155b81b8dda117f5d631cc4eddea4b4912147513bc4ec + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100c810e36b6ae23b2dac234f36b4ddfe820762b53478eaea205cdab848c384f2c5fe262bc471971ff42a1ff8fdfff81cdc66371a75e9fda5d7d0bd656523603255c3e0970435f995948ec98d87942cefe2194e475a507e2928e0cfbba63962c75794aa53e8a385a5d1599d88dd1684a827914da576f9e06caaecc586bb98425621a5afaf86003cabe86fcd3964a390f47302bbbee8536f24024c5c31f031e80e6bcf2a3e24d4f0b6bd42250996f12a8a5c99b09a42a737e3cbf481e002c334fe3b7626419266e0036339b1592d3bf43245c449a65e43946e60112c1f8aff8963ff56e365c6f56c36b2208eadf591360554d2b116d3374341bd5779ebcdf7ba93de +Ctrl.hexxcghash = hexxcghash:f8a7854ec21f252f679b924f0f3d34639fe976de146ddb8e93c4e4d9 +Ctrl.hexsession_id = hexsession_id:6bebea19564c0f65dd96446496f7d7c7198a5b08bcdacf29449808ba +Ctrl.type = type:F +Output = 3e137e015973e21c37a8de81cc812683d506fc35699114b31c06797e + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100940a3535b876a90210236f8571e20cb04d287ae7217b95d75c4170e8afea4d290bc41e736cdd1b470b02ce8b74ca4cdaa121bbb3b31df3f2c847455ef21b61e0c966bdb8cf58fb94819108c7feb9551c5dcacc37fec5fe4e9a59818e93ed08f3477632c62304fb2ba05f7fa8611970adb39379ab7159baa3731fb1fceba201a1858635b92d938b195a44612ffddac3f2b5db59b47c9f90b66e76b3e901887b27312e1043b000b5ff21d4fff4b5fc06203403387fe28837c4d367dbe2c73e1ec5c4e867cc99dca2bf8171aad1498b37bf0d17e5fd64e411386df72667d824e4514530cf6021ca8880154212884f5fdb44a0c8745a4049971de370eb31c959dac4 +Ctrl.hexxcghash = hexxcghash:4688aa9bceb36ddab933675e6963357b2bd0daa5e1984a06fc7f3ff3 +Ctrl.hexsession_id = hexsession_id:fb72bca26e61577066d7c5093ac9281fcf06ae3250b43228b067b86e +Ctrl.type = type:A +Output = cc22a730c15abf9628f749fac9d3f935 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100940a3535b876a90210236f8571e20cb04d287ae7217b95d75c4170e8afea4d290bc41e736cdd1b470b02ce8b74ca4cdaa121bbb3b31df3f2c847455ef21b61e0c966bdb8cf58fb94819108c7feb9551c5dcacc37fec5fe4e9a59818e93ed08f3477632c62304fb2ba05f7fa8611970adb39379ab7159baa3731fb1fceba201a1858635b92d938b195a44612ffddac3f2b5db59b47c9f90b66e76b3e901887b27312e1043b000b5ff21d4fff4b5fc06203403387fe28837c4d367dbe2c73e1ec5c4e867cc99dca2bf8171aad1498b37bf0d17e5fd64e411386df72667d824e4514530cf6021ca8880154212884f5fdb44a0c8745a4049971de370eb31c959dac4 +Ctrl.hexxcghash = hexxcghash:4688aa9bceb36ddab933675e6963357b2bd0daa5e1984a06fc7f3ff3 +Ctrl.hexsession_id = hexsession_id:fb72bca26e61577066d7c5093ac9281fcf06ae3250b43228b067b86e +Ctrl.type = type:B +Output = 188c477061a597384b1d1e417dc04f7d + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100940a3535b876a90210236f8571e20cb04d287ae7217b95d75c4170e8afea4d290bc41e736cdd1b470b02ce8b74ca4cdaa121bbb3b31df3f2c847455ef21b61e0c966bdb8cf58fb94819108c7feb9551c5dcacc37fec5fe4e9a59818e93ed08f3477632c62304fb2ba05f7fa8611970adb39379ab7159baa3731fb1fceba201a1858635b92d938b195a44612ffddac3f2b5db59b47c9f90b66e76b3e901887b27312e1043b000b5ff21d4fff4b5fc06203403387fe28837c4d367dbe2c73e1ec5c4e867cc99dca2bf8171aad1498b37bf0d17e5fd64e411386df72667d824e4514530cf6021ca8880154212884f5fdb44a0c8745a4049971de370eb31c959dac4 +Ctrl.hexxcghash = hexxcghash:4688aa9bceb36ddab933675e6963357b2bd0daa5e1984a06fc7f3ff3 +Ctrl.hexsession_id = hexsession_id:fb72bca26e61577066d7c5093ac9281fcf06ae3250b43228b067b86e +Ctrl.type = type:C +Output = b309760dd9f0d65c6edcdee3a3457c33 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100940a3535b876a90210236f8571e20cb04d287ae7217b95d75c4170e8afea4d290bc41e736cdd1b470b02ce8b74ca4cdaa121bbb3b31df3f2c847455ef21b61e0c966bdb8cf58fb94819108c7feb9551c5dcacc37fec5fe4e9a59818e93ed08f3477632c62304fb2ba05f7fa8611970adb39379ab7159baa3731fb1fceba201a1858635b92d938b195a44612ffddac3f2b5db59b47c9f90b66e76b3e901887b27312e1043b000b5ff21d4fff4b5fc06203403387fe28837c4d367dbe2c73e1ec5c4e867cc99dca2bf8171aad1498b37bf0d17e5fd64e411386df72667d824e4514530cf6021ca8880154212884f5fdb44a0c8745a4049971de370eb31c959dac4 +Ctrl.hexxcghash = hexxcghash:4688aa9bceb36ddab933675e6963357b2bd0daa5e1984a06fc7f3ff3 +Ctrl.hexsession_id = hexsession_id:fb72bca26e61577066d7c5093ac9281fcf06ae3250b43228b067b86e +Ctrl.type = type:D +Output = 1b8674f603a78f16fb979d6db70f6795 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100940a3535b876a90210236f8571e20cb04d287ae7217b95d75c4170e8afea4d290bc41e736cdd1b470b02ce8b74ca4cdaa121bbb3b31df3f2c847455ef21b61e0c966bdb8cf58fb94819108c7feb9551c5dcacc37fec5fe4e9a59818e93ed08f3477632c62304fb2ba05f7fa8611970adb39379ab7159baa3731fb1fceba201a1858635b92d938b195a44612ffddac3f2b5db59b47c9f90b66e76b3e901887b27312e1043b000b5ff21d4fff4b5fc06203403387fe28837c4d367dbe2c73e1ec5c4e867cc99dca2bf8171aad1498b37bf0d17e5fd64e411386df72667d824e4514530cf6021ca8880154212884f5fdb44a0c8745a4049971de370eb31c959dac4 +Ctrl.hexxcghash = hexxcghash:4688aa9bceb36ddab933675e6963357b2bd0daa5e1984a06fc7f3ff3 +Ctrl.hexsession_id = hexsession_id:fb72bca26e61577066d7c5093ac9281fcf06ae3250b43228b067b86e +Ctrl.type = type:E +Output = d881ac0cf62ecff2eb7d3c8284cfd4b95e003c435f6a3121ab0c65b0 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100940a3535b876a90210236f8571e20cb04d287ae7217b95d75c4170e8afea4d290bc41e736cdd1b470b02ce8b74ca4cdaa121bbb3b31df3f2c847455ef21b61e0c966bdb8cf58fb94819108c7feb9551c5dcacc37fec5fe4e9a59818e93ed08f3477632c62304fb2ba05f7fa8611970adb39379ab7159baa3731fb1fceba201a1858635b92d938b195a44612ffddac3f2b5db59b47c9f90b66e76b3e901887b27312e1043b000b5ff21d4fff4b5fc06203403387fe28837c4d367dbe2c73e1ec5c4e867cc99dca2bf8171aad1498b37bf0d17e5fd64e411386df72667d824e4514530cf6021ca8880154212884f5fdb44a0c8745a4049971de370eb31c959dac4 +Ctrl.hexxcghash = hexxcghash:4688aa9bceb36ddab933675e6963357b2bd0daa5e1984a06fc7f3ff3 +Ctrl.hexsession_id = hexsession_id:fb72bca26e61577066d7c5093ac9281fcf06ae3250b43228b067b86e +Ctrl.type = type:F +Output = 9a7560e7976c7fb0153fc94e51a7dead3b7f8954d1efa7ed6be77858 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000001004b9f55f17de634edb39218b30f224ae8ec64edd6e0c49dd00a52ac11e0a4089ccff931838ce5c02f449ffe33c14fd0a9f11da7d783787a03defc7931ce638a31aa11ddc4351e54480bea637857cae6cf30e03d392737fe2b3f234115903ab43f97d4fdb49fb987650610d9a0ca51b70839d0fc9980de371acc78ac6eaf5f5ac5008eec0f5aedd0f95496f27d2858477fc54d3113fe7884047596d5705d1dd974875872fc7c9111bdc5da73b317331c543f60687fc1ecb3f3853787a64fd94335b570a99fe2544acde49f99b96ef473dbcb16315b9e7ee8c3a20feb36636c1fa39567c2efd2b7827e38ab31607f6a3cff1fc7edf8612380e4af93c620bcd6ac36 +Ctrl.hexxcghash = hexxcghash:0d18d069225d0db81b8bb979635dc9e89999a74ad6b02022189150fd +Ctrl.hexsession_id = hexsession_id:1f42aa7a240d8b412fc26bd18f85ebefe59641d19a1e5e3681560a2c +Ctrl.type = type:A +Output = b842e2900a8c1f7d7c3fa465d46142fa + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000001004b9f55f17de634edb39218b30f224ae8ec64edd6e0c49dd00a52ac11e0a4089ccff931838ce5c02f449ffe33c14fd0a9f11da7d783787a03defc7931ce638a31aa11ddc4351e54480bea637857cae6cf30e03d392737fe2b3f234115903ab43f97d4fdb49fb987650610d9a0ca51b70839d0fc9980de371acc78ac6eaf5f5ac5008eec0f5aedd0f95496f27d2858477fc54d3113fe7884047596d5705d1dd974875872fc7c9111bdc5da73b317331c543f60687fc1ecb3f3853787a64fd94335b570a99fe2544acde49f99b96ef473dbcb16315b9e7ee8c3a20feb36636c1fa39567c2efd2b7827e38ab31607f6a3cff1fc7edf8612380e4af93c620bcd6ac36 +Ctrl.hexxcghash = hexxcghash:0d18d069225d0db81b8bb979635dc9e89999a74ad6b02022189150fd +Ctrl.hexsession_id = hexsession_id:1f42aa7a240d8b412fc26bd18f85ebefe59641d19a1e5e3681560a2c +Ctrl.type = type:B +Output = 5e96f771c176fafd18d4aa0bc07dc5d5 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000001004b9f55f17de634edb39218b30f224ae8ec64edd6e0c49dd00a52ac11e0a4089ccff931838ce5c02f449ffe33c14fd0a9f11da7d783787a03defc7931ce638a31aa11ddc4351e54480bea637857cae6cf30e03d392737fe2b3f234115903ab43f97d4fdb49fb987650610d9a0ca51b70839d0fc9980de371acc78ac6eaf5f5ac5008eec0f5aedd0f95496f27d2858477fc54d3113fe7884047596d5705d1dd974875872fc7c9111bdc5da73b317331c543f60687fc1ecb3f3853787a64fd94335b570a99fe2544acde49f99b96ef473dbcb16315b9e7ee8c3a20feb36636c1fa39567c2efd2b7827e38ab31607f6a3cff1fc7edf8612380e4af93c620bcd6ac36 +Ctrl.hexxcghash = hexxcghash:0d18d069225d0db81b8bb979635dc9e89999a74ad6b02022189150fd +Ctrl.hexsession_id = hexsession_id:1f42aa7a240d8b412fc26bd18f85ebefe59641d19a1e5e3681560a2c +Ctrl.type = type:C +Output = fe5fca0a03e6f8ac95ba4e882c64fb8c + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000001004b9f55f17de634edb39218b30f224ae8ec64edd6e0c49dd00a52ac11e0a4089ccff931838ce5c02f449ffe33c14fd0a9f11da7d783787a03defc7931ce638a31aa11ddc4351e54480bea637857cae6cf30e03d392737fe2b3f234115903ab43f97d4fdb49fb987650610d9a0ca51b70839d0fc9980de371acc78ac6eaf5f5ac5008eec0f5aedd0f95496f27d2858477fc54d3113fe7884047596d5705d1dd974875872fc7c9111bdc5da73b317331c543f60687fc1ecb3f3853787a64fd94335b570a99fe2544acde49f99b96ef473dbcb16315b9e7ee8c3a20feb36636c1fa39567c2efd2b7827e38ab31607f6a3cff1fc7edf8612380e4af93c620bcd6ac36 +Ctrl.hexxcghash = hexxcghash:0d18d069225d0db81b8bb979635dc9e89999a74ad6b02022189150fd +Ctrl.hexsession_id = hexsession_id:1f42aa7a240d8b412fc26bd18f85ebefe59641d19a1e5e3681560a2c +Ctrl.type = type:D +Output = b952b4e6f2010ebdac7ee10adb90f9ef + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000001004b9f55f17de634edb39218b30f224ae8ec64edd6e0c49dd00a52ac11e0a4089ccff931838ce5c02f449ffe33c14fd0a9f11da7d783787a03defc7931ce638a31aa11ddc4351e54480bea637857cae6cf30e03d392737fe2b3f234115903ab43f97d4fdb49fb987650610d9a0ca51b70839d0fc9980de371acc78ac6eaf5f5ac5008eec0f5aedd0f95496f27d2858477fc54d3113fe7884047596d5705d1dd974875872fc7c9111bdc5da73b317331c543f60687fc1ecb3f3853787a64fd94335b570a99fe2544acde49f99b96ef473dbcb16315b9e7ee8c3a20feb36636c1fa39567c2efd2b7827e38ab31607f6a3cff1fc7edf8612380e4af93c620bcd6ac36 +Ctrl.hexxcghash = hexxcghash:0d18d069225d0db81b8bb979635dc9e89999a74ad6b02022189150fd +Ctrl.hexsession_id = hexsession_id:1f42aa7a240d8b412fc26bd18f85ebefe59641d19a1e5e3681560a2c +Ctrl.type = type:E +Output = 819db930507c1f8e1617dc74e78de9f4abb02b7089d764cb20d14c56 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:000001004b9f55f17de634edb39218b30f224ae8ec64edd6e0c49dd00a52ac11e0a4089ccff931838ce5c02f449ffe33c14fd0a9f11da7d783787a03defc7931ce638a31aa11ddc4351e54480bea637857cae6cf30e03d392737fe2b3f234115903ab43f97d4fdb49fb987650610d9a0ca51b70839d0fc9980de371acc78ac6eaf5f5ac5008eec0f5aedd0f95496f27d2858477fc54d3113fe7884047596d5705d1dd974875872fc7c9111bdc5da73b317331c543f60687fc1ecb3f3853787a64fd94335b570a99fe2544acde49f99b96ef473dbcb16315b9e7ee8c3a20feb36636c1fa39567c2efd2b7827e38ab31607f6a3cff1fc7edf8612380e4af93c620bcd6ac36 +Ctrl.hexxcghash = hexxcghash:0d18d069225d0db81b8bb979635dc9e89999a74ad6b02022189150fd +Ctrl.hexsession_id = hexsession_id:1f42aa7a240d8b412fc26bd18f85ebefe59641d19a1e5e3681560a2c +Ctrl.type = type:F +Output = 79be1ec6ce722e98bca50a25bbca581318b6227c9fd346d67602958f + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100a0216e73007c1b53dba18acb5592ea68ab7719d9fd2f24af3e2968024933a5e68fcb1aa8b187f42972815f12d5f995c15d2d3eab84cfb869db413dcb328d045df23646e65179a53e3cbe1babcd6e6a5e300e33be1f5ed5d7eb1661a0ae6d8e6dd8f156eed726b30df6b9eee7e9457189b140de7671a1c7790938617e1bc95b8ee8bb9229f98be158a569bcb799869c445484d30d6019db44d97dcfd9b47f5a36418e3d5ec88037c172104d44ac6e770cbec415fbfce8ac9257074ca5fe003a4836001c8331f1845c1069d0610a62378e1c32ae512ffa22032f28245ee7ae957348a484bef3d295463b293975d787d45c480903f3eb35dcfd140161606f270177 +Ctrl.hexxcghash = hexxcghash:0f85b7ee92fe1a95c0aa0103f10092f04ba613a37e118f8fbb43e308 +Ctrl.hexsession_id = hexsession_id:25d9a92c96b98ecc31e6aca945899e93607848caf2c332efc03f9a0c +Ctrl.type = type:A +Output = 4d40be7041ac4c74d56d53855fead94f + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100a0216e73007c1b53dba18acb5592ea68ab7719d9fd2f24af3e2968024933a5e68fcb1aa8b187f42972815f12d5f995c15d2d3eab84cfb869db413dcb328d045df23646e65179a53e3cbe1babcd6e6a5e300e33be1f5ed5d7eb1661a0ae6d8e6dd8f156eed726b30df6b9eee7e9457189b140de7671a1c7790938617e1bc95b8ee8bb9229f98be158a569bcb799869c445484d30d6019db44d97dcfd9b47f5a36418e3d5ec88037c172104d44ac6e770cbec415fbfce8ac9257074ca5fe003a4836001c8331f1845c1069d0610a62378e1c32ae512ffa22032f28245ee7ae957348a484bef3d295463b293975d787d45c480903f3eb35dcfd140161606f270177 +Ctrl.hexxcghash = hexxcghash:0f85b7ee92fe1a95c0aa0103f10092f04ba613a37e118f8fbb43e308 +Ctrl.hexsession_id = hexsession_id:25d9a92c96b98ecc31e6aca945899e93607848caf2c332efc03f9a0c +Ctrl.type = type:B +Output = 501781a04c919226a9e2dd6d7a880568 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100a0216e73007c1b53dba18acb5592ea68ab7719d9fd2f24af3e2968024933a5e68fcb1aa8b187f42972815f12d5f995c15d2d3eab84cfb869db413dcb328d045df23646e65179a53e3cbe1babcd6e6a5e300e33be1f5ed5d7eb1661a0ae6d8e6dd8f156eed726b30df6b9eee7e9457189b140de7671a1c7790938617e1bc95b8ee8bb9229f98be158a569bcb799869c445484d30d6019db44d97dcfd9b47f5a36418e3d5ec88037c172104d44ac6e770cbec415fbfce8ac9257074ca5fe003a4836001c8331f1845c1069d0610a62378e1c32ae512ffa22032f28245ee7ae957348a484bef3d295463b293975d787d45c480903f3eb35dcfd140161606f270177 +Ctrl.hexxcghash = hexxcghash:0f85b7ee92fe1a95c0aa0103f10092f04ba613a37e118f8fbb43e308 +Ctrl.hexsession_id = hexsession_id:25d9a92c96b98ecc31e6aca945899e93607848caf2c332efc03f9a0c +Ctrl.type = type:C +Output = fe183f0e31d4bf9ebc9364e19e422385 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100a0216e73007c1b53dba18acb5592ea68ab7719d9fd2f24af3e2968024933a5e68fcb1aa8b187f42972815f12d5f995c15d2d3eab84cfb869db413dcb328d045df23646e65179a53e3cbe1babcd6e6a5e300e33be1f5ed5d7eb1661a0ae6d8e6dd8f156eed726b30df6b9eee7e9457189b140de7671a1c7790938617e1bc95b8ee8bb9229f98be158a569bcb799869c445484d30d6019db44d97dcfd9b47f5a36418e3d5ec88037c172104d44ac6e770cbec415fbfce8ac9257074ca5fe003a4836001c8331f1845c1069d0610a62378e1c32ae512ffa22032f28245ee7ae957348a484bef3d295463b293975d787d45c480903f3eb35dcfd140161606f270177 +Ctrl.hexxcghash = hexxcghash:0f85b7ee92fe1a95c0aa0103f10092f04ba613a37e118f8fbb43e308 +Ctrl.hexsession_id = hexsession_id:25d9a92c96b98ecc31e6aca945899e93607848caf2c332efc03f9a0c +Ctrl.type = type:D +Output = f12c0da703e5bedb2921a0e1795eb62f + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100a0216e73007c1b53dba18acb5592ea68ab7719d9fd2f24af3e2968024933a5e68fcb1aa8b187f42972815f12d5f995c15d2d3eab84cfb869db413dcb328d045df23646e65179a53e3cbe1babcd6e6a5e300e33be1f5ed5d7eb1661a0ae6d8e6dd8f156eed726b30df6b9eee7e9457189b140de7671a1c7790938617e1bc95b8ee8bb9229f98be158a569bcb799869c445484d30d6019db44d97dcfd9b47f5a36418e3d5ec88037c172104d44ac6e770cbec415fbfce8ac9257074ca5fe003a4836001c8331f1845c1069d0610a62378e1c32ae512ffa22032f28245ee7ae957348a484bef3d295463b293975d787d45c480903f3eb35dcfd140161606f270177 +Ctrl.hexxcghash = hexxcghash:0f85b7ee92fe1a95c0aa0103f10092f04ba613a37e118f8fbb43e308 +Ctrl.hexsession_id = hexsession_id:25d9a92c96b98ecc31e6aca945899e93607848caf2c332efc03f9a0c +Ctrl.type = type:E +Output = 1d34b1ae23af48c25db971fe0f95c2fdb4e269ca435b90e0e22ee720 + +KDF = SSHKDF +Ctrl.md = md:SHA224 +Ctrl.hexkey = hexkey:0000010100a0216e73007c1b53dba18acb5592ea68ab7719d9fd2f24af3e2968024933a5e68fcb1aa8b187f42972815f12d5f995c15d2d3eab84cfb869db413dcb328d045df23646e65179a53e3cbe1babcd6e6a5e300e33be1f5ed5d7eb1661a0ae6d8e6dd8f156eed726b30df6b9eee7e9457189b140de7671a1c7790938617e1bc95b8ee8bb9229f98be158a569bcb799869c445484d30d6019db44d97dcfd9b47f5a36418e3d5ec88037c172104d44ac6e770cbec415fbfce8ac9257074ca5fe003a4836001c8331f1845c1069d0610a62378e1c32ae512ffa22032f28245ee7ae957348a484bef3d295463b293975d787d45c480903f3eb35dcfd140161606f270177 +Ctrl.hexxcghash = hexxcghash:0f85b7ee92fe1a95c0aa0103f10092f04ba613a37e118f8fbb43e308 +Ctrl.hexsession_id = hexsession_id:25d9a92c96b98ecc31e6aca945899e93607848caf2c332efc03f9a0c +Ctrl.type = type:F +Output = b77dce4e2211c8e2b4fba841ba45d7f136323999ed9a4d306fa411a8 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100875c551cef526a4a8be1a7df27e9ed354bac9afb71f53dbae905679d14f9faf2469c53457cf80a366be278965ba6255276ca2d9f4a97d271f71e50d8a9ec46253a6a906ac2c5e4f48b27a63ce08d80390a492aa43bad9d882ccac23dac88bcada4b4d426a362083dab6569c54c224dd2d87643aa227693e141ad1630ce13144e +Ctrl.hexxcghash = hexxcghash:0e683fc8a9ed7c2ff02def23b2745ebc99b267daa86a4aa7697239088253f642 +Ctrl.hexsession_id = hexsession_id:0e683fc8a9ed7c2ff02def23b2745ebc99b267daa86a4aa7697239088253f642 +Ctrl.type = type:A +Output = 41ff2ead1683f1e6 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100875c551cef526a4a8be1a7df27e9ed354bac9afb71f53dbae905679d14f9faf2469c53457cf80a366be278965ba6255276ca2d9f4a97d271f71e50d8a9ec46253a6a906ac2c5e4f48b27a63ce08d80390a492aa43bad9d882ccac23dac88bcada4b4d426a362083dab6569c54c224dd2d87643aa227693e141ad1630ce13144e +Ctrl.hexxcghash = hexxcghash:0e683fc8a9ed7c2ff02def23b2745ebc99b267daa86a4aa7697239088253f642 +Ctrl.hexsession_id = hexsession_id:0e683fc8a9ed7c2ff02def23b2745ebc99b267daa86a4aa7697239088253f642 +Ctrl.type = type:B +Output = e619ecfd9edb50cd + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100875c551cef526a4a8be1a7df27e9ed354bac9afb71f53dbae905679d14f9faf2469c53457cf80a366be278965ba6255276ca2d9f4a97d271f71e50d8a9ec46253a6a906ac2c5e4f48b27a63ce08d80390a492aa43bad9d882ccac23dac88bcada4b4d426a362083dab6569c54c224dd2d87643aa227693e141ad1630ce13144e +Ctrl.hexxcghash = hexxcghash:0e683fc8a9ed7c2ff02def23b2745ebc99b267daa86a4aa7697239088253f642 +Ctrl.hexsession_id = hexsession_id:0e683fc8a9ed7c2ff02def23b2745ebc99b267daa86a4aa7697239088253f642 +Ctrl.type = type:C +Output = 4a6314d2f7511bf88fad39fb6892f3f218cafd530e72fe43 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100875c551cef526a4a8be1a7df27e9ed354bac9afb71f53dbae905679d14f9faf2469c53457cf80a366be278965ba6255276ca2d9f4a97d271f71e50d8a9ec46253a6a906ac2c5e4f48b27a63ce08d80390a492aa43bad9d882ccac23dac88bcada4b4d426a362083dab6569c54c224dd2d87643aa227693e141ad1630ce13144e +Ctrl.hexxcghash = hexxcghash:0e683fc8a9ed7c2ff02def23b2745ebc99b267daa86a4aa7697239088253f642 +Ctrl.hexsession_id = hexsession_id:0e683fc8a9ed7c2ff02def23b2745ebc99b267daa86a4aa7697239088253f642 +Ctrl.type = type:D +Output = 084c15fb7f99c65ff134eeb407cee5d540c341dea45a42a5 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100875c551cef526a4a8be1a7df27e9ed354bac9afb71f53dbae905679d14f9faf2469c53457cf80a366be278965ba6255276ca2d9f4a97d271f71e50d8a9ec46253a6a906ac2c5e4f48b27a63ce08d80390a492aa43bad9d882ccac23dac88bcada4b4d426a362083dab6569c54c224dd2d87643aa227693e141ad1630ce13144e +Ctrl.hexxcghash = hexxcghash:0e683fc8a9ed7c2ff02def23b2745ebc99b267daa86a4aa7697239088253f642 +Ctrl.hexsession_id = hexsession_id:0e683fc8a9ed7c2ff02def23b2745ebc99b267daa86a4aa7697239088253f642 +Ctrl.type = type:E +Output = 41ec5a94fecce7707ea156a6ad29239a891621adacbedb8be70675008d6f9274 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100875c551cef526a4a8be1a7df27e9ed354bac9afb71f53dbae905679d14f9faf2469c53457cf80a366be278965ba6255276ca2d9f4a97d271f71e50d8a9ec46253a6a906ac2c5e4f48b27a63ce08d80390a492aa43bad9d882ccac23dac88bcada4b4d426a362083dab6569c54c224dd2d87643aa227693e141ad1630ce13144e +Ctrl.hexxcghash = hexxcghash:0e683fc8a9ed7c2ff02def23b2745ebc99b267daa86a4aa7697239088253f642 +Ctrl.hexsession_id = hexsession_id:0e683fc8a9ed7c2ff02def23b2745ebc99b267daa86a4aa7697239088253f642 +Ctrl.type = type:F +Output = 47d3c20aba60981e47b30533623613ff1cacbcf1642fb4ad86ee712f2aed9af8 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000000800faa172b8c287e372bb236ad34c733695c13d77f882adc0f47e5a7f6a3de07efb101207aa5d665b619826f756591f65310bbd2c92c9384e6c6a67b42dec382fdb24c591d79ff5e47737b0f5b8479694c3adc19401704912bbfec2704d4d5bebbfc1a7fc796e277634e40851851a187ec2d37ed3f351c4596a5a0892916b4c55f +Ctrl.hexxcghash = hexxcghash:a347f5f1e191c35f212c9324d5867efdf83026be62c2b16ae006edb3378d4006 +Ctrl.hexsession_id = hexsession_id:90befcef3ff8f920674a9fab94198cf3fd9dca24a21d3c9dba394daafbc621ed +Ctrl.type = type:A +Output = 99bae6531508705f + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000000800faa172b8c287e372bb236ad34c733695c13d77f882adc0f47e5a7f6a3de07efb101207aa5d665b619826f756591f65310bbd2c92c9384e6c6a67b42dec382fdb24c591d79ff5e47737b0f5b8479694c3adc19401704912bbfec2704d4d5bebbfc1a7fc796e277634e40851851a187ec2d37ed3f351c4596a5a0892916b4c55f +Ctrl.hexxcghash = hexxcghash:a347f5f1e191c35f212c9324d5867efdf83026be62c2b16ae006edb3378d4006 +Ctrl.hexsession_id = hexsession_id:90befcef3ff8f920674a9fab94198cf3fd9dca24a21d3c9dba394daafbc621ed +Ctrl.type = type:B +Output = f25786f02f199737 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000000800faa172b8c287e372bb236ad34c733695c13d77f882adc0f47e5a7f6a3de07efb101207aa5d665b619826f756591f65310bbd2c92c9384e6c6a67b42dec382fdb24c591d79ff5e47737b0f5b8479694c3adc19401704912bbfec2704d4d5bebbfc1a7fc796e277634e40851851a187ec2d37ed3f351c4596a5a0892916b4c55f +Ctrl.hexxcghash = hexxcghash:a347f5f1e191c35f212c9324d5867efdf83026be62c2b16ae006edb3378d4006 +Ctrl.hexsession_id = hexsession_id:90befcef3ff8f920674a9fab94198cf3fd9dca24a21d3c9dba394daafbc621ed +Ctrl.type = type:C +Output = 97621bf882266f905da78cf193fc31f642acbb60957c41b7 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000000800faa172b8c287e372bb236ad34c733695c13d77f882adc0f47e5a7f6a3de07efb101207aa5d665b619826f756591f65310bbd2c92c9384e6c6a67b42dec382fdb24c591d79ff5e47737b0f5b8479694c3adc19401704912bbfec2704d4d5bebbfc1a7fc796e277634e40851851a187ec2d37ed3f351c4596a5a0892916b4c55f +Ctrl.hexxcghash = hexxcghash:a347f5f1e191c35f212c9324d5867efdf83026be62c2b16ae006edb3378d4006 +Ctrl.hexsession_id = hexsession_id:90befcef3ff8f920674a9fab94198cf3fd9dca24a21d3c9dba394daafbc621ed +Ctrl.type = type:D +Output = ad98a86a2386280912efea50f790e800a7758f7dade5d77e + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000000800faa172b8c287e372bb236ad34c733695c13d77f882adc0f47e5a7f6a3de07efb101207aa5d665b619826f756591f65310bbd2c92c9384e6c6a67b42dec382fdb24c591d79ff5e47737b0f5b8479694c3adc19401704912bbfec2704d4d5bebbfc1a7fc796e277634e40851851a187ec2d37ed3f351c4596a5a0892916b4c55f +Ctrl.hexxcghash = hexxcghash:a347f5f1e191c35f212c9324d5867efdf83026be62c2b16ae006edb3378d4006 +Ctrl.hexsession_id = hexsession_id:90befcef3ff8f920674a9fab94198cf3fd9dca24a21d3c9dba394daafbc621ed +Ctrl.type = type:E +Output = f92d052d3cdf34dfc69bc60a489c3a3553f4356596c191931d08fa20551273b3 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000000800faa172b8c287e372bb236ad34c733695c13d77f882adc0f47e5a7f6a3de07efb101207aa5d665b619826f756591f65310bbd2c92c9384e6c6a67b42dec382fdb24c591d79ff5e47737b0f5b8479694c3adc19401704912bbfec2704d4d5bebbfc1a7fc796e277634e40851851a187ec2d37ed3f351c4596a5a0892916b4c55f +Ctrl.hexxcghash = hexxcghash:a347f5f1e191c35f212c9324d5867efdf83026be62c2b16ae006edb3378d4006 +Ctrl.hexsession_id = hexsession_id:90befcef3ff8f920674a9fab94198cf3fd9dca24a21d3c9dba394daafbc621ed +Ctrl.type = type:F +Output = 147a771445123f846d8ae514d7ff9b3c93b2bceb7c7c9500942161b8e2d0110f + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100db8205ad53a96bd4c111ad8dc8dab8196f04557d87a5ac90b1013eec71456ca80f0a59af26f9ac6eb91ee51cd601602fe9467550d1f09f417f94e4df2aa5fb941a33ff7764b4d57bcba77f549959ca4fe5d568ff5d20702fcfef904d07f9182bd9936da1fc63d0b11cd573bc0ed9c4e7bb07b5c77c4214d457ca5b0a4410d7b0 +Ctrl.hexxcghash = hexxcghash:a85aa36aeae3f8a948ffa077509f183f2894b52930a79a06bf8783e501d9cae3 +Ctrl.hexsession_id = hexsession_id:6629bb9f32e259935f946e73543bf65830e78ddab691a8b885f3444f976fd655 +Ctrl.type = type:A +Output = 93da642974d71e52 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100db8205ad53a96bd4c111ad8dc8dab8196f04557d87a5ac90b1013eec71456ca80f0a59af26f9ac6eb91ee51cd601602fe9467550d1f09f417f94e4df2aa5fb941a33ff7764b4d57bcba77f549959ca4fe5d568ff5d20702fcfef904d07f9182bd9936da1fc63d0b11cd573bc0ed9c4e7bb07b5c77c4214d457ca5b0a4410d7b0 +Ctrl.hexxcghash = hexxcghash:a85aa36aeae3f8a948ffa077509f183f2894b52930a79a06bf8783e501d9cae3 +Ctrl.hexsession_id = hexsession_id:6629bb9f32e259935f946e73543bf65830e78ddab691a8b885f3444f976fd655 +Ctrl.type = type:B +Output = df2035ad67457151 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100db8205ad53a96bd4c111ad8dc8dab8196f04557d87a5ac90b1013eec71456ca80f0a59af26f9ac6eb91ee51cd601602fe9467550d1f09f417f94e4df2aa5fb941a33ff7764b4d57bcba77f549959ca4fe5d568ff5d20702fcfef904d07f9182bd9936da1fc63d0b11cd573bc0ed9c4e7bb07b5c77c4214d457ca5b0a4410d7b0 +Ctrl.hexxcghash = hexxcghash:a85aa36aeae3f8a948ffa077509f183f2894b52930a79a06bf8783e501d9cae3 +Ctrl.hexsession_id = hexsession_id:6629bb9f32e259935f946e73543bf65830e78ddab691a8b885f3444f976fd655 +Ctrl.type = type:C +Output = 42067bb0535da6701232a0f39ac7f436535af346c4786af5 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100db8205ad53a96bd4c111ad8dc8dab8196f04557d87a5ac90b1013eec71456ca80f0a59af26f9ac6eb91ee51cd601602fe9467550d1f09f417f94e4df2aa5fb941a33ff7764b4d57bcba77f549959ca4fe5d568ff5d20702fcfef904d07f9182bd9936da1fc63d0b11cd573bc0ed9c4e7bb07b5c77c4214d457ca5b0a4410d7b0 +Ctrl.hexxcghash = hexxcghash:a85aa36aeae3f8a948ffa077509f183f2894b52930a79a06bf8783e501d9cae3 +Ctrl.hexsession_id = hexsession_id:6629bb9f32e259935f946e73543bf65830e78ddab691a8b885f3444f976fd655 +Ctrl.type = type:D +Output = 08a0181a6c373d39540409dafb1b4e2359bc249af33bcfe0 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100db8205ad53a96bd4c111ad8dc8dab8196f04557d87a5ac90b1013eec71456ca80f0a59af26f9ac6eb91ee51cd601602fe9467550d1f09f417f94e4df2aa5fb941a33ff7764b4d57bcba77f549959ca4fe5d568ff5d20702fcfef904d07f9182bd9936da1fc63d0b11cd573bc0ed9c4e7bb07b5c77c4214d457ca5b0a4410d7b0 +Ctrl.hexxcghash = hexxcghash:a85aa36aeae3f8a948ffa077509f183f2894b52930a79a06bf8783e501d9cae3 +Ctrl.hexsession_id = hexsession_id:6629bb9f32e259935f946e73543bf65830e78ddab691a8b885f3444f976fd655 +Ctrl.type = type:E +Output = c043b5aece7cd2685c6dfb3788d7a562d6622d20f6d7e07b38aeb47c649dd99c + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100db8205ad53a96bd4c111ad8dc8dab8196f04557d87a5ac90b1013eec71456ca80f0a59af26f9ac6eb91ee51cd601602fe9467550d1f09f417f94e4df2aa5fb941a33ff7764b4d57bcba77f549959ca4fe5d568ff5d20702fcfef904d07f9182bd9936da1fc63d0b11cd573bc0ed9c4e7bb07b5c77c4214d457ca5b0a4410d7b0 +Ctrl.hexxcghash = hexxcghash:a85aa36aeae3f8a948ffa077509f183f2894b52930a79a06bf8783e501d9cae3 +Ctrl.hexsession_id = hexsession_id:6629bb9f32e259935f946e73543bf65830e78ddab691a8b885f3444f976fd655 +Ctrl.type = type:F +Output = cbe67a93ac758d9f2a6ff580bad5a44bb1a1062c9e20d5c974decb7aa2b0faa0 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100d97164957831bbc57c91e0a5c9ece230b4625d14b9d07decdc971cee28d28c2938d2f8b682bc33bd67458fb90120dd6a2ca5255fbe3daeb0325029e15b5e3135aae5081894da98fb4e4d578890c5a4b6a359097bf5e2c403f77b0398d12795d6c895ed979e792d13f5aeb3cd62799d9a509cb4bd8e2bf5d8b08498abccc0790c +Ctrl.hexxcghash = hexxcghash:81c3e6d1a6aeb3f3fc111a9e1467a7e569b9debbfef48fd31acd0d8b9b50a647 +Ctrl.hexsession_id = hexsession_id:068d4a2ebf66a0a6f75d3e76659c72a7f70630f98872e6f48c45ad862fd9b2a4 +Ctrl.type = type:A +Output = 320e807fab2b10f0 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100d97164957831bbc57c91e0a5c9ece230b4625d14b9d07decdc971cee28d28c2938d2f8b682bc33bd67458fb90120dd6a2ca5255fbe3daeb0325029e15b5e3135aae5081894da98fb4e4d578890c5a4b6a359097bf5e2c403f77b0398d12795d6c895ed979e792d13f5aeb3cd62799d9a509cb4bd8e2bf5d8b08498abccc0790c +Ctrl.hexxcghash = hexxcghash:81c3e6d1a6aeb3f3fc111a9e1467a7e569b9debbfef48fd31acd0d8b9b50a647 +Ctrl.hexsession_id = hexsession_id:068d4a2ebf66a0a6f75d3e76659c72a7f70630f98872e6f48c45ad862fd9b2a4 +Ctrl.type = type:B +Output = 7b8f91be4dcd59b1 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100d97164957831bbc57c91e0a5c9ece230b4625d14b9d07decdc971cee28d28c2938d2f8b682bc33bd67458fb90120dd6a2ca5255fbe3daeb0325029e15b5e3135aae5081894da98fb4e4d578890c5a4b6a359097bf5e2c403f77b0398d12795d6c895ed979e792d13f5aeb3cd62799d9a509cb4bd8e2bf5d8b08498abccc0790c +Ctrl.hexxcghash = hexxcghash:81c3e6d1a6aeb3f3fc111a9e1467a7e569b9debbfef48fd31acd0d8b9b50a647 +Ctrl.hexsession_id = hexsession_id:068d4a2ebf66a0a6f75d3e76659c72a7f70630f98872e6f48c45ad862fd9b2a4 +Ctrl.type = type:C +Output = dec6e67a94b3ddfcd32a24d6026c6951d00b6f4402d32c1a + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100d97164957831bbc57c91e0a5c9ece230b4625d14b9d07decdc971cee28d28c2938d2f8b682bc33bd67458fb90120dd6a2ca5255fbe3daeb0325029e15b5e3135aae5081894da98fb4e4d578890c5a4b6a359097bf5e2c403f77b0398d12795d6c895ed979e792d13f5aeb3cd62799d9a509cb4bd8e2bf5d8b08498abccc0790c +Ctrl.hexxcghash = hexxcghash:81c3e6d1a6aeb3f3fc111a9e1467a7e569b9debbfef48fd31acd0d8b9b50a647 +Ctrl.hexsession_id = hexsession_id:068d4a2ebf66a0a6f75d3e76659c72a7f70630f98872e6f48c45ad862fd9b2a4 +Ctrl.type = type:D +Output = 2ef3cea4588ad928ac3e8874f3e1f613f2d50787495acc32 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100d97164957831bbc57c91e0a5c9ece230b4625d14b9d07decdc971cee28d28c2938d2f8b682bc33bd67458fb90120dd6a2ca5255fbe3daeb0325029e15b5e3135aae5081894da98fb4e4d578890c5a4b6a359097bf5e2c403f77b0398d12795d6c895ed979e792d13f5aeb3cd62799d9a509cb4bd8e2bf5d8b08498abccc0790c +Ctrl.hexxcghash = hexxcghash:81c3e6d1a6aeb3f3fc111a9e1467a7e569b9debbfef48fd31acd0d8b9b50a647 +Ctrl.hexsession_id = hexsession_id:068d4a2ebf66a0a6f75d3e76659c72a7f70630f98872e6f48c45ad862fd9b2a4 +Ctrl.type = type:E +Output = 72f93537328eebeec1b5ca88fedb41bf4d9c6279e4fe8d13c38da72a39739ed8 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100d97164957831bbc57c91e0a5c9ece230b4625d14b9d07decdc971cee28d28c2938d2f8b682bc33bd67458fb90120dd6a2ca5255fbe3daeb0325029e15b5e3135aae5081894da98fb4e4d578890c5a4b6a359097bf5e2c403f77b0398d12795d6c895ed979e792d13f5aeb3cd62799d9a509cb4bd8e2bf5d8b08498abccc0790c +Ctrl.hexxcghash = hexxcghash:81c3e6d1a6aeb3f3fc111a9e1467a7e569b9debbfef48fd31acd0d8b9b50a647 +Ctrl.hexsession_id = hexsession_id:068d4a2ebf66a0a6f75d3e76659c72a7f70630f98872e6f48c45ad862fd9b2a4 +Ctrl.type = type:F +Output = 55dcf2c322b9c94686edbf9314d7c93bd9651e2ebc64f1a299d7176577d65b32 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008001223839219fa4dbaf2b88deaa058bed95793bd6079e670e88eecf0a391ae7ce2d3bf129e11273aad0d0047b84960e6f73fa3de394042b4254c7850fddc7525dcf27fb9bdcafc604626aa25e08c938a27c80ca97a4c1a2662f4e8485e016c75e4f4e6861f5bbd694bbd6492cbffa95128dab52d8a3d0316bcabd5da2c789dd62 +Ctrl.hexxcghash = hexxcghash:7817d37fe11f3499feda39bf21ce7755040a0091e61e8eb585e6299c6673db81 +Ctrl.hexsession_id = hexsession_id:2b7ef879949594c35dbccdba0ba4959e3a2fad446c5ce35666e400b7214fe69e +Ctrl.type = type:A +Output = f4dbc41aa23e1621 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008001223839219fa4dbaf2b88deaa058bed95793bd6079e670e88eecf0a391ae7ce2d3bf129e11273aad0d0047b84960e6f73fa3de394042b4254c7850fddc7525dcf27fb9bdcafc604626aa25e08c938a27c80ca97a4c1a2662f4e8485e016c75e4f4e6861f5bbd694bbd6492cbffa95128dab52d8a3d0316bcabd5da2c789dd62 +Ctrl.hexxcghash = hexxcghash:7817d37fe11f3499feda39bf21ce7755040a0091e61e8eb585e6299c6673db81 +Ctrl.hexsession_id = hexsession_id:2b7ef879949594c35dbccdba0ba4959e3a2fad446c5ce35666e400b7214fe69e +Ctrl.type = type:B +Output = e53b40c511180817 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008001223839219fa4dbaf2b88deaa058bed95793bd6079e670e88eecf0a391ae7ce2d3bf129e11273aad0d0047b84960e6f73fa3de394042b4254c7850fddc7525dcf27fb9bdcafc604626aa25e08c938a27c80ca97a4c1a2662f4e8485e016c75e4f4e6861f5bbd694bbd6492cbffa95128dab52d8a3d0316bcabd5da2c789dd62 +Ctrl.hexxcghash = hexxcghash:7817d37fe11f3499feda39bf21ce7755040a0091e61e8eb585e6299c6673db81 +Ctrl.hexsession_id = hexsession_id:2b7ef879949594c35dbccdba0ba4959e3a2fad446c5ce35666e400b7214fe69e +Ctrl.type = type:C +Output = 70fed9412989cf5de908ad429cb92065fd5ccc081477abba + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008001223839219fa4dbaf2b88deaa058bed95793bd6079e670e88eecf0a391ae7ce2d3bf129e11273aad0d0047b84960e6f73fa3de394042b4254c7850fddc7525dcf27fb9bdcafc604626aa25e08c938a27c80ca97a4c1a2662f4e8485e016c75e4f4e6861f5bbd694bbd6492cbffa95128dab52d8a3d0316bcabd5da2c789dd62 +Ctrl.hexxcghash = hexxcghash:7817d37fe11f3499feda39bf21ce7755040a0091e61e8eb585e6299c6673db81 +Ctrl.hexsession_id = hexsession_id:2b7ef879949594c35dbccdba0ba4959e3a2fad446c5ce35666e400b7214fe69e +Ctrl.type = type:D +Output = 3afdb0b4b4bc13e8731bb92e541b7d82a0b20d8878ce184b + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008001223839219fa4dbaf2b88deaa058bed95793bd6079e670e88eecf0a391ae7ce2d3bf129e11273aad0d0047b84960e6f73fa3de394042b4254c7850fddc7525dcf27fb9bdcafc604626aa25e08c938a27c80ca97a4c1a2662f4e8485e016c75e4f4e6861f5bbd694bbd6492cbffa95128dab52d8a3d0316bcabd5da2c789dd62 +Ctrl.hexxcghash = hexxcghash:7817d37fe11f3499feda39bf21ce7755040a0091e61e8eb585e6299c6673db81 +Ctrl.hexsession_id = hexsession_id:2b7ef879949594c35dbccdba0ba4959e3a2fad446c5ce35666e400b7214fe69e +Ctrl.type = type:E +Output = 59937f257aeef0806038543ced541990e5c2243881818edf2c522a54b64e9e93 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008001223839219fa4dbaf2b88deaa058bed95793bd6079e670e88eecf0a391ae7ce2d3bf129e11273aad0d0047b84960e6f73fa3de394042b4254c7850fddc7525dcf27fb9bdcafc604626aa25e08c938a27c80ca97a4c1a2662f4e8485e016c75e4f4e6861f5bbd694bbd6492cbffa95128dab52d8a3d0316bcabd5da2c789dd62 +Ctrl.hexxcghash = hexxcghash:7817d37fe11f3499feda39bf21ce7755040a0091e61e8eb585e6299c6673db81 +Ctrl.hexsession_id = hexsession_id:2b7ef879949594c35dbccdba0ba4959e3a2fad446c5ce35666e400b7214fe69e +Ctrl.type = type:F +Output = 187532105293274b841918e3ab51f5dd0453d4331e85f4e06b775dbce4979cdd + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000000807d3783ce1f598c3279e8a33f3e8bfe9c255979034f43d107bb3dd6cb21ff67d945594929f2fd7bef74679be81d3ad6c1b472293d1060242d720ed2fb250fde838064eec64d75cb9d5d2ec09c9e67e3bf48c0d0a92577f8bf6e05cfcbaafcd243369f30f14d24a4ad2c1aaff528e03198227135d26839fd45cd60678ae41307c2 +Ctrl.hexxcghash = hexxcghash:2efc2c1be24e1259105757bbd2c518d62ae52400451347aa90e2aab00bc58864 +Ctrl.hexsession_id = hexsession_id:2df7d0dbcb1beb17ef1a8b9884c9d6d8833b5039797a5fce61e7a2490405b323 +Ctrl.type = type:A +Output = 3cc220d5bb9b5346 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000000807d3783ce1f598c3279e8a33f3e8bfe9c255979034f43d107bb3dd6cb21ff67d945594929f2fd7bef74679be81d3ad6c1b472293d1060242d720ed2fb250fde838064eec64d75cb9d5d2ec09c9e67e3bf48c0d0a92577f8bf6e05cfcbaafcd243369f30f14d24a4ad2c1aaff528e03198227135d26839fd45cd60678ae41307c2 +Ctrl.hexxcghash = hexxcghash:2efc2c1be24e1259105757bbd2c518d62ae52400451347aa90e2aab00bc58864 +Ctrl.hexsession_id = hexsession_id:2df7d0dbcb1beb17ef1a8b9884c9d6d8833b5039797a5fce61e7a2490405b323 +Ctrl.type = type:B +Output = 051e3c79aede7e41 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000000807d3783ce1f598c3279e8a33f3e8bfe9c255979034f43d107bb3dd6cb21ff67d945594929f2fd7bef74679be81d3ad6c1b472293d1060242d720ed2fb250fde838064eec64d75cb9d5d2ec09c9e67e3bf48c0d0a92577f8bf6e05cfcbaafcd243369f30f14d24a4ad2c1aaff528e03198227135d26839fd45cd60678ae41307c2 +Ctrl.hexxcghash = hexxcghash:2efc2c1be24e1259105757bbd2c518d62ae52400451347aa90e2aab00bc58864 +Ctrl.hexsession_id = hexsession_id:2df7d0dbcb1beb17ef1a8b9884c9d6d8833b5039797a5fce61e7a2490405b323 +Ctrl.type = type:C +Output = 44c2b4725965ee9a2bce58d38e2e9a778263c415b21a25be + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000000807d3783ce1f598c3279e8a33f3e8bfe9c255979034f43d107bb3dd6cb21ff67d945594929f2fd7bef74679be81d3ad6c1b472293d1060242d720ed2fb250fde838064eec64d75cb9d5d2ec09c9e67e3bf48c0d0a92577f8bf6e05cfcbaafcd243369f30f14d24a4ad2c1aaff528e03198227135d26839fd45cd60678ae41307c2 +Ctrl.hexxcghash = hexxcghash:2efc2c1be24e1259105757bbd2c518d62ae52400451347aa90e2aab00bc58864 +Ctrl.hexsession_id = hexsession_id:2df7d0dbcb1beb17ef1a8b9884c9d6d8833b5039797a5fce61e7a2490405b323 +Ctrl.type = type:D +Output = d5de7a801956b934d820f9aa51bf1dae2a7aec7ce5ce4e50 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000000807d3783ce1f598c3279e8a33f3e8bfe9c255979034f43d107bb3dd6cb21ff67d945594929f2fd7bef74679be81d3ad6c1b472293d1060242d720ed2fb250fde838064eec64d75cb9d5d2ec09c9e67e3bf48c0d0a92577f8bf6e05cfcbaafcd243369f30f14d24a4ad2c1aaff528e03198227135d26839fd45cd60678ae41307c2 +Ctrl.hexxcghash = hexxcghash:2efc2c1be24e1259105757bbd2c518d62ae52400451347aa90e2aab00bc58864 +Ctrl.hexsession_id = hexsession_id:2df7d0dbcb1beb17ef1a8b9884c9d6d8833b5039797a5fce61e7a2490405b323 +Ctrl.type = type:E +Output = 7d2039a6505e3220535fde0ff71464f3971580f50711356760b225fc3053fc19 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000000807d3783ce1f598c3279e8a33f3e8bfe9c255979034f43d107bb3dd6cb21ff67d945594929f2fd7bef74679be81d3ad6c1b472293d1060242d720ed2fb250fde838064eec64d75cb9d5d2ec09c9e67e3bf48c0d0a92577f8bf6e05cfcbaafcd243369f30f14d24a4ad2c1aaff528e03198227135d26839fd45cd60678ae41307c2 +Ctrl.hexxcghash = hexxcghash:2efc2c1be24e1259105757bbd2c518d62ae52400451347aa90e2aab00bc58864 +Ctrl.hexsession_id = hexsession_id:2df7d0dbcb1beb17ef1a8b9884c9d6d8833b5039797a5fce61e7a2490405b323 +Ctrl.type = type:F +Output = b0972348a031ef2e87d42611e53cf0c4782d759ecdcc1390318eb11e1925ac35 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100b44b386751753bf1fbfe100b11761766aaef16b2786462ba9561d3b493581254a1c1556ef611fec70146a864f8860c6317f294d06aec94129740c78035411992492825554362d25bf2c43a2e8a4d22e5d4777c593c8686966684b95e8e4535fc0b4a0e53264f22cf568469e829a303cdd06c09d8f74ccef6b6028fde782a7285 +Ctrl.hexxcghash = hexxcghash:8c691585cffd38a6ad0fd751da66c1a0f2b46ad6c12348b5a89cd24f39e76517 +Ctrl.hexsession_id = hexsession_id:2d93238fe20a860db2fb8fb4c5a0525a2f8817abbb53773e4af9fb366a213506 +Ctrl.type = type:A +Output = cdb047beecd92d84 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100b44b386751753bf1fbfe100b11761766aaef16b2786462ba9561d3b493581254a1c1556ef611fec70146a864f8860c6317f294d06aec94129740c78035411992492825554362d25bf2c43a2e8a4d22e5d4777c593c8686966684b95e8e4535fc0b4a0e53264f22cf568469e829a303cdd06c09d8f74ccef6b6028fde782a7285 +Ctrl.hexxcghash = hexxcghash:8c691585cffd38a6ad0fd751da66c1a0f2b46ad6c12348b5a89cd24f39e76517 +Ctrl.hexsession_id = hexsession_id:2d93238fe20a860db2fb8fb4c5a0525a2f8817abbb53773e4af9fb366a213506 +Ctrl.type = type:B +Output = ef378e894d8f675e + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100b44b386751753bf1fbfe100b11761766aaef16b2786462ba9561d3b493581254a1c1556ef611fec70146a864f8860c6317f294d06aec94129740c78035411992492825554362d25bf2c43a2e8a4d22e5d4777c593c8686966684b95e8e4535fc0b4a0e53264f22cf568469e829a303cdd06c09d8f74ccef6b6028fde782a7285 +Ctrl.hexxcghash = hexxcghash:8c691585cffd38a6ad0fd751da66c1a0f2b46ad6c12348b5a89cd24f39e76517 +Ctrl.hexsession_id = hexsession_id:2d93238fe20a860db2fb8fb4c5a0525a2f8817abbb53773e4af9fb366a213506 +Ctrl.type = type:C +Output = 23ee42a437801e87348b3999bde76147a8731e318db57752 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100b44b386751753bf1fbfe100b11761766aaef16b2786462ba9561d3b493581254a1c1556ef611fec70146a864f8860c6317f294d06aec94129740c78035411992492825554362d25bf2c43a2e8a4d22e5d4777c593c8686966684b95e8e4535fc0b4a0e53264f22cf568469e829a303cdd06c09d8f74ccef6b6028fde782a7285 +Ctrl.hexxcghash = hexxcghash:8c691585cffd38a6ad0fd751da66c1a0f2b46ad6c12348b5a89cd24f39e76517 +Ctrl.hexsession_id = hexsession_id:2d93238fe20a860db2fb8fb4c5a0525a2f8817abbb53773e4af9fb366a213506 +Ctrl.type = type:D +Output = a3f50e3d14498f15e1f111cc929648011d6abfb58e90df1c + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100b44b386751753bf1fbfe100b11761766aaef16b2786462ba9561d3b493581254a1c1556ef611fec70146a864f8860c6317f294d06aec94129740c78035411992492825554362d25bf2c43a2e8a4d22e5d4777c593c8686966684b95e8e4535fc0b4a0e53264f22cf568469e829a303cdd06c09d8f74ccef6b6028fde782a7285 +Ctrl.hexxcghash = hexxcghash:8c691585cffd38a6ad0fd751da66c1a0f2b46ad6c12348b5a89cd24f39e76517 +Ctrl.hexsession_id = hexsession_id:2d93238fe20a860db2fb8fb4c5a0525a2f8817abbb53773e4af9fb366a213506 +Ctrl.type = type:E +Output = fb6a020561e46e521344cb671a50175afd63ded91eedaa1b2879c3a63761674d + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100b44b386751753bf1fbfe100b11761766aaef16b2786462ba9561d3b493581254a1c1556ef611fec70146a864f8860c6317f294d06aec94129740c78035411992492825554362d25bf2c43a2e8a4d22e5d4777c593c8686966684b95e8e4535fc0b4a0e53264f22cf568469e829a303cdd06c09d8f74ccef6b6028fde782a7285 +Ctrl.hexxcghash = hexxcghash:8c691585cffd38a6ad0fd751da66c1a0f2b46ad6c12348b5a89cd24f39e76517 +Ctrl.hexsession_id = hexsession_id:2d93238fe20a860db2fb8fb4c5a0525a2f8817abbb53773e4af9fb366a213506 +Ctrl.type = type:F +Output = 567a79e7c4b10d62a420ce2ea740661c08d9459ed636ecb4edebcedb17b0baba + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100b3462ee942f026de0922ab88b6ebf5ee2c968a4e12cbf374593f3542c6eb619ea1ec29b958c65a83305c37008de3b691ec020cc989e6c5393dae36bbb3bf0d1a29ed0bab6d23f60e63e277119b7a4c0a5fa96d9c043a5ace58034052ffb71b8bf0eaea8a6bc9a9834c512d7470122c71908a44ef7f3227b512f6971c82436e96 +Ctrl.hexxcghash = hexxcghash:3d5d7f742b08976755e2eb8457f1d9401d918bbf7e201fe0742f00ae799082df +Ctrl.hexsession_id = hexsession_id:50bcad2970e07c3ad3f14db05d451d77304fe70927ba26815fcaf1f3a723af91 +Ctrl.type = type:A +Output = 1f9e7ad5592ac73d + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100b3462ee942f026de0922ab88b6ebf5ee2c968a4e12cbf374593f3542c6eb619ea1ec29b958c65a83305c37008de3b691ec020cc989e6c5393dae36bbb3bf0d1a29ed0bab6d23f60e63e277119b7a4c0a5fa96d9c043a5ace58034052ffb71b8bf0eaea8a6bc9a9834c512d7470122c71908a44ef7f3227b512f6971c82436e96 +Ctrl.hexxcghash = hexxcghash:3d5d7f742b08976755e2eb8457f1d9401d918bbf7e201fe0742f00ae799082df +Ctrl.hexsession_id = hexsession_id:50bcad2970e07c3ad3f14db05d451d77304fe70927ba26815fcaf1f3a723af91 +Ctrl.type = type:B +Output = 15b254fe3510dd77 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100b3462ee942f026de0922ab88b6ebf5ee2c968a4e12cbf374593f3542c6eb619ea1ec29b958c65a83305c37008de3b691ec020cc989e6c5393dae36bbb3bf0d1a29ed0bab6d23f60e63e277119b7a4c0a5fa96d9c043a5ace58034052ffb71b8bf0eaea8a6bc9a9834c512d7470122c71908a44ef7f3227b512f6971c82436e96 +Ctrl.hexxcghash = hexxcghash:3d5d7f742b08976755e2eb8457f1d9401d918bbf7e201fe0742f00ae799082df +Ctrl.hexsession_id = hexsession_id:50bcad2970e07c3ad3f14db05d451d77304fe70927ba26815fcaf1f3a723af91 +Ctrl.type = type:C +Output = 88eadd5802e1a748284684438eb1b1bdc9b20ea30c59950d + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100b3462ee942f026de0922ab88b6ebf5ee2c968a4e12cbf374593f3542c6eb619ea1ec29b958c65a83305c37008de3b691ec020cc989e6c5393dae36bbb3bf0d1a29ed0bab6d23f60e63e277119b7a4c0a5fa96d9c043a5ace58034052ffb71b8bf0eaea8a6bc9a9834c512d7470122c71908a44ef7f3227b512f6971c82436e96 +Ctrl.hexxcghash = hexxcghash:3d5d7f742b08976755e2eb8457f1d9401d918bbf7e201fe0742f00ae799082df +Ctrl.hexsession_id = hexsession_id:50bcad2970e07c3ad3f14db05d451d77304fe70927ba26815fcaf1f3a723af91 +Ctrl.type = type:D +Output = 277c2c4ad3d4a3bec4bdc5329bb5f9d4e39aa06b1e115e77 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100b3462ee942f026de0922ab88b6ebf5ee2c968a4e12cbf374593f3542c6eb619ea1ec29b958c65a83305c37008de3b691ec020cc989e6c5393dae36bbb3bf0d1a29ed0bab6d23f60e63e277119b7a4c0a5fa96d9c043a5ace58034052ffb71b8bf0eaea8a6bc9a9834c512d7470122c71908a44ef7f3227b512f6971c82436e96 +Ctrl.hexxcghash = hexxcghash:3d5d7f742b08976755e2eb8457f1d9401d918bbf7e201fe0742f00ae799082df +Ctrl.hexsession_id = hexsession_id:50bcad2970e07c3ad3f14db05d451d77304fe70927ba26815fcaf1f3a723af91 +Ctrl.type = type:E +Output = 090d2f273a690ed1d67dd9919c34385b18a661f8657b84bef6832f2396771979 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100b3462ee942f026de0922ab88b6ebf5ee2c968a4e12cbf374593f3542c6eb619ea1ec29b958c65a83305c37008de3b691ec020cc989e6c5393dae36bbb3bf0d1a29ed0bab6d23f60e63e277119b7a4c0a5fa96d9c043a5ace58034052ffb71b8bf0eaea8a6bc9a9834c512d7470122c71908a44ef7f3227b512f6971c82436e96 +Ctrl.hexxcghash = hexxcghash:3d5d7f742b08976755e2eb8457f1d9401d918bbf7e201fe0742f00ae799082df +Ctrl.hexsession_id = hexsession_id:50bcad2970e07c3ad3f14db05d451d77304fe70927ba26815fcaf1f3a723af91 +Ctrl.type = type:F +Output = 1f3082fa5ac8ec565595c4c5b8a7ddbba88ed4936fca913bba6a8715dc856f30 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100831889c603d4dc01d0d9f19f07ccadb6a9fa7662305277d59efbc872f38325de2ec2151f58649f5fd15ff3a099f0191dca69be0b9c88ef729fe74af849cc8e7479f8a5406842af88e12167607103cda449a1394c86b2c21d4083cdee216f74078d4e878b352df901727870815528ae99f74f25c21a8a39772940d871badb39a6 +Ctrl.hexxcghash = hexxcghash:f77992d066bc305419a6c1b0879008856287b95ec20c2b1be5a5c8189cadbbb1 +Ctrl.hexsession_id = hexsession_id:15bd2e8c86d23eace4a581377ef8a3f5266dbd081cfcd01ab2b68506438228a2 +Ctrl.type = type:A +Output = 3aa08d67c81310b7 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100831889c603d4dc01d0d9f19f07ccadb6a9fa7662305277d59efbc872f38325de2ec2151f58649f5fd15ff3a099f0191dca69be0b9c88ef729fe74af849cc8e7479f8a5406842af88e12167607103cda449a1394c86b2c21d4083cdee216f74078d4e878b352df901727870815528ae99f74f25c21a8a39772940d871badb39a6 +Ctrl.hexxcghash = hexxcghash:f77992d066bc305419a6c1b0879008856287b95ec20c2b1be5a5c8189cadbbb1 +Ctrl.hexsession_id = hexsession_id:15bd2e8c86d23eace4a581377ef8a3f5266dbd081cfcd01ab2b68506438228a2 +Ctrl.type = type:B +Output = cf46596878a17a87 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100831889c603d4dc01d0d9f19f07ccadb6a9fa7662305277d59efbc872f38325de2ec2151f58649f5fd15ff3a099f0191dca69be0b9c88ef729fe74af849cc8e7479f8a5406842af88e12167607103cda449a1394c86b2c21d4083cdee216f74078d4e878b352df901727870815528ae99f74f25c21a8a39772940d871badb39a6 +Ctrl.hexxcghash = hexxcghash:f77992d066bc305419a6c1b0879008856287b95ec20c2b1be5a5c8189cadbbb1 +Ctrl.hexsession_id = hexsession_id:15bd2e8c86d23eace4a581377ef8a3f5266dbd081cfcd01ab2b68506438228a2 +Ctrl.type = type:C +Output = 871db438b8b33c2102ddab0c1f7be51ee4c2cbdf52a01a58 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100831889c603d4dc01d0d9f19f07ccadb6a9fa7662305277d59efbc872f38325de2ec2151f58649f5fd15ff3a099f0191dca69be0b9c88ef729fe74af849cc8e7479f8a5406842af88e12167607103cda449a1394c86b2c21d4083cdee216f74078d4e878b352df901727870815528ae99f74f25c21a8a39772940d871badb39a6 +Ctrl.hexxcghash = hexxcghash:f77992d066bc305419a6c1b0879008856287b95ec20c2b1be5a5c8189cadbbb1 +Ctrl.hexsession_id = hexsession_id:15bd2e8c86d23eace4a581377ef8a3f5266dbd081cfcd01ab2b68506438228a2 +Ctrl.type = type:D +Output = 04ac13599b84c22be0f1e5f7b96def31598e6ad36be412e8 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100831889c603d4dc01d0d9f19f07ccadb6a9fa7662305277d59efbc872f38325de2ec2151f58649f5fd15ff3a099f0191dca69be0b9c88ef729fe74af849cc8e7479f8a5406842af88e12167607103cda449a1394c86b2c21d4083cdee216f74078d4e878b352df901727870815528ae99f74f25c21a8a39772940d871badb39a6 +Ctrl.hexxcghash = hexxcghash:f77992d066bc305419a6c1b0879008856287b95ec20c2b1be5a5c8189cadbbb1 +Ctrl.hexsession_id = hexsession_id:15bd2e8c86d23eace4a581377ef8a3f5266dbd081cfcd01ab2b68506438228a2 +Ctrl.type = type:E +Output = f00c83a8afb5d1793749d4aae825b80e67ccd7f67e08f572222ccf42126ea2f0 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000008100831889c603d4dc01d0d9f19f07ccadb6a9fa7662305277d59efbc872f38325de2ec2151f58649f5fd15ff3a099f0191dca69be0b9c88ef729fe74af849cc8e7479f8a5406842af88e12167607103cda449a1394c86b2c21d4083cdee216f74078d4e878b352df901727870815528ae99f74f25c21a8a39772940d871badb39a6 +Ctrl.hexxcghash = hexxcghash:f77992d066bc305419a6c1b0879008856287b95ec20c2b1be5a5c8189cadbbb1 +Ctrl.hexsession_id = hexsession_id:15bd2e8c86d23eace4a581377ef8a3f5266dbd081cfcd01ab2b68506438228a2 +Ctrl.type = type:F +Output = df0570749d67136095b0dda6d461676b7eeb9a386f126306d436cab16dfd1b3c + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000081008fa89f9f89a2a2417a9461451a4b97343afd46552a8700e588638b0ef0ae568ffbaee2727ae3ae96271aa33b8439c1a4bad313ea42605ae0902817d91577b6a3c72fc576ee29544c1d6323bad205317d2265c533d82ed27a2dea64a8545c64e9772e81ce1cbfe265a51acfae74b72d5365366263541e50a567c3ffa594eac071 +Ctrl.hexxcghash = hexxcghash:4d071ee398757c548fa72f77ed94d5b158a311d3655bb7a6e324c4e2a26be84f +Ctrl.hexsession_id = hexsession_id:d1d34becf667002ace16be10726cab3c7d18ce7414759f62a83cb4cfaaed77f4 +Ctrl.type = type:A +Output = fad800cbf8975a01 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000081008fa89f9f89a2a2417a9461451a4b97343afd46552a8700e588638b0ef0ae568ffbaee2727ae3ae96271aa33b8439c1a4bad313ea42605ae0902817d91577b6a3c72fc576ee29544c1d6323bad205317d2265c533d82ed27a2dea64a8545c64e9772e81ce1cbfe265a51acfae74b72d5365366263541e50a567c3ffa594eac071 +Ctrl.hexxcghash = hexxcghash:4d071ee398757c548fa72f77ed94d5b158a311d3655bb7a6e324c4e2a26be84f +Ctrl.hexsession_id = hexsession_id:d1d34becf667002ace16be10726cab3c7d18ce7414759f62a83cb4cfaaed77f4 +Ctrl.type = type:B +Output = 679a118bda1f15a9 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000081008fa89f9f89a2a2417a9461451a4b97343afd46552a8700e588638b0ef0ae568ffbaee2727ae3ae96271aa33b8439c1a4bad313ea42605ae0902817d91577b6a3c72fc576ee29544c1d6323bad205317d2265c533d82ed27a2dea64a8545c64e9772e81ce1cbfe265a51acfae74b72d5365366263541e50a567c3ffa594eac071 +Ctrl.hexxcghash = hexxcghash:4d071ee398757c548fa72f77ed94d5b158a311d3655bb7a6e324c4e2a26be84f +Ctrl.hexsession_id = hexsession_id:d1d34becf667002ace16be10726cab3c7d18ce7414759f62a83cb4cfaaed77f4 +Ctrl.type = type:C +Output = 5193e9b3b10b7939b79b967b98e6cf3396758eaf8263edf2 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000081008fa89f9f89a2a2417a9461451a4b97343afd46552a8700e588638b0ef0ae568ffbaee2727ae3ae96271aa33b8439c1a4bad313ea42605ae0902817d91577b6a3c72fc576ee29544c1d6323bad205317d2265c533d82ed27a2dea64a8545c64e9772e81ce1cbfe265a51acfae74b72d5365366263541e50a567c3ffa594eac071 +Ctrl.hexxcghash = hexxcghash:4d071ee398757c548fa72f77ed94d5b158a311d3655bb7a6e324c4e2a26be84f +Ctrl.hexsession_id = hexsession_id:d1d34becf667002ace16be10726cab3c7d18ce7414759f62a83cb4cfaaed77f4 +Ctrl.type = type:D +Output = 3f5de8bec6d737836d3a91480ac76c19d0a90bc146f02d5c + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000081008fa89f9f89a2a2417a9461451a4b97343afd46552a8700e588638b0ef0ae568ffbaee2727ae3ae96271aa33b8439c1a4bad313ea42605ae0902817d91577b6a3c72fc576ee29544c1d6323bad205317d2265c533d82ed27a2dea64a8545c64e9772e81ce1cbfe265a51acfae74b72d5365366263541e50a567c3ffa594eac071 +Ctrl.hexxcghash = hexxcghash:4d071ee398757c548fa72f77ed94d5b158a311d3655bb7a6e324c4e2a26be84f +Ctrl.hexsession_id = hexsession_id:d1d34becf667002ace16be10726cab3c7d18ce7414759f62a83cb4cfaaed77f4 +Ctrl.type = type:E +Output = ce7be4fffd0ffd09ff45889d10c7be0edf922422d01cb71b737c6149bb1a2d05 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000081008fa89f9f89a2a2417a9461451a4b97343afd46552a8700e588638b0ef0ae568ffbaee2727ae3ae96271aa33b8439c1a4bad313ea42605ae0902817d91577b6a3c72fc576ee29544c1d6323bad205317d2265c533d82ed27a2dea64a8545c64e9772e81ce1cbfe265a51acfae74b72d5365366263541e50a567c3ffa594eac071 +Ctrl.hexxcghash = hexxcghash:4d071ee398757c548fa72f77ed94d5b158a311d3655bb7a6e324c4e2a26be84f +Ctrl.hexsession_id = hexsession_id:d1d34becf667002ace16be10726cab3c7d18ce7414759f62a83cb4cfaaed77f4 +Ctrl.type = type:F +Output = 60f413c9bcc42dcf0acc53d513dd8bc703f7e5d668f4e043f13028dcf40880b2 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001006ac382eaaca093e125e25c24bebc84640c11987507344b5c739ceb84a9e0b222b9a8b51c839e5ebe49cfadbfb39599764ed522099dc912751950dc7dc97fbdc06328b68f22781fd315af568009a5509e5b87a11bf527c056daffd82ab6cbc25cca37143459e7bc63bcde52757adeb7df01cf12173f1fef8102ec5ab142c213dd9d30696278a8d8bc32dde9592d28c078c6d92b947d825acaab6494846a49de24b9623f4889e8adc38e8c669effef176040ad945e90a7d3eec15efeee78ae71043c96511103a16ba7caf0acd0642efdbe809934faa1a5f1bd11043649b25ccd1fee2e38815d4d5f5fc6b4102969f21c22ae1b0e7d3603a556a13262ff628de222 +Ctrl.hexxcghash = hexxcghash:7b7001185e256d4493445f39a55fb905e6321f4b5dd8bbf3100d51ba0bda3d2d +Ctrl.hexsession_id = hexsession_id:7b7001185e256d4493445f39a55fb905e6321f4b5dd8bbf3100d51ba0bda3d2d +Ctrl.type = type:A +Output = 81f0330ef6f05361b3823bfded6e1de9 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001006ac382eaaca093e125e25c24bebc84640c11987507344b5c739ceb84a9e0b222b9a8b51c839e5ebe49cfadbfb39599764ed522099dc912751950dc7dc97fbdc06328b68f22781fd315af568009a5509e5b87a11bf527c056daffd82ab6cbc25cca37143459e7bc63bcde52757adeb7df01cf12173f1fef8102ec5ab142c213dd9d30696278a8d8bc32dde9592d28c078c6d92b947d825acaab6494846a49de24b9623f4889e8adc38e8c669effef176040ad945e90a7d3eec15efeee78ae71043c96511103a16ba7caf0acd0642efdbe809934faa1a5f1bd11043649b25ccd1fee2e38815d4d5f5fc6b4102969f21c22ae1b0e7d3603a556a13262ff628de222 +Ctrl.hexxcghash = hexxcghash:7b7001185e256d4493445f39a55fb905e6321f4b5dd8bbf3100d51ba0bda3d2d +Ctrl.hexsession_id = hexsession_id:7b7001185e256d4493445f39a55fb905e6321f4b5dd8bbf3100d51ba0bda3d2d +Ctrl.type = type:B +Output = 3f6fd2065eeb2b0b1d93195a1fed48a5 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001006ac382eaaca093e125e25c24bebc84640c11987507344b5c739ceb84a9e0b222b9a8b51c839e5ebe49cfadbfb39599764ed522099dc912751950dc7dc97fbdc06328b68f22781fd315af568009a5509e5b87a11bf527c056daffd82ab6cbc25cca37143459e7bc63bcde52757adeb7df01cf12173f1fef8102ec5ab142c213dd9d30696278a8d8bc32dde9592d28c078c6d92b947d825acaab6494846a49de24b9623f4889e8adc38e8c669effef176040ad945e90a7d3eec15efeee78ae71043c96511103a16ba7caf0acd0642efdbe809934faa1a5f1bd11043649b25ccd1fee2e38815d4d5f5fc6b4102969f21c22ae1b0e7d3603a556a13262ff628de222 +Ctrl.hexxcghash = hexxcghash:7b7001185e256d4493445f39a55fb905e6321f4b5dd8bbf3100d51ba0bda3d2d +Ctrl.hexsession_id = hexsession_id:7b7001185e256d4493445f39a55fb905e6321f4b5dd8bbf3100d51ba0bda3d2d +Ctrl.type = type:C +Output = c35471034e6fd6547613178e23435f21 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001006ac382eaaca093e125e25c24bebc84640c11987507344b5c739ceb84a9e0b222b9a8b51c839e5ebe49cfadbfb39599764ed522099dc912751950dc7dc97fbdc06328b68f22781fd315af568009a5509e5b87a11bf527c056daffd82ab6cbc25cca37143459e7bc63bcde52757adeb7df01cf12173f1fef8102ec5ab142c213dd9d30696278a8d8bc32dde9592d28c078c6d92b947d825acaab6494846a49de24b9623f4889e8adc38e8c669effef176040ad945e90a7d3eec15efeee78ae71043c96511103a16ba7caf0acd0642efdbe809934faa1a5f1bd11043649b25ccd1fee2e38815d4d5f5fc6b4102969f21c22ae1b0e7d3603a556a13262ff628de222 +Ctrl.hexxcghash = hexxcghash:7b7001185e256d4493445f39a55fb905e6321f4b5dd8bbf3100d51ba0bda3d2d +Ctrl.hexsession_id = hexsession_id:7b7001185e256d4493445f39a55fb905e6321f4b5dd8bbf3100d51ba0bda3d2d +Ctrl.type = type:D +Output = 7e9d79032090d99f98b015634dd9f462 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001006ac382eaaca093e125e25c24bebc84640c11987507344b5c739ceb84a9e0b222b9a8b51c839e5ebe49cfadbfb39599764ed522099dc912751950dc7dc97fbdc06328b68f22781fd315af568009a5509e5b87a11bf527c056daffd82ab6cbc25cca37143459e7bc63bcde52757adeb7df01cf12173f1fef8102ec5ab142c213dd9d30696278a8d8bc32dde9592d28c078c6d92b947d825acaab6494846a49de24b9623f4889e8adc38e8c669effef176040ad945e90a7d3eec15efeee78ae71043c96511103a16ba7caf0acd0642efdbe809934faa1a5f1bd11043649b25ccd1fee2e38815d4d5f5fc6b4102969f21c22ae1b0e7d3603a556a13262ff628de222 +Ctrl.hexxcghash = hexxcghash:7b7001185e256d4493445f39a55fb905e6321f4b5dd8bbf3100d51ba0bda3d2d +Ctrl.hexsession_id = hexsession_id:7b7001185e256d4493445f39a55fb905e6321f4b5dd8bbf3100d51ba0bda3d2d +Ctrl.type = type:E +Output = 24ee559ad7ce712b685d0b2271e443c17ab1d1dceb5a360569d25d5dc243002f + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001006ac382eaaca093e125e25c24bebc84640c11987507344b5c739ceb84a9e0b222b9a8b51c839e5ebe49cfadbfb39599764ed522099dc912751950dc7dc97fbdc06328b68f22781fd315af568009a5509e5b87a11bf527c056daffd82ab6cbc25cca37143459e7bc63bcde52757adeb7df01cf12173f1fef8102ec5ab142c213dd9d30696278a8d8bc32dde9592d28c078c6d92b947d825acaab6494846a49de24b9623f4889e8adc38e8c669effef176040ad945e90a7d3eec15efeee78ae71043c96511103a16ba7caf0acd0642efdbe809934faa1a5f1bd11043649b25ccd1fee2e38815d4d5f5fc6b4102969f21c22ae1b0e7d3603a556a13262ff628de222 +Ctrl.hexxcghash = hexxcghash:7b7001185e256d4493445f39a55fb905e6321f4b5dd8bbf3100d51ba0bda3d2d +Ctrl.hexsession_id = hexsession_id:7b7001185e256d4493445f39a55fb905e6321f4b5dd8bbf3100d51ba0bda3d2d +Ctrl.type = type:F +Output = c3419c2b966235869d714ba5ac48ddb7d9e35c8c19aac73422337a373453607e + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000010044708c76616f700bd31b0c155ef74e36390eeb39bc5c32cdc90e21922b0ed930b5b519c8afebef0f4e4fb5b41b81d649d2127506620b594e9899f7f0d442ecddd68308307b82f00065e9d75220a5a6f5641795772132215a236064ea965c6493c21f89879730ebbc3c20a22d8f5bfd07b525b194323b22d8a49944d1aa58502e756101ef1e8a91c9310e71f6db65a3ad0a542cfa751f83721a99e89f1dbe54971a3620ecffc967aa55eed1a42d6e7a138b853557ac84689889f6d0c8553575fb89b4e13eab5537da72ef16f0d72f5e8505d97f110745193d550fa315fe88f672db90d73843e97ba1f3d087ba8eb39025bbffad37589a6199227303d9d8e7f1e3 +Ctrl.hexxcghash = hexxcghash:fe3727fd99a5ac7987c2cfbe062129e3027bf5e10310c6bccde9c916c8329dc2 +Ctrl.hexsession_id = hexsession_id:fffa598bc0ad2ae84dc8dc05b1f72c5b0134025ae7edf8a2e8db11472e18e1fc +Ctrl.type = type:A +Output = 36730bae8de5cb98898d6b4a00b37058 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000010044708c76616f700bd31b0c155ef74e36390eeb39bc5c32cdc90e21922b0ed930b5b519c8afebef0f4e4fb5b41b81d649d2127506620b594e9899f7f0d442ecddd68308307b82f00065e9d75220a5a6f5641795772132215a236064ea965c6493c21f89879730ebbc3c20a22d8f5bfd07b525b194323b22d8a49944d1aa58502e756101ef1e8a91c9310e71f6db65a3ad0a542cfa751f83721a99e89f1dbe54971a3620ecffc967aa55eed1a42d6e7a138b853557ac84689889f6d0c8553575fb89b4e13eab5537da72ef16f0d72f5e8505d97f110745193d550fa315fe88f672db90d73843e97ba1f3d087ba8eb39025bbffad37589a6199227303d9d8e7f1e3 +Ctrl.hexxcghash = hexxcghash:fe3727fd99a5ac7987c2cfbe062129e3027bf5e10310c6bccde9c916c8329dc2 +Ctrl.hexsession_id = hexsession_id:fffa598bc0ad2ae84dc8dc05b1f72c5b0134025ae7edf8a2e8db11472e18e1fc +Ctrl.type = type:B +Output = 5dfe446a83f40e8358d28cb97df8f340 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000010044708c76616f700bd31b0c155ef74e36390eeb39bc5c32cdc90e21922b0ed930b5b519c8afebef0f4e4fb5b41b81d649d2127506620b594e9899f7f0d442ecddd68308307b82f00065e9d75220a5a6f5641795772132215a236064ea965c6493c21f89879730ebbc3c20a22d8f5bfd07b525b194323b22d8a49944d1aa58502e756101ef1e8a91c9310e71f6db65a3ad0a542cfa751f83721a99e89f1dbe54971a3620ecffc967aa55eed1a42d6e7a138b853557ac84689889f6d0c8553575fb89b4e13eab5537da72ef16f0d72f5e8505d97f110745193d550fa315fe88f672db90d73843e97ba1f3d087ba8eb39025bbffad37589a6199227303d9d8e7f1e3 +Ctrl.hexxcghash = hexxcghash:fe3727fd99a5ac7987c2cfbe062129e3027bf5e10310c6bccde9c916c8329dc2 +Ctrl.hexsession_id = hexsession_id:fffa598bc0ad2ae84dc8dc05b1f72c5b0134025ae7edf8a2e8db11472e18e1fc +Ctrl.type = type:C +Output = 495b7afed0872b761437728e9e94e2b8 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000010044708c76616f700bd31b0c155ef74e36390eeb39bc5c32cdc90e21922b0ed930b5b519c8afebef0f4e4fb5b41b81d649d2127506620b594e9899f7f0d442ecddd68308307b82f00065e9d75220a5a6f5641795772132215a236064ea965c6493c21f89879730ebbc3c20a22d8f5bfd07b525b194323b22d8a49944d1aa58502e756101ef1e8a91c9310e71f6db65a3ad0a542cfa751f83721a99e89f1dbe54971a3620ecffc967aa55eed1a42d6e7a138b853557ac84689889f6d0c8553575fb89b4e13eab5537da72ef16f0d72f5e8505d97f110745193d550fa315fe88f672db90d73843e97ba1f3d087ba8eb39025bbffad37589a6199227303d9d8e7f1e3 +Ctrl.hexxcghash = hexxcghash:fe3727fd99a5ac7987c2cfbe062129e3027bf5e10310c6bccde9c916c8329dc2 +Ctrl.hexsession_id = hexsession_id:fffa598bc0ad2ae84dc8dc05b1f72c5b0134025ae7edf8a2e8db11472e18e1fc +Ctrl.type = type:D +Output = c1474b3925bec36f0b7f6cc698e949c8 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000010044708c76616f700bd31b0c155ef74e36390eeb39bc5c32cdc90e21922b0ed930b5b519c8afebef0f4e4fb5b41b81d649d2127506620b594e9899f7f0d442ecddd68308307b82f00065e9d75220a5a6f5641795772132215a236064ea965c6493c21f89879730ebbc3c20a22d8f5bfd07b525b194323b22d8a49944d1aa58502e756101ef1e8a91c9310e71f6db65a3ad0a542cfa751f83721a99e89f1dbe54971a3620ecffc967aa55eed1a42d6e7a138b853557ac84689889f6d0c8553575fb89b4e13eab5537da72ef16f0d72f5e8505d97f110745193d550fa315fe88f672db90d73843e97ba1f3d087ba8eb39025bbffad37589a6199227303d9d8e7f1e3 +Ctrl.hexxcghash = hexxcghash:fe3727fd99a5ac7987c2cfbe062129e3027bf5e10310c6bccde9c916c8329dc2 +Ctrl.hexsession_id = hexsession_id:fffa598bc0ad2ae84dc8dc05b1f72c5b0134025ae7edf8a2e8db11472e18e1fc +Ctrl.type = type:E +Output = b730f8df6a0697645be261169486c32a11612229276cbac5d8b3669afb2e4262 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000010044708c76616f700bd31b0c155ef74e36390eeb39bc5c32cdc90e21922b0ed930b5b519c8afebef0f4e4fb5b41b81d649d2127506620b594e9899f7f0d442ecddd68308307b82f00065e9d75220a5a6f5641795772132215a236064ea965c6493c21f89879730ebbc3c20a22d8f5bfd07b525b194323b22d8a49944d1aa58502e756101ef1e8a91c9310e71f6db65a3ad0a542cfa751f83721a99e89f1dbe54971a3620ecffc967aa55eed1a42d6e7a138b853557ac84689889f6d0c8553575fb89b4e13eab5537da72ef16f0d72f5e8505d97f110745193d550fa315fe88f672db90d73843e97ba1f3d087ba8eb39025bbffad37589a6199227303d9d8e7f1e3 +Ctrl.hexxcghash = hexxcghash:fe3727fd99a5ac7987c2cfbe062129e3027bf5e10310c6bccde9c916c8329dc2 +Ctrl.hexsession_id = hexsession_id:fffa598bc0ad2ae84dc8dc05b1f72c5b0134025ae7edf8a2e8db11472e18e1fc +Ctrl.type = type:F +Output = 14a5ea98245fb058978b82a3cb092b1cca7ce0109a4f98c16e1529579d58b819 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101009b1c637286720d11a9030260e35726621f54115560c443ded98d5622f4007cb65427ba8ae0831f34452349993c74933466f3307e11452150f4640010ed7d1ab87656232d9659d9982e8227c25d648189d2bdda3283aa5dec8a2105af0fa840592a21d96eebb932f8ff36f94a2e4fc3819d7c9f0d26a472fb5ae5a43a2d4906247d59c42512dda252205f60042e1900e1581127f25ace253b62a83f62d4703281a294f240df2aa34ddf437c9f278278120bc10e2cb99f7804ecd6741b1be5520c553cb89747f79b4e4efd3cf09b484eb1eb034d220da457546a2ebb28d7f2faf67de0630757b8ae05e27a761956d2e190fe3fb93b1c7c142f62baeb089721cedc +Ctrl.hexxcghash = hexxcghash:cad407a823551726f9bdcb78e8f351536e4406e8ee64947ecc0074662c7c0462 +Ctrl.hexsession_id = hexsession_id:a9c8207642627e6ee872999123b29e36abfdd071dba36ea6f0c11dd59ea46410 +Ctrl.type = type:A +Output = 32d20a3f5e92b20fe100f4f41a1ad53c + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101009b1c637286720d11a9030260e35726621f54115560c443ded98d5622f4007cb65427ba8ae0831f34452349993c74933466f3307e11452150f4640010ed7d1ab87656232d9659d9982e8227c25d648189d2bdda3283aa5dec8a2105af0fa840592a21d96eebb932f8ff36f94a2e4fc3819d7c9f0d26a472fb5ae5a43a2d4906247d59c42512dda252205f60042e1900e1581127f25ace253b62a83f62d4703281a294f240df2aa34ddf437c9f278278120bc10e2cb99f7804ecd6741b1be5520c553cb89747f79b4e4efd3cf09b484eb1eb034d220da457546a2ebb28d7f2faf67de0630757b8ae05e27a761956d2e190fe3fb93b1c7c142f62baeb089721cedc +Ctrl.hexxcghash = hexxcghash:cad407a823551726f9bdcb78e8f351536e4406e8ee64947ecc0074662c7c0462 +Ctrl.hexsession_id = hexsession_id:a9c8207642627e6ee872999123b29e36abfdd071dba36ea6f0c11dd59ea46410 +Ctrl.type = type:B +Output = c3a3ff57f99187ba011fd422100af577 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101009b1c637286720d11a9030260e35726621f54115560c443ded98d5622f4007cb65427ba8ae0831f34452349993c74933466f3307e11452150f4640010ed7d1ab87656232d9659d9982e8227c25d648189d2bdda3283aa5dec8a2105af0fa840592a21d96eebb932f8ff36f94a2e4fc3819d7c9f0d26a472fb5ae5a43a2d4906247d59c42512dda252205f60042e1900e1581127f25ace253b62a83f62d4703281a294f240df2aa34ddf437c9f278278120bc10e2cb99f7804ecd6741b1be5520c553cb89747f79b4e4efd3cf09b484eb1eb034d220da457546a2ebb28d7f2faf67de0630757b8ae05e27a761956d2e190fe3fb93b1c7c142f62baeb089721cedc +Ctrl.hexxcghash = hexxcghash:cad407a823551726f9bdcb78e8f351536e4406e8ee64947ecc0074662c7c0462 +Ctrl.hexsession_id = hexsession_id:a9c8207642627e6ee872999123b29e36abfdd071dba36ea6f0c11dd59ea46410 +Ctrl.type = type:C +Output = 8517903c49d5a59ad8ef7cd8591c6b5e + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101009b1c637286720d11a9030260e35726621f54115560c443ded98d5622f4007cb65427ba8ae0831f34452349993c74933466f3307e11452150f4640010ed7d1ab87656232d9659d9982e8227c25d648189d2bdda3283aa5dec8a2105af0fa840592a21d96eebb932f8ff36f94a2e4fc3819d7c9f0d26a472fb5ae5a43a2d4906247d59c42512dda252205f60042e1900e1581127f25ace253b62a83f62d4703281a294f240df2aa34ddf437c9f278278120bc10e2cb99f7804ecd6741b1be5520c553cb89747f79b4e4efd3cf09b484eb1eb034d220da457546a2ebb28d7f2faf67de0630757b8ae05e27a761956d2e190fe3fb93b1c7c142f62baeb089721cedc +Ctrl.hexxcghash = hexxcghash:cad407a823551726f9bdcb78e8f351536e4406e8ee64947ecc0074662c7c0462 +Ctrl.hexsession_id = hexsession_id:a9c8207642627e6ee872999123b29e36abfdd071dba36ea6f0c11dd59ea46410 +Ctrl.type = type:D +Output = a5ad201101a617f1cd5b3a2baa3b27f7 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101009b1c637286720d11a9030260e35726621f54115560c443ded98d5622f4007cb65427ba8ae0831f34452349993c74933466f3307e11452150f4640010ed7d1ab87656232d9659d9982e8227c25d648189d2bdda3283aa5dec8a2105af0fa840592a21d96eebb932f8ff36f94a2e4fc3819d7c9f0d26a472fb5ae5a43a2d4906247d59c42512dda252205f60042e1900e1581127f25ace253b62a83f62d4703281a294f240df2aa34ddf437c9f278278120bc10e2cb99f7804ecd6741b1be5520c553cb89747f79b4e4efd3cf09b484eb1eb034d220da457546a2ebb28d7f2faf67de0630757b8ae05e27a761956d2e190fe3fb93b1c7c142f62baeb089721cedc +Ctrl.hexxcghash = hexxcghash:cad407a823551726f9bdcb78e8f351536e4406e8ee64947ecc0074662c7c0462 +Ctrl.hexsession_id = hexsession_id:a9c8207642627e6ee872999123b29e36abfdd071dba36ea6f0c11dd59ea46410 +Ctrl.type = type:E +Output = 16747a23fddd72f785c5d61dfb81a5a38555f5d8ff1dc5ae4fb423b82adfe05b + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101009b1c637286720d11a9030260e35726621f54115560c443ded98d5622f4007cb65427ba8ae0831f34452349993c74933466f3307e11452150f4640010ed7d1ab87656232d9659d9982e8227c25d648189d2bdda3283aa5dec8a2105af0fa840592a21d96eebb932f8ff36f94a2e4fc3819d7c9f0d26a472fb5ae5a43a2d4906247d59c42512dda252205f60042e1900e1581127f25ace253b62a83f62d4703281a294f240df2aa34ddf437c9f278278120bc10e2cb99f7804ecd6741b1be5520c553cb89747f79b4e4efd3cf09b484eb1eb034d220da457546a2ebb28d7f2faf67de0630757b8ae05e27a761956d2e190fe3fb93b1c7c142f62baeb089721cedc +Ctrl.hexxcghash = hexxcghash:cad407a823551726f9bdcb78e8f351536e4406e8ee64947ecc0074662c7c0462 +Ctrl.hexsession_id = hexsession_id:a9c8207642627e6ee872999123b29e36abfdd071dba36ea6f0c11dd59ea46410 +Ctrl.type = type:F +Output = b1b1bba896b0fd75a90187eae6cdf744d23884caa5f4ca979ced327ca1239771 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101008cd7061a3591b477989a4deb1bfc6debe874f753a4686eef11d1fa0e6796800db97c38497992b220d6e40d8f9154743b533666c8689db8cdffd38ac4009f85cfc6e48dc2fe94f78870138994ab4189e8d461a00b03425d8d838061b44e7ccd41e3a0332ab68afbf2919763c9f03747637db87a50d766504199fba6c34d216580fcd77756a6004ff485a79cdb646f0adde47a727e028261c808e0cb31928071701a0f2d2d237c293b93e80854f4e43243eaeb96cc25e00f74e2cd414c72774c7995757e93c0a9aac5ef5b0d23bef9ce475bfe697d14b815eeb0535d6e7e438bdb54aa2d8f50d05564d17c3ff2bc3451ca5b932f320c20f1c256c61ed503be2528 +Ctrl.hexxcghash = hexxcghash:53fc521edf6dea9daf619676276766508d32c1964943e9bd40b4ed2cdefa7c20 +Ctrl.hexsession_id = hexsession_id:14c6727d8e211c7632f930e716ab360e0916b1da3409367ef52d9e21512c700d +Ctrl.type = type:A +Output = b5c636c93e002f1fac0b78eb423d92cf + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101008cd7061a3591b477989a4deb1bfc6debe874f753a4686eef11d1fa0e6796800db97c38497992b220d6e40d8f9154743b533666c8689db8cdffd38ac4009f85cfc6e48dc2fe94f78870138994ab4189e8d461a00b03425d8d838061b44e7ccd41e3a0332ab68afbf2919763c9f03747637db87a50d766504199fba6c34d216580fcd77756a6004ff485a79cdb646f0adde47a727e028261c808e0cb31928071701a0f2d2d237c293b93e80854f4e43243eaeb96cc25e00f74e2cd414c72774c7995757e93c0a9aac5ef5b0d23bef9ce475bfe697d14b815eeb0535d6e7e438bdb54aa2d8f50d05564d17c3ff2bc3451ca5b932f320c20f1c256c61ed503be2528 +Ctrl.hexxcghash = hexxcghash:53fc521edf6dea9daf619676276766508d32c1964943e9bd40b4ed2cdefa7c20 +Ctrl.hexsession_id = hexsession_id:14c6727d8e211c7632f930e716ab360e0916b1da3409367ef52d9e21512c700d +Ctrl.type = type:B +Output = 64d82bef35e924abf030fe42cda10e81 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101008cd7061a3591b477989a4deb1bfc6debe874f753a4686eef11d1fa0e6796800db97c38497992b220d6e40d8f9154743b533666c8689db8cdffd38ac4009f85cfc6e48dc2fe94f78870138994ab4189e8d461a00b03425d8d838061b44e7ccd41e3a0332ab68afbf2919763c9f03747637db87a50d766504199fba6c34d216580fcd77756a6004ff485a79cdb646f0adde47a727e028261c808e0cb31928071701a0f2d2d237c293b93e80854f4e43243eaeb96cc25e00f74e2cd414c72774c7995757e93c0a9aac5ef5b0d23bef9ce475bfe697d14b815eeb0535d6e7e438bdb54aa2d8f50d05564d17c3ff2bc3451ca5b932f320c20f1c256c61ed503be2528 +Ctrl.hexxcghash = hexxcghash:53fc521edf6dea9daf619676276766508d32c1964943e9bd40b4ed2cdefa7c20 +Ctrl.hexsession_id = hexsession_id:14c6727d8e211c7632f930e716ab360e0916b1da3409367ef52d9e21512c700d +Ctrl.type = type:C +Output = 76a1b8b85d0ea49c68f30d7448155901 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101008cd7061a3591b477989a4deb1bfc6debe874f753a4686eef11d1fa0e6796800db97c38497992b220d6e40d8f9154743b533666c8689db8cdffd38ac4009f85cfc6e48dc2fe94f78870138994ab4189e8d461a00b03425d8d838061b44e7ccd41e3a0332ab68afbf2919763c9f03747637db87a50d766504199fba6c34d216580fcd77756a6004ff485a79cdb646f0adde47a727e028261c808e0cb31928071701a0f2d2d237c293b93e80854f4e43243eaeb96cc25e00f74e2cd414c72774c7995757e93c0a9aac5ef5b0d23bef9ce475bfe697d14b815eeb0535d6e7e438bdb54aa2d8f50d05564d17c3ff2bc3451ca5b932f320c20f1c256c61ed503be2528 +Ctrl.hexxcghash = hexxcghash:53fc521edf6dea9daf619676276766508d32c1964943e9bd40b4ed2cdefa7c20 +Ctrl.hexsession_id = hexsession_id:14c6727d8e211c7632f930e716ab360e0916b1da3409367ef52d9e21512c700d +Ctrl.type = type:D +Output = f136e09324b1ef12b92bf35d5b3dd8e2 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101008cd7061a3591b477989a4deb1bfc6debe874f753a4686eef11d1fa0e6796800db97c38497992b220d6e40d8f9154743b533666c8689db8cdffd38ac4009f85cfc6e48dc2fe94f78870138994ab4189e8d461a00b03425d8d838061b44e7ccd41e3a0332ab68afbf2919763c9f03747637db87a50d766504199fba6c34d216580fcd77756a6004ff485a79cdb646f0adde47a727e028261c808e0cb31928071701a0f2d2d237c293b93e80854f4e43243eaeb96cc25e00f74e2cd414c72774c7995757e93c0a9aac5ef5b0d23bef9ce475bfe697d14b815eeb0535d6e7e438bdb54aa2d8f50d05564d17c3ff2bc3451ca5b932f320c20f1c256c61ed503be2528 +Ctrl.hexxcghash = hexxcghash:53fc521edf6dea9daf619676276766508d32c1964943e9bd40b4ed2cdefa7c20 +Ctrl.hexsession_id = hexsession_id:14c6727d8e211c7632f930e716ab360e0916b1da3409367ef52d9e21512c700d +Ctrl.type = type:E +Output = 77abc45165b126f9127d59fbe655140cd3f768cd0498c29aa69cb5d65f7b0d50 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101008cd7061a3591b477989a4deb1bfc6debe874f753a4686eef11d1fa0e6796800db97c38497992b220d6e40d8f9154743b533666c8689db8cdffd38ac4009f85cfc6e48dc2fe94f78870138994ab4189e8d461a00b03425d8d838061b44e7ccd41e3a0332ab68afbf2919763c9f03747637db87a50d766504199fba6c34d216580fcd77756a6004ff485a79cdb646f0adde47a727e028261c808e0cb31928071701a0f2d2d237c293b93e80854f4e43243eaeb96cc25e00f74e2cd414c72774c7995757e93c0a9aac5ef5b0d23bef9ce475bfe697d14b815eeb0535d6e7e438bdb54aa2d8f50d05564d17c3ff2bc3451ca5b932f320c20f1c256c61ed503be2528 +Ctrl.hexxcghash = hexxcghash:53fc521edf6dea9daf619676276766508d32c1964943e9bd40b4ed2cdefa7c20 +Ctrl.hexsession_id = hexsession_id:14c6727d8e211c7632f930e716ab360e0916b1da3409367ef52d9e21512c700d +Ctrl.type = type:F +Output = d43f93faf692f59bc96fd480fb336033c94ee237ceece69691ffaa64bdd7fcc1 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101009b0b6fe41d565564f87ae984aadc75902d95828bdee0bba0ecc176afd5cc9c3ec79a34a9f7cf44ee6cbdcb5d8f027bb64c4c3b73e2f891ee06b781f3d7f02b59f95cbbfb2725b208856f3ebb8195fef1596248d56a371ed7acf3b973c627976e0cf156f340aa01acfbe9b574d4dedd4cbb66cb6ca5d9e76f16385be532fed8dd65735a3ecddeeb295133bb8a59499b4777242a4a7e463481d26baece4c7ef224aaf40af4d5108d024f5dd174cfdb91213939e355b0a1ca51ed6f7f584a4e47a0f1482d6a5768b1236e25d837cc8a2b49b2176bb54b2f77f4212ba394336e6a6046def9205fe482d98fcdd8d0a2643a39d753d2d481fe6689b0dc0d1c078335b7 +Ctrl.hexxcghash = hexxcghash:27faf1b9a15e505a0b46c47e2bf6ab5fff37a6dadb09e96ea9562091f1d88ce0 +Ctrl.hexsession_id = hexsession_id:6b52ddb87a66f0f1bb0dad39b462e7bd42bdeb99049d5a3581ca6f056c398228 +Ctrl.type = type:A +Output = 3b3c4416d3121a6838dd3f94a84b6ec6 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101009b0b6fe41d565564f87ae984aadc75902d95828bdee0bba0ecc176afd5cc9c3ec79a34a9f7cf44ee6cbdcb5d8f027bb64c4c3b73e2f891ee06b781f3d7f02b59f95cbbfb2725b208856f3ebb8195fef1596248d56a371ed7acf3b973c627976e0cf156f340aa01acfbe9b574d4dedd4cbb66cb6ca5d9e76f16385be532fed8dd65735a3ecddeeb295133bb8a59499b4777242a4a7e463481d26baece4c7ef224aaf40af4d5108d024f5dd174cfdb91213939e355b0a1ca51ed6f7f584a4e47a0f1482d6a5768b1236e25d837cc8a2b49b2176bb54b2f77f4212ba394336e6a6046def9205fe482d98fcdd8d0a2643a39d753d2d481fe6689b0dc0d1c078335b7 +Ctrl.hexxcghash = hexxcghash:27faf1b9a15e505a0b46c47e2bf6ab5fff37a6dadb09e96ea9562091f1d88ce0 +Ctrl.hexsession_id = hexsession_id:6b52ddb87a66f0f1bb0dad39b462e7bd42bdeb99049d5a3581ca6f056c398228 +Ctrl.type = type:B +Output = e0af22a9184e5cea74f3e90faf5212ba + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101009b0b6fe41d565564f87ae984aadc75902d95828bdee0bba0ecc176afd5cc9c3ec79a34a9f7cf44ee6cbdcb5d8f027bb64c4c3b73e2f891ee06b781f3d7f02b59f95cbbfb2725b208856f3ebb8195fef1596248d56a371ed7acf3b973c627976e0cf156f340aa01acfbe9b574d4dedd4cbb66cb6ca5d9e76f16385be532fed8dd65735a3ecddeeb295133bb8a59499b4777242a4a7e463481d26baece4c7ef224aaf40af4d5108d024f5dd174cfdb91213939e355b0a1ca51ed6f7f584a4e47a0f1482d6a5768b1236e25d837cc8a2b49b2176bb54b2f77f4212ba394336e6a6046def9205fe482d98fcdd8d0a2643a39d753d2d481fe6689b0dc0d1c078335b7 +Ctrl.hexxcghash = hexxcghash:27faf1b9a15e505a0b46c47e2bf6ab5fff37a6dadb09e96ea9562091f1d88ce0 +Ctrl.hexsession_id = hexsession_id:6b52ddb87a66f0f1bb0dad39b462e7bd42bdeb99049d5a3581ca6f056c398228 +Ctrl.type = type:C +Output = a3a7a9e48cc09a927e2d6eddd7647368 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101009b0b6fe41d565564f87ae984aadc75902d95828bdee0bba0ecc176afd5cc9c3ec79a34a9f7cf44ee6cbdcb5d8f027bb64c4c3b73e2f891ee06b781f3d7f02b59f95cbbfb2725b208856f3ebb8195fef1596248d56a371ed7acf3b973c627976e0cf156f340aa01acfbe9b574d4dedd4cbb66cb6ca5d9e76f16385be532fed8dd65735a3ecddeeb295133bb8a59499b4777242a4a7e463481d26baece4c7ef224aaf40af4d5108d024f5dd174cfdb91213939e355b0a1ca51ed6f7f584a4e47a0f1482d6a5768b1236e25d837cc8a2b49b2176bb54b2f77f4212ba394336e6a6046def9205fe482d98fcdd8d0a2643a39d753d2d481fe6689b0dc0d1c078335b7 +Ctrl.hexxcghash = hexxcghash:27faf1b9a15e505a0b46c47e2bf6ab5fff37a6dadb09e96ea9562091f1d88ce0 +Ctrl.hexsession_id = hexsession_id:6b52ddb87a66f0f1bb0dad39b462e7bd42bdeb99049d5a3581ca6f056c398228 +Ctrl.type = type:D +Output = b9411d2870e885e223a6b414ae6ac813 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101009b0b6fe41d565564f87ae984aadc75902d95828bdee0bba0ecc176afd5cc9c3ec79a34a9f7cf44ee6cbdcb5d8f027bb64c4c3b73e2f891ee06b781f3d7f02b59f95cbbfb2725b208856f3ebb8195fef1596248d56a371ed7acf3b973c627976e0cf156f340aa01acfbe9b574d4dedd4cbb66cb6ca5d9e76f16385be532fed8dd65735a3ecddeeb295133bb8a59499b4777242a4a7e463481d26baece4c7ef224aaf40af4d5108d024f5dd174cfdb91213939e355b0a1ca51ed6f7f584a4e47a0f1482d6a5768b1236e25d837cc8a2b49b2176bb54b2f77f4212ba394336e6a6046def9205fe482d98fcdd8d0a2643a39d753d2d481fe6689b0dc0d1c078335b7 +Ctrl.hexxcghash = hexxcghash:27faf1b9a15e505a0b46c47e2bf6ab5fff37a6dadb09e96ea9562091f1d88ce0 +Ctrl.hexsession_id = hexsession_id:6b52ddb87a66f0f1bb0dad39b462e7bd42bdeb99049d5a3581ca6f056c398228 +Ctrl.type = type:E +Output = 7f11812c28229fd8e39367b8885045313fea6322f22a69b6436caa4fb6c2d915 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000101009b0b6fe41d565564f87ae984aadc75902d95828bdee0bba0ecc176afd5cc9c3ec79a34a9f7cf44ee6cbdcb5d8f027bb64c4c3b73e2f891ee06b781f3d7f02b59f95cbbfb2725b208856f3ebb8195fef1596248d56a371ed7acf3b973c627976e0cf156f340aa01acfbe9b574d4dedd4cbb66cb6ca5d9e76f16385be532fed8dd65735a3ecddeeb295133bb8a59499b4777242a4a7e463481d26baece4c7ef224aaf40af4d5108d024f5dd174cfdb91213939e355b0a1ca51ed6f7f584a4e47a0f1482d6a5768b1236e25d837cc8a2b49b2176bb54b2f77f4212ba394336e6a6046def9205fe482d98fcdd8d0a2643a39d753d2d481fe6689b0dc0d1c078335b7 +Ctrl.hexxcghash = hexxcghash:27faf1b9a15e505a0b46c47e2bf6ab5fff37a6dadb09e96ea9562091f1d88ce0 +Ctrl.hexsession_id = hexsession_id:6b52ddb87a66f0f1bb0dad39b462e7bd42bdeb99049d5a3581ca6f056c398228 +Ctrl.type = type:F +Output = 4fc39e2a1e7038f2664a48986e8227c213e577eafea082f46cb08d087e642fe4 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000100435266668e94e5f35d31f10f7b486bed8a88465cf30711e54f8c6550a917916fb7160c41880d364df5084446d7834e32917882c10eef49f8192fa6ff4c9498a12d87bbf710d4bba3e76a6681c7ac3470e6f5e80c55851dcca38a9ce48b015ab73b24e28e0553f3a1bbe1dfa9b67bb9cb9372ad0fb0aaf443c3a8927d00b9b2705f4d1b219c80f7caa637c986de79410c5924943128e64cf869491f19c1646cb403d8543d5aaaea7fbaaaa1a846b9851f4f708b14266e55839e1d61b67a60359c2c111841839225c0f940252506be02ba43fcc7c4be7cb01c64094fbd9a78cc331c6e7809e0be3a4b693adfeedd1b20ad36d321498b396fce7cf169b2fb10e54b +Ctrl.hexxcghash = hexxcghash:d7303e57a2bf969f815c1b2fd08a879226c0e95c9897fb5586200c0f5e0a8a23 +Ctrl.hexsession_id = hexsession_id:20ace711e8190f5bbd2168bc93061c903899acd41697b76d0f6667d2bf345725 +Ctrl.type = type:A +Output = b71bd280b230b6fb9b326a3544ab9c90 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000100435266668e94e5f35d31f10f7b486bed8a88465cf30711e54f8c6550a917916fb7160c41880d364df5084446d7834e32917882c10eef49f8192fa6ff4c9498a12d87bbf710d4bba3e76a6681c7ac3470e6f5e80c55851dcca38a9ce48b015ab73b24e28e0553f3a1bbe1dfa9b67bb9cb9372ad0fb0aaf443c3a8927d00b9b2705f4d1b219c80f7caa637c986de79410c5924943128e64cf869491f19c1646cb403d8543d5aaaea7fbaaaa1a846b9851f4f708b14266e55839e1d61b67a60359c2c111841839225c0f940252506be02ba43fcc7c4be7cb01c64094fbd9a78cc331c6e7809e0be3a4b693adfeedd1b20ad36d321498b396fce7cf169b2fb10e54b +Ctrl.hexxcghash = hexxcghash:d7303e57a2bf969f815c1b2fd08a879226c0e95c9897fb5586200c0f5e0a8a23 +Ctrl.hexsession_id = hexsession_id:20ace711e8190f5bbd2168bc93061c903899acd41697b76d0f6667d2bf345725 +Ctrl.type = type:B +Output = ca38c1b5940e1417fb8caa6ab6deaf18 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000100435266668e94e5f35d31f10f7b486bed8a88465cf30711e54f8c6550a917916fb7160c41880d364df5084446d7834e32917882c10eef49f8192fa6ff4c9498a12d87bbf710d4bba3e76a6681c7ac3470e6f5e80c55851dcca38a9ce48b015ab73b24e28e0553f3a1bbe1dfa9b67bb9cb9372ad0fb0aaf443c3a8927d00b9b2705f4d1b219c80f7caa637c986de79410c5924943128e64cf869491f19c1646cb403d8543d5aaaea7fbaaaa1a846b9851f4f708b14266e55839e1d61b67a60359c2c111841839225c0f940252506be02ba43fcc7c4be7cb01c64094fbd9a78cc331c6e7809e0be3a4b693adfeedd1b20ad36d321498b396fce7cf169b2fb10e54b +Ctrl.hexxcghash = hexxcghash:d7303e57a2bf969f815c1b2fd08a879226c0e95c9897fb5586200c0f5e0a8a23 +Ctrl.hexsession_id = hexsession_id:20ace711e8190f5bbd2168bc93061c903899acd41697b76d0f6667d2bf345725 +Ctrl.type = type:C +Output = 5d02347e16760101a3689bf0087ed947 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000100435266668e94e5f35d31f10f7b486bed8a88465cf30711e54f8c6550a917916fb7160c41880d364df5084446d7834e32917882c10eef49f8192fa6ff4c9498a12d87bbf710d4bba3e76a6681c7ac3470e6f5e80c55851dcca38a9ce48b015ab73b24e28e0553f3a1bbe1dfa9b67bb9cb9372ad0fb0aaf443c3a8927d00b9b2705f4d1b219c80f7caa637c986de79410c5924943128e64cf869491f19c1646cb403d8543d5aaaea7fbaaaa1a846b9851f4f708b14266e55839e1d61b67a60359c2c111841839225c0f940252506be02ba43fcc7c4be7cb01c64094fbd9a78cc331c6e7809e0be3a4b693adfeedd1b20ad36d321498b396fce7cf169b2fb10e54b +Ctrl.hexxcghash = hexxcghash:d7303e57a2bf969f815c1b2fd08a879226c0e95c9897fb5586200c0f5e0a8a23 +Ctrl.hexsession_id = hexsession_id:20ace711e8190f5bbd2168bc93061c903899acd41697b76d0f6667d2bf345725 +Ctrl.type = type:D +Output = 2fb5e0eb5552f7e26ad9651bd22f1666 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000100435266668e94e5f35d31f10f7b486bed8a88465cf30711e54f8c6550a917916fb7160c41880d364df5084446d7834e32917882c10eef49f8192fa6ff4c9498a12d87bbf710d4bba3e76a6681c7ac3470e6f5e80c55851dcca38a9ce48b015ab73b24e28e0553f3a1bbe1dfa9b67bb9cb9372ad0fb0aaf443c3a8927d00b9b2705f4d1b219c80f7caa637c986de79410c5924943128e64cf869491f19c1646cb403d8543d5aaaea7fbaaaa1a846b9851f4f708b14266e55839e1d61b67a60359c2c111841839225c0f940252506be02ba43fcc7c4be7cb01c64094fbd9a78cc331c6e7809e0be3a4b693adfeedd1b20ad36d321498b396fce7cf169b2fb10e54b +Ctrl.hexxcghash = hexxcghash:d7303e57a2bf969f815c1b2fd08a879226c0e95c9897fb5586200c0f5e0a8a23 +Ctrl.hexsession_id = hexsession_id:20ace711e8190f5bbd2168bc93061c903899acd41697b76d0f6667d2bf345725 +Ctrl.type = type:E +Output = b7b7c4292a73e7d378284b12b318e0cd3ad714904b4ef9c83d44ee06ff49b1e1 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000100435266668e94e5f35d31f10f7b486bed8a88465cf30711e54f8c6550a917916fb7160c41880d364df5084446d7834e32917882c10eef49f8192fa6ff4c9498a12d87bbf710d4bba3e76a6681c7ac3470e6f5e80c55851dcca38a9ce48b015ab73b24e28e0553f3a1bbe1dfa9b67bb9cb9372ad0fb0aaf443c3a8927d00b9b2705f4d1b219c80f7caa637c986de79410c5924943128e64cf869491f19c1646cb403d8543d5aaaea7fbaaaa1a846b9851f4f708b14266e55839e1d61b67a60359c2c111841839225c0f940252506be02ba43fcc7c4be7cb01c64094fbd9a78cc331c6e7809e0be3a4b693adfeedd1b20ad36d321498b396fce7cf169b2fb10e54b +Ctrl.hexxcghash = hexxcghash:d7303e57a2bf969f815c1b2fd08a879226c0e95c9897fb5586200c0f5e0a8a23 +Ctrl.hexsession_id = hexsession_id:20ace711e8190f5bbd2168bc93061c903899acd41697b76d0f6667d2bf345725 +Ctrl.type = type:F +Output = c9884e71b158f2255fb204733e888bc5b2ee38a5493de9d0ef6700949159ac6a + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000100745f5abd8fb685eaae10854a96900806cd7d17d2d255990328594a4fdbb9fa28088ccb8fbf92ef23492a595f92c49d5fa32ea5ef6d76000635fb58496c9db824aaa41b67c3c2e8bdd525f6c6a224562c670076f6efd21fe49222c2627596b775c56dff5d477cd4cc008ef566086a495cf4ba634af20a42fb13fa52597dc252edebdfa57592494fd9cd44d0f7e27d6a6ff370876c42733977db656d7372d553c2ffc824fb02375e55069d5cccb493ec77001fb4cd73cbec6976bd45ae2cc0812c078784d917c0a0a54d8df6c745a2710828939be0685d7fc1657eee9c4dbc71615fab0174e62fb7971fa20f6d6b2da1c22c0a35c781c9dbdf009cec3d89891afc +Ctrl.hexxcghash = hexxcghash:35f601a7877ef637d6c40b4f2e1d85b888eceac9f37e686254f9d707b22bd764 +Ctrl.hexsession_id = hexsession_id:d04bce75141ed2a44942d98354ded46e861da28fc1175e5a22e8dddad4942f9a +Ctrl.type = type:A +Output = 88af3bdb49bd8e9d24489efc95dea1c1 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000100745f5abd8fb685eaae10854a96900806cd7d17d2d255990328594a4fdbb9fa28088ccb8fbf92ef23492a595f92c49d5fa32ea5ef6d76000635fb58496c9db824aaa41b67c3c2e8bdd525f6c6a224562c670076f6efd21fe49222c2627596b775c56dff5d477cd4cc008ef566086a495cf4ba634af20a42fb13fa52597dc252edebdfa57592494fd9cd44d0f7e27d6a6ff370876c42733977db656d7372d553c2ffc824fb02375e55069d5cccb493ec77001fb4cd73cbec6976bd45ae2cc0812c078784d917c0a0a54d8df6c745a2710828939be0685d7fc1657eee9c4dbc71615fab0174e62fb7971fa20f6d6b2da1c22c0a35c781c9dbdf009cec3d89891afc +Ctrl.hexxcghash = hexxcghash:35f601a7877ef637d6c40b4f2e1d85b888eceac9f37e686254f9d707b22bd764 +Ctrl.hexsession_id = hexsession_id:d04bce75141ed2a44942d98354ded46e861da28fc1175e5a22e8dddad4942f9a +Ctrl.type = type:B +Output = 5cf41e1d43f797c16a30e070f2f37dd4 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000100745f5abd8fb685eaae10854a96900806cd7d17d2d255990328594a4fdbb9fa28088ccb8fbf92ef23492a595f92c49d5fa32ea5ef6d76000635fb58496c9db824aaa41b67c3c2e8bdd525f6c6a224562c670076f6efd21fe49222c2627596b775c56dff5d477cd4cc008ef566086a495cf4ba634af20a42fb13fa52597dc252edebdfa57592494fd9cd44d0f7e27d6a6ff370876c42733977db656d7372d553c2ffc824fb02375e55069d5cccb493ec77001fb4cd73cbec6976bd45ae2cc0812c078784d917c0a0a54d8df6c745a2710828939be0685d7fc1657eee9c4dbc71615fab0174e62fb7971fa20f6d6b2da1c22c0a35c781c9dbdf009cec3d89891afc +Ctrl.hexxcghash = hexxcghash:35f601a7877ef637d6c40b4f2e1d85b888eceac9f37e686254f9d707b22bd764 +Ctrl.hexsession_id = hexsession_id:d04bce75141ed2a44942d98354ded46e861da28fc1175e5a22e8dddad4942f9a +Ctrl.type = type:C +Output = 7cc48e0f8b4bdd63f76e41ba411d7f37 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000100745f5abd8fb685eaae10854a96900806cd7d17d2d255990328594a4fdbb9fa28088ccb8fbf92ef23492a595f92c49d5fa32ea5ef6d76000635fb58496c9db824aaa41b67c3c2e8bdd525f6c6a224562c670076f6efd21fe49222c2627596b775c56dff5d477cd4cc008ef566086a495cf4ba634af20a42fb13fa52597dc252edebdfa57592494fd9cd44d0f7e27d6a6ff370876c42733977db656d7372d553c2ffc824fb02375e55069d5cccb493ec77001fb4cd73cbec6976bd45ae2cc0812c078784d917c0a0a54d8df6c745a2710828939be0685d7fc1657eee9c4dbc71615fab0174e62fb7971fa20f6d6b2da1c22c0a35c781c9dbdf009cec3d89891afc +Ctrl.hexxcghash = hexxcghash:35f601a7877ef637d6c40b4f2e1d85b888eceac9f37e686254f9d707b22bd764 +Ctrl.hexsession_id = hexsession_id:d04bce75141ed2a44942d98354ded46e861da28fc1175e5a22e8dddad4942f9a +Ctrl.type = type:D +Output = 37d942416267be06cd1ff9498dcf1e6e + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000100745f5abd8fb685eaae10854a96900806cd7d17d2d255990328594a4fdbb9fa28088ccb8fbf92ef23492a595f92c49d5fa32ea5ef6d76000635fb58496c9db824aaa41b67c3c2e8bdd525f6c6a224562c670076f6efd21fe49222c2627596b775c56dff5d477cd4cc008ef566086a495cf4ba634af20a42fb13fa52597dc252edebdfa57592494fd9cd44d0f7e27d6a6ff370876c42733977db656d7372d553c2ffc824fb02375e55069d5cccb493ec77001fb4cd73cbec6976bd45ae2cc0812c078784d917c0a0a54d8df6c745a2710828939be0685d7fc1657eee9c4dbc71615fab0174e62fb7971fa20f6d6b2da1c22c0a35c781c9dbdf009cec3d89891afc +Ctrl.hexxcghash = hexxcghash:35f601a7877ef637d6c40b4f2e1d85b888eceac9f37e686254f9d707b22bd764 +Ctrl.hexsession_id = hexsession_id:d04bce75141ed2a44942d98354ded46e861da28fc1175e5a22e8dddad4942f9a +Ctrl.type = type:E +Output = c3c8b48e228a3a671ae8c48aa4e4f1fe32c1ad4d5ae48c904836d13e7350f72e + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:00000100745f5abd8fb685eaae10854a96900806cd7d17d2d255990328594a4fdbb9fa28088ccb8fbf92ef23492a595f92c49d5fa32ea5ef6d76000635fb58496c9db824aaa41b67c3c2e8bdd525f6c6a224562c670076f6efd21fe49222c2627596b775c56dff5d477cd4cc008ef566086a495cf4ba634af20a42fb13fa52597dc252edebdfa57592494fd9cd44d0f7e27d6a6ff370876c42733977db656d7372d553c2ffc824fb02375e55069d5cccb493ec77001fb4cd73cbec6976bd45ae2cc0812c078784d917c0a0a54d8df6c745a2710828939be0685d7fc1657eee9c4dbc71615fab0174e62fb7971fa20f6d6b2da1c22c0a35c781c9dbdf009cec3d89891afc +Ctrl.hexxcghash = hexxcghash:35f601a7877ef637d6c40b4f2e1d85b888eceac9f37e686254f9d707b22bd764 +Ctrl.hexsession_id = hexsession_id:d04bce75141ed2a44942d98354ded46e861da28fc1175e5a22e8dddad4942f9a +Ctrl.type = type:F +Output = 605f7d3b3f28a8967402ba67ff916a61b0a4e9b736665c5e911fb33f60dc16fe + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001010089b741b0b9a6704f56df9aafe5f4294828fdc67f4243e9aa9b1d83166ad892f2d970fdff65eba7fa5eddb954dd86bda5262e084752c69c6b93c729ad34e9728f7c838c49f0e87349ae35feef1610b83a345c64c5b190fb5857bf0aa8419efba35789c258f19e8713e2729c184eab9d9c33a32ab3731d77e207a91849625bb855e581ca0be5d9f961aab9d65b463e416ee3d636ece573ead0d088a2fe05d87dd5ed21031f4dbea831112d3bd0e1cc1087a8395430cde3cb54d22a5965dd825329bee8c62d4599fb67ff90260204c6e608e6246f768e29a60cb85f580d4751f9c017cbf4e6062a160c6ff1d0c9d303a2c862a4986e22f72da79b17b868cee189a2 +Ctrl.hexxcghash = hexxcghash:61e49599eb3b01e3d7bc65415ce7004e20bf77805a4ff09681f3856adc129943 +Ctrl.hexsession_id = hexsession_id:832400eb1c4031502f7249d0a4279a7cbe4d4d6979289d02837d98b9ca16ff46 +Ctrl.type = type:A +Output = 7b91adc6eb48a6f82a8990efd2537903 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001010089b741b0b9a6704f56df9aafe5f4294828fdc67f4243e9aa9b1d83166ad892f2d970fdff65eba7fa5eddb954dd86bda5262e084752c69c6b93c729ad34e9728f7c838c49f0e87349ae35feef1610b83a345c64c5b190fb5857bf0aa8419efba35789c258f19e8713e2729c184eab9d9c33a32ab3731d77e207a91849625bb855e581ca0be5d9f961aab9d65b463e416ee3d636ece573ead0d088a2fe05d87dd5ed21031f4dbea831112d3bd0e1cc1087a8395430cde3cb54d22a5965dd825329bee8c62d4599fb67ff90260204c6e608e6246f768e29a60cb85f580d4751f9c017cbf4e6062a160c6ff1d0c9d303a2c862a4986e22f72da79b17b868cee189a2 +Ctrl.hexxcghash = hexxcghash:61e49599eb3b01e3d7bc65415ce7004e20bf77805a4ff09681f3856adc129943 +Ctrl.hexsession_id = hexsession_id:832400eb1c4031502f7249d0a4279a7cbe4d4d6979289d02837d98b9ca16ff46 +Ctrl.type = type:B +Output = 814c8fb54a535b38d4c2301aa49ad702 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001010089b741b0b9a6704f56df9aafe5f4294828fdc67f4243e9aa9b1d83166ad892f2d970fdff65eba7fa5eddb954dd86bda5262e084752c69c6b93c729ad34e9728f7c838c49f0e87349ae35feef1610b83a345c64c5b190fb5857bf0aa8419efba35789c258f19e8713e2729c184eab9d9c33a32ab3731d77e207a91849625bb855e581ca0be5d9f961aab9d65b463e416ee3d636ece573ead0d088a2fe05d87dd5ed21031f4dbea831112d3bd0e1cc1087a8395430cde3cb54d22a5965dd825329bee8c62d4599fb67ff90260204c6e608e6246f768e29a60cb85f580d4751f9c017cbf4e6062a160c6ff1d0c9d303a2c862a4986e22f72da79b17b868cee189a2 +Ctrl.hexxcghash = hexxcghash:61e49599eb3b01e3d7bc65415ce7004e20bf77805a4ff09681f3856adc129943 +Ctrl.hexsession_id = hexsession_id:832400eb1c4031502f7249d0a4279a7cbe4d4d6979289d02837d98b9ca16ff46 +Ctrl.type = type:C +Output = 3ec64c8571c7c7f39a9f37c0e1053324 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001010089b741b0b9a6704f56df9aafe5f4294828fdc67f4243e9aa9b1d83166ad892f2d970fdff65eba7fa5eddb954dd86bda5262e084752c69c6b93c729ad34e9728f7c838c49f0e87349ae35feef1610b83a345c64c5b190fb5857bf0aa8419efba35789c258f19e8713e2729c184eab9d9c33a32ab3731d77e207a91849625bb855e581ca0be5d9f961aab9d65b463e416ee3d636ece573ead0d088a2fe05d87dd5ed21031f4dbea831112d3bd0e1cc1087a8395430cde3cb54d22a5965dd825329bee8c62d4599fb67ff90260204c6e608e6246f768e29a60cb85f580d4751f9c017cbf4e6062a160c6ff1d0c9d303a2c862a4986e22f72da79b17b868cee189a2 +Ctrl.hexxcghash = hexxcghash:61e49599eb3b01e3d7bc65415ce7004e20bf77805a4ff09681f3856adc129943 +Ctrl.hexsession_id = hexsession_id:832400eb1c4031502f7249d0a4279a7cbe4d4d6979289d02837d98b9ca16ff46 +Ctrl.type = type:D +Output = 846d40dc45123f2710e27bd3140070c8 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001010089b741b0b9a6704f56df9aafe5f4294828fdc67f4243e9aa9b1d83166ad892f2d970fdff65eba7fa5eddb954dd86bda5262e084752c69c6b93c729ad34e9728f7c838c49f0e87349ae35feef1610b83a345c64c5b190fb5857bf0aa8419efba35789c258f19e8713e2729c184eab9d9c33a32ab3731d77e207a91849625bb855e581ca0be5d9f961aab9d65b463e416ee3d636ece573ead0d088a2fe05d87dd5ed21031f4dbea831112d3bd0e1cc1087a8395430cde3cb54d22a5965dd825329bee8c62d4599fb67ff90260204c6e608e6246f768e29a60cb85f580d4751f9c017cbf4e6062a160c6ff1d0c9d303a2c862a4986e22f72da79b17b868cee189a2 +Ctrl.hexxcghash = hexxcghash:61e49599eb3b01e3d7bc65415ce7004e20bf77805a4ff09681f3856adc129943 +Ctrl.hexsession_id = hexsession_id:832400eb1c4031502f7249d0a4279a7cbe4d4d6979289d02837d98b9ca16ff46 +Ctrl.type = type:E +Output = c2199b9bd701c2f4ee82a145adc28f3e8fac0af8dd43cb7f3da173681bcad2e0 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001010089b741b0b9a6704f56df9aafe5f4294828fdc67f4243e9aa9b1d83166ad892f2d970fdff65eba7fa5eddb954dd86bda5262e084752c69c6b93c729ad34e9728f7c838c49f0e87349ae35feef1610b83a345c64c5b190fb5857bf0aa8419efba35789c258f19e8713e2729c184eab9d9c33a32ab3731d77e207a91849625bb855e581ca0be5d9f961aab9d65b463e416ee3d636ece573ead0d088a2fe05d87dd5ed21031f4dbea831112d3bd0e1cc1087a8395430cde3cb54d22a5965dd825329bee8c62d4599fb67ff90260204c6e608e6246f768e29a60cb85f580d4751f9c017cbf4e6062a160c6ff1d0c9d303a2c862a4986e22f72da79b17b868cee189a2 +Ctrl.hexxcghash = hexxcghash:61e49599eb3b01e3d7bc65415ce7004e20bf77805a4ff09681f3856adc129943 +Ctrl.hexsession_id = hexsession_id:832400eb1c4031502f7249d0a4279a7cbe4d4d6979289d02837d98b9ca16ff46 +Ctrl.type = type:F +Output = 49f5fb8862a4f01900f9f76d6146f181483428beadb000d4f5097adf59c5eb99 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000010100f7217049f9cc4f3d59ea109a06ac3cfb79fc05dc349e1c54482072c467e503494d845004c278dabd9338d3bdb3c2f3c58cb264d65575d9946961345dcda5b9ce59cc8fdfc994acb74fe8f3b1fc143abceedc541ae74d69cd543fa7438ac5b5c84168d6e6f7fba2722c279b7cd0c1e07cdd59bb231f17174d33b7c1a6eb199cfa093476cdd31292f3bff20ae224459caaec461c76d741f0e9269ba96676a3ccebe986a3843a36747a0998bb3feaba41671db20368867a13875f76136b2418b6c807335a7133b4e4fbc0e908516ce97458abec2a32355fb061237bada4e07b950a2b1c8d41201f1c0a41c771d990e4741fef6e2eb5cd106c3b4b6000ad07b482ad +Ctrl.hexxcghash = hexxcghash:be79b302374817c2fd052704dfba5e98b05a8346db9269e6401265a1c7970d98 +Ctrl.hexsession_id = hexsession_id:def8533bf220d0c632aa4f1b16168e51c0be904c6f299225b30bd7df7bbdc6f2 +Ctrl.type = type:A +Output = 50afb2f3b8a3bc466b3a68f04da0d56c + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000010100f7217049f9cc4f3d59ea109a06ac3cfb79fc05dc349e1c54482072c467e503494d845004c278dabd9338d3bdb3c2f3c58cb264d65575d9946961345dcda5b9ce59cc8fdfc994acb74fe8f3b1fc143abceedc541ae74d69cd543fa7438ac5b5c84168d6e6f7fba2722c279b7cd0c1e07cdd59bb231f17174d33b7c1a6eb199cfa093476cdd31292f3bff20ae224459caaec461c76d741f0e9269ba96676a3ccebe986a3843a36747a0998bb3feaba41671db20368867a13875f76136b2418b6c807335a7133b4e4fbc0e908516ce97458abec2a32355fb061237bada4e07b950a2b1c8d41201f1c0a41c771d990e4741fef6e2eb5cd106c3b4b6000ad07b482ad +Ctrl.hexxcghash = hexxcghash:be79b302374817c2fd052704dfba5e98b05a8346db9269e6401265a1c7970d98 +Ctrl.hexsession_id = hexsession_id:def8533bf220d0c632aa4f1b16168e51c0be904c6f299225b30bd7df7bbdc6f2 +Ctrl.type = type:B +Output = b8672a8cc59ee1316fb9a2c0a82ffd73 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000010100f7217049f9cc4f3d59ea109a06ac3cfb79fc05dc349e1c54482072c467e503494d845004c278dabd9338d3bdb3c2f3c58cb264d65575d9946961345dcda5b9ce59cc8fdfc994acb74fe8f3b1fc143abceedc541ae74d69cd543fa7438ac5b5c84168d6e6f7fba2722c279b7cd0c1e07cdd59bb231f17174d33b7c1a6eb199cfa093476cdd31292f3bff20ae224459caaec461c76d741f0e9269ba96676a3ccebe986a3843a36747a0998bb3feaba41671db20368867a13875f76136b2418b6c807335a7133b4e4fbc0e908516ce97458abec2a32355fb061237bada4e07b950a2b1c8d41201f1c0a41c771d990e4741fef6e2eb5cd106c3b4b6000ad07b482ad +Ctrl.hexxcghash = hexxcghash:be79b302374817c2fd052704dfba5e98b05a8346db9269e6401265a1c7970d98 +Ctrl.hexsession_id = hexsession_id:def8533bf220d0c632aa4f1b16168e51c0be904c6f299225b30bd7df7bbdc6f2 +Ctrl.type = type:C +Output = d854cbdb8f7544b796f982e4973d4de9 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000010100f7217049f9cc4f3d59ea109a06ac3cfb79fc05dc349e1c54482072c467e503494d845004c278dabd9338d3bdb3c2f3c58cb264d65575d9946961345dcda5b9ce59cc8fdfc994acb74fe8f3b1fc143abceedc541ae74d69cd543fa7438ac5b5c84168d6e6f7fba2722c279b7cd0c1e07cdd59bb231f17174d33b7c1a6eb199cfa093476cdd31292f3bff20ae224459caaec461c76d741f0e9269ba96676a3ccebe986a3843a36747a0998bb3feaba41671db20368867a13875f76136b2418b6c807335a7133b4e4fbc0e908516ce97458abec2a32355fb061237bada4e07b950a2b1c8d41201f1c0a41c771d990e4741fef6e2eb5cd106c3b4b6000ad07b482ad +Ctrl.hexxcghash = hexxcghash:be79b302374817c2fd052704dfba5e98b05a8346db9269e6401265a1c7970d98 +Ctrl.hexsession_id = hexsession_id:def8533bf220d0c632aa4f1b16168e51c0be904c6f299225b30bd7df7bbdc6f2 +Ctrl.type = type:D +Output = bd6bde82c451ee39069d0794f7000f38 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000010100f7217049f9cc4f3d59ea109a06ac3cfb79fc05dc349e1c54482072c467e503494d845004c278dabd9338d3bdb3c2f3c58cb264d65575d9946961345dcda5b9ce59cc8fdfc994acb74fe8f3b1fc143abceedc541ae74d69cd543fa7438ac5b5c84168d6e6f7fba2722c279b7cd0c1e07cdd59bb231f17174d33b7c1a6eb199cfa093476cdd31292f3bff20ae224459caaec461c76d741f0e9269ba96676a3ccebe986a3843a36747a0998bb3feaba41671db20368867a13875f76136b2418b6c807335a7133b4e4fbc0e908516ce97458abec2a32355fb061237bada4e07b950a2b1c8d41201f1c0a41c771d990e4741fef6e2eb5cd106c3b4b6000ad07b482ad +Ctrl.hexxcghash = hexxcghash:be79b302374817c2fd052704dfba5e98b05a8346db9269e6401265a1c7970d98 +Ctrl.hexsession_id = hexsession_id:def8533bf220d0c632aa4f1b16168e51c0be904c6f299225b30bd7df7bbdc6f2 +Ctrl.type = type:E +Output = 270794ec70fcd9d742aad66c54001b4c218ae8cca813453560a9aeaacc6909ec + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:0000010100f7217049f9cc4f3d59ea109a06ac3cfb79fc05dc349e1c54482072c467e503494d845004c278dabd9338d3bdb3c2f3c58cb264d65575d9946961345dcda5b9ce59cc8fdfc994acb74fe8f3b1fc143abceedc541ae74d69cd543fa7438ac5b5c84168d6e6f7fba2722c279b7cd0c1e07cdd59bb231f17174d33b7c1a6eb199cfa093476cdd31292f3bff20ae224459caaec461c76d741f0e9269ba96676a3ccebe986a3843a36747a0998bb3feaba41671db20368867a13875f76136b2418b6c807335a7133b4e4fbc0e908516ce97458abec2a32355fb061237bada4e07b950a2b1c8d41201f1c0a41c771d990e4741fef6e2eb5cd106c3b4b6000ad07b482ad +Ctrl.hexxcghash = hexxcghash:be79b302374817c2fd052704dfba5e98b05a8346db9269e6401265a1c7970d98 +Ctrl.hexsession_id = hexsession_id:def8533bf220d0c632aa4f1b16168e51c0be904c6f299225b30bd7df7bbdc6f2 +Ctrl.type = type:F +Output = e967df7571a0eb82f59ddfead22c617beeefa25ce4afd80ac8320bc2635c70d0 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001001b3a1cab1e87a29e229efcae0f569d855a61d6da6ea0ae5bed3491c7bdb5f70f6caf8dc305100160bbf6ecd726b11799da685ce4528ee689fe292043e318ad9f797bd5746399e007cf1f40d7918b85e4607f6e674da84709543dd0d50ad1d5c993770b4d0c045fdef89d5534c3d77edd8dc4536a10cc2b5d0bd14caa7e029ba8a81d5f5fb16524b56ddb9f35d96593955514b80d89b711ff717e11ad3d691424f6cefc5c613b04e5532d89f91383e4a6f45058604bb63876b1308dc7eb8f86cb5c032e6f1f061646e0bbf27b0c7eaa8216ba9381cb7734df24fe6691183c4823d3b645f3139a45b2b8ee3909bb431477f332ea3616b919724782fda8546a3235 +Ctrl.hexxcghash = hexxcghash:fe491f41cdbcaec6b8821eda916eb03bc1a0e934c14850696f79bd30c73a18e2 +Ctrl.hexsession_id = hexsession_id:df1c0910cf8b81ca157916b8ac0411b7363f62ce10ee23cbb69ddfe8c3f16be9 +Ctrl.type = type:A +Output = ebb3d10f461d8697a064461822f34507 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001001b3a1cab1e87a29e229efcae0f569d855a61d6da6ea0ae5bed3491c7bdb5f70f6caf8dc305100160bbf6ecd726b11799da685ce4528ee689fe292043e318ad9f797bd5746399e007cf1f40d7918b85e4607f6e674da84709543dd0d50ad1d5c993770b4d0c045fdef89d5534c3d77edd8dc4536a10cc2b5d0bd14caa7e029ba8a81d5f5fb16524b56ddb9f35d96593955514b80d89b711ff717e11ad3d691424f6cefc5c613b04e5532d89f91383e4a6f45058604bb63876b1308dc7eb8f86cb5c032e6f1f061646e0bbf27b0c7eaa8216ba9381cb7734df24fe6691183c4823d3b645f3139a45b2b8ee3909bb431477f332ea3616b919724782fda8546a3235 +Ctrl.hexxcghash = hexxcghash:fe491f41cdbcaec6b8821eda916eb03bc1a0e934c14850696f79bd30c73a18e2 +Ctrl.hexsession_id = hexsession_id:df1c0910cf8b81ca157916b8ac0411b7363f62ce10ee23cbb69ddfe8c3f16be9 +Ctrl.type = type:B +Output = bb95f9cbed695529fd7977281332100b + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001001b3a1cab1e87a29e229efcae0f569d855a61d6da6ea0ae5bed3491c7bdb5f70f6caf8dc305100160bbf6ecd726b11799da685ce4528ee689fe292043e318ad9f797bd5746399e007cf1f40d7918b85e4607f6e674da84709543dd0d50ad1d5c993770b4d0c045fdef89d5534c3d77edd8dc4536a10cc2b5d0bd14caa7e029ba8a81d5f5fb16524b56ddb9f35d96593955514b80d89b711ff717e11ad3d691424f6cefc5c613b04e5532d89f91383e4a6f45058604bb63876b1308dc7eb8f86cb5c032e6f1f061646e0bbf27b0c7eaa8216ba9381cb7734df24fe6691183c4823d3b645f3139a45b2b8ee3909bb431477f332ea3616b919724782fda8546a3235 +Ctrl.hexxcghash = hexxcghash:fe491f41cdbcaec6b8821eda916eb03bc1a0e934c14850696f79bd30c73a18e2 +Ctrl.hexsession_id = hexsession_id:df1c0910cf8b81ca157916b8ac0411b7363f62ce10ee23cbb69ddfe8c3f16be9 +Ctrl.type = type:C +Output = da1318a6a34224cc86c9afa41991db4b + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001001b3a1cab1e87a29e229efcae0f569d855a61d6da6ea0ae5bed3491c7bdb5f70f6caf8dc305100160bbf6ecd726b11799da685ce4528ee689fe292043e318ad9f797bd5746399e007cf1f40d7918b85e4607f6e674da84709543dd0d50ad1d5c993770b4d0c045fdef89d5534c3d77edd8dc4536a10cc2b5d0bd14caa7e029ba8a81d5f5fb16524b56ddb9f35d96593955514b80d89b711ff717e11ad3d691424f6cefc5c613b04e5532d89f91383e4a6f45058604bb63876b1308dc7eb8f86cb5c032e6f1f061646e0bbf27b0c7eaa8216ba9381cb7734df24fe6691183c4823d3b645f3139a45b2b8ee3909bb431477f332ea3616b919724782fda8546a3235 +Ctrl.hexxcghash = hexxcghash:fe491f41cdbcaec6b8821eda916eb03bc1a0e934c14850696f79bd30c73a18e2 +Ctrl.hexsession_id = hexsession_id:df1c0910cf8b81ca157916b8ac0411b7363f62ce10ee23cbb69ddfe8c3f16be9 +Ctrl.type = type:D +Output = 091f8fa87a01c5768de8d663ba8bf9d7 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001001b3a1cab1e87a29e229efcae0f569d855a61d6da6ea0ae5bed3491c7bdb5f70f6caf8dc305100160bbf6ecd726b11799da685ce4528ee689fe292043e318ad9f797bd5746399e007cf1f40d7918b85e4607f6e674da84709543dd0d50ad1d5c993770b4d0c045fdef89d5534c3d77edd8dc4536a10cc2b5d0bd14caa7e029ba8a81d5f5fb16524b56ddb9f35d96593955514b80d89b711ff717e11ad3d691424f6cefc5c613b04e5532d89f91383e4a6f45058604bb63876b1308dc7eb8f86cb5c032e6f1f061646e0bbf27b0c7eaa8216ba9381cb7734df24fe6691183c4823d3b645f3139a45b2b8ee3909bb431477f332ea3616b919724782fda8546a3235 +Ctrl.hexxcghash = hexxcghash:fe491f41cdbcaec6b8821eda916eb03bc1a0e934c14850696f79bd30c73a18e2 +Ctrl.hexsession_id = hexsession_id:df1c0910cf8b81ca157916b8ac0411b7363f62ce10ee23cbb69ddfe8c3f16be9 +Ctrl.type = type:E +Output = cc09127a759000f3bd9724fbf5285cd680ee323ffc19cf2f495403f896587317 + +KDF = SSHKDF +Ctrl.md = md:SHA256 +Ctrl.hexkey = hexkey:000001001b3a1cab1e87a29e229efcae0f569d855a61d6da6ea0ae5bed3491c7bdb5f70f6caf8dc305100160bbf6ecd726b11799da685ce4528ee689fe292043e318ad9f797bd5746399e007cf1f40d7918b85e4607f6e674da84709543dd0d50ad1d5c993770b4d0c045fdef89d5534c3d77edd8dc4536a10cc2b5d0bd14caa7e029ba8a81d5f5fb16524b56ddb9f35d96593955514b80d89b711ff717e11ad3d691424f6cefc5c613b04e5532d89f91383e4a6f45058604bb63876b1308dc7eb8f86cb5c032e6f1f061646e0bbf27b0c7eaa8216ba9381cb7734df24fe6691183c4823d3b645f3139a45b2b8ee3909bb431477f332ea3616b919724782fda8546a3235 +Ctrl.hexxcghash = hexxcghash:fe491f41cdbcaec6b8821eda916eb03bc1a0e934c14850696f79bd30c73a18e2 +Ctrl.hexsession_id = hexsession_id:df1c0910cf8b81ca157916b8ac0411b7363f62ce10ee23cbb69ddfe8c3f16be9 +Ctrl.type = type:F +Output = a3ceddafc49f7c0131ce2965945c3892be6605b465877bc0637685612ede242b + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100941456bd72267a90690ffc873528f4b76394431aceee1e24a7bed414568d9b97c84ce13d34a2b4a63ef735bac23af0b7fa634a9e56c2d775c741a61d63981332f9027d3f52c4a9a3adb83e96d39f7e6bb72514797da32f2f0edb59accfc58a49fc34b198e0285b31032ac9f06907def196f5748bd32ce22a5383a1bbdbd31f24 +Ctrl.hexxcghash = hexxcghash:e0dee80ccc162884393930ad2073d92120c804254162446b7d048f85a1a4dd7b636a09b69252b80952a0581e9490ee5a +Ctrl.hexsession_id = hexsession_id:e0dee80ccc162884393930ad2073d92120c804254162446b7d048f85a1a4dd7b636a09b69252b80952a0581e9490ee5a +Ctrl.type = type:A +Output = d31c16f67b17bc69 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100941456bd72267a90690ffc873528f4b76394431aceee1e24a7bed414568d9b97c84ce13d34a2b4a63ef735bac23af0b7fa634a9e56c2d775c741a61d63981332f9027d3f52c4a9a3adb83e96d39f7e6bb72514797da32f2f0edb59accfc58a49fc34b198e0285b31032ac9f06907def196f5748bd32ce22a5383a1bbdbd31f24 +Ctrl.hexxcghash = hexxcghash:e0dee80ccc162884393930ad2073d92120c804254162446b7d048f85a1a4dd7b636a09b69252b80952a0581e9490ee5a +Ctrl.hexsession_id = hexsession_id:e0dee80ccc162884393930ad2073d92120c804254162446b7d048f85a1a4dd7b636a09b69252b80952a0581e9490ee5a +Ctrl.type = type:B +Output = 675340f27269e7ae + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100941456bd72267a90690ffc873528f4b76394431aceee1e24a7bed414568d9b97c84ce13d34a2b4a63ef735bac23af0b7fa634a9e56c2d775c741a61d63981332f9027d3f52c4a9a3adb83e96d39f7e6bb72514797da32f2f0edb59accfc58a49fc34b198e0285b31032ac9f06907def196f5748bd32ce22a5383a1bbdbd31f24 +Ctrl.hexxcghash = hexxcghash:e0dee80ccc162884393930ad2073d92120c804254162446b7d048f85a1a4dd7b636a09b69252b80952a0581e9490ee5a +Ctrl.hexsession_id = hexsession_id:e0dee80ccc162884393930ad2073d92120c804254162446b7d048f85a1a4dd7b636a09b69252b80952a0581e9490ee5a +Ctrl.type = type:C +Output = 2ffed577a90d29872ea59f3782c3b406908d7394ff63c9d7 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100941456bd72267a90690ffc873528f4b76394431aceee1e24a7bed414568d9b97c84ce13d34a2b4a63ef735bac23af0b7fa634a9e56c2d775c741a61d63981332f9027d3f52c4a9a3adb83e96d39f7e6bb72514797da32f2f0edb59accfc58a49fc34b198e0285b31032ac9f06907def196f5748bd32ce22a5383a1bbdbd31f24 +Ctrl.hexxcghash = hexxcghash:e0dee80ccc162884393930ad2073d92120c804254162446b7d048f85a1a4dd7b636a09b69252b80952a0581e9490ee5a +Ctrl.hexsession_id = hexsession_id:e0dee80ccc162884393930ad2073d92120c804254162446b7d048f85a1a4dd7b636a09b69252b80952a0581e9490ee5a +Ctrl.type = type:D +Output = fae751987c1fa8665e4387e410297db58ff69b260a8fe85f + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100941456bd72267a90690ffc873528f4b76394431aceee1e24a7bed414568d9b97c84ce13d34a2b4a63ef735bac23af0b7fa634a9e56c2d775c741a61d63981332f9027d3f52c4a9a3adb83e96d39f7e6bb72514797da32f2f0edb59accfc58a49fc34b198e0285b31032ac9f06907def196f5748bd32ce22a5383a1bbdbd31f24 +Ctrl.hexxcghash = hexxcghash:e0dee80ccc162884393930ad2073d92120c804254162446b7d048f85a1a4dd7b636a09b69252b80952a0581e9490ee5a +Ctrl.hexsession_id = hexsession_id:e0dee80ccc162884393930ad2073d92120c804254162446b7d048f85a1a4dd7b636a09b69252b80952a0581e9490ee5a +Ctrl.type = type:E +Output = ff2db5975edf3824325b257455791869434c6af47fb0c8145253c2695abfd2b8c980565ad20e6b9313ba44ee488bafb0 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100941456bd72267a90690ffc873528f4b76394431aceee1e24a7bed414568d9b97c84ce13d34a2b4a63ef735bac23af0b7fa634a9e56c2d775c741a61d63981332f9027d3f52c4a9a3adb83e96d39f7e6bb72514797da32f2f0edb59accfc58a49fc34b198e0285b31032ac9f06907def196f5748bd32ce22a5383a1bbdbd31f24 +Ctrl.hexxcghash = hexxcghash:e0dee80ccc162884393930ad2073d92120c804254162446b7d048f85a1a4dd7b636a09b69252b80952a0581e9490ee5a +Ctrl.hexsession_id = hexsession_id:e0dee80ccc162884393930ad2073d92120c804254162446b7d048f85a1a4dd7b636a09b69252b80952a0581e9490ee5a +Ctrl.type = type:F +Output = 85a9463cd653c7619d4dc85006406d6ed3364220419ca13810301be0f0389d932ddeaebb0e504a0849e2e73a7d087db2 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000080319534aabf1100b1ef3ec089ba6e5b25946bdf67cbc92493c29d0e63765ee38dc27e15720393d6aa5741b2129b24ee6a71c079190588232f4facadd034dd6e456bf45aedf72a059eca591ceb2d7c50f8ae918528872f40eaf62faa511d6bfbed4b8613163c42b99eb30c20ecce1c36a78b93fb0046467a0bcb41dfa1e609b61b +Ctrl.hexxcghash = hexxcghash:0f831ff3e907b3f0922722bd8073b2c263c77c7f552c0b0b12be68f19520b1ae2bbf62a9dba0f582d5f0197c0d534f6e +Ctrl.hexsession_id = hexsession_id:dede417f4b45d58d54cbe59e7d80bab3150ccd99583aa87f7ecde731462d074edf49907278819043341d1fe20e136563 +Ctrl.type = type:A +Output = 93323451441b761f + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000080319534aabf1100b1ef3ec089ba6e5b25946bdf67cbc92493c29d0e63765ee38dc27e15720393d6aa5741b2129b24ee6a71c079190588232f4facadd034dd6e456bf45aedf72a059eca591ceb2d7c50f8ae918528872f40eaf62faa511d6bfbed4b8613163c42b99eb30c20ecce1c36a78b93fb0046467a0bcb41dfa1e609b61b +Ctrl.hexxcghash = hexxcghash:0f831ff3e907b3f0922722bd8073b2c263c77c7f552c0b0b12be68f19520b1ae2bbf62a9dba0f582d5f0197c0d534f6e +Ctrl.hexsession_id = hexsession_id:dede417f4b45d58d54cbe59e7d80bab3150ccd99583aa87f7ecde731462d074edf49907278819043341d1fe20e136563 +Ctrl.type = type:B +Output = 3dbfdc2364807ecc + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000080319534aabf1100b1ef3ec089ba6e5b25946bdf67cbc92493c29d0e63765ee38dc27e15720393d6aa5741b2129b24ee6a71c079190588232f4facadd034dd6e456bf45aedf72a059eca591ceb2d7c50f8ae918528872f40eaf62faa511d6bfbed4b8613163c42b99eb30c20ecce1c36a78b93fb0046467a0bcb41dfa1e609b61b +Ctrl.hexxcghash = hexxcghash:0f831ff3e907b3f0922722bd8073b2c263c77c7f552c0b0b12be68f19520b1ae2bbf62a9dba0f582d5f0197c0d534f6e +Ctrl.hexsession_id = hexsession_id:dede417f4b45d58d54cbe59e7d80bab3150ccd99583aa87f7ecde731462d074edf49907278819043341d1fe20e136563 +Ctrl.type = type:C +Output = c699e3488f825fb24c5e2adc699ec83a5d8fce339fa0e9b0 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000080319534aabf1100b1ef3ec089ba6e5b25946bdf67cbc92493c29d0e63765ee38dc27e15720393d6aa5741b2129b24ee6a71c079190588232f4facadd034dd6e456bf45aedf72a059eca591ceb2d7c50f8ae918528872f40eaf62faa511d6bfbed4b8613163c42b99eb30c20ecce1c36a78b93fb0046467a0bcb41dfa1e609b61b +Ctrl.hexxcghash = hexxcghash:0f831ff3e907b3f0922722bd8073b2c263c77c7f552c0b0b12be68f19520b1ae2bbf62a9dba0f582d5f0197c0d534f6e +Ctrl.hexsession_id = hexsession_id:dede417f4b45d58d54cbe59e7d80bab3150ccd99583aa87f7ecde731462d074edf49907278819043341d1fe20e136563 +Ctrl.type = type:D +Output = a250b13da0716f2d4440cc4cac01a2d591002ebfaada9758 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000080319534aabf1100b1ef3ec089ba6e5b25946bdf67cbc92493c29d0e63765ee38dc27e15720393d6aa5741b2129b24ee6a71c079190588232f4facadd034dd6e456bf45aedf72a059eca591ceb2d7c50f8ae918528872f40eaf62faa511d6bfbed4b8613163c42b99eb30c20ecce1c36a78b93fb0046467a0bcb41dfa1e609b61b +Ctrl.hexxcghash = hexxcghash:0f831ff3e907b3f0922722bd8073b2c263c77c7f552c0b0b12be68f19520b1ae2bbf62a9dba0f582d5f0197c0d534f6e +Ctrl.hexsession_id = hexsession_id:dede417f4b45d58d54cbe59e7d80bab3150ccd99583aa87f7ecde731462d074edf49907278819043341d1fe20e136563 +Ctrl.type = type:E +Output = 76966a1b7d5f250eea3696077a373b9421e8294dd7cb0aedd172cf9c6879ef34c9deb9c208f11c5d4b6fd713b576894d + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000080319534aabf1100b1ef3ec089ba6e5b25946bdf67cbc92493c29d0e63765ee38dc27e15720393d6aa5741b2129b24ee6a71c079190588232f4facadd034dd6e456bf45aedf72a059eca591ceb2d7c50f8ae918528872f40eaf62faa511d6bfbed4b8613163c42b99eb30c20ecce1c36a78b93fb0046467a0bcb41dfa1e609b61b +Ctrl.hexxcghash = hexxcghash:0f831ff3e907b3f0922722bd8073b2c263c77c7f552c0b0b12be68f19520b1ae2bbf62a9dba0f582d5f0197c0d534f6e +Ctrl.hexsession_id = hexsession_id:dede417f4b45d58d54cbe59e7d80bab3150ccd99583aa87f7ecde731462d074edf49907278819043341d1fe20e136563 +Ctrl.type = type:F +Output = 28a66e21fe7f8a070fe40ecf68a64f2a35a46b84ac38810902639906611053832179d5c07a8422993496059af67f585f + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000803b4fd086d25a4bf0b5347a2e323d45525b12a3df508b9129ae7d51637b6fc76aba743d7ee254888ee6d49314ebd8b82e25d187e80770ff6365fbfe96029e23b92ccbb2bfb4cf27e175cd09154b0e68d75a84c490f936ee0366180f781049ddcfefcb4bf25409ba8a8a9a3296cf0619bc51363abfd58cea3d0480673d8ac8370a +Ctrl.hexxcghash = hexxcghash:8fbe46474bf6ccdad0f706492c4b534cf5698b38afc4b21a6af4a00c3ccda689cf5382e5de34a48bd798f083570ad411 +Ctrl.hexsession_id = hexsession_id:a397aa78a58fcf619f1e8368018d6e40934d4befc96671a63aea4558d5e54c9f42bdca50f618ec84b2d19b539a1f10f1 +Ctrl.type = type:A +Output = b0db344b1e2e98d3 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000803b4fd086d25a4bf0b5347a2e323d45525b12a3df508b9129ae7d51637b6fc76aba743d7ee254888ee6d49314ebd8b82e25d187e80770ff6365fbfe96029e23b92ccbb2bfb4cf27e175cd09154b0e68d75a84c490f936ee0366180f781049ddcfefcb4bf25409ba8a8a9a3296cf0619bc51363abfd58cea3d0480673d8ac8370a +Ctrl.hexxcghash = hexxcghash:8fbe46474bf6ccdad0f706492c4b534cf5698b38afc4b21a6af4a00c3ccda689cf5382e5de34a48bd798f083570ad411 +Ctrl.hexsession_id = hexsession_id:a397aa78a58fcf619f1e8368018d6e40934d4befc96671a63aea4558d5e54c9f42bdca50f618ec84b2d19b539a1f10f1 +Ctrl.type = type:B +Output = 29fcd6a7d317f527 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000803b4fd086d25a4bf0b5347a2e323d45525b12a3df508b9129ae7d51637b6fc76aba743d7ee254888ee6d49314ebd8b82e25d187e80770ff6365fbfe96029e23b92ccbb2bfb4cf27e175cd09154b0e68d75a84c490f936ee0366180f781049ddcfefcb4bf25409ba8a8a9a3296cf0619bc51363abfd58cea3d0480673d8ac8370a +Ctrl.hexxcghash = hexxcghash:8fbe46474bf6ccdad0f706492c4b534cf5698b38afc4b21a6af4a00c3ccda689cf5382e5de34a48bd798f083570ad411 +Ctrl.hexsession_id = hexsession_id:a397aa78a58fcf619f1e8368018d6e40934d4befc96671a63aea4558d5e54c9f42bdca50f618ec84b2d19b539a1f10f1 +Ctrl.type = type:C +Output = 156f9d4c58d7783959e785af3fefb133662009b93891bff7 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000803b4fd086d25a4bf0b5347a2e323d45525b12a3df508b9129ae7d51637b6fc76aba743d7ee254888ee6d49314ebd8b82e25d187e80770ff6365fbfe96029e23b92ccbb2bfb4cf27e175cd09154b0e68d75a84c490f936ee0366180f781049ddcfefcb4bf25409ba8a8a9a3296cf0619bc51363abfd58cea3d0480673d8ac8370a +Ctrl.hexxcghash = hexxcghash:8fbe46474bf6ccdad0f706492c4b534cf5698b38afc4b21a6af4a00c3ccda689cf5382e5de34a48bd798f083570ad411 +Ctrl.hexsession_id = hexsession_id:a397aa78a58fcf619f1e8368018d6e40934d4befc96671a63aea4558d5e54c9f42bdca50f618ec84b2d19b539a1f10f1 +Ctrl.type = type:D +Output = c4bc4471e2c7f04dbef9100977e222f4156a7118a122f6cd + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000803b4fd086d25a4bf0b5347a2e323d45525b12a3df508b9129ae7d51637b6fc76aba743d7ee254888ee6d49314ebd8b82e25d187e80770ff6365fbfe96029e23b92ccbb2bfb4cf27e175cd09154b0e68d75a84c490f936ee0366180f781049ddcfefcb4bf25409ba8a8a9a3296cf0619bc51363abfd58cea3d0480673d8ac8370a +Ctrl.hexxcghash = hexxcghash:8fbe46474bf6ccdad0f706492c4b534cf5698b38afc4b21a6af4a00c3ccda689cf5382e5de34a48bd798f083570ad411 +Ctrl.hexsession_id = hexsession_id:a397aa78a58fcf619f1e8368018d6e40934d4befc96671a63aea4558d5e54c9f42bdca50f618ec84b2d19b539a1f10f1 +Ctrl.type = type:E +Output = 5878fdbf693638430e31b287ad8cfab560d952d7a828167bd0454e0c8aa14274c7c0c1921a31575f77fd80144e6d2999 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000803b4fd086d25a4bf0b5347a2e323d45525b12a3df508b9129ae7d51637b6fc76aba743d7ee254888ee6d49314ebd8b82e25d187e80770ff6365fbfe96029e23b92ccbb2bfb4cf27e175cd09154b0e68d75a84c490f936ee0366180f781049ddcfefcb4bf25409ba8a8a9a3296cf0619bc51363abfd58cea3d0480673d8ac8370a +Ctrl.hexxcghash = hexxcghash:8fbe46474bf6ccdad0f706492c4b534cf5698b38afc4b21a6af4a00c3ccda689cf5382e5de34a48bd798f083570ad411 +Ctrl.hexsession_id = hexsession_id:a397aa78a58fcf619f1e8368018d6e40934d4befc96671a63aea4558d5e54c9f42bdca50f618ec84b2d19b539a1f10f1 +Ctrl.type = type:F +Output = 1fdb34ae9d2f12363350dd5aeefe728066500a083668ac2d48af671d7651a67acdf9b7a0581b922e67278d53f0b2fb17 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000801a3eab3e516f776ab0a282861a42fec52223859d5af2da778727bd0363ba5983b5d883cd75132c94351a7b5b23fba10aec35a78ab03ba183682b4d3e72c67bd1e6b83afc5178c97624f718243d9377694f085e15cef33040fca144e856c74ab0e70dbf4a7766aa916e5edf184ae7dbd3f19d2491e45828fe5969d61075695e39 +Ctrl.hexxcghash = hexxcghash:5e9be9089c8b952d8ffdb0cbdbe5bb6c1f336e6620292da1ab5eb92eef379655579e24cd6273bd4f552d46dfa87df917 +Ctrl.hexsession_id = hexsession_id:c54542e32ba1ae8c266781c6d14c8356d6f548cfdb8a303c4f1c947318610eed8ae3d6d4350ab4dddc7f9202a510d32e +Ctrl.type = type:A +Output = c828150149eb433a + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000801a3eab3e516f776ab0a282861a42fec52223859d5af2da778727bd0363ba5983b5d883cd75132c94351a7b5b23fba10aec35a78ab03ba183682b4d3e72c67bd1e6b83afc5178c97624f718243d9377694f085e15cef33040fca144e856c74ab0e70dbf4a7766aa916e5edf184ae7dbd3f19d2491e45828fe5969d61075695e39 +Ctrl.hexxcghash = hexxcghash:5e9be9089c8b952d8ffdb0cbdbe5bb6c1f336e6620292da1ab5eb92eef379655579e24cd6273bd4f552d46dfa87df917 +Ctrl.hexsession_id = hexsession_id:c54542e32ba1ae8c266781c6d14c8356d6f548cfdb8a303c4f1c947318610eed8ae3d6d4350ab4dddc7f9202a510d32e +Ctrl.type = type:B +Output = 45636e088875de58 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000801a3eab3e516f776ab0a282861a42fec52223859d5af2da778727bd0363ba5983b5d883cd75132c94351a7b5b23fba10aec35a78ab03ba183682b4d3e72c67bd1e6b83afc5178c97624f718243d9377694f085e15cef33040fca144e856c74ab0e70dbf4a7766aa916e5edf184ae7dbd3f19d2491e45828fe5969d61075695e39 +Ctrl.hexxcghash = hexxcghash:5e9be9089c8b952d8ffdb0cbdbe5bb6c1f336e6620292da1ab5eb92eef379655579e24cd6273bd4f552d46dfa87df917 +Ctrl.hexsession_id = hexsession_id:c54542e32ba1ae8c266781c6d14c8356d6f548cfdb8a303c4f1c947318610eed8ae3d6d4350ab4dddc7f9202a510d32e +Ctrl.type = type:C +Output = 75da9408e65f61dac9dafa496675214b0d84b0e66feb68fe + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000801a3eab3e516f776ab0a282861a42fec52223859d5af2da778727bd0363ba5983b5d883cd75132c94351a7b5b23fba10aec35a78ab03ba183682b4d3e72c67bd1e6b83afc5178c97624f718243d9377694f085e15cef33040fca144e856c74ab0e70dbf4a7766aa916e5edf184ae7dbd3f19d2491e45828fe5969d61075695e39 +Ctrl.hexxcghash = hexxcghash:5e9be9089c8b952d8ffdb0cbdbe5bb6c1f336e6620292da1ab5eb92eef379655579e24cd6273bd4f552d46dfa87df917 +Ctrl.hexsession_id = hexsession_id:c54542e32ba1ae8c266781c6d14c8356d6f548cfdb8a303c4f1c947318610eed8ae3d6d4350ab4dddc7f9202a510d32e +Ctrl.type = type:D +Output = cb7897fdeb2c235be5812d1959cb55907ff02a9cf6c76c17 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000801a3eab3e516f776ab0a282861a42fec52223859d5af2da778727bd0363ba5983b5d883cd75132c94351a7b5b23fba10aec35a78ab03ba183682b4d3e72c67bd1e6b83afc5178c97624f718243d9377694f085e15cef33040fca144e856c74ab0e70dbf4a7766aa916e5edf184ae7dbd3f19d2491e45828fe5969d61075695e39 +Ctrl.hexxcghash = hexxcghash:5e9be9089c8b952d8ffdb0cbdbe5bb6c1f336e6620292da1ab5eb92eef379655579e24cd6273bd4f552d46dfa87df917 +Ctrl.hexsession_id = hexsession_id:c54542e32ba1ae8c266781c6d14c8356d6f548cfdb8a303c4f1c947318610eed8ae3d6d4350ab4dddc7f9202a510d32e +Ctrl.type = type:E +Output = 13a8062561c28c1bc678a019b22da95aa462f82cfff6268876ffe2fddc86536fa4d19bdc15d90c1cff4d37e69f1fc021 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000801a3eab3e516f776ab0a282861a42fec52223859d5af2da778727bd0363ba5983b5d883cd75132c94351a7b5b23fba10aec35a78ab03ba183682b4d3e72c67bd1e6b83afc5178c97624f718243d9377694f085e15cef33040fca144e856c74ab0e70dbf4a7766aa916e5edf184ae7dbd3f19d2491e45828fe5969d61075695e39 +Ctrl.hexxcghash = hexxcghash:5e9be9089c8b952d8ffdb0cbdbe5bb6c1f336e6620292da1ab5eb92eef379655579e24cd6273bd4f552d46dfa87df917 +Ctrl.hexsession_id = hexsession_id:c54542e32ba1ae8c266781c6d14c8356d6f548cfdb8a303c4f1c947318610eed8ae3d6d4350ab4dddc7f9202a510d32e +Ctrl.type = type:F +Output = 69437ec44d764caeb89faebf7b8577b433677abcb0c58f166a5e5724a4eb293d335004d412c983d4c7aca4df1b8328fd + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000810091473fb24a9fca3fd1639c029c0e6ae6390c83b3278336017068771569d0957bf7ff80a8f188b936f7e238502efc86e518ebafcc4ecdf1b44f01bb070b3cc88c1b23937dcd04c456987a3b75df3874ca54a10e7f4a3123a7fb47365a7552c9e3f7070ec19d1ebb9922dd10aa0280222db770a71ce9541b60b53d9e7783350100 +Ctrl.hexxcghash = hexxcghash:d0bbb1a81edca6ae7ac5c9e60bf447d198bf875b945fcba06b0074e640331b2205c2c055864c011913f6dad3e34ed44b +Ctrl.hexsession_id = hexsession_id:58d7b77f0cc5480254c68e4e9cb06a1ea5389b39a3f9cba5c9ca03a091fb123aeb5934c519b60181d097b8cc9455b96a +Ctrl.type = type:A +Output = b669e05aa9706468 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000810091473fb24a9fca3fd1639c029c0e6ae6390c83b3278336017068771569d0957bf7ff80a8f188b936f7e238502efc86e518ebafcc4ecdf1b44f01bb070b3cc88c1b23937dcd04c456987a3b75df3874ca54a10e7f4a3123a7fb47365a7552c9e3f7070ec19d1ebb9922dd10aa0280222db770a71ce9541b60b53d9e7783350100 +Ctrl.hexxcghash = hexxcghash:d0bbb1a81edca6ae7ac5c9e60bf447d198bf875b945fcba06b0074e640331b2205c2c055864c011913f6dad3e34ed44b +Ctrl.hexsession_id = hexsession_id:58d7b77f0cc5480254c68e4e9cb06a1ea5389b39a3f9cba5c9ca03a091fb123aeb5934c519b60181d097b8cc9455b96a +Ctrl.type = type:B +Output = 57f943111ca01b15 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000810091473fb24a9fca3fd1639c029c0e6ae6390c83b3278336017068771569d0957bf7ff80a8f188b936f7e238502efc86e518ebafcc4ecdf1b44f01bb070b3cc88c1b23937dcd04c456987a3b75df3874ca54a10e7f4a3123a7fb47365a7552c9e3f7070ec19d1ebb9922dd10aa0280222db770a71ce9541b60b53d9e7783350100 +Ctrl.hexxcghash = hexxcghash:d0bbb1a81edca6ae7ac5c9e60bf447d198bf875b945fcba06b0074e640331b2205c2c055864c011913f6dad3e34ed44b +Ctrl.hexsession_id = hexsession_id:58d7b77f0cc5480254c68e4e9cb06a1ea5389b39a3f9cba5c9ca03a091fb123aeb5934c519b60181d097b8cc9455b96a +Ctrl.type = type:C +Output = e9aa354b6b85f357d6f982fcc18a6ca797bd7a125e786f8a + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000810091473fb24a9fca3fd1639c029c0e6ae6390c83b3278336017068771569d0957bf7ff80a8f188b936f7e238502efc86e518ebafcc4ecdf1b44f01bb070b3cc88c1b23937dcd04c456987a3b75df3874ca54a10e7f4a3123a7fb47365a7552c9e3f7070ec19d1ebb9922dd10aa0280222db770a71ce9541b60b53d9e7783350100 +Ctrl.hexxcghash = hexxcghash:d0bbb1a81edca6ae7ac5c9e60bf447d198bf875b945fcba06b0074e640331b2205c2c055864c011913f6dad3e34ed44b +Ctrl.hexsession_id = hexsession_id:58d7b77f0cc5480254c68e4e9cb06a1ea5389b39a3f9cba5c9ca03a091fb123aeb5934c519b60181d097b8cc9455b96a +Ctrl.type = type:D +Output = 199d2b244689bfc4f807f225a7130a069c8a181f5b20d32a + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000810091473fb24a9fca3fd1639c029c0e6ae6390c83b3278336017068771569d0957bf7ff80a8f188b936f7e238502efc86e518ebafcc4ecdf1b44f01bb070b3cc88c1b23937dcd04c456987a3b75df3874ca54a10e7f4a3123a7fb47365a7552c9e3f7070ec19d1ebb9922dd10aa0280222db770a71ce9541b60b53d9e7783350100 +Ctrl.hexxcghash = hexxcghash:d0bbb1a81edca6ae7ac5c9e60bf447d198bf875b945fcba06b0074e640331b2205c2c055864c011913f6dad3e34ed44b +Ctrl.hexsession_id = hexsession_id:58d7b77f0cc5480254c68e4e9cb06a1ea5389b39a3f9cba5c9ca03a091fb123aeb5934c519b60181d097b8cc9455b96a +Ctrl.type = type:E +Output = 69b55cc82d0429979a3832a3be35483596ff1d26a0c1a62944695764f0eb85c3467528be225db2f516e79f23c0c7c23c + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000810091473fb24a9fca3fd1639c029c0e6ae6390c83b3278336017068771569d0957bf7ff80a8f188b936f7e238502efc86e518ebafcc4ecdf1b44f01bb070b3cc88c1b23937dcd04c456987a3b75df3874ca54a10e7f4a3123a7fb47365a7552c9e3f7070ec19d1ebb9922dd10aa0280222db770a71ce9541b60b53d9e7783350100 +Ctrl.hexxcghash = hexxcghash:d0bbb1a81edca6ae7ac5c9e60bf447d198bf875b945fcba06b0074e640331b2205c2c055864c011913f6dad3e34ed44b +Ctrl.hexsession_id = hexsession_id:58d7b77f0cc5480254c68e4e9cb06a1ea5389b39a3f9cba5c9ca03a091fb123aeb5934c519b60181d097b8cc9455b96a +Ctrl.type = type:F +Output = 6e06df643269751dfc9c8decefe466e1ab2ab99466661aa6f0dfab223c3b9bebcaed4c19cbc4109dfacda81cc8f902eb + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000801b8e7d2292f95d97c99e9c93fcc681f2a446437d7595137f761eb9351f50cfb71988aad2d9611a5e3d32c58b1efef596b2b495c12355b6caa5c647237670c7cbeb7b7ef5d39b600b44ab1cecc7ff454981f70366f5dc95f790c9744e55b0b5cee770df10dc3f081b8774b4735c86917384ed7da0b597bd932e676b7ef6fe2cd3 +Ctrl.hexxcghash = hexxcghash:d1ecf201e213b656e7e002d26b263ead5ef6f265a2cfd05eb83985dbc1dd0620f729800a92f676e6c8219aadbea0a037 +Ctrl.hexsession_id = hexsession_id:fc6bb80f9116c6746603327d5338e853f37b06593402e31bf5a43abd5e6de8f26166bb572ce0c88360a7bbbe83d0377b +Ctrl.type = type:A +Output = b2ada53484907db5 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000801b8e7d2292f95d97c99e9c93fcc681f2a446437d7595137f761eb9351f50cfb71988aad2d9611a5e3d32c58b1efef596b2b495c12355b6caa5c647237670c7cbeb7b7ef5d39b600b44ab1cecc7ff454981f70366f5dc95f790c9744e55b0b5cee770df10dc3f081b8774b4735c86917384ed7da0b597bd932e676b7ef6fe2cd3 +Ctrl.hexxcghash = hexxcghash:d1ecf201e213b656e7e002d26b263ead5ef6f265a2cfd05eb83985dbc1dd0620f729800a92f676e6c8219aadbea0a037 +Ctrl.hexsession_id = hexsession_id:fc6bb80f9116c6746603327d5338e853f37b06593402e31bf5a43abd5e6de8f26166bb572ce0c88360a7bbbe83d0377b +Ctrl.type = type:B +Output = 89224486fcb33030 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000801b8e7d2292f95d97c99e9c93fcc681f2a446437d7595137f761eb9351f50cfb71988aad2d9611a5e3d32c58b1efef596b2b495c12355b6caa5c647237670c7cbeb7b7ef5d39b600b44ab1cecc7ff454981f70366f5dc95f790c9744e55b0b5cee770df10dc3f081b8774b4735c86917384ed7da0b597bd932e676b7ef6fe2cd3 +Ctrl.hexxcghash = hexxcghash:d1ecf201e213b656e7e002d26b263ead5ef6f265a2cfd05eb83985dbc1dd0620f729800a92f676e6c8219aadbea0a037 +Ctrl.hexsession_id = hexsession_id:fc6bb80f9116c6746603327d5338e853f37b06593402e31bf5a43abd5e6de8f26166bb572ce0c88360a7bbbe83d0377b +Ctrl.type = type:C +Output = 38ccc00303d5aaf748f3c11d986b99f9bf36049a6f7ea92f + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000801b8e7d2292f95d97c99e9c93fcc681f2a446437d7595137f761eb9351f50cfb71988aad2d9611a5e3d32c58b1efef596b2b495c12355b6caa5c647237670c7cbeb7b7ef5d39b600b44ab1cecc7ff454981f70366f5dc95f790c9744e55b0b5cee770df10dc3f081b8774b4735c86917384ed7da0b597bd932e676b7ef6fe2cd3 +Ctrl.hexxcghash = hexxcghash:d1ecf201e213b656e7e002d26b263ead5ef6f265a2cfd05eb83985dbc1dd0620f729800a92f676e6c8219aadbea0a037 +Ctrl.hexsession_id = hexsession_id:fc6bb80f9116c6746603327d5338e853f37b06593402e31bf5a43abd5e6de8f26166bb572ce0c88360a7bbbe83d0377b +Ctrl.type = type:D +Output = f8a7a4b2e1d28c6a38e120a2cb876ed49f454ea2aabc3a99 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000801b8e7d2292f95d97c99e9c93fcc681f2a446437d7595137f761eb9351f50cfb71988aad2d9611a5e3d32c58b1efef596b2b495c12355b6caa5c647237670c7cbeb7b7ef5d39b600b44ab1cecc7ff454981f70366f5dc95f790c9744e55b0b5cee770df10dc3f081b8774b4735c86917384ed7da0b597bd932e676b7ef6fe2cd3 +Ctrl.hexxcghash = hexxcghash:d1ecf201e213b656e7e002d26b263ead5ef6f265a2cfd05eb83985dbc1dd0620f729800a92f676e6c8219aadbea0a037 +Ctrl.hexsession_id = hexsession_id:fc6bb80f9116c6746603327d5338e853f37b06593402e31bf5a43abd5e6de8f26166bb572ce0c88360a7bbbe83d0377b +Ctrl.type = type:E +Output = 9f42ab15d0b041019960ff6a5a12e209c427dc334434126399fb8850ec8feda957b74f1976b4c8a97906d7d64c5c2a83 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000000801b8e7d2292f95d97c99e9c93fcc681f2a446437d7595137f761eb9351f50cfb71988aad2d9611a5e3d32c58b1efef596b2b495c12355b6caa5c647237670c7cbeb7b7ef5d39b600b44ab1cecc7ff454981f70366f5dc95f790c9744e55b0b5cee770df10dc3f081b8774b4735c86917384ed7da0b597bd932e676b7ef6fe2cd3 +Ctrl.hexxcghash = hexxcghash:d1ecf201e213b656e7e002d26b263ead5ef6f265a2cfd05eb83985dbc1dd0620f729800a92f676e6c8219aadbea0a037 +Ctrl.hexsession_id = hexsession_id:fc6bb80f9116c6746603327d5338e853f37b06593402e31bf5a43abd5e6de8f26166bb572ce0c88360a7bbbe83d0377b +Ctrl.type = type:F +Output = d383bedd3b80ddc470db9b819893e85dfab9e359e40bc77576e23ed8c5e73beecefb511ccdf1eb66416c271be5f90199 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000081008efe3279e8fc51acceea0ad5958364c2a36315d92ce4d68f6f8486b3160293e4eff79998474b954431a6981864a34445b4bd68e5b598dbaba4de5661ef0b09d5dae9b1633da886f1540d1df601c1acaa139de540d3d8d0b01602559a833aab87730de5c6875b78f5ec6d19145db46e2a77cbb9ec39b1bdbd5ca3be193dcfd622 +Ctrl.hexxcghash = hexxcghash:5f6f8bd8d664b1f31c615cf457a5c7eaa8733bba6557f15f300cfb364b0ea927bcfe406ea5fb7e03ac648fd18cd93372 +Ctrl.hexsession_id = hexsession_id:a89ecfd6636423e8d5ba8da3aa8367092b1a662df5693c55cbc5bfabb97320d90692e6c9305af47c25e6617200648752 +Ctrl.type = type:A +Output = bac9e6c9553bba95 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000081008efe3279e8fc51acceea0ad5958364c2a36315d92ce4d68f6f8486b3160293e4eff79998474b954431a6981864a34445b4bd68e5b598dbaba4de5661ef0b09d5dae9b1633da886f1540d1df601c1acaa139de540d3d8d0b01602559a833aab87730de5c6875b78f5ec6d19145db46e2a77cbb9ec39b1bdbd5ca3be193dcfd622 +Ctrl.hexxcghash = hexxcghash:5f6f8bd8d664b1f31c615cf457a5c7eaa8733bba6557f15f300cfb364b0ea927bcfe406ea5fb7e03ac648fd18cd93372 +Ctrl.hexsession_id = hexsession_id:a89ecfd6636423e8d5ba8da3aa8367092b1a662df5693c55cbc5bfabb97320d90692e6c9305af47c25e6617200648752 +Ctrl.type = type:B +Output = f29bdc017028a9ca + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000081008efe3279e8fc51acceea0ad5958364c2a36315d92ce4d68f6f8486b3160293e4eff79998474b954431a6981864a34445b4bd68e5b598dbaba4de5661ef0b09d5dae9b1633da886f1540d1df601c1acaa139de540d3d8d0b01602559a833aab87730de5c6875b78f5ec6d19145db46e2a77cbb9ec39b1bdbd5ca3be193dcfd622 +Ctrl.hexxcghash = hexxcghash:5f6f8bd8d664b1f31c615cf457a5c7eaa8733bba6557f15f300cfb364b0ea927bcfe406ea5fb7e03ac648fd18cd93372 +Ctrl.hexsession_id = hexsession_id:a89ecfd6636423e8d5ba8da3aa8367092b1a662df5693c55cbc5bfabb97320d90692e6c9305af47c25e6617200648752 +Ctrl.type = type:C +Output = 840f7e966d633f57bf6cfb3e6aa6bb1435bbea5822c9db0c + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000081008efe3279e8fc51acceea0ad5958364c2a36315d92ce4d68f6f8486b3160293e4eff79998474b954431a6981864a34445b4bd68e5b598dbaba4de5661ef0b09d5dae9b1633da886f1540d1df601c1acaa139de540d3d8d0b01602559a833aab87730de5c6875b78f5ec6d19145db46e2a77cbb9ec39b1bdbd5ca3be193dcfd622 +Ctrl.hexxcghash = hexxcghash:5f6f8bd8d664b1f31c615cf457a5c7eaa8733bba6557f15f300cfb364b0ea927bcfe406ea5fb7e03ac648fd18cd93372 +Ctrl.hexsession_id = hexsession_id:a89ecfd6636423e8d5ba8da3aa8367092b1a662df5693c55cbc5bfabb97320d90692e6c9305af47c25e6617200648752 +Ctrl.type = type:D +Output = f78b485e49bf72584e45de78fbd75392e3e0b1ce2a57e7a3 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000081008efe3279e8fc51acceea0ad5958364c2a36315d92ce4d68f6f8486b3160293e4eff79998474b954431a6981864a34445b4bd68e5b598dbaba4de5661ef0b09d5dae9b1633da886f1540d1df601c1acaa139de540d3d8d0b01602559a833aab87730de5c6875b78f5ec6d19145db46e2a77cbb9ec39b1bdbd5ca3be193dcfd622 +Ctrl.hexxcghash = hexxcghash:5f6f8bd8d664b1f31c615cf457a5c7eaa8733bba6557f15f300cfb364b0ea927bcfe406ea5fb7e03ac648fd18cd93372 +Ctrl.hexsession_id = hexsession_id:a89ecfd6636423e8d5ba8da3aa8367092b1a662df5693c55cbc5bfabb97320d90692e6c9305af47c25e6617200648752 +Ctrl.type = type:E +Output = 9dcadff513667aee5e2fda86c4a198db4252a9311635d3659db957570e448f3689444dd3e10d6097a07dba923db349ba + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000081008efe3279e8fc51acceea0ad5958364c2a36315d92ce4d68f6f8486b3160293e4eff79998474b954431a6981864a34445b4bd68e5b598dbaba4de5661ef0b09d5dae9b1633da886f1540d1df601c1acaa139de540d3d8d0b01602559a833aab87730de5c6875b78f5ec6d19145db46e2a77cbb9ec39b1bdbd5ca3be193dcfd622 +Ctrl.hexxcghash = hexxcghash:5f6f8bd8d664b1f31c615cf457a5c7eaa8733bba6557f15f300cfb364b0ea927bcfe406ea5fb7e03ac648fd18cd93372 +Ctrl.hexsession_id = hexsession_id:a89ecfd6636423e8d5ba8da3aa8367092b1a662df5693c55cbc5bfabb97320d90692e6c9305af47c25e6617200648752 +Ctrl.type = type:F +Output = 5e7915ea90a0d81e3c2ada00c85890b6defbb64f45ac4f0e75b22cf6187978e630f356207c97362862389a1ef99fb51a + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100a89b3f9628a4f984336377edc37d3bed4aa748fa0b0a6bc80c366e8ffdf0ccbbe07229c5f02394b230759d5255e3a7d7f63a2395e2f07e2d31bf885abaea150e1f97808f26f8fe8c5113c12e4d137844160a433f8451faaf432bd7c0469dbe713304c8bed29c03cb7629cdffebc253d0a01362052f55576fdaf89702fa33cedd +Ctrl.hexxcghash = hexxcghash:8467d0335e6e254eb02253f97cd14c0221f1b21431a4ffe1c20675039d0ac26fa70a0c4bad639834d88d01f6c1ea878e +Ctrl.hexsession_id = hexsession_id:9a100a5b0ad81f1c603e05c5d24415f2aa7031c0d92f16de15cab350bb1a2cf3639c6906f4e220e057deb966813bbb35 +Ctrl.type = type:A +Output = 11811427eaa92d61 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100a89b3f9628a4f984336377edc37d3bed4aa748fa0b0a6bc80c366e8ffdf0ccbbe07229c5f02394b230759d5255e3a7d7f63a2395e2f07e2d31bf885abaea150e1f97808f26f8fe8c5113c12e4d137844160a433f8451faaf432bd7c0469dbe713304c8bed29c03cb7629cdffebc253d0a01362052f55576fdaf89702fa33cedd +Ctrl.hexxcghash = hexxcghash:8467d0335e6e254eb02253f97cd14c0221f1b21431a4ffe1c20675039d0ac26fa70a0c4bad639834d88d01f6c1ea878e +Ctrl.hexsession_id = hexsession_id:9a100a5b0ad81f1c603e05c5d24415f2aa7031c0d92f16de15cab350bb1a2cf3639c6906f4e220e057deb966813bbb35 +Ctrl.type = type:B +Output = c13f22e0bd66a551 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100a89b3f9628a4f984336377edc37d3bed4aa748fa0b0a6bc80c366e8ffdf0ccbbe07229c5f02394b230759d5255e3a7d7f63a2395e2f07e2d31bf885abaea150e1f97808f26f8fe8c5113c12e4d137844160a433f8451faaf432bd7c0469dbe713304c8bed29c03cb7629cdffebc253d0a01362052f55576fdaf89702fa33cedd +Ctrl.hexxcghash = hexxcghash:8467d0335e6e254eb02253f97cd14c0221f1b21431a4ffe1c20675039d0ac26fa70a0c4bad639834d88d01f6c1ea878e +Ctrl.hexsession_id = hexsession_id:9a100a5b0ad81f1c603e05c5d24415f2aa7031c0d92f16de15cab350bb1a2cf3639c6906f4e220e057deb966813bbb35 +Ctrl.type = type:C +Output = 2b9c9c8ecae95d75472495363ca2d46dc79babdb2e0fda40 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100a89b3f9628a4f984336377edc37d3bed4aa748fa0b0a6bc80c366e8ffdf0ccbbe07229c5f02394b230759d5255e3a7d7f63a2395e2f07e2d31bf885abaea150e1f97808f26f8fe8c5113c12e4d137844160a433f8451faaf432bd7c0469dbe713304c8bed29c03cb7629cdffebc253d0a01362052f55576fdaf89702fa33cedd +Ctrl.hexxcghash = hexxcghash:8467d0335e6e254eb02253f97cd14c0221f1b21431a4ffe1c20675039d0ac26fa70a0c4bad639834d88d01f6c1ea878e +Ctrl.hexsession_id = hexsession_id:9a100a5b0ad81f1c603e05c5d24415f2aa7031c0d92f16de15cab350bb1a2cf3639c6906f4e220e057deb966813bbb35 +Ctrl.type = type:D +Output = f466d9b9871c1482c699a5d9f8636a041adb60920c6af855 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100a89b3f9628a4f984336377edc37d3bed4aa748fa0b0a6bc80c366e8ffdf0ccbbe07229c5f02394b230759d5255e3a7d7f63a2395e2f07e2d31bf885abaea150e1f97808f26f8fe8c5113c12e4d137844160a433f8451faaf432bd7c0469dbe713304c8bed29c03cb7629cdffebc253d0a01362052f55576fdaf89702fa33cedd +Ctrl.hexxcghash = hexxcghash:8467d0335e6e254eb02253f97cd14c0221f1b21431a4ffe1c20675039d0ac26fa70a0c4bad639834d88d01f6c1ea878e +Ctrl.hexsession_id = hexsession_id:9a100a5b0ad81f1c603e05c5d24415f2aa7031c0d92f16de15cab350bb1a2cf3639c6906f4e220e057deb966813bbb35 +Ctrl.type = type:E +Output = 1ecda0252461bd08960c54ba7c570e80715780e5e99ca0f754a3d451409ed2df928daab91ed6b4044fcc68bd5f907c96 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100a89b3f9628a4f984336377edc37d3bed4aa748fa0b0a6bc80c366e8ffdf0ccbbe07229c5f02394b230759d5255e3a7d7f63a2395e2f07e2d31bf885abaea150e1f97808f26f8fe8c5113c12e4d137844160a433f8451faaf432bd7c0469dbe713304c8bed29c03cb7629cdffebc253d0a01362052f55576fdaf89702fa33cedd +Ctrl.hexxcghash = hexxcghash:8467d0335e6e254eb02253f97cd14c0221f1b21431a4ffe1c20675039d0ac26fa70a0c4bad639834d88d01f6c1ea878e +Ctrl.hexsession_id = hexsession_id:9a100a5b0ad81f1c603e05c5d24415f2aa7031c0d92f16de15cab350bb1a2cf3639c6906f4e220e057deb966813bbb35 +Ctrl.type = type:F +Output = 202e4e3dda18306c7fa518ea849cf3a4788dbc5305f71267ba69fe8920d3b18d9fc59853a4d03b18480269698e24c190 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100f6e899f2b7542fd95e88e06ff0a68e43df6f3d913f1295922bd01b98f7078b67311e002cafcb41a65262585a78b22ec97c81278f3f329d726f08fff23f4ce5b90abc694c92195fe7bc140579f54c6b89d81b836a8d3998446aab9055904ef1e0bb7553739d2351c8cfae0fbf50d8ced4bbd3975450569d0f9e441a3ed3aac776 +Ctrl.hexxcghash = hexxcghash:1853bb0d312eb00d1c700d25ddaed9680ecf28eeefe9323566dc91ef42a85b2e3049286621f43b928e2b821e5605bf60 +Ctrl.hexsession_id = hexsession_id:da7d22e3c7815b6a6089f381ddd957df3ed78e97902133d62d3ff6119d8c174b69cd26e627d6ccd98f847521aa0e3896 +Ctrl.type = type:A +Output = 86183fd862bf42af + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100f6e899f2b7542fd95e88e06ff0a68e43df6f3d913f1295922bd01b98f7078b67311e002cafcb41a65262585a78b22ec97c81278f3f329d726f08fff23f4ce5b90abc694c92195fe7bc140579f54c6b89d81b836a8d3998446aab9055904ef1e0bb7553739d2351c8cfae0fbf50d8ced4bbd3975450569d0f9e441a3ed3aac776 +Ctrl.hexxcghash = hexxcghash:1853bb0d312eb00d1c700d25ddaed9680ecf28eeefe9323566dc91ef42a85b2e3049286621f43b928e2b821e5605bf60 +Ctrl.hexsession_id = hexsession_id:da7d22e3c7815b6a6089f381ddd957df3ed78e97902133d62d3ff6119d8c174b69cd26e627d6ccd98f847521aa0e3896 +Ctrl.type = type:B +Output = 04e146b085c71253 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100f6e899f2b7542fd95e88e06ff0a68e43df6f3d913f1295922bd01b98f7078b67311e002cafcb41a65262585a78b22ec97c81278f3f329d726f08fff23f4ce5b90abc694c92195fe7bc140579f54c6b89d81b836a8d3998446aab9055904ef1e0bb7553739d2351c8cfae0fbf50d8ced4bbd3975450569d0f9e441a3ed3aac776 +Ctrl.hexxcghash = hexxcghash:1853bb0d312eb00d1c700d25ddaed9680ecf28eeefe9323566dc91ef42a85b2e3049286621f43b928e2b821e5605bf60 +Ctrl.hexsession_id = hexsession_id:da7d22e3c7815b6a6089f381ddd957df3ed78e97902133d62d3ff6119d8c174b69cd26e627d6ccd98f847521aa0e3896 +Ctrl.type = type:C +Output = c4364d4e0e38fe4c5fc2b2a3ad42e49a57106ffa962f4c5e + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100f6e899f2b7542fd95e88e06ff0a68e43df6f3d913f1295922bd01b98f7078b67311e002cafcb41a65262585a78b22ec97c81278f3f329d726f08fff23f4ce5b90abc694c92195fe7bc140579f54c6b89d81b836a8d3998446aab9055904ef1e0bb7553739d2351c8cfae0fbf50d8ced4bbd3975450569d0f9e441a3ed3aac776 +Ctrl.hexxcghash = hexxcghash:1853bb0d312eb00d1c700d25ddaed9680ecf28eeefe9323566dc91ef42a85b2e3049286621f43b928e2b821e5605bf60 +Ctrl.hexsession_id = hexsession_id:da7d22e3c7815b6a6089f381ddd957df3ed78e97902133d62d3ff6119d8c174b69cd26e627d6ccd98f847521aa0e3896 +Ctrl.type = type:D +Output = b9d1549032bf336c8708f13d8f5d281d696b8bddc296e709 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100f6e899f2b7542fd95e88e06ff0a68e43df6f3d913f1295922bd01b98f7078b67311e002cafcb41a65262585a78b22ec97c81278f3f329d726f08fff23f4ce5b90abc694c92195fe7bc140579f54c6b89d81b836a8d3998446aab9055904ef1e0bb7553739d2351c8cfae0fbf50d8ced4bbd3975450569d0f9e441a3ed3aac776 +Ctrl.hexxcghash = hexxcghash:1853bb0d312eb00d1c700d25ddaed9680ecf28eeefe9323566dc91ef42a85b2e3049286621f43b928e2b821e5605bf60 +Ctrl.hexsession_id = hexsession_id:da7d22e3c7815b6a6089f381ddd957df3ed78e97902133d62d3ff6119d8c174b69cd26e627d6ccd98f847521aa0e3896 +Ctrl.type = type:E +Output = c7ee72c40b26fce673ff23edea3265dfeb7b7f6fd66362bbc91548fac1819a08682c65c7d69d5e54e1c48b05e7233adc + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008100f6e899f2b7542fd95e88e06ff0a68e43df6f3d913f1295922bd01b98f7078b67311e002cafcb41a65262585a78b22ec97c81278f3f329d726f08fff23f4ce5b90abc694c92195fe7bc140579f54c6b89d81b836a8d3998446aab9055904ef1e0bb7553739d2351c8cfae0fbf50d8ced4bbd3975450569d0f9e441a3ed3aac776 +Ctrl.hexxcghash = hexxcghash:1853bb0d312eb00d1c700d25ddaed9680ecf28eeefe9323566dc91ef42a85b2e3049286621f43b928e2b821e5605bf60 +Ctrl.hexsession_id = hexsession_id:da7d22e3c7815b6a6089f381ddd957df3ed78e97902133d62d3ff6119d8c174b69cd26e627d6ccd98f847521aa0e3896 +Ctrl.type = type:F +Output = 8b52078a6d45dfaa051193da8f9c8a18bfd0c058e7be145d0c4b5b677eec54a01f9e2a20c997e9c0a1ede9576800cfe5 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008008483322bb2efee6320ba1fe14f296e0b170f9a0c6f76a49d0b23abb74251da468b53fb86ddbbc55a5c4881686d1aaa9b309b65907d92352c83597126cf7e3d367f543c8887105403d9b2ba86cf2bbafd4a984dfe8ebb7b8155c51d6416c89b4efb91ef5953b0e54dbcdbe76443a80e5cd011d7d6c9bc69ec81a19749b95f6c0 +Ctrl.hexxcghash = hexxcghash:ed7b1464334bb8a04d128b791cd860c1546faaf860aff394872373f5ccac0835b47cfeb8c3d049b211cb7b570bcc1f83 +Ctrl.hexsession_id = hexsession_id:cac7b46b66372be67b4ce198311faed9ddc8f8b95f6c61d8c71a1788724ab6b8d159e2ba61f937e6d87bbb9cb24a9fe7 +Ctrl.type = type:A +Output = 54f4be4a33dfa102 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008008483322bb2efee6320ba1fe14f296e0b170f9a0c6f76a49d0b23abb74251da468b53fb86ddbbc55a5c4881686d1aaa9b309b65907d92352c83597126cf7e3d367f543c8887105403d9b2ba86cf2bbafd4a984dfe8ebb7b8155c51d6416c89b4efb91ef5953b0e54dbcdbe76443a80e5cd011d7d6c9bc69ec81a19749b95f6c0 +Ctrl.hexxcghash = hexxcghash:ed7b1464334bb8a04d128b791cd860c1546faaf860aff394872373f5ccac0835b47cfeb8c3d049b211cb7b570bcc1f83 +Ctrl.hexsession_id = hexsession_id:cac7b46b66372be67b4ce198311faed9ddc8f8b95f6c61d8c71a1788724ab6b8d159e2ba61f937e6d87bbb9cb24a9fe7 +Ctrl.type = type:B +Output = bbb084483803aab4 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008008483322bb2efee6320ba1fe14f296e0b170f9a0c6f76a49d0b23abb74251da468b53fb86ddbbc55a5c4881686d1aaa9b309b65907d92352c83597126cf7e3d367f543c8887105403d9b2ba86cf2bbafd4a984dfe8ebb7b8155c51d6416c89b4efb91ef5953b0e54dbcdbe76443a80e5cd011d7d6c9bc69ec81a19749b95f6c0 +Ctrl.hexxcghash = hexxcghash:ed7b1464334bb8a04d128b791cd860c1546faaf860aff394872373f5ccac0835b47cfeb8c3d049b211cb7b570bcc1f83 +Ctrl.hexsession_id = hexsession_id:cac7b46b66372be67b4ce198311faed9ddc8f8b95f6c61d8c71a1788724ab6b8d159e2ba61f937e6d87bbb9cb24a9fe7 +Ctrl.type = type:C +Output = 466a038b3a5c0d72cf19cf33e5a551437933dad54bfed655 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008008483322bb2efee6320ba1fe14f296e0b170f9a0c6f76a49d0b23abb74251da468b53fb86ddbbc55a5c4881686d1aaa9b309b65907d92352c83597126cf7e3d367f543c8887105403d9b2ba86cf2bbafd4a984dfe8ebb7b8155c51d6416c89b4efb91ef5953b0e54dbcdbe76443a80e5cd011d7d6c9bc69ec81a19749b95f6c0 +Ctrl.hexxcghash = hexxcghash:ed7b1464334bb8a04d128b791cd860c1546faaf860aff394872373f5ccac0835b47cfeb8c3d049b211cb7b570bcc1f83 +Ctrl.hexsession_id = hexsession_id:cac7b46b66372be67b4ce198311faed9ddc8f8b95f6c61d8c71a1788724ab6b8d159e2ba61f937e6d87bbb9cb24a9fe7 +Ctrl.type = type:D +Output = 44e09698e473edc642256e99bfbfbeab1db3e254d64a3ab7 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008008483322bb2efee6320ba1fe14f296e0b170f9a0c6f76a49d0b23abb74251da468b53fb86ddbbc55a5c4881686d1aaa9b309b65907d92352c83597126cf7e3d367f543c8887105403d9b2ba86cf2bbafd4a984dfe8ebb7b8155c51d6416c89b4efb91ef5953b0e54dbcdbe76443a80e5cd011d7d6c9bc69ec81a19749b95f6c0 +Ctrl.hexxcghash = hexxcghash:ed7b1464334bb8a04d128b791cd860c1546faaf860aff394872373f5ccac0835b47cfeb8c3d049b211cb7b570bcc1f83 +Ctrl.hexsession_id = hexsession_id:cac7b46b66372be67b4ce198311faed9ddc8f8b95f6c61d8c71a1788724ab6b8d159e2ba61f937e6d87bbb9cb24a9fe7 +Ctrl.type = type:E +Output = 8e35d767e738c4282ec1925ba5d59dad723b7220c10ae8b69c9eb3da124ac1bea8195f5ecc1c3b03953938cd1e0e190b + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000008008483322bb2efee6320ba1fe14f296e0b170f9a0c6f76a49d0b23abb74251da468b53fb86ddbbc55a5c4881686d1aaa9b309b65907d92352c83597126cf7e3d367f543c8887105403d9b2ba86cf2bbafd4a984dfe8ebb7b8155c51d6416c89b4efb91ef5953b0e54dbcdbe76443a80e5cd011d7d6c9bc69ec81a19749b95f6c0 +Ctrl.hexxcghash = hexxcghash:ed7b1464334bb8a04d128b791cd860c1546faaf860aff394872373f5ccac0835b47cfeb8c3d049b211cb7b570bcc1f83 +Ctrl.hexsession_id = hexsession_id:cac7b46b66372be67b4ce198311faed9ddc8f8b95f6c61d8c71a1788724ab6b8d159e2ba61f937e6d87bbb9cb24a9fe7 +Ctrl.type = type:F +Output = 63e5c62c4e6f2700bfa5927ca2e730101c12a684808ddd6cf5f9da2bad3b49ba3d05d4f88a3a91f341ad2b63952e7db0 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000101008174aa2fab9372c253f3b993d723b55a2484430fb338095852b7a5099f9d609ca6afa6bff9d64a55f7ef0963c684f0d17ec6045ce57ce3382870d55fcac0e1341fb47a7f76f0d5d53b67fd5e0658ecb88ae2e2e42aa4b83b8cfcce9faae941450ace059a7f223623d1c8a9924638de7eebad35be9c9f1bf38aea041114351d585a1988ba53cccc6949150f367fd790fc427916afa2cccd1d2f1aa8583b948dfe56cf488b38ec2d2570a0e0441c07ccec8b5b4db5f60250741b1aeb0bf49a85cc779ad7465f0c197735698842be2a39af8591ab91c84b704e67e50cbcdb75c2799aaeba0184341dd520f6db8477f13d5815d37f191ccb20545e4a1eaca316370a +Ctrl.hexxcghash = hexxcghash:09d74bd79b47ceb3ada0d8df640595ba861ccfa3cc0d6c640eaac21d2d5f3f9fe61fb2e585fb6cc90bde11967a563c4e +Ctrl.hexsession_id = hexsession_id:09d74bd79b47ceb3ada0d8df640595ba861ccfa3cc0d6c640eaac21d2d5f3f9fe61fb2e585fb6cc90bde11967a563c4e +Ctrl.type = type:A +Output = e46fdb8c912658c34b7d509f6acc1111 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000101008174aa2fab9372c253f3b993d723b55a2484430fb338095852b7a5099f9d609ca6afa6bff9d64a55f7ef0963c684f0d17ec6045ce57ce3382870d55fcac0e1341fb47a7f76f0d5d53b67fd5e0658ecb88ae2e2e42aa4b83b8cfcce9faae941450ace059a7f223623d1c8a9924638de7eebad35be9c9f1bf38aea041114351d585a1988ba53cccc6949150f367fd790fc427916afa2cccd1d2f1aa8583b948dfe56cf488b38ec2d2570a0e0441c07ccec8b5b4db5f60250741b1aeb0bf49a85cc779ad7465f0c197735698842be2a39af8591ab91c84b704e67e50cbcdb75c2799aaeba0184341dd520f6db8477f13d5815d37f191ccb20545e4a1eaca316370a +Ctrl.hexxcghash = hexxcghash:09d74bd79b47ceb3ada0d8df640595ba861ccfa3cc0d6c640eaac21d2d5f3f9fe61fb2e585fb6cc90bde11967a563c4e +Ctrl.hexsession_id = hexsession_id:09d74bd79b47ceb3ada0d8df640595ba861ccfa3cc0d6c640eaac21d2d5f3f9fe61fb2e585fb6cc90bde11967a563c4e +Ctrl.type = type:B +Output = 959c339aaff2e2ed46da46c5286ddf3b + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000101008174aa2fab9372c253f3b993d723b55a2484430fb338095852b7a5099f9d609ca6afa6bff9d64a55f7ef0963c684f0d17ec6045ce57ce3382870d55fcac0e1341fb47a7f76f0d5d53b67fd5e0658ecb88ae2e2e42aa4b83b8cfcce9faae941450ace059a7f223623d1c8a9924638de7eebad35be9c9f1bf38aea041114351d585a1988ba53cccc6949150f367fd790fc427916afa2cccd1d2f1aa8583b948dfe56cf488b38ec2d2570a0e0441c07ccec8b5b4db5f60250741b1aeb0bf49a85cc779ad7465f0c197735698842be2a39af8591ab91c84b704e67e50cbcdb75c2799aaeba0184341dd520f6db8477f13d5815d37f191ccb20545e4a1eaca316370a +Ctrl.hexxcghash = hexxcghash:09d74bd79b47ceb3ada0d8df640595ba861ccfa3cc0d6c640eaac21d2d5f3f9fe61fb2e585fb6cc90bde11967a563c4e +Ctrl.hexsession_id = hexsession_id:09d74bd79b47ceb3ada0d8df640595ba861ccfa3cc0d6c640eaac21d2d5f3f9fe61fb2e585fb6cc90bde11967a563c4e +Ctrl.type = type:C +Output = a1cb0f9c7349d6443494df14b4bd9aad + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000101008174aa2fab9372c253f3b993d723b55a2484430fb338095852b7a5099f9d609ca6afa6bff9d64a55f7ef0963c684f0d17ec6045ce57ce3382870d55fcac0e1341fb47a7f76f0d5d53b67fd5e0658ecb88ae2e2e42aa4b83b8cfcce9faae941450ace059a7f223623d1c8a9924638de7eebad35be9c9f1bf38aea041114351d585a1988ba53cccc6949150f367fd790fc427916afa2cccd1d2f1aa8583b948dfe56cf488b38ec2d2570a0e0441c07ccec8b5b4db5f60250741b1aeb0bf49a85cc779ad7465f0c197735698842be2a39af8591ab91c84b704e67e50cbcdb75c2799aaeba0184341dd520f6db8477f13d5815d37f191ccb20545e4a1eaca316370a +Ctrl.hexxcghash = hexxcghash:09d74bd79b47ceb3ada0d8df640595ba861ccfa3cc0d6c640eaac21d2d5f3f9fe61fb2e585fb6cc90bde11967a563c4e +Ctrl.hexsession_id = hexsession_id:09d74bd79b47ceb3ada0d8df640595ba861ccfa3cc0d6c640eaac21d2d5f3f9fe61fb2e585fb6cc90bde11967a563c4e +Ctrl.type = type:D +Output = cdcd2c2ccbda238e184058b76757ed5d + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000101008174aa2fab9372c253f3b993d723b55a2484430fb338095852b7a5099f9d609ca6afa6bff9d64a55f7ef0963c684f0d17ec6045ce57ce3382870d55fcac0e1341fb47a7f76f0d5d53b67fd5e0658ecb88ae2e2e42aa4b83b8cfcce9faae941450ace059a7f223623d1c8a9924638de7eebad35be9c9f1bf38aea041114351d585a1988ba53cccc6949150f367fd790fc427916afa2cccd1d2f1aa8583b948dfe56cf488b38ec2d2570a0e0441c07ccec8b5b4db5f60250741b1aeb0bf49a85cc779ad7465f0c197735698842be2a39af8591ab91c84b704e67e50cbcdb75c2799aaeba0184341dd520f6db8477f13d5815d37f191ccb20545e4a1eaca316370a +Ctrl.hexxcghash = hexxcghash:09d74bd79b47ceb3ada0d8df640595ba861ccfa3cc0d6c640eaac21d2d5f3f9fe61fb2e585fb6cc90bde11967a563c4e +Ctrl.hexsession_id = hexsession_id:09d74bd79b47ceb3ada0d8df640595ba861ccfa3cc0d6c640eaac21d2d5f3f9fe61fb2e585fb6cc90bde11967a563c4e +Ctrl.type = type:E +Output = 026ae927b4a5b63a513c02faac55534dae5c219779f08e239f67df78c52be743aab628607e5a103127450ea51833eb84 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:00000101008174aa2fab9372c253f3b993d723b55a2484430fb338095852b7a5099f9d609ca6afa6bff9d64a55f7ef0963c684f0d17ec6045ce57ce3382870d55fcac0e1341fb47a7f76f0d5d53b67fd5e0658ecb88ae2e2e42aa4b83b8cfcce9faae941450ace059a7f223623d1c8a9924638de7eebad35be9c9f1bf38aea041114351d585a1988ba53cccc6949150f367fd790fc427916afa2cccd1d2f1aa8583b948dfe56cf488b38ec2d2570a0e0441c07ccec8b5b4db5f60250741b1aeb0bf49a85cc779ad7465f0c197735698842be2a39af8591ab91c84b704e67e50cbcdb75c2799aaeba0184341dd520f6db8477f13d5815d37f191ccb20545e4a1eaca316370a +Ctrl.hexxcghash = hexxcghash:09d74bd79b47ceb3ada0d8df640595ba861ccfa3cc0d6c640eaac21d2d5f3f9fe61fb2e585fb6cc90bde11967a563c4e +Ctrl.hexsession_id = hexsession_id:09d74bd79b47ceb3ada0d8df640595ba861ccfa3cc0d6c640eaac21d2d5f3f9fe61fb2e585fb6cc90bde11967a563c4e +Ctrl.type = type:F +Output = 759fd6bd386f4825e644521edfce4187a7104ea7380f2c6c5e283f205c7c025be46c5ee73bc54a956f268c2031026bf6 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c10fff0a20858c36e41082abaa65b96c5424ab67563882a42237258e736b5cfbdb2867df55f8c40f81b34e8c4c55d39c4629dc2d833257dc68070a61d10417487ef0840b76169145402327ae81f35cbddae6c2a45d52f52f48a0c94acdb20db076393b5b1e3d1a7acee3f371bdaccfee696262eecd20238cc54322e6ca72e58708aeb19bf761054d9f7426e4ea0059bd252beee03dcad1a7d6d034b4d9d307218bb3d7bee3a57572ded304df1dd8f97ed9550ebb0f5c25ee3f8c6df3dfc2aac92f364ec91040d001c5cb1eee33c1d43112e5a289b46706c7f12a327620cd98fbce2e7fe7b7bd0e05ee0005182c35ded65ee1d86aefe816e5894e07536697a7db +Ctrl.hexxcghash = hexxcghash:62b3155ba0c160f838a6949d0a99b144868a7b247c583a53f431129e39aebd40e2feb4dbac7527f993ccf1646d559134 +Ctrl.hexsession_id = hexsession_id:7e4674330fb6987b64ef7f30335d171676c705a6b9ed958adc6b6fd16949830d3f586eec44812d0518cc3ebd4292b422 +Ctrl.type = type:A +Output = a433ac21ceda36a9d98abec722b2a5e7 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c10fff0a20858c36e41082abaa65b96c5424ab67563882a42237258e736b5cfbdb2867df55f8c40f81b34e8c4c55d39c4629dc2d833257dc68070a61d10417487ef0840b76169145402327ae81f35cbddae6c2a45d52f52f48a0c94acdb20db076393b5b1e3d1a7acee3f371bdaccfee696262eecd20238cc54322e6ca72e58708aeb19bf761054d9f7426e4ea0059bd252beee03dcad1a7d6d034b4d9d307218bb3d7bee3a57572ded304df1dd8f97ed9550ebb0f5c25ee3f8c6df3dfc2aac92f364ec91040d001c5cb1eee33c1d43112e5a289b46706c7f12a327620cd98fbce2e7fe7b7bd0e05ee0005182c35ded65ee1d86aefe816e5894e07536697a7db +Ctrl.hexxcghash = hexxcghash:62b3155ba0c160f838a6949d0a99b144868a7b247c583a53f431129e39aebd40e2feb4dbac7527f993ccf1646d559134 +Ctrl.hexsession_id = hexsession_id:7e4674330fb6987b64ef7f30335d171676c705a6b9ed958adc6b6fd16949830d3f586eec44812d0518cc3ebd4292b422 +Ctrl.type = type:B +Output = ed580c2c7890d5f3da87870d71d96300 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c10fff0a20858c36e41082abaa65b96c5424ab67563882a42237258e736b5cfbdb2867df55f8c40f81b34e8c4c55d39c4629dc2d833257dc68070a61d10417487ef0840b76169145402327ae81f35cbddae6c2a45d52f52f48a0c94acdb20db076393b5b1e3d1a7acee3f371bdaccfee696262eecd20238cc54322e6ca72e58708aeb19bf761054d9f7426e4ea0059bd252beee03dcad1a7d6d034b4d9d307218bb3d7bee3a57572ded304df1dd8f97ed9550ebb0f5c25ee3f8c6df3dfc2aac92f364ec91040d001c5cb1eee33c1d43112e5a289b46706c7f12a327620cd98fbce2e7fe7b7bd0e05ee0005182c35ded65ee1d86aefe816e5894e07536697a7db +Ctrl.hexxcghash = hexxcghash:62b3155ba0c160f838a6949d0a99b144868a7b247c583a53f431129e39aebd40e2feb4dbac7527f993ccf1646d559134 +Ctrl.hexsession_id = hexsession_id:7e4674330fb6987b64ef7f30335d171676c705a6b9ed958adc6b6fd16949830d3f586eec44812d0518cc3ebd4292b422 +Ctrl.type = type:C +Output = b310304108476a31154febce2bfcf44e + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c10fff0a20858c36e41082abaa65b96c5424ab67563882a42237258e736b5cfbdb2867df55f8c40f81b34e8c4c55d39c4629dc2d833257dc68070a61d10417487ef0840b76169145402327ae81f35cbddae6c2a45d52f52f48a0c94acdb20db076393b5b1e3d1a7acee3f371bdaccfee696262eecd20238cc54322e6ca72e58708aeb19bf761054d9f7426e4ea0059bd252beee03dcad1a7d6d034b4d9d307218bb3d7bee3a57572ded304df1dd8f97ed9550ebb0f5c25ee3f8c6df3dfc2aac92f364ec91040d001c5cb1eee33c1d43112e5a289b46706c7f12a327620cd98fbce2e7fe7b7bd0e05ee0005182c35ded65ee1d86aefe816e5894e07536697a7db +Ctrl.hexxcghash = hexxcghash:62b3155ba0c160f838a6949d0a99b144868a7b247c583a53f431129e39aebd40e2feb4dbac7527f993ccf1646d559134 +Ctrl.hexsession_id = hexsession_id:7e4674330fb6987b64ef7f30335d171676c705a6b9ed958adc6b6fd16949830d3f586eec44812d0518cc3ebd4292b422 +Ctrl.type = type:D +Output = 63d729b0e32d9d7efe7efdc6111489b7 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c10fff0a20858c36e41082abaa65b96c5424ab67563882a42237258e736b5cfbdb2867df55f8c40f81b34e8c4c55d39c4629dc2d833257dc68070a61d10417487ef0840b76169145402327ae81f35cbddae6c2a45d52f52f48a0c94acdb20db076393b5b1e3d1a7acee3f371bdaccfee696262eecd20238cc54322e6ca72e58708aeb19bf761054d9f7426e4ea0059bd252beee03dcad1a7d6d034b4d9d307218bb3d7bee3a57572ded304df1dd8f97ed9550ebb0f5c25ee3f8c6df3dfc2aac92f364ec91040d001c5cb1eee33c1d43112e5a289b46706c7f12a327620cd98fbce2e7fe7b7bd0e05ee0005182c35ded65ee1d86aefe816e5894e07536697a7db +Ctrl.hexxcghash = hexxcghash:62b3155ba0c160f838a6949d0a99b144868a7b247c583a53f431129e39aebd40e2feb4dbac7527f993ccf1646d559134 +Ctrl.hexsession_id = hexsession_id:7e4674330fb6987b64ef7f30335d171676c705a6b9ed958adc6b6fd16949830d3f586eec44812d0518cc3ebd4292b422 +Ctrl.type = type:E +Output = 7443a278e0c47e4004ba1c534dfa5c460670d2dd4459a6dc7251664da187f633208f6c06470f6aed6148820187f35a25 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c10fff0a20858c36e41082abaa65b96c5424ab67563882a42237258e736b5cfbdb2867df55f8c40f81b34e8c4c55d39c4629dc2d833257dc68070a61d10417487ef0840b76169145402327ae81f35cbddae6c2a45d52f52f48a0c94acdb20db076393b5b1e3d1a7acee3f371bdaccfee696262eecd20238cc54322e6ca72e58708aeb19bf761054d9f7426e4ea0059bd252beee03dcad1a7d6d034b4d9d307218bb3d7bee3a57572ded304df1dd8f97ed9550ebb0f5c25ee3f8c6df3dfc2aac92f364ec91040d001c5cb1eee33c1d43112e5a289b46706c7f12a327620cd98fbce2e7fe7b7bd0e05ee0005182c35ded65ee1d86aefe816e5894e07536697a7db +Ctrl.hexxcghash = hexxcghash:62b3155ba0c160f838a6949d0a99b144868a7b247c583a53f431129e39aebd40e2feb4dbac7527f993ccf1646d559134 +Ctrl.hexsession_id = hexsession_id:7e4674330fb6987b64ef7f30335d171676c705a6b9ed958adc6b6fd16949830d3f586eec44812d0518cc3ebd4292b422 +Ctrl.type = type:F +Output = 37500b699935ab38b9185018d3676f221dcd6643ba4cf3dccf8ede7ba2f0513c27ad2324158ae98df4e7fb52ffb96526 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c9d019aa8ab57cdbd1600def08b92f4a90b8ddb1c3fd329475e28ad9388525d5a813756472458bed674332a649c56eecb6cbba726b9afcfd9ce1f490bf327de49978b34fb106ae1ab4ece2f241e0b67ddf03bf835aa2dcc5cde5aca913d2a5ed74d1ad0e945169f10772d830fa5c33c7f7d543e2d2ac09fa03ff1509b94977cc0dcb8a464104a3e8d9f99cbefac4361b92517f14eda2558d572ae7410a78962e596c542a20d3aeb49cf41b48b54b387dea7c24c72edfd656bcb64c605b741c7b03892020ca2ff34e0b13534228bd83c9c3ffbfa219602041ac4238904bd782da7e3c653f518891f7ac1e7b05b7e37baab18eb54e8de76dfa8c803a0df843a28e +Ctrl.hexxcghash = hexxcghash:a970acc5597f7965dcc540dac7cefde594c0232180187a32364b42dbb8d0307f8c3f52678e303e2f315b2ba1cf62863a +Ctrl.hexsession_id = hexsession_id:bad9943e089550d17b90f2a34409660c07a39be5d48a77d8e1ad25726c93096081831c24e876060cb96def95df9a7fcd +Ctrl.type = type:A +Output = 8ad38b03467ef0cac638f93b156e1c05 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c9d019aa8ab57cdbd1600def08b92f4a90b8ddb1c3fd329475e28ad9388525d5a813756472458bed674332a649c56eecb6cbba726b9afcfd9ce1f490bf327de49978b34fb106ae1ab4ece2f241e0b67ddf03bf835aa2dcc5cde5aca913d2a5ed74d1ad0e945169f10772d830fa5c33c7f7d543e2d2ac09fa03ff1509b94977cc0dcb8a464104a3e8d9f99cbefac4361b92517f14eda2558d572ae7410a78962e596c542a20d3aeb49cf41b48b54b387dea7c24c72edfd656bcb64c605b741c7b03892020ca2ff34e0b13534228bd83c9c3ffbfa219602041ac4238904bd782da7e3c653f518891f7ac1e7b05b7e37baab18eb54e8de76dfa8c803a0df843a28e +Ctrl.hexxcghash = hexxcghash:a970acc5597f7965dcc540dac7cefde594c0232180187a32364b42dbb8d0307f8c3f52678e303e2f315b2ba1cf62863a +Ctrl.hexsession_id = hexsession_id:bad9943e089550d17b90f2a34409660c07a39be5d48a77d8e1ad25726c93096081831c24e876060cb96def95df9a7fcd +Ctrl.type = type:B +Output = c9a867164cad7619621c2390039db88f + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c9d019aa8ab57cdbd1600def08b92f4a90b8ddb1c3fd329475e28ad9388525d5a813756472458bed674332a649c56eecb6cbba726b9afcfd9ce1f490bf327de49978b34fb106ae1ab4ece2f241e0b67ddf03bf835aa2dcc5cde5aca913d2a5ed74d1ad0e945169f10772d830fa5c33c7f7d543e2d2ac09fa03ff1509b94977cc0dcb8a464104a3e8d9f99cbefac4361b92517f14eda2558d572ae7410a78962e596c542a20d3aeb49cf41b48b54b387dea7c24c72edfd656bcb64c605b741c7b03892020ca2ff34e0b13534228bd83c9c3ffbfa219602041ac4238904bd782da7e3c653f518891f7ac1e7b05b7e37baab18eb54e8de76dfa8c803a0df843a28e +Ctrl.hexxcghash = hexxcghash:a970acc5597f7965dcc540dac7cefde594c0232180187a32364b42dbb8d0307f8c3f52678e303e2f315b2ba1cf62863a +Ctrl.hexsession_id = hexsession_id:bad9943e089550d17b90f2a34409660c07a39be5d48a77d8e1ad25726c93096081831c24e876060cb96def95df9a7fcd +Ctrl.type = type:C +Output = 28d6e6a69e686b3b2ca02c7595b6a565 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c9d019aa8ab57cdbd1600def08b92f4a90b8ddb1c3fd329475e28ad9388525d5a813756472458bed674332a649c56eecb6cbba726b9afcfd9ce1f490bf327de49978b34fb106ae1ab4ece2f241e0b67ddf03bf835aa2dcc5cde5aca913d2a5ed74d1ad0e945169f10772d830fa5c33c7f7d543e2d2ac09fa03ff1509b94977cc0dcb8a464104a3e8d9f99cbefac4361b92517f14eda2558d572ae7410a78962e596c542a20d3aeb49cf41b48b54b387dea7c24c72edfd656bcb64c605b741c7b03892020ca2ff34e0b13534228bd83c9c3ffbfa219602041ac4238904bd782da7e3c653f518891f7ac1e7b05b7e37baab18eb54e8de76dfa8c803a0df843a28e +Ctrl.hexxcghash = hexxcghash:a970acc5597f7965dcc540dac7cefde594c0232180187a32364b42dbb8d0307f8c3f52678e303e2f315b2ba1cf62863a +Ctrl.hexsession_id = hexsession_id:bad9943e089550d17b90f2a34409660c07a39be5d48a77d8e1ad25726c93096081831c24e876060cb96def95df9a7fcd +Ctrl.type = type:D +Output = a3486f9014731b15530dba7498d4b2ff + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c9d019aa8ab57cdbd1600def08b92f4a90b8ddb1c3fd329475e28ad9388525d5a813756472458bed674332a649c56eecb6cbba726b9afcfd9ce1f490bf327de49978b34fb106ae1ab4ece2f241e0b67ddf03bf835aa2dcc5cde5aca913d2a5ed74d1ad0e945169f10772d830fa5c33c7f7d543e2d2ac09fa03ff1509b94977cc0dcb8a464104a3e8d9f99cbefac4361b92517f14eda2558d572ae7410a78962e596c542a20d3aeb49cf41b48b54b387dea7c24c72edfd656bcb64c605b741c7b03892020ca2ff34e0b13534228bd83c9c3ffbfa219602041ac4238904bd782da7e3c653f518891f7ac1e7b05b7e37baab18eb54e8de76dfa8c803a0df843a28e +Ctrl.hexxcghash = hexxcghash:a970acc5597f7965dcc540dac7cefde594c0232180187a32364b42dbb8d0307f8c3f52678e303e2f315b2ba1cf62863a +Ctrl.hexsession_id = hexsession_id:bad9943e089550d17b90f2a34409660c07a39be5d48a77d8e1ad25726c93096081831c24e876060cb96def95df9a7fcd +Ctrl.type = type:E +Output = 9640b7d6c1351a44dcd430f9728083949adbd8f3c47f1c7358b41d99730f0eeef9f8634cc99207b8d998c8aeb0085e4c + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c9d019aa8ab57cdbd1600def08b92f4a90b8ddb1c3fd329475e28ad9388525d5a813756472458bed674332a649c56eecb6cbba726b9afcfd9ce1f490bf327de49978b34fb106ae1ab4ece2f241e0b67ddf03bf835aa2dcc5cde5aca913d2a5ed74d1ad0e945169f10772d830fa5c33c7f7d543e2d2ac09fa03ff1509b94977cc0dcb8a464104a3e8d9f99cbefac4361b92517f14eda2558d572ae7410a78962e596c542a20d3aeb49cf41b48b54b387dea7c24c72edfd656bcb64c605b741c7b03892020ca2ff34e0b13534228bd83c9c3ffbfa219602041ac4238904bd782da7e3c653f518891f7ac1e7b05b7e37baab18eb54e8de76dfa8c803a0df843a28e +Ctrl.hexxcghash = hexxcghash:a970acc5597f7965dcc540dac7cefde594c0232180187a32364b42dbb8d0307f8c3f52678e303e2f315b2ba1cf62863a +Ctrl.hexsession_id = hexsession_id:bad9943e089550d17b90f2a34409660c07a39be5d48a77d8e1ad25726c93096081831c24e876060cb96def95df9a7fcd +Ctrl.type = type:F +Output = cef923f7cbc47534d9a6da613eea02117b19800995f66df9e49291203ad15e5d29cc08df86200bf09ca091b37cc45432 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100ba6b819aa094b3b9a2e93d37eda5df776720cce40858790532b8ab0de613b8e20efcef330eaa9e4ab290fd670b8f8ab1e2fc217d575655a7c39740ce223675a4376bd039f24165d83268a3e3a5b6e05f1b077dc752c90781d0cd6877c91c1fc865586bf661f28cbded4266f1b9364ae7233e6003b47088cb50f81a631d4b1d200f8c38455ad2217eaf03b6e0a0861aeebe28ef0fcbac5526bd06ebcc44f67de9b908f0359076527f6ff7bb959b3adfc9ac82728d7627bf506ffb2f8742ae28ce3ca7402c25b1cd3dac6781776a35549480ff537c33f63796dd5de4c64e1ff5546689d8f398be911707e0b5d347b8456e89eb2262270ee1de85902b7deb60b02b +Ctrl.hexxcghash = hexxcghash:e94db0c0969c8f09c1c0d63fcca9f316ae85a0c034f118958c714fa165ac71a86bbcc7a4c017c11b9558bda897455f99 +Ctrl.hexsession_id = hexsession_id:a01426386ce69a9a9f101394e831dc9d17a6dc901349f3c3f4269788f5c5e20316c233d7632005b1771e5bc2f5ddf4c2 +Ctrl.type = type:A +Output = 1e2fd838058e4569de0699e57eb9bb30 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100ba6b819aa094b3b9a2e93d37eda5df776720cce40858790532b8ab0de613b8e20efcef330eaa9e4ab290fd670b8f8ab1e2fc217d575655a7c39740ce223675a4376bd039f24165d83268a3e3a5b6e05f1b077dc752c90781d0cd6877c91c1fc865586bf661f28cbded4266f1b9364ae7233e6003b47088cb50f81a631d4b1d200f8c38455ad2217eaf03b6e0a0861aeebe28ef0fcbac5526bd06ebcc44f67de9b908f0359076527f6ff7bb959b3adfc9ac82728d7627bf506ffb2f8742ae28ce3ca7402c25b1cd3dac6781776a35549480ff537c33f63796dd5de4c64e1ff5546689d8f398be911707e0b5d347b8456e89eb2262270ee1de85902b7deb60b02b +Ctrl.hexxcghash = hexxcghash:e94db0c0969c8f09c1c0d63fcca9f316ae85a0c034f118958c714fa165ac71a86bbcc7a4c017c11b9558bda897455f99 +Ctrl.hexsession_id = hexsession_id:a01426386ce69a9a9f101394e831dc9d17a6dc901349f3c3f4269788f5c5e20316c233d7632005b1771e5bc2f5ddf4c2 +Ctrl.type = type:B +Output = d338052b2288e99bfdd16b5df26e3d3c + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100ba6b819aa094b3b9a2e93d37eda5df776720cce40858790532b8ab0de613b8e20efcef330eaa9e4ab290fd670b8f8ab1e2fc217d575655a7c39740ce223675a4376bd039f24165d83268a3e3a5b6e05f1b077dc752c90781d0cd6877c91c1fc865586bf661f28cbded4266f1b9364ae7233e6003b47088cb50f81a631d4b1d200f8c38455ad2217eaf03b6e0a0861aeebe28ef0fcbac5526bd06ebcc44f67de9b908f0359076527f6ff7bb959b3adfc9ac82728d7627bf506ffb2f8742ae28ce3ca7402c25b1cd3dac6781776a35549480ff537c33f63796dd5de4c64e1ff5546689d8f398be911707e0b5d347b8456e89eb2262270ee1de85902b7deb60b02b +Ctrl.hexxcghash = hexxcghash:e94db0c0969c8f09c1c0d63fcca9f316ae85a0c034f118958c714fa165ac71a86bbcc7a4c017c11b9558bda897455f99 +Ctrl.hexsession_id = hexsession_id:a01426386ce69a9a9f101394e831dc9d17a6dc901349f3c3f4269788f5c5e20316c233d7632005b1771e5bc2f5ddf4c2 +Ctrl.type = type:C +Output = 020c58037db045fc2a20a9b12e34205d + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100ba6b819aa094b3b9a2e93d37eda5df776720cce40858790532b8ab0de613b8e20efcef330eaa9e4ab290fd670b8f8ab1e2fc217d575655a7c39740ce223675a4376bd039f24165d83268a3e3a5b6e05f1b077dc752c90781d0cd6877c91c1fc865586bf661f28cbded4266f1b9364ae7233e6003b47088cb50f81a631d4b1d200f8c38455ad2217eaf03b6e0a0861aeebe28ef0fcbac5526bd06ebcc44f67de9b908f0359076527f6ff7bb959b3adfc9ac82728d7627bf506ffb2f8742ae28ce3ca7402c25b1cd3dac6781776a35549480ff537c33f63796dd5de4c64e1ff5546689d8f398be911707e0b5d347b8456e89eb2262270ee1de85902b7deb60b02b +Ctrl.hexxcghash = hexxcghash:e94db0c0969c8f09c1c0d63fcca9f316ae85a0c034f118958c714fa165ac71a86bbcc7a4c017c11b9558bda897455f99 +Ctrl.hexsession_id = hexsession_id:a01426386ce69a9a9f101394e831dc9d17a6dc901349f3c3f4269788f5c5e20316c233d7632005b1771e5bc2f5ddf4c2 +Ctrl.type = type:D +Output = b1e7b4361aaea7f9656151723c21b9a2 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100ba6b819aa094b3b9a2e93d37eda5df776720cce40858790532b8ab0de613b8e20efcef330eaa9e4ab290fd670b8f8ab1e2fc217d575655a7c39740ce223675a4376bd039f24165d83268a3e3a5b6e05f1b077dc752c90781d0cd6877c91c1fc865586bf661f28cbded4266f1b9364ae7233e6003b47088cb50f81a631d4b1d200f8c38455ad2217eaf03b6e0a0861aeebe28ef0fcbac5526bd06ebcc44f67de9b908f0359076527f6ff7bb959b3adfc9ac82728d7627bf506ffb2f8742ae28ce3ca7402c25b1cd3dac6781776a35549480ff537c33f63796dd5de4c64e1ff5546689d8f398be911707e0b5d347b8456e89eb2262270ee1de85902b7deb60b02b +Ctrl.hexxcghash = hexxcghash:e94db0c0969c8f09c1c0d63fcca9f316ae85a0c034f118958c714fa165ac71a86bbcc7a4c017c11b9558bda897455f99 +Ctrl.hexsession_id = hexsession_id:a01426386ce69a9a9f101394e831dc9d17a6dc901349f3c3f4269788f5c5e20316c233d7632005b1771e5bc2f5ddf4c2 +Ctrl.type = type:E +Output = 67d80666ba420d07153530859fed5a3a2f4b6decd37575714d4826f41a96a1638b89399cdd752af7f6ffd3db0214f0c1 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100ba6b819aa094b3b9a2e93d37eda5df776720cce40858790532b8ab0de613b8e20efcef330eaa9e4ab290fd670b8f8ab1e2fc217d575655a7c39740ce223675a4376bd039f24165d83268a3e3a5b6e05f1b077dc752c90781d0cd6877c91c1fc865586bf661f28cbded4266f1b9364ae7233e6003b47088cb50f81a631d4b1d200f8c38455ad2217eaf03b6e0a0861aeebe28ef0fcbac5526bd06ebcc44f67de9b908f0359076527f6ff7bb959b3adfc9ac82728d7627bf506ffb2f8742ae28ce3ca7402c25b1cd3dac6781776a35549480ff537c33f63796dd5de4c64e1ff5546689d8f398be911707e0b5d347b8456e89eb2262270ee1de85902b7deb60b02b +Ctrl.hexxcghash = hexxcghash:e94db0c0969c8f09c1c0d63fcca9f316ae85a0c034f118958c714fa165ac71a86bbcc7a4c017c11b9558bda897455f99 +Ctrl.hexsession_id = hexsession_id:a01426386ce69a9a9f101394e831dc9d17a6dc901349f3c3f4269788f5c5e20316c233d7632005b1771e5bc2f5ddf4c2 +Ctrl.type = type:F +Output = c3fb2ab670e39885cbb98a4609d69a90afd37d383512ad222d63c9c6f1009e2a42065a232ab5b39f55247f8bf9e6ab2c + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001001b9f110b05461796db3a0b751638b552e62a062d7b891591ac75e237d47f5f12d97a5d19be0718c8a2fbdd9100249c2d9ca59bf491b10afef75f61c53ae92455e8cb016e230408c869ea1c5f5d62e853ae84727e3d1f1bb0a0faa9ff575eede461f502b90ca38e8effae09478efedd16090202bf03530d03d0a2aa70825fb28c606b7545bdde26d606c059215a9f947e60c4b5de9b35a3704f73a5c8bc8811387431b7e90f1ddc71cf0696497fd640cb9b1b8866bff5d85e879e0a7848722d34cc62844afcc6318fe73ea80e484c3e62feb0cde9269c07edc0679683bc5427a163a4b4ac463802293f7c968e4188e7966b559c2581582c67ecda0c9b3b8eac94 +Ctrl.hexxcghash = hexxcghash:8886115c2324dede13be6895605a439c6ec48ca46f3d82170b863dcf1acc26176769626df893ebb7ce8c9432058633d8 +Ctrl.hexsession_id = hexsession_id:331f7e0103de46d90dbd885dadaf67c589bc6b3caf25e45e329d864c85b7c9ae17b27cb92a81c9b4421f431014cb0e03 +Ctrl.type = type:A +Output = 6e9bb7681d56457fd93aea6d40860dd9 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001001b9f110b05461796db3a0b751638b552e62a062d7b891591ac75e237d47f5f12d97a5d19be0718c8a2fbdd9100249c2d9ca59bf491b10afef75f61c53ae92455e8cb016e230408c869ea1c5f5d62e853ae84727e3d1f1bb0a0faa9ff575eede461f502b90ca38e8effae09478efedd16090202bf03530d03d0a2aa70825fb28c606b7545bdde26d606c059215a9f947e60c4b5de9b35a3704f73a5c8bc8811387431b7e90f1ddc71cf0696497fd640cb9b1b8866bff5d85e879e0a7848722d34cc62844afcc6318fe73ea80e484c3e62feb0cde9269c07edc0679683bc5427a163a4b4ac463802293f7c968e4188e7966b559c2581582c67ecda0c9b3b8eac94 +Ctrl.hexxcghash = hexxcghash:8886115c2324dede13be6895605a439c6ec48ca46f3d82170b863dcf1acc26176769626df893ebb7ce8c9432058633d8 +Ctrl.hexsession_id = hexsession_id:331f7e0103de46d90dbd885dadaf67c589bc6b3caf25e45e329d864c85b7c9ae17b27cb92a81c9b4421f431014cb0e03 +Ctrl.type = type:B +Output = 5d19ce6c6b16c5f2179753a7abdff3e4 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001001b9f110b05461796db3a0b751638b552e62a062d7b891591ac75e237d47f5f12d97a5d19be0718c8a2fbdd9100249c2d9ca59bf491b10afef75f61c53ae92455e8cb016e230408c869ea1c5f5d62e853ae84727e3d1f1bb0a0faa9ff575eede461f502b90ca38e8effae09478efedd16090202bf03530d03d0a2aa70825fb28c606b7545bdde26d606c059215a9f947e60c4b5de9b35a3704f73a5c8bc8811387431b7e90f1ddc71cf0696497fd640cb9b1b8866bff5d85e879e0a7848722d34cc62844afcc6318fe73ea80e484c3e62feb0cde9269c07edc0679683bc5427a163a4b4ac463802293f7c968e4188e7966b559c2581582c67ecda0c9b3b8eac94 +Ctrl.hexxcghash = hexxcghash:8886115c2324dede13be6895605a439c6ec48ca46f3d82170b863dcf1acc26176769626df893ebb7ce8c9432058633d8 +Ctrl.hexsession_id = hexsession_id:331f7e0103de46d90dbd885dadaf67c589bc6b3caf25e45e329d864c85b7c9ae17b27cb92a81c9b4421f431014cb0e03 +Ctrl.type = type:C +Output = c550416e8ea0608a09051cfffe0494e7 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001001b9f110b05461796db3a0b751638b552e62a062d7b891591ac75e237d47f5f12d97a5d19be0718c8a2fbdd9100249c2d9ca59bf491b10afef75f61c53ae92455e8cb016e230408c869ea1c5f5d62e853ae84727e3d1f1bb0a0faa9ff575eede461f502b90ca38e8effae09478efedd16090202bf03530d03d0a2aa70825fb28c606b7545bdde26d606c059215a9f947e60c4b5de9b35a3704f73a5c8bc8811387431b7e90f1ddc71cf0696497fd640cb9b1b8866bff5d85e879e0a7848722d34cc62844afcc6318fe73ea80e484c3e62feb0cde9269c07edc0679683bc5427a163a4b4ac463802293f7c968e4188e7966b559c2581582c67ecda0c9b3b8eac94 +Ctrl.hexxcghash = hexxcghash:8886115c2324dede13be6895605a439c6ec48ca46f3d82170b863dcf1acc26176769626df893ebb7ce8c9432058633d8 +Ctrl.hexsession_id = hexsession_id:331f7e0103de46d90dbd885dadaf67c589bc6b3caf25e45e329d864c85b7c9ae17b27cb92a81c9b4421f431014cb0e03 +Ctrl.type = type:D +Output = 33c9f3f03de395cef067684cb5b95200 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001001b9f110b05461796db3a0b751638b552e62a062d7b891591ac75e237d47f5f12d97a5d19be0718c8a2fbdd9100249c2d9ca59bf491b10afef75f61c53ae92455e8cb016e230408c869ea1c5f5d62e853ae84727e3d1f1bb0a0faa9ff575eede461f502b90ca38e8effae09478efedd16090202bf03530d03d0a2aa70825fb28c606b7545bdde26d606c059215a9f947e60c4b5de9b35a3704f73a5c8bc8811387431b7e90f1ddc71cf0696497fd640cb9b1b8866bff5d85e879e0a7848722d34cc62844afcc6318fe73ea80e484c3e62feb0cde9269c07edc0679683bc5427a163a4b4ac463802293f7c968e4188e7966b559c2581582c67ecda0c9b3b8eac94 +Ctrl.hexxcghash = hexxcghash:8886115c2324dede13be6895605a439c6ec48ca46f3d82170b863dcf1acc26176769626df893ebb7ce8c9432058633d8 +Ctrl.hexsession_id = hexsession_id:331f7e0103de46d90dbd885dadaf67c589bc6b3caf25e45e329d864c85b7c9ae17b27cb92a81c9b4421f431014cb0e03 +Ctrl.type = type:E +Output = 99071b0615bdec08d040e731828028fac9a16d367b86d2d1302b607cd39ac9678ae7f9f87eb619fe2ba75d54da3b07d1 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001001b9f110b05461796db3a0b751638b552e62a062d7b891591ac75e237d47f5f12d97a5d19be0718c8a2fbdd9100249c2d9ca59bf491b10afef75f61c53ae92455e8cb016e230408c869ea1c5f5d62e853ae84727e3d1f1bb0a0faa9ff575eede461f502b90ca38e8effae09478efedd16090202bf03530d03d0a2aa70825fb28c606b7545bdde26d606c059215a9f947e60c4b5de9b35a3704f73a5c8bc8811387431b7e90f1ddc71cf0696497fd640cb9b1b8866bff5d85e879e0a7848722d34cc62844afcc6318fe73ea80e484c3e62feb0cde9269c07edc0679683bc5427a163a4b4ac463802293f7c968e4188e7966b559c2581582c67ecda0c9b3b8eac94 +Ctrl.hexxcghash = hexxcghash:8886115c2324dede13be6895605a439c6ec48ca46f3d82170b863dcf1acc26176769626df893ebb7ce8c9432058633d8 +Ctrl.hexsession_id = hexsession_id:331f7e0103de46d90dbd885dadaf67c589bc6b3caf25e45e329d864c85b7c9ae17b27cb92a81c9b4421f431014cb0e03 +Ctrl.type = type:F +Output = a11fc539c46d9314645e1f7517e19794a6ba4bf7d7d5a6f71bcb4621bfdedeae3bbcaa62fb638d994d1f21d14f5777d7 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001004db530516876fb9937bc2da16117f9675c721da6b80cd49e6b6eb0df6fe4af90ae755378e77e28dbc376e000903b1365a7b3cddfaf19410b31ae44e3e6641c5d47002ac5b261b1c4f7f301c8d16a917135c23bf7f84f15a6143e7e3466c52e1e3c30026f15d5254da11ced1b817739768de9913aca2d808acaa31e933763eb438238b347a6bd07834d4f661690cdb2372b4205aa9ad80df40340c1d0b1db320df1d1b13fa2ff4b9ee4500c9d03f45e75fb15a97b833ab9827708e4bca8fea562d69fea573ca7b5905c71e51dc9f24a74bd0c596051066acdeb66eb39c76fab66b10bdc88e1b72bba8aafa342088cd4a739a18e61c75be6b5df0904dc5094f0df +Ctrl.hexxcghash = hexxcghash:12ce3e6a5407943831d65608c9fd59c972689136289af06071c015f8a41c9d1536d0afdad084322f832415fbf199d044 +Ctrl.hexsession_id = hexsession_id:939c41734aa3db9d9dfac7a7db54c889da38d8bbe00326f559a3b0f92a96b5ac3a454d8355ccd0f31099021d0ee43063 +Ctrl.type = type:A +Output = 876692595fbf1239e03b1eb28890cedf + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001004db530516876fb9937bc2da16117f9675c721da6b80cd49e6b6eb0df6fe4af90ae755378e77e28dbc376e000903b1365a7b3cddfaf19410b31ae44e3e6641c5d47002ac5b261b1c4f7f301c8d16a917135c23bf7f84f15a6143e7e3466c52e1e3c30026f15d5254da11ced1b817739768de9913aca2d808acaa31e933763eb438238b347a6bd07834d4f661690cdb2372b4205aa9ad80df40340c1d0b1db320df1d1b13fa2ff4b9ee4500c9d03f45e75fb15a97b833ab9827708e4bca8fea562d69fea573ca7b5905c71e51dc9f24a74bd0c596051066acdeb66eb39c76fab66b10bdc88e1b72bba8aafa342088cd4a739a18e61c75be6b5df0904dc5094f0df +Ctrl.hexxcghash = hexxcghash:12ce3e6a5407943831d65608c9fd59c972689136289af06071c015f8a41c9d1536d0afdad084322f832415fbf199d044 +Ctrl.hexsession_id = hexsession_id:939c41734aa3db9d9dfac7a7db54c889da38d8bbe00326f559a3b0f92a96b5ac3a454d8355ccd0f31099021d0ee43063 +Ctrl.type = type:B +Output = 438afd7eae8454675ed5964122fcbb9e + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001004db530516876fb9937bc2da16117f9675c721da6b80cd49e6b6eb0df6fe4af90ae755378e77e28dbc376e000903b1365a7b3cddfaf19410b31ae44e3e6641c5d47002ac5b261b1c4f7f301c8d16a917135c23bf7f84f15a6143e7e3466c52e1e3c30026f15d5254da11ced1b817739768de9913aca2d808acaa31e933763eb438238b347a6bd07834d4f661690cdb2372b4205aa9ad80df40340c1d0b1db320df1d1b13fa2ff4b9ee4500c9d03f45e75fb15a97b833ab9827708e4bca8fea562d69fea573ca7b5905c71e51dc9f24a74bd0c596051066acdeb66eb39c76fab66b10bdc88e1b72bba8aafa342088cd4a739a18e61c75be6b5df0904dc5094f0df +Ctrl.hexxcghash = hexxcghash:12ce3e6a5407943831d65608c9fd59c972689136289af06071c015f8a41c9d1536d0afdad084322f832415fbf199d044 +Ctrl.hexsession_id = hexsession_id:939c41734aa3db9d9dfac7a7db54c889da38d8bbe00326f559a3b0f92a96b5ac3a454d8355ccd0f31099021d0ee43063 +Ctrl.type = type:C +Output = b9cc0e2718c5853e0aebb43409fcaaef + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001004db530516876fb9937bc2da16117f9675c721da6b80cd49e6b6eb0df6fe4af90ae755378e77e28dbc376e000903b1365a7b3cddfaf19410b31ae44e3e6641c5d47002ac5b261b1c4f7f301c8d16a917135c23bf7f84f15a6143e7e3466c52e1e3c30026f15d5254da11ced1b817739768de9913aca2d808acaa31e933763eb438238b347a6bd07834d4f661690cdb2372b4205aa9ad80df40340c1d0b1db320df1d1b13fa2ff4b9ee4500c9d03f45e75fb15a97b833ab9827708e4bca8fea562d69fea573ca7b5905c71e51dc9f24a74bd0c596051066acdeb66eb39c76fab66b10bdc88e1b72bba8aafa342088cd4a739a18e61c75be6b5df0904dc5094f0df +Ctrl.hexxcghash = hexxcghash:12ce3e6a5407943831d65608c9fd59c972689136289af06071c015f8a41c9d1536d0afdad084322f832415fbf199d044 +Ctrl.hexsession_id = hexsession_id:939c41734aa3db9d9dfac7a7db54c889da38d8bbe00326f559a3b0f92a96b5ac3a454d8355ccd0f31099021d0ee43063 +Ctrl.type = type:D +Output = 8def9f93e633ac2d28a7c5b76567a4cb + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001004db530516876fb9937bc2da16117f9675c721da6b80cd49e6b6eb0df6fe4af90ae755378e77e28dbc376e000903b1365a7b3cddfaf19410b31ae44e3e6641c5d47002ac5b261b1c4f7f301c8d16a917135c23bf7f84f15a6143e7e3466c52e1e3c30026f15d5254da11ced1b817739768de9913aca2d808acaa31e933763eb438238b347a6bd07834d4f661690cdb2372b4205aa9ad80df40340c1d0b1db320df1d1b13fa2ff4b9ee4500c9d03f45e75fb15a97b833ab9827708e4bca8fea562d69fea573ca7b5905c71e51dc9f24a74bd0c596051066acdeb66eb39c76fab66b10bdc88e1b72bba8aafa342088cd4a739a18e61c75be6b5df0904dc5094f0df +Ctrl.hexxcghash = hexxcghash:12ce3e6a5407943831d65608c9fd59c972689136289af06071c015f8a41c9d1536d0afdad084322f832415fbf199d044 +Ctrl.hexsession_id = hexsession_id:939c41734aa3db9d9dfac7a7db54c889da38d8bbe00326f559a3b0f92a96b5ac3a454d8355ccd0f31099021d0ee43063 +Ctrl.type = type:E +Output = 3d80ed20f0703857154bda8531b12b96cf73aedfc662df6faf277321be6e38c904bfbd5f9206607684ac331dfc92bbbb + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001004db530516876fb9937bc2da16117f9675c721da6b80cd49e6b6eb0df6fe4af90ae755378e77e28dbc376e000903b1365a7b3cddfaf19410b31ae44e3e6641c5d47002ac5b261b1c4f7f301c8d16a917135c23bf7f84f15a6143e7e3466c52e1e3c30026f15d5254da11ced1b817739768de9913aca2d808acaa31e933763eb438238b347a6bd07834d4f661690cdb2372b4205aa9ad80df40340c1d0b1db320df1d1b13fa2ff4b9ee4500c9d03f45e75fb15a97b833ab9827708e4bca8fea562d69fea573ca7b5905c71e51dc9f24a74bd0c596051066acdeb66eb39c76fab66b10bdc88e1b72bba8aafa342088cd4a739a18e61c75be6b5df0904dc5094f0df +Ctrl.hexxcghash = hexxcghash:12ce3e6a5407943831d65608c9fd59c972689136289af06071c015f8a41c9d1536d0afdad084322f832415fbf199d044 +Ctrl.hexsession_id = hexsession_id:939c41734aa3db9d9dfac7a7db54c889da38d8bbe00326f559a3b0f92a96b5ac3a454d8355ccd0f31099021d0ee43063 +Ctrl.type = type:F +Output = 736e77ad5a8fac835795ab08522d834e34a4cbc48439db2845cb1d8636a4dcfd49a7ac5413713a8177c277eead96a0ff + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001004d7ba3e909e1e2886e00db333430d7cebe5107e9701672a2a1bc0bb5461c620c56fc8a8aa95a577cf48ac2e5b35d948e468bbc6232527f6a4e3bf5ea0b2f68b161ee3aadeef596c683e511bec1ff70df312d988eddd557952720f82f69882107f67880e38efcca68429374d85831eea3ac133a6a89b68a9ec27c71a67c87addfddb7040a7416ead43e29612dcdc5b7e6a82ad5cd243e8a6dd2997c44ad76a2a20145f89d7e6b2a26c2c0f2ce7d60b1f45410f9ebb79b52dde560f8c7c99b7a11d645f6ad6f94727cd2ea9d48ceb27467ee60371e6919a3ae044c8941a65182c94e8efd7b5c7eb45935baea722628d89d89de995d82b620059fe1054927864a91 +Ctrl.hexxcghash = hexxcghash:f3cc38427adf01b9483d1f9e4e9acef554a8c7d0d8dc088d3865f05bc06a4ff11efbbdbca7ab0e0c0e2df55a93f0b4b9 +Ctrl.hexsession_id = hexsession_id:aae879d8c0c6762d28c30fdc707b169a2155f8b8a943ced399a56419be89cc9f66ba9282d85ac4e53e0d5ae27adcf393 +Ctrl.type = type:A +Output = c84a4fcd4ade28805b032174428a6f27 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001004d7ba3e909e1e2886e00db333430d7cebe5107e9701672a2a1bc0bb5461c620c56fc8a8aa95a577cf48ac2e5b35d948e468bbc6232527f6a4e3bf5ea0b2f68b161ee3aadeef596c683e511bec1ff70df312d988eddd557952720f82f69882107f67880e38efcca68429374d85831eea3ac133a6a89b68a9ec27c71a67c87addfddb7040a7416ead43e29612dcdc5b7e6a82ad5cd243e8a6dd2997c44ad76a2a20145f89d7e6b2a26c2c0f2ce7d60b1f45410f9ebb79b52dde560f8c7c99b7a11d645f6ad6f94727cd2ea9d48ceb27467ee60371e6919a3ae044c8941a65182c94e8efd7b5c7eb45935baea722628d89d89de995d82b620059fe1054927864a91 +Ctrl.hexxcghash = hexxcghash:f3cc38427adf01b9483d1f9e4e9acef554a8c7d0d8dc088d3865f05bc06a4ff11efbbdbca7ab0e0c0e2df55a93f0b4b9 +Ctrl.hexsession_id = hexsession_id:aae879d8c0c6762d28c30fdc707b169a2155f8b8a943ced399a56419be89cc9f66ba9282d85ac4e53e0d5ae27adcf393 +Ctrl.type = type:B +Output = 27b0de69f3bc7d79d2f6b54101f3e10f + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001004d7ba3e909e1e2886e00db333430d7cebe5107e9701672a2a1bc0bb5461c620c56fc8a8aa95a577cf48ac2e5b35d948e468bbc6232527f6a4e3bf5ea0b2f68b161ee3aadeef596c683e511bec1ff70df312d988eddd557952720f82f69882107f67880e38efcca68429374d85831eea3ac133a6a89b68a9ec27c71a67c87addfddb7040a7416ead43e29612dcdc5b7e6a82ad5cd243e8a6dd2997c44ad76a2a20145f89d7e6b2a26c2c0f2ce7d60b1f45410f9ebb79b52dde560f8c7c99b7a11d645f6ad6f94727cd2ea9d48ceb27467ee60371e6919a3ae044c8941a65182c94e8efd7b5c7eb45935baea722628d89d89de995d82b620059fe1054927864a91 +Ctrl.hexxcghash = hexxcghash:f3cc38427adf01b9483d1f9e4e9acef554a8c7d0d8dc088d3865f05bc06a4ff11efbbdbca7ab0e0c0e2df55a93f0b4b9 +Ctrl.hexsession_id = hexsession_id:aae879d8c0c6762d28c30fdc707b169a2155f8b8a943ced399a56419be89cc9f66ba9282d85ac4e53e0d5ae27adcf393 +Ctrl.type = type:C +Output = 3200c39e6ed260f4f345cbd0c88cac1a + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001004d7ba3e909e1e2886e00db333430d7cebe5107e9701672a2a1bc0bb5461c620c56fc8a8aa95a577cf48ac2e5b35d948e468bbc6232527f6a4e3bf5ea0b2f68b161ee3aadeef596c683e511bec1ff70df312d988eddd557952720f82f69882107f67880e38efcca68429374d85831eea3ac133a6a89b68a9ec27c71a67c87addfddb7040a7416ead43e29612dcdc5b7e6a82ad5cd243e8a6dd2997c44ad76a2a20145f89d7e6b2a26c2c0f2ce7d60b1f45410f9ebb79b52dde560f8c7c99b7a11d645f6ad6f94727cd2ea9d48ceb27467ee60371e6919a3ae044c8941a65182c94e8efd7b5c7eb45935baea722628d89d89de995d82b620059fe1054927864a91 +Ctrl.hexxcghash = hexxcghash:f3cc38427adf01b9483d1f9e4e9acef554a8c7d0d8dc088d3865f05bc06a4ff11efbbdbca7ab0e0c0e2df55a93f0b4b9 +Ctrl.hexsession_id = hexsession_id:aae879d8c0c6762d28c30fdc707b169a2155f8b8a943ced399a56419be89cc9f66ba9282d85ac4e53e0d5ae27adcf393 +Ctrl.type = type:D +Output = 7b9e506a1baede9b80dff09253a9ab88 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001004d7ba3e909e1e2886e00db333430d7cebe5107e9701672a2a1bc0bb5461c620c56fc8a8aa95a577cf48ac2e5b35d948e468bbc6232527f6a4e3bf5ea0b2f68b161ee3aadeef596c683e511bec1ff70df312d988eddd557952720f82f69882107f67880e38efcca68429374d85831eea3ac133a6a89b68a9ec27c71a67c87addfddb7040a7416ead43e29612dcdc5b7e6a82ad5cd243e8a6dd2997c44ad76a2a20145f89d7e6b2a26c2c0f2ce7d60b1f45410f9ebb79b52dde560f8c7c99b7a11d645f6ad6f94727cd2ea9d48ceb27467ee60371e6919a3ae044c8941a65182c94e8efd7b5c7eb45935baea722628d89d89de995d82b620059fe1054927864a91 +Ctrl.hexxcghash = hexxcghash:f3cc38427adf01b9483d1f9e4e9acef554a8c7d0d8dc088d3865f05bc06a4ff11efbbdbca7ab0e0c0e2df55a93f0b4b9 +Ctrl.hexsession_id = hexsession_id:aae879d8c0c6762d28c30fdc707b169a2155f8b8a943ced399a56419be89cc9f66ba9282d85ac4e53e0d5ae27adcf393 +Ctrl.type = type:E +Output = 3c860ae21a5dab865eb560ed9ddf51775d3b6603e4e06285cf5e9273115a77d8d5ddfb977fd21c0a70c35798a5ef596e + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001004d7ba3e909e1e2886e00db333430d7cebe5107e9701672a2a1bc0bb5461c620c56fc8a8aa95a577cf48ac2e5b35d948e468bbc6232527f6a4e3bf5ea0b2f68b161ee3aadeef596c683e511bec1ff70df312d988eddd557952720f82f69882107f67880e38efcca68429374d85831eea3ac133a6a89b68a9ec27c71a67c87addfddb7040a7416ead43e29612dcdc5b7e6a82ad5cd243e8a6dd2997c44ad76a2a20145f89d7e6b2a26c2c0f2ce7d60b1f45410f9ebb79b52dde560f8c7c99b7a11d645f6ad6f94727cd2ea9d48ceb27467ee60371e6919a3ae044c8941a65182c94e8efd7b5c7eb45935baea722628d89d89de995d82b620059fe1054927864a91 +Ctrl.hexxcghash = hexxcghash:f3cc38427adf01b9483d1f9e4e9acef554a8c7d0d8dc088d3865f05bc06a4ff11efbbdbca7ab0e0c0e2df55a93f0b4b9 +Ctrl.hexsession_id = hexsession_id:aae879d8c0c6762d28c30fdc707b169a2155f8b8a943ced399a56419be89cc9f66ba9282d85ac4e53e0d5ae27adcf393 +Ctrl.type = type:F +Output = c53cfa0836ac21bb13c58ed15ddf593e8e01c7437587112ba013058d411d262d87a5e56c098b69146d9019803206ef91 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001001cbe25a738580c94ae733a5d4e9e61860bf1a68dfac365edc5818814166cfaecf269d07293d656c8e99973934b5f14eb4bcd1ac3c388596221f65f66e1193463bd41fcff389e458ef7f1ef858439b600bca422cd29c84d2cbc684c7a85d8b44f6a43a5fc53bbaa4ad1a6b0f2b841278efb1fbdd2513e6603984027efb81c72d8c4cbadc8dec51089dcd43ed3109ddbc6db29534186a237c5d8c3a66dedbb51b09937b1c7d4cf6cac682ba2dd1c9cf901d66f1a995f945d5ad12bd7bfdd3fcc5b0852376b9834f0bee3f7a666f587bd2a3b562ccf129b6132c902738fd0dfea3ff9538961bf5f59ac1779dd4ed68986059881f5e08be5ecd1a59380392e81f0a6 +Ctrl.hexxcghash = hexxcghash:b32d4e6b47772e651b867558a03f488fc00c715c196c7abb1abf3ebc24a638edd058e77aeadd9aade5ce34f43e19f1fc +Ctrl.hexsession_id = hexsession_id:5d2a819b135d8d985643ceab3461ede24ed192c60471676031b4b1f8ae71dec657547fdb3a43f75112855ffce72b60f4 +Ctrl.type = type:A +Output = e34b595f755ff42a33126d8efabe1ec0 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001001cbe25a738580c94ae733a5d4e9e61860bf1a68dfac365edc5818814166cfaecf269d07293d656c8e99973934b5f14eb4bcd1ac3c388596221f65f66e1193463bd41fcff389e458ef7f1ef858439b600bca422cd29c84d2cbc684c7a85d8b44f6a43a5fc53bbaa4ad1a6b0f2b841278efb1fbdd2513e6603984027efb81c72d8c4cbadc8dec51089dcd43ed3109ddbc6db29534186a237c5d8c3a66dedbb51b09937b1c7d4cf6cac682ba2dd1c9cf901d66f1a995f945d5ad12bd7bfdd3fcc5b0852376b9834f0bee3f7a666f587bd2a3b562ccf129b6132c902738fd0dfea3ff9538961bf5f59ac1779dd4ed68986059881f5e08be5ecd1a59380392e81f0a6 +Ctrl.hexxcghash = hexxcghash:b32d4e6b47772e651b867558a03f488fc00c715c196c7abb1abf3ebc24a638edd058e77aeadd9aade5ce34f43e19f1fc +Ctrl.hexsession_id = hexsession_id:5d2a819b135d8d985643ceab3461ede24ed192c60471676031b4b1f8ae71dec657547fdb3a43f75112855ffce72b60f4 +Ctrl.type = type:B +Output = a873f52aa3b91a8dd019be8358c04de6 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001001cbe25a738580c94ae733a5d4e9e61860bf1a68dfac365edc5818814166cfaecf269d07293d656c8e99973934b5f14eb4bcd1ac3c388596221f65f66e1193463bd41fcff389e458ef7f1ef858439b600bca422cd29c84d2cbc684c7a85d8b44f6a43a5fc53bbaa4ad1a6b0f2b841278efb1fbdd2513e6603984027efb81c72d8c4cbadc8dec51089dcd43ed3109ddbc6db29534186a237c5d8c3a66dedbb51b09937b1c7d4cf6cac682ba2dd1c9cf901d66f1a995f945d5ad12bd7bfdd3fcc5b0852376b9834f0bee3f7a666f587bd2a3b562ccf129b6132c902738fd0dfea3ff9538961bf5f59ac1779dd4ed68986059881f5e08be5ecd1a59380392e81f0a6 +Ctrl.hexxcghash = hexxcghash:b32d4e6b47772e651b867558a03f488fc00c715c196c7abb1abf3ebc24a638edd058e77aeadd9aade5ce34f43e19f1fc +Ctrl.hexsession_id = hexsession_id:5d2a819b135d8d985643ceab3461ede24ed192c60471676031b4b1f8ae71dec657547fdb3a43f75112855ffce72b60f4 +Ctrl.type = type:C +Output = fce5c490a769fbd4aa31b0f5c7aad86b + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001001cbe25a738580c94ae733a5d4e9e61860bf1a68dfac365edc5818814166cfaecf269d07293d656c8e99973934b5f14eb4bcd1ac3c388596221f65f66e1193463bd41fcff389e458ef7f1ef858439b600bca422cd29c84d2cbc684c7a85d8b44f6a43a5fc53bbaa4ad1a6b0f2b841278efb1fbdd2513e6603984027efb81c72d8c4cbadc8dec51089dcd43ed3109ddbc6db29534186a237c5d8c3a66dedbb51b09937b1c7d4cf6cac682ba2dd1c9cf901d66f1a995f945d5ad12bd7bfdd3fcc5b0852376b9834f0bee3f7a666f587bd2a3b562ccf129b6132c902738fd0dfea3ff9538961bf5f59ac1779dd4ed68986059881f5e08be5ecd1a59380392e81f0a6 +Ctrl.hexxcghash = hexxcghash:b32d4e6b47772e651b867558a03f488fc00c715c196c7abb1abf3ebc24a638edd058e77aeadd9aade5ce34f43e19f1fc +Ctrl.hexsession_id = hexsession_id:5d2a819b135d8d985643ceab3461ede24ed192c60471676031b4b1f8ae71dec657547fdb3a43f75112855ffce72b60f4 +Ctrl.type = type:D +Output = d36a9b7d2c63675d2b250d5a97b0e628 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001001cbe25a738580c94ae733a5d4e9e61860bf1a68dfac365edc5818814166cfaecf269d07293d656c8e99973934b5f14eb4bcd1ac3c388596221f65f66e1193463bd41fcff389e458ef7f1ef858439b600bca422cd29c84d2cbc684c7a85d8b44f6a43a5fc53bbaa4ad1a6b0f2b841278efb1fbdd2513e6603984027efb81c72d8c4cbadc8dec51089dcd43ed3109ddbc6db29534186a237c5d8c3a66dedbb51b09937b1c7d4cf6cac682ba2dd1c9cf901d66f1a995f945d5ad12bd7bfdd3fcc5b0852376b9834f0bee3f7a666f587bd2a3b562ccf129b6132c902738fd0dfea3ff9538961bf5f59ac1779dd4ed68986059881f5e08be5ecd1a59380392e81f0a6 +Ctrl.hexxcghash = hexxcghash:b32d4e6b47772e651b867558a03f488fc00c715c196c7abb1abf3ebc24a638edd058e77aeadd9aade5ce34f43e19f1fc +Ctrl.hexsession_id = hexsession_id:5d2a819b135d8d985643ceab3461ede24ed192c60471676031b4b1f8ae71dec657547fdb3a43f75112855ffce72b60f4 +Ctrl.type = type:E +Output = 92c8f89f84575cebb9c37be3a488d0b0312a12d9253dbada7db1318f5a193d4f8f75a212a75c1123bca89d5de43cbf08 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:000001001cbe25a738580c94ae733a5d4e9e61860bf1a68dfac365edc5818814166cfaecf269d07293d656c8e99973934b5f14eb4bcd1ac3c388596221f65f66e1193463bd41fcff389e458ef7f1ef858439b600bca422cd29c84d2cbc684c7a85d8b44f6a43a5fc53bbaa4ad1a6b0f2b841278efb1fbdd2513e6603984027efb81c72d8c4cbadc8dec51089dcd43ed3109ddbc6db29534186a237c5d8c3a66dedbb51b09937b1c7d4cf6cac682ba2dd1c9cf901d66f1a995f945d5ad12bd7bfdd3fcc5b0852376b9834f0bee3f7a666f587bd2a3b562ccf129b6132c902738fd0dfea3ff9538961bf5f59ac1779dd4ed68986059881f5e08be5ecd1a59380392e81f0a6 +Ctrl.hexxcghash = hexxcghash:b32d4e6b47772e651b867558a03f488fc00c715c196c7abb1abf3ebc24a638edd058e77aeadd9aade5ce34f43e19f1fc +Ctrl.hexsession_id = hexsession_id:5d2a819b135d8d985643ceab3461ede24ed192c60471676031b4b1f8ae71dec657547fdb3a43f75112855ffce72b60f4 +Ctrl.type = type:F +Output = 16dcf1bd1aa4d5d6edc2d2b23792872f53767d6b2589e4700469a9bbbbb659c1c8716393fe1ed717833f491cd32d874b + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c7f8bcaf17cb17db3d5c2c9e8db37fa77685463d604e6b577ace9ada1b5a7fb54a299684a5405973352262ed66a7e47e4cf9ba7981f76a0aa6bf407be5fc48f70869b6913f7d9b2395f73eda2f08ad5469df982bd82242c19bba0dbcc28fa5869bab99b84015a313cebcc3e86ec3fd15513e329a236487e909a6b37134bc75b03dbda7f9196738ae5f04ac3cae6a3c93150271eeed62f8c019f433df888acec09e947dee6537c4fee5e0dc37d3b4ae4ff77309382148f0127cd01b882f128ee844046c9f3052ff7fff81876c261ad6cdad0a9ebfc769a4308f124d2422f03c1b171ac3404d4d690e9c1d94fc3de479bda663c207120a18f1947a68179d19ecaa +Ctrl.hexxcghash = hexxcghash:ce996d2b1198f069c24193526be1dd0d08a95d0b0a144da5a1303e84de4eb864d49ca71fa5a59f51c10b9d4257787626 +Ctrl.hexsession_id = hexsession_id:ed906230bdcff56bd239a8c52f3cb1e4e16d1249284162ca85b320e543f62a82d7270131231cf49e1b0c0b1e87643719 +Ctrl.type = type:A +Output = bbdc47242c877cc70585a5d9f0b8067d + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c7f8bcaf17cb17db3d5c2c9e8db37fa77685463d604e6b577ace9ada1b5a7fb54a299684a5405973352262ed66a7e47e4cf9ba7981f76a0aa6bf407be5fc48f70869b6913f7d9b2395f73eda2f08ad5469df982bd82242c19bba0dbcc28fa5869bab99b84015a313cebcc3e86ec3fd15513e329a236487e909a6b37134bc75b03dbda7f9196738ae5f04ac3cae6a3c93150271eeed62f8c019f433df888acec09e947dee6537c4fee5e0dc37d3b4ae4ff77309382148f0127cd01b882f128ee844046c9f3052ff7fff81876c261ad6cdad0a9ebfc769a4308f124d2422f03c1b171ac3404d4d690e9c1d94fc3de479bda663c207120a18f1947a68179d19ecaa +Ctrl.hexxcghash = hexxcghash:ce996d2b1198f069c24193526be1dd0d08a95d0b0a144da5a1303e84de4eb864d49ca71fa5a59f51c10b9d4257787626 +Ctrl.hexsession_id = hexsession_id:ed906230bdcff56bd239a8c52f3cb1e4e16d1249284162ca85b320e543f62a82d7270131231cf49e1b0c0b1e87643719 +Ctrl.type = type:B +Output = 6dcc6458af049a81a6d3139c2725f67d + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c7f8bcaf17cb17db3d5c2c9e8db37fa77685463d604e6b577ace9ada1b5a7fb54a299684a5405973352262ed66a7e47e4cf9ba7981f76a0aa6bf407be5fc48f70869b6913f7d9b2395f73eda2f08ad5469df982bd82242c19bba0dbcc28fa5869bab99b84015a313cebcc3e86ec3fd15513e329a236487e909a6b37134bc75b03dbda7f9196738ae5f04ac3cae6a3c93150271eeed62f8c019f433df888acec09e947dee6537c4fee5e0dc37d3b4ae4ff77309382148f0127cd01b882f128ee844046c9f3052ff7fff81876c261ad6cdad0a9ebfc769a4308f124d2422f03c1b171ac3404d4d690e9c1d94fc3de479bda663c207120a18f1947a68179d19ecaa +Ctrl.hexxcghash = hexxcghash:ce996d2b1198f069c24193526be1dd0d08a95d0b0a144da5a1303e84de4eb864d49ca71fa5a59f51c10b9d4257787626 +Ctrl.hexsession_id = hexsession_id:ed906230bdcff56bd239a8c52f3cb1e4e16d1249284162ca85b320e543f62a82d7270131231cf49e1b0c0b1e87643719 +Ctrl.type = type:C +Output = f788d0b9ea5373031d44972fad39d8e6 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c7f8bcaf17cb17db3d5c2c9e8db37fa77685463d604e6b577ace9ada1b5a7fb54a299684a5405973352262ed66a7e47e4cf9ba7981f76a0aa6bf407be5fc48f70869b6913f7d9b2395f73eda2f08ad5469df982bd82242c19bba0dbcc28fa5869bab99b84015a313cebcc3e86ec3fd15513e329a236487e909a6b37134bc75b03dbda7f9196738ae5f04ac3cae6a3c93150271eeed62f8c019f433df888acec09e947dee6537c4fee5e0dc37d3b4ae4ff77309382148f0127cd01b882f128ee844046c9f3052ff7fff81876c261ad6cdad0a9ebfc769a4308f124d2422f03c1b171ac3404d4d690e9c1d94fc3de479bda663c207120a18f1947a68179d19ecaa +Ctrl.hexxcghash = hexxcghash:ce996d2b1198f069c24193526be1dd0d08a95d0b0a144da5a1303e84de4eb864d49ca71fa5a59f51c10b9d4257787626 +Ctrl.hexsession_id = hexsession_id:ed906230bdcff56bd239a8c52f3cb1e4e16d1249284162ca85b320e543f62a82d7270131231cf49e1b0c0b1e87643719 +Ctrl.type = type:D +Output = e939b1367ea35c67ea990988c3c0c474 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c7f8bcaf17cb17db3d5c2c9e8db37fa77685463d604e6b577ace9ada1b5a7fb54a299684a5405973352262ed66a7e47e4cf9ba7981f76a0aa6bf407be5fc48f70869b6913f7d9b2395f73eda2f08ad5469df982bd82242c19bba0dbcc28fa5869bab99b84015a313cebcc3e86ec3fd15513e329a236487e909a6b37134bc75b03dbda7f9196738ae5f04ac3cae6a3c93150271eeed62f8c019f433df888acec09e947dee6537c4fee5e0dc37d3b4ae4ff77309382148f0127cd01b882f128ee844046c9f3052ff7fff81876c261ad6cdad0a9ebfc769a4308f124d2422f03c1b171ac3404d4d690e9c1d94fc3de479bda663c207120a18f1947a68179d19ecaa +Ctrl.hexxcghash = hexxcghash:ce996d2b1198f069c24193526be1dd0d08a95d0b0a144da5a1303e84de4eb864d49ca71fa5a59f51c10b9d4257787626 +Ctrl.hexsession_id = hexsession_id:ed906230bdcff56bd239a8c52f3cb1e4e16d1249284162ca85b320e543f62a82d7270131231cf49e1b0c0b1e87643719 +Ctrl.type = type:E +Output = 069629f693b4d291ea6f16355eb4c57eef7824217d22651af095aadac27a789314fee4e86efa9bc63085a8ebfc606548 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100c7f8bcaf17cb17db3d5c2c9e8db37fa77685463d604e6b577ace9ada1b5a7fb54a299684a5405973352262ed66a7e47e4cf9ba7981f76a0aa6bf407be5fc48f70869b6913f7d9b2395f73eda2f08ad5469df982bd82242c19bba0dbcc28fa5869bab99b84015a313cebcc3e86ec3fd15513e329a236487e909a6b37134bc75b03dbda7f9196738ae5f04ac3cae6a3c93150271eeed62f8c019f433df888acec09e947dee6537c4fee5e0dc37d3b4ae4ff77309382148f0127cd01b882f128ee844046c9f3052ff7fff81876c261ad6cdad0a9ebfc769a4308f124d2422f03c1b171ac3404d4d690e9c1d94fc3de479bda663c207120a18f1947a68179d19ecaa +Ctrl.hexxcghash = hexxcghash:ce996d2b1198f069c24193526be1dd0d08a95d0b0a144da5a1303e84de4eb864d49ca71fa5a59f51c10b9d4257787626 +Ctrl.hexsession_id = hexsession_id:ed906230bdcff56bd239a8c52f3cb1e4e16d1249284162ca85b320e543f62a82d7270131231cf49e1b0c0b1e87643719 +Ctrl.type = type:F +Output = 731107905e3b9b36ba3dca504b35f1a51e75e2a3ee2595ade882c21410d439ec1ec31fbc62e64362a5fddc0f39e76da0 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100b41b41585296e85cce723619b40609b21799fb244d72fd87afa3088073819b232de7d9ab45ceaab3014099475e9314cff74149b5e4558962f31d3d2a84f24500558af928ff785dc32627f5062ea2d5bf6ff085edf6d200daca91037abda71b5c9c1660cbf60cfc3ec1fe590c3d6300aa279e42383f98f4000031bf57a2bb612c7a212bc0ec5057817b0843e01c14a9b353c26699670873db05de7049ac44951094c8b231713dab09ca641d3cea65c5e3b01d41d93351635b08a767afadfd7865388ebbe29e8f47033d1fe530d7d45fa1c266705b26d67282872da9551256d88708e1ec69ce9b94db6c7f3e6b7ae06418b36537b7839454c539b2bdd758af9c19 +Ctrl.hexxcghash = hexxcghash:5b168cac1113de12bac95aac34501866abd610c6ce0d51520f83c865db8d0c688b27af11e08deb4a2673c160edd1da93 +Ctrl.hexsession_id = hexsession_id:32dc32821483ed98f696813e712d229b6ff5a9e0f7f8e582a26f0a5204fa7655040ddbc791e00e7a979dded9354ea2dc +Ctrl.type = type:A +Output = 8e1af4ce3b9aa9f1e7493775f8846ac0 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100b41b41585296e85cce723619b40609b21799fb244d72fd87afa3088073819b232de7d9ab45ceaab3014099475e9314cff74149b5e4558962f31d3d2a84f24500558af928ff785dc32627f5062ea2d5bf6ff085edf6d200daca91037abda71b5c9c1660cbf60cfc3ec1fe590c3d6300aa279e42383f98f4000031bf57a2bb612c7a212bc0ec5057817b0843e01c14a9b353c26699670873db05de7049ac44951094c8b231713dab09ca641d3cea65c5e3b01d41d93351635b08a767afadfd7865388ebbe29e8f47033d1fe530d7d45fa1c266705b26d67282872da9551256d88708e1ec69ce9b94db6c7f3e6b7ae06418b36537b7839454c539b2bdd758af9c19 +Ctrl.hexxcghash = hexxcghash:5b168cac1113de12bac95aac34501866abd610c6ce0d51520f83c865db8d0c688b27af11e08deb4a2673c160edd1da93 +Ctrl.hexsession_id = hexsession_id:32dc32821483ed98f696813e712d229b6ff5a9e0f7f8e582a26f0a5204fa7655040ddbc791e00e7a979dded9354ea2dc +Ctrl.type = type:B +Output = 1796cee0aeb39eb1fbbaeaf15d600832 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100b41b41585296e85cce723619b40609b21799fb244d72fd87afa3088073819b232de7d9ab45ceaab3014099475e9314cff74149b5e4558962f31d3d2a84f24500558af928ff785dc32627f5062ea2d5bf6ff085edf6d200daca91037abda71b5c9c1660cbf60cfc3ec1fe590c3d6300aa279e42383f98f4000031bf57a2bb612c7a212bc0ec5057817b0843e01c14a9b353c26699670873db05de7049ac44951094c8b231713dab09ca641d3cea65c5e3b01d41d93351635b08a767afadfd7865388ebbe29e8f47033d1fe530d7d45fa1c266705b26d67282872da9551256d88708e1ec69ce9b94db6c7f3e6b7ae06418b36537b7839454c539b2bdd758af9c19 +Ctrl.hexxcghash = hexxcghash:5b168cac1113de12bac95aac34501866abd610c6ce0d51520f83c865db8d0c688b27af11e08deb4a2673c160edd1da93 +Ctrl.hexsession_id = hexsession_id:32dc32821483ed98f696813e712d229b6ff5a9e0f7f8e582a26f0a5204fa7655040ddbc791e00e7a979dded9354ea2dc +Ctrl.type = type:C +Output = 7a7485045a2f8cc86f82c8486f8e9f59 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100b41b41585296e85cce723619b40609b21799fb244d72fd87afa3088073819b232de7d9ab45ceaab3014099475e9314cff74149b5e4558962f31d3d2a84f24500558af928ff785dc32627f5062ea2d5bf6ff085edf6d200daca91037abda71b5c9c1660cbf60cfc3ec1fe590c3d6300aa279e42383f98f4000031bf57a2bb612c7a212bc0ec5057817b0843e01c14a9b353c26699670873db05de7049ac44951094c8b231713dab09ca641d3cea65c5e3b01d41d93351635b08a767afadfd7865388ebbe29e8f47033d1fe530d7d45fa1c266705b26d67282872da9551256d88708e1ec69ce9b94db6c7f3e6b7ae06418b36537b7839454c539b2bdd758af9c19 +Ctrl.hexxcghash = hexxcghash:5b168cac1113de12bac95aac34501866abd610c6ce0d51520f83c865db8d0c688b27af11e08deb4a2673c160edd1da93 +Ctrl.hexsession_id = hexsession_id:32dc32821483ed98f696813e712d229b6ff5a9e0f7f8e582a26f0a5204fa7655040ddbc791e00e7a979dded9354ea2dc +Ctrl.type = type:D +Output = 00a9d893e8c14aa3a316163d50d83378 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100b41b41585296e85cce723619b40609b21799fb244d72fd87afa3088073819b232de7d9ab45ceaab3014099475e9314cff74149b5e4558962f31d3d2a84f24500558af928ff785dc32627f5062ea2d5bf6ff085edf6d200daca91037abda71b5c9c1660cbf60cfc3ec1fe590c3d6300aa279e42383f98f4000031bf57a2bb612c7a212bc0ec5057817b0843e01c14a9b353c26699670873db05de7049ac44951094c8b231713dab09ca641d3cea65c5e3b01d41d93351635b08a767afadfd7865388ebbe29e8f47033d1fe530d7d45fa1c266705b26d67282872da9551256d88708e1ec69ce9b94db6c7f3e6b7ae06418b36537b7839454c539b2bdd758af9c19 +Ctrl.hexxcghash = hexxcghash:5b168cac1113de12bac95aac34501866abd610c6ce0d51520f83c865db8d0c688b27af11e08deb4a2673c160edd1da93 +Ctrl.hexsession_id = hexsession_id:32dc32821483ed98f696813e712d229b6ff5a9e0f7f8e582a26f0a5204fa7655040ddbc791e00e7a979dded9354ea2dc +Ctrl.type = type:E +Output = 46133b1cbab3e04043a1b336db99575183d5be76f9d56556493a8d4a8da37a020ae379ff2d470a99ca7e9d2b1cf85cb4 + +KDF = SSHKDF +Ctrl.md = md:SHA384 +Ctrl.hexkey = hexkey:0000010100b41b41585296e85cce723619b40609b21799fb244d72fd87afa3088073819b232de7d9ab45ceaab3014099475e9314cff74149b5e4558962f31d3d2a84f24500558af928ff785dc32627f5062ea2d5bf6ff085edf6d200daca91037abda71b5c9c1660cbf60cfc3ec1fe590c3d6300aa279e42383f98f4000031bf57a2bb612c7a212bc0ec5057817b0843e01c14a9b353c26699670873db05de7049ac44951094c8b231713dab09ca641d3cea65c5e3b01d41d93351635b08a767afadfd7865388ebbe29e8f47033d1fe530d7d45fa1c266705b26d67282872da9551256d88708e1ec69ce9b94db6c7f3e6b7ae06418b36537b7839454c539b2bdd758af9c19 +Ctrl.hexxcghash = hexxcghash:5b168cac1113de12bac95aac34501866abd610c6ce0d51520f83c865db8d0c688b27af11e08deb4a2673c160edd1da93 +Ctrl.hexsession_id = hexsession_id:32dc32821483ed98f696813e712d229b6ff5a9e0f7f8e582a26f0a5204fa7655040ddbc791e00e7a979dded9354ea2dc +Ctrl.type = type:F +Output = 9221abcc3db5a557cca60408e65528e937cc3673b548c350924cd9e6387de526f5cb35a0bbe4020c47318b59d1a0527d + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000080575308ca395798bb21ec5438c46a88ffa3f7f7671c06f924abf7c3cfb46c78c025596e4aba50c3271089184a447a571abb7f4a1b1c41f5d5ca8062940d4369778589fde81a71b2228f018c4c836cf389f854f86de71a68b1693fe8ffa1c59ce7e9f9223debada2566d2b0e5678a48bfb530e7bee42bd2ac7304a0a5ae339a2cd +Ctrl.hexxcghash = hexxcghash:a4125aa9898092ca50c3c1631c03dcbc9df95cebb409881e580108b6cc4704b76cc77b8795fd5940561e3224cc75848518992bd8d9b70fe0fc977a476063c8bf +Ctrl.hexsession_id = hexsession_id:a4125aa9898092ca50c3c1631c03dcbc9df95cebb409881e580108b6cc4704b76cc77b8795fd5940561e3224cc75848518992bd8d9b70fe0fc977a476063c8bf +Ctrl.type = type:A +Output = 0e2693ade0524af8 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000080575308ca395798bb21ec5438c46a88ffa3f7f7671c06f924abf7c3cfb46c78c025596e4aba50c3271089184a447a571abb7f4a1b1c41f5d5ca8062940d4369778589fde81a71b2228f018c4c836cf389f854f86de71a68b1693fe8ffa1c59ce7e9f9223debada2566d2b0e5678a48bfb530e7bee42bd2ac7304a0a5ae339a2cd +Ctrl.hexxcghash = hexxcghash:a4125aa9898092ca50c3c1631c03dcbc9df95cebb409881e580108b6cc4704b76cc77b8795fd5940561e3224cc75848518992bd8d9b70fe0fc977a476063c8bf +Ctrl.hexsession_id = hexsession_id:a4125aa9898092ca50c3c1631c03dcbc9df95cebb409881e580108b6cc4704b76cc77b8795fd5940561e3224cc75848518992bd8d9b70fe0fc977a476063c8bf +Ctrl.type = type:B +Output = b13144de02295bb8 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000080575308ca395798bb21ec5438c46a88ffa3f7f7671c06f924abf7c3cfb46c78c025596e4aba50c3271089184a447a571abb7f4a1b1c41f5d5ca8062940d4369778589fde81a71b2228f018c4c836cf389f854f86de71a68b1693fe8ffa1c59ce7e9f9223debada2566d2b0e5678a48bfb530e7bee42bd2ac7304a0a5ae339a2cd +Ctrl.hexxcghash = hexxcghash:a4125aa9898092ca50c3c1631c03dcbc9df95cebb409881e580108b6cc4704b76cc77b8795fd5940561e3224cc75848518992bd8d9b70fe0fc977a476063c8bf +Ctrl.hexsession_id = hexsession_id:a4125aa9898092ca50c3c1631c03dcbc9df95cebb409881e580108b6cc4704b76cc77b8795fd5940561e3224cc75848518992bd8d9b70fe0fc977a476063c8bf +Ctrl.type = type:C +Output = 7e4a721fb7379ebb423306464d57db46afa3cca10a1d7feb + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000080575308ca395798bb21ec5438c46a88ffa3f7f7671c06f924abf7c3cfb46c78c025596e4aba50c3271089184a447a571abb7f4a1b1c41f5d5ca8062940d4369778589fde81a71b2228f018c4c836cf389f854f86de71a68b1693fe8ffa1c59ce7e9f9223debada2566d2b0e5678a48bfb530e7bee42bd2ac7304a0a5ae339a2cd +Ctrl.hexxcghash = hexxcghash:a4125aa9898092ca50c3c1631c03dcbc9df95cebb409881e580108b6cc4704b76cc77b8795fd5940561e3224cc75848518992bd8d9b70fe0fc977a476063c8bf +Ctrl.hexsession_id = hexsession_id:a4125aa9898092ca50c3c1631c03dcbc9df95cebb409881e580108b6cc4704b76cc77b8795fd5940561e3224cc75848518992bd8d9b70fe0fc977a476063c8bf +Ctrl.type = type:D +Output = bb84123b1fac400e0df4767d78d011427e1edd4d4c934b95 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000080575308ca395798bb21ec5438c46a88ffa3f7f7671c06f924abf7c3cfb46c78c025596e4aba50c3271089184a447a571abb7f4a1b1c41f5d5ca8062940d4369778589fde81a71b2228f018c4c836cf389f854f86de71a68b1693fe8ffa1c59ce7e9f9223debada2566d2b0e5678a48bfb530e7bee42bd2ac7304a0a5ae339a2cd +Ctrl.hexxcghash = hexxcghash:a4125aa9898092ca50c3c1631c03dcbc9df95cebb409881e580108b6cc4704b76cc77b8795fd5940561e3224cc75848518992bd8d9b70fe0fc977a476063c8bf +Ctrl.hexsession_id = hexsession_id:a4125aa9898092ca50c3c1631c03dcbc9df95cebb409881e580108b6cc4704b76cc77b8795fd5940561e3224cc75848518992bd8d9b70fe0fc977a476063c8bf +Ctrl.type = type:E +Output = 00fb0a45c650dd9c95666b0c7fcea8c98f0562f61b862054ee400aec875dbbc2bdef4806c09217709a5050569312efe3af513e7aa733c72457abe1607ac01c13 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000080575308ca395798bb21ec5438c46a88ffa3f7f7671c06f924abf7c3cfb46c78c025596e4aba50c3271089184a447a571abb7f4a1b1c41f5d5ca8062940d4369778589fde81a71b2228f018c4c836cf389f854f86de71a68b1693fe8ffa1c59ce7e9f9223debada2566d2b0e5678a48bfb530e7bee42bd2ac7304a0a5ae339a2cd +Ctrl.hexxcghash = hexxcghash:a4125aa9898092ca50c3c1631c03dcbc9df95cebb409881e580108b6cc4704b76cc77b8795fd5940561e3224cc75848518992bd8d9b70fe0fc977a476063c8bf +Ctrl.hexsession_id = hexsession_id:a4125aa9898092ca50c3c1631c03dcbc9df95cebb409881e580108b6cc4704b76cc77b8795fd5940561e3224cc75848518992bd8d9b70fe0fc977a476063c8bf +Ctrl.type = type:F +Output = 70a8005e711fb96dea5991cb68831b9e86005821b45ceaf958c13d5c87cbd2953d0877c267796edf8c7fb3d768bb26b74e542f40bf9ac9f6a9d217077e85f511 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000802b2e6f7545fa66e1078c67c5457dbf5ee03801edef4421d4f0e797b947b79e293ef724253ec4adb53977f027a2d577d7779e96be4e093b0c36be62778c5bd48dbb0bff1335470e10cdec4df88e8feb00d322426baf3035e9fda1aaf819be48dacc640d52eb8750cc6fd8031d0cba0ef0a11973d43138dd2d11d2eef1fc926327 +Ctrl.hexxcghash = hexxcghash:4dc005dc6ad5075cf6abbedb53a0407104659cd168b58d014fb2465d6f1d1140d5fef634f345c6c38ac2a8db3771e4b0c71c51faf85a297bbdf7ddf8228c3159 +Ctrl.hexsession_id = hexsession_id:a674aaced8345324221bbd8356ab8355fd3d3e410ae974c0da196f4cd58cc0236a85900626da696dab8be23aaa529458ac6ccf64058fd2fd140ca1a1a0c57988 +Ctrl.type = type:A +Output = c75c77791f7b67c2 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000802b2e6f7545fa66e1078c67c5457dbf5ee03801edef4421d4f0e797b947b79e293ef724253ec4adb53977f027a2d577d7779e96be4e093b0c36be62778c5bd48dbb0bff1335470e10cdec4df88e8feb00d322426baf3035e9fda1aaf819be48dacc640d52eb8750cc6fd8031d0cba0ef0a11973d43138dd2d11d2eef1fc926327 +Ctrl.hexxcghash = hexxcghash:4dc005dc6ad5075cf6abbedb53a0407104659cd168b58d014fb2465d6f1d1140d5fef634f345c6c38ac2a8db3771e4b0c71c51faf85a297bbdf7ddf8228c3159 +Ctrl.hexsession_id = hexsession_id:a674aaced8345324221bbd8356ab8355fd3d3e410ae974c0da196f4cd58cc0236a85900626da696dab8be23aaa529458ac6ccf64058fd2fd140ca1a1a0c57988 +Ctrl.type = type:B +Output = dae1e8bfab1b4b7e + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000802b2e6f7545fa66e1078c67c5457dbf5ee03801edef4421d4f0e797b947b79e293ef724253ec4adb53977f027a2d577d7779e96be4e093b0c36be62778c5bd48dbb0bff1335470e10cdec4df88e8feb00d322426baf3035e9fda1aaf819be48dacc640d52eb8750cc6fd8031d0cba0ef0a11973d43138dd2d11d2eef1fc926327 +Ctrl.hexxcghash = hexxcghash:4dc005dc6ad5075cf6abbedb53a0407104659cd168b58d014fb2465d6f1d1140d5fef634f345c6c38ac2a8db3771e4b0c71c51faf85a297bbdf7ddf8228c3159 +Ctrl.hexsession_id = hexsession_id:a674aaced8345324221bbd8356ab8355fd3d3e410ae974c0da196f4cd58cc0236a85900626da696dab8be23aaa529458ac6ccf64058fd2fd140ca1a1a0c57988 +Ctrl.type = type:C +Output = 0e79f5b685ebe77ae6d62c344a5dd0f53502523a28e2b408 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000802b2e6f7545fa66e1078c67c5457dbf5ee03801edef4421d4f0e797b947b79e293ef724253ec4adb53977f027a2d577d7779e96be4e093b0c36be62778c5bd48dbb0bff1335470e10cdec4df88e8feb00d322426baf3035e9fda1aaf819be48dacc640d52eb8750cc6fd8031d0cba0ef0a11973d43138dd2d11d2eef1fc926327 +Ctrl.hexxcghash = hexxcghash:4dc005dc6ad5075cf6abbedb53a0407104659cd168b58d014fb2465d6f1d1140d5fef634f345c6c38ac2a8db3771e4b0c71c51faf85a297bbdf7ddf8228c3159 +Ctrl.hexsession_id = hexsession_id:a674aaced8345324221bbd8356ab8355fd3d3e410ae974c0da196f4cd58cc0236a85900626da696dab8be23aaa529458ac6ccf64058fd2fd140ca1a1a0c57988 +Ctrl.type = type:D +Output = c5ec1aae5d26c2c5fe769576eb1b75c53d3dc67d452dca1c + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000802b2e6f7545fa66e1078c67c5457dbf5ee03801edef4421d4f0e797b947b79e293ef724253ec4adb53977f027a2d577d7779e96be4e093b0c36be62778c5bd48dbb0bff1335470e10cdec4df88e8feb00d322426baf3035e9fda1aaf819be48dacc640d52eb8750cc6fd8031d0cba0ef0a11973d43138dd2d11d2eef1fc926327 +Ctrl.hexxcghash = hexxcghash:4dc005dc6ad5075cf6abbedb53a0407104659cd168b58d014fb2465d6f1d1140d5fef634f345c6c38ac2a8db3771e4b0c71c51faf85a297bbdf7ddf8228c3159 +Ctrl.hexsession_id = hexsession_id:a674aaced8345324221bbd8356ab8355fd3d3e410ae974c0da196f4cd58cc0236a85900626da696dab8be23aaa529458ac6ccf64058fd2fd140ca1a1a0c57988 +Ctrl.type = type:E +Output = 6bc4e5d6049c69a8ffbf93c7617b6a168bd0f14d71471d199b81729250117272ad102772761a8c0b5d5240e589e48a4f85ab8c3e1bd030327e7c87428ee44d13 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000802b2e6f7545fa66e1078c67c5457dbf5ee03801edef4421d4f0e797b947b79e293ef724253ec4adb53977f027a2d577d7779e96be4e093b0c36be62778c5bd48dbb0bff1335470e10cdec4df88e8feb00d322426baf3035e9fda1aaf819be48dacc640d52eb8750cc6fd8031d0cba0ef0a11973d43138dd2d11d2eef1fc926327 +Ctrl.hexxcghash = hexxcghash:4dc005dc6ad5075cf6abbedb53a0407104659cd168b58d014fb2465d6f1d1140d5fef634f345c6c38ac2a8db3771e4b0c71c51faf85a297bbdf7ddf8228c3159 +Ctrl.hexsession_id = hexsession_id:a674aaced8345324221bbd8356ab8355fd3d3e410ae974c0da196f4cd58cc0236a85900626da696dab8be23aaa529458ac6ccf64058fd2fd140ca1a1a0c57988 +Ctrl.type = type:F +Output = ce109babe86778542856e3934be12decd239120a4dcb948a0154c4cb7b8ac0a4a3cbd682698086123e6c0481ee351bd9fedfba58d37f7814ba9c2b584f6cfedf + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000810085874b95394d5ca3096b0a7e6444e129544e4acd8dd7078c46dc74633df1737986e7dc6f58ac09c7d734fd68378f1ee6df60c48bde343e55ab2a5796ca3ec295f15a75500f476a8a6f1725fdade3339cd7da0a2528449652d7ea21a834e42961ede8477f63bac84ccdba933c276512d3670477d2696402175208526276712541 +Ctrl.hexxcghash = hexxcghash:8540955867f6580e9c1e7e3dfaef9c4f810dbf3364e54f66c471b51d11686598fabff6c3f78a7ac1c90710ab991aa00980f9d5948d462662f6c439fa7b80483f +Ctrl.hexsession_id = hexsession_id:f2ebb7479c714402275075725c4712994f04485c048fad37d1505f1ce2cd6e32051782848afbea4399231fea5b8d39ec596e118dcc95ea35ffddd8c5611f5298 +Ctrl.type = type:A +Output = 6a71fc98f044591d + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000810085874b95394d5ca3096b0a7e6444e129544e4acd8dd7078c46dc74633df1737986e7dc6f58ac09c7d734fd68378f1ee6df60c48bde343e55ab2a5796ca3ec295f15a75500f476a8a6f1725fdade3339cd7da0a2528449652d7ea21a834e42961ede8477f63bac84ccdba933c276512d3670477d2696402175208526276712541 +Ctrl.hexxcghash = hexxcghash:8540955867f6580e9c1e7e3dfaef9c4f810dbf3364e54f66c471b51d11686598fabff6c3f78a7ac1c90710ab991aa00980f9d5948d462662f6c439fa7b80483f +Ctrl.hexsession_id = hexsession_id:f2ebb7479c714402275075725c4712994f04485c048fad37d1505f1ce2cd6e32051782848afbea4399231fea5b8d39ec596e118dcc95ea35ffddd8c5611f5298 +Ctrl.type = type:B +Output = 9f1a35a5c79014c0 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000810085874b95394d5ca3096b0a7e6444e129544e4acd8dd7078c46dc74633df1737986e7dc6f58ac09c7d734fd68378f1ee6df60c48bde343e55ab2a5796ca3ec295f15a75500f476a8a6f1725fdade3339cd7da0a2528449652d7ea21a834e42961ede8477f63bac84ccdba933c276512d3670477d2696402175208526276712541 +Ctrl.hexxcghash = hexxcghash:8540955867f6580e9c1e7e3dfaef9c4f810dbf3364e54f66c471b51d11686598fabff6c3f78a7ac1c90710ab991aa00980f9d5948d462662f6c439fa7b80483f +Ctrl.hexsession_id = hexsession_id:f2ebb7479c714402275075725c4712994f04485c048fad37d1505f1ce2cd6e32051782848afbea4399231fea5b8d39ec596e118dcc95ea35ffddd8c5611f5298 +Ctrl.type = type:C +Output = 377901cc72e4c06e30e27b03902f65c4a58b9d3f5cf43431 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000810085874b95394d5ca3096b0a7e6444e129544e4acd8dd7078c46dc74633df1737986e7dc6f58ac09c7d734fd68378f1ee6df60c48bde343e55ab2a5796ca3ec295f15a75500f476a8a6f1725fdade3339cd7da0a2528449652d7ea21a834e42961ede8477f63bac84ccdba933c276512d3670477d2696402175208526276712541 +Ctrl.hexxcghash = hexxcghash:8540955867f6580e9c1e7e3dfaef9c4f810dbf3364e54f66c471b51d11686598fabff6c3f78a7ac1c90710ab991aa00980f9d5948d462662f6c439fa7b80483f +Ctrl.hexsession_id = hexsession_id:f2ebb7479c714402275075725c4712994f04485c048fad37d1505f1ce2cd6e32051782848afbea4399231fea5b8d39ec596e118dcc95ea35ffddd8c5611f5298 +Ctrl.type = type:D +Output = 82a9db94ea5c15dff736c3074a34951e828c8dfa3fef8596 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000810085874b95394d5ca3096b0a7e6444e129544e4acd8dd7078c46dc74633df1737986e7dc6f58ac09c7d734fd68378f1ee6df60c48bde343e55ab2a5796ca3ec295f15a75500f476a8a6f1725fdade3339cd7da0a2528449652d7ea21a834e42961ede8477f63bac84ccdba933c276512d3670477d2696402175208526276712541 +Ctrl.hexxcghash = hexxcghash:8540955867f6580e9c1e7e3dfaef9c4f810dbf3364e54f66c471b51d11686598fabff6c3f78a7ac1c90710ab991aa00980f9d5948d462662f6c439fa7b80483f +Ctrl.hexsession_id = hexsession_id:f2ebb7479c714402275075725c4712994f04485c048fad37d1505f1ce2cd6e32051782848afbea4399231fea5b8d39ec596e118dcc95ea35ffddd8c5611f5298 +Ctrl.type = type:E +Output = b3ce0202c966df307a0729a4bb3fcd0ee55d4c521a144ecd285a470830f60685b2d751883d85ccd29fcc2481f3f442fdedd58d17528e8c4fb28473ee5e539706 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000810085874b95394d5ca3096b0a7e6444e129544e4acd8dd7078c46dc74633df1737986e7dc6f58ac09c7d734fd68378f1ee6df60c48bde343e55ab2a5796ca3ec295f15a75500f476a8a6f1725fdade3339cd7da0a2528449652d7ea21a834e42961ede8477f63bac84ccdba933c276512d3670477d2696402175208526276712541 +Ctrl.hexxcghash = hexxcghash:8540955867f6580e9c1e7e3dfaef9c4f810dbf3364e54f66c471b51d11686598fabff6c3f78a7ac1c90710ab991aa00980f9d5948d462662f6c439fa7b80483f +Ctrl.hexsession_id = hexsession_id:f2ebb7479c714402275075725c4712994f04485c048fad37d1505f1ce2cd6e32051782848afbea4399231fea5b8d39ec596e118dcc95ea35ffddd8c5611f5298 +Ctrl.type = type:F +Output = c1ab7227f919cbda46cd6ac2bd4bb2ee5bd586cc55c7c1cb067df4c9a23209f716ff5e97ed76ebbc0354d683c5369937ca8db4cecf9e6c40886a186d9c4e2366 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100e1436b5ef714092a6a0c8cc1593682a7ca4c05de423fb5f57c1d225943d8e4a5b526288a46a9a0fdb10b59c0beb8c1dc5b4d2bdf34eec2525df84bca2f8b769897183a45c7e61171ecea6e2be80d3becec8355ac3853bd8d077697af6e774133143265bdd538b4fb64786aaaa33e45138fd8697ff1c77b50f63dd8e9476a74c0 +Ctrl.hexxcghash = hexxcghash:367c80484d7e01e0915959e9fcb5124fa674489cf0ec4b0fee6a62dd77f677db901d9fb417cecf2a98f0b24bc24edbb1f34ab19f8d4d2976958f7d99ae2c78b3 +Ctrl.hexsession_id = hexsession_id:0a1bbfb890087ef260a88fafb92f16765444adc4dcb00efd4750d59f1d8f4b6662edd379d812ddc822cea79675731a5e5791f29ebd17f3f83e675e9e9f6af3e3 +Ctrl.type = type:A +Output = 3832bf21b907daa3 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100e1436b5ef714092a6a0c8cc1593682a7ca4c05de423fb5f57c1d225943d8e4a5b526288a46a9a0fdb10b59c0beb8c1dc5b4d2bdf34eec2525df84bca2f8b769897183a45c7e61171ecea6e2be80d3becec8355ac3853bd8d077697af6e774133143265bdd538b4fb64786aaaa33e45138fd8697ff1c77b50f63dd8e9476a74c0 +Ctrl.hexxcghash = hexxcghash:367c80484d7e01e0915959e9fcb5124fa674489cf0ec4b0fee6a62dd77f677db901d9fb417cecf2a98f0b24bc24edbb1f34ab19f8d4d2976958f7d99ae2c78b3 +Ctrl.hexsession_id = hexsession_id:0a1bbfb890087ef260a88fafb92f16765444adc4dcb00efd4750d59f1d8f4b6662edd379d812ddc822cea79675731a5e5791f29ebd17f3f83e675e9e9f6af3e3 +Ctrl.type = type:B +Output = 4e04d7787ba7fa68 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100e1436b5ef714092a6a0c8cc1593682a7ca4c05de423fb5f57c1d225943d8e4a5b526288a46a9a0fdb10b59c0beb8c1dc5b4d2bdf34eec2525df84bca2f8b769897183a45c7e61171ecea6e2be80d3becec8355ac3853bd8d077697af6e774133143265bdd538b4fb64786aaaa33e45138fd8697ff1c77b50f63dd8e9476a74c0 +Ctrl.hexxcghash = hexxcghash:367c80484d7e01e0915959e9fcb5124fa674489cf0ec4b0fee6a62dd77f677db901d9fb417cecf2a98f0b24bc24edbb1f34ab19f8d4d2976958f7d99ae2c78b3 +Ctrl.hexsession_id = hexsession_id:0a1bbfb890087ef260a88fafb92f16765444adc4dcb00efd4750d59f1d8f4b6662edd379d812ddc822cea79675731a5e5791f29ebd17f3f83e675e9e9f6af3e3 +Ctrl.type = type:C +Output = d7be949edcfe4e4b877de1cc6a861fa721e137bf3dd1bb27 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100e1436b5ef714092a6a0c8cc1593682a7ca4c05de423fb5f57c1d225943d8e4a5b526288a46a9a0fdb10b59c0beb8c1dc5b4d2bdf34eec2525df84bca2f8b769897183a45c7e61171ecea6e2be80d3becec8355ac3853bd8d077697af6e774133143265bdd538b4fb64786aaaa33e45138fd8697ff1c77b50f63dd8e9476a74c0 +Ctrl.hexxcghash = hexxcghash:367c80484d7e01e0915959e9fcb5124fa674489cf0ec4b0fee6a62dd77f677db901d9fb417cecf2a98f0b24bc24edbb1f34ab19f8d4d2976958f7d99ae2c78b3 +Ctrl.hexsession_id = hexsession_id:0a1bbfb890087ef260a88fafb92f16765444adc4dcb00efd4750d59f1d8f4b6662edd379d812ddc822cea79675731a5e5791f29ebd17f3f83e675e9e9f6af3e3 +Ctrl.type = type:D +Output = 5361fc87e24ec3031d97f0099766ac9ff7b8f91ea87666de + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100e1436b5ef714092a6a0c8cc1593682a7ca4c05de423fb5f57c1d225943d8e4a5b526288a46a9a0fdb10b59c0beb8c1dc5b4d2bdf34eec2525df84bca2f8b769897183a45c7e61171ecea6e2be80d3becec8355ac3853bd8d077697af6e774133143265bdd538b4fb64786aaaa33e45138fd8697ff1c77b50f63dd8e9476a74c0 +Ctrl.hexxcghash = hexxcghash:367c80484d7e01e0915959e9fcb5124fa674489cf0ec4b0fee6a62dd77f677db901d9fb417cecf2a98f0b24bc24edbb1f34ab19f8d4d2976958f7d99ae2c78b3 +Ctrl.hexsession_id = hexsession_id:0a1bbfb890087ef260a88fafb92f16765444adc4dcb00efd4750d59f1d8f4b6662edd379d812ddc822cea79675731a5e5791f29ebd17f3f83e675e9e9f6af3e3 +Ctrl.type = type:E +Output = 40a6897606035ebb04907fa15e1545a8973b9b09423f3786be4bcb8db9e4561e0385bcf1e3c0cece5a788e9852ed1da56963f36bad78fede21405ce3ea92a3b8 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100e1436b5ef714092a6a0c8cc1593682a7ca4c05de423fb5f57c1d225943d8e4a5b526288a46a9a0fdb10b59c0beb8c1dc5b4d2bdf34eec2525df84bca2f8b769897183a45c7e61171ecea6e2be80d3becec8355ac3853bd8d077697af6e774133143265bdd538b4fb64786aaaa33e45138fd8697ff1c77b50f63dd8e9476a74c0 +Ctrl.hexxcghash = hexxcghash:367c80484d7e01e0915959e9fcb5124fa674489cf0ec4b0fee6a62dd77f677db901d9fb417cecf2a98f0b24bc24edbb1f34ab19f8d4d2976958f7d99ae2c78b3 +Ctrl.hexsession_id = hexsession_id:0a1bbfb890087ef260a88fafb92f16765444adc4dcb00efd4750d59f1d8f4b6662edd379d812ddc822cea79675731a5e5791f29ebd17f3f83e675e9e9f6af3e3 +Ctrl.type = type:F +Output = 727f9bade9334f97486f479c88614ce96b8cbc803a544fbfaf5fcaf0499a1b8edeb59daa1a824ca9b165879c63d9f0b6464bcd3121fb1ad29b38864fbaac7741 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100f8cf4795508e2aba0d9c007ee0afb38a7d570e26d4ebe97d3b9cb46dfc05b9b18396054fa91f856758b036195a9b360ee48b65dcec1f2fcb901d5faa308125b30b804e53ac15b2f43c2a12fdbc987707af58c36ecdcd89376117f9655e14da7f1808baeaab020a47ac35166a4868dab970ce79de592c69164045fce4eb55872f +Ctrl.hexxcghash = hexxcghash:40d59c8836500e523e6404ac03d9895b105c7feceaac52dc3c5e4113e256c0057fbc770b805f7a2f18bf0be13357eb99db906efc5fb772f96e5fe76088e2e6f2 +Ctrl.hexsession_id = hexsession_id:a619290ad553a2b0924f3ea6152883685e3f2cf6063487616f083fadae950451df5f6e8a144cd951b2d853c7ec2d1aece9c438a89850788edc6bd5e2a7a98a47 +Ctrl.type = type:A +Output = 3f077a02dc957eb1 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100f8cf4795508e2aba0d9c007ee0afb38a7d570e26d4ebe97d3b9cb46dfc05b9b18396054fa91f856758b036195a9b360ee48b65dcec1f2fcb901d5faa308125b30b804e53ac15b2f43c2a12fdbc987707af58c36ecdcd89376117f9655e14da7f1808baeaab020a47ac35166a4868dab970ce79de592c69164045fce4eb55872f +Ctrl.hexxcghash = hexxcghash:40d59c8836500e523e6404ac03d9895b105c7feceaac52dc3c5e4113e256c0057fbc770b805f7a2f18bf0be13357eb99db906efc5fb772f96e5fe76088e2e6f2 +Ctrl.hexsession_id = hexsession_id:a619290ad553a2b0924f3ea6152883685e3f2cf6063487616f083fadae950451df5f6e8a144cd951b2d853c7ec2d1aece9c438a89850788edc6bd5e2a7a98a47 +Ctrl.type = type:B +Output = 3cc158e348e64a0a + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100f8cf4795508e2aba0d9c007ee0afb38a7d570e26d4ebe97d3b9cb46dfc05b9b18396054fa91f856758b036195a9b360ee48b65dcec1f2fcb901d5faa308125b30b804e53ac15b2f43c2a12fdbc987707af58c36ecdcd89376117f9655e14da7f1808baeaab020a47ac35166a4868dab970ce79de592c69164045fce4eb55872f +Ctrl.hexxcghash = hexxcghash:40d59c8836500e523e6404ac03d9895b105c7feceaac52dc3c5e4113e256c0057fbc770b805f7a2f18bf0be13357eb99db906efc5fb772f96e5fe76088e2e6f2 +Ctrl.hexsession_id = hexsession_id:a619290ad553a2b0924f3ea6152883685e3f2cf6063487616f083fadae950451df5f6e8a144cd951b2d853c7ec2d1aece9c438a89850788edc6bd5e2a7a98a47 +Ctrl.type = type:C +Output = 8770fb6792c2fc16a60c9f45c8d40db684fe52de7c60b482 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100f8cf4795508e2aba0d9c007ee0afb38a7d570e26d4ebe97d3b9cb46dfc05b9b18396054fa91f856758b036195a9b360ee48b65dcec1f2fcb901d5faa308125b30b804e53ac15b2f43c2a12fdbc987707af58c36ecdcd89376117f9655e14da7f1808baeaab020a47ac35166a4868dab970ce79de592c69164045fce4eb55872f +Ctrl.hexxcghash = hexxcghash:40d59c8836500e523e6404ac03d9895b105c7feceaac52dc3c5e4113e256c0057fbc770b805f7a2f18bf0be13357eb99db906efc5fb772f96e5fe76088e2e6f2 +Ctrl.hexsession_id = hexsession_id:a619290ad553a2b0924f3ea6152883685e3f2cf6063487616f083fadae950451df5f6e8a144cd951b2d853c7ec2d1aece9c438a89850788edc6bd5e2a7a98a47 +Ctrl.type = type:D +Output = d417a07f1070a2e628424fa990ef436f137725a7cde43f1b + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100f8cf4795508e2aba0d9c007ee0afb38a7d570e26d4ebe97d3b9cb46dfc05b9b18396054fa91f856758b036195a9b360ee48b65dcec1f2fcb901d5faa308125b30b804e53ac15b2f43c2a12fdbc987707af58c36ecdcd89376117f9655e14da7f1808baeaab020a47ac35166a4868dab970ce79de592c69164045fce4eb55872f +Ctrl.hexxcghash = hexxcghash:40d59c8836500e523e6404ac03d9895b105c7feceaac52dc3c5e4113e256c0057fbc770b805f7a2f18bf0be13357eb99db906efc5fb772f96e5fe76088e2e6f2 +Ctrl.hexsession_id = hexsession_id:a619290ad553a2b0924f3ea6152883685e3f2cf6063487616f083fadae950451df5f6e8a144cd951b2d853c7ec2d1aece9c438a89850788edc6bd5e2a7a98a47 +Ctrl.type = type:E +Output = 20b810e4f6a540724f269194e37969a10e340d45c557eabe72c41f08a9fad85ab44a9c362e7fc5eea9ed5dd9b84cc837d2aaa46ee71b355cb1dfefa8dc544d1e + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100f8cf4795508e2aba0d9c007ee0afb38a7d570e26d4ebe97d3b9cb46dfc05b9b18396054fa91f856758b036195a9b360ee48b65dcec1f2fcb901d5faa308125b30b804e53ac15b2f43c2a12fdbc987707af58c36ecdcd89376117f9655e14da7f1808baeaab020a47ac35166a4868dab970ce79de592c69164045fce4eb55872f +Ctrl.hexxcghash = hexxcghash:40d59c8836500e523e6404ac03d9895b105c7feceaac52dc3c5e4113e256c0057fbc770b805f7a2f18bf0be13357eb99db906efc5fb772f96e5fe76088e2e6f2 +Ctrl.hexsession_id = hexsession_id:a619290ad553a2b0924f3ea6152883685e3f2cf6063487616f083fadae950451df5f6e8a144cd951b2d853c7ec2d1aece9c438a89850788edc6bd5e2a7a98a47 +Ctrl.type = type:F +Output = acd292ab652b49c7c2a5a35b93c31a71eeef8a629cbc6b1c782994ebc7566f7b0ae536cc0ccfe881bfd8cbfaff391fe23568fa5692198f188deff0c6d0808160 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000803105020875f56db2960579efb7509964f256c2b81009e5be554bcc8ebe84c492f0cd0990e78ef4e8582a45457712be71d6f6c0b33315668984f0a41cf45fb9a459193c710919b752be3b80b2c8c7de3be570f76df6fe1cbb9dc81085fff2ad1bbfb307c6fb21f434cf7c0b96ee9eb6bc0f9677136a6db91f5d953f8b104b3497 +Ctrl.hexxcghash = hexxcghash:5f45d483ef27aeb00ec7baef96f4b4d1b254260bf60671dbd00e35a32fdcb7ae06215d59e742158782e0626bd5e2e8bada1fd7ec5056679f4a1412eaa2ef10e5 +Ctrl.hexsession_id = hexsession_id:8ddcd28d02f2cb50661cf2111953c697c0e578e43a77dfeb593b2bf05189bb429f306bcb0bcb41219d5428c1795c84665bb1f0db33e55f52edbff2b781c7eb79 +Ctrl.type = type:A +Output = 7cf213cec41701ff + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000803105020875f56db2960579efb7509964f256c2b81009e5be554bcc8ebe84c492f0cd0990e78ef4e8582a45457712be71d6f6c0b33315668984f0a41cf45fb9a459193c710919b752be3b80b2c8c7de3be570f76df6fe1cbb9dc81085fff2ad1bbfb307c6fb21f434cf7c0b96ee9eb6bc0f9677136a6db91f5d953f8b104b3497 +Ctrl.hexxcghash = hexxcghash:5f45d483ef27aeb00ec7baef96f4b4d1b254260bf60671dbd00e35a32fdcb7ae06215d59e742158782e0626bd5e2e8bada1fd7ec5056679f4a1412eaa2ef10e5 +Ctrl.hexsession_id = hexsession_id:8ddcd28d02f2cb50661cf2111953c697c0e578e43a77dfeb593b2bf05189bb429f306bcb0bcb41219d5428c1795c84665bb1f0db33e55f52edbff2b781c7eb79 +Ctrl.type = type:B +Output = 81a44f6f95fff954 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000803105020875f56db2960579efb7509964f256c2b81009e5be554bcc8ebe84c492f0cd0990e78ef4e8582a45457712be71d6f6c0b33315668984f0a41cf45fb9a459193c710919b752be3b80b2c8c7de3be570f76df6fe1cbb9dc81085fff2ad1bbfb307c6fb21f434cf7c0b96ee9eb6bc0f9677136a6db91f5d953f8b104b3497 +Ctrl.hexxcghash = hexxcghash:5f45d483ef27aeb00ec7baef96f4b4d1b254260bf60671dbd00e35a32fdcb7ae06215d59e742158782e0626bd5e2e8bada1fd7ec5056679f4a1412eaa2ef10e5 +Ctrl.hexsession_id = hexsession_id:8ddcd28d02f2cb50661cf2111953c697c0e578e43a77dfeb593b2bf05189bb429f306bcb0bcb41219d5428c1795c84665bb1f0db33e55f52edbff2b781c7eb79 +Ctrl.type = type:C +Output = e1610d85ea2c24b4af18076c2d7dc0c3f3b3bf1c8df232a4 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000803105020875f56db2960579efb7509964f256c2b81009e5be554bcc8ebe84c492f0cd0990e78ef4e8582a45457712be71d6f6c0b33315668984f0a41cf45fb9a459193c710919b752be3b80b2c8c7de3be570f76df6fe1cbb9dc81085fff2ad1bbfb307c6fb21f434cf7c0b96ee9eb6bc0f9677136a6db91f5d953f8b104b3497 +Ctrl.hexxcghash = hexxcghash:5f45d483ef27aeb00ec7baef96f4b4d1b254260bf60671dbd00e35a32fdcb7ae06215d59e742158782e0626bd5e2e8bada1fd7ec5056679f4a1412eaa2ef10e5 +Ctrl.hexsession_id = hexsession_id:8ddcd28d02f2cb50661cf2111953c697c0e578e43a77dfeb593b2bf05189bb429f306bcb0bcb41219d5428c1795c84665bb1f0db33e55f52edbff2b781c7eb79 +Ctrl.type = type:D +Output = db146cbf4923693449b857fa927d112f3c8bd1bac73f618a + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000803105020875f56db2960579efb7509964f256c2b81009e5be554bcc8ebe84c492f0cd0990e78ef4e8582a45457712be71d6f6c0b33315668984f0a41cf45fb9a459193c710919b752be3b80b2c8c7de3be570f76df6fe1cbb9dc81085fff2ad1bbfb307c6fb21f434cf7c0b96ee9eb6bc0f9677136a6db91f5d953f8b104b3497 +Ctrl.hexxcghash = hexxcghash:5f45d483ef27aeb00ec7baef96f4b4d1b254260bf60671dbd00e35a32fdcb7ae06215d59e742158782e0626bd5e2e8bada1fd7ec5056679f4a1412eaa2ef10e5 +Ctrl.hexsession_id = hexsession_id:8ddcd28d02f2cb50661cf2111953c697c0e578e43a77dfeb593b2bf05189bb429f306bcb0bcb41219d5428c1795c84665bb1f0db33e55f52edbff2b781c7eb79 +Ctrl.type = type:E +Output = fac257f4544a0aa77659642c33a421cf27b2216a57399ff8ff48baab37519ce9c27f93bf447a02b3c10d9f9c6201745ed6ae28a13ff85e949e0e8048bf31e0c8 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000803105020875f56db2960579efb7509964f256c2b81009e5be554bcc8ebe84c492f0cd0990e78ef4e8582a45457712be71d6f6c0b33315668984f0a41cf45fb9a459193c710919b752be3b80b2c8c7de3be570f76df6fe1cbb9dc81085fff2ad1bbfb307c6fb21f434cf7c0b96ee9eb6bc0f9677136a6db91f5d953f8b104b3497 +Ctrl.hexxcghash = hexxcghash:5f45d483ef27aeb00ec7baef96f4b4d1b254260bf60671dbd00e35a32fdcb7ae06215d59e742158782e0626bd5e2e8bada1fd7ec5056679f4a1412eaa2ef10e5 +Ctrl.hexsession_id = hexsession_id:8ddcd28d02f2cb50661cf2111953c697c0e578e43a77dfeb593b2bf05189bb429f306bcb0bcb41219d5428c1795c84665bb1f0db33e55f52edbff2b781c7eb79 +Ctrl.type = type:F +Output = 8532a1014a5a2feba5730823b0fb1781a7782a73f95a97697aedf60997e6cdf5107387be820b74c0e43e8caf42e83bbc703c6cd9d37b0e720aeacc115ce4633e + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008045cafef6acb29ea351ad025a32cb0fb88fe52f138ac3cd7718140c883cffbc10778c2e6c573bdbfaf32eceaa2fc1e106170dadcdf1cb0e1653f2361c76f5153262295b16371daf9ae2015dfb407f4920240eb10293c48971d2086723507d2eb7e1481f2b737df223628ee602a49bb7f1ac52068f5c1a24b445786e35042fc6c0 +Ctrl.hexxcghash = hexxcghash:b1ce6e766a7340f40cec52585087c60e456cc390d0ee294bbc460d50b93c2170344cca3dd2e3067ebefe3efbd002ec4ed7f0fc1a8771eaffbc1fd4d5800aec21 +Ctrl.hexsession_id = hexsession_id:85ae5c53a8286dfddf295dd0b31237bc8c54e9858647e222db29a4f60ffb74a175e5de22c132a1a06826c6e0122e63aa657fc670ca44943159560ce1c48b6906 +Ctrl.type = type:A +Output = c5dffc4eb99a1c36 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008045cafef6acb29ea351ad025a32cb0fb88fe52f138ac3cd7718140c883cffbc10778c2e6c573bdbfaf32eceaa2fc1e106170dadcdf1cb0e1653f2361c76f5153262295b16371daf9ae2015dfb407f4920240eb10293c48971d2086723507d2eb7e1481f2b737df223628ee602a49bb7f1ac52068f5c1a24b445786e35042fc6c0 +Ctrl.hexxcghash = hexxcghash:b1ce6e766a7340f40cec52585087c60e456cc390d0ee294bbc460d50b93c2170344cca3dd2e3067ebefe3efbd002ec4ed7f0fc1a8771eaffbc1fd4d5800aec21 +Ctrl.hexsession_id = hexsession_id:85ae5c53a8286dfddf295dd0b31237bc8c54e9858647e222db29a4f60ffb74a175e5de22c132a1a06826c6e0122e63aa657fc670ca44943159560ce1c48b6906 +Ctrl.type = type:B +Output = 13cb7467ddf8ea7d + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008045cafef6acb29ea351ad025a32cb0fb88fe52f138ac3cd7718140c883cffbc10778c2e6c573bdbfaf32eceaa2fc1e106170dadcdf1cb0e1653f2361c76f5153262295b16371daf9ae2015dfb407f4920240eb10293c48971d2086723507d2eb7e1481f2b737df223628ee602a49bb7f1ac52068f5c1a24b445786e35042fc6c0 +Ctrl.hexxcghash = hexxcghash:b1ce6e766a7340f40cec52585087c60e456cc390d0ee294bbc460d50b93c2170344cca3dd2e3067ebefe3efbd002ec4ed7f0fc1a8771eaffbc1fd4d5800aec21 +Ctrl.hexsession_id = hexsession_id:85ae5c53a8286dfddf295dd0b31237bc8c54e9858647e222db29a4f60ffb74a175e5de22c132a1a06826c6e0122e63aa657fc670ca44943159560ce1c48b6906 +Ctrl.type = type:C +Output = 4d77a9a1a36500d9ea0389e3813a201fb9b30751d1fcf0b3 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008045cafef6acb29ea351ad025a32cb0fb88fe52f138ac3cd7718140c883cffbc10778c2e6c573bdbfaf32eceaa2fc1e106170dadcdf1cb0e1653f2361c76f5153262295b16371daf9ae2015dfb407f4920240eb10293c48971d2086723507d2eb7e1481f2b737df223628ee602a49bb7f1ac52068f5c1a24b445786e35042fc6c0 +Ctrl.hexxcghash = hexxcghash:b1ce6e766a7340f40cec52585087c60e456cc390d0ee294bbc460d50b93c2170344cca3dd2e3067ebefe3efbd002ec4ed7f0fc1a8771eaffbc1fd4d5800aec21 +Ctrl.hexsession_id = hexsession_id:85ae5c53a8286dfddf295dd0b31237bc8c54e9858647e222db29a4f60ffb74a175e5de22c132a1a06826c6e0122e63aa657fc670ca44943159560ce1c48b6906 +Ctrl.type = type:D +Output = a0e4ec099492c752b98013d2176af6e601eeef3cdc2029a9 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008045cafef6acb29ea351ad025a32cb0fb88fe52f138ac3cd7718140c883cffbc10778c2e6c573bdbfaf32eceaa2fc1e106170dadcdf1cb0e1653f2361c76f5153262295b16371daf9ae2015dfb407f4920240eb10293c48971d2086723507d2eb7e1481f2b737df223628ee602a49bb7f1ac52068f5c1a24b445786e35042fc6c0 +Ctrl.hexxcghash = hexxcghash:b1ce6e766a7340f40cec52585087c60e456cc390d0ee294bbc460d50b93c2170344cca3dd2e3067ebefe3efbd002ec4ed7f0fc1a8771eaffbc1fd4d5800aec21 +Ctrl.hexsession_id = hexsession_id:85ae5c53a8286dfddf295dd0b31237bc8c54e9858647e222db29a4f60ffb74a175e5de22c132a1a06826c6e0122e63aa657fc670ca44943159560ce1c48b6906 +Ctrl.type = type:E +Output = b4035effa78e6da307f4c096226150e5cab92794192bba492ff8576da3fdbbfdc87fbf79721de0e8f38647261dcad096fd536c4f724f09782a4b684902a4b979 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008045cafef6acb29ea351ad025a32cb0fb88fe52f138ac3cd7718140c883cffbc10778c2e6c573bdbfaf32eceaa2fc1e106170dadcdf1cb0e1653f2361c76f5153262295b16371daf9ae2015dfb407f4920240eb10293c48971d2086723507d2eb7e1481f2b737df223628ee602a49bb7f1ac52068f5c1a24b445786e35042fc6c0 +Ctrl.hexxcghash = hexxcghash:b1ce6e766a7340f40cec52585087c60e456cc390d0ee294bbc460d50b93c2170344cca3dd2e3067ebefe3efbd002ec4ed7f0fc1a8771eaffbc1fd4d5800aec21 +Ctrl.hexsession_id = hexsession_id:85ae5c53a8286dfddf295dd0b31237bc8c54e9858647e222db29a4f60ffb74a175e5de22c132a1a06826c6e0122e63aa657fc670ca44943159560ce1c48b6906 +Ctrl.type = type:F +Output = eae8776eddb75cd4d14d2db129172bab92f0c8d2c8a439d4b63824c23e7481af502a45d2ebee77f3a801d658b59f6cbbdb797f479787ae4d5839b7ddf49ff908 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000081008b735b1cc9a88529c0d0faea307f79142abc920248b3495e56b7987605b5a7a93354c638752ae7ce47b2869600dc2ab8f240c0ce4e35147e00f8e69fbe940d6236daf01b38f3e74d7bff07d01111569e213cd8475e77de026c81dac6e40242cfc2df5af9d37e520c2d7aee165de9cc314750e856d7514b0b80c568e2292c733f +Ctrl.hexxcghash = hexxcghash:c226bd264f49cba006b4806afa4edaf42c2c48992ec66c78ce3a982cb5b1d923344107eb77884b0d996af71997611fdffba499da38d5206db0d0a17c438d4d8a +Ctrl.hexsession_id = hexsession_id:ae0f9a407aae7a964a900b1f5b7060a2e7d4c9de4e422fec063829a9ea1fcb74a6ae83b9eb08f8663e171bdf036bf0c263b23f8eff3053d617484cc3efd99990 +Ctrl.type = type:A +Output = 31ef8e737ec154c0 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000081008b735b1cc9a88529c0d0faea307f79142abc920248b3495e56b7987605b5a7a93354c638752ae7ce47b2869600dc2ab8f240c0ce4e35147e00f8e69fbe940d6236daf01b38f3e74d7bff07d01111569e213cd8475e77de026c81dac6e40242cfc2df5af9d37e520c2d7aee165de9cc314750e856d7514b0b80c568e2292c733f +Ctrl.hexxcghash = hexxcghash:c226bd264f49cba006b4806afa4edaf42c2c48992ec66c78ce3a982cb5b1d923344107eb77884b0d996af71997611fdffba499da38d5206db0d0a17c438d4d8a +Ctrl.hexsession_id = hexsession_id:ae0f9a407aae7a964a900b1f5b7060a2e7d4c9de4e422fec063829a9ea1fcb74a6ae83b9eb08f8663e171bdf036bf0c263b23f8eff3053d617484cc3efd99990 +Ctrl.type = type:B +Output = c0bb41f2c51a0503 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000081008b735b1cc9a88529c0d0faea307f79142abc920248b3495e56b7987605b5a7a93354c638752ae7ce47b2869600dc2ab8f240c0ce4e35147e00f8e69fbe940d6236daf01b38f3e74d7bff07d01111569e213cd8475e77de026c81dac6e40242cfc2df5af9d37e520c2d7aee165de9cc314750e856d7514b0b80c568e2292c733f +Ctrl.hexxcghash = hexxcghash:c226bd264f49cba006b4806afa4edaf42c2c48992ec66c78ce3a982cb5b1d923344107eb77884b0d996af71997611fdffba499da38d5206db0d0a17c438d4d8a +Ctrl.hexsession_id = hexsession_id:ae0f9a407aae7a964a900b1f5b7060a2e7d4c9de4e422fec063829a9ea1fcb74a6ae83b9eb08f8663e171bdf036bf0c263b23f8eff3053d617484cc3efd99990 +Ctrl.type = type:C +Output = 3f9058812f36f302dc5ada7de8f4271c435dfe4589f22a00 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000081008b735b1cc9a88529c0d0faea307f79142abc920248b3495e56b7987605b5a7a93354c638752ae7ce47b2869600dc2ab8f240c0ce4e35147e00f8e69fbe940d6236daf01b38f3e74d7bff07d01111569e213cd8475e77de026c81dac6e40242cfc2df5af9d37e520c2d7aee165de9cc314750e856d7514b0b80c568e2292c733f +Ctrl.hexxcghash = hexxcghash:c226bd264f49cba006b4806afa4edaf42c2c48992ec66c78ce3a982cb5b1d923344107eb77884b0d996af71997611fdffba499da38d5206db0d0a17c438d4d8a +Ctrl.hexsession_id = hexsession_id:ae0f9a407aae7a964a900b1f5b7060a2e7d4c9de4e422fec063829a9ea1fcb74a6ae83b9eb08f8663e171bdf036bf0c263b23f8eff3053d617484cc3efd99990 +Ctrl.type = type:D +Output = b342a447abcb67f6819a19b8b300946c89739fabd049a6e0 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000081008b735b1cc9a88529c0d0faea307f79142abc920248b3495e56b7987605b5a7a93354c638752ae7ce47b2869600dc2ab8f240c0ce4e35147e00f8e69fbe940d6236daf01b38f3e74d7bff07d01111569e213cd8475e77de026c81dac6e40242cfc2df5af9d37e520c2d7aee165de9cc314750e856d7514b0b80c568e2292c733f +Ctrl.hexxcghash = hexxcghash:c226bd264f49cba006b4806afa4edaf42c2c48992ec66c78ce3a982cb5b1d923344107eb77884b0d996af71997611fdffba499da38d5206db0d0a17c438d4d8a +Ctrl.hexsession_id = hexsession_id:ae0f9a407aae7a964a900b1f5b7060a2e7d4c9de4e422fec063829a9ea1fcb74a6ae83b9eb08f8663e171bdf036bf0c263b23f8eff3053d617484cc3efd99990 +Ctrl.type = type:E +Output = a5d70cb0a3e351be09b9600c9b97f2781236bf549209a1fbf3304af145af0941c6cd9923f1f30cec946e8dea96332d284e01a4d8bcc90721fe2e515504073cb8 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000081008b735b1cc9a88529c0d0faea307f79142abc920248b3495e56b7987605b5a7a93354c638752ae7ce47b2869600dc2ab8f240c0ce4e35147e00f8e69fbe940d6236daf01b38f3e74d7bff07d01111569e213cd8475e77de026c81dac6e40242cfc2df5af9d37e520c2d7aee165de9cc314750e856d7514b0b80c568e2292c733f +Ctrl.hexxcghash = hexxcghash:c226bd264f49cba006b4806afa4edaf42c2c48992ec66c78ce3a982cb5b1d923344107eb77884b0d996af71997611fdffba499da38d5206db0d0a17c438d4d8a +Ctrl.hexsession_id = hexsession_id:ae0f9a407aae7a964a900b1f5b7060a2e7d4c9de4e422fec063829a9ea1fcb74a6ae83b9eb08f8663e171bdf036bf0c263b23f8eff3053d617484cc3efd99990 +Ctrl.type = type:F +Output = dbc3ea086a49e220306cbe57b942d9409cbd205dec20c7b79fd6998906d173bcb2bc2eb5b7eea4c1d84f3926836bd15e0565a17af735596050d6161d9682f2e7 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100c41430e9dfce9301082a4d034e0e1ffe73133e4c97afbd325d6bbe1f3a4f5a9103f57a05f66b1ac63a5f1724b3315daf7171f334e77eff356366daf4e23e55751422734d4d22e6dcac783bba0edc1be8fcc4c7c0d5a69d047291e33167057c774e46362dfb6f8432b427cf21c01304b23e2b49b664fd50dc463c17efffa146a0 +Ctrl.hexxcghash = hexxcghash:04aeff766f08c065092fdd7be43531f83d73682601069477ee10407821a0f0e8bf614e775dfab6f889a8d5120c2e39d96e38de4cda6f673fb7cb343de1e17b9c +Ctrl.hexsession_id = hexsession_id:15f5653a107aee694bd1680d423c8da2dab8c1ec8e23c5208100ce3d8d4821b52bbb1d14791476253db4b07ebb715ae095b8b49e1545be3c92a3adcf39970be5 +Ctrl.type = type:A +Output = 19d6bc79713a4622 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100c41430e9dfce9301082a4d034e0e1ffe73133e4c97afbd325d6bbe1f3a4f5a9103f57a05f66b1ac63a5f1724b3315daf7171f334e77eff356366daf4e23e55751422734d4d22e6dcac783bba0edc1be8fcc4c7c0d5a69d047291e33167057c774e46362dfb6f8432b427cf21c01304b23e2b49b664fd50dc463c17efffa146a0 +Ctrl.hexxcghash = hexxcghash:04aeff766f08c065092fdd7be43531f83d73682601069477ee10407821a0f0e8bf614e775dfab6f889a8d5120c2e39d96e38de4cda6f673fb7cb343de1e17b9c +Ctrl.hexsession_id = hexsession_id:15f5653a107aee694bd1680d423c8da2dab8c1ec8e23c5208100ce3d8d4821b52bbb1d14791476253db4b07ebb715ae095b8b49e1545be3c92a3adcf39970be5 +Ctrl.type = type:B +Output = 7de9caf89d325dcd + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100c41430e9dfce9301082a4d034e0e1ffe73133e4c97afbd325d6bbe1f3a4f5a9103f57a05f66b1ac63a5f1724b3315daf7171f334e77eff356366daf4e23e55751422734d4d22e6dcac783bba0edc1be8fcc4c7c0d5a69d047291e33167057c774e46362dfb6f8432b427cf21c01304b23e2b49b664fd50dc463c17efffa146a0 +Ctrl.hexxcghash = hexxcghash:04aeff766f08c065092fdd7be43531f83d73682601069477ee10407821a0f0e8bf614e775dfab6f889a8d5120c2e39d96e38de4cda6f673fb7cb343de1e17b9c +Ctrl.hexsession_id = hexsession_id:15f5653a107aee694bd1680d423c8da2dab8c1ec8e23c5208100ce3d8d4821b52bbb1d14791476253db4b07ebb715ae095b8b49e1545be3c92a3adcf39970be5 +Ctrl.type = type:C +Output = 1d5391d658abb9ec1b8df32cbf1db9a302a1301984ab06d4 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100c41430e9dfce9301082a4d034e0e1ffe73133e4c97afbd325d6bbe1f3a4f5a9103f57a05f66b1ac63a5f1724b3315daf7171f334e77eff356366daf4e23e55751422734d4d22e6dcac783bba0edc1be8fcc4c7c0d5a69d047291e33167057c774e46362dfb6f8432b427cf21c01304b23e2b49b664fd50dc463c17efffa146a0 +Ctrl.hexxcghash = hexxcghash:04aeff766f08c065092fdd7be43531f83d73682601069477ee10407821a0f0e8bf614e775dfab6f889a8d5120c2e39d96e38de4cda6f673fb7cb343de1e17b9c +Ctrl.hexsession_id = hexsession_id:15f5653a107aee694bd1680d423c8da2dab8c1ec8e23c5208100ce3d8d4821b52bbb1d14791476253db4b07ebb715ae095b8b49e1545be3c92a3adcf39970be5 +Ctrl.type = type:D +Output = 5d37dab50814543d8d8674f4f491d73d21973f20844c96a7 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100c41430e9dfce9301082a4d034e0e1ffe73133e4c97afbd325d6bbe1f3a4f5a9103f57a05f66b1ac63a5f1724b3315daf7171f334e77eff356366daf4e23e55751422734d4d22e6dcac783bba0edc1be8fcc4c7c0d5a69d047291e33167057c774e46362dfb6f8432b427cf21c01304b23e2b49b664fd50dc463c17efffa146a0 +Ctrl.hexxcghash = hexxcghash:04aeff766f08c065092fdd7be43531f83d73682601069477ee10407821a0f0e8bf614e775dfab6f889a8d5120c2e39d96e38de4cda6f673fb7cb343de1e17b9c +Ctrl.hexsession_id = hexsession_id:15f5653a107aee694bd1680d423c8da2dab8c1ec8e23c5208100ce3d8d4821b52bbb1d14791476253db4b07ebb715ae095b8b49e1545be3c92a3adcf39970be5 +Ctrl.type = type:E +Output = 3e882ae390a64c34f509bc9845df581987ae2524b2ff92d9243580168f32fa68750f3f732c8c5544c98fc585582fe743efbf55dd6c487fb5f9ffac1a156fa31c + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000008100c41430e9dfce9301082a4d034e0e1ffe73133e4c97afbd325d6bbe1f3a4f5a9103f57a05f66b1ac63a5f1724b3315daf7171f334e77eff356366daf4e23e55751422734d4d22e6dcac783bba0edc1be8fcc4c7c0d5a69d047291e33167057c774e46362dfb6f8432b427cf21c01304b23e2b49b664fd50dc463c17efffa146a0 +Ctrl.hexxcghash = hexxcghash:04aeff766f08c065092fdd7be43531f83d73682601069477ee10407821a0f0e8bf614e775dfab6f889a8d5120c2e39d96e38de4cda6f673fb7cb343de1e17b9c +Ctrl.hexsession_id = hexsession_id:15f5653a107aee694bd1680d423c8da2dab8c1ec8e23c5208100ce3d8d4821b52bbb1d14791476253db4b07ebb715ae095b8b49e1545be3c92a3adcf39970be5 +Ctrl.type = type:F +Output = ce4bcf9cabe7ee7c0e216e64e5427ebd38cb41ba9e9a6d9ae441ca47d9278347a59afdf758ae7f7fd667ed3830bf9a33d7badfd40e2112580af514da9464a6d1 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000810088181aaaa6b17924ced0033b1e4a3d007a464d4d53871f4da4689d477437b42f873d4b7d5f5c52909b6cca8be7a01d1a7a806f745500bb00b4fd6e6f8d0e1c9ad08d934c7d680a57ac5a4ed77f73182065f9295d745e1d50b8da0626f3e9ccb6651aad3b0c5c2cecd90c521318778f570333c011f02d5e2a406eb8b3d6036537 +Ctrl.hexxcghash = hexxcghash:3c4ecb173c39cedecbcd19ba0fc38454176b81b6451911b4422907b1b670dcedaabebaaa261fbac23b3b5738264c5eee3dccfd9e050a1cef17ac997527dd7095 +Ctrl.hexsession_id = hexsession_id:3b05253d9e5ab2f7f4ba2998bea5ed7d05afdf02b7499ac2dd554833b886b73d92e929316a366147e9af50201dbb4e54c123418d1a623bc2dc52766211dbe614 +Ctrl.type = type:A +Output = 93fbb01815b63533 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000810088181aaaa6b17924ced0033b1e4a3d007a464d4d53871f4da4689d477437b42f873d4b7d5f5c52909b6cca8be7a01d1a7a806f745500bb00b4fd6e6f8d0e1c9ad08d934c7d680a57ac5a4ed77f73182065f9295d745e1d50b8da0626f3e9ccb6651aad3b0c5c2cecd90c521318778f570333c011f02d5e2a406eb8b3d6036537 +Ctrl.hexxcghash = hexxcghash:3c4ecb173c39cedecbcd19ba0fc38454176b81b6451911b4422907b1b670dcedaabebaaa261fbac23b3b5738264c5eee3dccfd9e050a1cef17ac997527dd7095 +Ctrl.hexsession_id = hexsession_id:3b05253d9e5ab2f7f4ba2998bea5ed7d05afdf02b7499ac2dd554833b886b73d92e929316a366147e9af50201dbb4e54c123418d1a623bc2dc52766211dbe614 +Ctrl.type = type:B +Output = aea76dfe77a87471 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000810088181aaaa6b17924ced0033b1e4a3d007a464d4d53871f4da4689d477437b42f873d4b7d5f5c52909b6cca8be7a01d1a7a806f745500bb00b4fd6e6f8d0e1c9ad08d934c7d680a57ac5a4ed77f73182065f9295d745e1d50b8da0626f3e9ccb6651aad3b0c5c2cecd90c521318778f570333c011f02d5e2a406eb8b3d6036537 +Ctrl.hexxcghash = hexxcghash:3c4ecb173c39cedecbcd19ba0fc38454176b81b6451911b4422907b1b670dcedaabebaaa261fbac23b3b5738264c5eee3dccfd9e050a1cef17ac997527dd7095 +Ctrl.hexsession_id = hexsession_id:3b05253d9e5ab2f7f4ba2998bea5ed7d05afdf02b7499ac2dd554833b886b73d92e929316a366147e9af50201dbb4e54c123418d1a623bc2dc52766211dbe614 +Ctrl.type = type:C +Output = 73a55e25a0a8ec0899c1074bf0845fefd84e42f741897a3f + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000810088181aaaa6b17924ced0033b1e4a3d007a464d4d53871f4da4689d477437b42f873d4b7d5f5c52909b6cca8be7a01d1a7a806f745500bb00b4fd6e6f8d0e1c9ad08d934c7d680a57ac5a4ed77f73182065f9295d745e1d50b8da0626f3e9ccb6651aad3b0c5c2cecd90c521318778f570333c011f02d5e2a406eb8b3d6036537 +Ctrl.hexxcghash = hexxcghash:3c4ecb173c39cedecbcd19ba0fc38454176b81b6451911b4422907b1b670dcedaabebaaa261fbac23b3b5738264c5eee3dccfd9e050a1cef17ac997527dd7095 +Ctrl.hexsession_id = hexsession_id:3b05253d9e5ab2f7f4ba2998bea5ed7d05afdf02b7499ac2dd554833b886b73d92e929316a366147e9af50201dbb4e54c123418d1a623bc2dc52766211dbe614 +Ctrl.type = type:D +Output = fead3a851502aa3c58734065eeaf3e63ed4c59c8f450bb1a + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000810088181aaaa6b17924ced0033b1e4a3d007a464d4d53871f4da4689d477437b42f873d4b7d5f5c52909b6cca8be7a01d1a7a806f745500bb00b4fd6e6f8d0e1c9ad08d934c7d680a57ac5a4ed77f73182065f9295d745e1d50b8da0626f3e9ccb6651aad3b0c5c2cecd90c521318778f570333c011f02d5e2a406eb8b3d6036537 +Ctrl.hexxcghash = hexxcghash:3c4ecb173c39cedecbcd19ba0fc38454176b81b6451911b4422907b1b670dcedaabebaaa261fbac23b3b5738264c5eee3dccfd9e050a1cef17ac997527dd7095 +Ctrl.hexsession_id = hexsession_id:3b05253d9e5ab2f7f4ba2998bea5ed7d05afdf02b7499ac2dd554833b886b73d92e929316a366147e9af50201dbb4e54c123418d1a623bc2dc52766211dbe614 +Ctrl.type = type:E +Output = 55bde99a692820ad809eb0a62311f8f3e9469ba2ee4d782d5432628ca52d829b9c5bffc41b58232363f97c5dab603268b1997fbe9b9b34ab2aca3da27467b0c8 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000000810088181aaaa6b17924ced0033b1e4a3d007a464d4d53871f4da4689d477437b42f873d4b7d5f5c52909b6cca8be7a01d1a7a806f745500bb00b4fd6e6f8d0e1c9ad08d934c7d680a57ac5a4ed77f73182065f9295d745e1d50b8da0626f3e9ccb6651aad3b0c5c2cecd90c521318778f570333c011f02d5e2a406eb8b3d6036537 +Ctrl.hexxcghash = hexxcghash:3c4ecb173c39cedecbcd19ba0fc38454176b81b6451911b4422907b1b670dcedaabebaaa261fbac23b3b5738264c5eee3dccfd9e050a1cef17ac997527dd7095 +Ctrl.hexsession_id = hexsession_id:3b05253d9e5ab2f7f4ba2998bea5ed7d05afdf02b7499ac2dd554833b886b73d92e929316a366147e9af50201dbb4e54c123418d1a623bc2dc52766211dbe614 +Ctrl.type = type:F +Output = 756f65746c861f0985f3dd7d2f08004897ccb22be2f1d3b4791ca0c51d5ee0da776dd03d7dfb7f4db6c6cd37899871e63d75f7f60dff8348c313e99409ad2db5 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100e8d52da494d198252b87189223bffb0bc1b68335ae987df15bf7cf95bd74a951b5eaa87b1739f91efc97f28f5a7f0a206fdbcf33e39003e154b334009563abd62a4169462865ba931ca3f8f4d70611e8bcb46228ee74983d2ec79c690d86329c2daac8dbdafe4573f114313f29c7507bd4aa50d87bb83b1cebb628e37b2501ffc9b1200d8d360e1b46bf6fdecd486fae790352eb79aa3f37e4964963a84dbd80fb3b80491210565d9449599bc9306ee76a932a764070702cd09c87e1f26095b1b78042bcc37d5f097e3f7b2db6cb6f7b3e2a332021f756fe1784edd2a82802c1274b9944dff99fb1c181f41d6d2f4eac5aa33c619c48167dce1eb47ddafbe5eb +Ctrl.hexxcghash = hexxcghash:3e81bd3b4b609955df0deaab293876592122e2d7fdc719ecd503b572c5e98cfaaac1f7e085d4097c76515f5b70413944a464ce346ada6d85d7c39a8009d4b121 +Ctrl.hexsession_id = hexsession_id:3e81bd3b4b609955df0deaab293876592122e2d7fdc719ecd503b572c5e98cfaaac1f7e085d4097c76515f5b70413944a464ce346ada6d85d7c39a8009d4b121 +Ctrl.type = type:A +Output = a626c34c0a74b56262110185a34cd810 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100e8d52da494d198252b87189223bffb0bc1b68335ae987df15bf7cf95bd74a951b5eaa87b1739f91efc97f28f5a7f0a206fdbcf33e39003e154b334009563abd62a4169462865ba931ca3f8f4d70611e8bcb46228ee74983d2ec79c690d86329c2daac8dbdafe4573f114313f29c7507bd4aa50d87bb83b1cebb628e37b2501ffc9b1200d8d360e1b46bf6fdecd486fae790352eb79aa3f37e4964963a84dbd80fb3b80491210565d9449599bc9306ee76a932a764070702cd09c87e1f26095b1b78042bcc37d5f097e3f7b2db6cb6f7b3e2a332021f756fe1784edd2a82802c1274b9944dff99fb1c181f41d6d2f4eac5aa33c619c48167dce1eb47ddafbe5eb +Ctrl.hexxcghash = hexxcghash:3e81bd3b4b609955df0deaab293876592122e2d7fdc719ecd503b572c5e98cfaaac1f7e085d4097c76515f5b70413944a464ce346ada6d85d7c39a8009d4b121 +Ctrl.hexsession_id = hexsession_id:3e81bd3b4b609955df0deaab293876592122e2d7fdc719ecd503b572c5e98cfaaac1f7e085d4097c76515f5b70413944a464ce346ada6d85d7c39a8009d4b121 +Ctrl.type = type:B +Output = 223d6fc57263da9ad61dad9759454e0f + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100e8d52da494d198252b87189223bffb0bc1b68335ae987df15bf7cf95bd74a951b5eaa87b1739f91efc97f28f5a7f0a206fdbcf33e39003e154b334009563abd62a4169462865ba931ca3f8f4d70611e8bcb46228ee74983d2ec79c690d86329c2daac8dbdafe4573f114313f29c7507bd4aa50d87bb83b1cebb628e37b2501ffc9b1200d8d360e1b46bf6fdecd486fae790352eb79aa3f37e4964963a84dbd80fb3b80491210565d9449599bc9306ee76a932a764070702cd09c87e1f26095b1b78042bcc37d5f097e3f7b2db6cb6f7b3e2a332021f756fe1784edd2a82802c1274b9944dff99fb1c181f41d6d2f4eac5aa33c619c48167dce1eb47ddafbe5eb +Ctrl.hexxcghash = hexxcghash:3e81bd3b4b609955df0deaab293876592122e2d7fdc719ecd503b572c5e98cfaaac1f7e085d4097c76515f5b70413944a464ce346ada6d85d7c39a8009d4b121 +Ctrl.hexsession_id = hexsession_id:3e81bd3b4b609955df0deaab293876592122e2d7fdc719ecd503b572c5e98cfaaac1f7e085d4097c76515f5b70413944a464ce346ada6d85d7c39a8009d4b121 +Ctrl.type = type:C +Output = 7c803e07506969666f446400b2372eee + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100e8d52da494d198252b87189223bffb0bc1b68335ae987df15bf7cf95bd74a951b5eaa87b1739f91efc97f28f5a7f0a206fdbcf33e39003e154b334009563abd62a4169462865ba931ca3f8f4d70611e8bcb46228ee74983d2ec79c690d86329c2daac8dbdafe4573f114313f29c7507bd4aa50d87bb83b1cebb628e37b2501ffc9b1200d8d360e1b46bf6fdecd486fae790352eb79aa3f37e4964963a84dbd80fb3b80491210565d9449599bc9306ee76a932a764070702cd09c87e1f26095b1b78042bcc37d5f097e3f7b2db6cb6f7b3e2a332021f756fe1784edd2a82802c1274b9944dff99fb1c181f41d6d2f4eac5aa33c619c48167dce1eb47ddafbe5eb +Ctrl.hexxcghash = hexxcghash:3e81bd3b4b609955df0deaab293876592122e2d7fdc719ecd503b572c5e98cfaaac1f7e085d4097c76515f5b70413944a464ce346ada6d85d7c39a8009d4b121 +Ctrl.hexsession_id = hexsession_id:3e81bd3b4b609955df0deaab293876592122e2d7fdc719ecd503b572c5e98cfaaac1f7e085d4097c76515f5b70413944a464ce346ada6d85d7c39a8009d4b121 +Ctrl.type = type:D +Output = 4ad705fbc9e89c03c15f9dbbf34981df + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100e8d52da494d198252b87189223bffb0bc1b68335ae987df15bf7cf95bd74a951b5eaa87b1739f91efc97f28f5a7f0a206fdbcf33e39003e154b334009563abd62a4169462865ba931ca3f8f4d70611e8bcb46228ee74983d2ec79c690d86329c2daac8dbdafe4573f114313f29c7507bd4aa50d87bb83b1cebb628e37b2501ffc9b1200d8d360e1b46bf6fdecd486fae790352eb79aa3f37e4964963a84dbd80fb3b80491210565d9449599bc9306ee76a932a764070702cd09c87e1f26095b1b78042bcc37d5f097e3f7b2db6cb6f7b3e2a332021f756fe1784edd2a82802c1274b9944dff99fb1c181f41d6d2f4eac5aa33c619c48167dce1eb47ddafbe5eb +Ctrl.hexxcghash = hexxcghash:3e81bd3b4b609955df0deaab293876592122e2d7fdc719ecd503b572c5e98cfaaac1f7e085d4097c76515f5b70413944a464ce346ada6d85d7c39a8009d4b121 +Ctrl.hexsession_id = hexsession_id:3e81bd3b4b609955df0deaab293876592122e2d7fdc719ecd503b572c5e98cfaaac1f7e085d4097c76515f5b70413944a464ce346ada6d85d7c39a8009d4b121 +Ctrl.type = type:E +Output = 36cac32cab8b943cd9d2142559c467593bfaf30d0be71560245c8b38a5671901a858ccc637b0ef6966a2bbfb1a7f51f2cf6d52c4165ca000d52bd908405c305f + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100e8d52da494d198252b87189223bffb0bc1b68335ae987df15bf7cf95bd74a951b5eaa87b1739f91efc97f28f5a7f0a206fdbcf33e39003e154b334009563abd62a4169462865ba931ca3f8f4d70611e8bcb46228ee74983d2ec79c690d86329c2daac8dbdafe4573f114313f29c7507bd4aa50d87bb83b1cebb628e37b2501ffc9b1200d8d360e1b46bf6fdecd486fae790352eb79aa3f37e4964963a84dbd80fb3b80491210565d9449599bc9306ee76a932a764070702cd09c87e1f26095b1b78042bcc37d5f097e3f7b2db6cb6f7b3e2a332021f756fe1784edd2a82802c1274b9944dff99fb1c181f41d6d2f4eac5aa33c619c48167dce1eb47ddafbe5eb +Ctrl.hexxcghash = hexxcghash:3e81bd3b4b609955df0deaab293876592122e2d7fdc719ecd503b572c5e98cfaaac1f7e085d4097c76515f5b70413944a464ce346ada6d85d7c39a8009d4b121 +Ctrl.hexsession_id = hexsession_id:3e81bd3b4b609955df0deaab293876592122e2d7fdc719ecd503b572c5e98cfaaac1f7e085d4097c76515f5b70413944a464ce346ada6d85d7c39a8009d4b121 +Ctrl.type = type:F +Output = 67d42301ce629c0f2a34b9dfb24ec60c138b4edc71f7123bb0db9447b3c915ebd8c54d3b20af04e30b484be3a2d4136f5d5c46f9c56de189b91fec78ecd53e1c + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010034a5d2784c99976fb3b615c5b1bfacc9a749330d22bcf5a7c404c10f886e2a3115660a399d7c721d5dd141f458b0d27e0e6709a8290f9ef6f61681a11d876eb7bd52b930f79fb9516f5d2137c5bfa95a893890d26d7712fc9ecc4dc82a5171341b41a9f2c4a8f0c14efe82ef2a4db60a8a0b8e43d3f92992f8dcc2d6bae3759aea86a4f14f809fe648021fc4aa79936bd687450e801916d7d267dfab66bd86f9424b3460fa75b16af37151918cb2f8ba8ac33df5b0ccf7fb21c3ea9fb0ed2917a4eb9d6ed345c42a5a67a66fca7b7e69c1ad5c45c51866692f058ad537c0f59c83a2788ef9b9610cc06aa155aa1115f23fa36d7734152a0da209244c32d37e3a +Ctrl.hexxcghash = hexxcghash:ab6f9c04514ae3f6591039c9cc6a9919279282d7c95971b4c27957e31cced5ef5b1c59a4418402203ab50a46df7dc03bd67d42a62592708b0581617a42ea6d71 +Ctrl.hexsession_id = hexsession_id:4e226639facaccf9894367cb1008663e989eb31757b912bd1cb3bd51058c7adf56e9a54eef87b63299a5cc092c047991dc9a380e749c7c5657bb99424bcce6d6 +Ctrl.type = type:A +Output = 8ebbf0e9afd9f108498f1543104ba8e2 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010034a5d2784c99976fb3b615c5b1bfacc9a749330d22bcf5a7c404c10f886e2a3115660a399d7c721d5dd141f458b0d27e0e6709a8290f9ef6f61681a11d876eb7bd52b930f79fb9516f5d2137c5bfa95a893890d26d7712fc9ecc4dc82a5171341b41a9f2c4a8f0c14efe82ef2a4db60a8a0b8e43d3f92992f8dcc2d6bae3759aea86a4f14f809fe648021fc4aa79936bd687450e801916d7d267dfab66bd86f9424b3460fa75b16af37151918cb2f8ba8ac33df5b0ccf7fb21c3ea9fb0ed2917a4eb9d6ed345c42a5a67a66fca7b7e69c1ad5c45c51866692f058ad537c0f59c83a2788ef9b9610cc06aa155aa1115f23fa36d7734152a0da209244c32d37e3a +Ctrl.hexxcghash = hexxcghash:ab6f9c04514ae3f6591039c9cc6a9919279282d7c95971b4c27957e31cced5ef5b1c59a4418402203ab50a46df7dc03bd67d42a62592708b0581617a42ea6d71 +Ctrl.hexsession_id = hexsession_id:4e226639facaccf9894367cb1008663e989eb31757b912bd1cb3bd51058c7adf56e9a54eef87b63299a5cc092c047991dc9a380e749c7c5657bb99424bcce6d6 +Ctrl.type = type:B +Output = 38bfe6bed75f77675fa36d76b63816a4 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010034a5d2784c99976fb3b615c5b1bfacc9a749330d22bcf5a7c404c10f886e2a3115660a399d7c721d5dd141f458b0d27e0e6709a8290f9ef6f61681a11d876eb7bd52b930f79fb9516f5d2137c5bfa95a893890d26d7712fc9ecc4dc82a5171341b41a9f2c4a8f0c14efe82ef2a4db60a8a0b8e43d3f92992f8dcc2d6bae3759aea86a4f14f809fe648021fc4aa79936bd687450e801916d7d267dfab66bd86f9424b3460fa75b16af37151918cb2f8ba8ac33df5b0ccf7fb21c3ea9fb0ed2917a4eb9d6ed345c42a5a67a66fca7b7e69c1ad5c45c51866692f058ad537c0f59c83a2788ef9b9610cc06aa155aa1115f23fa36d7734152a0da209244c32d37e3a +Ctrl.hexxcghash = hexxcghash:ab6f9c04514ae3f6591039c9cc6a9919279282d7c95971b4c27957e31cced5ef5b1c59a4418402203ab50a46df7dc03bd67d42a62592708b0581617a42ea6d71 +Ctrl.hexsession_id = hexsession_id:4e226639facaccf9894367cb1008663e989eb31757b912bd1cb3bd51058c7adf56e9a54eef87b63299a5cc092c047991dc9a380e749c7c5657bb99424bcce6d6 +Ctrl.type = type:C +Output = f759f0ad2d72980f6b12f0fb317222f3 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010034a5d2784c99976fb3b615c5b1bfacc9a749330d22bcf5a7c404c10f886e2a3115660a399d7c721d5dd141f458b0d27e0e6709a8290f9ef6f61681a11d876eb7bd52b930f79fb9516f5d2137c5bfa95a893890d26d7712fc9ecc4dc82a5171341b41a9f2c4a8f0c14efe82ef2a4db60a8a0b8e43d3f92992f8dcc2d6bae3759aea86a4f14f809fe648021fc4aa79936bd687450e801916d7d267dfab66bd86f9424b3460fa75b16af37151918cb2f8ba8ac33df5b0ccf7fb21c3ea9fb0ed2917a4eb9d6ed345c42a5a67a66fca7b7e69c1ad5c45c51866692f058ad537c0f59c83a2788ef9b9610cc06aa155aa1115f23fa36d7734152a0da209244c32d37e3a +Ctrl.hexxcghash = hexxcghash:ab6f9c04514ae3f6591039c9cc6a9919279282d7c95971b4c27957e31cced5ef5b1c59a4418402203ab50a46df7dc03bd67d42a62592708b0581617a42ea6d71 +Ctrl.hexsession_id = hexsession_id:4e226639facaccf9894367cb1008663e989eb31757b912bd1cb3bd51058c7adf56e9a54eef87b63299a5cc092c047991dc9a380e749c7c5657bb99424bcce6d6 +Ctrl.type = type:D +Output = 39f294ec25afb520f5d7f1064b7078c9 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010034a5d2784c99976fb3b615c5b1bfacc9a749330d22bcf5a7c404c10f886e2a3115660a399d7c721d5dd141f458b0d27e0e6709a8290f9ef6f61681a11d876eb7bd52b930f79fb9516f5d2137c5bfa95a893890d26d7712fc9ecc4dc82a5171341b41a9f2c4a8f0c14efe82ef2a4db60a8a0b8e43d3f92992f8dcc2d6bae3759aea86a4f14f809fe648021fc4aa79936bd687450e801916d7d267dfab66bd86f9424b3460fa75b16af37151918cb2f8ba8ac33df5b0ccf7fb21c3ea9fb0ed2917a4eb9d6ed345c42a5a67a66fca7b7e69c1ad5c45c51866692f058ad537c0f59c83a2788ef9b9610cc06aa155aa1115f23fa36d7734152a0da209244c32d37e3a +Ctrl.hexxcghash = hexxcghash:ab6f9c04514ae3f6591039c9cc6a9919279282d7c95971b4c27957e31cced5ef5b1c59a4418402203ab50a46df7dc03bd67d42a62592708b0581617a42ea6d71 +Ctrl.hexsession_id = hexsession_id:4e226639facaccf9894367cb1008663e989eb31757b912bd1cb3bd51058c7adf56e9a54eef87b63299a5cc092c047991dc9a380e749c7c5657bb99424bcce6d6 +Ctrl.type = type:E +Output = ff2ad139997ff26e7f4393e49d57d5fc973ddb6225d8f4b5fe990e46b9943772f0d33aa98d01089ff0aeb5740bd388ada35dc44240180c99e522c817dedfc2cd + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010034a5d2784c99976fb3b615c5b1bfacc9a749330d22bcf5a7c404c10f886e2a3115660a399d7c721d5dd141f458b0d27e0e6709a8290f9ef6f61681a11d876eb7bd52b930f79fb9516f5d2137c5bfa95a893890d26d7712fc9ecc4dc82a5171341b41a9f2c4a8f0c14efe82ef2a4db60a8a0b8e43d3f92992f8dcc2d6bae3759aea86a4f14f809fe648021fc4aa79936bd687450e801916d7d267dfab66bd86f9424b3460fa75b16af37151918cb2f8ba8ac33df5b0ccf7fb21c3ea9fb0ed2917a4eb9d6ed345c42a5a67a66fca7b7e69c1ad5c45c51866692f058ad537c0f59c83a2788ef9b9610cc06aa155aa1115f23fa36d7734152a0da209244c32d37e3a +Ctrl.hexxcghash = hexxcghash:ab6f9c04514ae3f6591039c9cc6a9919279282d7c95971b4c27957e31cced5ef5b1c59a4418402203ab50a46df7dc03bd67d42a62592708b0581617a42ea6d71 +Ctrl.hexsession_id = hexsession_id:4e226639facaccf9894367cb1008663e989eb31757b912bd1cb3bd51058c7adf56e9a54eef87b63299a5cc092c047991dc9a380e749c7c5657bb99424bcce6d6 +Ctrl.type = type:F +Output = a670c9583c71f403207a192700d5e4fd7a007b60a4617b7f93708399a0cb771af08b9e5f4237e6975f055d6f0a4d91523fa0805013df6ae4a19f077646f1cd4b + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000100192471d29d9fbc8b61570e4efa053a5f17b2efc0aa5415b3309f7dc3971c64d9f1093f6114941d4912f7bfb771db41d1f166d4bdaec8dde214aeb058e2227277393e3c0b12adc1b6a445870bc26e753e05e27b90b97d781e3e8493eb5e717c243213de4dcdd5a11d467b8d26759118692b10357c28b0efb0228cbe257b9ee0cb77bb7bc8b072edf418768c977e485635b4ab61078587128e9a8b3c6deca2a4e64cf9fd6eca880aebd1043deaf94447ea50b0c11b574259cdcafd208d9657c7177cf394de26dd8364b615786198c38e63c568e22b5263be41d6dd8843ad5254f61cf01b7162948652568c2b42833a95619fa5072adb0bfbf38e3eace7e1596066 +Ctrl.hexxcghash = hexxcghash:a0a53cb8bcc48ffe44fd9e50e0f7532d3e326f93d7ecb10135d4385dab550cd7be03a7374dfc2a92794be13e40c794811a9916c3d1c4e7ea31ed5269537c1c22 +Ctrl.hexsession_id = hexsession_id:9bcf3f3397ff464126cb2a99c04908721871354b842ffd3d873d49407db0382f98cc54d66665d950ec8277c374f19e9f0dd2e727f8759017c49b5b80baa87c63 +Ctrl.type = type:A +Output = f68353f802d39a43c728641e44087cc5 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000100192471d29d9fbc8b61570e4efa053a5f17b2efc0aa5415b3309f7dc3971c64d9f1093f6114941d4912f7bfb771db41d1f166d4bdaec8dde214aeb058e2227277393e3c0b12adc1b6a445870bc26e753e05e27b90b97d781e3e8493eb5e717c243213de4dcdd5a11d467b8d26759118692b10357c28b0efb0228cbe257b9ee0cb77bb7bc8b072edf418768c977e485635b4ab61078587128e9a8b3c6deca2a4e64cf9fd6eca880aebd1043deaf94447ea50b0c11b574259cdcafd208d9657c7177cf394de26dd8364b615786198c38e63c568e22b5263be41d6dd8843ad5254f61cf01b7162948652568c2b42833a95619fa5072adb0bfbf38e3eace7e1596066 +Ctrl.hexxcghash = hexxcghash:a0a53cb8bcc48ffe44fd9e50e0f7532d3e326f93d7ecb10135d4385dab550cd7be03a7374dfc2a92794be13e40c794811a9916c3d1c4e7ea31ed5269537c1c22 +Ctrl.hexsession_id = hexsession_id:9bcf3f3397ff464126cb2a99c04908721871354b842ffd3d873d49407db0382f98cc54d66665d950ec8277c374f19e9f0dd2e727f8759017c49b5b80baa87c63 +Ctrl.type = type:B +Output = 23c2377f826f77519871941b62cb9fdd + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000100192471d29d9fbc8b61570e4efa053a5f17b2efc0aa5415b3309f7dc3971c64d9f1093f6114941d4912f7bfb771db41d1f166d4bdaec8dde214aeb058e2227277393e3c0b12adc1b6a445870bc26e753e05e27b90b97d781e3e8493eb5e717c243213de4dcdd5a11d467b8d26759118692b10357c28b0efb0228cbe257b9ee0cb77bb7bc8b072edf418768c977e485635b4ab61078587128e9a8b3c6deca2a4e64cf9fd6eca880aebd1043deaf94447ea50b0c11b574259cdcafd208d9657c7177cf394de26dd8364b615786198c38e63c568e22b5263be41d6dd8843ad5254f61cf01b7162948652568c2b42833a95619fa5072adb0bfbf38e3eace7e1596066 +Ctrl.hexxcghash = hexxcghash:a0a53cb8bcc48ffe44fd9e50e0f7532d3e326f93d7ecb10135d4385dab550cd7be03a7374dfc2a92794be13e40c794811a9916c3d1c4e7ea31ed5269537c1c22 +Ctrl.hexsession_id = hexsession_id:9bcf3f3397ff464126cb2a99c04908721871354b842ffd3d873d49407db0382f98cc54d66665d950ec8277c374f19e9f0dd2e727f8759017c49b5b80baa87c63 +Ctrl.type = type:C +Output = c92b86a099e2605037d531746a6af7cb + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000100192471d29d9fbc8b61570e4efa053a5f17b2efc0aa5415b3309f7dc3971c64d9f1093f6114941d4912f7bfb771db41d1f166d4bdaec8dde214aeb058e2227277393e3c0b12adc1b6a445870bc26e753e05e27b90b97d781e3e8493eb5e717c243213de4dcdd5a11d467b8d26759118692b10357c28b0efb0228cbe257b9ee0cb77bb7bc8b072edf418768c977e485635b4ab61078587128e9a8b3c6deca2a4e64cf9fd6eca880aebd1043deaf94447ea50b0c11b574259cdcafd208d9657c7177cf394de26dd8364b615786198c38e63c568e22b5263be41d6dd8843ad5254f61cf01b7162948652568c2b42833a95619fa5072adb0bfbf38e3eace7e1596066 +Ctrl.hexxcghash = hexxcghash:a0a53cb8bcc48ffe44fd9e50e0f7532d3e326f93d7ecb10135d4385dab550cd7be03a7374dfc2a92794be13e40c794811a9916c3d1c4e7ea31ed5269537c1c22 +Ctrl.hexsession_id = hexsession_id:9bcf3f3397ff464126cb2a99c04908721871354b842ffd3d873d49407db0382f98cc54d66665d950ec8277c374f19e9f0dd2e727f8759017c49b5b80baa87c63 +Ctrl.type = type:D +Output = 1517de253a5b9f7d9c4c3f234b27392e + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000100192471d29d9fbc8b61570e4efa053a5f17b2efc0aa5415b3309f7dc3971c64d9f1093f6114941d4912f7bfb771db41d1f166d4bdaec8dde214aeb058e2227277393e3c0b12adc1b6a445870bc26e753e05e27b90b97d781e3e8493eb5e717c243213de4dcdd5a11d467b8d26759118692b10357c28b0efb0228cbe257b9ee0cb77bb7bc8b072edf418768c977e485635b4ab61078587128e9a8b3c6deca2a4e64cf9fd6eca880aebd1043deaf94447ea50b0c11b574259cdcafd208d9657c7177cf394de26dd8364b615786198c38e63c568e22b5263be41d6dd8843ad5254f61cf01b7162948652568c2b42833a95619fa5072adb0bfbf38e3eace7e1596066 +Ctrl.hexxcghash = hexxcghash:a0a53cb8bcc48ffe44fd9e50e0f7532d3e326f93d7ecb10135d4385dab550cd7be03a7374dfc2a92794be13e40c794811a9916c3d1c4e7ea31ed5269537c1c22 +Ctrl.hexsession_id = hexsession_id:9bcf3f3397ff464126cb2a99c04908721871354b842ffd3d873d49407db0382f98cc54d66665d950ec8277c374f19e9f0dd2e727f8759017c49b5b80baa87c63 +Ctrl.type = type:E +Output = be48a82cd246cf4d6ddb397a39f1ed62d98b5265e75190624a523033796d05046d63e0810b4b7a6efe9b834cb043871203638557063968910ad1cfa0abe62bb1 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:00000100192471d29d9fbc8b61570e4efa053a5f17b2efc0aa5415b3309f7dc3971c64d9f1093f6114941d4912f7bfb771db41d1f166d4bdaec8dde214aeb058e2227277393e3c0b12adc1b6a445870bc26e753e05e27b90b97d781e3e8493eb5e717c243213de4dcdd5a11d467b8d26759118692b10357c28b0efb0228cbe257b9ee0cb77bb7bc8b072edf418768c977e485635b4ab61078587128e9a8b3c6deca2a4e64cf9fd6eca880aebd1043deaf94447ea50b0c11b574259cdcafd208d9657c7177cf394de26dd8364b615786198c38e63c568e22b5263be41d6dd8843ad5254f61cf01b7162948652568c2b42833a95619fa5072adb0bfbf38e3eace7e1596066 +Ctrl.hexxcghash = hexxcghash:a0a53cb8bcc48ffe44fd9e50e0f7532d3e326f93d7ecb10135d4385dab550cd7be03a7374dfc2a92794be13e40c794811a9916c3d1c4e7ea31ed5269537c1c22 +Ctrl.hexsession_id = hexsession_id:9bcf3f3397ff464126cb2a99c04908721871354b842ffd3d873d49407db0382f98cc54d66665d950ec8277c374f19e9f0dd2e727f8759017c49b5b80baa87c63 +Ctrl.type = type:F +Output = 0c9af3775d5dc49a1b9b85fa18420ce1ca10d5159f83f9e078c217289688639dbce5f85665f866d8f93b2c6823bc7b2655830d8bb51fba945ce6eac2b0e6ce8a + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010015b3157b538e31a14797d981a6ef62814cd55fbea25ea88a16a5839484c7624d7befccc82d91e2ff2b6f402daba861b77c1016bab9e3d58bab985563f32d663407f9f3582856ee0aa3a56680c221ecddc48af6de71fd34626b716d9efe530df470c0b7b1e4131861bc4f12e44de7f1d1910047465c0eb95f7232d6e71d639d75ac58e6848e560210a5dc2e6996c1d96f9f688fb86558ba96422d1a69cf795ea67e66d534bef2160f4e9d4351c9c2faaad7c2ad2476ace5556c9b3c4c2d3bdac82bfb54d2e54eb6ed398b813c5928aa560b442c585a038571c4db98a44d8c8cdb02fa731b400adb859b591c1846900791d791927363d745042a38597ef883cbda +Ctrl.hexxcghash = hexxcghash:651bdee255eef5fb47c7733df03d4346bc335cf1de2bfbd453f4ff18c775de475719a6ec4c5c55badadda4822e3fbf5ae3c0e6e9608a893fea68bfcc0af86d73 +Ctrl.hexsession_id = hexsession_id:ee603130d0bdec24952cd3392272dbd7a536c2e76c794cc2f678ca9dd789670453e6bcd330dbf4e93930ec0b3e506e4c629b3d156ab1171d247d0ba44217d292 +Ctrl.type = type:A +Output = 7b802a74d216a41f7708c597b9053223 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010015b3157b538e31a14797d981a6ef62814cd55fbea25ea88a16a5839484c7624d7befccc82d91e2ff2b6f402daba861b77c1016bab9e3d58bab985563f32d663407f9f3582856ee0aa3a56680c221ecddc48af6de71fd34626b716d9efe530df470c0b7b1e4131861bc4f12e44de7f1d1910047465c0eb95f7232d6e71d639d75ac58e6848e560210a5dc2e6996c1d96f9f688fb86558ba96422d1a69cf795ea67e66d534bef2160f4e9d4351c9c2faaad7c2ad2476ace5556c9b3c4c2d3bdac82bfb54d2e54eb6ed398b813c5928aa560b442c585a038571c4db98a44d8c8cdb02fa731b400adb859b591c1846900791d791927363d745042a38597ef883cbda +Ctrl.hexxcghash = hexxcghash:651bdee255eef5fb47c7733df03d4346bc335cf1de2bfbd453f4ff18c775de475719a6ec4c5c55badadda4822e3fbf5ae3c0e6e9608a893fea68bfcc0af86d73 +Ctrl.hexsession_id = hexsession_id:ee603130d0bdec24952cd3392272dbd7a536c2e76c794cc2f678ca9dd789670453e6bcd330dbf4e93930ec0b3e506e4c629b3d156ab1171d247d0ba44217d292 +Ctrl.type = type:B +Output = 355223971bed70b804d191b64cde39e6 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010015b3157b538e31a14797d981a6ef62814cd55fbea25ea88a16a5839484c7624d7befccc82d91e2ff2b6f402daba861b77c1016bab9e3d58bab985563f32d663407f9f3582856ee0aa3a56680c221ecddc48af6de71fd34626b716d9efe530df470c0b7b1e4131861bc4f12e44de7f1d1910047465c0eb95f7232d6e71d639d75ac58e6848e560210a5dc2e6996c1d96f9f688fb86558ba96422d1a69cf795ea67e66d534bef2160f4e9d4351c9c2faaad7c2ad2476ace5556c9b3c4c2d3bdac82bfb54d2e54eb6ed398b813c5928aa560b442c585a038571c4db98a44d8c8cdb02fa731b400adb859b591c1846900791d791927363d745042a38597ef883cbda +Ctrl.hexxcghash = hexxcghash:651bdee255eef5fb47c7733df03d4346bc335cf1de2bfbd453f4ff18c775de475719a6ec4c5c55badadda4822e3fbf5ae3c0e6e9608a893fea68bfcc0af86d73 +Ctrl.hexsession_id = hexsession_id:ee603130d0bdec24952cd3392272dbd7a536c2e76c794cc2f678ca9dd789670453e6bcd330dbf4e93930ec0b3e506e4c629b3d156ab1171d247d0ba44217d292 +Ctrl.type = type:C +Output = 925f2b036ac2682e20f022377499c3e1 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010015b3157b538e31a14797d981a6ef62814cd55fbea25ea88a16a5839484c7624d7befccc82d91e2ff2b6f402daba861b77c1016bab9e3d58bab985563f32d663407f9f3582856ee0aa3a56680c221ecddc48af6de71fd34626b716d9efe530df470c0b7b1e4131861bc4f12e44de7f1d1910047465c0eb95f7232d6e71d639d75ac58e6848e560210a5dc2e6996c1d96f9f688fb86558ba96422d1a69cf795ea67e66d534bef2160f4e9d4351c9c2faaad7c2ad2476ace5556c9b3c4c2d3bdac82bfb54d2e54eb6ed398b813c5928aa560b442c585a038571c4db98a44d8c8cdb02fa731b400adb859b591c1846900791d791927363d745042a38597ef883cbda +Ctrl.hexxcghash = hexxcghash:651bdee255eef5fb47c7733df03d4346bc335cf1de2bfbd453f4ff18c775de475719a6ec4c5c55badadda4822e3fbf5ae3c0e6e9608a893fea68bfcc0af86d73 +Ctrl.hexsession_id = hexsession_id:ee603130d0bdec24952cd3392272dbd7a536c2e76c794cc2f678ca9dd789670453e6bcd330dbf4e93930ec0b3e506e4c629b3d156ab1171d247d0ba44217d292 +Ctrl.type = type:D +Output = 37ae2bbbb1603c07d5274fc8f57126dc + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010015b3157b538e31a14797d981a6ef62814cd55fbea25ea88a16a5839484c7624d7befccc82d91e2ff2b6f402daba861b77c1016bab9e3d58bab985563f32d663407f9f3582856ee0aa3a56680c221ecddc48af6de71fd34626b716d9efe530df470c0b7b1e4131861bc4f12e44de7f1d1910047465c0eb95f7232d6e71d639d75ac58e6848e560210a5dc2e6996c1d96f9f688fb86558ba96422d1a69cf795ea67e66d534bef2160f4e9d4351c9c2faaad7c2ad2476ace5556c9b3c4c2d3bdac82bfb54d2e54eb6ed398b813c5928aa560b442c585a038571c4db98a44d8c8cdb02fa731b400adb859b591c1846900791d791927363d745042a38597ef883cbda +Ctrl.hexxcghash = hexxcghash:651bdee255eef5fb47c7733df03d4346bc335cf1de2bfbd453f4ff18c775de475719a6ec4c5c55badadda4822e3fbf5ae3c0e6e9608a893fea68bfcc0af86d73 +Ctrl.hexsession_id = hexsession_id:ee603130d0bdec24952cd3392272dbd7a536c2e76c794cc2f678ca9dd789670453e6bcd330dbf4e93930ec0b3e506e4c629b3d156ab1171d247d0ba44217d292 +Ctrl.type = type:E +Output = 8b36c7e175797bf7bbb079ac5d06e6f7f62fc5a957e0fefab7df565eb72ae0586dbebad978975aaa35846de667b44b7174315b2b932f0be538fba76b92531019 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010015b3157b538e31a14797d981a6ef62814cd55fbea25ea88a16a5839484c7624d7befccc82d91e2ff2b6f402daba861b77c1016bab9e3d58bab985563f32d663407f9f3582856ee0aa3a56680c221ecddc48af6de71fd34626b716d9efe530df470c0b7b1e4131861bc4f12e44de7f1d1910047465c0eb95f7232d6e71d639d75ac58e6848e560210a5dc2e6996c1d96f9f688fb86558ba96422d1a69cf795ea67e66d534bef2160f4e9d4351c9c2faaad7c2ad2476ace5556c9b3c4c2d3bdac82bfb54d2e54eb6ed398b813c5928aa560b442c585a038571c4db98a44d8c8cdb02fa731b400adb859b591c1846900791d791927363d745042a38597ef883cbda +Ctrl.hexxcghash = hexxcghash:651bdee255eef5fb47c7733df03d4346bc335cf1de2bfbd453f4ff18c775de475719a6ec4c5c55badadda4822e3fbf5ae3c0e6e9608a893fea68bfcc0af86d73 +Ctrl.hexsession_id = hexsession_id:ee603130d0bdec24952cd3392272dbd7a536c2e76c794cc2f678ca9dd789670453e6bcd330dbf4e93930ec0b3e506e4c629b3d156ab1171d247d0ba44217d292 +Ctrl.type = type:F +Output = 388ef310bce13188df3fd6285576041754a281548fcc6a212e0de564db661640320130e4df4a6ff31162edaa7ced5b7f05f3456f674ee8be0b03424142058795 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100b41c0bdf180d02ff459079925b32e54299128298da864be28b4c02532244b057219e3fa5fea09841351604ab713021622e6a6d0748f354fc3f29a9ac8bb64fdd984b725f00f56df3cf16d3bac786524a29105096f96f387422361bcc24774fd4d5b71bd6f757a8193fd691411b8e0aa14307e6ed1e97907925d93cee9ed266f387af66cd3da3e99d543e4baaf8a7fdb36c10869267767d80509717b5666e3fcdf8cca6486a1c18e3d3c15ba0c6773dcbe374d83de1c108a400998b25afa4d3b60917594a1120e449a57db1f3b2e048c3c64a408ed41bb32145364932f105788cd0b198522f0c59b1d774b1ac80cd76d18e06b53c3d599f625c72f38b15745478 +Ctrl.hexxcghash = hexxcghash:94ce7876dd7d98475ff8dd634b9b48e0e3416d1afd633637b49a49c525ee905ad8a17c12194746e210207c54628c453287a77515575a79ad40b270b5115030b8 +Ctrl.hexsession_id = hexsession_id:d2e7ea215f35381164a1382533f752eb21e6fa9f25d399b7914c0317998f2b7820f893557459f0773eca3dbafd8375021b955a8dfe7ad659dfe480e3107724f8 +Ctrl.type = type:A +Output = efeb5305eda69b0bd6999b4a27479667 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100b41c0bdf180d02ff459079925b32e54299128298da864be28b4c02532244b057219e3fa5fea09841351604ab713021622e6a6d0748f354fc3f29a9ac8bb64fdd984b725f00f56df3cf16d3bac786524a29105096f96f387422361bcc24774fd4d5b71bd6f757a8193fd691411b8e0aa14307e6ed1e97907925d93cee9ed266f387af66cd3da3e99d543e4baaf8a7fdb36c10869267767d80509717b5666e3fcdf8cca6486a1c18e3d3c15ba0c6773dcbe374d83de1c108a400998b25afa4d3b60917594a1120e449a57db1f3b2e048c3c64a408ed41bb32145364932f105788cd0b198522f0c59b1d774b1ac80cd76d18e06b53c3d599f625c72f38b15745478 +Ctrl.hexxcghash = hexxcghash:94ce7876dd7d98475ff8dd634b9b48e0e3416d1afd633637b49a49c525ee905ad8a17c12194746e210207c54628c453287a77515575a79ad40b270b5115030b8 +Ctrl.hexsession_id = hexsession_id:d2e7ea215f35381164a1382533f752eb21e6fa9f25d399b7914c0317998f2b7820f893557459f0773eca3dbafd8375021b955a8dfe7ad659dfe480e3107724f8 +Ctrl.type = type:B +Output = 806fca9189c02e7ec2a6459387b03506 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100b41c0bdf180d02ff459079925b32e54299128298da864be28b4c02532244b057219e3fa5fea09841351604ab713021622e6a6d0748f354fc3f29a9ac8bb64fdd984b725f00f56df3cf16d3bac786524a29105096f96f387422361bcc24774fd4d5b71bd6f757a8193fd691411b8e0aa14307e6ed1e97907925d93cee9ed266f387af66cd3da3e99d543e4baaf8a7fdb36c10869267767d80509717b5666e3fcdf8cca6486a1c18e3d3c15ba0c6773dcbe374d83de1c108a400998b25afa4d3b60917594a1120e449a57db1f3b2e048c3c64a408ed41bb32145364932f105788cd0b198522f0c59b1d774b1ac80cd76d18e06b53c3d599f625c72f38b15745478 +Ctrl.hexxcghash = hexxcghash:94ce7876dd7d98475ff8dd634b9b48e0e3416d1afd633637b49a49c525ee905ad8a17c12194746e210207c54628c453287a77515575a79ad40b270b5115030b8 +Ctrl.hexsession_id = hexsession_id:d2e7ea215f35381164a1382533f752eb21e6fa9f25d399b7914c0317998f2b7820f893557459f0773eca3dbafd8375021b955a8dfe7ad659dfe480e3107724f8 +Ctrl.type = type:C +Output = 9e542282d0db345a6ba20eba7c5de531 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100b41c0bdf180d02ff459079925b32e54299128298da864be28b4c02532244b057219e3fa5fea09841351604ab713021622e6a6d0748f354fc3f29a9ac8bb64fdd984b725f00f56df3cf16d3bac786524a29105096f96f387422361bcc24774fd4d5b71bd6f757a8193fd691411b8e0aa14307e6ed1e97907925d93cee9ed266f387af66cd3da3e99d543e4baaf8a7fdb36c10869267767d80509717b5666e3fcdf8cca6486a1c18e3d3c15ba0c6773dcbe374d83de1c108a400998b25afa4d3b60917594a1120e449a57db1f3b2e048c3c64a408ed41bb32145364932f105788cd0b198522f0c59b1d774b1ac80cd76d18e06b53c3d599f625c72f38b15745478 +Ctrl.hexxcghash = hexxcghash:94ce7876dd7d98475ff8dd634b9b48e0e3416d1afd633637b49a49c525ee905ad8a17c12194746e210207c54628c453287a77515575a79ad40b270b5115030b8 +Ctrl.hexsession_id = hexsession_id:d2e7ea215f35381164a1382533f752eb21e6fa9f25d399b7914c0317998f2b7820f893557459f0773eca3dbafd8375021b955a8dfe7ad659dfe480e3107724f8 +Ctrl.type = type:D +Output = 41e7962b57a67f75072f15a5ba405d15 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100b41c0bdf180d02ff459079925b32e54299128298da864be28b4c02532244b057219e3fa5fea09841351604ab713021622e6a6d0748f354fc3f29a9ac8bb64fdd984b725f00f56df3cf16d3bac786524a29105096f96f387422361bcc24774fd4d5b71bd6f757a8193fd691411b8e0aa14307e6ed1e97907925d93cee9ed266f387af66cd3da3e99d543e4baaf8a7fdb36c10869267767d80509717b5666e3fcdf8cca6486a1c18e3d3c15ba0c6773dcbe374d83de1c108a400998b25afa4d3b60917594a1120e449a57db1f3b2e048c3c64a408ed41bb32145364932f105788cd0b198522f0c59b1d774b1ac80cd76d18e06b53c3d599f625c72f38b15745478 +Ctrl.hexxcghash = hexxcghash:94ce7876dd7d98475ff8dd634b9b48e0e3416d1afd633637b49a49c525ee905ad8a17c12194746e210207c54628c453287a77515575a79ad40b270b5115030b8 +Ctrl.hexsession_id = hexsession_id:d2e7ea215f35381164a1382533f752eb21e6fa9f25d399b7914c0317998f2b7820f893557459f0773eca3dbafd8375021b955a8dfe7ad659dfe480e3107724f8 +Ctrl.type = type:E +Output = 7bf8f25fd155e41d1dc85cc814704dd8732275b3a53dc1b8c6b330c08f307b5c0da31606cb7eaa1b37b2721f4a1bf70a6885c30d17d7acd32fcc894768fe4106 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100b41c0bdf180d02ff459079925b32e54299128298da864be28b4c02532244b057219e3fa5fea09841351604ab713021622e6a6d0748f354fc3f29a9ac8bb64fdd984b725f00f56df3cf16d3bac786524a29105096f96f387422361bcc24774fd4d5b71bd6f757a8193fd691411b8e0aa14307e6ed1e97907925d93cee9ed266f387af66cd3da3e99d543e4baaf8a7fdb36c10869267767d80509717b5666e3fcdf8cca6486a1c18e3d3c15ba0c6773dcbe374d83de1c108a400998b25afa4d3b60917594a1120e449a57db1f3b2e048c3c64a408ed41bb32145364932f105788cd0b198522f0c59b1d774b1ac80cd76d18e06b53c3d599f625c72f38b15745478 +Ctrl.hexxcghash = hexxcghash:94ce7876dd7d98475ff8dd634b9b48e0e3416d1afd633637b49a49c525ee905ad8a17c12194746e210207c54628c453287a77515575a79ad40b270b5115030b8 +Ctrl.hexsession_id = hexsession_id:d2e7ea215f35381164a1382533f752eb21e6fa9f25d399b7914c0317998f2b7820f893557459f0773eca3dbafd8375021b955a8dfe7ad659dfe480e3107724f8 +Ctrl.type = type:F +Output = 66b8f8c1a38120c73cc55950455a69c426fda44b9c66c3becaf259dd57a620e5ed3a749a486d05eab52c289f489581cb655865d4388a81e79b06bd105e3ae858 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000001003ba71746e4622911dbcd76359dbd01a3958175cac500fac87146f4a2616782ac0328ea32046762f62080df8fe76ff112acbf4e4c7a36fa648ec60c50d4a0f7b27b67cdcd725ed2d51c3b5c438c45c8f46d953845a899e89378e981aa270bd6cc190a5ab53e9516f5c194f9b61ef782573b417702337b32776765e75d6efb371a3af98c1b0eaa90ee43a99e58d803bc645a65100371cda8316d51618e4ada4d9a46cd049673cbfcf6ce3ec66c964902eb9bd28514d1fce32ebf8ee2ae3c8e46f4bf18f153a6f1031cefc7e736d82105dbeb60db422b79f4c4f3f4838fee891341cc982e79917aefb82529d134648847de15cf3ba1d7b5000e74b78198d6a3efce +Ctrl.hexxcghash = hexxcghash:327a1cfc89837c90fb7141ad3a7df293af5c9e2fd482fb77f6769db8e91417377fe0a0a30c072f8276e824975afdc0f73e1a1cbeda86d5c70c2799912602ee78 +Ctrl.hexsession_id = hexsession_id:46282b8a6dea1654de89199972c414ee512f33ab832e7284547cfc345af6eea9fbafb75f4646789755078a174c98c5aa1d740af1cf40844ae680cdd80466086b +Ctrl.type = type:A +Output = 8f6ac18ff5300849be34602630bb4102 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000001003ba71746e4622911dbcd76359dbd01a3958175cac500fac87146f4a2616782ac0328ea32046762f62080df8fe76ff112acbf4e4c7a36fa648ec60c50d4a0f7b27b67cdcd725ed2d51c3b5c438c45c8f46d953845a899e89378e981aa270bd6cc190a5ab53e9516f5c194f9b61ef782573b417702337b32776765e75d6efb371a3af98c1b0eaa90ee43a99e58d803bc645a65100371cda8316d51618e4ada4d9a46cd049673cbfcf6ce3ec66c964902eb9bd28514d1fce32ebf8ee2ae3c8e46f4bf18f153a6f1031cefc7e736d82105dbeb60db422b79f4c4f3f4838fee891341cc982e79917aefb82529d134648847de15cf3ba1d7b5000e74b78198d6a3efce +Ctrl.hexxcghash = hexxcghash:327a1cfc89837c90fb7141ad3a7df293af5c9e2fd482fb77f6769db8e91417377fe0a0a30c072f8276e824975afdc0f73e1a1cbeda86d5c70c2799912602ee78 +Ctrl.hexsession_id = hexsession_id:46282b8a6dea1654de89199972c414ee512f33ab832e7284547cfc345af6eea9fbafb75f4646789755078a174c98c5aa1d740af1cf40844ae680cdd80466086b +Ctrl.type = type:B +Output = f2b45df2508656758529a1f4679839fd + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000001003ba71746e4622911dbcd76359dbd01a3958175cac500fac87146f4a2616782ac0328ea32046762f62080df8fe76ff112acbf4e4c7a36fa648ec60c50d4a0f7b27b67cdcd725ed2d51c3b5c438c45c8f46d953845a899e89378e981aa270bd6cc190a5ab53e9516f5c194f9b61ef782573b417702337b32776765e75d6efb371a3af98c1b0eaa90ee43a99e58d803bc645a65100371cda8316d51618e4ada4d9a46cd049673cbfcf6ce3ec66c964902eb9bd28514d1fce32ebf8ee2ae3c8e46f4bf18f153a6f1031cefc7e736d82105dbeb60db422b79f4c4f3f4838fee891341cc982e79917aefb82529d134648847de15cf3ba1d7b5000e74b78198d6a3efce +Ctrl.hexxcghash = hexxcghash:327a1cfc89837c90fb7141ad3a7df293af5c9e2fd482fb77f6769db8e91417377fe0a0a30c072f8276e824975afdc0f73e1a1cbeda86d5c70c2799912602ee78 +Ctrl.hexsession_id = hexsession_id:46282b8a6dea1654de89199972c414ee512f33ab832e7284547cfc345af6eea9fbafb75f4646789755078a174c98c5aa1d740af1cf40844ae680cdd80466086b +Ctrl.type = type:C +Output = 3356d58f61bcca506058e0990c9821f5 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000001003ba71746e4622911dbcd76359dbd01a3958175cac500fac87146f4a2616782ac0328ea32046762f62080df8fe76ff112acbf4e4c7a36fa648ec60c50d4a0f7b27b67cdcd725ed2d51c3b5c438c45c8f46d953845a899e89378e981aa270bd6cc190a5ab53e9516f5c194f9b61ef782573b417702337b32776765e75d6efb371a3af98c1b0eaa90ee43a99e58d803bc645a65100371cda8316d51618e4ada4d9a46cd049673cbfcf6ce3ec66c964902eb9bd28514d1fce32ebf8ee2ae3c8e46f4bf18f153a6f1031cefc7e736d82105dbeb60db422b79f4c4f3f4838fee891341cc982e79917aefb82529d134648847de15cf3ba1d7b5000e74b78198d6a3efce +Ctrl.hexxcghash = hexxcghash:327a1cfc89837c90fb7141ad3a7df293af5c9e2fd482fb77f6769db8e91417377fe0a0a30c072f8276e824975afdc0f73e1a1cbeda86d5c70c2799912602ee78 +Ctrl.hexsession_id = hexsession_id:46282b8a6dea1654de89199972c414ee512f33ab832e7284547cfc345af6eea9fbafb75f4646789755078a174c98c5aa1d740af1cf40844ae680cdd80466086b +Ctrl.type = type:D +Output = 78495438a5326cca5351a239545941c1 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000001003ba71746e4622911dbcd76359dbd01a3958175cac500fac87146f4a2616782ac0328ea32046762f62080df8fe76ff112acbf4e4c7a36fa648ec60c50d4a0f7b27b67cdcd725ed2d51c3b5c438c45c8f46d953845a899e89378e981aa270bd6cc190a5ab53e9516f5c194f9b61ef782573b417702337b32776765e75d6efb371a3af98c1b0eaa90ee43a99e58d803bc645a65100371cda8316d51618e4ada4d9a46cd049673cbfcf6ce3ec66c964902eb9bd28514d1fce32ebf8ee2ae3c8e46f4bf18f153a6f1031cefc7e736d82105dbeb60db422b79f4c4f3f4838fee891341cc982e79917aefb82529d134648847de15cf3ba1d7b5000e74b78198d6a3efce +Ctrl.hexxcghash = hexxcghash:327a1cfc89837c90fb7141ad3a7df293af5c9e2fd482fb77f6769db8e91417377fe0a0a30c072f8276e824975afdc0f73e1a1cbeda86d5c70c2799912602ee78 +Ctrl.hexsession_id = hexsession_id:46282b8a6dea1654de89199972c414ee512f33ab832e7284547cfc345af6eea9fbafb75f4646789755078a174c98c5aa1d740af1cf40844ae680cdd80466086b +Ctrl.type = type:E +Output = dcfc5d099f5040513f76b012ab62ee45d5d8271aec9cbbdd1e1f7e0806f363d21c2eca730f9489ee70fbc7490a1901587b1d418c0e4f429c8098cd793c6d285c + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:000001003ba71746e4622911dbcd76359dbd01a3958175cac500fac87146f4a2616782ac0328ea32046762f62080df8fe76ff112acbf4e4c7a36fa648ec60c50d4a0f7b27b67cdcd725ed2d51c3b5c438c45c8f46d953845a899e89378e981aa270bd6cc190a5ab53e9516f5c194f9b61ef782573b417702337b32776765e75d6efb371a3af98c1b0eaa90ee43a99e58d803bc645a65100371cda8316d51618e4ada4d9a46cd049673cbfcf6ce3ec66c964902eb9bd28514d1fce32ebf8ee2ae3c8e46f4bf18f153a6f1031cefc7e736d82105dbeb60db422b79f4c4f3f4838fee891341cc982e79917aefb82529d134648847de15cf3ba1d7b5000e74b78198d6a3efce +Ctrl.hexxcghash = hexxcghash:327a1cfc89837c90fb7141ad3a7df293af5c9e2fd482fb77f6769db8e91417377fe0a0a30c072f8276e824975afdc0f73e1a1cbeda86d5c70c2799912602ee78 +Ctrl.hexsession_id = hexsession_id:46282b8a6dea1654de89199972c414ee512f33ab832e7284547cfc345af6eea9fbafb75f4646789755078a174c98c5aa1d740af1cf40844ae680cdd80466086b +Ctrl.type = type:F +Output = a75817465c73517bd7884dcd230464583ae491ae5e39330873cd7a967188022cad63e712c7ec261abdb34c01bddd8989dfce8f5d8a8cdbdcc305429b3fd93c76 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100f3a28f9574691777f2a9e05a882295e5ae272a6af486e53a8574e0ce7633a5c6871a39e6ba3176a41ce3fe6c80aa8469df71401583987e34374586ec56268b37d42bc047cc898750379aa7ddc5549cc069fa10d29fca303e6063a2cb800322a84a63480d91606db0244d2dd456005bb4a4b33f91ddf33335ec4d4d519e430542e087d5b1e952b183a32b3f7b118c410c46dc44b7ad669e7d98b934e48830e61ddd2e6094e0d1fa39b9041b9ca9dc768af4da702f912b2e82738cf506479c68fa9a5f2a9153189cf83bd11a05a92428d7c7124094f684f7c848114dc272d8a308d7b65e47b1d3c2c70d5a63efbc191ff5f0359356f706ac703445778b2b43a8d6 +Ctrl.hexxcghash = hexxcghash:4f3aaea9ade34a07f46c11a4480461e2c523a740492b23b0bfa2a9e2e2c2ce542a09644154a4b3ab0e8b71ea950444a9954a156c0530a1436aa98951af7e1972 +Ctrl.hexsession_id = hexsession_id:c778cdc03ecc941ff7d37c41fe67dc84df375117abd62d099129f38d37375f3cde4e75a0160fb05edf392d1eac509d5a6796f635623794d81df9b4cf81021738 +Ctrl.type = type:A +Output = 4fa1b8c53d25f7c1adb4810c46b48ae7 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100f3a28f9574691777f2a9e05a882295e5ae272a6af486e53a8574e0ce7633a5c6871a39e6ba3176a41ce3fe6c80aa8469df71401583987e34374586ec56268b37d42bc047cc898750379aa7ddc5549cc069fa10d29fca303e6063a2cb800322a84a63480d91606db0244d2dd456005bb4a4b33f91ddf33335ec4d4d519e430542e087d5b1e952b183a32b3f7b118c410c46dc44b7ad669e7d98b934e48830e61ddd2e6094e0d1fa39b9041b9ca9dc768af4da702f912b2e82738cf506479c68fa9a5f2a9153189cf83bd11a05a92428d7c7124094f684f7c848114dc272d8a308d7b65e47b1d3c2c70d5a63efbc191ff5f0359356f706ac703445778b2b43a8d6 +Ctrl.hexxcghash = hexxcghash:4f3aaea9ade34a07f46c11a4480461e2c523a740492b23b0bfa2a9e2e2c2ce542a09644154a4b3ab0e8b71ea950444a9954a156c0530a1436aa98951af7e1972 +Ctrl.hexsession_id = hexsession_id:c778cdc03ecc941ff7d37c41fe67dc84df375117abd62d099129f38d37375f3cde4e75a0160fb05edf392d1eac509d5a6796f635623794d81df9b4cf81021738 +Ctrl.type = type:B +Output = 3c453d0f50b7f41826e74e5cce5b5996 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100f3a28f9574691777f2a9e05a882295e5ae272a6af486e53a8574e0ce7633a5c6871a39e6ba3176a41ce3fe6c80aa8469df71401583987e34374586ec56268b37d42bc047cc898750379aa7ddc5549cc069fa10d29fca303e6063a2cb800322a84a63480d91606db0244d2dd456005bb4a4b33f91ddf33335ec4d4d519e430542e087d5b1e952b183a32b3f7b118c410c46dc44b7ad669e7d98b934e48830e61ddd2e6094e0d1fa39b9041b9ca9dc768af4da702f912b2e82738cf506479c68fa9a5f2a9153189cf83bd11a05a92428d7c7124094f684f7c848114dc272d8a308d7b65e47b1d3c2c70d5a63efbc191ff5f0359356f706ac703445778b2b43a8d6 +Ctrl.hexxcghash = hexxcghash:4f3aaea9ade34a07f46c11a4480461e2c523a740492b23b0bfa2a9e2e2c2ce542a09644154a4b3ab0e8b71ea950444a9954a156c0530a1436aa98951af7e1972 +Ctrl.hexsession_id = hexsession_id:c778cdc03ecc941ff7d37c41fe67dc84df375117abd62d099129f38d37375f3cde4e75a0160fb05edf392d1eac509d5a6796f635623794d81df9b4cf81021738 +Ctrl.type = type:C +Output = 22f47a00a5de0f56b3e586357eeebe57 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100f3a28f9574691777f2a9e05a882295e5ae272a6af486e53a8574e0ce7633a5c6871a39e6ba3176a41ce3fe6c80aa8469df71401583987e34374586ec56268b37d42bc047cc898750379aa7ddc5549cc069fa10d29fca303e6063a2cb800322a84a63480d91606db0244d2dd456005bb4a4b33f91ddf33335ec4d4d519e430542e087d5b1e952b183a32b3f7b118c410c46dc44b7ad669e7d98b934e48830e61ddd2e6094e0d1fa39b9041b9ca9dc768af4da702f912b2e82738cf506479c68fa9a5f2a9153189cf83bd11a05a92428d7c7124094f684f7c848114dc272d8a308d7b65e47b1d3c2c70d5a63efbc191ff5f0359356f706ac703445778b2b43a8d6 +Ctrl.hexxcghash = hexxcghash:4f3aaea9ade34a07f46c11a4480461e2c523a740492b23b0bfa2a9e2e2c2ce542a09644154a4b3ab0e8b71ea950444a9954a156c0530a1436aa98951af7e1972 +Ctrl.hexsession_id = hexsession_id:c778cdc03ecc941ff7d37c41fe67dc84df375117abd62d099129f38d37375f3cde4e75a0160fb05edf392d1eac509d5a6796f635623794d81df9b4cf81021738 +Ctrl.type = type:D +Output = 8d32d1945e93c4982bd106567f8e481f + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100f3a28f9574691777f2a9e05a882295e5ae272a6af486e53a8574e0ce7633a5c6871a39e6ba3176a41ce3fe6c80aa8469df71401583987e34374586ec56268b37d42bc047cc898750379aa7ddc5549cc069fa10d29fca303e6063a2cb800322a84a63480d91606db0244d2dd456005bb4a4b33f91ddf33335ec4d4d519e430542e087d5b1e952b183a32b3f7b118c410c46dc44b7ad669e7d98b934e48830e61ddd2e6094e0d1fa39b9041b9ca9dc768af4da702f912b2e82738cf506479c68fa9a5f2a9153189cf83bd11a05a92428d7c7124094f684f7c848114dc272d8a308d7b65e47b1d3c2c70d5a63efbc191ff5f0359356f706ac703445778b2b43a8d6 +Ctrl.hexxcghash = hexxcghash:4f3aaea9ade34a07f46c11a4480461e2c523a740492b23b0bfa2a9e2e2c2ce542a09644154a4b3ab0e8b71ea950444a9954a156c0530a1436aa98951af7e1972 +Ctrl.hexsession_id = hexsession_id:c778cdc03ecc941ff7d37c41fe67dc84df375117abd62d099129f38d37375f3cde4e75a0160fb05edf392d1eac509d5a6796f635623794d81df9b4cf81021738 +Ctrl.type = type:E +Output = 9eefe581b1514160f81c94193d374d8f85879136e9ae494c487119b1974aac3e143948f656c1c1e837ff1368ef0d997cd3ca9f46c71056269eb8a1da8daf5678 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100f3a28f9574691777f2a9e05a882295e5ae272a6af486e53a8574e0ce7633a5c6871a39e6ba3176a41ce3fe6c80aa8469df71401583987e34374586ec56268b37d42bc047cc898750379aa7ddc5549cc069fa10d29fca303e6063a2cb800322a84a63480d91606db0244d2dd456005bb4a4b33f91ddf33335ec4d4d519e430542e087d5b1e952b183a32b3f7b118c410c46dc44b7ad669e7d98b934e48830e61ddd2e6094e0d1fa39b9041b9ca9dc768af4da702f912b2e82738cf506479c68fa9a5f2a9153189cf83bd11a05a92428d7c7124094f684f7c848114dc272d8a308d7b65e47b1d3c2c70d5a63efbc191ff5f0359356f706ac703445778b2b43a8d6 +Ctrl.hexxcghash = hexxcghash:4f3aaea9ade34a07f46c11a4480461e2c523a740492b23b0bfa2a9e2e2c2ce542a09644154a4b3ab0e8b71ea950444a9954a156c0530a1436aa98951af7e1972 +Ctrl.hexsession_id = hexsession_id:c778cdc03ecc941ff7d37c41fe67dc84df375117abd62d099129f38d37375f3cde4e75a0160fb05edf392d1eac509d5a6796f635623794d81df9b4cf81021738 +Ctrl.type = type:F +Output = 8dd76f59e6692ff642894ee1bb147f3e1490cac944af29de6b2b5abcc4ab9eb41d236e9cd2f40cf83935097f307a246d7b35005dd302bacfe7e4fed37d2f46e9 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010012c99d1e0542b3b71e287b1ea15e54a3197f95cfbf7f6a209ada41fce3a6faad9bc4d569b690223e5d668019c11204716bb96a858c36c853bd41b28c1505ddce9df22b31dbdaa014b07ec53a79cfeb5b540902669c7a283f3647c1a9f685b5027bfb18e827818a76c23fa6ad20760f228a4239a4d558240130b5cc389d2be41b806cafd24d1d425c26a61508c974d62aae6f6830459c79e7a9ff5610291661bf03528fbafe47cf4c2e51f4856749ef543eb7cd8f72e84a4075fa7df9ad12565e5b3810c6d6292ff878ee8499611688989f0a04f4dc7275e01c0444a0321f0a0327fbe8a55689307b1bfd66d5d27ade78df5c1dfcef8868ebbe339d7efdae1973 +Ctrl.hexxcghash = hexxcghash:7317f576ce95d5bed93d08c65eb814d037ecd42f09b2d514fad58335e8e8bec807b9cf74b9044f449581c792ebb08843f2b80da87d91625e20f25de91b4d5d23 +Ctrl.hexsession_id = hexsession_id:7d153fda85bd3488962bdf03b8d0f26cf61f737173587ac6ee3d6f601a00f6474f5401370ef04720c620ea2b9668ab72cb6c40dc96057fc4537e7a6b0e79e9c5 +Ctrl.type = type:A +Output = f335b3ab270d7e686c5e023b3a2da75b + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010012c99d1e0542b3b71e287b1ea15e54a3197f95cfbf7f6a209ada41fce3a6faad9bc4d569b690223e5d668019c11204716bb96a858c36c853bd41b28c1505ddce9df22b31dbdaa014b07ec53a79cfeb5b540902669c7a283f3647c1a9f685b5027bfb18e827818a76c23fa6ad20760f228a4239a4d558240130b5cc389d2be41b806cafd24d1d425c26a61508c974d62aae6f6830459c79e7a9ff5610291661bf03528fbafe47cf4c2e51f4856749ef543eb7cd8f72e84a4075fa7df9ad12565e5b3810c6d6292ff878ee8499611688989f0a04f4dc7275e01c0444a0321f0a0327fbe8a55689307b1bfd66d5d27ade78df5c1dfcef8868ebbe339d7efdae1973 +Ctrl.hexxcghash = hexxcghash:7317f576ce95d5bed93d08c65eb814d037ecd42f09b2d514fad58335e8e8bec807b9cf74b9044f449581c792ebb08843f2b80da87d91625e20f25de91b4d5d23 +Ctrl.hexsession_id = hexsession_id:7d153fda85bd3488962bdf03b8d0f26cf61f737173587ac6ee3d6f601a00f6474f5401370ef04720c620ea2b9668ab72cb6c40dc96057fc4537e7a6b0e79e9c5 +Ctrl.type = type:B +Output = 857c9245c67bad84b7377c424c5e7e7a + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010012c99d1e0542b3b71e287b1ea15e54a3197f95cfbf7f6a209ada41fce3a6faad9bc4d569b690223e5d668019c11204716bb96a858c36c853bd41b28c1505ddce9df22b31dbdaa014b07ec53a79cfeb5b540902669c7a283f3647c1a9f685b5027bfb18e827818a76c23fa6ad20760f228a4239a4d558240130b5cc389d2be41b806cafd24d1d425c26a61508c974d62aae6f6830459c79e7a9ff5610291661bf03528fbafe47cf4c2e51f4856749ef543eb7cd8f72e84a4075fa7df9ad12565e5b3810c6d6292ff878ee8499611688989f0a04f4dc7275e01c0444a0321f0a0327fbe8a55689307b1bfd66d5d27ade78df5c1dfcef8868ebbe339d7efdae1973 +Ctrl.hexxcghash = hexxcghash:7317f576ce95d5bed93d08c65eb814d037ecd42f09b2d514fad58335e8e8bec807b9cf74b9044f449581c792ebb08843f2b80da87d91625e20f25de91b4d5d23 +Ctrl.hexsession_id = hexsession_id:7d153fda85bd3488962bdf03b8d0f26cf61f737173587ac6ee3d6f601a00f6474f5401370ef04720c620ea2b9668ab72cb6c40dc96057fc4537e7a6b0e79e9c5 +Ctrl.type = type:C +Output = 1c44ef56440f5856bdfd951305fd81e4 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010012c99d1e0542b3b71e287b1ea15e54a3197f95cfbf7f6a209ada41fce3a6faad9bc4d569b690223e5d668019c11204716bb96a858c36c853bd41b28c1505ddce9df22b31dbdaa014b07ec53a79cfeb5b540902669c7a283f3647c1a9f685b5027bfb18e827818a76c23fa6ad20760f228a4239a4d558240130b5cc389d2be41b806cafd24d1d425c26a61508c974d62aae6f6830459c79e7a9ff5610291661bf03528fbafe47cf4c2e51f4856749ef543eb7cd8f72e84a4075fa7df9ad12565e5b3810c6d6292ff878ee8499611688989f0a04f4dc7275e01c0444a0321f0a0327fbe8a55689307b1bfd66d5d27ade78df5c1dfcef8868ebbe339d7efdae1973 +Ctrl.hexxcghash = hexxcghash:7317f576ce95d5bed93d08c65eb814d037ecd42f09b2d514fad58335e8e8bec807b9cf74b9044f449581c792ebb08843f2b80da87d91625e20f25de91b4d5d23 +Ctrl.hexsession_id = hexsession_id:7d153fda85bd3488962bdf03b8d0f26cf61f737173587ac6ee3d6f601a00f6474f5401370ef04720c620ea2b9668ab72cb6c40dc96057fc4537e7a6b0e79e9c5 +Ctrl.type = type:D +Output = 8d3496ac631bb3588abbb13d4ae2dc2d + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010012c99d1e0542b3b71e287b1ea15e54a3197f95cfbf7f6a209ada41fce3a6faad9bc4d569b690223e5d668019c11204716bb96a858c36c853bd41b28c1505ddce9df22b31dbdaa014b07ec53a79cfeb5b540902669c7a283f3647c1a9f685b5027bfb18e827818a76c23fa6ad20760f228a4239a4d558240130b5cc389d2be41b806cafd24d1d425c26a61508c974d62aae6f6830459c79e7a9ff5610291661bf03528fbafe47cf4c2e51f4856749ef543eb7cd8f72e84a4075fa7df9ad12565e5b3810c6d6292ff878ee8499611688989f0a04f4dc7275e01c0444a0321f0a0327fbe8a55689307b1bfd66d5d27ade78df5c1dfcef8868ebbe339d7efdae1973 +Ctrl.hexxcghash = hexxcghash:7317f576ce95d5bed93d08c65eb814d037ecd42f09b2d514fad58335e8e8bec807b9cf74b9044f449581c792ebb08843f2b80da87d91625e20f25de91b4d5d23 +Ctrl.hexsession_id = hexsession_id:7d153fda85bd3488962bdf03b8d0f26cf61f737173587ac6ee3d6f601a00f6474f5401370ef04720c620ea2b9668ab72cb6c40dc96057fc4537e7a6b0e79e9c5 +Ctrl.type = type:E +Output = ac7899494cfcebbdaa8ee7c343a0a458228a0a5e59730c928e9c8775487e57c3a5f34fdb72c1b3b57cc35e0356e4b7c6a56368e74c68a017538a5b484886ec81 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010012c99d1e0542b3b71e287b1ea15e54a3197f95cfbf7f6a209ada41fce3a6faad9bc4d569b690223e5d668019c11204716bb96a858c36c853bd41b28c1505ddce9df22b31dbdaa014b07ec53a79cfeb5b540902669c7a283f3647c1a9f685b5027bfb18e827818a76c23fa6ad20760f228a4239a4d558240130b5cc389d2be41b806cafd24d1d425c26a61508c974d62aae6f6830459c79e7a9ff5610291661bf03528fbafe47cf4c2e51f4856749ef543eb7cd8f72e84a4075fa7df9ad12565e5b3810c6d6292ff878ee8499611688989f0a04f4dc7275e01c0444a0321f0a0327fbe8a55689307b1bfd66d5d27ade78df5c1dfcef8868ebbe339d7efdae1973 +Ctrl.hexxcghash = hexxcghash:7317f576ce95d5bed93d08c65eb814d037ecd42f09b2d514fad58335e8e8bec807b9cf74b9044f449581c792ebb08843f2b80da87d91625e20f25de91b4d5d23 +Ctrl.hexsession_id = hexsession_id:7d153fda85bd3488962bdf03b8d0f26cf61f737173587ac6ee3d6f601a00f6474f5401370ef04720c620ea2b9668ab72cb6c40dc96057fc4537e7a6b0e79e9c5 +Ctrl.type = type:F +Output = d32d849b488594d0b8efce91604296393b2240121f2ed51fb7c0bb5b371c33775d184ffaf3028306bc8040b21887f6885e5916ae158ef74a3ba09a1f30654f1a + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100c6c401e7a417025fce8ca5d5e654de6cac8eb1bf24fffa1eefaba828f425b5df93323ad62565d9e74c0b45619c3e97a8e006a9b28a42e96e13ea2f3807319ac587850731f64c86a3a9acd4aaa04e8a586833faeb902f95177d27e89ce25307365b22b7bf444c8e72ef2bb0fce86fe326a90b787948085fd101f04a7311ed6cf65d5073a6a29c7d99fe9fa0b915fac1d9bb6b95143ca8936e10e6e319201112ba52823dbaad935972842361394999e5a67356076e9f0b528d62325181f80d66e9b3288ba7482458c737806f474867036a234201253a91a6246c8c2876d210d2579951dd12cbc153dcec403156739be9c7d291e4904f079a5a71c01b9a84481800 +Ctrl.hexxcghash = hexxcghash:b060195095692352bde81e90c1b648ec46d57476892e79489d42cb8e0da2027ec41fd2e62da8e8e2a9e1ebcb8eecfaadef75e6714008ed6a2cbdef6c321bbaaa +Ctrl.hexsession_id = hexsession_id:5c910a53cafca6f8c0d97c4748f67aecd9a54c8ba96bf33327565f6f68ae0a2e7a62733a9051364ff9f68bdb416176522a0e5a2f28fe27a3f5ec402b3d99da13 +Ctrl.type = type:A +Output = 5aa8ed531557a1dc934ed667029e062f + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100c6c401e7a417025fce8ca5d5e654de6cac8eb1bf24fffa1eefaba828f425b5df93323ad62565d9e74c0b45619c3e97a8e006a9b28a42e96e13ea2f3807319ac587850731f64c86a3a9acd4aaa04e8a586833faeb902f95177d27e89ce25307365b22b7bf444c8e72ef2bb0fce86fe326a90b787948085fd101f04a7311ed6cf65d5073a6a29c7d99fe9fa0b915fac1d9bb6b95143ca8936e10e6e319201112ba52823dbaad935972842361394999e5a67356076e9f0b528d62325181f80d66e9b3288ba7482458c737806f474867036a234201253a91a6246c8c2876d210d2579951dd12cbc153dcec403156739be9c7d291e4904f079a5a71c01b9a84481800 +Ctrl.hexxcghash = hexxcghash:b060195095692352bde81e90c1b648ec46d57476892e79489d42cb8e0da2027ec41fd2e62da8e8e2a9e1ebcb8eecfaadef75e6714008ed6a2cbdef6c321bbaaa +Ctrl.hexsession_id = hexsession_id:5c910a53cafca6f8c0d97c4748f67aecd9a54c8ba96bf33327565f6f68ae0a2e7a62733a9051364ff9f68bdb416176522a0e5a2f28fe27a3f5ec402b3d99da13 +Ctrl.type = type:B +Output = 11a810c69785949d5a0ef6eeff960fb4 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100c6c401e7a417025fce8ca5d5e654de6cac8eb1bf24fffa1eefaba828f425b5df93323ad62565d9e74c0b45619c3e97a8e006a9b28a42e96e13ea2f3807319ac587850731f64c86a3a9acd4aaa04e8a586833faeb902f95177d27e89ce25307365b22b7bf444c8e72ef2bb0fce86fe326a90b787948085fd101f04a7311ed6cf65d5073a6a29c7d99fe9fa0b915fac1d9bb6b95143ca8936e10e6e319201112ba52823dbaad935972842361394999e5a67356076e9f0b528d62325181f80d66e9b3288ba7482458c737806f474867036a234201253a91a6246c8c2876d210d2579951dd12cbc153dcec403156739be9c7d291e4904f079a5a71c01b9a84481800 +Ctrl.hexxcghash = hexxcghash:b060195095692352bde81e90c1b648ec46d57476892e79489d42cb8e0da2027ec41fd2e62da8e8e2a9e1ebcb8eecfaadef75e6714008ed6a2cbdef6c321bbaaa +Ctrl.hexsession_id = hexsession_id:5c910a53cafca6f8c0d97c4748f67aecd9a54c8ba96bf33327565f6f68ae0a2e7a62733a9051364ff9f68bdb416176522a0e5a2f28fe27a3f5ec402b3d99da13 +Ctrl.type = type:C +Output = 54e9402e4f85b08c271b2a9f15d56c75 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100c6c401e7a417025fce8ca5d5e654de6cac8eb1bf24fffa1eefaba828f425b5df93323ad62565d9e74c0b45619c3e97a8e006a9b28a42e96e13ea2f3807319ac587850731f64c86a3a9acd4aaa04e8a586833faeb902f95177d27e89ce25307365b22b7bf444c8e72ef2bb0fce86fe326a90b787948085fd101f04a7311ed6cf65d5073a6a29c7d99fe9fa0b915fac1d9bb6b95143ca8936e10e6e319201112ba52823dbaad935972842361394999e5a67356076e9f0b528d62325181f80d66e9b3288ba7482458c737806f474867036a234201253a91a6246c8c2876d210d2579951dd12cbc153dcec403156739be9c7d291e4904f079a5a71c01b9a84481800 +Ctrl.hexxcghash = hexxcghash:b060195095692352bde81e90c1b648ec46d57476892e79489d42cb8e0da2027ec41fd2e62da8e8e2a9e1ebcb8eecfaadef75e6714008ed6a2cbdef6c321bbaaa +Ctrl.hexsession_id = hexsession_id:5c910a53cafca6f8c0d97c4748f67aecd9a54c8ba96bf33327565f6f68ae0a2e7a62733a9051364ff9f68bdb416176522a0e5a2f28fe27a3f5ec402b3d99da13 +Ctrl.type = type:D +Output = 838209e0ebe7626cf6482f25c7774bfd + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100c6c401e7a417025fce8ca5d5e654de6cac8eb1bf24fffa1eefaba828f425b5df93323ad62565d9e74c0b45619c3e97a8e006a9b28a42e96e13ea2f3807319ac587850731f64c86a3a9acd4aaa04e8a586833faeb902f95177d27e89ce25307365b22b7bf444c8e72ef2bb0fce86fe326a90b787948085fd101f04a7311ed6cf65d5073a6a29c7d99fe9fa0b915fac1d9bb6b95143ca8936e10e6e319201112ba52823dbaad935972842361394999e5a67356076e9f0b528d62325181f80d66e9b3288ba7482458c737806f474867036a234201253a91a6246c8c2876d210d2579951dd12cbc153dcec403156739be9c7d291e4904f079a5a71c01b9a84481800 +Ctrl.hexxcghash = hexxcghash:b060195095692352bde81e90c1b648ec46d57476892e79489d42cb8e0da2027ec41fd2e62da8e8e2a9e1ebcb8eecfaadef75e6714008ed6a2cbdef6c321bbaaa +Ctrl.hexsession_id = hexsession_id:5c910a53cafca6f8c0d97c4748f67aecd9a54c8ba96bf33327565f6f68ae0a2e7a62733a9051364ff9f68bdb416176522a0e5a2f28fe27a3f5ec402b3d99da13 +Ctrl.type = type:E +Output = bc62048ddb762ac50336ae0e91a402cc78e73472fe180756a4686299967d2904318b8ad1b8dc622edd75e9ff0e74f7fcb8a1f8acb86e2567a5167084c648c7ef + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100c6c401e7a417025fce8ca5d5e654de6cac8eb1bf24fffa1eefaba828f425b5df93323ad62565d9e74c0b45619c3e97a8e006a9b28a42e96e13ea2f3807319ac587850731f64c86a3a9acd4aaa04e8a586833faeb902f95177d27e89ce25307365b22b7bf444c8e72ef2bb0fce86fe326a90b787948085fd101f04a7311ed6cf65d5073a6a29c7d99fe9fa0b915fac1d9bb6b95143ca8936e10e6e319201112ba52823dbaad935972842361394999e5a67356076e9f0b528d62325181f80d66e9b3288ba7482458c737806f474867036a234201253a91a6246c8c2876d210d2579951dd12cbc153dcec403156739be9c7d291e4904f079a5a71c01b9a84481800 +Ctrl.hexxcghash = hexxcghash:b060195095692352bde81e90c1b648ec46d57476892e79489d42cb8e0da2027ec41fd2e62da8e8e2a9e1ebcb8eecfaadef75e6714008ed6a2cbdef6c321bbaaa +Ctrl.hexsession_id = hexsession_id:5c910a53cafca6f8c0d97c4748f67aecd9a54c8ba96bf33327565f6f68ae0a2e7a62733a9051364ff9f68bdb416176522a0e5a2f28fe27a3f5ec402b3d99da13 +Ctrl.type = type:F +Output = 4e9644a01a3fe6c3f4f5aceddb00e2584e277354aee6392a1a5aef05024d37fcf25ff46fdd8fe52e7d1dd9a96e77328aadf44b8fc92ac22a14f63d64ad0db621 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100a82ae4062baef678d20dd9cf1704cdc69e9e78eea5faa435e4dffec06976ff73bd1e2ebd206658a26fb85a0911e2034eede31e7df2d7b87aa9700cf301b6b38502ba4db2b9723505455a7da0c6e0cf374b063921179d1bc69508f660bbb26d05ab16a2325716dbd0a733809cac36660d9a73ff0f61e09f55d1ff0652474130be7fcd2d37ebd1203960d788a1307fae48ec4e1042ab85f037a01bfd17f15725ee929d6e6246bbda00fe7105461ee873b0190c2f44692845e464949f909df46309a8eb72037278f792c87249897a0564d290bec1e09b2c9d3ad3011710fc4dcfabfa435611794dc7d1507b657229a2aab65ce2e789305d5d24ed955e89d8eb4f7e +Ctrl.hexxcghash = hexxcghash:a6ef8e3102b16ce51b2a2fe17e8dc711a964c195ca4d597aabecce595187344ccb2ea37dc4cac0a77a47e7ea1b9055b1c9948e6e09793a9121f120b3bd07c5f2 +Ctrl.hexsession_id = hexsession_id:cc85cf95e29a5991306b21c1738de9a6612b8cb09f12b1738a4873c29f971e8d204aeb98bb7a7502cdab952eaaa6ec1e3a9655db3e5217afbff63ad588fbbf85 +Ctrl.type = type:A +Output = 77cb432c67bf0ae658aa4e34376d01b5 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100a82ae4062baef678d20dd9cf1704cdc69e9e78eea5faa435e4dffec06976ff73bd1e2ebd206658a26fb85a0911e2034eede31e7df2d7b87aa9700cf301b6b38502ba4db2b9723505455a7da0c6e0cf374b063921179d1bc69508f660bbb26d05ab16a2325716dbd0a733809cac36660d9a73ff0f61e09f55d1ff0652474130be7fcd2d37ebd1203960d788a1307fae48ec4e1042ab85f037a01bfd17f15725ee929d6e6246bbda00fe7105461ee873b0190c2f44692845e464949f909df46309a8eb72037278f792c87249897a0564d290bec1e09b2c9d3ad3011710fc4dcfabfa435611794dc7d1507b657229a2aab65ce2e789305d5d24ed955e89d8eb4f7e +Ctrl.hexxcghash = hexxcghash:a6ef8e3102b16ce51b2a2fe17e8dc711a964c195ca4d597aabecce595187344ccb2ea37dc4cac0a77a47e7ea1b9055b1c9948e6e09793a9121f120b3bd07c5f2 +Ctrl.hexsession_id = hexsession_id:cc85cf95e29a5991306b21c1738de9a6612b8cb09f12b1738a4873c29f971e8d204aeb98bb7a7502cdab952eaaa6ec1e3a9655db3e5217afbff63ad588fbbf85 +Ctrl.type = type:B +Output = f55c74d112746001d8908edd347d7e69 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100a82ae4062baef678d20dd9cf1704cdc69e9e78eea5faa435e4dffec06976ff73bd1e2ebd206658a26fb85a0911e2034eede31e7df2d7b87aa9700cf301b6b38502ba4db2b9723505455a7da0c6e0cf374b063921179d1bc69508f660bbb26d05ab16a2325716dbd0a733809cac36660d9a73ff0f61e09f55d1ff0652474130be7fcd2d37ebd1203960d788a1307fae48ec4e1042ab85f037a01bfd17f15725ee929d6e6246bbda00fe7105461ee873b0190c2f44692845e464949f909df46309a8eb72037278f792c87249897a0564d290bec1e09b2c9d3ad3011710fc4dcfabfa435611794dc7d1507b657229a2aab65ce2e789305d5d24ed955e89d8eb4f7e +Ctrl.hexxcghash = hexxcghash:a6ef8e3102b16ce51b2a2fe17e8dc711a964c195ca4d597aabecce595187344ccb2ea37dc4cac0a77a47e7ea1b9055b1c9948e6e09793a9121f120b3bd07c5f2 +Ctrl.hexsession_id = hexsession_id:cc85cf95e29a5991306b21c1738de9a6612b8cb09f12b1738a4873c29f971e8d204aeb98bb7a7502cdab952eaaa6ec1e3a9655db3e5217afbff63ad588fbbf85 +Ctrl.type = type:C +Output = 34a48ab90890b385198ea6bf8c50c3f6 + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100a82ae4062baef678d20dd9cf1704cdc69e9e78eea5faa435e4dffec06976ff73bd1e2ebd206658a26fb85a0911e2034eede31e7df2d7b87aa9700cf301b6b38502ba4db2b9723505455a7da0c6e0cf374b063921179d1bc69508f660bbb26d05ab16a2325716dbd0a733809cac36660d9a73ff0f61e09f55d1ff0652474130be7fcd2d37ebd1203960d788a1307fae48ec4e1042ab85f037a01bfd17f15725ee929d6e6246bbda00fe7105461ee873b0190c2f44692845e464949f909df46309a8eb72037278f792c87249897a0564d290bec1e09b2c9d3ad3011710fc4dcfabfa435611794dc7d1507b657229a2aab65ce2e789305d5d24ed955e89d8eb4f7e +Ctrl.hexxcghash = hexxcghash:a6ef8e3102b16ce51b2a2fe17e8dc711a964c195ca4d597aabecce595187344ccb2ea37dc4cac0a77a47e7ea1b9055b1c9948e6e09793a9121f120b3bd07c5f2 +Ctrl.hexsession_id = hexsession_id:cc85cf95e29a5991306b21c1738de9a6612b8cb09f12b1738a4873c29f971e8d204aeb98bb7a7502cdab952eaaa6ec1e3a9655db3e5217afbff63ad588fbbf85 +Ctrl.type = type:D +Output = f2b6046d3439c50a9000a63909146abc + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100a82ae4062baef678d20dd9cf1704cdc69e9e78eea5faa435e4dffec06976ff73bd1e2ebd206658a26fb85a0911e2034eede31e7df2d7b87aa9700cf301b6b38502ba4db2b9723505455a7da0c6e0cf374b063921179d1bc69508f660bbb26d05ab16a2325716dbd0a733809cac36660d9a73ff0f61e09f55d1ff0652474130be7fcd2d37ebd1203960d788a1307fae48ec4e1042ab85f037a01bfd17f15725ee929d6e6246bbda00fe7105461ee873b0190c2f44692845e464949f909df46309a8eb72037278f792c87249897a0564d290bec1e09b2c9d3ad3011710fc4dcfabfa435611794dc7d1507b657229a2aab65ce2e789305d5d24ed955e89d8eb4f7e +Ctrl.hexxcghash = hexxcghash:a6ef8e3102b16ce51b2a2fe17e8dc711a964c195ca4d597aabecce595187344ccb2ea37dc4cac0a77a47e7ea1b9055b1c9948e6e09793a9121f120b3bd07c5f2 +Ctrl.hexsession_id = hexsession_id:cc85cf95e29a5991306b21c1738de9a6612b8cb09f12b1738a4873c29f971e8d204aeb98bb7a7502cdab952eaaa6ec1e3a9655db3e5217afbff63ad588fbbf85 +Ctrl.type = type:E +Output = 70357486ca57c93418c6705b731b054bc41be03289c25a5ed29a937732807ae10a3604486c53d1f2431411808d87bfbaa6b25971fa2e4ec3719b5d2622aed2ff + +KDF = SSHKDF +Ctrl.md = md:SHA512 +Ctrl.hexkey = hexkey:0000010100a82ae4062baef678d20dd9cf1704cdc69e9e78eea5faa435e4dffec06976ff73bd1e2ebd206658a26fb85a0911e2034eede31e7df2d7b87aa9700cf301b6b38502ba4db2b9723505455a7da0c6e0cf374b063921179d1bc69508f660bbb26d05ab16a2325716dbd0a733809cac36660d9a73ff0f61e09f55d1ff0652474130be7fcd2d37ebd1203960d788a1307fae48ec4e1042ab85f037a01bfd17f15725ee929d6e6246bbda00fe7105461ee873b0190c2f44692845e464949f909df46309a8eb72037278f792c87249897a0564d290bec1e09b2c9d3ad3011710fc4dcfabfa435611794dc7d1507b657229a2aab65ce2e789305d5d24ed955e89d8eb4f7e +Ctrl.hexxcghash = hexxcghash:a6ef8e3102b16ce51b2a2fe17e8dc711a964c195ca4d597aabecce595187344ccb2ea37dc4cac0a77a47e7ea1b9055b1c9948e6e09793a9121f120b3bd07c5f2 +Ctrl.hexsession_id = hexsession_id:cc85cf95e29a5991306b21c1738de9a6612b8cb09f12b1738a4873c29f971e8d204aeb98bb7a7502cdab952eaaa6ec1e3a9655db3e5217afbff63ad588fbbf85 +Ctrl.type = type:F +Output = 4e6428f7a87455bdef6026cdf68a2f6d93d6cda5145d6bca60ee4eb2d6248b399f6568c65ec92cee8d9b0c7fd83053c91c5be72bf96b5904080624a348243899 + +Title = SSHKDF test error conditions + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexxcghash = hexxcghash:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.hexsession_id = hexsession_id:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.type = type:A +Output = FF +Result = KDF_DERIVE_ERROR + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008055bae931c07fd824bf10add1902b6fbc7c665347383498a686929ff5a25f8e40cb6645ea814fb1a5e0a11f852f86255641e5ed986e83a78bc8269480eac0b0dfd770cab92e7a28dd87ff452466d6ae867cead63b366b1c286e6c4811a9f14c27aea14c5171d49b78c06e3735d36e6a3be321dd5fc82308f34ee1cb17fba94a59 +Ctrl.hexsession_id = hexsession_id:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.type = type:A +Output = FF +Result = KDF_DERIVE_ERROR + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008055bae931c07fd824bf10add1902b6fbc7c665347383498a686929ff5a25f8e40cb6645ea814fb1a5e0a11f852f86255641e5ed986e83a78bc8269480eac0b0dfd770cab92e7a28dd87ff452466d6ae867cead63b366b1c286e6c4811a9f14c27aea14c5171d49b78c06e3735d36e6a3be321dd5fc82308f34ee1cb17fba94a59 +Ctrl.hexxcghash = hexxcghash:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.type = type:A +Output = FF +Result = KDF_DERIVE_ERROR + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008055bae931c07fd824bf10add1902b6fbc7c665347383498a686929ff5a25f8e40cb6645ea814fb1a5e0a11f852f86255641e5ed986e83a78bc8269480eac0b0dfd770cab92e7a28dd87ff452466d6ae867cead63b366b1c286e6c4811a9f14c27aea14c5171d49b78c06e3735d36e6a3be321dd5fc82308f34ee1cb17fba94a59 +Ctrl.hexxcghash = hexxcghash:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.hexsession_id = hexsession_id:a4ebd45934f56792b5112dcd75a1075fdc889245 +Output = FF +Result = KDF_DERIVE_ERROR + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008055bae931c07fd824bf10add1902b6fbc7c665347383498a686929ff5a25f8e40cb6645ea814fb1a5e0a11f852f86255641e5ed986e83a78bc8269480eac0b0dfd770cab92e7a28dd87ff452466d6ae867cead63b366b1c286e6c4811a9f14c27aea14c5171d49b78c06e3735d36e6a3be321dd5fc82308f34ee1cb17fba94a59 +Ctrl.hexxcghash = hexxcghash:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.hexsession_id = hexsession_id:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.type = type:X +Output = FF +Result = KDF_CTRL_ERROR + +KDF = SSHKDF +Ctrl.md = md:SHA1 +Ctrl.hexkey = hexkey:0000008055bae931c07fd824bf10add1902b6fbc7c665347383498a686929ff5a25f8e40cb6645ea814fb1a5e0a11f852f86255641e5ed986e83a78bc8269480eac0b0dfd770cab92e7a28dd87ff452466d6ae867cead63b366b1c286e6c4811a9f14c27aea14c5171d49b78c06e3735d36e6a3be321dd5fc82308f34ee1cb17fba94a59 +Ctrl.hexxcghash = hexxcghash:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.hexsession_id = hexsession_id:a4ebd45934f56792b5112dcd75a1075fdc889245 +Ctrl.type = type:A +Output = FF +Result = KDF_MISMATCH From matt at openssl.org Wed Feb 27 16:03:59 2019 From: matt at openssl.org (Matt Caswell) Date: Wed, 27 Feb 2019 16:03:59 +0000 Subject: [web] master update Message-ID: <1551283439.061976.30469.nullmailer@dev.openssl.org> The branch master has been updated via 419c4314952ac1ad9586bb9b767447242bdfca79 (commit) via 1700dfb97f7690b6656018b271cdddbc5c880f26 (commit) via 9d38ec2eceeee727e861507a0a71df35f080f981 (commit) via 19379975053b4f59b8a57fd6f9648c94589acffc (commit) via 5977b703ae5371458c39208dd5e3ba7257ee18f1 (commit) from 4b05bbb28879460b203a4c99ed0c70c12c63a265 (commit) - Log ----------------------------------------------------------------- commit 419c4314952ac1ad9586bb9b767447242bdfca79 Author: Matt Caswell Date: Mon Feb 25 16:20:13 2019 +0000 Update the release strategy modification date Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/82) commit 1700dfb97f7690b6656018b271cdddbc5c880f26 Author: Matt Caswell Date: Fri Sep 21 14:11:32 2018 +0100 Add a stability policy to the release strategy Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/82) commit 9d38ec2eceeee727e861507a0a71df35f080f981 Author: Richard Levitte Date: Sun Jan 13 00:48:43 2019 +0100 Generalise the descriptions of alpha, beta, and release criteria Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/82) commit 19379975053b4f59b8a57fd6f9648c94589acffc Author: Richard Levitte Date: Sun Jan 13 00:39:00 2019 +0100 Remove the 1.1.1 time table and add support information Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/82) commit 5977b703ae5371458c39208dd5e3ba7257ee18f1 Author: Richard Levitte Date: Sun Jan 13 00:31:36 2019 +0100 Release strategy: add text on the 3.0.0 versioning scheme Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/82) ----------------------------------------------------------------------- Summary of changes: policies/releasestrat.html | 181 ++++++++++++++++++++++++++++++--------------- 1 file changed, 122 insertions(+), 59 deletions(-) diff --git a/policies/releasestrat.html b/policies/releasestrat.html index 0bb80f5..b0d3686 100644 --- a/policies/releasestrat.html +++ b/policies/releasestrat.html @@ -13,34 +13,68 @@

Release Strategy

First issued 23rd December 2014
- Last modified 29th May 2018 + Last modified 25th February 2019

- As of release 1.0.0 the OpenSSL versioning scheme was improved - to better meet developers' and vendors' expectations. Letter - releases, such as 1.0.2a, exclusively contain bug and security - fixes and no new features. Minor releases that change the - last digit, e.g. 1.1.0 vs. 1.1.1, can and are likely to - contain new features, but in a way that does not break binary - compatibility. This means that an application compiled and - dynamically linked with 1.1.0 does not need to be recompiled - when the shared library is updated to 1.1.1. It should be - noted that some features are transparent to the application - such as the maximum negotiated TLS version and cipher suites, - performance improvements and so on. There is no need to - recompile applications to benefit from these features.

+ As of release 3.0.0, the OpenSSL versioning scheme is changing + to a more contemporary format: MAJOR.MINOR.PATCH +

+ +

+ With this format, API/ABI compatibility will be guaranteed + for the same MAJOR version number. Previously we guaranteed + API/ABI compatibility across the same MAJOR.MINOR combination. +

+ +
    +
  • MAJOR: API/ABI incompatible changes will increase this number
  • +
  • MINOR: API/ABI compatible feature releases will change this
  • +
  • PATCH: Bug fix releases will increment this number. We also + allow backporting of accessor functions in these releases.
  • +
+ +

+ This more closely aligns with the expectations of users who are + familiar with semantic versioning. However, we have not adopted + semantic versioning in the strict sense of its rules, because it + would mean changing our current LTS policies and practices. +

+ +

+ The current 1.1.1 and 1.0.2 versioning scheme remains unchanged: + +

+ As of release 1.0.0 the OpenSSL versioning scheme was improved + to better meet developers' and vendors' expectations. Letter + releases, such as 1.0.2a, exclusively contain bug and security + fixes and no new features. Releases that change the last digit, + e.g. 1.1.0 vs. 1.1.1, can and are likely to + contain new features, but in a way that does not break binary + compatibility. This means that an application compiled and + dynamically linked with 1.1.0 does not need to be recompiled + when the shared library is updated to 1.1.1. It should be + noted that some features are transparent to the application + such as the maximum negotiated TLS version and cipher suites, + performance improvements and so on. There is no need to + recompile applications to benefit from these features. +
+

+ +

With regards to current and future releases the OpenSSL project has adopted the following policy:

    -
  • Version 1.1.0 will be supported until one year after the release of 1.1.1
  • +
  • The next version of OpenSSL will be 3.0.0.
  • +
  • Version 1.1.1 will be supported until 2023-09-11 (LTS).
  • +
  • Version 1.1.0 will be supported until 2019-09-11.
  • Version 1.0.2 will be supported until 2019-12-31 (LTS).
  • -
  • Version 1.0.1 is no longer supported.
  • +
  • Version 1.0.1 is no longer supported.
  • Version 1.0.0 is no longer supported.
  • Version 0.9.8 is no longer supported.
@@ -55,65 +89,94 @@ fixes. Before that, bug and security fixes will be applied as appropriate.

-

The next version of OpenSSL will be 1.1.1 which will be an LTS release. - This is currently in development and has a primary focus of implementing - TLSv1.3. The RFC for TLSv1.3 has not yet been published by the IETF. - OpenSSL 1.1.1 will not have its final release until that has happened.

+
-

The draft release timetable for 1.1.1 is as follows. This may be - amended at any time as the need arises.

- -
    -
  • 13th February 2018, alpha release 1 (pre1)
  • -
  • 27th February 2018, alpha release 2 (pre2)
  • -
  • 20th March 2018, beta release 1 (pre3) -
      -
    • OpenSSL_1_1_1-stable created (feature freeze)
    • -
    • master becomes basis for 1.1.2 or 1.2.0 (TBD)
    • -
    -
  • 3rd April 2018, beta release 2 (pre4)
  • -
  • 17th April 2018, beta release 3 (pre5)
  • -
  • 1st May 2018, beta release 4 (pre6)
  • -
  • 29th May 2018, beta release 5 (pre7)
  • -
  • 19th June 2018, beta release 6 (pre8)
  • -
  • Release readiness check following pre8 release (new release - cycles added if required)
  • -
+

+ Before a major release, we make a number of pre-releases, labeled + alpha and beta. +

-

An alpha release means:

+

An alpha release means:

  • Not (necessarily) feature complete
  • Not necessarily all new APIs in place yet
-

A beta release means:

+

A beta release means:

    -
  • Feature complete/Feature freeze (but may include a non-final implementation of the TLSv1.3 specification)
  • +
  • Feature complete/Feature freeze
  • Bug fixes only
-

We have defined the following release criteria for 1.1.1:

+

+ For any major or minor release, we have defined the following + release criteria: +

+
    -
  • All open github issues/PRs older than 2 weeks at the time of release - to be assessed for relevance to 1.1.1. Any flagged with the 1.1.1 - milestone to be closed (see below)
  • -
  • Clean builds in Travis and Appveyor for two days
  • -
  • run-checker.sh to be showing as clean 2 days before release
  • -
  • No open Coverity issues (not flagged as "False Positive" or "Ignore")
  • -
  • TLSv1.3 RFC published (with at least one beta release after the publicaction)
  • +
  • + All open github issues/PRs older than 2 weeks at the time of + release need to be assessed for relevance to the version being + released. Any flagged with the a milestone for the version + to be released must be closed (see below). +
  • +
  • + Clean builds in Travis and Appveyor for two days. +
  • +
  • + run-checker.sh succeeds on 2 consecutive days before release. +
  • +
  • + No open Coverity issues (not flagged as "False Positive" or + "Ignore"). +
-

Valid reasons for closing an issue/PR with a 1.1.1 milestone might be:

+

+ Valid reasons for closing an issue/PR with a milestone for the + version might be: +

+
    -
  • We have just now or sometime in the past fixed the issue
  • -
  • Unable to reproduce (following discussion with original reporter if - possible)
  • -
  • Working as intended
  • -
  • Deliberate decision not to fix until a later release (this wouldn't - actually close the issue/PR but change the milestone instead)
  • -
  • Not enough information and unable to contact reporter
  • -
  • etc
  • +
  • + We have just now or sometime in the past fixed the issue +
  • +
  • + Unable to reproduce (following discussion with original reporter + if possible) +
  • +
  • + Working as intended +
  • +
  • + Deliberate decision not to fix this issue until a later release (this + wouldn't actually close the issue/PR but change the milestone + instead) +
  • +
  • + Not enough information and unable to contact reporter +
+ +
+ +

No API or ABI breaking changes are allowed in a minor or patch release. + The following stability rules apply to all changes made to code + targeted for a major release from version 3.0.0 or later:

+
    +
  • No existing public interface can be modified except where changes + are unlikely to break source compatibility or where structures are made + opaque. +
  • No existing public interface can be removed until its replacement + has been in place in an LTS stable release. The original interface must + also have been documented as deprecated for at least 5 years. A public + interface is any function, structure or macro declared in a public + header file.
  • +
  • When structures are made opaque, any newly required accessor + macros or functions are added in a feature release of the extant LTS + release and all supported intermediate successor releases.
  • +
+
You are here: Home From levitte at openssl.org Wed Feb 27 17:37:32 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 27 Feb 2019 17:37:32 +0000 Subject: [openssl] master update Message-ID: <1551289052.075392.15344.nullmailer@dev.openssl.org> The branch master has been updated via 4ca00f934f0b86dc1112c360f4b2ce3bd7ab8c93 (commit) via 7753be74a3c90e21d0d29d6131d9e751476f81ec (commit) from 8d76481b189b7195ef932e0fb8f0e23ab0120771 (commit) - Log ----------------------------------------------------------------- commit 4ca00f934f0b86dc1112c360f4b2ce3bd7ab8c93 Author: Richard Levitte Date: Tue Feb 19 12:10:14 2019 +0100 OpenSSL::Util::Pod: allow slashes in names The names in the NAME section may describe headers, which contain a slash for OpenSSL headers. We deal with that by converting slashes to dashes for the file names. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8286) commit 7753be74a3c90e21d0d29d6131d9e751476f81ec Author: Richard Levitte Date: Sun Jan 20 13:23:30 2019 +0100 Replumbing: Add include/openssl/core.h, initially with core types Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8286) ----------------------------------------------------------------------- Summary of changes: doc/man3/OSSL_PARAM.pod | 302 ++++++++++++++++++++++++++++++++++++++++++ doc/man7/openssl-core.h.pod | 96 ++++++++++++++ include/openssl/core.h | 143 ++++++++++++++++++++ include/openssl/ossl_typ.h | 5 + util/perl/OpenSSL/Util/Pod.pm | 2 +- util/private.num | 1 + 6 files changed, 548 insertions(+), 1 deletion(-) create mode 100644 doc/man3/OSSL_PARAM.pod create mode 100644 doc/man7/openssl-core.h.pod create mode 100644 include/openssl/core.h diff --git a/doc/man3/OSSL_PARAM.pod b/doc/man3/OSSL_PARAM.pod new file mode 100644 index 0000000..9d47486 --- /dev/null +++ b/doc/man3/OSSL_PARAM.pod @@ -0,0 +1,302 @@ +=pod + +=head1 NAME + +OSSL_PARAM - a structure to pass or request object parameters + +=head1 SYNOPSIS + + #include + + typedef struct ossl_param_st OSSL_PARAM; + struct ossl_param_st { + const char *key; /* the name of the parameter */ + unsigned char data_type; /* declare what kind of content is in buffer */ + void *buffer; /* value being passed in or out */ + size_t buffer_size; /* buffer size */ + size_t *return_size; /* OPTIONAL: address to content size */ + }; + +=head1 DESCRIPTION + +C is a type that allows passing arbitrary data for some +object between two parties that have no or very little shared +knowledge about their respective internal structures for that object. + +A typical usage example could be an application that wants to set some +parameters for an object, or wants to find out some parameters of an +object. + +Arrays of this type can be used for two purposes: + +=over 4 + +=item * + +Setting parameters for some object. +The caller sets up the C array and calls some function +(the I) that has intimate knowledge about the object that can +take the data from the C array and assign them in a +suitable form for the internal structure of the object. + +=item * + +Request parameters of some object. +The caller (the I) sets up the C array and +calls some function (the I) that has intimate knowledge +about the object, which can take the internal data of the object and +copy (possibly convert) that to the buffers prepared by the +I. + +=back + +=head2 C fields + +=over 4 + +=item C + +The identity of the parameter in the form of a string. + +=item C + +=for comment It's still debated if this field should be present, or if +the type should always be implied by how it's used. +Either way, these data types will have to be passed together with the +names as an array of OSSL_ITEM, for discovery purposes. + +The C is a value that describes the type and organization of +the data. +See L below for a description of the types. + +=item C + +=item C + +C is a pointer to the memory where the parameter data is (when +setting parameters) or shall (when requesting parameters) be stored, +and C is its size in bytes. +The organization of the data depends on the parameter type and flag. + +=item C + +When an array of C is used to request data, the +I must set this field to indicate the actual size of the +parameter data. +In case the C is too small for the data, the I +must still set this field to indicate the minimum buffer size +required. + +=back + +B + +The key names and associated types are defined by the entity that +offers these parameters, i.e. names for parameters provided by the +OpenSSL libraries are defined by the libraries, and names for +parameters provided by providers are defined by those providers, +except for the pointer form of strings (see data type descriptions +below). +Entities that want to set or request parameters need to know what +those keys are and of what type, any functionality between those two +entities should remain oblivious and just pass the C array +along. + +=head2 Supported types + +The C field can be one of the following types: + +=over 4 + +=item C + +=item C + +The parameter data is an integer (signed or unsigned) of arbitrary +length, organized in native form, i.e. most significant byte first on +Big-Endian systems, and least significant byte first on Little-Endian +systems. + +=item C + +=for comment It's still debated if we need this or not. + +The parameter data is a floating point value in native form. + +=item C + +The parameter data is a printable string. + +=item C + +The parameter data is an arbitrary string of bytes. + +=back + +Additionally, this flag can be added to any type: + +=over 4 + +=item C + +With this flag, C doesn't point directly at the data, but at a +pointer that points at the data. + +This can be used to indicate that constant data is or will be passed, +and there is therefore no need to copy the data that is passed, just +the pointer to it. + +If an C with this flag set is used to set a parameter, +C must be set to the size of the data, not the size of +the pointer to the data. + +If this C is used in a parameter request, C +is not relevant. +However, the I will set C<*return_size> to the size of the +data (again, not the size of the pointer to the data). + +Note that the use of this flag is B and can only be safely +used for data that remains constant and in a constant location for a +long enough duration (such as the life-time of the entity that +offers these parameters). + +=back + +For convenience, these types are provided: + +=over 4 + +=item C + +=item C + +These are combinations of C as well as +C with C. + +=back + +=head1 NOTES + +Both when setting and requesting parameters, the functions that are +called will have to decide what is and what is not an error. +The recommended behaviour is: + +=over 4 + +=item * + +Keys that a I or I doesn't recognise should simply +be ignored. +That in itself isn't an error. + +=item * + +If the keys that a called I recognises form a consistent +enough set of data, that call should succeed. + +=item * + +A I must never change the fields of an C, it +may only change the contents of the buffers that C and +C point at. + +=item * + +If the data type for a key that it's associated with is incorrect, +the called function may return an error. + +The called function may also try to convert the data to a suitable +form (for example, it's plausible to pass a large number as an octet +string, so even though a given key is defined as an +C, is plausible to pass the value as an +C), but this is in no way mandatory. + +=item * + +If a I finds that some buffers are too small for the +requested data, it must set C<*return_size> for each such +C item to the required size, and eventually return an +error. + +=back + +=begin comment RETURN VALUES doesn't make sense for a manual that only +describes a type, but document checkers still want that section, and +to have more than just the section title. + +=head1 RETURN VALUES + +txt + +=end comment + +=head1 EXAMPLES + +A couple of examples to just show how C arrays could be +set up. + +=head3 Example 1 + +This example is for setting parameters on some object: + + #include + + const char *foo = "some string"; + size_t foo_l = strlen(foo) + 1; + const char bar[] = "some other string"; + const OSSL_PARAM set[] = { + { "foo", OSSL_PARAM_UTF8_STRING_PTR, &foo, foo_l, NULL }, + { "bar", OSSL_PARAM_UTF8_STRING, &bar, sizeof(bar), NULL }, + { NULL, 0, NULL, 0, NULL } + }; + +=head3 Example 2 + +This example is for requesting parameters on some object: + + const char *foo = NULL; + size_t foo_l; + char bar[1024]; + size_t bar_l; + const OSSL_PARAM request[] = { + { "foo", OSSL_PARAM_UTF8_STRING_PTR, &foo, 0 /*irrelevant*/, &foo_l }, + { "bar", OSSL_PARAM_UTF8_STRING, &bar, sizeof(bar), &bar_l }, + { NULL, 0, NULL, 0, NULL } + }; + +A I that receives this array (as C in this example) +could fill in the parameters like this: + + /* const OSSL_PARAM *params */ + + int i; + + for (i = 0; params[i].key != NULL; i++) { + if (strcmp(params[i].key, "foo") == 0) { + *(char **)params[i].buffer = "foo value"; + *params[i].return_size = 10; /* size of "foo value" */ + } else if (strcmp(params[i].key, "bar") == 0) { + memcpy(params[1].buffer, "bar value", 10); + *params[1].return_size = 10; /* size of "bar value" */ + } + /* Ignore stuff we don't know */ + } + +=head1 SEE ALSO + +L + +=head1 HISTORY + +C was added in OpenSSL 3.0. + +=head1 COPYRIGHT + +Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + +Licensed under the Apache License 2.0 (the "License"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file LICENSE in the source distribution or at +L. + +=cut diff --git a/doc/man7/openssl-core.h.pod b/doc/man7/openssl-core.h.pod new file mode 100644 index 0000000..7fd4dfb --- /dev/null +++ b/doc/man7/openssl-core.h.pod @@ -0,0 +1,96 @@ +=pod + +=head1 NAME + +openssl/core.h - OpenSSL Core types + +=head1 SYNOPSIS + + #include + +=head1 DESCRIPTION + +The header file defines a number of public types that +are used to communicate between the OpenSSL libraries and +implementation providers. +These types are designed to minimise the need for intimate knowledge +of internal structures between the OpenSSL libraries and the providers. + +The types are: + +=over 4 + +=item C + +This type is a tuple of function identity and function pointer. +Arrays of this type are passed between the OpenSSL libraries and the +providers to describe what functionality one side provides to the +other. +Arrays of this type must be terminated with a tuple having function +identity zero and function pointer C. + +The available function identities and corresponding function +signatures are defined by L. + +Any function identity not recognised by the recipient of this type +will be ignored. +This ensures that providers built with one OpenSSL version in mind +will work together with any other OpenSSL version that supports this +mechanism. + +=item C + +This type is a tuple of integer and pointer. +It's a generic type used as a generic descriptor, its exact meaning +being defined by how it's used. +Arrays of this type are passed between the OpenSSL libraries and the +providers, and must be terminated with a tuple where the integer is +zero and the pointer C. + +=item C + +This type is a tuple of an algorithm name (string), a property +definition (string) and a dispatch table (array of C). +Arrays of this type are passed on demand from the providers to the +OpenSSL libraries to describe what algorithms the providers provide +implementations of, and with what properties. +Arrays of this type must be terminated with a tuple having function +identity zero and function pointer C. + +The algorithm names and property definitions are defined by the +providers. + +=item C + +This type is a structure that allows passing arbitrary object data +between two parties that have no or very little shared knowledge about +their respective internal structures for that object. +It's normally passed in arrays, where the array is terminated with an +element where all fields are zero (for non-pointers) or C (for +pointers). + +These arrays can be used both to set parameters for some object, and +to request parameters. + +C is further described in L + +=back + +=head1 SEE ALSO + +L + +=head1 HISTORY + +The types described here were added in OpenSSL 3.0. + +=head1 COPYRIGHT + +Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + +Licensed under the Apache License 2.0 (the "License"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file LICENSE in the source distribution or at +L. + +=cut diff --git a/include/openssl/core.h b/include/openssl/core.h new file mode 100644 index 0000000..98b58be --- /dev/null +++ b/include/openssl/core.h @@ -0,0 +1,143 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CORE_H +# define OSSL_CORE_H + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * Base types + * ---------- + * + * These are the types that the OpenSSL core and providers have in common + * to communicate data between them. + */ + +/* + * Dispatch table element. function_id numbers are defined further down, + * see macros with '_FUNC' in their names. + * + * An array of these is always terminated by function_id == 0 + */ +struct ossl_dispatch_st { + int function_id; + void (*function)(void); +}; + +/* + * Other items, essentially an int<->pointer map element. + * + * We make this type distinct from OSSL_DISPATCH to ensure that dispatch + * tables remain tables with function pointers only. + * + * This is used whenever we need to pass things like a table of error reason + * codes <-> reason string maps, parameter name <-> parameter type maps, ... + * + * Usage determines which field works as key if any, rather than field order. + * + * An array of these is always terminated by id == 0 && ptr == NULL + */ +struct ossl_item_st { + unsigned int id; + void *ptr; +}; + +/* + * Type to tie together algorithm name, property definition string and + * the algorithm implementation in the form of a dispatch table. + * + * An array of these is always terminated by algorithm_name == NULL + */ +struct ossl_algorithm_st { + const char *algorithm_name; /* key */ + const char *property_definition; /* key */ + const OSSL_DISPATCH *implementation; +}; + +/* + * Type to pass object data in a uniform way, without exposing the object + * structure. + * + * An array of these is always terminated by key == NULL + */ +struct ossl_param_st { + const char *key; /* the name of the parameter */ + unsigned int data_type; /* declare what kind of content is in buffer */ + void *buffer; /* value being passed in or out */ + size_t buffer_size; /* buffer size */ + size_t *return_size; /* OPTIONAL: address to content size */ +}; + +/* Currently supported OSSL_PARAM data types */ +/* + * OSSL_PARAM_INTEGER and OSSL_PARAM_UNSIGNED_INTEGER + * are arbitrary length and therefore require an arbitrarily sized buffer, + * since they may be used to pass numbers larger than what is natively + * available. + * + * The number must be buffered in native form, i.e. MSB first on B_ENDIAN + * systems and LSB first on L_ENDIAN systems. This means that arbitrary + * native integers can be stored in the buffer, just make sure that the + * buffer size is correct and the buffer itself is properly aligned (for + * example by having the buffer field point at a C integer). + */ +# define OSSL_PARAM_INTEGER 1 +# define OSSL_PARAM_UNSIGNED_INTEGER 2 +/*- + * OSSL_PARAM_REAL + * is a C binary floating point values in native form and alignment. + */ +# define OSSL_PARAM_REAL 3 +/*- + * OSSL_PARAM_UTF8_STRING + * is a printable string. Is expteced to be printed as it is. + */ +# define OSSL_PARAM_UTF8_STRING 4 +/*- + * OSSL_PARAM_OCTET_STRING + * is a string of bytes with no further specification. Is expected to be + * printed as a hexdump. + */ +# define OSSL_PARAM_OCTET_STRING 5 + +/*- + * Pointer flag + * + * This flag can be added to any type to signify that the buffer + * pointer is set to point at a pointer to the data instead of + * pointing directly at the data. + * + * This is more relevant for parameter requests, where the responding + * function doesn't need to copy the data to the provided buffer, but + * sets the provided buffer to point at the actual data instead. + * + * WARNING! Using these is FRAGILE, as it assumes that the actual + * data and its location are constant. + */ +# define OSSL_PARAM_POINTER_FLAG 0x80000000UL + +/* + * Convenience pointer types for strings. + */ +# define OSSL_PARAM_UTF8_STRING_PTR \ + (OSSL_PARAM_UTF8_STRING|OSSL_PARAM_POINTER_FLAG) +# define OSSL_PARAM_OCTET_STRING_PTR \ + (OSSL_PARAM_OCTET_STRING|OSSL_PARAM_POINTER_FLAG) + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/include/openssl/ossl_typ.h b/include/openssl/ossl_typ.h index 44ddfaa..9b97e3d 100644 --- a/include/openssl/ossl_typ.h +++ b/include/openssl/ossl_typ.h @@ -181,6 +181,11 @@ typedef struct ossl_store_search_st OSSL_STORE_SEARCH; typedef struct openssl_ctx_st OPENSSL_CTX; +typedef struct ossl_dispatch_st OSSL_DISPATCH; +typedef struct ossl_item_st OSSL_ITEM; +typedef struct ossl_algorithm_st OSSL_ALGORITHM; +typedef struct ossl_param_st OSSL_PARAM; + #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && \ defined(INTMAX_MAX) && defined(UINTMAX_MAX) typedef intmax_t ossl_intmax_t; diff --git a/util/perl/OpenSSL/Util/Pod.pm b/util/perl/OpenSSL/Util/Pod.pm index 02ad0a8..16622c9 100644 --- a/util/perl/OpenSSL/Util/Pod.pm +++ b/util/perl/OpenSSL/Util/Pod.pm @@ -140,7 +140,7 @@ sub extract_pod_info { $podinfo{lastsecttext} =~ s| - .*$||; my @names = - map { s|\s+||g; $_ } + map { s|\s+||g; s|/|-|g; $_ } split(m|,|, $podinfo{lastsecttext}); return ( section => $podinfo{section}, names => [ @names ] ); diff --git a/util/private.num b/util/private.num index c4a2793..d8aba4d 100644 --- a/util/private.num +++ b/util/private.num @@ -32,6 +32,7 @@ GEN_SESSION_CB datatype OPENSSL_Applink external OPENSSL_CTX datatype NAMING_AUTHORITY datatype +OSSL_PARAM datatype OSSL_STORE_CTX datatype OSSL_STORE_INFO datatype OSSL_STORE_LOADER datatype From levitte at openssl.org Wed Feb 27 17:49:55 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 27 Feb 2019 17:49:55 +0000 Subject: [openssl] master update Message-ID: <1551289795.153066.25226.nullmailer@dev.openssl.org> The branch master has been updated via 8e7984e5783877c58cddc7b4e668401580ab4467 (commit) via 874f785988c17991051d36a0407a87b36c463a94 (commit) via e373c70a3e535b560f6b6bade914a724aa975c55 (commit) via 9f27d4bf32c0465270e1922365b21825a0f7a42a (commit) from 4ca00f934f0b86dc1112c360f4b2ce3bd7ab8c93 (commit) - Log ----------------------------------------------------------------- commit 8e7984e5783877c58cddc7b4e668401580ab4467 Author: Richard Levitte Date: Tue Feb 26 23:18:02 2019 +0100 Configure: support a few more "make variables" defaulting from env CFLAGS, CXXFLAGS, CPPFLAGS, LDFLAGS, and LDLIBS Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8325) commit 874f785988c17991051d36a0407a87b36c463a94 Author: Richard Levitte Date: Tue Feb 26 09:34:00 2019 +0100 .travis.yml: change -std=c89 to -ansi For C, -ansi is equivalent to -std=c90 For C++, -ansi is equivalent to -std=c++98 We also place -ansi in CPPFLAGS instead of the usual command line config, to avoid getting it when linking (clang complains) Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8325) commit e373c70a3e535b560f6b6bade914a724aa975c55 Author: Richard Levitte Date: Tue Feb 26 09:32:52 2019 +0100 Configuration: divide devteam flags into language specific sets Some of the devteam flags are not for C++ Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8325) commit 9f27d4bf32c0465270e1922365b21825a0f7a42a Author: Richard Levitte Date: Mon Feb 25 11:43:00 2019 +0100 Do buildtests on our public header files with C++ as well This ensures that we don't mistakenly use C++ keywords anywhere public. Related to #8313 Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8325) ----------------------------------------------------------------------- Summary of changes: .travis.yml | 2 +- Configurations/90-team.norelease.conf | 10 ++- Configure | 117 ++++++++++++++++++++-------------- test/build.info | 16 +++-- 4 files changed, 90 insertions(+), 55 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0124368..3184308 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,7 @@ compiler: env: - CONFIG_OPTS="" DESTDIR="_install" - CONFIG_OPTS="no-asm -Werror --debug no-afalgeng no-shared enable-crypto-mdebug enable-rc5 enable-md2" - - CONFIG_OPTS="no-asm no-makedepend --strict-warnings -std=c89 -D_DEFAULT_SOURCE" BUILDONLY="yes" CHECKDOCS="yes" GENERATE="yes" + - CONFIG_OPTS="no-asm no-makedepend --strict-warnings -D_DEFAULT_SOURCE" BUILDONLY="yes" CHECKDOCS="yes" GENERATE="yes" CPPFLAGS="-ansi" matrix: include: diff --git a/Configurations/90-team.norelease.conf b/Configurations/90-team.norelease.conf index 7849fdb..77dad97 100644 --- a/Configurations/90-team.norelease.conf +++ b/Configurations/90-team.norelease.conf @@ -18,7 +18,8 @@ my %targets = ( "debug-erbridge" => { inherit_from => [ 'BASE_unix', "x86_64_asm" ], cc => "gcc", - cflags => combine("$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -m64 -DL_ENDIAN -DTERMIO -g", + cflags => combine(join(' ', @{$gcc_devteam_warn{CFLAGS}}), + "-DBN_DEBUG -DCONF_DEBUG -m64 -DL_ENDIAN -DTERMIO -g", threads("-D_REENTRANT")), ex_libs => add(" ","-ldl"), bn_ops => "SIXTY_FOUR_BIT_LONG", @@ -80,7 +81,8 @@ my %targets = ( "debug-test-64-clang" => { inherit_from => [ 'BASE_unix', "x86_64_asm" ], cc => "clang", - cflags => combine("$gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe", + cflags => combine(join(' ', @{$gcc_devteam_warn{CFLAGS}}), + "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe", threads("${BSDthreads}")), bn_ops => "SIXTY_FOUR_BIT_LONG", thread_scheme => "pthreads", @@ -92,7 +94,9 @@ my %targets = ( "darwin64-debug-test-64-clang" => { inherit_from => [ 'BASE_unix', "x86_64_asm" ], cc => "clang", - cflags => combine("-arch x86_64 -DL_ENDIAN $gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe", + cflags => combine("-arch x86_64 -DL_ENDIAN", + join(' ', @{$gcc_devteam_warn{CFLAGS}}), + "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe", threads("${BSDthreads}")), sys_id => "MACOSX", bn_ops => "SIXTY_FOUR_BIT_LONG", diff --git a/Configure b/Configure index 2765639..0e0e115 100755 --- a/Configure +++ b/Configure @@ -120,22 +120,27 @@ my $usage="Usage: Configure [no- ...] [enable- ...] [-Dxxx] [-lx # code, so we just tell compiler to be pedantic about everything # but 'long long' type. -my $gcc_devteam_warn = "-DDEBUG_UNUSED" - . " -DPEDANTIC -pedantic -Wno-long-long" - . " -Wall" - . " -Wextra" - . " -Wno-unused-parameter" - . " -Wno-missing-field-initializers" - . " -Wswitch" - . " -Wsign-compare" - . " -Wmissing-prototypes" - . " -Wstrict-prototypes" - . " -Wshadow" - . " -Wformat" - . " -Wtype-limits" - . " -Wundef" - . " -Werror" - ; +my %gcc_devteam_warn = (); +{ + my @common = qw( -DDEBUG_UNUSED + -DPEDANTIC -pedantic -Wno-long-long + -Wall + -Wextra + -Wno-unused-parameter + -Wno-missing-field-initializers + -Wswitch + -Wsign-compare + -Wshadow + -Wformat + -Wtype-limits + -Wundef + -Werror ); + %gcc_devteam_warn = ( + CFLAGS => [ @common, qw( -Wmissing-prototypes + -Wstrict-prototypes ) ], + CXXFLAGS => [ @common ] + ); +} # These are used in addition to $gcc_devteam_warn when the compiler is clang. # TODO(openssl-team): fix problems and investigate if (at least) the @@ -145,16 +150,20 @@ my $gcc_devteam_warn = "-DDEBUG_UNUSED" # -Wlanguage-extension-token -- no, we use asm() # -Wunused-macros -- no, too tricky for BN and _XOPEN_SOURCE etc # -Wextended-offsetof -- no, needed in CMS ASN1 code -my $clang_devteam_warn = "" - . " -Wswitch-default" - . " -Wno-parentheses-equality" - . " -Wno-language-extension-token" - . " -Wno-extended-offsetof" - . " -Wconditional-uninitialized" - . " -Wincompatible-pointer-types-discards-qualifiers" - . " -Wmissing-variable-declarations" - . " -Wno-unknown-warning-option" - ; +my %clang_devteam_warn = (); +{ + my @common = qw( -Wswitch-default + -Wno-parentheses-equality + -Wno-language-extension-token + -Wno-extended-offsetof + -Wconditional-uninitialized + -Wincompatible-pointer-types-discards-qualifiers + -Wno-unknown-warning-option ); + %clang_devteam_warn = ( + CFLAGS => [ @common, qw( -Wmissing-variable-declarations ) ], + CXXFLAGS => [ @common ] + ); +} # This adds backtrace information to the memory leak info. Is only used # when crypto-mdebug-backtrace is enabled. @@ -545,18 +554,18 @@ my %user = ( AS => undef, ASFLAGS => [], CC => env('CC'), - CFLAGS => [], + CFLAGS => [ env('CFLAGS') || () ], CXX => env('CXX'), - CXXFLAGS => [], + CXXFLAGS => [ env('CXXFLAGS') || () ], CPP => undef, - CPPFLAGS => [], # -D, -I, -Wp, + CPPFLAGS => [ env('CPPFLAGS') || () ], # -D, -I, -Wp, CPPDEFINES => [], # Alternative for -D CPPINCLUDES => [], # Alternative for -I CROSS_COMPILE => env('CROSS_COMPILE'), HASHBANGPERL=> env('HASHBANGPERL') || env('PERL'), LD => undef, - LDFLAGS => [], # -L, -Wl, - LDLIBS => [], # -l + LDFLAGS => [ env('LDFLAGS') || () ], # -L, -Wl, + LDLIBS => [ env('LDLIBS') || () ], # -l MT => undef, MTFLAGS => [], PERL => env('PERL') || ($^O ne "VMS" ? $^X : "perl"), @@ -1422,7 +1431,10 @@ unless ($disabled{asm}) { } } -my %predefined = compiler_predefined($config{CROSS_COMPILE}.$config{CC}); +my %predefined_C = compiler_predefined($config{CROSS_COMPILE}.$config{CC}); +my %predefined_CXX = $config{CXX} + ? compiler_predefined($config{CROSS_COMPILE}.$config{CXX}) + : (); # Check for makedepend capabilities. if (!$disabled{makedepend}) { @@ -1430,8 +1442,8 @@ if (!$disabled{makedepend}) { # For VC- and vms- targets, there's nothing more to do here. The # functionality is hard coded in the corresponding build files for # cl (Windows) and CC/DECC (VMS). - } elsif (($predefined{__GNUC__} // -1) >= 3 - && !($predefined{__APPLE_CC__} && !$predefined{__clang__})) { + } elsif (($predefined_C{__GNUC__} // -1) >= 3 + && !($predefined_C{__APPLE_CC__} && !$predefined_C{__clang__})) { # We know that GNU C version 3 and up as well as all clang # versions support dependency generation, but Xcode did not # handle $cc -M before clang support (but claims __GNUC__ = 3) @@ -1444,9 +1456,9 @@ if (!$disabled{makedepend}) { } } -if (!$disabled{asm} && !$predefined{__MACH__} && $^O ne 'VMS') { +if (!$disabled{asm} && !$predefined_C{__MACH__} && $^O ne 'VMS') { # probe for -Wa,--noexecstack option... - if ($predefined{__clang__}) { + if ($predefined_C{__clang__}) { # clang has builtin assembler, which doesn't recognize --help, # but it apparently recognizes the option in question on all # supported platforms even when it's meaningless. In other words @@ -1504,24 +1516,35 @@ $config{openssl_api_defines} = [ "OPENSSL_MIN_API=".($apitable->{$config{api} // ""} // -1) ]; -my @strict_warnings_collection=(); +my %strict_warnings_collection=( CFLAGS => [], CXXFLAGS => []); if ($strict_warnings) { my $wopt; - my $gccver = $predefined{__GNUC__} // -1; + my $gccver = $predefined_C{__GNUC__} // -1; + my $gxxver = $predefined_CXX{__GNUC__} // -1; - die "ERROR --strict-warnings requires gcc[>=4] or gcc-alike" + warn "WARNING --strict-warnings requires gcc[>=4] or gcc-alike" unless $gccver >= 4; - push @strict_warnings_collection, (split /\s+/, $gcc_devteam_warn); - push @strict_warnings_collection, (split /\s+/, $clang_devteam_warn) - if (defined($predefined{__clang__})); + warn "WARNING --strict-warnings requires g++[>=4] or g++-alike" + unless $gxxver >= 4; + foreach (qw(CFLAGS CXXFLAGS)) + { + push @{$strict_warnings_collection{$_}}, + @{$gcc_devteam_warn{$_}}; + } + push @{$strict_warnings_collection{CFLAGS}}, + @{$clang_devteam_warn{CFLAGS}} + if (defined($predefined_C{__clang__})); + push @{$strict_warnings_collection{CXXFLAGS}}, + @{$clang_devteam_warn{CXXFLAGS}} + if (defined($predefined_CXX{__clang__})); } -foreach (qw(CFLAGS CXXFLAGS)) +foreach my $idx (qw(CFLAGS CXXFLAGS)) { - $useradd{$_} = [ map { $_ eq '--ossl-strict-warnings' - ? @strict_warnings_collection - : ( $_ ) } - @{$useradd{$_}} ]; + $useradd{$idx} = [ map { $_ eq '--ossl-strict-warnings' + ? @{$strict_warnings_collection{$idx}} + : ( $_ ) } + @{$useradd{$idx}} ]; } unless ($disabled{"crypto-mdebug-backtrace"}) diff --git a/test/build.info b/test/build.info index db4e1a7..1a47463 100644 --- a/test/build.info +++ b/test/build.info @@ -593,11 +593,19 @@ ENDIF next if grep { lc("$name.h") =~ m/$_/i } @nogo_headers_re; $OUT .= <<"_____"; - PROGRAMS{noinst}=buildtest_$name + PROGRAMS{noinst}=buildtest_c_$name + SOURCE[buildtest_c_$name]=buildtest_$name.c GENERATE[buildtest_$name.c]=generate_buildtest.pl $name - SOURCE[buildtest_$name]=buildtest_$name.c - INCLUDE[buildtest_$name]=../include - DEPEND[buildtest_$name]=../libssl ../libcrypto + INCLUDE[buildtest_c_$name]=../include + DEPEND[buildtest_c_$name]=../libssl ../libcrypto +_____ + $OUT .= <<"_____" if $config{CXX}; + + PROGRAMS{noinst}=buildtest_cc_$name + SOURCE[buildtest_cc_$name]=buildtest_$name.cc + GENERATE[buildtest_$name.cc]=generate_buildtest.pl $name + INCLUDE[buildtest_cc_$name]=../include + DEPEND[buildtest_cc_$name]=../libssl ../libcrypto _____ } -} From no-reply at appveyor.com Wed Feb 27 18:05:12 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 27 Feb 2019 18:05:12 +0000 Subject: Build failed: openssl master.22925 Message-ID: <20190227180512.1.E36D517AA7768EAC@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Wed Feb 27 18:27:43 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 27 Feb 2019 18:27:43 +0000 Subject: Build completed: openssl OpenSSL_1_1_1-stable.22926 Message-ID: <20190227182743.1.C791ACD08FB7F187@appveyor.com> An HTML attachment was scrubbed... URL: From builds at travis-ci.org Wed Feb 27 18:43:53 2019 From: builds at travis-ci.org (Travis CI) Date: Wed, 27 Feb 2019 18:43:53 +0000 Subject: Broken: openssl/openssl#23528 (master - 8e7984e) In-Reply-To: Message-ID: <5c76da69311e1_43fed55e20e50381542@f99e20ab-888a-4fdb-8f2a-a6ef3aaf7e54.mail> Build Update for openssl/openssl ------------------------------------- Build: #23528 Status: Broken Duration: 24 mins and 59 secs Commit: 8e7984e (master) Author: Richard Levitte Message: Configure: support a few more "make variables" defaulting from env CFLAGS, CXXFLAGS, CPPFLAGS, LDFLAGS, and LDLIBS Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8325) View the changeset: https://github.com/openssl/openssl/compare/4ca00f934f0b...8e7984e57838 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/499407751?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From levitte at openssl.org Wed Feb 27 21:44:51 2019 From: levitte at openssl.org (Richard Levitte) Date: Wed, 27 Feb 2019 21:44:51 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551303891.439822.28230.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via dbb1340314fcec37662d79720e6566fdd5a232e8 (commit) from e8926acfe25418d029656d4abb321096a2cf17c5 (commit) - Log ----------------------------------------------------------------- commit dbb1340314fcec37662d79720e6566fdd5a232e8 Author: Shane Lontis Date: Tue Feb 19 13:56:33 2019 +1000 cfi build fixes in x86-64 ghash assembly Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8281) (cherry picked from commit 54d00677f305375eee65a0c9edb5f0980c5f020f) ----------------------------------------------------------------------- Summary of changes: crypto/modes/asm/ghash-x86_64.pl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crypto/modes/asm/ghash-x86_64.pl b/crypto/modes/asm/ghash-x86_64.pl index 30158aa..6b2a51e 100644 --- a/crypto/modes/asm/ghash-x86_64.pl +++ b/crypto/modes/asm/ghash-x86_64.pl @@ -1155,6 +1155,7 @@ ___ } else { $code.=<<___; jmp .L_init_clmul +.cfi_endproc .size gcm_init_avx,.-gcm_init_avx ___ } @@ -1594,6 +1595,7 @@ ___ } else { $code.=<<___; jmp .L_ghash_clmul +.cfi_endproc .size gcm_ghash_avx,.-gcm_ghash_avx ___ } From no-reply at appveyor.com Wed Feb 27 22:21:05 2019 From: no-reply at appveyor.com (AppVeyor) Date: Wed, 27 Feb 2019 22:21:05 +0000 Subject: Build failed: openssl master.22934 Message-ID: <20190227222105.1.2819A1D04810AB52@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 28 00:18:56 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 28 Feb 2019 00:18:56 +0000 Subject: Build failed: openssl master.22942 Message-ID: <20190228001856.1.676A98498B0AE2ED@appveyor.com> An HTML attachment was scrubbed... URL: From openssl at openssl.org Thu Feb 28 01:27:55 2019 From: openssl at openssl.org (OpenSSL run-checker) Date: Thu, 28 Feb 2019 01:27:55 +0000 Subject: FAILED build of OpenSSL branch master with options -d --strict-warnings no-ec Message-ID: <1551317275.992662.26429.nullmailer@run.openssl.org> Platform and configuration command: $ uname -a Linux run 4.4.0-135-generic #161-Ubuntu SMP Mon Aug 27 10:45:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ CC=clang ../openssl/config -d --strict-warnings no-ec Commit log since last time: 8e7984e578 Configure: support a few more "make variables" defaulting from env 874f785988 .travis.yml: change -std=c89 to -ansi e373c70a3e Configuration: divide devteam flags into language specific sets 9f27d4bf32 Do buildtests on our public header files with C++ as well 4ca00f934f OpenSSL::Util::Pod: allow slashes in names 7753be74a3 Replumbing: Add include/openssl/core.h, initially with core types 8d76481b18 Implement SSH KDF 149c12d5e4 Make the padlock engine build correctly 2fce15b58b Ensure configured module specific and application specific defines are used 88780b1c5f Add PADLOCK_ASM to dso_defines rather than lib_defines 546ca2f4f5 The use of the likes of UINT32_MAX requires internal/numbers.h e766f4a053 Fix the default digest algorthm of SM2 a7cef52f9b Support raw input data in apps/pkeyutl Build log ended with (last 100 lines): ar r apps/libapps.a apps/libapps-lib-app_rand.o apps/libapps-lib-apps.o apps/libapps-lib-apps_ui.o apps/libapps-lib-bf_prefix.o apps/libapps-lib-fmt.o apps/libapps-lib-opt.o apps/libapps-lib-s_cb.o apps/libapps-lib-s_socket.o ar: creating apps/libapps.a ranlib apps/libapps.a || echo Never mind. clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aes-x86_64.o crypto/aes/aes-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aesni-mb-x86_64.o crypto/aes/aesni-mb-x86_64.s chmod a+x tools/c_rehash clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aesni-sha1-x86_64.o crypto/aes/aesni-sha1-x86_64.s chmod a+x util/shlib_wrap.sh clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aesni-sha256-x86_64.o crypto/aes/aesni-sha256-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-aesni-x86_64.o crypto/aes/aesni-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-bsaes-x86_64.o crypto/aes/bsaes-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/aes/libcrypto-lib-vpaes-x86_64.o crypto/aes/vpaes-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-rsaz-avx2.o crypto/bn/rsaz-avx2.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-rsaz-x86_64.o crypto/bn/rsaz-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-x86_64-gf2m.o crypto/bn/x86_64-gf2m.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-x86_64-mont.o crypto/bn/x86_64-mont.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/bn/libcrypto-lib-x86_64-mont5.o crypto/bn/x86_64-mont5.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/camellia/libcrypto-lib-cmll-x86_64.o crypto/camellia/cmll-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/chacha/libcrypto-lib-chacha-x86_64.o crypto/chacha/chacha-x86_64.s clang -Icrypto -I. -Icrypto/include -Iinclude -I../openssl -I../openssl/crypto/include -I../openssl/include -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -MMD -MF crypto/libcrypto-lib-cversion.d.tmp -MT crypto/libcrypto-lib-cversion.o -c -o crypto/libcrypto-lib-cversion.o ../openssl/crypto/cversion.c clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/libcrypto-lib-x86_64cpuid.o crypto/x86_64cpuid.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/md5/libcrypto-lib-md5-x86_64.o crypto/md5/md5-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/modes/libcrypto-lib-aesni-gcm-x86_64.o crypto/modes/aesni-gcm-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/modes/libcrypto-lib-ghash-x86_64.o crypto/modes/ghash-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/poly1305/libcrypto-lib-poly1305-x86_64.o crypto/poly1305/poly1305-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/rc4/libcrypto-lib-rc4-md5-x86_64.o crypto/rc4/rc4-md5-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/rc4/libcrypto-lib-rc4-x86_64.o crypto/rc4/rc4-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-keccak1600-x86_64.o crypto/sha/keccak1600-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha1-mb-x86_64.o crypto/sha/sha1-mb-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha1-x86_64.o crypto/sha/sha1-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha256-mb-x86_64.o crypto/sha/sha256-mb-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha256-x86_64.o crypto/sha/sha256-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/sha/libcrypto-lib-sha512-x86_64.o crypto/sha/sha512-x86_64.s clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-3\"" -c -o crypto/whrlpool/libcrypto-lib-wp-x86_64.o crypto/whrlpool/wp-x86_64.s ar r libssl.a ssl/libssl-lib-bio_ssl.o ssl/libssl-lib-d1_lib.o ssl/libssl-lib-d1_msg.o ssl/libssl-lib-d1_srtp.o ssl/libssl-lib-methods.o ssl/libssl-lib-packet.o ssl/libssl-lib-pqueue.o ssl/libssl-lib-s3_cbc.o ssl/libssl-lib-s3_enc.o ssl/libssl-lib-s3_lib.o ssl/libssl-lib-s3_msg.o ssl/libssl-lib-ssl_asn1.o ssl/libssl-lib-ssl_cert.o ssl/libssl-lib-ssl_ciph.o ssl/libssl-lib-ssl_conf.o ssl/libssl-lib-ssl_err.o ssl/libssl-lib-ssl_init.o ssl/libssl-lib-ssl_lib.o ssl/libssl-lib-ssl_mcnf.o ssl/libssl-lib-ssl_rsa.o ssl/libssl-lib-ssl_sess.o ssl/libssl-lib-ssl_stat.o ssl/libssl-lib-ssl_txt.o ssl/libssl-lib-ssl_utst.o ssl/libssl-lib-t1_enc.o ssl/libssl-lib-t1_lib.o ssl/libssl-lib-t1_trce.o ssl/libssl-lib-tls13_enc.o ssl/libssl-lib-tls_srp.o ssl/record/libssl-lib-dtls1_bitmap.o ssl/record/libssl-lib-rec_layer_d1.o ssl/record/libssl-lib-rec_layer_s3.o ssl/record/libssl-lib-ssl3_buffer.o ssl/record/libssl-lib-ssl3_record.o ssl/record/libssl-lib-ssl3_record_tls13.o ssl/statem/libssl-lib-extensions.o ssl/statem/libssl-lib-extensions_clnt.o ssl/statem/libssl-lib-extensions_cust.o ssl/statem/libssl-lib-extensions_srvr.o ssl/statem/libssl-lib-statem.o ssl/statem/libssl-lib-statem_clnt.o ssl/statem/libssl-lib-statem_dtls.o ssl/statem/libssl-lib-statem_lib.o ssl/statem/libssl-lib-statem_srvr.o ar: creating libssl.a ar r test/libtestutil.a apps/libtestutil-lib-opt.o test/testutil/libtestutil-lib-basic_output.o test/testutil/libtestutil-lib-cb.o test/testutil/libtestutil-lib-driver.o test/testutil/libtestutil-lib-format_output.o test/testutil/libtestutil-lib-init.o test/testutil/libtestutil-lib-main.o test/testutil/libtestutil-lib-options.o test/testutil/libtestutil-lib-output_helpers.o test/testutil/libtestutil-lib-stanza.o test/testutil/libtestutil-lib-tap_bio.o test/testutil/libtestutil-lib-test_cleanup.o test/testutil/libtestutil-lib-test_options.o test/testutil/libtestutil-lib-tests.o ar: creating test/libtestutil.a ranlib test/libtestutil.a || echo Never mind. clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -L. -Wl,-znodelete -shared -Wl,-Bsymbolic -Wl,-soname=libcrypto.so.3 \ -o libcrypto.so.3 -Wl,--version-script=libcrypto.ld crypto/aes/libcrypto-shlib-aes-x86_64.o crypto/aes/libcrypto-shlib-aes_cfb.o crypto/aes/libcrypto-shlib-aes_ecb.o crypto/aes/libcrypto-shlib-aes_ige.o crypto/aes/libcrypto-shlib-aes_misc.o crypto/aes/libcrypto-shlib-aes_ofb.o crypto/aes/libcrypto-shlib-aes_wrap.o crypto/aes/libcrypto-shlib-aesni-mb-x86_64.o crypto/aes/libcrypto-shlib-aesni-sha1-x86_64.o crypto/aes/libcrypto-shlib-aesni-sha256-x86_64.o crypto/aes/libcrypto-shlib-aesni-x86_64.o crypto/aes/libcrypto-shlib-bsaes-x86_64.o crypto/aes/libcrypto-shlib-vpaes-x86_64.o crypto/aria/libcrypto-shlib-aria.o crypto/asn1/libcrypto-shlib-a_bitstr.o crypto/asn1/libcrypto-shlib-a_d2i_fp.o crypto/asn1/libcrypto-shlib-a_digest.o crypto/asn1/libcrypto-shlib-a_dup.o crypto/asn1/libcrypto-shlib-a_gentm.o crypto/asn1/libcrypto-shlib-a_i2d_fp.o crypto/asn1/libcrypto-shlib-a_int.o crypto/asn1/libcrypto-shlib-a_mbstr.o crypto/asn1/libcrypto-shlib-a_object.o crypto/asn1/libcrypto-shlib-a_octet.o crypto/asn1/libcrypto-shlib-a_print.o crypto/asn1/libcrypto-shlib-a_sign.o crypto/asn1/libcrypto-shlib-a_strex.o crypto/asn1/libcrypto-shlib-a_strnid.o crypto/asn1/libcrypto-shlib-a_time.o crypto/asn1/libcrypto-shlib-a_type.o crypto/asn1/libcrypto-shlib-a_utctm.o crypto/asn1/libcrypto-shlib-a_utf8.o crypto/asn1/libcrypto-shlib-a_verify.o crypto/asn1/libcrypto-shlib-ameth_lib.o crypto/asn1/libcrypto-shlib-asn1_err.o crypto/asn1/libcrypto-shlib-asn1_gen.o crypto/asn1/libcrypto-shlib-asn1_item_list.o crypto/asn1/libcrypto-shlib-asn1_lib.o crypto/asn1/libcrypto-shlib-asn1_par.o crypto/asn1/libcrypto-shlib-asn_mime.o crypto/asn1/libcrypto-shlib-asn_moid.o crypto/asn1/libcrypto-shlib-asn_mstbl.o crypto/asn1/libcrypto-shlib-asn_pack.o crypto/asn1/libcrypto-shlib-bio_asn1.o crypto/asn1/libcrypto-shlib-bio_ndef.o crypto/asn1/libcrypto-shlib-d2i_pr.o crypto/asn1/libcrypto-shlib-d2i_pu.o crypto/asn1/libcrypto-shlib-evp_asn1.o crypto/asn1/libcrypto-shlib-f_int.o crypto/asn1/libcrypto-shlib-f_string.o crypto/asn1/libcrypto-shlib-i2d_pr.o crypto/asn1/libcrypto-shlib-i2d_pu.o crypto/asn1/libcrypto-shlib-n_pkey.o crypto/asn1/libcrypto-shlib-nsseq.o crypto/asn1/libcrypto-shlib-p5_pbe.o crypto/asn1/libcrypto-shlib-p5_pbev2.o crypto/asn1/libcrypto-shlib-p5_scrypt.o crypto/asn1/libcrypto-shlib-p8_pkey.o crypto/asn1/libcrypto-shlib-t_bitst.o crypto/asn1/libcrypto-shlib-t_pkey.o crypto/asn1/libcrypto-shlib-t_spki.o crypto/asn1/libcrypto-shlib-tasn_dec.o crypto/asn1/libcrypto-shlib-tasn_enc.o crypto/asn1/libcrypto-shlib-tasn_fre.o crypto/asn1/libcrypto-shlib-tasn_new.o crypto/asn1/libcrypto-shlib-tasn_prn.o crypto/asn1/libcrypto-shlib-tasn_scn.o crypto/asn1/libcrypto-shlib-tasn_typ.o crypto/asn1/libcrypto-shlib-tasn_utl.o crypto/asn1/libcrypto-shlib-x_algor.o crypto/asn1/libcrypto-shlib-x_bignum.o crypto/asn1/libcrypto-shlib-x_info.o crypto/asn1/libcrypto-shlib-x_int64.o crypto/asn1/libcrypto-shlib-x_long.o crypto/asn1/libcrypto-shlib-x_pkey.o crypto/asn1/libcrypto-shlib-x_sig.o crypto/asn1/libcrypto-shlib-x_spki.o crypto/asn1/libcrypto-shlib-x_val.o crypto/async/arch/libcrypto-shlib-async_null.o crypto/async/arch/libcrypto-shlib-async_posix.o crypto/async/arch/libcrypto-shlib-async_win.o crypto/async/libcrypto-shlib-async.o crypto/async/libcrypto-shlib-async_err.o crypto/async/libcrypto-shlib-async_wait.o crypto/bf/libcrypto-shlib-bf_cfb64.o crypto/bf/libcrypto-shlib-bf_ecb.o crypto/bf/libcrypto-shlib-bf_enc.o crypto/bf/libcrypto-shlib-bf_ofb64.o crypto/bf/libcrypto-shlib-bf_skey.o crypto/bio/libcrypto-shlib-b_addr.o crypto/bio/libcrypto-shlib-b_dump.o crypto/bio/libcrypto-shlib-b_print.o crypto/bio/libcrypto-shlib-b_sock.o crypto/bio/libcrypto-shlib-b_sock2.o crypto/bio/libcrypto-shlib-bf_buff.o crypto/bio/libcrypto-shlib-bf_lbuf.o crypto/bio/libcrypto-shlib-bf_nbio.o crypto/bio/libcrypto-shlib-bf_null.o crypto/bio/libcrypto-shlib-bio_cb.o crypto/bio/libcrypto-shlib-bio_err.o crypto/bio/libcrypto-shlib-bio_lib.o crypto/bio/libcrypto-shlib-bio_meth.o crypto/bio/libcrypto-shlib-bss_acpt.o crypto/bio/libcrypto-shlib-bss_bio.o crypto/bio/libcrypto-shlib-bss_conn.o crypto/bio/libcrypto-shlib-bss_dgram.o crypto/bio/libcrypto-shlib-bss_fd.o crypto/bio/libcrypto-shlib-bss_file.o crypto/bio/libcrypto-shlib-bss_log.o crypto/bio/libcrypto-shlib-bss_mem.o crypto/bio/libcrypto-shlib-bss_null.o crypto/bio/libcrypto-shlib-bss_sock.o crypto/blake2/libcrypto-shlib-blake2b.o crypto/blake2/libcrypto-shlib-blake2b_mac.o crypto/blake2/libcrypto-shlib-blake2s.o crypto/blake2/libcrypto-shlib-blake2s_mac.o crypto/blake2/libcrypto-shlib-m_blake2b.o crypto/blake2/libcrypto-shlib-m_blake2s.o crypto/bn/asm/libcrypto-shlib-x86_64-gcc.o crypto/bn/libcrypto-shlib-bn_add.o crypto/bn/libcrypto-shlib-bn_blind.o crypto/bn/libcrypto-shlib-bn_const.o crypto/bn/libcrypto-shlib-bn_ctx.o crypto/bn/libcrypto-shlib-bn_depr.o crypto/bn/libcrypto-shlib-bn_dh.o crypto/bn/libcrypto-shlib-bn_div.o crypto/bn/libcrypto-shlib-bn_err.o crypto/bn/libcrypto-shlib-bn_exp.o crypto/bn/libcrypto-shlib-bn_exp2.o crypto/bn/libcrypto-shlib-bn_gcd.o crypto/bn/libcrypto-shlib-bn_gf2m.o crypto/bn/libcrypto-shlib-bn_intern.o crypto/bn/libcrypto-shlib-bn_kron.o crypto/bn/libcrypto-shlib-bn_lib.o crypto/bn/libcrypto-shlib-bn_mod.o crypto/bn/libcrypto-shlib-bn_mont.o crypto/bn/libcrypto-shlib-bn_mpi.o crypto/bn/libcrypto-shlib-bn_mul.o crypto/bn/libcrypto-shlib-bn_nist.o crypto/bn/libcrypto-shlib-bn_prime.o crypto/bn/libcrypto-shlib-bn_print.o crypto/bn/libcrypto-shlib-bn_rand.o crypto/bn/libcrypto-shlib-bn_recp.o crypto/bn/libcrypto-shlib-bn_shift.o crypto/bn/libcrypto-shlib-bn_sqr.o crypto/bn/libcrypto-shlib-bn_sqrt.o crypto/bn/libcrypto-shlib-bn_srp.o crypto/bn/libcrypto-shlib-bn_word.o crypto/bn/libcrypto-shlib-bn_x931p.o crypto/bn/libcrypto-shlib-rsaz-avx2.o crypto/bn/libcrypto-shlib-rsaz-x86_64.o crypto/bn/libcrypto-shlib-rsaz_exp.o crypto/bn/libcrypto-shlib-x86_64-gf2m.o crypto/bn/libcrypto-shlib-x86_64-mont.o crypto/bn/libcrypto-shlib-x86_64-mont5.o crypto/buffer/libcrypto-shlib-buf_err.o crypto/buffer/libcrypto-shlib-buffer.o crypto/camellia/libcrypto-shlib-cmll-x86_64.o crypto/camellia/libcrypto-shlib-cmll_cfb.o crypto/camellia/libcrypto-shlib-cmll_ctr.o crypto/camellia/libcrypto-shlib-cmll_ecb.o crypto/camellia/libcrypto-shlib-cmll_misc.o crypto/camellia/libcrypto-shlib-cmll_ofb.o crypto/cast/libcrypto-shlib-c_cfb64.o crypto/cast/libcrypto-shlib-c_ecb.o crypto/cast/libcrypto-shlib-c_enc.o crypto/cast/libcrypto-shlib-c_ofb64.o crypto/cast/libcrypto-shlib-c_skey.o crypto/chacha/libcrypto-shlib-chacha-x86_64.o crypto/cmac/libcrypto-shlib-cm_ameth.o crypto/cmac/libcrypto-shlib-cm_meth.o crypto/cmac/libcrypto-shlib-cmac.o crypto/cms/libcrypto-shlib-cms_asn1.o crypto/cms/libcrypto-shlib-cms_att.o crypto/cms/libcrypto-shlib-cms_cd.o crypto/cms/libcrypto-shlib-cms_dd.o crypto/cms/libcrypto-shlib-cms_enc.o crypto/cms/libcrypto-shlib-cms_env.o crypto/cms/libcrypto-shlib-cms_err.o crypto/cms/libcrypto-shlib-cms_ess.o crypto/cms/libcrypto-shlib-cms_io.o crypto/cms/libcrypto-shlib-cms_kari.o crypto/cms/libcrypto-shlib-cms_lib.o crypto/cms/libcrypto-shlib-cms_pwri.o crypto/cms/libcrypto-shlib-cms_sd.o crypto/cms/libcrypto-shlib-cms_smime.o crypto/comp/libcrypto-shlib-c_zlib.o crypto/comp/libcrypto-shlib-comp_err.o crypto/comp/libcrypto-shlib-comp_lib.o crypto/conf/libcrypto-shlib-conf_api.o crypto/conf/libcrypto-shlib-conf_def.o crypto/conf/libcrypto-shlib-conf_err.o crypto/conf/libcrypto-shlib-conf_lib.o crypto/conf/libcrypto-shlib-conf_mall.o crypto/conf/libcrypto-shlib-conf_mod.o crypto/conf/libcrypto-shlib-conf_sap.o crypto/conf/libcrypto-shlib-conf_ssl.o crypto/ct/libcrypto-shlib-ct_b64.o crypto/ct/libcrypto-shlib-ct_err.o crypto/ct/libcrypto-shlib-ct_log.o crypto/ct/libcrypto-shlib-ct_oct.o crypto/ct/libcrypto-shlib-ct_policy.o crypto/ct/libcrypto-shlib-ct_prn.o crypto/ct/libcrypto-shlib-ct_sct.o crypto/ct/libcrypto-shlib-ct_sct_ctx.o crypto/ct/libcrypto-shlib-ct_vfy.o crypto/ct/libcrypto-shlib-ct_x509v3.o crypto/des/libcrypto-shlib-cbc_cksm.o crypto/des/libcrypto-shlib-cbc_enc.o crypto/des/libcrypto-shlib-cfb64ede.o crypto/des/libcrypto-shlib-cfb64enc.o crypto/des/libcrypto-shlib-cfb_enc.o crypto/des/libcrypto-shlib-des_enc.o crypto/des/libcrypto-shlib-ecb3_enc.o crypto/des/libcrypto-shlib-ecb_enc.o crypto/des/libcrypto-shlib-fcrypt.o crypto/des/libcrypto-shlib-fcrypt_b.o crypto/des/libcrypto-shlib-ofb64ede.o crypto/des/libcrypto-shlib-ofb64enc.o crypto/des/libcrypto-shlib-ofb_enc.o crypto/des/libcrypto-shlib-pcbc_enc.o crypto/des/libcrypto-shlib-qud_cksm.o crypto/des/libcrypto-shlib-rand_key.o crypto/des/libcrypto-shlib-set_key.o crypto/des/libcrypto-shlib-str2key.o crypto/des/libcrypto-shlib-xcbc_enc.o crypto/dh/libcrypto-shlib-dh_ameth.o crypto/dh/libcrypto-shlib-dh_asn1.o crypto/dh/libcrypto-shlib-dh_check.o crypto/dh/libcrypto-shlib-dh_depr.o crypto/dh/libcrypto-shlib-dh_err.o crypto/dh/libcrypto-shlib-dh_gen.o crypto/dh/libcrypto-shlib-dh_kdf.o crypto/dh/libcrypto-shlib-dh_key.o crypto/dh/libcrypto-shlib-dh_lib.o crypto/dh/libcrypto-shlib-dh_meth.o crypto/dh/libcrypto-shlib-dh_pmeth.o crypto/dh/libcrypto-shlib-dh_prn.o crypto/dh/libcrypto-shlib-dh_rfc5114.o crypto/dh/libcrypto-shlib-dh_rfc7919.o crypto/dsa/libcrypto-shlib-dsa_ameth.o crypto/dsa/libcrypto-shlib-dsa_asn1.o crypto/dsa/libcrypto-shlib-dsa_depr.o crypto/dsa/libcrypto-shlib-dsa_err.o crypto/dsa/libcrypto-shlib-dsa_gen.o crypto/dsa/libcrypto-shlib-dsa_key.o crypto/dsa/libcrypto-shlib-dsa_lib.o crypto/dsa/libcrypto-shlib-dsa_meth.o crypto/dsa/libcrypto-shlib-dsa_ossl.o crypto/dsa/libcrypto-shlib-dsa_pmeth.o crypto/dsa/libcrypto-shlib-dsa_prn.o crypto/dsa/libcrypto-shlib-dsa_sign.o crypto/dsa/libcrypto-shlib-dsa_vrf.o crypto/dso/libcrypto-shlib-dso_dl.o crypto/dso/libcrypto-shlib-dso_dlfcn.o crypto/dso/libcrypto-shlib-dso_err.o crypto/dso/libcrypto-shlib-dso_lib.o crypto/dso/libcrypto-shlib-dso_openssl.o crypto/dso/libcrypto-shlib-dso_vms.o crypto/dso/libcrypto-shlib-dso_win32.o crypto/engine/libcrypto-shlib-eng_all.o crypto/engine/libcrypto-shlib-eng_cnf.o crypto/engine/libcrypto-shlib-eng_ctrl.o crypto/engine/libcrypto-shlib-eng_dyn.o crypto/engine/libcrypto-shlib-eng_err.o crypto/engine/libcrypto-shlib-eng_fat.o crypto/engine/libcrypto-shlib-eng_init.o crypto/engine/libcrypto-shlib-eng_lib.o crypto/engine/libcrypto-shlib-eng_list.o crypto/engine/libcrypto-shlib-eng_openssl.o crypto/engine/libcrypto-shlib-eng_pkey.o crypto/engine/libcrypto-shlib-eng_rdrand.o crypto/engine/libcrypto-shlib-eng_table.o crypto/engine/libcrypto-shlib-tb_asnmth.o crypto/engine/libcrypto-shlib-tb_cipher.o crypto/engine/libcrypto-shlib-tb_dh.o crypto/engine/libcrypto-shlib-tb_digest.o crypto/engine/libcrypto-shlib-tb_dsa.o crypto/engine/libcrypto-shlib-tb_eckey.o crypto/engine/libcrypto-shlib-tb_pkmeth.o crypto/engine/libcrypto-shlib-tb_rand.o crypto/engine/libcrypto-shlib-tb_rsa.o crypto/err/libcrypto-shlib-err.o crypto/err/libcrypto-shlib-err_all.o crypto/err/libcrypto-shlib-err_prn.o crypto/ess/libcrypto-shlib-ess_asn1.o crypto/ess/libcrypto-shlib-ess_err.o crypto/ess/libcrypto-shlib-ess_lib.o crypto/evp/libcrypto-shlib-bio_b64.o crypto/evp/libcrypto-shlib-bio_enc.o crypto/evp/libcrypto-shlib-bio_md.o crypto/evp/libcrypto-shlib-bio_ok.o crypto/evp/libcrypto-shlib-c_allc.o crypto/evp/libcrypto-shlib-c_alld.o crypto/evp/libcrypto-shlib-c_allm.o crypto/evp/libcrypto-shlib-cmeth_lib.o crypto/evp/libcrypto-shlib-digest.o crypto/evp/libcrypto-shlib-e_aes.o crypto/evp/libcrypto-shlib-e_aes_cbc_hmac_sha1.o crypto/evp/libcrypto-shlib-e_aes_cbc_hmac_sha256.o crypto/evp/libcrypto-shlib-e_aria.o crypto/evp/libcrypto-shlib-e_bf.o crypto/evp/libcrypto-shlib-e_camellia.o crypto/evp/libcrypto-shlib-e_cast.o crypto/evp/libcrypto-shlib-e_chacha20_poly1305.o crypto/evp/libcrypto-shlib-e_des.o crypto/evp/libcrypto-shlib-e_des3.o crypto/evp/libcrypto-shlib-e_idea.o crypto/evp/libcrypto-shlib-e_null.o crypto/evp/libcrypto-shlib-e_old.o crypto/evp/libcrypto-shlib-e_rc2.o crypto/evp/libcrypto-shlib-e_rc4.o crypto/evp/libcrypto-shlib-e_rc4_hmac_md5.o crypto/evp/libcrypto-shlib-e_rc5.o crypto/evp/libcrypto-shlib-e_seed.o crypto/evp/libcrypto-shlib-e_sm4.o crypto/evp/libcrypto-shlib-e_xcbc_d.o crypto/evp/libcrypto-shlib-encode.o crypto/evp/libcrypto-shlib-evp_cnf.o crypto/evp/libcrypto-shlib-evp_enc.o crypto/evp/libcrypto-shlib-evp_err.o crypto/evp/libcrypto-shlib-evp_key.o crypto/evp/libcrypto-shlib-evp_lib.o crypto/evp/libcrypto-shlib-evp_pbe.o crypto/evp/libcrypto-shlib-evp_pkey.o crypto/evp/libcrypto-shlib-kdf_lib.o crypto/evp/libcrypto-shlib-m_md2.o crypto/evp/libcrypto-shlib-m_md4.o crypto/evp/libcrypto-shlib-m_md5.o crypto/evp/libcrypto-shlib-m_md5_sha1.o crypto/evp/libcrypto-shlib-m_mdc2.o crypto/evp/libcrypto-shlib-m_null.o crypto/evp/libcrypto-shlib-m_ripemd.o crypto/evp/libcrypto-shlib-m_sha1.o crypto/evp/libcrypto-shlib-m_sha3.o crypto/evp/libcrypto-shlib-m_sigver.o crypto/evp/libcrypto-shlib-m_wp.o crypto/evp/libcrypto-shlib-mac_lib.o crypto/evp/libcrypto-shlib-names.o crypto/evp/libcrypto-shlib-p5_crpt.o crypto/evp/libcrypto-shlib-p5_crpt2.o crypto/evp/libcrypto-shlib-p_dec.o crypto/evp/libcrypto-shlib-p_enc.o crypto/evp/libcrypto-shlib-p_lib.o crypto/evp/libcrypto-shlib-p_open.o crypto/evp/libcrypto-shlib-p_seal.o crypto/evp/libcrypto-shlib-p_sign.o crypto/evp/libcrypto-shlib-p_verify.o crypto/evp/libcrypto-shlib-pbe_scrypt.o crypto/evp/libcrypto-shlib-pkey_kdf.o crypto/evp/libcrypto-shlib-pkey_mac.o crypto/evp/libcrypto-shlib-pmeth_fn.o crypto/evp/libcrypto-shlib-pmeth_gn.o crypto/evp/libcrypto-shlib-pmeth_lib.o crypto/gmac/libcrypto-shlib-gmac.o crypto/hmac/libcrypto-shlib-hm_ameth.o crypto/hmac/libcrypto-shlib-hm_meth.o crypto/hmac/libcrypto-shlib-hmac.o crypto/idea/libcrypto-shlib-i_cbc.o crypto/idea/libcrypto-shlib-i_cfb64.o crypto/idea/libcrypto-shlib-i_ecb.o crypto/idea/libcrypto-shlib-i_ofb64.o crypto/idea/libcrypto-shlib-i_skey.o crypto/kdf/libcrypto-shlib-hkdf.o crypto/kdf/libcrypto-shlib-kdf_err.o crypto/kdf/libcrypto-shlib-kdf_util.o crypto/kdf/libcrypto-shlib-pbkdf2.o crypto/kdf/libcrypto-shlib-scrypt.o crypto/kdf/libcrypto-shlib-sshkdf.o crypto/kdf/libcrypto-shlib-tls1_prf.o crypto/kmac/libcrypto-shlib-kmac.o crypto/lhash/libcrypto-shlib-lh_stats.o crypto/lhash/libcrypto-shlib-lhash.o crypto/libcrypto-shlib-context.o crypto/libcrypto-shlib-cpt_err.o crypto/libcrypto-shlib-cryptlib.o crypto/libcrypto-shlib-ctype.o crypto/libcrypto-shlib-cversion.o crypto/libcrypto-shlib-ebcdic.o crypto/libcrypto-shlib-ex_data.o crypto/libcrypto-shlib-getenv.o crypto/libcrypto-shlib-init.o crypto/libcrypto-shlib-mem.o crypto/libcrypto-shlib-mem_dbg.o crypto/libcrypto-shlib-mem_sec.o crypto/libcrypto-shlib-o_dir.o crypto/libcrypto-shlib-o_fips.o crypto/libcrypto-shlib-o_fopen.o crypto/libcrypto-shlib-o_init.o crypto/libcrypto-shlib-o_str.o crypto/libcrypto-shlib-o_time.o crypto/libcrypto-shlib-sparse_array.o crypto/libcrypto-shlib-threads_none.o crypto/libcrypto-shlib-threads_pthread.o crypto/libcrypto-shlib-threads_win.o crypto/libcrypto-shlib-uid.o crypto/libcrypto-shlib-x86_64cpuid.o crypto/md4/libcrypto-shlib-md4_dgst.o crypto/md4/libcrypto-shlib-md4_one.o crypto/md5/libcrypto-shlib-md5-x86_64.o crypto/md5/libcrypto-shlib-md5_dgst.o crypto/md5/libcrypto-shlib-md5_one.o crypto/mdc2/libcrypto-shlib-mdc2_one.o crypto/mdc2/libcrypto-shlib-mdc2dgst.o crypto/modes/libcrypto-shlib-aesni-gcm-x86_64.o crypto/modes/libcrypto-shlib-cbc128.o crypto/modes/libcrypto-shlib-ccm128.o crypto/modes/libcrypto-shlib-cfb128.o crypto/modes/libcrypto-shlib-ctr128.o crypto/modes/libcrypto-shlib-cts128.o crypto/modes/libcrypto-shlib-gcm128.o crypto/modes/libcrypto-shlib-ghash-x86_64.o crypto/modes/libcrypto-shlib-ocb128.o crypto/modes/libcrypto-shlib-ofb128.o crypto/modes/libcrypto-shlib-siv128.o crypto/modes/libcrypto-shlib-wrap128.o crypto/modes/libcrypto-shlib-xts128.o crypto/objects/libcrypto-shlib-o_names.o crypto/objects/libcrypto-shlib-obj_dat.o crypto/objects/libcrypto-shlib-obj_err.o crypto/objects/libcrypto-shlib-obj_lib.o crypto/objects/libcrypto-shlib-obj_xref.o crypto/ocsp/libcrypto-shlib-ocsp_asn.o crypto/ocsp/libcrypto-shlib-ocsp_cl.o crypto/ocsp/libcrypto-shlib-ocsp_err.o crypto/ocsp/libcrypto-shlib-ocsp_ext.o crypto/ocsp/libcrypto-shlib-ocsp_ht.o crypto/ocsp/libcrypto-shlib-ocsp_lib.o crypto/ocsp/libcrypto-shlib-ocsp_prn.o crypto/ocsp/libcrypto-shlib-ocsp_srv.o crypto/ocsp/libcrypto-shlib-ocsp_vfy.o crypto/ocsp/libcrypto-shlib-v3_ocsp.o crypto/pem/libcrypto-shlib-pem_all.o crypto/pem/libcrypto-shlib-pem_err.o crypto/pem/libcrypto-shlib-pem_info.o crypto/pem/libcrypto-shlib-pem_lib.o crypto/pem/libcrypto-shlib-pem_oth.o crypto/pem/libcrypto-shlib-pem_pk8.o crypto/pem/libcrypto-shlib-pem_pkey.o crypto/pem/libcrypto-shlib-pem_sign.o crypto/pem/libcrypto-shlib-pem_x509.o crypto/pem/libcrypto-shlib-pem_xaux.o crypto/pem/libcrypto-shlib-pvkfmt.o crypto/pkcs12/libcrypto-shlib-p12_add.o crypto/pkcs12/libcrypto-shlib-p12_asn.o crypto/pkcs12/libcrypto-shlib-p12_attr.o crypto/pkcs12/libcrypto-shlib-p12_crpt.o crypto/pkcs12/libcrypto-shlib-p12_crt.o crypto/pkcs12/libcrypto-shlib-p12_decr.o crypto/pkcs12/libcrypto-shlib-p12_init.o crypto/pkcs12/libcrypto-shlib-p12_key.o crypto/pkcs12/libcrypto-shlib-p12_kiss.o crypto/pkcs12/libcrypto-shlib-p12_mutl.o crypto/pkcs12/libcrypto-shlib-p12_npas.o crypto/pkcs12/libcrypto-shlib-p12_p8d.o crypto/pkcs12/libcrypto-shlib-p12_p8e.o crypto/pkcs12/libcrypto-shlib-p12_sbag.o crypto/pkcs12/libcrypto-shlib-p12_utl.o crypto/pkcs12/libcrypto-shlib-pk12err.o crypto/pkcs7/libcrypto-shlib-bio_pk7.o crypto/pkcs7/libcrypto-shlib-pk7_asn1.o crypto/pkcs7/libcrypto-shlib-pk7_attr.o crypto/pkcs7/libcrypto-shlib-pk7_doit.o crypto/pkcs7/libcrypto-shlib-pk7_lib.o crypto/pkcs7/libcrypto-shlib-pk7_mime.o crypto/pkcs7/libcrypto-shlib-pk7_smime.o crypto/pkcs7/libcrypto-shlib-pkcs7err.o crypto/poly1305/libcrypto-shlib-poly1305-x86_64.o crypto/poly1305/libcrypto-shlib-poly1305.o crypto/poly1305/libcrypto-shlib-poly1305_ameth.o crypto/poly1305/libcrypto-shlib-poly1305_meth.o crypto/property/libcrypto-shlib-defn_cache.o crypto/property/libcrypto-shlib-property.o crypto/property/libcrypto-shlib-property_err.o crypto/property/libcrypto-shlib-property_parse.o crypto/property/libcrypto-shlib-property_string.o crypto/rand/libcrypto-shlib-drbg_ctr.o crypto/rand/libcrypto-shlib-drbg_hash.o crypto/rand/libcrypto-shlib-drbg_hmac.o crypto/rand/libcrypto-shlib-drbg_lib.o crypto/rand/libcrypto-shlib-rand_egd.o crypto/rand/libcrypto-shlib-rand_err.o crypto/rand/libcrypto-shlib-rand_lib.o crypto/rand/libcrypto-shlib-rand_unix.o crypto/rand/libcrypto-shlib-rand_vms.o crypto/rand/libcrypto-shlib-rand_win.o crypto/rand/libcrypto-shlib-randfile.o crypto/rc2/libcrypto-shlib-rc2_cbc.o crypto/rc2/libcrypto-shlib-rc2_ecb.o crypto/rc2/libcrypto-shlib-rc2_skey.o crypto/rc2/libcrypto-shlib-rc2cfb64.o crypto/rc2/libcrypto-shlib-rc2ofb64.o crypto/rc4/libcrypto-shlib-rc4-md5-x86_64.o crypto/rc4/libcrypto-shlib-rc4-x86_64.o crypto/ripemd/libcrypto-shlib-rmd_dgst.o crypto/ripemd/libcrypto-shlib-rmd_one.o crypto/rsa/libcrypto-shlib-rsa_ameth.o crypto/rsa/libcrypto-shlib-rsa_asn1.o crypto/rsa/libcrypto-shlib-rsa_chk.o crypto/rsa/libcrypto-shlib-rsa_crpt.o crypto/rsa/libcrypto-shlib-rsa_depr.o crypto/rsa/libcrypto-shlib-rsa_err.o crypto/rsa/libcrypto-shlib-rsa_gen.o crypto/rsa/libcrypto-shlib-rsa_lib.o crypto/rsa/libcrypto-shlib-rsa_meth.o crypto/rsa/libcrypto-shlib-rsa_mp.o crypto/rsa/libcrypto-shlib-rsa_none.o crypto/rsa/libcrypto-shlib-rsa_oaep.o crypto/rsa/libcrypto-shlib-rsa_ossl.o crypto/rsa/libcrypto-shlib-rsa_pk1.o crypto/rsa/libcrypto-shlib-rsa_pmeth.o crypto/rsa/libcrypto-shlib-rsa_prn.o crypto/rsa/libcrypto-shlib-rsa_pss.o crypto/rsa/libcrypto-shlib-rsa_saos.o crypto/rsa/libcrypto-shlib-rsa_sign.o crypto/rsa/libcrypto-shlib-rsa_ssl.o crypto/rsa/libcrypto-shlib-rsa_x931.o crypto/rsa/libcrypto-shlib-rsa_x931g.o crypto/seed/libcrypto-shlib-seed.o crypto/seed/libcrypto-shlib-seed_cbc.o crypto/seed/libcrypto-shlib-seed_cfb.o crypto/seed/libcrypto-shlib-seed_ecb.o crypto/seed/libcrypto-shlib-seed_ofb.o crypto/sha/libcrypto-shlib-keccak1600-x86_64.o crypto/sha/libcrypto-shlib-sha1-mb-x86_64.o crypto/sha/libcrypto-shlib-sha1-x86_64.o crypto/sha/libcrypto-shlib-sha1_one.o crypto/sha/libcrypto-shlib-sha1dgst.o crypto/sha/libcrypto-shlib-sha256-mb-x86_64.o crypto/sha/libcrypto-shlib-sha256-x86_64.o crypto/sha/libcrypto-shlib-sha256.o crypto/sha/libcrypto-shlib-sha512-x86_64.o crypto/sha/libcrypto-shlib-sha512.o crypto/siphash/libcrypto-shlib-siphash.o crypto/siphash/libcrypto-shlib-siphash_ameth.o crypto/siphash/libcrypto-shlib-siphash_meth.o crypto/sm3/libcrypto-shlib-m_sm3.o crypto/sm3/libcrypto-shlib-sm3.o crypto/sm4/libcrypto-shlib-sm4.o crypto/srp/libcrypto-shlib-srp_lib.o crypto/srp/libcrypto-shlib-srp_vfy.o crypto/stack/libcrypto-shlib-stack.o crypto/store/libcrypto-shlib-loader_file.o crypto/store/libcrypto-shlib-store_err.o crypto/store/libcrypto-shlib-store_init.o crypto/store/libcrypto-shlib-store_lib.o crypto/store/libcrypto-shlib-store_register.o crypto/store/libcrypto-shlib-store_strings.o crypto/ts/libcrypto-shlib-ts_asn1.o crypto/ts/libcrypto-shlib-ts_conf.o crypto/ts/libcrypto-shlib-ts_err.o crypto/ts/libcrypto-shlib-ts_lib.o crypto/ts/libcrypto-shlib-ts_req_print.o crypto/ts/libcrypto-shlib-ts_req_utils.o crypto/ts/libcrypto-shlib-ts_rsp_print.o crypto/ts/libcrypto-shlib-ts_rsp_sign.o crypto/ts/libcrypto-shlib-ts_rsp_utils.o crypto/ts/libcrypto-shlib-ts_rsp_verify.o crypto/ts/libcrypto-shlib-ts_verify_ctx.o crypto/txt_db/libcrypto-shlib-txt_db.o crypto/ui/libcrypto-shlib-ui_err.o crypto/ui/libcrypto-shlib-ui_lib.o crypto/ui/libcrypto-shlib-ui_null.o crypto/ui/libcrypto-shlib-ui_openssl.o crypto/ui/libcrypto-shlib-ui_util.o crypto/whrlpool/libcrypto-shlib-wp-x86_64.o crypto/whrlpool/libcrypto-shlib-wp_dgst.o crypto/x509/libcrypto-shlib-by_dir.o crypto/x509/libcrypto-shlib-by_file.o crypto/x509/libcrypto-shlib-t_crl.o crypto/x509/libcrypto-shlib-t_req.o crypto/x509/libcrypto-shlib-t_x509.o crypto/x509/libcrypto-shlib-x509_att.o crypto/x509/libcrypto-shlib-x509_cmp.o crypto/x509/libcrypto-shlib-x509_d2.o crypto/x509/libcrypto-shlib-x509_def.o crypto/x509/libcrypto-shlib-x509_err.o crypto/x509/libcrypto-shlib-x509_ext.o crypto/x509/libcrypto-shlib-x509_lu.o crypto/x509/libcrypto-shlib-x509_meth.o crypto/x509/libcrypto-shlib-x509_obj.o crypto/x509/libcrypto-shlib-x509_r2x.o crypto/x509/libcrypto-shlib-x509_req.o crypto/x509/libcrypto-shlib-x509_set.o crypto/x509/libcrypto-shlib-x509_trs.o crypto/x509/libcrypto-shlib-x509_txt.o crypto/x509/libcrypto-shlib-x509_v3.o crypto/x509/libcrypto-shlib-x509_vfy.o crypto/x509/libcrypto-shlib-x509_vpm.o crypto/x509/libcrypto-shlib-x509cset.o crypto/x509/libcrypto-shlib-x509name.o crypto/x509/libcrypto-shlib-x509rset.o crypto/x509/libcrypto-shlib-x509spki.o crypto/x509/libcrypto-shlib-x509type.o crypto/x509/libcrypto-shlib-x_all.o crypto/x509/libcrypto-shlib-x_attrib.o crypto/x509/libcrypto-shlib-x_crl.o crypto/x509/libcrypto-shlib-x_exten.o crypto/x509/libcrypto-shlib-x_name.o crypto/x509/libcrypto-shlib-x_pubkey.o crypto/x509/libcrypto-shlib-x_req.o crypto/x509/libcrypto-shlib-x_x509.o crypto/x509/libcrypto-shlib-x_x509a.o crypto/x509v3/libcrypto-shlib-pcy_cache.o crypto/x509v3/libcrypto-shlib-pcy_data.o crypto/x509v3/libcrypto-shlib-pcy_lib.o crypto/x509v3/libcrypto-shlib-pcy_map.o crypto/x509v3/libcrypto-shlib-pcy_node.o crypto/x509v3/libcrypto-shlib-pcy_tree.o crypto/x509v3/libcrypto-shlib-v3_addr.o crypto/x509v3/libcrypto-shlib-v3_admis.o crypto/x509v3/libcrypto-shlib-v3_akey.o crypto/x509v3/libcrypto-shlib-v3_akeya.o crypto/x509v3/libcrypto-shlib-v3_alt.o crypto/x509v3/libcrypto-shlib-v3_asid.o crypto/x509v3/libcrypto-shlib-v3_bcons.o crypto/x509v3/libcrypto-shlib-v3_bitst.o crypto/x509v3/libcrypto-shlib-v3_conf.o crypto/x509v3/libcrypto-shlib-v3_cpols.o crypto/x509v3/libcrypto-shlib-v3_crld.o crypto/x509v3/libcrypto-shlib-v3_enum.o crypto/x509v3/libcrypto-shlib-v3_extku.o crypto/x509v3/libcrypto-shlib-v3_genn.o crypto/x509v3/libcrypto-shlib-v3_ia5.o crypto/x509v3/libcrypto-shlib-v3_info.o crypto/x509v3/libcrypto-shlib-v3_int.o crypto/x509v3/libcrypto-shlib-v3_lib.o crypto/x509v3/libcrypto-shlib-v3_ncons.o crypto/x509v3/libcrypto-shlib-v3_pci.o crypto/x509v3/libcrypto-shlib-v3_pcia.o crypto/x509v3/libcrypto-shlib-v3_pcons.o crypto/x509v3/libcrypto-shlib-v3_pku.o crypto/x509v3/libcrypto-shlib-v3_pmaps.o crypto/x509v3/libcrypto-shlib-v3_prn.o crypto/x509v3/libcrypto-shlib-v3_purp.o crypto/x509v3/libcrypto-shlib-v3_skey.o crypto/x509v3/libcrypto-shlib-v3_sxnet.o crypto/x509v3/libcrypto-shlib-v3_tlsf.o crypto/x509v3/libcrypto-shlib-v3_utl.o crypto/x509v3/libcrypto-shlib-v3err.o \ -ldl -pthread ranlib libssl.a || echo Never mind. clang -fPIC -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -DPADLOCK_ASM -c -o engines/padlock-dso-e_padlock-x86_64.o engines/e_padlock-x86_64.s clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-asn1pars.d.tmp -MT apps/openssl-bin-asn1pars.o -c -o apps/openssl-bin-asn1pars.o ../openssl/apps/asn1pars.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-ca.d.tmp -MT apps/openssl-bin-ca.o -c -o apps/openssl-bin-ca.o ../openssl/apps/ca.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-ciphers.d.tmp -MT apps/openssl-bin-ciphers.o -c -o apps/openssl-bin-ciphers.o ../openssl/apps/ciphers.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-cms.d.tmp -MT apps/openssl-bin-cms.o -c -o apps/openssl-bin-cms.o ../openssl/apps/cms.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-crl.d.tmp -MT apps/openssl-bin-crl.o -c -o apps/openssl-bin-crl.o ../openssl/apps/crl.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-crl2p7.d.tmp -MT apps/openssl-bin-crl2p7.o -c -o apps/openssl-bin-crl2p7.o ../openssl/apps/crl2p7.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-dgst.d.tmp -MT apps/openssl-bin-dgst.o -c -o apps/openssl-bin-dgst.o ../openssl/apps/dgst.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-dhparam.d.tmp -MT apps/openssl-bin-dhparam.o -c -o apps/openssl-bin-dhparam.o ../openssl/apps/dhparam.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-dsa.d.tmp -MT apps/openssl-bin-dsa.o -c -o apps/openssl-bin-dsa.o ../openssl/apps/dsa.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-dsaparam.d.tmp -MT apps/openssl-bin-dsaparam.o -c -o apps/openssl-bin-dsaparam.o ../openssl/apps/dsaparam.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-ec.d.tmp -MT apps/openssl-bin-ec.o -c -o apps/openssl-bin-ec.o ../openssl/apps/ec.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-ecparam.d.tmp -MT apps/openssl-bin-ecparam.o -c -o apps/openssl-bin-ecparam.o ../openssl/apps/ecparam.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-enc.d.tmp -MT apps/openssl-bin-enc.o -c -o apps/openssl-bin-enc.o ../openssl/apps/enc.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-engine.d.tmp -MT apps/openssl-bin-engine.o -c -o apps/openssl-bin-engine.o ../openssl/apps/engine.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-errstr.d.tmp -MT apps/openssl-bin-errstr.o -c -o apps/openssl-bin-errstr.o ../openssl/apps/errstr.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-gendsa.d.tmp -MT apps/openssl-bin-gendsa.o -c -o apps/openssl-bin-gendsa.o ../openssl/apps/gendsa.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-genpkey.d.tmp -MT apps/openssl-bin-genpkey.o -c -o apps/openssl-bin-genpkey.o ../openssl/apps/genpkey.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-genrsa.d.tmp -MT apps/openssl-bin-genrsa.o -c -o apps/openssl-bin-genrsa.o ../openssl/apps/genrsa.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-nseq.d.tmp -MT apps/openssl-bin-nseq.o -c -o apps/openssl-bin-nseq.o ../openssl/apps/nseq.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-ocsp.d.tmp -MT apps/openssl-bin-ocsp.o -c -o apps/openssl-bin-ocsp.o ../openssl/apps/ocsp.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-openssl.d.tmp -MT apps/openssl-bin-openssl.o -c -o apps/openssl-bin-openssl.o ../openssl/apps/openssl.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-passwd.d.tmp -MT apps/openssl-bin-passwd.o -c -o apps/openssl-bin-passwd.o ../openssl/apps/passwd.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-pkcs12.d.tmp -MT apps/openssl-bin-pkcs12.o -c -o apps/openssl-bin-pkcs12.o ../openssl/apps/pkcs12.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-pkcs7.d.tmp -MT apps/openssl-bin-pkcs7.o -c -o apps/openssl-bin-pkcs7.o ../openssl/apps/pkcs7.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-pkcs8.d.tmp -MT apps/openssl-bin-pkcs8.o -c -o apps/openssl-bin-pkcs8.o ../openssl/apps/pkcs8.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-pkey.d.tmp -MT apps/openssl-bin-pkey.o -c -o apps/openssl-bin-pkey.o ../openssl/apps/pkey.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-pkeyparam.d.tmp -MT apps/openssl-bin-pkeyparam.o -c -o apps/openssl-bin-pkeyparam.o ../openssl/apps/pkeyparam.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-pkeyutl.d.tmp -MT apps/openssl-bin-pkeyutl.o -c -o apps/openssl-bin-pkeyutl.o ../openssl/apps/pkeyutl.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-prime.d.tmp -MT apps/openssl-bin-prime.o -c -o apps/openssl-bin-prime.o ../openssl/apps/prime.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-rand.d.tmp -MT apps/openssl-bin-rand.o -c -o apps/openssl-bin-rand.o ../openssl/apps/rand.c clang -Iapps -I. -Iinclude -Iapps/include -I../openssl -I../openssl/include -I../openssl/apps/include -pthread -m64 -Wa,--noexecstack -Qunused-arguments -Wall -O0 -g -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wmissing-prototypes -Wstrict-prototypes -Wswitch-default -Wno-parentheses-equality -Wno-language-extension-token -Wno-extended-offsetof -Wconditional-uninitialized -Wincompatible-pointer-types-discards-qualifiers -Wno-unknown-warning-option -Wmissing-variable-declarations -MMD -MF apps/openssl-bin-rehash.d.tmp -MT apps/openssl-bin-rehash.o -c -o apps/openssl-bin-rehash.o ../openssl/apps/rehash.c ../openssl/apps/pkeyutl.c:530:15: error: unknown type name 'EC_GROUP' const EC_GROUP *group = NULL; ^ ../openssl/apps/pkeyutl.c:537:26: error: implicit declaration of function 'EVP_PKEY_get0_EC_KEY' is invalid in C99 [-Werror,-Wimplicit-function-declaration] if ((eckey = EVP_PKEY_get0_EC_KEY(pkey)) == NULL ^ ../openssl/apps/pkeyutl.c:537:26: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes] ../openssl/apps/pkeyutl.c:537:24: error: incompatible integer to pointer conversion assigning to 'EC_KEY *' (aka 'struct ec_key_st *') from 'int' [-Werror,-Wint-conversion] if ((eckey = EVP_PKEY_get0_EC_KEY(pkey)) == NULL ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~ ../openssl/apps/pkeyutl.c:538:33: error: implicit declaration of function 'EC_KEY_get0_group' is invalid in C99 [-Werror,-Wimplicit-function-declaration] || (group = EC_KEY_get0_group(eckey)) == NULL ^ ../openssl/apps/pkeyutl.c:538:33: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes] ../openssl/apps/pkeyutl.c:539:31: error: implicit declaration of function 'EC_GROUP_get_curve_name' is invalid in C99 [-Werror,-Wimplicit-function-declaration] || (nid = EC_GROUP_get_curve_name(group)) == 0) ^ ../openssl/apps/pkeyutl.c:539:31: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes] 8 errors generated. Makefile:11984: recipe for target 'apps/openssl-bin-pkeyutl.o' failed make[1]: *** [apps/openssl-bin-pkeyutl.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make[1]: Leaving directory '/home/openssl/run-checker/no-ec' Makefile:164: recipe for target 'all' failed make: *** [all] Error 2 From no-reply at appveyor.com Thu Feb 28 01:28:02 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 28 Feb 2019 01:28:02 +0000 Subject: Build failed: openssl master.22946 Message-ID: <20190228012802.1.FE9CC9F5267C1F21@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 28 03:24:05 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 28 Feb 2019 03:24:05 +0000 Subject: Build failed: openssl master.22961 Message-ID: <20190228032405.1.BBD9919AF98793F8@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 28 04:00:34 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 28 Feb 2019 04:00:34 +0000 Subject: Build failed: openssl master.22962 Message-ID: <20190228040034.1.8F676859A812EDB9@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 28 08:08:30 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 28 Feb 2019 08:08:30 +0000 Subject: Build failed: openssl master.22968 Message-ID: <20190228080830.1.DADFE363ADE8C6FF@appveyor.com> An HTML attachment was scrubbed... URL: From no-reply at appveyor.com Thu Feb 28 09:50:23 2019 From: no-reply at appveyor.com (AppVeyor) Date: Thu, 28 Feb 2019 09:50:23 +0000 Subject: Build completed: openssl master.22969 Message-ID: <20190228095023.1.A121A0794ACCF7C2@appveyor.com> An HTML attachment was scrubbed... URL: From levitte at openssl.org Thu Feb 28 12:05:43 2019 From: levitte at openssl.org (Richard Levitte) Date: Thu, 28 Feb 2019 12:05:43 +0000 Subject: [openssl] master update Message-ID: <1551355543.080991.11577.nullmailer@dev.openssl.org> The branch master has been updated via cee719c2d8e4bfeb1f10d8dc0e86809b3cfaabc5 (commit) from 8e7984e5783877c58cddc7b4e668401580ab4467 (commit) - Log ----------------------------------------------------------------- commit cee719c2d8e4bfeb1f10d8dc0e86809b3cfaabc5 Author: Richard Levitte Date: Thu Feb 28 10:31:20 2019 +0100 The use of the likes of UINT32_MAX requires internal/numbers.h Found a few more cases. Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8366) ----------------------------------------------------------------------- Summary of changes: crypto/evp/pkey_kdf.c | 1 + crypto/kdf/hkdf.c | 1 + crypto/kdf/sshkdf.c | 1 + 3 files changed, 3 insertions(+) diff --git a/crypto/evp/pkey_kdf.c b/crypto/evp/pkey_kdf.c index ddb682c..f983ad2 100644 --- a/crypto/evp/pkey_kdf.c +++ b/crypto/evp/pkey_kdf.c @@ -12,6 +12,7 @@ #include #include #include +#include "internal/numbers.h" #include "internal/evp_int.h" static int pkey_kdf_init(EVP_PKEY_CTX *ctx) diff --git a/crypto/kdf/hkdf.c b/crypto/kdf/hkdf.c index 5540da3..bfccf16 100644 --- a/crypto/kdf/hkdf.c +++ b/crypto/kdf/hkdf.c @@ -14,6 +14,7 @@ #include #include #include "internal/cryptlib.h" +#include "internal/numbers.h" #include "internal/evp_int.h" #include "kdf_local.h" diff --git a/crypto/kdf/sshkdf.c b/crypto/kdf/sshkdf.c index 24f37cb..300e1ad 100644 --- a/crypto/kdf/sshkdf.c +++ b/crypto/kdf/sshkdf.c @@ -13,6 +13,7 @@ #include #include #include "internal/cryptlib.h" +#include "internal/numbers.h" #include "internal/evp_int.h" #include "kdf_local.h" From levitte at openssl.org Thu Feb 28 12:07:11 2019 From: levitte at openssl.org (Richard Levitte) Date: Thu, 28 Feb 2019 12:07:11 +0000 Subject: [openssl] master update Message-ID: <1551355631.994070.13415.nullmailer@dev.openssl.org> The branch master has been updated via 69f6b3ceaba493e70e1296880ea6c93e40714f0f (commit) from cee719c2d8e4bfeb1f10d8dc0e86809b3cfaabc5 (commit) - Log ----------------------------------------------------------------- commit 69f6b3ceaba493e70e1296880ea6c93e40714f0f Author: Richard Levitte Date: Thu Feb 28 11:30:19 2019 +0100 apps/ca.c: only output DER with SPKAC input and when -out is chosen So say the docs Fixes #8055 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8368) ----------------------------------------------------------------------- Summary of changes: apps/ca.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ca.c b/apps/ca.c index b4ac86d..4464b2b 100644 --- a/apps/ca.c +++ b/apps/ca.c @@ -722,7 +722,7 @@ end_of_options: /*****************************************************************/ if (req || gencrl) { - if (spkac_file != NULL) { + if (spkac_file != NULL && outfile != NULL) { output_der = 1; batch = 1; } From levitte at openssl.org Thu Feb 28 12:09:17 2019 From: levitte at openssl.org (Richard Levitte) Date: Thu, 28 Feb 2019 12:09:17 +0000 Subject: [openssl] OpenSSL_1_1_1-stable update Message-ID: <1551355757.422582.15540.nullmailer@dev.openssl.org> The branch OpenSSL_1_1_1-stable has been updated via 0342e42d864b7a670b4403389df057c4da6d7975 (commit) via 3dee23a6840add98798260e5faa76205e77120a5 (commit) via d1d0598b7ffcb3f56962ec3cb4c2c2cb8679042f (commit) via ed8a604958484e19408775fa20aa973638875330 (commit) via cd7dc67c4460947b6139cd08bc23a84e3d8bb429 (commit) from dbb1340314fcec37662d79720e6566fdd5a232e8 (commit) - Log ----------------------------------------------------------------- commit 0342e42d864b7a670b4403389df057c4da6d7975 Author: Richard Levitte Date: Tue Feb 26 23:18:02 2019 +0100 Configure: support a few more "make variables" defaulting from env CFLAGS, CXXFLAGS, CPPFLAGS, LDFLAGS, and LDLIBS (cherry picked from commit 8e7984e5783877c58cddc7b4e668401580ab4467) Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8359) commit 3dee23a6840add98798260e5faa76205e77120a5 Author: Richard Levitte Date: Tue Feb 26 09:34:00 2019 +0100 .travis.yml: change -std=c89 to -ansi For C, -ansi is equivalent to -std=c90 For C++, -ansi is equivalent to -std=c++98 We also place -ansi in CPPFLAGS instead of the usual command line config, to avoid getting it when linking (clang complains) (cherry picked from commit 874f785988c17991051d36a0407a87b36c463a94) Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8359) commit d1d0598b7ffcb3f56962ec3cb4c2c2cb8679042f Author: Richard Levitte Date: Tue Feb 26 09:32:52 2019 +0100 Configuration: divide devteam flags into language specific sets Some of the devteam flags are not for C++ (cherry picked from commit e373c70a3e535b560f6b6bade914a724aa975c55) Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8359) commit ed8a604958484e19408775fa20aa973638875330 Author: Richard Levitte Date: Mon Feb 25 11:43:00 2019 +0100 Do buildtests on our public header files with C++ as well This ensures that we don't mistakenly use C++ keywords anywhere public. Related to #8313 (cherry picked from commit 9f27d4bf32c0465270e1922365b21825a0f7a42a) Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8359) commit cd7dc67c4460947b6139cd08bc23a84e3d8bb429 Author: Richard Levitte Date: Thu Feb 14 16:26:40 2019 +0100 Configure: make --strict-warnings a regular user provided compiler option This makes `--strict-warnings` into a compiler pseudo-option, i.e. it gets treated the same way as any other compiler option given on the configuration command line, but is retroactively replaced by actual compiler warning options, depending on what compiler is used. This makes it easier to see in what order options are given to the compiler from the configuration command line, i.e. this: ./config -Wall --strict-warnings would give the compiler flags in the same order as they're given, i.e.: -Wall -Werror -Wno-whatever ... instead of what we got previously: -Werror -Wno-whatever ... -Wall (cherry picked from commit fcee53948b7f9a5951d42f4ee321e706ea6b4b84) Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8359) ----------------------------------------------------------------------- Summary of changes: .travis.yml | 2 +- Configurations/90-team.norelease.conf | 10 ++- Configure | 131 +++++++++++++++++++--------------- test/build.info | 16 +++-- 4 files changed, 95 insertions(+), 64 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0124368..3184308 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,7 @@ compiler: env: - CONFIG_OPTS="" DESTDIR="_install" - CONFIG_OPTS="no-asm -Werror --debug no-afalgeng no-shared enable-crypto-mdebug enable-rc5 enable-md2" - - CONFIG_OPTS="no-asm no-makedepend --strict-warnings -std=c89 -D_DEFAULT_SOURCE" BUILDONLY="yes" CHECKDOCS="yes" GENERATE="yes" + - CONFIG_OPTS="no-asm no-makedepend --strict-warnings -D_DEFAULT_SOURCE" BUILDONLY="yes" CHECKDOCS="yes" GENERATE="yes" CPPFLAGS="-ansi" matrix: include: diff --git a/Configurations/90-team.norelease.conf b/Configurations/90-team.norelease.conf index a9ab98d..45f1811 100644 --- a/Configurations/90-team.norelease.conf +++ b/Configurations/90-team.norelease.conf @@ -18,7 +18,8 @@ my %targets = ( "debug-erbridge" => { inherit_from => [ 'BASE_unix', "x86_64_asm" ], cc => "gcc", - cflags => combine("$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -m64 -DL_ENDIAN -DTERMIO -g", + cflags => combine(join(' ', @{$gcc_devteam_warn{CFLAGS}}), + "-DBN_DEBUG -DCONF_DEBUG -m64 -DL_ENDIAN -DTERMIO -g", threads("-D_REENTRANT")), ex_libs => add(" ","-ldl"), bn_ops => "SIXTY_FOUR_BIT_LONG", @@ -82,7 +83,8 @@ my %targets = ( "debug-test-64-clang" => { inherit_from => [ 'BASE_unix', "x86_64_asm" ], cc => "clang", - cflags => combine("$gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe", + cflags => combine(join(' ', @{$gcc_devteam_warn{CFLAGS}}), + "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe", threads("${BSDthreads}")), bn_ops => "SIXTY_FOUR_BIT_LONG", thread_scheme => "pthreads", @@ -95,7 +97,9 @@ my %targets = ( "darwin64-debug-test-64-clang" => { inherit_from => [ 'BASE_unix', "x86_64_asm" ], cc => "clang", - cflags => combine("-arch x86_64 -DL_ENDIAN $gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe", + cflags => combine("-arch x86_64 -DL_ENDIAN", + join(' ', @{$gcc_devteam_warn{CFLAGS}}), + "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe", threads("${BSDthreads}")), sys_id => "MACOSX", bn_ops => "SIXTY_FOUR_BIT_LONG", diff --git a/Configure b/Configure index 65aa110..6ef6415 100755 --- a/Configure +++ b/Configure @@ -119,22 +119,27 @@ my $usage="Usage: Configure [no- ...] [enable- ...] [-Dxxx] [-lx # code, so we just tell compiler to be pedantic about everything # but 'long long' type. -my $gcc_devteam_warn = "-DDEBUG_UNUSED" - . " -DPEDANTIC -pedantic -Wno-long-long" - . " -Wall" - . " -Wextra" - . " -Wno-unused-parameter" - . " -Wno-missing-field-initializers" - . " -Wswitch" - . " -Wsign-compare" - . " -Wmissing-prototypes" - . " -Wstrict-prototypes" - . " -Wshadow" - . " -Wformat" - . " -Wtype-limits" - . " -Wundef" - . " -Werror" - ; +my %gcc_devteam_warn = (); +{ + my @common = qw( -DDEBUG_UNUSED + -DPEDANTIC -pedantic -Wno-long-long + -Wall + -Wextra + -Wno-unused-parameter + -Wno-missing-field-initializers + -Wswitch + -Wsign-compare + -Wshadow + -Wformat + -Wtype-limits + -Wundef + -Werror ); + %gcc_devteam_warn = ( + CFLAGS => [ @common, qw( -Wmissing-prototypes + -Wstrict-prototypes ) ], + CXXFLAGS => [ @common ] + ); +} # These are used in addition to $gcc_devteam_warn when the compiler is clang. # TODO(openssl-team): fix problems and investigate if (at least) the @@ -144,16 +149,20 @@ my $gcc_devteam_warn = "-DDEBUG_UNUSED" # -Wlanguage-extension-token -- no, we use asm() # -Wunused-macros -- no, too tricky for BN and _XOPEN_SOURCE etc # -Wextended-offsetof -- no, needed in CMS ASN1 code -my $clang_devteam_warn = "" - . " -Wswitch-default" - . " -Wno-parentheses-equality" - . " -Wno-language-extension-token" - . " -Wno-extended-offsetof" - . " -Wconditional-uninitialized" - . " -Wincompatible-pointer-types-discards-qualifiers" - . " -Wmissing-variable-declarations" - . " -Wno-unknown-warning-option" - ; +my %clang_devteam_warn = (); +{ + my @common = qw( -Wswitch-default + -Wno-parentheses-equality + -Wno-language-extension-token + -Wno-extended-offsetof + -Wconditional-uninitialized + -Wincompatible-pointer-types-discards-qualifiers + -Wno-unknown-warning-option ); + %clang_devteam_warn = ( + CFLAGS => [ @common, qw( -Wmissing-variable-declarations ) ], + CXXFLAGS => [ @common ] + ); +} # This adds backtrace information to the memory leak info. Is only used # when crypto-mdebug-backtrace is enabled. @@ -541,18 +550,18 @@ my %user = ( AS => undef, ASFLAGS => [], CC => env('CC'), - CFLAGS => [], + CFLAGS => [ env('CFLAGS') || () ], CXX => env('CXX'), - CXXFLAGS => [], + CXXFLAGS => [ env('CXXFLAGS') || () ], CPP => undef, - CPPFLAGS => [], # -D, -I, -Wp, + CPPFLAGS => [ env('CPPFLAGS') || () ], # -D, -I, -Wp, CPPDEFINES => [], # Alternative for -D CPPINCLUDES => [], # Alternative for -I CROSS_COMPILE => env('CROSS_COMPILE'), HASHBANGPERL=> env('HASHBANGPERL') || env('PERL'), LD => undef, - LDFLAGS => [], # -L, -Wl, - LDLIBS => [], # -l + LDFLAGS => [ env('LDFLAGS') || () ], # -L, -Wl, + LDLIBS => [ env('LDLIBS') || () ], # -l MT => undef, MTFLAGS => [], PERL => env('PERL') || ($^O ne "VMS" ? $^X : "perl"), @@ -747,7 +756,11 @@ while (@argvcopy) } elsif (/^--strict-warnings$/) { - $strict_warnings = 1; + # Pretend that our strict flags is a C flag, and replace it + # with the proper flags later on + push @{$useradd{CFLAGS}}, '--ossl-strict-warnings'; + push @{$useradd{CXXFLAGS}}, '--ossl-strict-warnings'; + $strict_warnings=1; } elsif (/^--debug$/) { @@ -1426,7 +1439,10 @@ unless ($disabled{asm}) { } } -my %predefined = compiler_predefined($config{CROSS_COMPILE}.$config{CC}); +my %predefined_C = compiler_predefined($config{CROSS_COMPILE}.$config{CC}); +my %predefined_CXX = $config{CXX} + ? compiler_predefined($config{CROSS_COMPILE}.$config{CXX}) + : (); # Check for makedepend capabilities. if (!$disabled{makedepend}) { @@ -1434,8 +1450,8 @@ if (!$disabled{makedepend}) { # For VC- and vms- targets, there's nothing more to do here. The # functionality is hard coded in the corresponding build files for # cl (Windows) and CC/DECC (VMS). - } elsif (($predefined{__GNUC__} // -1) >= 3 - && !($predefined{__APPLE_CC__} && !$predefined{__clang__})) { + } elsif (($predefined_C{__GNUC__} // -1) >= 3 + && !($predefined_C{__APPLE_CC__} && !$predefined_C{__clang__})) { # We know that GNU C version 3 and up as well as all clang # versions support dependency generation, but Xcode did not # handle $cc -M before clang support (but claims __GNUC__ = 3) @@ -1448,9 +1464,9 @@ if (!$disabled{makedepend}) { } } -if (!$disabled{asm} && !$predefined{__MACH__} && $^O ne 'VMS') { +if (!$disabled{asm} && !$predefined_C{__MACH__} && $^O ne 'VMS') { # probe for -Wa,--noexecstack option... - if ($predefined{__clang__}) { + if ($predefined_C{__clang__}) { # clang has builtin assembler, which doesn't recognize --help, # but it apparently recognizes the option in question on all # supported platforms even when it's meaningless. In other words @@ -1510,33 +1526,36 @@ if (defined($config{api})) { push @{$config{defines}}, $apiflag; } +my %strict_warnings_collection=( CFLAGS => [], CXXFLAGS => []); if ($strict_warnings) { my $wopt; - my $gccver = $predefined{__GNUC__} // -1; + my $gccver = $predefined_C{__GNUC__} // -1; + my $gxxver = $predefined_CXX{__GNUC__} // -1; - die "ERROR --strict-warnings requires gcc[>=4] or gcc-alike" + warn "WARNING --strict-warnings requires gcc[>=4] or gcc-alike" unless $gccver >= 4; - foreach $wopt (split /\s+/, $gcc_devteam_warn) - { - push @{$config{cflags}}, $wopt - unless grep { $_ eq $wopt } @{$config{cflags}}; - push @{$config{cxxflags}}, $wopt - if ($config{CXX} - && !grep { $_ eq $wopt } @{$config{cxxflags}}); - } - if (defined($predefined{__clang__})) + warn "WARNING --strict-warnings requires g++[>=4] or g++-alike" + unless $gxxver >= 4; + foreach (qw(CFLAGS CXXFLAGS)) { - foreach $wopt (split /\s+/, $clang_devteam_warn) - { - push @{$config{cflags}}, $wopt - unless grep { $_ eq $wopt } @{$config{cflags}}; - push @{$config{cxxflags}}, $wopt - if ($config{CXX} - && !grep { $_ eq $wopt } @{$config{cxxflags}}); - } + push @{$strict_warnings_collection{$_}}, + @{$gcc_devteam_warn{$_}}; } + push @{$strict_warnings_collection{CFLAGS}}, + @{$clang_devteam_warn{CFLAGS}} + if (defined($predefined_C{__clang__})); + push @{$strict_warnings_collection{CXXFLAGS}}, + @{$clang_devteam_warn{CXXFLAGS}} + if (defined($predefined_CXX{__clang__})); } +foreach my $idx (qw(CFLAGS CXXFLAGS)) + { + $useradd{$idx} = [ map { $_ eq '--ossl-strict-warnings' + ? @{$strict_warnings_collection{$idx}} + : ( $_ ) } + @{$useradd{$idx}} ]; + } unless ($disabled{"crypto-mdebug-backtrace"}) { diff --git a/test/build.info b/test/build.info index 52d4ee7..22a7d19 100644 --- a/test/build.info +++ b/test/build.info @@ -579,11 +579,19 @@ ENDIF next if grep { lc("$name.h") =~ m/$_/i } @nogo_headers_re; $OUT .= <<"_____"; - PROGRAMS_NO_INST=buildtest_$name + PROGRAMS_NO_INST=buildtest_c_$name + SOURCE[buildtest_c_$name]=buildtest_$name.c GENERATE[buildtest_$name.c]=generate_buildtest.pl $name - SOURCE[buildtest_$name]=buildtest_$name.c - INCLUDE[buildtest_$name]=../include - DEPEND[buildtest_$name]=../libssl ../libcrypto + INCLUDE[buildtest_c_$name]=../include + DEPEND[buildtest_c_$name]=../libssl ../libcrypto +_____ + $OUT .= <<"_____" if $config{CXX}; + + PROGRAMS_NO_INST=buildtest_cc_$name + SOURCE[buildtest_cc_$name]=buildtest_$name.cc + GENERATE[buildtest_$name.cc]=generate_buildtest.pl $name + INCLUDE[buildtest_cc_$name]=../include + DEPEND[buildtest_cc_$name]=../libssl ../libcrypto _____ } -} From matt at openssl.org Thu Feb 28 12:15:10 2019 From: matt at openssl.org (Matt Caswell) Date: Thu, 28 Feb 2019 12:15:10 +0000 Subject: [web] master update Message-ID: <1551356110.458288.20237.nullmailer@dev.openssl.org> The branch master has been updated via 160ebaa336556bd42c4df6354f70cabeab77ca7c (commit) from 419c4314952ac1ad9586bb9b767447242bdfca79 (commit) - Log ----------------------------------------------------------------- commit 160ebaa336556bd42c4df6354f70cabeab77ca7c Author: Matt Caswell Date: Wed Feb 27 16:13:35 2019 +0000 Add extended support to the support contracts page Reviewed-by: Tim Hudson Reviewed-by: Richard Levitte Reviewed-by: Paul Dale (Merged from https://github.com/openssl/web/pull/122) ----------------------------------------------------------------------- Summary of changes: support/contracts.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/support/contracts.html b/support/contracts.html index 7f35804..1b91cd1 100644 --- a/support/contracts.html +++ b/support/contracts.html @@ -41,6 +41,8 @@

US$50,000 annually

  • A custom support contract designed to meet the needs of a specific Enterprise customer +
  • Includes extended support for the immediately previous LTS release + beyond the public EOL date for that release
  • Exact costs will depend on the terms of the agreed support contract

The premium support plan is intended for the large enterprise From builds at travis-ci.org Thu Feb 28 12:23:31 2019 From: builds at travis-ci.org (Travis CI) Date: Thu, 28 Feb 2019 12:23:31 +0000 Subject: Still Failing: openssl/openssl#23575 (master - cee719c) In-Reply-To: Message-ID: <5c77d2c331428_43f8c6dc248d4139777@9085cf05-a754-4d3e-8092-cd80fdcf091c.mail> Build Update for openssl/openssl ------------------------------------- Build: #23575 Status: Still Failing Duration: 17 mins and 5 secs Commit: cee719c (master) Author: Richard Levitte Message: The use of the likes of UINT32_MAX requires internal/numbers.h Found a few more cases. Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8366) View the changeset: https://github.com/openssl/openssl/compare/8e7984e57838...cee719c2d8e4 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/499772567?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From builds at travis-ci.org Thu Feb 28 12:33:51 2019 From: builds at travis-ci.org (Travis CI) Date: Thu, 28 Feb 2019 12:33:51 +0000 Subject: Still Failing: openssl/openssl#23576 (master - 69f6b3c) In-Reply-To: Message-ID: <5c77d52f14742_43ff58209fb8418467f@7ff41075-3c1c-45fc-8c73-4c1451cfd21f.mail> Build Update for openssl/openssl ------------------------------------- Build: #23576 Status: Still Failing Duration: 23 mins and 51 secs Commit: 69f6b3c (master) Author: Richard Levitte Message: apps/ca.c: only output DER with SPKAC input and when -out is chosen So say the docs Fixes #8055 Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/8368) View the changeset: https://github.com/openssl/openssl/compare/cee719c2d8e4...69f6b3ceaba4 View the full build log and details: https://travis-ci.org/openssl/openssl/builds/499773037?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From builds at travis-ci.org Thu Feb 28 12:44:23 2019 From: builds at travis-ci.org (Travis CI) Date: Thu, 28 Feb 2019 12:44:23 +0000 Subject: Broken: openssl/openssl#23577 (OpenSSL_1_1_1-stable - 0342e42) In-Reply-To: Message-ID: <5c77d7a7224c5_43fa0ab69af9c170659@f6e1c8cb-dd48-49d1-9b60-64711da1d3f3.mail> Build Update for openssl/openssl ------------------------------------- Build: #23577 Status: Broken Duration: 21 mins and 36 secs Commit: 0342e42 (OpenSSL_1_1_1-stable) Author: Richard Levitte Message: Configure: support a few more "make variables" defaulting from env CFLAGS, CXXFLAGS, CPPFLAGS, LDFLAGS, and LDLIBS (cherry picked from commit 8e7984e5783877c58cddc7b4e668401580ab4467) Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8359) View the changeset: https://github.com/openssl/openssl/compare/dbb1340314fc...0342e42d864b View the full build log and details: https://travis-ci.org/openssl/openssl/builds/499773876?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the openssl/openssl repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=5849220&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications. -------------- next part -------------- An HTML attachment was scrubbed... URL: From openssl at openssl.org Thu Feb 28 13:32:01 2019 From: openssl at openssl.org (OpenSSL run-checker) Date: Thu, 28 Feb 2019 13:32:01 +0000 Subject: FAILED build of OpenSSL branch master with options -d --strict-warnings no-sm2 Message-ID: <1551360721.855769.24185.nullmailer@run.openssl.org> Platform and configuration command: $ uname -a Linux run 4.4.0-135-generic #161-Ubuntu SMP Mon Aug 27 10:45:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ CC=clang ../openssl/config -d --strict-warnings no-sm2 Commit log since last time: 8e7984e578 Configure: support a few more "make variables" defaulting from env 874f785988 .travis.yml: change -std=c89 to -ansi e373c70a3e Configuration: divide devteam flags into language specific sets 9f27d4bf32 Do buildtests on our public header files with C++ as well 4ca00f934f OpenSSL::Util::Pod: allow slashes in names 7753be74a3 Replumbing: Add include/openssl/core.h, initially with core types 8d76481b18 Implement SSH KDF 149c12d5e4 Make the padlock engine build correctly 2fce15b58b Ensure configured module specific and application specific defines are used 88780b1c5f Add PADLOCK_ASM to dso_defines rather than lib_defines 546ca2f4f5 The use of the likes of UINT32_MAX requires internal/numbers.h e766f4a053 Fix the default digest algorthm of SM2 a7cef52f9b Support raw input data in apps/pkeyutl Build log ended with (last 100 lines): ../../openssl/test/recipes/30-test_pbelu.t .................... ok ../../openssl/test/recipes/30-test_pkey_meth.t ................ ok ../../openssl/test/recipes/30-test_pkey_meth_kdf.t ............ ok ../../openssl/test/recipes/40-test_rehash.t ................... ok ../../openssl/test/recipes/60-test_x509_check_cert_pkey.t ..... ok ../../openssl/test/recipes/60-test_x509_dup_cert.t ............ ok ../../openssl/test/recipes/60-test_x509_store.t ............... ok ../../openssl/test/recipes/60-test_x509_time.t ................ ok ../../openssl/test/recipes/70-test_asyncio.t .................. ok ../../openssl/test/recipes/70-test_bad_dtls.t ................. ok ../../openssl/test/recipes/70-test_clienthello.t .............. ok ../../openssl/test/recipes/70-test_comp.t ..................... ok ../../openssl/test/recipes/70-test_key_share.t ................ ok ../../openssl/test/recipes/70-test_packet.t ................... ok ../../openssl/test/recipes/70-test_recordlen.t ................ ok ../../openssl/test/recipes/70-test_renegotiation.t ............ ok ../../openssl/test/recipes/70-test_servername.t ............... ok ../../openssl/test/recipes/70-test_sslcbcpadding.t ............ ok ../../openssl/test/recipes/70-test_sslcertstatus.t ............ ok ../../openssl/test/recipes/70-test_sslextension.t ............. ok ../../openssl/test/recipes/70-test_sslmessages.t .............. ok ../../openssl/test/recipes/70-test_sslrecords.t ............... ok ../../openssl/test/recipes/70-test_sslsessiontick.t ........... ok ../../openssl/test/recipes/70-test_sslsigalgs.t ............... ok ../../openssl/test/recipes/70-test_sslsignature.t ............. ok ../../openssl/test/recipes/70-test_sslskewith0p.t ............. ok ../../openssl/test/recipes/70-test_sslversions.t .............. ok ../../openssl/test/recipes/70-test_sslvertol.t ................ ok ../../openssl/test/recipes/70-test_tls13alerts.t .............. ok ../../openssl/test/recipes/70-test_tls13cookie.t .............. ok ../../openssl/test/recipes/70-test_tls13downgrade.t ........... ok ../../openssl/test/recipes/70-test_tls13hrr.t ................. ok ../../openssl/test/recipes/70-test_tls13kexmodes.t ............ ok ../../openssl/test/recipes/70-test_tls13messages.t ............ ok ../../openssl/test/recipes/70-test_tls13psk.t ................. ok ../../openssl/test/recipes/70-test_tlsextms.t ................. ok ../../openssl/test/recipes/70-test_verify_extra.t ............. ok ../../openssl/test/recipes/70-test_wpacket.t .................. ok ../../openssl/test/recipes/80-test_ca.t ....................... ok ../../openssl/test/recipes/80-test_cipherbytes.t .............. ok ../../openssl/test/recipes/80-test_cipherlist.t ............... ok ../../openssl/test/recipes/80-test_ciphername.t ............... ok ../../openssl/test/recipes/80-test_cms.t ...................... ok ../../openssl/test/recipes/80-test_cmsapi.t ................... ok ../../openssl/test/recipes/80-test_ct.t ....................... ok ../../openssl/test/recipes/80-test_dane.t ..................... ok ../../openssl/test/recipes/80-test_dtls.t ..................... ok ../../openssl/test/recipes/80-test_dtls_mtu.t ................. ok ../../openssl/test/recipes/80-test_dtlsv1listen.t ............. ok ../../openssl/test/recipes/80-test_ocsp.t ..................... ok ../../openssl/test/recipes/80-test_pkcs12.t ................... ok ../../openssl/test/recipes/80-test_ssl_new.t .................. ok ../../openssl/test/recipes/80-test_ssl_old.t .................. ok ../../openssl/test/recipes/80-test_ssl_test_ctx.t ............. ok ../../openssl/test/recipes/80-test_sslcorrupt.t ............... ok ../../openssl/test/recipes/80-test_tsa.t ...................... ok ../../openssl/test/recipes/80-test_x509aux.t .................. ok ../../openssl/test/recipes/90-test_asn1_time.t ................ ok ../../openssl/test/recipes/90-test_async.t .................... ok ../../openssl/test/recipes/90-test_bio_enc.t .................. ok ../../openssl/test/recipes/90-test_bio_memleak.t .............. ok ../../openssl/test/recipes/90-test_constant_time.t ............ ok ../../openssl/test/recipes/90-test_fatalerr.t ................. ok ../../openssl/test/recipes/90-test_gmdiff.t ................... ok ../../openssl/test/recipes/90-test_gost.t ..................... ok ../../openssl/test/recipes/90-test_ige.t ...................... ok ../../openssl/test/recipes/90-test_includes.t ................. ok ../../openssl/test/recipes/90-test_memleak.t .................. ok ../../openssl/test/recipes/90-test_overhead.t ................. skipped: Only supported in no-shared builds ../../openssl/test/recipes/90-test_secmem.t ................... ok ../../openssl/test/recipes/90-test_shlibload.t ................ ok ../../openssl/test/recipes/90-test_srp.t ...................... ok ../../openssl/test/recipes/90-test_sslapi.t ................... ok ../../openssl/test/recipes/90-test_sslbuffers.t ............... ok ../../openssl/test/recipes/90-test_store.t .................... ok ../../openssl/test/recipes/90-test_sysdefault.t ............... ok ../../openssl/test/recipes/90-test_threads.t .................. ok ../../openssl/test/recipes/90-test_time_offset.t .............. ok ../../openssl/test/recipes/90-test_tls13ccs.t ................. ok ../../openssl/test/recipes/90-test_tls13encryption.t .......... ok ../../openssl/test/recipes/90-test_tls13secrets.t ............. ok ../../openssl/test/recipes/90-test_v3name.t ................... ok ../../openssl/test/recipes/95-test_external_boringssl.t ....... skipped: No external tests in this configuration ../../openssl/test/recipes/95-test_external_krb5.t ............ skipped: No external tests in this configuration ../../openssl/test/recipes/95-test_external_pyca.t ............ skipped: No external tests in this configuration ../../openssl/test/recipes/99-test_ecstress.t ................. ok ../../openssl/test/recipes/99-test_fuzz.t ..................... ok Test Summary Report ------------------- ../../openssl/test/recipes/20-test_pkeyutl.t (Wstat: 512 Tests: 2 Failed: 2) Failed tests: 1-2 Non-zero exit status: 2 Files=160, Tests=1461, 239 wallclock secs ( 2.37 usr 0.25 sys + 213.32 cusr 9.57 csys = 225.51 CPU) Result: FAIL Makefile:197: recipe for target '_tests' failed make[1]: *** [_tests] Error 1 make[1]: Leaving directory '/home/openssl/run-checker/no-sm2' Makefile:195: recipe for target 'tests' failed make: *** [tests] Error 2 From openssl at openssl.org Thu Feb 28 13:39:07 2019 From: openssl at openssl.org (OpenSSL run-checker) Date: Thu, 28 Feb 2019 13:39:07 +0000 Subject: FAILED build of OpenSSL branch master with options -d --strict-warnings no-sm3 Message-ID: <1551361147.200849.21332.nullmailer@run.openssl.org> Platform and configuration command: $ uname -a Linux run 4.4.0-135-generic #161-Ubuntu SMP Mon Aug 27 10:45:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ CC=clang ../openssl/config -d --strict-warnings no-sm3 Commit log since last time: 8e7984e578 Configure: support a few more "make variables" defaulting from env 874f785988 .travis.yml: change -std=c89 to -ansi e373c70a3e Configuration: divide devteam flags into language specific sets 9f27d4bf32 Do buildtests on our public header files with C++ as well 4ca00f934f OpenSSL::Util::Pod: allow slashes in names 7753be74a3 Replumbing: Add include/openssl/core.h, initially with core types 8d76481b18 Implement SSH KDF 149c12d5e4 Make the padlock engine build correctly 2fce15b58b Ensure configured module specific and application specific defines are used 88780b1c5f Add PADLOCK_ASM to dso_defines rather than lib_defines 546ca2f4f5 The use of the likes of UINT32_MAX requires internal/numbers.h e766f4a053 Fix the default digest algorthm of SM2 a7cef52f9b Support raw input data in apps/pkeyutl Build log ended with (last 100 lines): ../../openssl/test/recipes/30-test_pbelu.t .................... ok ../../openssl/test/recipes/30-test_pkey_meth.t ................ ok ../../openssl/test/recipes/30-test_pkey_meth_kdf.t ............ ok ../../openssl/test/recipes/40-test_rehash.t ................... ok ../../openssl/test/recipes/60-test_x509_check_cert_pkey.t ..... ok ../../openssl/test/recipes/60-test_x509_dup_cert.t ............ ok ../../openssl/test/recipes/60-test_x509_store.t ............... ok ../../openssl/test/recipes/60-test_x509_time.t ................ ok ../../openssl/test/recipes/70-test_asyncio.t .................. ok ../../openssl/test/recipes/70-test_bad_dtls.t ................. ok ../../openssl/test/recipes/70-test_clienthello.t .............. ok ../../openssl/test/recipes/70-test_comp.t ..................... ok ../../openssl/test/recipes/70-test_key_share.t ................ ok ../../openssl/test/recipes/70-test_packet.t ................... ok ../../openssl/test/recipes/70-test_recordlen.t ................ ok ../../openssl/test/recipes/70-test_renegotiation.t ............ ok ../../openssl/test/recipes/70-test_servername.t ............... ok ../../openssl/test/recipes/70-test_sslcbcpadding.t ............ ok ../../openssl/test/recipes/70-test_sslcertstatus.t ............ ok ../../openssl/test/recipes/70-test_sslextension.t ............. ok ../../openssl/test/recipes/70-test_sslmessages.t .............. ok ../../openssl/test/recipes/70-test_sslrecords.t ............... ok ../../openssl/test/recipes/70-test_sslsessiontick.t ........... ok ../../openssl/test/recipes/70-test_sslsigalgs.t ............... ok ../../openssl/test/recipes/70-test_sslsignature.t ............. ok ../../openssl/test/recipes/70-test_sslskewith0p.t ............. ok ../../openssl/test/recipes/70-test_sslversions.t .............. ok ../../openssl/test/recipes/70-test_sslvertol.t ................ ok ../../openssl/test/recipes/70-test_tls13alerts.t .............. ok ../../openssl/test/recipes/70-test_tls13cookie.t .............. ok ../../openssl/test/recipes/70-test_tls13downgrade.t ........... ok ../../openssl/test/recipes/70-test_tls13hrr.t ................. ok ../../openssl/test/recipes/70-test_tls13kexmodes.t ............ ok ../../openssl/test/recipes/70-test_tls13messages.t ............ ok ../../openssl/test/recipes/70-test_tls13psk.t ................. ok ../../openssl/test/recipes/70-test_tlsextms.t ................. ok ../../openssl/test/recipes/70-test_verify_extra.t ............. ok ../../openssl/test/recipes/70-test_wpacket.t .................. ok ../../openssl/test/recipes/80-test_ca.t ....................... ok ../../openssl/test/recipes/80-test_cipherbytes.t .............. ok ../../openssl/test/recipes/80-test_cipherlist.t ............... ok ../../openssl/test/recipes/80-test_ciphername.t ............... ok ../../openssl/test/recipes/80-test_cms.t ...................... ok ../../openssl/test/recipes/80-test_cmsapi.t ................... ok ../../openssl/test/recipes/80-test_ct.t ....................... ok ../../openssl/test/recipes/80-test_dane.t ..................... ok ../../openssl/test/recipes/80-test_dtls.t ..................... ok ../../openssl/test/recipes/80-test_dtls_mtu.t ................. ok ../../openssl/test/recipes/80-test_dtlsv1listen.t ............. ok ../../openssl/test/recipes/80-test_ocsp.t ..................... ok ../../openssl/test/recipes/80-test_pkcs12.t ................... ok ../../openssl/test/recipes/80-test_ssl_new.t .................. ok ../../openssl/test/recipes/80-test_ssl_old.t .................. ok ../../openssl/test/recipes/80-test_ssl_test_ctx.t ............. ok ../../openssl/test/recipes/80-test_sslcorrupt.t ............... ok ../../openssl/test/recipes/80-test_tsa.t ...................... ok ../../openssl/test/recipes/80-test_x509aux.t .................. ok ../../openssl/test/recipes/90-test_asn1_time.t ................ ok ../../openssl/test/recipes/90-test_async.t .................... ok ../../openssl/test/recipes/90-test_bio_enc.t .................. ok ../../openssl/test/recipes/90-test_bio_memleak.t .............. ok ../../openssl/test/recipes/90-test_constant_time.t ............ ok ../../openssl/test/recipes/90-test_fatalerr.t ................. ok ../../openssl/test/recipes/90-test_gmdiff.t ................... ok ../../openssl/test/recipes/90-test_gost.t ..................... ok ../../openssl/test/recipes/90-test_ige.t ...................... ok ../../openssl/test/recipes/90-test_includes.t ................. ok ../../openssl/test/recipes/90-test_memleak.t .................. ok ../../openssl/test/recipes/90-test_overhead.t ................. skipped: Only supported in no-shared builds ../../openssl/test/recipes/90-test_secmem.t ................... ok ../../openssl/test/recipes/90-test_shlibload.t ................ ok ../../openssl/test/recipes/90-test_srp.t ...................... ok ../../openssl/test/recipes/90-test_sslapi.t ................... ok ../../openssl/test/recipes/90-test_sslbuffers.t ............... ok ../../openssl/test/recipes/90-test_store.t .................... ok ../../openssl/test/recipes/90-test_sysdefault.t ............... ok ../../openssl/test/recipes/90-test_threads.t .................. ok ../../openssl/test/recipes/90-test_time_offset.t .............. ok ../../openssl/test/recipes/90-test_tls13ccs.t ................. ok ../../openssl/test/recipes/90-test_tls13encryption.t .......... ok ../../openssl/test/recipes/90-test_tls13secrets.t ............. ok ../../openssl/test/recipes/90-test_v3name.t ................... ok ../../openssl/test/recipes/95-test_external_boringssl.t ....... skipped: No external tests in this configuration ../../openssl/test/recipes/95-test_external_krb5.t ............ skipped: No external tests in this configuration ../../openssl/test/recipes/95-test_external_pyca.t ............ skipped: No external tests in this configuration ../../openssl/test/recipes/99-test_ecstress.t ................. ok ../../openssl/test/recipes/99-test_fuzz.t ..................... ok Test Summary Report ------------------- ../../openssl/test/recipes/20-test_pkeyutl.t (Wstat: 512 Tests: 2 Failed: 2) Failed tests: 1-2 Non-zero exit status: 2 Files=160, Tests=1461, 242 wallclock secs ( 2.76 usr 0.39 sys + 219.98 cusr 11.46 csys = 234.59 CPU) Result: FAIL Makefile:197: recipe for target '_tests' failed make[1]: *** [_tests] Error 1 make[1]: Leaving directory '/home/openssl/run-checker/no-sm3' Makefile:195: recipe for target 'tests' failed make: *** [tests] Error 2 From levitte at openssl.org Thu Feb 28 14:42:40 2019 From: levitte at openssl.org (Richard Levitte) Date: Thu, 28 Feb 2019 14:42:40 +0000 Subject: [web] master update Message-ID: <1551364960.074004.30139.nullmailer@dev.openssl.org> The branch master has been updated via 73fe28cd382b6b5fb3c84ec227e8dedce23c2ac4 (commit) via 3926d4eec53217895bed4a0dca5394707fbccc66 (commit) via 9873de29128aab496a239d4efb6f1f2a0fad6915 (commit) via 2caab96c8e0a03e6891a67f1a02b91f3f6f94952 (commit) via ee0137412475ec26b9a9f5f60785d849c89f231f (commit) via 8bf82949d36d42eb11836202950256db99bfcc27 (commit) via ea1a835c5069fcb1bdf1126093aeba88f90ef3f7 (commit) via b654262bace5ca81b49e0fc2e62c8ad09809d77e (commit) via d69832a8f9741ef27965e1315fdf53a081457d54 (commit) via d8d36be2491589e2aae592c65fbd5de58383ea46 (commit) via af3fbdeeb010afdb9dba864aee19e18115c0e3f5 (commit) via eb90cf76b940668286deda9035faef001e771945 (commit) via 3dcc5b7ed327b993341fe3d25f62f4aba6b4a98c (commit) via b0f6bb016691f83583ef9b7cac1f29901c1e51e6 (commit) via e1b59a61f7397e2e08e572c77997e3ef6157f064 (commit) from 160ebaa336556bd42c4df6354f70cabeab77ca7c (commit) - Log ----------------------------------------------------------------- commit 73fe28cd382b6b5fb3c84ec227e8dedce23c2ac4 Author: Richard Levitte Date: Mon Feb 25 22:08:15 2019 +0100 Add commentary in the Makefile to explain what is going on Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit 3926d4eec53217895bed4a0dca5394707fbccc66 Author: Richard Levitte Date: Mon Feb 25 01:14:46 2019 +0100 Change news/openssl-notes.html.in to use Template Toolkit Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit 9873de29128aab496a239d4efb6f1f2a0fad6915 Author: Richard Levitte Date: Mon Feb 25 01:00:36 2019 +0100 Clean up .gitignore Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit 2caab96c8e0a03e6891a67f1a02b91f3f6f94952 Author: Richard Levitte Date: Mon Feb 25 00:56:11 2019 +0100 Remove redundancy: generate vulnerabilities indexes from templates Adapt Makefile accordingly Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit ee0137412475ec26b9a9f5f60785d849c89f231f Author: Richard Levitte Date: Mon Feb 25 00:36:14 2019 +0100 Remove redundancy: generate source indexes from templates Adapt Makefile accordingly Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit 8bf82949d36d42eb11836202950256db99bfcc27 Author: Richard Levitte Date: Sun Feb 24 23:14:14 2019 +0100 Remove redundancy: remove the manpage dir cleanup from bin/mk-manpages Let the Makefile take care of it instead Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit ea1a835c5069fcb1bdf1126093aeba88f90ef3f7 Author: Richard Levitte Date: Sun Feb 24 23:13:23 2019 +0100 Remove redundancy: generate docs/manpages.html from template Change Makefile accordingly Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit b654262bace5ca81b49e0fc2e62c8ad09809d77e Author: Richard Levitte Date: Sun Feb 24 23:07:03 2019 +0100 Remove redundancy: generate all manpage indexes from templates Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit d69832a8f9741ef27965e1315fdf53a081457d54 Author: Richard Levitte Date: Sun Feb 24 14:12:54 2019 +0100 Remove redundancy: produce news/changelog.html from a template This templates produces a list of links to release changelogs from a passed list of release versions. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit d8d36be2491589e2aae592c65fbd5de58383ea46 Author: Richard Levitte Date: Sun Feb 24 14:01:32 2019 +0100 Remove redundancy: add a template processing script The choice comes to using [Template Toolkit], as it's powerful, flexible, and consistent enough. ----- [Template Toolkit]: http://www.template-toolkit.org/ Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit af3fbdeeb010afdb9dba864aee19e18115c0e3f5 Author: Richard Levitte Date: Sun Feb 24 13:31:57 2019 +0100 Remove redundancy: strip away hard coded release versions from scripts Adapt Makefile accordingly Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit eb90cf76b940668286deda9035faef001e771945 Author: Richard Levitte Date: Sun Feb 24 13:06:10 2019 +0100 Remove redundancy: documentation Move the processing of changelogs and notes to use SERIES, using GNU make features. This only does part of the job. A later commit will automatically create the whole documentation directory structure from templates. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit 3dcc5b7ed327b993341fe3d25f62f4aba6b4a98c Author: Richard Levitte Date: Sun Feb 24 12:51:16 2019 +0100 Remove redundancy: vulnerability pages Move the processing of vulnerability pages to use SERIES and OLDSERIES, using GNU make features. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit b0f6bb016691f83583ef9b7cac1f29901c1e51e6 Author: Richard Levitte Date: Sun Feb 24 12:48:34 2019 +0100 Remove redundancy: changelogs and notes Move the processing of changelogs and notes to use SERIES, using GNU make features. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) commit e1b59a61f7397e2e08e572c77997e3ef6157f064 Author: Richard Levitte Date: Sun Feb 24 12:43:00 2019 +0100 Remove redundancy: Start with defining a few variables for release series We hard code release series in much too many places, which is error prone. We start with defining a few make variables with current and older series. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/120) ----------------------------------------------------------------------- Summary of changes: .gitignore | 26 +- Makefile | 318 +++++++++++++-------- bin/from-tt | 123 ++++++++ bin/mk-mancross | 2 +- bin/mk-manpages | 51 ---- bin/mk-sitemap | 4 +- docs/man1.0.2/index.html | 40 --- docs/man1.0.2/man3/index.html | 47 --- docs/man1.0.2/man5/index.html | 41 --- docs/man1.1.0/index.html | 40 --- docs/man1.1.0/man1/index.html | 44 --- docs/man1.1.0/man7/index.html | 43 --- docs/man1.1.1/man1/index.html | 44 --- docs/man1.1.1/man3/index.html | 48 ---- docs/man1.1.1/man5/index.html | 43 --- docs/man1.1.1/man7/index.html | 43 --- docs/manmaster/index.html | 40 --- docs/manmaster/man1/index.html | 44 --- docs/manmaster/man3/index.html | 48 ---- docs/manmaster/man5/index.html | 43 --- docs/manmaster/man7/index.html | 43 --- docs/{manpages.html => manpages.html.tt} | 7 +- docs/{man1.1.1/index.html => sub-index.html.tt} | 6 +- .../man1/index.html => sub-man1-index.html.tt} | 7 +- .../man3/index.html => sub-man3-index.html.tt} | 10 +- .../man5/index.html => sub-man5-index.html.tt} | 10 +- .../man7/index.html => sub-man7-index.html.tt} | 10 +- inc/common.tt | 9 + news/{changelog.html => changelog.html.tt} | 6 +- ...openssl-notes.html.in => openssl-notes.html.tt} | 6 +- news/vulnerabilities-0.9.6.html | 39 --- news/vulnerabilities-0.9.7.html | 39 --- news/vulnerabilities-0.9.8.html | 39 --- news/vulnerabilities-1.0.0.html | 39 --- news/vulnerabilities-1.0.1.html | 39 --- news/vulnerabilities-1.0.2.html | 37 --- news/vulnerabilities-1.1.0.html | 37 --- news/vulnerabilities-1.1.1.html | 37 --- ...ulnerabilities.html => vulnerabilities.html.tt} | 2 +- source/old/0.9.x/index.html | 39 --- source/old/1.0.0/index.html | 41 --- source/old/1.0.1/index.html | 41 --- source/old/1.0.2/index.html | 41 --- source/old/1.1.0/index.html | 41 --- source/old/1.1.1/index.html | 41 --- source/old/{index.html => index.html.tt} | 10 +- source/old/{fips/index.html => sub-index.html.tt} | 5 +- 47 files changed, 377 insertions(+), 1436 deletions(-) create mode 100755 bin/from-tt delete mode 100644 docs/man1.0.2/index.html delete mode 100644 docs/man1.0.2/man3/index.html delete mode 100644 docs/man1.0.2/man5/index.html delete mode 100644 docs/man1.1.0/index.html delete mode 100644 docs/man1.1.0/man1/index.html delete mode 100644 docs/man1.1.0/man7/index.html delete mode 100644 docs/man1.1.1/man1/index.html delete mode 100644 docs/man1.1.1/man3/index.html delete mode 100644 docs/man1.1.1/man5/index.html delete mode 100644 docs/man1.1.1/man7/index.html delete mode 100644 docs/manmaster/index.html delete mode 100644 docs/manmaster/man1/index.html delete mode 100644 docs/manmaster/man3/index.html delete mode 100644 docs/manmaster/man5/index.html delete mode 100644 docs/manmaster/man7/index.html rename docs/{manpages.html => manpages.html.tt} (78%) rename docs/{man1.1.1/index.html => sub-index.html.tt} (86%) rename docs/{man1.0.2/man1/index.html => sub-man1-index.html.tt} (85%) rename docs/{man1.1.0/man3/index.html => sub-man3-index.html.tt} (84%) rename docs/{man1.1.0/man5/index.html => sub-man5-index.html.tt} (81%) rename docs/{man1.0.2/man7/index.html => sub-man7-index.html.tt} (81%) create mode 100644 inc/common.tt rename news/{changelog.html => changelog.html.tt} (89%) rename news/{openssl-notes.html.in => openssl-notes.html.tt} (80%) delete mode 100644 news/vulnerabilities-0.9.6.html delete mode 100644 news/vulnerabilities-0.9.7.html delete mode 100644 news/vulnerabilities-0.9.8.html delete mode 100644 news/vulnerabilities-1.0.0.html delete mode 100644 news/vulnerabilities-1.0.1.html delete mode 100644 news/vulnerabilities-1.0.2.html delete mode 100644 news/vulnerabilities-1.1.0.html delete mode 100644 news/vulnerabilities-1.1.1.html rename news/{vulnerabilities.html => vulnerabilities.html.tt} (92%) delete mode 100644 source/old/0.9.x/index.html delete mode 100644 source/old/1.0.0/index.html delete mode 100644 source/old/1.0.1/index.html delete mode 100644 source/old/1.0.2/index.html delete mode 100644 source/old/1.1.0/index.html delete mode 100644 source/old/1.1.1/index.html rename source/old/{index.html => index.html.tt} (71%) rename source/old/{fips/index.html => sub-index.html.tt} (87%) diff --git a/.gitignore b/.gitignore index 51ee8fc..b307d34 100644 --- a/.gitignore +++ b/.gitignore @@ -3,23 +3,15 @@ *.cross blog sitemap.txt -docs/*/apps/* -!docs/*/apps/index.html -docs/*/crypto/* -!docs/*/crypto/index.html -docs/*/ssl/* -!docs/*/ssl/index.html -docs/*/man1/* -!docs/*/man1/index.html -docs/*/man3/* -!docs/*/man3/index.html -docs/*/man5/* -!docs/*/man5/index.html -docs/*/man7/* -!docs/*/man7/index.html community/committers.inc +community/omc-alumni.inc +community/omc.inc +docs/OpenSSL300Design.html +docs/OpenSSLStrategicArchitecture.html docs/faq.inc docs/fips.inc +docs/man*/ +news/changelog.html news/changelog.inc news/changelog.txt news/cl*.txt @@ -27,13 +19,11 @@ news/newsflash.inc news/openssl-*-notes.html news/openssl-*-notes.inc news/vulnerabilities*.inc +news/vulnerabilities*.html newsflash.inc source/*.gz* source/*.patch source/.htaccess source/index.inc -source/old/*/*.patch -source/old/*/*.tar.gz* -source/old/*/*.txt.asc -source/old/*/index.inc +source/old/*/ source/snapshot diff --git a/Makefile b/Makefile index 37ffb75..49b9845 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,23 @@ SNAP = $(CHECKOUTS)/openssl ## Where releases are found. RELEASEDIR = /var/www/openssl/source +###################################################################### +## +## Release series. These represent our release branches, and are +## our foundation for what should be built and how (often generated) +## +## The numbers given here RULE +## + +## Current series +SERIES=1.1.1 1.1.0 1.0.2 +## Older series. The second type is for source listings +OLDSERIES=1.0.1 1.0.0 0.9.8 0.9.7 0.9.6 +OLDSERIES2=1.0.1 1.0.0 0.9.x +## Current series with newer and older manpage layout +## (when the number of old man layout releases drop to none, this goes away) +NEWMANSERIES=1.1.1 +OLDMANSERIES=1.1.0 1.0.2 # All simple generated files. SIMPLE = newsflash.inc sitemap.txt \ @@ -16,31 +33,19 @@ SIMPLE = newsflash.inc sitemap.txt \ docs/faq.inc docs/fips.inc \ docs/OpenSSLStrategicArchitecture.html \ docs/OpenSSL300Design.html \ - news/changelog.inc news/changelog.txt \ - news/cl102.txt news/cl110.txt news/cl111.txt \ - news/openssl-1.0.2-notes.inc \ - news/openssl-1.1.0-notes.inc \ - news/openssl-1.1.1-notes.inc \ + docs/manpages.html \ + news/changelog.html \ + $(foreach S,$(SERIES),news/openssl-$(S)-notes.inc) \ + $(foreach S,$(SERIES),news/openssl-$(S)-notes.html) \ news/newsflash.inc \ news/vulnerabilities.inc \ - news/vulnerabilities-1.1.1.inc \ - news/vulnerabilities-1.1.0.inc \ - news/vulnerabilities-1.0.2.inc \ - news/vulnerabilities-1.0.1.inc \ - news/vulnerabilities-1.0.0.inc \ - news/vulnerabilities-0.9.8.inc \ - news/vulnerabilities-0.9.7.inc \ - news/vulnerabilities-0.9.6.inc \ + news/vulnerabilities.html \ + $(foreach S,$(SERIES) $(OLDSERIES),news/vulnerabilities-$(S).inc) \ + $(foreach S,$(SERIES) $(OLDSERIES),news/vulnerabilities-$(S).html) \ source/.htaccess \ - source/index.inc -SRCLISTS = \ - source/old/0.9.x/index.inc \ - source/old/1.0.0/index.inc \ - source/old/1.0.1/index.inc \ - source/old/1.0.2/index.inc \ - source/old/1.1.0/index.inc \ - source/old/1.1.1/index.inc \ - source/old/fips/index.inc \ + source/index.inc \ + source/old/index.html +SRCLISTS = $(foreach S,$(SERIES) $(OLDSERIES2) fips,source/old/$(S)/index.inc source/old/$(S)/index.html) .SUFFIXES: .md .html @@ -64,37 +69,97 @@ simple: all generated: all rebuild: all +###################################################################### +## +## Man-page building section +## +## This is quite a complex set of rules, because there are many +## things that need to be built: +## +## - The man-pages themselves +## - Apropos-like listings +## - Cross-references between man-pages in different OpenSSL +## versions +## +## A lot of the work is made with generated rules. + +# makemanpages creates rules for targets like manpages-1.1.1, to +# build the set of man-pages and indexes of man-pages for the given +# OpenSSL release (such as 1.1.1) +# +# $(1) = input directory in CHECKOUTS, $(2) = release version define makemanpages - ./bin/mk-manpages $(1)/doc $(2) docs/man$(2) +manpages-$(2): + @rm -rf docs/man$(2) + @mkdir -p docs/man$(2) \ + docs/man$(2)/man1 \ + docs/man$(2)/man3 \ + docs/man$(2)/man5 \ + docs/man$(2)/man7 + ./bin/mk-manpages $(CHECKOUTS)/$(1)/doc $(2) docs/man$(2) ./bin/mk-apropos docs/man$(2)/man1 > docs/man$(2)/man1/index.inc ./bin/mk-apropos docs/man$(2)/man3 > docs/man$(2)/man3/index.inc ./bin/mk-apropos docs/man$(2)/man5 > docs/man$(2)/man5/index.inc ./bin/mk-apropos docs/man$(2)/man7 > docs/man$(2)/man7/index.inc + ./bin/from-tt -d docs/man$(2)/man1 releases='$(SERIES)' release='$(2)' \ + < docs/sub-man1-index.html.tt > docs/man$(2)/man1/index.html + ./bin/from-tt -d docs/man$(2)/man1 releases='$(SERIES)' release='$(2)' \ + < docs/sub-man3-index.html.tt > docs/man$(2)/man3/index.html + ./bin/from-tt -d docs/man$(2)/man1 releases='$(SERIES)' release='$(2)' \ + < docs/sub-man5-index.html.tt > docs/man$(2)/man5/index.html + ./bin/from-tt -d docs/man$(2)/man1 releases='$(SERIES)' release='$(2)' \ + < docs/sub-man7-index.html.tt > docs/man$(2)/man7/index.html + ./bin/from-tt -d docs/man$(2) releases='$(SERIES)' release='$(2)' \ + < docs/sub-index.html.tt > docs/man$(2)/index.html endef -define makemanmap + +# makeoldmanmap creates a .htaccess for the man-pages of a given OpenSSL +# release. This is only needed for OpenSSL releases where the subdirectories +# of doc/ are apps/, crypto/ and ssl/. OpenSSL 1.1.1 and later have a +# different structure and don't need this: man1/, man3/, man5/ and man7/. +# +# $(1) = release version +define makeoldmanmap +manmap-$(1): ./bin/mk-manmap docs/man$(1) > docs/man$(1)/.htaccess endef -manpages: manmaster - $(call makemanpages,$(CHECKOUTS)/openssl-1.1.1-stable,1.1.1) - $(call makemanpages,$(CHECKOUTS)/openssl-1.1.0-stable,1.1.0) - $(call makemanmap,1.1.0) - $(call makemanpages,$(CHECKOUTS)/openssl-1.0.2-stable,1.0.2) - $(call makemanmap,1.0.2) -manmaster: - $(call makemanpages,$(CHECKOUTS)/openssl,master) +# Now that we have the generating macros in place, let's use them! +# +# Start off with creating the 'manpages-master' target, taking the +# source from $(CHECKOUTS)/openssl/doc +$(eval $(call makemanpages,openssl,master)) + +# Next, create 'manpages-x.y.z' for all current releases, taking the +# source from $(CHECKOUTS)/openssl-x.y.z-stable/doc +$(foreach S,$(SERIES),$(eval $(call makemanpages,openssl-$(S)-stable,$(S)))) + +# Finally, create 'manmap-x.y.z' for all releases with the old doc/ +# structure. +$(foreach S,$(OLDMANSERIES),$(eval $(call makeoldmanmap,$(S)))) + +manmaster: manpages-master +manpages: $(foreach S,$(NEWMANSERIES),manpages-$(S)) \ + $(foreach S,$(OLDMANSERIES),manpages-$(S) manmap-$(S)) mancross: - ./bin/mk-mancross + ./bin/mk-mancross master $(SERIES) + +docs/manpages.html: docs/manpages.html.tt + @rm -f $@ + ./bin/from-tt releases='master $(SERIES)' docs/manpages.html.tt -## $(SIMPLE) -- SIMPLE GENERATED FILES +###################################################################### +## +## $(SIMPLE) -- SIMPLE GENERATED FILES +## .PHONY: sitemap community/committers.inc community/omc.inc community/omc-alumni.inc newsflash.inc: news/newsflash.inc @rm -f $@ head -7 $? >$@ sitemap sitemap.txt: @rm -f sitemap.txt - ./bin/mk-sitemap > sitemap.txt + ./bin/mk-sitemap master $(SERIES) > sitemap.txt community/committers.inc: @rm -f $@ @@ -117,69 +182,83 @@ docs/fips.inc: $(wildcard docs/fips/*) bin/mk-filelist news/changelog.inc: news/changelog.txt bin/mk-changelog @rm -f $@ ./bin/mk-changelog $@ -news/changelog.txt: $(SNAP)/CHANGES - @rm -f $@ - cp $? $@ -news/cl102.txt: $(CHECKOUTS)/openssl-1.0.2-stable/CHANGES - @rm -f $@ - cp $? $@ -news/cl110.txt: $(CHECKOUTS)/openssl-1.1.0-stable/CHANGES - @rm -f $@ - cp $? $@ -news/cl111.txt: $(CHECKOUTS)/openssl-1.1.1-stable/CHANGES - @rm -f $@ - cp $? $@ -news/openssl-1.0.2-notes.html: news/openssl-notes.html.in - @rm -f $@ - sed -e 's|@VERSION@|1.0.2|g' < $< > $@ -news/openssl-1.1.0-notes.html: news/openssl-notes.html.in - @rm -f $@ - sed -e 's|@VERSION@|1.1.0|g' < $< > $@ -news/openssl-1.1.1-notes.html: news/openssl-notes.html.in +news/changelog.html: news/changelog.html.tt news/changelog.inc @rm -f $@ - sed -e 's|@VERSION@|1.1.1|g' < $< > $@ -news/openssl-1.0.2-notes.inc: $(CHECKOUTS)/openssl-1.0.2-stable/NEWS news/openssl-1.0.2-notes.html bin/mk-notes - @rm -f $@ - ./bin/mk-notes 1.0.2 < $(CHECKOUTS)/openssl-1.0.2-stable/NEWS > $@ -news/openssl-1.1.0-notes.inc: $(CHECKOUTS)/openssl-1.1.0-stable/NEWS news/openssl-1.1.0-notes.html bin/mk-notes - @rm -f $@ - ./bin/mk-notes 1.1.0 < $(CHECKOUTS)/openssl-1.1.0-stable/NEWS > $@ -news/openssl-1.1.1-notes.inc: $(CHECKOUTS)/openssl-1.1.1-stable/NEWS news/openssl-1.1.1-notes.html bin/mk-notes - @rm -f $@ - ./bin/mk-notes 1.1.1 < $(CHECKOUTS)/openssl-1.1.1-stable/NEWS > $@ + ./bin/from-tt 'releases=$(SERIES)' $< +# Additionally, make news/changelog.html depend on clxyz.txt, where xyz +# comes from the release number x.y.z. This permits it to be automatically +# recreated whenever there's a new major release. +news/changelog.html: $(foreach S,$(SERIES),news/cl$(subst .,,$(S)).txt) + +# mknews_changelogtxt creates a target and ruleset for any changelog text +# file depending on the CHANGES file from the target release. +# +# $(1) = output file, $(2) = source directory in CHECKOUTS +define mknews_changelogtxt +news/$(1): $(CHECKOUTS)/$(2)/CHANGES + @rm -f $$@ + cp $$? $$@ +endef + +# Create the target 'news/changelog.txt', taking the source from +# $(CHECKOUTS)/openssl/CHANGES +$(eval $(call mknews_changelogtxt,changelog.txt,openssl)) + +# Create the targets 'news/clxyz.txt' for all current releases, taking the +# source from $(CHECKOUTS)/openssl-x.y.z-stable/CHANGES +$(foreach S,$(SERIES),\ +$(eval $(call mknews_changelogtxt,cl$(subst .,,$(S)).txt,openssl-$(S)-stable))) + +# mknews_noteshtml creates two targets and rulesets for creating notes from +# the NEWS file for each release. One target is to create a wrapping HTML +# file from a template, the other is to create the inclusion file with the +# actual text. +# +# $(1) = release version +define mknews_noteshtml +news/openssl-$(1)-notes.html: news/openssl-notes.html.tt + @rm -f $$@ + ./bin/from-tt -d news release='$(1)' < $$< > $$@ +news/openssl-$(1)-notes.inc: $(CHECKOUTS)/openssl-$(1)-stable/NEWS bin/mk-notes + @rm -f $$@ + ./bin/mk-notes $(1) < $(CHECKOUTS)/openssl-$(1)-stable/NEWS > $$@ +endef + +# Create the targets 'news/openssl-x.y.z-notes.html' and +# 'news/openssl-x.y.z-notes.inc' for each release number x.y.z, taking +# the source from $(CHECKOUTS)/openssl-$(1)-stable/NEWS +$(foreach S,$(SERIES),$(eval $(call mknews_noteshtml,$(S)))) + news/newsflash.inc: news/newsflash.txt sed <$? >$@ \ -e '/^#/d' \ -e 's@^@

@' -news/vulnerabilities.inc: bin/mk-cvepage news/vulnerabilities.xml - @rm -f $@ - ./bin/mk-cvepage -i news/vulnerabilities.xml > $@ -news/vulnerabilities-1.1.1.inc: bin/mk-cvepage news/vulnerabilities.xml - @rm -f $@ - ./bin/mk-cvepage -i news/vulnerabilities.xml -b 1.1.1 > $@ -news/vulnerabilities-1.1.0.inc: bin/mk-cvepage news/vulnerabilities.xml - @rm -f $@ - ./bin/mk-cvepage -i news/vulnerabilities.xml -b 1.1.0 > $@ -news/vulnerabilities-1.0.2.inc: bin/mk-cvepage news/vulnerabilities.xml - @rm -f $@ - ./bin/mk-cvepage -i news/vulnerabilities.xml -b 1.0.2 > $@ -news/vulnerabilities-1.0.1.inc: bin/mk-cvepage news/vulnerabilities.xml - @rm -f $@ - ./bin/mk-cvepage -i news/vulnerabilities.xml -b 1.0.1 > $@ -news/vulnerabilities-1.0.0.inc: bin/mk-cvepage news/vulnerabilities.xml - @rm -f $@ - ./bin/mk-cvepage -i news/vulnerabilities.xml -b 1.0.0 > $@ -news/vulnerabilities-0.9.8.inc: bin/mk-cvepage news/vulnerabilities.xml - @rm -f $@ - ./bin/mk-cvepage -i news/vulnerabilities.xml -b 0.9.8 > $@ -news/vulnerabilities-0.9.7.inc: bin/mk-cvepage news/vulnerabilities.xml - @rm -f $@ - ./bin/mk-cvepage -i news/vulnerabilities.xml -b 0.9.7 > $@ -news/vulnerabilities-0.9.6.inc: bin/mk-cvepage news/vulnerabilities.xml - @rm -f $@ - ./bin/mk-cvepage -i news/vulnerabilities.xml -b 0.9.6 > $@ + +# mknews_vulnerability creates two targets and rulesets for creating +# vulnerability lists for each release. One target is to create a wrapping +# HTML file from a template, the other is to create the inclusion file with +# the actual text. +# +# $(1) = output file mod, $(2) = release version switch, $(3) = release version +define mknews_vulnerability +news/vulnerabilities$(1).inc: bin/mk-cvepage news/vulnerabilities.xml + @rm -f $$@ + ./bin/mk-cvepage -i news/vulnerabilities.xml $(2) > $$@ +news/vulnerabilities$(1).html: news/vulnerabilities.html.tt bin/from-tt + @rm -f $$@ + ./bin/from-tt -d news vulnerabilitiesinc='vulnerabilities$(1).inc' < $$< > $$@ +endef + +# Create the main vulnerability index 'news/vulnerabilities.html' and +# 'news/vulnerabilities.inc' +$(eval $(call mknews_vulnerability,,)) + +# Create the vulnerability index 'news/vulnerabilities-x.y.z.html' and +# 'news/vulnerabilities-x.y.z.inc' for each release x.y.z +$(foreach S,$(SERIES) $(OLDSERIES),$(eval $(call mknews_vulnerability,-$(S),-b $(S)))) + source/.htaccess: $(wildcard source/openssl-*.tar.gz) bin/mk-latest @rm -f @? ./bin/mk-latest source >$@ @@ -187,34 +266,41 @@ source/index.inc: $(wildcard $(RELEASEDIR)/openssl-*.tar.gz) bin/mk-filelist @rm -f $@ ./bin/mk-filelist $(RELEASEDIR) '' 'openssl-*.tar.gz' >$@ -## $(SRCLISTS) -- LISTS OF SOURCES -source/old/0.9.x/index.inc: $(wildcard source/old/0.9.x/*.gz) bin/mk-filelist - @rm -f $@ - ./bin/mk-filelist source/old/0.9.x '' '*.gz' >$@ -source/old/1.0.0/index.inc: $(wildcard source/old/1.0.0/*.gz) bin/mk-filelist - @rm -f $@ - ./bin/mk-filelist source/old/1.0.0 '' '*.gz' >$@ -source/old/1.0.1/index.inc: $(wildcard source/old/1.0.1/*.gz) bin/mk-filelist - @rm -f $@ - ./bin/mk-filelist source/old/1.0.1 '' '*.gz' >$@ -source/old/1.0.2/index.inc: $(wildcard source/old/1.0.2/*.gz) bin/mk-filelist - @rm -f $@ - ./bin/mk-filelist source/old/1.0.2 '' '*.gz' >$@ -source/old/1.1.0/index.inc: $(wildcard source/old/1.1.0/*.gz) bin/mk-filelist - @rm -f $@ - ./bin/mk-filelist source/old/1.1.0 '' '*.gz' >$@ -source/old/1.1.1/index.inc: $(wildcard source/old/1.1.1/*.gz) bin/mk-filelist - @rm -f $@ - ./bin/mk-filelist source/old/1.1.1 '' '*.gz' >$@ -source/old/fips/index.inc: $(wildcard source/old/fips/*.gz) bin/mk-filelist +###################################################################### +## +## $(SRCLISTS) -- LISTS OF SOURCES +## + +# mkoldsourceindex creates two targets and rulesets for creating the +# list of update tarballs for each release. One target is to create a +# wrapping HTML file from a template, the other is to create the +# inclusion file with the actual text. +# +# $(1) = release, $(2) = release title +define mkoldsourceindex +source/old/$(1)/index.inc: $(wildcard $(RELEASEDIR)/old/$(1)/*.gz) bin/mk-filelist + @rm -f $$@ + ./bin/mk-filelist $(RELEASEDIR)/old/$(1) '' '*.gz' > $$@ +source/old/$(1)/index.html: source/old/sub-index.html.tt bin/from-tt + @rm -f $$@ + ./bin/from-tt -d source/old/$(1) \ + release='$(1)' releasetitle='Old $(2) Releases' \ + < $$< > $$@ +endef + +# Create the update tarball index 'source/old/x.y.z/index.html' and +# 'source/old/x.y.z/index.inc' for each release x.y.z. +# We also create a list specifically for the old FIPS module, carefully +# crafting an HTML title with an uppercase 'FIPS' while the subdirectory +# remains named 'fips' +$(foreach S,fips $(SERIES) $(OLDSERIES2),$(eval $(call mkoldsourceindex,$(S),$(patsubst fips,FIPS,$(S))))) + +source/old/index.html: source/old/index.html.tt bin/from-tt @rm -f $@ - ./bin/mk-filelist source/old/fips '' '*.gz' >$@ + ./bin/from-tt releases='fips $(SERIES) $(OLDSERIES2)' $< # Because these the indexes of old tarballs will inevitably be newer # than the tarballs that are moved into their respective directory, # we must declare them phony, or they will not be regenerated when # they should. -.PHONY : \ - source/old/1.0.1/index.inc source/old/1.0.2/index.inc \ - source/old/1.1.0/index.inc source/old/1.1.1/index.inc \ - source/old/fips/index.inc +.PHONY : $(SRCLISTS) diff --git a/bin/from-tt b/bin/from-tt new file mode 100755 index 0000000..e3ddf79 --- /dev/null +++ b/bin/from-tt @@ -0,0 +1,123 @@ +#! /bin/bash + +HERE=$(cd $(dirname $0); pwd) +THIS=$(basename $0) + +dir= + +shortopts='d:h' +longopts='dir:,help' +usage="\ +Usage 1: $THIS [ options ] [ key=value ... ] < file.tt > file +Usage 2: $THIS [ options ] [ key=value ... ] file.tt ... + +Options: + -d, --dir=DIR Directory of the output file + -h, --help Output this usage and do nothing else + +In usage 1, the template is read from standard input and the processing +result is output to standard output. In this usage, the --dir option is +mandatory. + +In usage 2, the templates are read from the files given as argument, and +the processing result for each of them is written to a corresponding file +without the '.tt' suffix. All given file names must have the '.tt' suffix. + +In both usages, one can also set template variables with with the form +key=value. They must come before any file name." + +# Standard getopt calling sequence +if ! TEMP=$(getopt -o "$shortopts" --long "$longopts" -n $THIS -- "$@"); then + echo >&2 "$usage" + exit 1 +fi +eval set -- "$TEMP" +unset TEMP + +# Check the parsed options +while true; do + case "$1" in + '-d' | '--dir' ) + dir="$2" + shift 2 + continue + ;; + '-h' | '--help' ) + echo >&2 "$usage" + exit 0 + ;; + '--' ) + shift + break + ;; + * ) + echo >&2 'Internal error!' + echo >&2 "$usage" + exit 1 + ;; + esac +done + +tpagecmd="tpage" +while true; do + case "$1" in + *=* ) + tpagecmd="$tpagecmd --define '$1'" + shift + ;; + * ) + break + ;; + esac +done + +# If there are no other arguments, read from stdin, write to stdout. +# Otherwise, read from the input files and write to corresponding output files. +if [ $# -eq 0 ]; then + if [ -z "$dir" ]; then + echo >&2 'Directory must be set with -d / --dir in this mode' + exit 1 + fi + ( + cd $dir + ( cat $HERE/../inc/common.tt; cat ) | \ + eval "$tpagecmd --define 'dir=${dir:-filedir}'" + ) +else + errfiles= + nofiles= + for f in "$@"; do + base=$(basename "$f" .tt) + + if [ "$base" = "$f" ]; then + errfiles="$errfiles '$f'" + elif [ ! -f "$f" ]; then + nofiles="$nofiles '$f'" + fi + done + if [ -n "$errfiles" ]; then + echo >&2 "Files not ending with .tt:$errfiles" + fi + if [ -n "$nofiles" ]; then + echo >&2 "Files no present:$nofiles" + fi + if [ -n "$errfiles" -o -n "$nofiles" ]; then + exit 1 + fi + + for f in "$@"; do + base=$(basename "$f" .tt) + filedir=$(dirname "$f") + + if [ "$f" != "$base" ]; then + if ! ( + cd $filedir + ( cat $HERE/../inc/common.tt; cat $base.tt ) | \ + eval "$tpagecmd --define 'dir=${dir:-filedir}'" \ + > $base + ); then + exit $? + fi + fi + done +fi diff --git a/bin/mk-mancross b/bin/mk-mancross index e197b06..e76c3b1 100755 --- a/bin/mk-mancross +++ b/bin/mk-mancross @@ -1,6 +1,6 @@ #! /bin/sh -releases="master 1.1.1 1.1.0 1.0.2" +releases="$*" log () { echo >&2 "$@" diff --git a/bin/mk-manpages b/bin/mk-manpages index 3b1d32a..b756128 100755 --- a/bin/mk-manpages +++ b/bin/mk-manpages @@ -12,21 +12,13 @@ use Pod::Simple::XHTML; __PACKAGE__->run(@ARGV); -sub Releases { return (qw(master 1.1.1 1.1.0 1.0.2)) } sub Dirs { return (qw(apps crypto ssl man1 man3 man5 man7)) } sub Dir2Section { return ( apps => "man1", crypto => "man3", ssl => "man3" ) } -sub getRelease { - my ( $class, $ver ) = @_; - my %known = map { $_ => 1 } $class->Releases; - return @_ != 2 ? %known : defined $known{$ver} ? $ver : undef; -} - sub run { my ( $class, @argv ) = @_; my $opt = $class->process_options(@argv); - $class->cleanup( $opt->{WwwDir}, $opt->{RelVer} ); exit $class->main( $opt->{SrcDir}, $opt->{WwwDir}, $opt->{RelVer} ); } @@ -226,44 +218,6 @@ sub error { warn("$prog: $_\n") for @_; } -# Remove all files from a manpage subtree, and leave only -# the index and the section subdirs. -sub cleanup { - my ( $class, $wwwdir, $release ) = @_; - my $idx = File::Spec->catfile( $wwwdir, "index.html" ); - - if ( !-d $wwwdir ) { - mkdir($wwwdir) or $class->die("mkdir '$wwwdir': $!"); - } - - # TBD: was $class->die - $class->error("No $idx") unless ( -f $idx ); - foreach my $subdir ( $class->Dirs ) { - my $realsubdir = { $class->Dir2Section }->{$subdir} // $subdir; - my $realsdir = File::Spec->catfile( $wwwdir, $realsubdir ); - if ( !-d $realsdir ) { - mkdir($realsdir) or $class->die("mkdir '$realsdir': $!"); - next; - } - - my $sdir = File::Spec->catfile( $wwwdir, $subdir ); - if ( -d $sdir ) { - opendir( my $dh, $sdir ) or $class->die("opendir '$sdir': $!"); - while ( my $ent = readdir($dh) ) { - next if $ent =~ /^\./; - next if $realsdir eq $sdir && $ent =~ /^index.(?:html|inc)$/; - my $f = File::Spec->catfile( $sdir, $ent ); - unlink($f) or $class->error("Can't unlink '$f': $!"); - } - closedir( $dh ); - - if ( $realsubdir ne $subdir ) { - rmdir $sdir; - } - } - } -} - sub process_options { my ( $class, @argv ) = @_; my %opt; @@ -298,11 +252,6 @@ sub process_options { push( @err, "No documentation directories in $docdir" ) unless ( @found_dirs ); - # verify release - push( @err, "Unknown release '$opt{RelVer}'" ) - unless ( $class->getRelease( $opt{RelVer} ) ); - $class->die(@err) if @err; - return \%opt; } diff --git a/bin/mk-sitemap b/bin/mk-sitemap index fdfd1b2..1a778e1 100755 --- a/bin/mk-sitemap +++ b/bin/mk-sitemap @@ -1,6 +1,8 @@ #! /usr/bin/perl -w use strict; +my @series = @ARGV; + sub dodir() { @@ -33,7 +35,7 @@ dodir() $simple =~ s at .*/@@; print "\n", "\t" x $level, $simple, "/\n"; next if $entry =~ m/secadv/; - next if $entry =~ m/man1.0.2|man1.1.0|manmaster/; + next if grep { $entry eq "man$_" } @series; &dodir($entry, $level + 1); } } diff --git a/docs/man1.0.2/index.html b/docs/man1.0.2/index.html deleted file mode 100644 index c937ef0..0000000 --- a/docs/man1.0.2/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - -
-
-
- -
- -
-
- - - - diff --git a/docs/man1.0.2/man3/index.html b/docs/man1.0.2/man3/index.html deleted file mode 100644 index d5690f6..0000000 --- a/docs/man1.0.2/man3/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - -
-
-
-
-

libraries

-
-

- This is the OpenSSL API for the SSL and Crypto libraries. - The ssl and crypto - manpages are general overviews of those libraries. -

- -

- The detailed list is here: -

- -
@' \ -e 's@: @@' \ -e 's@$$@
- - - - - -
NAMEDescription
-

 

- -
- - -
- - - - - - diff --git a/docs/man1.0.2/man5/index.html b/docs/man1.0.2/man5/index.html deleted file mode 100644 index 651592f..0000000 --- a/docs/man1.0.2/man5/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - -
-
-
- -
- -
-
- - - diff --git a/docs/man1.1.0/index.html b/docs/man1.1.0/index.html deleted file mode 100644 index de57e64..0000000 --- a/docs/man1.1.0/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - -
-
-
- -
- -
-
- - - - diff --git a/docs/man1.1.0/man1/index.html b/docs/man1.1.0/man1/index.html deleted file mode 100644 index c8562a0..0000000 --- a/docs/man1.1.0/man1/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - -
-
-
- -
- -
-
- - - - diff --git a/docs/man1.1.0/man7/index.html b/docs/man1.1.0/man7/index.html deleted file mode 100644 index d6c8b64..0000000 --- a/docs/man1.1.0/man7/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - -
-
-
- -
- -
-
- - - diff --git a/docs/man1.1.1/man1/index.html b/docs/man1.1.1/man1/index.html deleted file mode 100644 index b008c2b..0000000 --- a/docs/man1.1.1/man1/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - -
-
-
- -
- -
-
- - - - diff --git a/docs/man1.1.1/man3/index.html b/docs/man1.1.1/man3/index.html deleted file mode 100644 index afe7dd6..0000000 --- a/docs/man1.1.1/man3/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - -
-
-
-
-

crypto library

-
-

- This is the OpenSSL API for the SSL and Crypto libraries. - The ssl and - crypto manpages are - general overviews of those libraries. -

- -

- The detailed list is here: -

- - - - - - - -
NAMEDescription
-

 

- -
- -
-
- -
-
- - - diff --git a/docs/man1.1.1/man5/index.html b/docs/man1.1.1/man5/index.html deleted file mode 100644 index 7d47c8f..0000000 --- a/docs/man1.1.1/man5/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - -
-
-
- -
- -
-
- - - - diff --git a/docs/man1.1.1/man7/index.html b/docs/man1.1.1/man7/index.html deleted file mode 100644 index 7223213..0000000 --- a/docs/man1.1.1/man7/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - -
-
-
- -
- -
-
- - - - diff --git a/docs/manmaster/index.html b/docs/manmaster/index.html deleted file mode 100644 index 1cc870f..0000000 --- a/docs/manmaster/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - -
-
-
- -
- -
-
- - - - diff --git a/docs/manmaster/man1/index.html b/docs/manmaster/man1/index.html deleted file mode 100644 index 83a2859..0000000 --- a/docs/manmaster/man1/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - -
-
-
- -
- -
-
- - - - diff --git a/docs/manmaster/man3/index.html b/docs/manmaster/man3/index.html deleted file mode 100644 index 79ddc60..0000000 --- a/docs/manmaster/man3/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - -
-
-
-
-

crypto library

-
-

- This is the OpenSSL API for the SSL and Crypto libraries. - The ssl and - crypto manpages are - general overviews of those libraries. -

- -

- The detailed list is here: -

- - - - - - - -
NAMEDescription
-

 

- -
- -
-
- -
-
- - - diff --git a/docs/manmaster/man5/index.html b/docs/manmaster/man5/index.html deleted file mode 100644 index 0227046..0000000 --- a/docs/manmaster/man5/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - -
-
-
- -
- -
-
- - - - diff --git a/docs/manmaster/man7/index.html b/docs/manmaster/man7/index.html deleted file mode 100644 index 9eb7a14..0000000 --- a/docs/manmaster/man7/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - -
-
-
- -
- -
-
- - - - diff --git a/docs/manpages.html b/docs/manpages.html.tt similarity index 78% rename from docs/manpages.html rename to docs/manpages.html.tt index d75fec0..28defc3 100644 --- a/docs/manpages.html +++ b/docs/manpages.html.tt @@ -13,10 +13,9 @@ The manual pages for all releases are available online:

diff --git a/docs/man1.1.1/index.html b/docs/sub-index.html.tt similarity index 86% rename from docs/man1.1.1/index.html rename to docs/sub-index.html.tt index 49d2b6c..b0b3bb3 100644 --- a/docs/man1.1.1/index.html +++ b/docs/sub-index.html.tt @@ -7,10 +7,10 @@
-

Manpages for 1.1.1

+

Manpages for [% release %]

- The manual pages for the 1.1.1 branch are + The manual pages for the [% release %] branch are available here. The OpenSSL documentation is divided into the following sections: @@ -26,7 +26,7 @@ You are here: Home : Documentation : Manpages - : 1.1.1 + : [% release %]
Sitemap

diff --git a/docs/man1.0.2/man1/index.html b/docs/sub-man1-index.html.tt similarity index 85% rename from docs/man1.0.2/man1/index.html rename to docs/sub-man1-index.html.tt index 485bdc3..d213130 100644 --- a/docs/man1.0.2/man1/index.html +++ b/docs/sub-man1-index.html.tt @@ -7,12 +7,11 @@
-

commands

+

OpenSSL commands

The openssl manpage provides a general overview of all the commands. - The detailed list is here:

@@ -29,8 +28,8 @@ You are here: Home : Documentation : Manpages - : 1.0.2 - : commands + : [% release %] + : commands
Sitemap diff --git a/docs/man1.1.0/man3/index.html b/docs/sub-man3-index.html.tt similarity index 84% rename from docs/man1.1.0/man3/index.html rename to docs/sub-man3-index.html.tt index 388816a..03aee4f 100644 --- a/docs/man1.1.0/man3/index.html +++ b/docs/sub-man3-index.html.tt @@ -7,7 +7,7 @@
-

libraries

+

OpenSSL libraries

This is the OpenSSL API for the SSL and Crypto libraries. @@ -16,10 +16,6 @@ general overviews of those libraries.

-

- The detailed list is here: -

-
@@ -34,8 +30,8 @@ You are here: Home : Documentation : Manpages - : 1.1.0 - : libraries + : [% release %] + : libraries
Sitemap diff --git a/docs/man1.1.0/man5/index.html b/docs/sub-man5-index.html.tt similarity index 81% rename from docs/man1.1.0/man5/index.html rename to docs/sub-man5-index.html.tt index 8b39715..9cc6826 100644 --- a/docs/man1.1.0/man5/index.html +++ b/docs/sub-man5-index.html.tt @@ -7,12 +7,8 @@
-

overviews

+

OpenSSL file formats and conventions

-

- The detailed list is here: -

-
NAME
@@ -27,8 +23,8 @@ You are here: Home : Documentation : Manpages - : 1.1.0 - : file formats + : [% release %] + : file formats
Sitemap diff --git a/docs/man1.0.2/man7/index.html b/docs/sub-man7-index.html.tt similarity index 81% rename from docs/man1.0.2/man7/index.html rename to docs/sub-man7-index.html.tt index 0b6ebc4..74c6119 100644 --- a/docs/man1.0.2/man7/index.html +++ b/docs/sub-man7-index.html.tt @@ -7,12 +7,8 @@
-

overviews

+

OpenSSL overviews

-

- The detailed list is here: -

-
NAME
@@ -27,8 +23,8 @@ You are here: Home : Documentation : Manpages - : 1.0.2 - : overviews + : [% release %] + : overviews
Sitemap diff --git a/inc/common.tt b/inc/common.tt new file mode 100644 index 0000000..c605810 --- /dev/null +++ b/inc/common.tt @@ -0,0 +1,9 @@ +[% # Ensure dir contains no repeated slashes, and no ending slash + dir = dir.replace('//+', '/').replace('/$', ''); + # Calculate the path to the top directory. + # It will always have an ending slash. + top = ""; + IF dir != "."; + top = "../"; + top = top.repeat(dir.split("/").size); + END -%] diff --git a/news/changelog.html b/news/changelog.html.tt similarity index 89% rename from news/changelog.html rename to news/changelog.html.tt index fd2c062..95097b7 100644 --- a/news/changelog.html +++ b/news/changelog.html.tt @@ -29,8 +29,10 @@ For other branches, the changelogs are distributed with the source, but are also available here: diff --git a/news/openssl-notes.html.in b/news/openssl-notes.html.tt similarity index 80% rename from news/openssl-notes.html.in rename to news/openssl-notes.html.tt index b215835..6d6205f 100644 --- a/news/openssl-notes.html.in +++ b/news/openssl-notes.html.tt @@ -9,10 +9,10 @@
-

OpenSSL @VERSION@ Series Release Notes

+

OpenSSL [% release %] Series Release Notes

- The major changes and known issues for the @VERSION@ branch + The major changes and known issues for the [% release %] branch of the OpenSSL toolkit are summarised below. The contents reflect the current state of the NEWS file inside the git repository. @@ -22,7 +22,7 @@ More details can be found in the ChangeLog.

- +
You are here: Home diff --git a/news/vulnerabilities-0.9.6.html b/news/vulnerabilities-0.9.6.html deleted file mode 100644 index 34d4b20..0000000 --- a/news/vulnerabilities-0.9.6.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - -
-
-
-
-

Vulnerabilities

-
-

- If you think you have found a security bug in OpenSSL, - please report it to us. -

-

Note: Support for OpenSSL 0.9.6 ended and - is no longer receiving security updates

- -

-
- -
-
- -
-
- - - - - - diff --git a/news/vulnerabilities-0.9.7.html b/news/vulnerabilities-0.9.7.html deleted file mode 100644 index 8293333..0000000 --- a/news/vulnerabilities-0.9.7.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - -
-
-
-
-

Vulnerabilities

-
-

- If you think you have found a security bug in OpenSSL, - please report it to us. -

-

Note: Support for OpenSSL 0.9.7 ended and - is no longer receiving security updates

- -

-
- -
-
- -
-
- - - - - - diff --git a/news/vulnerabilities-0.9.8.html b/news/vulnerabilities-0.9.8.html deleted file mode 100644 index 127624f..0000000 --- a/news/vulnerabilities-0.9.8.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - -
-
-
-
-

Vulnerabilities

-
-

- If you think you have found a security bug in OpenSSL, - please report it to us. -

-

Note: Support for OpenSSL 0.9.8 ended on 31st December 2015 and - is no longer receiving security updates

- -

-
- -
-
- -
-
- - - - - - diff --git a/news/vulnerabilities-1.0.0.html b/news/vulnerabilities-1.0.0.html deleted file mode 100644 index f0c375d..0000000 --- a/news/vulnerabilities-1.0.0.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - -
-
-
-
-

Vulnerabilities

-
-

- If you think you have found a security bug in OpenSSL, - please report it to us. -

-

Note: Support for OpenSSL 1.0.0 ended on 31st December 2015 and - is no longer receiving security updates

- -

-
- -
-
- -
-
- - - - - - diff --git a/news/vulnerabilities-1.0.1.html b/news/vulnerabilities-1.0.1.html deleted file mode 100644 index 08302c2..0000000 --- a/news/vulnerabilities-1.0.1.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - -
-
-
-
-

Vulnerabilities

-
-

- If you think you have found a security bug in OpenSSL, - please report it to us. -

-

Note: Support for OpenSSL 1.0.1 ended on 31st December 2016 and - is no longer receiving security updates

- -

-
- -
-
- -
-
- - - - - - diff --git a/news/vulnerabilities-1.0.2.html b/news/vulnerabilities-1.0.2.html deleted file mode 100644 index 0f1ac3b..0000000 --- a/news/vulnerabilities-1.0.2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - -
-
-
- -
- -
-
- - - - - - diff --git a/news/vulnerabilities-1.1.0.html b/news/vulnerabilities-1.1.0.html deleted file mode 100644 index 15a62de..0000000 --- a/news/vulnerabilities-1.1.0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - -
-
-
- -
- -
-
- - - - - - diff --git a/news/vulnerabilities-1.1.1.html b/news/vulnerabilities-1.1.1.html deleted file mode 100644 index db54fa1..0000000 --- a/news/vulnerabilities-1.1.1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - -
-
-
- -
- -
-
- - - - - - diff --git a/news/vulnerabilities.html b/news/vulnerabilities.html.tt similarity index 92% rename from news/vulnerabilities.html rename to news/vulnerabilities.html.tt index 672b6ec..840ef33 100644 --- a/news/vulnerabilities.html +++ b/news/vulnerabilities.html.tt @@ -15,7 +15,7 @@ If you think you have found a security bug in OpenSSL, please report it to us.

- +

diff --git a/source/old/0.9.x/index.html b/source/old/0.9.x/index.html deleted file mode 100644 index 7a9a2b6..0000000 --- a/source/old/0.9.x/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - -
-
-
-
-

Old 0.9.x Releases

-
-

Here are the old 0.9.x releases.

-
NAME
- - - - - - -
KBytes Date  File 
-

 

- -
- -
-
- -
- - - - - diff --git a/source/old/1.0.0/index.html b/source/old/1.0.0/index.html deleted file mode 100644 index f289fe1..0000000 --- a/source/old/1.0.0/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - -
-
-
-
-

Old 1.0.0 Releases

-
-

Here are the old 1.0.0 releases.

- - - - - - - -
KBytes Date  File 
-

 

- -
- -
- - -
- -
- -
- - - diff --git a/source/old/1.0.1/index.html b/source/old/1.0.1/index.html deleted file mode 100644 index e201ac5..0000000 --- a/source/old/1.0.1/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - -
-
-
-
-

Old 1.0.1 Releases

-
-

Here are the old 1.0.1 releases.

- - - - - - - -
KBytes Date  File 
-

 

- -
- -
- - -
- -
- -
- - - diff --git a/source/old/1.0.2/index.html b/source/old/1.0.2/index.html deleted file mode 100644 index da5007c..0000000 --- a/source/old/1.0.2/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - -
-
-
-
-

Old 1.0.2 Releases

-
-

Here are the old 1.0.2 releases.

- - - - - - - -
KBytes Date  File 
-

 

- -
- -
- - -
- -
- -
- - - diff --git a/source/old/1.1.0/index.html b/source/old/1.1.0/index.html deleted file mode 100644 index e9b4c7a..0000000 --- a/source/old/1.1.0/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - -
-
-
-
-

Old 1.1.0 Releases

-
-

Here are the old 1.1.0 releases.

- - - - - - - -
KBytes Date  File 
-

 

- -
- -
- - -
- -
- -
- - - diff --git a/source/old/1.1.1/index.html b/source/old/1.1.1/index.html deleted file mode 100644 index a9635c4..0000000 --- a/source/old/1.1.1/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - -
-
-
-
-

Old 1.1.1 Releases

-
-

Here are the old 1.1.1 releases.

- - - - - - - -
KBytes Date  File 
-

 

- -
- -
- - -
- -
- -
- - - diff --git a/source/old/index.html b/source/old/index.html.tt similarity index 71% rename from source/old/index.html rename to source/old/index.html.tt index 47163a2..9ff2913 100644 --- a/source/old/index.html +++ b/source/old/index.html.tt @@ -11,13 +11,9 @@

Here are the old releases.

diff --git a/source/old/fips/index.html b/source/old/sub-index.html.tt similarity index 87% rename from source/old/fips/index.html rename to source/old/sub-index.html.tt index c483b81..5712174 100644 --- a/source/old/fips/index.html +++ b/source/old/sub-index.html.tt @@ -7,9 +7,8 @@
-

Old FIPS Releases

+

[% releasetitle %]

-

Here are the old FIPS releases.

@@ -25,7 +24,7 @@ You are here: Home : Downloads : Old Releases - : fips + : [% release %]
Sitemap From levitte at openssl.org Thu Feb 28 15:00:15 2019 From: levitte at openssl.org (Richard Levitte) Date: Thu, 28 Feb 2019 15:00:15 +0000 Subject: [web] master update Message-ID: <1551366015.931720.11953.nullmailer@dev.openssl.org> The branch master has been updated via f6f50f59aea1b6ec6d9cf6849a1866dd1db8cb20 (commit) from 73fe28cd382b6b5fb3c84ec227e8dedce23c2ac4 (commit) - Log ----------------------------------------------------------------- commit f6f50f59aea1b6ec6d9cf6849a1866dd1db8cb20 Author: Richard Levitte Date: Thu Feb 28 15:54:12 2019 +0100 bin/mk-manpages: allow slashes in names The names in the NAME section may describe headers, which contain a slash for OpenSSL headers. We deal with that by converting slashes to dashes for the file names. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/web/pull/123) ----------------------------------------------------------------------- Summary of changes: bin/mk-manpages | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bin/mk-manpages b/bin/mk-manpages index b756128..bc9c793 100755 --- a/bin/mk-manpages +++ b/bin/mk-manpages @@ -65,7 +65,9 @@ sub main { print $fh $out or $class->die("Can't print $outinc: $!"); close($fh) or $class->die("Can't close $outinc: $!"); - foreach my $htmlname (@{$data{names}}) { + foreach my $htmlname ( + map { (my $x = $_) =~ s|/|-|g; $x } + @{$data{names}}) { my $htmlfile = File::Spec->catdir( $data{sect}, "$htmlname.html" ); my $outhtml = File::Spec->catfile( $wwwdir, $htmlfile );
KBytes