有一個包含有以下隱[0]標籤的一組數據的X.509證書:DER編碼 - 我如何隱含的標籤轉換爲明確的標籤
A0 81 C6 (value)...
而且我從這個摘錄標準文件:
隱式[0]標籤不用於 DER編碼,而使用顯式 SET標籤。也就是說,EXPLICIT SET OF標記的編碼 而不是IMPLICIT [0]標記, 務必與長度 和值的內容八位字節一起包含。
我已經做了很多四處搜尋,但我無法弄清楚標準究竟是在呼喚什麼。我正在尋找一些澄清。
編輯: 這裏是我以下的標準:http://tools.ietf.org/html/rfc3852
我想驗證X.509簽名,我需要計算的消息摘要來做到這一點。此證書包含SignerInfo類型中的可選SignedAttributes。我散列了已簽名的內容並驗證了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 2010-09-03 18:33:05
SignerInfo的SignedAttributes字段。 這是我遵循的標準 - http://tools.ietf.org/html/rfc3852#section-5。4 所以我試圖驗證這個X.509證書上的簽名,我需要獲得從證書籤名的數據。此證書包含可選的SignedAttributes字段,根據標準,對整個字段(標記,長度和值)進行散列和加密以創建簽名。但是,當我嘗試使用此值驗證簽名時,它失敗。我想我需要以某種方式更改標籤。 – Ben 2010-09-03 18:54:41