- java.lang.Object
-
- org.snmp4j.security.SecurityProtocols
-
- All Implemented Interfaces:
java.io.Serializable
public class SecurityProtocols extends java.lang.Object implements java.io.SerializableTheSecurityProtocolsclass holds all authentication and privacy protocols for a SNMP entity.To register security protocols other than the default, set the system property
SECURITY_PROTOCOLS_PROPERTIESto a customized version of theSecurityProtocols.propertiesfile. The path has to be specified relatively to this class.- Version:
- 2.6.0
- Author:
- Frank Fock, Jochen Katz
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSecurityProtocols.SecurityProtocolType
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringSECURITY_PROTOCOLS_PROPERTIES
-
Constructor Summary
Constructors Modifier Constructor Description protectedSecurityProtocols()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddAuthenticationProtocol(AuthenticationProtocol auth)Add the givenAuthenticationProtocol.SecurityProtocolsaddDefaultProtocols()Add the default SecurityProtocols.voidaddPrivacyProtocol(PrivacyProtocol priv)Add the givenPrivacyProtocol.AuthenticationProtocolgetAuthenticationProtocol(OID id)Get theAuthenticationProtocolwith the given ID.static SecurityProtocolsgetInstance()Get an instance of class SecurityProtocols.intgetMaxAuthDigestLength()Gets the maximum authentication key length of the all known authentication protocols.intgetMaxPrivDecryptParamsLength()Gets the maximum privacy key length of the currently known privacy protocols.PrivacyProtocolgetPrivacyProtocol(OID id)Get the PrivacyProtocol with the given ID.SecurityProtocolgetSecurityProtocol(OID protocolID)Get the security protocol (AuthenticationProtocolorPrivacyProtocol) for the specified protocol OID.java.util.Collection<OID>getSecurityProtocolOIDs(SecurityProtocols.SecurityProtocolType securityProtocolType)Returns the object identifiers (OIDs) of theSecurityProtocols known to thisSecurityProtocolsinstance that have the specified type.byte[]passwordToKey(OID authProtocolID, OctetString passwordString, byte[] engineID)Generates the localized key for the given password and engine id for the authentication protocol specified by the supplied OID.byte[]passwordToKey(OID privProtocolID, OID authProtocolID, OctetString passwordString, byte[] engineID)Generates the localized key for the given password and engine id for the privacy protocol specified by the supplied OID.voidremoveAuthenticationProtocol(OID authOID)Remove the givenAuthenticationProtocol.voidremovePrivacyProtocol(OID privOID)Remove the givenPrivacyProtocol.static voidsetSecurityProtocols(SecurityProtocols securityProtocols)Set theSecurityProtocolsbyte[]truncateKey(byte[] key, int maxKeyLength)Limits the supplied key value to the specified maximum length
-
-
-
Field Detail
-
SECURITY_PROTOCOLS_PROPERTIES
public static final java.lang.String SECURITY_PROTOCOLS_PROPERTIES
- See Also:
- Constant Field Values
-
-
Method Detail
-
getInstance
public static SecurityProtocols getInstance()
Get an instance of class SecurityProtocols.- Returns:
- the globally used SecurityProtocols object.
-
setSecurityProtocols
public static void setSecurityProtocols(SecurityProtocols securityProtocols)
Set theSecurityProtocols- Parameters:
securityProtocols- SecurityProtocols
-
getSecurityProtocol
public SecurityProtocol getSecurityProtocol(OID protocolID)
Get the security protocol (AuthenticationProtocolorPrivacyProtocol) for the specified protocol OID.- Parameters:
protocolID- an object identifier of the security protocol to return.- Returns:
- the security protocol or
nullif a protocol with such an ID has not been added yet. - Since:
- 2.6.0
-
addDefaultProtocols
public SecurityProtocols addDefaultProtocols()
Add the default SecurityProtocols.The names of the SecurityProtocols to add are read from a properties file.
- Returns:
- this SecurityProtocols instance for chaining configuration.
- Throws:
java.lang.InternalError- ifSNMP4JSettings.isExtensibilityEnabled()istrueand corresponding properties file with the security protocols configuration cannot be opened/read.
-
addAuthenticationProtocol
public void addAuthenticationProtocol(AuthenticationProtocol auth)
Add the givenAuthenticationProtocol. If an authentication protocol with the supplied ID already exists, the supplied authentication protocol will not be added and the security protocols will not be unchang.- Parameters:
auth- the AuthenticationProtocol to add (an existing authentication protcol withauth's ID remains unchanged).
-
getAuthenticationProtocol
public AuthenticationProtocol getAuthenticationProtocol(OID id)
Get theAuthenticationProtocolwith the given ID.- Parameters:
id- The unique ID (specified asOID) of the AuthenticationProtocol.- Returns:
- the AuthenticationProtocol object if it was added before, or null if not.
-
removeAuthenticationProtocol
public void removeAuthenticationProtocol(OID authOID)
Remove the givenAuthenticationProtocol.- Parameters:
authOID- The object identifier of the protocol to remove
-
addPrivacyProtocol
public void addPrivacyProtocol(PrivacyProtocol priv)
Add the givenPrivacyProtocol. If a privacy protocol with the supplied ID already exists, the supplied privacy protocol will not be added and the security protocols will not be changed.- Parameters:
priv- the PrivacyProtocol to add (an existing privacy protocol withpriv's ID remains unchanged).
-
getPrivacyProtocol
public PrivacyProtocol getPrivacyProtocol(OID id)
Get the PrivacyProtocol with the given ID.- Parameters:
id- The unique ID (specified asOID) of the PrivacyProtocol.- Returns:
- the
PrivacyProtocolobject if it was added before, or null if not.
-
removePrivacyProtocol
public void removePrivacyProtocol(OID privOID)
Remove the givenPrivacyProtocol.- Parameters:
privOID- The object identifier of the protocol to remove
-
passwordToKey
public byte[] passwordToKey(OID authProtocolID, OctetString passwordString, byte[] engineID)
Generates the localized key for the given password and engine id for the authentication protocol specified by the supplied OID.- Parameters:
authProtocolID- anOIDidentifying the authentication protocol to use.passwordString- the authentication pass phrase.engineID- the engine ID of the authoritative engine.- Returns:
- the localized authentication key.
-
passwordToKey
public byte[] passwordToKey(OID privProtocolID, OID authProtocolID, OctetString passwordString, byte[] engineID)
Generates the localized key for the given password and engine id for the privacy protocol specified by the supplied OID.- Parameters:
privProtocolID- anOIDidentifying the privacy protocol the key should be created for.authProtocolID- anOIDidentifying the authentication protocol to use.passwordString- the authentication pass phrase.engineID- the engine ID of the authoritative engine.- Returns:
- the localized privacy key.
-
getMaxAuthDigestLength
public int getMaxAuthDigestLength()
Gets the maximum authentication key length of the all known authentication protocols.- Returns:
- the maximum authentication key length of all authentication protocols that have been added to this
SecurityProtocolsinstance.
-
getMaxPrivDecryptParamsLength
public int getMaxPrivDecryptParamsLength()
Gets the maximum privacy key length of the currently known privacy protocols.- Returns:
- the maximum privacy key length of all privacy protocols that have been added to this
SecurityProtocolsinstance.
-
truncateKey
public byte[] truncateKey(byte[] key, int maxKeyLength)Limits the supplied key value to the specified maximum length- Parameters:
key- the key to truncate.maxKeyLength- the maximum length of the returned key.- Returns:
- the truncated key with a length of
min(key.length, maxKeyLength). - Since:
- 1.9
-
getSecurityProtocolOIDs
public java.util.Collection<OID> getSecurityProtocolOIDs(SecurityProtocols.SecurityProtocolType securityProtocolType)
Returns the object identifiers (OIDs) of theSecurityProtocols known to thisSecurityProtocolsinstance that have the specified type.- Parameters:
securityProtocolType- the security protocol type (authentication or privacy).- Returns:
- a collection of security protocol identifiers of the specified type or
nullif the type is not supported by this instance. - Since:
- 3.3.4
-
-