module HexaPDF::Encryption::AES

Extended With

Common interface for AES algorithms

This module defines the common interface that is used by the security handlers to encrypt or decrypt data with AES. It has to be prepended by any AES algorithm class.

See the ClassMethods module for available class level methods of AES algorithms.

Implementing an AES Class

An AES class needs to define at least the following methods:

initialize(key, iv, mode)

Initializes the AES algorithm with the given key and initialization vector. The mode determines how the AES algorithm object works: If the mode is :encrypt, the object encrypts the data, if the mode is :decrypt, the object decrypts the data.

process(data)

Processes the data and returns the encrypted/decrypted data. The method can assume that the passed in data always has a length that is a multiple of BLOCK_SIZE.

Constants

BLOCK_SIZE

The AES block size

VALID_KEY_LENGTH

Valid AES key lengths

Public Class Methods

new(key, iv, mode)

Creates a new AES object using the given encryption key and initialization vector.

The mode must either be :encrypt or :decrypt.

Classes prepending this module have to have their own initialization method as this method just performs basic checks.

Calls superclass method