|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Objectcom.nttdocomo.security.PKCS7Signer
PKCS#7 SignedData フォーマットに準拠したデジタル署名付きデータの生成を行うための機能を提供します。
署名を行うためには、
このクラスのオブジェクトに対して、
署名の対象となるデータ(署名対象データ)を
update
メソッドを用いて設定する必要があります。
update
メソッドは複数回呼び出すことが可能であり、
その場合は既に設定されている署名対象データの末尾に追加されます。
また、署名を行う際の属性(メッセージダイジェストのアルゴリズムや、 署名の対象となるデータのコンテントタイプ)を設定することができます。 設定できる属性値については、対応するメソッドの説明文を参照してください。
オブジェクトに署名対象データが設定されている状態で
sign()
メソッドを呼び出すことにより、
デジタル署名付きデータオブジェクトを取得することができます。
ダイジェスト情報の暗号化には UIM 内の秘密鍵(RSA)を使用します。 また、証明書は UIM 内のユーザ証明書を使用します。
[DoJa-5.0 (903i) 以降]
ダイジェスト情報の暗号化には、端末メモリ内の秘密鍵も使用可能です。
また、証明書は、端末メモリ内のユーザ証明書も使用します。
update
メソッドにて設定できるデータの合計サイズは
150 キロバイトです。
PKCS7SignedData
フィールドの概要 | |
static int |
DATA
コンテントタイプの一つで、 データ(data)を表します(=0)。 |
static int |
SIGNED_DATA
コンテントタイプの一つで、 デジタル署名付きデータ(signedData)を表します(=1)。 |
コンストラクタの概要 | |
PKCS7Signer()
PKCS7Signer オブジェクトを生成します。 |
メソッドの概要 | |
int |
getContentType()
このオブジェクトに設定されているコンテントタイプを取得します。 |
String |
getDigestAlgorithm()
このオブジェクトに設定されているメッセージダイジェストのアルゴリズムを取得します。 |
void |
reset()
このオブジェクトに設定されている署名対象データを破棄します。 |
void |
setContentType(int contentType)
署名対象データのコンテントタイプを設定します。 |
void |
setDigestAlgorithm(String hashAlgorithm)
メッセージダイジェストのアルゴリズムを設定します。 |
PKCS7SignedData |
sign()
デジタル署名付きデータ(PKCS#7 SignedData 形式)を生成します。 |
PKCS7SignedData |
sign(int certificateId)
任意に指定した秘密鍵を使用して、デジタル署名付きデータ (PKCS#7 SignedData 形式) を生成します。 |
void |
update(byte input)
指定されたバイトを入力値として、署名対象データに追加します。 |
void |
update(byte[] buf)
指定されたバイト配列を入力値として、署名対象データに追加します。 |
void |
update(byte[] buf,
int off,
int len)
指定されたバイト配列の一部を入力値として、署名対象データに追加します。 |
クラス Object から継承したメソッド |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
public static final int DATA
public static final int SIGNED_DATA
コンストラクタの詳細 |
public PKCS7Signer()
IllegalStateException
- UIM の情報を取得できなかった場合に発生します。
UnsupportedOperationException
- 端末に挿入されている UIM のバージョンが Version2
以降ではない場合に発生します。
メソッドの詳細 |
public void update(byte input)
input
- 追加する署名対象データのバイトを指定します。public void update(byte[] buf)
buf
- 追加する署名対象データのバイト配列を指定します。
NullPointerException
- 引数 buf が null の場合に発生します。
public void update(byte[] buf, int off, int len)
buf
- 追加する署名対象データのバイト配列を指定します。off
- バイト配列における開始位置を指定します。len
- バイト配列における長さを指定します。
NullPointerException
- 引数 buf が null の場合に発生します。
ArrayIndexOutOfBoundsException
- 引数 off が 0 未満の場合、
引数 len が 0 未満の場合、
off + len が配列 buf の長さを超える場合に発生します。
public void setContentType(int contentType)
コンテントタイプのデフォルト値は DATA
です。
署名対象データがデジタル署名付きデータの場合は
SIGNED_DATA
を、
それ以外の場合は DATA
を指定してください。
これら以外の値を指定した場合、
不正な値が指定されたとして例外が発生します。
contentType
- コンテントタイプを指定します。
IllegalArgumentException
- 引数 contentType に不正な値が指定された場合に発生します。
public int getContentType()
public void setDigestAlgorithm(String hashAlgorithm)
アルゴリズムのデフォルト値は "SHA-1" です。
端末がサポートしていないアルゴリズムを指定した場合、 不正な値が指定されたとして例外が発生します。
hashAlgorithm
- メッセージダイジェストのアルゴリズム名を指定します。
NullPointerException
- 引数 hashAlgorithm が null の場合に発生します。
IllegalArgumentException
- 引数 hashAlgorithm に不正な値が指定された場合に発生します。
public String getDigestAlgorithm()
public void reset()
このメソッドを呼び出したとしても、 このオブジェクトに設定されている属性はリセットされません。
public PKCS7SignedData sign() throws SignatureException, InterruptedOperationException
このオブジェクトに設定されている署名対象データ全体に対して署名を生成します。
このメソッドの振る舞いは、sign(int)
の引数に CertificateStore.CERTIFICATE_UIM_ID
が指定された場合と同じです。
IllegalStateException
- 待ち受け実行時の非活性化状態で呼び出された場合に発生します。
IllegalStateException
- このオブジェクトに署名対象データが設定されていない状態で呼び出された場合に発生します。
IllegalStateException
-
既に、このオブジェクトまたは別オブジェクトの sign() または sign(int)
メソッドを実行中の別スレッドが存在する場合に発生します。
IllegalStateException
- UIM 読み込み中の場合に発生します。
InterruptedOperationException
-
PIN2/PUK2入力画面表示中に非活性化状態に遷移した場合に発生します。
SignatureException
- 署名対象データのコンテントタイプが SIGNED_DATA
である場合に、
署名対象データのフォーマットが不正の場合に発生します(ILLEGAL_CONTENT)。
SignatureException
- PIN2がブロックした場合に発生します (PIN2_BLOCKED)。
SignatureException
- PIN2が既にブロックしている場合に発生します (PIN2_ALREADY_BLOCKED)。
SignatureException
- PUK2がブロックした場合に発生します (PUK2_BLOCKED)。
SignatureException
- PUK2が既にブロックしている場合に発生します (PUK2_ALREADY_BLOCKED)。
SignatureException
- ユーザがPIN2入力をキャンセルした場合に発生します (PIN2_CANCELED)。
SignatureException
- ユーザがPUK2入力をキャンセルした場合に発生します (PUK2_CANCELED)。
SignatureException
- SignatureException
- デジタル署名生成以外のエラーが発生した場合に発生します
(UNDEFINED)。
public PKCS7SignedData sign(int certificateId) throws SignatureException, InterruptedOperationException, StoreException
CertificateStore.selectEntryId()
で取得されたユーザ証明書データのエントリ ID を
引数 certificateId に指定します。
指定したエントリ ID が CertificateStore.CERTIFICATE_UIM_ID
である場合は、
UIM 内のユーザ証明書データにより、デジタル署名付きデータを生成し、
その際に PIN2 入力が行われます。
指定したエントリ ID がその他のエントリ ID である場合は、
端末メモリ内のユーザ証明書データにより、デジタル署名付きデータを生成し、
その際に端末暗証番号入力(または指紋認証)が行われます。
このオブジェクトに設定されている署名対象データ全体に対して署名を生成します。
ただし、このオブジェクトに設定されているコンテントタイプが SIGNED_DATA
である場合、署名対象データにはデジタル署名付きデータ
(PKCS#7 SignedData フォーマット準拠の ASN.1 DER エンコード形式)
が設定されていなければなりません。
それ以外のデータが設定されている場合、
署名対象データのフォーマットが不正として例外が発生します。
デジタル署名付きデータの生成時に、 ユーザ証明書にチェーンされた証明書(中間証明書、Root 証明書)を、 デジタル署名付きデータに設定します。 なお、チェーンされた証明書が端末内にない場合は、 チェーンされた証明書を設定せずに、デジタル署名付きデータを生成します。
本メソッドの呼び出しが正常に終了すると、
このオブジェクトは reset()
メソッドを呼び出した場合と同様の状態となります。
引数 certificateId に CertificateStore.CERTIFICATE_UIM_ID
が指定された場合に発生する例外については、このメソッドの「例外」欄には記載していません。
sign()
の「例外」欄の記述を参照してください。
i アプリから端末メモリ内の証明書を利用する機能をサポートしていない端末の場合、
引数 certificateId に CertificateStore.CERTIFICATE_UIM_ID
以外のエントリ ID が指定されると、例外 UnsupportedOperationException が発生します。
certificateId
- CertificateStore.selectEntryId()
で取得したエントリ ID を指定します。
UnsupportedOperationException
- 端末が i アプリから端末メモリ内の証明書を利用する機能をサポートしていない場合に発生します。
IllegalStateException
- 待ち受け実行時の非活性化状態で呼び出された場合に発生します。
IllegalStateException
- このオブジェクトに署名対象データが設定されていない状態で呼び出された場合に発生します。
IllegalStateException
- 既に、このオブジェクトまたは別オブジェクトの sign() または sign(int)
メソッドを実行中の別スレッドが存在する場合に発生します。
InterruptedOperationException
- 端末暗証番号(または指紋認証)の入力画面表示中に非活性化状態に遷移した場合に発生します。
StoreException
- 引数 certificateId に対応したユーザ証明書が存在しない場合や、
無効な ID (区間 [-256, -1] に属する整数) が指定された場合に発生します(NOT_FOUND)。
SignatureException
- 署名対象データのコンテントタイプが SIGNED_DATA
である場合に、
署名対象データのフォーマットが不正の場合に発生します(ILLEGAL_CONTENT)。
SignatureException
- 端末暗証番号入力(または指紋認証)をキャンセルした場合や、
端末暗証番号入力(または指紋認証)に3回失敗した場合に発生します(SECURITY_CODE_REJECTED)。
SignatureException
- デジタル署名値(PKCS#7SignedData の signerInfos の encryptedDigest プロパティ)の生成に失敗したことを示します(ENCRYPTED_DIGEST_ERROR)。
SignatureException
- SignatureException
- デジタル署名生成以外のエラーが発生した場合に発生します
(UNDEFINED)。
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
NTT DOCOMO,INC.
本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。
Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。
FeliCaは、ソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。
「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。
その他記載された会社名、製品名などは該当する各社の商標または登録商標です。