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