クラスPEMDecoder

java.lang.Object
java.security.PEMDecoder

public finalクラスPEMDecoderオブジェクトを拡張します。
PEMDecoderは、JavaプラットフォームのプレビューAPIです。
プレビュー機能が有効になっている場合のみ、プログラムでPEMDecoderを使用できます。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
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)は、指定されたProviderKeyFactoryおよび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 CERTIFICATEX.509 CERTIFICATECRLおよびRSA PRIVATE KEYのPEMタイプもサポートされます。
導入されたバージョン:
25
外部仕様
関連項目:
  • メソッドの詳細

    • of

      public static PEMDecoderPREVIEW of()
      PEMDecoderのインスタンスを返します。
      戻り値:
      PEMDecoderインスタンス
    • 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データを含むInputStream
      tClass - 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の場合