mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-05-07 00:46:17 +08:00
update sm2
This commit is contained in:
@@ -322,74 +322,3 @@ void EC_KEY_METHOD_get_verify(EC_KEY_METHOD *meth,
|
||||
*pverify_sig = meth->verify_sig;
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_SM2
|
||||
void EC_KEY_METHOD_set_encrypt(EC_KEY_METHOD *meth,
|
||||
int (*encrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
ECIES_CIPHERTEXT_VALUE *(*do_encrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
EC_KEY *ec_key))
|
||||
{
|
||||
meth->encrypt = encrypt;
|
||||
meth->do_encrypt = do_encrypt;
|
||||
}
|
||||
|
||||
void EC_KEY_METHOD_get_decrypt(EC_KEY_METHOD *meth,
|
||||
int (*decrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
int (do_decrypt)(int type,
|
||||
const ECIES_CIPHERTEXT_VALUE *in,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key))
|
||||
{
|
||||
meth->decrypt = decrypt;
|
||||
meth->do_decrypt = do_decrypt;
|
||||
}
|
||||
|
||||
void EC_KEY_METHOD_get_encrypt(EC_KEY_METHOD *meth,
|
||||
int (**pencrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
ECIES_CIPHERTEXT_VALUE *(**pdo_encrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
EC_KEY *ec_key))
|
||||
{
|
||||
if (pencrypt != NULL)
|
||||
*pencrypt = meth->encrypt;
|
||||
if (pdo_encrypt != NULL)
|
||||
*pdo_encrypt = meth->do_encrypt;
|
||||
}
|
||||
|
||||
void EC_KEY_METHOD_get_decrypt(EC_KEY_METHOD *meth,
|
||||
int (**pdecrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
int (*pdo_decrypt)(int type,
|
||||
const ECIES_CIPHERTEXT_VALUE *in,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key))
|
||||
{
|
||||
if (pdecrypt != NULL)
|
||||
*pdecrypt = meth->decrypt;
|
||||
if (pdo_decrypt != NULL)
|
||||
*pdo_decrypt = meth->do_decrypt;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -53,9 +53,13 @@
|
||||
#include <openssl/sm2.h>
|
||||
#include <openssl/ecies.h>
|
||||
#include "../ec/ec_lcl.h"
|
||||
#include "sm2_lcl.h"
|
||||
|
||||
#define SM2_KMETH_FLAGS 0
|
||||
|
||||
|
||||
extern EC_KEY_METHOD *default_ec_key_meth;
|
||||
|
||||
int SM2_ENC_PARAMS_set_type(SM2_ENC_PARAMS *params, int type)
|
||||
{
|
||||
// FIXME:
|
||||
@@ -169,7 +173,7 @@ end:
|
||||
|
||||
static const EC_KEY_METHOD gmssl_ec_key_method = {
|
||||
"GmSSL EC_KEY method",
|
||||
0,
|
||||
EC_KEY_METHOD_SM2,
|
||||
0,0,0,0,0,0,
|
||||
ossl_ec_key_gen,
|
||||
sm2_compute_key,
|
||||
@@ -186,6 +190,102 @@ static const EC_KEY_METHOD gmssl_ec_key_method = {
|
||||
|
||||
const EC_KEY_METHOD *EC_KEY_GmSSL(void)
|
||||
{
|
||||
return &gmssl_ec_key_method;
|
||||
return &gmssl_ec_key_method;
|
||||
}
|
||||
|
||||
const EC_KEY_METHOD *EC_KEY_get_default_secg_method(void)
|
||||
{
|
||||
return EC_KEY_OpenSSL();
|
||||
}
|
||||
|
||||
const EC_KEY_METHOD *EC_KEY_get_default_sm_method(void)
|
||||
{
|
||||
return EC_KEY_GmSSL();
|
||||
}
|
||||
|
||||
void EC_KEY_set_default_secg_method(const EC_KEY_METHOD *meth)
|
||||
{
|
||||
if (meth == NULL)
|
||||
default_ec_key_meth = EC_KEY_OpenSSL();
|
||||
else
|
||||
default_ec_key_meth = meth;
|
||||
|
||||
}
|
||||
|
||||
void EC_KEY_set_default_sm_method(const EC_KEY_METHOD *meth)
|
||||
{
|
||||
if (meth == NULL)
|
||||
default_ec_key_meth = EC_KEY_GmSSL();
|
||||
else
|
||||
default_ec_key_meth = meth;
|
||||
}
|
||||
|
||||
void EC_KEY_METHOD_set_encrypt(EC_KEY_METHOD *meth,
|
||||
int (*encrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
ECIES_CIPHERTEXT_VALUE *(*do_encrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
EC_KEY *ec_key))
|
||||
{
|
||||
meth->encrypt = encrypt;
|
||||
meth->do_encrypt = do_encrypt;
|
||||
}
|
||||
|
||||
void EC_KEY_METHOD_set_decrypt(EC_KEY_METHOD *meth,
|
||||
int (*decrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
int (do_decrypt)(int type,
|
||||
const ECIES_CIPHERTEXT_VALUE *in,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key))
|
||||
{
|
||||
meth->decrypt = decrypt;
|
||||
meth->do_decrypt = do_decrypt;
|
||||
}
|
||||
|
||||
void EC_KEY_METHOD_get_encrypt(EC_KEY_METHOD *meth,
|
||||
int (**pencrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
ECIES_CIPHERTEXT_VALUE *(**pdo_encrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
EC_KEY *ec_key))
|
||||
{
|
||||
if (pencrypt != NULL)
|
||||
*pencrypt = meth->encrypt;
|
||||
if (pdo_encrypt != NULL)
|
||||
*pdo_encrypt = meth->do_encrypt;
|
||||
}
|
||||
|
||||
void EC_KEY_METHOD_get_decrypt(EC_KEY_METHOD *meth,
|
||||
int (**pdecrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
int (**pdo_decrypt)(int type,
|
||||
const ECIES_CIPHERTEXT_VALUE *in,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key))
|
||||
{
|
||||
if (pdecrypt != NULL)
|
||||
*pdecrypt = meth->decrypt;
|
||||
if (pdo_decrypt != NULL)
|
||||
*pdo_decrypt = meth->do_decrypt;
|
||||
}
|
||||
|
||||
5
crypto/sm2/sm2_lcl.h
Normal file
5
crypto/sm2/sm2_lcl.h
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
|
||||
#define EC_KEY_METHOD_SM2 0x02
|
||||
|
||||
|
||||
@@ -1272,58 +1272,6 @@ void EC_KEY_METHOD_get_verify(EC_KEY_METHOD *meth,
|
||||
const ECDSA_SIG *sig,
|
||||
EC_KEY *eckey));
|
||||
|
||||
# ifndef OPENSSL_NO_SM2
|
||||
void EC_KEY_METHOD_set_encrypt(EC_KEY_METHOD *meth,
|
||||
int (*encrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
ECIES_CIPHERTEXT_VALUE *(*do_encrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
EC_KEY *ec_key));
|
||||
|
||||
void EC_KEY_METHOD_get_decrypt(EC_KEY_METHOD *meth,
|
||||
int (*decrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
int (do_decrypt)(int type,
|
||||
const ECIES_CIPHERTEXT_VALUE *in,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key));
|
||||
|
||||
void EC_KEY_METHOD_get_encrypt(EC_KEY_METHOD *meth,
|
||||
int (**pencrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
ECIES_CIPHERTEXT_VALUE *(**pdo_encrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
EC_KEY *ec_key));
|
||||
|
||||
void EC_KEY_METHOD_get_decrypt(EC_KEY_METHOD *meth,
|
||||
int (**pdecrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
int (*pdo_decrypt)(int type,
|
||||
const ECIES_CIPHERTEXT_VALUE *in,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key));
|
||||
# endif
|
||||
|
||||
# define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x)
|
||||
|
||||
# ifndef __cplusplus
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
#include <openssl/kdf2.h>
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/asn1.h>
|
||||
#include <openssl/ecdsa.h>
|
||||
#include <openssl/ecies.h>
|
||||
#include <openssl/sm3.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -220,6 +220,63 @@ int SM2_KAP_final_check(SM2_KAP_CTX *ctx, const unsigned char *checksum,
|
||||
void SM2_KAP_CTX_cleanup(SM2_KAP_CTX *ctx);
|
||||
|
||||
|
||||
const EC_KEY_METHOD *EC_KEY_GmSSL(void);
|
||||
const EC_KEY_METHOD *EC_KEY_get_default_secg_method(void);
|
||||
const EC_KEY_METHOD *EC_KEY_get_default_sm_method(void);
|
||||
void EC_KEY_set_default_secg_method(const EC_KEY_METHOD *meth);
|
||||
void EC_KEY_set_default_sm_method(const EC_KEY_METHOD *meth);
|
||||
|
||||
|
||||
void EC_KEY_METHOD_set_encrypt(EC_KEY_METHOD *meth,
|
||||
int (*encrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
ECIES_CIPHERTEXT_VALUE *(*do_encrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
EC_KEY *ec_key));
|
||||
|
||||
void EC_KEY_METHOD_set_decrypt(EC_KEY_METHOD *meth,
|
||||
int (*decrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
int (do_decrypt)(int type,
|
||||
const ECIES_CIPHERTEXT_VALUE *in,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key));
|
||||
|
||||
void EC_KEY_METHOD_get_encrypt(EC_KEY_METHOD *meth,
|
||||
int (**pencrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
ECIES_CIPHERTEXT_VALUE *(**pdo_encrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
EC_KEY *ec_key));
|
||||
|
||||
void EC_KEY_METHOD_get_decrypt(EC_KEY_METHOD *meth,
|
||||
int (**pdecrypt)(int type,
|
||||
const unsigned char *in,
|
||||
size_t inlen,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key),
|
||||
int (**pdo_decrypt)(int type,
|
||||
const ECIES_CIPHERTEXT_VALUE *in,
|
||||
unsigned char *out,
|
||||
size_t *outlen,
|
||||
EC_KEY *ec_key));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user