クラスPEMEncoder
PEMEncoderは、JavaプラットフォームのプレビューAPIです。
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()PREVIEWをPEMRecord.type()PREVIEWのPEMヘッダーおよびフッターで囲みます。 PEMRecord.leadingData()PREVIEWはエンコーディングに含まれません。 PEMRecordは、データの妥当性チェックを実行しません。
次に、サポートされているDEREncodableクラスと、それぞれがエンコードされるPEMタイプを示します。
X509Certificate: 証明書X509CRL: X509 CRLPublicKey: 公開キー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
- 外部仕様
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明byte[]指定されたDEREncodableをエンコードし、PEMエンコーディングをバイト配列で返します。指定されたDEREncodableをエンコードし、PEMでエンコードされた文字列を返します。static PEMEncoderPREVIEWof()PEMEncoderのインスタンスを返します。withEncryption(char[] password) デフォルトのアルゴリズムおよび指定されたパスワードを使用して、暗号化用に構成された新しいPEMEncoderインスタンスを返します。
-
メソッドの詳細
-
of
-
encodeToString
public String encodeToString(DEREncodablePREVIEW de) 指定されたDEREncodableをエンコードし、PEMでエンコードされた文字列を返します。- パラメータ:
de- エンコードされるDEREncodable- 戻り値:
- PEMでエンコードされたデータを含む
String - スロー:
IllegalArgumentException-DEREncodableをエンコードできない場合NullPointerException-deがnullの場合- 関連項目:
-
encode
public byte[] encode(DEREncodablePREVIEW de) 指定されたDEREncodableをエンコードし、PEMエンコーディングをバイト配列で返します。- パラメータ:
de- エンコードされるDEREncodable- 戻り値:
- PEMでエンコードされたバイト配列
- スロー:
IllegalArgumentException-DEREncodableをエンコードできない場合NullPointerException-deがnullの場合- 関連項目:
-
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の場合
-
PEMEncoderを使用できます。