| // Copyright 2026 Google LLC | |
| // | |
| // Licensed under the Apache License, Version 2.0 (the "License"); | |
| // you may not use this file except in compliance with the License. | |
| // You may obtain a copy of the License at | |
| // | |
| // https://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| // | |
| #ifndef THIRD_PARTY_CREDENTIO_CRYPTO_DEFAULT_CMS_OIDS_H_ | |
| #define THIRD_PARTY_CREDENTIO_CRYPTO_DEFAULT_CMS_OIDS_H_ | |
| #include <cstdint> | |
| #include "openssl/bytestring.h" | |
| #include "openssl/x509.h" | |
| namespace credentio_cms { | |
| // Abbreviations: | |
| // rsadsi = RSA Data Security Inc | |
| // pkcs = Public Key Cryptographic Standards | |
| // https://tools.ietf.org/html/rfc5652#section-4 | |
| // iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1) { pkcs-7 1 } | |
| constexpr uint8_t kDataOid[] = {1 * 40 + 2, 0x86, 0x48, 0x86, 0xf7, | |
| 0x0d, 1, 7, 1}; | |
| // https://tools.ietf.org/html/rfc5652#section-5.1 | |
| // iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1) { pkcs-7 2 } | |
| constexpr uint8_t kSignedDataOid[] = {1 * 40 + 2, 0x86, 0x48, 0x86, 0xf7, | |
| 0x0d, 1, 7, 2}; | |
| // https://tools.ietf.org/html/rfc5652#section-5.3 | |
| // iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1) { pkcs-7 3 } | |
| constexpr uint8_t kEnvelopedDataOid[] = {1 * 40 + 2, 0x86, 0x48, 0x86, 0xf7, | |
| 0x0d, 1, 7, 3}; | |
| // https://tools.ietf.org/html/rfc5652#section-11.1 | |
| // iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1) { pkcs-9 3 } | |
| constexpr uint8_t kContentAttributeType[] = {1 * 40 + 2, 0x86, 0x48, 0x86, 0xf7, | |
| 0x0d, 1, 9, 3}; | |
| // https://tools.ietf.org/html/rfc5652#section-11.2 | |
| // iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1) { pkcs-9 4 } | |
| constexpr uint8_t kContentAttributeMessageDigest[] = { | |
| 1 * 40 + 2, 0x86, 0x48, 0x86, 0xf7, 0x0d, 1, 9, 4}; | |
| // https://tools.ietf.org/html/rfc5751 | |
| // iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) 5 | |
| constexpr uint8_t kSigningTimeOid[] = {0x2A, 0x86, 0x48, 0x86, 0xF7, | |
| 0x0D, 0x01, 0x09, 0x05}; | |
| // https://tools.ietf.org/html/rfc5751 | |
| constexpr uint8_t kSmimeCapabilitiesOid[] = {0x2A, 0x86, 0x48, 0x86, 0xF7, | |
| 0x0D, 0x01, 0x09, 0x0F}; | |
| // https://tools.ietf.org/html/rfc7508#section-4.1 | |
| // iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) | |
| // attributes(2) 55 | |
| constexpr uint8_t kSecureHeaderFieldsIdentifierOid[] = { | |
| 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x10, 0x2, 55}; | |
| // SMIMEEncryptionKeyPreference | |
| // https://tools.ietf.org/html/rfc5751#section-2.5.3 | |
| // {iso(1) member-body(2) usa(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) | |
| // attributes(2)} 11 | |
| constexpr uint8_t kSmimeEncryptionKeyPreferenceOid[] = { | |
| 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x10, 0x2, 11}; | |
| // http://csrc.nist.gov/groups/ST/crypto_apps_infra/csor/algorithms.html | |
| constexpr uint8_t kSha256Oid[] = {0x60, 0x86, 0x48, 0x01, 0x65, | |
| 0x03, 0x04, 0x02, 0x01}; | |
| constexpr uint8_t kSha1WithRsaOid[] = {0x2A, 0x86, 0x48, 0x86, 0xF7, | |
| 0x0D, 1, 1, 1}; | |
| // https://tools.ietf.org/html/rfc5754#section-3.2 | |
| constexpr uint8_t kSha256WithRsaOid[] = {0x2A, 0x86, 0x48, 0x86, 0xF7, | |
| 0x0D, 1, 1, 11}; | |
| // https://tools.ietf.org/html/rfc5754#section-3.2 | |
| constexpr uint8_t kSha384WithRsaOid[] = {0x2A, 0x86, 0x48, 0x86, 0xF7, | |
| 0x0D, 1, 1, 12}; | |
| // https://tools.ietf.org/html/rfc5754#section-3.2 | |
| constexpr uint8_t kSha512WithRsaOid[] = {0x2A, 0x86, 0x48, 0x86, 0xF7, | |
| 0x0D, 1, 1, 13}; | |
| // https://tools.ietf.org/html/rfc4056 | |
| constexpr uint8_t kRsaSsaPssOid[] = {0x2A, 0x86, 0x48, 0x86, 0xF7, | |
| 0x0D, 0x01, 0x01, 0x0a}; | |
| // https://tools.ietf.org/html/rfc4056 | |
| constexpr uint8_t kRsaEsOaepOid[] = {0x2A, 0x86, 0x48, 0x86, 0xF7, | |
| 0x0D, 0x01, 0x01, 0x07}; | |
| // https://tools.ietf.org/html/rfc4056 | |
| constexpr uint8_t kRsaPkcs1Oid[] = {0x2A, 0x86, 0x48, 0x86, 0xF7, | |
| 0x0D, 0x01, 0x01, 0x01}; | |
| // https://tools.ietf.org/html/rfc3565 | |
| constexpr uint8_t kAes128CbcOid[] = {0x60, 0x86, 0x48, 0x01, 0x65, 3, 4, 1, 2}; | |
| // https://tools.ietf.org/html/rfc3565 | |
| constexpr uint8_t kAes192CbcOid[] = {0x60, 0x86, 0x48, 0x01, 0x65, 3, 4, 1, 22}; | |
| // https://tools.ietf.org/html/rfc3565 | |
| constexpr uint8_t kAes256CbcOid[] = {0x60, 0x86, 0x48, 0x01, 0x65, 3, 4, 1, 42}; | |
| // https://tools.ietf.org/html/rfc3370#section-5.1 | |
| constexpr uint8_t kDesEde3CbcOid[] = {0x2A, 0x86, 0x48, 0x86, | |
| 0xF7, 0x0D, 0x03, 0x07}; | |
| // https://datatracker.ietf.org/doc/html/rfc3161#section-2.4.2 | |
| // iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1) { pkcs-9 1 smime(16) | |
| // ct(1) 4 } | |
| constexpr uint8_t kCtTstInfoOid[] = {0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, | |
| 0x01, 0x09, 0x10, 0x01, 0x04}; | |
| // Returns true if the contents of data match expected. | |
| bool CompareOid(const CBS& data, const uint8_t expected[], | |
| size_t expected_length); | |
| bool CompareOid(const CBS& a, const CBS& b); | |
| } // namespace credentio_cms | |
| #endif // THIRD_PARTY_CREDENTIO_CRYPTO_DEFAULT_CMS_OIDS_H_ |