@ -478,6 +478,317 @@ TEST(EVPExtraTest, d2i_AutoPrivateKey) {
ERR_clear_error ( ) ;
}
static bssl : : UniquePtr < EVP_PKEY > ParsePrivateKey ( int type , const uint8_t * in ,
size_t len ) {
const uint8_t * ptr = in ;
bssl : : UniquePtr < EVP_PKEY > pkey ( d2i_PrivateKey ( type , nullptr , & ptr , len ) ) ;
if ( ! pkey ) {
return nullptr ;
}
EXPECT_EQ ( in + len , ptr ) ;
return pkey ;
}
static std : : string PrintToString ( const EVP_PKEY * pkey , int indent ,
int ( * print_func ) ( BIO * out ,
const EVP_PKEY * pkey ,
int indent ,
ASN1_PCTX * pctx ) ) {
bssl : : UniquePtr < BIO > bio ( BIO_new ( BIO_s_mem ( ) ) ) ;
const uint8_t * data ;
size_t len ;
if ( ! bio | | ! print_func ( bio . get ( ) , pkey , indent , nullptr ) | |
! BIO_mem_contents ( bio . get ( ) , & data , & len ) ) {
ADD_FAILURE ( ) < < " Error printing. " ;
return " " ;
}
return std : : string ( data , data + len ) ;
}
TEST ( EVPExtraTest , Print ) {
bssl : : UniquePtr < EVP_PKEY > rsa = ParsePrivateKey (
EVP_PKEY_RSA , kExampleRSAKeyDER , sizeof ( kExampleRSAKeyDER ) ) ;
ASSERT_TRUE ( rsa ) ;
EXPECT_EQ ( PrintToString ( rsa . get ( ) , /*indent=*/ 2 , & EVP_PKEY_print_params ) ,
" Parameters algorithm unsupported \n " ) ;
EXPECT_EQ ( PrintToString ( rsa . get ( ) , /*indent=*/ 2 , & EVP_PKEY_print_public ) ,
R " ( Public-Key: (1024 bit)
Modulus :
00 : f8 : b8 : 6 c : 83 : b4 : bc : d9 : a8 : 57 : c0 : a5 : b4 : 59 : 76 :
8 c : 54 : 1 d : 79 : eb : 22 : 52 : 04 : 7 e : d3 : 37 : eb : 41 : fd : 83 :
f9 : f0 : a6 : 85 : 15 : 34 : 75 : 71 : 5 a : 84 : a8 : 3 c : d2 : ef : 5 a :
4 e : d3 : de : 97 : 8 a : dd : ff : bb : cf : 0 a : aa : 86 : 92 : be : b8 :
50 : e4 : cd : 6f : 80 : 33 : 30 : 76 : 13 : 8f : ca : 7 b : dc : ec : 5 a :
ca : 63 : c7 : 03 : 25 : ef : a8 : 8 a : 83 : 58 : 76 : 20 : fa : 16 : 77 :
d7 : 79 : 92 : 63 : 01 : 48 : 1 a : d8 : 7 b : 67 : f1 : 52 : 55 : 49 : 4 e :
d6 : 6 e : 4 a : 5 c : d7 : 7 a : 37 : 36 : 0 c : de : dd : 8f : 44 : e8 : c2 :
a7 : 2 c : 2 b : b5 : af : 64 : 4 b : 61 : 07
Exponent : 65537 ( 0x10001 )
) " );
EXPECT_EQ ( PrintToString ( rsa . get ( ) , /*indent=*/ 2 , & EVP_PKEY_print_private ) ,
R " ( Private-Key: (1024 bit)
modulus :
00 : f8 : b8 : 6 c : 83 : b4 : bc : d9 : a8 : 57 : c0 : a5 : b4 : 59 : 76 :
8 c : 54 : 1 d : 79 : eb : 22 : 52 : 04 : 7 e : d3 : 37 : eb : 41 : fd : 83 :
f9 : f0 : a6 : 85 : 15 : 34 : 75 : 71 : 5 a : 84 : a8 : 3 c : d2 : ef : 5 a :
4 e : d3 : de : 97 : 8 a : dd : ff : bb : cf : 0 a : aa : 86 : 92 : be : b8 :
50 : e4 : cd : 6f : 80 : 33 : 30 : 76 : 13 : 8f : ca : 7 b : dc : ec : 5 a :
ca : 63 : c7 : 03 : 25 : ef : a8 : 8 a : 83 : 58 : 76 : 20 : fa : 16 : 77 :
d7 : 79 : 92 : 63 : 01 : 48 : 1 a : d8 : 7 b : 67 : f1 : 52 : 55 : 49 : 4 e :
d6 : 6 e : 4 a : 5 c : d7 : 7 a : 37 : 36 : 0 c : de : dd : 8f : 44 : e8 : c2 :
a7 : 2 c : 2 b : b5 : af : 64 : 4 b : 61 : 07
publicExponent : 65537 ( 0x10001 )
privateExponent :
74 : 88 : 64 : 3f : 69 : 45 : 3 a : 6 d : c7 : 7f : b9 : a3 : c0 : 6 e : ec :
dc : d4 : 5 a : b5 : 32 : 85 : 5f : 19 : d4 : f8 : d4 : 3f : 3 c : fa : c2 :
f6 : 5f : ee : e6 : ba : 87 : 74 : 2 e : c7 : 0 c : d4 : 42 : b8 : 66 : 85 :
9 c : 7 b : 24 : 61 : aa : 16 : 11 : f6 : b5 : b6 : a4 : 0 a : c9 : 55 : 2 e :
81 : a5 : 47 : 61 : cb : 25 : 8f : c2 : 15 : 7 b : 0 e : 7 c : 36 : 9f : 3 a :
da : 58 : 86 : 1 c : 5 b : 83 : 79 : e6 : 2 b : cc : e6 : fa : 2 c : 61 : f2 :
78 : 80 : 1 b : e2 : f3 : 9 d : 39 : 2 b : 65 : 57 : 91 : 3 d : 71 : 99 : 73 :
a5 : c2 : 79 : 20 : 8 c : 07 : 4f : e5 : b4 : 60 : 1f : 99 : a2 : b1 : 4f :
0 c : ef : bc : 59 : 53 : 00 : 7 d : b1
prime1 :
00 : fc : 7 e : 23 : 65 : 70 : f8 : ce : d3 : 40 : 41 : 80 : 6 a : 1 d : 01 :
d6 : 01 : ff : b6 : 1 b : 3 d : 3 d : 59 : 09 : 33 : 79 : c0 : 4f : de : 96 :
27 : 4 b : 18 : c6 : d9 : 78 : f1 : f4 : 35 : 46 : e9 : 7 c : 42 : 7 a : 5 d :
9f : ef : 54 : b8 : f7 : 9f : c4 : 33 : 6 c : f3 : 8 c : 32 : 46 : 87 : 67 :
30 : 7 b : a7 : ac : e3
prime2 :
00 : fc : 2 c : df : 0 c : 0 d : 88 : f5 : b1 : 92 : a8 : 93 : 47 : 63 : 55 :
f5 : ca : 58 : 43 : ba : 1 c : e5 : 9 e : b6 : 95 : 05 : cd : b5 : 82 : df :
eb : 04 : 53 : 9 d : bd : c2 : 38 : 16 : b3 : 62 : dd : a1 : 46 : db : 6 d :
97 : 93 : 9f : 8 a : c3 : 9 b : 64 : 7 e : 42 : e3 : 32 : 57 : 19 : 1 b : d5 :
6 e : 85 : fa : b8 : 8 d
exponent1 :
00 : bc : 3 d : de : 6 d : d6 : 97 : e8 : ba : 9 e : 81 : 37 : 17 : e5 : a0 :
64 : c9 : 00 : b7 : e7 : fe : f4 : 29 : d9 : 2 e : 43 : 6 b : 19 : 20 : bd :
99 : 75 : e7 : 76 : f8 : d3 : ae : af : 7 e : b8 : eb : 81 : f4 : 9 d : fe :
07 : 2 b : 0 b : 63 : 0 b : 5 a : 55 : 90 : 71 : 7 d : f1 : db : d9 : b1 : 41 :
41 : 68 : 2f : 4 e : 39
exponent2 :
5 a : 34 : 66 : d8 : f5 : e2 : 7f : 18 : b5 : 00 : 6 e : 26 : 84 : 27 : 14 :
93 : fb : fc : c6 : 0f : 5 e : 27 : e6 : e1 : e9 : c0 : 8 a : e4 : 34 : da :
e9 : a2 : 4 b : 73 : bc : 8 c : b9 : ba : 13 : 6 c : 7 a : 2 b : 51 : 84 : a3 :
4 a : e0 : 30 : 10 : 06 : 7 e : ed : 17 : 5 a : 14 : 00 : c9 : ef : 85 : ea :
52 : 2 c : bc : 65
coefficient :
51 : e3 : f2 : 83 : 19 : 9 b : c4 : 1 e : 2f : 50 : 3 d : df : 5 a : a2 : 18 :
ca : 5f : 2 e : 49 : af : 6f : cc : fa : 65 : 77 : 94 : b5 : a1 : 0 a : a9 :
d1 : 8 a : 39 : 37 : f4 : 0 b : a0 : d7 : 82 : 27 : 5 e : ae : 17 : 17 : a1 :
1 e : 54 : 34 : bf : 6 e : c4 : 8 e : 99 : 5 d : 08 : f1 : 2 d : 86 : 9 d : a5 :
20 : 1 b : e5 : df
) " );
bssl : : UniquePtr < EVP_PKEY > dsa = ParsePrivateKey (
EVP_PKEY_DSA , kExampleDSAKeyDER , sizeof ( kExampleDSAKeyDER ) ) ;
ASSERT_TRUE ( dsa ) ;
EXPECT_EQ ( PrintToString ( dsa . get ( ) , /*indent=*/ 2 , & EVP_PKEY_print_params ) ,
R " ( P:
00 : 9 e : 12 : fa : b3 : de : 12 : 21 : 35 : 01 : dd : 82 : aa : 10 : ca :
2 d : 10 : 1 d : 2 d : 4 e : bf : ef : 4 d : 2 a : 3f : 8 d : aa : 0f : e0 : ce :
da : d8 : d6 : af : 85 : 61 : 6 a : a2 : f3 : 25 : 2 c : 0 a : 2 b : 5 a : 6 d :
b0 : 9 e : 6f : 14 : 90 : 0 e : 0 d : db : 83 : 11 : 87 : 6 d : d8 : f9 : 66 :
95 : 25 : f9 : 9 e : d6 : 59 : 49 : e1 : 84 : d5 : 06 : 47 : 93 : 27 : 11 :
69 : a2 : 28 : 68 : 0 b : 95 : ec : 12 : f5 : 9 a : 8 e : 20 : b2 : 1f : 2 b :
58 : eb : 2 a : 20 : 12 : d3 : 5 b : de : 2 e : e3 : 51 : 82 : 2f : e8 : f3 :
2 d : 0 a : 33 : 05 : 65 : dc : ce : 5 c : 67 : 2 b : 72 : 59 : c1 : 4 b : 24 :
33 : d0 : b5 : b2 : ca : 2 b : 2 d : b0 : ab : 62 : 6 e : 8f : 13 : f4 : 7f :
e0 : 34 : 5 d : 90 : 4 e : 72 : 94 : bb : 03 : 8 e : 9 c : e2 : 1 a : 9 e : 58 :
0 b : 83 : 35 : 62 : 78 : 70 : 6 c : fe : 76 : 84 : 36 : c6 : 9 d : e1 : 49 :
cc : ff : 98 : b4 : aa : b8 : cb : 4f : 63 : 85 : c9 : f1 : 02 : ce : 59 :
34 : 6 e : ae : ef : 27 : e0 : ad : 22 : 2 d : 53 : d6 : e8 : 9 c : c8 : cd :
e5 : 77 : 6 d : d0 : 00 : 57 : b0 : 3f : 2 d : 88 : ab : 3 c : ed : ba : fd :
7 b : 58 : 5f : 0 b : 7f : 78 : 35 : e1 : 7 a : 37 : 28 : bb : f2 : 5 e : a6 :
25 : 72 : f2 : 45 : dc : 11 : 1f : 3 c : e3 : 9 c : b6 : ff : ac : c3 : 1 b :
0 a : 27 : 90 : e7 : bd : e9 : 02 : 24 : ea : 9 b : 09 : 31 : 53 : 62 : af :
3 d : 2 b
Q :
00 : f3 : 81 : dc : f5 : 3 e : bf : 72 : 4f : 8 b : 2 e : 5 c : a8 : 2 c : 01 :
0f : b4 : b5 : ed : a9 : 35 : 8 d : 0f : d8 : 8 e : d2 : 78 : 58 : 94 : 88 :
b5 : 4f : c3
G :
0 c : 40 : 2 a : 72 : 5 d : cc : 3 a : 62 : e0 : 2 b : f4 : cf : 43 : cd : 17 :
f4 : a4 : 93 : 59 : 12 : 20 : 22 : 36 : 69 : cf : 41 : 93 : ed : ab : 42 :
3 a : d0 : 8 d : fb : 55 : 2 e : 30 : 8 a : 6 a : 57 : a5 : ff : bc : 7 c : d0 :
fb : 20 : 87 : f8 : 1f : 8 d : f0 : cb : 08 : ab : 21 : 33 : 28 : 7 d : 2 b :
69 : 68 : 71 : 4 a : 94 : f6 : 33 : c9 : 40 : 84 : 5 a : 48 : a3 : e1 : 67 :
08 : dd : e7 : 61 : cc : 6 a : 8 e : ab : 2 d : 84 : db : 21 : b6 : ea : 5 b :
07 : 68 : 14 : 93 : cc : 9 c : 31 : fb : c3 : 68 : b2 : 43 : f6 : dd : f8 :
c9 : 32 : a8 : b4 : 03 : 8f : 44 : e7 : b1 : 5 c : a8 : 76 : 34 : 4 a : 14 :
78 : 59 : f2 : b4 : 3 b : 39 : 45 : 86 : 68 : ad : 5 e : 0 a : 1 a : 9 a : 66 :
95 : 46 : dd : 28 : 12 : e3 : b3 : 61 : 7 a : 0 a : ef : 99 : d5 : 8 e : 3 b :
b4 : cc : 87 : fd : 94 : 22 : 5 e : 01 : d2 : dc : c4 : 69 : a7 : 72 : 68 :
14 : 6 c : 51 : 91 : 8f : 18 : e8 : b4 : d7 : 0 a : a1 : f0 : c7 : 62 : 3 b :
cc : 52 : cf : 37 : 31 : d3 : 86 : 41 : b2 : d2 : 83 : 0 b : 7 e : ec : b2 :
f0 : 95 : 52 : ff : 13 : 7 d : 04 : 6 e : 49 : 4 e : 7f : 33 : c3 : 59 : 00 :
02 : b1 : 6 d : 1 b : 97 : d9 : 36 : fd : a2 : 8f : 90 : c3 : ed : 3 c : a3 :
53 : 38 : 16 : 8 a : c1 : 6f : 77 : c3 : c5 : 7 a : dc : 2 e : 8f : 7 c : 6 c :
22 : 56 : e4 : 1 a : 5f : 65 : 45 : 05 : 90 : db : b5 : bc : f0 : 6 d : 66 :
61
) " );
EXPECT_EQ ( PrintToString ( dsa . get ( ) , /*indent=*/ 2 , & EVP_PKEY_print_public ) ,
R " ( pub:
31 : 97 : 31 : a1 : 4 e : 38 : 56 : 88 : db : 94 : 1 d : bf : 65 : 5 c : da :
4 b : c2 : 10 : de : 74 : 20 : 03 : ce : 13 : 60 : f2 : 25 : 1 d : 55 : 7 c :
5 d : 94 : 82 : 54 : 08 : 53 : db : 85 : 95 : bf : dd : 5 e : 50 : d5 : 96 :
e0 : 79 : 51 : 1 b : bf : 4 d : 4 e : b9 : 3 a : c5 : ee : c4 : 5 e : 98 : 75 :
7 b : be : ff : 30 : e6 : d0 : 7 b : a6 : f1 : bc : 29 : ea : df : ec : f3 :
8 b : fa : 83 : 11 : 9f : 3f : f0 : 5 d : 06 : 51 : 32 : aa : 21 : fc : 26 :
17 : e7 : 50 : c2 : 16 : ba : fa : 54 : b7 : 7 e : 1 d : 2 c : a6 : a3 : 41 :
66 : 33 : 94 : 83 : b9 : bf : a0 : 4f : bd : a6 : fd : 2 c : 81 : 58 : 35 :
33 : 39 : c0 : 6 d : 33 : 40 : 56 : 64 : 12 : 5 a : cd : 35 : 53 : 21 : 78 :
8f : 27 : 24 : 37 : 66 : 8 a : df : 5 e : 5f : 63 : fc : 8 b : 2 d : ef : 57 :
db : 40 : 25 : d5 : 17 : 53 : 0 b : e4 : a5 : ae : 54 : bf : 46 : 4f : a6 :
79 : c3 : 74 : fa : 1f : 85 : 34 : 64 : 6 d : c5 : 03 : eb : 72 : 98 : 80 :
7 b : c0 : 8f : 35 : 11 : a7 : 09 : eb : 51 : e0 : b0 : ac : 92 : 14 : f2 :
ad : 37 : 95 : 5 a : ba : 8 c : c4 : db : ed : c4 : 4 e : 8 b : 8f : 84 : 33 :
64 : f8 : 57 : 12 : d7 : 08 : 7 e : 90 : 66 : df : 91 : 50 : 23 : f2 : 73 :
c0 : 6 b : b1 : 15 : dd : 64 : d7 : c9 : 75 : 17 : 73 : 72 : da : 33 : c4 :
6f : a5 : 47 : a1 : cc : d1 : c6 : 62 : e5 : ca : ab : 5f : 2 a : 8f : 6 b :
cc
P :
00 : 9 e : 12 : fa : b3 : de : 12 : 21 : 35 : 01 : dd : 82 : aa : 10 : ca :
2 d : 10 : 1 d : 2 d : 4 e : bf : ef : 4 d : 2 a : 3f : 8 d : aa : 0f : e0 : ce :
da : d8 : d6 : af : 85 : 61 : 6 a : a2 : f3 : 25 : 2 c : 0 a : 2 b : 5 a : 6 d :
b0 : 9 e : 6f : 14 : 90 : 0 e : 0 d : db : 83 : 11 : 87 : 6 d : d8 : f9 : 66 :
95 : 25 : f9 : 9 e : d6 : 59 : 49 : e1 : 84 : d5 : 06 : 47 : 93 : 27 : 11 :
69 : a2 : 28 : 68 : 0 b : 95 : ec : 12 : f5 : 9 a : 8 e : 20 : b2 : 1f : 2 b :
58 : eb : 2 a : 20 : 12 : d3 : 5 b : de : 2 e : e3 : 51 : 82 : 2f : e8 : f3 :
2 d : 0 a : 33 : 05 : 65 : dc : ce : 5 c : 67 : 2 b : 72 : 59 : c1 : 4 b : 24 :
33 : d0 : b5 : b2 : ca : 2 b : 2 d : b0 : ab : 62 : 6 e : 8f : 13 : f4 : 7f :
e0 : 34 : 5 d : 90 : 4 e : 72 : 94 : bb : 03 : 8 e : 9 c : e2 : 1 a : 9 e : 58 :
0 b : 83 : 35 : 62 : 78 : 70 : 6 c : fe : 76 : 84 : 36 : c6 : 9 d : e1 : 49 :
cc : ff : 98 : b4 : aa : b8 : cb : 4f : 63 : 85 : c9 : f1 : 02 : ce : 59 :
34 : 6 e : ae : ef : 27 : e0 : ad : 22 : 2 d : 53 : d6 : e8 : 9 c : c8 : cd :
e5 : 77 : 6 d : d0 : 00 : 57 : b0 : 3f : 2 d : 88 : ab : 3 c : ed : ba : fd :
7 b : 58 : 5f : 0 b : 7f : 78 : 35 : e1 : 7 a : 37 : 28 : bb : f2 : 5 e : a6 :
25 : 72 : f2 : 45 : dc : 11 : 1f : 3 c : e3 : 9 c : b6 : ff : ac : c3 : 1 b :
0 a : 27 : 90 : e7 : bd : e9 : 02 : 24 : ea : 9 b : 09 : 31 : 53 : 62 : af :
3 d : 2 b
Q :
00 : f3 : 81 : dc : f5 : 3 e : bf : 72 : 4f : 8 b : 2 e : 5 c : a8 : 2 c : 01 :
0f : b4 : b5 : ed : a9 : 35 : 8 d : 0f : d8 : 8 e : d2 : 78 : 58 : 94 : 88 :
b5 : 4f : c3
G :
0 c : 40 : 2 a : 72 : 5 d : cc : 3 a : 62 : e0 : 2 b : f4 : cf : 43 : cd : 17 :
f4 : a4 : 93 : 59 : 12 : 20 : 22 : 36 : 69 : cf : 41 : 93 : ed : ab : 42 :
3 a : d0 : 8 d : fb : 55 : 2 e : 30 : 8 a : 6 a : 57 : a5 : ff : bc : 7 c : d0 :
fb : 20 : 87 : f8 : 1f : 8 d : f0 : cb : 08 : ab : 21 : 33 : 28 : 7 d : 2 b :
69 : 68 : 71 : 4 a : 94 : f6 : 33 : c9 : 40 : 84 : 5 a : 48 : a3 : e1 : 67 :
08 : dd : e7 : 61 : cc : 6 a : 8 e : ab : 2 d : 84 : db : 21 : b6 : ea : 5 b :
07 : 68 : 14 : 93 : cc : 9 c : 31 : fb : c3 : 68 : b2 : 43 : f6 : dd : f8 :
c9 : 32 : a8 : b4 : 03 : 8f : 44 : e7 : b1 : 5 c : a8 : 76 : 34 : 4 a : 14 :
78 : 59 : f2 : b4 : 3 b : 39 : 45 : 86 : 68 : ad : 5 e : 0 a : 1 a : 9 a : 66 :
95 : 46 : dd : 28 : 12 : e3 : b3 : 61 : 7 a : 0 a : ef : 99 : d5 : 8 e : 3 b :
b4 : cc : 87 : fd : 94 : 22 : 5 e : 01 : d2 : dc : c4 : 69 : a7 : 72 : 68 :
14 : 6 c : 51 : 91 : 8f : 18 : e8 : b4 : d7 : 0 a : a1 : f0 : c7 : 62 : 3 b :
cc : 52 : cf : 37 : 31 : d3 : 86 : 41 : b2 : d2 : 83 : 0 b : 7 e : ec : b2 :
f0 : 95 : 52 : ff : 13 : 7 d : 04 : 6 e : 49 : 4 e : 7f : 33 : c3 : 59 : 00 :
02 : b1 : 6 d : 1 b : 97 : d9 : 36 : fd : a2 : 8f : 90 : c3 : ed : 3 c : a3 :
53 : 38 : 16 : 8 a : c1 : 6f : 77 : c3 : c5 : 7 a : dc : 2 e : 8f : 7 c : 6 c :
22 : 56 : e4 : 1 a : 5f : 65 : 45 : 05 : 90 : db : b5 : bc : f0 : 6 d : 66 :
61
) " );
EXPECT_EQ ( PrintToString ( dsa . get ( ) , /*indent=*/ 2 , & EVP_PKEY_print_private ) ,
R " ( Private-Key: (2048 bit)
priv :
00 : b0 : c7 : 68 : 70 : 27 : 43 : bc : 51 : 24 : 29 : 93 : a9 : 71 : a5 :
28 : 89 : 79 : 54 : 44 : f7 : c6 : 45 : 22 : 03 : d0 : ce : 84 : fe : 61 :
17 : d4 : 6 e
pub :
31 : 97 : 31 : a1 : 4 e : 38 : 56 : 88 : db : 94 : 1 d : bf : 65 : 5 c : da :
4 b : c2 : 10 : de : 74 : 20 : 03 : ce : 13 : 60 : f2 : 25 : 1 d : 55 : 7 c :
5 d : 94 : 82 : 54 : 08 : 53 : db : 85 : 95 : bf : dd : 5 e : 50 : d5 : 96 :
e0 : 79 : 51 : 1 b : bf : 4 d : 4 e : b9 : 3 a : c5 : ee : c4 : 5 e : 98 : 75 :
7 b : be : ff : 30 : e6 : d0 : 7 b : a6 : f1 : bc : 29 : ea : df : ec : f3 :
8 b : fa : 83 : 11 : 9f : 3f : f0 : 5 d : 06 : 51 : 32 : aa : 21 : fc : 26 :
17 : e7 : 50 : c2 : 16 : ba : fa : 54 : b7 : 7 e : 1 d : 2 c : a6 : a3 : 41 :
66 : 33 : 94 : 83 : b9 : bf : a0 : 4f : bd : a6 : fd : 2 c : 81 : 58 : 35 :
33 : 39 : c0 : 6 d : 33 : 40 : 56 : 64 : 12 : 5 a : cd : 35 : 53 : 21 : 78 :
8f : 27 : 24 : 37 : 66 : 8 a : df : 5 e : 5f : 63 : fc : 8 b : 2 d : ef : 57 :
db : 40 : 25 : d5 : 17 : 53 : 0 b : e4 : a5 : ae : 54 : bf : 46 : 4f : a6 :
79 : c3 : 74 : fa : 1f : 85 : 34 : 64 : 6 d : c5 : 03 : eb : 72 : 98 : 80 :
7 b : c0 : 8f : 35 : 11 : a7 : 09 : eb : 51 : e0 : b0 : ac : 92 : 14 : f2 :
ad : 37 : 95 : 5 a : ba : 8 c : c4 : db : ed : c4 : 4 e : 8 b : 8f : 84 : 33 :
64 : f8 : 57 : 12 : d7 : 08 : 7 e : 90 : 66 : df : 91 : 50 : 23 : f2 : 73 :
c0 : 6 b : b1 : 15 : dd : 64 : d7 : c9 : 75 : 17 : 73 : 72 : da : 33 : c4 :
6f : a5 : 47 : a1 : cc : d1 : c6 : 62 : e5 : ca : ab : 5f : 2 a : 8f : 6 b :
cc
P :
00 : 9 e : 12 : fa : b3 : de : 12 : 21 : 35 : 01 : dd : 82 : aa : 10 : ca :
2 d : 10 : 1 d : 2 d : 4 e : bf : ef : 4 d : 2 a : 3f : 8 d : aa : 0f : e0 : ce :
da : d8 : d6 : af : 85 : 61 : 6 a : a2 : f3 : 25 : 2 c : 0 a : 2 b : 5 a : 6 d :
b0 : 9 e : 6f : 14 : 90 : 0 e : 0 d : db : 83 : 11 : 87 : 6 d : d8 : f9 : 66 :
95 : 25 : f9 : 9 e : d6 : 59 : 49 : e1 : 84 : d5 : 06 : 47 : 93 : 27 : 11 :
69 : a2 : 28 : 68 : 0 b : 95 : ec : 12 : f5 : 9 a : 8 e : 20 : b2 : 1f : 2 b :
58 : eb : 2 a : 20 : 12 : d3 : 5 b : de : 2 e : e3 : 51 : 82 : 2f : e8 : f3 :
2 d : 0 a : 33 : 05 : 65 : dc : ce : 5 c : 67 : 2 b : 72 : 59 : c1 : 4 b : 24 :
33 : d0 : b5 : b2 : ca : 2 b : 2 d : b0 : ab : 62 : 6 e : 8f : 13 : f4 : 7f :
e0 : 34 : 5 d : 90 : 4 e : 72 : 94 : bb : 03 : 8 e : 9 c : e2 : 1 a : 9 e : 58 :
0 b : 83 : 35 : 62 : 78 : 70 : 6 c : fe : 76 : 84 : 36 : c6 : 9 d : e1 : 49 :
cc : ff : 98 : b4 : aa : b8 : cb : 4f : 63 : 85 : c9 : f1 : 02 : ce : 59 :
34 : 6 e : ae : ef : 27 : e0 : ad : 22 : 2 d : 53 : d6 : e8 : 9 c : c8 : cd :
e5 : 77 : 6 d : d0 : 00 : 57 : b0 : 3f : 2 d : 88 : ab : 3 c : ed : ba : fd :
7 b : 58 : 5f : 0 b : 7f : 78 : 35 : e1 : 7 a : 37 : 28 : bb : f2 : 5 e : a6 :
25 : 72 : f2 : 45 : dc : 11 : 1f : 3 c : e3 : 9 c : b6 : ff : ac : c3 : 1 b :
0 a : 27 : 90 : e7 : bd : e9 : 02 : 24 : ea : 9 b : 09 : 31 : 53 : 62 : af :
3 d : 2 b
Q :
00 : f3 : 81 : dc : f5 : 3 e : bf : 72 : 4f : 8 b : 2 e : 5 c : a8 : 2 c : 01 :
0f : b4 : b5 : ed : a9 : 35 : 8 d : 0f : d8 : 8 e : d2 : 78 : 58 : 94 : 88 :
b5 : 4f : c3
G :
0 c : 40 : 2 a : 72 : 5 d : cc : 3 a : 62 : e0 : 2 b : f4 : cf : 43 : cd : 17 :
f4 : a4 : 93 : 59 : 12 : 20 : 22 : 36 : 69 : cf : 41 : 93 : ed : ab : 42 :
3 a : d0 : 8 d : fb : 55 : 2 e : 30 : 8 a : 6 a : 57 : a5 : ff : bc : 7 c : d0 :
fb : 20 : 87 : f8 : 1f : 8 d : f0 : cb : 08 : ab : 21 : 33 : 28 : 7 d : 2 b :
69 : 68 : 71 : 4 a : 94 : f6 : 33 : c9 : 40 : 84 : 5 a : 48 : a3 : e1 : 67 :
08 : dd : e7 : 61 : cc : 6 a : 8 e : ab : 2 d : 84 : db : 21 : b6 : ea : 5 b :
07 : 68 : 14 : 93 : cc : 9 c : 31 : fb : c3 : 68 : b2 : 43 : f6 : dd : f8 :
c9 : 32 : a8 : b4 : 03 : 8f : 44 : e7 : b1 : 5 c : a8 : 76 : 34 : 4 a : 14 :
78 : 59 : f2 : b4 : 3 b : 39 : 45 : 86 : 68 : ad : 5 e : 0 a : 1 a : 9 a : 66 :
95 : 46 : dd : 28 : 12 : e3 : b3 : 61 : 7 a : 0 a : ef : 99 : d5 : 8 e : 3 b :
b4 : cc : 87 : fd : 94 : 22 : 5 e : 01 : d2 : dc : c4 : 69 : a7 : 72 : 68 :
14 : 6 c : 51 : 91 : 8f : 18 : e8 : b4 : d7 : 0 a : a1 : f0 : c7 : 62 : 3 b :
cc : 52 : cf : 37 : 31 : d3 : 86 : 41 : b2 : d2 : 83 : 0 b : 7 e : ec : b2 :
f0 : 95 : 52 : ff : 13 : 7 d : 04 : 6 e : 49 : 4 e : 7f : 33 : c3 : 59 : 00 :
02 : b1 : 6 d : 1 b : 97 : d9 : 36 : fd : a2 : 8f : 90 : c3 : ed : 3 c : a3 :
53 : 38 : 16 : 8 a : c1 : 6f : 77 : c3 : c5 : 7 a : dc : 2 e : 8f : 7 c : 6 c :
22 : 56 : e4 : 1 a : 5f : 65 : 45 : 05 : 90 : db : b5 : bc : f0 : 6 d : 66 :
61
) " );
// TODO(davidben): This output is a little off. |BIO_hexdump| does not really
// fit for printing the public key, and we've lost the curve name.
bssl : : UniquePtr < EVP_PKEY > ec =
ParsePrivateKey ( EVP_PKEY_EC , kExampleECKeyDER , sizeof ( kExampleECKeyDER ) ) ;
ASSERT_TRUE ( ec ) ;
EXPECT_EQ ( PrintToString ( ec . get ( ) , /*indent=*/ 2 , & EVP_PKEY_print_params ) ,
" ECDSA-Parameters: (256 bit) \n " ) ;
EXPECT_EQ ( PrintToString ( ec . get ( ) , /*indent=*/ 2 , & EVP_PKEY_print_public ) ,
R " ( Public-Key: (256 bit)
00000000 04 e6 2 b 69 e2 bf 65 9f 97 be 2f 1 e 0 d 94 8 a 4 c | . . + i . . e . . . / . . . . L |
00000010 d5 97 6 b b7 a9 1 e 0 d 46 fb dd a9 a9 1 e 9 d dc ba | . . k . . . . F . . . . . . . . |
00000020 5 a 01 e7 d6 97 a8 0 a 18 f9 c3 c4 a3 1 e 56 e2 7 c | Z . . . . . . . . . . . . V . | |
00000030 83 48 db 16 1 a 1 c f5 1 d 7 e f1 94 2 d 4 b cf 72 22 | . H . . . . . . ~ . . - K . r " |
00000040 c1 | . |
) " );
EXPECT_EQ ( PrintToString ( ec . get ( ) , /*indent=*/ 2 , & EVP_PKEY_print_private ) ,
R " ( Private-Key: (256 bit)
priv :
07 : 0f : 08 : 72 : 7 a : d4 : a0 : 4 a : 9 c : dd : 59 : c9 : 4 d : 89 : 68 :
77 : 08 : b5 : 6f : c9 : 5 d : 30 : 77 : 0 e : e8 : d1 : c9 : ce : 0 a : 8 b :
b4 : 6 a
00000000 04 e6 2 b 69 e2 bf 65 9f 97 be 2f 1 e 0 d 94 8 a 4 c | . . + i . . e . . . / . . . . L |
00000010 d5 97 6 b b7 a9 1 e 0 d 46 fb dd a9 a9 1 e 9 d dc ba | . . k . . . . F . . . . . . . . |
00000020 5 a 01 e7 d6 97 a8 0 a 18 f9 c3 c4 a3 1 e 56 e2 7 c | Z . . . . . . . . . . . . V . | |
00000030 83 48 db 16 1 a 1 c f5 1 d 7 e f1 94 2 d 4 b cf 72 22 | . H . . . . . . ~ . . - K . r " |
00000040 c1 | . |
) " );
}
// Tests loading a bad key in PKCS8 format.
TEST ( EVPExtraTest , BadECKey ) {
const uint8_t * derp = kExampleBadECKeyDER ;
@ -502,18 +813,6 @@ TEST(EVPExtraTest, MarshalEmptyPublicKey) {
EXPECT_EQ ( EVP_R_UNSUPPORTED_ALGORITHM , ERR_GET_REASON ( ERR_peek_last_error ( ) ) ) ;
}
static bssl : : UniquePtr < EVP_PKEY > ParsePrivateKey ( int type , const uint8_t * in ,
size_t len ) {
const uint8_t * ptr = in ;
bssl : : UniquePtr < EVP_PKEY > pkey ( d2i_PrivateKey ( type , nullptr , & ptr , len ) ) ;
if ( ! pkey ) {
return nullptr ;
}
EXPECT_EQ ( in + len , ptr ) ;
return pkey ;
}
TEST ( EVPExtraTest , d2i_PrivateKey ) {
EXPECT_TRUE ( ParsePrivateKey ( EVP_PKEY_RSA , kExampleRSAKeyDER ,
sizeof ( kExampleRSAKeyDER ) ) ) ;