1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
pub const OID_NIST_ENC_AES256_CBC: Oid<'static> = oid!(2.16.840.1.101.3.4.1.42);
pub const OID_NIST_HASH_SHA256: Oid<'static> = oid!(2.16.840.1.101.3.4.2.1);
pub const OID_PKCS7_ID_DATA: Oid<'static> = oid!(1.2.840.113549.1.7.1);
pub const OID_PKCS7_ID_SIGNED_DATA: Oid<'static> = oid!(1.2.840.113549.1.7.2);
pub const OID_PKCS7_ID_ENVELOPED_DATA: Oid<'static> = oid!(1.2.840.113549.1.7.3);
pub const OID_PKCS7_ID_SIGNED_ENVELOPED_DATA: Oid<'static> = oid!(1.2.840.113549.1.7.4);
pub const OID_PKCS7_ID_DIGESTED_DATA: Oid<'static> = oid!(1.2.840.113549.1.7.5);
pub const OID_PKCS7_ID_ENCRYPTED_DATA: Oid<'static> = oid!(1.2.840.113549.1.7.6);
pub const OID_KDF_SHA1_SINGLE: Oid<'static> = oid!(1.3.133.16.840.63.0.2);
pub const OID_X509: Oid<'static> = oid!(2.5.4);
pub const OID_X509_OBJECT_CLASS: Oid<'static> = oid!(2.5.4.0);
pub const OID_X509_ALIASED_ENTRY_NAME: Oid<'static> = oid!(2.5.4.1);
pub const OID_X509_KNOWLEDGE_INFORMATION: Oid<'static> = oid!(2.5.4.2);
pub const OID_X509_COMMON_NAME: Oid<'static> = oid!(2.5.4.3);
pub const OID_X509_SURNAME: Oid<'static> = oid!(2.5.4.4);
pub const OID_X509_COUNTRY_NAME: Oid<'static> = oid!(2.5.4.6);
pub const OID_X509_STATE_OR_PROVINCE_NAME: Oid<'static> = oid!(2.5.4.8);
pub const OID_X509_STREET_ADDRESS: Oid<'static> = oid!(2.5.4.9);
pub const OID_X509_ORGANIZATION_NAME: Oid<'static> = oid!(2.5.4.10);
pub const OID_X509_ORGANIZATIONAL_UNIT: Oid<'static> = oid!(2.5.4.11);
pub const OID_X509_TITLE: Oid<'static> = oid!(2.5.4.12);
pub const OID_X509_DESCRIPTION: Oid<'static> = oid!(2.5.4.13);
pub const OID_DOMAIN_COMPONENT: Oid<'static> = oid!(0.9.2342.19200300.100.1.25);
pub const SPC_INDIRECT_DATA_OBJID: Oid<'static> = oid!(1.3.6.1.4.1.311.2.1.4);
pub const SPC_STATEMENT_TYPE_OBJID: Oid<'static> = oid!(1.3.6.1.4.1.311.2.1.11);
pub const SPC_SP_OPUS_INFO_OBJID: Oid<'static> = oid!(1.3.6.1.4.1.311.2.1.12);
pub const SPC_PE_IMAGE_DATA: Oid<'static> = oid!(1.3.6.1.4.1.311.2.1.15);
pub const SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID : Oid<'static> = oid!(1.3.6.1.4.1.311.2.1.21);
pub const MS_CTL: Oid<'static> = oid!(1.3.6.1.4.1.311.10.1);
pub const OID_RSA_DSI_PKCS1_RSAENCRYPTION: Oid<'static> = oid!(1.2.840.113549.1.1.1);
pub const OID_RSA_DSI_PKCS1_MD2WITHRSAENC: Oid<'static> = oid!(1.2.840.113549.1.1.2);
pub const OID_RSA_DSI_PKCS1_MD4WITHRSAENC: Oid<'static> = oid!(1.2.840.113549.1.1.3);
pub const OID_RSA_DSI_PKCS1_MD5WITHRSAENC: Oid<'static> = oid!(1.2.840.113549.1.1.4);
pub const OID_RSA_DSI_PKCS1_SHA1WITHRSA: Oid<'static> = oid!(1.2.840.113549.1.1.5);
pub const OID_RSA_DSI_PKCS1_RSASSAPSS: Oid<'static> = oid!(1.2.840.113549.1.1.10);
pub const OID_RSA_DSI_PKCS1_SHA256WITHRSA: Oid<'static> = oid!(1.2.840.113549.1.1.11);
pub const OID_RSA_DSI_PKCS1_SHA384WITHRSA: Oid<'static> = oid!(1.2.840.113549.1.1.12);
pub const OID_RSA_DSI_PKCS1_SHA512WITHRSA: Oid<'static> = oid!(1.2.840.113549.1.1.13);
pub const OID_RSA_DSI_PKCS1_SHA224WITHRSA: Oid<'static> = oid!(1.2.840.113549.1.1.14);
pub const OID_KEY_TYPE_EC_PUBLIC_KEY: Oid<'static> = oid!(1.2.840.10045.2.1);
pub const OID_X500: Oid<'static> = oid!(2.5);
pub const OID_PKCS9_EMAIL_ADDRESS: Oid<'static> = oid!(1.2.840.113549.1.9.1);
pub const OID_PKCS9_UNSTRUCTURED_NAME: Oid<'static> = oid!(1.2.840.113549.1.9.2);
pub const OID_PKCS9_CONTENT_TYPE: Oid<'static> = oid!(1.2.840.113549.1.9.3);
pub const OID_PKCS9_ID_MESSAGE_DIGEST: Oid<'static> = oid!(1.2.840.113549.1.9.4);
pub const OID_PKCS9_SIGNING_TIME: Oid<'static> = oid!(1.2.840.113549.1.9.5);
pub const OID_PKCS9_SMIME_CAPABILITIES: Oid<'static> = oid!(1.2.840.113549.1.9.15);

impl OidRegistry {
    #[cfg(feature = "nist_algs")]
    #[doc = "Load all known OIDs for feature `nist_algs` in the registry."]
    pub fn with_nist_algs(mut self) -> Self {
        self.insert(oid!(2.16.840.1.101.3.4.1.42), OidEntry::new("aes-256-cbc", "256-bit Advanced Encryption Standard (AES) algorithm with Cipher-Block Chaining (CBC) mode of operation"));
        self.insert(oid!(2.16.840.1.101.3.4.2.1), OidEntry::new("sha256", "Secure Hash Algorithm that uses a 256 bit key (SHA256)"));
        self
    }

    #[cfg(feature = "pkcs7")]
    #[doc = "Load all known OIDs for feature `pkcs7` in the registry."]
    pub fn with_pkcs7(mut self) -> Self {
        self.insert(oid!(1.2.840.113549.1.7.1), OidEntry::new("pkcs7-data", "pkcs7-data"));
        self.insert(oid!(1.2.840.113549.1.7.2), OidEntry::new("pkcs7-signedData", "PKCS#7 Signed Data"));
        self.insert(oid!(1.2.840.113549.1.7.3), OidEntry::new("pkcs7-envelopedData", "PKCS#7 Enveloped Data"));
        self.insert(oid!(1.2.840.113549.1.7.4), OidEntry::new("pkcs7-signedAndEnvelopedData", "PKCS#7 Signed and Enveloped Data"));
        self.insert(oid!(1.2.840.113549.1.7.5), OidEntry::new("pkcs7-digestedData", "PKCS#7 Digested Data"));
        self.insert(oid!(1.2.840.113549.1.7.6), OidEntry::new("pkcs7-encryptedData", "PKCS#7 Encrypted Data"));
        self
    }

    #[cfg(feature = "kdf")]
    #[doc = "Load all known OIDs for feature `kdf` in the registry."]
    pub fn with_kdf(mut self) -> Self {
        self.insert(oid!(1.3.133.16.840.63.0.2), OidEntry::new("dhSinglePass-stdDH-sha1kdf-scheme", "Single pass Secure Hash Algorithm 1 (SHA1) key derivation"));
        self
    }

    #[cfg(feature = "x509")]
    #[doc = "Load all known OIDs for feature `x509` in the registry."]
    pub fn with_x509(mut self) -> Self {
        self.insert(oid!(2.5.4), OidEntry::new("x509", "X.509"));
        self.insert(oid!(2.5.4.0), OidEntry::new("objectClass", "Object classes"));
        self.insert(oid!(2.5.4.1), OidEntry::new("aliasedEntryName", "Aliased entry/object name"));
        self.insert(oid!(2.5.4.2), OidEntry::new("knowledgeInformation", "'knowledgeInformation' attribute type"));
        self.insert(oid!(2.5.4.3), OidEntry::new("commonName", "Common Name"));
        self.insert(oid!(2.5.4.4), OidEntry::new("surname", "Surname"));
        self.insert(oid!(2.5.4.6), OidEntry::new("countryName", "Country Name"));
        self.insert(oid!(2.5.4.8), OidEntry::new("stateOrProvinceName", "State or Province name"));
        self.insert(oid!(2.5.4.9), OidEntry::new("streetAddress", "Street Address"));
        self.insert(oid!(2.5.4.10), OidEntry::new("organizationName", "Organization Name"));
        self.insert(oid!(2.5.4.11), OidEntry::new("organizationalUnit", "Organizational Unit"));
        self.insert(oid!(2.5.4.12), OidEntry::new("title", "Title"));
        self.insert(oid!(2.5.4.13), OidEntry::new("description", "Description"));
        self.insert(oid!(0.9.2342.19200300.100.1.25), OidEntry::new("domainComponent", "Domain component"));
        self
    }

    #[cfg(feature = "ms_spc")]
    #[doc = "Load all known OIDs for feature `ms_spc` in the registry."]
    pub fn with_ms_spc(mut self) -> Self {
        self.insert(oid!(1.3.6.1.4.1.311.2.1.4), OidEntry::new("spcIndirectData", "The SPC_INDIRECT_DATA_CONTENT structure is used in Authenticode signatures to store the digest and other attributes of the signed file"));
        self.insert(oid!(1.3.6.1.4.1.311.2.1.11), OidEntry::new("spcStatementType", "spcStatementType"));
        self.insert(oid!(1.3.6.1.4.1.311.2.1.12), OidEntry::new("spcSpOpusInfo", "SpcSpOpusInfo"));
        self.insert(oid!(1.3.6.1.4.1.311.2.1.15), OidEntry::new("spcPEImageData", "spcPEImageData"));
        self.insert(oid!(1.3.6.1.4.1.311.2.1.21), OidEntry::new("msCodeInd", "MsCodeInd (SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID) is a ExtendedKeyUsage for Certificate Extensions which indicates Microsoft Individual Code Signing (authenticode)"));
        self.insert(oid!(1.3.6.1.4.1.311.10.1), OidEntry::new("szOID_CTL", "MS_CTL"));
        self
    }

    #[cfg(feature = "rsadsi")]
    #[doc = "Load all known OIDs for feature `rsadsi` in the registry."]
    pub fn with_rsadsi(mut self) -> Self {
        self.insert(oid!(1.2.840.113549.1.1.1), OidEntry::new("rsaEncryption", "RSAES-PKCS1-v1_5 encryption scheme"));
        self.insert(oid!(1.2.840.113549.1.1.2), OidEntry::new("md2WithRSAEncryption", "MD2 with RSA encryption"));
        self.insert(oid!(1.2.840.113549.1.1.3), OidEntry::new("md4WithRSAEncryption", "MD4 with RSA encryption"));
        self.insert(oid!(1.2.840.113549.1.1.4), OidEntry::new("md5WithRSAEncryption", "MD5 with RSA encryption"));
        self.insert(oid!(1.2.840.113549.1.1.5), OidEntry::new("sha1WithRSAEncryption", "SHA1 with RSA encryption"));
        self.insert(oid!(1.2.840.113549.1.1.10), OidEntry::new("rsassa-pss", "RSA Signature Scheme with Probabilistic Signature Scheme (RSASSA-PSS)"));
        self.insert(oid!(1.2.840.113549.1.1.11), OidEntry::new("sha256WithRSAEncryption", "SHA256 with RSA encryption"));
        self.insert(oid!(1.2.840.113549.1.1.12), OidEntry::new("sha384WithRSAEncryption", "SHA384 with RSA encryption"));
        self.insert(oid!(1.2.840.113549.1.1.13), OidEntry::new("sha512WithRSAEncryption", "SHA512 with RSA encryption"));
        self.insert(oid!(1.2.840.113549.1.1.14), OidEntry::new("sha224WithRSAEncryption", "SHA224 with RSA encryption"));
        self
    }

    #[cfg(feature = "x962")]
    #[doc = "Load all known OIDs for feature `x962` in the registry."]
    pub fn with_x962(mut self) -> Self {
        self.insert(oid!(1.2.840.10045.2.1), OidEntry::new("id-ecPublicKey", "Elliptic curve public key cryptography"));
        self
    }

    #[cfg(feature = "x500")]
    #[doc = "Load all known OIDs for feature `x500` in the registry."]
    pub fn with_x500(mut self) -> Self {
        self.insert(oid!(2.5), OidEntry::new("x500", "X.500"));
        self
    }

    #[cfg(feature = "pkcs9")]
    #[doc = "Load all known OIDs for feature `pkcs9` in the registry."]
    pub fn with_pkcs9(mut self) -> Self {
        self.insert(oid!(1.2.840.113549.1.9.1), OidEntry::new("emailAddress", "Email Address attribute for use in signatures"));
        self.insert(oid!(1.2.840.113549.1.9.2), OidEntry::new("unstructuredName", "PKCS#9 unstructuredName"));
        self.insert(oid!(1.2.840.113549.1.9.3), OidEntry::new("contentType", "id-contentType"));
        self.insert(oid!(1.2.840.113549.1.9.4), OidEntry::new("id-messageDigest", "id-messageDigest"));
        self.insert(oid!(1.2.840.113549.1.9.5), OidEntry::new("signing-time", "id-signingTime"));
        self.insert(oid!(1.2.840.113549.1.9.15), OidEntry::new("smimeCapabilities", "aa-smimeCapabilities"));
        self
    }

}