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.
Topik terkait