mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 12:32:40 +02:00
47 lines
1.5 KiB
C
47 lines
1.5 KiB
C
/**
|
|
* @file aes_ctr.h
|
|
* @brief Hardware accelerated AES-CTR implementation.
|
|
* @copyright libnx Authors
|
|
*/
|
|
#pragma once
|
|
#include "aes.h"
|
|
|
|
/// Context for AES-128 CTR.
|
|
typedef struct {
|
|
Aes128Context aes_ctx;
|
|
u8 ctr[AES_BLOCK_SIZE];
|
|
u8 enc_ctr_buffer[AES_BLOCK_SIZE];
|
|
size_t buffer_offset;
|
|
} Aes128CtrContext;
|
|
|
|
/// Context for AES-192 CTR.
|
|
typedef struct {
|
|
Aes192Context aes_ctx;
|
|
u8 ctr[AES_BLOCK_SIZE];
|
|
u8 enc_ctr_buffer[AES_BLOCK_SIZE];
|
|
size_t buffer_offset;
|
|
} Aes192CtrContext;
|
|
|
|
/// Context for AES-256 CTR.
|
|
typedef struct {
|
|
Aes256Context aes_ctx;
|
|
u8 ctr[AES_BLOCK_SIZE];
|
|
u8 enc_ctr_buffer[AES_BLOCK_SIZE];
|
|
size_t buffer_offset;
|
|
} Aes256CtrContext;
|
|
|
|
/// 128-bit CTR API.
|
|
void aes128CtrContextCreate(Aes128CtrContext *out, const void *key, const void *ctr);
|
|
void aes128CtrContextResetCtr(Aes128CtrContext *ctx, const void *ctr);
|
|
void aes128CtrCrypt(Aes128CtrContext *ctx, void *dst, const void *src, size_t size);
|
|
|
|
/// 192-bit CTR API.
|
|
void aes192CtrContextCreate(Aes192CtrContext *out, const void *key, const void *ctr);
|
|
void aes192CtrContextResetCtr(Aes192CtrContext *ctx, const void *ctr);
|
|
void aes192CtrCrypt(Aes192CtrContext *ctx, void *dst, const void *src, size_t size);
|
|
|
|
/// 256-bit CTR API.
|
|
void aes256CtrContextCreate(Aes256CtrContext *out, const void *key, const void *ctr);
|
|
void aes256CtrContextResetCtr(Aes256CtrContext *ctx, const void *ctr);
|
|
void aes256CtrCrypt(Aes256CtrContext *ctx, void *dst, const void *src, size_t size);
|