mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2025-01-03 10:32:33 +01:00
dpp-util: add URI generation API
This commit is contained in:
parent
cdf05183b9
commit
c511e4be2a
@ -32,8 +32,69 @@
|
|||||||
|
|
||||||
#include "src/dpp-util.h"
|
#include "src/dpp-util.h"
|
||||||
#include "src/util.h"
|
#include "src/util.h"
|
||||||
|
#include "src/band.h"
|
||||||
#include "src/crypto.h"
|
#include "src/crypto.h"
|
||||||
|
|
||||||
|
static void append_freqs(struct l_string *uri,
|
||||||
|
const uint32_t *freqs, size_t len)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
enum band_freq band;
|
||||||
|
|
||||||
|
l_string_append_printf(uri, "C:");
|
||||||
|
|
||||||
|
for (i = 0; i < len; i++) {
|
||||||
|
uint8_t oper_class;
|
||||||
|
uint8_t channel = band_freq_to_channel(freqs[i], &band);
|
||||||
|
|
||||||
|
/* For now use global operating classes */
|
||||||
|
if (band == BAND_FREQ_2_4_GHZ)
|
||||||
|
oper_class = 81;
|
||||||
|
else
|
||||||
|
oper_class = 115;
|
||||||
|
|
||||||
|
l_string_append_printf(uri, "%u/%u", oper_class, channel);
|
||||||
|
|
||||||
|
if (i != len - 1)
|
||||||
|
l_string_append_c(uri, ',');
|
||||||
|
}
|
||||||
|
|
||||||
|
l_string_append_c(uri, ';');
|
||||||
|
}
|
||||||
|
|
||||||
|
char *dpp_generate_uri(const uint8_t *asn1, size_t asn1_len, uint8_t version,
|
||||||
|
const uint8_t *mac, const uint32_t *freqs,
|
||||||
|
size_t freqs_len, const char *info, const char *host)
|
||||||
|
{
|
||||||
|
struct l_string *uri = l_string_new(256);
|
||||||
|
char *base64;
|
||||||
|
|
||||||
|
base64 = l_base64_encode(asn1, asn1_len, 0);
|
||||||
|
|
||||||
|
l_string_append_printf(uri, "DPP:K:%s;", base64);
|
||||||
|
l_free(base64);
|
||||||
|
|
||||||
|
if (mac)
|
||||||
|
l_string_append_printf(uri, "M:%02x%02x%02x%02x%02x%02x;",
|
||||||
|
MAC_STR(mac));
|
||||||
|
|
||||||
|
if (freqs)
|
||||||
|
append_freqs(uri, freqs, freqs_len);
|
||||||
|
|
||||||
|
if (info)
|
||||||
|
l_string_append_printf(uri, "I:%s;", info);
|
||||||
|
|
||||||
|
if (host)
|
||||||
|
l_string_append_printf(uri, "H:%s;", host);
|
||||||
|
|
||||||
|
if (version)
|
||||||
|
l_string_append_printf(uri, "V:%u;", version);
|
||||||
|
|
||||||
|
l_string_append_c(uri, ';');
|
||||||
|
|
||||||
|
return l_string_unwrap(uri);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* EasyConnect 2.0 Table 3. Key and Nonce Length Dependency on Prime Length
|
* EasyConnect 2.0 Table 3. Key and Nonce Length Dependency on Prime Length
|
||||||
*/
|
*/
|
||||||
|
@ -22,6 +22,10 @@
|
|||||||
struct l_ecc_point;
|
struct l_ecc_point;
|
||||||
struct l_ecc_scalar;
|
struct l_ecc_scalar;
|
||||||
|
|
||||||
|
char *dpp_generate_uri(const uint8_t *asn1, size_t asn1_len, uint8_t version,
|
||||||
|
const uint8_t *mac, const uint32_t *freqs,
|
||||||
|
size_t freqs_len, const char *info, const char *host);
|
||||||
|
|
||||||
size_t dpp_nonce_len_from_key_len(size_t len);
|
size_t dpp_nonce_len_from_key_len(size_t len);
|
||||||
|
|
||||||
bool dpp_hash(enum l_checksum_type type, uint8_t *out, unsigned int num, ...);
|
bool dpp_hash(enum l_checksum_type type, uint8_t *out, unsigned int num, ...);
|
||||||
|
Loading…
Reference in New Issue
Block a user