@Test public void testSignPDF() throws Exception { SignatureServiceImpl ssi = (SignatureServiceImpl) signatureService; // first user signs Blob origBlob = Blobs.createBlob(origPdfFile); assertEquals(UNSIGNED, ssi.getSigningStatus(origBlob, user)); Blob signedBlob = signatureService.signPDF(origBlob, null, user, USER_KEY_PASSWORD, "test reason"); assertNotNull(signedBlob); assertEquals(SIGNED_CURRENT, ssi.getSigningStatus(signedBlob, user)); assertEquals(SIGNED_OTHER, ssi.getSigningStatus(signedBlob, user2)); // try for the same user to sign the certificate again Blob signedBlobTwice = null; try { signedBlobTwice = signatureService.signPDF(signedBlob, null, user, USER_KEY_PASSWORD, "test reason"); fail("Should raise AlreadySignedException"); } catch (AlreadySignedException e) { // ok } // try for the second user to sign the certificate signedBlobTwice = signatureService.signPDF(signedBlob, null, user2, USER_KEY_PASSWORD, "test reason"); assertNotNull(signedBlobTwice); assertEquals(SIGNED_CURRENT, ssi.getSigningStatus(signedBlobTwice, user)); assertEquals(SIGNED_CURRENT, ssi.getSigningStatus(signedBlobTwice, user2)); // test presence of multiple signatures List<String> names = getSignatureNames(signedBlobTwice); assertEquals(2, names.size()); assertEquals(Arrays.asList("Signature2", "Signature1"), names); }
@Test public void testGetCertificates() throws Exception { SignatureServiceImpl ssi = (SignatureServiceImpl) signatureService; // sign the original PDF file Blob signedBlob = signatureService.signPDF( Blobs.createBlob(origPdfFile), null, user, USER_KEY_PASSWORD, "test reason"); assertNotNull(signedBlob); // verify there are certificates in the signed file List<X509Certificate> certificates = ssi.getCertificates(signedBlob); assertTrue( "There has to be at least 1 certificate in a signed document", certificates.size() > 0); assertTrue(certificates.get(0).getSubjectDN().toString().contains("CN=Homer Simpson")); }