У меня есть сертификат X.509, который содержит набор данных со следующим неявным [0] тегом:DER - Как конвертировать неявный тег в явный тег
A0 81 C6 (value)...
И у меня есть этот отрывок из стандарты документ:
неявный [0] тег не используется для кодирования DER, а используется явное НАБОРА тега. То есть кодировка DER тега EXPLICIT SET OF , а не тега IMPLICIT [0], ДОЛЖНА быть включена вместе с длиной и октетами содержимого значения.
Я много искал, но не могу точно определить, что требует стандарт. Я ищу немного разъяснений.
EDIT: Вот стандартная я следующее: http://tools.ietf.org/html/rfc3852
Я пытаюсь проверить X.509 подпись, и мне нужно вычислить сообщение дайджеста, чтобы сделать это. Этот сертификат включает необязательные SignedAttributes в типе SignerInfo. Я hashed подписанный контент и проверил, что дайджест сообщения в SignedAttributes верен. В стандарте говорится, что если присутствует SignedAttributes, его следует хэшировать и зашифровывать, чтобы создать подпись сертификата. В стандарте также говорится, что тег SignedAttributes следует изменить, как обсуждалось в исходном вопросе.
Вот ASN.1 Грамматика для SignerInfo:
SignerInfo ::= SEQUENCE {
version CMSVersion,
sid SignerIdentifier,
digestAlgorithm DigestAlgorithmIdentifier,
signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL,
signatureAlgorithm SignatureAlgorithmIdentifier,
signature SignatureValue,
unsignedAttrs [1] IMPLICIT UnsignedAttributes OPTIONAL }
SignerIdentifier ::= CHOICE {
issuerAndSerialNumber IssuerAndSerialNumber,
subjectKeyIdentifier [0] SubjectKeyIdentifier }
SignedAttributes ::= SET SIZE (1..MAX) OF Attribute
UnsignedAttributes ::= SET SIZE (1..MAX) OF Attribute
Attribute ::= SEQUENCE {
attrType OBJECT IDENTIFIER,
attrValues SET OF AttributeValue }
AttributeValue ::= ANY
SignatureValue ::= OCTET STRING
Является ли оно определенным расширением? – Bruno
Поле SignedAttributes в SignerInfo. Вот стандарт, которым я следую - http://tools.ietf.org/html/rfc3852#section-5.4 Итак, я пытаюсь проверить подпись на этом сертификате X.509, и мне нужно получить данные, которые были подписаны из сертификата. Этот сертификат включает в себя необязательное поле SignedAttributes и в соответствии со стандартом все это поле (тег, длина и значение) хэшируется и зашифровывается для создания подписи. Но когда я пытаюсь проверить подпись с этим значением, она терпит неудачу. Думаю, мне нужно каким-то образом изменить тег. – Ben