aboutsummaryrefslogtreecommitdiff
path: root/externals/g3dlite/Crypto.cpp
blob: c69b23375cee5888094992f58960e85a51df6dad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/**
 @file Crypto.cpp

 @author Morgan McGuire, http://graphics.cs.williams.edu


 @created 2006-03-28
 @edited  2006-04-06
 */

#include "G3D/platform.h"
#include "G3D/Crypto.h"
#include "G3D/g3dmath.h"
#include <zlib.h>

namespace G3D {
    

int Crypto::smallPrime(int n) {
    debugAssert(n < numSmallPrimes() && n >= 0);

    // From:
    // http://primes.utm.edu/lists/small/1000.txt

    static const int table[] = {
          2,      3,      5,      7,     11,     13,     17,     19,     23,     29, 
         31,     37,     41,     43,     47,     53,     59,     61,     67,     71, 
         73,     79,     83,     89,     97,    101,    103,    107,    109,    113, 
        127,    131,    137,    139,    149,    151,    157,    163,    167,    173, 
        179,    181,    191,    193,    197,    199,    211,    223,    227,    229, 
        233,    239,    241,    251,    257,    263,    269,    271,    277,    281, 
        283,    293,    307,    311,    313,    317,    331,    337,    347,    349, 
        353,    359,    367,    373,    379,    383,    389,    397,    401,    409, 
        419,    421,    431,    433,    439,    443,    449,    457,    461,    463, 
        467,    479,    487,    491,    499,    503,    509,    521,    523,    541, 
        547,    557,    563,    569,    571,    577,    587,    593,    599,    601, 
        607,    613,    617,    619,    631,    641,    643,    647,    653,    659, 
        661,    673,    677,    683,    691,    701,    709,    719,    727,    733, 
        739,    743,    751,    757,    761,    769,    773,    787,    797,    809, 
        811,    821,    823,    827,    829,    839,    853,    857,    859,    863, 
        877,    881,    883,    887,    907,    911,    919,    929,    937,    941, 
        947,    953,    967,    971,    977,    983,    991,    997,   1009,   1013, 
       1019,   1021,   1031,   1033,   1039,   1049,   1051,   1061,   1063,   1069, 
       1087,   1091,   1093,   1097,   1103,   1109,   1117,   1123,   1129,   1151, 
       1153,   1163,   1171,   1181,   1187,   1193,   1201,   1213,   1217,   1223, 
       1229,   1231,   1237,   1249,   1259,   1277,   1279,   1283,   1289,   1291, 
       1297,   1301,   1303,   1307,   1319,   1321,   1327,   1361,   1367,   1373, 
       1381,   1399,   1409,   1423,   1427,   1429,   1433,   1439,   1447,   1451, 
       1453,   1459,   1471,   1481,   1483,   1487,   1489,   1493,   1499,   1511, 
       1523,   1531,   1543,   1549,   1553,   1559,   1567,   1571,   1579,   1583, 
       1597,   1601,   1607,   1609,   1613,   1619,   1621,   1627,   1637,   1657, 
       1663,   1667,   1669,   1693,   1697,   1699,   1709,   1721,   1723,   1733, 
       1741,   1747,   1753,   1759,   1777,   1783,   1787,   1789,   1801,   1811,
       1823,   1831,   1847,   1861,   1867,   1871,   1873,   1877,   1879,   1889, 
       1901,   1907,   1913,   1931,   1933,   1949,   1951,   1973,   1979,   1987, 
       1993,   1997,   1999};

    return table[n];
}


int Crypto::numSmallPrimes() {
    return 303;
}

uint32 Crypto::crc32(const void* byte, size_t numBytes) {
    return ::crc32(::crc32(0, Z_NULL, 0), static_cast<const Bytef *>(byte), numBytes);
}

} // G3D