summaryrefslogtreecommitdiff
path: root/src/rust
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2023-04-24 07:15:54 -0600
committerGitHub <noreply@github.com>2023-04-24 07:15:54 -0600
commitcad9499ea01cbbd7196569b660f147d52e2e6e87 (patch)
tree4ee997d821da031872846d2c6ed612b8c378c3e1 /src/rust
parent085c373fb6e610f0939223c62f32f9eb643f7ab2 (diff)
downloadcryptography-cad9499ea01cbbd7196569b660f147d52e2e6e87.tar.gz
De-duplicate SPKI struct (#8803)
Diffstat (limited to 'src/rust')
-rw-r--r--src/rust/src/asn1.rs19
1 files changed, 4 insertions, 15 deletions
diff --git a/src/rust/src/asn1.rs b/src/rust/src/asn1.rs
index cad48a73f..d412bb8b7 100644
--- a/src/rust/src/asn1.rs
+++ b/src/rust/src/asn1.rs
@@ -3,6 +3,7 @@
// for complete details.
use crate::error::{CryptographyError, CryptographyResult};
+use cryptography_x509::common::SubjectPublicKeyInfo;
use cryptography_x509::name::Name;
use pyo3::basic::CompareOp;
use pyo3::types::IntoPyDict;
@@ -23,29 +24,17 @@ pub(crate) fn oid_to_py_oid<'p>(
Ok(pyo3::Py::new(py, crate::oid::ObjectIdentifier { oid: oid.clone() })?.into_ref(py))
}
-#[derive(asn1::Asn1Read)]
-struct AlgorithmIdentifier<'a> {
- _oid: asn1::ObjectIdentifier,
- _params: Option<asn1::Tlv<'a>>,
-}
-
-#[derive(asn1::Asn1Read)]
-struct Spki<'a> {
- _algorithm: AlgorithmIdentifier<'a>,
- data: asn1::BitString<'a>,
-}
-
#[pyo3::prelude::pyfunction]
fn parse_spki_for_data(
py: pyo3::Python<'_>,
data: &[u8],
) -> Result<pyo3::PyObject, CryptographyError> {
- let spki = asn1::parse_single::<Spki<'_>>(data)?;
- if spki.data.padding_bits() != 0 {
+ let spki = asn1::parse_single::<SubjectPublicKeyInfo<'_>>(data)?;
+ if spki.subject_public_key.padding_bits() != 0 {
return Err(pyo3::exceptions::PyValueError::new_err("Invalid public key encoding").into());
}
- Ok(pyo3::types::PyBytes::new(py, spki.data.as_bytes()).to_object(py))
+ Ok(pyo3::types::PyBytes::new(py, spki.subject_public_key.as_bytes()).to_object(py))
}
#[derive(asn1::Asn1Read, asn1::Asn1Write)]