Добавление обязательного атрибута в подпись

Пытаюсь добавить id-aa-signingCertificate в обязательные атрибуты, описал структуры согласно стандарту rfc2634

/*
SigningCertificate ::=  SEQUENCE {
       certs        SEQUENCE OF ESSCertID,
       policies     SEQUENCE OF PolicyInformation OPTIONAL
   }
ESSCertID ::=  SEQUENCE {
        certHash                 Hash,
        issuerSerial             IssuerSerial OPTIONAL
   }
   Hash ::= OCTET STRING -- SHA1 hash of entire certificate
   IssuerSerial ::= SEQUENCE {
        issuer                   GeneralNames,
        serialNumber             CertificateSerialNumber
   }
*/
type SignerCertificate struct {
    SigningCertificate SigningCertificate `asn1:"sequence"`
}

type SigningCertificate struct {
    ESSCertID       ESSCertID       `asn1:"sequence"`
    IssuerAndSerial issuerAndSerial `asn1:"optional"`
}

type ESSCertID struct {
    Hash []byte `asn1:"explicit,tag:16"`
}

При добавление атрибута функция отрабатывает успешно, но при проверке не парсится сертификат. Вероятно структуру не верно описал ?

h := sha1.New()
    h.Write(cert.Raw)
    b := h.Sum(nil)
    ias, err := cert2issuerAndSerial(cert)
    if err != nil {
        return err
    }

    ss := SignerCertificate{
        SigningCertificate: SigningCertificate{
            ESSCertID: ESSCertID{
                Hash: b},
            IssuerAndSerial: ias},
    }

    attrs.Add(oidAttributeContentType, sd.sd.ContentInfo.ContentType)
    attrs.Add(oidAttributeMessageDigest, sd.messageDigest)
    attrs.Add(oidAttributeSigningTime, time.Now().UTC())
    attrs.Add(oidSigningCert, ss) // если убрать то сертификат распознаётся 
    ```

Ответы (0 шт):