ru.codeinside.gws.crypto.cryptopro.Pkcs7Test.java Source code

Java tutorial

Introduction

Here is the source code for ru.codeinside.gws.crypto.cryptopro.Pkcs7Test.java

Source

/*
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 * Copyright (c) 2013, MPL CodeInside http://codeinside.ru
 */

package ru.codeinside.gws.crypto.cryptopro;

import org.apache.commons.io.IOUtils;
import org.junit.Assert;
import org.junit.Test;

import java.security.Signature;

public class Pkcs7Test extends Assert {

    @Test
    public void testDencoding() throws Exception {
        byte[] sig = IOUtils
                .toByteArray(R.getRequiredResourceStream("rr/req_cb8cff92-c788-46cf-a97f-f5c6f0170be5.xml.sig"));
        ru.codeinside.gws.api.Signature sig2 = SunPkcs7.fromPkcs7(sig);
        assertEquals(
                "T= , CN= ? , O= ?, "
                        + "L=, ST=58 ?? ?, C=RU, EMAILADDRESS=maxim.semenkin@gmail.ru, "
                        + "OID.1.2.643.3.131.1.1=5837040135, OID.1.2.643.100.1=1095837000929",
                sig2.certificate.getSubjectDN().toString());

        byte[] content = IOUtils
                .toByteArray(R.getRequiredResourceStream("rr/req_cb8cff92-c788-46cf-a97f-f5c6f0170be5.xml"));

        assertTrue(R.provider.validate(sig2, null, content));

    }

    @Test
    public void testEncoding() throws Exception {
        CryptoProvider.loadCertificate();
        byte[] content = IOUtils
                .toByteArray(R.getRequiredResourceStream("rr/req_cb8cff92-c788-46cf-a97f-f5c6f0170be5.xml"));
        final Signature signature = Signature.getInstance("GOST3411withGOST3410EL");
        signature.initSign(CryptoProvider.privateKey);
        signature.update(content);
        byte[] sign = signature.sign();
        byte[] pkcs7 = SunPkcs7
                .toPkcs7(new ru.codeinside.gws.api.Signature(CryptoProvider.cert, null, sign, false));
        ru.codeinside.gws.api.Signature sig2 = SunPkcs7.fromPkcs7(pkcs7);
        assertEquals(CryptoProvider.cert, sig2.certificate);
        assertArrayEquals(sign, sig2.sign);

        assertTrue(R.provider.validate(sig2, null, content));

    }
}