16#ifndef CRYPT_SM4_X86_64_H
17#define CRYPT_SM4_X86_64_H
19#include "hitls_build.h"
20#ifdef HITLS_CRYPTO_SM4
24void SM4_SetEncKey(
const uint8_t *key, uint32_t *rk);
26void SM4_SetDecKey(
const uint8_t *key, uint32_t *rk);
28void SM4_Encrypt(
const uint8_t *in, uint8_t *out,
const uint32_t *key);
30#define SM4_Decrypt SM4_Encrypt
33void SM4_XTS_Encrypt_Blocks(
const uint8_t *in, uint8_t *out, uint32_t len,
34 const uint32_t *key, uint8_t *t);
36void SM4_ECB_Encrypt(
const uint8_t *in, uint8_t *out, uint64_t len,
const uint32_t *key);
37void SM4_CBC_Encrypt(
const uint8_t *in, uint8_t *out, uint64_t len,
const uint32_t *key, uint8_t *iv,
const int enc);
38void SM4_OFB_Encrypt(
const uint8_t *in, uint8_t *out, uint64_t len,
const uint32_t *key, uint8_t *iv,
int *num);
39void SM4_CFB128_Encrypt(
const uint8_t *in, uint8_t *out, uint64_t len,
const uint32_t *key, uint8_t *iv,
int *num);
40void SM4_CFB128_Decrypt(
const uint8_t *in, uint8_t *out, uint64_t len,
const uint32_t *key, uint8_t *iv,
int *num);
41void SM4_CTR_EncryptBlocks(
const uint8_t *in, uint8_t *out, uint64_t blocks,
const uint32_t *key,
const uint8_t *iv);