API仕様書 6 Mac OS X C言語インターフェース編(PDF 467kbyte)

公的個人認証サービス
利用者クライアントソフト API 仕様書
【Mac OS X C 言語 IF 編】
第 2.1 版
公的個人認証サービス
指定認証機関
地方公共団体情報システム機構
変更履歴
版数
変更日付
変更内容
1.0 版
平成 18 年 11 月 1 日
・新規作成
1.1 版
平成 19 年 4 月 10 日
・表 3-1 動作環境 を変更
1.2 版
平成 19 年 10 月 4 日
・表 3-1 動作環境 プラットフォームに Mac OS X
10.4.10, Mac OS X 10.4.9 を追加
・表 3-1 動作環境 プラットフォームに Mac OS X
1.3 版
平成 20 年 10 月 10 日 10.5.4, Mac OS X 10.5.3, Mac OS X 10.5.2, Mac OS X
10.5.1, Mac OS X 10.5, Mac OS X 10.4.11 を追加
・第3章
動作環境
プラットフォームより Mac OS X
10.4.X, Mac OS X 10.5.X を削除、 Mac OS X 10.7.5, OS
X 10.8.4 を追加
1.4 版
平成 25 年 12 月 1 日
・第5章
第3節
9
ハッシュアルゴリズム SHA256
を追加
・第5章 第3節 11 ハッシュアルゴリズム SHA256
を追加
・全体 「地方公共団体情報システム機構」への事業承
継により、組織名称を変更する。
2.0 版
平成 26 年 4 月 1 日
・全体 「公的個人認証サービス共通基盤事業運用会議」
への事業承継により、「公的個人認証サービス都道府県
協議会」の組織名称を変更する。
・第3章 表 3-1 動作環境 プラットフォームの条件
で OS X 10.8.4 を OS X 10.8.5(64bit)に変更、OS X
10.9.4(64bit)を追加
・第5章
2.1 版
平成 26 年 7 月 1 日
第1節
表 5-1 サポート API 一覧 No.25
の概要に SHA256 について追加、No.15 および No.26 の概
要を No.25 同様に(SHA1、SHA256)の記載を追加
・第5章 第3節 5 CSSM_SignData に SHA256 につい
ての記述を追加、またその注釈を追加
・第5章 第3節 7 CSSM_SignData に SHA256 につい
ての記述を追加、またその注釈を追加
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
-
目次 -
第1章 はじめに ......................................................... 1
第2章 ドキュメント体系 ................................................. 1
第3章 動作環境 ......................................................... 2
第4章 機能仕様 ......................................................... 3
第1節 ソフトウェア構成図 .............................................................................................. 3
第2節 実現可能な機能の一覧 .......................................................................................... 4
第5章 API 仕様 .......................................................... 5
第1節 サポート API 一覧................................................................................................. 5
第2節 サポート API 仕様詳細 ......................................................................................... 6
1 Keychain Services ................................................................................................... 6
2 CSSM ....................................................................................................................... 6
第3節 コーリングシーケンス .......................................................................................... 7
1 IC カードへの接続.................................................................................................... 7
2 IC カードへのログイン ............................................................................................ 7
3 IC カードから切断.................................................................................................... 8
4 証明書取得(利用者証明書、都道府県知事の自己署名証明書) ............................ 8
5 署名生成(署名対象データを渡すパターン) ......................................................... 9
6 繰り返し署名生成(署名対象データを渡すパターン)....................................... 12
7 署名生成(ハッシュ値を渡すパターン)............................................................. 12
8 繰り返し署名生成(ハッシュ値を渡すパターン) .............................................. 14
9 署名検証(検証対象データを渡すパターン) ..................................................... 14
10 繰り返し署名検証(検証対象データを渡すパターン) ................................... 17
11 署名検証(ハッシュ値を渡すパターン) ......................................................... 17
12 繰り返し署名検証(ハッシュ値を渡すパターン) .......................................... 19
i
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
第1章 はじめに
公的個人認証サービス 利用者クライアントソフト(以下、JPKI 利用者ソフト)における、以
下の機能を実現するための Application Program Interface(以下、API)仕様について説明する。

証明書取得機能

電子署名生成機能

電子署名検証機能
第2章 ドキュメント体系
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 です。
API 仕様書 個人認証サービス AP C 言語インターフェース編
個人認証サービス AP(C 言語インターフェース)の API 仕様について説明しています。
API 仕様書 個人認証サービス AP Java インターフェース編
個人認証サービス AP(Java インターフェース)の API 仕様について説明しています。
JavaDoc JPKIUserCertService
個人認証サービス AP(Java インターフェース)の JavaDoc です。
API 仕様書
Mac OS X C 言語インターフェース編
Mac OS X の C インターフェースの API 仕様について説明しています。
図 2-1 ドキュメント体系図
1
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
第3章 動作環境
Mac OS X の C 言語インターフェースの動作環境は以下の通りとする。
表 3-1 動作環境
項目
条件
プ ラ ッ ト フ ォ ー ム OS X 10.7.5(64bit)
(※1, ※2)
OS X 10.8.5(64bit)
OS X 10.9.4(64bit)
IC カード
公的個人認証サービスカードアプリケーションを搭載し、公的個人認証
サービスの電子証明書が格納された IC カードとする。
IC カードリーダラ 以下の条件を満たす IC カードリーダライタとする。(「適合性検証済み
イタ
IC カードリーダライタ一覧」を参照のこと。)
・ IC カードのインターフェース(非接触型、接触非接触両対応型)に対
応していること
・ PC/SC 対応 IC カードリーダライタ(※2)であること
・ USB や RS-232C など、パソコンに接続するためのインターフェースを
有すること
・ IC カードリーダライタと通信するためのドライバソフトウェアが提
供されていること
・ IC カードの搬送方式が手動挿入/手動排出タイプまたは自動挿入/自
動排出タイプであること
・ IC カードを挿入するスロットの数は 1 つとし、1 度に挿入できる IC
カードは 1 枚であること
※1 本仕様書で定めるバージョンの開発時点の環境。最新の動作環境の情報は、JPKI ポータル
サイトに掲載するものとする。
※2 プラットフォームが Mac OS の場合、動作前提条件として、Mac OS Forge が提供する「Smart
Card Services Updatev2.0.1」をそれぞれの OS に合ったものをダウンロードし、インスト
ールする必要がある。
Mac OS Forge の Smart Card Services Installers のページ:
http://smartcardservices.macosforge.org/trac/wiki/installers
※3 最新の「適合性検証済み IC カードリーダライタ一覧」の情報は、JPKI ポータルサイトに掲
載するものとする。
※4 Personal Computer/Smart Card の略。
2
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
第4章
機能仕様
第1節
ソフトウェア構成図
本 仕様書で は、 JPKI 利用 者ソフト のうち、 下図 の太枠に 示す Keychain Services およ び
CSSM(Common Security Services Manager)の仕様をまとめる。
上位アプリケーション
PKCS#11 API
JavaI/F
JavaI/F
JPKI利用者ソフト
C言語I/F
個人認証サービスAP
C言語I/F
個人認証サービスAP
JavaI/F
カードAPライブラリ
カードAPライブラリ
JavaI/F
PKCS#11
カードAPライブラリ
カードI/F
Keychain Services
API
Keychain Services
CSSM API
証明書
検証要求
オンライン窓口
処理要求
CSSM (Common Security Services Manager)
Smart Card Services (PC/SC)
PC/SCリーダライタドライバ
カードコマンド
PC/SCリーダライタ
カードコマンド
公的個人認証サービスカードアプリケーション
官職証明書検証 オンライン窓口
サービス
サービス
図 4-1 ソフトウェア構成図
3
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
第2節
実現可能な機能の一覧
Keychain Services および CSSM で実現可能な機能の一覧を表 4-1に示す。
表 4-1 実現可能な機能の一覧
NO
機能
概要
1
利用者証明書取得
2
都道府県知事の自己署名証明書取 IC カードに格納された都道府県知事の自己署名証明
得
3
IC カードに格納された利用者証明書を取得する。
書を取得する。
署名生成(署名対象データを渡すパ 署名対象データからハッシュ値を計算し、IC カード
ターン)
に格納された利用者秘密鍵を使用して電子署名を生
成する。
4
繰り返し署名生成(署名対象データ NO3 の処理を繰り返し実行し、複数の署名対象データ
を渡すパターン)
5
署名生成(ハッシュ値を渡すパター ハッシュ値に対して、IC カードに格納された利用者
ン)
6
値、電子署名、公開鍵を使用して電子署名を検証する。
繰り返し署名検証(検証対象データ NO7 の処理を繰り返し実行し、複数の電子署名を検証
を渡すパターン)
9
する電子署名を生成する。
署名検証(検証対象データを渡すパ 検証対象データからハッシュ値を計算し、ハッシュ
ターン)
8
秘密鍵を使用して電子署名を生成する。
繰り返し署名生成(ハッシュ値を渡 NO5 の処理を繰り返し実行し、複数のハッシュ値に対
すパターン)
7
に対する電子署名を生成する。
する。
署名検証(ハッシュ値を渡すパター ハッシュ値、電子署名、公開鍵を使用して電子署名を
ン)
検証する。
10 繰り返し署名検証(ハッシュ値を渡 NO9 の処理を繰り返し実行し、複数の電子署名を検証
すパターン)
する。
4
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
第5章
API 仕様
第1節
サポート API 一覧
Keychain Services および CSSM のサポート API の一覧を表 5-1に示す。
表 5-1 サポート API 一覧
NO
1
API 名
SecCertificateGetCLHandle
概要
キーチェーンアイテムから CL ハンドルを取得
する。
2
SecCertificateGetData
キーチェーンアイテムから証明書データを取
得する。
3
SecKeychainCopyDomainSearchList
IC カードに対応するキーチェーンのリストを
作成する。
4
SecKeychainGetCSPHandle
キーチェーンに対応する CSP ハンドルを取得
する。
5
SecKeychainGetStatus
キーチェーンのステータスを取得する。
6
SecKeychainItemCopyAttributesAndData
キーチェーンアイテムからアイテムクラスを
取得する。
7
SecKeychainLock
キーチェーンをロックする。
8
SecKeychainSearchCopyNext
サーチリストからキーチェーンアイテムを取
得する。
9
SecKeychainSearchCreateFromAttributes
証明書のサーチリストを生成する。
10
SecKeychainUnlock
キーチェーンのロックを解除する。
11
SecKeyGetCredentials
キーチェーンアイテムから秘密鍵を利用する
為の信用情報を取得する。
12
SecKeyGetCSSMKey
キーチェーンから CSSM のキー(秘密鍵)を取得
する。
13
CSSM_CL_CertAbortQuery
証明書の検索を終了する。
14
CSSM_CL_CertGetFirstFieldValue
証明書から指定した OID に対応する属性を検
索する。
15
CSSM_CSP_CreateDigestContext
CSSM で使用するダイジェストハンドル(SHA1、
SHA256)を取得する。
16
CSSM_CSP_CreateSignatureContext
CSSM で使用する署名生成ハンドルを取得す
る。
17
CSSM_DeleteContext
CSSM のハンドルを破棄する。
18
CSSM_DigestDataFinal
ダイジェストを取得・終了する。
19
CSSM_DigestDataInit
ダイジェストの初期化する。
5
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
NO
API 名
20
CSSM_DigestDataUpdate
概要
ダイジェスト値にデータをアップデートす
る。
21
CSSM_GetSubserviceUIDFromHandle
CSP ハンドルから対応するサービス UID を取得
する。
22
CSSM_Init
CSSM を初期化する。
23
CSSM_ModuleAttach
CSSM の CSP モジュールを CSSM にアタッチす
る。
24
CSSM_ModuleLoad
CSSM の CSP モジュールをロードする。
25
CSSM_SignData
署名を生成(SHA1、SHA256)する。
26
CSSM_VerifyData
署名を検証(SHA1、SHA256)する。
第2節
1
サポート API 仕様詳細
Keychain Services
Keychain Services の詳細については、下記 URL 等の正式な資料を参照してください。
「http://developer.apple.com/documentation/Security/Reference/SecurityFrameworkR
eference/index.html」
Copyright © 2012 Apple Inc. All Rights Reserved.
2
CSSM
CSSM の詳細については、下記 URL の正式な資料を参照してください。
「http://www.opengroup.org/publications/catalog/c914.htm」
Copyright © May 2000. The Open Group. All Rights Reserved.
6
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
第3節
コーリングシーケンス
「第4章
第2節
実現可能な機能の一覧」を実現するためのコーリングシーケンスを以下に示
す。上位アプリケーションは、このコーリングシーケンスに沿って実装すること。
1
IC カードへの接続
IC カードへの接続のコーリングシーケンスを以下に示す(図 5-1)
。
SecKeychainCopyDomainSearchList IC カードに対応するキーチェーンのリストを作成
domain: kSecPreferencesDomainDynamic
searchList: リスト格納領域ドレス
↓
SecKeychainGetCSPHandle
キーチェーンに対応する CSP ハンドルを取得
keychain: キーチェーン
cspHandle: CSP ハンドル
↓
CSSM_GetSubserviceUIDFromHandle CSP ハンドルから対応するサービス UID を取得
ModuleHandle: CSP ハンドル
SubserviceUID: サービス UID
図 5-1 IC カードへの接続
2
IC カードへのログイン
IC カードへのログインのコーリングシーケンスを以下に示す(図 5-2)
。
SecKeychainGetStatus
キーチェーンのステータスを取得
keychain: キーチェーン
keychainStatus: キーチェーンステータス
↓
SecKeychainUnlock
キーチェーンのロックを解除
keychain: キーチェーン
passwordLength: パスワード長
password: パスワード
usePassword: TRUE
図 5-2 IC カードへのログイン
7
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
3
IC カードから切断
IC カードから切断のコーリングシーケンスを以下に示す(図 5-3)
。
SecKeychainGetStatus
キーチェーンのステータスを取得
keychain: キーチェーン
keychainStatus: キーチェーンステータス
↓
SecKeychainLock
キーチェーンをロック
keychain: キーチェーン
図 5-3 IC カードから切断
4
証明書取得(利用者証明書、都道府県知事の自己署名証明書)
証明書取得のコーリングシーケンスを以下に示す(図 5-4)
。
IC カードへの接続(1 IC カードへの接続 を参照)
↓
IC カードへのログイン(2
IC カードへのログイン
を参照)
↓
SecKeychainSearchCreateFromAttr 証明書のサーチリストを生成
ibutes
keychainOrArray: キーチェーン
itemClass: kSecCertificateItemClass
attrList: NULL
searchRef: サーチリスト格納領域アドレス
↓
①ループ
SecKeychainSearchCopyNext
サーチリストから次のキーチェーンアイテムを取得
searchRef: サーチリスト
itemRef: キーチェーンアイテム格納領域アドレス
↓
SecCertificateGetData
キーチェーンアイテムから証明書データを取得
certificate: キーチェーンアイテム
data: 証明書データ格納領域アドレス
↓
SecCertificateGetCLHandle
キーチェーンアイテムから CL ハンドルを取得
certificate: キーチェーンアイテム
clHandle: CL ハンドル
↓
8
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
CSSM_CL_CertGetFirstFieldValue
証明書から指定した OID に対応する属性を検索する。
CLHandle: CL ハンドル
Cert: 証明書データ
CertField: 証明書フィールド識別子
(CSSMOID_X509V1SubjectNameStd)
ResultsHandle: CSSM ハンドル
NumberOfMatchedFields:OID に一致したフィールド数
Value: Subject フィールド格納領域アドレス
↓
CSSM_CL_CertGetFirstFieldValue
証明書から指定した OID に対応する属性を検索する。
CLHandle: CL ハンドル
Cert: 証明書データ
CertField: 証明書フィールド識別子
(CSSMOID_X509V1IssuerNameStd)
ResultsHandle: CSSM ハンドル
NumberOfMatchedFields:OID に一致したフィールド数
Value: Issuer フィールド格納領域アドレス
↓
CSSM_CL_CertAbortQuery
証明書の検索を終了する。
CLHandle: CL ハンドル
ResultsHandle: CSSM ハンドル
↓
Subject = Issuer の場合は都道府県知事の自己署名証明書
Subject ≠ Issuer の場合は利用者証明書
↓
≠ の場合
取得した証明書:求める証明書
↓
→ ①に戻る
= の場合
IC カードから切断(3 IC カードから切断 を参照)
図 5-4 証明書取得
5
署名生成(署名対象データを渡すパターン)
署名生成(署名対象データを渡すパターン)のコーリングシーケンスを以下に示す(図
5-5)
。
IC カードへの接続(1 IC カードへの接続 を参照)
9
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
↓
IC カードへのログイン(2
IC カードへのログイン
を参照)
↓
SecKeychainSearchCreateFromAttr 証明書のサーチリストを生成
ibutes
keychainOrArray: キーチェーン
itemClass: CSSM_DL_DB_RECORD_ANY
attrList: NULL
searchRef: サーチリスト格納領域アドレス
↓
SecKeychainSearchCopyNext
サーチリストから次のキーチェーンアイテムを取得
searchRef: サーチリスト
itemRef: キーチェーンアイテム格納領域アドレス
↓
SecKeychainItemCopyAttributesAn キーチェーンアイテムからアイテムクラスを取得
dData
ItemRef: キーチェーンアイテム
Info: NULL
ItemClass: アイテムクラス
*attrList: NULL
length: NULL
outData: NULL
↓
SecKeychainGetCSPHandle
キーチェーンに対応する CSP ハンドルを取得
keychain,: キーチェーン
cspHandle: CSP ハンドル
↓
SecKeyGetCSSMKey
キーチェーンから CSSM のキー(秘密鍵)を取得
key: キーチェーンアイテム
cssmKey: CSSM キー
↓
SecKeyGetCredentials
キーチェーンアイテムから秘密鍵を利用する為の信用情
報を取得
keyRef: キーチェーンアイテム
operation: CSSM_ACL_AUTHORIZATION_SIGN
credentialType: kSecCredentialTypeDefault
outCredentials: 信用情報
↓
10
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
CSSM_CSP_CreateDigestContext
CSSM で使用するダイジェストハンドルを取得
CSPHandle: CSP ハンドル
AlgorithmID: CSSM_ALGID_SHA1, CSSM_ALGID_SHA256 より
署名生成に利用するダイジェストのアルゴリズム ID を指
定
NewContextHandle: ダイジェストハンドル
↓
CSSM_DigestDataInit
ダイジェストの初期化
CCHandle: ダイジェストハンドル
↓
CSSM_DigestDataUpdate
ダイジェスト値にデータをアップデート
CCHandle: ダイジェストハンドル
DataBufs: ハッシュ対象データ
DataBufCount: 1
↓
CSSM_DigestDataFinal
ダイジェストの取得・終了処理
CCHandle: ダイジェストハンドル
Digest: ダイジェスト格納領域アドレス
↓
CSSM_DeleteContext
CSSM のハンドルを破棄
CCHandle: ダイジェストハンドル
↓
CSSM_CSP_CreateSignatureContext CSSM で使用する署名生成ハンドルを取得
CSPHandle: CSP ハンドル
AlgorithmID: CSSM_ALGID_RSA
AccessCred: 信用情報
Key: CSSM キー
NewContextHandle: 署名生成ハンドル
↓
CSSM_SignData
署名生成(SHA1、SHA256)
CCHandle: 署名生成ハンドル
DataBufs: CSSM_DATA 型のハッシュ値(*)
DataBufCount: 1
DigestAlgorithm: CSSM_ALGID_SHA1、CSSM_ALGID_NONE(*)
より署名生成に利用するダイジェストアルゴリズムを指
定
Signature: 署名値
11
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
* SHA256 の場合は CSSM_ALGID_NONE を指定し、CSSM_DATA 型のハッシュ値の先頭に SHA256 の
OID を指定する。
↓
CSSM_DeleteContext
署名生成ハンドルを破棄
CCHandle: 署名生成ハンドル
↓
IC カードから切断(3 IC カードから切断 を参照)
図 5-5 署名生成(署名対象データを渡すパターン)
6
繰り返し署名生成(署名対象データを渡すパターン)
「5 署名生成(署名対象データを渡すパターン)
」の網掛け部分を署名対象データの個数
分だけ繰り返して呼び出す。
7
署名生成(ハッシュ値を渡すパターン)
署名生成
(ハッシュ値を渡すパターン)のコーリングシーケンスを以下に示す
(図 5-6)
。
IC カードへの接続(1 IC カードへの接続 を参照)
↓
IC カードへのログイン(2
IC カードへのログイン
を参照)
↓
SecKeychainSearchCreateFromAttr 証明書のサーチリストを生成
ibutes
keychainOrArray: キーチェーン
itemClass: CSSM_DL_DB_RECORD_ANY
attrList: NULL
searchRef: サーチリスト格納領域アドレス
↓
SecKeychainSearchCopyNext
サーチリストから次のキーチェーンアイテムを取得
searchRef: サーチリスト
itemRef: キーチェーンアイテム格納領域アドレス
↓
SecKeychainItemCopyAttributesAn キーチェーンアイテムからアイテムクラスを取得
dData
ItemRef: キーチェーンアイテム
Info: NULL
ItemClass: アイテムクラス
*attrList: NULL
length: NULL
12
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
outData: NULL
↓
SecKeychainGetCSPHandle
キーチェーンに対応する CSP ハンドルを取得
keychain,: キーチェーン
cspHandle: CSP ハンドル
↓
SecKeyGetCSSMKey
キーチェーンから CSSM のキー(秘密鍵)を取得
key: キーチェーンアイテム
cssmKey: CSSM キー
↓
SecKeyGetCredentials
キーチェーンアイテムから秘密鍵を利用する為の信用情
報を取得
keyRef: キーチェーンアイテム
operation: CSSM_ACL_AUTHORIZATION_SIGN
credentialType: kSecCredentialTypeDefault
outCredentials: 信用情報
↓
CSSM_CSP_CreateSignatureContext CSSM で使用する署名生成ハンドルを取得
CSPHandle: CSP ハンドル
AlgorithmID: CSSM_ALGID_RSA
AccessCred: 信用情報
Key: CSSM キー
NewContextHandle: 署名生成ハンドル
↓
CSSM_SignData
署名生成(SHA1、SHA256)
CCHandle: 署名生成ハンドル
DataBufs: CSSM_DATA 型のハッシュ値(*)
DataBufCount: 1
DigestAlgorithm: CSSM_ALGID_SHA1、CSSM_ALGID_NONE(*)
より署名生成に利用するダイジェストアルゴリズムを指
定
Signature: 署名値
* SHA256 の場合は CSSM_ALGID_NONE を指定し、CSSM_DATA 型のハッシュ値の先頭に SHA256 の
OID を指定する。
↓
CSSM_DeleteContext
署名生成ハンドルを破棄
CCHandle: 署名生成ハンドル
↓
13
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
IC カードから切断(3 IC カードから切断 を参照)
図 5-6 署名生成(ハッシュ値を渡すパターン)
8
繰り返し署名生成(ハッシュ値を渡すパターン)
「7 署名生成(ハッシュ値を渡すパターン)」の網掛け部分を署名対象データの個数分だ
け繰り返して呼び出す。
9
署名検証(検証対象データを渡すパターン)
署名検証(検証対象データを渡すパターン)のコーリングシーケンスを以下に示す(図
5-7)
。
IC カードへの接続(1 IC カードへの接続 を参照)
↓
IC カードへのログイン(2
IC カードへのログイン
を参照)
↓
SecKeychainSearchCreateFromAttr 証明書のサーチリストを生成
ibutes
keychainOrArray: キーチェーン
itemClass: kSecCertificateItemClass
attrList: NULL
searchRef: サーチリスト格納領域アドレス
↓
SecKeychainSearchCopyNext
サーチリストから次のキーチェーンアイテムを取得
searchRef: サーチリスト
itemRef: キーチェーンアイテム格納領域アドレス
↓
SecCertificateGetData
キーチェーンアイテムから証明書データを取得
certificate: キーチェーンアイテム
data: 証明書データ格納領域アドレス
↓
SecCertificateGetCLHandle
キーチェーンアイテムから CL ハンドルを取得
certificate: キーチェーンアイテム
clHandle: CL ハンドル
↓
14
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
CSSM_CL_CertGetFirstFieldValue
証明書から指定した OID に対応する属性を検索する。
CLHandle: CL ハンドル
Cert: 証明書データ
CertField: 証明書フィールド識別子
ResultsHandle: CSSM ハンドル
NumberOfMatchedFields:
Value: OID 一致したフィールド数
↓
CSSM_CL_CertAbortQuery
証明書の検索を終了する。
CLHandle: CL ハンドル
ResultsHandle: CSSM ハンドル
↓
SecKeychainGetCSPHandle
キーチェーンに対応する CSP ハンドルを取得
keychain: キーチェーン
cspHandle: CSP ハンドル
↓
CSSM_CSP_CreateDigestContext
CSSM で使用するダイジェストハンドルを取得
CSPHandle: CSP ハンドル
AlgorithmID: CSSM_ALGID_SHA1, CSSM_ALGID_SHA256 より
署名検証に利用するダイジェストのアルゴリズム ID を指
定
NewContextHandle: ダイジェストハンドル
↓
CSSM_DigestDataInit
ダイジェストの初期化
CCHandle: ダイジェストハンドル
↓
CSSM_DigestDataUpdate
ダイジェスト値にデータをアップデート
CCHandle: ダイジェストハンドル
DataBufs: ハッシュ対象データ
DataBufCount: 1
↓
CSSM_DigestDataFinal
ダイジェストの取得・終了処理
CCHandle: ダイジェストハンドル
Digest: ダイジェスト格納領域アドレス
↓
CSSM_DeleteContext
CSSM のハンドルを破棄
CCHandle: ダイジェストハンドル
↓
15
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
CSSM_Init
CSSM を初期化
Version: CSSM バージョン
Scope: CSSM_PRIVILEGE_SCOPE_NONE
CallerGuid: GID
KeyHierarchy: CSSM_KEY_HIERARCHY_NONE
PvcPolicy: CSSM_PVC_NONE
Reserved: NULL
↓
CSSM_ModuleLoad
CSSM の CSP モジュールをロード
ModuleGuid: &gGuidAppleCSP
KeyHierarchy: CSSM_KEY_HIERARCHY_NONE
AppNotifyCallback: NULL
AppNotifyCallbackCtx): NULL
↓
CSSM_ModuleAttach
CSSM の CSP モジュールを CSSM にアタッチ
ModuleGuid: &gGuidAppleCSP
Version: CSSM バージョン
MemoryFuncs: CSSM_API_MEMORY_FUNCS 構造体
SubserviceID: 0
SubServiceType: CSSM_SERVICE_CSP
AttachFlags: 0
KeyHierarchy: CSSM_KEY_HIERARCHY_NONE
FunctionTable: NULL
NumFunctionTable: 0
Reserved: NULL
NewModuleHandle: CSP ハンドル
↓
CSSM_CSP_CreateSignatureContext CSSM で使用する署名生成ハンドルを取得
CSPHandle: CSP ハンドル
AlgorithmID: CSSM_ALGID_RSA
AccessCred: NULL
Key: CSSM キー
NewContextHandle: 署名検証ハンドル
↓
16
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
CSSM_VerifyData
署名検証
CCHandle: 署名検証ハンドル
DataBufs: ダイジェスト
DataBufCount: 1
DigestAlgorithm: CSSM_ALGID_SHA1, CSSM_ALGID_SHA256
より署名検証に利用するダイジェストアルゴリズムを指
定
Signature: 署名値格納領域アドレス
↓
CSSM_DeleteContext
CSSM のコンテキストを破棄
CCHandle: 署名検証ハンドル
↓
IC カードから切断(3 IC カードから切断 を参照)
図 5-7 署名検証(検証対象データを渡すパターン)
10
繰り返し署名検証(検証対象データを渡すパターン)
「9 署名検証(検証対象データを渡すパターン)
」の網掛け部分を検証対象データの個数
分だけ繰り返して呼び出す。
11
署名検証(ハッシュ値を渡すパターン)
署名検証
(ハッシュ値を渡すパターン)のコーリングシーケンスを以下に示す
(図 5-8)
。
IC カードへの接続(1 IC カードへの接続 を参照)
↓
IC カードへのログイン(2
IC カードへのログイン
を参照)
↓
SecKeychainSearchCreateFromAttr 証明書のサーチリストを生成
ibutes
keychainOrArray: キーチェーン
itemClass: kSecCertificateItemClass
attrList: NULL
searchRef: サーチリスト格納領域アドレス
↓
SecKeychainSearchCopyNext
サーチリストから次のキーチェーンアイテムを取得
searchRef: サーチリスト
itemRef: キーチェーンアイテム格納領域アドレス
↓
17
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
SecCertificateGetData
キーチェーンアイテムから証明書データを取得
certificate: キーチェーンアイテム
data: 証明書データ格納領域アドレス
↓
SecCertificateGetCLHandle
キーチェーンアイテムから CL ハンドルを取得
certificate: キーチェーンアイテム
clHandle: CL ハンドル
↓
CSSM_CL_CertGetFirstFieldValue
証明書から指定した OID に対応する属性を検索する。
CLHandle: CL ハンドル
Cert: 証明書データ
CertField: 証明書フィールド識別子
ResultsHandle: CSSM ハンドル
NumberOfMatchedFields:
Value: OID 一致したフィールド数
↓
CSSM_CL_CertAbortQuery
証明書の検索を終了する。
CLHandle: CL ハンドル
ResultsHandle: CSSM ハンドル
↓
SecKeychainGetCSPHandle
キーチェーンに対応する CSP ハンドルを取得
keychain: キーチェーン
cspHandle: CSP ハンドル
↓
CSSM_Init
CSSM を初期化
Version: CSSM バージョン
Scope: CSSM_PRIVILEGE_SCOPE_NONE
CallerGuid: GID
KeyHierarchy: CSSM_KEY_HIERARCHY_NONE
PvcPolicy: CSSM_PVC_NONE
Reserved: NULL
↓
CSSM_ModuleLoad
CSSM の CSP モジュールをロード
ModuleGuid: &gGuidAppleCSP
KeyHierarchy: CSSM_KEY_HIERARCHY_NONE
AppNotifyCallback: NULL
AppNotifyCallbackCtx): NULL
↓
18
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
CSSM_ModuleAttach
CSSM の CSP モジュールを CSSM にアタッチ
ModuleGuid: &gGuidAppleCSP
Version: CSSM バージョン
MemoryFuncs: CSSM_API_MEMORY_FUNCS 構造体
SubserviceID: 0
SubServiceType: CSSM_SERVICE_CSP
AttachFlags: 0
KeyHierarchy: CSSM_KEY_HIERARCHY_NONE
FunctionTable: NULL
NumFunctionTable: 0
Reserved: NULL
NewModuleHandle: CSP ハンドル
↓
CSSM_CSP_CreateSignatureContext CSSM で使用する署名生成ハンドルを取得
CSPHandle: CSP ハンドル
AlgorithmID: CSSM_ALGID_RSA
AccessCred: NULL
Key: CSSM キー
NewContextHandle: 署名検証ハンドル
↓
CSSM_VerifyData
署名検証
CCHandle: 署名検証ハンドル
DataBufs: ダイジェスト
DataBufCount: 1
DigestAlgorithm: CSSM_ALGID_SHA1, CSSM_ALGID_SHA256
より署名検証に利用するダイジェストアルゴリズムを指
定
Signature: 署名値格納領域アドレス
↓
CSSM_DeleteContext
CSSM のコンテキストを破棄
CCHandle: 署名検証ハンドル
↓
IC カードから切断(3 IC カードから切断 を参照)
図 5-8 署名検証(ハッシュ値を渡すパターン)
12
繰り返し署名検証(ハッシュ値を渡すパターン)
「11 署名検証(ハッシュ値を渡すパターン)」の網掛け部分を署名検証対象データの個
19
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
数分だけ繰り返して呼び出す(すべての電子署名が同一の秘密鍵で生成された場合)。
20
API 仕様書【Mac OS X C 言語 IF 編】第 2.1 版
禁・無断転載
公的個人認証サービス
利用者クライアントソフト API 仕様書
【Mac OS X C 言語 IF 編】
第 2.1 版
(注意事項)
※利用者クライアントソフトの著作権は、総務省、公的個人認証サービス共通基盤事業運用会議
が保有しており、国際著作権条約及び日本国の著作権関連法令によって保護されています。
※JPKI 利用者ソフトの利用に当たっては、次に掲げる行為を禁止します。
(1) 利用者クライアントソフトを電子申請・届出等の行政手続等以外の目的で利用するこ
と。
(2) 利用者クライアントソフトに対し、総務省、公的個人認証サービス共通基盤事業運用
会議に許可なく改造等を行うこと。
※総務省、公的個人認証サービス共通基盤事業運用会議、地方公共団体情報システム機構は、利
用者が利用者クライアントソフトを利用したことにより発生した利用者の損害及び利用者が
第三者に与えた損害について、一切の責任を負いません。
※商標については次の通りです。
(1) Microsoft Windows および Internet Explorer は、米国 Microsoft Corporation の米国
およびその他の国における登録商標または商標です。
(2) Macintosh、Mac、MacOS、OS X および Safari は、米国およびその他の国で登録されて
いる Apple Inc.の登録商標です。
(3) その他、記載されている会社名、製品名等は、各社の登録商標または商標です。
21