More crypto fixes

This commit is contained in:
ivmarkov 2023-05-04 06:13:36 +00:00
parent 2f2e332c75
commit a539f4621e
2 changed files with 13 additions and 3 deletions

View file

@ -69,7 +69,7 @@ p256 = { version = "0.13.0", default-features = false, features = ["arithmetic",
elliptic-curve = { version = "0.13.2", optional = true }
crypto-bigint = { version = "0.4", default-features = false, optional = true }
rand_core = { version = "0.6", default-features = false, optional = true }
x509-cert = { version = "0.2.0", default-features = false, features = ["pem", "std"], optional = true } # TODO: requires `alloc`
x509-cert = { version = "0.2.0", default-features = false, features = ["pem"], optional = true } # TODO: requires `alloc`
# to compute the check digit
verhoeff = "1"

View file

@ -34,7 +34,7 @@ use p256::{
use sha2::Digest;
use x509_cert::{
attr::AttributeType,
der::{asn1::BitString, Any, Encode},
der::{asn1::BitString, Any, Encode, Writer},
name::RdnSequence,
request::CertReq,
spki::{AlgorithmIdentifier, SubjectPublicKeyInfoOwned},
@ -205,7 +205,7 @@ impl KeyPair {
attributes: Default::default(),
};
let mut message = vec![];
info.encode(&mut message).unwrap();
info.encode(&mut VecWriter(&mut message)).unwrap();
// Can't use self.sign_msg as the signature has to be in DER format
let private_key = self.private_key()?;
@ -375,3 +375,13 @@ impl<'a> ccm::aead::Buffer for SliceBuffer<'a> {
self.len = len;
}
}
struct VecWriter<'a>(&'a mut alloc::vec::Vec<u8>);
impl<'a> Writer for VecWriter<'a> {
fn write(&mut self, slice: &[u8]) -> x509_cert::der::Result<()> {
self.0.extend_from_slice(slice);
Ok(())
}
}