Provides classes and interfaces for authentication and privacy of SNMP(v3) messages.

The `org.snmp4j.security` package contains three groups of classes and interfaces:

- The authentication protocols group contains interfaces and classes for authentication of SNMP(v3) messages.
- The privacy protocols group contains interfaces and classes for encryption and decryption of SNMP(v3) messages.
- The security model group combines authentication and privacy protocols to provide security services to message processing models.

Authentication as well as privacy protocols are security protocols and thus both are derived from the common interface `SecurityProtocol`. In order to be able to use a security protocol with SNMP4J, the protocol implementation class has to be registered with the `SecurityProtocols` singleton, which provides access to authentication and privacy protocols.

## Authentication Protocols

All SNMP4J authentication protocol implementations have to implement the `AuthenticationProtocol` interface. SNMP4J provides implementation for the following authentication protocols:

- MD5, which is implemented by `AuthMD5` and
- SHA, which is implemented by `AuthSHA`.

## Privacy Protocols

All SNMP4J privacy protocol implementations have to implement the `PrivacyProtocol` interface. SNMP4J provides implementation for the following privacy protocols:

- DES in CBC mode, which is implemented by `PrivDES` and
- AES with 128bit key, which is implemented by `PrivAES128`.
- AES with 192bit key, which is implemented by `PrivAES192`.
- AES with 256bit key, which is implemented by `PrivAES256`. In order to be able to use 256bit strong encryption, the strong encryption enhancement package has to be downloaded and installed.

## Security Models

All SNMP4J security models have to implement the `SecurityModel` interface. Before a security model can be used with SNMP4J, it has to be registered with the `SecurityModels` singleton which provides access to security models. SNMP4J implements a single security model, the User Based Security Model (USM).

The `USM` class uses a user name table (which contains user names) and a user table (which contains localized user information) to store user information. A time table is used to store time information about SNMP engines to protect SNMP communication against replay attacks if the corresponding security level has chosen.

The following UML class diagram shows the most important classes of the `org.snmp4j.security` package and their relationships (relationships to other packages are not shown):