mirror of https://gerrit.osmocom.org/libosmocore
auth_core: don't use anonymous unions to make certain gcc versions happy
This commit is contained in:
parent
57143a4361
commit
aae2362455
|
@ -37,7 +37,7 @@ struct osmo_sub_auth_data {
|
|||
struct {
|
||||
uint8_t ki[16];
|
||||
} gsm;
|
||||
};
|
||||
} u;
|
||||
};
|
||||
|
||||
/* data structure describing a computed auth vector, generated by AuC */
|
||||
|
|
|
@ -28,7 +28,7 @@ static int c128v1_gen_vec(struct osmo_auth_vector *vec,
|
|||
struct osmo_sub_auth_data *aud,
|
||||
const uint8_t *_rand)
|
||||
{
|
||||
comp128(aud->gsm.ki, _rand, vec->sres, vec->kc);
|
||||
comp128(aud->u.gsm.ki, _rand, vec->sres, vec->kc);
|
||||
vec->auth_types = OSMO_AUTH_TYPE_GSM;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -62,17 +62,17 @@ static int milenage_gen_vec(struct osmo_auth_vector *vec,
|
|||
uint8_t sqn[6];
|
||||
int rc;
|
||||
|
||||
sqn_u64_to_48bit(sqn, aud->umts.sqn);
|
||||
milenage_generate(aud->umts.opc, aud->umts.amf, aud->umts.k,
|
||||
sqn_u64_to_48bit(sqn, aud->u.umts.sqn);
|
||||
milenage_generate(aud->u.umts.opc, aud->u.umts.amf, aud->u.umts.k,
|
||||
sqn, _rand,
|
||||
vec->autn, vec->ik, vec->ck, vec->res, &res_len);
|
||||
vec->res_len = res_len;
|
||||
rc = gsm_milenage(aud->umts.opc, aud->umts.k, _rand, vec->sres, vec->kc);
|
||||
rc = gsm_milenage(aud->u.umts.opc, aud->u.umts.k, _rand, vec->sres, vec->kc);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
vec->auth_types = OSMO_AUTH_TYPE_UMTS | OSMO_AUTH_TYPE_GSM;
|
||||
aud->umts.sqn++;
|
||||
aud->u.umts.sqn++;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -85,12 +85,12 @@ static int milenage_gen_vec_auts(struct osmo_auth_vector *vec,
|
|||
uint8_t sqn_out[6];
|
||||
int rc;
|
||||
|
||||
rc = milenage_auts(aud->umts.opc, aud->umts.k,
|
||||
rc = milenage_auts(aud->u.umts.opc, aud->u.umts.k,
|
||||
rand_auts, auts, sqn_out);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
aud->umts.sqn = sqn_48bit_to_u64(sqn_out) + 1;
|
||||
aud->u.umts.sqn = sqn_48bit_to_u64(sqn_out) + 1;
|
||||
|
||||
return milenage_gen_vec(vec, aud, _rand);
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ static void dump_auth_vec(struct osmo_auth_vector *vec)
|
|||
static struct osmo_sub_auth_data test_aud = {
|
||||
.type = OSMO_AUTH_TYPE_UMTS,
|
||||
.algo = OSMO_AUTH_ALG_MILENAGE,
|
||||
.umts = {
|
||||
.u.umts = {
|
||||
.opc = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
||||
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
|
||||
.k = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
||||
|
@ -70,7 +70,7 @@ int main(int argc, char **argv)
|
|||
if (rc < 0) {
|
||||
printf("AUTS failed\n");
|
||||
} else {
|
||||
printf("AUTS success: SEQ.MS = %lu\n", test_aud.umts.sqn);
|
||||
printf("AUTS success: SEQ.MS = %lu\n", test_aud.u.umts.sqn);
|
||||
}
|
||||
|
||||
exit(0);
|
||||
|
|
|
@ -102,12 +102,12 @@ int main(int argc, char **argv)
|
|||
case 'k':
|
||||
switch (test_aud.type) {
|
||||
case OSMO_AUTH_TYPE_GSM:
|
||||
rc = osmo_hexparse(optarg, test_aud.gsm.ki,
|
||||
sizeof(test_aud.gsm.ki));
|
||||
rc = osmo_hexparse(optarg, test_aud.u.gsm.ki,
|
||||
sizeof(test_aud.u.gsm.ki));
|
||||
break;
|
||||
case OSMO_AUTH_TYPE_UMTS:
|
||||
rc = osmo_hexparse(optarg, test_aud.umts.k,
|
||||
sizeof(test_aud.umts.k));
|
||||
rc = osmo_hexparse(optarg, test_aud.u.umts.k,
|
||||
sizeof(test_aud.u.umts.k));
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "please specify 2g/3g first!\n");
|
||||
|
@ -118,16 +118,16 @@ int main(int argc, char **argv)
|
|||
fprintf(stderr, "Only UMTS has OPC\n");
|
||||
exit(2);
|
||||
}
|
||||
rc = osmo_hexparse(optarg, test_aud.umts.opc,
|
||||
sizeof(test_aud.umts.opc));
|
||||
rc = osmo_hexparse(optarg, test_aud.u.umts.opc,
|
||||
sizeof(test_aud.u.umts.opc));
|
||||
break;
|
||||
case 'f':
|
||||
if (test_aud.type != OSMO_AUTH_TYPE_UMTS) {
|
||||
fprintf(stderr, "Only UMTS has AMF\n");
|
||||
exit(2);
|
||||
}
|
||||
rc = osmo_hexparse(optarg, test_aud.umts.amf,
|
||||
sizeof(test_aud.umts.amf));
|
||||
rc = osmo_hexparse(optarg, test_aud.u.umts.amf,
|
||||
sizeof(test_aud.u.umts.amf));
|
||||
break;
|
||||
case 's':
|
||||
if (test_aud.type != OSMO_AUTH_TYPE_UMTS) {
|
||||
|
@ -135,7 +135,7 @@ int main(int argc, char **argv)
|
|||
exit(2);
|
||||
}
|
||||
ul = strtoul(optarg, 0, 10);
|
||||
test_aud.umts.sqn = ul;
|
||||
test_aud.u.umts.sqn = ul;
|
||||
break;
|
||||
case 'r':
|
||||
rc = osmo_hexparse(optarg, _rand, sizeof(_rand));
|
||||
|
@ -175,7 +175,7 @@ int main(int argc, char **argv)
|
|||
if (rc < 0) {
|
||||
printf("AUTS failed\n");
|
||||
} else {
|
||||
printf("AUTS success: SEQ.MS = %lu\n", test_aud.umts.sqn);
|
||||
printf("AUTS success: SEQ.MS = %lu\n", test_aud.u.umts.sqn);
|
||||
}
|
||||
#endif
|
||||
exit(0);
|
||||
|
|
Loading…
Reference in New Issue