module L3_Common {

import from Osmocom_Types all;
import from General_Types all;

type record AuthVector {
	OCT16 rand,
	OCT4 sres,
	OCT8 kc
	/* FIXME: 3G elements */
}

private function f_rnd_oct(integer len) return octetstring {
	var integer i;
	var octetstring res;
	for (i := 0; i < len; i := i + 1) {
		res[i] := int2oct(float2int(rnd()*256.0), 1);
	}
	return res;
}

function f_gen_auth_vec_2g() return AuthVector {
	var AuthVector vec;
	vec.rand := f_rnd_oct(16);
	vec.sres := f_rnd_oct(4);
	vec.kc := f_rnd_oct(8);
	return vec;
}



}
