// PureNoise CryptoLib (c) 1997-2004, PureNoise Ltd Vaduz #ifndef _crypto_convert_h_ #define _crypto_convert_h_ #include #define BYTES_TO_BASE_16(x) (((x)*2 ) ) #define BASE_16_TO_BYTES(x) (((x) +1)/2) #define BYTES_TO_BASE_64(x) (((x)*4+2)/3) #define BASE_64_TO_BYTES(x) (((x)*3+3)/4) //#define BYTES_TO_BASE_128(x) (((x)*8+6)/7) //#define BASE_128_TO_BYTES(x) (((x)*7+7)/8) #if defined (_MSC_VER) #pragma warning (push) #pragma warning (disable:4307) #endif #define BYTES_TO_BASE_94(x) ((long)((((__int64)x)-211238639UL)*257820765UL/211238639UL+257820765UL)) #define BASE_94_TO_BYTES(x) ((long)((((__int64)x)*211238639UL+257820764UL)/257820765UL)) #define BYTES_TO_BASE_222(x) ((long)((((__int64)x)-783967460UL)*804645247UL/783967460UL+804645247UL)) #define BASE_222_TO_BYTES(x) ((long)((((__int64)x)*783967460UL+804645246UL)/804645247UL)) //#define BYTES_TO_BASE_252(x) ((long)((((__int64)x)-2385844360UL)*2392639479UL/2385844360UL+2392639479UL)) //#define BASE_252_TO_BYTES(x) ((long)((((__int64)x)*2385844360UL+2392639478UL)/2392639479UL)) #define BYTES_TO_BASE_255(x) ((long)((((__int64)x)-957049251UL)*957725233UL/957049251UL+957725233UL)) #define BASE_255_TO_BYTES(x) ((long)((((__int64)x)*957049251UL+957725232UL)/957725233UL)) //#define BYTES_TO_CHARS(x,base) ((long)(-((base)==16)&BYTES_TO_BASE_16(x)|-((base)==64)&BYTES_TO_BASE_64(x)|-((base)==94)&BYTES_TO_BASE_94(x)|-((base)==128)&BYTES_TO_BASE_128(x)|-((base)==222)&BYTES_TO_BASE_222(x)|-((base)==252)&BYTES_TO_BASE_252(x)|-((base)==255)&BYTES_TO_BASE_255(x))) //#define CHARS_TO_BYTES(x,base) ((long)(-((base)==16)&BASE_16_TO_BYTES(x)|-((base)==64)&BASE_64_TO_BYTES(x)|-((base)==94)&BASE_94_TO_BYTES(x)|-((base)==128)&BASE_128_TO_BYTES(x)|-((base)==222)&BASE_222_TO_BYTES(x)|-((base)==252)&BASE_252_TO_BYTES(x)|-((base)==255)&BASE_255_TO_BYTES(x))) #if defined (_MSC_VER) #pragma warning (pop) #endif //EXTERN const unsigned char BASE_16_CHARS[16]; EXTERN const unsigned char BASE_64_CHARS[64]; //EXTERN const unsigned char BASE_94_CHARS[94]; //EXTERN const unsigned char BASE_128_CHARS[128]; //EXTERN const unsigned char BASE_222_CHARS[222]; //EXTERN const unsigned char BASE_252_CHARS[252]; //EXTERN const unsigned char BASE_255_CHARS[255]; //EXTERN const unsigned char BASE_16_DIGITS[0x100]; //EXTERN const unsigned char BASE_64_DIGITS[0x100]; //EXTERN const unsigned char BASE_94_DIGITS[0x100]; //EXTERN const unsigned char BASE_128_DIGITS[0x100]; //EXTERN const unsigned char BASE_222_DIGITS[0x100]; //EXTERN const unsigned char BASE_252_DIGITS[0x100]; //EXTERN const unsigned char BASE_255_DIGITS[0x100]; EXTERN unsigned char * big_to_str (const unsigned long *inbig, unsigned char *outstr, const unsigned char base, const unsigned long total_chars); EXTERN unsigned long str_to_big (const unsigned char *instr, unsigned long *outbig, const unsigned char base, const unsigned long total_chars); EXTERN unsigned char * bytes_to_str (const unsigned char *inbytes, unsigned char *outstr, const unsigned char base, const unsigned long nbytes); EXTERN unsigned long str_to_bytes (const unsigned char *instr, unsigned char *outbytes, const unsigned char base, const unsigned long maxbytes); #endif // _crypto_convert_h_