公的個人認証サービス

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

第 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 日

MacOS 対応に伴い、第２章

ドキュメント体系、第３章

動作環境、第４章

ソフトウェア構成図、第６

章
2.2 版

平成 19 年 4 月 10 日

第１節

第１節

ライブラリのロード方法

表 ３-１ 動作環境

を変更

を変更

表 ３-１ 動作環境
2.3 版

平成 19 年 10 月 4 日

・ プラットフォームに WindowsVista、MacOS X 10.4.9、
MacOS X 10.4.10 を追加
表 ３-１ 動作環境
・ プラットフォームに WindowsVista ServicePack1、WindowsXP ServicePack3、MacOS X 10.5.4、MacOS X

2.4 版

平成 20 年 10 月 10 日

10.5.3、MacOS X 10.5.2、MacOS X 10.5.1、MacOS X
10.5、MacOS X 10.4.11 を追加
・ Web ブラウザに Internet Explorer6.0 ServicePack3
を追加

版数

変更日付

変更内容
図２−１ ドキュメント体系図エラー! 参照元が見つかりません。に「JavaDoc JPKICryptJNI(64bit)」を追加
表 ３-１ 動作環境
・ 表 ３-１ 動作環境(Windows)、表 ３-２ 動作環境
(MacOS)、表 ３-３ 動作環境(IC カード) に分割し、マトリクス形式の記述に変更。
表 ３-１ 動作環境(Windows)
・ OS に Windows 7(32/64 bit) ， WindowsVista

2.5 版

平成 23 年 04 月 01 日

ServicePack2 を追加。
・ Web ブラウザに Internet Explorer8.0 を追加。
表 ３-２ 動作環境(MacOS)・ OS に MacOS X 10.6.4，MacOS X 10.5.6，MacOS X 10.5.5を追加。
・ Web ブラウザに Safari 3.2, Safari 5.0 を追加。
図 ４-１ ソフトウェア構成図（Windows 対応版）を変更
第６章

第１節

ライブラリのロード方法に 64bit 版に関する記述を追加
・第３章

動作環境

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

を 削 除 、 Windows8(32/64bit) 、Windows8.1(32/64bit)を追加
表 ３-２ 動作環境(MacOS)

MacOS X 10.4.X, 10.5.X,

10.6.X を削除、MacOS X 10.7.5, OS X 10.8.4 を追加
・第５章

第１節

sha-256 に対応する API の記載を追

加
・第５章
2.6 版

第３節 （８）C̲GetMechanismList の備考に

平成 25 年 12 月 01 日 アルゴリズム CKM̲SHA256 を追加。
・第５章第３節 （９）C̲GetMechanismInfo の備考にtype = CKM̲SHA256 の場合を追加。
・第５章

第３節

（ ２ ２ ） C̲DigestInit の 引 数

CK̲MECHANISM̲PTR に アルゴリズム CKM̲SHA256 を追加。
・第５章

第６節 （６）署名検証処理の C̲DigestInitに指定するアルゴリズム CKM̲SHA256 を追加。
・第６章

第１節

\JPKI を削除。

ロード情報定義ファイル例のパス

版数

変更日付

変更内容
全体

「地方公共団体情報システム機構」への事業承継により、組織名称を変更
3.0 版

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

表 ３-１ 動作環境(Windows)で Windows XP

を削除、Windows7(32/64bit)の Web ブラウザを IE10.0
から IE11.0 に変更、Windows 8(32/64bit)を削除、Windows 8.1 を Windows 8.1 update に変更
・第３章

表 ３-１ 動作環境(Windows)で Web ブラウ

ザの Safari6.0 を 6.1 に変更、OS X 10.8.4 を OS X 10.8.5に変更し、Web ブラウザの Safari6.0 を Safari6.1 に変更、OS X 10.9.3(64bit)、Web ブラウザに Safari7.0 を
追加
・第５章

第１節

表 ５-１ サポート API 一覧の注釈に No21 を追加し、SHA256 による署名生成および署名検証について追記
・第５章

第６節（４）のタイトルに「((署名対象

データを渡すパターン))」を追加
3.1 版

平成 26 年 07 月 01 日・第５章

第６節 （４）C̲DigestInit の pMechanismに SHA256 についての記載を追加
・第５章第６節 （５）署名生成処理(ハッシュ値を渡すパターン)のシーケンスを追加
・第５章

第６節 （６）のタイトルに「(検証対象データを渡すパターン)」を追加
・第５章第６節 （７）に署名検証処理(ハッシュ値を渡すパターン)のシーケンスを追加
・第５章

第６節 （８）のタイトルに「(署名対象データを渡すパターン)」を追加
・第５章第６節 （９）繰り返し署名生成処理(ハッシュ値を渡すパターン)の説明を追加
・第５章第６節 （１０）のタイトルに「(検証対象

データをわたすパターン)」を追加
・第５章第６節 （１１）に繰り返し署名検証処理(ハッシュ値を渡すパターン)を追加

版数

変更日付

変更内容
番号制度対応に伴い、以下を修正。
・第１章 第 1 節に用語の定義を追加。
・第２章のドキュメント体系を修正。

4.0 版

平成 27 年 6 月 30 日

・第３章の動作環境を修正。
・第４章の機能仕様を修正。
・第５章の API 仕様を修正。
・第４章 第１節のソフトウェア構成図(MacOS 対応版)を修正。
・第３章システム概要 動作環境

4.0.1 版

平成 28 年 10 月 26 日

更新プログラムに係る注釈※3、4 の追加
・文末

注意事項の利用用途の文言修正

その他、図の整形及び誤記等の文言修正
PC 接続機能追加対応に伴い、以下を修正。
・第１章

4.1 版

平成 28 年 11 月 30 日

第１節の「用語の定義」に以下を追加。



PC/SC



IC カードリーダライタ



挿入



NFC



Bluetooth・第２章

ドキュメント体系図に Android 版を追加

・第３章

表 3-1 および表 3-2 に PC 接続機能対応可否

追加。
・第３章

表 3-1 に Windows 10(32/64bit)を追加。

・第３章

表 3-3 動作環境(共通)を表 3-3 動作環境(ICカード)、第 1 節 PC/SC 対応 IC カードリーダライタ、
第 2 節 Android 端末に分割。
・第４章 第１節 ソフトウェア構成図に Bluetooth 通
信を追加。

版数

変更日付

変更内容
Java9 対応に伴い、以下を修正。
・第２章 ドキュメント体系図を改訂。
・第３章 表 ３-１の OS から Windows Vista(32bit)を削除。
・第３章 表 ３-１の OS から Windows 8(32bit)を削除。
・第３章 表 ３-１の OS から Windows 8(64bit)を削除。
・第３章 表 ３-１の JavaVM に JRE9 を追加。

4.2 版

平成 29 年 07 月 31 日

・第３章 表 ３-２の OS から OS X 10.8, 10.9 を削除。
・第３章 表 ３-２の OS に OS X 10.11, macOS v10.12を追加。
・第３章 表 ３-２の JavaVM に JRE9 を追加。
・※２に説明文を追記。
・第３章 表 ３-５の【PC 接続の場合】に Android 6.0.1、7.0 を追加。
・第３章 表 ３-５の【Android 単体で利用する場合】に Android 6.0.1、7.0 を追加。
・第３章 表 ３-２の OS から OS X 10.11 を削除。

4.3 版

平成 31 年 03 月 31 日

・第３章 表 ３-２の OS に macOS v10.13 を追加。
・第３章 表 ３-５の【PC 接続の場合】、【Android 単体で利用する場合】に Android 8.0 を追加。

版数

変更日付

変更内容
MacOS 版における開発言語(Java)変更対応に伴い、以下
を修正。
・第３章

表３-２を修正。

macOS v10.12、macOS v10.13 を削除。
macOS v10.14、macOS v10.15（Web ブラウザは Safari
13）を追加。
・第４章 第１節 図４-２ ソフトウェア構成図(MacOS対応版)から個人認証サービス AP C 言語 I/F から個人
認証サービス AP JavaI/F の呼び出しを削除。
MacOS 版における住基カードサポート廃止に伴い、以下を修正。
・第２章 ドキュメント体系図から「API 仕様書
X

Mac OS

C 言語インターフェース編」を削除。

・第３章 表３-２ ※２の注釈を削除。
・第３章 表３-３ MacOS 版を使用する場合は個人番号
カードのみ対応である旨を追加。
・第４章 第１節 図４-２ ソフトウェア構成図(MacOS
4.4 版

令和 2 年 3 月 31 日対応版)から Keychain Services 及び CSSM を削除、。
・第４章 第２節 表４‐２から住基カードの記載を削除。
・第６章 第１節の「path」の指定内容に住基カードはWindows 版のみ使用可能である旨の記述を追加
・第６章 第１節の MacOS 版の場合のロード情報定義ファイルの例から「path」を削除。
MacOS 版における SHA-1 サポート廃止に伴い、以下を修正。
・第５章 第２節 （８）C̲GetMechanismList の備考の
CKM̲SHA̲1 の記載に Windows 版のみ取得可能である旨の注釈を追加。
・第５章 第２節 （９）C̲GetMechanismInfo の備考に
CKM̲SHA̲1 は Windows 版のみ設定可能である旨の注釈を
追加。
・第５章

第２節

（ ２ ２ ） C̲DigestInit の

CK̲MECHANISM̲PTR の指定内容の CKM̲SHA̲1 に Windows版のみ指定可能である旨の注釈を追加。

版数

変更日付

変更内容
ブラウザ対応版、iOS 版のリリースに伴い、以下を修正。
・第２章

ドキュメント体系 「利用者クライアントソ

フト 機能概要説明書 ブラウザ対応編」を追加。
・第２章

ドキュメント体系「API 仕様書 カード AP

ライブラリ ブラウザインターフェース編」を追加。
・第２章

ドキュメント体系 「利用者クライアントソ

フト 機能概要説明書(iOS 版)」を追加。
4.4 版

令和 2 年 3 月 31 日

・第２章

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

Framework 編」を追加。
・第３章

第２節

動作環境に Android9.0、10.0 を追加。
Windows 7 サポート終了に伴い、以下を修正。
・第３章

表３-１を修正。

Windows 7(32bit)、Windows 7(64bit)および※3 を削除。
「日本工業規格 X560-1」を「ISO/IEC 8825-1」に名称変更
・第１章 用語の定義
ブラウザ対応版(Android)のリリースに伴い、以下を修
正4.5 版

令和 3 年 3 月 31 日

・第２章

ドキュメント体系

・エラー! 参照元が見つかりません。

動作環境

パスワードロックまでの残回数取得関数の追加に伴い、以下を修正・第５章第２節、第５章第４節を追加
・第５章第６節を修正、追記
・第６章第２節を追加
PKCS#11 Ver2.2 仕様書の参照先リンク切れに伴い、以4.5 版

令和 3 年 3 月 31 日

下を修正
・第５章第５節

4.5.1 版

令和 3 年 3 月 31 日

4.6 版

令和 6 年 4 月 15 日

構造体仕様

InstallShield2022 対応に伴い、第３章

動作環境の記載を修正
MacOS 版 Ver3.7 のリリースに伴い、第３章の記載を修正動作環境

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
−

目次

−

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

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

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

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

第６章 その他 ......................................................... ４９
第１節 ライブラリのロード方法 .................................................................................. ４９
第２節 拡張 API の呼出方法......................................................................................... ５１iAPI 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版

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

証明書取得機能

電子署名生成機能

電子署名検証機能

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

１

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

第１節 用語の定義
表 １-１ 用語の定義
項番
1

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

電子証明書

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

3

証明書

電子証明書と同義。

4

利用者証明書

公的個人認証サービスで発行した利用者の証明書。
本書では以下の電子証明書を指す。
・住基カードに格納された署名用電子証明書
・個人番号カードに格納された署名用電子証明書
・個人番号カードに格納された利用者証明用電子証明書

5

利用者秘密鍵

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

6

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

本書では以下の電子証明書を指す。
・住基カードに格納された都道府県知事の自己署名証明書
・個人番号カードに格納された署名用認証局の自己署名証明書
・個人番号カードに格納された利用者証明用認証局の自己署名証明書

7

PC/SC

8

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

Personal Computer/Smart Card の略。
・PC/SC 対応 IC カードリーダライタ
・Android 端末

9

挿入

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

10

NFC

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

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
項番

用語・略号

説明

11

Bluetooth

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

12

拡張 APIRSA Laboratories が標準提供している PKCS#11 ライブラリの API ではなく、機能拡充を目的として公的個人認証サービスが独自に追加した
API のこと。

３

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

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

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 ライブラリ PKCS#11 編】第 4.6 版

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

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

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

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

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

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

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

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

５

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

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

OS(※1)Web ブラウザ

JavaVM(※1)

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

JRE8.0

可否(※3)

Windows 10 Home/Pro (32bit/64bit)

Edge

○

○

Windows 11 Home/Pro

Edge

○

○

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

６

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

表 ３-２ 動作環境(MacOS)

OS(※1)Web ブラウザ

JavaVM(※1)

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

JRE8.0(※2)

macOS 13 Ventura

Safari 16○

×macOS 14 Sonoma

Safari 17○

×※1 本仕様書で定めるバージョンの開発時点の環境。最新の動作環境の情報は、JPKI ポータル
サイトに掲載するものとする。
また、最新の動作環境に掲載された OS、Web ブラウザ、JavaVM 以外を使用した場合の不具合等に関するお問い合わせは、サポート対象外とする。
※2 PC 接続機能については「利用者クライアントソフト 機能概要説明書 第３章 第３節 PC 接
続機能について」を参照。
IC カードの動作環境は以下の通りとする。

表 ３-３ 動作環境(IC カード)項目
IC カード条件
住基カードまたは個人番号カードであること。
※PC 接続機能を使用する場合は個人番号カードのみ対応。
※MacOS 版を使用する場合は個人番号カードのみ対応。

７

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

第１節 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 ライブラリ PKCS#11 編】第 4.6 版

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

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

※ 最新の「個人番号カード対応適合性検証済み Android 端末一覧」の情報は、JPKI ポータルサ
イトに掲載するものとする。
また、最新の動作環境に掲載された OS 以外を使用した場合の不具合等に関するお問い合わ
せは、サポート対象外とする。

９

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

第４章 機能仕様
第１節 ソフトウェア構成図
本仕様書では、JPKI 利用者ソフトのうち、下図の太枠に示すカード AP ライブラリ(PKCS#11)の仕様をまとめる。
＜Windows 対応版＞
上位アプリケーション
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 の略

図 ４-１ ソフトウェア構成図（Windows 対応版）

１０

オンライン窓口
サービス

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版＜MacOS 対応版＞
上位アプリケーション
PKCS#11 API

JavaI/F

JavaI/F

C 言語 I/F

JPKI 利用者ソフト
個人認証サービス AP
C 言語 I/F
個人認証サービス AP
JavaI/F
カード AP ライブラリ
カード AP ライブラリ
JavaI/F
PKCS#11
カード AP ライブラリ
カード I/F
証明書
検証要求

Smart Card Services API

オンライン窓口
処理要求

Smart Card Services (PC/SC)
PC/SC リーダライタドライバ
カードコマンド
PC/SC リーダライタ
カードコマンド
公的個人認証サービスカードアプリケーション

官職証明書検証サービス

図 ４-２ ソフトウェア構成図 (MacOS 対応版)

１１

オンライン窓口
サービス

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

第２節 ライブラリの構成
カード AP ライブラリ(PKCS#11)は、利用する IC カード、証明書の種別によってロードするラ
イブラリを切り替える必要がある。
IC カード、証明書の種別とライブラリの対応を表 ４-１、表 ４-２に示す。
※パス定義項目名の記載内容は、ロード情報定義ファイルでライブラリの絶対パスを定義した項目名を表す。詳細は「第６章第１節ライブラリのロード方法」を参照。

※ロードするライブラリは１つのみとすること。利用する IC カードや証明書の種別を切り替える必要がある場合は、それまで使用していたライブラリを解放した上で新たなライブラ
リをロードすること。

表 ４-１ IC カード、証明書の種別とライブラリの対応（Windows 対応版）
NO

IC

証明書

ロードするライブラリ

カード

1

住基

ライブラリ名称

署名用

カード
2

個人番号

Windows

Windows(32bit)(64bit)path

path64

pathSign

pathSign64

pathAuth

pathAuth64

PKCS#11 ライブラリ
署名用

個人番号カ

個人番号カード署名対応

ード対応

PKCS#11 ライブラリ

利用者

PKCS#11

個人番号カード利用者証明

証明用

ライブラリ

対応 PKCS#11 ライブラリカード
3

住基カード対応

パス定義項目名

表 ４-２ IC カード、証明書の種別とライブラリの対応（MacOS 対応版）
NO

IC

証明書

ロードするライブラリ

カード

ライブラリ名称

パス定義項目名
MacOS

1

個人番号

署名用

個人番号カ

個人番号カード署名対応

ード対応

PKCS#11 ライブラリ

利用者

PKCS#11

個人番号カード利用者証明

証明用

ライブラリ

対応 PKCS#11 ライブラリ

カード
2

１２

pathSign
pathAuthAPI 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版

第３節 実現可能な機能の一覧
カード AP ライブラリ(PKCS#11)で実現可能な機能の一覧を表 ４-３に示す。
表 ４-３ 実現可能な機能の一覧
NO
1

機能
証明書取得

概要
IC カードに格納された電子証明書(利用者証明
書、認証局の自己署名証明書)を取得する。

2

署名生成

署名対象データからハッシュ値を計算し、IC カー
ドに格納された利用者秘密鍵を使用して電子署名を生成する。

3

署名検証

検証対象データからハッシュ値を計算し、ハッシ
ュ値、電子署名、公開鍵を使用して電子署名を検証する。

4

繰り返し署名生成NO2 の処理を繰り返し実行し、複数の署名対象データに対する電子署名を生成する。

5

繰り返し署名検証

NO3 の処理を繰り返し実行し、複数の電子署名を
検証する。

１３

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

第５章 API 仕様
第１節 サポート API 一覧
カード AP ライブラリ(PKCS#11)のサポート API の一覧を表 ５-１に示す。
表 ５-１ サポート API 一覧
NO

API 名

概要

1

C̲GetFunctionList

関数ポインタリストを取得する。

2

C̲Initialize

PKCS#11 ライブラリを初期化する。

3

C̲Finalize

PKCS#11 ライブラリを終了する。

4

C̲GetInfo

ライブラリ情報を取得する。

5

C̲GetSlotList

スロットリストを取得する。

6

C̲GetSlotInfo

スロット情報を取得する。

7

C̲GetTokenInfo

トークン情報を取得する。

8

C̲GetMechanismList

サポートメカニズム（アルゴリズム）を取得する。

9C̲GetMechanismInfo

メカニズム（アルゴリズム）情報を返す。

10

C̲OpenSession

セッションを確立する。

11

C̲CloseSession

セッションを切断する。

12

C̲CloseAllSessions

すべてのセッションを切断する。

13

C̲GetSessionInfo

セッション状態を取得する。

14

C̲Login

トークンをログイン状態にする。

15

C̲Logout

トークンをログアウト状態にする。

16

C̲FindObjectsInit

オブジェクトの検索を開始する。

17

C̲FindObjects

オブジェクトの検索を行う。

18

C̲FindObjectsFinal

オブジェクトの検索を終了する。

19

C̲GetAttributeValue

オブジェクトの属性値を取得する。

20

C̲SignInit

署名処理を初期化する。

21

C̲Sign

データに署名を行う。

22

C̲DigestInit

ダイジェスト作成を開始する。

23

C̲DigestUpdate

ダイジェストを作成する。

24

C̲DigestFinal

ダイジェスト作成を終了する。

25

C̲VerifyInit

署名検証を開始する。

26

C̲Verify

署名値を検証する。

27

C̲CreateObject

公開鍵オブジェクトを作成する。

28

C̲DestroyObject

公開鍵オブジェクトを破棄する。

※NO.8,9,20,21,22,23,24,25,26 について、sha-256 の利用者証明書による署名生成および
署名検証、sha-256 の官職証明書・職責証明書による署名検証に対応済み。

１４

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

第２節 拡張 API 一覧
カード AP ライブラリ(PKCS#11)の拡張 API の一覧を表 ５-２拡張 API 一覧に示す。
この拡張 API については住基カードは提供対象外となる。
表 ５-２拡張 API 一覧
NO
1

API 名
JPKIGetRemain

概要
署名用または利用者証明用電子証明書のパスワー
ドロックまでの残回数を取得する。

１５

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

第３節 サポート API 仕様詳細
（１）C̲GetFunctionList
API 名C̲GetFunctionList

概要

関数ポインタリストを取得する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲GetFunctionList)(ーフェース

CK̲FUNCTION̲LIST̲PTR̲PTR

ppFunctionList);
戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

I/O

CK̲FUNCTION̲LIST̲PTR̲PTR OUT

内容
関数アドレスリストポインタ（２）C̲Initialize
API 名C̲Initialize

概要

PKCS#11 ライブラリを初期化する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲Initialize)(ーフェース

CK̲VOID̲PTR pReserved);

戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

I/O

CK̲VOID̲PTR

IN

内容
NULL ポインタを指定（３）C̲Finalize
API 名C̲Finalize

概要

PKCS#11 ライブラリを終了する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲Finalize)(ーフェース

CK̲VOID̲PTR pReserved);

戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

CK̲VOID̲PTR

I/O
IN

内容
NULL ポインタを指定（４）C̲GetInfo
API 名C̲GetInfo

概要

ライブラリ情報を取得する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲GetInfo)(ーフェース

CK̲INFO̲PTR pInfo);

１６

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

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）型

I/O
IN/OUT

内容

引数

CK̲INFO̲PTR

ライブラリ情報ポインタ

備考

取得可能なライブラリ情報は以下の通り。
CK̲INFO::cryptokiVersion: PKCS11 規格バージョン：2.2
CK̲INFO::manufacturerID: ライブラリ製造者名：「JPKI」CK̲INFO::description: ライブラリ記述文：「JPKI PKCS#11」
CK̲INFO::libraryVersion: ライブラリバージョン:1.0（５）C̲GetSlotList
API 名C̲GetSlotList

概要

スロットリストを取得する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲GetSlotList)(ーフェース

CK̲BBOOL

tokenPresent,

CK̲SLOT̲ID̲PTR pSlotList,
CK̲ULONG̲PTR

pulCount);
戻り値

CK̲RV (CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗)

型
引数

I/O

CK̲BBOOLIN

内容
TRUE: カード有りのスロットリス
トを返す
FALSE: 接続されているすべてのスロットリストを返す

CK̲SLOT̲ID̲PTR

IN/OUT

スロット ID リストポインタ

CK̲ULONG̲PTR

IN/OUT

スロット ID リスト件数（６）C̲GetSlotInfo
API 名C̲GetSlotInfo

概要

スロット情報を取得する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲GetSlotInfo)(ーフェース

CK̲SLOT̲ID

slotID,CK̲SLOT̲INFO̲PTR pInfo);
戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

１７

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

型
引数
備考

I/O

内容

CK̲SLOT̲ID

IN

スロット ID

CK̲SLOT̲INFO̲PTR

IN/OUT

スロット情報ポインタ

取得可能なスロット情報は以下の通り。
CK̲SLOT̲INFO::hardwareVersion:
スロットハードウェアバージョン: 0.0
CK̲SLOT̲INFO::firmwareVersion:
スロットファームウェアバージョン: 0.0
CK̲SLOT̲INFO::slotDescription:
スロット記述文: IC カードリーダライタ名称（※）※Android 端末の場合、IC カードリーダライタ名称は Shift̲JIS コ
ードで規定されている文字のみ使用できるものとする。
CK̲SLOT̲INFO::manufacturerID:
スロット製造者名: なし（0 バイトの文字列）
CK̲SLOT̲INFO::flags:
カード有無（７）C̲GetTokenInfo
API 名C̲GetTokenInfo

概要

トークン情報を取得する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲GetTokenInfo)(ーフェース

CK̲SLOT̲ID

slotID,

CK̲TOKEN̲INFO̲PTR pInfo);
戻り値

CK̲RV (CKR̲OK: 成功
CKR̲TOKEN̲NOT̲PRESENT:
カードが挿入されていないまたはカードが抜かれた
CKR̲TOKEN̲NOT̲RECOGNIZED:
不正な IC カードを検出した
CKR̲FUNCTION̲FAILED: 失敗
)
型

引数

I/O

内容

CK̲SLOT̲ID

IN

スロット ID

CK̲TOKEN̲INFO̲PTR

OUT

トークン情報ポインタ

１８

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版（８）C̲GetMechanismList
API 名C̲GetMechanismList

概要

サポートメカニズム（アルゴリズム）を取得する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲GetMechanismList)(ーフェース

CK̲SLOT̲ID

slotID,

CK̲MECHANISM̲TYPE̲PTR pMechanismList,
CK̲ULONG̲PTR

pulCount);
戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

備考

I/O

内容

CK̲SLOT̲ID

IN

スロット ID

CK̲MECHANISM̲TYPE̲PTR

OUTメカニズムタイプポインタ

CK̲ULONG̲PTR

IN/OUT

メカニズムタイプ件数取得可能なサポートメカニズムは以下の通り。
Sign、Verify 用: CKM̲RSA̲PKCS
Digest 用: CKM̲SHA̲1、CKM̲SHA256（※）※CKM̲SHA̲1 は Windows 版のみ取得可能。

（９）C̲GetMechanismInfo
API 名C̲GetMechanismInfo

概要

メカニズム（アルゴリズム）情報を返す。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲GetMechanismInfo)(ーフェース

CK̲SLOT̲ID

slotID,

CK̲MECHANISM̲TYPE

type,

CK̲MECHANISM̲INFO̲PTR pInfo);
戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

I/O

内容

CK̲SLOT̲ID

IN

スロット ID

CK̲MECHANISM̲TYPE

IN

メカニズムタイプCK̲MECHANISM̲INFO̲PTR

IN/OUT

メカニズム情報ポインタ

１９API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
備考

設定する情報は以下の通り。
type = CKM̲RSA̲PKCS の場合
CK̲MECHANISM̲INFO::ulMinKeySize: 1024
CK̲MECHANISM̲INFO::ulMaxKeySize: 2048
CK̲MECHANISM̲INFO::flags: CKF̲VERIFY | CKF̲SIGN | CKF̲HW
type = CKM̲SHA̲1 の場合（※）
CK̲MECHANISM̲INFO::ulMinKeySize: 0
CK̲MECHANISM̲INFO::ulMaxKeySize: 0
CK̲MECHANISM̲INFO::flags: CKF̲DIGEST
type = CKM̲SHA256 の場合
CK̲MECHANISM̲INFO::ulMinKeySize: 0
CK̲MECHANISM̲INFO::ulMaxKeySize: 0
CK̲MECHANISM̲INFO::flags: CKF̲DIGEST※CKM̲SHA̲1 は Windows 版のみ設定可能。

（１０）C̲OpenSession
API 名C̲OpenSession

概要

セッションを確立する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲OpenSession)(ーフェース

CK̲SLOT̲ID

slotID,

CK̲FLAGS

flags,CK̲VOID̲PTR

pApplication,

CK̲NOTIFY

Notify,CK̲SESSION̲HANDLE̲PTR phSession);
戻り値

CK̲RV（CKR̲OK: 成功
CKR̲TOKEN̲NOT̲PRESENT:
カードが挿入されていないまたはカードが抜かれた
CKR̲TOKEN̲NOT̲RECOGNIZED:
不正な IC カードを検出した
CKR̲FUNCTION̲FAILED: 失敗
）
型

引数

I/O

内容

CK̲SLOT̲ID

IN

スロット ID

CK̲FLAGSIN

0 または CKF̲SERIAL̲SESSION を
指定

CK̲VOID̲PTR

IN

２０

NULL ポインタを指定

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

型
引数

I/O

内容

CK̲NOTIFYIN

NULL ポインタを指定

CK̲SESSION̲HANDLE̲PTR

IN/OUT

セッションハンドルポインタ（１１）C̲CloseSession
API 名C̲CloseSession

概要

セッションを切断する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲CloseSession)(ーフェース

CK̲SESSION̲HANDLE hSession);

戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

CK̲SESSION̲HANDLE

I/O
IN

内容
セッションハンドル（１２）C̲CloseAllSessions
API 名C̲CloseAllSessions

概要

すべてのセッションを切断する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲CloseAllSessions)(ーフェース

CK̲SLOT̲ID slotID);

戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

CK̲SLOT̲ID

I/O
IN

内容
スロット ID（１３）C̲GetSessionInfo
API 名C̲GetSessionInfo

概要

セッション状態を取得する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲GetSessionInfo)(ーフェース

CK̲SESSION̲HANDLE

hSession,

CK̲SESSION̲INFO̲PTR pInfo);
戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションタイプ

CK̲SESSION̲INFO̲PTR

OUT

セッション状態ポインタ

２１

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
備考

以下の状態を返す。
ログインしていないとき: CKS̲RO̲PUBLIC̲SESSION
ログインしているとき: CKS̲RO̲USER̲FUNCTIONS（１４）C̲Login
API 名C̲Login概要

トークンをログイン状態にする（証明書 DF を活性化する）。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲Login)(ーフェース

CK̲SESSION̲HANDLE hSession,
CK̲USER̲TYPE

userType,

CK̲CHAR̲PTR

pPin,

CK̲ULONG

ulPinLen);
戻り値

CK̲RV（CKR̲OK: 成功
CKR̲DEVICE̲REMOVED:
カードが挿入されていないまたはカードが抜かれた
CKR̲PIN̲INCORRECT: パスワード指定誤り
CKR̲PIN̲LOCKED: パスワードがロックされている
CKR̲FUNCTION̲FAILED: 失敗
）
型

引数

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲USER̲TYPE

IN

ユーザタイプCK̲CHAR̲PTR

IN

パスワード文字列ポインタ

CK̲ULONG

IN

パスワード文字列長（１５）C̲Logout
API 名C̲Logout

概要

トークンをログアウト状態にする。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲Logout)(ーフェース

CK̲SESSION̲HANDLE hSession);

戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

CK̲SESSION̲HANDLE

I/O
IN

２２

内容
セッションハンドル

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版（１６）C̲FindObjectsInit
API 名C̲FindObjectsInit

概要

オブジェクトの検索を開始する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲FindObjectsInit)(ーフェース

CK̲SESSION̲HANDLE hSession,
CK̲ATTRIBUTE̲PTR pTemplate,
CK̲ULONG

ulCount);
戻り値

CK̲RV（CKR̲OK: 成功
CKR̲DEVICE̲REMOVED:
カードが挿入されていないまたはカードが抜かれた
CKR̲FUNCTION̲FAILED: 失敗
）
型

引数

備考

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲ATTRIBUTE̲PTR

IN

属性テーブルポインタ

CK̲ULONGIN

属性テーブル数

以下の属性による検索を行う。
CKA̲CLASSCKO̲CERTIFICATE または CKO̲PRIVATE̲KEY

CKA̲ID

Login で読み出したときに生成した番号

CKA̲TOKEN

真CKA̲LABEL

証明書の名前CKA̲VALUE

証明書の値

CKA̲MODULUS 利用者公開鍵の N
CKA̲PUBLIC̲EXPONENT 利用者公開鍵の E（１７）C̲FindObjects
API 名C̲FindObjects

概要

オブジェクトの検索を行う。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲FindObjects)(ーフェース

CK̲SESSION̲HANDLE

hSession,

CK̲OBJECT̲HANDLE̲PTR phObject,
CK̲ULONG

ulMaxObjectCount,

CK̲ULONG̲PTR

pulObjectCount);

２３

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

CK̲RV（CKR̲OK: 成功
CKR̲DEVICE̲REMOVED:
カードが挿入されていないまたはカードが抜かれた
CKR̲FUNCTION̲FAILED: 失敗
）
型

引数

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲OBJECT̲HANDLE̲PTR

IN/OUT

オブジェクトハンドルポインタ

CK̲ULONG

IN

最大オブジェクト数CK̲ULONG̲PTR

IN/OUT

オブジェクト数ポインタ（１８）C̲FindObjectsFinal
API 名C̲FindObjectsFinal

概要

オブジェクトの検索を終了する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲FindObjectsFinal)(ーフェース

CK̲SESSION̲HANDLE hSession);

戻り値

CK̲RV（CKR̲OK: 成功
CKR̲DEVICE̲REMOVED:
カードが挿入されていないまたはカードが抜かれた
CKR̲FUNCTION̲FAILED: 失敗）
型

引数

CK̲SESSION̲HANDLE

I/O
IN

内容
セッションハンドル（１９）C̲GetAttributeValue
API 名C̲GetAttributeValue

概要

オブジェクトの属性値を取得する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲GetAttributeValue)(ーフェース

CK̲SESSION̲HANDLE hSession,
CK̲OBJECT̲HANDLE hObject,
CK̲ATTRIBUTE̲PTR pTemplate,
CK̲ULONG

ulCount);

２４

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

CK̲RV（CKR̲OK: 成功
CKR̲DEVICE̲REMOVED:
カードが挿入されていないまたはカードが抜かれた
CKR̲FUNCTION̲FAILED: 失敗
）
型

引数

備考

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲OBJECT̲HANDLEIN

オブジェクトハンドル

CK̲ATTRIBUTE̲PTR

OUT

属性テーブルポインタ

CK̲ULONG

OUT

属性テーブル数

以下の属性に対する値が取得可能である。
CKA̲CLASSCKO̲CERTIFICATE または CKO̲PRIVATE̲KEY

CKA̲LABEL

表 ５-３オブジェクト情報一覧参照。

CKA̲VALUE

表 ５-３オブジェクト情報一覧参照。

CKA̲ISSUER

表 ５-３オブジェクト情報一覧参照。

CKA̲SERIAL̲NUMBER

表 ５-３オブジェクト情報一覧参照。

CKA̲SUBJECT

表 ５-３オブジェクト情報一覧参照。

CKA̲ID

表 ５-３オブジェクト情報一覧参照。

CKA̲TOKEN

True

CKA̲PRIVATE

True

CKA̲CERTFICATE̲TYPE

CKC̲X̲509

CKA̲MODULUS

表 ５-３オブジェクト情報一覧参照。

CKA̲MODULUS̲BITS

表 ５-３オブジェクト情報一覧参照。

CKA̲PUBLIC̲EXPONENT 表 ５-３オブジェクト情報一覧参照。
CKA̲KEY̲TYPE

CKK̲RSACKA̲SENSITIVE

True

CKA̲SIGN

True

２５

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

表 ５-３ オブジェクト属性一覧#
1

オブジェクト
利用者公開鍵

属性名

属性値

CKA̲LABELUSERKEY

CKA̲ID

住基カード対応 PKCS#11 ライブ
ラリの場合：N の SHA1 ハッシュ個人番号カード対応 PKCS#11 ラ
イブラリの場合：
N の SHA256 ハッシュ2

利用者証明書CKA̲PUBLIC̲EXPONENT

利用者証明書から取得した値

CKA̲MODULUS

利用者証明書から取得した値

CKA̲MODULUS̲BITS

利用者証明書から取得した値

CKA̲LABELUSERCERT

CKA̲ID

住基カード対応 PKCS#11 ライブ
ラリの場合：N の SHA1 ハッシュ個人番号カード対応 PKCS#11 ラ
イブラリの場合：
N の SHA256 ハッシュ3

CKA̲VALUE

証明書自体

CKA̲SUBJECT

利用者証明書から取得した値

CKA̲ISSUER

利用者証明書から取得した値

CKA̲SERIAL̲NUMBER

利用者証明書から取得した値

認証局の自己署名 CKA̲LABELCACERT

証明書

住基カード対応 PKCS#11 ライブ

CKA̲ID

ラリの場合：N の SHA1 ハッシュ個人番号カード対応 PKCS#11 ラ
イブラリの場合：
N の SHA256 ハッシュCKA̲VALUE

証明書自体

CKA̲SUBJECT

認証局の自己署名証明書から取得した値

CKA̲ISSUER

認証局の自己署名証明書から取
得した値

２６

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

オブジェクト

属性名

属性値

CKA̲SERIAL̲NUMBER

認証局の自己署名証明書から取得した値（２０）C̲SignInit
API 名C̲SignInit

概要

署名処理を初期化する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲SignInit)(ーフェース

CK̲SESSION̲HANDLE hSession,
CK̲MECHANISM̲PTR pMechanism,
CK̲OBJECT̲HANDLE hKey);

戻り値

CK̲RV（CKR̲OK: 成功
CKR̲DEVICE̲REMOVED:
カードが挿入されていないまたはカードが抜かれた
CKR̲FUNCTION̲FAILED: 失敗
）
型

引数

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲MECHANISM̲PTR

IN

メカニズム情報ポインタ
mechanism:
CKM̲RSA̲PKCS のみ指定可

CK̲OBJECT̲HANDLEIN

オブジェクトハンドル（２１）C̲Sign
API 名C̲Sign概要

データに署名を行う。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲Sign)(

ーフェース

CK̲SESSION̲HANDLE hSession,
CK̲BYTE̲PTR

pData,CK̲ULONG

ulDataLen,

CK̲BYTE̲PTR

pSignature,

CK̲ULONG̲PTR

pulSignatureLen);

２７

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

CK̲RV（CKR̲OK: 成功
CKR̲DEVICE̲REMOVED:
カードが挿入されていないまたはカードが抜かれた
CKR̲FUNCTION̲FAILED: 失敗
）
型

引数

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲BYTE̲PTR

IN

データポインタ

CK̲ULONG

IN

データ長

CK̲BYTE̲PTR

IN/OUT

署名データポインタ

CK̲ULONG̲PTR

IN/OUT

署名データ長ポインタ※署名データ長はカード種別によって変化する。第６節

コーリ

ングシーケンスに従って署名データ長取得の上、十分なメモリ領域を署名データポインタに指定すること。
（２２）C̲DigestInit
API 名C̲DigestInit

概要

ダイジェスト作成を開始する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲DigestInit)(ーフェース

CK̲SESSION̲HANDLE hSession,
CK̲MECHANISM̲PTR pMechanism);

戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲MECHANISM̲PTR

IN

メカニズム情報ポインタ
mechanism:
CKM̲SHA̲1 または CKM̲SHA256
いずれかを指定可（※）※CKM̲SHA̲1 は Windows 版のみ指定可能。

（２３）C̲DigestUpdate
API 名C̲DigestUpdate
２８API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
概要
関数インタ

ダイジェストを作成する。
CK̲DEFINE̲FUNCTION(CK̲RV, C̲DigestUpdate)(ーフェース

CK̲SESSION̲HANDLE hSession,
CK̲BYTE̲PTR

pPart,CK̲ULONG

ulPartLen);
戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲BYTE̲PTR

IN

ハッシュするデータポインタ

CK̲ULONG

IN

ハッシュするデータ長（２４）C̲DigestFinal
API 名C̲DigestFinal

概要

ダイジェスト作成を終了する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲DigestFinal)(ーフェース

CK̲SESSION̲HANDLE hSession,
CK̲BYTE̲PTR

pDigest,CK̲ULONG̲PTR

pulDigestLen);
戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲BYTE̲PTR

IN/OUT

ダイジェストデータポインタ

CK̲ULONG̲PTR

IN/OUT

ダイジェストデータ長ポインタ※ダイジェストデータ長はC̲DigestInit で指定したメカニズム情報によって変化する。第６節

コーリングシーケンスに従ってダイジェストデータ長取得の上、十分なメモリ領域をダ
イジェストデータポインタに指定すること。
（２５）C̲VerifyInit
API 名C̲VerifyInit

概要

署名検証を開始する。

２９

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲VerifyInit)(ーフェース

CK̲SESSION̲HANDLE hSession,
CK̲MECHANISM̲PTR pMechanism
CK̲OBJECT̲HANDLE hKey);

戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲MECHANISM̲PTR

IN

メカニズム情報ポインタ
mechanism:
CKM̲RSA̲PKCS
のみ指定可

CK̲OBJECT̲HANDLEIN

RSA 公開鍵オブジェクト（２６）C̲Verify
API 名C̲Verify

概要

署名値を検証する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲Verify)(ーフェース

CK̲SESSION̲HANDLE hSession,
CK̲BYTE̲PTR

pData,CK̲ULONG

ulDataLen,

CK̲BYTE̲PTR

pSignature,

CK̲ULONG

ulSignatureLen);
戻り値

CK̲RV（CKR̲OK: 成功
CKR̲SIGNATURE̲INVALID: 署名データ不正
CKR̲FUNCTION̲FAILED: 失敗
）
型

引数

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲BYTE̲PTR

IN

検証するデータポインタ

CK̲ULONG

IN

検証するデータ長CK̲BYTE̲PTR

IN

署名データポインタ

CK̲ULONG

IN

署名データ長３０

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
備考

pData と pSigneture の OID の関係は以下の通り。
署名データに OID をつける場合は、上位 UP にて検証するデータに OID を付加したデータを入力しなければならない。

署名データ(pSigneture)

検証するデータ(pData)
OIDあり
OIDなし
OK
NG
NG
OK

OIDあり
OIDなし

（２７）C̲CreateObject
API 名C̲CreateObject

概要

公開鍵オブジェクトを作成する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲CreateObject)(ーフェース

CK̲SESSION̲HANDLE hSession,
CK̲ATTRIBUTE̲PTR pTemplate,
CK̲ULONG

ulCount,

CK̲OBJECT̲HANDLE̲PTR phObject);
戻り値

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

備考

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲ATTRIBUTE̲PTR

IN

属性テーブルポインタ

CK̲ULONGIN

属性テーブル数

CK̲OBJECT̲HANDLE̲PTR

IN/OUT

オブジェクトハンドルポインタ

本 API では RSA 公開鍵セッションオブジェクトのみ作成できる。
以下の属性を pTemplate で指定する。
CK̲OBJECT̲CLASS: CKO̲PUBLIC̲KEY（※１）
CKA̲PUBLIC̲EXPONENTCKA̲MODULUS※１ :CK̲OBJECT̲CLASS の値は CKO̲PUBLIC̲KEY 固定とする。
その他の属性は使用不可とする。

（２８）C̲DestroyObject
API 名

C̲DestroyObject

概要

公開鍵オブジェクトを破棄する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲RV, C̲DestroyObject)(ーフェース

CK̲SESSION̲HANDLE hSession,
CK̲OBJECT̲HANDLE hObject);
３１

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

CK̲RV（CKR̲OK: 成功CKR̲FUNCTION̲FAILED: 失敗）

型
引数

備考

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲OBJECT̲HANDLEIN

オブジェクトハンドル

本 API では RSA 公開鍵セッションオブジェクトのみ破棄できる。

３２

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

第４節 拡張 API 仕様一覧
（１）JPKIGetRemain
API 名

JPKIGetRemain

概要

署名用または利用者証明用電子証明書のパスワードロックまでの残回数を取得する。

関数インタ

CK̲DEFINE̲FUNCTION(CK̲LONG,JPKIGetRemain)(ーフェース

CK̲SESSION̲HANDLE hSession,
CK̲USER̲TYPE

userType);
戻り値

CK̲LONG (JPKI̲GETREMAIN̲LOCKED：パスワードロックまでの残回数 0（ロック状態）
JPKI̲GETREMAIN̲MIN (=1)以上 JPKI̲GETREMAIN̲MAX (=15)以下：
パスワードロックまでの残回数 1〜15
（戻り値の数値が、残回数を示す 1〜15 の値となる）
JPKI̲GETREMAIN̲UNLIMITED：パスワードロックまでの残回数制限なし
JPKI̲GETREMAIN̲DEVICE̲REMOVED：
カードまたはリーダライタが認識できなくなった
JPKI̲GETREMAIN̲NG：その他エラー
)
型

引数

備考

I/O

内容

CK̲SESSION̲HANDLE

IN

セッションハンドル

CK̲USER̲TYPE

IN

ユーザタイプマイナンバーカードでは、署名用電子証明書のパスワードは５回、利用者
証明用電子証明書のパスワードは３回をそれぞれ連続で誤った場合パス
ワードロックする仕様である。

３３

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

第５節 構造体仕様
利用者クライアントソフトは、PKCS#11 Ver2.2 の仕様書の定義/構造体に準拠しています。
構造体は下記 URL にある PKCS#11 Ver2.2 の資料を参考にしてください。
PKCS#11: Cryptographic Token Interface Standard「https://www.cryptsoft.com/pkcs11doc/STANDARD/pkcs-11v2-20.pdf」© 2022 Cryptsoft Pty Ltd All rights reserved.
表 ５-４に本ライブラリで使用する構造体の一覧を示す。

表 ５-４ PKCS#11 構造体一覧
NO
1

構造体名
CK̲INFO概要
PKCS ライブラリ情報

CK̲INFO̲PTR2CK̲SLOT̲ID

スロット ID

CK̲SLOT̲ID̲PTR
3CK̲SLOT̲INFO

スロット情報CK̲SLOT̲INFO̲PTR
4CK̲TOKEN̲INFO

トークン情報CK̲TOKEN̲INFO̲PTR
5CK̲SESSION̲HANDLE

セッションハンドル

CK̲SESSION̲HANDLE̲PTR
6CK̲USER̲TYPE

ユーザタイプ

7

CK̲SESSION̲INFO

セッション情報

CK̲SESSION̲INFO̲PTR8CK̲OBJECT̲HANDLE

オブジェクトハンドル

CK̲OBJECT̲HANDLE̲PTR
9CK̲OBJECT̲CLASS

オブジェクトクラス

CK̲OBJECT̲CLASS̲PTR
10CK̲ATTRIBUTE

属性タイプ、値、長さを含む構造体

CK̲ATTRIBUTE̲PTR
11

CK̲MECHANISM̲TYPE

メカニズムタイプCK̲MECHANISM̲TYPE̲PTR
12CK̲MECHANISM

メカニズムタイプを含む、メカニズムを示す構造体

CK̲MECHANISM̲PTR
13

CK̲MECHANISM̲INFO

メカニズム情報３４

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
NO

構造体名

概要

CK̲MECHANISM̲INFO̲PTR
14

CK̲RV

ライブラリの戻り値

15

CK̲NOTIFY

コールバック情報

16

CK̲FUNCTION̲LIST

PKCS ライブラリ関数

CK̲FUNCTION̲LIST̲PTRCK̲FUNCTION̲LIST̲PTR̲PTR

３５

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

第６節 コーリングシーケンス
｢第４章

第３節

実現可能な機能の一覧｣を実現するためのコーリングシーケンスを以下に示す。上位アプリケーションは、このコーリングシーケンスに沿って実装すること。
注意事項
・複数のコーリングシーケンスを並行して実行しないこと。
１つのシーケンスを開始したなら、そのシーケンスを完了してから次のシーケンスを開始
してください。
・JPKIGetRemain 関数の呼び出しはパスワードロックまでの残回数取得を行う場合に実施すること。
※任意関数であり、残回数取得が不要の場合は省略してよい。

（１）初期処理
C̲GetFunctionList

関数ポインタリストの取得
ppFunctionList: API アドレスポインタ↓

C̲Initialize

PKCS#11 ライブラリの初期化
pReserved: NULL↓

C̲GetSlotList

スロットリスト数の取得
tokenPresent: TRUE
pSlotList: NULL
pulCount: スロット数格納アドレス↓

C̲GetSlotList

スロットリストの取得
tokenPresent: TRUE
pSlotList: スロットリスト格納アドレス
pulCount: スロット数格納アドレス↓

C̲GetSlotInfo

スロット情報の取得
slotID: スロット ID
pInfo: スロット情報格納アドレス↓

C̲GetTokenInfo

トークン情報の取得
slotID: スロット ID
pInfo: トークン情報格納アドレス

３６

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版↓
C̲OpenSession

アプリケーションとトークン間のセッションの確立
slotID: スロット ID
flags: 0
pApplication: NULL
Notify: NULL
phSession: セッションハンドル格納アドレス↓
残回数取得を行う場合に実施（任意）

JPKIGetRemain

パスワードロックまでの残回数取得
hSession: C̲OpenSession で取得したハンドル
userType: CKU̲USER↓

C̲Login

トークンへのログイン
hSession: C̲OpenSession で取得したハンドル
userType: CKU̲USER
pPin: パスワード文字列
ulPinLen: パスワード文字列長↓更新された残回数取得を行う場合に実施（任意）

JPKIGetRemain

パスワードロックまでの残回数取得
hSession: C̲OpenSession で取得したハンドル
userType: CKU̲USER（２）終了処理C̲Logout

トークンからのログアウト
hSession: C̲OpenSession で取得したハンドル↓

C̲CloseSession

セッションの切断

もしくは、C̲CloseSession の場合

C̲CloseAllSessions

hSession: C̲OpenSession で取得したハンドル
C̲CloseAllSessions の場合
slotID: C̲OpenSession に指定したスロット ID↓

C̲Finalize

PKCS#11 ライブラリの終了処理
pReseved: NULL

３７

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版（３）証明書取得処理
初期化処理（１）初期処理参照↓

C̲FindObjectsInit

証明書検索操作の初期設定
hSession: C̲OpenSession で取得したハンドル
pTemplate: 以下の属性を指定(1) type = CKA̲CLASS
value = CKO̲CERTIFICATE(2) type = CKA̲TOKEN
value = TRUE
ulCount: 設定する属性数:2↓

C̲FindObjects

証明書の検索hSession: C̲OpenSession で取得したハンドル
phObject: オブジェクトハンドル格納アドレス
ulMaxObjectCount: オブジェクトハンドル格納領域
数:2
pulObjectCount: 発見したオブジェクト数格納アドレス↓①（pulObjectCount – 1）回分ループ（カウンタを i、初期値を 0 とする）↓

C̲GetAttributeValue

証明書サイズの取得
hSession: C̲OpenSession で取得したハンドル
hObject: C̲FindObjects で取得したオブジェクトハ
ンドルリストの i 番目(phObject[i])pTemplate: 以下の属性を指定(1) type = CKA̲LABEL（※１）
value = NULL
ulValueLen = サイズ格納領域アドレス(2) type = CKA̲VALUE
value = NULL
ulValueLen = サイズ格納領域アドレス
ulCount: 設定する属性数:2↓

C̲GetAttributeValue

証明書の取得hSession: C̲OpenSession で取得したハンドル

３８

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
hObject: C̲FindObjects で取得したオブジェクトハ
ンドルリストの i 番目(phObject[i])pTemplate: 以下の属性を指定(1) type = CKA̲LABEL（※１）
value = ラベル格納アドレス
ulValueLen =格納領域サイズ(2) type = CKA̲VALUE
value = 証明書格納アドレス
ulValueLen = 格納領域サイズ
ulCount: 設定する属性数:2↓≠ の場合
LABEL の値：求める証明書（※１）↓
C̲FindObjectsFinal＝ の場合

カウンタ i を1 加算して①に戻る。

証明書検索操作の終了処理
hSession: C̲OpenSession で取得したハンドル↓

終了処理（２）終了処理参照（４）署名生成処理(署名対象データを渡すパターン)*1
初期化処理（１）初期処理参照↓

C̲FindObjectsInit

証明書検索操作の初期設定
hSession: C̲OpenSession で取得したハンドル
pTemplate: 以下の属性を指定(1) type = CKA̲CLASS
value = CKO̲CERTIFICATE(2) type = CKA̲TOKEN
value = TRUE
ulCount: 設定する属性数:2↓

C̲FindObjects

証明書の検索hSession: C̲OpenSession で取得したハンドル
phObject: オブジェクトハンドル格納アドレス
ulMaxObjectCount: オブジェクトハンドル格納領域数:2*1 署名生成処理のコーリングシーケンスを実行することで、IC カード内の利用者証明書、署名対象データに対するハッシュ値
および署名値を取得することができる。

３９

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
pulObjectCount: 発見したオブジェクト数格納アドレス↓①（pulObjectCount – 1）回分ループ（カウンタを i、初期値を 0 とする）↓
C̲GetAttributeValue

証明書サイズの取得
hSession: C̲OpenSession で取得したハンドル
hObject: C̲FindObjects で取得したオブジェクトハンド
ルリストの i 番目(phObject[i])pTemplate:以下の属性を指定(1) type = CKA̲LABEL（※１）
value = NULL
ulValueLen = サイズ格納領域アドレス(2) type = CKA̲VALUE
value = NULL
ulValueLen = サイズ格納領域アドレス
ulCount:設定する属性数:2↓

C̲GetAttributeValue

証明書の取得hSession: C̲OpenSession で取得したハンドル
hObject: C̲FindObjects で取得したオブジェクトハンド
ルリストの i 番目(phObject[i])pTemplate:以下の属性を指定(1) type = CKA̲LABEL（※１）
value = ラベル格納アドレス
ulValueLen =格納領域サイズ(2) type = CKA̲VALUE
value = 証明書格納アドレス
ulValueLen = 格納領域サイズ
ulCount:設定する属性数:2↓≠ の場合
LABEL の値：求める証明書（※１）↓

C̲FindObjectsFinal＝ の場合

カウンタ i を1 加算して①に戻る。

証明書検索操作の終了処理
hSession: C̲OpenSession で取得したハンドル↓
利用者証明書から公開鍵の E と N を取得
４０API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版↓
C̲FindObjectsInit

利用者鍵検索操作の初期設定
hSession: C̲OpenSession で取得したハンドル
pTemplate: 以下の属性を指定する
CKO̲PRIVATE̲KEY の指定は必須。他は任意。
(1) type = CKA̲CLASS
value = CKO̲PRIVATE̲KEY(2) type = CKA̲TOKEN
value = TRUE
(3) type = CKA̲MODULUS
value = 公開鍵の N(4) type = CKA̲PUBLIC̲EXPONENT
value = 公開鍵の E
ulCount: 設定する属性数:4↓C̲FindObjects

利用者鍵の検索hSession: C̲OpenSession で取得したハンドル
phObject: 利用者鍵オブジェクトハンドル
ulMaxObjectCount: オブジェクトハンドル格納領域数:1
pulObjectCount: 発見したオブジェクト数格納アドレス↓

C̲FindObjectsFinal

利用者鍵の検索操作の終了処理
hSession: C̲OpenSession で取得したハンドル↓

C̲DigestInit

ダイジェスト作成開始
hSession: C̲OpenSession で取得したハンドル
pMechanism:

CKM̲SHA̲1 または CKM̲SHA256 のいずれかを署名方式に合わせて指定（※）※CKM̲SHA̲1 は Windows 版のみ指定可能。
↓
C̲DigestUpdate

データをハッシュ
hSession: C̲OpenSession で取得したハンドル
pPart: 署名対象データ
ulPartLen: 署名対象データ長↓C̲DigestFinal

ダイジェスト格納領域サイズ取得
hSession: C̲OpenSession で取得したハンドル
pDigest: NULL

４１

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
pulDigestLen: ダイジェストデータ長格納アドレス↓
C̲DigestFinal

ダイジェスト取得
hSession: C̲OpenSession で取得したハンドル
pDigest: ダイジェスト値格納アドレス
pulDigestLen: ダイジェスト値長格納アドレス↓

C̲DigestFinal で取得したダイジェスト値（pDigest）を使用して DigestInfo を作成↓
C̲SignInit

署名処理の初期設定
hSession: C̲OpenSession で取得したハンドル
pMechanism: CKM̲RSA̲PKCS
hKey: C̲FindObjects で取得したオブジェクトハンドル↓

C̲Sign

署名値長取得hSession: C̲OpenSession で取得したハンドル
pData: DigestInfo
ulDataLen: DigestInfo のデータ長
pSigneture: NULL
pulSignetureLen: 署名値長格納アドレス↓

C̲Sign署名
hSession: C̲OpenSession で取得したハンドル
pData: DigestInfo
ulDataLen: DigestInfo のデータ長
pSigneture: 署名値格納アドレス
pulSignetureLen: 署名値長格納アドレス↓

終了処理（２）終了処理参照（５）署名生成処理(ハッシュ値を渡すパターン)*2
初期化処理（１）初期処理参照↓

C̲FindObjectsInit

証明書検索操作の初期設定
hSession: C̲OpenSession で取得したハンドル
pTemplate: 以下の属性を指定*2

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

４２

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版(1) type = CKA̲CLASS
value = CKO̲CERTIFICATE(2) type = CKA̲TOKEN
value = TRUE
ulCount: 設定する属性数:2↓
C̲FindObjects

証明書の検索hSession: C̲OpenSession で取得したハンドル
phObject: オブジェクトハンドル格納アドレス
ulMaxObjectCount: オブジェクトハンドル格納領域数:2
pulObjectCount: 発見したオブジェクト数格納アドレス↓①（pulObjectCount – 1）回分ループ（カウンタを i、初期値を 0 とする）↓

C̲GetAttributeValue

証明書サイズの取得
hSession: C̲OpenSession で取得したハンドル
hObject: C̲FindObjects で取得したオブジェクトハンド
ルリストの i 番目(phObject[i])pTemplate:以下の属性を指定(1) type = CKA̲LABEL（※１）
value = NULL
ulValueLen = サイズ格納領域アドレス(2) type = CKA̲VALUE
value = NULL
ulValueLen = サイズ格納領域アドレス
ulCount:設定する属性数:2↓

C̲GetAttributeValue

証明書の取得hSession: C̲OpenSession で取得したハンドル
hObject: C̲FindObjects で取得したオブジェクトハンド
ルリストの i 番目(phObject[i])pTemplate:以下の属性を指定(1) type = CKA̲LABEL（※１）
value = ラベル格納アドレス
ulValueLen =格納領域サイズ(2) type = CKA̲VALUE
value = 証明書格納アドレス
ulValueLen = 格納領域サイズ
４３

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
ulCount:設定する属性数:2↓≠ の場合
LABEL の値：求める証明書（※１）↓
C̲FindObjectsFinal＝ の場合

カウンタ i を1 加算して①に戻る。

証明書検索操作の終了処理
hSession: C̲OpenSession で取得したハンドル↓
利用者証明書から公開鍵の E と N を取得↓

C̲FindObjectsInit

利用者鍵検索操作の初期設定
hSession: C̲OpenSession で取得したハンドル
pTemplate: 以下の属性を指定する
CKO̲PRIVATE̲KEY の指定は必須。他は任意。
(1) type = CKA̲CLASS
value = CKO̲PRIVATE̲KEY(2) type = CKA̲TOKEN
value = TRUE
(3) type = CKA̲MODULUS
value = 公開鍵の N(4) type = CKA̲PUBLIC̲EXPONENT
value = 公開鍵の E
ulCount: 設定する属性数:4↓C̲FindObjects

利用者鍵の検索hSession: C̲OpenSession で取得したハンドル
phObject: 利用者鍵オブジェクトハンドル
ulMaxObjectCount: オブジェクトハンドル格納領域数:1
pulObjectCount: 発見したオブジェクト数格納アドレス↓

C̲FindObjectsFinal

利用者鍵の検索操作の終了処理
hSession: C̲OpenSession で取得したハンドル↓

ハッシュ値を使用して DigestInfo を作成↓
C̲SignInit

署名処理の初期設定
hSession: C̲OpenSession で取得したハンドル

４４

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
pMechanism: CKM̲RSA̲PKCS
hKey: C̲FindObjects で取得したオブジェクトハンドル↓
C̲Sign

署名値長取得hSession: C̲OpenSession で取得したハンドル
pData: DigestInfo
ulDataLen: DigestInfo のデータ長
pSigneture: NULL
pulSignetureLen: 署名値長格納アドレス↓

C̲Sign署名
hSession: C̲OpenSession で取得したハンドル
pData: DigestInfo
ulDataLen: DigestInfo のデータ長
pSigneture: 署名値格納アドレス
pulSignetureLen: 署名値長格納アドレス↓

終了処理（２）終了処理参照（６）署名検証処理(検証対象データを渡すパターン)
初期化処理（１）初期処理参照↓
電子証明書から公開鍵の E と N を取得↓

C̲CreateObject

公開鍵オブジェクト作成
hSession: C̲OpenSession で取得したハンドル
pTemplate: 以下を指定する(1) type = CKA̲CLASS
value = CKO̲PUBLIC̲KEY(2) type = CKA̲PUBLIC̲EXPORNENT
value = 公開鍵の E(3) type = CKA̲MODULUS
value = 公開鍵の N
ulCount: 設定する属性数:3↓

C̲DigestInit

ダイジェスト作成開始
hSession: C̲OpenSession で取得したハンドル
pMechanism: CKM̲SHA̲1 または CKM̲SHA256 を署名方式

４５

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版に合わせて指定（※）※CKM̲SHA̲1 は Windows 版のみ指定可能。
↓
C̲DigestUpdate

データをハッシュ
hSession: C̲OpenSession で取得したハンドル
pPart: 検証対象データ
ulPartLen: 検証対象データ長↓C̲DigestFinal

ダイジェスト格納領域サイズ取得
hSession: C̲OpenSession で取得したハンドル
pDigest: NULL
pulDigestLen: ダイジェスト値長格納アドレス↓

C̲DigestFinal

ダイジェスト取得
hSession: C̲OpenSession で取得したハンドル
pDigest: ダイジェスト値格納アドレス
pulDigestLen: ダイジェスト値長格納アドレス↓

C̲DigestFinal で取得したダイジェスト値（pDigest）を使用して DigestInfo を作成↓
C̲VerifyInit

データ検証開始
hSession: C̲OpenSession で取得したハンドル
pMechanism: CKM̲RSA̲PKCS
hKey: 公開鍵オブジェクトハンドル↓

C̲Verify

データ検証
hSession: C̲OpenSession で取得したハンドル
pData: DigestInfo
ulDataLen: DigestInfo のデータ長
pSigneture: 署名値
pulSignetureLen: 署名値長↓C̲DestroyObject

公開鍵オブジェクト解放
hSession: C̲OpenSession で取得したハンドル
hObject: 対象オブジェクトハンドル↓

終了処理（２）終了処理参照

４６

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版（７）署名検証処理(ハッシュ値を渡すパターン)
初期化処理（１）初期処理参照↓
電子証明書から公開鍵の E と N を取得↓

C̲CreateObject

公開鍵オブジェクト作成
hSession: C̲OpenSession で取得したハンドル
pTemplate: 以下を指定する(1) type = CKA̲CLASS
value = CKO̲PUBLIC̲KEY(2) type = CKA̲PUBLIC̲EXPORNENT
value = 公開鍵の E(3) type = CKA̲MODULUS
value = 公開鍵の N
ulCount: 設定する属性数:3↓

ハッシュ値を使用して DigestInfo を作成↓
C̲VerifyInit

データ検証開始
hSession: C̲OpenSession で取得したハンドル
pMechanism: CKM̲RSA̲PKCS
hKey: 公開鍵オブジェクトハンドル↓

C̲Verify

データ検証
hSession: C̲OpenSession で取得したハンドル
pData: DigestInfo
ulDataLen: DigestInfo のデータ長
pSigneture: 署名値
pulSignetureLen: 署名値長↓C̲DestroyObject

公開鍵オブジェクト解放
hSession: C̲OpenSession で取得したハンドル
hObject: 対象オブジェクトハンドル↓

終了処理（２）終了処理参照

４７

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

４８

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

第６章 その他
第１節 ライブラリのロード方法
汎用受付システム等の上位アプリケーションでは、利用する IC カード、証明書の種別に対応した PKCS#11 ライブラリのパス名を固定のファイル（ロード情報定義ファイル）から取得し、ロードする方式とする。
ロード情報定義ファイルのパス名およびファイル名は以下の通り。
＜Windows 対応版＞
C:\Program Files\Common Files\e-gov̲app\load̲path\default.dat（上記は OS のインストール先が C ドライブの場合）＜Windows 64bit 対応版＞
C:\Program Files\Common Files\e-gov̲app\load̲path\default.dat
C:\Program Files(x86)\Common Files\e-gov̲app\load̲path\default.dat（上記は OS のインストール先が C ドライブの場合）＜Mac OS 対応版＞
/private/etc/e-gov̲app/load̲path/default.dat（Mac OS の場合、「/etc」は「/private/etc」のシンボリックリンクとなる）
ロード情報定義ファイル内のフォーマットは以下の通り。
項目=指定内容


項目と指定内容とは「=」でつなぎ、不要な空白等は含まない。



各項目について、内容は 1 行に記述し、「=」以降、改行文字までが有効な指定内容とする。

項目として設定する情報は以下の通り。
項目

指定内容

name

「会社名-識別情報」の形式。「JPKI̲Appli-01」とする。

path

住基カード対応 PKCS#11 ライブラリ格納先の絶対パス名を設定。
※住基カードは Windows 版のみ使用可能。

pathSign

個人番号カード署名対応 PKCS#11 ライブラリ格納先の絶対パス名を設定。

pathAuth

個人番号カード利用者証明対応 PKCS#11 ライブラリ格納先の絶対パス名を設定。

path64

住基カード対応 PKCS#11 ライブラリ(64bit)格納先の絶対パス名を設定。

pathSign64

個人番号カード署名対応 PKCS#11 ライブラリ(64bit)格納先の絶対パス
名を設定。

４９

API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版
項目

指定内容

pathAuth64

個人番号カード利用者証明対応 PKCS#11 ライブラリ(64bit)の格納先の絶対パス名を設定。

例)ロード情報定義ファイルの例
Windows 版の場合：
name=JPKI̲Appli-01
path=[インストールフォルダ]\JPKIPKCS11.dll
pathSign=[インストールフォルダ]\JPKIPKCS11Sign.dll
pathAuth=[インストールフォルダ]\JPKIPKCS11Auth.dll
path64=[インストールフォルダ]\JPKIPKCS1164.dll
pathSign64=[インストールフォルダ]\JPKIPKCS11Sign64.dll
pathAuth64=[インストールフォルダ]\JPKIPKCS11Auth64.dll

MacOS 版の場合：
name=JPKI̲Appli-01
pathSign=/usr/local/lib/JPKIPKCS11Sign.dylib
pathAuth=/usr/local/lib/JPKIPKCS11Auth.dylib

５０API 仕様書【カード AP ライブラリ PKCS#11 編】第 4.6 版

第２節 拡張 API の呼出方法
拡張 API である JPKIGetRemain 関数を利用する場合は、OS が提供するアドレス取得関数(Windows なら GetProcAddress()、Mac なら dlsym())を使用して関数アドレスを取得する必要がある。
住基カードは JPKIGetRemain 関数について提供対象外の為、関数アドレス取得を実施した場
合エラーとなる。

５１

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

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