JavaTM Platform
Standard Ed. 6

java.security
クラス KeyFactory

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);
 

導入されたバージョン:
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, Provider provider)
          指定のアルゴリズムの公開鍵または非公開鍵を変換する KeyFactory オブジェクトを返します。
static KeyFactory getInstance(String algorithm, String provider)
          指定のアルゴリズムの公開鍵または非公開鍵を変換する KeyFactory オブジェクトを返します。
<T extends KeySpec>
T
getKeySpec(Key key, Class<T> 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 - プロバイダ
algorithm - この KeyFactory に関連付けるアルゴリズムの名前
メソッドの詳細

getInstance

public static KeyFactory getInstance(String algorithm)
                              throws NoSuchAlgorithmException
指定のアルゴリズムの公開鍵または非公開鍵を変換する KeyFactory オブジェクトを返します。

このメソッドは、最優先の Provider から順に、登録済みのセキュリティー Provider のリストをトラバースします。指定されたアルゴリズムをサポートする最初の Provider の KeyFactorySpi 実装をカプセル化する新しい KeyFactory オブジェクトが返されます。

登録済みプロバイダのリストは、Security.getProviders() メソッド経由で取得できます。

パラメータ:
algorithm - 要求される鍵アルゴリズムの名前。 アルゴリズムの標準名については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
戻り値:
新しい KeyFactory オブジェクト
例外:
NoSuchAlgorithmException - 指定されたアルゴリズムの KeyFactorySpi 実装をサポートする Provider が存在しない場合
関連項目:
Provider

getInstance

public static KeyFactory getInstance(String algorithm,
                                     String provider)
                              throws NoSuchAlgorithmException,
                                     NoSuchProviderException
指定のアルゴリズムの公開鍵または非公開鍵を変換する KeyFactory オブジェクトを返します。

指定されたプロバイダの KeyFactorySpi 実装をカプセル化する新しい KeyFactory オブジェクトが返されます。指定したプロバイダは、セキュリティープロバイダリストに登録する必要があります。

登録済みプロバイダのリストは、Security.getProviders() メソッド経由で取得できます。

パラメータ:
algorithm - 要求される鍵アルゴリズムの名前。 アルゴリズムの標準名については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
provider - プロバイダ名
戻り値:
新しい KeyFactory オブジェクト
例外:
NoSuchAlgorithmException - 指定されたプロバイダに指定されたアルゴリズムの KeyFactorySpi 実装がない場合
NoSuchProviderException - 指定されたプロバイダがセキュリティープロバイダリストに登録されていない場合
IllegalArgumentException - プロバイダの名前が null か空の場合
関連項目:
Provider

getInstance

public static KeyFactory getInstance(String algorithm,
                                     Provider provider)
                              throws NoSuchAlgorithmException
指定のアルゴリズムの公開鍵または非公開鍵を変換する KeyFactory オブジェクトを返します。

指定された Provider オブジェクトの KeyFactorySpi 実装をカプセル化する新しい KeyFactory オブジェクトが返されます。指定された Provider オブジェクトは、プロバイダリストに登録する必要はありません。

パラメータ:
algorithm - 要求される鍵アルゴリズムの名前。 アルゴリズムの標準名については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」の付録 A を参照
provider - プロバイダ
戻り値:
新しい KeyFactory オブジェクト
例外:
NoSuchAlgorithmException - 指定された Provider オブジェクトに指定されたアルゴリズムの KeyFactorySpi 実装がない場合
IllegalArgumentException - 指定されたプロバイダが 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 クラスのインスタンスに返されるべきであることを指示します。

パラメータ:
key - 鍵
keySpec - 鍵データが返される仕様クラス
戻り値:
要求される仕様クラスのインスタンスにおける基本の鍵仕様 (鍵データ)
例外:
InvalidKeySpecException - 要求される鍵仕様が指定された鍵に不適切な場合、または認識されないアルゴリズムや形式の鍵を指定した場合など、指定された鍵を処理できない場合

translateKey

public final Key translateKey(Key key)
                       throws InvalidKeyException
プロバイダが未知であるか、信頼できない可能性がある鍵オブジェクトを、この鍵ファクトリの対応する鍵オブジェクトに変換します。

パラメータ:
key - プロバイダが未知であるか、信頼できない鍵
戻り値:
変換した鍵
例外:
InvalidKeyException - 指定された鍵をこの鍵ファクトリで処理できない場合

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。