Foundation 1.1.2

java.security
クラス Signature

java.lang.Object
  上位を拡張 java.security.SignatureSpi
      上位を拡張 java.security.Signature

public abstract class Signature
extends SignatureSpi

Signature クラスは、アプリケーションに対してデジタル署名アルゴリズムの機能を提供するために使用されます。デジタル署名は、認証やデジタルデータの整合性を保証するために使用されます。

多くの署名アルゴリズムの中で、DSA および SHA-1 を使用した、NIST 標準の DSA を使用できます。SHA-1 メッセージダイジェストアルゴリズムを使用する DSA アルゴリズムは、SHA1withDSA のように指定できます。RSA の場合は、メッセージダイジェストアルゴリズムに複数の選択肢があります。したがって、署名アルゴリズムは、MD2withRSAMD5withRSA、または SHA1withRSA のように指定します。デフォルトはないので、必ずアルゴリズムの名前を指定しなければいけません。

Java Security に含まれるほかのアルゴリズムベースのクラスと同様に、Signature も実装に依存しないアルゴリズムを提供します。それにより、呼び出し側 (アプリケーションコード) は特定の署名アルゴリズムを要求し、適切に初期化された Signature オブジェクトが返されます。また、必要に応じて、特定のプロバイダから特定のアルゴリズムを要求することもできます。getInstance メソッドを参照してください。

したがって、Signature アルゴリズムオブジェクトを要求するには、2 つの方法があります。1 つはアルゴリズム名のみを指定する方法で、もう 1 つはアルゴリズム名とパッケージプロバイダの両方を指定する方法です。

Signature オブジェクトは、デジタル署名を生成し、検証するために使用できます。

データの署名時または署名の検証時に Signature オブジェクトを使用する場合、3 つの段階があります。

  1. 次のどちらかの方法による初期化

  2. 更新

    初期化の種類に応じて、署名または検証の対象となるバイトを更新します。update メソッドを参照してください。

  3. すべての更新済みバイトに対して署名または検証を行います。sign メソッドおよび verify メソッドを参照してください。

このクラスは、歴史的な事情から SignatureSpi クラスから拡張された abstract クラスになっていることに注意してください。アプリケーションの開発者は、この Signature クラスでのメソッド定義だけに配慮してください。スーパークラスのすべてのメソッドは、デジタル署名アルゴリズムの独自の実装を提供する必要がある暗号サービスプロバイダで使用されることを想定しています。


フィールドの概要
protected static int SIGN
          この署名オブジェクトが署名用に初期化済みであることを示す、state の可能な値です。
protected  int state
          この署名オブジェクトの現在の状態です。
protected static int UNINITIALIZED
          この署名オブジェクトの初期化が終了していないことを示す、state の可能な値です。
protected static int VERIFY
          この署名オブジェクトが検証用に初期化済みであることを示す、state の可能な値です。
 
クラス java.security.SignatureSpi から継承されたフィールド
appRandom
 
コンストラクタの概要
protected Signature(String algorithm)
          指定されたアルゴリズムに対する Signature オブジェクトを作成します。
 
メソッドの概要
 Object clone()
          実装が複製可能な場合は複製を返します。
 String getAlgorithm()
          この署名オブジェクトに対するアルゴリズム名を返します。
static Signature getInstance(String algorithm)
          指定されたダイジェストアルゴリズムを実装する Signature オブジェクトを生成します。
static Signature getInstance(String algorithm, Provider provider)
          指定されたプロバイダから指定されたアルゴリズムを取得できる場合に、そのプロバイダが提供するアルゴリズムを実装する Signature オブジェクトを生成します。
static Signature getInstance(String algorithm, String provider)
          指定されたプロバイダから指定されたアルゴリズムを取得できる場合に、そのプロバイダが提供するアルゴリズムを実装する Signature オブジェクトを生成します。
 AlgorithmParameters getParameters()
          この署名オブジェクトを使用するパラメータを返します。
 Provider getProvider()
          この署名オブジェクトのプロバイダを返します。
 void initSign(PrivateKey privateKey)
          署名用にこのオブジェクトを初期化します。
 void initSign(PrivateKey privateKey, SecureRandom random)
          署名用にこのオブジェクトを初期化します。
 void initVerify(Certificate certificate)
          署名オブジェクトを、検証操作のために指定された公開鍵で初期化します。
 void initVerify(PublicKey publicKey)
          検証用にこのオブジェクトを初期化します。
 void setParameter(AlgorithmParameterSpec params)
          署名エンジンを、指定されたパラメータセットを使って初期化します。
 byte[] sign()
          更新されたすべてのデータの署名バイトを返します。
 int sign(byte[] outbuf, int offset, int len)
          署名操作を終了し、結果として得られる署名バイトを、指定されたバッファー outbuf に格納します (開始位置は offset)。
 String toString()
          この署名オブジェクトの文字列表現を返し、オブジェクトの状態と使用されるアルゴリズムの名前を含む情報を提供します。
 void update(byte b)
          指定されたバイトを使用して、署名または検証の対象データを更新します。
 void update(byte[] data)
          指定されたバイト配列を使用して、署名または検証の対象データを更新します。
 void update(byte[] data, int off, int len)
          署名または検証するデータを、指定されたバイトの配列を使って、指定されたオフセットから更新します。
 boolean verify(byte[] signature)
          渡された署名を検証します。
 boolean verify(byte[] signature, int offset, int length)
          指定されたオフセットから開始して、指定されたバイトデータの配列の渡された署名を検証します。
 
クラス java.security.SignatureSpi から継承されたメソッド
engineGetParameters, engineInitSign, engineInitSign, engineInitVerify, engineSetParameter, engineSign, engineSign, engineUpdate, engineUpdate, engineVerify, engineVerify
 
クラス java.lang.Object から継承されたメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

UNINITIALIZED

protected static final int UNINITIALIZED
この署名オブジェクトの初期化が終了していないことを示す、state の可能な値です。

関連項目:
定数フィールド値

SIGN

protected static final int SIGN
この署名オブジェクトが署名用に初期化済みであることを示す、state の可能な値です。

関連項目:
定数フィールド値

VERIFY

protected static final int VERIFY
この署名オブジェクトが検証用に初期化済みであることを示す、state の可能な値です。

関連項目:
定数フィールド値

state

protected int state
この署名オブジェクトの現在の状態です。

コンストラクタの詳細

Signature

protected Signature(String algorithm)
指定されたアルゴリズムに対する Signature オブジェクトを作成します。

パラメータ:
algorithm - アルゴリズムの標準名を表す文字列。 アルゴリズムの標準名については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照してください。
メソッドの詳細

getInstance

public static Signature getInstance(String algorithm)
                             throws NoSuchAlgorithmException
指定されたダイジェストアルゴリズムを実装する Signature オブジェクトを生成します。要求されたダイジェストアルゴリズムの実装をデフォルトのプロバイダパッケージが提供している場合は、その実装を含む Signature のインスタンスが返されます。指定されたアルゴリズムがデフォルトのパッケージにない場合は、ほかのパッケージが検索されます。

パラメータ:
algorithm - 要求されたアルゴリズムの標準的な名前。 アルゴリズムの標準名については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
戻り値:
新しい Signature オブジェクト
例外:
NoSuchAlgorithmException - アルゴリズムがその環境で使用できない場合

getInstance

public static Signature getInstance(String algorithm,
                                    String provider)
                             throws NoSuchAlgorithmException,
                                    NoSuchProviderException
指定されたプロバイダから指定されたアルゴリズムを取得できる場合に、そのプロバイダが提供するアルゴリズムを実装する Signature オブジェクトを生成します。

パラメータ:
algorithm - 要求するアルゴリズムの名前。 アルゴリズムの標準名については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
provider - プロバイダ名
戻り値:
新しい Signature オブジェクト
例外:
NoSuchAlgorithmException - 要求されたプロバイダが提供するパッケージではアルゴリズムを使用できない場合
NoSuchProviderException - プロバイダがその環境で使用できない場合
IllegalArgumentException - プロバイダ名が null または空の場合
関連項目:
Provider

getInstance

public static Signature getInstance(String algorithm,
                                    Provider provider)
                             throws NoSuchAlgorithmException
指定されたプロバイダから指定されたアルゴリズムを取得できる場合に、そのプロバイダが提供するアルゴリズムを実装する Signature オブジェクトを生成します。注:provider を登録する必要はありません。

パラメータ:
algorithm - 要求するアルゴリズムの名前。 アルゴリズムの標準名については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
provider - プロバイダ
戻り値:
新しい Signature オブジェクト
例外:
NoSuchAlgorithmException - 要求されたプロバイダが提供するパッケージではアルゴリズムを使用できない場合
IllegalArgumentException - provider が null の場合
導入されたバージョン:
1.4
関連項目:
Provider

getProvider

public final Provider getProvider()
この署名オブジェクトのプロバイダを返します。

戻り値:
この署名オブジェクトのプロバイダ

initVerify

public final void initVerify(PublicKey publicKey)
                      throws InvalidKeyException
検証用にこのオブジェクトを初期化します。このメソッドが別の引数で再度呼び出されると、この呼び出しの効果を取り消します。

パラメータ:
publicKey - 署名が検証されるアイデンティティーの公開鍵
例外:
InvalidKeyException - 鍵が無効な場合

initVerify

public final void initVerify(Certificate certificate)
                      throws InvalidKeyException
署名オブジェクトを、検証操作のために指定された公開鍵で初期化します。 

証明書の種類が X.509 で、重要とマークされた key usage 拡張領域があり、key usage 拡張領域の値によって証明書の非公開鍵とそれに対応する非公開鍵がデジタル署名に使用されないものである場合は、InvalidKeyException はスローされます。

パラメータ:
certificate - 署名が検証されるアイデンティティーの証明書
例外:
InvalidKeyException - 証明書の公開鍵が正しく符号化されていない場合、必要なパラメータ情報がない場合、またはデジタル署名用に使用できない場合

initSign

public final void initSign(PrivateKey privateKey)
                    throws InvalidKeyException
署名用にこのオブジェクトを初期化します。このメソッドが別の引数で再度呼び出されると、この呼び出しの効果を取り消します。

パラメータ:
privateKey - 署名を生成するアイデンティティーの非公開鍵
例外:
InvalidKeyException - 鍵が無効な場合

initSign

public final void initSign(PrivateKey privateKey,
                           SecureRandom random)
                    throws InvalidKeyException
署名用にこのオブジェクトを初期化します。このメソッドが別の引数で再度呼び出されると、この呼び出しの効果を取り消します。

パラメータ:
privateKey - 署名を生成するアイデンティティーの非公開鍵
random - このジェネレータの乱数発生の元
例外:
InvalidKeyException - 鍵が無効な場合

sign

public final byte[] sign()
                  throws SignatureException
更新されたすべてのデータの署名バイトを返します。署名の形式は基になる署名方式に依存します。

このメソッドを呼び出すと、この署名オブジェクトは、initSign(PrivateKey) の呼び出しを介して署名用に以前初期化された状態にリセットされます。つまり、オブジェクトは、必要に応じて updatesign の新規の呼び出しを介してリセットされ、同じ署名者から別の署名を生成するために使用可能になります。

戻り値:
署名操作の結果の署名バイト
例外:
SignatureException - この署名オブジェクトが正しく初期化されていない場合

sign

public final int sign(byte[] outbuf,
                      int offset,
                      int len)
               throws SignatureException
署名操作を終了し、結果として得られる署名バイトを、指定されたバッファー outbuf に格納します (開始位置は offset)。署名の形式は基になる署名方式に依存します。

この署名オブジェクトは、初期状態 (initSign メソッドの 1 つに呼び出された直後の状態) にリセットされます。リセットされたあとは、同じ非公開鍵を使ってさらに署名を生成するために再使用できます。

パラメータ:
outbuf - 最終的な署名を格納するバッファー
offset - outbuf に署名を格納するときのオフセット
len - outbuf 内に署名用として割り当てられるバイト数
戻り値:
outbuf に格納されたバイト数
例外:
SignatureException - エラーが発生した場合、または len が実際の署名の長さよりも小さい場合
導入されたバージョン:
1.2

verify

public final boolean verify(byte[] signature)
                     throws SignatureException
渡された署名を検証します。

このメソッドを呼び出すと、オブジェクトを initVerify を介して、以前に検証用に初期化された状態にします。つまり、オブジェクトをリセットするので、initVerify への呼び出しで指定した公開鍵を持つ識別の別の署名を検証できます。

パラメータ:
signature - 検証対象の署名バイト
戻り値:
署名が検証された場合は true、そうでない場合は false
例外:
SignatureException - この署名オブジェクトが正しく初期化されていない場合、指定された署名の符号化方法が不適切である場合、または指定された署名の型が不正である場合など

verify

public final boolean verify(byte[] signature,
                            int offset,
                            int length)
                     throws SignatureException
指定されたオフセットから開始して、指定されたバイトデータの配列の渡された署名を検証します。

このメソッドを呼び出すと、オブジェクトを initVerify を介して、以前に検証用に初期化された状態にします。つまり、オブジェクトをリセットするので、initVerify への呼び出しで指定した公開鍵を持つ識別の別の署名を検証できます。

パラメータ:
signature - 検証対象の署名バイト
offset - バイトの配列での開始オフセット
length - オフセットから開始して使われるバイト数
戻り値:
署名が検証された場合は true、そうでない場合は false
例外:
SignatureException - この署名オブジェクトが正しく初期化されていない場合、指定された署名の符号化方法が不適切である場合、または指定された署名の型が不正である場合など
IllegalArgumentException - signature バイト配列が null の場合、offsetlength が 0 以下の場合、または offsetlength との合計が signature バイト配列の長さの値よりも大きい場合

update

public final void update(byte b)
                  throws SignatureException
指定されたバイトを使用して、署名または検証の対象データを更新します。

パラメータ:
b - 更新に使うバイト
例外:
SignatureException - この署名オブジェクトが正しく初期化されていない場合

update

public final void update(byte[] data)
                  throws SignatureException
指定されたバイト配列を使用して、署名または検証の対象データを更新します。

パラメータ:
data - 更新に使うバイト配列
例外:
SignatureException - この署名オブジェクトが正しく初期化されていない場合

update

public final void update(byte[] data,
                         int off,
                         int len)
                  throws SignatureException
署名または検証するデータを、指定されたバイトの配列を使って、指定されたオフセットから更新します。

パラメータ:
data - バイトの配列
off - バイトの配列での開始オフセット
len - オフセットから開始して使われるバイト数
例外:
SignatureException - この署名オブジェクトが正しく初期化されていない場合

getAlgorithm

public final String getAlgorithm()
この署名オブジェクトに対するアルゴリズム名を返します。

戻り値:
この署名オブジェクトに対するアルゴリズム名

toString

public String toString()
この署名オブジェクトの文字列表現を返し、オブジェクトの状態と使用されるアルゴリズムの名前を含む情報を提供します。

オーバーライド:
クラス Object 内の toString
戻り値:
この署名オブジェクトの文字列表現

setParameter

public final void setParameter(AlgorithmParameterSpec params)
                        throws InvalidAlgorithmParameterException
署名エンジンを、指定されたパラメータセットを使って初期化します。

パラメータ:
params - パラメータ
例外:
InvalidAlgorithmParameterException - 指定されたパラメータがこの署名エンジンに対して不適切な場合
関連項目:
getParameters()

getParameters

public final AlgorithmParameters getParameters()
この署名オブジェクトを使用するパラメータを返します。

返されたパラメータは、この署名を初期化するために使用されたパラメータと同じになることがあります。あるいは、この署名がアルゴリズムパラメータを要求しても、どのアルゴリズムパラメータでも初期化されなかった場合には、返されたパラメータには、基になる署名の実装で使用されるデフォルトのパラメータ値とランダムに生成されたパラメータ値の組み合わせが含まれることがあります。

戻り値:
この署名で使用されたパラメータ。この署名がパラメータを使用しない場合は null
関連項目:
setParameter(AlgorithmParameterSpec)

clone

public Object clone()
             throws CloneNotSupportedException
実装が複製可能な場合は複製を返します。

オーバーライド:
クラス SignatureSpi 内の clone
戻り値:
実装が複製可能な場合は複製
例外:
CloneNotSupportedException - Cloneable をサポートしていない実装で呼び出された場合
関連項目:
Cloneable

Foundation 1.1.2

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。