モジュール java.base
パッケージ java.security

クラスSignature


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

    多くの署名アルゴリズムの中で、DSAおよびSHA-256を使用したNIST標準のDSAを使用できます。 SHA-256メッセージ・ダイジェスト・アルゴリズムを使用するDSAアルゴリズムは、SHA256withDSAのように指定できます。 RSAの場合、署名アルゴリズムはSHA256withRSAのように指定できます。 デフォルトはないので、必ずアルゴリズムの名前を指定しなければいけません。

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

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

    1. 次のどちらかの方法による初期化
      • 公開鍵を使用する方法。Signatureを検証用として初期化する(initVerifyを参照)
      • 非公開鍵(およびオプションでセキュリティ保護された乱数ジェネレータ)を使用する方法。Signatureオブジェクトを署名用として初期化する(initSign(PrivateKey)およびinitSign(PrivateKey, SecureRandom)を参照)。
    2. 更新

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

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

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

    Javaプラットフォームの実装は、すべて次の標準のSignatureアルゴリズムをサポートする必要があります。

    • SHA1withDSA
    • SHA256withDSA
    • SHA1withRSA
    • SHA256withRSA
    これらのアルゴリズムは、Javaセキュリティ標準アルゴリズム名仕様の「シグネチャ・セクション」に記述されています。 サポートされているその他のアルゴリズムについては、実装のリリース・ドキュメントを参照してください。

    導入されたバージョン:
    1.1
    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      protected static int SIGN
      この署名オブジェクトが署名用に初期化済みであることを示す、stateの可能な値です。
      protected int state
      この署名オブジェクトの現在の状態です。
      protected static int UNINITIALIZED
      この署名オブジェクトの初期化が終了していないことを示す、stateの可能な値です。
      protected static int VERIFY
      この署名オブジェクトが検証用に初期化済みであることを示す、stateの可能な値です。
    • コンストラクタのサマリー

      コンストラクタ 
      修飾子 コンストラクタ 説明
      protected Signature​(String algorithm)
      指定されたアルゴリズムに対するSignatureオブジェクトを作成します。
    • フィールドの詳細

      • 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 - algorithmnullである場合
        関連項目:
        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 - algorithmnullである場合
        関連項目:
        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 - algorithmnullである場合
        導入されたバージョン:
        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
        署名操作を終了し、結果として得られる署名バイトを、指定されたバッファoutbufoffsetから格納します。 署名の形式は基になる署名方式に依存します。

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

        パラメータ:
        outbuf - 最終的な署名を格納するバッファ。
        offset - outbufに署名を格納するときのオフセット。
        len - outbuf内に署名用として割り当てられるバイト数。
        戻り値:
        outbufに格納されたバイト数。
        例外:
        SignatureException - iこの署名オブジェクトが正しく初期化されていない場合、この署名アルゴリズムが指定された入力データを処理できない場合、またはlenの値が実際の署名の長さより小さい場合。
        IllegalArgumentException - outbufnull、またはoffsetまたはlenが0より小さい場合、またはoffsetlenの合計が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バイト配列がnulloffsetまたはlengthが0未満、またはoffsetlengthの合計が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 - datanull、またはoffまたはlenが0より小さい場合、またはofflenの合計が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()
        この署名オブジェクトの文字列表現を返し、オブジェクトの状態と使用されるアルゴリズムの名前を含む情報を提供します。
        オーバーライド:
        toString 、クラス:  Object
        戻り値:
        この署名オブジェクトの文字列表現。
      • setParameter

        @Deprecated
        public final void setParameter​(String param,
                                       Object value)
                                throws InvalidParameterException
        非推奨。
        setParameterを使用してください。
        指定されたアルゴリズム・パラメータを、指定された値に設定します。 このメソッドは、このオブジェクトのさまざまなパラメータの設定を可能にする汎用的なメカニズムを提供します。 パラメータは、たとえば、パラメータ・サイズ、署名生成に対する乱数ビットの発生源(該当する場合)、特定のオプションの計算を実行するかどうかの指示など、アルゴリズムに対して設定可能であればどのようなパラメータでも設定できます。 各パラメータの命名法は、統一されていてアルゴリズムに固有であることが望ましいですが、現時点では規定されていません。
        パラメータ:
        param - パラメータの文字列識別子。
        value - パラメータ値。
        例外:
        InvalidParameterException - paramがこの署名アルゴリズム・エンジンに対して無効である場合、パラメータが設定済みで再設定できない場合、セキュリティ例外が発生した場合など。
        関連項目:
        getParameter(java.lang.String)
      • getParameters

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

        このシグネチャがパラメータ(setParameterメソッドの呼出し)で以前に初期化されている場合、このメソッドは同じパラメータを返します。 このシグネチャがパラメータで初期化されていない場合、このメソッドは、基礎となる署名実装の実装でサポートされ、正常に生成された場合に、デフォルトでランダムに生成されたパラメータ値の組合せを返すことがあります。 それ以外の場合はnullが返されます。

        戻り値:
        このシグネチャに使用されたパラメータ、またはnull
        導入されたバージョン:
        1.4
        関連項目:
        setParameter(AlgorithmParameterSpec)
      • getParameter

        @Deprecated
        public final Object getParameter​(String param)
                                  throws InvalidParameterException
        非推奨。
        指定されたアルゴリズム・パラメータの値を取得します。 このメソッドは、このオブジェクトのさまざまなパラメータの設定を可能にする汎用的なメカニズムを提供します。 パラメータは、たとえば、パラメータ・サイズ、署名生成に対する乱数ビットの発生源(該当する場合)、特定のオプションの計算を実行するかどうかの指示など、アルゴリズムに対して設定可能であればどのようなパラメータでも設定できます。 各パラメータの命名法は、統一されていてアルゴリズムに固有であることが望ましいですが、現時点では規定されていません。
        パラメータ:
        param - パラメータの文字列名。
        戻り値:
        パラメータ値を表すオブジェクト、または何もない場合はnull
        例外:
        InvalidParameterException - paramがこのエンジンに対して無効なパラメータである場合、またはこのパラメータを取得しようとしている間に別の例外が発生した場合。
        関連項目:
        setParameter(String, Object)