- java.lang.Object
-
- org.snmp4j.security.PrivacyGeneric
-
- org.snmp4j.security.Priv3DES
-
- All Implemented Interfaces:
java.io.Serializable
,PrivacyProtocol
,SecurityProtocol
public class Priv3DES extends PrivacyGeneric
Privacy protocol class for Triple DES (DESEDE). This class uses DES-EDE in CBC mode to encrypt the data. The protocol is defined by the Internet Draft 'Extension to the User-Based Security Model (USM) to Support Triple-DES EDE in "Outside" CBC Mode'.- Since:
- 1.9
- Version:
- 2.2.2
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private static int
DECRYPT_PARAMS_LENGTH
static OID
ID
Unique ID of this privacy protocol.private static int
INIT_VECTOR_LENGTH
private static int
INPUT_KEY_LENGTH
private static int
KEY_LENGTH
private static LogAdapter
logger
private static java.lang.String
PROTOCOL_CLASS
private static java.lang.String
PROTOCOL_ID
protected Salt
salt
private static long
serialVersionUID
-
Fields inherited from class org.snmp4j.security.PrivacyGeneric
cipherPool, initVectorLength, keyBytes, protocolClass, protocolId
-
-
Constructor Summary
Constructors Constructor Description Priv3DES()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description byte[]
decrypt(byte[] cryptedData, int offset, int length, byte[] decryptionKey, long engineBoots, long engineTime, DecryptParams decryptParams)
Decrypts a message using a given decryption key, engine boots count, and engine ID.byte[]
encrypt(byte[] unencryptedData, int offset, int length, byte[] encryptionKey, long engineBoots, long engineTime, DecryptParams decryptParams)
Encrypts a message using a given encryption key, engine boots count, and engine ID.byte[]
extendShortKey(byte[] shortKey, OctetString password, byte[] engineID, AuthenticationProtocol authProtocol)
Extend a localized key that is too short.int
getDecryptParamsLength()
Gets the length of the decryption parameters used by this security protocol.int
getEncryptedLength(int scopedPDULength)
Gets the length of a scoped PDU when encrypted with this security protocol.OID
getID()
Gets the OID uniquely identifying the privacy protocol.int
getMaxKeyLength()
Gets the maximum key size for this privacy protocol.int
getMinKeyLength()
Gets the minimum key size for this privacy protocol.-
Methods inherited from class org.snmp4j.security.PrivacyGeneric
doDecrypt, doFinal, doFinalWithPadding, doInit, isSupported
-
-
-
-
Field Detail
-
ID
public static final OID ID
Unique ID of this privacy protocol.
-
PROTOCOL_ID
private static final java.lang.String PROTOCOL_ID
- See Also:
- Constant Field Values
-
PROTOCOL_CLASS
private static final java.lang.String PROTOCOL_CLASS
- See Also:
- Constant Field Values
-
DECRYPT_PARAMS_LENGTH
private static final int DECRYPT_PARAMS_LENGTH
- See Also:
- Constant Field Values
-
INIT_VECTOR_LENGTH
private static final int INIT_VECTOR_LENGTH
- See Also:
- Constant Field Values
-
INPUT_KEY_LENGTH
private static final int INPUT_KEY_LENGTH
- See Also:
- Constant Field Values
-
KEY_LENGTH
private static final int KEY_LENGTH
- See Also:
- Constant Field Values
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
salt
protected Salt salt
-
logger
private static final LogAdapter logger
-
-
Method Detail
-
encrypt
public byte[] encrypt(byte[] unencryptedData, int offset, int length, byte[] encryptionKey, long engineBoots, long engineTime, DecryptParams decryptParams)
Description copied from interface:PrivacyProtocol
Encrypts a message using a given encryption key, engine boots count, and engine ID.- Parameters:
unencryptedData
- the unencrypted data. This byte array may contain leading and trailing bytes that will not be encrypted.offset
- the offset into theunencryptedData
where to start encryption.length
- the length of the substring starting atoffset
to encrypt.encryptionKey
- the key to be used for encryption.engineBoots
- the engine boots counter to use.engineTime
- the engine time to use.decryptParams
- returns the decryption parameters needed to decrypt the data that has been encrypted by this method.- Returns:
- the encrypted copy of
unencryptedData
.
-
decrypt
public byte[] decrypt(byte[] cryptedData, int offset, int length, byte[] decryptionKey, long engineBoots, long engineTime, DecryptParams decryptParams)
Description copied from interface:PrivacyProtocol
Decrypts a message using a given decryption key, engine boots count, and engine ID.- Parameters:
cryptedData
- the crypted data. This byte array may contain leading and trailing bytes that will not be decrypted.offset
- the offset into thecryptedData
where to start encryption.length
- the length of the substring starting atoffset
to decrypt.decryptionKey
- the key to be used for decryption.engineBoots
- the engine boots counter to use.engineTime
- the engine time to use.decryptParams
- contains the decryption parameters.- Returns:
- the decrypted data, or
null
if decryption failed.
-
getID
public OID getID()
Gets the OID uniquely identifying the privacy protocol.- Returns:
- an
OID
instance.
-
getEncryptedLength
public int getEncryptedLength(int scopedPDULength)
Description copied from interface:PrivacyProtocol
Gets the length of a scoped PDU when encrypted with this security protocol.- Parameters:
scopedPDULength
- the length of the (unencrypted) scoped PDU.- Returns:
- the length of the encrypted scoped PDU.
-
getMinKeyLength
public int getMinKeyLength()
Description copied from interface:PrivacyProtocol
Gets the minimum key size for this privacy protocol.- Returns:
- the minimum key size for this privacy protocol.
-
getDecryptParamsLength
public int getDecryptParamsLength()
Description copied from interface:PrivacyProtocol
Gets the length of the decryption parameters used by this security protocol.- Returns:
- a positive integer denoting the length of decryption parameters returned by this security protocol.
-
getMaxKeyLength
public int getMaxKeyLength()
Description copied from interface:PrivacyProtocol
Gets the maximum key size for this privacy protocol.- Returns:
- the minimum key size for this privacy protocol.
-
extendShortKey
public byte[] extendShortKey(byte[] shortKey, OctetString password, byte[] engineID, AuthenticationProtocol authProtocol)
Description copied from interface:PrivacyProtocol
Extend a localized key that is too short. Some privacy protocols require a key that is longer than the key generated by the password-to-key algorithm of the authentication protocol. This function extends a short key to the required length.- Parameters:
shortKey
- the short key that was generated usingAuthenticationProtocol.passwordToKey(org.snmp4j.smi.OctetString, byte[])
function.password
- the password to use for key extension.engineID
- the SNMP engine ID of the authoritative engine.authProtocol
- the authentication protocol that should be used.- Returns:
- the extended key or
shortKey
if no extension is needed.
-
-