Advertisement
chirihop

TSA

Mar 7th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.71 KB | None | 0 0
  1. /*
  2. * This class is part of the white paper entitled
  3. * "Digital Signatures for PDF documents"
  4. * written by Bruno Lowagie
  5. *
  6. * For more info, go to: http://itextpdf.com/learn
  7. */
  8. package signatures.chapter3;
  9.  
  10. import java.io.FileInputStream;
  11. import java.io.IOException;
  12. import java.security.GeneralSecurityException;
  13. import java.security.KeyStore;
  14. import java.security.PrivateKey;
  15. import java.security.Security;
  16. import java.security.cert.Certificate;
  17. import java.util.Properties;
  18.  
  19. import org.bouncycastle.jce.provider.BouncyCastleProvider;
  20.  
  21. import com.itextpdf.text.DocumentException;
  22. import com.itextpdf.text.pdf.security.DigestAlgorithms;
  23. import com.itextpdf.text.pdf.security.MakeSignature.CryptoStandard;
  24. import com.itextpdf.text.pdf.security.OCSPVerifier;
  25. import com.itextpdf.text.pdf.security.OcspClient;
  26. import com.itextpdf.text.pdf.security.OcspClientBouncyCastle;
  27. import com.itextpdf.text.pdf.security.PdfPKCS7;
  28. import com.itextpdf.text.pdf.security.TSAClient;
  29. import com.itextpdf.text.pdf.security.TSAClientBouncyCastle;
  30. import java.security.cert.CertificateFactory;
  31. import java.security.cert.X509Certificate;
  32.  
  33. public class C3_09_SignWithTSA_1 extends C3_01_SignWithCAcert {
  34. public static final String SRC = "src/main/resources/hello.pdf";
  35. public static final String DEST = "results/chapter3/hello_cacert_ocsp_ts.pdf";
  36.  
  37. public static void main(String[] args) throws IOException, GeneralSecurityException, DocumentException {
  38. Properties properties = new Properties();
  39. //properties.load(new FileInputStream("c:/home/blowagie/key.properties"));
  40. properties.setProperty("PRIVATE", "src/main/resources/new/identity.p12");
  41. properties.setProperty("PASSWORD", "password");
  42. properties.setProperty("TSAURL", "http://localhost:3000");
  43. //properties.setProperty("TSAURL", "https://freetsa.org/tsr");
  44. //properties.setProperty("TSAUSERNAME", "tsausername");
  45. //properties.setProperty("TSAPASSWORD", "tsapassword");
  46.  
  47. String path = properties.getProperty("PRIVATE");
  48. char[] pass = properties.getProperty("PASSWORD").toCharArray();
  49. String tsaUrl = properties.getProperty("TSAURL");
  50. String tsaUser = properties.getProperty("TSAUSERNAME");
  51. String tsaPass = properties.getProperty("TSAPASSWORD");
  52.  
  53. BouncyCastleProvider provider = new BouncyCastleProvider();
  54. Security.addProvider(provider);
  55. KeyStore ks = KeyStore.getInstance("pkcs12", provider.getName());
  56. ks.load(new FileInputStream(path), pass);
  57. String alias = (String)ks.aliases().nextElement();
  58. PrivateKey pk = (PrivateKey) ks.getKey(alias, pass);
  59. Certificate[] chain = ks.getCertificateChain(alias);
  60.  
  61. //OCSPVerifier ocspVerifier = new OCSPVerifier(null, null);
  62. //OcspClient ocspClient = new OcspClientBouncyCastle(ocspVerifier);
  63. OcspClientBouncyCastle ocspClient = null;
  64. String urlOcsp = "localhost:3001";
  65. CertificateFactory cf = CertificateFactory.getInstance("X509");
  66. FileInputStream is = new FileInputStream(properties.getProperty("ROOTCERT"));
  67. X509Certificate root = (X509Certificate) cf.generateCertificate(is);
  68. ocspClient = new OcspClientBouncyCastle();
  69. ocspClient.getEncoded((X509Certificate) chain[0], root, urlOcsp);
  70.  
  71. TSAClient tsaClient = new TSAClientBouncyCastle(tsaUrl); //, tsaUser, tsaPass)
  72. System.out.println(tsaClient.toString());
  73. //System.out.println(tsaClient.getMessageDigest());
  74. C3_09_SignWithTSA app = new C3_09_SignWithTSA();
  75. app.sign(SRC, DEST, chain, pk, DigestAlgorithms.SHA256, provider.getName(), CryptoStandard.CMS, "Test", "Madrid",
  76. null, ocspClient, tsaClient, 0);
  77.  
  78. }
  79.  
  80.  
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement