verisign-signatureサンプル1
電子署名フィールドの表示(hidden属性)と印刷(print属性)設定に関するサンプルです。
- ※表示と印刷設定のサンプルであるため複数のverisign-signatureを指定しています。
verisign-signatureサンプル1
(『<biz-Stream_home>/sample/xml/verisign-signature/verisign-signatureSample1.xml
』)
<?xml version="1.0" encoding="UTF-8"?> <!-- XML file created by biz-Stream Designer --> <!-- biz-Stream Copyright BrainSellers.com Corp. --> <Layout Name="verisign-signatureSample1" Width="100" Height="150" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:bs="http://www.brainsellers.com/schema" xmlns:svg="http://www.brainsellers.com/schema" xmlns:form="http://www.brainsellers.com/schema" xmlns:pdf="http://www.brainsellers.com/schema" version="5.0.0"> <!-- (1)署名サンプル1 --> <Label X="10" Y="110" Horizon="left" Vertical="center" Vector="horizon" Font="MSGothic" FontSize="14" FontStyle="PLAIN" Narrow="horizon">サンプル1</Label> <verisign-signature name="veri1" x="40" y="110" width="40" height="20" hidden="true" print="true"/> <!-- (2)署名サンプル2 --> <Label X="10" Y="80" Horizon="left" Vertical="center" Vector="horizon" Font="MSGothic" FontSize="14" FontStyle="PLAIN" Narrow="horizon">サンプル2</Label> <verisign-signature name="veri2" x="40" y="80" width="40" height="20" hidden="true" print="false"/> <!-- (3)署名サンプル3 --> <Label X="10" Y="50" Horizon="left" Vertical="center" Vector="horizon" Font="MSGothic" FontSize="14" FontStyle="PLAIN" Narrow="horizon">サンプル3</Label> <verisign-signature name="veri3" x="40" y="50" width="40" height="20" hidden="false" print="true"/> <!-- (4)署名サンプル4 --> <Label X="10" Y="20" Horizon="left" Vertical="center" Vector="horizon" Font="MSGothic" FontSize="14" FontStyle="PLAIN" Narrow="horizon">サンプル4</Label> <verisign-signature name="veri4" x="40" y="20" width="40" height="20" hidden="false" print="false"/> </Layout>
生成されるPDF(『<biz-Stream_home>/sample/xml/verisign-signature/verisign-signatureSample1.pdf
』)

<表示方法・印刷方法の定義>
- ①veri1: hidden="true"、print="true"(⇒非表示・印刷する)
- ②veri2: hidden="true"、print="false"(⇒非表示・印刷しない)
- ③veri3: hidden="false"、print="true"(⇒表示・印刷する)
- ④veri4: hidden="false"、print="false"(⇒表示・印刷しない)
- ※電子署名フィールドが非表示(hidden="true")の場合、生成されたPDF上から署名を行うことはできません。
- ※②④では、表示のみで印刷の対象とはなりません。
- ※hidden、print指定を行わない場合は①が採用されます。
<ベリサイン証明書埋め込みサンプルソース>(『<biz-Stream_home>/sample/java/Sample10.java』)
verisign-signature要素を使用して作成した電子署名フィールド"veri3"にVerisign証明書を埋め込むサンプルソースです。
/** * サンプルプログラム10: 『<biz-stream_home>/sample/java/Sample10.java』 * ベリサイン証明書を埋め込むサンプルです。 * * @authror Copyright 2002-2017 by BrainSellers.com Corp. All rights reserved. * @version 1.0.2 * @since 4.6.0 */ import com.brainsellers.xml.JaxpXML; import com.brainsellers.xml.common.XMLSuper; import com.brainsellers.xml.document.signature.VeriSignSignature; /** * 証明書ファイルはサンプルには含まれておりません * ベリサインのサイトにて各種申請手続きのうえ、入手してください */ public class Sample10 { public static void main(String args[]) { new Sample10(args); System.exit(0); } public Sample10(String args[]) { try { // (1) 入出力共にファイル名で指定する XMLSuper xml = new JaxpXML( "${base-dir}/sample/xml/verisign-signature/verisign-signatureSample1.xml", "${base-dir}/sample/java/Sample10.pdf"); // (2) レイアウト情報(XML)の解析を行う xml.parse(); // (3) 証明書を埋め込む setSignature1(xml); // (4) 座標計算を行う xml.calcDataSize(); // (5) PDFを生成する xml.toPDF(); // (6) PDFを出力する xml.close(); } catch (java.io.FileNotFoundException e) { e.printStackTrace(); } catch (java.io.IOException e) { e.printStackTrace(); } catch (java.lang.Exception e) { e.printStackTrace(); } } /** * 証明書を埋め込む * * @param xml * XMLエンジン * * ご使用される PKCS#12 ファイルの状態により、以下のいずれかのメソッドを使用してください。 * * (1) 中間CA証明書を含む PKCS#12 を使用する場合 * setSignature(password, issuer_pkcs12, issuer_x509); * * (2) PKCS#12に中間CA証明書を含まず、別途中間CA証明書ファイルを指定する場合 * setSignature(password, issuer_pkcs12, issuer_x509, verisign_x509); * */ // (1) 中間CA証明書を含む PKCS#12 を使用する場合 private void setSignature1(XMLSuper xml) { String cert_path = "./"; // パスワードを指定 String password = "password"; // プライベート・キーのあるPKCS#12フォーマットのファイル名 String issuer_pkcs12 = cert_path + "vbrainsellers.pfx"; // X509フォーマットの署名者の証明書のファイル名 String issuer_x509 = cert_path + "vbrainsellers.cer"; // name属性で指定された名前を元にオブジェクトを取得する VeriSignSignature vss = (VeriSignSignature) xml.getObject("veri3"); if (vss != null && vss instanceof VeriSignSignature) { vss.setSignature(password, issuer_pkcs12, issuer_x509); } } // (2)PKCS#12に中間CA証明書を含まず、別途中間CA証明書ファイルを指定する場合 private void setSignature2(XMLSuper xml) { String cert_path = "./"; // パスワードを指定 String password = "password"; // プライベート・キーのあるPKCS#12フォーマットのファイル名 String issuer_pkcs12 = cert_path + "vbrainsellers.pfx"; // X509フォーマットの署名者の証明書のファイル名 String issuer_x509 = cert_path + "vbrainsellers.cer"; // X509フォーマットの中間CA証明書およびルート証明書のファイル名の配列 // 複数指定が可能です。必要なだけ指定してください String verisign_x509[] = { cert_path + "intermediate.cer", // 中間CA証明書 cert_path + "cross_root.cer", // クロスルート中間証明書 cert_path + "root.cer" // ルート証明書 }; // name 属性で指定された名前を元にオブジェクトを取得する VeriSignSignature vss = (VeriSignSignature) xml.getObject("veri3"); if (vss != null && vss instanceof VeriSignSignature) { vss.setSignature(password, issuer_pkcs12, issuer_x509, verisign_x509); } } }