@@ -237,8 +237,13 @@ impl KeyNegotiator {
237
237
let ( encryption_key, decryption_key) = agreement:: agree_ephemeral (
238
238
self . private_key ,
239
239
& agreement:: UnparsedPublicKey :: new ( KEY_AGREEMENT_ALGORITHM , peer_public_key) ,
240
- anyhow ! ( "Couldn't derive session keys" ) ,
241
- |key_material| {
240
+ |key_material| -> Result <
241
+ (
242
+ Result < [ u8 ; KEY_AGREEMENT_ALGORITHM_KEY_LENGTH ] , anyhow:: Error > ,
243
+ Result < [ u8 ; KEY_AGREEMENT_ALGORITHM_KEY_LENGTH ] , anyhow:: Error > ,
244
+ ) ,
245
+ anyhow:: Error ,
246
+ > {
242
247
let key_material = key_material
243
248
. try_into ( )
244
249
. map_err ( anyhow:: Error :: msg)
@@ -284,6 +289,8 @@ impl KeyNegotiator {
284
289
}
285
290
} ,
286
291
)
292
+ . map_err ( anyhow:: Error :: msg)
293
+ . context ( "Couldn't derive session keys" ) ?
287
294
. context ( "Couldn't agree on session keys" ) ?;
288
295
Ok ( (
289
296
EncryptionKey ( encryption_key. context ( "Couldn't derive encryption key" ) ?) ,
@@ -351,8 +358,9 @@ impl Signer {
351
358
let rng = ring:: rand:: SystemRandom :: new ( ) ;
352
359
let key_pair_pkcs8 = EcdsaKeyPair :: generate_pkcs8 ( SIGNING_ALGORITHM , & rng)
353
360
. map_err ( |error| anyhow ! ( "Couldn't generate PKCS#8 key pair: {:?}" , error) ) ?;
354
- let key_pair = EcdsaKeyPair :: from_pkcs8 ( SIGNING_ALGORITHM , key_pair_pkcs8. as_ref ( ) )
355
- . map_err ( |error| anyhow ! ( "Couldn't parse generated key pair: {:?}" , error) ) ?;
361
+ let key_pair =
362
+ EcdsaKeyPair :: from_pkcs8 ( SIGNING_ALGORITHM , key_pair_pkcs8. as_ref ( ) , & rng)
363
+ . map_err ( |error| anyhow ! ( "Couldn't parse generated key pair: {:?}" , error) ) ?;
356
364
357
365
Ok ( Self { key_pair } )
358
366
}
0 commit comments