/* * 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)); } }