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