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
アルゴリズムをサポートする必要があります。
SHA1withDSA
SHA256withDSA
SHA1withRSA
SHA256withRSA
- 導入されたバージョン:
- 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 Signature
getInstance
(String algorithm) 指定されたシグネチャ・アルゴリズムを実装するSignature
オブジェクトを返します。static Signature
getInstance
(String algorithm, String provider) 指定されたシグネチャ・アルゴリズムを実装するSignature
オブジェクトを返します。static Signature
getInstance
(String algorithm, Provider provider) 指定されたシグネチャ・アルゴリズムを実装するSignature
オブジェクトを返します。final Object
getParameter
(String param) 非推奨。final AlgorithmParameters
このSignature
オブジェクトで使用されるパラメータを返します。final Provider
このSignature
オブジェクトのプロバイダを返します。final void
initSign
(PrivateKey privateKey) 署名用にこのオブジェクトを初期化します。final void
initSign
(PrivateKey privateKey, SecureRandom random) 署名用にこのオブジェクトを初期化します。final void
initVerify
(Certificate certificate) このオブジェクトを、検証操作のために指定された公開キーで初期化します。final void
initVerify
(PublicKey publicKey) 検証用にこのオブジェクトを初期化します。final void
setParameter
(String param, Object value) 非推奨。final void
setParameter
(AlgorithmParameterSpec params) このSignature
オブジェクトを、指定したパラメータ値で初期化します。final byte[]
sign()
更新されたすべてのデータの署名バイトを返します。final int
sign
(byte[] outbuf, int offset, int len) 署名操作を終了し、結果として得られる署名バイトを、指定されたバッファoutbuf
にoffset
から格納します。toString()
このSignature
オブジェクトの文字列表現を返します。オブジェクトの状態および使用されるアルゴリズムの名前を含む情報を提供します。final void
update
(byte b) 指定されたバイトを使用して、署名または検証の対象データを更新します。final void
update
(byte[] data) 指定されたバイト配列を使用して、署名または検証の対象データを更新します。final void
update
(byte[] data, int off, int len) 署名または検証するデータを、指定されたバイトの配列を使って、指定されたオフセットから更新します。final void
update
(ByteBuffer data) 署名または検証するデータを、指定されたByteBufferを使用して更新します。final boolean
verify
(byte[] signature) 渡された署名を検証します。final boolean
verify
(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.preferred
Security
プロパティを使用して、指定したアルゴリズムの優先プロバイダ順序を決定します。 これは、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
を使用します。