Atribut PKCS #7

PKCS #7 adalah standar sintaks pesan kriptografi. Pesan PKCS #7 tidak, dengan sendirinya, merupakan permintaan sertifikat, tetapi dapat merangkum permintaan PKCS #10 atau CMC dalam struktur ContentInfo ASN.1 dengan menggunakan salah satu jenis konten berikut. Enkapulasi memungkinkan Anda menambahkan fungsionalitas tambahan, seperti beberapa tanda tangan, yang tidak tersedia.

  • Data
  • SignedData
  • EnvelopedData
  • SignedAndEnvelopedData
  • DigestedData
  • EncryptedData

Atribut dapat ditambahkan ke bidang authenticatedAttributes dan unauthenticatedAttributes dari jenis konten SignedData .

SignedData ::= SEQUENCE 
{
   version             INTEGER,
   digestAlgorithms    DigestAlgorithmIdentifiers,
   contentInfo         ContentInfo,
   certificates        [0] IMPLICIT Certificates OPTIONAL,
   crls                [1] IMPLICIT CertificateRevocationLists OPTIONAL,
   signerInfos         SignerInfos
}

SignerInfos ::= SET OF SignerInfo

SignerInfo ::= SEQUENCE 
{
    version                     INTEGER,
    sid                         CertIdentifier,
    digestAlgorithm             DigestAlgorithmIdentifier,
    authenticatedAttributes     [0] IMPLICIT Attributes OPTIONAL,
    digestEncryptionAlgorithm   DigestEncryptionAlgId,
    encryptedDigest             EncryptedDigest,
    unauthenticatedAttributes   [1] IMPLICIT Attributes
}

Attributes ::= SET OF Attribute

Attribute ::= SEQUENCE 
{
   type       EncodedObjectID,
   values     AttributeSetValue
}

Proses yang diperlukan untuk mengarsipkan kunci privat klien pada otoritas sertifikasi (CA) memberikan contoh komprehensif tentang bagaimana atribut yang diautentikasi (ditandatangani) dan atribut yang tidak diautentikasi dapat digunakan:

  • Klien membuat objek IX509CertificateRequestPkcs10 dan menambahkan data yang sesuai untuk jenis sertifikat yang diminta.

  • Klien menggunakan permintaan PKCS #10 untuk menginisialisasi objek IX509CertificateRequestCmc . Permintaan PKCS #10 ditempatkan ke dalam struktur TaggedRequest dalam permintaan CMC. Untuk informasi selengkapnya, lihat Atribut CMC.

  • Klien mengenkripsi kunci privat dan menggunakannya untuk menginisialisasi objek IX509AttributeArchiveKey . Atribut ArchiveKey baru dienkapulatasi dalam struktur EnvelopedData .

    EnvelopedData ::= SEQUENCE 
    {
        version                 INTEGER,
        recipientInfos          RecipientInfos,
        encryptedContentInfo    EncryptedContentInfo
    } 
    
    RecipientInfos ::= SET OF RecipientInfo
    
    EncryptedContentInfo ::= SEQUENCE 
    {
        contentType                 ContentType,
        contentEncryptionAlgorithm  ContentEncryptionAlgId,
        encryptedContent            [0] IMPLICIT EncryptedContent OPTIONAL
    } 
    
    EncryptedContent ::= OCTET STRING
    
    RecipientInfo ::= SEQUENCE 
    {
        version                 INTEGER,
        issuerAndSerialNumber   IssuerAndSerialNumber,
        keyEncryptionAlgorithm  KeyEncryptionAlgId,
        encryptedKey            EncryptedKey
    } 
    
  • Klien membuat hash SHA-1 dari kunci terenkripsi dan menggunakannya untuk menginisialisasi objek IX509AttributeArchiveKeyHash .

  • Klien mengambil koleksi CryptAttributes dari permintaan CMC dan menambahkan ArchiveKey dan atribut ArchiveKeyHash ke dalamnya. Atribut ditempatkan ke dalam struktur TaggedAttributes dari permintaan CMC.

  • Klien menggunakan permintaan CMC untuk menginisialisasi objek IX509CertificateRequestPkcs7 . Ini menempatkan permintaan CMC ke bidang contentInfo dari struktur PKCS #7 SignedData .

  • Atribut ArchiveKeyHash ditandatangani dan ditempatkan dalam urutan authenticatedAttributes dari struktur SignerInfo .

  • Atribut ArchiveKey ditempatkan dalam urutan unauthenticatedAttributes dari struktur SignerInfo yang terkait dengan penanda tangan utama pesan PKCS #7.

Atribut yang Didukung