2013-07-26 5 views

답변

2

개인 키로 디지털 인증서를 pfx 파일로 내 보냅니다. BouncyCastle와 iText를 사용

:

Document document = new Document(); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
PdfWriter.getInstance(document, baos); 
document.open(); 
document.add(new Paragraph("Hello World!")); 
document.close(); 


    PdfReader reader = new PdfReader(baos.toByteArray()); 
    OutputStream os = new FileOutputStream("c:\\temp\\sign\\test.pdf"); 
    PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0'); 

    // Creating the appearance 
    PdfSignatureAppearance appearance = stamper.getSignatureAppearance(); 
    appearance.setReason("REASON"); 
    appearance.setLocation("LOCATION"); 

    appearance.setVisibleSignature(new Rectangle(36, 748, 144, 780), 1, "sig"); 

    Security.addProvider(new BouncyCastleProvider()); 

    FileInputStream fis = new FileInputStream("c:\\ssl\\test.pfx"); 
    String password = "myPassword"; 

    KeyStore ks = KeyStore.getInstance("pkcs12"); 
    ks.load(fis, password.toCharArray()); 
    String alias = ks.aliases().nextElement(); 

    PrivateKey pk = (PrivateKey) ks.getKey(alias, password.toCharArray()); 
    X509Certificate cert = (X509Certificate) ks.getCertificate(alias); 

    TSAClient tsc = new TSAClientBouncyCastle("http://timestampserverURL/"); 
    ExternalDigest digest = new BouncyCastleDigest(); 
    ExternalSignature signature = new PrivateKeySignature(pk, "SHA-1", "BC"); 
    MakeSignature.signDetached(appearance, digest, signature, new Certificate[] { cert }, null, null, tsc, 0, 
      CryptoStandard.CMS); 

메이븐 종속 관계 :

<dependency> 
    <groupId>org.bouncycastle</groupId> 
    <artifactId>bcprov-jdk15on</artifactId> 
    <version>1.49</version> 
</dependency> 

<dependency> 
    <groupId>org.bouncycastle</groupId> 
    <artifactId>bcmail-jdk15on</artifactId> 
    <version>1.49</version> 
</dependency> 
<dependency> 
    <groupId>org.bouncycastle</groupId> 
    <artifactId>bctsp-jdk15on</artifactId> 
    <version>1.46</version> 
</dependency> 


<dependency> 
    <groupId>com.itextpdf</groupId> 
    <artifactId>itextpdf</artifactId> 
    <version>5.4.2</version> 
</dependency> 
0

당신은 HTTP의 RESTful 인터페이스를 통해의 Securo API 사용할 수 있습니다.

적용된 타임 스탬프는 RFC3161 분리 형식이며 모든 타임 스탬프는 EU 공인 인증 기관에서 발급합니다.

면책 사항 : create a free test account (그리고 테스트 서버에 액세스 할 수 있습니다) 때 securo

0

DigiStamp가 SecureTime의 API 툴킷의 PDF 서명과 타임 스탬프 기능을 제공의 공동 설립자, 당신은 그것에 대한 링크를 얻을. 이 툴킷은 BouncyCastle과 iText의 무료 버전을 사용합니다.

Qoppa has a newer toolkit 전체 PDF 기능이 포함되어 있지만 사용료가 부과됩니다.

면책 조항 : 나는 DigiStamp

에서 일