Set the private key within EcKeyBuilder
The initial usecase here is creating EcKey instances from JWK representations, that hold private keys, as defined within RFC 7517.
This commit is contained in:
parent
cfb4ea31d5
commit
d9e0321851
|
|
@ -472,6 +472,15 @@ impl EcKeyBuilderRef {
|
||||||
).map(|_| self)
|
).map(|_| self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Sets the private key.
|
||||||
|
pub fn set_private_key(&mut self,
|
||||||
|
key: &BigNumRef)
|
||||||
|
-> Result<&mut EcKeyBuilderRef, ErrorStack> {
|
||||||
|
unsafe {
|
||||||
|
cvt(ffi::EC_KEY_set_private_key(self.as_ptr(), key.as_ptr())).map(|_| self)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
@ -573,4 +582,20 @@ mod test {
|
||||||
assert!(ec_key.check_key().is_ok());
|
assert!(ec_key.check_key().is_ok());
|
||||||
assert!(ec_key.public_key().is_some());
|
assert!(ec_key.public_key().is_some());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn set_private_key() {
|
||||||
|
let group = EcGroup::from_curve_name(nid::X9_62_PRIME256V1).unwrap();
|
||||||
|
let d = data_encoding::base64url::decode_nopad("870MB6gfuTJ4HtUnUvYMyJpr5eUZNP4Bk43bVdj3eAE".as_bytes())
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let dbn = BigNum::from_slice(&d).unwrap();
|
||||||
|
|
||||||
|
let mut builder = EcKeyBuilder::new().unwrap();
|
||||||
|
builder.set_group(&group).unwrap();
|
||||||
|
builder.set_private_key(&dbn).unwrap();
|
||||||
|
|
||||||
|
let ec_key = builder.build();
|
||||||
|
assert!(ec_key.private_key().is_some());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue