summaryrefslogtreecommitdiff
path: root/openssl
diff options
context:
space:
mode:
authorSteven Fackler <sfackler@gmail.com>2020-12-25 14:42:37 -0500
committerSteven Fackler <sfackler@gmail.com>2020-12-25 14:42:37 -0500
commitca6f97d8a0256ba4d3855bbfc9f58d8baa28ed49 (patch)
treedfa34f11f874687dedfe65a601ca95b0090b7e1f /openssl
parent1dd71add4a542c8d965f484e5edd6f9eb66fe494 (diff)
downloadrust-openssl-ca6f97d8a0256ba4d3855bbfc9f58d8baa28ed49.zip
cleanups to asn1 types
Diffstat (limited to 'openssl')
-rw-r--r--openssl/src/asn1.rs104
-rw-r--r--openssl/src/x509/mod.rs14
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,