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