code: func ClientOpen(c, agentPub []byte, clientPrv *ecdsa.PrivateKey) ([]byte, error) {
  	sealed, sig := UnpackSignature(c)
  	hash := ethcrypto.Keccak256(sealed)
  
  	if !VerifySignature(agentPub, hash, sig) {
  		return nil, ErrWrongSignature
  	}
  
  	prv := ecies.ImportECDSA(clientPrv)
  
  	opened, err := prv.Decrypt(sealed, nil, nil)
  	if err != nil {
  		return nil, err
  	}
  
  	return opened, nil
  }
docs: // ClientOpen decrypts message using client's key and verifies using agent's key.