• Nicolai Stange's avatar
    crypto: dh - allow for passing NULL to the ffdheXYZ(dh)s' ->set_secret() · c8e8236c
    Nicolai Stange authored
    Ephemeral key generation can be requested from any of the ffdheXYZ(dh)
    variants' common ->set_secret() by passing it an (encoded) struct dh
    with the key parameter being unset, i.e. with ->key_size == 0. As the
    whole purpose of the ffdheXYZ(dh) templates is to fill in the group
    parameters as appropriate, they expect ->p and ->g to be unset in any
    input struct dh as well. This means that a user would have to encode an
    all-zeroes struct dh instance via crypto_dh_encode_key() when requesting
    ephemeral key generation from a ffdheXYZ(dh) instance, which is kind of
    pointless.
    
    Make dh_safe_prime_set_secret() to decode a struct dh from the supplied
    buffer only if the latter is non-NULL and initialize it with all zeroes
    otherwise.
    
    That is, it is now possible to call
    
      crypto_kpp_set_secret(tfm, NULL, 0);
    
    on any ffdheXYZ(dh) tfm for requesting ephemeral key generation.
    Signed-off-by: default avatarNicolai Stange <nstange@suse.de>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    c8e8236c
dh.c 28.8 KB