Module org.snmp4j

Class Priv3DES

All Implemented Interfaces:
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
Author:
Frank Fock, Jochen Katz
See Also:
  • Field Details

    • ID

      public static final OID ID
      Unique ID of this privacy protocol.
    • salt

      protected Salt salt
  • Constructor Details

    • Priv3DES

      public Priv3DES()
  • Method Details

    • 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 the unencryptedData where to start encryption.
      length - the length of the substring starting at offset 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 the cryptedData where to start encryption.
      length - the length of the substring starting at offset 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 using AuthenticationProtocol.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.