Commit 2aaba8bd authored by Steven Fackler's avatar Steven Fackler
Browse files

Make Nid values associated constants

parent 82d3ac94
Loading
Loading
Loading
Loading
+949 −938
Original line number Diff line number Diff line
@@ -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);
}
+7 −7
Original line number Diff line number Diff line
@@ -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
    }
+24 −28
Original line number Diff line number Diff line
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)
    }
}

+15 −27
Original line number Diff line number Diff line
@@ -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> {