Module org.snmp4j

Class DHOperations


  • public class DHOperations
    extends java.lang.Object
    Implementation of Diffie Hellman operations for SNMP as defined by RFC 2786.
    Since:
    2.6.0
    Author:
    Frank Fock
    • Field Detail

      • DH_KICKSTART_SEC_NAME

        public static final java.lang.String DH_KICKSTART_SEC_NAME
        See Also:
        Constant Field Values
      • DH_KICKSTART_VIEW_NAME

        public static final java.lang.String DH_KICKSTART_VIEW_NAME
        See Also:
        Constant Field Values
      • oidUsmDHKickstartMyPublic

        public static final OID oidUsmDHKickstartMyPublic
      • oidUsmDHKickstartMgrPublic

        public static final OID oidUsmDHKickstartMgrPublic
      • oidUsmDHKickstartSecurityName

        public static final OID oidUsmDHKickstartSecurityName
      • DH_PRIVATE_KEY_PROPERTY

        public static final java.lang.String DH_PRIVATE_KEY_PROPERTY
        Property name for private keys of Diffie Hellman key exchange property files.
        See Also:
        Constant Field Values
      • DH_PUBLIC_KEY_PROPERTY

        public static final java.lang.String DH_PUBLIC_KEY_PROPERTY
        Property name for public keys of Diffie Hellman key exchange property files.
        See Also:
        Constant Field Values
      • DH_AUTH_PROTOCOL_PROPERTY

        public static final java.lang.String DH_AUTH_PROTOCOL_PROPERTY
        Property name for authentication protocol OID of the kickstart user entry.
        See Also:
        Constant Field Values
      • DH_PRIV_PROTOCOL_PROPERTY

        public static final java.lang.String DH_PRIV_PROTOCOL_PROPERTY
        Property name for privacy protocol OID of the kickstart user entry.
        See Also:
        Constant Field Values
      • DH_VACM_ROLE_PROPERTY

        public static final java.lang.String DH_VACM_ROLE_PROPERTY
        Property name for VACM role of the kickstart user entry.
        See Also:
        Constant Field Values
      • DH_RESET_PROPERTY

        public static final java.lang.String DH_RESET_PROPERTY
        Property name to reset an USM user with a kickstart user entry.
        See Also:
        Constant Field Values
    • Constructor Detail

      • DHOperations

        public DHOperations()
    • Method Detail

      • computeSharedKey

        public static byte[] computeSharedKey​(javax.crypto.KeyAgreement keyAgreement,
                                              byte[] publicKey,
                                              DHParameters dhParameters)
      • bytesToBigInteger

        public static java.math.BigInteger bytesToBigInteger​(byte[] bytes)
        Convert a byte array to a BigInteger. Adds a leading zero-byte to ensure a positive BigInteger.
        Parameters:
        bytes - The byte array to convert.
        Returns:
        the BigInteger containing the provided bytes as unsigned integer.
      • keyToBytes

        public static byte[] keyToBytes​(java.security.Key key)
        Convert a Key to a byte array. Uses X or Y values of a key depending on key type (private or public). Cut off a leading zero-byte if key length is not divisible by 8.
        Parameters:
        key - The Key to convert.
        Returns:
        the byte array representation of the key or null.
      • derivePublicKey

        public static OctetString derivePublicKey​(java.security.KeyPair keyPair)
      • derivePrivateKey

        public static OctetString derivePrivateKey​(java.security.KeyPair keyPair)
      • generatePublicKey

        public static java.security.KeyPair generatePublicKey​(DHParameters dhParameters)
                                                       throws java.security.NoSuchAlgorithmException,
                                                              java.security.InvalidAlgorithmParameterException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.InvalidAlgorithmParameterException
      • getInitializedKeyAgreement

        public static javax.crypto.KeyAgreement getInitializedKeyAgreement​(java.security.KeyPair keyPair)
      • deriveKey

        public static byte[] deriveKey​(byte[] sharedKey,
                                       int keyLength)
        Derive the USM key from the Diffie Hellman key exchange.
        Parameters:
        sharedKey - the shared key (z).
        keyLength - the key length of the resulting key in bytes.
        Returns:
        the USM key as byte array of length keyLength.
      • getDHKickstartPublicKeys

        public static java.util.Map<OctetString,OctetString[]> getDHKickstartPublicKeys​(Session session,
                                                                                        PDUFactory pduFactory,
                                                                                        Target<?> target,
                                                                                        java.util.Set<OctetString> managerPublic)
                                                                                 throws java.io.IOException
        Get the public keys of the agent's kickstart table that match the local public keys provided from a remote agent.
        Parameters:
        session - the SNMP Session to use.
        pduFactory - the PDUFactory to be used to create SNMP PDUs for requesting the data.
        target - the SNMP agent target.
        managerPublic - a set of public keys of this manager for which public keys of the agent should be retrieved.
        Returns:
        a map that maps the manager's public keys for which an agent public key has been found, to a two-element array with the first element being the agent public key and the second the associated user/security name.
        Throws:
        java.io.IOException - if the SNMP communication fails.