Protocol Lab

Steps

    Protocol source (edit and run)
    actor id "Name" [group=G] [color=#hex]
    channel id "Label" member member ...   (* = public)
    
    gen who: a.pub a.priv [from x y]
    encrypt who: data with key as out
    decrypt who: cipher with key
    publish who: item -> channel
    fetch who: item <- channel
    send who -> to: item via channel
    forget who: item item
    assert who has|lacks item
    note text
    
    !step   must fail (an attack that should be blocked)
    ; text caption shown while the step plays
    names: x.pub + x.priv are a pair, x.key is symmetric, x.seed