/*
* AccessToPKCS12.java
*
* CREATE: 2003/11/26
* UPDATE:
*/
package pkcs12test;
import java.io.*;
import java.security.*;
import java.util.*;
import org.apache.log4j.Category;
/**
* <p>ローカルファイルシステム上のPKCS#12形式のファイルにアクセスし、諸情報を引っ張り出すクラス。</p>
*
* @author Takasu
* @version 1.0
*/
public class AccessToPKCS12 {
private static Category cat = Category.getInstance(AccessToPKCS12.class.getName());
private static String pkcs12file;
private static String pkcs12pass;
/**
* メインメソッド。引数は使わない。
*/
public static void main(String[] args) {
cat.info("処理開始");
// まず初期化
init();
try {
// キーストアのタイプをいつものJKSではなくPKCS12にする。
KeyStore ks = KeyStore.getInstance("PKCS12");
// キーファイルの読み込み
ks.load(new FileInputStream(pkcs12file), null);
// 試しにキーストアから秘密鍵を取得し、中身をダンプさせてみる。
PrivateKey privateKey = (PrivateKey)ks.getKey("1", pkcs12pass.toCharArray());
if(privateKey == null){
cat.warn("鍵の取得に失敗しました。Alias か KeyPassword が間違っている可能性があります。");
}else{
cat.info("秘密鍵のダンプ:\n" + privateKey.toString());
cat.info("秘密鍵のフォーマット:" + privateKey.getFormat().toString());
cat.info("秘密鍵のアルゴリズム:" + privateKey.getAlgorithm().toString());
//cat.info("秘密鍵のエンコード :" + privateKey.getEncoded());
}
} catch (Exception e) {
// 対応する例外が一杯あるけど省略。
e.printStackTrace();
}
cat.info("処理終了");
}
/**
* 初期処理を実行するメソッド。<br />
* PKCS#12ファイルパス、およびキーパスワードを設定する。
*/
private static void init() {
try {
// プロパティファイルのパスを渡して読み込む
Properties prop = new Properties();
prop.load(new FileInputStream("pkcs12test/user.ini"));
// Static変数にプロパティを格納。
pkcs12file = prop.getProperty("pkcs12file");
pkcs12pass = prop.getProperty("pkcs12pass");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}