syntax = "proto3"; package iqkms.ethereum; // Ethereum signer service. service Signer { // Sign a Keccak256 message digest (for e.g. EIP-712) // rpc SignDigest (SignDigestRequest) returns (Signature) {} // Sign a Keccak256 message digest according to EIP-155 conventions. // rpc SignEip155 (SignEip155Request) returns (Signature) {} } // Request to sign a raw message digest. message SignDigestRequest { // Private key's Ethereum address (`0x` followed by 40 hex chars). string address = 1; // Keccak256 message digest to be signed. bytes digest = 2; } // Request to sign a message digest with EIP-155 conventions. // message SignEip155Request { // Private key's Ethereum address (`0x` followed by 40 hex chars). string address = 1; // Keccak256 message digest to be signed. bytes digest = 2; // Chain ID to use when computing EIP-155's `v` value. uint64 chain_id = 3; } // ECDSA/secp256k1 signature with recovery component `v`. message Signature { /// ECDSA signature `r` component. bytes r = 1; /// ECDSA signature `s` component. bytes s = 2; /// `v` component: encodes recovery ID and chain ID. uint64 v = 3; }