mirror of
https://git.code.sf.net/p/linux-ima/ima-evm-utils
synced 2025-07-02 13:43:16 +02:00
ima-evm-utils: Support SM2/3 algorithm for sign and verify
Keep in sync with the kernel IMA, IMA signature tool supports SM2/3 algorithm combination. Because in the current version of OpenSSL 1.1.1, the SM2 algorithm and the public key using the EC algorithm share the same ID 'EVP_PKEY_EC', and the specific algorithm can only be distinguished by the curve name used. This patch supports this feature. Secondly, the openssl 1.1.1 tool does not fully support the signature of SM2/3 algorithm combination, so the openssl3 tool is used in the test case, and there is no this problem with directly calling the openssl 1.1.1 API in evmctl. Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> [zohar@linux.ibm.com: "COMPILE_SSL: " -> "COMPILE_SSL=" in .travis.yml Reviewed-by: Petr Vorel <pvorel@suse.cz> Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
This commit is contained in:

committed by
Mimi Zohar

parent
40621b2259
commit
a5f5dd7c8e
@ -199,6 +199,10 @@ check_sign() {
|
||||
# This is all we can do for evm.
|
||||
[[ "$TYPE" =~ evm ]] && return "$OK"
|
||||
|
||||
# When using the SM2/3 algorithm, the openssl tool uses USERID for verify,
|
||||
# which is incompatible with calling API directly, so skip it.
|
||||
[[ "$ALG" == sm3 ]] && return "$OK"
|
||||
|
||||
# Extract signature to a file
|
||||
_extract_xattr "$FILE" "$(_xattr "$TYPE")" "$FILE.sig2" "$PREFIX"
|
||||
|
||||
@ -390,6 +394,12 @@ sign_verify prime256v1 sha256 0x030204:K:004[345678]
|
||||
sign_verify prime256v1 sha384 0x030205:K:004[345678]
|
||||
sign_verify prime256v1 sha512 0x030206:K:004[345678]
|
||||
|
||||
# If openssl 3.0 is installed, test the SM2/3 algorithm combination
|
||||
if [ -x /opt/openssl3/bin/openssl ]; then
|
||||
PATH=/opt/openssl3/bin:$PATH LD_LIBRARY_PATH=/opt/openssl3/lib \
|
||||
sign_verify sm2 sm3 0x030211:K:004[345678]
|
||||
fi
|
||||
|
||||
# Test v2 signatures with EC-RDSA
|
||||
_enable_gost_engine
|
||||
sign_verify gost2012_256-A md_gost12_256 0x030212:K:0040
|
||||
|
Reference in New Issue
Block a user