メインコンテンツまでスキップ

マイナンバー画像の読み出し

このページでは、PocketSign Verify SDK を使用してマイナンバーカードに搭載された券面事項確認 AP から、 マイナンバー画像を読み出します。

あらかじめ券面事項の読み出しに対応した SDK の準備を完了しておいてください。

シーケンス

実装例

ここでは、カードの内部認証に用いる Nonce が 0xCAFEBABE の場合の実装例を示します。

要確認

この資料では説明の都合上省略していますが、Nonce は原則としてバックエンド側で生成する必要があります。 クライアントサイドで Nonce を生成する実装は、セキュリティ上の問題があるためご注意ください。

また、一度使用した Nonce は再利用することはできず、マイナンバー画像の要求時には毎回新しい Nonce を生成する必要があります。

func run(pin: String) async throws -> String {
// 券面事項確認APへの接続準備を行います。
let session = ReaderSession(dispatchQueue: DispatchQueue.main)

// 券面事項確認APを初期化します。
let ap = ConfirmationAP(session: session)

// 内部認証のためのNonceを設定します。
let nonce = Data([0xCA, 0xFE, 0xBA, 0xBE])

// 券面事項確認APに対してマイナンバー画像の読み出しを行います。
let result = try await ap.readMyNumberContentWithVerificationNumberA(
password: pin, nonce: nonce, hashAlgorithm: .sha256)

session.close()
return "署名検証用公開鍵: \(result.verificationPublicKey?.base64EncodedString() ?? "")\n"
+ "内部認証の署名値: \(result.authenticationSignature?.base64EncodedString() ?? "")\n"
+ "Nonceのハッシュ値: \(result.digest?.base64EncodedString() ?? "")\n"
+ "マイナンバー画像: \(result.myNumberContent?.base64EncodedString() ?? "")\n"
}
ヒント

モック環境では、FeliCa カード(交通系 IC カード、Edy、WAON など)や、ISO/IEC 14443-4 Type-A カード(クレジットカードなど)をタッチすると、マイナンバーカードの挙動がシミュレートされます。 詳しくはSDK リファレンスをご覧ください。

実行結果

マイナンバー画像の読み出しに成功すると、以下のように Base64 エンコードされた 署名検証用公開鍵、内部認証の署名値などが表示されます。 マイナンバー画像のパース・検証時には、これらのデータを PocketSign Verify API に送信します。


次のステップ

券面事項確認 AP から取得したデータのパース・検証を行い、マイナンバー画像を取得しましょう。

その他、SDK の詳しい使い方やエラーの詳細等については、SDK リファレンスをご覧ください。