16
16
sec1:: { FromEncodedPoint , ToEncodedPoint } ,
17
17
AffinePoint , CurveArithmetic ,
18
18
} ,
19
- pkcs8:: { der, EncodePrivateKey } ,
19
+ pkcs8:: {
20
+ der:: { self , asn1:: OctetStringRef } ,
21
+ EncodePrivateKey ,
22
+ } ,
20
23
} ;
21
24
22
25
// Imports for actual PEM support
@@ -39,19 +42,19 @@ where
39
42
} ;
40
43
}
41
44
42
- impl < C > TryFrom < pkcs8:: PrivateKeyInfo < ' _ > > for SecretKey < C >
45
+ impl < C > TryFrom < pkcs8:: PrivateKeyInfoRef < ' _ > > for SecretKey < C >
43
46
where
44
47
C : AssociatedOid + Curve + ValidatePublicKey ,
45
48
FieldBytesSize < C > : ModulusSize ,
46
49
{
47
50
type Error = pkcs8:: Error ;
48
51
49
- fn try_from ( private_key_info : pkcs8:: PrivateKeyInfo < ' _ > ) -> pkcs8:: Result < Self > {
52
+ fn try_from ( private_key_info : pkcs8:: PrivateKeyInfoRef < ' _ > ) -> pkcs8:: Result < Self > {
50
53
private_key_info
51
54
. algorithm
52
55
. assert_oids ( ALGORITHM_OID , C :: OID ) ?;
53
56
54
- let ec_private_key = EcPrivateKey :: from_der ( private_key_info. private_key ) ?;
57
+ let ec_private_key = EcPrivateKey :: from_der ( private_key_info. private_key . as_bytes ( ) ) ?;
55
58
Ok ( Self :: try_from ( ec_private_key) ?)
56
59
}
57
60
}
@@ -64,14 +67,17 @@ where
64
67
FieldBytesSize < C > : ModulusSize ,
65
68
{
66
69
fn to_pkcs8_der ( & self ) -> pkcs8:: Result < der:: SecretDocument > {
67
- // TODO(tarcieri): make `PrivateKeyInfo ` generic around `Params`
70
+ // TODO(tarcieri): make `PrivateKeyInfoRef ` generic around `Params`
68
71
let algorithm_identifier = pkcs8:: AlgorithmIdentifierRef {
69
72
oid : ALGORITHM_OID ,
70
73
parameters : Some ( ( & C :: OID ) . into ( ) ) ,
71
74
} ;
72
75
73
76
let ec_private_key = self . to_sec1_der ( ) ?;
74
- let pkcs8_key = pkcs8:: PrivateKeyInfo :: new ( algorithm_identifier, & ec_private_key) ;
77
+ let pkcs8_key = pkcs8:: PrivateKeyInfoRef :: new (
78
+ algorithm_identifier,
79
+ OctetStringRef :: new ( & ec_private_key) ?,
80
+ ) ;
75
81
Ok ( der:: SecretDocument :: encode_msg ( & pkcs8_key) ?)
76
82
}
77
83
}
0 commit comments