- vk (sk : Bytes) : Bytes
- sign (sk nonce msg : Bytes) : Bytes
- verify (vk msg sig : Bytes) : Bool
Instances
@[instance_reducible]
Equations
- DY.Signature'.Vk.instFunctorSizeOfSubF = { sizeOf := fun {t : Type} [SizeOf t] (x : DY.Signature'.Vk.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
- sk : Bytes
- nonce : Bytes
- msg : Bytes
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]
Instances For
@[instance_reducible]
Equations
Instances For
Equations
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.Signature'.attacker_knows_vk
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes]
[BaseAttackerKnowledge]
[AttackerKnowledge]
[AttackerKnowledge.Has attackerKnowledge]
(sk : Bytes)
(tr : ExecTrace)
:
sk.AttackerKnows tr → (vk sk).AttackerKnows tr
theorem
DY.Signature'.attacker_knows_sign
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes]
[BaseAttackerKnowledge]
[AttackerKnowledge]
[AttackerKnowledge.Has attackerKnowledge]
(sk nonce msg : Bytes)
(tr : ExecTrace)
:
sk.AttackerKnows tr → nonce.AttackerKnows tr → msg.AttackerKnows tr → (sign sk nonce msg).AttackerKnows tr
Equations
- DY.Signature'.Broken.vkInvert pk = match pk.view? DY.Signature'.Vk.SubF with | some { sk := sk } => some sk | none => none
Instances For
- brokenPk : Bytes
Instances For
@[instance_reducible]
Equations
Instances For
def
DY.Signature'.Broken.baseAttackerKnowledge.internal
[BytesFunctor]
[ExecTraceTypes]
(id✝ : Fin 1)
:
Equations
Instances For
@[instance_reducible]
Equations
Instances For
def
DY.Signature'.Broken.ThisVkHasBeenBroken
[BytesFunctor]
[ExecTraceTypes]
[ExecTraceTypes.Has ExecEntryT]
(brokenPk : Bytes)
(tr : ExecTrace)
:
Equations
- DY.Signature'.Broken.ThisVkHasBeenBroken brokenPk tr = DY.Trace.EventLogged { brokenPk := brokenPk } tr
Instances For
def
DY.Signature'.Broken.OneVkHasBeenBroken
[BytesFunctor]
[ExecTraceTypes]
[ExecTraceTypes.Has ExecEntryT]
(tr : ExecTrace)
:
Equations
- DY.Signature'.Broken.OneVkHasBeenBroken tr = ∃ (brokenPk : DY.Bytes), DY.Signature'.Broken.ThisVkHasBeenBroken brokenPk tr
Instances For
def
DY.Signature'.Broken.label
[BytesFunctor]
[ExecTraceTypes]
[ExecTraceTypes.Has ExecEntryT]
(brokenPk : Bytes)
:
Equations
- DY.Signature'.Broken.label brokenPk = { isCorrupt := fun (tr : DY.ExecTrace) => DY.Signature'.Broken.ThisVkHasBeenBroken brokenPk tr, isCorruptLater := ⋯ }
Instances For
def
DY.Signature'.Broken.breakVk
[BytesFunctor]
[ExecTraceTypes]
[ExecTraceTypes.Has ExecEntryT]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Network.ExecEntryT]
(msgHandle : Nat)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
DY.Signature'.Broken.breakVk.reachability
[BytesFunctor]
[ExecTraceTypes]
[ExecTraceTypes.Has ExecEntryT]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Network.ExecEntryT]
:
Equations
- DY.Signature'.Broken.breakVk.reachability = DY.ReachabilityConfig.make fun (handle : Nat) => DY.Signature'.Broken.breakVk handle
Instances For
def
DY.Signature'.Vk.invariants
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has Signature'.SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
DY.Signature'.vk.WellFormed
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
[BytesInvariants]
[BytesInvariants.Has Vk.invariants]
(inp : Bytes)
(tr : ProofTrace)
:
@[simp]
theorem
DY.Signature'.vk.label
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
[BytesInvariants]
[BytesInvariants.Has Vk.invariants]
(inp : Bytes)
(tr : ProofTrace)
:
@[simp]
theorem
DY.Signature'.vk.Invariant
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
[BytesInvariants]
[BytesInvariants.Has Vk.invariants]
(sk : Bytes)
(tr : ProofTrace)
:
sk.Invariant tr → (sk.label tr).canFlow (Broken.label (vk sk)) (Trace.erase tr) → (vk sk).Invariant tr
Instances
class
DY.Signature'.SignPredProof
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesInvariants]
[SignPred]
:
- pred_later [BytesWellFormedLater] [GetUsageLater] [GetLabelLater] (skUsg : Usage) (vk msg : Bytes) (tr1 tr2 : ProofTrace) : vk.WellFormed tr1 → msg.WellFormed tr1 → tr1 ≤ tr2 → SignPred.pred skUsg vk msg tr1 → SignPred.pred skUsg vk msg tr2
Instances
theorem
DY.Signature'.SignPredProof.pred_later_fast
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesInvariants]
[SignPred]
[SignPredProof]
[BytesInvariantsProofs]
(skUsg : Usage)
(vk msg : Bytes)
(tr1 tr2 : ProofTrace)
:
vk.Invariant tr1 → msg.Invariant tr1 → tr1 ≤ tr2 → SignPred.pred skUsg vk msg tr1 → SignPred.pred skUsg vk msg tr2
def
DY.Signature'.Sign.invariants
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has Signature'.SubF]
[SignPred]
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
DY.Signature'.invariants.internal
[BytesFunctor]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor.Has SubF]
[SignPred]
[ExecTraceTypes.Has Broken.ExecEntryT]
(id✝ : Fin 2)
:
Equations
Instances For
@[instance_reducible]
def
DY.Signature'.invariants
[BytesFunctor]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor.Has SubF]
[SignPred]
[ExecTraceTypes.Has Broken.ExecEntryT]
:
Equations
Instances For
def
DY.Bytes.SignkeyHasUsage'
[BytesFunctor]
[BytesFunctor.Has Signature'.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
(vk : Bytes)
(skUsg : Usage)
(tr : ProofTrace)
:
Equations
- vk.SignkeyHasUsage' skUsg tr = DY.Bytes.XXXHasUsage DY.Signature'.extractSignkey✝ vk skUsg tr
Instances For
theorem
DY.Bytes.SignkeyHasUsage'_vk
[BytesFunctor]
[BytesFunctor.Has Signature'.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
(sk : Bytes)
(skUsg : Usage)
(tr : ProofTrace)
:
theorem
DY.Bytes.SignkeyHasUsage'_later
[BytesFunctor]
[BytesFunctor.Has Signature'.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
[BytesInvariantsProofs]
[ExecTraceTypes.Has Signature'.Broken.ExecEntryT]
[Signature'.SignPred]
[BytesInvariants.Has Signature'.invariants]
(b : Bytes)
(usg : Usage)
(tr1 tr2 : ProofTrace)
:
b.WellFormed tr1 → tr1 ≤ tr2 → b.SignkeyHasUsage' usg tr1 → b.SignkeyHasUsage' usg tr2
theorem
DY.Bytes.SignkeyHasUsage'_later_fast
[BytesFunctor]
[BytesFunctor.Has Signature'.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
[BytesInvariantsProofs]
[ExecTraceTypes.Has Signature'.Broken.ExecEntryT]
[Signature'.SignPred]
[BytesInvariants.Has Signature'.invariants]
(b : Bytes)
(usg : Usage)
(tr1 tr2 : ProofTrace)
:
b.Invariant tr1 → tr1 ≤ tr2 → b.SignkeyHasUsage' usg tr1 → b.SignkeyHasUsage' usg tr2
noncomputable def
DY.Bytes.signkeyLabel'
[BytesFunctor]
[BytesFunctor.Has Signature'.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
(vk : Bytes)
(tr : ProofTrace)
:
Equations
- vk.signkeyLabel' tr = DY.Bytes.xxxLabel DY.Signature'.extractSignkey✝ vk tr
Instances For
theorem
DY.Bytes.signkeyLabel'_later
[BytesFunctor]
[BytesFunctor.Has Signature'.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
[BytesInvariantsProofs]
[ExecTraceTypes.Has Signature'.Broken.ExecEntryT]
[Signature'.SignPred]
[BytesInvariants.Has Signature'.invariants]
(b : Bytes)
(tr1 tr2 : ProofTrace)
:
b.WellFormed tr1 → tr1 ≤ tr2 → b.signkeyLabel' tr1 = b.signkeyLabel' tr2
theorem
DY.Bytes.signkeyLabel'_later_fast
[BytesFunctor]
[BytesFunctor.Has Signature'.SubF]
[ExecTraceTypes]
[ProofTraceTypes]
[BytesInvariants]
[BytesInvariantsProofs]
[ExecTraceTypes.Has Signature'.Broken.ExecEntryT]
[Signature'.SignPred]
[BytesInvariants.Has Signature'.invariants]
(b : Bytes)
(tr1 tr2 : ProofTrace)
:
b.Invariant tr1 → tr1 ≤ tr2 → b.signkeyLabel' tr1 = b.signkeyLabel' tr2
@[simp]
theorem
DY.Signature'.sign.WellFormed
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
[SignPred]
[BytesInvariants]
[BytesInvariants.Has invariants]
(sk nonce msg : Bytes)
(tr : ProofTrace)
:
@[simp]
theorem
DY.Signature'.sign.label
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
[SignPred]
[BytesInvariants]
[BytesInvariants.Has invariants]
(sk nonce msg : Bytes)
(tr : ProofTrace)
:
@[simp]
theorem
DY.Signature'.sign.Invariant
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
[SignPred]
[BytesInvariants]
[BytesInvariants.Has invariants]
(sk nonce msg : Bytes)
(sk_usg : Usage)
(tr : ProofTrace)
:
@[simp]
theorem
DY.Signature'.verify.Invariant
[ExecTraceTypes]
[ProofTraceTypes]
[BytesFunctor]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has Broken.ExecEntryT]
[SignPred]
[BytesInvariants]
[BytesInvariants.Has invariants]
(vk msg sig : Bytes)
(skUsg : Usage)
(tr : ProofTrace)
:
vk.Invariant tr →
msg.Invariant tr →
sig.Invariant tr →
vk.SignkeyHasUsage' skUsg tr →
verify vk msg sig = true →
(skUsg.type = "SigKey" → SignPred.pred skUsg vk msg tr) ∨ (vk.signkeyLabel' tr).canFlow Label.pub (Trace.erase tr)
@[instance_reducible]
instance
DY.Signature'.instHasGhostArgumentTypeBytesSignUsage
[BytesFunctor]
[BytesFunctor.Has SubF]
(sk nonce msg : Bytes)
:
HasGhostArgumentType (sign sk nonce msg) Usage
@[instance_reducible]
instance
DY.Signature'.instHasGhostArgumentTypeBoolVerifyBytesUsage
[BytesFunctor]
[BytesFunctor.Has SubF]
(vkey msg sig : Bytes)
:
HasGhostArgumentType (verify vkey msg sig) Usage
@[instance_reducible]
instance
DY.Signature'.Broken.instEventInvBrokenDhEvent
[BytesFunctor]
[ExecTraceTypes]
[ProofTraceTypes]
:
Equations
- DY.Signature'.Broken.instEventInvBrokenDhEvent = { invariant := fun (x : DY.ProofTrace) (x_1 : DY.Signature'.Broken.BrokenDhEvent) => True }
@[instance_reducible]
Equations
Instances For
instance
DY.Signature'.Broken.instReachableImpliesInvariantReachability
[BytesFunctor]
[ExecTraceTypes]
[ProofTraceTypes]
[TraceInvariant]
[BytesInvariants]
[BytesFunctor.Has SubF]
[ExecTraceTypes.Has ExecEntryT]
[SignPred]
[BytesInvariants.Has invariants]
[BytesInvariantsProofs]
[ExecTraceTypes.Has Network.ExecEntryT]
[ProofTraceTypes.Has ProofEntryT]
[ProofTraceTypes.Has Network.ProofEntryT]
[TraceInvariant.Has Network.ProofEntryT]
[TraceInvariant.Has ProofEntryT]
: