У меня очень простая проблема с ProVerif.
Мой текущий проверочный код выглядит так:
(*канал связи*)
бесплатный c:канал.
(*пытается создать схему Mac*)
введите mkey.
забавный mac (битовая строка, mkey): битовая строка.
(* Симметричное шифрование *)
введите ключ.
типа монеты.
fun internal_senc (битовая строка, ключ, монеты): битовая строка.
сократить для всех m:bitstring, k:skey, r:coins;
sdec(internal_senc(m,k,r),k) = m.
пусть ED(AppKey:skey, NwkKey:mkey, JoinEUI:битовая строка,DevEUI:битовая строка, DevNonce:битовая строка) =
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: битовая строка);
let(=JoinEUI, =DevEUI,new DevNonce: битовая строка, =mac((JoinEUI,DevEUI,DevNonce), NwkKey)) = x in
новый JoinNonce: битовая строка;
новый Home_NetID: битовая строка;
пусть MIC2: битовая строка = mac(NwkKey, (JoinNonce,Home_NetID, DevAddr)) в
выход(с,JoinEUI).
Итак, в luine 25 это выглядит так:
let(=JoinEUI, =DevEUI, DevNonce: битовая строка, =mac((JoinEUI,DevEUI,DevNonce), NwkKey)) = x in
Это терпит неудачу на DevNonce
часть, которую я вообще не понимаю, просто посмотрите на страницу 71 руководства таким образом создается новая переменная.
Как мне объявить это значение в процессах JS?