Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 07f081fb authored by David Howells's avatar David Howells Committed by James Morris
Browse files

PKCS#7: Add OIDs for sha224, sha284 and sha512 hash algos and use them



Add OIDs for sha224, sha284 and sha512 hash algos and use them to select
the hashing algorithm.  Without this, something like the following error
might get written to dmesg:

[   31.829322] PKCS7: Unknown OID: [32] 2.16.840.1.101.3.4.2.3
[   31.829328] PKCS7: Unknown OID: [180] 2.16.840.1.101.3.4.2.3
[   31.829330] Unsupported digest algo: 55

Where the 55 on the third line is OID__NR indicating an unknown OID.

Reported-by: default avatarValdis Kletnieks <Valdis.Kletnieks@vt.edu>
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Tested-By: default avatarValdis Kletnieks <valdis.kletnieks@vt.edu>
Signed-off-by: default avatarJames Morris <james.l.morris@oracle.com>
parent 3f1d44ae
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -97,6 +97,15 @@ int mscode_note_digest_algo(void *context, size_t hdrlen,
	case OID_sha256:
		ctx->digest_algo = HASH_ALGO_SHA256;
		break;
	case OID_sha384:
		ctx->digest_algo = HASH_ALGO_SHA384;
		break;
	case OID_sha512:
		ctx->digest_algo = HASH_ALGO_SHA512;
		break;
	case OID_sha224:
		ctx->digest_algo = HASH_ALGO_SHA224;
		break;

	case OID__NR:
		sprint_oid(value, vlen, buffer, sizeof(buffer));
+8 −0
Original line number Diff line number Diff line
@@ -229,6 +229,14 @@ int pkcs7_sig_note_digest_algo(void *context, size_t hdrlen,
	case OID_sha256:
		ctx->sinfo->sig.pkey_hash_algo = HASH_ALGO_SHA256;
		break;
	case OID_sha384:
		ctx->sinfo->sig.pkey_hash_algo = HASH_ALGO_SHA384;
		break;
	case OID_sha512:
		ctx->sinfo->sig.pkey_hash_algo = HASH_ALGO_SHA512;
		break;
	case OID_sha224:
		ctx->sinfo->sig.pkey_hash_algo = HASH_ALGO_SHA224;
	default:
		printk("Unsupported digest algo: %u\n", ctx->last_oid);
		return -ENOPKG;
+3 −0
Original line number Diff line number Diff line
@@ -63,6 +63,9 @@ enum OID {
	OID_certAuthInfoAccess,		/* 1.3.6.1.5.5.7.1.1 */
	OID_sha1,			/* 1.3.14.3.2.26 */
	OID_sha256,			/* 2.16.840.1.101.3.4.2.1 */
	OID_sha384,			/* 2.16.840.1.101.3.4.2.2 */
	OID_sha512,			/* 2.16.840.1.101.3.4.2.3 */
	OID_sha224,			/* 2.16.840.1.101.3.4.2.4 */

	/* Distinguished Name attribute IDs [RFC 2256] */
	OID_commonName,			/* 2.5.4.3 */