Loading openssl-sys/src/lib.rs +1 −0 Original line number Diff line number Diff line Loading @@ -2106,6 +2106,7 @@ extern "C" { a: *const ASN1_OBJECT, no_name: c_int, ) -> c_int; pub fn OBJ_nid2ln(nid: c_int) -> *const c_char; pub fn OBJ_nid2sn(nid: c_int) -> *const c_char; pub fn OBJ_find_sigid_algs(signid: c_int, pdig_nid: *mut c_int, ppkey_nid: *mut c_int) -> c_int; Loading openssl/src/nid.rs +69 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,9 @@ use ffi; use libc::c_int; use std::ptr; use std::ffi::CStr; use std::str; /// A numerical identifier for an OpenSSL object. /// /// Objects in OpenSSL can have a short name, a long name, and Loading Loading @@ -57,6 +60,38 @@ impl Nid { } } /// Return the string representation of a `Nid` (long) /// This corresponds to [`OBJ_nid2ln`] /// /// [`OBJ_nid2ln`]: https://www.openssl.org/docs/man1.1.0/crypto/OBJ_nid2ln.html pub fn to_long_name(&self) -> Option<&'static str> { unsafe { let s = ffi::OBJ_nid2ln(self.0); if s.is_null() { None } else { Some(str::from_utf8(CStr::from_ptr(s).to_bytes()).unwrap()) } } } /// Return the string representation of a `Nid` (short) /// This corresponds to [`OBJ_nid2sn`] /// /// [`OBJ_nid2sn`]: https://www.openssl.org/docs/man1.1.0/crypto/OBJ_nid2sn.html pub fn to_short_name(&self) -> Option<&'static str> { unsafe { let s = ffi::OBJ_nid2sn(self.0); if s.is_null() { None } else { Some(str::from_utf8(CStr::from_ptr(s).to_bytes()).unwrap()) } } } pub const UNDEF: Nid = Nid(ffi::NID_undef); pub const ITU_T: Nid = Nid(ffi::NID_itu_t); pub const CCITT: Nid = Nid(ffi::NID_ccitt); Loading Loading @@ -1018,4 +1053,38 @@ mod test { Some(Nid::SHA256) ); } #[test] fn test_long_name_conversion() { let common_name = Nid::COMMONNAME; let organizational_unit_name = Nid::ORGANIZATIONALUNITNAME; let aes256_cbc_hmac_sha1 = Nid::AES_256_CBC_HMAC_SHA1; let id_cmc_lrapopwitness = Nid::ID_CMC_LRAPOPWITNESS; let ms_ctl_sign = Nid::MS_CTL_SIGN; let undefined_nid = Nid::from_raw(118); assert_eq!(common_name.to_long_name(), Some("commonName")); assert_eq!(organizational_unit_name.to_long_name(), Some("organizationalUnitName")); assert_eq!(aes256_cbc_hmac_sha1.to_long_name(), Some("aes-256-cbc-hmac-sha1")); assert_eq!(id_cmc_lrapopwitness.to_long_name(), Some("id-cmc-lraPOPWitness")); assert_eq!(ms_ctl_sign.to_long_name(), Some("Microsoft Trust List Signing")); assert_eq!(undefined_nid.to_long_name(), None); } #[test] fn test_short_name_conversion() { let common_name = Nid::COMMONNAME; let organizational_unit_name = Nid::ORGANIZATIONALUNITNAME; let aes256_cbc_hmac_sha1 = Nid::AES_256_CBC_HMAC_SHA1; let id_cmc_lrapopwitness = Nid::ID_CMC_LRAPOPWITNESS; let ms_ctl_sign = Nid::MS_CTL_SIGN; let undefined_nid = Nid::from_raw(118); assert_eq!(common_name.to_short_name(), Some("CN")); assert_eq!(organizational_unit_name.to_short_name(), Some("OU")); assert_eq!(aes256_cbc_hmac_sha1.to_short_name(), Some("AES-256-CBC-HMAC-SHA1")); assert_eq!(id_cmc_lrapopwitness.to_short_name(), Some("id-cmc-lraPOPWitness")); assert_eq!(ms_ctl_sign.to_short_name(), Some("msCTLSign")); assert_eq!(undefined_nid.to_long_name(), None); } } Loading
openssl-sys/src/lib.rs +1 −0 Original line number Diff line number Diff line Loading @@ -2106,6 +2106,7 @@ extern "C" { a: *const ASN1_OBJECT, no_name: c_int, ) -> c_int; pub fn OBJ_nid2ln(nid: c_int) -> *const c_char; pub fn OBJ_nid2sn(nid: c_int) -> *const c_char; pub fn OBJ_find_sigid_algs(signid: c_int, pdig_nid: *mut c_int, ppkey_nid: *mut c_int) -> c_int; Loading
openssl/src/nid.rs +69 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,9 @@ use ffi; use libc::c_int; use std::ptr; use std::ffi::CStr; use std::str; /// A numerical identifier for an OpenSSL object. /// /// Objects in OpenSSL can have a short name, a long name, and Loading Loading @@ -57,6 +60,38 @@ impl Nid { } } /// Return the string representation of a `Nid` (long) /// This corresponds to [`OBJ_nid2ln`] /// /// [`OBJ_nid2ln`]: https://www.openssl.org/docs/man1.1.0/crypto/OBJ_nid2ln.html pub fn to_long_name(&self) -> Option<&'static str> { unsafe { let s = ffi::OBJ_nid2ln(self.0); if s.is_null() { None } else { Some(str::from_utf8(CStr::from_ptr(s).to_bytes()).unwrap()) } } } /// Return the string representation of a `Nid` (short) /// This corresponds to [`OBJ_nid2sn`] /// /// [`OBJ_nid2sn`]: https://www.openssl.org/docs/man1.1.0/crypto/OBJ_nid2sn.html pub fn to_short_name(&self) -> Option<&'static str> { unsafe { let s = ffi::OBJ_nid2sn(self.0); if s.is_null() { None } else { Some(str::from_utf8(CStr::from_ptr(s).to_bytes()).unwrap()) } } } pub const UNDEF: Nid = Nid(ffi::NID_undef); pub const ITU_T: Nid = Nid(ffi::NID_itu_t); pub const CCITT: Nid = Nid(ffi::NID_ccitt); Loading Loading @@ -1018,4 +1053,38 @@ mod test { Some(Nid::SHA256) ); } #[test] fn test_long_name_conversion() { let common_name = Nid::COMMONNAME; let organizational_unit_name = Nid::ORGANIZATIONALUNITNAME; let aes256_cbc_hmac_sha1 = Nid::AES_256_CBC_HMAC_SHA1; let id_cmc_lrapopwitness = Nid::ID_CMC_LRAPOPWITNESS; let ms_ctl_sign = Nid::MS_CTL_SIGN; let undefined_nid = Nid::from_raw(118); assert_eq!(common_name.to_long_name(), Some("commonName")); assert_eq!(organizational_unit_name.to_long_name(), Some("organizationalUnitName")); assert_eq!(aes256_cbc_hmac_sha1.to_long_name(), Some("aes-256-cbc-hmac-sha1")); assert_eq!(id_cmc_lrapopwitness.to_long_name(), Some("id-cmc-lraPOPWitness")); assert_eq!(ms_ctl_sign.to_long_name(), Some("Microsoft Trust List Signing")); assert_eq!(undefined_nid.to_long_name(), None); } #[test] fn test_short_name_conversion() { let common_name = Nid::COMMONNAME; let organizational_unit_name = Nid::ORGANIZATIONALUNITNAME; let aes256_cbc_hmac_sha1 = Nid::AES_256_CBC_HMAC_SHA1; let id_cmc_lrapopwitness = Nid::ID_CMC_LRAPOPWITNESS; let ms_ctl_sign = Nid::MS_CTL_SIGN; let undefined_nid = Nid::from_raw(118); assert_eq!(common_name.to_short_name(), Some("CN")); assert_eq!(organizational_unit_name.to_short_name(), Some("OU")); assert_eq!(aes256_cbc_hmac_sha1.to_short_name(), Some("AES-256-CBC-HMAC-SHA1")); assert_eq!(id_cmc_lrapopwitness.to_short_name(), Some("id-cmc-lraPOPWitness")); assert_eq!(ms_ctl_sign.to_short_name(), Some("msCTLSign")); assert_eq!(undefined_nid.to_long_name(), None); } }