@@ -12,12 +12,11 @@ Record t :=
12
12
uid: uid_ty;
13
13
next_ver: ver_ty;
14
14
next_epoch: epoch_ty;
15
- serv_γ: gname;
16
15
serv_sig_pk: list w8;
17
16
serv_vrf_pk: list w8;
18
17
}.
19
18
Global Instance eta : Settable _ :=
20
- settable! mk <γ; uid; next_ver; next_epoch; serv_γ; serv_sig_pk; serv_vrf_pk>.
19
+ settable! mk <γ; uid; next_ver; next_epoch; serv_sig_pk; serv_vrf_pk>.
21
20
22
21
Section defs.
23
22
Context `{!heapGS Σ, !pavG Σ}.
@@ -968,16 +967,33 @@ Proof.
968
967
rewrite lookup_fmap in Hlook_final. simplify_eq/=. naive_solver.
969
968
Qed .
970
969
971
- Lemma wp_newClient (uid servAddr : w64) sl_servSigPk servSigPk (servVrfPk : loc ) :
970
+ Lemma wp_NewClient sl_serv_sig_pk sl_serv_vrf_pk (uid serv_addr : w64) (serv_sig_pk serv_vrf_pk : list w8 ) :
972
971
{{{
973
- "#Hsl_servSigPk" ∷ own_slice_small sl_servSigPk byteT DfracDiscarded servSigPk
972
+ "#Hsl_serv_sig_pk" ∷ own_slice_small sl_serv_sig_pk byteT DfracDiscarded serv_sig_pk ∗
973
+ "#Hsl_serv_vrf_pk" ∷ own_slice_small sl_serv_vrf_pk byteT DfracDiscarded serv_vrf_pk
974
974
}}}
975
- newClient #uid #servAddr (slice_val sl_servSigPk) #servVrfPk
975
+ NewClient #uid #serv_addr (slice_val sl_serv_sig_pk) (slice_val sl_serv_vrf_pk)
976
976
{{{
977
- ptr_cli cli_γ r1 r2 , RET #ptr_cli ;
978
- "Hown_cli" ∷ Client.own ptr_cli (Client.mk cli_γ uid (W64 0) (W64 0) r1 servSigPk r2 )
977
+ ptr_c γ , RET #ptr_c ;
978
+ "Hown_cli" ∷ Client.own ptr_c (Client.mk γ uid (W64 0) (W64 0) serv_sig_pk serv_vrf_pk )
979
979
}}}.
980
- Proof . Admitted .
980
+ Proof .
981
+ iIntros (Φ) "H HΦ". iNamed "H". wp_rec.
982
+ wp_apply wp_Dial. iIntros "*". iNamed 1.
983
+ wp_apply (wp_VrfPublicKeyDecode with "[$Hsl_serv_vrf_pk]").
984
+ iClear "Hsl_serv_vrf_pk". iIntros "*". iNamed 1.
985
+ wp_apply wp_NewMap. iIntros "* Hown_sd_refs". wp_apply wp_fupd.
986
+ wp_apply wp_allocStruct; [val_ty|]. iIntros "* H".
987
+ iDestruct (struct_fields_split with "H") as "H". iNamed "H".
988
+ iMod (struct_field_pointsto_persist with "uid") as "#uid".
989
+ iMod (struct_field_pointsto_persist with "servCli") as "#servCli".
990
+ iMod (struct_field_pointsto_persist with "servSigPk") as "#servSigPk".
991
+ iMod (struct_field_pointsto_persist with "servVrfPk") as "#servVrfPk".
992
+ iMod (struct_field_pointsto_persist with "seenDigs") as "#seenDigs".
993
+ iMod (mono_list_own_alloc []) as (?) "[Hown_digs _]".
994
+ iApply "HΦ". iFrame "∗#". iExists ∅. iModIntro.
995
+ repeat try iSplit; naive_solver.
996
+ Qed .
981
997
982
998
End wps.
983
999
0 commit comments