diff options
| author | Yunguo Wei <yunguo.wei@windriver.com> | 2019-10-10 18:10:52 +0800 |
|---|---|---|
| committer | Jia Zhang <qianyue.zj@alibaba-inc.com> | 2019-10-10 18:10:52 +0800 |
| commit | 701cbaf3c3428e393e93384bcbc94240753a4c40 (patch) | |
| tree | 9acafdc2f54dd6229af2178d2823f5f1a4550caf | |
| parent | 69117bef3a49ce645eee4cc6aaebb234da99c414 (diff) | |
| download | meta-secure-core-701cbaf3c3428e393e93384bcbc94240753a4c40.tar.gz | |
lib-evm-utils: using the correct algo for v2 signature (#120)
When using rpmsign (with --signfiles --fskpath) to sign RPM package,
the IMA signature is not correct, see:
$ getfattr -d -m - rootfs/usr/sbin/grpconv
file: rootfs/usr/sbin/grpconv
security.ima=0sAwIEDy1SEQP3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
And the expected signature is like this:
$ getfattr -d -m - rootfs/usr/sbin/grpconv
file: rootfs/usr/sbin/grpconv
security.ima=0sAwIEDy1SEQEAA6s8DwmRCVutcrE8NvHWWYXlg8L1AwH5teu44prkKRwmhZQ52Oa4UQoZZlxER/SJ9tijbve8ZAv++KW8EqgP4iZjEGh8ke76rpiRU5glnG/U+HUjnilJBpzpMJHxyNbAiFoHMESeCOtrhY0zZIUXK3DnIuIJSwpfl2HaNFxRrE38EaqgV9IQ8QiWFCvgDYXoJDwc3KdhjKjs214tCfZpKO1w4QJl2n4llZHw2RTHIuUOsMhRDEXs6onLHmdmhvqgxIHt7IvsT9v7H8GnoaiX0xgzxk2o/mE5EtPrnMtUoGSQwdY8CAfUbCwAp0c5QlsrHk5RBmewjJ/jxd/K1uKp7w==
The root cause is libimaevm doesn't retrieve correct signing algo, so this patch
is making things right.
Signed-off-by: Yunguo Wei <yunguo.wei@windriver.com>
2 files changed, 27 insertions, 0 deletions
diff --git a/meta-integrity/recipes-support/ima-evm-utils/ima-evm-utils/0001-libimaevm-retrieve-correct-algo-for-v2-signature.patch b/meta-integrity/recipes-support/ima-evm-utils/ima-evm-utils/0001-libimaevm-retrieve-correct-algo-for-v2-signature.patch new file mode 100644 index 0000000..25957c1 --- /dev/null +++ b/meta-integrity/recipes-support/ima-evm-utils/ima-evm-utils/0001-libimaevm-retrieve-correct-algo-for-v2-signature.patch | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | From c740d114ca213ece820da39ce2ce99fc4d6ae5c7 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Yunguo Wei <yunguo.wei@windriver.com> | ||
| 3 | Date: Thu, 10 Oct 2019 16:40:21 +0800 | ||
| 4 | Subject: [PATCH] libimaevm: retrieve correct algo for v2 signature | ||
| 5 | |||
| 6 | Signed-off-by: Yunguo Wei <yunguo.wei@windriver.com> | ||
| 7 | --- | ||
| 8 | src/libimaevm.c | 2 +- | ||
| 9 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
| 10 | |||
| 11 | diff --git a/src/libimaevm.c b/src/libimaevm.c | ||
| 12 | index 7c17bf4..3586e02 100644 | ||
| 13 | --- a/src/libimaevm.c | ||
| 14 | +++ b/src/libimaevm.c | ||
| 15 | @@ -939,7 +939,7 @@ static int sign_hash_v2(const char *algo, const unsigned char *hash, | ||
| 16 | if (!EVP_PKEY_sign_init(ctx)) | ||
| 17 | goto err; | ||
| 18 | st = "EVP_get_digestbyname"; | ||
| 19 | - if (!(md = EVP_get_digestbyname(imaevm_params.hash_algo))) | ||
| 20 | + if (!(md = EVP_get_digestbyname(algo))) | ||
| 21 | goto err; | ||
| 22 | st = "EVP_PKEY_CTX_set_signature_md"; | ||
| 23 | if (!EVP_PKEY_CTX_set_signature_md(ctx, md)) | ||
| 24 | -- | ||
| 25 | 2.7.4 | ||
| 26 | |||
diff --git a/meta-integrity/recipes-support/ima-evm-utils/ima-evm-utils_git.bb b/meta-integrity/recipes-support/ima-evm-utils/ima-evm-utils_git.bb index bc98ce6..46722b8 100644 --- a/meta-integrity/recipes-support/ima-evm-utils/ima-evm-utils_git.bb +++ b/meta-integrity/recipes-support/ima-evm-utils/ima-evm-utils_git.bb | |||
| @@ -10,6 +10,7 @@ SRC_URI = "\ | |||
| 10 | file://0001-Don-t-build-man-pages.patch \ | 10 | file://0001-Don-t-build-man-pages.patch \ |
| 11 | file://0001-Install-evmctl-to-sbindir-rather-than-bindir.patch \ | 11 | file://0001-Install-evmctl-to-sbindir-rather-than-bindir.patch \ |
| 12 | file://0001-ima-evm-utils-include-sys-types.h-in-header-to-fix-b.patch \ | 12 | file://0001-ima-evm-utils-include-sys-types.h-in-header-to-fix-b.patch \ |
| 13 | file://0001-libimaevm-retrieve-correct-algo-for-v2-signature.patch \ | ||
| 13 | " | 14 | " |
| 14 | SRCREV = "3eab1f93b634249c1720f65fcb495b1996f0256e" | 15 | SRCREV = "3eab1f93b634249c1720f65fcb495b1996f0256e" |
| 15 | 16 | ||
