code: func (e *Envelope) OpenAsymmetric(key *ecdsa.PrivateKey) (*ReceivedMessage, error) {
  	message := &ReceivedMessage{Raw: e.Data}
  	err := message.decryptAsymmetric(key)
  	switch err {
  	case nil:
  		return message, nil
  	case ecies.ErrInvalidPublicKey: // addressed to somebody else
  		return nil, err
  	default:
  		return nil, fmt.Errorf("unable to open envelope, decrypt failed: %v", err)
  	}
  }
docs: // OpenAsymmetric tries to decrypt an envelope, potentially encrypted with a particular key.