クラスPEMDecoder
PEMDecoderは、JavaプラットフォームのプレビューAPIです。
PEMDecoderは、プライバシ拡張メール(PEM)データのデコーダを実装します。 PEMは、非対称キー、証明書、証明書失効リスト(CRL)などの暗号化オブジェクトを格納および転送するために使用されるテキスト・エンコーディングです。 これは、RFC 1421およびRFC 7468で定義されています。 PEMは、型識別ヘッダーおよびフッターで囲まれたBase64でエンコードされたバイナリ・エンコーディングで構成されます。
decode(String)およびdecode(InputStream)メソッドは、次のように、PEM型と一致し、DEREncodablePREVIEWを実装するクラスのインスタンスを返します。
- 証明書:
X509Certificate - X509 CRL:
X509CRL - 公開鍵:
PublicKey - PRIVATE KEY :
PrivateKeyまたはKeyPair(エンコーディングに公開鍵が含まれている場合) - 暗号化された秘密キー:
EncryptedPrivateKeyInfo - その他のタイプ:
PEMPREVIEW
PEMDecoderインスタンスとともに使用する場合:
- ENCRYPTED PRIVATE KEY :
PrivateKeyまたはKeyPair(エンコーディングに公開鍵が含まれている場合)
PublicKey型およびPrivateKey型の場合は、アルゴリズム固有のサブクラスが戻されます(アルゴリズムがサポートされている場合)。 たとえば、楕円曲線キーのECPublicKeyまたはECPrivateKeyです。
PEM型に対応するクラスがない場合、decode(String)およびdecode(InputStream)はPEMオブジェクトを返します。
decode(String, Class)およびdecode(InputStream, Class)メソッドは、戻すDEREncodableのタイプを指定するクラス・パラメータを取ります。 これらのメソッドは、PEM型がわかっている場合や、複数のオプションがある場合に特定の型を抽出する場合に、キャストを回避するのに役立ちます。 たとえば、PEMに公開キーと秘密キーの両方が含まれている場合、PrivateKey.classを指定すると秘密キーのみが返されます。 クラス・パラメータでX509EncodedKeySpec.classが指定されている場合、公開キー・エンコーディングはX509EncodedKeySpecクラスのインスタンスとして返されます。 PEM.classを指定すると、任意のタイプのPEMデータをPEMオブジェクトにデコードできます。 クラス・パラメータがPEMコンテンツと一致しない場合は、ClassCastExceptionがスローされます。
前述の型に加えて、これらのメソッドは、パラメータとして指定されている場合、次のPEM型およびDEREncodableクラスをサポートします。
- 公開鍵:
X509EncodedKeySpec - 秘密キー:
PKCS8EncodedKeySpec - PRIVATE KEY :
PublicKey(エンコーディングに公開鍵が含まれている場合) - PRIVATE KEY :
X509EncodedKeySpec(エンコーディングに公開鍵が含まれている場合)
PEMDecoderインスタンスとともに使用する場合:
- 暗号化された秘密キー:
PKCS8EncodedKeySpec - ENCRYPTED PRIVATE KEY :
PublicKey(エンコーディングに公開鍵が含まれている場合) - ENCRYPTED PRIVATE KEY :
X509EncodedKeySpec(エンコーディングに公開鍵が含まれている場合)
withFactory(Provider)またはwithDecryption(char[])で構成すると、新しいPEMDecoderインスタンスが作成されます。 withFactory(Provider)メソッドは、指定されたプロバイダを使用して、KeyFactoryおよびCertificateFactoryから暗号化オブジェクトを生成します。 withDecryption(char[])メソッドは、指定されたパスワードを使用して暗号化された秘密キーPEMデータを復号化およびデコードするようにデコーダを構成します。 復号化に失敗すると、IllegalArgumentExceptionがスローされます。 暗号化された秘密キーPEMが復号化用に構成されていないデコーダによって処理される場合、EncryptedPrivateKeyInfoオブジェクトが戻されます。 復号化用に構成されたPEMDecoderは、暗号化されていないPEMをデコードします。
このクラスは不変でスレッドセーフです。
例: 秘密キーをデコードします。
PEMDecoder pd = PEMDecoder.of();
PrivateKey priKey = pd.decode(priKeyPEM, PrivateKey.class);
例: 復号化とファクトリ・プロバイダの構成:
PEMDecoder pd = PEMDecoder.of().withDecryption(password).
withFactory(provider);
DEREncodable pemData = pd.decode(privKeyPEM);
- 実装上のノート:
- この実装では、RSA PRIVATE KEYを
PrivateKey、X509 CERTIFICATEおよびX.509 CERTIFICATEをX509Certificateとして、CRLをX509CRLとしてデコードします。 他の実装では、追加のPEMタイプを認識できます。 - 導入されたバージョン:
- 25
- 外部仕様
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明decode(InputStream is) 指定されたInputStreamからDEREncodableをデコードして返します。<S extends DEREncodablePREVIEW>
Sdecode(InputStream is, Class<S> tClass) 指定されたInputStreamの指定されたクラスのDEREncodableをデコードして返します。指定されたStringからDEREncodableをデコードして返します。<S extends DEREncodablePREVIEW>
S指定されたPEM文字列から、指定されたクラスのDEREncodableをデコードして返します。static PEMDecoderPREVIEWof()PEMDecoderのインスタンスを返します。withDecryption(char[] password) 指定されたパスワードを使用して暗号化された秘密キーをデコードおよび復号化する、このPEMDecoderのコピーを返します。withFactory(Provider provider) 指定されたProviderからKeyFactoryおよびCertificateFactory実装を使用して暗号化オブジェクトを生成する、このPEMDecoderインスタンスのコピーを返します。クラスオブジェクトで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait修飾子と型メソッド説明protected Objectclone()このオブジェクトのコピーを作成して、返します。booleanこのオブジェクトと他のオブジェクトが等しいかどうかを示します。protected voidfinalize()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は非推奨であり、将来のリリースで削除される可能性があります。final Class<?> getClass()このObjectの実行時クラスを返します。inthashCode()このオブジェクトに対するハッシュ・コード値を返します。final voidnotify()このオブジェクトのモニターで待機中のスレッドを1つ再開します。final voidこのオブジェクトのモニターで待機中のすべてのスレッドを再開します。toString()オブジェクトの文字列表現を返します。final voidwait()現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。final voidwait(long timeoutMillis) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。final voidwait(long timeoutMillis, int nanos) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
-
メソッドの詳細
-
of
-
decode
public DEREncodablePREVIEW decode(String str) 指定されたStringからDEREncodableをデコードして返します。このメソッドは、PEMデータが見つかるか、
Stringの終わりに達するまで、Stringを読み取ります。 PEMデータが見つからない場合は、IllegalArgumentExceptionがスローされます。デコードされたデータを最もよく表す
DEREncodableが戻されます。 PEM型がサポートされていない場合は、型識別子、Base64でエンコードされたデータ、およびPEMヘッダーの前の先行データを含むPEMオブジェクトが戻されます。PEM以外のDEREncodable型の場合、先行データは無視され、DEREncodableオブジェクトの一部として返されません。このメソッドによって消費される入力は、
UTF-8として読み取られます。- パラメータ:
str- PEMデータを含むString- 戻り値:
DEREncodable- スロー:
IllegalArgumentException- デコード中にエラーが発生したか、PEMデータが見つかりませんNullPointerException-strがnullの場合
-
decode
public DEREncodablePREVIEW decode(InputStream is)は IOExceptionをスローします。 指定されたInputStreamからDEREncodableをデコードして返します。このメソッドは、
InputStreamからPEMフッターの終わりまたはストリームの終わりまで読み取ります。 I/Oエラーが発生すると、ストリーム内の読取り位置が矛盾する可能性があります。InputStreamに対してこれ以上のデコード操作を実行しないことをお薦めします。デコードされたデータを最もよく表す
DEREncodableが戻されます。 PEM型がサポートされていない場合は、型識別子、Base64でエンコードされたデータ、およびPEMヘッダーの前の先行データを含むPEMオブジェクトが戻されます。PEM以外のDEREncodable型の場合、先行データは無視され、DEREncodableオブジェクトの一部として返されません。PEMデータが見つからない場合は、
EOFExceptionがスローされます。- パラメータ:
is- PEMデータを含むInputStream- 戻り値:
DEREncodable- スロー:
IOException-InputStreamがデコードを完了しなかったIOまたはPEM構文エラーEOFException- PEMデータが見つからないか、InputStreamの最後に予期せず到達しましたIllegalArgumentException- デコード中にエラーが発生しましたNullPointerException-isがnullの場合
-
decode
public <S extends DEREncodablePREVIEW> S decode(String str, Class<S> tClass) 指定されたPEM文字列から、指定されたクラスのDEREncodableをデコードして返します。tClassは、PEMタイプに適したクラスである必要があります。このメソッドは、PEMデータが見つかるか、
Stringの終わりに達するまで、Stringを読み取ります。 PEMデータが見つからない場合は、IllegalArgumentExceptionがスローされます。クラス・パラメータが
PEM.classの場合、型識別子、Base64でエンコードされたデータ、およびPEMヘッダーの前の先行データを含むPEMオブジェクトが戻されます。PEM以外のDEREncodable型の場合、先行データは無視され、DEREncodableオブジェクトの一部として返されません。このメソッドによって消費される入力は、
UTF-8として読み取られます。- 型パラメータ:
S-DEREncodableを拡張するクラス型パラメータ- パラメータ:
str- PEMデータを含むStringtClass-DEREncodableを拡張または実装する、戻されたオブジェクト・クラス- 戻り値:
tClassで指定されたDEREncodable- スロー:
IllegalArgumentException- デコード中にエラーが発生したか、PEMデータが見つかりませんClassCastException-tClassがPEMタイプを表していない場合NullPointerException- 入力値がnullの場合
-
decode
public <S extends DEREncodablePREVIEW> S decode(InputStream is, Class<S> tClass) throws IOException 指定されたInputStreamの指定されたクラスのDEREncodableをデコードして返します。tClassは、PEM型に適したクラスである必要があります。このメソッドは、
InputStreamからPEMフッターの終わりまたはストリームの終わりまで読み取ります。 I/Oエラーが発生すると、ストリーム内の読取り位置が矛盾する可能性があります。InputStreamに対してこれ以上のデコード操作を実行しないことをお薦めします。クラス・パラメータが
PEM.classの場合、型識別子、Base64でエンコードされたデータ、およびPEMヘッダーの前の先行データを含むPEMオブジェクトが戻されます。PEM以外のDEREncodable型の場合、先行データは無視され、DEREncodableオブジェクトの一部として返されません。PEMデータが見つからない場合は、
EOFExceptionがスローされます。- 型パラメータ:
S-DEREncodableを拡張するクラス型パラメータ- パラメータ:
is- PEMデータを含むInputStreamtClass-DEREncodableを拡張または実装する、戻されたオブジェクト・クラス- 戻り値:
tClassへのDEREncodable型キャスト- スロー:
IOException-InputStreamがデコードを完了しなかったIOまたはPEM構文エラーEOFException- PEMデータが見つからないか、InputStreamの最後に予期せず到達しましたIllegalArgumentException- デコード中にエラーが発生しましたClassCastException-tClassがPEMタイプを表していない場合NullPointerException- 入力値がnullの場合- 関連項目:
-
withFactory
public PEMDecoderPREVIEW withFactory(Provider provider) 指定されたProviderからKeyFactoryおよびCertificateFactory実装を使用して暗号化オブジェクトを生成する、このPEMDecoderインスタンスのコピーを返します。Providerを使用したエラーは、デコード中に発生します。- パラメータ:
provider- ファクトリ・プロバイダ- 戻り値:
Providerで構成された新しいPEMDecoderインスタンス- スロー:
NullPointerException-providerがnullの場合
-
withDecryption
public PEMDecoderPREVIEW withDecryption(char[] password) 指定されたパスワードを使用して暗号化された秘密キーをデコードおよび復号化する、このPEMDecoderのコピーを返します。 暗号化されていないPEMもこのインスタンスからデコードできます。- パラメータ:
password- 暗号化されたPEMデータを復号化するパスワード。 この配列はクローニングされ、新しいインスタンスに格納されます。- 戻り値:
- 復号化用に構成された新しい
PEMDecoderインスタンス - スロー:
NullPointerException-passwordがnullの場合
-
PEMDecoderを使用できます。