Package org.apache.catalina.tribes.group.interceptors

## Class EncryptInterceptor

- java.lang.Object
- - org.apache.catalina.tribes.group.ChannelInterceptorBase
  - - org.apache.catalina.tribes.group.interceptors.EncryptInterceptor

All Implemented Interfaces:
  `ChannelInterceptor`, `EncryptInterceptorMBean`, `Heartbeat`, `MembershipListener`

    public class EncryptInterceptor
    extends ChannelInterceptorBase
    implements EncryptInterceptorMBean

Adds encryption using a pre-shared key. The length of the key (in bytes) must be acceptable for the encryption algorithm being used. For example, for AES, you must use a key of either 16 bytes (128 bits, 24 bytes 192 bits), or 32 bytes (256 bits). You can supply the raw key bytes by calling `setEncryptionKey(byte[])` or the hex-encoded binary bytes by calling `setEncryptionKey(String)`.

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.apache.catalina.tribes.ChannelInterceptor

`ChannelInterceptor.InterceptorEvent`

### Field Summary

Fields
`protected static StringManager` `sm`

### Fields inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBase

`optionFlag`

### Constructor Summary

Constructors
`EncryptInterceptor()`

### Method Summary

All Methods Instance Methods Concrete Methods
`java.lang.String` `getEncryptionAlgorithm()` Gets the encryption algorithm being used to encrypt and decrypt channel messages.
`byte[]` `getEncryptionKey()` Gets the encryption key being used for encryption and decryption.
`java.lang.String` `getEncryptionKeyString()`
`java.lang.String` `getProviderName()` Gets the JCA provider name used for cryptographic activities.
`void` `messageReceived​(ChannelMessage msg)` the `messageReceived` is invoked when a message is received.
`void` `sendMessage​(Member[] destination, ChannelMessage msg, InterceptorPayload payload)` The `sendMessage` method is called when a message is being sent to one more destinations.
`void` `setEncryptionAlgorithm​(java.lang.String algorithm)` Sets the encryption algorithm to be used for encrypting and decrypting channel messages.
`void` `setEncryptionKey​(byte[] key)` Sets the encryption key for encryption and decryption.
`void` `setEncryptionKey​(java.lang.String keyBytes)` Gets the encryption key being used for encryption and decryption.
`void` `setEncryptionKeyString​(java.lang.String encryptionKeyString)`
`void` `setProviderName​(java.lang.String provider)` Sets the JCA provider name used for cryptographic activities.
`void` `start​(int svc)` Starts up the channel.
`void` `stop​(int svc)` Shuts down the channel.

### Methods inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBase

`fireInterceptorEvent, getChannel, getLocalMember, getMember, getMembers, getNext, getOptionFlag, getPrevious, hasMembers, heartbeat, memberAdded, memberDisappeared, okToProcess, setChannel, setNext, setOptionFlag, setPrevious`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.apache.catalina.tribes.group.interceptors.EncryptInterceptorMBean

`getOptionFlag, setOptionFlag`

### Field Detail

#### sm

    protected static final StringManager sm

### Constructor Detail

#### EncryptInterceptor

    public EncryptInterceptor()

### Method Detail

#### start

    public void start​(int svc)
               throws ChannelException

Description copied from class: `ChannelInterceptorBase`
Starts up the channel. This can be called multiple times for individual services to start The svc parameter can be the logical or value of any constants

Specified by:
  `start` in interface `ChannelInterceptor`
Overrides:
  `start` in class `ChannelInterceptorBase`
Parameters:
  `svc` - int value of
  DEFAULT - will start all services
  MBR_RX_SEQ - starts the membership receiver
  MBR_TX_SEQ - starts the membership broadcaster
  SND_TX_SEQ - starts the replication transmitter
  SND_RX_SEQ - starts the replication receiver
Throws:
  `ChannelException` - if a startup error occurs or the service is already started.
See Also:
  `Channel`

#### stop

    public void stop​(int svc)
              throws ChannelException

Description copied from class: `ChannelInterceptorBase`
Shuts down the channel. This can be called multiple times for individual services to shutdown The svc parameter can be the logical or value of any constants

Specified by:
  `stop` in interface `ChannelInterceptor`
Overrides:
  `stop` in class `ChannelInterceptorBase`
Parameters:
  `svc` - int value of
  DEFAULT - will shutdown all services
  MBR_RX_SEQ - stops the membership receiver
  MBR_TX_SEQ - stops the membership broadcaster
  SND_TX_SEQ - stops the replication transmitter
  SND_RX_SEQ - stops the replication receiver
Throws:
  `ChannelException` - if a startup error occurs or the service is already started.
See Also:
  `Channel`

#### sendMessage

    public void sendMessage​(Member[] destination,
                            ChannelMessage msg,
                            InterceptorPayload payload)
                     throws ChannelException

Description copied from interface: `ChannelInterceptor`
The `sendMessage` method is called when a message is being sent to one more destinations. The interceptor can modify any of the parameters and then pass on the message down the stack by invoking `getNext().sendMessage(destination,msg,payload)`
Alternatively the interceptor can stop the message from being sent by not invoking `getNext().sendMessage(destination,msg,payload)`
If the message is to be sent asynchronous the application can be notified of completion and errors by passing in an error handler attached to a payload object.
The ChannelMessage.getAddress contains Channel.getLocalMember, and can be overwritten to simulate a message sent from another node.

Specified by:
  `sendMessage` in interface `ChannelInterceptor`
Overrides:
  `sendMessage` in class `ChannelInterceptorBase`
Parameters:
  `destination` - Member[] - the destination for this message
  `msg` - ChannelMessage - the message to be sent
  `payload` - InterceptorPayload - the payload, carrying an error handler and future useful data, can be null
Throws:
  `ChannelException` - if a serialization error happens.
See Also:
  `ErrorHandler`, `InterceptorPayload`

#### messageReceived

    public void messageReceived​(ChannelMessage msg)

Description copied from interface: `ChannelInterceptor`
the `messageReceived` is invoked when a message is received. `ChannelMessage.getAddress()` is the sender, or the reply-to address if it has been overwritten.

Specified by:
  `messageReceived` in interface `ChannelInterceptor`
Overrides:
  `messageReceived` in class `ChannelInterceptorBase`
Parameters:
  `msg` - ChannelMessage

#### setEncryptionAlgorithm

    public void setEncryptionAlgorithm​(java.lang.String algorithm)

Sets the encryption algorithm to be used for encrypting and decrypting channel messages. You must specify the `algorithm/mode/padding`. Information on standard algorithm names may be found in the Java documentation. Default is `AES/CBC/PKCS5Padding`.

Specified by:
  `setEncryptionAlgorithm` in interface `EncryptInterceptorMBean`
Parameters:
  `algorithm` - The algorithm to use.

#### getEncryptionAlgorithm

    public java.lang.String getEncryptionAlgorithm()

Gets the encryption algorithm being used to encrypt and decrypt channel messages.

Specified by:
  `getEncryptionAlgorithm` in interface `EncryptInterceptorMBean`
Returns:
  The algorithm being used, including the algorithm mode and padding.

#### setEncryptionKey

    public void setEncryptionKey​(byte[] key)

Sets the encryption key for encryption and decryption. The length of the key must be appropriate for the algorithm being used.

Specified by:
  `setEncryptionKey` in interface `EncryptInterceptorMBean`
Parameters:
  `key` - The encryption key.

#### setEncryptionKey

    public void setEncryptionKey​(java.lang.String keyBytes)

Gets the encryption key being used for encryption and decryption. The key is encoded using hex-encoding where e.g. the byte `0xab` will be shown as "ab". The length of the string in characters will be twice the length of the key in bytes.

Parameters:
  `keyBytes` - The encryption key.

#### getEncryptionKey

    public byte[] getEncryptionKey()

Gets the encryption key being used for encryption and decryption.

Specified by:
  `getEncryptionKey` in interface `EncryptInterceptorMBean`
Returns:
  The encryption key.

#### getEncryptionKeyString

    public java.lang.String getEncryptionKeyString()

#### setEncryptionKeyString

    public void setEncryptionKeyString​(java.lang.String encryptionKeyString)

#### setProviderName

    public void setProviderName​(java.lang.String provider)

Sets the JCA provider name used for cryptographic activities. Default is the JVM platform default.

Specified by:
  `setProviderName` in interface `EncryptInterceptorMBean`
Parameters:
  `provider` - The name of the JCA provider.

#### getProviderName

    public java.lang.String getProviderName()

Gets the JCA provider name used for cryptographic activities. Default is the JVM platform default.

Specified by:
  `getProviderName` in interface `EncryptInterceptorMBean`
Returns:
  The name of the JCA provider.