diff options
author | Steven Fackler <sfackler@gmail.com> | 2020-12-25 14:42:37 -0500 |
---|---|---|
committer | Steven Fackler <sfackler@gmail.com> | 2020-12-25 14:42:37 -0500 |
commit | ca6f97d8a0256ba4d3855bbfc9f58d8baa28ed49 (patch) | |
tree | dfa34f11f874687dedfe65a601ca95b0090b7e1f /openssl | |
parent | 1dd71add4a542c8d965f484e5edd6f9eb66fe494 (diff) | |
download | rust-openssl-ca6f97d8a0256ba4d3855bbfc9f58d8baa28ed49.zip |
cleanups to asn1 types
Diffstat (limited to 'openssl')
-rw-r--r-- | openssl/src/asn1.rs | 104 | ||||
-rw-r--r-- | openssl/src/x509/mod.rs | 14 |
2 files changed, 48 insertions, 70 deletions
diff --git a/openssl/src/asn1.rs b/openssl/src/asn1.rs index 06fa9664..abf937e2 100644 --- a/openssl/src/asn1.rs +++ b/openssl/src/asn1.rs @@ -83,99 +83,77 @@ impl fmt::Display for Asn1GeneralizedTimeRef { } } -/// An ASN.1 tag value +/// The type of an ASN.1 value. #[derive(Debug, Copy, Clone, PartialEq, Eq)] -pub struct Asn1Tag(c_int); +pub struct Asn1Type(c_int); -impl Asn1Tag { - /// Return the underlying c_int value - pub fn as_c_int(&self) -> c_int { - self.0 - } +#[allow(missing_docs)] // no need to document the constants +impl Asn1Type { + pub const EOC: Asn1Type = Asn1Type(ffi::V_ASN1_EOC); + + pub const BOOLEAN: Asn1Type = Asn1Type(ffi::V_ASN1_BOOLEAN); - /// Equivalent to OpenSSL Constant: V_ASN1_EOC - pub const EOC: Asn1Tag = Asn1Tag(ffi::V_ASN1_EOC); + pub const INTEGER: Asn1Type = Asn1Type(ffi::V_ASN1_INTEGER); - /// Equivalent to OpenSSL Constant: V_ASN1_BOOLEAN - pub const BOOLEAN: Asn1Tag = Asn1Tag(ffi::V_ASN1_BOOLEAN); + pub const BIT_STRING: Asn1Type = Asn1Type(ffi::V_ASN1_BIT_STRING); - /// Equivalent to OpenSSL Constant: V_ASN1_INTEGER - pub const INTEGER: Asn1Tag = Asn1Tag(ffi::V_ASN1_INTEGER); + pub const OCTET_STRING: Asn1Type = Asn1Type(ffi::V_ASN1_OCTET_STRING); - /// Equivalent to OpenSSL Constant: V_ASN1_BIT_STRING - pub const BIT_STRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_BIT_STRING); + pub const NULL: Asn1Type = Asn1Type(ffi::V_ASN1_NULL); - /// Equivalent to OpenSSL Constant: V_ASN1_OCTET_STRING - pub const OCTET_STRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_OCTET_STRING); + pub const OBJECT: Asn1Type = Asn1Type(ffi::V_ASN1_OBJECT); - /// Equivalent to OpenSSL Constant: V_ASN1_NULL - pub const NULL: Asn1Tag = Asn1Tag(ffi::V_ASN1_NULL); + pub const OBJECT_DESCRIPTOR: Asn1Type = Asn1Type(ffi::V_ASN1_OBJECT_DESCRIPTOR); - /// Equivalent to OpenSSL Constant: V_ASN1_OBJECT - pub const OBJECT: Asn1Tag = Asn1Tag(ffi::V_ASN1_OBJECT); + pub const EXTERNAL: Asn1Type = Asn1Type(ffi::V_ASN1_EXTERNAL); - /// Equivalent to OpenSSL Constant: V_ASN1_OBJECT_DESCRIPTOR - pub const OBJECT_DESCRIPTOR: Asn1Tag = Asn1Tag(ffi::V_ASN1_OBJECT_DESCRIPTOR); + pub const REAL: Asn1Type = Asn1Type(ffi::V_ASN1_REAL); - /// Equivalent to OpenSSL Constant: V_ASN1_EXTERNAL - pub const EXTERNAL: Asn1Tag = Asn1Tag(ffi::V_ASN1_EXTERNAL); + pub const ENUMERATED: Asn1Type = Asn1Type(ffi::V_ASN1_ENUMERATED); - /// Equivalent to OpenSSL Constant: V_ASN1_REAL - pub const REAL: Asn1Tag = Asn1Tag(ffi::V_ASN1_REAL); + pub const UTF8STRING: Asn1Type = Asn1Type(ffi::V_ASN1_UTF8STRING); - /// Equivalent to OpenSSL Constant: V_ASN1_ENUMERATED - pub const ENUMERATED: Asn1Tag = Asn1Tag(ffi::V_ASN1_ENUMERATED); + pub const SEQUENCE: Asn1Type = Asn1Type(ffi::V_ASN1_SEQUENCE); - /// Equivalent to OpenSSL Constant: V_ASN1_UTF8STRING - pub const UTF8STRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_UTF8STRING); + pub const SET: Asn1Type = Asn1Type(ffi::V_ASN1_SET); - /// Equivalent to OpenSSL Constant: V_ASN1_SEQUENCE - pub const SEQUENCE: Asn1Tag = Asn1Tag(ffi::V_ASN1_SEQUENCE); + pub const NUMERICSTRING: Asn1Type = Asn1Type(ffi::V_ASN1_NUMERICSTRING); - /// Equivalent to OpenSSL Constant: V_ASN1_SET - pub const SET: Asn1Tag = Asn1Tag(ffi::V_ASN1_SET); + pub const PRINTABLESTRING: Asn1Type = Asn1Type(ffi::V_ASN1_PRINTABLESTRING); - /// Equivalent to OpenSSL Constant: V_ASN1_NUMERICSTRING - pub const NUMERICSTRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_NUMERICSTRING); + pub const T61STRING: Asn1Type = Asn1Type(ffi::V_ASN1_T61STRING); - /// Equivalent to OpenSSL Constant: V_ASN1_PRINTABLESTRING - pub const PRINTABLESTRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_PRINTABLESTRING); + pub const TELETEXSTRING: Asn1Type = Asn1Type(ffi::V_ASN1_TELETEXSTRING); - /// Equivalent to OpenSSL Constant: V_ASN1_T61STRING - pub const T61STRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_T61STRING); + pub const VIDEOTEXSTRING: Asn1Type = Asn1Type(ffi::V_ASN1_VIDEOTEXSTRING); - /// Equivalent to OpenSSL Constant: V_ASN1_TELETEXSTRING - pub const TELETEXSTRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_TELETEXSTRING); + pub const IA5STRING: Asn1Type = Asn1Type(ffi::V_ASN1_IA5STRING); - /// Equivalent to OpenSSL Constant: V_ASN1_VIDEOTEXSTRING - pub const VIDEOTEXSTRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_VIDEOTEXSTRING); + pub const UTCTIME: Asn1Type = Asn1Type(ffi::V_ASN1_UTCTIME); - /// Equivalent to OpenSSL Constant: V_ASN1_IA5STRING - pub const IA5STRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_IA5STRING); + pub const GENERALIZEDTIME: Asn1Type = Asn1Type(ffi::V_ASN1_GENERALIZEDTIME); - /// Equivalent to OpenSSL Constant: V_ASN1_UTCTIME - pub const UTCTIME: Asn1Tag = Asn1Tag(ffi::V_ASN1_UTCTIME); + pub const GRAPHICSTRING: Asn1Type = Asn1Type(ffi::V_ASN1_GRAPHICSTRING); - /// Equivalent to OpenSSL Constant: V_ASN1_GENERALIZEDTIME - pub const GENERALIZEDTIME: Asn1Tag = Asn1Tag(ffi::V_ASN1_GENERALIZEDTIME); + pub const ISO64STRING: Asn1Type = Asn1Type(ffi::V_ASN1_ISO64STRING); - /// Equivalent to OpenSSL Constant: V_ASN1_GRAPHICSTRING - pub const GRAPHICSTRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_GRAPHICSTRING); + pub const VISIBLESTRING: Asn1Type = Asn1Type(ffi::V_ASN1_VISIBLESTRING); - /// Equivalent to OpenSSL Constant: V_ASN1_ISO64STRING - pub const ISO64STRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_ISO64STRING); + pub const GENERALSTRING: Asn1Type = Asn1Type(ffi::V_ASN1_GENERALSTRING); - /// Equivalent to OpenSSL Constant: V_ASN1_VISIBLESTRING - pub const VISIBLESTRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_VISIBLESTRING); + pub const UNIVERSALSTRING: Asn1Type = Asn1Type(ffi::V_ASN1_UNIVERSALSTRING); - /// Equivalent to OpenSSL Constant: V_ASN1_GENERALSTRING - pub const GENERALSTRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_GENERALSTRING); + pub const BMPSTRING: Asn1Type = Asn1Type(ffi::V_ASN1_BMPSTRING); - /// Equivalent to OpenSSL Constant: V_ASN1_UNIVERSALSTRING - pub const UNIVERSALSTRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_UNIVERSALSTRING); + /// Constructs an `Asn1Type` from a raw OpenSSL value. + pub fn from_raw(value: c_int) -> Self { + Asn1Type(value) + } - /// Equivalent to OpenSSL Constant: V_ASN1_BMPSTRING - pub const BMPSTRING: Asn1Tag = Asn1Tag(ffi::V_ASN1_BMPSTRING); + /// Returns the raw OpenSSL value represented by this type. + pub fn as_raw(&self) -> c_int { + self.0 + } } /// Difference between two ASN1 times. diff --git a/openssl/src/x509/mod.rs b/openssl/src/x509/mod.rs index 5a765e27..1bcb9ea8 100644 --- a/openssl/src/x509/mod.rs +++ b/openssl/src/x509/mod.rs @@ -20,7 +20,7 @@ use std::ptr; use std::slice; use std::str; -use asn1::{Asn1BitStringRef, Asn1IntegerRef, Asn1ObjectRef, Asn1StringRef, Asn1Tag, Asn1TimeRef}; +use asn1::{Asn1BitStringRef, Asn1IntegerRef, Asn1ObjectRef, Asn1StringRef, Asn1TimeRef, Asn1Type}; use bio::MemBioSlice; use conf::ConfRef; use error::ErrorStack; @@ -824,7 +824,7 @@ impl X509NameBuilder { } } - /// Add a field entry by str with a specific type. See [Asn1Tag](openssl::asn1::Asn1Tag) + /// Add a field entry by str with a specific type. /// /// This corresponds to [`X509_NAME_add_entry_by_txt`]. /// @@ -833,7 +833,7 @@ impl X509NameBuilder { &mut self, field: &str, value: &str, - ty: Asn1Tag, + ty: Asn1Type, ) -> Result<(), ErrorStack> { unsafe { let field = CString::new(field).unwrap(); @@ -841,7 +841,7 @@ impl X509NameBuilder { cvt(ffi::X509_NAME_add_entry_by_txt( self.0.as_ptr(), field.as_ptr() as *mut _, - ty.as_c_int(), + ty.as_raw(), value.as_ptr(), value.len() as c_int, -1, @@ -872,7 +872,7 @@ impl X509NameBuilder { } } - /// Add a field entry by NID with a specific type. See [Asn1Tag](openssl::asn1::Asn1Tag) + /// Add a field entry by NID with a specific type. /// /// This corresponds to [`X509_NAME_add_entry_by_NID`]. /// @@ -881,14 +881,14 @@ impl X509NameBuilder { &mut self, field: Nid, value: &str, - ty: Asn1Tag, + ty: Asn1Type, ) -> Result<(), ErrorStack> { unsafe { assert!(value.len() <= c_int::max_value() as usize); cvt(ffi::X509_NAME_add_entry_by_NID( self.0.as_ptr(), field.as_raw(), - ty.as_c_int(), + ty.as_raw(), value.as_ptr() as *mut _, value.len() as c_int, -1, |