クラスPEMEncoder
PEMEncoderは、JavaプラットフォームのプレビューAPIです。
PEMEncoderは、Privacy-Enhanced Mail (PEM)データのエンコーダを実装します。 PEMは、非対称キー、証明書、証明書失効リスト(CRL)などの暗号化オブジェクトを格納および転送するために使用されるテキスト・エンコーディングです。 これは、RFC 1421およびRFC 7468で定義されています。 PEMは、型識別ヘッダーおよびフッターで囲まれたBase64でエンコードされたバイナリ・エンコーディングで構成されます。
エンコーディングは、DEREncodablePREVIEWを実装する暗号化オブジェクトに対して実行できます。 encode(DEREncodable)およびencodeToString(DEREncodable)メソッドは、DEREncodableをPEMにエンコードし、データをバイト配列またはStringで返します。
秘密キーは、withEncryption(char[])メソッドを使用してPEMEncoderを構成することで暗号化およびエンコードできます。このメソッドは、パスワードを取得し、そのパスワードでキーを暗号化するように構成された新しいPEMEncoderインスタンスを返します。 または、EncryptedPrivateKeyInfoオブジェクトとして暗号化された秘密キーを、encodeまたはencodeToStringメソッドに渡すことによって、PEMに直接エンコードすることもできます。
PKCS #8 v2.0は、非公開鍵と公開鍵の両方を含むASN.1 OneAsymmetricKey構造体を定義します。 encodeまたはencodeToStringメソッドに渡されるKeyPairオブジェクトは、PRIVATE KEY型を使用してOneAsymmetricKey構造体としてエンコードされます。
PEMPREVIEWオブジェクトをエンコードする場合、APIはPEM.content()PREVIEWをPEM.type()PREVIEWに基づいてPEMヘッダーおよびフッターで囲みます。 PEM.leadingData()PREVIEWによって返される値は、出力に含まれません。
次に、サポートされているDEREncodableクラスと、それらがエンコードするPEMタイプを示します。
X509Certificate: 証明書X509CRL: X509 CRLPublicKey: 公開キーPrivateKey: 秘密キーEncryptedPrivateKeyInfo: 暗号化された秘密キーKeyPair: 秘密キーX509EncodedKeySpec: 公開キーPKCS8EncodedKeySpec: 秘密キーPEMプレビュー :PEM.type()
暗号化用に構成されたPEMEncoderインスタンスとともに使用する場合:
PrivateKey: 暗号化された秘密キーKeyPair: 暗号化された秘密キーPKCS8EncodedKeySpec: 暗号化された秘密キー
このクラスは不変でスレッドセーフです。
例: 秘密キーをエンコードします。
PEMEncoder pe = PEMEncoder.of();
byte[] pemData = pe.encode(privKey);
例: パスワードを使用して秘密キーを暗号化およびエンコードします:
PEMEncoder pe = PEMEncoder.of().withEncryption(password);
byte[] pemData = pe.encode(privKey);
- 実装上のノート:
- 実装では、追加のPEMタイプをサポートできます。
- 導入されたバージョン:
- 25
- 外部仕様
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明byte[]指定されたDEREncodableをエンコードし、PEMでエンコードされたバイト配列を返します。指定されたDEREncodableをエンコードし、PEMでエンコードされた文字列を返します。static PEMEncoderPREVIEWof()PEMEncoderのインスタンスを返します。withEncryption(char[] password) 指定されたパスワードおよびデフォルトの暗号化アルゴリズムを使用して暗号化およびエンコードする、このPEMEncoderのコピーを返します。クラスオブジェクトで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait修飾子と型メソッド説明protected Objectclone()このオブジェクトのコピーを作成して、返します。booleanこのオブジェクトと他のオブジェクトが等しいかどうかを示します。protected voidfinalize()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は非推奨であり、将来のリリースで削除される可能性があります。final Class<?> getClass()このObjectの実行時クラスを返します。inthashCode()このオブジェクトに対するハッシュ・コード値を返します。final voidnotify()このオブジェクトのモニターで待機中のスレッドを1つ再開します。final voidこのオブジェクトのモニターで待機中のすべてのスレッドを再開します。toString()オブジェクトの文字列表現を返します。final voidwait()現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。final voidwait(long timeoutMillis) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。final voidwait(long timeoutMillis, int nanos) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
-
メソッドの詳細
-
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、KeyPairおよびPKCS8EncodedKeySpecオブジェクトのみです。 他のDEREncodableオブジェクトをエンコードすると、IllegalArgumentExceptionがスローされます。- 実装上のノート:
jdk.epkcs8.defaultAlgorithmセキュリティ・プロパティは、デフォルトの暗号化アルゴリズムを定義します。AlgorithmParameterSpecのデフォルトはプロバイダによって決まります。 デフォルト以外の暗号化パラメータを使用するか、別の暗号化プロバイダで暗号化するには、EncryptedPrivateKeyInfo.encrypt(DEREncodable, Key, String, AlgorithmParameterSpec, Provider, SecureRandom)PREVIEWを使用し、返されたオブジェクトをencode(DEREncodable)とともに使用します。- パラメータ:
password- 暗号化パスワード。 配列がクローニングされ、新しいインスタンスに格納されます。- 戻り値:
- 暗号化用に構成された新しい
PEMEncoderインスタンス - スロー:
NullPointerException- パスワードがnullの場合IllegalArgumentException- 暗号化キーの生成に失敗した場合
-
PEMEncoderを使用できます。