| // 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_ |