Здравствуйте.
Имеется JCP 1.0.54 36641. Для разбора подается файл подписи в Base64, после чего декодируется и из него достается информация о подписанте.
Пример кода который используется:
Код:
import ru.CryptoPro.JCP.tools.Decoder;
import com.objsys.asn1j.runtime.Asn1BerDecodeBuffer;
import ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.ContentInfo;
....
String sign64 = "подпись_в_кодировке_base64";
Decoder decoder = new Decoder();
byte[] sign = decoder.decodeBuffer(sign64);
// Пробуем разобрать ASN1
Asn1BerDecodeBuffer asnBuf = new Asn1BerDecodeBuffer(sign);
ContentInfo all = new ContentInfo();
all.decode(asnBuf);
// Получаем информацию из подписи
SignedData cms = (SignedData) all.content;
При обработке получаем ошибку:
com.objsys.asn1j.runtime.Asn1TagMatchFailedException: ASN.1 decode error @ offset 0:
Tag match failed: expected [UNIVERSAL 19], parsed [UNIVERSAL 12]
at com.objsys.asn1j.runtime.Asn1Type.matchTag(Asn1Type.java:449)
at com.objsys.asn1j.runtime.Asn1Type.matchTag(Asn1Type.java:466)
at com.objsys.asn1j.runtime.Asn1CharString.decode(Asn1CharString.java:94)
at com.objsys.asn1j.runtime.Asn1PrintableString.decode(Asn1PrintableString.java:69)
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:179)
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:53)
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:218)
at /* строка с all.decode(asnBuf); */
com.objsys.asn1j.runtime.Asn1Exception: table constraint: content decode failed
at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.ContentInfo.checkTC(ContentInfo.java:141)
at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.ContentInfo.decode(ContentInfo.java:90)
at com.objsys.asn1j.runtime.Asn1Type.decode(Asn1Type.java:218)
Возможно, кто-то сталкивался с такой проблемой и знает как это решить?
![](/forum2/Themes/soclean/icon_file.gif)
sign64.txt
(5kb) загружен 4 раз(а).