add SM2 default ID, fixed the SM2_do_encrypt() memory leak

This commit is contained in:
Zhi Guan
2016-04-10 01:42:54 +02:00
parent 70118dbcae
commit 37ac6cd45a
7 changed files with 10 additions and 98 deletions

View File

@@ -56,6 +56,7 @@
#include <openssl/ec.h>
#include <openssl/err.h>
#include <openssl/evp.h>
#include <openssl/kdf.h>
#include <openssl/x509.h>
#include <openssl/asn1.h>
#include <openssl/ecdsa.h>

View File

@@ -417,6 +417,7 @@ end:
cv = NULL;
}
if (point) EC_POINT_free(point);
if (n) BN_free(n);
if (h) BN_free(h);
if (k) BN_free(k);

View File

@@ -65,6 +65,8 @@
#define EC_MAX_NBYTES ((OPENSSL_ECC_MAX_FIELD_BITS + 7)/8)
#define SM2_DEFAULT_ID "1234567812345678"
static void *sm2_data_dup(void *data) {
return OPENSSL_strdup((const char *)data);
}
@@ -184,6 +186,7 @@ err:
return ret;
}
//TODO: review this function again.
int SM2_compute_id_digest(unsigned char *dgst, unsigned int *dgstlen,
const EVP_MD *md, EC_KEY *ec_key)
{
@@ -199,7 +202,7 @@ int SM2_compute_id_digest(unsigned char *dgst, unsigned int *dgstlen,
}
if (!(id = SM2_get_id(ec_key))) {
goto err;
id = SM2_DEFAULT_ID;
}
idbits = strlen(id) * 8;