クラス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)メソッドは、次のように、PEM型と一致し、DEREncodablePREVIEWを実装するクラスのインスタンスを返します。

復号化用に構成された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クラスをサポートします。

復号化用に構成された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
外部仕様
関連項目:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    指定されたInputStreamからDEREncodableをデコードして返します。
    <S extends DEREncodablePREVIEW>
    S
    decode(InputStream is, Class<S> tClass)
    指定されたInputStreamの指定されたクラスのDEREncodableをデコードして返します。
    指定されたStringからDEREncodableをデコードして返します。
    <S extends DEREncodablePREVIEW>
    S
    decode(String str, Class<S> tClass)
    指定されたPEM文字列から、指定されたクラスのDEREncodableをデコードして返します。
    of()
    PEMDecoderのインスタンスを返します。
    withDecryption(char[] password)
    指定されたパスワードを使用して暗号化された秘密キーをデコードおよび復号化する、このPEMDecoderのコピーを返します。
    指定されたProviderからKeyFactoryおよびCertificateFactory実装を使用して暗号化オブジェクトを生成する、このPEMDecoderインスタンスのコピーを返します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • メソッドの詳細

    • of

      public static PEMDecoderPREVIEW of()
      PEMDecoderのインスタンスを返します。
      戻り値:
      PEMDecoderインスタンス
    • 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 - strnullの場合
    • 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 - isnullの場合
    • 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データを含むString
      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の指定されたクラスのDEREncodableをデコードして返します。tClassは、PEM型に適したクラスである必要があります。

      このメソッドは、InputStreamからPEMフッターの終わりまたはストリームの終わりまで読み取ります。 I/Oエラーが発生すると、ストリーム内の読取り位置が矛盾する可能性があります。 InputStreamに対してこれ以上のデコード操作を実行しないことをお薦めします。

      クラス・パラメータがPEM.classの場合、型識別子、Base64でエンコードされたデータ、およびPEMヘッダーの前の先行データを含むPEMオブジェクトが戻されます。 PEM以外のDEREncodable型の場合、先行データは無視され、DEREncodableオブジェクトの一部として返されません。

      PEMデータが見つからない場合は、EOFExceptionがスローされます。

      型パラメータ:
      S - DEREncodableを拡張するクラス型パラメータ
      パラメータ:
      is - PEMデータを含むInputStream
      tClass - 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 - providernullの場合
    • withDecryption

      public PEMDecoderPREVIEW withDecryption(char[] password)
      指定されたパスワードを使用して暗号化された秘密キーをデコードおよび復号化する、このPEMDecoderのコピーを返します。 暗号化されていないPEMもこのインスタンスからデコードできます。
      パラメータ:
      password - 暗号化されたPEMデータを復号化するパスワード。 この配列はクローニングされ、新しいインスタンスに格納されます。
      戻り値:
      復号化用に構成された新しいPEMDecoderインスタンス
      スロー:
      NullPointerException - passwordnullの場合