auth: allow specifying PIN on commandline (-p/--auth-pin)
Signed-off-by: Patrick McHardy <kaber@trash.net>
This commit is contained in:
parent
ede151676c
commit
79004e4687
|
@ -14,6 +14,7 @@ enum {
|
||||||
DECTMON_DUMP_NWK = 0x4,
|
DECTMON_DUMP_NWK = 0x4,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern const char *auth_pin;
|
||||||
extern uint32_t dumpopts;
|
extern uint32_t dumpopts;
|
||||||
|
|
||||||
struct dect_ops;
|
struct dect_ops;
|
||||||
|
|
|
@ -29,13 +29,14 @@ static struct dect_ops ops = {
|
||||||
.raw_ops = &raw_ops,
|
.raw_ops = &raw_ops,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define OPTSTRING "c:m:d:n:h"
|
#define OPTSTRING "c:m:d:n:p:h"
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
OPT_CLUSTER = 'c',
|
OPT_CLUSTER = 'c',
|
||||||
OPT_DUMP_MAC = 'm',
|
OPT_DUMP_MAC = 'm',
|
||||||
OPT_DUMP_DLC = 'd',
|
OPT_DUMP_DLC = 'd',
|
||||||
OPT_DUMP_NWK = 'n',
|
OPT_DUMP_NWK = 'n',
|
||||||
|
OPT_AUTH_PIN = 'p',
|
||||||
OPT_HELP = 'h',
|
OPT_HELP = 'h',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -44,6 +45,7 @@ static const struct option dectmon_opts[] = {
|
||||||
{ .name = "dump-mac", .has_arg = true, .flag = 0, .val = OPT_DUMP_MAC, },
|
{ .name = "dump-mac", .has_arg = true, .flag = 0, .val = OPT_DUMP_MAC, },
|
||||||
{ .name = "dump-dlc", .has_arg = true, .flag = 0, .val = OPT_DUMP_DLC, },
|
{ .name = "dump-dlc", .has_arg = true, .flag = 0, .val = OPT_DUMP_DLC, },
|
||||||
{ .name = "dump-nwk", .has_arg = true, .flag = 0, .val = OPT_DUMP_NWK, },
|
{ .name = "dump-nwk", .has_arg = true, .flag = 0, .val = OPT_DUMP_NWK, },
|
||||||
|
{ .name = "auth-pin", .has_arg = true, .flag = 0, .val = OPT_AUTH_PIN, },
|
||||||
{ .name = "help", .has_arg = false, .flag = 0, .val = OPT_HELP, },
|
{ .name = "help", .has_arg = false, .flag = 0, .val = OPT_HELP, },
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
|
@ -60,6 +62,7 @@ static uint32_t opt_yesno(const char *arg, uint32_t opts, uint32_t flag)
|
||||||
return opts;
|
return opts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *auth_pin = "0000";
|
||||||
uint32_t dumpopts = DECTMON_DUMP_NWK;
|
uint32_t dumpopts = DECTMON_DUMP_NWK;
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
|
@ -86,6 +89,9 @@ int main(int argc, char **argv)
|
||||||
case OPT_DUMP_NWK:
|
case OPT_DUMP_NWK:
|
||||||
dumpopts = opt_yesno(optarg, dumpopts, DECTMON_DUMP_NWK);
|
dumpopts = opt_yesno(optarg, dumpopts, DECTMON_DUMP_NWK);
|
||||||
break;
|
break;
|
||||||
|
case OPT_AUTH_PIN:
|
||||||
|
auth_pin = optarg;
|
||||||
|
break;
|
||||||
case OPT_HELP:
|
case OPT_HELP:
|
||||||
printf("%s [ options ]\n"
|
printf("%s [ options ]\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
@ -93,6 +99,7 @@ int main(int argc, char **argv)
|
||||||
" -m/--dump-mac=yes/no\n"
|
" -m/--dump-mac=yes/no\n"
|
||||||
" -d/--dump-dlc=yes/no\n"
|
" -d/--dump-dlc=yes/no\n"
|
||||||
" -n/--dump-nwk=yes/no\n"
|
" -n/--dump-nwk=yes/no\n"
|
||||||
|
" -p/--auth-pin=PIN\n"
|
||||||
" -h/--help\n",
|
" -h/--help\n",
|
||||||
argv[0]);
|
argv[0]);
|
||||||
|
|
||||||
|
|
|
@ -158,8 +158,6 @@ static struct dect_pt *dect_pt_init(struct dect_ie_portable_identity *portable_i
|
||||||
list_add_tail(&pt->list, &dect_pt_list);
|
list_add_tail(&pt->list, &dect_pt_list);
|
||||||
|
|
||||||
dect_pt_read_uak(pt);
|
dect_pt_read_uak(pt);
|
||||||
printf("new PT\n");
|
|
||||||
|
|
||||||
return pt;
|
return pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,8 +167,8 @@ static void dect_pt_track_key_allocation(struct dect_pt *pt, uint8_t msgtype,
|
||||||
{
|
{
|
||||||
uint8_t k[DECT_AUTH_KEY_LEN], ks[DECT_AUTH_KEY_LEN];
|
uint8_t k[DECT_AUTH_KEY_LEN], ks[DECT_AUTH_KEY_LEN];
|
||||||
uint8_t dck[DECT_CIPHER_KEY_LEN];
|
uint8_t dck[DECT_CIPHER_KEY_LEN];
|
||||||
|
uint8_t ac[DECT_AUTH_CODE_LEN];
|
||||||
uint32_t res1;
|
uint32_t res1;
|
||||||
uint8_t ac[4];
|
|
||||||
|
|
||||||
switch (msgtype) {
|
switch (msgtype) {
|
||||||
case DECT_MM_KEY_ALLOCATE:
|
case DECT_MM_KEY_ALLOCATE:
|
||||||
|
@ -209,7 +207,7 @@ static void dect_pt_track_key_allocation(struct dect_pt *pt, uint8_t msgtype,
|
||||||
pt->res == NULL)
|
pt->res == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
dect_pin_to_ac("0000", ac, sizeof(ac));
|
dect_pin_to_ac(auth_pin, ac, sizeof(ac));
|
||||||
dect_auth_b1(ac, sizeof(ac), k);
|
dect_auth_b1(ac, sizeof(ac), k);
|
||||||
|
|
||||||
dect_auth_a11(k, pt->rs->value, ks);
|
dect_auth_a11(k, pt->rs->value, ks);
|
||||||
|
|
Reference in New Issue