packages feed

crypton-2.2.0: cbits/aes/ppc8.h

/*
 * AES and GHASH on PowerISA 2.07, as implemented by cbits/aes/ppc8.c over
 * the CRYPTOGAMS assembly.  crypton_aes.c installs these when
 * crypton_aes_ppc8_available says the processor has the instructions.
 */
#ifndef CRYPTON_AES_PPC8_H
#define CRYPTON_AES_PPC8_H

#include "crypton_aes.h"
#include "aes/gf.h"
#include "crypton_cpu.h"

int  crypton_aes_ppc8_available(void);

void crypton_aes_ppc8_init(aes_key *key, uint8_t *origkey, uint8_t size);
void crypton_aes_ppc8_encrypt_block(aes_block *output, aes_key *key, aes_block *input);
void crypton_aes_ppc8_decrypt_block(aes_block *output, aes_key *key, aes_block *input);
void crypton_aes_ppc8_encrypt_ecb(aes_block *output, aes_key *key, aes_block *input, uint32_t nb_blocks);
void crypton_aes_ppc8_decrypt_ecb(aes_block *output, aes_key *key, aes_block *input, uint32_t nb_blocks);
void crypton_aes_ppc8_encrypt_cbc(aes_block *output, aes_key *key, aes_block *iv, aes_block *input, uint32_t nb_blocks);
void crypton_aes_ppc8_decrypt_cbc(aes_block *output, aes_key *key, aes_block *iv, aes_block *input, uint32_t nb_blocks);
void crypton_aes_ppc8_encrypt_ctr(uint8_t *output, aes_key *key, aes_block *iv, uint8_t *input, uint32_t len);
void crypton_aes_ppc8_encrypt_xts(aes_block *output, aes_key *k1, aes_key *k2, aes_block *dataunit, uint32_t spoint, aes_block *input, uint32_t nb_blocks);
void crypton_aes_ppc8_decrypt_xts(aes_block *output, aes_key *k1, aes_key *k2, aes_block *dataunit, uint32_t spoint, aes_block *input, uint32_t nb_blocks);
void crypton_aes_ppc8_hinit(table_4bit htable, const block128 *h);
void crypton_aes_ppc8_gf_mul(block128 *a, const table_4bit htable);
void crypton_aes_ppc8_gf_mul4(block128 *a, const block128 *blocks, const table_4bit htable);

#endif