Можно ли получить X509Certificate из .sig файла?

163
18 мая 2019, 00:40

Пытаюсь вытащить X509Certificate из файла подписи .sig чтобы эту подпись проверить. Как корректно это сделать?

Пытался вот так:

InputStream inStream = new ByteArrayInputStream(bytesSignature); 
CertificateFactory cf = CertificateFactory.getInstance("X.509"); 
X509Certificate certificate = (X509Certificate)cf.generateCertificate(inStream);

но на этапе генерации сертификата вылетает с ошибкой "Unable to initialize, java.io.IOException: Short read of DER length"

Что я делаю не так?

Answer 1

У меня получилось получить сертификат, но я не до конца понимаю что я сделал.

Вот код:

        final Asn1BerDecodeBuffer asnBuf = new Asn1BerDecodeBuffer(bytesSignature); 
        Asn1BerEncodeBuffer encBuf = new Asn1BerEncodeBuffer(); 
        final ContentInfo all = new ContentInfo(); 
        try { 
            all.decode(asnBuf); 
        } catch (Asn1Exception e) { 
            throw  new CertificateException(); 
        } 
 
        final SignedData cms = (SignedData) all.content; 
 
        final Certificate[] certificates = new Certificate[cms.certificates.elements.length]; 
        for (int i = 0; i < (cms.certificates.elements.length); i++) { 
            try { 
                cms.certificates.elements[i].encode(encBuf); 
            } catch (Asn1Exception e) { 
                throw new CertificateException(); 
            } 
            final CertificateFactory cf = CertificateFactory.getInstance("X.509"); 
            final Certificate cert = cf.generateCertificate(encBuf.getInputStream()); 
            certificates[i] = cert; 
        } 
        if (certificates.length > 0 ) { 
            return (X509Certificate) certificates[0]; 
 
        } else throw new CertificateException("Не удалось получить сертификат из подписи.");

READ ALSO
Не могу создать проект в netbeans

Не могу создать проект в netbeans

При создании проекта, просто ничего не происходитВ отладке netbeans вываливаются сообщения, но разобрать я их не могу

119
Какой поток передает данные во View

Какой поток передает данные во View

Допустим MVPВ презентере определен интерфейс для колбека

130
Java, Swing, полноэкранный режим

Java, Swing, полноэкранный режим

Вопрос наверное больше к знатокам Linux =)

135
RethinkDB Java-дравер возвращает double как Long

RethinkDB Java-дравер возвращает double как Long

Мы сохраняем данные в клевой БД RethinkDBПроблема возникла с извлечением числовых значений типа Double

147