TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
G3D::Crypto Class Reference

#include <Crypto.h>

Static Public Member Functions

static uint32 crc32 (const void *bytes, size_t numBytes)
 
static MD5Hash md5 (const void *bytes, size_t numBytes)
 
static int smallPrime (int n)
 
static int numSmallPrimes ()
 

Detailed Description

Cryptography and hashing helper functions

Member Function Documentation

uint32 G3D::Crypto::crc32 ( const void *  bytes,
size_t  numBytes 
)
static

Computes the CRC32 value of a byte array. CRC32 is designed to be a hash function that produces different values for similar strings.

This implementation is compatible with PKZIP and GZIP.

Based on http://www.gamedev.net/reference/programming/features/crc32/

66  {
67  alwaysAssertM(numBytes < 0xFFFFFFFF, "Not implemented for arrays larger than 2^32 bytes");
68  return ::crc32(::crc32(0, Z_NULL, 0), static_cast<const Bytef *>(byte), (int)numBytes);
69 }
#define byte(x, n)
Definition: tomcrypt_macros.h:419
static uint32 crc32(const void *bytes, size_t numBytes)
Definition: Crypto.cpp:66
#define Z_NULL
Definition: zlib.h:208
#define alwaysAssertM(exp, message)
Definition: debugAssert.h:165

+ Here is the caller graph for this function:

MD5Hash G3D::Crypto::md5 ( const void *  bytes,
size_t  numBytes 
)
static

Computes the MD5 hash (message digest) of a byte stream, as defined by http://www.ietf.org/rfc/rfc1321.txt.

[Based] on implementation by L. Peter Deutsch, ghost.[email protected]@ala.[email protected]ddin..[email protected]com

65  {
66  md5_state_t state;
67  md5_init(&state);
68  md5_append(&state, (const uint8*)data, (int)n);
69 
70  MD5Hash h;
71  md5_finish(&state, &(h[0]));
72  return h;
73 }
static void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes)
Definition: Crypto_md5.cpp:411
static void md5_init(md5_state_t *pms)
Definition: Crypto_md5.cpp:401
struct G3D::md5_state_s md5_state_t
static void md5_finish(md5_state_t *pms, md5_byte_t digest[16])
Definition: Crypto_md5.cpp:449
uint8_t uint8
Definition: Define.h:152

+ Here is the call graph for this function:

int G3D::Crypto::numSmallPrimes ( )
static

Returns 1 + the largest value that can be passed to smallPrime.

62  {
63  return 303;
64 }

+ Here is the caller graph for this function:

int G3D::Crypto::smallPrime ( int  n)
static

Returns the nth prime less than 2000 in constant time. The first prime has index 0 and is the number 2.

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

+ Here is the call graph for this function:


The documentation for this class was generated from the following files: