From: Mimi Zohar <zohar@linux.vnet.ibm.com>
To: Matthew Garrett <mjg59@google.com>, linux-integrity@vger.kernel.org
Subject: Re: [USER] [PATCH 1/2] Remove hardcoding of SHA1 in EVM signatures
Date: Wed, 18 Apr 2018 08:13:49 -0400 [thread overview]
Message-ID: <1524053629.3272.270.camel@linux.vnet.ibm.com> (raw)
In-Reply-To: <20180417225601.6965-1-mjg59@google.com>
On Tue, 2018-04-17 at 15:56 -0700, Matthew Garrett wrote:
> EVM signatures are always being generated with SHA1 even if the -a
> argument has been provided to evmctl. Fix this so the provided hash
> algorithm is used instead.
The kernel assumes both the HMAC and signature are sha1 as well.
static char * const evm_hmac = "hmac(sha1)";
static char * const evm_hash = "sha1";
Mimi
> Signed-off-by: Matthew Garrett <mjg59@google.com>
> ---
> src/evmctl.c | 20 +++++++++++++++++---
> 1 file changed, 17 insertions(+), 3 deletions(-)
>
> diff --git a/src/evmctl.c b/src/evmctl.c
> index 2ffee78..43d261f 100644
> --- a/src/evmctl.c
> +++ b/src/evmctl.c
> @@ -313,6 +313,7 @@ err:
>
> static int calc_evm_hash(const char *file, unsigned char *hash)
> {
> + const EVP_MD *md;
> struct stat st;
> int err;
> uint32_t generation = 0;
> @@ -374,7 +375,13 @@ static int calc_evm_hash(const char *file, unsigned char *hash)
> return -1;
> }
>
> - err = EVP_DigestInit(pctx, EVP_sha1());
> + md = EVP_get_digestbyname(params.hash_algo);
> + if (!md) {
> + log_err("EVP_get_digestbyname() failed\n");
> + return 1;
> + }
> +
> + err = EVP_DigestInit(pctx, md);
> if (!err) {
> log_err("EVP_DigestInit() failed\n");
> return 1;
> @@ -498,7 +505,7 @@ static int sign_evm(const char *file, const char *key)
> if (len <= 1)
> return len;
>
> - len = sign_hash("sha1", hash, len, key, NULL, sig + 1);
> + len = sign_hash(params.hash_algo, hash, len, key, NULL, sig + 1);
> if (len <= 1)
> return len;
>
> @@ -967,6 +974,7 @@ static int cmd_setxattr_ima(struct command *cmd)
>
> static int calc_evm_hmac(const char *file, const char *keyfile, unsigned char *hash)
> {
> + const EVP_MD *md;
> struct stat st;
> int err = -1;
> uint32_t generation = 0;
> @@ -1033,7 +1041,13 @@ static int calc_evm_hmac(const char *file, const char *keyfile, unsigned char *h
> goto out;
> }
>
> - err = !HMAC_Init_ex(pctx, evmkey, sizeof(evmkey), EVP_sha1(), NULL);
> + md = EVP_get_digestbyname(params.hash_algo);
> + if (!md) {
> + log_err("EVP_get_digestbyname() failed\n");
> + goto out;
> + }
> +
> + err = !HMAC_Init_ex(pctx, evmkey, sizeof(evmkey), md, NULL);
> if (err) {
> log_err("HMAC_Init() failed\n");
> goto out;
next prev parent reply other threads:[~2018-04-18 12:13 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-17 22:56 [USER] [PATCH 1/2] Remove hardcoding of SHA1 in EVM signatures Matthew Garrett
2018-04-17 22:56 ` [USER] [PATCH 2/2] Add security.apparmor to the set of extended attributes used by EVM Matthew Garrett
2018-06-12 23:42 ` Mimi Zohar
2018-06-14 19:43 ` Matthew Garrett
2018-06-14 20:41 ` Mimi Zohar
2018-07-01 20:28 ` Mimi Zohar
2018-04-18 12:13 ` Mimi Zohar [this message]
2018-06-13 13:41 ` [USER] [PATCH 1/2] Remove hardcoding of SHA1 in EVM signatures Mimi Zohar
2018-06-14 19:42 ` Matthew Garrett
2018-06-22 20:24 ` Mimi Zohar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1524053629.3272.270.camel@linux.vnet.ibm.com \
--to=zohar@linux.vnet.ibm.com \
--cc=linux-integrity@vger.kernel.org \
--cc=mjg59@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.