|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Objectcom.docomostar.security.PKCS7Signer
public class PKCS7Signer
PKCS#7 SignedData フォーマットに準拠したデジタル署名付きデータの生成を行うための機能を提供します。
署名を行うためには、
このクラスのオブジェクトに対して、
署名の対象となるデータ(署名対象データ)を
update
メソッドを用いて設定する必要があります。
update
メソッドは複数回呼び出すことが可能であり、
その場合は既に設定されている署名対象データの末尾に追加されます。
また、署名を行う際の属性(メッセージダイジェストのアルゴリズムや、 署名の対象となるデータのコンテントタイプ)を設定することができます。 設定できる属性値については、対応するメソッドの説明文を参照してください。
オブジェクトに署名対象データが設定されている状態で
sign()
メソッドを呼び出すことにより、
デジタル署名付きデータオブジェクトを取得することができます。
ダイジェスト情報の暗号化に使用する秘密鍵(RSA)は、 以下の表のいずれかを使用します。 ユーザ証明書は秘密鍵に対応するものを使用します。 組み合わせは、以下の表の通りです。
暗号化に使用する秘密鍵 | ユーザ証明書 |
---|---|
UIM 内の秘密鍵 | UIM 内のユーザ証明書 |
端末メモリ内の秘密鍵 | 端末メモリ内のユーザ証明書 |
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) [iアプリオプションAPI]
任意に指定した秘密鍵を使用して、デジタル署名付きデータ (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
-
UnsupportedOperationException
-
メソッドの詳細 |
---|
public void update(byte input)
input
- 追加する署名対象データのバイトを指定します。public void update(byte[] buf)
buf
- 追加する署名対象データのバイト配列を指定します。
NullPointerException
-
public void update(byte[] buf, int off, int len)
buf
- 追加する署名対象データのバイト配列を指定します。off
- バイト配列における開始位置を指定します。len
- バイト配列における長さを指定します。
NullPointerException
-
ArrayIndexOutOfBoundsException
-
public void setContentType(int contentType)
コンテントタイプのデフォルト値は DATA
です。
署名対象データがデジタル署名付きデータの場合は
SIGNED_DATA
を、
それ以外の場合は DATA
を指定してください。
これら以外の値を指定した場合、
不正な値が指定されたとして例外が発生します。
contentType
- コンテントタイプを指定します。
IllegalArgumentException
-
public int getContentType()
public void setDigestAlgorithm(String hashAlgorithm)
アルゴリズムのデフォルト値は "SHA-1" です。
端末がサポートしていないアルゴリズムを指定した場合、 不正な値が指定されたとして例外が発生します。
hashAlgorithm
- メッセージダイジェストのアルゴリズム名を指定します。
NullPointerException
-
IllegalArgumentException
-
public String getDigestAlgorithm()
public void reset()
このメソッドを呼び出したとしても、 このオブジェクトに設定されている属性はリセットされません。
public PKCS7SignedData sign() throws PKCS7SignatureException
このオブジェクトに設定されている署名対象データ全体に対して署名を生成します。
このメソッドの振る舞いは、sign(int)
の引数に CertificateStore.CERTIFICATE_UIM_ID
が指定された場合と同じです。
IllegalStateException
-
IllegalStateException
-
IllegalStateException
-
PKCS7SignatureException
- SIGNED_DATA
である場合に、
署名対象データのフォーマットが不正の場合に発生します。
PKCS7SignatureException
- PKCS7SignatureException
- PKCS7SignatureException
- PKCS7SignatureException
- PKCS7SignatureException
- PKCS7SignatureException
- PKCS7SignatureException
- PKCS7SignatureException
- public PKCS7SignedData sign(int certificateId) throws PKCS7SignatureException, StoreException [iアプリオプションAPI]
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()
の「例外」欄の記述を参照してください。
Star アプリから端末メモリ内の証明書を利用する機能をサポートしていない端末の場合、
引数 certificateId に CertificateStore.CERTIFICATE_UIM_ID
以外のエントリ ID が指定されると、例外 UnsupportedOperationException が発生します。
certificateId
- CertificateStore.selectEntryId()
で取得したエントリ ID を指定します。
UnsupportedOperationException
-