公的個人認証サービス 利用者クライアントソフト API 仕様書 Mac OS XC 言語 IF 編 第 4.3 版 地方公共団体情報システム機構

28 

Loading....

Loading....

Loading....

Loading....

Loading....

全文

(1)

公的個人認証サービス

利用者クライアントソフト API 仕様書

【Mac OS X C 言語 IF 編】

第 4.3 版

(2)

変更履歴 版数 変更日付 変更内容 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 を追加 1.3 版 平成 20 年 10 月 10 日 表 3-1 動作環境 プラットフォームに Mac OS X 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 を追加 1.4 版 平成 25 年 12 月 1 日 第3章 動作環境 プラットフォームより Mac OS X 10.4.X, Mac OS X 10.5.X を削除、 Mac OS X 10.7.5, OS X 10.8.4 を追加 第5章 第3節 9 ハッシュアルゴリズム SHA256 を 追加 第5章 第3節 11 ハッシュアルゴリズム SHA256 を追加 2.0 版 平成 26 年 4 月 1 日 全体 「地方公共団体情報システム機構」への事業承継 により、組織名称を変更する。 全体 「公的個人認証サービス共通基盤事業運用会議」 への事業承継により、「公的個人認証サービス都道府県 協議会」の組織名称を変更する。 2.1 版 平成 26 年 7 月 1 日 ・第3章 表 3-1 動作環境(MacOS) プラットフォー ムの条件で OS X 10.8.4 を OS X 10.8.5(64bit)に変更、 OS X 10.9.3(64bit)を追加 ・第5章 第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 につい ての記述を追加、またその注釈を追加

(3)

4.0 版 平成 27 年 6 月 30 日 番号制度対応に伴い、以下を修正 第1章 第1節 用語の定義を追加 第2章 ドキュメント体系を修正。 第3章 動作環境プラットフォームより MacOSX 10.7 を削除、OSX 10.9 を追加 第5章 第3節 5 ハッシュアルゴリズム SHA256 を 追加 第5章 第3節 7 ハッシュアルゴリズム SHA256 を 追加 第3章 動作環境 住基カードのみ対応であることを明 記、個人番号カードの記述を削除。 4.1 版 平成 28 年 8 月 31 日 PC 接続機能追加に伴い、以下を修正。 ・第1章 第1節の「用語の定義」に以下を追加。  PC/SC  IC カードリーダライタ ・第 2 章 図 2-2 ドキュメント体系図(Android 版)追加。 ・第 3 章 表 3-1 に PC 接続機能対応可否追加。 ・第 3 章 表 3-2 の項目を IC カードリーダライタから PC/SC 対応 IC カードリーダライタに変更。 4.2 版 平成 29 年 7 月 31 日 Java9 対応に伴い、以下を修正。 ・第2章 ドキュメント体系図を改訂 ・第3章 表 3-1の OS から OS X 10.8, 10.9 を削除。 ・第3章 表 3-1の OS に OS X 10.11, macOS v10.12 を 追加。 ・第3章 表 3-1の JavaVM に JRE9 を追加。 4.3 版 平成 31 年 3 月 31 日 ・第3章 表 3-1の OS から OS X 10.11 を削除。 ・第3章 表 3-1の OS に macOS v10.13 を追加。

(4)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 i − 目次 − 第1章 はじめに ... 1 第1節 用語の定義 ... 2 第2章 ドキュメント体系 ... 3 第3章 動作環境 ... 5 第4章 機能仕様 ... 6 第1節 ソフトウェア構成図 ... 6 第2節 実現可能な機能の一覧 ... 7 第5章 API 仕様 ... 8 第1節 サポートAPI 一覧 ... 8 第2節 サポートAPI 仕様詳細 ... 9 1 Keychain Services ... 9 2 CSSM ... 9 第3節 コーリングシーケンス ... 10 1 IC カードへの接続 ... 10 2 IC カードへのログイン ... 10 3 IC カードから切断 ... 11 4 証明書取得(利用者証明書、認証局の自己署名証明書) ... 11 5 署名生成(署名対象データを渡すパターン) ... 13 6 繰り返し署名生成(署名対象データを渡すパターン) ... 15 7 署名生成(ハッシュ値を渡すパターン)... 15 8 繰り返し署名生成(ハッシュ値を渡すパターン) ... 17 9 署名検証(検証対象データを渡すパターン) ... 17 10 繰り返し署名検証(検証対象データを渡すパターン) ... 20 11 署名検証(ハッシュ値を渡すパターン) ... 20 12 繰り返し署名検証(ハッシュ値を渡すパターン) ... 23

(5)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版

1 第1章 はじめに

公的個人認証サービス 利用者クライアントソフト(以下、JPKI 利用者ソフト)における、以 下の機能を実現するための Application Program Interface(以下、API)仕様について説明する。

 証明書取得機能  電子署名生成機能  電子署名検証機能

(6)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 2 第1節 用語の定義 表 1-1 用語の定義 項番 用語・略号 説明 1 IC カード 以下のカードを指す総称。 ・住基カード ・個人番号カード 2 電子証明書 公開鍵及び発行対象を識別する情報を含むデータに、認証局が発行対象 の正当性を保証する電子署名を付与して、発行されるデータをいう。 データは、日本工業規格 X560-1 の識別符号化規則により符号化された 形式で利用される。 3 証明書 電子証明書と同義。 4 署名用電子証 明書 公的個人認証サービスで発行した署名用途の利用者の電子証明書。 本書では以下の電子証明書を指す。 ・住基カードに格納された署名用電子証明書 ・個人番号カードに格納された署名用電子証明書 5 利用者証明用 電子証明書 公的個人認証サービスで発行した利用者証明用途の利用者の電子証明 書。 本書では以下の電子証明書を指す。 ・個人番号カードに格納された利用者証明用電子証明書 6 利用者証明書 公的個人認証サービスで発行した利用者の証明書。 本書では以下の電子証明書を指す。 ・住基カードに格納された署名用電子証明書 ・個人番号カードに格納された署名用電子証明書 ・個人番号カードに格納された利用者証明用電子証明書 7 利用者秘密鍵 公開鍵暗号方式において用いられる鍵ペアの一方。公開鍵に対する、利 用者のみが保有する鍵。 本書では以下の秘密鍵を指す。 ・住基カードに格納された署名用利用者秘密鍵 ・個人番号カードに格納された署名用利用者秘密鍵 ・個人番号カードに格納された利用者証明用利用者秘密鍵 8 認証局の自己 署名証明書 自認証局の公開鍵に対して、自認証局の秘密鍵で署名した証明書。 本書では以下の電子証明書を指す。 ・住基カードに格納された都道府県知事の自己署名証明書 ・個人番号カードに格納された署名用認証局の自己署名証明書 ・個人番号カードに格納された利用者証明用認証局の自己署名証明書 9 PC/SC Personal Computer/Smart Card の略。

10 IC カ ー ド リ ーダライタ

(7)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 3 第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 です。 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 です。 API 仕様書 Mac OS X C 言語インターフェース編 Mac OS X の C インターフェースの API 仕様について説明しています。 Jar ファイル利用手引き 利用者クライアントソフトの Jar ファイルを利用する方法について説明しています。 図 2-1 ドキュメント体系図

(8)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 4 利用者クライアントソフト 機能概要説明書(Android 版) Android 版 JPKI 利用者ソフトの機能概要について説明しています。 API 仕様書 Android インテント編 インテントによる外部インターフェース仕様について説明しています。 図 2-2 ドキュメント体系図(Android 版)

(9)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 5 第3章 動作環境 Mac OS X の C 言語インターフェースの動作環境は以下の通りとする。 但し、対応している IC カードは住基カードのみである。 表 3-1 動作環境(MacOS) OS(※1, ※2) Web ブラウザ (※1) JavaVM(※1) PC 接続機能 対応可否 (※3) JRE8.0 JRE9.0

macOS v10.12 (64bit) Safari 10 ○ ○ × macOS v10.13 (64bit) Safari 11 ○ ○ ×

※1 本仕様書で定めるバージョンの開発時点の環境。最新の動作環境の情報は、JPKI ポータル サイトに掲載するものとする。

※2 動作前提条件として、Mac OS Forge が提供する「Smart Card Services」をそれぞれの OS に合ったものをダウンロードし、インストールする必要がある。 ※3 PC 接続機能については「利用者クライアントソフト 機能概要説明書 第3章 第3節 PC 接 続機能について」を参照。 表 3-2 動作環境 項目 条件 IC カード 住基カードであること。 PC/SC 対応 IC カード リーダライタ 以下の条件を満たす PC/SC 対応 IC カードリーダライタとする。(「住基 カード対応適合性検証済み IC カードリーダーライタ一覧」(※1)を参照 のこと。) ・ IC カードのインターフェース(非接触型、接触非接触両対応型)に対 応していること ・ PC/SC 対応 IC カードリーダライタであること ・ USB など、パソコンに接続するためのインターフェースを有すること ・ PC/SC 対応 IC カードリーダライタと通信するためのドライバソフト ウェアが提供されていること ・ IC カードの搬送方式が手動挿入/手動排出タイプまたは自動挿入/自 動排出タイプであること ・ IC カードを挿入するスロットの数は 1 つとし、1 度に挿入できる IC カードは 1 枚であること ※1 最新の「住基カード対応適合性検証済み IC カードリーダーライタ一覧」の情報は、JPKI ポ ータルサイトに掲載するものとする。

(10)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版

6 第4章 機能仕様

第1節 ソフトウェア構成図

本 仕様書で は、 JPKI 利用 者ソフト のうち、 下図 の太枠に 示す Keychain Services およ び CSSM(Common Security Services Manager)の仕様をまとめる。

図 4-1 ソフトウェア構成図 官職証明書検証 サービス 証明書 検証要求 上位アプリケーション カード AP ライブラリ JavaI/F

Smart Card Services (PC/SC) PC/SC リーダライタドライバ

PC/SC リーダライタ

公的個人認証サービスカードアプリケーション Keychain Services API

カードコマンド カードコマンド カード AP ライブラリ カード I/F PKCS#11 API JPKI 利用者ソフト 個人認証サービス AP C 言語 I/F JavaI/F JavaI/F C 言語 I/F

CSSM API オンライン窓口 サービス オンライン窓口 処理要求 Keychain Services

CSSM (Common Security Services Manager) カード AP ライブラリ PKCS#11 Smart Card Services API (個人番号カード のみ対象の I/F) 個人認証サービス AP JavaI/F

(11)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 7 第2節 実現可能な機能の一覧 Keychain Services および CSSM で実現可能な機能の一覧を表 4-1に示す。 表 4-1 実現可能な機能の一覧 NO 機能 概要 1 利用者証明書取得 IC カードに格納された利用者証明書を取得する。 2 認証局の自己署名証明書取得 IC カードに格納された認証局の自己署名証明書を取 得する。 3 署名生成(署名対象データを渡すパ ターン) 署名対象データからハッシュ値を計算し、IC カード に格納された利用者秘密鍵を使用して電子署名を生 成する。 4 繰り返し署名生成(署名対象データ を渡すパターン) NO3 の処理を繰り返し実行し、複数の署名対象データ に対する電子署名を生成する。 5 署名生成(ハッシュ値を渡すパター ン) ハッシュ値に対して、IC カードに格納された利用者 秘密鍵を使用して電子署名を生成する。 6 繰り返し署名生成(ハッシュ値を渡 すパターン) NO5 の処理を繰り返し実行し、複数のハッシュ値に対 する電子署名を生成する。 7 署名検証(検証対象データを渡すパ ターン) 検証対象データからハッシュ値を計算し、ハッシュ 値、電子署名、公開鍵を使用して電子署名を検証する。 8 繰り返し署名検証(検証対象データ を渡すパターン) NO7 の処理を繰り返し実行し、複数の電子署名を検証 する。 9 署名検証(ハッシュ値を渡すパター ン) ハッシュ値、電子署名、公開鍵を使用して電子署名を 検証する。 10 繰り返し署名検証(ハッシュ値を渡 すパターン) NO9 の処理を繰り返し実行し、複数の電子署名を検証 する。

(12)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版

8 第5章 API 仕様

第1節 サポート API 一覧

Keychain Services および CSSM のサポート API の一覧を表 5-1に示す。

表 5-1 サポート API 一覧 NO API 名 概要 1 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 ダイジェストの初期化する。

(13)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 9 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節 サポート API 仕様詳細 1 Keychain Services

Keychain Services の詳細については、Apple 社の資料を参照してください。

2 CSSM

(14)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 10 第3節 コーリングシーケンス 「第4章 第2節 実現可能な機能の一覧」を実現するためのコーリングシーケンスを以下に示 す。上位アプリケーションは、このコーリングシーケンスに沿って実装すること。 1 IC カードへの接続 IC カードへの接続のコーリングシーケンスを以下に示す(図 5-1)。 図 5-1 IC カードへの接続 2 IC カードへのログイン IC カードへのログインのコーリングシーケンスを以下に示す(図 5-2)。 図 5-2 IC カードへのログイン SecKeychainCopyDomainSearchList IC カードに対応するキーチェーンのリストを作成 domain: kSecPreferencesDomainDynamic searchList: リスト格納領域ドレス ↓ SecKeychainGetCSPHandle キーチェーンに対応する CSP ハンドルを取得 keychain: キーチェーン cspHandle: CSP ハンドル ↓ CSSM_GetSubserviceUIDFromHandle CSP ハンドルから対応するサービス UID を取得 ModuleHandle: CSP ハンドル SubserviceUID: サービス UID SecKeychainGetStatus キーチェーンのステータスを取得 keychain: キーチェーン keychainStatus: キーチェーンステータス ↓ SecKeychainUnlock キーチェーンのロックを解除 keychain: キーチェーン passwordLength: パスワード長 password: パスワード usePassword: TRUE

(15)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 11 3 IC カードから切断 IC カードから切断のコーリングシーケンスを以下に示す(図 5-3)。 図 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 ハンドル ↓ SecKeychainGetStatus キーチェーンのステータスを取得 keychain: キーチェーン keychainStatus: キーチェーンステータス ↓ SecKeychainLock キーチェーンをロック keychain: キーチェーン

(16)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 12 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 証明書取得 取得した証明書:求める証明書 ≠ の場合 = の場合

(17)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 13 5 署名生成(署名対象データを渡すパターン) 署名生成(署名対象データを渡すパターン)のコーリングシーケンスを以下に示す(図 5-5)。 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 outData: NULL ↓ SecKeychainGetCSPHandle キーチェーンに対応する CSP ハンドルを取得 keychain,: キーチェーン cspHandle: CSP ハンドル ↓ SecKeyGetCSSMKey キーチェーンから CSSM のキー(秘密鍵)を取得 key: キーチェーンアイテム cssmKey: CSSM キー ↓ SecKeyGetCredentials キーチェーンアイテムから秘密鍵を利用する為の信用情 報を取得 keyRef: キーチェーンアイテム

(18)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 14 operation: CSSM_ACL_AUTHORIZATION_SIGN credentialType: kSecCredentialTypeDefault outCredentials: 信用情報 ↓ 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

(19)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版

15

より署名生成に利用するダイジェストアルゴリズムを指 定

Signature: 署名値

* 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

(20)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 16 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: 信用情報 ↓ 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 を指定する。

(21)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 17 CSSM_DeleteContext 署名生成ハンドルを破棄 CCHandle: 署名生成ハンドル ↓ 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 ハンドル ↓

(22)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 18 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: ダイジェストハンドル ↓

(23)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 19 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: 署名検証ハンドル ↓

(24)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 20 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: キーチェーンアイテム格納領域アドレス ↓

(25)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 21 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 ↓

(26)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 22 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 署名検証(ハッシュ値を渡すパターン)

(27)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版

23

12 繰り返し署名検証(ハッシュ値を渡すパターン)

「11 署名検証(ハッシュ値を渡すパターン)」の網掛け部分を署名検証対象データの個 数分だけ繰り返して呼び出す(すべての電子署名が同一の秘密鍵で生成された場合)。

(28)

API 仕様書【Mac OS X C 言語 IF 編】第 4.3 版 24 (注意事項) ※利用者クライアントソフトの著作権は、総務省、地方公共団体情報システム機構が保有してお り、国際著作権条約及び日本国の著作権関連法令によって保護されています。 ※利用者クライアントソフトの利用に当たっては、次に掲げる行為を禁止します。 (1) 利用者クライアントソフトを電子署名に係る地方公共団体情報システム機構の認証業 務に関する法律において制限されている電子証明書の用途で利用すること。 (2) 利用者クライアントソフトに対し、総務省、地方公共団体情報システム機構に許可な く改造等を行うこと。 ※総務省、 地方公共団体情報システム機構は、利用者が利用者クライアントソフトを利用したこ とにより発生した利用者の損害及び利用者が第三者に与えた損害について、一切の責任を負い ません。 ※商標については次の通りです。

(1) Microsoft Windows および Internet Explorer は、米国 Microsoft Corporation の米国 およびその他の国における登録商標または商標です。

(2) Macintosh、Mac、MacOS、OS X および Safari は、米国およびその他の国で登録されて いる Apple Inc.の登録商標です。

(3) Android は、Google Inc.の米国およびその他の国における登録商標です。 (4) その他、記載されている会社名、製品名等は、各社の登録商標または商標です。 禁・無断転載 公的個人認証サービス 利用者クライアントソフト API 仕様書 【Mac OS X C 言語 IF 編】 第 4.3 版

Updating...

参照

Updating...

関連した話題 :