Hashing public keys in EVP_PKEY's

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Dec 11, 2014 at 04:02:10PM +0100, Jan Danielsson wrote:

>    If I would want to use the hash of a EVP_PKEY to uniquely identify
> the key (regardless of whether it contains the private key or not), what
> would be the best way to do this?  (I.e. how do I deterministically hash
> the public key of a EVP_PKEY?).

Be careful to produce a hash of a full SPKI structure (algorithm
oid, parameters, key bits) and not just the key bits.  Without the
algorithm and parameter context, there is I think a likelihood of
attacks depending on how the hashes are to be used.

> -----------------
>    int X509_pubkey_digest(const X509 *data, const EVP_MD *type, unsigned
> char *md, unsigned int *len)
>    {
>      ASN1_BIT_STRING *key;
>      key = X509_get0_pubkey_bitstr(data);
>      if(!key) return 0;
>      return EVP_Digest(key->data, key->length, md, len, type, NULL);
>    }
> -----------------

This is used to compute the SHA-1 keybits hash for "authority key
identifier" computations, but is NOT the appropriate hash to use
in general.  It is exactly the "key-bits only" digest I am suggesting
you avoid.

Instead, use i2d_PUBKEY() and compute the appropriate digest of
that.

-- 
	Viktor.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux