Skip to main content
Version: 0.2.25

ARIA (shared)

ARIA is a 128-bit block cipher with 128-, 192-, and 256-bit key sizes, standardized in South Korea. Use it in a mode of operation for multi-block data; key and IV rules match AES in the same mode.

Prefer AES unless ARIA is required by protocol or region. When using ARIA, apply the same mode and IV practices as for AES.

For mode-specific APIs and guidance, use the pages for each mode:

Streaming API

ARIA supports incremental processing with a context API:

  • noxtls_aria_init() — configure key, IV, mode, and direction
  • noxtls_aria_update() — process one or more chunks
  • noxtls_aria_final() — flush buffered state

Supported streaming modes: NOXTLS_ARIA_ECB, NOXTLS_ARIA_CBC, NOXTLS_ARIA_CTR, NOXTLS_ARIA_CFB, NOXTLS_ARIA_OFB.

Types

noxtls_aria_context_t

Opaque context for incremental ARIA encryption/decryption. Used by noxtls_aria_init, noxtls_aria_update, noxtls_aria_final. Allocate and pass to noxtls_aria_init; do not access fields directly.

noxtls_aria_type_t

ARIA key size: 128-, 192-, or 256-bit. Determines key length (16, 24, or 32 bytes).

noxtls_aria_mode_t

ARIA mode: NOXTLS_ARIA_ECB, NOXTLS_ARIA_CBC, NOXTLS_ARIA_CTR, NOXTLS_ARIA_CFB, or NOXTLS_ARIA_OFB.

noxtls_aria_operation_t

Direction: encrypt or decrypt.

API (generic and streaming)

noxtls_aria_encrypt_data

noxtls_return_t noxtls_aria_encrypt_data(const uint8_t* key, const uint8_t* data, uint32_t data_len, const uint8_t* iv, uint8_t* output, noxtls_aria_type_t type, noxtls_aria_mode_t mode);

One-shot encrypt; mode (noxtls_aria_mode_t) selects ECB, CBC, CTR, CFB, or OFB. See the mode pages for IV requirements. type is noxtls_aria_type_t.

Returns: noxtls_return_t: NOXTLS_RETURN_SUCCESS on success, NOXTLS_RETURN_INVALID_MODE for unsupported mode.

noxtls_aria_decrypt_data

noxtls_return_t noxtls_aria_decrypt_data(const uint8_t* key, const uint8_t* data, uint32_t data_len, const uint8_t* iv, uint8_t* output, noxtls_aria_type_t type, noxtls_aria_mode_t mode);

One-shot decrypt. Use the same IV that was used for encryption. type is noxtls_aria_type_t, mode is noxtls_aria_mode_t.

Returns: noxtls_return_t: NOXTLS_RETURN_SUCCESS on success.

noxtls_aria_self_test

noxtls_return_t noxtls_aria_self_test(void);

Built-in self-test.

Returns: noxtls_return_t: NOXTLS_RETURN_SUCCESS on success.

noxtls_aria_init

noxtls_return_t noxtls_aria_init(noxtls_aria_context_t *ctx, const uint8_t *key, const uint8_t *iv, noxtls_aria_type_t type, noxtls_aria_mode_t mode, noxtls_aria_operation_t op);

Initialize ARIA streaming context. ctx is an noxtls_aria_context_t; type is noxtls_aria_type_t; mode is noxtls_aria_mode_t; op is noxtls_aria_operation_t.

Returns: noxtls_return_t: NOXTLS_RETURN_SUCCESS on success; NOXTLS_RETURN_NULL, NOXTLS_RETURN_INVALID_KEY_SIZE, NOXTLS_RETURN_INVALID_PARAM, or NOXTLS_RETURN_INVALID_MODE on error.

noxtls_aria_update

noxtls_return_t noxtls_aria_update(noxtls_aria_context_t *ctx, const uint8_t *input, uint32_t input_len, uint8_t *output, uint32_t *output_len);

Process the next chunk. ctx is an noxtls_aria_context_t from noxtls_aria_init.

Returns: noxtls_return_t: NOXTLS_RETURN_SUCCESS on success.

noxtls_aria_final

noxtls_return_t noxtls_aria_final(noxtls_aria_context_t *ctx, uint8_t *output, uint32_t *output_len);

Finalize streaming operation and flush buffered data. ctx is an noxtls_aria_context_t from noxtls_aria_init.

Returns: noxtls_return_t: NOXTLS_RETURN_SUCCESS on success.