version 2.5.3

new sms4 api, go api and ciphersuites
This commit is contained in:
Zhi Guan
2019-08-13 15:07:53 +08:00
parent 94f91c0f8a
commit b42251945e
39 changed files with 23201 additions and 5685 deletions

View File

@@ -73,11 +73,11 @@ extern "C" {
# define GMTLS_CK_RSA_WITH_SM1_SM3 0x0300E009 /* reserved */
# define GMTLS_CK_RSA_WITH_SM1_SHA1 0x0300E00A /* reserved */
# define GMTLS_CK_SM2DHE_WITH_SMS4_SM3 0x0300E011
# define GMTLS_CK_SM2_WITH_SMS4_SM3 0x0300E013 /* reserved */
# define GMTLS_CK_SM9DHE_WITH_SMS4_SM3 0x0300E015 /* reserved */
# define GMTLS_CK_SM9_WITH_SMS4_SM3 0x0300E017 /* reserved */
# define GMTLS_CK_SM2_WITH_SMS4_SM3 0x0300E013
# define GMTLS_CK_SM9DHE_WITH_SMS4_SM3 0x0300E015
# define GMTLS_CK_SM9_WITH_SMS4_SM3 0x0300E017
# define GMTLS_CK_RSA_WITH_SMS4_SM3 0x0300E019 /* reserved */
# define GMTLS_CK_RSA_WITH_SMS4_SHA1 0x0300E01A
# define GMTLS_CK_RSA_WITH_SMS4_SHA1 0x0300E01A /* reserved */
/* ECDHE-SM2-WITH-[SM1|SMS4|SSF33]-[SM3|SHA256] */
# define GMTLS_CK_ECDHE_SM2_WITH_SM1_SM3 0x0300E101
@@ -90,10 +90,12 @@ extern "C" {
/* ECDHE-SM2-WITH-SMS4-[GCM|CCM|CCM-8]-[SM3|SHA256] */
# define GMTLS_CK_ECDHE_SM2_WITH_SMS4_GCM_SM3 0x0300E107
# define GMTLS_CK_ECDHE_SM2_WITH_SMS4_CCM_SM3 0x0300E108
# define GMTLS_CK_ECDHE_SM2_WITH_SMS4_CCM_8_SM3 0x0300E109
# define GMTLS_CK_ECDHE_SM2_WITH_SMS4_CCM_8_SM3 0x0300E109 /* reserved */
# define GMTLS_CK_ECDHE_SM2_WITH_SMS4_GCM_SHA256 0x0300E10A /* reserved */
# define GMTLS_CK_ECDHE_SM2_WITH_SMS4_CCM_SHA256 0x0300E10B /* reserved */
# define GMTLS_CK_ECDHE_SM2_WITH_SMS4_CCM_8_SHA256 0x0300E10C /* reserved */
# define GMTLS_CK_ECDHE_SM2_WITH_ZUC_SM3 0x0300E10D
# define GMTLS_CK_ECDHE_SM2_WITH_ZUC256_SM3 0x0300E10E
/* SM2DHE-SM2-WITH-[SM1|SMS4|SSF33|ZUC]-[GCM|CCM|CCM-8|EIA]-SM3 */
# define GMTLS_CK_SM2DHE_SM2_WITH_SM1_SM3 0x0300E201
@@ -102,8 +104,9 @@ extern "C" {
# define GMTLS_CK_SM2DHE_SM2_WITH_ZUC_SM3 0X0300E204
# define GMTLS_CK_SM2DHE_SM2_WITH_SMS4_GCM_SM3 0x0300E205
# define GMTLS_CK_SM2DHE_SM2_WITH_SMS4_CCM_SM3 0x0300E206
# define GMTLS_CK_SM2DHE_SM2_WITH_SMS4_CCM_8_SM3 0x0300E207
# define GMTLS_CK_SM2DHE_SM2_WITH_ZUC_EIA_SM3 0X0300E208
# define GMTLS_CK_SM2DHE_SM2_WITH_SMS4_CCM_8_SM3 0x0300E207 /* reserved */
# define GMTLS_CK_SM2DHE_SM2_WITH_ZUC_EIA_SM3 0x0300E208 /* obsoleted */
# define GMTLS_CK_SM2DHE_SM2_WITH_ZUC256_SM3 0x0300E209
/* PSK ciphersuites with NULL cipher */
# define GMTLS_CK_PSK_WITH_NULL_SM3 0x0300F001 /* reserved */
@@ -116,11 +119,9 @@ extern "C" {
# define GMTLS_CK_PSK_WITH_SMS4_CBC_SM3 0x0300F101
# define GMTLS_CK_PSK_WITH_SMS4_GCM_SM3 0x0300F102
# define GMTLS_CK_PSK_WITH_SMS4_CCM_SM3 0x0300F103
# define GMTLS_CK_SM2_PSK_WITH_SMS4_CBC_SM3 0x0300F10B
# define GMTLS_CK_SM2_PSK_WITH_SMS4_GCM_SM3 0x0300F10C
# define GMTLS_CK_SM2_PSK_WITH_SMS4_CCM_SM3 0x0300F10D
# define GMTLS_CK_ECDHE_PSK_WITH_SMS4_CBC_SM3 0x0300F10E
# define GMTLS_CK_SM2DHE_PSK_WITH_SMS4_CBC_SM3 0x0300F10B
# define GMTLS_CK_SM2DHE_PSK_WITH_SMS4_GCM_SM3 0x0300F10C
# define GMTLS_CK_SM2DHE_PSK_WITH_SMS4_CCM_SM3 0x0300F10D
# define GMTLS_CK_PSK_WITH_SM1_CBC_SM3 0x0300F10E
# define GMTLS_CK_PSK_WITH_SM1_GCM_SM3 0x0300F10F /* reserved */
@@ -136,6 +137,18 @@ extern "C" {
# define GMTLS_CK_RSA_PSK_WITH_SSF33_GCM_SM3 0x0300F11E /* reserved */
# define GMTLS_CK_RSA_PSK_WITH_SSF33_CCM_SM3 0x0300F11F /* reserved */
# define GMTLS_CK_ECDHE_PSK_WITH_SMS4_CBC_SM3 0x0300F120
# define GMTLS_CK_ECDHE_PSK_WITH_SMS4_GCM_SM3 0x0300F121
# define GMTLS_CK_ECDHE_PSK_WITH_SMS4_CCM_SM3 0x0300F122
# define GMTLS_CK_PSK_WITH_ZUC_SM3 0x0300F123
# define GMTLS_CK_PSK_WITH_ZUC256_SM3 0x0300F124
# define GMTLS_CK_ECDHE_PSK_WITH_ZUC_SM3 0x0300F125
# define GMTLS_CK_ECDHE_PSK_WITH_ZUC256_SM3 0x0300F126
# define GMTLS_CK_SM2DHE_PSK_WITH_ZUC_SM3 0x0300F127
# define GMTLS_CK_SM2DHE_PSK_WITH_ZUC256_SM3 0x0300F128
/* SRP ciphersuites */
# define GMTLS_CK_SRP_SM3_WITH_SMS4_CBC_SM3 0x0300F201
# define GMTLS_CK_SRP_SM3_WITH_SMS4_GCM_SM3 0x0300F202
@@ -172,6 +185,8 @@ extern "C" {
# define GMTLS_TXT_ECDHE_SM2_WITH_SMS4_GCM_SHA256 "ECDHE-SM2-WITH-SMS4-GCM-SHA256"
# define GMTLS_TXT_ECDHE_SM2_WITH_SMS4_CCM_SHA256 "ECDHE-SM2-WITH-SMS4-CCM-SHA256"
# define GMTLS_TXT_ECDHE_SM2_WITH_SMS4_CCM_8_SHA256 "ECDHE-SM2-WITH-SMS4-CCM-8-SHA256"
# define GMTLS_TXT_ECDHE_SM2_WITH_ZUC_SM3 "ECDHE-SM2-WITH-ZUC-SM3"
# define GMTLS_TXT_ECDHE_SM2_WITH_ZUC256_SM3 "ECDHE-SM2-WITH-ZUC256-SM3"
/* SM2DHE-SM2-WITH-[SM1|SMS4|SSF33|ZUC]-[GCM|CCM|CCM-8|EIA]-SM3 */
# define GMTLS_TXT_SM2DHE_SM2_WITH_SM1_SM3 "SM2DHE-SM2-WITH-SM1-SM3"
@@ -182,50 +197,26 @@ extern "C" {
# define GMTLS_TXT_SM2DHE_SM2_WITH_SMS4_CCM_SM3 "SM2DHE-SM2-WITH-SMS4-CCM-SM3"
# define GMTLS_TXT_SM2DHE_SM2_WITH_SMS4_CCM_8_SM3 "SM2DHE-SM2-WITH-SMS4-CCM-8-SM3"
# define GMTLS_TXT_SM2DHE_SM2_WITH_ZUC_EIA_SM3 "SM2DHE-SM2-WITH-ZUC-EIA-SM3"
/* PSK ciphersuites with NULL cipher */
# define GMTLS_TXT_PSK_WITH_NULL_SM3 "PSK-WITH-NULL-SM3"
# define GMTLS_TXT_DHE_PSK_WITH_NULL_SM3 "DHE-PSK-WITH-NULL-SM3"
# define GMTLS_TXT_RSA_PSK_WITH_NULL_SM3 "RSA-PSK-WITH-NULL-SM3"
# define GMTLS_TXT_SM2_PSK_WITH_NULL_SM3 "SM2-PSK_WITH-NULL-SM3"
# define GMTLS_TXT_ECDHE_PSK_WITH_NULL_SM3 "ECDHE-PSK-WITH-NULL-SM3"
# define GMTLS_TXT_ECDHE_PSK_WITH_SMS4_CBC_SM3 "ECDHE-PSK-WITH-SMS4-CBC-SM3"
# define GMTLS_TXT_SM2DHE_SM2_WITH_ZUC256_SM3 "SM2DHE-SM2-WITH-ZUC256-SM3"
/* PSK ciphersuits with SMS4 */
# define GMTLS_TXT_PSK_WITH_SMS4_CBC_SM3 "PSK-WITH-SMS4-CBC-SM3"
# define GMTLS_TXT_PSK_WITH_SMS4_GCM_SM3 "PSK-WITH-SMS4-GCM-SM3"
# define GMTLS_TXT_PSK_WITH_SMS4_CCM_SM3 "PSK-WITH-SMS4-CCM-SM3"
# define GMTLS_TXT_DHE_PSK_WITH_SMS4_CBC_SM3 "DHE-PSK-WITH-SMS4-CBC-SM3"
# define GMTLS_TXT_DHE_PSK_WITH_SMS4_GCM_SM3 "DHE-PSK-WITH-SMS4-GCM-SM3"
# define GMTLS_TXT_DHE_PSK_WITH_SMS4_CCM_SM3 "DHE-PSK-WITH-SMS4-CCM-SM3"
# define GMTLS_TXT_RSA_PSK_WITH_SMS4_CBC_SM3 "RSA-PSK-WITH-SMS4-CBC-SM3"
# define GMTLS_TXT_RSA_PSK_WITH_SMS4_GCM_SM3 "RSA-PSK-WITH-SMS4-GCM-SM3"
# define GMTLS_TXT_RSA_PSK_WITH_SMS4_CCM_SM3 "RSA-PSK-WITH-SMS4-CCM-SM3"
# define GMTLS_TXT_ECC_PSK_WITH_SMS4_CBC_SM3 "ECC-PSK-WITH-SMS4-CBC-SM3"
# define GMTLS_TXT_ECC_PSK_WITH_SMS4_GCM_SM3 "ECC-PSK-WITH-SMS4-GCM-SM3"
# define GMTLS_TXT_ECC_PSK_WITH_SMS4_CCM_SM3 "ECC-PSK-WITH-SMS4-CCM-SM3"
# define GMTLS_TXT_SM2DHE_PSK_WITH_SMS4_CBC_SM3 "SM2DHE-PSK-WITH-SMS4-CBC-SM3"
# define GMTLS_TXT_SM2DHE_PSK_WITH_SMS4_GCM_SM3 "SM2DHE-PSK-WITH-SMS4-GCM-SM3"
# define GMTLS_TXT_SM2DHE_PSK_WITH_SMS4_CCM_SM3 "SM2DHE-PSK-WITH-SMS4-CCM-SM3"
# define GMTLS_TXT_PSK_WITH_SM1_CBC_SM3 "PSK-WITH-SM1-CBC-SM3"
# define GMTLS_TXT_PSK_WITH_SM1_GCM_SM3 "PSK-WITH-SM1-GCM-SM3"
# define GMTLS_TXT_PSK_WITH_SM1_CCM_SM3 "PSK-WITH-SM1-CCM-SM3"
# define GMTLS_TXT_DHE_PSK_WITH_SM1_CBC_SM3 "DHE-PSK-WITH-SM1-CBC-SM3"
# define GMTLS_TXT_DHE_PSK_WITH_SM1_GCM_SM3 "DHE-PSK-WITH-SM1-GCM-SM3"
# define GMTLS_TXT_DHE_PSK_WITH_SM1_CCM_SM3 "DHE-PSK-WITH-SM1-CCM-SM3"
# define GMTLS_TXT_RSA_PSK_WITH_SM1_CBC_SM3 "RSA-PSK-WITH-SM1-CBC-SM3"
# define GMTLS_TXT_RSA_PSK_WITH_SM1_GCM_SM3 "RSA-PSK-WITH-SM1-GCM-SM3"
# define GMTLS_TXT_RSA_PSK_WITH_SM1_CCM_SM3 "RSA-PSK-WITH-SM1-CCM-SM3"
# define GMTLS_TXT_PSK_WITH_SSF33_CBC_SM3 "PSK-WITH-SSF33-CBC-SM3"
# define GMTLS_TXT_PSK_WITH_SSF33_GCM_SM3 "PSK-WITH-SSF33-GCM-SM3"
# define GMTLS_TXT_PSK_WITH_SSF33_CCM_SM3 "PSK-WITH-SSF33-CCM-SM3"
# define GMTLS_TXT_DHE_PSK_WITH_SSF33_CBC_SM3 "DHE-PSK-WITH-SSF33-CBC-SM3"
# define GMTLS_TXT_DHE_PSK_WITH_SSF33_GCM_SM3 "DHE-PSK-WITH-SSF33-GCM-SM3"
# define GMTLS_TXT_DHE_PSK_WITH_SSF33_CCM_SM3 "DHE-PSK-WITH-SSF33-CCM-SM3"
# define GMTLS_TXT_RSA_PSK_WITH_SSF33_CBC_SM3 "RSA-PSK-WITH-SSF33-CBC-SM3"
# define GMTLS_TXT_RSA_PSK_WITH_SSF33_GCM_SM3 "RSA-PSK-WITH-SSF33-GCM-SM3"
# define GMTLS_TXT_RSA_PSK_WITH_SSF33_CCM_SM3 "RSA-PSK-WITH-SSF33-CCM-SM3"
# define GMTLS_TXT_ECDHE_PSK_WITH_SMS4_CBC_SM3 "ECDHE-PSK-WITH-SMS4-CBC-SM3"
# define GMTLS_TXT_ECDHE_PSK_WITH_SMS4_GCM_SM3 "ECDHE-PSK-WITH-SMS4-GCM-SM3"
# define GMTLS_TXT_ECDHE_PSK_WITH_SMS4_CCM_SM3 "ECDHE-PSK-WITH-SMS4-CCM-SM3"
# define GMTLS_TXT_PSK_WITH_ZUC_SM3 "PSK-WITH-ZUC-SM3"
# define GMTLS_TXT_PSK_WITH_ZUC256_SM3 "PSK-WITH-ZUC256-SM3"
# define GMTLS_TXT_ECDHE_PSK_WITH_ZUC_SM3 "ECDHE-PSK-WITH-ZUC-SM3"
# define GMTLS_TXT_ECDHE_PSK_WITH_ZUC256_SM3 "ECDHE-PSK-WITH-ZUC256-SM3"
# define GMTLS_TXT_SM2DHE_PSK_WITH_ZUC_SM3 "SM2DHE-PSK-WITH-ZUC-SM3"
# define GMTLS_TXT_SM2DHE_PSK_WITH_ZUC256_SM3 "SM2DHE-PSK-WITH-ZUC256-SM3"
/* SRP ciphersuites */
# define GMTLS_TXT_SRP_SM3_WITH_SMS4_CBC_SM3 "SRP-SM3-WITH-SMS4-CBC-SM3"

View File

@@ -41,9 +41,9 @@ extern "C" {
*/
# define OPENSSL_VERSION_NUMBER 0x1010004fL
# ifdef OPENSSL_FIPS
# define OPENSSL_VERSION_TEXT "GmSSL 2.5.2 - OpenSSL 1.1.0d-fips 1 Aug 2019"
# define OPENSSL_VERSION_TEXT "GmSSL 2.5.3 - OpenSSL 1.1.0d-fips 13 Aug 2019"
# else
# define OPENSSL_VERSION_TEXT "GmSSL 2.5.2 - OpenSSL 1.1.0d 1 Aug 2019"
# define OPENSSL_VERSION_TEXT "GmSSL 2.5.3 - OpenSSL 1.1.0d 13 Aug 2019"
# endif
/*-

View File

@@ -81,6 +81,9 @@ void SM9_MASTER_KEY_free(SM9_MASTER_KEY *a);
SM9_KEY *SM9_KEY_new(void);
void SM9_KEY_free(SM9_KEY *a);
int SM9_MASTER_KEY_up_ref(SM9_MASTER_KEY *msk);
int SM9_KEY_up_ref(SM9_KEY *sk);
int SM9_setup(int pairing, /* NID_sm9bn256v1 */
int scheme, /* NID_[sm9sign | sm9encrypt | sm9keyagreement] */
int hash1, /* NID_sm9hash1_with_[sm3 | sha256] */
@@ -204,9 +207,6 @@ int i2d_SM9Signature_fp(FILE *fp, SM9Signature *a);
int i2d_SM9Ciphertext_fp(FILE *fp, SM9Ciphertext *a);
#endif
int SM9_MASTER_KEY_up_ref(SM9_MASTER_KEY *msk);
int SM9_KEY_up_ref(SM9_KEY *sk);
DECLARE_ASN1_ENCODE_FUNCTIONS_const(SM9_MASTER_KEY,SM9MasterSecret)
DECLARE_ASN1_ENCODE_FUNCTIONS_const(SM9_MASTER_KEY,SM9PublicParameters)
DECLARE_ASN1_ENCODE_FUNCTIONS_const(SM9_KEY,SM9PrivateKey)

View File

@@ -53,32 +53,29 @@
#include <openssl/opensslconf.h>
#ifndef OPENSSL_NO_SMS4
#define SMS4_KEY_LENGTH 16
#define SMS4_BLOCK_SIZE 16
#define SMS4_IV_LENGTH (SMS4_BLOCK_SIZE)
#define SMS4_NUM_ROUNDS 32
# define SMS4_KEY_LENGTH 16
# define SMS4_BLOCK_SIZE 16
# define SMS4_IV_LENGTH (SMS4_BLOCK_SIZE)
# define SMS4_NUM_ROUNDS 32
#include <sys/types.h>
#include <openssl/e_os2.h>
#include <string.h>
# include <sys/types.h>
# include <openssl/e_os2.h>
# include <string.h>
#ifdef __cplusplus
# ifdef __cplusplus
extern "C" {
#endif
# endif
typedef struct {
uint32_t rk[SMS4_NUM_ROUNDS];
} sms4_key_t;
void sms4_set_encrypt_key(sms4_key_t *key, const unsigned char *user_key);
void sms4_set_decrypt_key(sms4_key_t *key, const unsigned char *user_key);
void sms4_encrypt(const unsigned char *in, unsigned char *out, const sms4_key_t *key);
#define sms4_decrypt(in,out,key) sms4_encrypt(in,out,key)
void sms4_encrypt_init(sms4_key_t *key);
void sms4_encrypt_8blocks(const unsigned char *in, unsigned char *out, const sms4_key_t *key);
void sms4_encrypt_16blocks(const unsigned char *in, unsigned char *out, const sms4_key_t *key);
void sms4_set_encrypt_key(sms4_key_t *key, const unsigned char user_key[16]);
void sms4_set_decrypt_key(sms4_key_t *key, const unsigned char user_key[16]);
void sms4_encrypt(const unsigned char in[16], unsigned char out[16],
const sms4_key_t *key);
# define sms4_decrypt(in,out,key) sms4_encrypt(in,out,key)
void sms4_ecb_encrypt(const unsigned char *in, unsigned char *out,
const sms4_key_t *key, int enc);
@@ -97,34 +94,40 @@ int sms4_wrap_key(sms4_key_t *key, const unsigned char *iv,
int sms4_unwrap_key(sms4_key_t *key, const unsigned char *iv,
unsigned char *out, const unsigned char *in, unsigned int inlen);
/*
void sms4_avx2_encrypt_init(sms4_key_t *key);
void sms4_avx2_encrypt_8blocks(const unsigned char *in, unsigned char *out, const sms4_key_t *key);
void sms4_avx2_encrypt_16blocks(const unsigned char *in, unsigned char *out, const sms4_key_t *key);
void sms4_knc_encrypt_init(sms4_key_t *key);
void sms4_knc_encrypt_8blocks(const unsigned char *in, unsigned char *out, const sms4_key_t *key);
void sms4_knc_encrypt_16blocks(const unsigned char *in, unsigned char *out, const sms4_key_t *key);
#define SMS4_EDE_KEY_LENGTH 32
# define SMS4_EDE_KEY_LENGTH (SMS4_KEY_LENGTH * 3)
typedef struct {
sms4_key_t k1;
sms4_key_t k2;
sms4_key_t k3;
} sms4_ede_key_t;
void sms4_ede_set_encrypt_key(sms4_ede_key_t *key, const unsigned char *user_key);
void sms4_ede_set_decrypt_key(sms4_ede_key_t *key, const unsigned char *user_key);
void sms4_ede_encrypt(sms4_ede_key_t *key, const unsigned char *in, unsigned char *out);
void sms4_ede_encrypt_8blocks(sms4_ede_key_t *key, const unsigned char *in, unsigned char *out);
void sms4_ede_encrypt_16blocks(sms4_ede_key_t *key, const unsigned char *in, unsigned char *out);
void sms4_ede_decrypt(sms4_ede_key_t *key, const unsigned char *in, unsigned char *out);
void sms4_ede_decrypt_8blocks(sms4_ede_key_t *key, const unsigned char *in, unsigned char *out);
void sms4_ede_decrypt_16blocks(sms4_ede_key_t *key, const unsigned char *in, unsigned char *out);
*/
void sms4_ede_set_encrypt_key(sms4_ede_key_t *key, const unsigned char user_key[48]);
void sms4_ede_set_decrypt_key(sms4_ede_key_t *key, const unsigned char user_key[48]);
void sms4_ede_encrypt(const unsigned char in[16], unsigned char out[16],
const sms4_ede_key_t *key);
# define sms4_ede_decrypt(in,out,key) sms4_ede_encrypt(in,out,key)
#ifdef __cplusplus
void sms4_ede_ecb_encrypt(const unsigned char *in, unsigned char *out,
const sms4_ede_key_t *key, int enc);
void sms4_ede_cbc_encrypt(const unsigned char *in, unsigned char *out,
size_t len, const sms4_ede_key_t *key, unsigned char *iv, int enc);
void sms4_ede_cfb128_encrypt(const unsigned char *in, unsigned char *out,
size_t len, const sms4_ede_key_t *key, unsigned char *iv, int *num,
int enc);
void sms4_ede_ofb128_encrypt(const unsigned char *in, unsigned char *out,
size_t len, const sms4_ede_key_t *key, unsigned char *iv, int *num);
void sms4_ede_ctr128_encrypt(const unsigned char *in, unsigned char *out,
size_t len, const sms4_ede_key_t *key, unsigned char *iv,
unsigned char ecount_buf[SMS4_BLOCK_SIZE], unsigned int *num);
int sms4_ede_wrap_key(sms4_ede_key_t *key, const unsigned char *iv,
unsigned char *out, const unsigned char *in, unsigned int inlen);
int sms4_ede_unwrap_key(sms4_ede_key_t *key, const unsigned char *iv,
unsigned char *out, const unsigned char *in, unsigned int inlen);
# ifdef __cplusplus
}
#endif
# endif
#endif
#endif

View File

@@ -58,6 +58,7 @@
# define ZUC_IV_LENGTH 16
# define ZUC_KEY_LENGTH 16
# define ZUC256_KEY_LENGTH 32
typedef uint32_t ZUC_UINT1;
typedef uint32_t ZUC_UINT5;
@@ -81,6 +82,9 @@ void ZUC_set_key(ZUC_KEY *key, const unsigned char *user_key, const unsigned cha
void ZUC_generate_keystream(ZUC_KEY *key, size_t nwords, uint32_t *words);
uint32_t ZUC_generate_keyword(ZUC_KEY *key);
void ZUC256_set_key(ZUC_KEY *key, const unsigned char *K, const unsigned char *IV);
int ZUC256_set_mac_key(ZUC_KEY *key, const unsigned char *K, const unsigned char *IV,
int macbits /* macbits in {32, 64, 128} */);
# ifdef __cplusplus
}