// FillKeyExchange sets elements of kx with key exchange information from the // ratchet. func (r *Ratchet) FillKeyExchange(kx *pond.KeyExchange) error { if r.kxPrivate0 == nil || r.kxPrivate1 == nil { return errors.New("ratchet: handshake already complete") } var public0, public1 [32]byte curve25519.ScalarBaseMult(&public0, r.kxPrivate0) curve25519.ScalarBaseMult(&public1, r.kxPrivate1) kx.Dh = public0[:] kx.Dh1 = public1[:] return nil }