mirror of
https://github.com/openharmony/tee_tee_os_framework.git
synced 2026-07-19 19:53:44 -04:00
@@ -33,8 +33,9 @@ CONFIG_DRVMGR_64BIT=true
|
||||
CONFIG_DRVMGR_32BIT=false
|
||||
CONFIG_CRYPTO_SUPPORT_EC25519=true
|
||||
CONFIG_CRYPTO_SUPPORT_X509=false
|
||||
CONFIG_CRYPTO_ECC_WRAPPER=false
|
||||
CONFIG_CRYPTO_ECC_WRAPPER=true
|
||||
CONFIG_CRYPTO_AES_WRAPPER=true
|
||||
CONFIG_CRYPTO_SUPPORT_SOFT_ECC=true
|
||||
|
||||
#
|
||||
# services
|
||||
|
||||
@@ -41,6 +41,7 @@ inc-flags += -I$(PREBUILD_HEADER)/sys
|
||||
ifneq ($(findstring $(CONFIG_CRYPTO_SOFT_ENGINE), openssl openssl3),)
|
||||
inc-flags += -I$(TEELIB)/libopenssl/openssl/include
|
||||
inc-flags += -I$(TEELIB)/libopenssl/openssl/crypto
|
||||
inc-flags += -I$(TEELIB)/libopenssl/openssl/ohos_lite
|
||||
endif
|
||||
|
||||
# Source files required to build the target
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include "soft_derive_key_api.h"
|
||||
#include <crypto/evp.h>
|
||||
#ifdef CRYPTO_SUPPORT_SOFT_ECC
|
||||
#include <ec/ec_local.h>
|
||||
#include <crypto/ec/ec_local.h>
|
||||
#include <openssl/ecdh.h>
|
||||
#endif
|
||||
#include <openssl/evp.h>
|
||||
|
||||
@@ -13,9 +13,13 @@
|
||||
#include "soft_ec_api.h"
|
||||
#include <ec/ec_local.h>
|
||||
#include <crypto/evp.h>
|
||||
#include <crypto/ec.h>
|
||||
#include <openssl/ecdh.h>
|
||||
#include <openssl/ecdsa.h>
|
||||
#include <openssl/bn.h>
|
||||
#include <openssl/ec.h>
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/core_names.h>
|
||||
#include <securec.h>
|
||||
#include <tee_log.h>
|
||||
#include "crypto_inner_interface.h"
|
||||
@@ -72,25 +76,25 @@ static int32_t generate_ed25519_keypair(uint32_t key_size, struct ecc_pub_key_t
|
||||
return get_soft_crypto_error(CRYPTO_BAD_PARAMETERS);
|
||||
}
|
||||
|
||||
ECX_KEY *ed25519_key = EVP_PKEY_get0(pkey);
|
||||
if ((ed25519_key == NULL) || (ed25519_key->privkey == NULL)) {
|
||||
tloge("Evp get failed\n");
|
||||
size_t pub_key_buf_len = ECC_KEY_LEN;
|
||||
size_t prv_key_buf_len = ECC_KEY_LEN;
|
||||
|
||||
if (EVP_PKEY_get_octet_string_param(pkey, OSSL_PKEY_PARAM_PRIV_KEY, private_key->r, sizeof(private_key->r), &prv_key_buf_len) == 0)
|
||||
{
|
||||
tloge("Get private key failed\n");
|
||||
EVP_PKEY_free(pkey);
|
||||
return CRYPTO_BAD_PARAMETERS;
|
||||
return CRYPTO_ERROR_SECURITY;
|
||||
}
|
||||
|
||||
errno_t rc = memcpy_s(public_key->x, public_key->x_len, ed25519_key->pubkey, ED25519_PUBLIC_KEY_LEN);
|
||||
if (rc != EOK) {
|
||||
tloge("Copy failed, rc=%d\n", rc);
|
||||
if (EVP_PKEY_get_octet_string_param(pkey, OSSL_PKEY_PARAM_PUB_KEY, public_key->x, sizeof(public_key->x), &pub_key_buf_len) == 0)
|
||||
{
|
||||
tloge("Get public key failed\n");
|
||||
EVP_PKEY_free(pkey);
|
||||
return CRYPTO_ERROR_SECURITY;
|
||||
}
|
||||
rc = memcpy_s(private_key->r, private_key->r_len, ed25519_key->privkey, ED25519_PRI_KEY_LEN);
|
||||
|
||||
EVP_PKEY_free(pkey);
|
||||
if (rc != EOK) {
|
||||
tloge("Copy failed, rc=%d\n", rc);
|
||||
return CRYPTO_ERROR_SECURITY;
|
||||
}
|
||||
|
||||
public_key->x_len = ED25519_PUBLIC_KEY_LEN;
|
||||
private_key->r_len = ED25519_PRI_KEY_LEN;
|
||||
return CRYPTO_SUCCESS;
|
||||
@@ -484,7 +488,7 @@ int32_t soft_crypto_ecc_generate_keypair(uint32_t key_size, uint32_t curve,
|
||||
if (check)
|
||||
return generate_ecc_keypair(curve, key_size, public_key, private_key);
|
||||
|
||||
return sm2_generate_keypair(key_size, curve, public_key, private_key);
|
||||
return CRYPTO_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
int32_t soft_crypto_ecc_encrypt(uint32_t alg_type, const struct ecc_pub_key_t *public_key,
|
||||
@@ -499,7 +503,7 @@ int32_t soft_crypto_ecc_encrypt(uint32_t alg_type, const struct ecc_pub_key_t *p
|
||||
}
|
||||
|
||||
if (alg_type == CRYPTO_TYPE_SM2_PKE)
|
||||
return sm2_encrypt_decypt(public_key, ENC_MODE, data_in, data_out);
|
||||
return CRYPTO_NOT_SUPPORTED;
|
||||
|
||||
return CRYPTO_NOT_SUPPORTED;
|
||||
}
|
||||
@@ -516,7 +520,7 @@ int32_t soft_crypto_ecc_decrypt(uint32_t alg_type, const struct ecc_priv_key_t *
|
||||
}
|
||||
|
||||
if (alg_type == CRYPTO_TYPE_SM2_PKE)
|
||||
return sm2_encrypt_decypt(private_key, DEC_MODE, data_in, data_out);
|
||||
return CRYPTO_NOT_SUPPORTED;
|
||||
|
||||
return CRYPTO_NOT_SUPPORTED;
|
||||
}
|
||||
@@ -566,9 +570,6 @@ int32_t soft_crypto_ecc_sign_digest(uint32_t alg_type, const struct ecc_priv_key
|
||||
return CRYPTO_BAD_PARAMETERS;
|
||||
}
|
||||
|
||||
if (alg_type == CRYPTO_TYPE_SM2_DSA_SM3)
|
||||
return sm2_sign_verify(private_key, SIGN_MODE, digest, signature);
|
||||
|
||||
if (alg_type == CRYPTO_TYPE_ED25519)
|
||||
return ed25519_sign_digest(signature, digest, private_key);
|
||||
|
||||
@@ -618,9 +619,6 @@ int32_t soft_crypto_ecc_verify_digest(uint32_t alg_type, const struct ecc_pub_ke
|
||||
return CRYPTO_BAD_PARAMETERS;
|
||||
}
|
||||
|
||||
if (alg_type == CRYPTO_TYPE_SM2_DSA_SM3)
|
||||
return sm2_sign_verify(public_key, VERIFY_MODE, digest, (struct memref_t *)signature);
|
||||
|
||||
if (alg_type == CRYPTO_TYPE_ED25519)
|
||||
return ed25519_verify_digest(signature, digest, public_key);
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ A32_CFLAGS += -w -Wno-unused-parameter -Wno-int-conversion
|
||||
CPPFLAGS += -I$(TEELIB)/libopenssl/include
|
||||
CPPFLAGS += -I$(TEELIB)/libopenssl/openssl
|
||||
CPPFLAGS += -I$(TEELIB)/libopenssl/openssl/include
|
||||
CPPFLAGS += -I$(TEELIB)/libopenssl/openssl/include/internal
|
||||
CPPFLAGS += -I$(TEELIB)/libopenssl/openssl/include/crypto
|
||||
CPPFLAGS += -I$(TEELIB)/libopenssl/openssl/include/openssl
|
||||
CPPFLAGS += -I$(TEELIB)/libopenssl/openssl/crypto
|
||||
@@ -32,6 +33,7 @@ CPPFLAGS += -I$(TEELIB)/libopenssl/openssl/crypto/siphash
|
||||
CPPFLAGS += -I$(PREBUILD_DIR)/headers/libc
|
||||
|
||||
CPPFLAGS += -I$(TEELIB)/libopenssl/openssl/providers/common/include
|
||||
CPPFLAGS += -I$(TEELIB)/libopenssl/openssl/providers/common/include/prov
|
||||
CPPFLAGS += -I$(TEELIB)/libopenssl/openssl/providers/implementations/include
|
||||
|
||||
ifeq (${CONFIG_CRYPTO_SOFT_ENGINE},openssl3)
|
||||
@@ -44,6 +46,9 @@ ifeq ($(CONFIG_OPENSSL_NO_ASM),true)
|
||||
LOCAL_SRC_FILES += $(OPENSSL_CRYPTO_PATH)/mem_clr.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_CRYPTO_SUPPORT_SOFT_ECC),true)
|
||||
CFLAGS += -DCRYPTO_SUPPORT_SOFT_ECC
|
||||
endif
|
||||
|
||||
ASFLAGS := $(filter-out -march=armv8-a+nofp, $(ASFLAGS)) -march=armv8-a
|
||||
CFLAGS := $(filter-out -fno-builtin-memcpy, $(CFLAGS))
|
||||
|
||||
@@ -50,8 +50,11 @@ if [ "$CONFIG_CRYPTO_SOFT_ENGINE" == "openssl3" ]; then
|
||||
make providers/common/include/prov/der_rsa.h
|
||||
make providers/common/include/prov/der_sm2.h
|
||||
make providers/common/include/prov/der_wrap.h
|
||||
make providers/common/include/prov/der_ecx.h
|
||||
make providers/common/der/der_rsa_gen.c
|
||||
make providers/common/der/der_wrap_gen.c
|
||||
make providers/common/der/der_ec_gen.c
|
||||
make providers/common/der/der_ecx_gen.c
|
||||
cd include/openssl && patch -p0 < ../../../include/preprocess-openssl3.patch
|
||||
else
|
||||
cd include/openssl && patch -p0 < ../../../include/preprocess-openssl.patch
|
||||
|
||||
@@ -436,9 +436,56 @@ LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/x509/x_pubkey.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/x509/x_req.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/x509/x_x509.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/x509/x_x509a.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/curve25519.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_ameth.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_asn1.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_backend.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_check.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_curve.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_cvt.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_deprecated.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_err.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_key.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_kmeth.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_lib.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_mult.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_oct.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_pmeth.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec_print.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec2_oct.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ec2_smpl.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecdh_kdf.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecdh_ossl.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecdsa_ossl.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecdsa_sign.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecdsa_vrf.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/eck_prn.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecp_mont.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecp_nist.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecp_nistputil.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecp_nistz256.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecp_oct.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecp_ppc.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecp_s390x_nistp.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecp_smpl.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecx_backend.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecx_key.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecx_meth.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/ecx_s390x.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/curve448/curve448_tables.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/curve448/curve448.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/curve448/eddsa.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/curve448/f_generic.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/curve448/scalar.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/ec/curve448/arch_64/f_impl64.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/evp/ec_support.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/common/bio_prov.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/common/capabilities.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/common/der/der_ec_sig.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/common/der/der_ec_key.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/common/der/der_ecx_key.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/common/der/der_ec_gen.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/common/der/der_ecx_gen.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/common/der/der_rsa_gen.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/common/der/der_rsa_key.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/common/der/der_rsa_sig.c
|
||||
@@ -517,6 +564,7 @@ LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/implementations/kem/rsa_kem.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/implementations/keymgmt/kdf_legacy_kmgmt.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/implementations/keymgmt/mac_legacy_kmgmt.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/implementations/keymgmt/rsa_kmgmt.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/implementations/keymgmt/ec_kmgmt.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/implementations/macs/cmac_prov.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/implementations/macs/gmac_prov.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/implementations/macs/hmac_prov.c
|
||||
@@ -570,10 +618,15 @@ LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/getenv.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/init.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/initthread.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/crypto/cpuid.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/ohos_lite/crypto/ec/curve25519.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/baseprov.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/defltprov.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/nullprov.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/prov_running.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/implementations/exchange/ecdh_exch.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/implementations/exchange/ecx_exch.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/implementations/signature/eddsa_sig.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/providers/implementations/keymgmt/ecx_kmgmt.c
|
||||
LOCAL_SRC_FILES += $(OPENSSL_FILE_PATH)/ssl/s3_cbc.c
|
||||
|
||||
CFLAGS += -DOPENSSL_NO_GMTLS
|
||||
|
||||
@@ -26,6 +26,11 @@ inc-flags += -I$(PREBUILD_HEADER)/sys
|
||||
ifneq ($(findstring $(CONFIG_CRYPTO_SOFT_ENGINE), openssl openssl3),)
|
||||
inc-flags += -I$(TEELIB)/libopenssl/openssl/include
|
||||
inc-flags += -I$(TEELIB)/libopenssl/openssl/crypto
|
||||
inc-flags += -I$(TEELIB)/libopenssl/openssl/include/openssl
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_CRYPTO_SUPPORT_SOFT_ECC),true)
|
||||
c-flags += -DCRYPTO_SUPPORT_SOFT_ECC
|
||||
endif
|
||||
|
||||
libswcrypto_engine_c_files += $(wildcard src/*.c)
|
||||
|
||||
Reference in New Issue
Block a user