Ignore:
Timestamp:
Aug 17, 2010, 11:51:11 PM (15 years ago)
Author:
dmik
Message:

Attempted to fix broken rsaenh.dll functionality when built by VAC 3 (that doesn't have a 64-bit integer type).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/rsaenh/tomcrypt.h

    r21363 r21422  
    2323
    2424/*
    25  * This file contains code from the LibTomCrypt cryptographic 
     25 * This file contains code from the LibTomCrypt cryptographic
    2626 * library written by Tom St Denis (tomstdenis@iahu.ca). LibTomCrypt
    2727 * is in the public domain. The code in this file is tailored to
    2828 * special requirements. Take a look at http://libtomcrypt.org for the
    29  * original version. 
     29 * original version.
    3030 */
    3131
     
    3737#include <stdlib.h>
    3838#include <limits.h>
     39
     40#if defined(__WIN32OS2__) && (__IBMC__ < 400) && (__IBMCPP__ < 360) && !defined(__WATCOMC__) && !defined(__EMX__)
     41
     42/* provide a better 64-bit integer storage than double */
     43typedef struct
     44{
     45    int lo;
     46    int hi;
     47} __long_long;
     48#define __int64 __long_long
     49
     50#define XOR_int64(a, b)     ((a).hi ^= (b).hi, (a).lo ^= (b).lo)
     51#define HI_int64(a)         ((a).hi)
     52#define LO_int64(a)         ((a).lo)
     53#define ASSIGN_int64(a, b)  ((a).hi = 0, (a).lo = (int)(b))
     54
     55#else
     56
     57#define XOR_int64(a, b)     ((a) ^= (b))
     58#define HI_int64(a)         ((a) >> 32)
     59#define LO_int64(a)         ((a) & 0xFFFFFFFFUL)
     60#define ASSIGN_int64(a, b)  ((a) = (b))
     61
     62#endif
     63
    3964#include "basetsd.h"
    4065
     
    76101};
    77102
     103#if defined(__WIN32OS2__) && (__IBMC__ < 400) && (__IBMCPP__ < 360) && !defined(__WATCOMC__) && !defined(__EMX__)
     104#define CONST64(a,b) { (b), (a) }
     105#else
    78106#define CONST64(a,b) ((((ULONG64)(a)) << 32) | (b))
     107#endif
    79108typedef ULONG64 ulong64;
    80109
    81 /* this is the "32-bit at least" data type 
    82  * Re-define it to suit your platform but it must be at least 32-bits 
     110/* this is the "32-bit at least" data type
     111 * Re-define it to suit your platform but it must be at least 32-bits
    83112 */
    84113typedef ULONG32 ulong32;
     
    118147#define byte(x, n) (((x) >> (8 * (n))) & 255)
    119148
    120 typedef struct tag_rc2_key { 
    121         unsigned xkey[64]; 
     149typedef struct tag_rc2_key {
     150        unsigned xkey[64];
    122151} rc2_key;
    123152
     
    182211 * [any size beyond that is ok provided it doesn't overflow the data type]
    183212 */
     213#if defined(__WIN32OS2__) && (__IBMC__ < 400) && (__IBMCPP__ < 360) && !defined(__WATCOMC__) && !defined(__EMX__)
     214typedef unsigned short     mp_digit;
     215typedef unsigned long      mp_word;
     216#define DIGIT_BIT 14
     217#else
    184218typedef unsigned long      mp_digit;
    185219typedef ulong64            mp_word;
    186220#define DIGIT_BIT 28
    187    
     221#endif
     222
    188223#define MP_DIGIT_BIT     DIGIT_BIT
    189224#define MP_MASK          ((((mp_digit)1)<<((mp_digit)DIGIT_BIT))-((mp_digit)1))
     
    217252/* #define MP_LOW_MEM */
    218253
     254#if defined(__WIN32OS2__) && (__IBMC__ < 400) && (__IBMCPP__ < 360) && !defined(__WATCOMC__) && !defined(__EMX__)
     255#define MP_PREC                 128    /* default digits of precision */
     256#else
    219257#define MP_PREC                 64     /* default digits of precision */
     258#endif
    220259
    221260/* size of comba arrays, should be at least 2 * 2**(BITS_PER_WORD - BITS_PER_DIGIT*2) */
     
    497536
    498537/* This gives [for a given bit size] the number of trials required
    499  * such that Miller-Rabin gives a prob of failure lower than 2^-96 
     538 * such that Miller-Rabin gives a prob of failure lower than 2^-96
    500539 */
    501540int mp_prime_rabin_miller_trials(int size);
     
    518557
    519558/* makes a truly random prime of a given size (bytes),
    520  * call with bbs = 1 if you want it to be congruent to 3 mod 4 
     559 * call with bbs = 1 if you want it to be congruent to 3 mod 4
    521560 *
    522561 * You have to supply a callback which fills in a buffer with random bytes.  "dat" is a parameter you can
     
    531570 *
    532571 * Flags are as follows:
    533  * 
     572 *
    534573 *   LTM_PRIME_BBS      - make prime congruent to 3 mod 4
    535574 *   LTM_PRIME_SAFE     - make sure (p-1)/2 is prime as well (implies LTM_PRIME_BBS)
Note: See TracChangeset for help on using the changeset viewer.