/* DigiDoc4J library
*
* This software is released under either the GNU Library General Public
* License (see LICENSE.LGPL).
*
* Note that the only valid version of the LGPL license as far as this
* project is concerned is the original GNU Library General Public License
* Version 2.1, February 1999
*/
package org.digidoc4j.signers;
import org.apache.commons.codec.binary.Base64;
import org.digidoc4j.X509Cert;
import org.junit.BeforeClass;
import org.junit.Test;
import java.security.cert.CertificateEncodingException;
import java.util.Arrays;
import static org.digidoc4j.DigestAlgorithm.SHA512;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class PKCS12SignatureTokenTest {
private static PKCS12SignatureToken pkcs12Signer;
@BeforeClass
public static void setUp() {
pkcs12Signer = new PKCS12SignatureToken("testFiles/signout.p12", "test".toCharArray());
}
@Test
public void getCertificate() throws CertificateEncodingException {
X509Cert x509Cert = new X509Cert(pkcs12Signer.getCertificate());
assertEquals("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" +
"ittrqXcLf8qik7sGgHnaa7Cc",
Base64.encodeBase64String(x509Cert.getX509Certificate().getEncoded()));
}
@Test
public void sign() { //TODO know expected value
byte[] expected = new byte[]{40,-84,-43,-95,-8,46,-27,-2,41,80,-96,-74,125,37,-11,85,-22,64,-87,122,41,-29,91,-35,104,60,86,-98,-65,-101,81,74,-10,35,-24,-115,-14,115,-58,-53,-28,-53,47,-82,74,-21,88,-111,-31,47,112,71,41,-32,120,119,109,34,-96,124,-61,-5,112,114,122,1,30,-105,112,67,116,-32,-44,-123,-43,26,63,-28,-41,82,-79,-32,98,93,20,-76,-94,105,40,-95,-1,-97,-33,88,31,92,-115,-114,118,-94,3,126,-25,-100,-84,72,-84,51,-122,-59,-72,0,123,68,-116,91,-105,7,81,-106,10,58,-39,53,109,-48,-121,4,-111,32,-127,-74,-3,-73,-57,-12,114,126,-20,-40,76,-58,119,-108,85,-124,97,-55,-82,-120,-94,-40,-10,-96,-60,29,84,55,12,77,27,-117,-3,84,39,-24,-66,-89,-5,51,-64,-53,-16,-43,-53,63,-59,-32,48,82,-85,-124,-107,-85,43,37,62,-63,42,-8,86,-79,42,-119,-37,30,6,-71,30,-63,98,109,56,74,69,-14,-44,104,86,-87,37,109,91,59,-58,33,81,-69,-50,-82,121,69,-99,18,51,-63,116,-56,-26,96,-81,-17,-106,-57,45,-15,11,-39,-24,121,-59,-38,83,-3,21,-104,-102,116,44,108,-7,79,-49,-106,28,-82};
byte[] actual = pkcs12Signer.sign(SHA512, new byte[]{0x41});
assertTrue(Arrays.equals(expected, actual));
}
}