Реализовал следующим способом структуры rfc2634 на Go.
SigningCertificate ::= SEQUENCE {
certs SEQUENCE OF ESSCertID,
policies SEQUENCE OF PolicyInformation OPTIONAL
}
id-aa-signingCertificate OBJECT IDENTIFIER ::= { iso(1)
member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
smime(16) id-aa(2) 12 }
ESSCertID ::= SEQUENCE {
certHash Hash,
issuerSerial IssuerSerial OPTIONAL
}
Hash ::= OCTET STRING -- SHA1 hash of entire certificate
IssuerSerial ::= SEQUENCE {
issuer GeneralNames,
serialNumber CertificateSerialNumber
}
var oidAttributeSigningCert = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 9, 16, 2, 12}
type SignerCertificate struct {
SigningCertificate SigningCertificate `asn1:"sequence"`
Policies PolicyInformation `asn1:"sequence,optional"`
}
type PolicyInformation struct {
}
type SigningCertificate struct {
ESSCertID ESSCertID `asn1:"sequence"`
}
type ESSCertID struct {
IssuerAndSerial IssuerAndSerial `asn1:"optional"`
Hash []byte `asn1:"explicit,tag:0"`
}
Добавляю к сигнатуре данный атрибут, она формируется без ошибок, проверяю на любом верификаторе, там ошибка в разборе ans1 ,выводит данные которые были кодированы до сертификата(его не показывает верификатор). Я предполагаю дело в тегах структуры, как мне их выставить правильно для реализации структуры rfc ?