// EncryptPacket encrypts the given packet. func (i *Ident) EncryptPacket(packet transport.Packet, publicKey *[crypto.PublicKeySize]byte) (*Packet, error) { base := Packet{} base.Type = packet.ID() base.SenderPublicKey = i.PublicKey payload, err := packet.MarshalBinary() if err != nil { return nil, err } encryptedPayload, nonce, err := i.EncryptBlob(payload, publicKey) if err != nil { return nil, err } base.Nonce = nonce base.Payload = encryptedPayload return &base, nil }