mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-25 00:38:24 -05:00
DPP2: Generate a privacy protection key for Configurator
Generate a new key for Configurator. This is either generated automatically for the specified curve or provided from external source with the new ppkey=<val> argument similarly to the way c-sign-key was previously generated. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
1d14758450
commit
9c1fbff074
@ -3355,6 +3355,7 @@ void dpp_configurator_free(struct dpp_configurator *conf)
|
|||||||
os_free(conf->kid);
|
os_free(conf->kid);
|
||||||
os_free(conf->connector);
|
os_free(conf->connector);
|
||||||
EVP_PKEY_free(conf->connector_key);
|
EVP_PKEY_free(conf->connector_key);
|
||||||
|
EVP_PKEY_free(conf->pp_key);
|
||||||
os_free(conf);
|
os_free(conf);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3415,7 +3416,7 @@ static int dpp_configurator_gen_kid(struct dpp_configurator *conf)
|
|||||||
|
|
||||||
static struct dpp_configurator *
|
static struct dpp_configurator *
|
||||||
dpp_keygen_configurator(const char *curve, const u8 *privkey,
|
dpp_keygen_configurator(const char *curve, const u8 *privkey,
|
||||||
size_t privkey_len)
|
size_t privkey_len, const u8 *pp_key, size_t pp_key_len)
|
||||||
{
|
{
|
||||||
struct dpp_configurator *conf;
|
struct dpp_configurator *conf;
|
||||||
|
|
||||||
@ -3435,7 +3436,12 @@ dpp_keygen_configurator(const char *curve, const u8 *privkey,
|
|||||||
privkey_len);
|
privkey_len);
|
||||||
else
|
else
|
||||||
conf->csign = dpp_gen_keypair(conf->curve);
|
conf->csign = dpp_gen_keypair(conf->curve);
|
||||||
if (!conf->csign)
|
if (pp_key)
|
||||||
|
conf->pp_key = dpp_set_keypair(&conf->curve, pp_key,
|
||||||
|
pp_key_len);
|
||||||
|
else
|
||||||
|
conf->pp_key = dpp_gen_keypair(conf->curve);
|
||||||
|
if (!conf->csign || !conf->pp_key)
|
||||||
goto fail;
|
goto fail;
|
||||||
conf->own = 1;
|
conf->own = 1;
|
||||||
|
|
||||||
@ -4122,14 +4128,15 @@ static unsigned int dpp_next_configurator_id(struct dpp_global *dpp)
|
|||||||
int dpp_configurator_add(struct dpp_global *dpp, const char *cmd)
|
int dpp_configurator_add(struct dpp_global *dpp, const char *cmd)
|
||||||
{
|
{
|
||||||
char *curve = NULL;
|
char *curve = NULL;
|
||||||
char *key = NULL;
|
char *key = NULL, *ppkey = NULL;
|
||||||
u8 *privkey = NULL;
|
u8 *privkey = NULL, *pp_key = NULL;
|
||||||
size_t privkey_len = 0;
|
size_t privkey_len = 0, pp_key_len = 0;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
struct dpp_configurator *conf = NULL;
|
struct dpp_configurator *conf = NULL;
|
||||||
|
|
||||||
curve = get_param(cmd, " curve=");
|
curve = get_param(cmd, " curve=");
|
||||||
key = get_param(cmd, " key=");
|
key = get_param(cmd, " key=");
|
||||||
|
ppkey = get_param(cmd, " ppkey=");
|
||||||
|
|
||||||
if (key) {
|
if (key) {
|
||||||
privkey_len = os_strlen(key) / 2;
|
privkey_len = os_strlen(key) / 2;
|
||||||
@ -4139,7 +4146,16 @@ int dpp_configurator_add(struct dpp_global *dpp, const char *cmd)
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
conf = dpp_keygen_configurator(curve, privkey, privkey_len);
|
if (ppkey) {
|
||||||
|
pp_key_len = os_strlen(key) / 2;
|
||||||
|
pp_key = os_malloc(pp_key_len);
|
||||||
|
if (!pp_key ||
|
||||||
|
hexstr2bin(ppkey, pp_key, pp_key_len) < 0)
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
conf = dpp_keygen_configurator(curve, privkey, privkey_len,
|
||||||
|
pp_key, pp_key_len);
|
||||||
if (!conf)
|
if (!conf)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
@ -4150,7 +4166,9 @@ int dpp_configurator_add(struct dpp_global *dpp, const char *cmd)
|
|||||||
fail:
|
fail:
|
||||||
os_free(curve);
|
os_free(curve);
|
||||||
str_clear_free(key);
|
str_clear_free(key);
|
||||||
|
str_clear_free(ppkey);
|
||||||
bin_clear_free(privkey, privkey_len);
|
bin_clear_free(privkey, privkey_len);
|
||||||
|
bin_clear_free(pp_key, pp_key_len);
|
||||||
dpp_configurator_free(conf);
|
dpp_configurator_free(conf);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -364,6 +364,7 @@ struct dpp_configurator {
|
|||||||
const struct dpp_curve_params *curve;
|
const struct dpp_curve_params *curve;
|
||||||
char *connector; /* own Connector for reconfiguration */
|
char *connector; /* own Connector for reconfiguration */
|
||||||
EVP_PKEY *connector_key;
|
EVP_PKEY *connector_key;
|
||||||
|
EVP_PKEY *pp_key;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dpp_introduction {
|
struct dpp_introduction {
|
||||||
|
Loading…
Reference in New Issue
Block a user