diff --git a/lib/src/common/liblte_security.cc b/lib/src/common/liblte_security.cc index d8f76bf2c..7045ff2ac 100644 --- a/lib/src/common/liblte_security.cc +++ b/lib/src/common/liblte_security.cc @@ -1099,7 +1099,7 @@ LIBLTE_ERROR_ENUM liblte_security_decryption_eea2(uint8 *key, Document Reference: 35.206 v10.0.0 Annex 3 *********************************************************************/ LIBLTE_ERROR_ENUM liblte_security_milenage_f1(uint8 *k, - uint8 *op, + uint8 *op_c, uint8 *rand, uint8 *sqn, uint8 *amf, @@ -1108,13 +1108,13 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f1(uint8 *k, LIBLTE_ERROR_ENUM err = LIBLTE_ERROR_INVALID_INPUTS; ROUND_KEY_STRUCT round_keys; uint32 i; - uint8 op_c[16]; uint8 temp[16]; uint8 in1[16]; uint8 out1[16]; uint8 rijndael_input[16]; if(k != NULL && + op_c != NULL && rand != NULL && sqn != NULL && amf != NULL && @@ -1123,14 +1123,6 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f1(uint8 *k, // Initialize the round keys rijndael_key_schedule(k, &round_keys); - // Compute OPc - for(i=0;i<16;i++) - { - op_c[i] = op[i]; - } - - //compute_OPc(&round_keys, op, op_c); - // Compute temp for(i=0; i<16; i++) { @@ -1188,7 +1180,7 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f1(uint8 *k, Document Reference: 35.206 v10.0.0 Annex 3 *********************************************************************/ LIBLTE_ERROR_ENUM liblte_security_milenage_f1_star(uint8 *k, - uint8 *op, + uint8 *op_c, uint8 *rand, uint8 *sqn, uint8 *amf, @@ -1197,13 +1189,13 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f1_star(uint8 *k, LIBLTE_ERROR_ENUM err = LIBLTE_ERROR_INVALID_INPUTS; ROUND_KEY_STRUCT round_keys; uint32 i; - uint8 op_c[16]; uint8 temp[16]; uint8 in1[16]; uint8 out1[16]; uint8 rijndael_input[16]; if(k != NULL && + op_c != NULL && rand != NULL && sqn != NULL && amf != NULL && @@ -1212,14 +1204,6 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f1_star(uint8 *k, // Initialize the round keys rijndael_key_schedule(k, &round_keys); - for(i=0;i<16;i++) - { - op_c[i] = op[i]; - } - - // Compute OPc - //compute_OPc(&round_keys, op, op_c); - // Compute temp for(i=0; i<16; i++) { @@ -1277,7 +1261,7 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f1_star(uint8 *k, Document Reference: 35.206 v10.0.0 Annex 3 *********************************************************************/ LIBLTE_ERROR_ENUM liblte_security_milenage_f2345(uint8 *k, - uint8 *op, + uint8 *op_c, uint8 *rand, uint8 *res, uint8 *ck, @@ -1287,12 +1271,12 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f2345(uint8 *k, LIBLTE_ERROR_ENUM err = LIBLTE_ERROR_INVALID_INPUTS; ROUND_KEY_STRUCT round_keys; uint32 i; - uint8 op_c[16]; uint8 temp[16]; uint8 out[16]; uint8 rijndael_input[16]; if(k != NULL && + op_c != NULL && rand != NULL && res != NULL && ck != NULL && @@ -1302,12 +1286,6 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f2345(uint8 *k, // Initialize the round keys rijndael_key_schedule(k, &round_keys); - // Compute OPc - //compute_OPc(&round_keys, op, op_c); - for(i=0;i<16;i++) - { - op_c[i] = op[i]; - } // Compute temp for(i=0; i<16; i++) { @@ -1391,7 +1369,7 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f2345(uint8 *k, Document Reference: 35.206 v10.0.0 Annex 3 *********************************************************************/ LIBLTE_ERROR_ENUM liblte_security_milenage_f5_star(uint8 *k, - uint8 *op, + uint8 *op_c, uint8 *rand, uint8 *ak) { @@ -1404,19 +1382,13 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f5_star(uint8 *k, uint8 rijndael_input[16]; if(k != NULL && + op_c != NULL && rand != NULL && ak != NULL) { // Initialize the round keys rijndael_key_schedule(k, &round_keys); - // Compute OPc - //compute_OPc(&round_keys, op, op_c); - for(i=0;i<16;i++) - { - op_c[i] = op[i]; - } - // Compute temp for(i=0; i<16; i++) { @@ -1441,17 +1413,11 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f5_star(uint8 *k, { ak[i] = out[i]; } - err = LIBLTE_SUCCESS; } - return(err); } -/******************************************************************************* - LOCAL FUNCTIONS -*******************************************************************************/ - /********************************************************************* Name: compute_OPc @@ -1459,19 +1425,25 @@ LIBLTE_ERROR_ENUM liblte_security_milenage_f5_star(uint8 *k, Document Reference: 35.206 v10.0.0 Annex 3 *********************************************************************/ -void compute_OPc(ROUND_KEY_STRUCT *rk, +void compute_OPc(uint8 *k, uint8 *op, uint8 *op_c) { - uint32 i; - - rijndael_encrypt(op, rk, op_c); - for(i=0; i<16; i++) - { - op_c[i] ^= op[i]; - } + uint32 i; + ROUND_KEY_STRUCT round_keys; + rijndael_key_schedule(k, &round_keys); + rijndael_encrypt(op, round_keys, op_c); + for(i=0; i<16; i++) + { + op_c[i] ^= op[i]; + } } +/******************************************************************************* + LOCAL FUNCTIONS +*******************************************************************************/ + + /********************************************************************* Name: rijndael_key_schedule