I have a really simple ProVerif problem.
My current proverif code looks like this:
(* communication channel *)
free c:channel.
(* trying to create a mac scheme *)
type mkey.
fun mac (bitstring , mkey): bitstring.
(* Symmetric encryption *)
type skey.
type coins.
fun internal_senc(bitstring , skey , coins): bitstring.
reduc forall m:bitstring , k:skey , r:coins;
sdec(internal_senc(m,k,r),k) = m.
let ED(AppKey :skey, NwkKey :mkey, JoinEUI :bitstring,DevEUI :bitstring, DevNonce : bitstring) =
out(c, (JoinEUI,DevEUI,DevNonce, mac((JoinEUI , DevEUI , DevNonce), NwkKey) )).
let JS(AppKey :skey, NwkKey :mkey,DevEUI :bitstring, JoinEUI :bitstring, DevAddr : bitstring) =
in(c,x: bitstring);
let(=JoinEUI, =DevEUI,new DevNonce: bitstring, =mac((JoinEUI,DevEUI,DevNonce), NwkKey)) = x in
new JoinNonce : bitstring;
new Home_NetID : bitstring;
let MIC2 : bitstring = mac(NwkKey, (JoinNonce,Home_NetID, DevAddr)) in
out(c,JoinEUI).
So, in luine 25, that looks like this:
let(=JoinEUI, =DevEUI, DevNonce: bitstring, =mac((JoinEUI,DevEUI,DevNonce), NwkKey)) = x in
It fails on the DevNonce
part, which I don't get at all, just look at page 71 of the manual a new variable is creaetd fine that way.
How do I actually declare this value in the JS proces?