Make Nid values associated constants

This commit is contained in:
Steven Fackler 2017-12-25 19:19:47 -07:00
parent 82d3ac948b
commit 2aaba8bd7a
4 changed files with 995 additions and 1000 deletions

View File

@ -41,7 +41,6 @@ impl Nid {
pub fn as_raw(&self) -> c_int {
self.0
}
}
pub const UNDEF: Nid = Nid(ffi::NID_undef);
pub const ITU_T: Nid = Nid(ffi::NID_itu_t);
@ -67,7 +66,8 @@ pub const DSAWITHSHA1: Nid = Nid(ffi::NID_dsaWithSHA1);
pub const ANSI_X9_62: Nid = Nid(ffi::NID_ansi_X9_62);
pub const X9_62_PRIME_FIELD: Nid = Nid(ffi::NID_X9_62_prime_field);
pub const X9_62_CHARACTERISTIC_TWO_FIELD: Nid = Nid(ffi::NID_X9_62_characteristic_two_field);
pub const X9_62_ID_CHARACTERISTIC_TWO_BASIS: Nid = Nid(ffi::NID_X9_62_id_characteristic_two_basis);
pub const X9_62_ID_CHARACTERISTIC_TWO_BASIS: Nid =
Nid(ffi::NID_X9_62_id_characteristic_two_basis);
pub const X9_62_ONBASIS: Nid = Nid(ffi::NID_X9_62_onBasis);
pub const X9_62_TPBASIS: Nid = Nid(ffi::NID_X9_62_tpBasis);
pub const X9_62_PPBASIS: Nid = Nid(ffi::NID_X9_62_ppBasis);
@ -246,14 +246,18 @@ pub const ID_SMIME_AA_ETS_COMMITMENTTYPE: Nid = Nid(ffi::NID_id_smime_aa_ets_com
pub const ID_SMIME_AA_ETS_SIGNERLOCATION: Nid = Nid(ffi::NID_id_smime_aa_ets_signerLocation);
pub const ID_SMIME_AA_ETS_SIGNERATTR: Nid = Nid(ffi::NID_id_smime_aa_ets_signerAttr);
pub const ID_SMIME_AA_ETS_OTHERSIGCERT: Nid = Nid(ffi::NID_id_smime_aa_ets_otherSigCert);
pub const ID_SMIME_AA_ETS_CONTENTTIMESTAMP: Nid = Nid(ffi::NID_id_smime_aa_ets_contentTimestamp);
pub const ID_SMIME_AA_ETS_CONTENTTIMESTAMP: Nid =
Nid(ffi::NID_id_smime_aa_ets_contentTimestamp);
pub const ID_SMIME_AA_ETS_CERTIFICATEREFS: Nid = Nid(ffi::NID_id_smime_aa_ets_CertificateRefs);
pub const ID_SMIME_AA_ETS_REVOCATIONREFS: Nid = Nid(ffi::NID_id_smime_aa_ets_RevocationRefs);
pub const ID_SMIME_AA_ETS_CERTVALUES: Nid = Nid(ffi::NID_id_smime_aa_ets_certValues);
pub const ID_SMIME_AA_ETS_REVOCATIONVALUES: Nid = Nid(ffi::NID_id_smime_aa_ets_revocationValues);
pub const ID_SMIME_AA_ETS_REVOCATIONVALUES: Nid =
Nid(ffi::NID_id_smime_aa_ets_revocationValues);
pub const ID_SMIME_AA_ETS_ESCTIMESTAMP: Nid = Nid(ffi::NID_id_smime_aa_ets_escTimeStamp);
pub const ID_SMIME_AA_ETS_CERTCRLTIMESTAMP: Nid = Nid(ffi::NID_id_smime_aa_ets_certCRLTimestamp);
pub const ID_SMIME_AA_ETS_ARCHIVETIMESTAMP: Nid = Nid(ffi::NID_id_smime_aa_ets_archiveTimeStamp);
pub const ID_SMIME_AA_ETS_CERTCRLTIMESTAMP: Nid =
Nid(ffi::NID_id_smime_aa_ets_certCRLTimestamp);
pub const ID_SMIME_AA_ETS_ARCHIVETIMESTAMP: Nid =
Nid(ffi::NID_id_smime_aa_ets_archiveTimeStamp);
pub const ID_SMIME_AA_SIGNATURETYPE: Nid = Nid(ffi::NID_id_smime_aa_signatureType);
pub const ID_SMIME_AA_DVCS_DVC: Nid = Nid(ffi::NID_id_smime_aa_dvcs_dvc);
pub const ID_SMIME_ALG_ESDHWITH3DES: Nid = Nid(ffi::NID_id_smime_alg_ESDHwith3DES);
@ -269,10 +273,13 @@ pub const ID_SMIME_SPQ_ETS_SQT_URI: Nid = Nid(ffi::NID_id_smime_spq_ets_sqt_uri)
pub const ID_SMIME_SPQ_ETS_SQT_UNOTICE: Nid = Nid(ffi::NID_id_smime_spq_ets_sqt_unotice);
pub const ID_SMIME_CTI_ETS_PROOFOFORIGIN: Nid = Nid(ffi::NID_id_smime_cti_ets_proofOfOrigin);
pub const ID_SMIME_CTI_ETS_PROOFOFRECEIPT: Nid = Nid(ffi::NID_id_smime_cti_ets_proofOfReceipt);
pub const ID_SMIME_CTI_ETS_PROOFOFDELIVERY: Nid = Nid(ffi::NID_id_smime_cti_ets_proofOfDelivery);
pub const ID_SMIME_CTI_ETS_PROOFOFDELIVERY: Nid =
Nid(ffi::NID_id_smime_cti_ets_proofOfDelivery);
pub const ID_SMIME_CTI_ETS_PROOFOFSENDER: Nid = Nid(ffi::NID_id_smime_cti_ets_proofOfSender);
pub const ID_SMIME_CTI_ETS_PROOFOFAPPROVAL: Nid = Nid(ffi::NID_id_smime_cti_ets_proofOfApproval);
pub const ID_SMIME_CTI_ETS_PROOFOFCREATION: Nid = Nid(ffi::NID_id_smime_cti_ets_proofOfCreation);
pub const ID_SMIME_CTI_ETS_PROOFOFAPPROVAL: Nid =
Nid(ffi::NID_id_smime_cti_ets_proofOfApproval);
pub const ID_SMIME_CTI_ETS_PROOFOFCREATION: Nid =
Nid(ffi::NID_id_smime_cti_ets_proofOfCreation);
pub const FRIENDLYNAME: Nid = Nid(ffi::NID_friendlyName);
pub const LOCALKEYID: Nid = Nid(ffi::NID_localKeyID);
pub const MS_CSP_NAME: Nid = Nid(ffi::NID_ms_csp_name);
@ -468,7 +475,8 @@ pub const CAREPOSITORY: Nid = Nid(ffi::NID_caRepository);
pub const ID_PKIX_OCSP_BASIC: Nid = Nid(ffi::NID_id_pkix_OCSP_basic);
pub const ID_PKIX_OCSP_NONCE: Nid = Nid(ffi::NID_id_pkix_OCSP_Nonce);
pub const ID_PKIX_OCSP_CRLID: Nid = Nid(ffi::NID_id_pkix_OCSP_CrlID);
pub const ID_PKIX_OCSP_ACCEPTABLERESPONSES: Nid = Nid(ffi::NID_id_pkix_OCSP_acceptableResponses);
pub const ID_PKIX_OCSP_ACCEPTABLERESPONSES: Nid =
Nid(ffi::NID_id_pkix_OCSP_acceptableResponses);
pub const ID_PKIX_OCSP_NOCHECK: Nid = Nid(ffi::NID_id_pkix_OCSP_noCheck);
pub const ID_PKIX_OCSP_ARCHIVECUTOFF: Nid = Nid(ffi::NID_id_pkix_OCSP_archiveCutoff);
pub const ID_PKIX_OCSP_SERVICELOCATOR: Nid = Nid(ffi::NID_id_pkix_OCSP_serviceLocator);
@ -879,7 +887,8 @@ pub const CRYPTOPRO: Nid = Nid(ffi::NID_cryptopro);
pub const CRYPTOCOM: Nid = Nid(ffi::NID_cryptocom);
pub const ID_GOSTR3411_94_WITH_GOSTR3410_2001: Nid =
Nid(ffi::NID_id_GostR3411_94_with_GostR3410_2001);
pub const ID_GOSTR3411_94_WITH_GOSTR3410_94: Nid = Nid(ffi::NID_id_GostR3411_94_with_GostR3410_94);
pub const ID_GOSTR3411_94_WITH_GOSTR3410_94: Nid =
Nid(ffi::NID_id_GostR3411_94_with_GostR3410_94);
pub const ID_GOSTR3411_94: Nid = Nid(ffi::NID_id_GostR3411_94);
pub const ID_HMACGOSTR3411_94: Nid = Nid(ffi::NID_id_HMACGostR3411_94);
pub const ID_GOSTR3410_2001: Nid = Nid(ffi::NID_id_GostR3410_2001);
@ -894,7 +903,8 @@ pub const ID_GOST28147_89_CRYPTOPRO_KEYMESHING: Nid =
Nid(ffi::NID_id_Gost28147_89_CryptoPro_KeyMeshing);
pub const ID_GOST28147_89_NONE_KEYMESHING: Nid = Nid(ffi::NID_id_Gost28147_89_None_KeyMeshing);
pub const ID_GOSTR3411_94_TESTPARAMSET: Nid = Nid(ffi::NID_id_GostR3411_94_TestParamSet);
pub const ID_GOSTR3411_94_CRYPTOPROPARAMSET: Nid = Nid(ffi::NID_id_GostR3411_94_CryptoProParamSet);
pub const ID_GOSTR3411_94_CRYPTOPROPARAMSET: Nid =
Nid(ffi::NID_id_GostR3411_94_CryptoProParamSet);
pub const ID_GOST28147_89_TESTPARAMSET: Nid = Nid(ffi::NID_id_Gost28147_89_TestParamSet);
pub const ID_GOST28147_89_CRYPTOPRO_A_PARAMSET: Nid =
Nid(ffi::NID_id_Gost28147_89_CryptoPro_A_ParamSet);
@ -980,3 +990,4 @@ pub const RC4_HMAC_MD5: Nid = Nid(ffi::NID_rc4_hmac_md5);
pub const AES_128_CBC_HMAC_SHA1: Nid = Nid(ffi::NID_aes_128_cbc_hmac_sha1);
pub const AES_192_CBC_HMAC_SHA1: Nid = Nid(ffi::NID_aes_192_cbc_hmac_sha1);
pub const AES_256_CBC_HMAC_SHA1: Nid = Nid(ffi::NID_aes_256_cbc_hmac_sha1);
}

View File

@ -11,7 +11,7 @@ use pkey::{PKey, PKeyRef};
use error::ErrorStack;
use x509::X509;
use stack::Stack;
use nid;
use nid::Nid;
foreign_type_and_impl_send_sync! {
type CType = ffi::PKCS12;
@ -75,8 +75,8 @@ impl Pkcs12 {
ffi::init();
Pkcs12Builder {
nid_key: nid::UNDEF, //nid::PBE_WITHSHA1AND3_KEY_TRIPLEDES_CBC,
nid_cert: nid::UNDEF, //nid::PBE_WITHSHA1AND40BITRC2_CBC,
nid_key: Nid::UNDEF, //nid::PBE_WITHSHA1AND3_KEY_TRIPLEDES_CBC,
nid_cert: Nid::UNDEF, //nid::PBE_WITHSHA1AND40BITRC2_CBC,
iter: ffi::PKCS12_DEFAULT_ITER,
mac_iter: ffi::PKCS12_DEFAULT_ITER,
ca: None,
@ -92,8 +92,8 @@ pub struct ParsedPkcs12 {
}
pub struct Pkcs12Builder {
nid_key: nid::Nid,
nid_cert: nid::Nid,
nid_key: Nid,
nid_cert: Nid,
iter: c_int,
mac_iter: c_int,
ca: Option<Stack<X509>>,
@ -101,13 +101,13 @@ pub struct Pkcs12Builder {
impl Pkcs12Builder {
/// The encryption algorithm that should be used for the key
pub fn key_algorithm(&mut self, nid: nid::Nid) -> &mut Self {
pub fn key_algorithm(&mut self, nid: Nid) -> &mut Self {
self.nid_key = nid;
self
}
/// The encryption algorithm that should be used for the cert
pub fn cert_algorithm(&mut self, nid: nid::Nid) -> &mut Self {
pub fn cert_algorithm(&mut self, nid: Nid) -> &mut Self {
self.nid_cert = nid;
self
}

View File

@ -1,8 +1,8 @@
use std::fmt::{self, Write};
use error::ErrorStack;
use nid::{self, Nid};
use x509::{X509v3Context, X509Extension};
use nid::Nid;
use x509::{X509Extension, X509v3Context};
/// Type-only version of the `Extension` enum.
///
@ -77,10 +77,10 @@ impl ExtensionType {
#[deprecated(since = "0.9.7", note = "use X509Builder and X509ReqBuilder instead")]
pub fn get_nid(&self) -> Option<Nid> {
match self {
&ExtensionType::KeyUsage => Some(nid::KEY_USAGE),
&ExtensionType::ExtKeyUsage => Some(nid::EXT_KEY_USAGE),
&ExtensionType::SubjectAltName => Some(nid::SUBJECT_ALT_NAME),
&ExtensionType::IssuerAltName => Some(nid::ISSUER_ALT_NAME),
&ExtensionType::KeyUsage => Some(Nid::KEY_USAGE),
&ExtensionType::ExtKeyUsage => Some(Nid::EXT_KEY_USAGE),
&ExtensionType::SubjectAltName => Some(Nid::SUBJECT_ALT_NAME),
&ExtensionType::IssuerAltName => Some(Nid::ISSUER_ALT_NAME),
&ExtensionType::OtherNid(nid) => Some(nid),
&ExtensionType::OtherStr(_) => None,
}
@ -112,22 +112,18 @@ impl ToString for Extension {
match self {
&Extension::KeyUsage(ref purposes) => join(purposes.iter(), ","),
&Extension::ExtKeyUsage(ref purposes) => join(purposes.iter(), ","),
&Extension::SubjectAltName(ref names) => {
join(
names.iter().map(|&(ref opt, ref val)| {
opt.to_string() + ":" + &val
}),
&Extension::SubjectAltName(ref names) => join(
names
.iter()
.map(|&(ref opt, ref val)| opt.to_string() + ":" + &val),
",",
)
}
&Extension::IssuerAltName(ref names) => {
join(
names.iter().map(|&(ref opt, ref val)| {
opt.to_string() + ":" + &val
}),
),
&Extension::IssuerAltName(ref names) => join(
names
.iter()
.map(|&(ref opt, ref val)| opt.to_string() + ":" + &val),
",",
)
}
),
&Extension::OtherNid(_, ref value) => value.clone(),
&Extension::OtherStr(_, ref value) => value.clone(),
}
@ -282,7 +278,7 @@ impl BasicConstraints {
if let Some(pathlen) = self.pathlen {
write!(value, ",pathlen:{}", pathlen).unwrap();
}
X509Extension::new_nid(None, None, nid::BASIC_CONSTRAINTS, &value)
X509Extension::new_nid(None, None, Nid::BASIC_CONSTRAINTS, &value)
}
}
@ -398,7 +394,7 @@ impl KeyUsage {
append(&mut value, &mut first, self.crl_sign, "cRLSign");
append(&mut value, &mut first, self.encipher_only, "encipherOnly");
append(&mut value, &mut first, self.decipher_only, "decipherOnly");
X509Extension::new_nid(None, None, nid::KEY_USAGE, &value)
X509Extension::new_nid(None, None, Nid::KEY_USAGE, &value)
}
}
@ -520,7 +516,7 @@ impl ExtendedKeyUsage {
for other in &self.other {
append(&mut value, &mut first, true, other);
}
X509Extension::new_nid(None, None, nid::EXT_KEY_USAGE, &value)
X509Extension::new_nid(None, None, Nid::EXT_KEY_USAGE, &value)
}
}
@ -543,7 +539,7 @@ impl SubjectKeyIdentifier {
let mut first = true;
append(&mut value, &mut first, self.critical, "critical");
append(&mut value, &mut first, true, "hash");
X509Extension::new_nid(None, Some(ctx), nid::SUBJECT_KEY_IDENTIFIER, &value)
X509Extension::new_nid(None, Some(ctx), Nid::SUBJECT_KEY_IDENTIFIER, &value)
}
}
@ -591,7 +587,7 @@ impl AuthorityKeyIdentifier {
Some(false) => append(&mut value, &mut first, true, "issuer"),
None => {}
}
X509Extension::new_nid(None, Some(ctx), nid::AUTHORITY_KEY_IDENTIFIER, &value)
X509Extension::new_nid(None, Some(ctx), Nid::AUTHORITY_KEY_IDENTIFIER, &value)
}
}
@ -655,7 +651,7 @@ impl SubjectAlternativeName {
for name in &self.names {
append(&mut value, &mut first, true, name);
}
X509Extension::new_nid(None, Some(ctx), nid::SUBJECT_ALT_NAME, &value)
X509Extension::new_nid(None, Some(ctx), Nid::SUBJECT_ALT_NAME, &value)
}
}

View File

@ -13,30 +13,30 @@ use std::ptr;
use std::slice;
use std::str;
use {cvt, cvt_p, cvt_n};
use asn1::{Asn1StringRef, Asn1Time, Asn1TimeRef, Asn1BitStringRef, Asn1IntegerRef, Asn1ObjectRef};
use {cvt, cvt_n, cvt_p};
use asn1::{Asn1BitStringRef, Asn1IntegerRef, Asn1ObjectRef, Asn1StringRef, Asn1Time, Asn1TimeRef};
use bio::MemBioSlice;
use bn::{BigNum, MSB_MAYBE_ZERO};
use conf::ConfRef;
use error::ErrorStack;
use hash::MessageDigest;
use nid::{self, Nid};
use nid::Nid;
use pkey::{PKey, PKeyRef};
use stack::{Stack, StackRef, Stackable};
use string::OpensslString;
use ssl::SslRef;
#[cfg(ossl10x)]
use ffi::{X509_set_notBefore, X509_set_notAfter, ASN1_STRING_data, X509_STORE_CTX_get_chain};
use ffi::{ASN1_STRING_data, X509_STORE_CTX_get_chain, X509_set_notAfter, X509_set_notBefore};
#[cfg(ossl110)]
use ffi::{X509_set1_notBefore as X509_set_notBefore, X509_set1_notAfter as X509_set_notAfter,
ASN1_STRING_get0_data as ASN1_STRING_data,
X509_STORE_CTX_get0_chain as X509_STORE_CTX_get_chain};
use ffi::{ASN1_STRING_get0_data as ASN1_STRING_data,
X509_STORE_CTX_get0_chain as X509_STORE_CTX_get_chain,
X509_set1_notAfter as X509_set_notAfter, X509_set1_notBefore as X509_set_notBefore};
#[cfg(any(all(feature = "v102", ossl102), all(feature = "v110", ossl110)))]
pub mod verify;
use x509::extension::{ExtensionType, Extension};
use x509::extension::{Extension, ExtensionType};
pub mod extension;
pub mod store;
@ -237,7 +237,7 @@ impl X509Generator {
let mut name = X509Name::builder()?;
if self.names.is_empty() {
name.append_entry_by_nid(nid::COMMONNAME, "rust-openssl")?;
name.append_entry_by_nid(Nid::COMMONNAME, "rust-openssl")?;
} else {
for &(ref key, ref value) in &self.names {
name.append_entry_by_text(key, value)?;
@ -252,12 +252,7 @@ impl X509Generator {
let extension = match exttype.get_nid() {
Some(nid) => {
let ctx = builder.x509v3_context(None, None);
X509Extension::new_nid(
None,
Some(&ctx),
nid,
&ext.to_string(),
)?
X509Extension::new_nid(None, Some(&ctx), nid, &ext.to_string())?
}
None => {
let ctx = builder.x509v3_context(None, None);
@ -294,15 +289,11 @@ impl X509Generator {
let exts = compat::X509_get0_extensions(cert.as_ptr());
if exts != ptr::null_mut() {
cvt(
ffi::X509_REQ_add_extensions(req.as_ptr(), exts as *mut _),
)?;
cvt(ffi::X509_REQ_add_extensions(req.as_ptr(), exts as *mut _))?;
}
let hash_fn = self.hash_type.as_ptr();
cvt(
ffi::X509_REQ_sign(req.as_ptr(), p_key.as_ptr(), hash_fn),
)?;
cvt(ffi::X509_REQ_sign(req.as_ptr(), p_key.as_ptr(), hash_fn))?;
Ok(req)
}
@ -428,9 +419,7 @@ impl X509Builder {
/// Adds an X509 extension value to the certificate.
pub fn append_extension(&mut self, extension: X509Extension) -> Result<(), ErrorStack> {
unsafe {
cvt(
ffi::X509_add_ext(self.0.as_ptr(), extension.as_ptr(), -1),
)?;
cvt(ffi::X509_add_ext(self.0.as_ptr(), extension.as_ptr(), -1))?;
mem::forget(extension);
Ok(())
}
@ -595,8 +584,8 @@ impl X509 {
ffi::PEM_read_bio_X509(bio.as_ptr(), ptr::null_mut(), None, ptr::null_mut());
if r.is_null() {
let err = ffi::ERR_peek_last_error();
if ffi::ERR_GET_LIB(err) == ffi::ERR_LIB_PEM &&
ffi::ERR_GET_REASON(err) == ffi::PEM_R_NO_START_LINE
if ffi::ERR_GET_LIB(err) == ffi::ERR_LIB_PEM
&& ffi::ERR_GET_REASON(err) == ffi::PEM_R_NO_START_LINE
{
ffi::ERR_clear_error();
break;
@ -837,7 +826,6 @@ impl X509ReqBuilder {
ffi::init();
cvt_p(ffi::X509_REQ_new()).map(|p| X509ReqBuilder(X509Req(p)))
}
}
pub fn set_version(&mut self, version: i32) -> Result<(), ErrorStack> {