dect
/
dectmon
Archived
13
0
Fork 0

auth: allow specifying PIN on commandline (-p/--auth-pin)

Signed-off-by: Patrick McHardy <kaber@trash.net>
This commit is contained in:
Patrick McHardy 2010-11-13 18:31:36 +01:00
parent ede151676c
commit 79004e4687
3 changed files with 11 additions and 5 deletions

View File

@ -14,6 +14,7 @@ enum {
DECTMON_DUMP_NWK = 0x4,
};
extern const char *auth_pin;
extern uint32_t dumpopts;
struct dect_ops;

View File

@ -29,13 +29,14 @@ static struct dect_ops ops = {
.raw_ops = &raw_ops,
};
#define OPTSTRING "c:m:d:n:h"
#define OPTSTRING "c:m:d:n:p:h"
enum {
OPT_CLUSTER = 'c',
OPT_DUMP_MAC = 'm',
OPT_DUMP_DLC = 'd',
OPT_DUMP_NWK = 'n',
OPT_AUTH_PIN = 'p',
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-dlc", .has_arg = true, .flag = 0, .val = OPT_DUMP_DLC, },
{ .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, },
{ },
};
@ -60,6 +62,7 @@ static uint32_t opt_yesno(const char *arg, uint32_t opts, uint32_t flag)
return opts;
}
const char *auth_pin = "0000";
uint32_t dumpopts = DECTMON_DUMP_NWK;
int main(int argc, char **argv)
@ -86,6 +89,9 @@ int main(int argc, char **argv)
case OPT_DUMP_NWK:
dumpopts = opt_yesno(optarg, dumpopts, DECTMON_DUMP_NWK);
break;
case OPT_AUTH_PIN:
auth_pin = optarg;
break;
case OPT_HELP:
printf("%s [ options ]\n"
"\n"
@ -93,6 +99,7 @@ int main(int argc, char **argv)
" -m/--dump-mac=yes/no\n"
" -d/--dump-dlc=yes/no\n"
" -n/--dump-nwk=yes/no\n"
" -p/--auth-pin=PIN\n"
" -h/--help\n",
argv[0]);

View File

@ -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);
dect_pt_read_uak(pt);
printf("new PT\n");
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 dck[DECT_CIPHER_KEY_LEN];
uint8_t ac[DECT_AUTH_CODE_LEN];
uint32_t res1;
uint8_t ac[4];
switch (msgtype) {
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)
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_a11(k, pt->rs->value, ks);