1
0
Fork 0
mirror of https://github.com/eosswedenorg/libantelope synced 2026-06-16 03:34:56 +02:00

src/wif/k1.cpp: implement sig_encoder_k1 and sig_decoder_k1

This commit is contained in:
Henrik Hautakoski 2023-03-25 18:16:10 +01:00
parent abdd84f257
commit be6c98f1bd

View file

@ -85,4 +85,34 @@ bool priv_decoder_k1(const std::vector<unsigned char>& buf, ec_privkey_t& priv)
return true; return true;
} }
void sig_encoder_k1(const ec_signature_t& sig, unsigned char *buf) {
checksum_t check = _checksum_suffix(sig.data(), EC_SIGNATURE_SIZE, "K1");
memcpy(buf, sig.data(), sig.size());
memcpy(buf + EC_SIGNATURE_SIZE, check.data(), check.size());
}
bool sig_decoder_k1(const std::vector<unsigned char>& buf, ec_signature_t& sig) {
checksum_t check;
if (buf.size() != EC_SIGNATURE_SIZE + CHECKSUM_SIZE) {
return false;
}
// Calculate checksum
check = _checksum_suffix(buf.data(), EC_SIGNATURE_SIZE, "K1");
// And validate
if (memcmp(buf.data() + EC_SIGNATURE_SIZE, check.data(), CHECKSUM_SIZE)) {
return false;
}
// Copy data to output
memcpy(sig.data(), buf.data(), sig.size());
return true;
}
}} // namespace libeosio::internal }} // namespace libeosio::internal