mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-05-07 00:46:17 +08:00
version 2.5.3
new sms4 api, go api and ciphersuites
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
/*-
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user