X.509: Add a crypto key parser for binary (DER) X.509 certificates
authorDavid Howells <dhowells@redhat.com>
Mon, 24 Sep 2012 16:11:48 +0000 (17:11 +0100)
committerRusty Russell <rusty@rustcorp.com.au>
Mon, 8 Oct 2012 03:20:22 +0000 (13:50 +1030)
commitc26fd69fa00916a31a47f5f096fd7be924106df8
tree842075a43c3587ab0a93212b7f96563f616d6c33
parente1045992949160b56309b730b8bdc428f2f8b69e
X.509: Add a crypto key parser for binary (DER) X.509 certificates

Add a crypto key parser for binary (DER) encoded X.509 certificates.  The
certificate is parsed and, if possible, the signature is verified.

An X.509 key can be added like this:

# keyctl padd crypto bar @s </tmp/x509.cert
15768135

and displayed like this:

# cat /proc/keys
00f09a47 I--Q---     1 perm 39390000     0     0 asymmetri bar: X509.RSA e9fd6d08 []

Note that this only works with binary certificates.  PEM encoded certificates
are ignored by the parser.

Note also that the X.509 key ID is not congruent with the PGP key ID, but for
the moment, they will match.

If a NULL or "" name is given to add_key(), then the parser will generate a key
description from the CertificateSerialNumber and Name fields of the
TBSCertificate:

00aefc4e I--Q---     1 perm 39390000     0     0 asymmetri bfbc0cd76d050ea4:/C=GB/L=Cambridge/O=Red Hat/CN=kernel key: X509.RSA 0c688c7b []

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
crypto/asymmetric_keys/.gitignore [new file with mode: 0644]
crypto/asymmetric_keys/Kconfig
crypto/asymmetric_keys/Makefile
crypto/asymmetric_keys/x509.asn1 [new file with mode: 0644]
crypto/asymmetric_keys/x509_cert_parser.c [new file with mode: 0644]
crypto/asymmetric_keys/x509_parser.h [new file with mode: 0644]
crypto/asymmetric_keys/x509_public_key.c [new file with mode: 0644]
crypto/asymmetric_keys/x509_rsakey.asn1 [new file with mode: 0644]