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