公的個人認証サービス

利用者クライアントソフト API 仕様書【カード AP ライブラリ CryptoAPI 編】

第 4.6 版

地方公共団体情報システム機構

変更履歴
版数

変更日付

1.0 版

平成 16 年 1 月 16 日

1.1 版

平成 16 年 10 月 14 日

変更内容
新規作成
Windows XP SP2 対応に伴い表 ３-１のプラットフォームを追加。
公的個人認証サービス利用者クライアントソフト

2.0 版

平成 18 年 5 月 2 日

Ver2.0 のリリースに伴い、動作環境、ソフトウェア構成
図を変更。

2.1 版

平成 18 年 11 月 1 日

2.2 版

平成 19 年 10 月 4 日

MacOS 対応に伴い、第２章 ドキュメント体系を変更
WindowsVista 対応に伴い表 ３-１のプラットフォームを追加。
表 ３-１動作環境のプラットフォームに WindowsVista

2.3 版

平成 20 年 10 月 10 日

ServicePack1、WindowsXP ServicePack3 を追加。
表３-１動作環境Web ブ ラ ウ ザ に Internet

Explorer6.0 ServicePack3 を追加。
エ ラ ー ! 参 照 元 が 見 つ か り ま せ ん 。 に 「 JavaDoc
JPKICryptJNI(64bit)」を追加。
表 ３-１動作環境のプラットフォームを表 ３-１ 動作
環境(Windows)、表 ３-２ 動作環境(IC カード)に分割し2.4 版

平成 23 年 04 月 01 日

マトリックス形式の記述に変更。
表 ３-１ 動作環境(Windows)の OS に WindowsVista
ServicePack2, Windows7(32/64 bit)を追加、Web ブラウ
ザに Internet Explorer8.0 を追加。
図 ４-１ ソフトウェア構成図を変更。
第３章

動作環境

Windows2000

表 ３-１ 動作環境(Windows)よりを 削 除 、 Windows8(32/64bit)、

Windows8.1(32/64bit)を追加。
2.5 版

平成 25 年 12 月 01 日第５章 第１節 sha-256 に対応する API の記載を追加
第５章 第２節 （８）CryptCreateHash の ALG_ID に
CALG_SHA_256 を追加。
第５章 第３節 （２）RSAPUBKEY の鍵長に 2048(鍵長)を追加。
全体 「地方公共団体情報システム機構」への事業承継により、組織名称を変更する。

3.0 版

平成 26 年 04 月 01 日 全体 「公的個人認証サービス共通基盤事業運用会議」
への事業承継により、「公的個人認証サービス都道府県協議会」の組織名称を変更する。

版数

変更日付

変更内容
第３章

表 ３ - １ 動 作 環 境 (Windows) の Windows

XP/Windows 8 を削除、Windows 8.1 を Windows 8.1 updateに変更、Windows7(32/64bit)の Web ブラウザを IE11.0に変更。
第５章 第１節 表 ５-１ サポート API 一覧の注釈に
3.1 版

平成 26 年 07 月 01 日

記載された番号に 13 を追加し、SHA256 による署名生成
および署名検証について追記
第５章

第４節

第５章

第４節

（３）/第５章

第４節 （４）/第５章 第４節 （５）/第５章 第４節（ ６ ） そ れ ぞ れ の CryptCreateHash の ALG_ID に「(CALG_SHA1 または CALG_SHA256 のいずれかを署名方式に合わせて指定)」を追加
番号制度対応に伴い、以下を修正。
・第１章 第 1 節に用語の定義を追加。
・第２章のドキュメント体系を修正。
4.0 版

平成 27 年 6 月 30 日

・第３章の動作環境を修正。
・第４章の機能仕様を修正。
・第５章の API 仕様を修正。
・第６章の画面仕様を修正。
・第３章システム概要 動作環境

更新プログラムに係る注釈※3、4 の追加
・第５章 第２節 サポート API 仕様詳細 （１）引数の文言修正及び備考に dwFlags のパラメータに関する
4.0.1 版

平成 28 年 10 月 26 日

内容を追加
・第５章 第４節 コーリングシーケンス（１）利用者
証明書取得処理に CRYPT_VERIFYCONTEXT の記載を追加
・文末 注意事項の利用用途の文言修正
その他、図の整形及び誤記等の文言修正

版数

変更日付

変更内容
PC 接続機能追加に伴い、以下を修正。
・第１章 第１節の「用語の定義」に以下を追加。

4.１版



PC/SC



IC カードリーダライタ



挿入



NFC



Bluetooth平成 28 年 11 月 30 日 ・第２章 ドキュメント体系図に Android 版を追加。
・第３章 表 3-1 に PC 接続機能対応可否追加
・第３章 表 3-1 に Windows 10(32/64bit)を追加。
・第３章 表 3-2 動作環境(IC カード)を表 3-2 動作環
境(IC カード)、第 1 節 PC/SC 対応 IC カードリーダライタ、第 2 節 Android 端末に分割。
・第４章 第１節 ソフトウェア構成図に Bluetooth 通信
を追加。
Java9 対応に伴い、以下を修正。
・第２章 ドキュメント体系図を改訂。
・第３章 表 ３-１の OS から Windows Vista(32bit)を削除。
・第３章 表 ３-１の OS から Windows 8(32bit)を削除。

4.2 版

平成 29 年 07 月 31 日

・第３章 表 ３-１の OS から Windows 8(64bit)を削除。
・第３章 表 ３-１の JavaVM に JRE9 を追加。
・第３章 表 ３-４の【PC 接続の場合】に Android 6.0.1、7.0 を追加。
・第３章 表 ３-４の【Android 単体で利用する場合】にAndroid 6.0.1、7.0 を追加。
・その他、記載の見直しを実施。
・第３章 表 ３-４の【PC 接続の場合】、【Android 単体

4.3 版

平成 31 年 3 月 31 日で利用する場合】に Android 8.0 を追加。
・その他、記載の見直しを実施。

版数

変更日付

変更内容
MacOS 版における住基カードサポート廃止に伴い、以下を修正。
・第２章 ドキュメント体系「API 仕様書 Mac OS X

C 言語インターフェース編」を削除。
ブラウザ対応版、iOS 版のリリースに伴い、以下を修正。
・第２章 ドキュメント体系「利用者クライアントソ

フト 機能概要説明書 ブラウザ対応編」を追加。
・第２章 ドキュメント体系 「API 仕様書 カード AP
4.4 版

令和 2 年 3 月 31 日

ライブラリ ブラウザインターフェース編」を追加。
・第２章 ドキュメント体系「利用者クライアントソ

フト 機能概要説明書(iOS 版)」を追加。
・第２章

ドキュメント体系「 API 仕 様 書 iOS

Framework 編」を追加。
・第３章 第２節 動作環境に Android9.0、10.0 を追加。
Windows 7 サポート終了に伴い、以下を修正。
・第３章 表３-１を修正。
Windows 7(32bit)、Windows 7(64bit)および※3 を削除。
パスワード入力ダイアログ改修対応に伴い、以下を修正
・第３章 表３-１の JRE9.0 および※5 を削除。
・第３章 第２節 動作環境に Android11.0 を追加。
・第３章 第２節 動作環境から Android4.3、5.1、6.0.1 を削除。
・第６章 第２節 （２）画面レイアウトの差替え、パスワード表示切替の項目の追加、およびパスワード誤りの場合の表示条件の追加。
4.5 版

令和 3 年 3 月 31 日・第６章 第２節 （３）画面レイアウトの差替え、パスワード表示切替の項目の追加、およびパスワード誤りの場合の表示条件の追加。
ブラウザ対応版(Android)のリリースに伴い、以下を修正
・第２章 ドキュメント体系 「利用者クライアントソ
フト 機能概要説明書(Android 版) ブラウザ対応編」を追加。
・第２章 ドキュメント体系 「API 仕様書 Android イ
ンテント ブラウザインターフェース編」を追加。

版数

変更日付

変更内容
・第１章 第１節 用語の定義の説明文を修正。
・第３章

動作環境から Windows 8.1 update (32bit)

および Windows 8.1 update (64bit)を削除。
・第３章 動作環境に Windows 11(64bit 版)を追加。
・第３章
4.6 版

令和 5 年 3 月 31 日

動作環境の※2 の Internet Explorer を

Microsoft Edge に変更。
・第３章 第２節から Android 7.0 を削除、Android 12.0を追加。
・第６章 第２節 （２） 画面タイトル、画面文言の修正。
・第６章 第２節 （３） 画面タイトル、画面文言修正。

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版－

目次 －第１章 はじめに ......................................................... １
第１節 用語の定義 ............................................................................................................ ２

第２章 ドキュメント体系 ................................................. ４
第３章 動作環境 ......................................................... ６
第１節 PC/SC 対応 IC カードリーダライタ..................................................................... ７
第２節 Android 端末......................................................................................................... ８

第４章 機能仕様 ......................................................... ９
第１節 ソフトウェア構成図 .............................................................................................. ９
第２節 実現可能な機能の一覧 ...................................................................................... １０

第５章 API 仕様 ........................................................ １１
第１節 サポート API 一覧 ............................................................................................ １１
第２節 サポート API 仕様詳細 ..................................................................................... １２
第３節 構造体仕様 ........................................................................................................ ２７
第４節 コーリングシーケンス ...................................................................................... ２８

第６章 画面仕様 ....................................................... ３８
第１節 画面一覧 ............................................................................................................ ３８
第２節 画面仕様詳細..................................................................................................... ３９i

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

第１章 はじめに利用者クライアントソフトにおけるカード AP ライブラリは、以下の機能を実現するためのApplication Program Interface(以下、API)を提供する。


証明書取得機能

電子署名生成機能

電子署名検証機能

以降、本書ではカード AP ライブラリのうち、CryptoAPI の API 仕様について説明する。

１

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

第１節

用語の定義
表 １-１ 用語の定義

項番
1

用語・略号
IC カード説明
以下のカードを指す総称。
・住基カード・個人番号カード2

電子証明書

公開鍵及び発行対象を識別する情報を含むデータに、認証局が発行対象の正当性を保証する電子署名を付与して、発行されるデータをいう。
データは、ISO/IEC 8825-1 の識別符号化規則により符号化された形式で利用される。

3

証明書

電子証明書と同義。

4

利用者証明書

公的個人認証サービスで発行した利用者の証明書。
本書では以下の電子証明書を指す。
・住基カードに格納された署名用電子証明書
・個人番号カードに格納された署名用電子証明書
・個人番号カードに格納された利用者証明用電子証明書
・移動端末設備に格納された署名用電子証明書 ※・移動端末設備に格納された利用者証明用電子証明書 ※※本ライブラリでは移動端末設備を対象としたＡＰＩを提供しない。

5

利用者秘密鍵

公開鍵暗号方式において用いられる鍵ペアの一方。公開鍵に対する、利用者のみが保有する鍵。
本書では以下の秘密鍵を指す。
・住基カードに格納された署名用利用者秘密鍵
・個人番号カードに格納された署名用利用者秘密鍵
・個人番号カードに格納された利用者証明用利用者秘密鍵

6

認証局の自己 自認証局の公開鍵に対して、自認証局の秘密鍵で署名した証明書。
署名証明書

本書では以下の電子証明書を指す。
・住基カードに格納された都道府県知事の自己署名証明書
・個人番号カードに格納された署名用認証局の自己署名証明書
・個人番号カードに格納された利用者証明用認証局の自己署名証明書
・移動端末設備に格納された署名用認証局の自己署名証明書 ※・移動端末設備に格納された利用者証明用認証局の自己署名証明書※※本ライブラリでは移動端末設備を対象としたＡＰＩを提供しない。

7

PC/SC

Personal Computer/Smart Card の略。

２API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
項番
8

用語・略号

説明

IC カードリー 以下の機器を指す総称
ダライタ

・PC/SC 対応 IC カードリーダライタ
・Android 端末

9

挿入

IC カードリーダライタが IC カードを読み込める状態にすること。
具体的には以下の状態にすることを指す。
・PC/SC 対応 IC カードリーダライタに IC カードをセットすること・Android 端末に IC カードをセットすること

10

NFC

Near Field Communication (近距離無線通信)の略。

11

Bluetooth

機器間の近距離無線通信 IEEE 802.15.1 の規格名称。

３

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

第２章 ドキュメント体系
利用者クライアントソフトのドキュメント体系図を以下に示す。本書は以下の体系図の網掛け部分に該当する。
利用者クライアントソフト 機能概要説明書
利用者クライアントソフトの機能概要について説明しています。

API 仕様書 カード AP ライブラリ CryptoAPI 編
カード AP ライブラリ(CryptoAPI)の API 仕様について説明しています。

API 仕様書 カード AP ライブラリ PKCS#11 編
カード AP ライブラリ(PKCS#11)の API 仕様について説明しています。

API 仕様書 カード AP ライブラリ Java インターフェース編
カード AP ライブラリ(Java インターフェース)の API 仕様について説明しています。

JavaDoc JPKICryptJNI
カード AP ライブラリ(Java インターフェース(住基カード署名用))の JavaDoc です。

JavaDoc JPKICryptJNI(64bit)
カード AP ライブラリ(Java インターフェース(住基カード署名用) 64bit)の JavaDoc です。

JavaDoc JPKICryptSignJNI
カード AP ライブラリ(Java インターフェース(個人番号カード署名用))の JavaDoc です。

JavaDoc JPKICryptSignJNI(64bit)
カード AP ライブラリ(Java インターフェース(個人番号カード署名用) 64bit)の JavaDoc です。

JavaDoc JPKICryptAuthJNI
カード AP ライブラリ(Java インターフェース(個人番号カード利用者証明用))の JavaDoc です。

JavaDoc JPKICryptAuthJNI(64bit)
カード AP ライブラリ(Java インターフェース(個人番号カード利用者証明用) 64bit)の JavaDoc です。

API 仕様書 個人認証サービス AP C 言語インターフェース編
個人認証サービス AP(C 言語インターフェース)の API 仕様について説明しています。

API 仕様書 個人認証サービス AP Java インターフェース編
個人認証サービス AP(Java インターフェース)の API 仕様について説明しています。

JavaDoc JPKIUserCertService
個人認証サービス AP(Java インターフェース)の JavaDoc です。

Jar ファイル利用手引き
利用者クライアントソフトの Jar ファイルを利用する方法について説明しています。

利用者クライアントソフト 機能概要説明書 ブラウザ対応編
ブラウザ対応版利用者クライアントソフトの機能概要について説明しています。

API 仕様書 カード AP ライブラリ ブラウザインターフェース編
カード AP ライブラリ(ブラウザインターフェース)の API 仕様について説明しています。

図 ２-１ ドキュメント体系図(PC 版)
４

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

利用者クライアントソフト 機能概要説明書(Android 版)
Android 版 JPKI 利用者ソフトの機能概要について説明しています。

API 仕様書 Android インテント編
インテントによる外部インターフェース仕様について説明しています。

利用者クライアントソフト 機能概要説明書(Android 版) ブラウザ対応編
ブラウザ対応版 Android 版 JPKI 利用者ソフトの機能概要について説明しています。

API 仕様書 Android インテント ブラウザインターフェース編
インテントによる外部インターフェース仕様(ブラウザ対応用)について説明しています。

図 ２-１ ドキュメント体系図(Android 版)

利用者クライアントソフト 機能概要説明書(iOS 版)
iOS 版 JPKI 利用者ソフトの機能概要について説明しています。

API 仕様書 iOS Framework 編
Framework による外部インターフェース仕様について説明しています。

図 ２-２ ドキュメント体系図(iOS 版)

５

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

第３章 動作環境
カード AP ライブラリ(CryptoAPI)の動作環境は以下の通りとする。
表 ３-１ 動作環境(Windows)

OS(※1)Web ブラウザ

JavaVM(※1)

PC 接続機能対応可否(※1, ※2)

JRE8.0(※3)

Windows 10(32bit 版)

Edge 102○○

Windows 10(64bit 版)

Edge 102○○

Windows 11(64bit 版)

Edge 102○○※1 本仕様書で定めるバージョンの開発時点の環境。最新の動作環境の情報は、JPKI ポータルサ
イトに掲載するものとする。
※2 プラットフォームが Windows の場合、暗号機能等の利用のために Microsoft Edge(カード AP
ライブラリ（Java インタフェース編）の場合、IE モード)が必要。
※3 PC 接続機能については「利用者クライアントソフト 機能概要説明書 第３章 第３節 PC 接
続機能について」を参照。

６

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

IC カードの動作環境は以下の通りとする。

表 ３-２ 動作環境(IC カード)項目

条件

IC カード住基カードまたは個人番号カードであること。
※PC 接続機能を使用する場合は個人番号カードのみ対応。

第１節

PC/SC 対応 IC カードリーダライタ

PC/SC 対応 IC カードリーダライタの動作環境は以下の通りとする。

表 ３-３ 動作環境(PC/SC 対応 IC カードリーダライタ)
項目

条件

PC/SC 対応 IC カード 以下の条件を満たす PC/SC 対応 IC カードリーダライタとする。(「個人リーダライタ

番号カード対応適合性検証済み IC カードリーダーライタ一覧」「住基カード対応適合性検証済み IC カードリーダーライタ一覧」(※1)を参照のこと。)
・ IC カードのインターフェース(非接触型、接触非接触両対応型)に対応していること。
・ PC/SC 対応 IC カードリーダライタであること。
・ USB など、パソコンに接続するためのインターフェースを有すること。
・ PC/SC 対応 IC カードリーダライタと通信するためのドライバソフト
ウェアが提供されていること。
・ IC カードの搬送方式が手動挿入/手動排出タイプまたは自動挿入/自動排出タイプであること。
・ IC カードを挿入するスロットの数は 1 つとし、1 度に挿入できる IC
カードは 1 枚であること。

※1 最新の「個人番号カード対応適合性検証済み IC カードリーダーライタ一覧」「住基カード対応適合性検証済み IC カードリーダーライタ一覧」の情報は、JPKI ポータルサイトに掲載す
るものとする。

７

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

第２節

Android 端末

Android 端末の動作環境は以下の通りとする。

表 ３-４ 動作環境(Android 端末)
項目
Android 端末条件
以下の条件を満たす Android 端末とする。（「個人番号カード対応適合性検証済み Android 端末一覧」(※)を参照のこと。
）
・【PC 接続の場合】Android 8.0、9.0、10.0、11.0 または 12.0 を搭載していること。
・【Android 単体で利用する場合】Android 8.0、9.0、10.0、11.0 または12.0 を搭載していること。
・Bluetooth 4.0 を搭載していること。
・ISO/IEC 14443 Type B に対応している NFC を搭載していること。

※ 最新の「個人番号カード対応適合性検証済み Android 端末一覧」の情報は、JPKI ポータルサ
イトに掲載するものとする。

８

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

第４章
第１節

機能仕様
ソフトウェア構成図

本仕様書では、利用者クライアントソフトのうち、下図の太枠に示すカード AP ライブラリ(CryptoAPI)の仕様をまとめる。

上位アプリケーション
PKCS#11 API

CryptoAPI

JavaI/F

JPKI 利用者ソフト

JavaI/F

C 言語 I/F

個人認証サービス AP
JavaI/F
個人認証サービス AP
C 言語 I/F
カード AP ライブラリ
Java I/F

カード AP ライブリ
PKCS#11

カード AP ライブラリ
CryptoAPI
カード AP ライブラリ
カード I/F

SmartCardAPI※

Windows Sockets API

SmartCardAPI※

Windows Sockets API

PC/SC リーダライタドライバ

Bluetooth ドライバ

カードコマンド
PC/SC リーダライタ

証明書
検証要求

オンライン窓口
処理要求

カードコマンド
Android 端末

カードコマンド

カードコマンド

公的個人認証サービスカードアプリケーション※ Smart Card Resource Manager API の略

図 ４-１ ソフトウェア構成図

９

官職証明書検証サービス

オンライン窓口
サービス

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

第２節

実現可能な機能の一覧

カード AP ライブラリ(CryptoAPI)で実現可能な機能の一覧を表 ４-１に示す。
表 ４-１ 実現可能な機能の一覧
NO

機能

概要

1

利用者証明書取得

IC カードに格納された利用者証明書を取得する。

2

認証局の自己署名証明書取得

IC カードに格納された認証局の自己署名証明書を取得する。

3

署名生成(署名対象データを渡すパ 署名対象データからハッシュ値を計算し、IC カー
ターン)

ドに格納された利用者秘密鍵を使用して電子署名を生成する。

4

署名生成(ハッシュ値を渡すパター ハッシュ値に対して、IC カードに格納された利用ン)

5

者秘密鍵を使用して電子署名を生成する。

署名検証(検証対象データを渡すパ 検証対象データからハッシュ値を計算し、ハッシ
ターン)

ュ値、電子署名、公開鍵を使用して電子署名を検証する。

6

署名検証(ハッシュ値を渡すパター ハッシュ値、電子署名、公開鍵を使用して電子署
ン)

7

繰り返し署名生成(署名対象データ NO3 の処理を繰り返し実行し、複数の署名対象デを渡すパターン)

8

ータに対する電子署名を生成する。

繰り返し署名生成(ハッシュ値を渡 NO4 の処理を繰り返し実行し、複数のハッシュ値
すパターン)

9

名を検証する。

に対する電子署名を生成する。

繰り返し署名検証(検証対象データ NO5 の処理を繰り返し実行し、複数の電子署名をを渡すパターン)

検証する。

10 繰り返し署名検証(ハッシュ値を渡 NO6 の処理を繰り返し実行し、複数の電子署名をすパターン)

検証する。

１０

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

第５章
第１節

API 仕様サポート API 一覧

利用者クライアントソフト用 Cryptographic Service Provider(以下、CSP)がサポートする
CryptoAPI の一覧を表 ５-１に示す。なお、サポートしていない API を呼び出した場合には、戻り値が常に FALSE(失敗)となる。
表 ５-１ サポート API 一覧
NO

CryptoAPI

概要

1

CryptAcquireContext

鍵コンテナのハンドルを生成する。

2

CryptReleaseContext

鍵コンテナのハンドルを開放する。

3

CryptGetProvParamCSP のパラメータの値を取得する。

4

CryptDestroyKey

鍵の破棄を行う。

5

CryptGetKeyParam

鍵のパラメータの値を取得する。

6

CryptImportKey

外部から鍵を取り込む。

7

CryptGetUserKey

鍵コンテナ内の鍵ハンドルを取得する。

8

CryptCreateHash

ハッシュオブジェクトの生成を行う。

9

CryptDestroyHash

ハッシュオブジェクトの破棄を行う。

10 CryptSetHashParam

ハッシュオブジェクトのパラメータを設定する。

11 CryptGetHashParam

ハッシュオブジェクトのパラメータを取得する。

12 CryptHashData

ハッシュオブジェクトにデータを与えハッシュ値を計算する。

13 CryptSignHash

ハッシュ値に署名を行う。

14 CryptVerifySignature

署名を検証する。

※NO.8,9,10,11,12,13,14 について sha-256 の利用者証明書による署名生成および署名検証、
sha-256 の官職証明書・職責証明書による署名検証に対応済み。

１１

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

第２節

サポート API 仕様詳細

各関数の戻り値は BOOL 型で、エラーが発生した場合は FALSE を返す。上位アプリケーション
でエラー情報を取得する際は、GetLastError()関数をコールしてエラーコードを取得すること。
なお、本仕様書に記述のないエラーコードが OS から返る場合があるが、それらのエラーコードについては MSDN を参照のこと。
（１） CryptAcquireContext
API 名

CryptAcquireContext

概要

鍵コンテナのハンドルを生成する。

関数インタ

CryptAcquireContext(ーフェース

HCRYPTPROV* phProv,
LPCTSTR pszContainer,
LPCTSTR pszProvider,
DWORD dwProvType,DWORD dwFlags);

戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

I/O

内容

HCRYPTPROV*

OUT

ハンドル格納場所のポインタ

LPCTSTRIN

NULL 文字で終了するコンテナ名称
NULL を指定すること。

LPCTSTRIN

NULL 文字で終了する CSP 名称”JPKI Crypto Service Provider””JPKI Crypto Service Provider
for Sign””JPKI Crypto Service Provider
for Auth”のいずれかを指定する。
詳細は備考(A)を参照。

DWORD

IN

プロバイダタイプ
PROV_RSA_FULL
PROV_RSA_AESのいずれかを指定すること。
詳細は備考(B)を参照。

１２

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

型
引数

I/O

DWORD

IN

内容
動作に関するパラメータ0
CRYPT_VERIFYCONTEXTのいずれかを指定すること。
詳細は備考(C)を参照。

値
エラーコー
ド

内容

NTE_BAD_FLAGS

dwFlags に不正な値が設定されている。

NTE_KEYSET_NOT_DEF

鍵コンテナが見つからない。

NTE_NO_MEMORY

メモリが不足している。

SCARD_W_CANCELLED_BY_US

パスワード入力が利用者によってキャンセ

ER

ルされた。

SCARD_E_NOT_READY

R/W 接続不備、IC カード未挿入等のため IC
カードに接続できない。

SCARD_E_UNKNOWN_CARD

IC カード種別が相違している。
※IC カード種別相違と判定されるケースは以下の通り。
(1)CSP

名 称 が ”JPKI

CryptoService

Provider”かつ住基カード以外の IC カー
ドが挿入されている場合(2)CSP

名 称 が ”JPKI

CryptoService

Provider for Sign”かつ個人番号カード
以外の IC カードが挿入されている場合(3)CSP

名 称 が ”JPKI

CryptoService

Provider for Auth”かつ個人番号カード
以外の IC カードが挿入されている場合
SCARD_W_CHV_BLOCKED

利用者パスワードがロックしている。

１３

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
備考(A) pszProvider に指定した CSP 名称によって、CryptAcquireContext で取得したハンドルを利用する処理の対象となる利用者証明書、利用者
秘密鍵、認証局の自己署名証明書は以下のように決定される。
”JPKI Crypto Service Provider”の場合
利用者証明書住基カードに格納された署名用電子証明書

利用者秘密鍵住基カードに格納された署名用利用者秘密鍵

認証局の自己住基カードに格納された都道府県知事の自己署名証

署名証明書

明書

”JPKI Crypto Service Provider for Sign”の場合
利用者証明書個人番号カードに格納された署名用電子証明書

利用者秘密鍵

個人番号カードに格納された署名用利用者秘密鍵

認証局の自己個人番号カードに格納された署名用認証局の自己署

署名証明書

名証明書

”JPKI Crypto Service Provider for Auth”の場合
利用者証明書個人番号カードに格納された利用者証明用電子証明書

利用者秘密鍵

個人番号カードに格納された利用者証明用利用者秘
密鍵

認証局の自己個人番号カードに格納された利用者証明用認証局の署名証明書

自己署名証明書(B) dwProvType に指定するプロバイダタイプは、pszProvider に指定した
CSP 名称に応じて以下の値を設定する。
”JPKI Crypto Service Provider”の場合
プロバイダタイプ

PROV_RSA_FULL”JPKI Crypto Service Provider for Sign”または”JPKI Crypto Service Provider for Auth”の場合
プロバイダタイプ

PROV_RSA_AES

１４

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
備考(C) dwFlags に指定する動作に関するパラメータは、pszProvider に指定した CSP 名称に応じて以下の値を設定する。
”JPKI Crypto Service Provider”または”JPKI Crypto Service Provider for Sign”の場合動作に関する

0: 利用者証明書、利用者秘密鍵使用時に指定する。

パラメータ

CRYPT_VERIFYCONTEXT: 認証局の自己署名証明書取得、署名検証の際に指定する。

”JPKI Crypto Service Provider for Auth”の場合動作に関する

0: 利用者証明書、利用者秘密鍵使用時に指定する。

パラメータ

CRYPT_VERIFYCONTEXT:認証局の自己署名証明書取得、署名検証の際に指定する。

(D) pszProvider に指定した CSP 名称に応じて以下の画面が表示される。
”JPKI Crypto Service Provider”の場合
表示画面

住基カード署名用パスワード入力画面”JPKI Crypto Service Provider for Sign”の場合
表示画面

個人番号カード署名用パスワード入力画面”JPKI Crypto Service Provider for Auth”の場合
表示画面

個人番号カード利用者証明用パスワード入力画面（２） CryptReleaseContext
API 名

CryptReleaseContext

概要

鍵コンテナのハンドルを開放する。

関数インター CryptReleaseContext(
フェース

HCRYPTPROV hProv,
DWORD dwFlags);

戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

HCRYPTPROV

I/O
IN

内容
CryptAcquireContext で取得した
ハンドル

DWORD

IN

動作に関するパラメータ0 を指定すること。

値
エラーコード NTE_BAD_UID

内容
hProv に不正な値が設定されている。

１５

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版（３） CryptGetProvParamAPI 名

CryptGetProvParam

概要

CSP のパラメータの値を取得する。

関数インター CryptGetProvParam(
フェース

HCRYPTPROV hProv,
DWORD dwParam,
BYTE* pbData,
DWORD* pdwDataLen,
DWORD dwFlags);

戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

HCRYPTPROV

I/O
IN

内容
CryptAcquireContext で取得した
ハンドル

DWORD

IN

値を取得するためのパラメータ
サポートする値を表 ５-２に示
す。

BYTE*

OUT

値を格納するバッファのポインタ
NULL を指定した場合は値の書き込みは行われず、pdwDataLen に値の格納に必要な長さが設定される。

１６

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

型
引数

DWORD*I/O

内容

IN/OUT

値の長さを保持するバッファへのポインタ
関数呼び出し時には、pbData バ
ッファに割り当てられたメモリ
サイズを指定する。関数終了時には、値の格納に必要な長さが設定される。

DWORD

IN

動作に関するパラメータ0 を設定すること。

値

内容

エラーコード ERROR_MORE_DATA

pbData バッファが小さすぎる。

NTE_BAD_TYPE

dwParam に不正な値が設定されている。

NTE_BAD_UID

hProv に不正な値が設定されている。

表 ５-２ CryptGetProvParam の dwParam でサポートする値
#
1

値

内容

PP_IMPTYPECSP の実装形を DWORD 型で返す。
本 CSP は、CRYPT_IMPL_MIXED | CRYPT_IMPL_REMOVABLE を返す。

2

PP_NAMECSP 名称を CHAR 型の NULL ターミネート文字列で返す。
本 CSP は、CryptAcquireContext 実行時に引数 pszProvider で指定された CSP 名称を返す。

3

PP_VERSIONCSP のバージョンを DWORD 型で返す。
本 CSP は、1.0(0x00000100)を返す。

4

PP_PROVTYPECSP のプロバイダタイプを DWORD 型で返す。
本 CSP は、CryptAcquireContext 実行時に引数 dwProvType で指定されたプロバイダタイプを返す。

5

PP_JPKI_CA_CERTIFICATE

本 CSP は、IC カードに格納された認証局の自己署名証明書(DER形式)を返す。

（４） CryptDestroyKey
API 名

CryptDestroyKey

概要

鍵の破棄を行う。

関数インター CryptDestroyKey(
フェース

HCRYPTKEY hKey);

１７

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

I/O

HCRYPTKEY

IN

内容
破棄する鍵のハンドル値

内容

エラーコード NTE_BAD_KEY

hKey に不正な値が設定されている。

（５） CryptGetKeyParamAPI 名

CryptGetKeyParam

概要

鍵のパラメータの値を取得する。
(IC カードに格納された利用者証明書(DER 形式)を返す。)

関数インター CryptGetKeyParam(
フェース

HCRYPTKEY hKey,
DWORD dwParam,
BYTE* pbData,
DWORD* pdwDataLen,
DWORD dwFlags);

戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

I/O

内容

HCRYPTKEY

IN

値を取得する鍵のハンドル

DWORD

IN

値を取得するパラメータKP_CERTIFICATE: IC カードに格納された利用者証明書を返す。

BYTE*

OUT

値を格納するバッファのポインタ
NULL を指定した場合は値の書き込みは行われず、pdwDataLen に値の格納に必要な長さが設定される。

DWORD*IN/OUT

値の長さを保持するバッファへのポインタ
関数呼び出し時には、pbData バ
ッファに割り当てられたメモリ
サイズを指定する。関数終了時には、値の格納に必要な長さが設定される。

DWORD

IN

動作に関するパラメータ0 を設定すること。

１８

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

値

内容

エラーコード ERROR_MORE_DATA

pbData バッファが小さすぎる。

NTE_BAD_KEY

hKey に不正な値が設定されている。

NTE_BAD_TYPE

dwParam に不正な値が設定されている。

（６） CryptImportKey
API 名

CryptImportKey

概要

外部から鍵を取り込む。

関数インター CryptImportKey(
フェース

HCRYPTPROV hProv,
BYTE* pbData,
DWORD dwDataLen,
HCRYPTKEY hPubKey,
DWORD dwFlags,
HCRYPTKEY* phKey);

戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

HCRYPTPROV

I/O
IN

内容
CryptAcquireContext で取得した
ハンドル

BYTE*

IN

鍵データのバッファへのポインタ
公開鍵を取り込む際のデータ構
造は構造体｢第３節（３）Public-key BLOBs ｣ を 参照 の こ
と。
DWORD

IN

鍵データのサイズ(バイト)

HCRYPTKEY

IN

鍵データの各種パラメータ
NULL を設定すること。

DWORD

IN

動作に関するパラメータ0 を設定すること。

HCRYPTKEY*

OUT

取り込んだ鍵のハンドルをコピーするバッファのアドレス値
エラーコード NTE_BAD_TYPE

内容
サポートされていない BLOB タイプまたは不正な鍵をインポートしようとした。

NTE_BAD_UID

hProv に不正な値が設定されている。

１９

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

値

内容

エラーコード NTE_BAD_VER

インポートしようとした鍵 BLOB のバージョ
ンはサポートしていない。

備考

本関数では、暗号化されていない PUBLICKEYBLOB のみをサポートする。

（７） CryptGetUserKey
API 名

CryptGetUserKey

概要

鍵コンテナ内の鍵ハンドルを取得する。

関数インター CryptGetUserKey(
フェース

HCRYPTPROV hProv,
DWORD dwKeySpec,HCRYPTKEY* phUserKey);

戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

HCRYPTPROV

I/O
IN

内容
CryptAcquireContext で取得した
ハンドル

DWORD

IN

鍵の種類
AT_KEYEXCHANGE: 鍵交換用鍵
AT_SIGNATURE: 署名用鍵
AT_SIGNATURE を設定すること。

HCRYPTKEY*

OUT

鍵ハンドルをコピーするバッファ
のアドレス

値

内容

エラーコード NTE_BAD_KEY

hKey に不正な値が設定されている。

NTE_BAD_UID

hProv に不正な値が設定されている。

NTE_NO_KEY

dwKeySpec に指定された種類の鍵が存在しない。

（８） CryptCreateHash
API 名

CryptCreateHash

概要

ハッシュオブジェクトの生成を行う。

２０

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
関数インター CryptCreateHash(
フェース

HCRYPTPROV hProv,
ALG_ID Algid,
HCRYPTKEY hKey,
DWORD dwFlags,
HCRYPTHASH* phHash);

戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

HCRYPTPROV

I/O
IN

内容
CryptAcquireContext で取得した
ハンドル

ALG_IDIN

ハッシュアルゴリズム
CALG_SHA: SHA1 アルゴリズム
CALG_SHA1: SHA1 アルゴリズム
CALG_SHA_256: SHA256 アルゴリ
ズム
CALG_SSL3_SHAMD5: SSL クライ
アント認証用アルゴリズム

HCRYPTKEYIN

キードハッシュの場合の鍵ハンド
ル
0 を設定すること。(本 CSP では
キードハッシュは未サポート)

DWORD

IN

動作に関するパラメータ0 を設定すること。

HCRYPTHASH*OUT

生成したハッシュオブジェクトのハンドルをコピーするバッファのポインタ

値
エラーコード NTE_BAD_ALGID

内容
指定されたアルゴリズムはサポートしていない。

NTE_BAD_UID

hProv に不正な値が設定されている。

NTE_NO_MEMORY

メモリが不足している。

（９） CryptDestroyHash
API 名

CryptDestroyHash

概要

ハッシュオブジェクトの破棄を行う。

２１

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
関数インター CryptDestroyHash(
フェース

HCRYPTHASH hHash);

戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

I/O

HCRYPTHASHIN

内容
破棄するハッシュオブジェクトの
ハンドル

値

内容

エラーコード NTE_BAD_HASH

hHash に不正な値が設定されている。

（１０） CryptSetHashParamAPI 名

CryptSetHashParam

概要

ハッシュオブジェクトのパラメータを設定する。

関数インター CryptSetHashParam(
フェース

HCRYPTHASH hHash,
DWORD dwParam,
BYTE* pbData,
DWORD dwFlags);

戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

HCRYPTHASH

I/O
IN

内容
パラメータを設定するハッシュオ
ブジェクトのハンドル

DWORD

IN

設定するパラメータ
HP_HASHVAL: pbData バッファに格納された値をハッシュ値としてハッシュオブジェクトに設定
する。

BYTE*

IN

パラメータに設定するデータのポ
インタ

DWORD

IN

動作に関するパラメータ0 を設定すること。

値
エラーコード NTE_BAD_HASH
NTE_BAD_TYPE

内容
hHash に不正な値が設定されている。
dwParam に不正な値が設定されている。

（１１） CryptGetHashParamAPI 名

CryptGetHashParam

２２

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
概要

ハッシュオブジェクトのパラメータを取得する。

関数インター CryptGetHashParam(
フェース

HCRYPTHASH hHash,
DWORD dwParam,
BYTE* pbData,
DWORD* pdwDataLen,
DWORD dwFlags);

戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

HCRYPTHASH

I/O
IN

内容
パラメータを取得するハッシュオ
ブジェクトのハンドル

DWORD

IN

取得するパラメータ
HP_ALGID: アルゴリズム ID を
DWORD 型で返す。
HP_HASHSIZE: ハッシュサイズ
を DWORD 型で返す。
HP_HASHVAL: ハ ッ シ ュ 値 を 返
す。

BYTE*

OUT

値を格納するバッファのポインタ
NULL を指定した場合は値の書き込みは行われず、pdwDataLen に値の格納に必要な長さが設定される。

DWORD*IN/OUT

値の長さを保持するバッファへのポインタ
関数呼び出し時には、pbData バ
ッファに割り当てられたメモリ
サイズを指定する。関数終了時には、値の格納に必要な長さが設定される。

DWORD

IN

動作に関するパラメータ0 を設定すること。

値
エラーコード ERROR_MORE_DATA

内容
pbData バッファが小さすぎる。

NTE_BAD_HASH

hHash に不正な値が設定されている。

NTE_BAD_TYPE

dwParam に不正な値が設定されている。

２３

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版（１２） CryptHashData
API 名

CryptHashData

概要

ハッシュオブジェクトにデータを与えハッシュ値を計算する。

関数インター CryptHashData(
フェース

HCRYPTHASH hHash,
BYTE* pbData,
DWORD dwDataLen,
DWORD dwFlags);

戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

I/O

内容

HCRYPTHASHIN

ハッシュオブジェクトのハンドル

BYTE*

IN

ハッシュ値を計算するデータのポ
インタ

DWORD

IN

ハッシュ値を計算するデータの長
さ

DWORD

IN

動作に関するパラメータ0 を設定すること。

値

内容

エラーコード NTE_BAD_ALGID

hHash で指定されたアルゴリズムはサポートしていない。

NTE_BAD_HASH

hHash に不正な値が設定されている。

NTE_BAD_HASH_STATE

ハッシュ計算は既に完了しているため、データを追加できない。

NTE_FAIL

予期しないエラーが発生した。

NTE_NO_MEMORY

メモリが不足している。

（１３） CryptSignHash
API 名CryptSignHash

概要

ハッシュ値に署名を行う。

関数インター CryptSignHash(
フェース

HCRYPTHASH hHash,
DWORD dwKeySpec,
LPCTSTR sDescription,
DWORD dwFlags,
BYTE* pbSignature,
DWORD* pdwSigLen);

２４API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

HCRYPTHASH

I/O
IN

内容
署名を行うハッシュオブジェクト
のハンドル

DWORD

IN

鍵の種類
AT_KEYEXCHANGE: 鍵交換用鍵
AT_SIGNATURE: 署名用鍵
AT_SIGNATURE を設定すること。

LPCTSTRIN

ハッシュの概要についての NULL
ターミネート文字列
NULL を設定すること。

DWORD

IN

署名時のフラグ0 を設定すること。

BYTE*

OUT

署名データを格納するバッファのポインタ
NULL を指定した場合は値の書き込みは行われず、pdwSigLen に値の格納に必要な長さが設定される。

DWORD*IN/OUT

署名データの長さを保持するバッ
ファへのポインタ
関 数 呼 び 出 し 時 に は 、
pbSignature バッファに割り当てられたメモリサイズを指定する。関数終了時には、署名デー
タの格納に必要な長さが設定される。

値
エラーコード ERROR_MORE_DATA
NTE_BAD_ALGID

内容
pbSignature バッファが小さすぎる。
hHash で指定されたアルゴリズムはサポートしていない。

NTE_BAD_FLAGS

dwFlags に不正な値が設定されている。

NTE_BAD_HASH

hHash に不正な値が設定されている。

NTE_NO_KEY

dwKeySpec に指定した種類の鍵が存在しな
い。

NTE_NO_MEMORY

メモリが不足している。

※本関数にて署名された署名データは OID を含みます。

２５

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版（１４） CryptVerifySignature
API 名

CryptVerifySignature

概要

署名を検証する。

関数インター CryptVerifySignature(
フェース

HCRYPTHASH hHash,
BYTE* pbSignature,
DWORD dwSigLen,
HCRYPTKEY hPubKey,
LPCTSTR sDescription,
DWORD dwFlags);

戻り値

BOOL（TRUE:成功FALSE:失敗）

型
引数

HCRYPTHASH

I/O
IN

内容
検証するハッシュオブジェクトの
ハンドル

BYTE*

IN

署名データのバッファへのポイン
タ

DWORD

IN

署名データの長さ

HCRYPTKEY

IN

署名の検証に使用する公開鍵のハ
ンドル

LPCTSTRIN

ハッシュの概要についての NULL
ターミネート文字列
NULL を設定すること。

DWORD

IN

署名検証時のフラグ
0 を設定すること。

値
エラーコード NTE_BAD_FLAGS

内容
dwFlags に不正な値が設定されている。

NTE_BAD_HASH

hHash に不正な値が設定されている。

NTE_BAD_KEY

hPubKey に不正な値が設定されている。

NTE_BAD_SIGNATURE

署名の検証に失敗した。

NTE_BAD_UID

hProv に不正な値が設定されている。

NTE_NO_MEMORY

メモリが不足している。

２６

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

第３節

構造体仕様

（１） PUBLICKEYSTRUC
構造体名
概要

PUBLICKEYSTRUC

NO

変数名

1

bType

2

公開鍵の BLOB ヘッダを格納する構造体。
型

値

BYTE

備考

BLOB タイプ

PUBLICKEYBLOB を指定する。

bVersion BYTEBLOB バージョン

CUR_BLOB_VERSION を指定する。

3

reserved WORD

未使用

-

4

aiKeyAlg ALG_ID

アルゴリズム ID

CALG_RSA_KEYX

ま

た

は

CALG_RSA_SIGN を指定する。
（２） RSAPUBKEY
構造体名
概要

RSAPUBKEY
公開鍵の BLOB ヘッダを格納する構造体。

NO

変数名

型

値

備考

1

magic

DWORD

鍵のタイプ

RSA1(0x31415352)を指定する。

2

bitlenDWORD

鍵長1024(鍵長)または、2048(鍵長)を指定する。

3

pubexp

DWORD

public exponent

public exponent を指定する。

（３） Public-key BLOBs
構造体名
概要
NO
1
2

なし(構造体としては定義されていない)
公開鍵 BLOB

変数名型

publickeystruc PUBLICKEYSTRUC
rsapubkey

RSAPUBKEY

値

備考

PUBLICKEYSTRUC 構 PUBLICKEYSTRUC 構造体を指
造体

定する。

RSAPUBKEY 構造体

RSAPUBKEY 構造体を指定す
る。

3

BYTE

DWORD

Modulus２７

Modulus を指定する。

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

第４節

コーリングシーケンス｢第４章 第２節 実現可能な機能の一覧｣を実現するためのコーリングシーケンスを以下に示す。上位アプリケーションは、このコーリングシーケンスに沿って実装すること。
注意事項
・複数のコーリングシーケンスを並行して実行しないこと。
１つのシーケンスを開始したなら、そのシーケンスを完了してから次のシーケンスを開始
してください。
（１） 利用者証明書取得処理
CryptAcquireContext

鍵コンテナ生成phProv: ハンドル格納領域アドレス
pszContainer: NULL
pszProvider: CSP 名称
dwProvType: プロバイダタイプ
dwFlags: 0↓

CryptGetUserKey

利用者鍵ハンドル取得
hProv: CryptAcquireContext で取得したハンドル
dwKeySpec: AT_SIGNATURE
phUserKey: 利用者鍵ハンドル格納領域アドレス↓

CryptGetKeyParam

利用者証明書サイズ取得
hKey: 利用者鍵ハンドル
dwParam: KP_CERTIFICATE
pbData: NULL
pdwDataLen: 利用者証明書長格納領域アドレス
dwFlags: 0↓

CryptGetKeyParam

利用者証明書取得
hKey: 利用者鍵ハンドル
dwParam: KP_CERTIFICATE
pbData: 利用者証明書格納領域アドレス
pdwDataLen: 利用者証明書長格納領域アドレス
dwFlags: 0↓

CryptDestroyKey

利用者鍵ハンドル破棄
hKey: 破棄する鍵ハンドル
２８

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版↓
CryptReleaseContext

鍵コンテナ開放hProv: CryptAcquireContext で取得したハンドル
dwFlags: 0（２） 認証局の自己署名証明書取得処理
CryptAcquireContext

鍵コンテナ生成phProv: ハンドル格納領域アドレス
pszContainer: NULL
pszProvider: CSP 名称
dwProvType: プロバイダタイプ
dwFlags: CRYPT_VERIFYCONTEXT↓CryptGetProvParam

認証局の自己署名証明書サイズ取得
hProv: CryptAcquireContext で取得したハンドル
dwParam: PP_JPKI_CA_CERTIFICATE
pbData: NULL
pdwDataLen: 認証局の自己署名証明書長格納領域アドレス
dwFlags: 0↓

CryptGetProvParam

認証局の自己署名証明書取得
hProv: CryptAcquireContext で取得したハンドル
dwParam: PP_JPKI_CA_CERTIFICATE
pbData: 認証局の自己署名証明書格納領域アドレス
pdwDataLen: 認証局の自己署名証明書長格納領域アドレス
dwFlags: 0↓

CryptReleaseContext

鍵コンテナ開放hProv: CryptAcquireContext で取得したハンドル
dwFlags: 0（３） 署名生成処理(署名対象データを渡すパターン)*1
CryptAcquireContext

鍵コンテナ生成phProv: ハンドル格納領域アドレス*1

署名生成処理(署名対象データを渡すパターン)のコーリングシーケンスを実行することで、IC カード内の利用者証明書、署名対象データに対するハッシュ値および署名値を取得することができる。

２９

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
pszContainer: NULL
pszProvider: CSP 名称
dwProvType: プロバイダタイプ
dwFlags: 0↓
CryptGetUserKey

利用者鍵ハンドル取得
hProv: CryptAcquireContext で取得したハンドル
dwKeySpec: AT_SIGNATURE
phUserKey: 利用者鍵ハンドル格納領域アドレス↓

CryptGetKeyParam

利用者証明書サイズ取得
hKey: 利用者鍵ハンドル
dwParam: KP_CERTIFICATE
pbData: NULL
pdwDataLen: 利用者証明書長格納領域アドレス
dwFlags: 0↓

CryptGetKeyParam

利用者証明書取得
hKey: 利用者鍵ハンドル
dwParam: KP_CERTIFICATE
pbData: 利用者証明書格納領域アドレス
pdwDataLen: 利用者証明書長格納領域アドレス
dwFlags: 0↓

CryptDestroyKey

利用者鍵ハンドル破棄
hKey: 利用者鍵ハンドル↓

CryptCreateHash

ハッシュオブジェクト生成
hProv: CryptAcquireContext で取得したハンドル
ALG_ID: ア ル ゴ リ ズ ム ID(CALG_SHA1 ま た は
CALG_SHA256 のいずれかを署名方式に合わせて指定)
hKey: 0dwFlags: 0
phHash: ハッシュオブジェクトのハンドル格納領域
アドレス↓

CryptHashData

ハッシュ値計算
hHash: ハッシュオブジェクトのハンドル

３０

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
pbData: 署名対象データ
dwDataLen: 署名対象データ長
dwFlags: 0↓
CryptGetHashParam

ハッシュ値取得
hHash: ハッシュオブジェクトのハンドル
dwParam: HP_HASHVAL
pbData: NULL
pdwDataLen: ハッシュデータ長格納領域アドレス
dwFlags: 0↓

CryptGetHashParam

ハッシュ値取得
hHash: ハッシュオブジェクトのハンドル
dwParam: HP_HASHVAL
pbData: ハッシュデータ格納領域アドレス
pdwDataLen: ハッシュデータ長格納領域アドレス
dwFlags: 0↓

CryptSignHash

署名値長取得hHash: 署名対象ハッシュオブジェクトのハンドル
dwKeySpec: AT_SIGNATURE
sDescription: NULL
dwFlags: 0
pbSignature: NULL
pdwSigLen: 署名データ長格納領域アドレス↓

CryptSignHash

署名
hHash: 署名対象ハッシュオブジェクトのハンドル
dwKeySpec: AT_SIGNATURE
sDescription: NULL
dwFlags: 0
pbSignature: 署名データ格納領域アドレス
pdwSigLen: 署名データ長格納領域アドレス↓

CryptDestroyHash

ハッシュオブジェクト破棄
hHash: 破棄するハッシュオブジェクトハンドル↓

CryptReleaseContext

鍵コンテナ開放３１

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
hProv: CryptAcquireContext で取得したハンドル
dwFlags: 0（４） 署名生成処理(ハッシュ値を渡すパターン)*2
CryptAcquireContext

鍵コンテナ生成phProv: ハンドル格納領域アドレス
pszContainer: NULL
pszProvider: CSP 名称
dwProvType: プロバイダタイプ
dwFlags: 0↓

CryptGetUserKey

利用者鍵ハンドル取得
hProv: CryptAcquireContext で取得したハンドル
dwKeySpec: AT_SIGNATURE
phUserKey: 利用者鍵ハンドル格納領域アドレス↓

CryptGetKeyParam

利用者証明書サイズ取得
hKey: 利用者鍵ハンドル
dwParam: KP_CERTIFICATE
pbData: NULL
pdwDataLen: 利用者証明書長格納領域アドレス
dwFlags: 0↓

CryptGetKeyParam

利用者証明書取得
hKey: 利用者鍵ハンドル
dwParam: KP_CERTIFICATE
pbData: 利用者証明書格納領域アドレス
pdwDataLen: 利用者証明書長格納領域アドレス
dwFlags: 0↓

CryptDestroyKey

利用者鍵ハンドル破棄
hKey: 利用者鍵ハンドル↓

CryptCreateHash

ハッシュオブジェクト生成
hProv: CryptAcquireContext で取得したハンドル
ALG_ID: ア ル ゴ リ ズ ム ID(CALG_SHA1 ま た は*2

署名生成処理(ハッシュ値を渡すパターン)のコーリングシーケンスを実行することで、IC カード内の利用者証明書、ハッシ
ュ値に対する署名値を取得することができる。

３２

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
CALG_SHA256 のいずれかを署名方式に合わせて指定)
hKey: 0dwFlags: 0
phHash: ハッシュオブジェクトのハンドル格納領域
アドレス↓
CryptSetHashParam

ハッシュ値設定
hHash: ハッシュオブジェクトのハンドル
dwParam: HP_HASHVAL
pbData: ハッシュ値の格納領域アドレス
dwFlags: 0↓

CryptSignHash

署名値長取得hHash: 署名対象ハッシュオブジェクトのハンドル
dwKeySpec: AT_SIGNATURE
sDescription: NULL
dwFlags: 0
pbSignature: NULL
pdwSigLen: 署名データ長格納領域アドレス↓

CryptSignHash

署名
hHash: 署名対象ハッシュオブジェクトのハンドル
dwKeySpec: AT_SIGNATURE
sDescription: NULL
dwFlags: 0
pbSignature: 署名データ格納領域アドレス
pdwSigLen: 署名データ長格納領域アドレス↓

CryptDestroyHash

ハッシュオブジェクト破棄
hHash: 破棄するハッシュオブジェクトハンドル↓

CryptReleaseContext

鍵コンテナ開放hProv: CryptAcquireContext で取得したハンドル
dwFlags: 0（５） 署名検証処理(検証対象データを渡すパターン)
CryptAcquireContext

鍵コンテナ生成phProv: ハンドル格納領域アドレス

３３

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
pszContainer: NULL
pszProvider: CSP 名称
dwProvType: プロバイダタイプ
dwFlags: CRYPT_VERIFYCONTEXT↓CertCreateCertificateContext

証明書コンテキスト生成(本 CSP の対象外。OS 標準機能 dwCertEncodingType: X509_ASN_ENCODINGを使用する。)

pbCertEncoded: X.509 DER 形式の証明書データ
cbCertEncoded: 証明書長↓CryptImportPublicKeyInfo

公開鍵インポート(CryptImportKey がこの関数のhCryptProv: CryptAcquireContext で取得したハンド内部でコールされる)

ル
dwCertEncodingType: X509_ASN_ENCODING
pInfo: 公開鍵情報
CertCreateCertificateContext の戻り値を pcCert とした時、&pcCert->pCertInfo->SubjectPublicKeyInfo
phKey: 公開鍵ハンドル格納領域アドレス↓

CertFreeCertificateContext

証明書コンテキスト破棄(本 CSP の対象外。OS 標準機能

pCertContext: 破棄する証明書コンテキストを使用する。)↓
CryptCreateHash

ハッシュオブジェクト生成
hProv: CryptAcquireContext で取得したハンドル
ALG_ID: ア ル ゴ リ ズ ム ID(CALG_SHA1 ま た は
CALG_SHA256 のいずれかを署名方式に合わせて指定)
hKey: 0dwFlags: 0
phHash: ハッシュオブジェクトのハンドル格納領域
アドレス↓

CryptHashData

ハッシュ値計算
hHash: ハッシュオブジェクトのハンドル
pbdata: ハッシュ値計算対象データ
dwDataLen: ハッシュ値計算対象データ長
dwFlags: 0↓

３４

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
CryptVerifySignature

署名検証
hHash: ハッシュオブジェクトのハンドル
pbSignature: 署名データ格納領域のアドレス
dwSigLen: 署名データ長
hPubKey: 公開鍵ハンドル
sDescription: NULL
dwFlags: 0↓

CryptDestroyHash

ハッシュオブジェクト破棄
hHash: 破棄するハッシュオブジェクトハンドル↓

CryptDestroyKey

公開鍵破棄
hKey: 破棄する公開鍵ハンドル↓

CryptReleaseContext

鍵コンテナ開放hProv: CryptAcquireContext で取得したハンドル
dwFlags: 0（６） 署名検証処理(ハッシュ値を渡すパターン)
CryptAcquireContext

鍵コンテナ生成phProv: ハンドル格納領域アドレス
pszContainer: NULL
pszProvider: CSP 名称
dwProvType: プロバイダタイプ
dwFlags: CRYPT_VERIFYCONTEXT↓CertCreateCertificateContext

証明書コンテキスト生成(本 CSP の対象外。OS 標準機能

dwCertEncodingType: X509_ASN_ENCODINGを使用する。)

pbCertEncoded: X.509 DER 形式の証明書データ
cbCertEncoded: 証明書長↓CryptImportPublicKeyInfo

公開鍵インポート
hCryptProv: CryptAcquireContext で取得したハンドル
dwCertEncodingType: X509_ASN_ENCODING
pInfo: 公開鍵情報
CertCreateCertificateContext の戻り値を pcCert とした時、&pcCert->pCertInfo->SubjectPublicKeyInfo

３５

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版
phKey: 公開鍵ハンドル格納領域アドレス↓
CertFreeCertificateContext

証明書コンテキスト破棄(本 CSP の対象外。OS 標準機能 pCertContext: 破棄する証明書コンテキストを使用する。)↓
CryptCreateHash

ハッシュオブジェクト生成
hProv: CryptAcquireContext で取得したハンドル
ALG_ID: ア ル ゴ リ ズ ム ID(CALG_SHA1 ま た は
CALG_SHA256 のいずれかを署名方式に合わせて指定)
hKey: 0dwFlags: 0
phHash: ハッシュオブジェクトのハンドル格納領域
アドレス↓

CryptSetHashParam

ハッシュ値設定
hHash: ハッシュオブジェクトのハンドル
dwParam: HP_HASHVAL
pbData: ハッシュ値の格納領域アドレス
dwFlags: 0↓

CryptVerifySignature

署名検証
hHash: ハッシュオブジェクトのハンドル
pbSignature: 署名データ格納領域のアドレス
dwSigLen: 署名データ長
hPubKey: 公開鍵ハンドル
sDescription: NULL
dwFlags: 0↓

CryptDestroyHash

ハッシュオブジェクト破棄
hHash: 破棄するハッシュオブジェクトハンドル↓

CryptDestroyKey

公開鍵破棄
hKey: 破棄する公開鍵ハンドル↓

CryptReleaseContext

鍵コンテナ開放hProv: CryptAcquireContext で取得したハンドル
dwFlags: 0

３６

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版（７） 繰り返し署名生成処理(署名対象データを渡すパターン)｢（３）署名生成処理(署名対象データを渡すパターン)｣の網掛け部分を署名対象データの個数分だけ繰り返して呼び出す。
（８） 繰り返し署名生成処理(ハッシュ値を渡すパターン)｢（４）署名生成処理(ハッシュ値を渡すパターン)｣の網掛け部分をハッシュ値の個数分だけ繰り返して呼び出す。
（９） 繰り返し署名検証処理(検証対象データを渡すパターン)｢（５）署名検証処理(検証対象データを渡すパターン)｣の網掛け部分を検証対象データの個数分だけ繰り返して呼び出す。(但し、すべての電子署名が同一の秘密鍵で生成された場合とする。)（１０） 繰り返し署名検証処理(ハッシュ値を渡すパターン)｢（６）署名検証処理(ハッシュ値を渡すパターン)｣の網掛け部分をハッシュ値の個数分だけ繰り返して呼び出す。(但し、すべての電子署名が同一の秘密鍵で生成された場合とする。)

３７

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

第６章
第１節

画面仕様
画面一覧

NO

機能名

画面名

1

ログイン機能住基カード署名用パス

住基カードの公的個人認証

ワード入力画面

ワード入力要求を行う。

個人番号カード署名用

個人番号カードの公的個人認証

パスワード入力画面

パスワード入力要求を行う。

個人番号カード利用者

個人番号カードの公的個人認証

証明用パスワード入力

証明用パスワード入力要求を行う。

2
3

機能概要

画面

３８

署名用パス
署名用
利用者

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版

第２節

画面仕様詳細（１） 住基カード署名用パスワード入力画面
画面名
概要

住基カード署名用パスワード入力画面
住基カードの公的個人認証 署名用パスワード入力を要求し、入力されたパスワードで公的個人認証サービスカード AP にログインを行う。
画面レイアウト④①②③

画面項目説明NO

項目名

概要① パスワード

住基カードの公的個人認証

署名用パスワードを入力する。

② OK

入力したパスワードで IC カードにログインを行う。
ログインできない場合は以下のメッセージを表示する。
・ パスワードが誤っている場合→ ｢パスワードが違います。｣
・ ロックしている場合→ ｢パスワードの確認に失敗しました。｣
・ ログイン時に予期しないエラーが発生した場合→ ｢予期しないエラーが発生しました。(エラーコード:
XXXXX)｣③ キャンセル

パスワード入力を行わずにダイアログを閉じる。

④ ×

パスワード入力を行わずにダイアログを閉じる。

３９

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版（２） 個人番号カード署名用パスワード入力画面
画面名
概要

個人番号カード署名用パスワード入力画面
個人番号カードの公的個人認証 署名用パスワード入力を要求し、入力された署名用パスワードで公的個人認証サービスカード AP にログインを行う。
画面レイアウト
⑤

①
②
③

④

画面項目説明NO

項目名① パスワード

概要
個人番号カードの公的個人認証

署名用パスワードを入力する。
② パスワード表示切 入力したパスワードの表示/非表示を切替える。
替③ OK

入力した署名用パスワードで IC カードにログインを行う。
ログインできない場合は以下のメッセージをパスワード認証失敗ダイアログに表示する。
・ パスワードが誤っている場合かつ残回数が無制限の場合→ ｢パスワードが違います。｣
・ パスワードが誤っている場合かつ残回数が有限の場合→ ｢パスワードが違います。(残り回数: N 回)｣※N：1～4・ ロックしている場合→ ｢パスワードの確認に失敗しました。｣
・ ログイン時に予期しないエラーが発生した場合→ ｢予期しないエラーが発生しました。(エラーコード:
XXXXX)｣④ キャンセル

署名用パスワード入力を行わずにダイアログを閉じる。

⑤ ×

署名用パスワード入力を行わずにダイアログを閉じる。
４０

API 仕様書【カード AP ライブラリ CryptoAPI 編】第 4.6 版（３） 個人番号カード利用者証明用パスワード入力画面
画面名
概要

個人番号カード利用者証明用パスワード入力画面
個人番号カードの公的個人認証 利用者証明用パスワード入力を要求し、入力された利用者証明用パスワードで公的個人認証サービスカード AP にログインを行う。
画面レイアウト
⑤

①
②
③

④

画面項目説明
NO
①

項目名
パスワード

概要
個人番号カードの公的個人認証

利用者証明用パスワードを入力する。
②

パスワード表示切 入力したパスワードの表示/非表示を切替える。
替

③

OK

入力した利用者証明用パスワードで IC カードにログインを行う。
ログインできない場合は以下のメッセージをパスワード認証失敗ダ
イアログに表示する。
・ パスワードが誤っている場合かつ残回数が無制限の場合→ ｢パスワードが違います。｣
・ パスワードが誤っている場合かつ残回数が有限の場合→ ｢パスワードが違います。(残り回数: N 回)｣※N：1～2・ ロックしている場合→ ｢パスワードの確認に失敗しました。｣
・ ログイン時に予期しないエラーが発生した場合→ ｢予期しないエラーが発生しました。(エラーコード: XXXXX)｣

④

キャンセル

利用者証明用パスワード入力を行わずにダイアログを閉じる。

⑤

×

利用者証明用パスワード入力を行わずにダイアログを閉じる。

４１

禁・無断転載
公的個人認証サービス
利用者クライアントソフト API 仕様書【カード AP ライブラリ CryptoAPI 編】
第 4.6 版

（注意事項）※利用者クライアントソフトの著作権は、総務省、地方公共団体情報システム機
構が保有しており、国際著作権条約及び日本国の著作権関連法令によって保護されています。
※利用者クライアントソフトの利用に当たっては、次に掲げる行為を禁止します。
（1） 利用者クライアントソフトを電子署名に係る地方公共団体情報システム
機構の認証業務に関する法律において制限されている電子証明書の用途で利用すること。
（2） 利用者クライアントソフトに対し、総務省、地方公共団体情報システム
機構に許可なく改造等を行うこと。
※総務省、地方公共団体情報システム機構は、利用者が利用者クライアントソフトを利用したことにより発生した利用者の損害及び利用者が第三者に与えた損害について、一切の責任を負いません。
※商標については次の通りです。
（1） Microsoft Windows および Microsoft Edge は、米国 Microsoft
Corporation の米国およびその他の国における登録商標または商標です。
（2） Android は、Google Inc.の米国およびその他の国における登録商標です。
（3） その他、記載されている会社名、製品名等は、各社の登録商標または商標です。