A quick start document is added to help users quickly start using UADK and UADK engine.
Signed-off-by: Zhiqi Song songzhiqi1@huawei.com --- UADK_quick_start.md | 802 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 802 insertions(+) create mode 100644 UADK_quick_start.md
diff --git a/UADK_quick_start.md b/UADK_quick_start.md new file mode 100644 index 00000000..db2c0aca --- /dev/null +++ b/UADK_quick_start.md @@ -0,0 +1,802 @@ +# UADK ������������ +- [UADK ������������](#uadk-������������) + - [1 ������](#1-������) + - [2 ������������](#2������������) + - [2.1 ������](#21������) + - [2.2 ������](#22������) + - [2.2.1 ������������������](#221������������������) + - [2.2.2 ���������������������](#222���������������������) + - [2.3 ���������](#23���������) + - [3 ������������](#3������������) + - [3.1 ������UACCE���������������������](#31������uacce���������������������) + - [3.2 ������������������������������������������](#32������������������������������������������) + - [3.3 ������������������������������������������������](#33������������������������������������������������) + - [3.4 ������������������������������������������](#34������������������������������������������) + - [3.5 ������UACCE������](#35������uacce������) + - [3.6 ���������������������������](#36���������������������������) + - [3.7 UADK ���������������������������](#37uadk-���������������������������) + - [3.7.1 yum���������](#371-yum���������) + - [3.7.2 RPM���������](#372-rpm���������) + - [3.7.3 ������������������](#373-������������������) + - [3.8 UADK engine ������������](#38uadk-engine-������������) + - [3.8.1 yum���������](#381-yum���������) + - [3.8.2 RPM���������](#382-rpm���������) + - [3.8.3 ������������������](#383-������������������) + - [4 ������������](#4������������) + - [4.1 UADK](#41uadk) + - [4.1.1 ������������������������](#411������������������������) + - [4.1.2 ������RSA������](#412������rsa������) + - [4.1.3 ������DH������](#413������dh������) + - [4.1.4 ������ECDH������](#414������ecdh������) + - [4.1.5 ������ECXDH������](#415������ecxdh������) + - [4.1.6 ������ECDSA������](#416������ecdsa������) + - [4.1.7 ������SM2������](#417������sm2������) + - [4.1.8 ������MD5������](#418������md5������) + - [4.1.9 ������SM3������](#419������sm3������) + - [4.1.10 ������SHA������](#4110������sha������) + - [4.1.11 ������AES������](#4111������aes������) + - [4.1.12 ������SM4������](#4112������sm4������) + - [4.2 ������UADK engine](#42������uadk-engine) + - [4.2.1 ������������������������](#421������������������������) + - [4.2.2 ������RSA���������������](#422������rsa���������������) + - [4.2.3 ������DH���������������](#423������dh���������������) + - [4.2.4 ������ECDH���������������](#424������ecdh���������������) + - [4.2.5 ������ECXDH���������������](#425������ecxdh���������������) + - [4.2.6 ������ECDSA���������������](#426������ecdsa���������������) + - [4.2.7 ������SM2���������������](#427������sm2���������������) + - [4.2.8 ������MD5���������������](#428������md5���������������) + - [4.2.9 ������SM3���������������](#429������sm3���������������) + - [4.2.10 ������SHA���������������](#4210������sha���������������) + - [4.2.11 ������AES���������������](#4211������aes���������������) + - [4.2.12 ������SM4���������������](#4212������sm4���������������) + - [4.2.13 ������DES���������������](#4213������des���������������) +---- + +## 1 ������ +������������UADK ��� UADK engine��� +������������������������������������������������������UADK ���UADK engine��� +### 1.1 **UADK** +UADK���User Space Accelerator Development Kit������������������������������������������������SVA���Shared Virtual Address������������**���������**���������������������������������������������������������������������������������������������������������������������UADK���������UACCE���Unified/User-space-access-intended Accelerator Framework������������**������������������SVA���������������������������������������UADK������**��� +������������������������������Kunpeng���������������������������������UACCE������������UADK���������������������������������CPU������������������������������������������������������������������������������������������CPU��������������������������������������� +### 1.2 **UADK engine** +UADK engine���UADK������������������������������OpenSSL���engine���������������UADK engine������������OpenSSL������������������������������������������������������ +������������������Kunpeng���������������������������������UADK���������������������������OpenSSL���������������������UADK engine���������������Kunpeng������������������������������������������ +### 1.3 UADK���������������&������������������������ +UADK������������UACCE���vendor driver������������������������������������������������������SVA���������������������IOMMU���SVA��� +������������������������������������������������������������������������������UACCE���������������������������������������������������������������������������������������������������������������������������������������������������������������UADK��������������������������������������������������� +UADK������������������������������������������������������������������������������������������������������������ +������������Kunpeng������������������������������������������Kunpeng������������������������������������UADK������������������������UADK������������������������������������������������������������������������������Kunpeng���������������������������: +- AES���SM4���SM3���SHAx���AEAD���HMAC��������������� +- RSA���DH���ECDH���X25519���X448���SM2��������������� +- gzip���zlib���deflate���lz77_zstd��������������� +### 1.4 UADK engine���������������&������������������������ +UADK engine������OpenSSL������������������������������������RSA engine���DH engine���ECC engine���Cipher engine���Digest engine���5������������������������������������������������������������������������UADK���������������������UADK engine���������������������OpenSSL ���������������������������������������������������������������engine id���������uadk_engine��� +������������Kunpeng������������������������������������������Kunpeng������������������������������������UADK������������������������������OpenSSL������������������������������������������������������������������������ +- RSA engine��������������������������������������������������������������������� +- DH engine ��������������������������������� +- ECC engine ��������������������������������������������������������������������� +- Cipher engine������������������������������������ +- Digest engine ��������������������������������������� +### 1.5 UADK ���UADK engine��������������� +- ��������� +- ������������ +- ������������ +- Web������������ + +----------- + +## 2 ������������ +���������������������Kunpeng���������������������������������������UADK������UADK engine��������������������������������������������������������������������� +### 2.1 ������ +������������UADK������������������Kunpeng���9xx������CPU ��� +### 2.2 ������ +#### 2.2.1 ������������������ +OpenEuler������������ +Ubuntu������������ +CentOS������������ +������������������������������IOMMU &SVA��������� +#### 2.2.2 ��������������������� +OpenSSL 1.1.1a������������������������������OpenSSL1.1.1l��������� +### 2.3 ��������� +������UADK ���UADK engine ��������������������� +gcc version 10.2.0 (GCC) + +-------- + +## 3 ������������ +���������������������Kunpeng���������������������������������������UADK������UADK engine��������������������������������������������������������������������������������� +���������������Kunpeng������������������������������UADK������������������������������������������������������������ +### 3.1 ������UACCE��������������������� +������������������������������������������������UACCE������������������������UACCE��������� +������������������������������ ++ ���������������Linux������������ +Linux���������������UACCE���������������������Linux������������ https://www.kernel.org/ +������UACCE��������������� + + UACCE������������������������������������ + <linux /drivers/misc/uacce/> + ++ ���������������OpenEuler������������ +OpenEuler���������������������������������https://gitee.com/openeuler/kernel + + UACCE������������������������������������ + <linux /drivers/misc/uacce/> + +### 3.2 ������������������������������������������ +������������Kunpeng��������������������������������� +������������������������ ++ ���������������Linux������������ +���������Kunpeng���������������������HPRE���SEC���ZIP������������������������������Linux���������������������Linux������������ https://www.kernel.org/ +���������������Kunpeng������������������������������������ + + ���������Kunpeng������������������������������������������ + <linux/drivers/crypto/hisilicon/> + ++ ���������������OpenEuler������������ +OpenEuler���������������������������������https://gitee.com/openeuler/kernel + + ���������Kunpeng������������������������������������������ +��� <linux/drivers/crypto/hisilicon/> +### 3.3 ������������������������������������������������ +������������Kunpeng������������������������������������������Kunpeng������������������������������������config��������������������������������� + +������������������������������ +``` +CONFIG_CRYPTO_DEV_HISI_QM=m +CONFIG_CRYPTO_DEV_HISI_ZIP=m +CONFIG_CRYPTO_DEV_HISI_HPRE=m +CONFIG_CRYPTO_DEV_HISI_SEC2=m +CONFIG_CRYPTO_DEV_HISI_TRNG=m +CONFIG_CRYPTO_DEV_HISI_MIGRATION=m +``` +��������������������������������� +``` +CONFIG_UACCE=m +``` +������������������������ZIP���������HPRE���������SEC���������������������������������������������������������������������������������������������������TRNG��������������������������� + +���������������SVA������������������������ +``` +CONFIG_IOMMU_SVA_LIB=y +CONFIG_ARM_SMMU_V3_SVA=y +CONFIG_IOMMU_PAGE_FAULT=y +CONFIG_IOMMU_SUPPORT=y +CONFIG_PCI_PASID=y +CONFIG_IOMMU_SVA=y +``` + +������������������������������������ +``` +CONFIG_VFIO=m +CONFIG_VFIO_PCI=m +``` +### 3.4 ������������������������������������������ + +| ������ | ������������ | +|:---|:---| +X86|make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-| +ARM|make ARCH=arm64| + +������������kernel��������������������������� +### 3.5 ������UACCE������ +������������������������������������������������������������uacce.ko��� +### 3.6 ��������������������������� +������������Kunpeng��������������������������������������������� + +| ��������������� | ������������������ | +|---|---| +HPRE|uacce.ko, hisi_qm.ko, hisi_hpre.ko| +ZIP|uacce.ko, hisi_qm.ko, hisi_zip.ko| +SEC|uacce.ko, hisi_qm.ko, hisi_sec2.ko| + +��������������� +hisi_hpre.ko/hisi_zip.ko/hisi_sec2.ko���������������uacce_mode���uacce_mode=1���SVA���������uacce_mode=2���no-SVA��������� +ZIP���HPRE���SEC������������QM������������������������������������hisi_qm.ko������������Kunpeng���������������������������������uacce������������������������������������������������������uacce.ko��� +������������insmod���modprobe������������������������������ +- ������HPRE������SVA��������������������������������� +``` +modprobe uacce +modprobe hisi_qm +modprobe hisi_hpre uacce_mode=1 +``` +- ������ZIP������SVA��������������������������������� +``` +modprobe uacce +modprobe hisi_qm +modprobe hisi_zip uacce_mode=1 +``` +- ������SEC������SVA��������������������������������� +``` +modprobe uacce +modprobe hisi_qm +modprobe hisi_sec2 uacce_mode=1 +``` + +- ������������������������ + +������������������������������������������������������������������������������������������������������������������������������������������```cat /sys/bus/pci/drivers/<driver>/module/parameters/``` ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ + +��������������������������� +``` +insmod <driver> [uacce_mode] [pf_q_num] [vfs_num] [sgl_sge_nr] [ctx_q_num] +``` +[]��������������������������������������������������������������� ++ ������������uacce_mode������������0���������������������������������������������������������������������������������uacce_mode=1��� ++ SEC������pf_q_num���������������256���HPRE/ZIP������pf_q_num���������������64��� ++ ������������vfs_num���������������0��� ++ ������������sgl_sge_nr���������������10��� ++ ������������ctx_q_num���������������2��� +���������������ZIP������������������������������������������������������������������ +``` +insmod hisi_zip.ko uacce_mode=1 pf_q_num =16 vfs_num=1 sgl_sge_nr=16 +``` +���������������������SVA������������������uacce_mode=1��������� + +������������������������������������������������ + + +### 3.7 UADK ��������������������������� +UADK���������������������������������������������yum������������RPM��������������������������������������������������������������������������������������� + +#### 3.7.1 yum��������� +������OpenEuler 22.03������������������������yum��������������������������� +yum install libwd + +#### 3.7.2 RPM��������� +���OpenEuler������������UADK rpm������https://gitee.com/src-openeuler/libwd + +��������������������� +``` +cd /usr/src/ + +git clone https://gitee.com/src-openeuler/libwd.git + +mkdir -p /usr/src/rpmbuild + +cd /usr/src/ rpmbuild + +mkdir SOURCES SPECS BUILD RPMS SRPMS + +cp /usr/src/libwd/libwd-xxx.tar.gz /usr/src/libwd/*patch /usr/src/rpmbuild/SOURCES/ + +cp /usr/src/libwd/warpdrive.spec /usr/src/rpmbuild/SPECS/ + +rpmbuild ���bb SPECS/warpdrive.spec +``` + +#### 3.7.3 ������������������ +���Linaro������������������UADK���������https://github.com/Linaro/uadk +��������������������������������������������������� +https://github.com/Linaro/uadk/blame/master/INSTALL + +### 3.8 UADK engine ������������ +UADK engine������������������������������yum������������RPM��������������������������������������������������������������������������������������� +#### 3.8.1 yum��������� +������OpenEuler 22.03������������������������yum��������������������������� +``` +yum install uadk_engine +``` +#### 3.8.2 RPM��������� +���OpenEuler������������uadk_engine rpm������https://gitee.com/src-openeuler/uadk_engine + +��������������������� +``` +cd /usr/src/ + +git clone https://gitee.com/src-openeuler/uadk_engine.git + +mkdir -p /usr/src/rpmbuild + +cd /usr/src/ rpmbuild + +mkdir SOURCES SPECS BUILD RPMS SRPMS + +cp /usr/src/uadk_engine/uadk_engine-xxx.tar.gz /usr/src/uadk_engine/*patch /usr/src/rpmbuild/SOURCES/ + +cp /usr/src/uadk_engine/ uadk_engine.spec /usr/src/rpmbuild/SPECS/ + +rpmbuild ���bb SPECS/uadk_engine.spec +``` +#### 3.8.3 ������������������ +���������Linaro���������������UADK engine���������https://gitee.com/src-openeuler/uadk_engine + +��������������������������������������������������� +https://github.com/Linaro/uadk_engine/blob/master/README + +----------- + +## 4 ������������ +### 4.1 UADK +uadk/uadk_tool/���������������UADK������������������������������������UADK������������������������uadk_benchmark������������������������```uadk_benchmark --help```������������������������������������������������```uadk_benchmark --alglist```������������������������������������ +#### 4.1.1 ������������������������ +������export������������������������: +``` +export WD_RSA_CTX_NUM="sync:2@0,async:4@0" +export WD_DH_CTX_NUM="sync:2@0,async:4@0" +export WD_CIPHER_CTX_NUM="sync:2@2,async:4@2" +export WD_DIGEST_CTX_NUM="sync:2@2,async:4@2" +export WD_ECC_CTX_NUM="sync:2@0,async:4@0" +``` +������������������������������������������ + +#### 4.1.2 ������RSA������ +������rsa-1024���SVA������������������������������������������������ +``` +uadk_benchmark --alg rsa-1024 --mode sva --optype 0 --sync --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` +������rsa-1024���SVA������������������������������������������������ +``` +uadk_benchmark --alg rsa-1024 --mode sva --optype 1 --async --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������������������������������uadk_benchmark --help������������������������ +#### 4.1.3 ������DH������ +������dh-1024���SVA������������������������������������������������������ +``` +uadk_benchmark --alg dh-1024 --mode sva --optype 0 --sync --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������dh-1024���SVA������������������������������������������������������ +``` +uadk_benchmark --alg dh-1024 --mode sva --optype 1 --async --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������������������������������uadk_benchmark --help������������������������ + +#### 4.1.4 ������ECDH������ +������ecdh-1024���SVA������������������������������������������������������ +``` +uadk_benchmark --alg ecdh-1024 --mode sva --optype 0 --sync --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������ecdh-1024���SVA������������������������������������������������������ +``` +uadk_benchmark --alg ecdh-1024 --mode sva --optype 1 --async --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������������������������������uadk_benchmark --help������������������������ + +#### 4.1.5 ������ECXDH������ +������x25519���SVA������������������������������������������������������ +``` +uadk_benchmark --alg x25519 --mode sva --optype 0 --sync --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������x25519���SVA������������������������������������������������������ +``` +uadk_benchmark --alg x25519 --mode sva --optype 1 --async --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������x448���SVA������������������������������������������������������ +``` +uadk_benchmark --alg x25519 --mode sva --optype 0 --sync --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������x448���SVA������������������������������������������������������ +``` +uadk_benchmark --alg x25519 --mode sva --optype 1 --async --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������������������������������uadk_benchmark --help������������������������ + +#### 4.1.6 ������ECDSA������ +������ecdsa-256���SVA������������������������������������������ +``` +uadk_benchmark --alg ecdsa-256 --mode sva --optype 4 --sync --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������ecdsa-256���SVA������������������������������������������ +``` +uadk_benchmark --alg ecdsa-256 --mode sva --optype 5 --async --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������������������������������uadk_benchmark --help������������������������ + +#### 4.1.7 ������SM2������ +������sm2���SVA������������������������������������������ +``` +uadk_benchmark --alg sm2 --mode sva --optype 4 --sync --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������sm2���SVA������������������������������������������ +``` +uadk_benchmark --alg sm2 --mode sva --optype 5 --async --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������������������������������uadk_benchmark --help������������������������ + +#### 4.1.8 ������MD5������ +������md5���SVA������������������������������������������������ +``` +uadk_benchmark --alg md5 --mode sva --optype 0 --sync --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������md5���SVA������������������������������������������������ +``` +uadk_benchmark --alg md5 --mode sva --optype 0 --async --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������������������������������uadk_benchmark --help������������������������ + +#### 4.1.9 ������SM3������ +������sm3���SVA������������������������������������������������ +``` +uadk_benchmark --alg sm3 --mode sva --optype 0 --sync --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������sm3���SVA������������������������������������������������ +``` +uadk_benchmark --alg sm3 --mode sva --optype 0 --async --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������������������������������uadk_benchmark --help������������������������ + +#### 4.1.10 ������SHA������ +������sha-512���SVA������������������������������������������������ +``` +uadk_benchmark --alg sha-512 --mode sva --optype 0 --sync --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` +������sha-512���SVA������������������������������������������������ +``` +uadk_benchmark --alg sha-512 --mode sva --optype 0 --async --seconds 5 --thread 2 --multi 1 --ctxnum 6 +``` + +������������������������������uadk_benchmark --help������������������������ + +#### 4.1.11 ������AES������ +������aes-128-cbc���SVA������������������������������������������������ +``` +uadk_benchmark --alg aes-128-cbc --mode sva --optype 0 --sync --pktlen 1024 --seconds 5 --multi 1 --thread 2 --ctxnum 6 +``` + +������aes-128-cbc���SVA������������������������������������������������ +``` +uadk_benchmark --alg aes-128-cbc --mode sva --optype 1 --async --pktlen 1024 --seconds 5 --multi 1 --thread 2 --ctxnum 6 +``` +������������������������������uadk_benchmark --help������������������������ + +#### 4.1.12 ������SM4������ +������sm4���SVA������������������������������������������������ +``` +uadk_benchmark --alg sm4 --mode sva --optype 0 --sync --pktlen 1024 --seconds 5 --multi 1 --thread 2 --ctxnum 6 +``` + +������sm4���SVA������������������������������������������������ +``` +uadk_benchmark --alg sm4 --mode sva --optype 1 --async --pktlen 1024 --seconds 5 --multi 1 --thread 2 --ctxnum 6 +``` +������������������������������uadk_benchmark --help������������������������ + +### 4.2 ������UADK engine +������������openssl���������������������������uadk engine���������������������openssl������������������������������������������ +#### 4.2.1 ������������������������ +UADK engine������������������������������������������������������������������������������������������������������������������ +1. ������openssl.cnf������������������/usr/local/ssl/������������������������������������������������������������ +``` +openssl_cnf = openssl_def +[openssl_def] +engines = engine_section +[engine_section] +uadk_engine = uadk_section +[uadk_section] +UADK_CMD_ENABLE_RSA_ENV = 1 +UADK_CMD_ENABLE_DH_ENV = 1 +UADK_CMD_ENABLE_CIPHER_ENV = 1 +UADK_CMD_ENABLE_DIGEST_ENV = 1 +UADK_CMD_ENABLE_ECC_ENV = 1 +``` + +2. ������export������������������������ +``` +export WD_RSA_CTX_NUM="sync:2@0,async:4@0" +export WD_DH_CTX_NUM="sync:2@0,async:4@0" +export WD_CIPHER_CTX_NUM="sync:2@2,async:4@2" +export WD_DIGEST_CTX_NUM="sync:2@2,async:4@2" +export WD_ECC_CTX_NUM="sync:2@0,async:4@0" +``` + +������������������������������������������ + +#### 4.2.2 ������RSA��������������� +��������������� +``` +openssl genrsa -out prikey.pem -engine uadk_engine 1024 +``` +��������������� +``` +openssl rsa -in prikey.pem -pubout -out pubkey.pem -engine uadk_engine +``` +��������� +``` +openssl rsautl -encrypt -in plain.txt -inkey pubkey.pem -pubin -out enc.txt -engine uadk_engine +``` +��������� +``` +openssl rsautl -decrypt -in enc.txt -inkey prikey.pem -out dec.txt -engine uadk_engine +``` +��������� +``` +openssl rsautl -sign -in msg.txt -inkey prikey.pem -out signed.txt -engine uadk_engine +``` +��������� +``` +openssl rsautl -verify -in signed.txt -inkey pubkey.pem -pubin -out verified.txt -engine uadk_engine +``` +������openssl speed��������������� +``` +openssl speed -elapsed -engine uadk_engine rsa1024 +openssl speed -elapsed -engine uadk_engine -async_jobs 10 rsa1024 +openssl speed -elapsed -engine uadk_engine -async_jobs 36 rsa1024 +``` +#### 4.2.3 ������DH��������������� +��������������������������� +``` +openssl dhparam -out dhparam.pem 768 +``` +������Alice������: +``` +openssl genpkey -paramfile dhparam.pem -out alice_prikey.pem -engine uadk_engine +``` +������Alice��������� +``` +openssl pkey -in alice_prikey.pem -pubout -out alice_pubkey.pem +``` +������Bob��������� +``` +openssl genpkey -paramfile dhparam.pem -out bob_prikey.pem -engine uadk_engine +``` +������Bob��������� +``` +openssl pkey -in bob_prikey.pem -pubout -out bob_pubkey.pem +``` +������������������������������������������������ +``` +openssl pkeyutl -derive -inkey alice_prikey.pem -peerkey bob_pubkey.pem -out secret1.bin -engine uadk_engine +openssl pkeyutl -derive -inkey bob_prikey.pem -peerkey alice_pubkey.pem -out secret2.bin -engine uadk_engine +``` +��������������������������������� +``` +cmp secret1.bin secret2.bin +xxd secret1.bin +xxd secret2.bin +``` +#### 4.2.4 ������ECDH��������������� +������Alice��������� +``` +openssl ecparam -name secp128r1 -genkey -noout -out alice_prikey_secp128r1.pem -engine uadk_engine +``` +������������������������ +``` +openssl pkey -in alice_prikey_secp128r1.pem -text +``` +������Alice��������� +``` +openssl pkey -pubout -in alice_prikey_secp128r1.pem -out alice_secp128r1.pub +``` +������Bob��������� +``` +openssl ecparam -name secp128r1 -genkey -noout -out bob_prikey_secp128r1.pem -engine uadk_engine +``` +������Bob��������� +``` +openssl pkey -pubout -in bob_prikey_secp128r1.pem -out bob_secp128r1.pub +``` +Alice��������������������� +``` +openssl pkeyutl -derive -out alicebob_secp128r1.key -inkey alice_prikey_secp128r1.pem -peerkey bob_secp128r1.pub -engine uadk_engine +``` +Bob��������������������� +``` +openssl pkeyutl -derive -out bobalice_secp128r1.key -inkey bob_prikey_secp128r1.pem -peerkey alice_secp128r1.pub -engine uadk_engine +``` +������Alice���Bob������������������������������ +``` +cmp alicebob_secp128r1.key bobalice_secp128r1.key +xxd alicebob_secp128r1.key +xxd bobalice_secp128r1.key +``` +#### 4.2.5 ������ECXDH��������������� +������Alice��������� +``` +openssl genpkey -algorithm X25519 -out alice_x25519_prikey.pem -engine uadk_engine +``` +������������������������ +``` +openssl pkey -in alice_x25519prikey.pem -text +``` +������Alice��������� +``` +openssl pkey -pubout -in alice_x25519_prikey.pem -out alice_ x25519.pub +``` +������Bob��������� +``` +openssl genpkey -algorithm X25519 -out bob_x25519_prikey.pem -engine uadk_engine +``` +������Bob��������� +``` +openssl pkey -pubout -in bob_x25519_prikey.pem -out bob_x25519.pub +``` +Alice��������������������� +``` +openssl pkeyutl -derive -out alicebob_x25519.key -inkey alice_x25519_prikey.pem -peerkey bob_x25519.pub -engine uadk_engine +``` +Bob��������������������� +``` +openssl pkeyutl -derive -out bobalice_x25519.key -inkey bob_x25519_prikey.pem -peerkey alice_ x25519.pub -engine uadk_engine +``` +������Alice���Bob������������������������������ +``` +cmp alicebob_x25519.key bobalice_x25519.key +xxd alicebob_x25519.key +xxd bobalice_x25519.key +``` +���������������������X448���������������������genpkey���������������������������algorithm���������������X448������-algorithm X448 +#### 4.2.6 ������ECDSA��������������� +��������������� +``` +openssl ecparam -genkey -name secp384r1 -noout -out private.pem -engine uadk_engine +``` +��������������� +``` +openssl ec -in private.pem -pubout -out public.pem +``` +������������������������������msg.txt��� +������SHA256��������� +``` +openssl dgst -sha256 -sign private.pem -out ecdsa_384r1.sig -engine uadk_engine msg.txt +``` +������SHA256��������� +``` +openssl dgst -sha256 -verify public.pem -signature ecdsa_384r1.sig -engine uadk_engine msg.txt +``` +openssl speed��������������� +``` +openssl speed -elapsed -engine uadk_engine ecdsap256 +openssl speed -elapsed -engine uadk_engine -async_jobs 1 ecdsap256 +``` +#### 4.2.7 ������SM2��������������� +��������������� +``` +openssl ecparam -name SM2 -genkey -out sm2_prikey.pem -engine uadk_engine +``` +��������������� +``` +openssl ec -in sm2_prikey.pem -pubout -out sm2_pubkey.pem +``` +������������������������������msg.txt��� +������SHA256��������� +``` +openssl dgst -sha256 -sign sm2_prikey.pem -out sm2.sig -engine uadk_engine msg.txt +``` +������SHA256��������� +``` +openssl dgst -sha256 -verify sm2_pubkey.pem -signature sm2.sig -engine uadk_engine msg.txt +``` +#### 4.2.8 ������MD5��������������� +������������������������������������data.txt��� +``` +openssl md5 -engine uadk_engine data.txt +``` +openssl speed��������������� +``` +openssl speed -engine uadk_engine -async_jobs 1 -evp md5 +``` +#### 4.2.9 ������SM3��������������� +������������������������������������data.txt��� +``` +openssl sm3 -engine uadk_engine data.txt +``` +#### 4.2.10 ������SHA��������������� +������������������������������������data.txt��� +``` +openssl sha1 -engine uadk_engine data.txt +openssl sha256 -engine uadk_engine data.txt +openssl sha512 -engine uadk_engine data.txt +``` +#### 4.2.11 ������AES��������������� +aes-128-cbc��������������� +``` +openssl enc -aes-128-cbc -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-128-cbc��������������� +``` +openssl enc -aes-128-cbc -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-192-cbc��������������� +``` +openssl enc -aes-192-cbc -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-192-cbc��������������� +``` +openssl enc -aes-192-cbc -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-256-cbc��������������� +``` +openssl enc -aes-256-cbc -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-256-cbc��������������� +``` +openssl enc -aes-256-cbc -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-128-ecb��������������� +``` +openssl enc -aes-128-ecb -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-128-ecb��������������� +``` +openssl enc -aes-128-ecb -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-192-ecb��������������� +``` +openssl enc -aes-192-ecb -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-192-ecb��������������� +``` +openssl enc -aes-192-ecb -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-256-ecb��������������� +``` +openssl enc -aes-256-ecb -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-256-ecb��������������� +``` +openssl enc -aes-256-ecb -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-128-ctr��������������� +``` +openssl enc -aes-128-ctr -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-128-ctr��������������� +``` +openssl enc -aes-128-ctr -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-192-ctr��������������� +``` +openssl enc -aes-192-ctr -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-192-ctr��������������� +``` +openssl enc -aes-192-ctr -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-256-ctr��������������� +``` +openssl enc -aes-256-ctr -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +aes-256-ctr��������������� +``` +openssl enc -aes-256-ctr -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +#### 4.2.12 ������SM4��������������� +sm4-cbc��������������� +``` +openssl enc -sm4-cbc -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +sm4-cbc��������������� +``` +openssl enc -sm4-cbc -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +sm4-ecb��������������� +``` +openssl enc -sm4-ecb -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +sm4-ecb��������������� +``` +openssl enc -sm4-ecb -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +#### 4.2.13 ������DES��������������� +des-ede3-cbc��������������� +``` +openssl enc -des-ede3-cbc -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +des-ede3-cbc��������������� +``` +openssl enc -des-ede3-cbc -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +des-ede3-ecb��������������� +``` +openssl enc -des-ede3-ecb -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +``` +des-ede3-ecb��������������� +``` +openssl enc -des-ede3-ecb -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p +```