Class PublicKeyKeyEncryptionMethodGenerator
java.lang.Object
org.bouncycastle.openpgp.operator.PublicKeyKeyEncryptionMethodGenerator
- All Implemented Interfaces:
PGPKeyEncryptionMethodGenerator
- Direct Known Subclasses:
BcPublicKeyKeyEncryptionMethodGenerator,JcePublicKeyKeyEncryptionMethodGenerator
public abstract class PublicKeyKeyEncryptionMethodGenerator
extends Object
implements PGPKeyEncryptionMethodGenerator
Abstract generator class for encryption methods that produce PKESK (public-key encrypted session key) packets.
PKESKs are used when encrypting a message for a recipients public key.
The purpose of this class is to allow subclasses to decide, which implementation to use.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringprotected booleanprotected booleanstatic final longDeprecated.use WILDCARD_KEYIDstatic final byte[]static final long -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected -
Method Summary
Modifier and TypeMethodDescriptionprotected byte[]createSessionInfo(byte algorithm, byte[] keyBytes) byte[][]encodeEncryptedSessionInfo(byte[] encryptedSessionInfo) protected abstract byte[]encryptSessionInfo(PGPPublicKey pubKey, byte[] sessionKey, byte symAlgId, boolean isV3) Encrypt a session key using the recipients public key.generate(PGPDataEncryptorBuilder dataEncryptorBuilder, byte[] sessionKey) Generate a Public-Key Encrypted Session-Key (PKESK) packet of version 3.protected static byte[]getSessionInfo(byte[] ephPubEncoding, byte optSymKeyAlgorithm, byte[] wrappedSessionKey) setSessionKeyObfuscation(boolean enabled) Controls whether to obfuscate the size of ECDH session keys using extra padding where necessary.setUseWildcardKeyID(boolean enabled) Deprecated.usesetUseWildcardRecipient(boolean)instead TODO: Remove in a future releasesetUseWildcardRecipient(boolean enabled) Controls whether the recipient key ID/fingerprint is hidden (replaced by a wildcard value).
-
Field Details
-
SESSION_KEY_OBFUSCATION_PROPERTY
- See Also:
-
WILDCARD_KEYID
public static final long WILDCARD_KEYID- See Also:
-
WILDCARD
public static final long WILDCARDDeprecated.use WILDCARD_KEYID- See Also:
-
WILDCARD_FINGERPRINT
public static final byte[] WILDCARD_FINGERPRINT -
sessionKeyObfuscation
protected boolean sessionKeyObfuscation -
useWildcardRecipient
protected boolean useWildcardRecipient
-
-
Constructor Details
-
PublicKeyKeyEncryptionMethodGenerator
-
-
Method Details
-
setSessionKeyObfuscation
Controls whether to obfuscate the size of ECDH session keys using extra padding where necessary.The default behaviour can be configured using the system property "org.bouncycastle.openpgp.session_key_obfuscation", or else it will default to enabled.
- Returns:
- the current generator.
-
setUseWildcardKeyID
Deprecated.usesetUseWildcardRecipient(boolean)instead TODO: Remove in a future releaseControls whether the recipient key ID/fingerprint is hidden (replaced by a wildcard value).- Parameters:
enabled- boolean- Returns:
- this
-
setUseWildcardRecipient
Controls whether the recipient key ID/fingerprint is hidden (replaced by a wildcard value).- Parameters:
enabled- boolean- Returns:
- this
-
encodeEncryptedSessionInfo
- Throws:
PGPException
-
generate
public ContainedPacket generate(PGPDataEncryptorBuilder dataEncryptorBuilder, byte[] sessionKey) throws PGPException Generate a Public-Key Encrypted Session-Key (PKESK) packet of version 3. PKESKv3 packets are used with Symmetrically-Encrypted-Integrity-Protected Data (SEIPD) packets of version 1 or with Symmetrically-Encrypted Data (SED) packets and MUST NOT be used with SEIPDv2 packets. PKESKv3 packets are used with keys that do not supportFeatures.FEATURE_SEIPD_V2or as a fallback. Generate a Public-Key Encrypted Session-Key (PKESK) packet of version 6. PKESKv6 packets are used with Symmetrically-Encrypted Integrity-Protected Data (SEIPD) packets of version 2 only. PKESKv6 packets are used with keys that supportFeatures.FEATURE_SEIPD_V2.- Specified by:
generatein interfacePGPKeyEncryptionMethodGenerator- Parameters:
sessionKey- session-key algorithm id + session-key + checksum- Returns:
- PKESKv6 or v3 packet
- Throws:
PGPException- if the PKESK packet cannot be generated- See Also:
-
createSessionInfo
protected byte[] createSessionInfo(byte algorithm, byte[] keyBytes) -
encryptSessionInfo
protected abstract byte[] encryptSessionInfo(PGPPublicKey pubKey, byte[] sessionKey, byte symAlgId, boolean isV3) throws PGPException Encrypt a session key using the recipients public key.- Parameters:
pubKey- recipients public keysessionKey- session-keysymAlgId- for v3: session key algorithm ID; for v6: 0- Returns:
- encrypted session info
- Throws:
PGPException
-
getSessionInfo
protected static byte[] getSessionInfo(byte[] ephPubEncoding, byte optSymKeyAlgorithm, byte[] wrappedSessionKey)
-