Java プラットフォーム 1.2

java.security
クラス KeyFactory

java.lang.Object
  |
  +--java.security.KeyFactory

public class KeyFactory
extends Object

鍵ファクトリ (KeyFactory) は、Key 型の不透明な暗号鍵である「鍵」と、基本の鍵データの透過的な表現である「鍵仕様」との間の変換を行うために使用します。

鍵ファクトリ (KeyFactory) は双方向です。つまり、指定した鍵仕様 (鍵データ) から不透明な鍵オブジェクトを構築することも、適切な形式で鍵オブジェクトの基本の鍵データを取り出すこともできます。

同じ鍵に対して、互換性のある複数の鍵仕様が存在する場合があります。たとえば DSA 公開鍵は、DSAPublicKeySpec または X509EncodedKeySpec を使って指定できます。鍵ファクトリ (KeyFactory) を使用すると、互換性のある鍵仕様間の変換を行うことができます。

以下に、鍵ファクトリ (KeyFactory) を使って、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);
 

導入されたバージョン:
JDK1.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()
          この鍵ファクトリに関連付けられたアルゴリズムの名前を返します。
static KeyFactory getInstance(String algorithm)
          指定されたダイジェストアルゴリズムを実装する KeyFactory オブジェクトを作成します。
static KeyFactory getInstance(String algorithm, String provider)
          指定されたプロバイダから、指定されたアルゴリズムの KeyFactory オブジェクトを作成します。
 KeySpec getKeySpec(Key key, Class keySpec)
          指定された鍵オブジェクトの仕様 (鍵データ) を返します。
 Provider getProvider()
          この鍵ファクトリオブジェクトのプロバイダを返します。
 Key translateKey(Key key)
          プロバイダが未知であるか、信頼できない可能性がある鍵オブジェクトを、この鍵ファクトリの対応する鍵オブジェクトに変換します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

KeyFactory

protected KeyFactory(KeyFactorySpi keyFacSpi,
                     Provider provider,
                     String algorithm)
KeyFactory オブジェクトを作成します。
パラメータ:
keyFacSpi - 委譲先
provider - プロバイダ
メソッドの詳細

getInstance

public static KeyFactory getInstance(String algorithm)
                              throws NoSuchAlgorithmException
指定されたダイジェストアルゴリズムを実装する KeyFactory オブジェクトを作成します。要求されるダイジェストアルゴリズムの実装をデフォルトのプロバイダパッケージが提供する場合は、その実装を含む KeyFactory のインスタンスが返されます。デフォルトパッケージに目的のアルゴリズムがない場合は、ほかのパッケージを検索します。
パラメータ:
algorithm - 要求される鍵アルゴリズムの名前。標準アルゴリズムの名前については、「Java 暗号化アーキテクチャ API 仕様 & リファレンス」の付録 A を参照
戻り値:
指定されたアルゴリズムの KeyFactory オブジェクト
例外:
NoSuchAlgorithmException - 要求されるアルゴリズムが、デフォルトのプロバイダパッケージにも、検索したほかのプロバイダパッケージにもない場合

getInstance

public static KeyFactory getInstance(String algorithm,
                                     String provider)
                              throws NoSuchAlgorithmException,
                                     NoSuchProviderException
指定されたプロバイダから、指定されたアルゴリズムの KeyFactory オブジェクトを作成します。
パラメータ:
algorithm - 要求される鍵アルゴリズムの名前。標準アルゴリズムの名前については、「Java 暗号化アーキテクチャ API 仕様 & リファレンス」の付録 A を参照
provider - プロバイダの名前
戻り値:
指定されたアルゴリズムの KeyFactory オブジェクト
例外:
NoSuchAlgorithmException - 指定されたプロバイダにアルゴリズムがない場合
NoSuchProviderException - プロバイダが設定されていない場合
関連項目:
Provider

getProvider

public final Provider getProvider()
この鍵ファクトリオブジェクトのプロバイダを返します。
戻り値:
この鍵ファクトリオブジェクトのプロバイダ

getAlgorithm

public final String getAlgorithm()
この鍵ファクトリに関連付けられたアルゴリズムの名前を返します。

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 KeySpec getKeySpec(Key key,
                                Class keySpec)
                         throws InvalidKeySpecException
指定された鍵オブジェクトの仕様 (鍵データ) を返します。keySpec は、鍵データが返される仕様クラスを識別します。たとえば、それが DSAPublicKeySpec.class の場合には、鍵データが DSAPublicKeySpec クラスのインスタンスに返されることを示します。
パラメータ:
key - 鍵
keySpec - 返される鍵データが従う仕様クラス
戻り値:
要求される仕様クラスのインスタンスにおける基本の鍵仕様 (鍵データ)
例外:
InvalidKeySpecException - 要求される鍵仕様が指定の鍵に不適切な場合、あるいは認識されないアルゴリズムや形式の鍵を指定した場合など、指定の鍵を処理できない場合

translateKey

public final Key translateKey(Key key)
                       throws InvalidKeyException
プロバイダが未知であるか、信頼できない可能性がある鍵オブジェクトを、この鍵ファクトリの対応する鍵オブジェクトに変換します。
パラメータ:
key - プロバイダが未知であるか、信頼できない鍵
戻り値:
変換した鍵
例外:
InvalidKeyException - 指定された鍵がこの鍵ファクトリで処理できない場合

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.