クラスPEMEncoder

java.lang.Object
java.security.PEMEncoder

public finalクラスPEMEncoderオブジェクトを拡張します。
PEMEncoderは、JavaプラットフォームのプレビューAPIです。
プレビュー機能が有効になっている場合のみ、プログラムでPEMEncoderを使用できます。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
PEMEncoderは、Privacy-Enhanced Mail (PEM)データのエンコーダを実装します。 PEMは、非対称キー、証明書、証明書失効リスト(CRL)などのセキュリティ・オブジェクトの格納および転送に使用されるテキスト・エンコーディングです。 これは、RFC 1421およびRFC 7468で定義されています。 PEMは、型識別ヘッダーおよびフッターで囲まれたBase64形式のバイナリ・エンコーディングで構成されます。

エンコーディングは、DEREncodablePREVIEWを実装するJava API暗号化オブジェクトに対して実行できます。 encode(DEREncodable)およびencodeToString(DEREncodable)メソッドは、DEREncodableをPEMにエンコードし、データをバイト配列または文字列で返します。

秘密キーは、withEncryption(char[])メソッドを使用してPEMEncoderを構成することで暗号化およびエンコードできます。このメソッドは、パスワードを取得し、そのパスワードを使用してキーを暗号化するように構成された新しいPEMEncoderインスタンスを返します。 または、EncryptedKeyInfoオブジェクトとして暗号化された秘密キーは、encodeまたはencodeToStringメソッドに渡すことでPEMに直接エンコードできます。

PKCS #8 2.0では、非公開キーと公開キーの両方を含むASN.1 OneAsymmetricKey構造が定義されています。 encodeまたはencodeToStringメソッドに渡されるKeyPairオブジェクトは、PRIVATE KEY型を使用してOneAsymmetricKey構造としてエンコードされます。

PEMRecordPREVIEWをエンコードする場合、APIはPEMRecord.content()PREVIEWPEMRecord.type()PREVIEWのPEMヘッダーおよびフッターで囲みます。 PEMRecord.leadingData()PREVIEWはエンコーディングに含まれません。 PEMRecordは、データの妥当性チェックを実行しません。

次に、サポートされているDEREncodableクラスと、それぞれがエンコードされるPEMタイプを示します。

  • X509Certificate: 証明書
  • X509CRL: X509 CRL
  • PublicKey: 公開キー
  • PrivateKey: 秘密キー
  • PrivateKey (暗号化が構成されている場合): 暗号化されたプライベート・キー
  • EncryptedPrivateKeyInfo: 暗号化された秘密キー
  • KeyPair: 秘密キー
  • X509EncodedKeySpec: 公開キー
  • PKCS8EncodedKeySpec: 秘密キー
  • PEMRecord : PEMRecord.type()

このクラスは不変でスレッドセーフです。

次に、PrivateKeyオブジェクトをエンコードする例を示します。

    PEMEncoder pe = PEMEncoder.of();
    byte[] pemData = pe.encode(privKey);

次に、指定したパスワードを使用して秘密キーを暗号化およびエンコードする例を示します:

    PEMEncoder pe = PEMEncoder.of().withEncryption(password);
    byte[] pemData = pe.encode(privKey);

実装上のノート:
実装では、他のPEM型およびDEREncodableオブジェクトをサポートできます。
導入されたバージョン:
25
外部仕様
関連項目:
  • メソッドの詳細

    • of

      public static PEMEncoderPREVIEW of()
      PEMEncoderのインスタンスを返します。
      戻り値:
      PEMEncoder
    • encodeToString

      public String encodeToString(DEREncodablePREVIEW de)
      指定されたDEREncodableをエンコードし、PEMでエンコードされた文字列を返します。
      パラメータ:
      de - エンコードされるDEREncodable
      戻り値:
      PEMでエンコードされたデータを含むString
      スロー:
      IllegalArgumentException - DEREncodableをエンコードできない場合
      NullPointerException - denullの場合
      関連項目:
    • encode

      public byte[] encode(DEREncodablePREVIEW de)
      指定されたDEREncodableをエンコードし、PEMエンコーディングをバイト配列で返します。
      パラメータ:
      de - エンコードされるDEREncodable
      戻り値:
      PEMでエンコードされたバイト配列
      スロー:
      IllegalArgumentException - DEREncodableをエンコードできない場合
      NullPointerException - denullの場合
      関連項目:
    • withEncryption

      public PEMEncoderPREVIEW withEncryption(char[] password)
      デフォルトのアルゴリズムおよび指定されたパスワードを使用して、暗号化用に構成された新しいPEMEncoderインスタンスを返します。

      この新しく構成されたインスタンスで暗号化できるのは、PrivateKeyオブジェクトのみです。 他のDEREncodablePREVIEWオブジェクトをエンコードすると、IllegalArgumentExceptionがスローされます。

      実装上のノート:
      デフォルトのパスワードベースの暗号化アルゴリズムは、jdk.epkcs8.defaultAlgorithmセキュリティ・プロパティによって定義され、選択されたプロバイダのデフォルト暗号化パラメータを使用します。 暗号化オプションおよびパラメータの柔軟性を高めるために、EncryptedPrivateKeyInfo.encryptKey(PrivateKey, Key, String, AlgorithmParameterSpec, Provider, SecureRandom)PREVIEWを使用し、encode(DEREncodable)で戻されたオブジェクトを使用します。
      パラメータ:
      password - 暗号化パスワード。 配列がクローニングされ、新しいインスタンスに格納されます。
      戻り値:
      暗号化用に構成された新しいPEMEncoderインスタンス
      スロー:
      NullPointerException - パスワードがnullの場合