10 int CompareBigEndian(
const unsigned char* c1,
size_t c1len,
const unsigned char* c2,
size_t c2len)
12 while (c1len > c2len) {
18 while (c2len > c1len) {
37 const unsigned char vchMaxModOrder[32] = {
38 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
39 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
40 0xBA, 0xAE, 0xDC, 0xE6, 0xAF, 0x48, 0xA0, 0x3B,
41 0xBF, 0xD2, 0x5E, 0x8C, 0xD0, 0x36, 0x41, 0x40};
44 const unsigned char vchMaxModHalfOrder[32] = {
45 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
46 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
47 0x5D, 0x57, 0x6E, 0x73, 0x57, 0xA4, 0x50, 0x1D,
48 0xDF, 0xE9, 0x2F, 0x46, 0x68, 0x1B, 0x20, 0xA0};
50 const unsigned char vchZero[1] = {0};
55 bool Check(
const unsigned char* vch)
58 CompareBigEndian(vch, 32, vchZero, 0) > 0 &&
59 CompareBigEndian(vch, 32, vchMaxModOrder, 32) <= 0;
65 CompareBigEndian(vch, len, vchZero, 0) > 0 &&
66 CompareBigEndian(vch, len, half ? vchMaxModHalfOrder : vchMaxModOrder, 32) <= 0;