Sample function for signature verification
The contract platform also provides functions for signature verification. The sample function is as follows:
function hexstring2byte(byte bp1, byte bp2) public returns (byte) {
byte bp3;
byte bp4;
if(bp1 >= 0x30 && bp1 <= 0x39) {
bp3 = byte(uint8(bp1) - 0x30);
}
if(bp1 >= 0x41 && bp1 <= 0x46) {
bp3 = byte(uint8(bp1) - 0x41 + 10);
}
if(bp1 >= 0x61 && bp1 <= 0x66) {
bp3 = byte(uint8(bp1) - 0x61 + 10);
}
if(bp2 >= 0x30 && bp2 <= 0x39) {
bp4 = byte(uint8(bp2) - 0x30);
}
if(bp2 >= 0x41 && bp2 <= 0x46) {
bp4 = byte(uint8(bp2) - 0x41 + 10);
}
if(bp2 >= 0x61 && bp2 <= 0x66) {
bp4 = byte(uint8(bp2) - 0x61 + 10);
}
return ((bp3<<4) | bp4);
}
function test_verify_sig_rsa() public returns (bool)
{
bytes memory pub2 = new bytes(512);
bytes memory sig2 = new bytes(256);
bytes memory hash2 = new bytes(32);
bytes memory spub = new bytes(512*2);
bytes memory ssig = new bytes(256*2);
bytes memory shash = new bytes(32*2);
shash = "d7ad397f6ffa5d4f7f11e7217f241607dc30618c236d2c09c1b9ea8fdadee2e8";
spub = "b0a9703c3b5ad632a042abe4fa56d76a7b30a0c060ea2d3476e4b75a4de9ee77df6538bb5d8c65b20d6d841f8f602112135a4e471b820cacc3ea44ecf17d848cd03775f436599c6b5b7414af57d755c6d3a1dbd65a1a12f50a5caf1777133cd0072d1e692f32250cd9db5d24fd6beba5e5c5b5e5d27fcf0953a0a2b8937350551db5b7b40dfa54fb9873e49e391bdd7b09745663edd23bc0dbc2541c45ad205c14c3dc8beb5a4a27bfbbebe79bd2478d2c6a08035b803e6eb0543829d6477bffbb1014c6171b7728b23f0325bf17b5bd458c2ed403767300e862230a22a1c5792d672b639b546c0eef9dd021c3622238d5391c5251b5d7cddb77b460c221bb0900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001";
ssig = "ab4cba6dd4ee226d4b4a29458a1bad712e728b4b81e83f5d499ac1d8cc62b410b0a8207e266f83f94b54b3f9f2aa986709787a84f326602e3ad288c80bee1d731cd68c3336db607a686491c575add0b0e0315f5895eb9bf76529d30f06e1323b7c60723c1e6c03e53dbbe13db05aa72eece3eac29a7d4c2e6518bcaf7f7e9bc82f719446c88d0b59ee03a28ea61de2f49b916091adaffe73455109e56f742d68e3f880bb645502216c51adfe457bfe00d2d7b91b4e9cdaf6b71c88cbb620349c21c93e65e7230cbcfdd406da01921e5d744bf1694c40cf0f0dc41de42bdb35bc654547c9cf38de829a36836c31b3d2bfa1030cceada0bad681963b9c0843a579";
for (uint ip = 0; ip < 512; ip++) {
pub2[ip] = hexstring2byte(spub[2*ip], spub[2*ip+1]);
}
for ( ip = 0; ip < 256; ip++) {
sig2[ip] = hexstring2byte(ssig[2*ip], ssig[2*ip+1]);
}
for ( ip = 0; ip < 32; ip++) {
hash2[ip] = hexstring2byte(shash[2*ip], shash[2*ip+1]);
}
return verify_sig_rsa(hash2, pub2, sig2);
}
verify_sig_rsa
You can call the verify_sig_rsa function to verify a signature.
Function
verify_sig_rsa(bytes hash, bytes pub, bytes sig) returns(bool result);
Request parameters
Name | Required | Type | Description |
---|---|---|---|
hash | Yes | bytes | The data hash. |
pub | Yes | bytes | The public key data. |
sig | Yes | bytes | The signature data. |
Response parameters
Name | Required | Type | Description |
---|---|---|---|
result | Yes | bool | The return value of the method. A value of true indicates that the method is called. A value of false indicates that the call has failed. |