When using a Defender Relayer to sign messages, Relayer.sign()
returns 67 bytes instead of the required 65 bytes for the recover method in utils/cryptography/ECDSA.sol
. Is there something I can do to bring down the amount of bytes? When I use ethers for signing the same message, it correctly returns 65 bytes so there must be going something wrong in the defender-relay-client
library. Thanks in advance!
Code:
import { Relayer } from 'defender-relay-client';
const relayer = new Relayer({
apiKey: process.env.OPENZEPPELIN_DEFENDER_RELAYER_API_KEY ?? '',
apiSecret: process.env.OPENZEPPELIN_DEFENDER_RELAYER_API_SECRET ?? '',
});
const init = async () => {
const message = ethers.utils.solidityKeccak256(
['string',],
['Hello World!',],
);
const response = await relayer.sign({ message });
const result = ethers.utils.arrayify(response.sig);
console.log(result);
}
init();
Result:
Uint8Array(67) [
92, 78, 26, 44, 187, 193, 51, 149, 185, 88, 200,
44, 32, 6, 237, 39, 93, 25, 174, 240, 54, 138,
106, 43, 235, 80, 209, 246, 193, 213, 171, 80, 26,
129, 217, 63, 7, 94, 187, 228, 250, 108, 50, 244,
125, 169, 82, 173, 54, 47, 147, 44, 231, 88, 158,
3, 31, 109, 195, 184, 123, 56, 250, 53, 2, 113,
37
]