// ReceiveFromMix decrypts a message received from the mix func ReceiveFromMix(receiveTemplate nymaddr.AddressTemplate, MailboxAddress, msg []byte) (decMessage, Nym []byte, err error) { if len(msg) < 2 { return nil, nil, ErrTooShort } headerLen := int(binary.BigEndian.Uint16(msg[0:2])) if len(msg) < 2+headerLen { return nil, nil, ErrTooShort } headerContent := msg[2 : 2+headerLen] nym, secret, err := receiveTemplate.GetPrivate(headerContent, MailboxAddress) if err != nil { return nil, nil, err } nonce := sha256.Sum256(headerContent) decMessage, err = GCMDecrypt(nonce[:], secret, msg[2+headerLen:]) if err != nil { return nil, nil, err } return decMessage, nym, nil }