- dhPk (sk : Bytes) : Bytes
- dh (pk sk : Bytes) : Bytes
Instances
@[instance_reducible]
Equations
- DY.DiffieHellman.DhPk.instFunctorSizeOfSubF = { sizeOf := fun {t : Type} [SizeOf t] (x : DY.DiffieHellman.DhPk.SubF t) => match x with | { sk := sk } => sizeOf sk }
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
Instances For
@[instance_reducible]
Instances For
Equations
Instances For
@[reducible, inline]
Equations
- x.pack = DY.BytesView.pack x
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
Instances For
Equations
Instances For
theorem
DY.DiffieHellman.attacker_knows_dhPk
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes]
[BaseAttackerKnowledge]
[AttackerKnowledge]
[AttackerKnowledge.Has attackerKnowledge]
(sk : Bytes)
(tr : ExecTrace)
:
sk.AttackerKnows tr → (dhPk sk).AttackerKnows tr
theorem
DY.DiffieHellman.attacker_knows_dh
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes]
[BaseAttackerKnowledge]
[AttackerKnowledge]
[AttackerKnowledge.Has attackerKnowledge]
(pk sk : Bytes)
(tr : ExecTrace)
:
pk.AttackerKnows tr → sk.AttackerKnows tr → (dh pk sk).AttackerKnows tr
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
DY.DiffieHellman.dhPk.WellFormed
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[BytesInvariants]
[BytesInvariants.Has DhPk.invariants]
(sk : Bytes)
(tr : ProofTrace)
:
@[simp]
theorem
DY.DiffieHellman.dhPk.label
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[BytesInvariants]
[BytesInvariants.Has DhPk.invariants]
(sk : Bytes)
(tr : ProofTrace)
:
@[simp]
theorem
DY.DiffieHellman.dhPk.Invariant
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[BytesInvariants]
[BytesInvariants.Has DhPk.invariants]
(sk : Bytes)
(tr : ProofTrace)
:
def
DY.DiffieHellman.Dh.invariants
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has DiffieHellman.SubF]
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
DY.DiffieHellman.invariants.internal
[BytesFunctor]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor.Has SubF]
(id✝ : Fin 2)
:
Equations
Instances For
@[instance_reducible]
def
DY.DiffieHellman.invariants
[BytesFunctor]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor.Has SubF]
:
Equations
Instances For
noncomputable def
DY.Bytes.dhSkLabel
[BytesFunctor]
[BytesFunctor.Has DiffieHellman.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
(pk : Bytes)
(tr : ProofTrace)
:
Equations
- pk.dhSkLabel tr = DY.Bytes.xxxLabel DY.DiffieHellman.extractDhSk✝ pk tr
Instances For
theorem
DY.Bytes.dhSkLabel_dhPk
[BytesFunctor]
[BytesFunctor.Has DiffieHellman.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
[BytesInvariants.Has DiffieHellman.invariants]
(sk : Bytes)
(tr : ProofTrace)
:
theorem
DY.Bytes.dhSkLabel_later
[BytesFunctor]
[BytesFunctor.Has DiffieHellman.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
[BytesInvariants.Has DiffieHellman.invariants]
[GetLabelLater]
(b : Bytes)
(tr1 tr2 : ProofTrace)
:
b.WellFormed tr1 → tr1 ≤ tr2 → b.dhSkLabel tr1 = b.dhSkLabel tr2
theorem
DY.Bytes.dhSkLabel_later_fast
[BytesFunctor]
[BytesFunctor.Has DiffieHellman.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
[BytesInvariantsProofs]
[BytesInvariants.Has DiffieHellman.invariants]
(b : Bytes)
(tr1 tr2 : ProofTrace)
:
@[simp]
theorem
DY.DiffieHellman.dh.WellFormed
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[BytesInvariants]
[BytesInvariants.Has invariants]
(pk sk : Bytes)
(tr : ProofTrace)
:
@[simp]
theorem
DY.DiffieHellman.dh.label
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[BytesInvariants]
[BytesInvariants.Has invariants]
(pk sk : Bytes)
(tr : ProofTrace)
:
@[simp]
theorem
DY.DiffieHellman.dh.Invariant
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[BytesInvariants]
[BytesInvariants.Has invariants]
(pk sk : Bytes)
(tr : ProofTrace)
:
instance
DY.DiffieHellman.instHoareTriplePureBytesDhPkInvariantAndEqLabelLabelPub
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
[BytesInvariants.Has invariants]
(sk : Bytes)
:
HoareTriplePure (dhPk sk) (fun (tr : ProofTrace) => sk.Invariant tr) fun (res : Bytes) (tr : ProofTrace) =>
res.Invariant tr ∧ res.label tr = Label.pub
instance
DY.DiffieHellman.instHoareTriplePureBytesDhAndInvariantPublishableEqLabelLabelJoinDhSkLabel
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
[BytesInvariants.Has invariants]
(pk sk : Bytes)
:
HoareTriplePure (dh pk sk) (fun (tr : ProofTrace) => sk.Invariant tr ∧ pk.Publishable tr)
fun (res : Bytes) (tr : ProofTrace) => res.Invariant tr ∧ res.label tr = (sk.label tr).join (pk.dhSkLabel tr)