From: David Howells <dhowells@redhat.com>
To: Tadeusz Struk <tadeusz.struk@intel.com>
Cc: dhowells@redhat.com, herbert@gondor.apana.org.au, corbet@lwn.net,
keescook@chromium.org, qat-linux@intel.com, jwboyer@redhat.com,
richard@nod.at, d.kasatkin@samsung.com,
linux-kernel@vger.kernel.org, steved@redhat.com,
vgoyal@redhat.com, james.l.morris@oracle.com, jkosina@suse.cz,
zohar@linux.vnet.ibm.com, davem@davemloft.net, jdelvare@suse.de,
linux-crypto@vger.kernel.org
Subject: Re: [PATCH RFC 2/2] crypto: RSA: KEYS: convert rsa and public key to new PKE API
Date: Fri, 01 May 2015 17:21:43 +0100 [thread overview]
Message-ID: <4394.1430497303@warthog.procyon.org.uk> (raw)
In-Reply-To: <20150430223658.10157.32631.stgit@tstruk-mobl1>
Tadeusz Struk <tadeusz.struk@intel.com> wrote:
> +Additionally public key algorithm names are defined:
> +#define PKEY_ALGO_DSA "dsa"
> +#define PKEY_ALGO_RSA "rsa"
> +These will be used to allocate public key tfm instances.
These should be a blank line either side of the two #defines and the #defines
should be indented a tab.
> - BUG_ON(ctx->sinfo->sig.pkey_algo != PKEY_ALGO_RSA);
> + BUG_ON(strcmp(ctx->sinfo->sig.pkey_algo, PKEY_ALGO_RSA));
If you make PKEY_ALGO_RSA a const char [] can you use != here?
Oh, and can you do either != 0 or == 0 on the end of your strcmp()? It's a
bit more obvious since strcmp()'s return is sort of inverse.
> + .verify = RSA_verify_signature,
> + .capabilities = PKEY_CAN_VERIFY,
Can we keep .verify_signature as the name of the first. The second is
redundant given the function pointers.
> + if (cert->pub && !IS_ERR(cert->pub->tfm))
> + crypto_free_pke(cert->pub->tfm);
> ...
> +
> + cert->pub->tfm = crypto_alloc_pke(ctx->cert->sig.pkey_algo, 0, 0);
> + if (IS_ERR(cert->pub->tfm)) {
> + pr_err("Failed to alloc pkey algo %s\n",
> + ctx->cert->sig.pkey_algo);
> + goto error_decode;
> + }
> +
Given that X.509 certs can hang around for a very long time, having a tfm in
the cert is probably a bad idea as it may pin resources such as crypto h/w.
> - ctx->cert->pub->pkey_algo = PKEY_ALGO_RSA;
> -
I think you need this rather than the above. You should only get the tfm when
you actually need it.
> - pr_devel("Cert Key Algo: %s\n", pkey_algo_name[cert->pub->pkey_algo]);
> + pr_devel("Cert Key Algo: %s\n", pke_alg_name(cert->pub->tfm));
pkey_algo_name() perhaps?
> + pr_devel("Cert Signature: %s + %s\n", cert->sig.pkey_algo,
Split line at that comma please. That way all the arguments line up.
> - cert->pub->algo = pkey_algo[cert->pub->pkey_algo];
Might still need this.
> -enum pkey_algo {
> - PKEY_ALGO_DSA,
> - PKEY_ALGO_RSA,
> - PKEY_ALGO__LAST
> -};
This represents a value seen external to the kernel - at least for the
moment. Switching to PKCS#7 module sigs would cure that.
> +#define PKEY_ALGO_DSA "dsa"
> +#define PKEY_ALGO_RSA "rsa"
const char []
> +int public_key_verify_signature(const struct public_key *pk,
> + const struct public_key_signature *sig);
Retain the extern please and the following blank line.
> +static const char *const pkey_algo_name[] = {
> + PKEY_ALGO_DSA, PKEY_ALGO_RSA
> +};
> +
Split the list over multiple lines, please. Better still, move to PKCS#7.
David
next prev parent reply other threads:[~2015-05-01 16:22 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-30 22:36 [PATCH RFC 0/2] crypto: Introduce Public Key Encryption API Tadeusz Struk
2015-04-30 22:36 ` [PATCH RFC 1/2] crypto: add PKE API Tadeusz Struk
2015-04-30 22:43 ` Herbert Xu
2015-04-30 23:04 ` Tadeusz Struk
2015-05-01 7:24 ` Stephan Mueller
2015-05-01 17:30 ` Tadeusz Struk
2015-05-01 16:04 ` David Howells
2015-05-01 18:17 ` Tadeusz Struk
2015-05-03 0:07 ` Herbert Xu
2015-05-04 19:26 ` Tadeusz Struk
2015-05-05 1:33 ` Herbert Xu
2015-04-30 22:36 ` [PATCH RFC 2/2] crypto: RSA: KEYS: convert rsa and public key to new " Tadeusz Struk
2015-05-01 16:21 ` David Howells [this message]
2015-05-01 19:27 ` Tadeusz Struk
2015-05-01 8:47 ` [PATCH RFC 0/2] crypto: Introduce Public Key Encryption API Jean Delvare
2015-05-01 17:32 ` Tadeusz Struk
2015-05-01 15:53 ` David Howells
2015-05-04 13:16 ` Horia Geantă
2015-05-04 20:42 ` Tadeusz Struk
2015-05-06 11:31 ` Horia Geantă
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=4394.1430497303@warthog.procyon.org.uk \
--to=dhowells@redhat.com \
--cc=corbet@lwn.net \
--cc=d.kasatkin@samsung.com \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=james.l.morris@oracle.com \
--cc=jdelvare@suse.de \
--cc=jkosina@suse.cz \
--cc=jwboyer@redhat.com \
--cc=keescook@chromium.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=qat-linux@intel.com \
--cc=richard@nod.at \
--cc=steved@redhat.com \
--cc=tadeusz.struk@intel.com \
--cc=vgoyal@redhat.com \
--cc=zohar@linux.vnet.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).