(
key: &SigningKey,
prefix: &[u8],
appid: &[u8],
message: &[u8],
)
| 30 | } |
| 31 | |
| 32 | pub(crate) fn sign_message( |
| 33 | key: &SigningKey, |
| 34 | prefix: &[u8], |
| 35 | appid: &[u8], |
| 36 | message: &[u8], |
| 37 | ) -> Result<Vec<u8>> { |
| 38 | let digest = Keccak256::new_with_prefix([prefix, b":", appid, message].concat()); |
| 39 | let (signature, recid) = key.sign_digest_recoverable(digest)?; |
| 40 | let mut signature_bytes = signature.to_vec(); |
| 41 | signature_bytes.push(recid.to_byte()); |
| 42 | Ok(signature_bytes) |
| 43 | } |
| 44 | |
| 45 | /// Sign a message with a timestamp to prevent replay attacks. |
| 46 | /// The signature covers: prefix + ":" + appid + timestamp_be_bytes + message |
no test coverage detected