안녕하세요. 메타마스크에서 구현을 하다가 카이카스에서 저도 ecRecover에서 제대로 된 결과값이 나오지 않았는데요. 크롬 Kaikas 지갑의 sign 메서드 서명자 복원 방법문의 이 글을 보고 caver.validator.validateSignedMessage 서명된 signature에서 ecRecover와 같이 주소를 얻을고 했는데요.
해당 문서에서 signature가 단순히 string이 아니라 길이 3의 array이더라고요. sign에서 얻은 한줄의 signature를 어떻게 3개의 signature로 변환할 수 있나요? SignatureData랑 연결이 되어있다고 하는데 관련된 메소드를 찾을 수 없어 질문드려요
sign + ecRecover 으로 사이닝 해서 signature를 얻고 디코딩해서 address를 얻을 수 있는것 맞죠?
해결했어요
const sig = await caver.klay.sign(nonce, walletAccount?.toLowerCase(), “”); const v = ‘0x’ + sig.substring(2).substring(128, 130); const r = ‘0x’ + sig.substring(2).substring(0, 64); const s = ‘0x’ + sig.substring(2).substring(64, 128); // signature-to-vrs.js · GitHub const signature = [v, r, s];
console.log(await caver.validator.validateSignedMessage(nonce, signature, walletAccount?.toLowerCase()));