432 lines
12 KiB
Diff
432 lines
12 KiB
Diff
From a0f9f17748a12f86385a39100177da5c6b7c1619 Mon Sep 17 00:00:00 2001
|
|
From: Zhiqi Song <songzhiqi1@huawei.com>
|
|
Date: Thu, 15 Jun 2023 19:31:57 +0800
|
|
Subject: [PATCH 14/48] uadk_engine: fixup signed-unsigned mix with relational
|
|
|
|
Fixup the following variable type issues:
|
|
1. Perform type conversion, using the same type in expressions.
|
|
2. Fixup subscript may be negative and signed-unsigned mix with
|
|
relational problems.
|
|
|
|
Signed-off-by: Zhiqi Song <songzhiqi1@huawei.com>
|
|
---
|
|
src/uadk_cipher.c | 19 ++++++++++---------
|
|
src/uadk_dh.c | 38 +++++++++++++++++++++++---------------
|
|
src/uadk_digest.c | 11 +++++++----
|
|
src/uadk_ec.c | 2 +-
|
|
src/uadk_ecx.c | 18 +++++++++---------
|
|
src/uadk_pkey.c | 13 ++++++++-----
|
|
src/uadk_rsa.c | 3 ++-
|
|
src/uadk_utils.h | 1 -
|
|
8 files changed, 60 insertions(+), 45 deletions(-)
|
|
|
|
diff --git a/src/uadk_cipher.c b/src/uadk_cipher.c
|
|
index 940c26c..05223ae 100644
|
|
--- a/src/uadk_cipher.c
|
|
+++ b/src/uadk_cipher.c
|
|
@@ -203,8 +203,8 @@ static struct cipher_info cipher_info_table[] = {
|
|
|
|
static const EVP_CIPHER *sec_ciphers_get_cipher_sw_impl(int n_id)
|
|
{
|
|
- int sec_cipher_sw_table_size = ARRAY_SIZE(sec_ciphers_sw_table);
|
|
- int i;
|
|
+ __u32 sec_cipher_sw_table_size = ARRAY_SIZE(sec_ciphers_sw_table);
|
|
+ __u32 i;
|
|
|
|
for (i = 0; i < sec_cipher_sw_table_size; i++) {
|
|
if (n_id == sec_ciphers_sw_table[i].nid)
|
|
@@ -348,10 +348,9 @@ static int uadk_get_accel_platform(char *alg_name)
|
|
static int uadk_e_engine_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
|
|
const int **nids, int nid)
|
|
{
|
|
- int ret = 1;
|
|
int *cipher_nids;
|
|
- int size;
|
|
- int i;
|
|
+ __u32 size, i;
|
|
+ int ret = 1;
|
|
|
|
if (platform == HW_V2) {
|
|
size = (sizeof(cipher_hw_v2_nids) - 1) / sizeof(int);
|
|
@@ -665,8 +664,9 @@ static int uadk_e_cipher_init(EVP_CIPHER_CTX *ctx, const unsigned char *key,
|
|
{
|
|
struct cipher_priv_ctx *priv =
|
|
(struct cipher_priv_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx);
|
|
- int cipher_counts = ARRAY_SIZE(cipher_info_table);
|
|
- int nid, ret, i;
|
|
+ __u32 cipher_counts = ARRAY_SIZE(cipher_info_table);
|
|
+ int nid, ret;
|
|
+ __u32 i;
|
|
|
|
if (unlikely(!key)) {
|
|
fprintf(stderr, "ctx init parameter key is NULL.\n");
|
|
@@ -762,7 +762,7 @@ static void uadk_cipher_update_priv_ctx(struct cipher_priv_ctx *priv)
|
|
__u16 iv_bytes = priv->req.iv_bytes;
|
|
int offset = priv->req.in_bytes - iv_bytes;
|
|
unsigned char K[IV_LEN] = {0};
|
|
- int i;
|
|
+ __u32 i;
|
|
|
|
switch (priv->setup.mode) {
|
|
case WD_CIPHER_CFB:
|
|
@@ -1150,7 +1150,8 @@ static void destroy_v3_cipher(void)
|
|
|
|
void uadk_e_destroy_cipher(void)
|
|
{
|
|
- int i, ret;
|
|
+ __u32 i;
|
|
+ int ret;
|
|
|
|
if (engine.pid == getpid()) {
|
|
ret = uadk_e_is_env_enabled("cipher");
|
|
diff --git a/src/uadk_dh.c b/src/uadk_dh.c
|
|
index 89157d2..c5ef813 100644
|
|
--- a/src/uadk_dh.c
|
|
+++ b/src/uadk_dh.c
|
|
@@ -67,7 +67,7 @@ struct uadk_dh_sess {
|
|
struct wd_dh_sess_setup setup;
|
|
struct wd_dh_req req;
|
|
DH *alg;
|
|
- uint32_t key_size;
|
|
+ __u16 key_size;
|
|
};
|
|
|
|
struct dh_res {
|
|
@@ -316,7 +316,7 @@ static int uadk_e_wd_dh_init(struct dh_res_config *config, struct uacce_dev *dev
|
|
struct wd_sched *sched = &config->sched.wd_sched;
|
|
struct wd_ctx_config *ctx_cfg;
|
|
int ret = 0;
|
|
- int i;
|
|
+ __u32 i;
|
|
|
|
ret = uadk_e_is_env_enabled("dh");
|
|
if (ret == ENV_ENABLED)
|
|
@@ -406,7 +406,8 @@ err_unlock:
|
|
static void uadk_e_wd_dh_uninit(void)
|
|
{
|
|
struct wd_ctx_config *ctx_cfg = g_dh_res.ctx_res;
|
|
- int i, ret;
|
|
+ __u32 i;
|
|
+ int ret;
|
|
|
|
if (g_dh_res.pid == getpid()) {
|
|
ret = uadk_e_is_env_enabled("dh");
|
|
@@ -440,9 +441,9 @@ static struct uadk_dh_sess *dh_new_eng_session(DH *dh_alg)
|
|
}
|
|
|
|
static int dh_init_eng_session(struct uadk_dh_sess *dh_sess,
|
|
- int bits, bool is_g2)
|
|
+ __u16 bits, bool is_g2)
|
|
{
|
|
- uint32_t key_size = (uint32_t)bits >> CHAR_BIT_SIZE;
|
|
+ __u16 key_size = bits >> CHAR_BIT_SIZE;
|
|
struct sched_params params = {0};
|
|
|
|
if (dh_sess->sess && dh_sess->req.x_p) {
|
|
@@ -453,7 +454,7 @@ static int dh_init_eng_session(struct uadk_dh_sess *dh_sess,
|
|
|
|
if (!dh_sess->sess) {
|
|
dh_sess->key_size = key_size;
|
|
- dh_sess->setup.key_bits = dh_sess->key_size << CHAR_BIT_SIZE;
|
|
+ dh_sess->setup.key_bits = bits;
|
|
dh_sess->setup.is_g2 = is_g2;
|
|
params.numa_id = g_dh_res.numa_id;
|
|
dh_sess->setup.sched_param = ¶ms;
|
|
@@ -482,7 +483,7 @@ static void dh_free_eng_session(struct uadk_dh_sess *dh_sess)
|
|
OPENSSL_free(dh_sess);
|
|
}
|
|
|
|
-static struct uadk_dh_sess *dh_get_eng_session(DH *dh, int bits,
|
|
+static struct uadk_dh_sess *dh_get_eng_session(DH *dh, __u16 bits,
|
|
bool is_g2)
|
|
{
|
|
struct uadk_dh_sess *dh_sess = dh_new_eng_session(dh);
|
|
@@ -500,9 +501,10 @@ static struct uadk_dh_sess *dh_get_eng_session(DH *dh, int bits,
|
|
return dh_sess;
|
|
}
|
|
|
|
-static int check_dh_bit_useful(const int bits)
|
|
+static int check_dh_bit_useful(const __u16 bits)
|
|
{
|
|
- /* Check whether bits exceeds the limit.
|
|
+ /*
|
|
+ * Check whether bits exceeds the limit.
|
|
* The max module bits of openssl soft alg is
|
|
* OPENSSL_DH_MAX_MODULUS_BITS, 10000 bits.
|
|
* OpenSSL speed tool supports 2048/3072/4096/6144/8192 bits.
|
|
@@ -524,7 +526,7 @@ static int check_dh_bit_useful(const int bits)
|
|
return UADK_E_FAIL;
|
|
}
|
|
|
|
-static int dh_prepare_data(const int bits, const BIGNUM *g, DH *dh,
|
|
+static int dh_prepare_data(const __u16 bits, const BIGNUM *g, DH *dh,
|
|
struct uadk_dh_sess **dh_sess,
|
|
BIGNUM **priv_key)
|
|
{
|
|
@@ -552,7 +554,7 @@ static int dh_prepare_data(const int bits, const BIGNUM *g, DH *dh,
|
|
return ret;
|
|
}
|
|
|
|
-static int dh_set_g(const BIGNUM *g, const int key_size,
|
|
+static int dh_set_g(const BIGNUM *g, const __u16 key_size,
|
|
unsigned char *ag_bin, struct uadk_dh_sess *dh_sess)
|
|
{
|
|
struct wd_dtb g_dtb;
|
|
@@ -592,7 +594,7 @@ static int dh_fill_genkey_req(const BIGNUM *g, const BIGNUM *p,
|
|
const BIGNUM *priv_key,
|
|
struct uadk_dh_sess *dh_sess)
|
|
{
|
|
- int key_size = dh_sess->key_size;
|
|
+ __u16 key_size = dh_sess->key_size;
|
|
unsigned char *apriv_key_bin;
|
|
unsigned char *ag_bin;
|
|
unsigned char *ap_bin;
|
|
@@ -642,7 +644,7 @@ static int dh_fill_compkey_req(const BIGNUM *g, const BIGNUM *p,
|
|
const BIGNUM *priv_key, const BIGNUM *pub_key,
|
|
struct uadk_dh_sess *dh_sess)
|
|
{
|
|
- int key_size = dh_sess->key_size;
|
|
+ __u16 key_size = dh_sess->key_size;
|
|
unsigned char *apriv_key_bin;
|
|
unsigned char *ap_bin;
|
|
unsigned char *ag_bin;
|
|
@@ -759,10 +761,10 @@ static int uadk_e_dh_generate_key(DH *dh)
|
|
struct uadk_dh_sess *dh_sess = NULL;
|
|
BIGNUM *priv_key = NULL;
|
|
BIGNUM *pub_key = NULL;
|
|
- int bits = DH_bits(dh);
|
|
const BIGNUM *p = NULL;
|
|
const BIGNUM *g = NULL;
|
|
const BIGNUM *q = NULL;
|
|
+ __u16 bits;
|
|
int ret;
|
|
|
|
if (!dh)
|
|
@@ -776,6 +778,12 @@ static int uadk_e_dh_generate_key(DH *dh)
|
|
if (!p || !g || q)
|
|
goto exe_soft;
|
|
|
|
+ /*
|
|
+ * The max module bits of DH is
|
|
+ * OPENSSL_DH_MAX_MODULUS_BITS, 10000 bits.
|
|
+ */
|
|
+ bits = (__u16)DH_bits(dh);
|
|
+
|
|
/* Get session and prepare private key */
|
|
ret = dh_prepare_data(bits, g, dh, &dh_sess, &priv_key);
|
|
if (!ret) {
|
|
@@ -819,8 +827,8 @@ static int uadk_e_dh_compute_key(unsigned char *key, const BIGNUM *pub_key,
|
|
DH *dh)
|
|
{
|
|
struct uadk_dh_sess *dh_sess = NULL;
|
|
+ __u16 bits = (__u16)DH_bits(dh);
|
|
BIGNUM *priv_key = NULL;
|
|
- int bits = DH_bits(dh);
|
|
const BIGNUM *p = NULL;
|
|
const BIGNUM *g = NULL;
|
|
const BIGNUM *q = NULL;
|
|
diff --git a/src/uadk_digest.c b/src/uadk_digest.c
|
|
index b7718e6..94b2636 100644
|
|
--- a/src/uadk_digest.c
|
|
+++ b/src/uadk_digest.c
|
|
@@ -418,7 +418,8 @@ static int uadk_e_wd_digest_env_init(struct uacce_dev *dev)
|
|
|
|
static int uadk_e_wd_digest_init(struct uacce_dev *dev)
|
|
{
|
|
- int ret, i, j;
|
|
+ __u32 i, j;
|
|
+ int ret;
|
|
|
|
engine.numa_id = dev->numa_id;
|
|
|
|
@@ -527,10 +528,11 @@ static int uadk_e_digest_init(EVP_MD_CTX *ctx)
|
|
{
|
|
struct digest_priv_ctx *priv =
|
|
(struct digest_priv_ctx *) EVP_MD_CTX_md_data(ctx);
|
|
- int digest_counts = ARRAY_SIZE(digest_info_table);
|
|
+ __u32 digest_counts = ARRAY_SIZE(digest_info_table);
|
|
int nid = EVP_MD_nid(EVP_MD_CTX_md(ctx));
|
|
struct sched_params params = {0};
|
|
- int ret, i;
|
|
+ __u32 i;
|
|
+ int ret;
|
|
|
|
priv->e_nid = nid;
|
|
|
|
@@ -911,7 +913,8 @@ int uadk_e_bind_digest(ENGINE *e)
|
|
|
|
void uadk_e_destroy_digest(void)
|
|
{
|
|
- int i, ret;
|
|
+ __u32 i;
|
|
+ int ret;
|
|
|
|
if (engine.pid == getpid()) {
|
|
ret = uadk_e_is_env_enabled("digest");
|
|
diff --git a/src/uadk_ec.c b/src/uadk_ec.c
|
|
index 69ad4e8..d7ad815 100644
|
|
--- a/src/uadk_ec.c
|
|
+++ b/src/uadk_ec.c
|
|
@@ -74,7 +74,7 @@ static void init_dtb_param(void *dtb, char *start,
|
|
{
|
|
struct wd_dtb *tmp = dtb;
|
|
char *buff = start;
|
|
- int i = 0;
|
|
+ __u32 i = 0;
|
|
|
|
while (i++ < num) {
|
|
tmp->data = buff;
|
|
diff --git a/src/uadk_ecx.c b/src/uadk_ecx.c
|
|
index 0537890..e45fa5e 100644
|
|
--- a/src/uadk_ecx.c
|
|
+++ b/src/uadk_ecx.c
|
|
@@ -42,13 +42,13 @@ struct ecx_key {
|
|
|
|
struct ecx_ctx {
|
|
handle_t sess;
|
|
- int key_size;
|
|
+ __u32 key_size;
|
|
int nid;
|
|
};
|
|
|
|
-static int reverse_bytes(unsigned char *to_buf, unsigned int size)
|
|
+static int reverse_bytes(unsigned char *to_buf, __u32 size)
|
|
{
|
|
- unsigned char *tmp_buf = to_buf + size - 1;
|
|
+ unsigned char *tmp_buf;
|
|
unsigned char tmp;
|
|
|
|
if (!size) {
|
|
@@ -61,6 +61,7 @@ static int reverse_bytes(unsigned char *to_buf, unsigned int size)
|
|
return UADK_E_FAIL;
|
|
}
|
|
|
|
+ tmp_buf = to_buf + size - 1;
|
|
while (to_buf < tmp_buf) {
|
|
tmp = *tmp_buf;
|
|
*tmp_buf-- = *to_buf;
|
|
@@ -234,7 +235,7 @@ static int ecx_get_nid(EVP_PKEY_CTX *ctx)
|
|
return nid;
|
|
}
|
|
|
|
-static int ecx_create_privkey(struct ecx_key **ecx_key, int key_size)
|
|
+static int ecx_create_privkey(struct ecx_key **ecx_key, __u32 key_size)
|
|
{
|
|
unsigned char *privkey;
|
|
int ret;
|
|
@@ -293,12 +294,12 @@ static int ecx_keygen_set_private_key(struct ecx_ctx *ecx_ctx,
|
|
static int ecx_keygen_set_pkey(EVP_PKEY *pkey, struct ecx_ctx *ecx_ctx,
|
|
struct wd_ecc_req *req, struct ecx_key *ecx_key)
|
|
{
|
|
+ __u32 key_size = ecx_ctx->key_size;
|
|
struct wd_ecc_point *pubkey = NULL;
|
|
- int key_size = ecx_ctx->key_size;
|
|
int ret;
|
|
|
|
if (key_size > ECX_MAX_KEYLEN) {
|
|
- fprintf(stderr, "invalid key size, key_size = %d\n", key_size);
|
|
+ fprintf(stderr, "invalid key size, key_size = %u\n", key_size);
|
|
return UADK_E_FAIL;
|
|
}
|
|
|
|
@@ -308,8 +309,7 @@ static int ecx_keygen_set_pkey(EVP_PKEY *pkey, struct ecx_ctx *ecx_ctx,
|
|
return UADK_E_FAIL;
|
|
}
|
|
|
|
- memcpy(ecx_key->pubkey, (const unsigned char *)pubkey->x.data,
|
|
- key_size);
|
|
+ memcpy(ecx_key->pubkey, (const unsigned char *)pubkey->x.data, key_size);
|
|
/* Trans public key from big-endian to little-endian */
|
|
ret = reverse_bytes(ecx_key->pubkey, key_size);
|
|
if (!ret) {
|
|
@@ -507,7 +507,7 @@ static int ecx_compkey_init_iot(struct ecx_ctx *ecx_ctx, struct wd_ecc_req *req,
|
|
struct ecx_key *peer_ecx_key,
|
|
struct ecx_key *ecx_key)
|
|
{
|
|
- int key_size = ecx_ctx->key_size;
|
|
+ __u32 key_size = ecx_ctx->key_size;
|
|
char buf_y[ECX_MAX_KEYLEN] = {0};
|
|
handle_t sess = ecx_ctx->sess;
|
|
struct wd_ecc_point in_pubkey;
|
|
diff --git a/src/uadk_pkey.c b/src/uadk_pkey.c
|
|
index ba33b7d..b24c196 100644
|
|
--- a/src/uadk_pkey.c
|
|
+++ b/src/uadk_pkey.c
|
|
@@ -197,7 +197,8 @@ static int uadk_e_wd_ecc_general_init(struct uacce_dev *dev,
|
|
struct wd_sched *sched)
|
|
{
|
|
struct wd_ctx_config *ctx_cfg;
|
|
- int ret, i;
|
|
+ __u32 i;
|
|
+ int ret;
|
|
|
|
ctx_cfg = calloc(1, sizeof(struct wd_ctx_config));
|
|
if (!ctx_cfg)
|
|
@@ -258,7 +259,8 @@ static int uadk_wd_ecc_init(struct ecc_res_config *config, struct uacce_dev *dev
|
|
static void uadk_wd_ecc_uninit(void)
|
|
{
|
|
struct wd_ctx_config *ctx_cfg = ecc_res.ctx_res;
|
|
- int i, ret;
|
|
+ __u32 i;
|
|
+ int ret;
|
|
|
|
if (ecc_res.pid != getpid())
|
|
return;
|
|
@@ -328,7 +330,7 @@ err:
|
|
|
|
bool uadk_is_all_zero(const unsigned char *data, size_t dlen)
|
|
{
|
|
- int i;
|
|
+ size_t i;
|
|
|
|
for (i = 0; i < dlen; i++) {
|
|
if (data[i])
|
|
@@ -559,7 +561,7 @@ const EVP_PKEY_METHOD *get_openssl_pkey_meth(int nid)
|
|
size_t count = EVP_PKEY_meth_get_count();
|
|
const EVP_PKEY_METHOD *pmeth;
|
|
int pkey_id = -1;
|
|
- int i;
|
|
+ size_t i;
|
|
|
|
for (i = 0; i < count; i++) {
|
|
pmeth = EVP_PKEY_meth_get0(i);
|
|
@@ -636,7 +638,8 @@ void uadk_e_ecc_lock_init(void)
|
|
int uadk_e_bind_ecc(ENGINE *e)
|
|
{
|
|
static const char * const ecc_alg[] = {"sm2", "ecdsa", "ecdh", "x25519", "x448"};
|
|
- int i, size, ret;
|
|
+ __u32 i, size;
|
|
+ int ret;
|
|
bool sp;
|
|
|
|
/* Enumerate ecc algs to check whether it is supported and set tags */
|
|
diff --git a/src/uadk_rsa.c b/src/uadk_rsa.c
|
|
index 8af0844..23deb3c 100644
|
|
--- a/src/uadk_rsa.c
|
|
+++ b/src/uadk_rsa.c
|
|
@@ -828,7 +828,8 @@ err_unlock:
|
|
static void uadk_e_rsa_uninit(void)
|
|
{
|
|
struct wd_ctx_config *ctx_cfg = g_rsa_res.ctx_res;
|
|
- int i, ret;
|
|
+ __u32 i;
|
|
+ int ret;
|
|
|
|
if (g_rsa_res.pid == getpid()) {
|
|
ret = uadk_e_is_env_enabled("rsa");
|
|
diff --git a/src/uadk_utils.h b/src/uadk_utils.h
|
|
index a16536b..028eb15 100644
|
|
--- a/src/uadk_utils.h
|
|
+++ b/src/uadk_utils.h
|
|
@@ -17,7 +17,6 @@
|
|
#ifndef UADK_UTILS
|
|
#define UADK_UTILS
|
|
#include <stdio.h>
|
|
-#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
void *uadk_memcpy(void *dstpp, const void *srcpp, size_t len);
|
|
--
|
|
2.25.1
|
|
|