- java.lang.Object
-
- java.security.KeyFactory
-
public class KeyFactory extends Object
鍵ファクトリは、Key
型の不透明な暗号鍵である鍵と、基本の鍵データの透明な表現である鍵仕様との間の変換を行うために使用します。鍵ファクトリは、双方向性があります。 つまり、指定した鍵仕様(鍵データ)から不透明な鍵オブジェクトを構築することも、適切な形式で鍵オブジェクトの基本の鍵データを取り出すこともできます。
同一の鍵に対して、複数の互換性のある鍵仕様が存在することがあります。 たとえばDSA公開鍵は、
DSAPublicKeySpec
またはX509EncodedKeySpec
を使って指定できます。 鍵ファクトリは、互換性のある鍵仕様間の変換に使用できます。次に、鍵ファクトリを使って、DSA公開鍵を符号化した状態からインスタンスを生成する方法の例を示します。 AliceがBobからデジタル署名を受け取ったとします。 Bobは、彼の署名を検証するための符号化形式の公開鍵も送りました。 Aliceは、これらを次のように処理します。
X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(bobEncodedPubKey); KeyFactory keyFactory = KeyFactory.getInstance("DSA"); PublicKey bobPubKey = keyFactory.generatePublic(bobPubKeySpec); Signature sig = Signature.getInstance("DSA"); sig.initVerify(bobPubKey); sig.update(data); sig.verify(signature);
Javaプラットフォームの実装は、すべて次の標準の
KeyFactory
アルゴリズムをサポートする必要があります。DiffieHellman
DSA
RSA
- 導入されたバージョン:
- 1.2
- 関連項目:
Key
,PublicKey
,PrivateKey
,KeySpec
,DSAPublicKeySpec
,X509EncodedKeySpec
-
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protected
KeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm)
KeyFactoryオブジェクトを作成します。
-
メソッドのサマリー
修飾子と型 メソッド 説明 PrivateKey
generatePrivate(KeySpec keySpec)
指定された鍵仕様(鍵データ)から非公開鍵オブジェクトを生成します。PublicKey
generatePublic(KeySpec keySpec)
指定された鍵仕様(鍵データ)から公開鍵オブジェクトを生成します。String
getAlgorithm()
このKeyFactory
に関連したアルゴリズムの名前を取得します。static KeyFactory
getInstance(String algorithm)
指定のアルゴリズムの公開鍵または非公開鍵を変換するKeyFactoryオブジェクトを返します。static KeyFactory
getInstance(String algorithm, String provider)
指定のアルゴリズムの公開鍵または非公開鍵を変換するKeyFactoryオブジェクトを返します。static KeyFactory
getInstance(String algorithm, Provider provider)
指定のアルゴリズムの公開鍵または非公開鍵を変換するKeyFactoryオブジェクトを返します。<T extends KeySpec>
TgetKeySpec(Key key, Class<T> keySpec)
指定された鍵オブジェクトの仕様(鍵データ)を返します。Provider
getProvider()
この鍵ファクトリ・オブジェクトのプロバイダを返します。Key
translateKey(Key key)
プロバイダが未知であるか、信頼できない可能性がある鍵オブジェクトを、この鍵ファクトリの対応する鍵オブジェクトに変換します。
-
-
-
コンストラクタの詳細
-
KeyFactory
protected KeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm)
KeyFactoryオブジェクトを作成します。- パラメータ:
keyFacSpi
- 委譲先provider
- プロバイダalgorithm
- このKeyFactory
に関連付けるアルゴリズムの名前
-
-
メソッドの詳細
-
getInstance
public static KeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException
指定のアルゴリズムの公開鍵または非公開鍵を変換するKeyFactoryオブジェクトを返します。このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のProviderのKeyFactorySpi実装をカプセル化する新しいKeyFactoryオブジェクトが返されます。
登録済みプロバイダのリストは、
Security.getProviders()
メソッド経由で取得できます。- 実装上の注意:
- JDKリファレンス実装では、
jdk.security.provider.preferred
Security
プロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()
によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
algorithm
- 要求される鍵アルゴリズムの名前。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のKeyFactoryセクションを参照してください。- 戻り値:
- 新しい
KeyFactory
オブジェクト - 例外:
NoSuchAlgorithmException
-Provider
が、指定されたアルゴリズムのKeyFactorySpi
実装をサポートしていない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
Provider
-
getInstance
public static KeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
指定のアルゴリズムの公開鍵または非公開鍵を変換するKeyFactoryオブジェクトを返します。指定されたプロバイダのKeyFactorySpi実装をカプセル化する新しいKeyFactoryオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。
登録済みプロバイダのリストは、
Security.getProviders()
メソッド経由で取得できます。- パラメータ:
algorithm
- 要求される鍵アルゴリズムの名前。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のKeyFactoryセクションを参照してください。provider
- プロバイダ名。- 戻り値:
- 新しい
KeyFactory
オブジェクト - 例外:
IllegalArgumentException
- プロバイダ名がnull
または空の場合NoSuchAlgorithmException
- 指定されたアルゴリズムのKeyFactorySpi
実装が、指定されたプロバイダから利用可能でない場合NoSuchProviderException
- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
Provider
-
getInstance
public static KeyFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
指定のアルゴリズムの公開鍵または非公開鍵を変換するKeyFactoryオブジェクトを返します。指定されたProviderオブジェクトのKeyFactorySpi実装をカプセル化する新しいKeyFactoryオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
- パラメータ:
algorithm
- 要求される鍵アルゴリズムの名前。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のKeyFactoryセクションを参照してください。provider
- プロバイダ- 戻り値:
- 新しい
KeyFactory
オブジェクト - 例外:
IllegalArgumentException
- 指定されたプロバイダがnull
の場合NoSuchAlgorithmException
- 指定されたアルゴリズムのKeyFactorySpi
実装が、指定されたProvider
オブジェクトから使用できない場合NullPointerException
-algorithm
がnull
である場合- 導入されたバージョン:
- 1.4
- 関連項目:
Provider
-
getProvider
public final Provider getProvider()
この鍵ファクトリ・オブジェクトのプロバイダを返します。- 戻り値:
- この鍵ファクトリ・オブジェクトのプロバイダ
-
getAlgorithm
public final String getAlgorithm()
このKeyFactory
に関連したアルゴリズムの名前を取得します。- 戻り値:
- この
KeyFactory
に関連付けられたアルゴリズムの名前
-
generatePublic
public final PublicKey generatePublic(KeySpec keySpec) throws InvalidKeySpecException
指定された鍵仕様(鍵データ)から公開鍵オブジェクトを生成します。- パラメータ:
keySpec
- 公開鍵の仕様(鍵データ)。- 戻り値:
- 公開鍵。
- 例外:
InvalidKeySpecException
- 指定された鍵仕様がこの鍵ファクトリによる公開鍵の生成に不適切な場合。
-
generatePrivate
public final PrivateKey generatePrivate(KeySpec keySpec) throws InvalidKeySpecException
指定された鍵仕様(鍵データ)から非公開鍵オブジェクトを生成します。- パラメータ:
keySpec
- 非公開鍵の仕様(鍵データ)。- 戻り値:
- 非公開鍵。
- 例外:
InvalidKeySpecException
- 指定された鍵仕様がこの鍵ファクトリによる非公開鍵の生成に不適切な場合。
-
getKeySpec
public final <T extends KeySpec> T getKeySpec(Key key, Class<T> keySpec) throws InvalidKeySpecException
指定された鍵オブジェクトの仕様(鍵データ)を返します。keySpec
は、鍵のデータが返されるべき仕様クラスを識別します。 たとえば、DSAPublicKeySpec.class
は、鍵のデータがDSAPublicKeySpec
クラスのインスタンスに返されるべきであることを指示します。- 型パラメータ:
T
- 返される鍵仕様の型- パラメータ:
key
- 鍵。keySpec
- 鍵データが返される仕様クラス。- 戻り値:
- 要求される仕様クラスのインスタンスにおける基本の鍵仕様(鍵データ)。
- 例外:
InvalidKeySpecException
- 要求される鍵仕様が指定された鍵に不適切な場合、または認識されないアルゴリズムや形式の鍵を指定した場合など、指定された鍵を処理できない場合。
-
translateKey
public final Key translateKey(Key key) throws InvalidKeyException
プロバイダが未知であるか、信頼できない可能性がある鍵オブジェクトを、この鍵ファクトリの対応する鍵オブジェクトに変換します。- パラメータ:
key
- プロバイダが未知であるか、信頼できない鍵。- 戻り値:
- 変換した鍵。
- 例外:
InvalidKeyException
- 指定された鍵をこの鍵ファクトリで処理できない場合。
-
-