クラスPEMDecoder
PEMDecoderは、JavaプラットフォームのプレビューAPIです。
PEMDecoderは、プライバシ拡張メール(PEM)データのデコーダを実装します。 PEMは、非対称キー、証明書、証明書失効リスト(CRL)などのセキュリティ・オブジェクトの格納および転送に使用されるテキスト・エンコーディングです。 これは、RFC 1421およびRFC 7468で定義されています。 PEMは、型識別ヘッダーおよびフッターで囲まれたBase64形式のバイナリ・エンコーディングで構成されます。
decode(String)およびdecode(InputStream)メソッドは、データ型と一致し、DEREncodablePREVIEWを実装するクラスのインスタンスを返します。
次に、サポートされているPEMタイプと、それぞれがデコードされるDEREncodableタイプを示します。
- 証明書:
X509Certificate - X509 CRL:
X509CRL - 公開キー:
PublicKey - PUBLIC KEY:
X509EncodedKeySpec(Classパラメータとして渡された場合のみサポートされます) - 秘密キー:
PrivateKey - PRIVATE KEY:
PKCS8EncodedKeySpec(Classパラメータとして渡された場合のみサポートされます) - PRIVATE KEY:
KeyPair(エンコーディングに公開キーも含まれている場合) - 暗号化された秘密キー:
EncryptedPrivateKeyInfo - 暗号化プライベート・キー:
PrivateKey(復号化で構成されている場合) - その他のタイプ:
PEMRecord
PublicKey型およびPrivateKey型は、基礎となるアルゴリズムがサポートされている場合、アルゴリズム固有のサブクラスを返します。 たとえば、楕円曲線キーのECPublicKeyおよびECPrivateKeyです。
PEM型に対応するクラスがない場合、decode(String)およびdecode(InputStream)はPEMRecordPREVIEWを返します。
decode(String、 Class)およびdecode(InputStream、 Class)メソッドは、返されるDEREncodableのタイプを決定するクラス・パラメータを取ります。 これらのメソッドは、戻りクラスを抽出または変更するときに役立ちます。 たとえば、PEMに公開キーと非公開キーの両方が含まれている場合、classパラメータで戻すものを指定できます。 秘密キーのみを返すには、PrivateKey.classを使用します。 クラス・パラメータがX509EncodedKeySpec.classに設定されている場合、公開キーはその形式で返されます。 PEMRecord.classを指定することで、任意のタイプのPEMデータをPEMRecordにデコードできます。 クラス・パラメータがPEMコンテンツと一致しない場合、ClassCastExceptionがスローされます。
withFactory(Provider)またはwithDecryption(char[])(あるいはその両方)で構成すると、新しいPEMDecoderインスタンスが作成されます。withFactory(Provider)は、指定されたProviderのKeyFactoryおよびCertificateFactoryインスタンスのみを使用するようにデコーダを構成します。withDecryption(char[])は、指定されたパスワードを使用して暗号化されたすべての秘密キーPEMデータを復号化するようにデコーダを構成します。 復号化用のインスタンスを構成しても、暗号化されていない PEMでのデコードが妨げられることはありません。 復号化に失敗した暗号化された PEMは、RuntimeExceptionをスローします。 暗号化された非公開鍵 PEMを復号化用に構成されていないデコーダとともに使用すると、EncryptedPrivateKeyInfoオブジェクトが返されます。
このクラスは不変でスレッドセーフです。
次に、PrivateKeyオブジェクトをデコードする例を示します。
PEMDecoder pd = PEMDecoder.of();
PrivateKey priKey = pd.decode(priKeyPEM, PrivateKey.class);
復号化およびファクトリ・プロバイダを使用して構成されたPEMDecoderの例を次に示します。
PEMDecoder pd = PEMDecoder.of().withDecryption(password).
withFactory(provider);
byte[] pemData = pd.decode(privKey);
- 実装上のノート:
- 実装では、他のPEM型および
DEREncodableオブジェクトをサポートできます。 この実装では、X509 CERTIFICATE、X.509 CERTIFICATE、CRLおよびRSA PRIVATE KEYのPEMタイプもサポートされます。 - 導入されたバージョン:
- 25
- 外部仕様
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明decode(InputStream is) 指定されたInputStreamからDEREncodablePREVIEWをデコードして返します。<S extends DEREncodablePREVIEW>
Sdecode(InputStream is, Class<S> tClass) 指定されたInputStreamの指定されたクラスをデコードして返します。指定されたStringからDEREncodablePREVIEWをデコードして返します。<S extends DEREncodablePREVIEW>
S指定されたPEM文字列から、指定されたクラスのDEREncodableをデコードして返します。static PEMDecoderPREVIEWof()PEMDecoderのインスタンスを返します。withDecryption(char[] password) 指定されたパスワードを使用して暗号化された秘密キーをデコードおよび復号化する、このPEMDecoderのコピーを返します。withFactory(Provider provider) 指定されたProviderからKeyFactoryおよびCertificateFactory実装を使用して暗号化オブジェクトを生成する、このPEMDecoderインスタンスのコピーを返します。
-
メソッドの詳細
-
of
-
decode
public DEREncodablePREVIEW decode(String str) 指定されたStringからDEREncodablePREVIEWをデコードして返します。このメソッドは、PEMデータが見つかるか、
Stringの終わりに達するまで、Stringを読み取ります。 PEMデータが見つからない場合は、IllegalArgumentExceptionがスローされます。このメソッドは、PEM型がサポートされている場合に、
PrivateKeyなどのJava API暗号化オブジェクトを返します。 PEMヘッダーの前の PEM以外のデータは、デコーダによって無視されます。 それ以外の場合は、型識別子とBase64エンコード・データを含むPEMRecordPREVIEWが返されます。 PEMヘッダーの前のPEM以外のデータは、leadingDataに格納されます。このメソッドによって消費される入力は、
UTF-8として読み取られます。- パラメータ:
str- PEMデータを含む文字列- 戻り値:
DEREncodable- スロー:
IllegalArgumentException- デコード中にエラーが発生したか、PEMデータが見つかりませんNullPointerException-strがnullの場合
-
decode
public DEREncodablePREVIEW decode(InputStream is)は IOExceptionをスローします。 指定されたInputStreamからDEREncodablePREVIEWをデコードして返します。このメソッドは、
InputStreamからPEMフッターの終わりまたはストリームの終わりまで読み取ります。 I/Oエラーが発生すると、ストリーム内の読取り位置が矛盾する可能性があります。InputStreamに対してこれ以上のデコード操作を実行しないことをお薦めします。このメソッドは、PEM型がサポートされている場合に、
PrivateKeyなどのJava API暗号化オブジェクトを返します。 PEMヘッダーの前の PEM以外のデータは、デコーダによって無視されます。 それ以外の場合は、型識別子とBase64エンコード・データを含むPEMRecordPREVIEWが返されます。 PEMヘッダーの前のPEM以外のデータは、leadingDataに格納されます。PEMデータが見つからない場合は、
IllegalArgumentExceptionがスローされます。- パラメータ:
is- PEMデータを含むInputStream- 戻り値:
DEREncodable- スロー:
IOException-InputStreamがデコードを完了しなかったIOまたはPEM構文エラー。EOFException-InputStreamの最後IllegalArgumentException- デコード中にエラーが発生しましたNullPointerException-isがnullの場合
-
decode
public <S extends DEREncodablePREVIEW> S decode(String str, Class<S> tClass) 指定されたPEM文字列から指定されたクラスのDEREncodableをデコードして返します。tClassは、DEREncodablePREVIEWを拡張し、PEM型に適したクラスである必要があります。このメソッドは、PEMデータが見つかるか、
Stringの終わりに達するまで、Stringを読み取ります。 PEMデータが見つからない場合は、IllegalArgumentExceptionがスローされます。クラス・パラメータが
PEMRecord.classの場合、型識別子とBase64エンコーディングを含むPEMRecordが返されます。 PEMヘッダーの前のPEM以外のデータは、leadingDataに格納されます。 その他のクラスパラメータでは、PEM以外のデータの前に戻りません。このメソッドによって消費される入力は、
UTF-8として読み取られます。- 型パラメータ:
S-DEREncodableを拡張するクラス型パラメータ- パラメータ:
str- PEMデータを含む文字列tClass-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の指定されたクラスをデコードして返します。 クラスは、DEREncodablePREVIEWを拡張し、PEM型に適したクラスである必要があります。このメソッドは、
InputStreamからPEMフッターの終わりまたはストリームの終わりまで読み取ります。 I/Oエラーが発生すると、ストリーム内の読取り位置が矛盾する可能性があります。InputStreamに対してこれ以上のデコード操作を実行しないことをお薦めします。クラス・パラメータが
PEMRecord.classの場合、型識別子とBase64エンコーディングを含むPEMRecordが返されます。 PEMヘッダーの前のPEM以外のデータは、leadingDataに格納されます。 その他のクラスパラメータでは、PEM以外のデータの前に戻りません。PEMデータが見つからない場合は、
IllegalArgumentExceptionがスローされます。- 型パラメータ:
S-DEREncodableを拡張するクラス型パラメータ。- パラメータ:
is- PEMデータを含むInputStreamtClass-DEREncodableを実装する戻されたオブジェクト・クラス。- 戻り値:
tClassへのDEREncodable型キャスト- スロー:
IOException-InputStreamがデコードを完了しなかったIOまたはPEM構文エラー。EOFException-InputStreamの最後IllegalArgumentException- デコード中にエラーが発生しましたClassCastException-tClassがPEMタイプに対して無効な場合NullPointerException- 入力値がNULLの場合- 関連項目:
-
withFactory
public PEMDecoderPREVIEW withFactory(Provider provider) 指定されたProviderからKeyFactoryおよびCertificateFactory実装を使用して暗号化オブジェクトを生成する、このPEMDecoderインスタンスのコピーを返します。Providerを使用したエラーは、デコード中に発生します。- パラメータ:
provider- ファクトリ・プロバイダ- 戻り値:
Providerに構成された新しいPEMEncoderインスタンス。- スロー:
NullPointerException-providerがnullの場合
-
withDecryption
public PEMDecoderPREVIEW withDecryption(char[] password) 指定されたパスワードを使用して暗号化された秘密キーをデコードおよび復号化する、このPEMDecoderのコピーを返します。 暗号化されていないPEMは、このインスタンスからデコードできます。- パラメータ:
password- 暗号化されたPEMデータを復号化するパスワード。 この配列はクローニングされ、新しいインスタンスに格納されます。- 戻り値:
- 復号化用に構成された新しいPEMEncoderインスタンス
- スロー:
NullPointerException-passwordがnullの場合
-
PEMDecoderを使用できます。