署名値の作成/証明書の読み出し
このページでは、PocketSign Verify SDK を使用してマイナンバーカードに搭載された署名用電子証明書を使用した署名値の作成と署名に使用された証明書の読み出しを行います。
あらかじめSDK のセットアップを完了しておいてください。
シーケンス
実装例
ここでは、Hello, world!
という文字列を署名対象として、署名値を作成します。
- iOS
- Android
- Web(PaSoRi)
func run(pin: String) async throws -> String {
// JPKI APへの接続準備を行います。
let session = ReaderSession(dispatchQueue: DispatchQueue.main)
// JPKI APを初期化します。
let ap = JPKIAP(session: session)
// ここでは、これが署名対象です。
let documentToBeSigned = "Hello, world!"
// JPKI APに対して署名を要求します。
let result = try await ap.signDataWithDigitalSignatureSecretKey(
password: pin, data: documentToBeSigned.data(using: .utf8)!, hashAlgorithm: .sha256)
session.close()
return "文書のハッシュ値: \(result.digest?.base64EncodedString() ?? "")\n"
+ "署名値: \(result.signature?.base64EncodedString() ?? "")\n"
+ "証明書: \(result.certificate?.base64EncodedString() ?? "")\n"
}
suspend fun run(pin: String): String {
// JPKI APへの接続準備を行います。
val session = ReaderSession(this, this)
// JPKI APを初期化します。
val ap = JPKIAP(session)
// ここでは、これが署名対象です。
val documentToBeSigned = "Hello, world!"
// JPKI APに対して署名を要求します。
val result = ap.signDataWithDigitalSignatureSecretKey(pin, documentToBeSigned.toByteArray(), HashAlgorithm.SHA256)
session.close()
return "文書のハッシュ値: ${Base64.encodeToString(result.digest, Base64.NO_WRAP)}\n" +
"署名値: ${Base64.encodeToString(result.signature, Base64.NO_WRAP)}\n" +
"証明書: ${Base64.encodeToString(result.certificate, Base64.NO_WRAP)}\n"
}
注意
Verify SDK for Web PaSoRi は、現在ベータ版での提供となります。
const run = async (pin: string) => {
// JPKI APへの接続準備を行います。
const session = new ReaderSession(nfcPortLib);
// JPKI APを初期化します。
const ap = new JPKIAP(session);
// ここでは、これが署名対象です。
const documentToBeSigned = 'Hello, world!';
// JPKI APに対して署名を要求します。
const result = await ap.signDataWithDigitalSignatureSecretKey(
pin,
new TextEncoder().encode(documentToBeSigned),
HashAlgorithm.SHA256
);
await session.close();
return `文書のハッシュ値: ${btoa(String.fromCharCode(...result.digest))}\n` +
`署名値: ${btoa(String.fromCharCode(...result.signature))}\n` +
`証明書: ${btoa(String.fromCharCode(...result.certificate))}\n`;
};
ヒント
モック環境では、FeliCa カード(交通系 IC カード、Edy、WAON など)や、ISO/IEC 14443-4 Type-A カード(クレジットカードなど)をタッチすると、マイナンバーカードの挙動がシミュレートされます。 詳しくはSDK リファレンスをご覧ください。
実行結果
署名に成功すると、以下のように Base64 エンコードされた文書のハッシュ値、署名値、署名に使用された証明書が表示されます。 署名検証時には、このデータを PocketSign Verify API に送信します。
次のステップ
SDK を使って取得したデータを、Verify API に送信して署名検証を行いましょう。
その他、SDK の詳しい使い方やエラーの詳細等については、SDK リファレンスをご覧ください。