mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-08-06 11:53:39 +08:00
Remove _gmssl_export
This commit is contained in:
@@ -1,23 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2014-2023 The GmSSL Project. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the License); you may
|
|
||||||
* not use this file except in compliance with the License.
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef GMSSL_API_H
|
|
||||||
#define GMSSL_API_H
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
#define _gmssl_export __declspec(dllexport)
|
|
||||||
#elif defined(__GNUC__)
|
|
||||||
// use -fvisibility=hidden to change the "default" behavior
|
|
||||||
#define _gmssl_export __attribute__((visibility("default")))
|
|
||||||
#else
|
|
||||||
#define _gmssl_export
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -11,12 +11,10 @@
|
|||||||
#ifndef GMSSL_EC_H
|
#ifndef GMSSL_EC_H
|
||||||
#define GMSSL_EC_H
|
#define GMSSL_EC_H
|
||||||
|
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <gmssl/api.h>
|
|
||||||
#include <gmssl/sm2.h>
|
#include <gmssl/sm2.h>
|
||||||
#include <gmssl/oid.h>
|
#include <gmssl/oid.h>
|
||||||
#include <gmssl/asn1.h>
|
#include <gmssl/asn1.h>
|
||||||
@@ -57,7 +55,7 @@ enum {
|
|||||||
EC_private_key_version = 1,
|
EC_private_key_version = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
_gmssl_export int ec_private_key_print(FILE *fp, int fmt, int ind, const char *label, const uint8_t *d, size_t dlen);
|
int ec_private_key_print(FILE *fp, int fmt, int ind, const char *label, const uint8_t *d, size_t dlen);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <gmssl/api.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -22,7 +21,7 @@ extern "C" {
|
|||||||
|
|
||||||
#define RAND_BYTES_MAX_SIZE (256)
|
#define RAND_BYTES_MAX_SIZE (256)
|
||||||
|
|
||||||
_gmssl_export int rand_bytes(uint8_t *buf, size_t buflen);
|
int rand_bytes(uint8_t *buf, size_t buflen);
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <gmssl/api.h>
|
|
||||||
#include <gmssl/sm3.h>
|
#include <gmssl/sm3.h>
|
||||||
#include <gmssl/sm2_z256.h>
|
#include <gmssl/sm2_z256.h>
|
||||||
|
|
||||||
@@ -24,20 +23,19 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
SM2_Z256_POINT public_key;
|
SM2_Z256_POINT public_key;
|
||||||
sm2_z256_t private_key;
|
sm2_z256_t private_key;
|
||||||
} SM2_KEY;
|
} SM2_KEY;
|
||||||
|
|
||||||
_gmssl_export int sm2_key_generate(SM2_KEY *key);
|
int sm2_key_generate(SM2_KEY *key);
|
||||||
_gmssl_export int sm2_key_print(FILE *fp, int fmt, int ind, const char *label, const SM2_KEY *key);
|
int sm2_key_print(FILE *fp, int fmt, int ind, const char *label, const SM2_KEY *key);
|
||||||
int sm2_key_set_private_key(SM2_KEY *key, const sm2_z256_t private_key);
|
int sm2_key_set_private_key(SM2_KEY *key, const sm2_z256_t private_key);
|
||||||
int sm2_key_set_public_key(SM2_KEY *key, const SM2_Z256_POINT *public_key);
|
int sm2_key_set_public_key(SM2_KEY *key, const SM2_Z256_POINT *public_key);
|
||||||
|
|
||||||
_gmssl_export int sm2_public_key_equ(const SM2_KEY *sm2_key, const SM2_KEY *pub_key);
|
int sm2_public_key_equ(const SM2_KEY *sm2_key, const SM2_KEY *pub_key);
|
||||||
_gmssl_export int sm2_public_key_digest(const SM2_KEY *key, uint8_t dgst[32]);
|
int sm2_public_key_digest(const SM2_KEY *key, uint8_t dgst[32]);
|
||||||
_gmssl_export int sm2_public_key_print(FILE *fp, int fmt, int ind, const char *label, const SM2_KEY *pub_key);
|
int sm2_public_key_print(FILE *fp, int fmt, int ind, const char *label, const SM2_KEY *pub_key);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -78,10 +76,10 @@ SubjectPublicKeyInfo ::= SEQUENCE {
|
|||||||
algorithm AlgorithmIdentifier,
|
algorithm AlgorithmIdentifier,
|
||||||
subjectPublicKey BIT STRING -- uncompressed octets of ECPoint }
|
subjectPublicKey BIT STRING -- uncompressed octets of ECPoint }
|
||||||
*/
|
*/
|
||||||
_gmssl_export int sm2_public_key_info_to_der(const SM2_KEY *a, uint8_t **out, size_t *outlen);
|
int sm2_public_key_info_to_der(const SM2_KEY *a, uint8_t **out, size_t *outlen);
|
||||||
_gmssl_export int sm2_public_key_info_from_der(SM2_KEY *a, const uint8_t **in, size_t *inlen);
|
int sm2_public_key_info_from_der(SM2_KEY *a, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm2_public_key_info_to_pem(const SM2_KEY *a, FILE *fp);
|
int sm2_public_key_info_to_pem(const SM2_KEY *a, FILE *fp);
|
||||||
_gmssl_export int sm2_public_key_info_from_pem(SM2_KEY *a, FILE *fp);
|
int sm2_public_key_info_from_pem(SM2_KEY *a, FILE *fp);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
PKCS #8 PrivateKeyInfo from RFC 5208
|
PKCS #8 PrivateKeyInfo from RFC 5208
|
||||||
@@ -109,13 +107,13 @@ EncryptedPrivateKeyInfo ::= SEQUENCE {
|
|||||||
encryptionAlgorithm EncryptionAlgorithmIdentifier, -- id-PBES2
|
encryptionAlgorithm EncryptionAlgorithmIdentifier, -- id-PBES2
|
||||||
encryptedData OCTET STRING }
|
encryptedData OCTET STRING }
|
||||||
*/
|
*/
|
||||||
_gmssl_export int sm2_private_key_info_encrypt_to_der(const SM2_KEY *key,
|
int sm2_private_key_info_encrypt_to_der(const SM2_KEY *key,
|
||||||
const char *pass, uint8_t **out, size_t *outlen);
|
const char *pass, uint8_t **out, size_t *outlen);
|
||||||
_gmssl_export int sm2_private_key_info_decrypt_from_der(SM2_KEY *key, const uint8_t **attrs, size_t *attrs_len,
|
int sm2_private_key_info_decrypt_from_der(SM2_KEY *key, const uint8_t **attrs, size_t *attrs_len,
|
||||||
const char *pass, const uint8_t **in, size_t *inlen);
|
const char *pass, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm2_private_key_info_encrypt_to_pem(const SM2_KEY *key, const char *pass, FILE *fp);
|
int sm2_private_key_info_encrypt_to_pem(const SM2_KEY *key, const char *pass, FILE *fp);
|
||||||
// FIXME: #define default buffer size
|
// FIXME: #define default buffer size
|
||||||
_gmssl_export int sm2_private_key_info_decrypt_from_pem(SM2_KEY *key, const char *pass, FILE *fp);
|
int sm2_private_key_info_decrypt_from_pem(SM2_KEY *key, const char *pass, FILE *fp);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -148,8 +146,8 @@ int sm2_fast_verify(const SM2_Z256_POINT point_table[16],
|
|||||||
int sm2_signature_to_der(const SM2_SIGNATURE *sig, uint8_t **out, size_t *outlen);
|
int sm2_signature_to_der(const SM2_SIGNATURE *sig, uint8_t **out, size_t *outlen);
|
||||||
int sm2_signature_from_der(SM2_SIGNATURE *sig, const uint8_t **in, size_t *inlen);
|
int sm2_signature_from_der(SM2_SIGNATURE *sig, const uint8_t **in, size_t *inlen);
|
||||||
int sm2_signature_print(FILE *fp, int fmt, int ind, const char *label, const uint8_t *sig, size_t siglen);
|
int sm2_signature_print(FILE *fp, int fmt, int ind, const char *label, const uint8_t *sig, size_t siglen);
|
||||||
_gmssl_export int sm2_sign(const SM2_KEY *key, const uint8_t dgst[32], uint8_t *sig, size_t *siglen);
|
int sm2_sign(const SM2_KEY *key, const uint8_t dgst[32], uint8_t *sig, size_t *siglen);
|
||||||
_gmssl_export int sm2_verify(const SM2_KEY *key, const uint8_t dgst[32], const uint8_t *sig, size_t siglen);
|
int sm2_verify(const SM2_KEY *key, const uint8_t dgst[32], const uint8_t *sig, size_t siglen);
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
SM2_signature_compact_size = 70,
|
SM2_signature_compact_size = 70,
|
||||||
@@ -182,10 +180,10 @@ typedef struct {
|
|||||||
SM2_Z256_POINT public_point_table[16];
|
SM2_Z256_POINT public_point_table[16];
|
||||||
} SM2_SIGN_CTX;
|
} SM2_SIGN_CTX;
|
||||||
|
|
||||||
_gmssl_export int sm2_sign_init(SM2_SIGN_CTX *ctx, const SM2_KEY *key, const char *id, size_t idlen);
|
int sm2_sign_init(SM2_SIGN_CTX *ctx, const SM2_KEY *key, const char *id, size_t idlen);
|
||||||
_gmssl_export int sm2_sign_update(SM2_SIGN_CTX *ctx, const uint8_t *data, size_t datalen);
|
int sm2_sign_update(SM2_SIGN_CTX *ctx, const uint8_t *data, size_t datalen);
|
||||||
_gmssl_export int sm2_sign_finish(SM2_SIGN_CTX *ctx, uint8_t *sig, size_t *siglen);
|
int sm2_sign_finish(SM2_SIGN_CTX *ctx, uint8_t *sig, size_t *siglen);
|
||||||
_gmssl_export int sm2_sign_reset(SM2_SIGN_CTX *ctx);
|
int sm2_sign_reset(SM2_SIGN_CTX *ctx);
|
||||||
int sm2_sign_finish_fixlen(SM2_SIGN_CTX *ctx, size_t siglen, uint8_t *sig);
|
int sm2_sign_finish_fixlen(SM2_SIGN_CTX *ctx, size_t siglen, uint8_t *sig);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@@ -195,10 +193,10 @@ typedef struct {
|
|||||||
SM2_Z256_POINT public_point_table[16];
|
SM2_Z256_POINT public_point_table[16];
|
||||||
} SM2_VERIFY_CTX;
|
} SM2_VERIFY_CTX;
|
||||||
|
|
||||||
_gmssl_export int sm2_verify_init(SM2_VERIFY_CTX *ctx, const SM2_KEY *key, const char *id, size_t idlen);
|
int sm2_verify_init(SM2_VERIFY_CTX *ctx, const SM2_KEY *key, const char *id, size_t idlen);
|
||||||
_gmssl_export int sm2_verify_update(SM2_VERIFY_CTX *ctx, const uint8_t *data, size_t datalen);
|
int sm2_verify_update(SM2_VERIFY_CTX *ctx, const uint8_t *data, size_t datalen);
|
||||||
_gmssl_export int sm2_verify_finish(SM2_VERIFY_CTX *ctx, const uint8_t *sig, size_t siglen);
|
int sm2_verify_finish(SM2_VERIFY_CTX *ctx, const uint8_t *sig, size_t siglen);
|
||||||
_gmssl_export int sm2_verify_reset(SM2_VERIFY_CTX *ctx);
|
int sm2_verify_reset(SM2_VERIFY_CTX *ctx);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -234,8 +232,8 @@ int sm2_do_decrypt(const SM2_KEY *key, const SM2_CIPHERTEXT *in, uint8_t *out, s
|
|||||||
int sm2_ciphertext_to_der(const SM2_CIPHERTEXT *c, uint8_t **out, size_t *outlen);
|
int sm2_ciphertext_to_der(const SM2_CIPHERTEXT *c, uint8_t **out, size_t *outlen);
|
||||||
int sm2_ciphertext_from_der(SM2_CIPHERTEXT *c, const uint8_t **in, size_t *inlen);
|
int sm2_ciphertext_from_der(SM2_CIPHERTEXT *c, const uint8_t **in, size_t *inlen);
|
||||||
int sm2_ciphertext_print(FILE *fp, int fmt, int ind, const char *label, const uint8_t *a, size_t alen);
|
int sm2_ciphertext_print(FILE *fp, int fmt, int ind, const char *label, const uint8_t *a, size_t alen);
|
||||||
_gmssl_export int sm2_encrypt(const SM2_KEY *key, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
int sm2_encrypt(const SM2_KEY *key, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm2_decrypt(const SM2_KEY *key, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
int sm2_decrypt(const SM2_KEY *key, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
SM2_ciphertext_compact_point_size = 68,
|
SM2_ciphertext_compact_point_size = 68,
|
||||||
@@ -247,7 +245,7 @@ int sm2_encrypt_fixlen(const SM2_KEY *key, const uint8_t *in, size_t inlen, int
|
|||||||
|
|
||||||
|
|
||||||
int sm2_do_ecdh(const SM2_KEY *key, const SM2_Z256_POINT *peer_public, SM2_Z256_POINT *out);
|
int sm2_do_ecdh(const SM2_KEY *key, const SM2_Z256_POINT *peer_public, SM2_Z256_POINT *out);
|
||||||
_gmssl_export int sm2_ecdh(const SM2_KEY *key, const uint8_t *peer_public, size_t peer_public_len, uint8_t out[64]);
|
int sm2_ecdh(const SM2_KEY *key, const uint8_t *peer_public, size_t peer_public_len, uint8_t out[64]);
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@@ -267,20 +265,20 @@ typedef struct {
|
|||||||
size_t buf_size;
|
size_t buf_size;
|
||||||
} SM2_ENC_CTX;
|
} SM2_ENC_CTX;
|
||||||
|
|
||||||
_gmssl_export int sm2_encrypt_init(SM2_ENC_CTX *ctx);
|
int sm2_encrypt_init(SM2_ENC_CTX *ctx);
|
||||||
_gmssl_export int sm2_encrypt_update(SM2_ENC_CTX *ctx, const uint8_t *in, size_t inlen);
|
int sm2_encrypt_update(SM2_ENC_CTX *ctx, const uint8_t *in, size_t inlen);
|
||||||
_gmssl_export int sm2_encrypt_finish(SM2_ENC_CTX *ctx, const SM2_KEY *public_key, uint8_t *out, size_t *outlen);
|
int sm2_encrypt_finish(SM2_ENC_CTX *ctx, const SM2_KEY *public_key, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm2_encrypt_reset(SM2_ENC_CTX *ctx);
|
int sm2_encrypt_reset(SM2_ENC_CTX *ctx);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t buf[SM2_MAX_CIPHERTEXT_SIZE];
|
uint8_t buf[SM2_MAX_CIPHERTEXT_SIZE];
|
||||||
size_t buf_size;
|
size_t buf_size;
|
||||||
} SM2_DEC_CTX;
|
} SM2_DEC_CTX;
|
||||||
|
|
||||||
_gmssl_export int sm2_decrypt_init(SM2_DEC_CTX *ctx);
|
int sm2_decrypt_init(SM2_DEC_CTX *ctx);
|
||||||
_gmssl_export int sm2_decrypt_update(SM2_DEC_CTX *ctx, const uint8_t *in, size_t inlen);
|
int sm2_decrypt_update(SM2_DEC_CTX *ctx, const uint8_t *in, size_t inlen);
|
||||||
_gmssl_export int sm2_decrypt_finish(SM2_DEC_CTX *ctx, const SM2_KEY *key, uint8_t *out, size_t *outlen);
|
int sm2_decrypt_finish(SM2_DEC_CTX *ctx, const SM2_KEY *key, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm2_decrypt_reset(SM2_DEC_CTX *ctx);
|
int sm2_decrypt_reset(SM2_DEC_CTX *ctx);
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <gmssl/api.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -66,7 +65,7 @@ void sm3_kdf_finish(SM3_KDF_CTX *ctx, uint8_t *out);
|
|||||||
#define SM3_PBKDF2_MAX_SALT_SIZE 64
|
#define SM3_PBKDF2_MAX_SALT_SIZE 64
|
||||||
#define SM3_PBKDF2_DEFAULT_SALT_SIZE 8
|
#define SM3_PBKDF2_DEFAULT_SALT_SIZE 8
|
||||||
|
|
||||||
_gmssl_export int sm3_pbkdf2(const char *pass, size_t passlen,
|
int sm3_pbkdf2(const char *pass, size_t passlen,
|
||||||
const uint8_t *salt, size_t saltlen, size_t count,
|
const uint8_t *salt, size_t saltlen, size_t count,
|
||||||
size_t outlen, uint8_t *out);
|
size_t outlen, uint8_t *out);
|
||||||
|
|
||||||
@@ -79,9 +78,9 @@ typedef struct {
|
|||||||
int state;
|
int state;
|
||||||
} SM3_DIGEST_CTX;
|
} SM3_DIGEST_CTX;
|
||||||
|
|
||||||
_gmssl_export int sm3_digest_init(SM3_DIGEST_CTX *ctx, const uint8_t *key, size_t keylen);
|
int sm3_digest_init(SM3_DIGEST_CTX *ctx, const uint8_t *key, size_t keylen);
|
||||||
_gmssl_export int sm3_digest_update(SM3_DIGEST_CTX *ctx, const uint8_t *data, size_t datalen);
|
int sm3_digest_update(SM3_DIGEST_CTX *ctx, const uint8_t *data, size_t datalen);
|
||||||
_gmssl_export int sm3_digest_finish(SM3_DIGEST_CTX *ctx, uint8_t dgst[SM3_DIGEST_SIZE]);
|
int sm3_digest_finish(SM3_DIGEST_CTX *ctx, uint8_t dgst[SM3_DIGEST_SIZE]);
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -14,7 +14,6 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <gmssl/ghash.h>
|
#include <gmssl/ghash.h>
|
||||||
#include <gmssl/api.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -57,12 +56,12 @@ typedef struct {
|
|||||||
size_t block_nbytes;
|
size_t block_nbytes;
|
||||||
} SM4_CBC_CTX;
|
} SM4_CBC_CTX;
|
||||||
|
|
||||||
_gmssl_export int sm4_cbc_encrypt_init(SM4_CBC_CTX *ctx, const uint8_t key[SM4_KEY_SIZE], const uint8_t iv[SM4_BLOCK_SIZE]);
|
int sm4_cbc_encrypt_init(SM4_CBC_CTX *ctx, const uint8_t key[SM4_KEY_SIZE], const uint8_t iv[SM4_BLOCK_SIZE]);
|
||||||
_gmssl_export int sm4_cbc_encrypt_update(SM4_CBC_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
int sm4_cbc_encrypt_update(SM4_CBC_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_cbc_encrypt_finish(SM4_CBC_CTX *ctx, uint8_t *out, size_t *outlen);
|
int sm4_cbc_encrypt_finish(SM4_CBC_CTX *ctx, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_cbc_decrypt_init(SM4_CBC_CTX *ctx, const uint8_t key[SM4_KEY_SIZE], const uint8_t iv[SM4_BLOCK_SIZE]);
|
int sm4_cbc_decrypt_init(SM4_CBC_CTX *ctx, const uint8_t key[SM4_KEY_SIZE], const uint8_t iv[SM4_BLOCK_SIZE]);
|
||||||
_gmssl_export int sm4_cbc_decrypt_update(SM4_CBC_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
int sm4_cbc_decrypt_update(SM4_CBC_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_cbc_decrypt_finish(SM4_CBC_CTX *ctx, uint8_t *out, size_t *outlen);
|
int sm4_cbc_decrypt_finish(SM4_CBC_CTX *ctx, uint8_t *out, size_t *outlen);
|
||||||
|
|
||||||
|
|
||||||
void sm4_ctr_encrypt(const SM4_KEY *key, uint8_t ctr[SM4_BLOCK_SIZE],
|
void sm4_ctr_encrypt(const SM4_KEY *key, uint8_t ctr[SM4_BLOCK_SIZE],
|
||||||
@@ -77,9 +76,9 @@ typedef struct {
|
|||||||
size_t block_nbytes;
|
size_t block_nbytes;
|
||||||
} SM4_CTR_CTX;
|
} SM4_CTR_CTX;
|
||||||
|
|
||||||
_gmssl_export int sm4_ctr_encrypt_init(SM4_CTR_CTX *ctx, const uint8_t key[SM4_KEY_SIZE], const uint8_t ctr[SM4_BLOCK_SIZE]);
|
int sm4_ctr_encrypt_init(SM4_CTR_CTX *ctx, const uint8_t key[SM4_KEY_SIZE], const uint8_t ctr[SM4_BLOCK_SIZE]);
|
||||||
_gmssl_export int sm4_ctr_encrypt_update(SM4_CTR_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
int sm4_ctr_encrypt_update(SM4_CTR_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_ctr_encrypt_finish(SM4_CTR_CTX *ctx, uint8_t *out, size_t *outlen);
|
int sm4_ctr_encrypt_finish(SM4_CTR_CTX *ctx, uint8_t *out, size_t *outlen);
|
||||||
int sm4_ctr32_encrypt_init(SM4_CTR_CTX *ctx, const uint8_t key[SM4_KEY_SIZE], const uint8_t ctr[SM4_BLOCK_SIZE]);
|
int sm4_ctr32_encrypt_init(SM4_CTR_CTX *ctx, const uint8_t key[SM4_KEY_SIZE], const uint8_t ctr[SM4_BLOCK_SIZE]);
|
||||||
int sm4_ctr32_encrypt_update(SM4_CTR_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
int sm4_ctr32_encrypt_update(SM4_CTR_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
int sm4_ctr32_encrypt_finish(SM4_CTR_CTX *ctx, uint8_t *out, size_t *outlen);
|
int sm4_ctr32_encrypt_finish(SM4_CTR_CTX *ctx, uint8_t *out, size_t *outlen);
|
||||||
@@ -120,19 +119,19 @@ typedef struct {
|
|||||||
size_t maclen;
|
size_t maclen;
|
||||||
} SM4_GCM_CTX;
|
} SM4_GCM_CTX;
|
||||||
|
|
||||||
_gmssl_export int sm4_gcm_encrypt_init(SM4_GCM_CTX *ctx,
|
int sm4_gcm_encrypt_init(SM4_GCM_CTX *ctx,
|
||||||
const uint8_t *key, size_t keylen, const uint8_t *iv, size_t ivlen,
|
const uint8_t *key, size_t keylen, const uint8_t *iv, size_t ivlen,
|
||||||
const uint8_t *aad, size_t aadlen, size_t taglen);
|
const uint8_t *aad, size_t aadlen, size_t taglen);
|
||||||
_gmssl_export int sm4_gcm_encrypt_update(SM4_GCM_CTX *ctx,
|
int sm4_gcm_encrypt_update(SM4_GCM_CTX *ctx,
|
||||||
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_gcm_encrypt_finish(SM4_GCM_CTX *ctx,
|
int sm4_gcm_encrypt_finish(SM4_GCM_CTX *ctx,
|
||||||
uint8_t *out, size_t *outlen);
|
uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_gcm_decrypt_init(SM4_GCM_CTX *ctx,
|
int sm4_gcm_decrypt_init(SM4_GCM_CTX *ctx,
|
||||||
const uint8_t *key, size_t keylen, const uint8_t *iv, size_t ivlen,
|
const uint8_t *key, size_t keylen, const uint8_t *iv, size_t ivlen,
|
||||||
const uint8_t *aad, size_t aadlen, size_t taglen);
|
const uint8_t *aad, size_t aadlen, size_t taglen);
|
||||||
_gmssl_export int sm4_gcm_decrypt_update(SM4_GCM_CTX *ctx,
|
int sm4_gcm_decrypt_update(SM4_GCM_CTX *ctx,
|
||||||
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_gcm_decrypt_finish(SM4_GCM_CTX *ctx,
|
int sm4_gcm_decrypt_finish(SM4_GCM_CTX *ctx,
|
||||||
uint8_t *out, size_t *outlen);
|
uint8_t *out, size_t *outlen);
|
||||||
|
|
||||||
|
|
||||||
@@ -170,11 +169,11 @@ typedef struct {
|
|||||||
size_t block_nbytes;
|
size_t block_nbytes;
|
||||||
} SM4_OFB_CTX;
|
} SM4_OFB_CTX;
|
||||||
|
|
||||||
_gmssl_export int sm4_ofb_encrypt_init(SM4_OFB_CTX *ctx,
|
int sm4_ofb_encrypt_init(SM4_OFB_CTX *ctx,
|
||||||
const uint8_t key[SM4_BLOCK_SIZE], const uint8_t iv[SM4_BLOCK_SIZE]);
|
const uint8_t key[SM4_BLOCK_SIZE], const uint8_t iv[SM4_BLOCK_SIZE]);
|
||||||
_gmssl_export int sm4_ofb_encrypt_update(SM4_OFB_CTX *ctx,
|
int sm4_ofb_encrypt_update(SM4_OFB_CTX *ctx,
|
||||||
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_ofb_encrypt_finish(SM4_OFB_CTX *ctx, uint8_t *out, size_t *outlen);
|
int sm4_ofb_encrypt_finish(SM4_OFB_CTX *ctx, uint8_t *out, size_t *outlen);
|
||||||
#endif // ENABLE_SM4_OFB
|
#endif // ENABLE_SM4_OFB
|
||||||
|
|
||||||
|
|
||||||
@@ -202,17 +201,17 @@ typedef struct {
|
|||||||
size_t sbytes;
|
size_t sbytes;
|
||||||
} SM4_CFB_CTX;
|
} SM4_CFB_CTX;
|
||||||
|
|
||||||
_gmssl_export int sm4_cfb_encrypt_init(SM4_CFB_CTX *ctx, size_t sbytes,
|
int sm4_cfb_encrypt_init(SM4_CFB_CTX *ctx, size_t sbytes,
|
||||||
const uint8_t key[SM4_BLOCK_SIZE], const uint8_t iv[SM4_BLOCK_SIZE]);
|
const uint8_t key[SM4_BLOCK_SIZE], const uint8_t iv[SM4_BLOCK_SIZE]);
|
||||||
_gmssl_export int sm4_cfb_encrypt_update(SM4_CFB_CTX *ctx,
|
int sm4_cfb_encrypt_update(SM4_CFB_CTX *ctx,
|
||||||
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_cfb_encrypt_finish(SM4_CFB_CTX *ctx, uint8_t *out, size_t *outlen);
|
int sm4_cfb_encrypt_finish(SM4_CFB_CTX *ctx, uint8_t *out, size_t *outlen);
|
||||||
|
|
||||||
_gmssl_export int sm4_cfb_decrypt_init(SM4_CFB_CTX *ctx, size_t sbytes,
|
int sm4_cfb_decrypt_init(SM4_CFB_CTX *ctx, size_t sbytes,
|
||||||
const uint8_t key[SM4_BLOCK_SIZE], const uint8_t iv[SM4_BLOCK_SIZE]);
|
const uint8_t key[SM4_BLOCK_SIZE], const uint8_t iv[SM4_BLOCK_SIZE]);
|
||||||
_gmssl_export int sm4_cfb_decrypt_update(SM4_CFB_CTX *ctx,
|
int sm4_cfb_decrypt_update(SM4_CFB_CTX *ctx,
|
||||||
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_cfb_decrypt_finish(SM4_CFB_CTX *ctx, uint8_t *out, size_t *outlen);
|
int sm4_cfb_decrypt_finish(SM4_CFB_CTX *ctx, uint8_t *out, size_t *outlen);
|
||||||
#endif // ENABLE_SM4_CFB
|
#endif // ENABLE_SM4_CFB
|
||||||
|
|
||||||
|
|
||||||
@@ -224,10 +223,10 @@ _gmssl_export int sm4_cfb_decrypt_finish(SM4_CFB_CTX *ctx, uint8_t *out, size_t
|
|||||||
#define SM4_CCM_DEFAULT_TAG_SIZE 16
|
#define SM4_CCM_DEFAULT_TAG_SIZE 16
|
||||||
|
|
||||||
// make sure inlen < 2^((15 - ivlen) * 8)
|
// make sure inlen < 2^((15 - ivlen) * 8)
|
||||||
_gmssl_export int sm4_ccm_encrypt(const SM4_KEY *sm4_key, const uint8_t *iv, size_t ivlen,
|
int sm4_ccm_encrypt(const SM4_KEY *sm4_key, const uint8_t *iv, size_t ivlen,
|
||||||
const uint8_t *aad, size_t aadlen, const uint8_t *in, size_t inlen,
|
const uint8_t *aad, size_t aadlen, const uint8_t *in, size_t inlen,
|
||||||
uint8_t *out, size_t taglen, uint8_t *tag);
|
uint8_t *out, size_t taglen, uint8_t *tag);
|
||||||
_gmssl_export int sm4_ccm_decrypt(const SM4_KEY *sm4_key, const uint8_t *iv, size_t ivlen,
|
int sm4_ccm_decrypt(const SM4_KEY *sm4_key, const uint8_t *iv, size_t ivlen,
|
||||||
const uint8_t *aad, size_t aadlen, const uint8_t *in, size_t inlen,
|
const uint8_t *aad, size_t aadlen, const uint8_t *in, size_t inlen,
|
||||||
const uint8_t *tag, size_t taglen, uint8_t *out);
|
const uint8_t *tag, size_t taglen, uint8_t *out);
|
||||||
#endif // ENABLE_SM4_CCM
|
#endif // ENABLE_SM4_CCM
|
||||||
@@ -235,10 +234,10 @@ _gmssl_export int sm4_ccm_decrypt(const SM4_KEY *sm4_key, const uint8_t *iv, siz
|
|||||||
|
|
||||||
#ifdef ENABLE_SM4_XTS
|
#ifdef ENABLE_SM4_XTS
|
||||||
// call `sm4_set_encrypt_key` to set both `key1` and `key2`
|
// call `sm4_set_encrypt_key` to set both `key1` and `key2`
|
||||||
_gmssl_export int sm4_xts_encrypt(const SM4_KEY *key1, const SM4_KEY *key2, const uint8_t tweak[16],
|
int sm4_xts_encrypt(const SM4_KEY *key1, const SM4_KEY *key2, const uint8_t tweak[16],
|
||||||
const uint8_t *in, size_t inlen, uint8_t *out);
|
const uint8_t *in, size_t inlen, uint8_t *out);
|
||||||
// call `sm4_set_decrypt_key(key1)` and `sm4_set_encrypt_key(key2)`
|
// call `sm4_set_decrypt_key(key1)` and `sm4_set_encrypt_key(key2)`
|
||||||
_gmssl_export int sm4_xts_decrypt(const SM4_KEY *key1, const SM4_KEY *key2, const uint8_t tweak[16],
|
int sm4_xts_decrypt(const SM4_KEY *key1, const SM4_KEY *key2, const uint8_t tweak[16],
|
||||||
const uint8_t *in, size_t inlen, uint8_t *out);
|
const uint8_t *in, size_t inlen, uint8_t *out);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@@ -250,12 +249,12 @@ typedef struct {
|
|||||||
size_t block_nbytes;
|
size_t block_nbytes;
|
||||||
} SM4_XTS_CTX;
|
} SM4_XTS_CTX;
|
||||||
|
|
||||||
_gmssl_export int sm4_xts_encrypt_init(SM4_XTS_CTX *ctx, const uint8_t key[32], const uint8_t iv[16], size_t data_unit_size);
|
int sm4_xts_encrypt_init(SM4_XTS_CTX *ctx, const uint8_t key[32], const uint8_t iv[16], size_t data_unit_size);
|
||||||
_gmssl_export int sm4_xts_encrypt_update(SM4_XTS_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
int sm4_xts_encrypt_update(SM4_XTS_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_xts_encrypt_finish(SM4_XTS_CTX *ctx, uint8_t *out, size_t *outlen);
|
int sm4_xts_encrypt_finish(SM4_XTS_CTX *ctx, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_xts_decrypt_init(SM4_XTS_CTX *ctx, const uint8_t key[32], const uint8_t iv[16], size_t data_unit_size);
|
int sm4_xts_decrypt_init(SM4_XTS_CTX *ctx, const uint8_t key[32], const uint8_t iv[16], size_t data_unit_size);
|
||||||
_gmssl_export int sm4_xts_decrypt_update(SM4_XTS_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
int sm4_xts_decrypt_update(SM4_XTS_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_xts_decrypt_finish(SM4_XTS_CTX *ctx, uint8_t *out, size_t *outlen);
|
int sm4_xts_decrypt_finish(SM4_XTS_CTX *ctx, uint8_t *out, size_t *outlen);
|
||||||
#endif // ENABLE_SM4_XTS
|
#endif // ENABLE_SM4_XTS
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,6 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <gmssl/sm4.h>
|
#include <gmssl/sm4.h>
|
||||||
#include <gmssl/sm3.h>
|
#include <gmssl/sm3.h>
|
||||||
#include <gmssl/api.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -31,19 +30,19 @@ typedef struct {
|
|||||||
#define SM4_CBC_SM3_HMAC_KEY_SIZE 48
|
#define SM4_CBC_SM3_HMAC_KEY_SIZE 48
|
||||||
#define SM4_CBC_SM3_HMAC_IV_SIZE 16
|
#define SM4_CBC_SM3_HMAC_IV_SIZE 16
|
||||||
|
|
||||||
_gmssl_export int sm4_cbc_sm3_hmac_encrypt_init(SM4_CBC_SM3_HMAC_CTX *ctx,
|
int sm4_cbc_sm3_hmac_encrypt_init(SM4_CBC_SM3_HMAC_CTX *ctx,
|
||||||
const uint8_t key[48], const uint8_t iv[16],
|
const uint8_t key[48], const uint8_t iv[16],
|
||||||
const uint8_t *aad, size_t aadlen);
|
const uint8_t *aad, size_t aadlen);
|
||||||
_gmssl_export int sm4_cbc_sm3_hmac_encrypt_update(SM4_CBC_SM3_HMAC_CTX *ctx,
|
int sm4_cbc_sm3_hmac_encrypt_update(SM4_CBC_SM3_HMAC_CTX *ctx,
|
||||||
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_cbc_sm3_hmac_encrypt_finish(SM4_CBC_SM3_HMAC_CTX *ctx,
|
int sm4_cbc_sm3_hmac_encrypt_finish(SM4_CBC_SM3_HMAC_CTX *ctx,
|
||||||
uint8_t *out, size_t *outlen);
|
uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_cbc_sm3_hmac_decrypt_init(SM4_CBC_SM3_HMAC_CTX *ctx,
|
int sm4_cbc_sm3_hmac_decrypt_init(SM4_CBC_SM3_HMAC_CTX *ctx,
|
||||||
const uint8_t key[48], const uint8_t iv[16],
|
const uint8_t key[48], const uint8_t iv[16],
|
||||||
const uint8_t *aad, size_t aadlen);
|
const uint8_t *aad, size_t aadlen);
|
||||||
_gmssl_export int sm4_cbc_sm3_hmac_decrypt_update(SM4_CBC_SM3_HMAC_CTX *ctx,
|
int sm4_cbc_sm3_hmac_decrypt_update(SM4_CBC_SM3_HMAC_CTX *ctx,
|
||||||
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_cbc_sm3_hmac_decrypt_finish(SM4_CBC_SM3_HMAC_CTX *ctx,
|
int sm4_cbc_sm3_hmac_decrypt_finish(SM4_CBC_SM3_HMAC_CTX *ctx,
|
||||||
uint8_t *out, size_t *outlen);
|
uint8_t *out, size_t *outlen);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,6 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <gmssl/sm4.h>
|
#include <gmssl/sm4.h>
|
||||||
#include <gmssl/sm3.h>
|
#include <gmssl/sm3.h>
|
||||||
#include <gmssl/api.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -31,19 +30,19 @@ typedef struct {
|
|||||||
#define SM4_CTR_SM3_HMAC_KEY_SIZE 48
|
#define SM4_CTR_SM3_HMAC_KEY_SIZE 48
|
||||||
#define SM4_CTR_SM3_HMAC_IV_SIZE 16
|
#define SM4_CTR_SM3_HMAC_IV_SIZE 16
|
||||||
|
|
||||||
_gmssl_export int sm4_ctr_sm3_hmac_encrypt_init(SM4_CTR_SM3_HMAC_CTX *ctx,
|
int sm4_ctr_sm3_hmac_encrypt_init(SM4_CTR_SM3_HMAC_CTX *ctx,
|
||||||
const uint8_t key[48], const uint8_t iv[16],
|
const uint8_t key[48], const uint8_t iv[16],
|
||||||
const uint8_t *aad, size_t aadlen);
|
const uint8_t *aad, size_t aadlen);
|
||||||
_gmssl_export int sm4_ctr_sm3_hmac_encrypt_update(SM4_CTR_SM3_HMAC_CTX *ctx,
|
int sm4_ctr_sm3_hmac_encrypt_update(SM4_CTR_SM3_HMAC_CTX *ctx,
|
||||||
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_ctr_sm3_hmac_encrypt_finish(SM4_CTR_SM3_HMAC_CTX *ctx,
|
int sm4_ctr_sm3_hmac_encrypt_finish(SM4_CTR_SM3_HMAC_CTX *ctx,
|
||||||
uint8_t *out, size_t *outlen);
|
uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_ctr_sm3_hmac_decrypt_init(SM4_CTR_SM3_HMAC_CTX *ctx,
|
int sm4_ctr_sm3_hmac_decrypt_init(SM4_CTR_SM3_HMAC_CTX *ctx,
|
||||||
const uint8_t key[48], const uint8_t iv[16],
|
const uint8_t key[48], const uint8_t iv[16],
|
||||||
const uint8_t *aad, size_t aadlen);
|
const uint8_t *aad, size_t aadlen);
|
||||||
_gmssl_export int sm4_ctr_sm3_hmac_decrypt_update(SM4_CTR_SM3_HMAC_CTX *ctx,
|
int sm4_ctr_sm3_hmac_decrypt_update(SM4_CTR_SM3_HMAC_CTX *ctx,
|
||||||
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm4_ctr_sm3_hmac_decrypt_finish(SM4_CTR_SM3_HMAC_CTX *ctx,
|
int sm4_ctr_sm3_hmac_decrypt_finish(SM4_CTR_SM3_HMAC_CTX *ctx,
|
||||||
uint8_t *out, size_t *outlen);
|
uint8_t *out, size_t *outlen);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <gmssl/api.h>
|
|
||||||
#include <gmssl/sm3.h>
|
#include <gmssl/sm3.h>
|
||||||
#include <gmssl/sm2.h>
|
#include <gmssl/sm2.h>
|
||||||
#include <gmssl/sm9_z256.h>
|
#include <gmssl/sm9_z256.h>
|
||||||
@@ -75,35 +74,35 @@ typedef struct {
|
|||||||
SM9_Z256_POINT ds;
|
SM9_Z256_POINT ds;
|
||||||
} SM9_SIGN_KEY;
|
} SM9_SIGN_KEY;
|
||||||
|
|
||||||
_gmssl_export int sm9_sign_master_key_generate(SM9_SIGN_MASTER_KEY *master);
|
int sm9_sign_master_key_generate(SM9_SIGN_MASTER_KEY *master);
|
||||||
_gmssl_export int sm9_sign_master_key_extract_key(SM9_SIGN_MASTER_KEY *master, const char *id, size_t idlen, SM9_SIGN_KEY *key);
|
int sm9_sign_master_key_extract_key(SM9_SIGN_MASTER_KEY *master, const char *id, size_t idlen, SM9_SIGN_KEY *key);
|
||||||
|
|
||||||
// algorthm,parameters = sm9,sm9sign
|
// algorthm,parameters = sm9,sm9sign
|
||||||
#define SM9_SIGN_MASTER_KEY_MAX_SIZE 171
|
#define SM9_SIGN_MASTER_KEY_MAX_SIZE 171
|
||||||
int sm9_sign_master_key_to_der(const SM9_SIGN_MASTER_KEY *msk, uint8_t **out, size_t *outlen);
|
int sm9_sign_master_key_to_der(const SM9_SIGN_MASTER_KEY *msk, uint8_t **out, size_t *outlen);
|
||||||
int sm9_sign_master_key_from_der(SM9_SIGN_MASTER_KEY *msk, const uint8_t **in, size_t *inlen);
|
int sm9_sign_master_key_from_der(SM9_SIGN_MASTER_KEY *msk, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm9_sign_master_key_info_encrypt_to_der(const SM9_SIGN_MASTER_KEY *msk, const char *pass, uint8_t **out, size_t *outlen);
|
int sm9_sign_master_key_info_encrypt_to_der(const SM9_SIGN_MASTER_KEY *msk, const char *pass, uint8_t **out, size_t *outlen);
|
||||||
_gmssl_export int sm9_sign_master_key_info_decrypt_from_der(SM9_SIGN_MASTER_KEY *msk, const char *pass, const uint8_t **in, size_t *inlen);
|
int sm9_sign_master_key_info_decrypt_from_der(SM9_SIGN_MASTER_KEY *msk, const char *pass, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm9_sign_master_key_info_encrypt_to_pem(const SM9_SIGN_MASTER_KEY *msk, const char *pass, FILE *fp);
|
int sm9_sign_master_key_info_encrypt_to_pem(const SM9_SIGN_MASTER_KEY *msk, const char *pass, FILE *fp);
|
||||||
_gmssl_export int sm9_sign_master_key_info_decrypt_from_pem(SM9_SIGN_MASTER_KEY *msk, const char *pass, FILE *fp);
|
int sm9_sign_master_key_info_decrypt_from_pem(SM9_SIGN_MASTER_KEY *msk, const char *pass, FILE *fp);
|
||||||
_gmssl_export int sm9_sign_master_key_print(FILE *fp, int fmt, int ind, const char *label, const SM9_SIGN_MASTER_KEY *msk);
|
int sm9_sign_master_key_print(FILE *fp, int fmt, int ind, const char *label, const SM9_SIGN_MASTER_KEY *msk);
|
||||||
|
|
||||||
#define SM9_SIGN_MASTER_PUBLIC_KEY_SIZE 136
|
#define SM9_SIGN_MASTER_PUBLIC_KEY_SIZE 136
|
||||||
_gmssl_export int sm9_sign_master_public_key_to_der(const SM9_SIGN_MASTER_KEY *mpk, uint8_t **out, size_t *outlen);
|
int sm9_sign_master_public_key_to_der(const SM9_SIGN_MASTER_KEY *mpk, uint8_t **out, size_t *outlen);
|
||||||
_gmssl_export int sm9_sign_master_public_key_from_der(SM9_SIGN_MASTER_KEY *mpk, const uint8_t **in, size_t *inlen);
|
int sm9_sign_master_public_key_from_der(SM9_SIGN_MASTER_KEY *mpk, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm9_sign_master_public_key_to_pem(const SM9_SIGN_MASTER_KEY *mpk, FILE *fp);
|
int sm9_sign_master_public_key_to_pem(const SM9_SIGN_MASTER_KEY *mpk, FILE *fp);
|
||||||
_gmssl_export int sm9_sign_master_public_key_from_pem(SM9_SIGN_MASTER_KEY *mpk, FILE *fp);
|
int sm9_sign_master_public_key_from_pem(SM9_SIGN_MASTER_KEY *mpk, FILE *fp);
|
||||||
_gmssl_export int sm9_sign_master_public_key_print(FILE *fp, int fmt, int ind, const char *label, const SM9_SIGN_MASTER_KEY *mpk);
|
int sm9_sign_master_public_key_print(FILE *fp, int fmt, int ind, const char *label, const SM9_SIGN_MASTER_KEY *mpk);
|
||||||
|
|
||||||
// algorithm,parameters = sm9sign,<null>
|
// algorithm,parameters = sm9sign,<null>
|
||||||
#define SM9_SIGN_KEY_SIZE 204
|
#define SM9_SIGN_KEY_SIZE 204
|
||||||
int sm9_sign_key_to_der(const SM9_SIGN_KEY *key, uint8_t **out, size_t *outlen);
|
int sm9_sign_key_to_der(const SM9_SIGN_KEY *key, uint8_t **out, size_t *outlen);
|
||||||
int sm9_sign_key_from_der(SM9_SIGN_KEY *key, const uint8_t **in, size_t *inlen);
|
int sm9_sign_key_from_der(SM9_SIGN_KEY *key, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm9_sign_key_info_encrypt_to_der(const SM9_SIGN_KEY *key, const char *pass, uint8_t **out, size_t *outlen);
|
int sm9_sign_key_info_encrypt_to_der(const SM9_SIGN_KEY *key, const char *pass, uint8_t **out, size_t *outlen);
|
||||||
_gmssl_export int sm9_sign_key_info_decrypt_from_der(SM9_SIGN_KEY *key, const char *pass, const uint8_t **in, size_t *inlen);
|
int sm9_sign_key_info_decrypt_from_der(SM9_SIGN_KEY *key, const char *pass, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm9_sign_key_info_encrypt_to_pem(const SM9_SIGN_KEY *key, const char *pass, FILE *fp);
|
int sm9_sign_key_info_encrypt_to_pem(const SM9_SIGN_KEY *key, const char *pass, FILE *fp);
|
||||||
_gmssl_export int sm9_sign_key_info_decrypt_from_pem(SM9_SIGN_KEY *key, const char *pass, FILE *fp);
|
int sm9_sign_key_info_decrypt_from_pem(SM9_SIGN_KEY *key, const char *pass, FILE *fp);
|
||||||
_gmssl_export int sm9_sign_key_print(FILE *fp, int fmt, int ind, const char *label, const SM9_SIGN_KEY *key);
|
int sm9_sign_key_print(FILE *fp, int fmt, int ind, const char *label, const SM9_SIGN_KEY *key);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
from GM/T 0080-2020 SM9 Cryptographic Alagorithm Application Specification
|
from GM/T 0080-2020 SM9 Cryptographic Alagorithm Application Specification
|
||||||
@@ -122,18 +121,18 @@ int sm9_do_verify(const SM9_SIGN_MASTER_KEY *mpk, const char *id, size_t idlen,
|
|||||||
#define SM9_SIGNATURE_SIZE 104
|
#define SM9_SIGNATURE_SIZE 104
|
||||||
int sm9_signature_to_der(const SM9_SIGNATURE *sig, uint8_t **out, size_t *outlen);
|
int sm9_signature_to_der(const SM9_SIGNATURE *sig, uint8_t **out, size_t *outlen);
|
||||||
int sm9_signature_from_der(SM9_SIGNATURE *sig, const uint8_t **in, size_t *inlen);
|
int sm9_signature_from_der(SM9_SIGNATURE *sig, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm9_signature_print(FILE *fp, int fmt, int ind, const char *label, const uint8_t *sig, size_t siglen);
|
int sm9_signature_print(FILE *fp, int fmt, int ind, const char *label, const uint8_t *sig, size_t siglen);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
SM3_CTX sm3_ctx;
|
SM3_CTX sm3_ctx;
|
||||||
} SM9_SIGN_CTX;
|
} SM9_SIGN_CTX;
|
||||||
|
|
||||||
_gmssl_export int sm9_sign_init(SM9_SIGN_CTX *ctx);
|
int sm9_sign_init(SM9_SIGN_CTX *ctx);
|
||||||
_gmssl_export int sm9_sign_update(SM9_SIGN_CTX *ctx, const uint8_t *data, size_t datalen);
|
int sm9_sign_update(SM9_SIGN_CTX *ctx, const uint8_t *data, size_t datalen);
|
||||||
_gmssl_export int sm9_sign_finish(SM9_SIGN_CTX *ctx, const SM9_SIGN_KEY *key, uint8_t *sig, size_t *siglen);
|
int sm9_sign_finish(SM9_SIGN_CTX *ctx, const SM9_SIGN_KEY *key, uint8_t *sig, size_t *siglen);
|
||||||
_gmssl_export int sm9_verify_init(SM9_SIGN_CTX *ctx);
|
int sm9_verify_init(SM9_SIGN_CTX *ctx);
|
||||||
_gmssl_export int sm9_verify_update(SM9_SIGN_CTX *ctx, const uint8_t *data, size_t datalen);
|
int sm9_verify_update(SM9_SIGN_CTX *ctx, const uint8_t *data, size_t datalen);
|
||||||
_gmssl_export int sm9_verify_finish(SM9_SIGN_CTX *ctx, const uint8_t *sig, size_t siglen,
|
int sm9_verify_finish(SM9_SIGN_CTX *ctx, const uint8_t *sig, size_t siglen,
|
||||||
const SM9_SIGN_MASTER_KEY *mpk, const char *id, size_t idlen);
|
const SM9_SIGN_MASTER_KEY *mpk, const char *id, size_t idlen);
|
||||||
|
|
||||||
|
|
||||||
@@ -161,35 +160,35 @@ typedef struct {
|
|||||||
SM9_Z256_TWIST_POINT de;
|
SM9_Z256_TWIST_POINT de;
|
||||||
} SM9_ENC_KEY;
|
} SM9_ENC_KEY;
|
||||||
|
|
||||||
_gmssl_export int sm9_enc_master_key_generate(SM9_ENC_MASTER_KEY *master);
|
int sm9_enc_master_key_generate(SM9_ENC_MASTER_KEY *master);
|
||||||
_gmssl_export int sm9_enc_master_key_extract_key(SM9_ENC_MASTER_KEY *master, const char *id, size_t idlen, SM9_ENC_KEY *key);
|
int sm9_enc_master_key_extract_key(SM9_ENC_MASTER_KEY *master, const char *id, size_t idlen, SM9_ENC_KEY *key);
|
||||||
|
|
||||||
// algorithm,parameters = sm9,sm9encrypt
|
// algorithm,parameters = sm9,sm9encrypt
|
||||||
#define SM9_ENC_MASTER_KEY_MAX_SIZE 105
|
#define SM9_ENC_MASTER_KEY_MAX_SIZE 105
|
||||||
int sm9_enc_master_key_to_der(const SM9_ENC_MASTER_KEY *msk, uint8_t **out, size_t *outlen);
|
int sm9_enc_master_key_to_der(const SM9_ENC_MASTER_KEY *msk, uint8_t **out, size_t *outlen);
|
||||||
int sm9_enc_master_key_from_der(SM9_ENC_MASTER_KEY *msk, const uint8_t **in, size_t *inlen);
|
int sm9_enc_master_key_from_der(SM9_ENC_MASTER_KEY *msk, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm9_enc_master_key_info_encrypt_to_der(const SM9_ENC_MASTER_KEY *msk, const char *pass, uint8_t **out, size_t *outlen);
|
int sm9_enc_master_key_info_encrypt_to_der(const SM9_ENC_MASTER_KEY *msk, const char *pass, uint8_t **out, size_t *outlen);
|
||||||
_gmssl_export int sm9_enc_master_key_info_decrypt_from_der(SM9_ENC_MASTER_KEY *msk, const char *pass, const uint8_t **in, size_t *inlen);
|
int sm9_enc_master_key_info_decrypt_from_der(SM9_ENC_MASTER_KEY *msk, const char *pass, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm9_enc_master_key_info_encrypt_to_pem(const SM9_ENC_MASTER_KEY *msk, const char *pass, FILE *fp);
|
int sm9_enc_master_key_info_encrypt_to_pem(const SM9_ENC_MASTER_KEY *msk, const char *pass, FILE *fp);
|
||||||
_gmssl_export int sm9_enc_master_key_info_decrypt_from_pem(SM9_ENC_MASTER_KEY *msk, const char *pass, FILE *fp);
|
int sm9_enc_master_key_info_decrypt_from_pem(SM9_ENC_MASTER_KEY *msk, const char *pass, FILE *fp);
|
||||||
_gmssl_export int sm9_enc_master_key_print(FILE *fp, int fmt, int ind, const char *label, const SM9_ENC_MASTER_KEY *msk);
|
int sm9_enc_master_key_print(FILE *fp, int fmt, int ind, const char *label, const SM9_ENC_MASTER_KEY *msk);
|
||||||
|
|
||||||
#define SM9_ENC_MASTER_PUBLIC_KEY_SIZE 70
|
#define SM9_ENC_MASTER_PUBLIC_KEY_SIZE 70
|
||||||
_gmssl_export int sm9_enc_master_public_key_to_der(const SM9_ENC_MASTER_KEY *mpk, uint8_t **out, size_t *outlen);
|
int sm9_enc_master_public_key_to_der(const SM9_ENC_MASTER_KEY *mpk, uint8_t **out, size_t *outlen);
|
||||||
_gmssl_export int sm9_enc_master_public_key_from_der(SM9_ENC_MASTER_KEY *mpk, const uint8_t **in, size_t *inlen);
|
int sm9_enc_master_public_key_from_der(SM9_ENC_MASTER_KEY *mpk, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm9_enc_master_public_key_to_pem(const SM9_ENC_MASTER_KEY *mpk, FILE *fp);
|
int sm9_enc_master_public_key_to_pem(const SM9_ENC_MASTER_KEY *mpk, FILE *fp);
|
||||||
_gmssl_export int sm9_enc_master_public_key_from_pem(SM9_ENC_MASTER_KEY *mpk, FILE *fp);
|
int sm9_enc_master_public_key_from_pem(SM9_ENC_MASTER_KEY *mpk, FILE *fp);
|
||||||
_gmssl_export int sm9_enc_master_public_key_print(FILE *fp, int fmt, int ind, const char *label, const SM9_ENC_MASTER_KEY *mpk);
|
int sm9_enc_master_public_key_print(FILE *fp, int fmt, int ind, const char *label, const SM9_ENC_MASTER_KEY *mpk);
|
||||||
|
|
||||||
// algorithm,parameters = sm9encrypt,<null>
|
// algorithm,parameters = sm9encrypt,<null>
|
||||||
#define SM9_ENC_KEY_SIZE 204
|
#define SM9_ENC_KEY_SIZE 204
|
||||||
int sm9_enc_key_to_der(const SM9_ENC_KEY *key, uint8_t **out, size_t *outlen);
|
int sm9_enc_key_to_der(const SM9_ENC_KEY *key, uint8_t **out, size_t *outlen);
|
||||||
int sm9_enc_key_from_der(SM9_ENC_KEY *key, const uint8_t **in, size_t *inlen);
|
int sm9_enc_key_from_der(SM9_ENC_KEY *key, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm9_enc_key_info_encrypt_to_der(const SM9_ENC_KEY *key, const char *pass, uint8_t **out, size_t *outlen);
|
int sm9_enc_key_info_encrypt_to_der(const SM9_ENC_KEY *key, const char *pass, uint8_t **out, size_t *outlen);
|
||||||
_gmssl_export int sm9_enc_key_info_decrypt_from_der(SM9_ENC_KEY *key, const char *pass, const uint8_t **in, size_t *inlen);
|
int sm9_enc_key_info_decrypt_from_der(SM9_ENC_KEY *key, const char *pass, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm9_enc_key_info_encrypt_to_pem(const SM9_ENC_KEY *key, const char *pass, FILE *fp);
|
int sm9_enc_key_info_encrypt_to_pem(const SM9_ENC_KEY *key, const char *pass, FILE *fp);
|
||||||
_gmssl_export int sm9_enc_key_info_decrypt_from_pem(SM9_ENC_KEY *key, const char *pass, FILE *fp);
|
int sm9_enc_key_info_decrypt_from_pem(SM9_ENC_KEY *key, const char *pass, FILE *fp);
|
||||||
_gmssl_export int sm9_enc_key_print(FILE *fp, int fmt, int ind, const char *label, const SM9_ENC_KEY *key);
|
int sm9_enc_key_print(FILE *fp, int fmt, int ind, const char *label, const SM9_ENC_KEY *key);
|
||||||
|
|
||||||
#define SM9_MAX_PRIVATE_KEY_SIZE (SM9_SIGN_KEY_SIZE) // MAX(SIGN_MASTER_KEY, SIGN_KEY, ENC_MASTER_KEY, ENC_KEY)
|
#define SM9_MAX_PRIVATE_KEY_SIZE (SM9_SIGN_KEY_SIZE) // MAX(SIGN_MASTER_KEY, SIGN_KEY, ENC_MASTER_KEY, ENC_KEY)
|
||||||
#define SM9_MAX_PRIVATE_KEY_INFO_SIZE 512
|
#define SM9_MAX_PRIVATE_KEY_INFO_SIZE 512
|
||||||
@@ -217,10 +216,10 @@ int sm9_ciphertext_to_der(const SM9_Z256_POINT *C1, const uint8_t *c2, size_t c2
|
|||||||
const uint8_t c3[SM3_HMAC_SIZE], uint8_t **out, size_t *outlen);
|
const uint8_t c3[SM3_HMAC_SIZE], uint8_t **out, size_t *outlen);
|
||||||
int sm9_ciphertext_from_der(SM9_Z256_POINT *C1, const uint8_t **c2, size_t *c2len,
|
int sm9_ciphertext_from_der(SM9_Z256_POINT *C1, const uint8_t **c2, size_t *c2len,
|
||||||
const uint8_t **c3, const uint8_t **in, size_t *inlen);
|
const uint8_t **c3, const uint8_t **in, size_t *inlen);
|
||||||
_gmssl_export int sm9_ciphertext_print(FILE *fp, int fmt, int ind, const char *label, const uint8_t *a, size_t alen);
|
int sm9_ciphertext_print(FILE *fp, int fmt, int ind, const char *label, const uint8_t *a, size_t alen);
|
||||||
_gmssl_export int sm9_encrypt(const SM9_ENC_MASTER_KEY *mpk, const char *id, size_t idlen,
|
int sm9_encrypt(const SM9_ENC_MASTER_KEY *mpk, const char *id, size_t idlen,
|
||||||
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int sm9_decrypt(const SM9_ENC_KEY *key, const char *id, size_t idlen,
|
int sm9_decrypt(const SM9_ENC_KEY *key, const char *id, size_t idlen,
|
||||||
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,6 @@
|
|||||||
#ifndef GMSSL_VERSION_H
|
#ifndef GMSSL_VERSION_H
|
||||||
#define GMSSL_VERSION_H
|
#define GMSSL_VERSION_H
|
||||||
|
|
||||||
#include <gmssl/api.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
@@ -23,8 +21,8 @@ extern "C" {
|
|||||||
#define GMSSL_VERSION_NUM 30102
|
#define GMSSL_VERSION_NUM 30102
|
||||||
#define GMSSL_VERSION_STR "GmSSL 3.1.2 Dev"
|
#define GMSSL_VERSION_STR "GmSSL 3.1.2 Dev"
|
||||||
|
|
||||||
_gmssl_export int gmssl_version_num(void);
|
int gmssl_version_num(void);
|
||||||
_gmssl_export const char *gmssl_version_str(void);
|
const char *gmssl_version_str(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,11 +11,8 @@
|
|||||||
#ifndef GMSSL_ZUC_H
|
#ifndef GMSSL_ZUC_H
|
||||||
#define GMSSL_ZUC_H
|
#define GMSSL_ZUC_H
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <gmssl/api.h>
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -106,9 +103,9 @@ typedef struct {
|
|||||||
size_t block_nbytes;
|
size_t block_nbytes;
|
||||||
} ZUC_CTX;
|
} ZUC_CTX;
|
||||||
|
|
||||||
_gmssl_export int zuc_encrypt_init(ZUC_CTX *ctx, const uint8_t key[ZUC_KEY_SIZE], const uint8_t iv[ZUC_IV_SIZE]);
|
int zuc_encrypt_init(ZUC_CTX *ctx, const uint8_t key[ZUC_KEY_SIZE], const uint8_t iv[ZUC_IV_SIZE]);
|
||||||
_gmssl_export int zuc_encrypt_update(ZUC_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
int zuc_encrypt_update(ZUC_CTX *ctx, const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen);
|
||||||
_gmssl_export int zuc_encrypt_finish(ZUC_CTX *ctx, uint8_t *out, size_t *outlen);
|
int zuc_encrypt_finish(ZUC_CTX *ctx, uint8_t *out, size_t *outlen);
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
Reference in New Issue
Block a user