|▸ 1.Attacker constructs PUBKEY(nil).
|▸ 2.Attacker constructs SIGN(nil, PUBKEY(nil)).
|▸ 3.Attacker replaces gblongterm, gbssig, gbs, gbo (sent by Bob to Alice) with PUBKEY(nil), SIGN(nil, PUBKEY(nil)), PUBKEY(nil), PUBKEY(nil). (gblongterm was PUBKEY(blongterm); gbssig was SIGN(blongterm, gbs); gbs was PUBKEY(bs); gbo was PUBKEY(bo))
|▸ 4.Alice's SIGNVERIF(PUBKEY(nil), PUBKEY(nil), SIGN(nil, PUBKEY(nil)))? passes — the attacker controls one of its inputs.
|▸ 5.Attacker observes e1 on the wire, where it is AEAD_ENC(akenc, n_e1, m1, HASH(galongterm, PUBKEY(nil), gae2)).
|▸ 6.Attacker observes galongterm on the wire.
|▸ 7.Attacker constructs DH_KEX(galongterm, nil).
|▸ 8.Attacker observes gae1 on the wire.
|▸ 9.Attacker constructs DH_KEX(gae1, nil).
|▸ 10.Attacker constructs amaster, where it is HASH(DH_KEX(galongterm, nil), DH_KEX(gae1, nil), DH_KEX(gae1, nil), DH_KEX(gae1, nil)).
|▸ 11.Attacker observes gae2 on the wire.
|▸ 12.Attacker constructs DH_KEX(gae2, nil).
|▸ 13.Attacker constructs ack, where it is HKDF(amaster, DH_KEX(gae2, nil), nil)|2.
|▸ 14.Attacker constructs MAC(ack, nil).
|▸ 15.Attacker constructs akenc, where it is HKDF(nil, MAC(ack, nil), nil)|1.
|▸ 16.Attacker observes n_e1 on the wire.
|▸ 17.Attacker opens e1 with akenc, n_e1, obtaining m1.
>m1 (m1) is obtained by Attacker.