ethers.js でメッセージのハッシュ値に署名するサンプルコードです。
// ethers.js をインポート
const ethers = require('ethers')
// 秘密鍵
let privateKey = "0x9729e15de7c9c0ec06ebc2ab7f4dcf796f24d5add48ddf3c424a8019e9061ad8"
// secp256k1 楕円曲線を使用する署名用のオブジェクト
let signingKey = new ethers.utils.SigningKey(privateKey);
// ハッシュ値を得たいメッセージ
let message = "piyopiyo!"
// メッセージのバイト列を取得
let messageBytes = ethers.utils.toUtf8Bytes(message)
// メッセージの Keccak ハッシュ値を取得
let messageDigest = ethers.utils.keccak256(messageBytes)
console.log(messageDigest)
// 署名を計算
let signature = signingKey.signDigest(messageDigest)
console.log(signature)