Сертификат формата x.509 задается структурой Certificate в формате ACH.1 (см. [3]):
Certificate ::= SEQUENCE | |
{ | |
tbsCertificate | TBSCertificate, |
signatureAlgorithm | AlgorithmIdentifier, |
signatureValue | BIT STRING |
} |
Поля структуры имеют следующие значения:
tbsCertificate - набор параметров сертификата, которые должны быть подписаны;
signatureAlgorithm - информация об алгоритме подписи, который использовался при формировании подписи данных поля tbsCertificate структуры Certificate;
signatureValue - значение подписи, сформированное от данных поля tbsCertificate структуры Certificate в соответствии с алгоритмом, указанным в поле signatureAlgorithm структуры Certificate.
4.2.1 Поле tsbCertificate структуры Certificate
Поле tbsCertificate структуры Certificate содержит в себе информацию о сертификате, которая должна быть подписана, и задается структурой TBSCertificate, представляющейся в формате ACH.1 следующим образом:
TBSCertificate ::= SEQUENCE | |
{ | |
version [0] | EXPLICIT Version DEFAULT v1, |
serialNumber | CertificateSerialNumber, |
signature | AlgorithmIdentifier, |
issuer | Name, |
validity | Validity, |
subject | Name, |
subjectPublicKeyInfо | SubjectPublicKeyInfо, |
issuerUniqueID [1] | IMPLICIT UniqueIdentifier OPTIONAL, |
subjectUniqueID [2] | IMPLICIT UniqueIdentifier OPTIONAL, |
extensions [3] | EXPLICIT Extensions OPTIONAL |
} |
Более подробное описание всех полей структуры TBSCertificate содержится в [3].
Поле signature структуры TBSCertificate задается структурой AlgorithmIdentifier в соответствии с 5.1.1 и должно совпадать со значением поля signatureAlgorithm структуры Certificate (см.4.2.2).
Поле subjectPublicKeyInfo структуры TBSCertificate задается структурой SubjectPublicKeyInfo в соответствии с 5.2.1 и содержит алгоритм открытого ключа и сам ключ.
4.2.2 Поле signatureAlgorithm структуры Certificate