auth_core: don't use anonymous unions to make certain gcc versions happy

This commit is contained in:
Harald Welte 2011-12-07 11:35:02 +01:00
parent 57143a4361
commit aae2362455
5 changed files with 20 additions and 20 deletions

View File

@ -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 */

View File

@ -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;

View File

@ -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);
}

View File

@ -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);

View File

@ -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);