Search in sources :

Example 6 with SignaturePart

use of org.apache.poi.poifs.crypt.dsig.SignatureInfo.SignaturePart in project poi by apache.

the class TestSignatureInfo method testSignSpreadsheetWithSignatureInfo.

@Test
public void testSignSpreadsheetWithSignatureInfo() throws Exception {
    initKeyPair("Test", "CN=Test");
    String testFile = "hello-world-unsigned.xlsx";
    OPCPackage pkg = OPCPackage.open(copy(testdata.getFile(testFile)), PackageAccess.READ_WRITE);
    SignatureConfig sic = new SignatureConfig();
    sic.setOpcPackage(pkg);
    sic.setKey(keyPair.getPrivate());
    sic.setSigningCertificateChain(Collections.singletonList(x509));
    SignatureInfo si = new SignatureInfo();
    si.setSignatureConfig(sic);
    // hash > sha1 doesn't work in excel viewer ...
    si.confirmSignature();
    List<X509Certificate> result = new ArrayList<X509Certificate>();
    for (SignaturePart sp : si.getSignatureParts()) {
        if (sp.validate()) {
            result.add(sp.getSigner());
        }
    }
    assertEquals(1, result.size());
    pkg.close();
}
Also used : SignatureInfo(org.apache.poi.poifs.crypt.dsig.SignatureInfo) SignatureConfig(org.apache.poi.poifs.crypt.dsig.SignatureConfig) ArrayList(java.util.ArrayList) SignaturePart(org.apache.poi.poifs.crypt.dsig.SignatureInfo.SignaturePart) OPCPackage(org.apache.poi.openxml4j.opc.OPCPackage) X509Certificate(java.security.cert.X509Certificate) Test(org.junit.Test)

Example 7 with SignaturePart

use of org.apache.poi.poifs.crypt.dsig.SignatureInfo.SignaturePart in project poi by apache.

the class TestSignatureInfo method getSigner.

@Test
public void getSigner() throws Exception {
    String[] testFiles = { "hyperlink-example-signed.docx", "hello-world-signed.docx", "hello-world-signed.pptx", "hello-world-signed.xlsx", "hello-world-office-2010-technical-preview.docx", "ms-office-2010-signed.docx", "ms-office-2010-signed.pptx", "ms-office-2010-signed.xlsx", "Office2010-SP1-XAdES-X-L.docx", "signed.docx" };
    for (String testFile : testFiles) {
        OPCPackage pkg = OPCPackage.open(testdata.getFile(testFile), PackageAccess.READ);
        try {
            SignatureConfig sic = new SignatureConfig();
            sic.setOpcPackage(pkg);
            SignatureInfo si = new SignatureInfo();
            si.setSignatureConfig(sic);
            List<X509Certificate> result = new ArrayList<X509Certificate>();
            for (SignaturePart sp : si.getSignatureParts()) {
                if (sp.validate()) {
                    result.add(sp.getSigner());
                }
            }
            assertNotNull(result);
            assertEquals("test-file: " + testFile, 1, result.size());
            X509Certificate signer = result.get(0);
            LOG.log(POILogger.DEBUG, "signer: " + signer.getSubjectX500Principal());
            boolean b = si.verifySignature();
            assertTrue("test-file: " + testFile, b);
            pkg.revert();
        } finally {
            pkg.close();
        }
    }
}
Also used : SignatureInfo(org.apache.poi.poifs.crypt.dsig.SignatureInfo) SignatureConfig(org.apache.poi.poifs.crypt.dsig.SignatureConfig) ArrayList(java.util.ArrayList) SignaturePart(org.apache.poi.poifs.crypt.dsig.SignatureInfo.SignaturePart) OPCPackage(org.apache.poi.openxml4j.opc.OPCPackage) X509Certificate(java.security.cert.X509Certificate) Test(org.junit.Test)

Aggregations

X509Certificate (java.security.cert.X509Certificate)7 ArrayList (java.util.ArrayList)7 SignatureConfig (org.apache.poi.poifs.crypt.dsig.SignatureConfig)7 SignatureInfo (org.apache.poi.poifs.crypt.dsig.SignatureInfo)7 SignaturePart (org.apache.poi.poifs.crypt.dsig.SignatureInfo.SignaturePart)7 OPCPackage (org.apache.poi.openxml4j.opc.OPCPackage)6 Test (org.junit.Test)6 SignatureDocument (org.w3.x2000.x09.xmldsig.SignatureDocument)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1 FileInputStream (java.io.FileInputStream)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 ConnectException (java.net.ConnectException)1 SocketTimeoutException (java.net.SocketTimeoutException)1 Key (java.security.Key)1 KeyPair (java.security.KeyPair)1 KeyStore (java.security.KeyStore)1 PrivateKey (java.security.PrivateKey)1 Certificate (java.security.cert.Certificate)1 X509CRL (java.security.cert.X509CRL)1