tasign 0.1.1

TA ELF signing utilities with CMS/PKCS#7 support
Documentation
//! 国密与 PKCS#9 / CMS OID。

use rasn::types::ObjectIdentifier;

pub fn sm3_digest_oid() -> ObjectIdentifier {
    ObjectIdentifier::new([1, 2, 156, 10197, 1, 401].as_slice()).expect("sm3 oid")
}

/// SHA-256 摘要 OID: 2.16.840.1.101.3.4.2.1
pub fn sha256_digest_oid() -> ObjectIdentifier {
    ObjectIdentifier::new([2, 16, 840, 1, 101, 3, 4, 2, 1].as_slice()).expect("sha256 oid")
}

/// SM2 签名(配合 SM3 预处理),见 GB/T 及常见实现 `sm2sign-with-sm3`。
pub fn sm2_sign_with_sm3_oid() -> ObjectIdentifier {
    ObjectIdentifier::new([1, 2, 156, 10197, 1, 501].as_slice()).expect("sm2sign-sm3 oid")
}

/// sha256WithRSAEncryption OID: 1.2.840.113549.1.1.11
pub fn rsa_sign_with_sha256_oid() -> ObjectIdentifier {
    ObjectIdentifier::new([1, 2, 840, 113549, 1, 1, 11].as_slice()).expect("sha256WithRSAEncryption oid")
}

/// ecdsa-with-SHA256 OID: 1.2.840.10045.4.3.2
pub fn ecdsa_sign_with_sha256_oid() -> ObjectIdentifier {
    ObjectIdentifier::new([1, 2, 840, 10045, 4, 3, 2].as_slice()).expect("ecdsa-with-SHA256 oid")
}

#[cfg(feature = "std")]
pub fn pkcs9_content_type_oid() -> ObjectIdentifier {
    ObjectIdentifier::new([1, 2, 840, 113549, 1, 9, 3].as_slice()).expect("contentType oid")
}

pub fn pkcs9_message_digest_oid() -> ObjectIdentifier {
    ObjectIdentifier::new([1, 2, 840, 113549, 1, 9, 4].as_slice()).expect("messageDigest oid")
}

#[cfg(feature = "std")]
pub fn pkcs9_signing_time_oid() -> ObjectIdentifier {
    ObjectIdentifier::new([1, 2, 840, 113549, 1, 9, 5].as_slice()).expect("signingTime oid")
}

/// `id-data`(PKCS#7 data content type)。
#[cfg(feature = "std")]
pub fn pkcs7_data_oid() -> ObjectIdentifier {
    ObjectIdentifier::new([1, 2, 840, 113549, 1, 7, 1].as_slice()).expect("data oid")
}

/// GmSSL CMS `data` OID: 1.2.156.10197.6.1.4.2.1
pub fn gmssl_cms_data_oid() -> ObjectIdentifier {
    ObjectIdentifier::new([1, 2, 156, 10197, 6, 1, 4, 2, 1].as_slice()).expect("gmssl cms data oid")
}

/// GmSSL CMS `signedData` OID: 1.2.156.10197.6.1.4.2.2
pub fn gmssl_cms_signed_data_oid() -> ObjectIdentifier {
    ObjectIdentifier::new([1, 2, 156, 10197, 6, 1, 4, 2, 2].as_slice())
        .expect("gmssl cms signedData oid")
}