クラスSignature
Signatureクラスは、アプリケーションにデジタル・シグネチャ・アルゴリズムの機能を提供するために使用されます。 デジタル署名は、認証やデジタル・データの整合性を保証するために使用されます。
シグネチャ・アルゴリズムは、とりわけDSAとSHA-256を使用するNIST標準DSAとすることができます。 SHA-256メッセージ・ダイジェスト・アルゴリズムを使用するDSAアルゴリズムは、SHA256withDSAとして指定できます。 RSAの場合、署名アルゴリズムは、例えば、SHA256withRSAとして指定することができます。 デフォルトはないので、必ずアルゴリズムの名前を指定しなければいけません。
Signatureオブジェクトを使用して、デジタル・シグネチャを生成および検証できます。
データのシグネチャまたはシグネチャの検証にSignatureオブジェクトを使用する3つのフェーズがあります:
- 次のどちらかの方法による初期化
- 公開キーを使用する方法。Signatureを検証用として初期化する(
initVerifyを参照) - 非公開キー(およびオプションでセキュリティ保護された乱数ジェネレータ)を使用する方法。Signatureオブジェクトを署名用として初期化する(
initSign(PrivateKey)およびinitSign(PrivateKey, SecureRandom)を参照)。
- 公開キーを使用する方法。Signatureを検証用として初期化する(
- 更新
初期化の種類に応じて、署名または検証の対象となるバイトを更新します。
updateメソッドを参照してください。 - すべての更新済みバイトに対して署名または署名の検証を行います。
signメソッドおよびverifyメソッドを参照してください。
このクラスは、歴史的な事情からSignatureSpiクラスから拡張された抽象クラスになっていることに注意してください。 アプリケーションの開発者は、このSignatureクラスでのメソッド定義だけに配慮してください。スーパー・クラスのすべてのメソッドは、デジタル署名アルゴリズムの独自の実装を提供する必要がある暗号サービス・プロバイダで使用されることを想定しています。
Javaプラットフォームの実装は、すべて次の標準のSignatureアルゴリズムをサポートする必要があります。
SHA1withDSASHA256withDSASHA1withRSASHA256withRSA
- 導入されたバージョン:
- 1.1
-
フィールドのサマリー
フィールド修飾子と型フィールド説明protected static final int可能なstate値。このSignatureオブジェクトが署名用に初期化されていることを示します。protected intこのSignatureオブジェクトの現在の状態。protected static final intこのSignatureオブジェクトがまだ初期化されていないことを示すstate値の可能性があります。protected static final int可能なstate値。このSignatureオブジェクトが検証用に初期化されていることを示します。クラスjava.security.SignatureSpiで宣言されたフィールド
appRandom -
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明clone()実装が複製可能な場合は複製を返します。final StringこのSignatureオブジェクトのアルゴリズムの名前を返します。static SignaturegetInstance(String algorithm) 指定されたシグネチャ・アルゴリズムを実装するSignatureオブジェクトを返します。static SignaturegetInstance(String algorithm, String provider) 指定されたシグネチャ・アルゴリズムを実装するSignatureオブジェクトを返します。static SignaturegetInstance(String algorithm, Provider provider) 指定されたシグネチャ・アルゴリズムを実装するSignatureオブジェクトを返します。final ObjectgetParameter(String param) 非推奨。final AlgorithmParametersこのSignatureオブジェクトで使用されるパラメータを返します。final ProviderこのSignatureオブジェクトのプロバイダを返します。final voidinitSign(PrivateKey privateKey) 署名用にこのオブジェクトを初期化します。final voidinitSign(PrivateKey privateKey, SecureRandom random) 署名用にこのオブジェクトを初期化します。final voidinitVerify(Certificate certificate) このオブジェクトを、検証操作のために指定された公開キーで初期化します。final voidinitVerify(PublicKey publicKey) 検証用にこのオブジェクトを初期化します。final voidsetParameter(String param, Object value) 非推奨。final voidsetParameter(AlgorithmParameterSpec params) このSignatureオブジェクトを、指定したパラメータ値で初期化します。final byte[]sign()更新されたすべてのデータの署名バイトを返します。final intsign(byte[] outbuf, int offset, int len) 署名操作を終了し、結果として得られる署名バイトを、指定されたバッファoutbufにoffsetから格納します。toString()このSignatureオブジェクトの文字列表現を返します。オブジェクトの状態および使用されるアルゴリズムの名前を含む情報を提供します。final voidupdate(byte b) 指定されたバイトを使用して、署名または検証の対象データを更新します。final voidupdate(byte[] data) 指定されたバイト配列を使用して、署名または検証の対象データを更新します。final voidupdate(byte[] data, int off, int len) 署名または検証するデータを、指定されたバイトの配列を使って、指定されたオフセットから更新します。final voidupdate(ByteBuffer data) 署名または検証するデータを、指定されたByteBufferを使用して更新します。final booleanverify(byte[] signature) 渡された署名を検証します。final booleanverify(byte[] signature, int offset, int length) 指定されたオフセットから開始して、指定されたバイト・データの配列の渡された署名を検証します。クラスjava.security.SignatureSpiで宣言されたメソッド
engineGetParameter, engineGetParameters, engineInitSign, engineInitSign, engineInitVerify, engineSetParameter, engineSetParameter, engineSign, engineSign, engineUpdate, engineUpdate, engineUpdate, engineVerify, engineVerify
-
フィールド詳細
-
UNINITIALIZED
-
SIGN
-
VERIFY
-
state
protected int stateこのSignatureオブジェクトの現在の状態。
-
-
コンストラクタの詳細
-
Signature
protected Signature(String algorithm) 指定されたアルゴリズムのSignatureオブジェクトを作成します。- パラメータ:
algorithm- アルゴリズムの標準名を表す文字列。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」の「シグネチャ」の項を参照してください。
-
-
メソッドの詳細
-
getInstance
public static Signature getInstance(String algorithm) throws NoSuchAlgorithmException 指定されたシグネチャ・アルゴリズムを実装するSignatureオブジェクトを返します。このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のプロバイダから
SignatureSpi実装をカプセル化する新しいSignatureオブジェクトが返されます。登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。- 実装上のノート:
- JDKリファレンス実装では、さらに
jdk.security.provider.preferredSecurityプロパティを使用して、指定したアルゴリズムの優先プロバイダ順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
algorithm- 要求されたアルゴリズムの標準名。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」の「シグネチャ」の項を参照してください。- 戻り値:
- 新しい
Signatureオブジェクト - スロー:
NoSuchAlgorithmException-Providerが、指定されたアルゴリズムのSignature実装をサポートしていない場合NullPointerException-algorithmがnullである場合- 関連項目:
-
getInstance
public static Signature getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 指定されたシグネチャ・アルゴリズムを実装するSignatureオブジェクトを返します。指定したプロバイダから
SignatureSpi実装をカプセル化する新しいSignatureオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。- パラメータ:
algorithm- 要求するアルゴリズムの名前。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」の「シグネチャ」の項を参照してください。provider- プロバイダ名。- 戻り値:
- 新しい
Signatureオブジェクト - スロー:
IllegalArgumentException- プロバイダ名がnullまたは空の場合NoSuchAlgorithmException- 指定されたアルゴリズムのSignatureSpi実装が、指定されたプロバイダから利用可能でない場合NoSuchProviderException- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NullPointerException-algorithmがnullである場合- 関連項目:
-
getInstance
public static Signature getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException 指定されたシグネチャ・アルゴリズムを実装するSignatureオブジェクトを返します。指定したプロバイダから
SignatureSpi実装をカプセル化する新しいSignatureオブジェクトが返されます。 指定されたプロバイダをプロバイダ・リストに登録する必要はありません。- パラメータ:
algorithm- 要求するアルゴリズムの名前。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」の「シグネチャ」の項を参照してください。provider- プロバイダ- 戻り値:
- 新しい
Signatureオブジェクト - スロー:
IllegalArgumentException- プロバイダがnullの場合NoSuchAlgorithmException- 指定されたアルゴリズムのSignatureSpi実装が、指定されたProviderオブジェクトから使用できない場合NullPointerException-algorithmがnullである場合- 導入されたバージョン:
- 1.4
- 関連項目:
-
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- 証明書の公開キーが正しく符号化されていない場合、必要なパラメータ情報がない場合、またはデジタル署名用に使用できない場合。- 導入されたバージョン:
- 1.3
-
initSign
public final void initSign(PrivateKey privateKey) throws InvalidKeyException 署名用にこのオブジェクトを初期化します。 このメソッドが別の引数で再度呼び出されると、この呼出しの効果を取り消します。- パラメータ:
privateKey- 署名を生成するアイデンティティの非公開キー。- スロー:
InvalidKeyException- キーが無効な場合。
-
initSign
public final void initSign(PrivateKey privateKey, SecureRandom random) throws InvalidKeyException 署名用にこのオブジェクトを初期化します。 このメソッドが別の引数で再度呼び出されると、この呼出しの効果を取り消します。- パラメータ:
privateKey- 署名を生成するアイデンティティの非公開キーrandom- このSignatureオブジェクトのランダム性のソース- スロー:
InvalidKeyException- キーが無効な場合。
-
sign
public final byte[] sign() throws SignatureException更新されたすべてのデータの署名バイトを返します。 署名の形式は基になる署名方式に依存します。このメソッドを呼び出すと、この
Signatureオブジェクトは、以前にinitSign(PrivateKey)へのコールを介して署名用に初期化されていた時点の状態にリセットされます。 つまり、オブジェクトは、必要に応じてupdateおよびsignの新規の呼出しを介してリセットされ、同じ署名者から別の署名を生成するために使用可能になります。- 戻り値:
- 署名操作の結果の署名バイト。
- スロー:
SignatureException- このSignatureオブジェクトが適切に初期化されていない場合、またはこのシグネチャ・アルゴリズムが指定の入力データを処理できない場合。
-
sign
public final int sign(byte[] outbuf, int offset, int len) throws SignatureException 署名操作を終了し、結果として得られる署名バイトを、指定されたバッファoutbufにoffsetから格納します。 署名の形式は基になる署名方式に依存します。この
Signatureオブジェクトは初期状態(initSignメソッドの1つへのコール後の状態)にリセットされ、同じ秘密キーでさらにシグネチャを生成するために再利用できます。- パラメータ:
outbuf- 最終的な署名を格納するバッファ。offset-outbufに署名を格納するときのオフセット。len-outbuf内に署名用として割り当てられるバイト数。- 戻り値:
outbufに格納されたバイト数。- スロー:
SignatureException- このSignatureオブジェクトが適切に初期化されていない場合、このシグネチャ・アルゴリズムが指定の入力データを処理できない場合、またはlenが実際のシグネチャ長より小さい場合。IllegalArgumentException-outbufがnull、offsetまたはlenが0より小さい場合、またはoffsetとlenの合計がoutbufの長さより大きい場合。- 導入されたバージョン:
- 1.2
-
verify
public final boolean verify(byte[] signature) throws SignatureException 渡された署名を検証します。このメソッドへのコールによって、この
Signatureオブジェクトは、以前にinitVerify(PublicKey)へのコールによって検証用に初期化されたときの状態にリセットされます。 つまり、オブジェクトをリセットするので、initVerifyへの呼出しで指定した公開キーを持つ識別の別の署名を検証できます。- パラメータ:
signature- 検証対象の署名バイト。- 戻り値:
- シグネチャが検証された場合は
true、検証されなかった場合はfalse。 - スロー:
SignatureException- このSignatureオブジェクトが適切に初期化されていない場合、渡されたシグネチャが正しくエンコードされていないか、このシグネチャ・アルゴリズムが指定の入力データを処理できない場合、不正なタイプです。
-
verify
public final boolean verify(byte[] signature, int offset, int length) throws SignatureException 指定されたオフセットから開始して、指定されたバイト・データの配列の渡された署名を検証します。このメソッドへのコールによって、この
Signatureオブジェクトは、以前にinitVerify(PublicKey)へのコールによって検証用に初期化されたときの状態にリセットされます。 つまり、オブジェクトをリセットするので、initVerifyへの呼出しで指定した公開キーを持つ識別の別の署名を検証できます。- パラメータ:
signature- 検証対象の署名バイト。offset- バイトの配列での開始オフセット。length- 使用するバイト数(offsetから開始)。- 戻り値:
- シグネチャが検証された場合は
true、検証されなかった場合はfalse。 - スロー:
SignatureException- このSignatureオブジェクトが適切に初期化されていない場合、渡されたシグネチャが正しくエンコードされていないか、このシグネチャ・アルゴリズムが指定の入力データを処理できない場合、不正なタイプです。IllegalArgumentException-signatureバイト配列がnull、offsetまたはlengthが0未満、またはoffsetとlengthの合計がsignatureの配列の長さを超えている場合。- 導入されたバージョン:
- 1.4
-
update
public final void update(byte b) throws SignatureException 指定されたバイトを使用して、署名または検証の対象データを更新します。- パラメータ:
b- 更新に使うバイト。- スロー:
SignatureException- このSignatureオブジェクトが適切に初期化されていない場合。
-
update
public final void update(byte[] data) throws SignatureException 指定されたバイト配列を使用して、署名または検証の対象データを更新します。- パラメータ:
data- 更新に使うバイト配列。- スロー:
SignatureException- このSignatureオブジェクトが適切に初期化されていない場合。
-
update
public final void update(byte[] data, int off, int len) throws SignatureException 署名または検証するデータを、指定されたバイトの配列を使って、指定されたオフセットから更新します。- パラメータ:
data- バイトの配列。off- バイトの配列での開始オフセット。len- 使用するバイト数(offsetから開始)。- スロー:
SignatureException- このSignatureオブジェクトが適切に初期化されていない場合。IllegalArgumentException-dataがnull、offまたはlenが0より小さい場合、またはoffとlenの合計がdataの長さより大きい場合。
-
update
public final void update(ByteBuffer data) throws SignatureException 署名または検証するデータを、指定されたByteBufferを使用して更新します。data.position()から始まるdata.remaining()バイトを処理します。 終了時に、バッファの位置はリミットに等しくなりますが、リミットは変更されません。- パラメータ:
data- ByteBuffer- スロー:
SignatureException- このSignatureオブジェクトが適切に初期化されていない場合。- 導入されたバージョン:
- 1.5
-
getAlgorithm
public final String getAlgorithm()このSignatureオブジェクトのアルゴリズムの名前を返します。- 戻り値:
- この
Signatureオブジェクトのアルゴリズムの名前。
-
toString
-
setParameter
@Deprecated public final void setParameter(String param, Object value) throws InvalidParameterException 非推奨。setParameterを使用します。指定されたアルゴリズム・パラメータを、指定された値に設定します。 このメソッドは、このオブジェクトのさまざまなパラメータの設定を可能にする汎用的なメカニズムを提供します。 パラメータは、パラメータ・サイズ、シグネチャ生成(必要に応じて)のランダム・ビットのソースなどのアルゴリズムの設定可能なパラメータ、または特定の(オプション)計算を実行するかどうかを示すパラメータです。 各パラメータの命名法は、統一されていてアルゴリズムに固有であることが望ましいですが、現時点では規定されていません。- パラメータ:
param- パラメータの文字列識別子value- パラメータ値- スロー:
InvalidParameterException-paramがこのSignatureオブジェクトの無効なパラメータである場合、パラメータはすでに設定されており、再設定できない場合、セキュリティ例外が発生します。- 関連項目:
-
setParameter
public final void setParameter(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException このSignatureオブジェクトを、指定したパラメータ値で初期化します。- パラメータ:
params- パラメータ値- スロー:
InvalidAlgorithmParameterException- 指定されたパラメータ値がこのSignatureオブジェクトに適していない場合- 関連項目:
-
getParameters
public final AlgorithmParameters getParameters()このSignatureオブジェクトで使用されるパラメータを返します。返されるパラメータは、この
Signatureオブジェクトの初期化に使用されたものと同じか、基礎となるシグネチャ・スキームで使用される追加のデフォルトまたはランダム・パラメータ値を含むことができます。 必要なパラメータが指定されず、Signatureオブジェクトによって生成できる場合は、生成されたパラメータが返されます。それ以外の場合は、nullが返されます。ただし、シグネチャ・スキームでパラメータが
AlgorithmParametersとして返されない場合、nullは常に返されます。- 戻り値:
- この
Signatureオブジェクトまたはnullで使用されるパラメータ - スロー:
UnsupportedOperationException- プロバイダがこのメソッドをサポートしていない場合- 導入されたバージョン:
- 1.4
- 関連項目:
-
getParameter
非推奨。指定されたアルゴリズム・パラメータの値を取得します。 このメソッドは、このオブジェクトのさまざまなパラメータの設定を可能にする汎用的なメカニズムを提供します。 パラメータは、パラメータ・サイズ、シグネチャ生成(必要に応じて)のランダム・ビットのソースなどのアルゴリズムの設定可能なパラメータ、または特定の(オプション)計算を実行するかどうかを示すパラメータです。 各パラメータの命名法は、統一されていてアルゴリズムに固有であることが望ましいですが、現時点では規定されていません。- パラメータ:
param- パラメータの文字列名。- 戻り値:
- パラメータ値を表すオブジェクト、または何もない場合は
null。 - スロー:
InvalidParameterException-paramがこのエンジンに対して無効なパラメータである場合、またはこのパラメータを取得しようとしている間に別の例外が発生した場合。- 関連項目:
-
clone
public Object clone() throws CloneNotSupportedException実装が複製可能な場合は複製を返します。- オーバーライド:
clone、クラスSignatureSpi- 戻り値:
- 実装が複製可能な場合は複製。
- スロー:
CloneNotSupportedException-Cloneableをサポートしていない実装で呼び出された場合。- 関連項目:
-
setParameterを使用します。