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/des.c

    r21363 r21422  
    66 * Based on public domain code by Tom St Denis (tomstdenis@iahu.ca)
    77 * and Dobes Vandermeer.
    8  * 
     8 *
    99 * This library is free software; you can redistribute it and/or
    1010 * modify it under the terms of the GNU Lesser General Public
     
    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
    3232#include "tomcrypt.h"
    3333
    34 #define EN0 0 
     34#define EN0 0
    3535#define DE1 1
    3636
    3737static const ulong32 bytebit[8] =
    3838{
    39     0200, 0100, 040, 020, 010, 04, 02, 01 
     39    0200, 0100, 040, 020, 010, 04, 02, 01
    4040};
    4141
     
    4747    0x800UL,     0x400UL,     0x200UL,     0x100UL,
    4848    0x80UL,      0x40UL,      0x20UL,      0x10UL,
    49     0x8UL,       0x4UL,       0x2UL,       0x1L 
     49    0x8UL,       0x4UL,       0x2UL,       0x1L
    5050};
    5151
     
    5353
    5454static const unsigned char pc1[56] = {
    55     56, 48, 40, 32, 24, 16,  8,  0, 57, 49, 41, 33, 25, 17, 
    56      9,  1, 58, 50, 42, 34, 26, 18, 10,  2, 59, 51, 43, 35, 
     55    56, 48, 40, 32, 24, 16,  8,  0, 57, 49, 41, 33, 25, 17,
     56     9,  1, 58, 50, 42, 34, 26, 18, 10,  2, 59, 51, 43, 35,
    5757    62, 54, 46, 38, 30, 22, 14,  6, 61, 53, 45, 37, 29, 21,
    58     13,  5, 60, 52, 44, 36, 28, 20, 12,  4, 27, 19, 11,  3 
     58    13,  5, 60, 52, 44, 36, 28, 20, 12,  4, 27, 19, 11,  3
    5959};
    6060
    6161static const unsigned char totrot[16] = {
    6262    1,   2,  4,  6,
    63     8,  10, 12, 14, 
    64     15, 17, 19, 21, 
     63    8,  10, 12, 14,
     64    15, 17, 19, 21,
    6565    23, 25, 27, 28
    6666};
     
    12791279  CONST64(0x40404000,0x00404040), CONST64(0x40404010,0x00404040), CONST64(0x40404000,0x40404040), CONST64(0x40404010,0x40404040)
    12801280  }};
    1281  
     1281
    12821282
    12831283static void cookey(const ulong32 *raw1, ulong32 *keyout);
     
    13641364    right = block[1];
    13651365
    1366     tmp = des_ip[0][byte(leftt, 0)] ^
    1367           des_ip[1][byte(leftt, 1)] ^
    1368           des_ip[2][byte(leftt, 2)] ^
    1369           des_ip[3][byte(leftt, 3)] ^
    1370           des_ip[4][byte(right, 0)] ^
    1371           des_ip[5][byte(right, 1)] ^
    1372           des_ip[6][byte(right, 2)] ^
    1373           des_ip[7][byte(right, 3)];
    1374     leftt = (ulong32)(tmp >> 32);
    1375     right = (ulong32)(tmp & 0xFFFFFFFFUL);
     1366    tmp =          des_ip[0][byte(leftt, 0)];
     1367    XOR_int64(tmp, des_ip[1][byte(leftt, 1)]);
     1368    XOR_int64(tmp, des_ip[2][byte(leftt, 2)]);
     1369    XOR_int64(tmp, des_ip[3][byte(leftt, 3)]);
     1370    XOR_int64(tmp, des_ip[4][byte(right, 0)]);
     1371    XOR_int64(tmp, des_ip[5][byte(right, 1)]);
     1372    XOR_int64(tmp, des_ip[6][byte(right, 2)]);
     1373    XOR_int64(tmp, des_ip[7][byte(right, 3)]);
     1374    leftt = (ulong32)(HI_int64(tmp));
     1375    right = (ulong32)(LO_int64(tmp));
    13761376
    13771377    for (cur_round = 0; cur_round < 8; cur_round++) {
     
    13991399    }
    14001400
    1401     tmp = des_fp[0][byte(leftt, 0)] ^
    1402           des_fp[1][byte(leftt, 1)] ^
    1403           des_fp[2][byte(leftt, 2)] ^
    1404           des_fp[3][byte(leftt, 3)] ^
    1405           des_fp[4][byte(right, 0)] ^
    1406           des_fp[5][byte(right, 1)] ^
    1407           des_fp[6][byte(right, 2)] ^
    1408           des_fp[7][byte(right, 3)];
    1409     leftt = (ulong32)(tmp >> 32);
    1410     right = (ulong32)(tmp & 0xFFFFFFFFUL);
    1411    
     1401    tmp =          des_ip[0][byte(leftt, 0)];
     1402    XOR_int64(tmp, des_ip[1][byte(leftt, 1)]);
     1403    XOR_int64(tmp, des_ip[2][byte(leftt, 2)]);
     1404    XOR_int64(tmp, des_ip[3][byte(leftt, 3)]);
     1405    XOR_int64(tmp, des_ip[4][byte(right, 0)]);
     1406    XOR_int64(tmp, des_ip[5][byte(right, 1)]);
     1407    XOR_int64(tmp, des_ip[6][byte(right, 2)]);
     1408    XOR_int64(tmp, des_ip[7][byte(right, 3)]);
     1409    leftt = (ulong32)(HI_int64(tmp));
     1410    right = (ulong32)(LO_int64(tmp));
     1411
    14121412    block[0] = right;
    14131413    block[1] = leftt;
Note: See TracChangeset for help on using the changeset viewer.