Package org.bouncycastle.crypto.hpke
Class HPKE
- java.lang.Object
-
- org.bouncycastle.crypto.hpke.HPKE
-
public class HPKE extends java.lang.ObjectHybrid Public Key Encryption (HPKE) per RFC 9180.Top-level facade. A single instance pins a (mode, KEM, KDF, AEAD) suite via the constructor and exposes:
setupBaseS/setupBaseR/SetupPSKS/setupPSKR/setupAuthS/setupAuthR/setupAuthPSKS/setupAuthPSKR— return a statefulHPKEContext(recipient) orHPKEContextWithEncapsulation(sender, also carries theencoctet string).seal(pkR, info, aad, pt)/open(enc, skR, info, aad, ct)— single-message conveniences that do setup + seal/open in one call.sendExport/receiveExport— export-only operation (no AEAD seal); pair with theaead_EXPORT_ONLYsentinel suite when seal/open aren't needed.serializePublicKey(org.bouncycastle.crypto.params.AsymmetricKeyParameter)/deserializePublicKey(byte[])/serializePrivateKey(org.bouncycastle.crypto.params.AsymmetricKeyParameter)— KEM-aware key encoding helpers.
-
-
Field Summary
Fields Modifier and Type Field Description static shortaead_AES_GCM128static shortaead_AES_GCM256static shortaead_CHACHA20_POLY1305static shortaead_EXPORT_ONLYstatic shortkdf_HKDF_SHA256static shortkdf_HKDF_SHA384static shortkdf_HKDF_SHA512static shortkem_P256_SHA256static shortkem_P384_SHA348Deprecated.use kem_P384_SHA384static shortkem_P384_SHA384static shortkem_P521_SHA512static shortkem_X25519_SHA256static shortkem_X448_SHA512static bytemode_authstatic bytemode_auth_pskstatic bytemode_basestatic bytemode_psk
-
Method Summary
-
-
-
Field Detail
-
mode_base
public static final byte mode_base
- See Also:
- Constant Field Values
-
mode_psk
public static final byte mode_psk
- See Also:
- Constant Field Values
-
mode_auth
public static final byte mode_auth
- See Also:
- Constant Field Values
-
mode_auth_psk
public static final byte mode_auth_psk
- See Also:
- Constant Field Values
-
kem_P256_SHA256
public static final short kem_P256_SHA256
- See Also:
- Constant Field Values
-
kem_P384_SHA348
public static final short kem_P384_SHA348
Deprecated.use kem_P384_SHA384- See Also:
- Constant Field Values
-
kem_P384_SHA384
public static final short kem_P384_SHA384
- See Also:
- Constant Field Values
-
kem_P521_SHA512
public static final short kem_P521_SHA512
- See Also:
- Constant Field Values
-
kem_X25519_SHA256
public static final short kem_X25519_SHA256
- See Also:
- Constant Field Values
-
kem_X448_SHA512
public static final short kem_X448_SHA512
- See Also:
- Constant Field Values
-
kdf_HKDF_SHA256
public static final short kdf_HKDF_SHA256
- See Also:
- Constant Field Values
-
kdf_HKDF_SHA384
public static final short kdf_HKDF_SHA384
- See Also:
- Constant Field Values
-
kdf_HKDF_SHA512
public static final short kdf_HKDF_SHA512
- See Also:
- Constant Field Values
-
aead_AES_GCM128
public static final short aead_AES_GCM128
- See Also:
- Constant Field Values
-
aead_AES_GCM256
public static final short aead_AES_GCM256
- See Also:
- Constant Field Values
-
aead_CHACHA20_POLY1305
public static final short aead_CHACHA20_POLY1305
- See Also:
- Constant Field Values
-
aead_EXPORT_ONLY
public static final short aead_EXPORT_ONLY
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
HPKE
public HPKE(byte mode, short kemId, short kdfId, short aeadId)Hybrid Public Key Encryption as described in RFC9180.
-
HPKE
public HPKE(byte mode, short kemId, short kdfId, short aeadId, KEM kem, int encSize)
-
-
Method Detail
-
getEncSize
public int getEncSize()
-
getAeadId
public short getAeadId()
-
generatePrivateKey
public AsymmetricCipherKeyPair generatePrivateKey()
-
serializePublicKey
public byte[] serializePublicKey(AsymmetricKeyParameter pk)
-
serializePrivateKey
public byte[] serializePrivateKey(AsymmetricKeyParameter sk)
-
deserializePublicKey
public AsymmetricKeyParameter deserializePublicKey(byte[] pkEncoded)
-
deserializePrivateKey
public AsymmetricCipherKeyPair deserializePrivateKey(byte[] skEncoded, byte[] pkEncoded)
-
deriveKeyPair
public AsymmetricCipherKeyPair deriveKeyPair(byte[] ikm)
-
sendExport
public byte[][] sendExport(AsymmetricKeyParameter pkR, byte[] info, byte[] exporterContext, int L, byte[] psk, byte[] pskId, AsymmetricCipherKeyPair skS)
-
receiveExport
public byte[] receiveExport(byte[] enc, AsymmetricCipherKeyPair skR, byte[] info, byte[] exporterContext, int L, byte[] psk, byte[] pskId, AsymmetricKeyParameter pkS)
-
seal
public byte[][] seal(AsymmetricKeyParameter pkR, byte[] info, byte[] aad, byte[] pt, byte[] psk, byte[] pskId, AsymmetricCipherKeyPair skS) throws InvalidCipherTextException
- Throws:
InvalidCipherTextException
-
open
public byte[] open(byte[] enc, AsymmetricCipherKeyPair skR, byte[] info, byte[] aad, byte[] ct, byte[] psk, byte[] pskId, AsymmetricKeyParameter pkS) throws InvalidCipherTextException- Throws:
InvalidCipherTextException
-
setupBaseS
public HPKEContextWithEncapsulation setupBaseS(AsymmetricKeyParameter pkR, byte[] info)
-
setupBaseS
public HPKEContextWithEncapsulation setupBaseS(AsymmetricKeyParameter pkR, byte[] info, AsymmetricCipherKeyPair kpE)
-
setupBaseR
public HPKEContext setupBaseR(byte[] enc, AsymmetricCipherKeyPair skR, byte[] info)
-
SetupPSKS
public HPKEContextWithEncapsulation SetupPSKS(AsymmetricKeyParameter pkR, byte[] info, byte[] psk, byte[] psk_id)
-
setupPSKR
public HPKEContext setupPSKR(byte[] enc, AsymmetricCipherKeyPair skR, byte[] info, byte[] psk, byte[] psk_id)
-
setupAuthS
public HPKEContextWithEncapsulation setupAuthS(AsymmetricKeyParameter pkR, byte[] info, AsymmetricCipherKeyPair skS)
-
setupAuthR
public HPKEContext setupAuthR(byte[] enc, AsymmetricCipherKeyPair skR, byte[] info, AsymmetricKeyParameter pkS)
-
setupAuthPSKS
public HPKEContextWithEncapsulation setupAuthPSKS(AsymmetricKeyParameter pkR, byte[] info, byte[] psk, byte[] psk_id, AsymmetricCipherKeyPair skS)
-
setupAuthPSKR
public HPKEContext setupAuthPSKR(byte[] enc, AsymmetricCipherKeyPair skR, byte[] info, byte[] psk, byte[] psk_id, AsymmetricKeyParameter pkS)
-
-