Данные, подписанные некоторыми подписями, невозможно декодировать
код:
import ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.*;
import ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Attribute;
import ru.CryptoPro.JCP.JCP;
import ru.CryptoPro.JCP.params.OID;
import ru.CryptoPro.JCP.tools.Array;
import ru.CryptoPro.JCP.tools.Decoder;
import ru.CryptoPro.JCPRequest.GostCertificateRequest;
byte[] signedData = getSignedData();
Decoder decoder = new Decoder();
byte[] der = decoder.decodeBuffer(new ByteArrayInputStream(signedData));
// Decode buffer to internal CryptoPro view
Asn1DerDecodeBuffer asnBuf = new Asn1DerDecodeBuffer(der);
ContentInfo content = new ContentInfo();
content.decode(asnBuf);
версия jcp библиотек - 1.54
внутри decode возникает следующая ошибка:
com.objsys.asn1j.runtime.Asn1ConsVioException: Element utf8String.getLength() with value 68 violates defined constraint.
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88._organizationName_Type.decode(_organizationName_Type.java:78)
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.AttributeTypeAndValue.checkTC(AttributeTypeAndValue.java:135)
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.AttributeTypeAndValue.decode(AttributeTypeAndValue.java:89)
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.RelativeDistinguishedName.decode(RelativeDistinguishedName.java:52)
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.RDNSequence.decode(RDNSequence.java:52)
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Name.decode(Name.java:52)
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.TBSCertificate.decode(TBSCertificate.java:163)
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Certificate.decode(Certificate.java:61)
at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.CertificateChoices.decode(CertificateChoices.java:65)
at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.CertificateSet.decode(CertificateSet.java:52)
at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.SignedData.decode(SignedData.java:155)
at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.ContentInfo.checkTC(ContentInfo.java:137)
at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.ContentInfo.decode(ContentInfo.java:90)
at com.objsys.asn1j.runtime.Asn1Type.decode(Asn1Type.java:15)
...
com.objsys.asn1j.runtime.Asn1Exception: table constraint: value decode failed
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.AttributeTypeAndValue.checkTC(AttributeTypeAndValue.java:139)
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.AttributeTypeAndValue.decode(AttributeTypeAndValue.java:89)
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.RelativeDistinguishedName.decode(RelativeDistinguishedName.java:52)
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.RDNSequence.decode(RDNSequence.java:52)
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Name.decode(Name.java:52)
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.TBSCertificate.decode(TBSCertificate.java:163)
at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Certificate.decode(Certificate.java:61)
at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.CertificateChoices.decode(CertificateChoices.java:65)
at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.CertificateSet.decode(CertificateSet.java:52)
at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.SignedData.decode(SignedData.java:155)
at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.ContentInfo.checkTC(ContentInfo.java:137)
at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.ContentInfo.decode(ContentInfo.java:90)
at com.objsys.asn1j.runtime.Asn1Type.decode(Asn1Type.java:15)
Element utf8String.getLength() with value 68
у подписи Issuer значится CN = УЦ ОАО ЕЭТП OU = Удостоверяющий центр O = Открытое акционерное общество "Единая электронная торговая площадка" L = Москва C = RU E =
uc@roseltorg.ruПоле O - как раз 68 символов.
Непонятно, почему это приводит к ошибке и что нужно сделать, что бы ее исправить.