summaryrefslogtreecommitdiff
path: root/StormLib/src/libtomcrypt
diff options
context:
space:
mode:
authorbriaguya <70942617+briaguya-ai@users.noreply.github.com>2022-11-14 05:22:34 -0500
committerGitHub <noreply@github.com>2022-11-14 11:22:34 +0100
commit3914781ebfd5cb22717cc207cb3d37d8754d0eb7 (patch)
tree2e412b87e66b1deef47bef242e7189a200cea0ff /StormLib/src/libtomcrypt
parent9eb29ed81cb497a6a216811255f8af7daf3f8bd8 (diff)
Import libultraship as a submodule (#1943)
Co-authored-by: briaguya <briaguya> Co-authored-by: Christopher Leggett <chris@leggett.dev> Co-authored-by: David Chavez <davi@dcvz.io>
Diffstat (limited to 'StormLib/src/libtomcrypt')
-rw-r--r--StormLib/src/libtomcrypt/src/hashes/hash_memory.c69
-rw-r--r--StormLib/src/libtomcrypt/src/hashes/md5.c368
-rw-r--r--StormLib/src/libtomcrypt/src/hashes/sha1.c288
-rw-r--r--StormLib/src/libtomcrypt/src/headers/tomcrypt.h91
-rw-r--r--StormLib/src/libtomcrypt/src/headers/tomcrypt_argchk.h38
-rw-r--r--StormLib/src/libtomcrypt/src/headers/tomcrypt_cfg.h144
-rw-r--r--StormLib/src/libtomcrypt/src/headers/tomcrypt_cipher.h891
-rw-r--r--StormLib/src/libtomcrypt/src/headers/tomcrypt_custom.h424
-rw-r--r--StormLib/src/libtomcrypt/src/headers/tomcrypt_hash.h378
-rw-r--r--StormLib/src/libtomcrypt/src/headers/tomcrypt_mac.h384
-rw-r--r--StormLib/src/libtomcrypt/src/headers/tomcrypt_macros.h424
-rw-r--r--StormLib/src/libtomcrypt/src/headers/tomcrypt_math.h500
-rw-r--r--StormLib/src/libtomcrypt/src/headers/tomcrypt_misc.h23
-rw-r--r--StormLib/src/libtomcrypt/src/headers/tomcrypt_pk.h558
-rw-r--r--StormLib/src/libtomcrypt/src/headers/tomcrypt_pkcs.h89
-rw-r--r--StormLib/src/libtomcrypt/src/headers/tomcrypt_prng.h199
-rw-r--r--StormLib/src/libtomcrypt/src/math/ltm_desc.c483
-rw-r--r--StormLib/src/libtomcrypt/src/math/multi.c61
-rw-r--r--StormLib/src/libtomcrypt/src/math/rand_prime.c87
-rw-r--r--StormLib/src/libtomcrypt/src/misc/base64_decode.c104
-rw-r--r--StormLib/src/libtomcrypt/src/misc/crypt_argchk.c30
-rw-r--r--StormLib/src/libtomcrypt/src/misc/crypt_find_hash.c40
-rw-r--r--StormLib/src/libtomcrypt/src/misc/crypt_find_prng.c41
-rw-r--r--StormLib/src/libtomcrypt/src/misc/crypt_hash_descriptor.c27
-rw-r--r--StormLib/src/libtomcrypt/src/misc/crypt_hash_is_valid.c36
-rw-r--r--StormLib/src/libtomcrypt/src/misc/crypt_libc.c43
-rw-r--r--StormLib/src/libtomcrypt/src/misc/crypt_ltc_mp_descriptor.c13
-rw-r--r--StormLib/src/libtomcrypt/src/misc/crypt_prng_descriptor.c26
-rw-r--r--StormLib/src/libtomcrypt/src/misc/crypt_prng_is_valid.c36
-rw-r--r--StormLib/src/libtomcrypt/src/misc/crypt_register_hash.c54
-rw-r--r--StormLib/src/libtomcrypt/src/misc/crypt_register_prng.c54
-rw-r--r--StormLib/src/libtomcrypt/src/misc/zeromem.c34
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_bit_string.c102
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_boolean.c47
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_choice.c182
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_ia5_string.c96
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_integer.c110
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_object_identifier.c99
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_octet_string.c91
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_printable_string.c96
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_ex.c287
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_flexi.c386
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_multi.c139
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_short_integer.c68
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_utctime.c127
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_decode_utf8_string.c111
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_bit_string.c89
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_boolean.c51
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_ia5_string.c85
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_integer.c130
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_object_identifier.c111
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_octet_string.c86
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_printable_string.c85
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_sequence_ex.c335
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_sequence_multi.c138
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_set.c103
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_setof.c162
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_short_integer.c97
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_utctime.c83
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_encode_utf8_string.c105
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_length_bit_string.c54
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_length_boolean.c35
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_length_ia5_string.c194
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_length_integer.c82
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_length_object_identifier.c89
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_length_octet_string.c53
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_length_printable_string.c166
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_length_sequence.c169
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_length_short_integer.c70
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_length_utctime.c46
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_length_utf8_string.c83
-rw-r--r--StormLib/src/libtomcrypt/src/pk/asn1/der_sequence_free.c65
-rw-r--r--StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_map.c76
-rw-r--r--StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c207
-rw-r--r--StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c222
-rw-r--r--StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_points.c60
-rw-r--r--StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c196
-rw-r--r--StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c147
-rw-r--r--StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c108
-rw-r--r--StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c189
-rw-r--r--StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c177
-rw-r--r--StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c175
-rw-r--r--StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c110
-rw-r--r--StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c111
-rw-r--r--StormLib/src/libtomcrypt/src/pk/rsa/rsa_exptmod.c113
-rw-r--r--StormLib/src/libtomcrypt/src/pk/rsa/rsa_free.c34
-rw-r--r--StormLib/src/libtomcrypt/src/pk/rsa/rsa_import.c143
-rw-r--r--StormLib/src/libtomcrypt/src/pk/rsa/rsa_make_key.c112
-rw-r--r--StormLib/src/libtomcrypt/src/pk/rsa/rsa_sign_hash.c134
-rw-r--r--StormLib/src/libtomcrypt/src/pk/rsa/rsa_verify_hash.c167
-rw-r--r--StormLib/src/libtomcrypt/src/pk/rsa/rsa_verify_simple.c87
91 files changed, 0 insertions, 13312 deletions
diff --git a/StormLib/src/libtomcrypt/src/hashes/hash_memory.c b/StormLib/src/libtomcrypt/src/hashes/hash_memory.c
deleted file mode 100644
index 1daf0bffa..000000000
--- a/StormLib/src/libtomcrypt/src/hashes/hash_memory.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-/**
- @file hash_memory.c
- Hash memory helper, Tom St Denis
-*/
-
-/**
- Hash a block of memory and store the digest.
- @param hash The index of the hash you wish to use
- @param in The data you wish to hash
- @param inlen The length of the data to hash (octets)
- @param out [out] Where to store the digest
- @param outlen [in/out] Max size and resulting size of the digest
- @return CRYPT_OK if successful
-*/
-int hash_memory(int hash, const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen)
-{
- hash_state *md;
- int err;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- if ((err = hash_is_valid(hash)) != CRYPT_OK) {
- return err;
- }
-
- if (*outlen < hash_descriptor[hash].hashsize) {
- *outlen = hash_descriptor[hash].hashsize;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- md = XMALLOC(sizeof(hash_state));
- if (md == NULL) {
- return CRYPT_MEM;
- }
-
- if ((err = hash_descriptor[hash].init(md)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- if ((err = hash_descriptor[hash].process(md, in, inlen)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- err = hash_descriptor[hash].done(md, out);
- *outlen = hash_descriptor[hash].hashsize;
-LBL_ERR:
-#ifdef LTC_CLEAN_STACK
- zeromem(md, sizeof(hash_state));
-#endif
- XFREE(md);
-
- return err;
-}
-
-/* $Source: /cvs/libtom/libtomcrypt/src/hashes/helper/hash_memory.c,v $ */
-/* $Revision: 1.6 $ */
-/* $Date: 2006/12/28 01:27:23 $ */
diff --git a/StormLib/src/libtomcrypt/src/hashes/md5.c b/StormLib/src/libtomcrypt/src/hashes/md5.c
deleted file mode 100644
index 4cbd000c0..000000000
--- a/StormLib/src/libtomcrypt/src/hashes/md5.c
+++ /dev/null
@@ -1,368 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-
-/**
- @file md5.c
- LTC_MD5 hash function by Tom St Denis
-*/
-
-#ifdef LTC_MD5
-
-const struct ltc_hash_descriptor md5_desc =
-{
- "md5",
- 3,
- 16,
- 64,
-
- /* OID */
- { 1, 2, 840, 113549, 2, 5, },
- 6,
-
- &md5_init,
- &md5_process,
- &md5_done,
- &md5_test,
- NULL
-};
-
-#define F(x,y,z) (z ^ (x & (y ^ z)))
-#define G(x,y,z) (y ^ (z & (y ^ x)))
-#define H(x,y,z) (x^y^z)
-#define I(x,y,z) (y^(x|(~z)))
-
-#ifdef LTC_SMALL_CODE
-
-#define FF(a,b,c,d,M,s,t) \
- a = (a + F(b,c,d) + M + t); a = ROL(a, s) + b;
-
-#define GG(a,b,c,d,M,s,t) \
- a = (a + G(b,c,d) + M + t); a = ROL(a, s) + b;
-
-#define HH(a,b,c,d,M,s,t) \
- a = (a + H(b,c,d) + M + t); a = ROL(a, s) + b;
-
-#define II(a,b,c,d,M,s,t) \
- a = (a + I(b,c,d) + M + t); a = ROL(a, s) + b;
-
-static const unsigned char Worder[64] = {
- 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
- 1,6,11,0,5,10,15,4,9,14,3,8,13,2,7,12,
- 5,8,11,14,1,4,7,10,13,0,3,6,9,12,15,2,
- 0,7,14,5,12,3,10,1,8,15,6,13,4,11,2,9
-};
-
-static const unsigned char Rorder[64] = {
- 7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,
- 5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,
- 4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,
- 6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21
-};
-
-static const ulong32 Korder[64] = {
-0xd76aa478UL, 0xe8c7b756UL, 0x242070dbUL, 0xc1bdceeeUL, 0xf57c0fafUL, 0x4787c62aUL, 0xa8304613UL, 0xfd469501UL,
-0x698098d8UL, 0x8b44f7afUL, 0xffff5bb1UL, 0x895cd7beUL, 0x6b901122UL, 0xfd987193UL, 0xa679438eUL, 0x49b40821UL,
-0xf61e2562UL, 0xc040b340UL, 0x265e5a51UL, 0xe9b6c7aaUL, 0xd62f105dUL, 0x02441453UL, 0xd8a1e681UL, 0xe7d3fbc8UL,
-0x21e1cde6UL, 0xc33707d6UL, 0xf4d50d87UL, 0x455a14edUL, 0xa9e3e905UL, 0xfcefa3f8UL, 0x676f02d9UL, 0x8d2a4c8aUL,
-0xfffa3942UL, 0x8771f681UL, 0x6d9d6122UL, 0xfde5380cUL, 0xa4beea44UL, 0x4bdecfa9UL, 0xf6bb4b60UL, 0xbebfbc70UL,
-0x289b7ec6UL, 0xeaa127faUL, 0xd4ef3085UL, 0x04881d05UL, 0xd9d4d039UL, 0xe6db99e5UL, 0x1fa27cf8UL, 0xc4ac5665UL,
-0xf4292244UL, 0x432aff97UL, 0xab9423a7UL, 0xfc93a039UL, 0x655b59c3UL, 0x8f0ccc92UL, 0xffeff47dUL, 0x85845dd1UL,
-0x6fa87e4fUL, 0xfe2ce6e0UL, 0xa3014314UL, 0x4e0811a1UL, 0xf7537e82UL, 0xbd3af235UL, 0x2ad7d2bbUL, 0xeb86d391UL
-};
-
-#else
-
-#define FF(a,b,c,d,M,s,t) \
- a = (a + F(b,c,d) + M + t); a = ROLc(a, s) + b;
-
-#define GG(a,b,c,d,M,s,t) \
- a = (a + G(b,c,d) + M + t); a = ROLc(a, s) + b;
-
-#define HH(a,b,c,d,M,s,t) \
- a = (a + H(b,c,d) + M + t); a = ROLc(a, s) + b;
-
-#define II(a,b,c,d,M,s,t) \
- a = (a + I(b,c,d) + M + t); a = ROLc(a, s) + b;
-
-
-#endif
-
-#ifdef LTC_CLEAN_STACK
-static int _md5_compress(hash_state *md, unsigned char *buf)
-#else
-static int md5_compress(hash_state *md, unsigned char *buf)
-#endif
-{
- ulong32 i, W[16], a, b, c, d;
-#ifdef LTC_SMALL_CODE
- ulong32 t;
-#endif
-
- /* copy the state into 512-bits into W[0..15] */
- for (i = 0; i < 16; i++) {
- LOAD32L(W[i], buf + (4*i));
- }
-
- /* copy state */
- a = md->md5.state[0];
- b = md->md5.state[1];
- c = md->md5.state[2];
- d = md->md5.state[3];
-
-#ifdef LTC_SMALL_CODE
- for (i = 0; i < 16; ++i) {
- FF(a,b,c,d,W[Worder[i]],Rorder[i],Korder[i]);
- t = d; d = c; c = b; b = a; a = t;
- }
-
- for (; i < 32; ++i) {
- GG(a,b,c,d,W[Worder[i]],Rorder[i],Korder[i]);
- t = d; d = c; c = b; b = a; a = t;
- }
-
- for (; i < 48; ++i) {
- HH(a,b,c,d,W[Worder[i]],Rorder[i],Korder[i]);
- t = d; d = c; c = b; b = a; a = t;
- }
-
- for (; i < 64; ++i) {
- II(a,b,c,d,W[Worder[i]],Rorder[i],Korder[i]);
- t = d; d = c; c = b; b = a; a = t;
- }
-
-#else
- FF(a,b,c,d,W[0],7,0xd76aa478UL)
- FF(d,a,b,c,W[1],12,0xe8c7b756UL)
- FF(c,d,a,b,W[2],17,0x242070dbUL)
- FF(b,c,d,a,W[3],22,0xc1bdceeeUL)
- FF(a,b,c,d,W[4],7,0xf57c0fafUL)
- FF(d,a,b,c,W[5],12,0x4787c62aUL)
- FF(c,d,a,b,W[6],17,0xa8304613UL)
- FF(b,c,d,a,W[7],22,0xfd469501UL)
- FF(a,b,c,d,W[8],7,0x698098d8UL)
- FF(d,a,b,c,W[9],12,0x8b44f7afUL)
- FF(c,d,a,b,W[10],17,0xffff5bb1UL)
- FF(b,c,d,a,W[11],22,0x895cd7beUL)
- FF(a,b,c,d,W[12],7,0x6b901122UL)
- FF(d,a,b,c,W[13],12,0xfd987193UL)
- FF(c,d,a,b,W[14],17,0xa679438eUL)
- FF(b,c,d,a,W[15],22,0x49b40821UL)
- GG(a,b,c,d,W[1],5,0xf61e2562UL)
- GG(d,a,b,c,W[6],9,0xc040b340UL)
- GG(c,d,a,b,W[11],14,0x265e5a51UL)
- GG(b,c,d,a,W[0],20,0xe9b6c7aaUL)
- GG(a,b,c,d,W[5],5,0xd62f105dUL)
- GG(d,a,b,c,W[10],9,0x02441453UL)
- GG(c,d,a,b,W[15],14,0xd8a1e681UL)
- GG(b,c,d,a,W[4],20,0xe7d3fbc8UL)
- GG(a,b,c,d,W[9],5,0x21e1cde6UL)
- GG(d,a,b,c,W[14],9,0xc33707d6UL)
- GG(c,d,a,b,W[3],14,0xf4d50d87UL)
- GG(b,c,d,a,W[8],20,0x455a14edUL)
- GG(a,b,c,d,W[13],5,0xa9e3e905UL)
- GG(d,a,b,c,W[2],9,0xfcefa3f8UL)
- GG(c,d,a,b,W[7],14,0x676f02d9UL)
- GG(b,c,d,a,W[12],20,0x8d2a4c8aUL)
- HH(a,b,c,d,W[5],4,0xfffa3942UL)
- HH(d,a,b,c,W[8],11,0x8771f681UL)
- HH(c,d,a,b,W[11],16,0x6d9d6122UL)
- HH(b,c,d,a,W[14],23,0xfde5380cUL)
- HH(a,b,c,d,W[1],4,0xa4beea44UL)
- HH(d,a,b,c,W[4],11,0x4bdecfa9UL)
- HH(c,d,a,b,W[7],16,0xf6bb4b60UL)
- HH(b,c,d,a,W[10],23,0xbebfbc70UL)
- HH(a,b,c,d,W[13],4,0x289b7ec6UL)
- HH(d,a,b,c,W[0],11,0xeaa127faUL)
- HH(c,d,a,b,W[3],16,0xd4ef3085UL)
- HH(b,c,d,a,W[6],23,0x04881d05UL)
- HH(a,b,c,d,W[9],4,0xd9d4d039UL)
- HH(d,a,b,c,W[12],11,0xe6db99e5UL)
- HH(c,d,a,b,W[15],16,0x1fa27cf8UL)
- HH(b,c,d,a,W[2],23,0xc4ac5665UL)
- II(a,b,c,d,W[0],6,0xf4292244UL)
- II(d,a,b,c,W[7],10,0x432aff97UL)
- II(c,d,a,b,W[14],15,0xab9423a7UL)
- II(b,c,d,a,W[5],21,0xfc93a039UL)
- II(a,b,c,d,W[12],6,0x655b59c3UL)
- II(d,a,b,c,W[3],10,0x8f0ccc92UL)
- II(c,d,a,b,W[10],15,0xffeff47dUL)
- II(b,c,d,a,W[1],21,0x85845dd1UL)
- II(a,b,c,d,W[8],6,0x6fa87e4fUL)
- II(d,a,b,c,W[15],10,0xfe2ce6e0UL)
- II(c,d,a,b,W[6],15,0xa3014314UL)
- II(b,c,d,a,W[13],21,0x4e0811a1UL)
- II(a,b,c,d,W[4],6,0xf7537e82UL)
- II(d,a,b,c,W[11],10,0xbd3af235UL)
- II(c,d,a,b,W[2],15,0x2ad7d2bbUL)
- II(b,c,d,a,W[9],21,0xeb86d391UL)
-#endif
-
- md->md5.state[0] = md->md5.state[0] + a;
- md->md5.state[1] = md->md5.state[1] + b;
- md->md5.state[2] = md->md5.state[2] + c;
- md->md5.state[3] = md->md5.state[3] + d;
-
- return CRYPT_OK;
-}
-
-#ifdef LTC_CLEAN_STACK
-static int md5_compress(hash_state *md, unsigned char *buf)
-{
- int err;
- err = _md5_compress(md, buf);
- burn_stack(sizeof(ulong32) * 21);
- return err;
-}
-#endif
-
-/**
- Initialize the hash state
- @param md The hash state you wish to initialize
- @return CRYPT_OK if successful
-*/
-int md5_init(hash_state * md)
-{
- LTC_ARGCHK(md != NULL);
- md->md5.state[0] = 0x67452301UL;
- md->md5.state[1] = 0xefcdab89UL;
- md->md5.state[2] = 0x98badcfeUL;
- md->md5.state[3] = 0x10325476UL;
- md->md5.curlen = 0;
- md->md5.length = 0;
- return CRYPT_OK;
-}
-
-/**
- Process a block of memory though the hash
- @param md The hash state
- @param in The data to hash
- @param inlen The length of the data (octets)
- @return CRYPT_OK if successful
-*/
-HASH_PROCESS(md5_process, md5_compress, md5, 64)
-
-/**
- Terminate the hash to get the digest
- @param md The hash state
- @param out [out] The destination of the hash (16 bytes)
- @return CRYPT_OK if successful
-*/
-int md5_done(hash_state * md, unsigned char *out)
-{
- int i;
-
- LTC_ARGCHK(md != NULL);
- LTC_ARGCHK(out != NULL);
-
- if (md->md5.curlen >= sizeof(md->md5.buf)) {
- return CRYPT_INVALID_ARG;
- }
-
-
- /* increase the length of the message */
- md->md5.length += md->md5.curlen * 8;
-
- /* append the '1' bit */
- md->md5.buf[md->md5.curlen++] = (unsigned char)0x80;
-
- /* if the length is currently above 56 bytes we append zeros
- * then compress. Then we can fall back to padding zeros and length
- * encoding like normal.
- */
- if (md->md5.curlen > 56) {
- while (md->md5.curlen < 64) {
- md->md5.buf[md->md5.curlen++] = (unsigned char)0;
- }
- md5_compress(md, md->md5.buf);
- md->md5.curlen = 0;
- }
-
- /* pad upto 56 bytes of zeroes */
- while (md->md5.curlen < 56) {
- md->md5.buf[md->md5.curlen++] = (unsigned char)0;
- }
-
- /* store length */
- STORE64L(md->md5.length, md->md5.buf+56);
- md5_compress(md, md->md5.buf);
-
- /* copy output */
- for (i = 0; i < 4; i++) {
- STORE32L(md->md5.state[i], out+(4*i));
- }
-#ifdef LTC_CLEAN_STACK
- zeromem(md, sizeof(hash_state));
-#endif
- return CRYPT_OK;
-}
-
-/**
- Self-test the hash
- @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled
-*/
-int md5_test(void)
-{
- #ifndef LTC_TEST
- return CRYPT_NOP;
- #else
- static const struct {
- char *msg;
- unsigned char hash[16];
- } tests[] = {
- { "",
- { 0xd4, 0x1d, 0x8c, 0xd9, 0x8f, 0x00, 0xb2, 0x04,
- 0xe9, 0x80, 0x09, 0x98, 0xec, 0xf8, 0x42, 0x7e } },
- { "a",
- {0x0c, 0xc1, 0x75, 0xb9, 0xc0, 0xf1, 0xb6, 0xa8,
- 0x31, 0xc3, 0x99, 0xe2, 0x69, 0x77, 0x26, 0x61 } },
- { "abc",
- { 0x90, 0x01, 0x50, 0x98, 0x3c, 0xd2, 0x4f, 0xb0,
- 0xd6, 0x96, 0x3f, 0x7d, 0x28, 0xe1, 0x7f, 0x72 } },
- { "message digest",
- { 0xf9, 0x6b, 0x69, 0x7d, 0x7c, 0xb7, 0x93, 0x8d,
- 0x52, 0x5a, 0x2f, 0x31, 0xaa, 0xf1, 0x61, 0xd0 } },
- { "abcdefghijklmnopqrstuvwxyz",
- { 0xc3, 0xfc, 0xd3, 0xd7, 0x61, 0x92, 0xe4, 0x00,
- 0x7d, 0xfb, 0x49, 0x6c, 0xca, 0x67, 0xe1, 0x3b } },
- { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
- { 0xd1, 0x74, 0xab, 0x98, 0xd2, 0x77, 0xd9, 0xf5,
- 0xa5, 0x61, 0x1c, 0x2c, 0x9f, 0x41, 0x9d, 0x9f } },
- { "12345678901234567890123456789012345678901234567890123456789012345678901234567890",
- { 0x57, 0xed, 0xf4, 0xa2, 0x2b, 0xe3, 0xc9, 0x55,
- 0xac, 0x49, 0xda, 0x2e, 0x21, 0x07, 0xb6, 0x7a } },
- { NULL, { 0 } }
- };
-
- int i;
- unsigned char tmp[16];
- hash_state md;
-
- for (i = 0; tests[i].msg != NULL; i++) {
- md5_init(&md);
- md5_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg));
- md5_done(&md, tmp);
- if (XMEMCMP(tmp, tests[i].hash, 16) != 0) {
- return CRYPT_FAIL_TESTVECTOR;
- }
- }
- return CRYPT_OK;
- #endif
-}
-
-#endif
-
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/hashes/md5.c,v $ */
-/* $Revision: 1.10 $ */
-/* $Date: 2007/05/12 14:25:28 $ */
diff --git a/StormLib/src/libtomcrypt/src/hashes/sha1.c b/StormLib/src/libtomcrypt/src/hashes/sha1.c
deleted file mode 100644
index 409d09542..000000000
--- a/StormLib/src/libtomcrypt/src/hashes/sha1.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-/**
- @file sha1.c
- LTC_SHA1 code by Tom St Denis
-*/
-
-
-#ifdef LTC_SHA1
-
-const struct ltc_hash_descriptor sha1_desc =
-{
- "sha1",
- 2,
- 20,
- 64,
-
- /* OID */
- { 1, 3, 14, 3, 2, 26, },
- 6,
-
- &sha1_init,
- &sha1_process,
- &sha1_done,
- &sha1_test,
- NULL
-};
-
-#define F0(x,y,z) (z ^ (x & (y ^ z)))
-#define F1(x,y,z) (x ^ y ^ z)
-#define F2(x,y,z) ((x & y) | (z & (x | y)))
-#define F3(x,y,z) (x ^ y ^ z)
-
-#ifdef LTC_CLEAN_STACK
-static int _sha1_compress(hash_state *md, unsigned char *buf)
-#else
-static int sha1_compress(hash_state *md, unsigned char *buf)
-#endif
-{
- ulong32 a,b,c,d,e,W[80],i;
-#ifdef LTC_SMALL_CODE
- ulong32 t;
-#endif
-
- /* copy the state into 512-bits into W[0..15] */
- for (i = 0; i < 16; i++) {
- LOAD32H(W[i], buf + (4*i));
- }
-
- /* copy state */
- a = md->sha1.state[0];
- b = md->sha1.state[1];
- c = md->sha1.state[2];
- d = md->sha1.state[3];
- e = md->sha1.state[4];
-
- /* expand it */
- for (i = 16; i < 80; i++) {
- W[i] = ROL(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1);
- }
-
- /* compress */
- /* round one */
- #define FF0(a,b,c,d,e,i) e = (ROLc(a, 5) + F0(b,c,d) + e + W[i] + 0x5a827999UL); b = ROLc(b, 30);
- #define FF1(a,b,c,d,e,i) e = (ROLc(a, 5) + F1(b,c,d) + e + W[i] + 0x6ed9eba1UL); b = ROLc(b, 30);
- #define FF2(a,b,c,d,e,i) e = (ROLc(a, 5) + F2(b,c,d) + e + W[i] + 0x8f1bbcdcUL); b = ROLc(b, 30);
- #define FF3(a,b,c,d,e,i) e = (ROLc(a, 5) + F3(b,c,d) + e + W[i] + 0xca62c1d6UL); b = ROLc(b, 30);
-
-#ifdef LTC_SMALL_CODE
-
- for (i = 0; i < 20; ) {
- FF0(a,b,c,d,e,i++); t = e; e = d; d = c; c = b; b = a; a = t;
- }
-
- for (; i < 40; ) {
- FF1(a,b,c,d,e,i++); t = e; e = d; d = c; c = b; b = a; a = t;
- }
-
- for (; i < 60; ) {
- FF2(a,b,c,d,e,i++); t = e; e = d; d = c; c = b; b = a; a = t;
- }
-
- for (; i < 80; ) {
- FF3(a,b,c,d,e,i++); t = e; e = d; d = c; c = b; b = a; a = t;
- }
-
-#else
-
- for (i = 0; i < 20; ) {
- FF0(a,b,c,d,e,i++);
- FF0(e,a,b,c,d,i++);
- FF0(d,e,a,b,c,i++);
- FF0(c,d,e,a,b,i++);
- FF0(b,c,d,e,a,i++);
- }
-
- /* round two */
- for (; i < 40; ) {
- FF1(a,b,c,d,e,i++);
- FF1(e,a,b,c,d,i++);
- FF1(d,e,a,b,c,i++);
- FF1(c,d,e,a,b,i++);
- FF1(b,c,d,e,a,i++);
- }
-
- /* round three */
- for (; i < 60; ) {
- FF2(a,b,c,d,e,i++);
- FF2(e,a,b,c,d,i++);
- FF2(d,e,a,b,c,i++);
- FF2(c,d,e,a,b,i++);
- FF2(b,c,d,e,a,i++);
- }
-
- /* round four */
- for (; i < 80; ) {
- FF3(a,b,c,d,e,i++);
- FF3(e,a,b,c,d,i++);
- FF3(d,e,a,b,c,i++);
- FF3(c,d,e,a,b,i++);
- FF3(b,c,d,e,a,i++);
- }
-#endif
-
- #undef FF0
- #undef FF1
- #undef FF2
- #undef FF3
-
- /* store */
- md->sha1.state[0] = md->sha1.state[0] + a;
- md->sha1.state[1] = md->sha1.state[1] + b;
- md->sha1.state[2] = md->sha1.state[2] + c;
- md->sha1.state[3] = md->sha1.state[3] + d;
- md->sha1.state[4] = md->sha1.state[4] + e;
-
- return CRYPT_OK;
-}
-
-#ifdef LTC_CLEAN_STACK
-static int sha1_compress(hash_state *md, unsigned char *buf)
-{
- int err;
- err = _sha1_compress(md, buf);
- burn_stack(sizeof(ulong32) * 87);
- return err;
-}
-#endif
-
-/**
- Initialize the hash state
- @param md The hash state you wish to initialize
- @return CRYPT_OK if successful
-*/
-int sha1_init(hash_state * md)
-{
- LTC_ARGCHK(md != NULL);
- md->sha1.state[0] = 0x67452301UL;
- md->sha1.state[1] = 0xefcdab89UL;
- md->sha1.state[2] = 0x98badcfeUL;
- md->sha1.state[3] = 0x10325476UL;
- md->sha1.state[4] = 0xc3d2e1f0UL;
- md->sha1.curlen = 0;
- md->sha1.length = 0;
- return CRYPT_OK;
-}
-
-/**
- Process a block of memory though the hash
- @param md The hash state
- @param in The data to hash
- @param inlen The length of the data (octets)
- @return CRYPT_OK if successful
-*/
-HASH_PROCESS(sha1_process, sha1_compress, sha1, 64)
-
-/**
- Terminate the hash to get the digest
- @param md The hash state
- @param out [out] The destination of the hash (20 bytes)
- @return CRYPT_OK if successful
-*/
-int sha1_done(hash_state * md, unsigned char *out)
-{
- int i;
-
- LTC_ARGCHK(md != NULL);
- LTC_ARGCHK(out != NULL);
-
- if (md->sha1.curlen >= sizeof(md->sha1.buf)) {
- return CRYPT_INVALID_ARG;
- }
-
- /* increase the length of the message */
- md->sha1.length += md->sha1.curlen * 8;
-
- /* append the '1' bit */
- md->sha1.buf[md->sha1.curlen++] = (unsigned char)0x80;
-
- /* if the length is currently above 56 bytes we append zeros
- * then compress. Then we can fall back to padding zeros and length
- * encoding like normal.
- */
- if (md->sha1.curlen > 56) {
- while (md->sha1.curlen < 64) {
- md->sha1.buf[md->sha1.curlen++] = (unsigned char)0;
- }
- sha1_compress(md, md->sha1.buf);
- md->sha1.curlen = 0;
- }
-
- /* pad upto 56 bytes of zeroes */
- while (md->sha1.curlen < 56) {
- md->sha1.buf[md->sha1.curlen++] = (unsigned char)0;
- }
-
- /* store length */
- STORE64H(md->sha1.length, md->sha1.buf+56);
- sha1_compress(md, md->sha1.buf);
-
- /* copy output */
- for (i = 0; i < 5; i++) {
- STORE32H(md->sha1.state[i], out+(4*i));
- }
-#ifdef LTC_CLEAN_STACK
- zeromem(md, sizeof(hash_state));
-#endif
- return CRYPT_OK;
-}
-
-/**
- Self-test the hash
- @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled
-*/
-int sha1_test(void)
-{
- #ifndef LTC_TEST
- return CRYPT_NOP;
- #else
- static const struct {
- char *msg;
- unsigned char hash[20];
- } tests[] = {
- { "abc",
- { 0xa9, 0x99, 0x3e, 0x36, 0x47, 0x06, 0x81, 0x6a,
- 0xba, 0x3e, 0x25, 0x71, 0x78, 0x50, 0xc2, 0x6c,
- 0x9c, 0xd0, 0xd8, 0x9d }
- },
- { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
- { 0x84, 0x98, 0x3E, 0x44, 0x1C, 0x3B, 0xD2, 0x6E,
- 0xBA, 0xAE, 0x4A, 0xA1, 0xF9, 0x51, 0x29, 0xE5,
- 0xE5, 0x46, 0x70, 0xF1 }
- }
- };
-
- int i;
- unsigned char tmp[20];
- hash_state md;
-
- for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) {
- sha1_init(&md);
- sha1_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg));
- sha1_done(&md, tmp);
- if (XMEMCMP(tmp, tests[i].hash, 20) != 0) {
- return CRYPT_FAIL_TESTVECTOR;
- }
- }
- return CRYPT_OK;
- #endif
-}
-
-#endif
-
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/hashes/sha1.c,v $ */
-/* $Revision: 1.10 $ */
-/* $Date: 2007/05/12 14:25:28 $ */
diff --git a/StormLib/src/libtomcrypt/src/headers/tomcrypt.h b/StormLib/src/libtomcrypt/src/headers/tomcrypt.h
deleted file mode 100644
index 7df3f5a8a..000000000
--- a/StormLib/src/libtomcrypt/src/headers/tomcrypt.h
+++ /dev/null
@@ -1,91 +0,0 @@
-#ifndef TOMCRYPT_H_
-#define TOMCRYPT_H_
-#include <assert.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <time.h>
-#include <ctype.h>
-#include <limits.h>
-
-/* use configuration data */
-#include "tomcrypt_custom.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* version */
-#define CRYPT 0x0117
-#define SCRYPT "1.17"
-
-/* max size of either a cipher/hash block or symmetric key [largest of the two] */
-#define MAXBLOCKSIZE 128
-
-/* descriptor table size */
-#define TAB_SIZE 32
-
-#ifdef _MSC_VER
-#pragma warning(disable: 4333) // der_encode_utf8_string.c(91) : warning C4333: '>>' : right shift by too large amount, data loss
-#endif
-
-/* error codes [will be expanded in future releases] */
-enum {
- CRYPT_OK=0, /* Result OK */
- CRYPT_ERROR, /* Generic Error */
- CRYPT_NOP, /* Not a failure but no operation was performed */
-
- CRYPT_INVALID_KEYSIZE, /* Invalid key size given */
- CRYPT_INVALID_ROUNDS, /* Invalid number of rounds */
- CRYPT_FAIL_TESTVECTOR, /* Algorithm failed test vectors */
-
- CRYPT_BUFFER_OVERFLOW, /* Not enough space for output */
- CRYPT_INVALID_PACKET, /* Invalid input packet given */
-
- CRYPT_INVALID_PRNGSIZE, /* Invalid number of bits for a PRNG */
- CRYPT_ERROR_READPRNG, /* Could not read enough from PRNG */
-
- CRYPT_INVALID_CIPHER, /* Invalid cipher specified */
- CRYPT_INVALID_HASH, /* Invalid hash specified */
- CRYPT_INVALID_PRNG, /* Invalid PRNG specified */
-
- CRYPT_MEM, /* Out of memory */
-
- CRYPT_PK_TYPE_MISMATCH, /* Not equivalent types of PK keys */
- CRYPT_PK_NOT_PRIVATE, /* Requires a private PK key */
-
- CRYPT_INVALID_ARG, /* Generic invalid argument */
- CRYPT_FILE_NOTFOUND, /* File Not Found */
-
- CRYPT_PK_INVALID_TYPE, /* Invalid type of PK key */
- CRYPT_PK_INVALID_SYSTEM,/* Invalid PK system specified */
- CRYPT_PK_DUP, /* Duplicate key already in key ring */
- CRYPT_PK_NOT_FOUND, /* Key not found in keyring */
- CRYPT_PK_INVALID_SIZE, /* Invalid size input for PK parameters */
-
- CRYPT_INVALID_PRIME_SIZE,/* Invalid size of prime requested */
- CRYPT_PK_INVALID_PADDING /* Invalid padding on input */
-};
-
-#include "tomcrypt_cfg.h"
-#include "tomcrypt_macros.h"
-#include "tomcrypt_cipher.h"
-#include "tomcrypt_hash.h"
-#include "tomcrypt_mac.h"
-#include "tomcrypt_prng.h"
-#include "tomcrypt_pk.h"
-#include "tomcrypt_math.h"
-#include "tomcrypt_misc.h"
-#include "tomcrypt_argchk.h"
-#include "tomcrypt_pkcs.h"
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif /* TOMCRYPT_H_ */
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt.h,v $ */
-/* $Revision: 1.21 $ */
-/* $Date: 2006/12/16 19:34:05 $ */
diff --git a/StormLib/src/libtomcrypt/src/headers/tomcrypt_argchk.h b/StormLib/src/libtomcrypt/src/headers/tomcrypt_argchk.h
deleted file mode 100644
index cfc93ad7e..000000000
--- a/StormLib/src/libtomcrypt/src/headers/tomcrypt_argchk.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Defines the LTC_ARGCHK macro used within the library */
-/* ARGTYPE is defined in mycrypt_cfg.h */
-#if ARGTYPE == 0
-
-#include <signal.h>
-
-/* this is the default LibTomCrypt macro */
-void crypt_argchk(char *v, char *s, int d);
-#define LTC_ARGCHK(x) if (!(x)) { crypt_argchk(#x, __FILE__, __LINE__); }
-#define LTC_ARGCHKVD(x) LTC_ARGCHK(x)
-
-#elif ARGTYPE == 1
-
-/* fatal type of error */
-#define LTC_ARGCHK(x) assert((x))
-#define LTC_ARGCHKVD(x) LTC_ARGCHK(x)
-
-#elif ARGTYPE == 2
-
-#define LTC_ARGCHK(x) if (!(x)) { fprintf(stderr, "\nwarning: ARGCHK failed at %s:%d\n", __FILE__, __LINE__); }
-#define LTC_ARGCHKVD(x) LTC_ARGCHK(x)
-
-#elif ARGTYPE == 3
-
-#define LTC_ARGCHK(x)
-#define LTC_ARGCHKVD(x) LTC_ARGCHK(x)
-
-#elif ARGTYPE == 4
-
-#define LTC_ARGCHK(x) if (!(x)) return CRYPT_INVALID_ARG;
-#define LTC_ARGCHKVD(x) if (!(x)) return;
-
-#endif
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_argchk.h,v $ */
-/* $Revision: 1.5 $ */
-/* $Date: 2006/08/27 20:50:21 $ */
diff --git a/StormLib/src/libtomcrypt/src/headers/tomcrypt_cfg.h b/StormLib/src/libtomcrypt/src/headers/tomcrypt_cfg.h
deleted file mode 100644
index 335d55f06..000000000
--- a/StormLib/src/libtomcrypt/src/headers/tomcrypt_cfg.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/* This is the build config file.
- *
- * With this you can setup what to inlcude/exclude automatically during any build. Just comment
- * out the line that #define's the word for the thing you want to remove. phew!
- */
-
-#ifndef TOMCRYPT_CFG_H
-#define TOMCRYPT_CFG_H
-
-#if defined(_WIN32) || defined(_MSC_VER)
-#define LTC_CALL __cdecl
-#else
-#ifndef LTC_CALL
- #define LTC_CALL
-#endif
-#endif
-
-#ifndef LTC_EXPORT
-#define LTC_EXPORT
-#endif
-
-/* certain platforms use macros for these, making the prototypes broken */
-#ifndef LTC_NO_PROTOTYPES
-
-/* you can change how memory allocation works ... */
-LTC_EXPORT void * LTC_CALL XMALLOC(size_t n);
-LTC_EXPORT void * LTC_CALL XREALLOC(void *p, size_t n);
-LTC_EXPORT void * LTC_CALL XCALLOC(size_t n, size_t s);
-LTC_EXPORT void LTC_CALL XFREE(void *p);
-
-LTC_EXPORT void LTC_CALL XQSORT(void *base, size_t nmemb, size_t size, int(LTC_CALL * compar)(const void *, const void *));
-
-/* change the clock function too */
-LTC_EXPORT clock_t LTC_CALL XCLOCK(void);
-#endif // LTC_NO_PROTOTYPES
-
-/* various other functions */
-#ifndef LTC_NO_PROTOTYPES_MEMCPY
-LTC_EXPORT void * LTC_CALL XMEMCPY(void *dest, const void *src, size_t n);
-#endif
-
-#ifndef LTC_NO_PROTOTYPES_MEMCMP
-LTC_EXPORT int LTC_CALL XMEMCMP(const void *s1, const void *s2, size_t n);
-#endif
-
-#ifndef LTC_NO_PROTOTYPES_MEMSET
-LTC_EXPORT void * LTC_CALL XMEMSET(void *s, int c, size_t n);
-#endif
-
-#ifndef LTC_NO_PROTOTYPES_STRCMP
-LTC_EXPORT int LTC_CALL XSTRCMP(const char *s1, const char *s2);
-#endif
-
-/* type of argument checking, 0=default, 1=fatal and 2=error+continue, 3=nothing */
-#ifndef ARGTYPE
- #define ARGTYPE 0
-#endif
-
-/* Controls endianess and size of registers. Leave uncommented to get platform neutral [slower] code
- *
- * Note: in order to use the optimized macros your platform must support unaligned 32 and 64 bit read/writes.
- * The x86 platforms allow this but some others [ARM for instance] do not. On those platforms you **MUST**
- * use the portable [slower] macros.
- */
-
-/* detect x86-32 machines somewhat */
-#if !defined(__STRICT_ANSI__) && (defined(INTEL_CC) || (defined(_MSC_VER) && defined(WIN32)) || (defined(__GNUC__) && (defined(__DJGPP__) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__i386__))))
- #define ENDIAN_LITTLE
- #define ENDIAN_32BITWORD
- #define LTC_FAST
- #define LTC_FAST_TYPE unsigned long
-#endif
-
-/* detects MIPS R5900 processors (PS2) */
-#if (defined(__R5900) || defined(R5900) || defined(__R5900__)) && (defined(_mips) || defined(__mips__) || defined(mips))
- #define ENDIAN_LITTLE
- #define ENDIAN_64BITWORD
-#endif
-
-/* detect amd64 */
-#if !defined(__STRICT_ANSI__) && defined(__x86_64__)
- #define ENDIAN_LITTLE
- #define ENDIAN_64BITWORD
- #define LTC_FAST
- #define LTC_FAST_TYPE unsigned long
-#endif
-
-/* detect PPC32 */
-#if !defined(__STRICT_ANSI__) && defined(LTC_PPC32)
- #define ENDIAN_BIG
- #define ENDIAN_32BITWORD
- #define LTC_FAST
- #define LTC_FAST_TYPE unsigned long
-#endif
-
-/* detect sparc and sparc64 */
-#if defined(__sparc__)
- #define ENDIAN_BIG
- #if defined(__arch64__)
- #define ENDIAN_64BITWORD
- #else
- #define ENDIAN_32BITWORD
- #endif
-#endif
-
-
-#ifdef LTC_NO_FAST
- #ifdef LTC_FAST
- #undef LTC_FAST
- #endif
-#endif
-
-/* No asm is a quick way to disable anything "not portable" */
-#ifdef LTC_NO_ASM
- #undef ENDIAN_LITTLE
- #undef ENDIAN_BIG
- #undef ENDIAN_32BITWORD
- #undef ENDIAN_64BITWORD
- #undef LTC_FAST
- #undef LTC_FAST_TYPE
- #define LTC_NO_ROLC
- #define LTC_NO_BSWAP
-#endif
-
-/* #define ENDIAN_LITTLE */
-/* #define ENDIAN_BIG */
-
-/* #define ENDIAN_32BITWORD */
-/* #define ENDIAN_64BITWORD */
-
-#if (defined(ENDIAN_BIG) || defined(ENDIAN_LITTLE)) && !(defined(ENDIAN_32BITWORD) || defined(ENDIAN_64BITWORD))
- #error You must specify a word size as well as endianess in tomcrypt_cfg.h
-#endif
-
-#if !(defined(ENDIAN_BIG) || defined(ENDIAN_LITTLE))
- #define ENDIAN_NEUTRAL
-#endif
-
-#endif
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_cfg.h,v $ */
-/* $Revision: 1.19 $ */
-/* $Date: 2006/12/04 02:19:48 $ */
diff --git a/StormLib/src/libtomcrypt/src/headers/tomcrypt_cipher.h b/StormLib/src/libtomcrypt/src/headers/tomcrypt_cipher.h
deleted file mode 100644
index bd740bf4a..000000000
--- a/StormLib/src/libtomcrypt/src/headers/tomcrypt_cipher.h
+++ /dev/null
@@ -1,891 +0,0 @@
-/* ---- SYMMETRIC KEY STUFF -----
- *
- * We put each of the ciphers scheduled keys in their own structs then we put all of
- * the key formats in one union. This makes the function prototypes easier to use.
- */
-#ifdef LTC_BLOWFISH
-struct blowfish_key {
- ulong32 S[4][256];
- ulong32 K[18];
-};
-#endif
-
-#ifdef LTC_RC5
-struct rc5_key {
- int rounds;
- ulong32 K[50];
-};
-#endif
-
-#ifdef LTC_RC6
-struct rc6_key {
- ulong32 K[44];
-};
-#endif
-
-#ifdef LTC_SAFERP
-struct saferp_key {
- unsigned char K[33][16];
- long rounds;
-};
-#endif
-
-#ifdef LTC_RIJNDAEL
-struct rijndael_key {
- ulong32 eK[60], dK[60];
- int Nr;
-};
-#endif
-
-#ifdef LTC_KSEED
-struct kseed_key {
- ulong32 K[32], dK[32];
-};
-#endif
-
-#ifdef LTC_KASUMI
-struct kasumi_key {
- ulong32 KLi1[8], KLi2[8],
- KOi1[8], KOi2[8], KOi3[8],
- KIi1[8], KIi2[8], KIi3[8];
-};
-#endif
-
-#ifdef LTC_XTEA
-struct xtea_key {
- unsigned long A[32], B[32];
-};
-#endif
-
-#ifdef LTC_TWOFISH
-#ifndef LTC_TWOFISH_SMALL
- struct twofish_key {
- ulong32 S[4][256], K[40];
- };
-#else
- struct twofish_key {
- ulong32 K[40];
- unsigned char S[32], start;
- };
-#endif
-#endif
-
-#ifdef LTC_SAFER
-#define LTC_SAFER_K64_DEFAULT_NOF_ROUNDS 6
-#define LTC_SAFER_K128_DEFAULT_NOF_ROUNDS 10
-#define LTC_SAFER_SK64_DEFAULT_NOF_ROUNDS 8
-#define LTC_SAFER_SK128_DEFAULT_NOF_ROUNDS 10
-#define LTC_SAFER_MAX_NOF_ROUNDS 13
-#define LTC_SAFER_BLOCK_LEN 8
-#define LTC_SAFER_KEY_LEN (1 + LTC_SAFER_BLOCK_LEN * (1 + 2 * LTC_SAFER_MAX_NOF_ROUNDS))
-typedef unsigned char safer_block_t[LTC_SAFER_BLOCK_LEN];
-typedef unsigned char safer_key_t[LTC_SAFER_KEY_LEN];
-struct safer_key { safer_key_t key; };
-#endif
-
-#ifdef LTC_RC2
-struct rc2_key { unsigned xkey[64]; };
-#endif
-
-#ifdef LTC_DES
-struct des_key {
- ulong32 ek[32], dk[32];
-};
-
-struct des3_key {
- ulong32 ek[3][32], dk[3][32];
-};
-#endif
-
-#ifdef LTC_CAST5
-struct cast5_key {
- ulong32 K[32], keylen;
-};
-#endif
-
-#ifdef LTC_NOEKEON
-struct noekeon_key {
- ulong32 K[4], dK[4];
-};
-#endif
-
-#ifdef LTC_SKIPJACK
-struct skipjack_key {
- unsigned char key[10];
-};
-#endif
-
-#ifdef LTC_KHAZAD
-struct khazad_key {
- ulong64 roundKeyEnc[8 + 1];
- ulong64 roundKeyDec[8 + 1];
-};
-#endif
-
-#ifdef LTC_ANUBIS
-struct anubis_key {
- int keyBits;
- int R;
- ulong32 roundKeyEnc[18 + 1][4];
- ulong32 roundKeyDec[18 + 1][4];
-};
-#endif
-
-#ifdef LTC_MULTI2
-struct multi2_key {
- int N;
- ulong32 uk[8];
-};
-#endif
-
-typedef union Symmetric_key {
-#ifdef LTC_DES
- struct des_key des;
- struct des3_key des3;
-#endif
-#ifdef LTC_RC2
- struct rc2_key rc2;
-#endif
-#ifdef LTC_SAFER
- struct safer_key safer;
-#endif
-#ifdef LTC_TWOFISH
- struct twofish_key twofish;
-#endif
-#ifdef LTC_BLOWFISH
- struct blowfish_key blowfish;
-#endif
-#ifdef LTC_RC5
- struct rc5_key rc5;
-#endif
-#ifdef LTC_RC6
- struct rc6_key rc6;
-#endif
-#ifdef LTC_SAFERP
- struct saferp_key saferp;
-#endif
-#ifdef LTC_RIJNDAEL
- struct rijndael_key rijndael;
-#endif
-#ifdef LTC_XTEA
- struct xtea_key xtea;
-#endif
-#ifdef LTC_CAST5
- struct cast5_key cast5;
-#endif
-#ifdef LTC_NOEKEON
- struct noekeon_key noekeon;
-#endif
-#ifdef LTC_SKIPJACK
- struct skipjack_key skipjack;
-#endif
-#ifdef LTC_KHAZAD
- struct khazad_key khazad;
-#endif
-#ifdef LTC_ANUBIS
- struct anubis_key anubis;
-#endif
-#ifdef LTC_KSEED
- struct kseed_key kseed;
-#endif
-#ifdef LTC_KASUMI
- struct kasumi_key kasumi;
-#endif
-#ifdef LTC_MULTI2
- struct multi2_key multi2;
-#endif
- void *data;
-} symmetric_key;
-
-#ifdef LTC_ECB_MODE
-/** A block cipher ECB structure */
-typedef struct {
- /** The index of the cipher chosen */
- int cipher,
- /** The block size of the given cipher */
- blocklen;
- /** The scheduled key */
- symmetric_key key;
-} symmetric_ECB;
-#endif
-
-#ifdef LTC_CFB_MODE
-/** A block cipher CFB structure */
-typedef struct {
- /** The index of the cipher chosen */
- int cipher,
- /** The block size of the given cipher */
- blocklen,
- /** The padding offset */
- padlen;
- /** The current IV */
- unsigned char IV[MAXBLOCKSIZE],
- /** The pad used to encrypt/decrypt */
- pad[MAXBLOCKSIZE];
- /** The scheduled key */
- symmetric_key key;
-} symmetric_CFB;
-#endif
-
-#ifdef LTC_OFB_MODE
-/** A block cipher OFB structure */
-typedef struct {
- /** The index of the cipher chosen */
- int cipher,
- /** The block size of the given cipher */
- blocklen,
- /** The padding offset */
- padlen;
- /** The current IV */
- unsigned char IV[MAXBLOCKSIZE];
- /** The scheduled key */
- symmetric_key key;
-} symmetric_OFB;
-#endif
-
-#ifdef LTC_CBC_MODE
-/** A block cipher CBC structure */
-typedef struct {
- /** The index of the cipher chosen */
- int cipher,
- /** The block size of the given cipher */
- blocklen;
- /** The current IV */
- unsigned char IV[MAXBLOCKSIZE];
- /** The scheduled key */
- symmetric_key key;
-} symmetric_CBC;
-#endif
-
-
-#ifdef LTC_CTR_MODE
-/** A block cipher CTR structure */
-typedef struct {
- /** The index of the cipher chosen */
- int cipher,
- /** The block size of the given cipher */
- blocklen,
- /** The padding offset */
- padlen,
- /** The mode (endianess) of the CTR, 0==little, 1==big */
- mode,
- /** counter width */
- ctrlen;
-
- /** The counter */
- unsigned char ctr[MAXBLOCKSIZE],
- /** The pad used to encrypt/decrypt */
- pad[MAXBLOCKSIZE];
- /** The scheduled key */
- symmetric_key key;
-} symmetric_CTR;
-#endif
-
-
-#ifdef LTC_LRW_MODE
-/** A LRW structure */
-typedef struct {
- /** The index of the cipher chosen (must be a 128-bit block cipher) */
- int cipher;
-
- /** The current IV */
- unsigned char IV[16],
-
- /** the tweak key */
- tweak[16],
-
- /** The current pad, it's the product of the first 15 bytes against the tweak key */
- pad[16];
-
- /** The scheduled symmetric key */
- symmetric_key key;
-
-#ifdef LRW_TABLES
- /** The pre-computed multiplication table */
- unsigned char PC[16][256][16];
-#endif
-} symmetric_LRW;
-#endif
-
-#ifdef LTC_F8_MODE
-/** A block cipher F8 structure */
-typedef struct {
- /** The index of the cipher chosen */
- int cipher,
- /** The block size of the given cipher */
- blocklen,
- /** The padding offset */
- padlen;
- /** The current IV */
- unsigned char IV[MAXBLOCKSIZE],
- MIV[MAXBLOCKSIZE];
- /** Current block count */
- ulong32 blockcnt;
- /** The scheduled key */
- symmetric_key key;
-} symmetric_F8;
-#endif
-
-
-/** cipher descriptor table, last entry has "name == NULL" to mark the end of table */
-extern struct ltc_cipher_descriptor {
- /** name of cipher */
- char *name;
- /** internal ID */
- unsigned char ID;
- /** min keysize (octets) */
- int min_key_length,
- /** max keysize (octets) */
- max_key_length,
- /** block size (octets) */
- block_length,
- /** default number of rounds */
- default_rounds;
- /** Setup the cipher
- @param key The input symmetric key
- @param keylen The length of the input key (octets)
- @param num_rounds The requested number of rounds (0==default)
- @param skey [out] The destination of the scheduled key
- @return CRYPT_OK if successful
- */
- int (*setup)(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
- /** Encrypt a block
- @param pt The plaintext
- @param ct [out] The ciphertext
- @param skey The scheduled key
- @return CRYPT_OK if successful
- */
- int (*ecb_encrypt)(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
- /** Decrypt a block
- @param ct The ciphertext
- @param pt [out] The plaintext
- @param skey The scheduled key
- @return CRYPT_OK if successful
- */
- int (*ecb_decrypt)(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
- /** Test the block cipher
- @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled
- */
- int (*test)(void);
-
- /** Terminate the context
- @param skey The scheduled key
- */
- void (*done)(symmetric_key *skey);
-
- /** Determine a key size
- @param keysize [in/out] The size of the key desired and the suggested size
- @return CRYPT_OK if successful
- */
- int (*keysize)(int *keysize);
-
-/** Accelerators **/
- /** Accelerated ECB encryption
- @param pt Plaintext
- @param ct Ciphertext
- @param blocks The number of complete blocks to process
- @param skey The scheduled key context
- @return CRYPT_OK if successful
- */
- int (*accel_ecb_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, symmetric_key *skey);
-
- /** Accelerated ECB decryption
- @param pt Plaintext
- @param ct Ciphertext
- @param blocks The number of complete blocks to process
- @param skey The scheduled key context
- @return CRYPT_OK if successful
- */
- int (*accel_ecb_decrypt)(const unsigned char *ct, unsigned char *pt, unsigned long blocks, symmetric_key *skey);
-
- /** Accelerated CBC encryption
- @param pt Plaintext
- @param ct Ciphertext
- @param blocks The number of complete blocks to process
- @param IV The initial value (input/output)
- @param skey The scheduled key context
- @return CRYPT_OK if successful
- */
- int (*accel_cbc_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, unsigned char *IV, symmetric_key *skey);
-
- /** Accelerated CBC decryption
- @param pt Plaintext
- @param ct Ciphertext
- @param blocks The number of complete blocks to process
- @param IV The initial value (input/output)
- @param skey The scheduled key context
- @return CRYPT_OK if successful
- */
- int (*accel_cbc_decrypt)(const unsigned char *ct, unsigned char *pt, unsigned long blocks, unsigned char *IV, symmetric_key *skey);
-
- /** Accelerated CTR encryption
- @param pt Plaintext
- @param ct Ciphertext
- @param blocks The number of complete blocks to process
- @param IV The initial value (input/output)
- @param mode little or big endian counter (mode=0 or mode=1)
- @param skey The scheduled key context
- @return CRYPT_OK if successful
- */
- int (*accel_ctr_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, unsigned char *IV, int mode, symmetric_key *skey);
-
- /** Accelerated LRW
- @param pt Plaintext
- @param ct Ciphertext
- @param blocks The number of complete blocks to process
- @param IV The initial value (input/output)
- @param tweak The LRW tweak
- @param skey The scheduled key context
- @return CRYPT_OK if successful
- */
- int (*accel_lrw_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, unsigned char *IV, const unsigned char *tweak, symmetric_key *skey);
-
- /** Accelerated LRW
- @param ct Ciphertext
- @param pt Plaintext
- @param blocks The number of complete blocks to process
- @param IV The initial value (input/output)
- @param tweak The LRW tweak
- @param skey The scheduled key context
- @return CRYPT_OK if successful
- */
- int (*accel_lrw_decrypt)(const unsigned char *ct, unsigned char *pt, unsigned long blocks, unsigned char *IV, const unsigned char *tweak, symmetric_key *skey);
-
- /** Accelerated CCM packet (one-shot)
- @param key The secret key to use
- @param keylen The length of the secret key (octets)
- @param uskey A previously scheduled key [optional can be NULL]
- @param nonce The session nonce [use once]
- @param noncelen The length of the nonce
- @param header The header for the session
- @param headerlen The length of the header (octets)
- @param pt [out] The plaintext
- @param ptlen The length of the plaintext (octets)
- @param ct [out] The ciphertext
- @param tag [out] The destination tag
- @param taglen [in/out] The max size and resulting size of the authentication tag
- @param direction Encrypt or Decrypt direction (0 or 1)
- @return CRYPT_OK if successful
- */
- int (*accel_ccm_memory)(
- const unsigned char *key, unsigned long keylen,
- symmetric_key *uskey,
- const unsigned char *nonce, unsigned long noncelen,
- const unsigned char *header, unsigned long headerlen,
- unsigned char *pt, unsigned long ptlen,
- unsigned char *ct,
- unsigned char *tag, unsigned long *taglen,
- int direction);
-
- /** Accelerated GCM packet (one shot)
- @param key The secret key
- @param keylen The length of the secret key
- @param IV The initial vector
- @param IVlen The length of the initial vector
- @param adata The additional authentication data (header)
- @param adatalen The length of the adata
- @param pt The plaintext
- @param ptlen The length of the plaintext (ciphertext length is the same)
- @param ct The ciphertext
- @param tag [out] The MAC tag
- @param taglen [in/out] The MAC tag length
- @param direction Encrypt or Decrypt mode (GCM_ENCRYPT or GCM_DECRYPT)
- @return CRYPT_OK on success
- */
- int (*accel_gcm_memory)(
- const unsigned char *key, unsigned long keylen,
- const unsigned char *IV, unsigned long IVlen,
- const unsigned char *adata, unsigned long adatalen,
- unsigned char *pt, unsigned long ptlen,
- unsigned char *ct,
- unsigned char *tag, unsigned long *taglen,
- int direction);
-
- /** Accelerated one shot LTC_OMAC
- @param key The secret key
- @param keylen The key length (octets)
- @param in The message
- @param inlen Length of message (octets)
- @param out [out] Destination for tag
- @param outlen [in/out] Initial and final size of out
- @return CRYPT_OK on success
- */
- int (*omac_memory)(
- const unsigned char *key, unsigned long keylen,
- const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-
- /** Accelerated one shot XCBC
- @param key The secret key
- @param keylen The key length (octets)
- @param in The message
- @param inlen Length of message (octets)
- @param out [out] Destination for tag
- @param outlen [in/out] Initial and final size of out
- @return CRYPT_OK on success
- */
- int (*xcbc_memory)(
- const unsigned char *key, unsigned long keylen,
- const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-
- /** Accelerated one shot F9
- @param key The secret key
- @param keylen The key length (octets)
- @param in The message
- @param inlen Length of message (octets)
- @param out [out] Destination for tag
- @param outlen [in/out] Initial and final size of out
- @return CRYPT_OK on success
- @remark Requires manual padding
- */
- int (*f9_memory)(
- const unsigned char *key, unsigned long keylen,
- const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-} cipher_descriptor[];
-
-#ifdef LTC_BLOWFISH
-int blowfish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int blowfish_test(void);
-void blowfish_done(symmetric_key *skey);
-int blowfish_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor blowfish_desc;
-#endif
-
-#ifdef LTC_RC5
-int rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int rc5_test(void);
-void rc5_done(symmetric_key *skey);
-int rc5_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor rc5_desc;
-#endif
-
-#ifdef LTC_RC6
-int rc6_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int rc6_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int rc6_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int rc6_test(void);
-void rc6_done(symmetric_key *skey);
-int rc6_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor rc6_desc;
-#endif
-
-#ifdef LTC_RC2
-int rc2_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int rc2_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int rc2_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int rc2_test(void);
-void rc2_done(symmetric_key *skey);
-int rc2_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor rc2_desc;
-#endif
-
-#ifdef LTC_SAFERP
-int saferp_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int saferp_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int saferp_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int saferp_test(void);
-void saferp_done(symmetric_key *skey);
-int saferp_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor saferp_desc;
-#endif
-
-#ifdef LTC_SAFER
-int safer_k64_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int safer_sk64_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int safer_k128_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int safer_sk128_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int safer_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key);
-int safer_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key);
-int safer_k64_test(void);
-int safer_sk64_test(void);
-int safer_sk128_test(void);
-void safer_done(symmetric_key *skey);
-int safer_64_keysize(int *keysize);
-int safer_128_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor safer_k64_desc, safer_k128_desc, safer_sk64_desc, safer_sk128_desc;
-#endif
-
-#ifdef LTC_RIJNDAEL
-
-/* make aes an alias */
-#define aes_setup rijndael_setup
-#define aes_ecb_encrypt rijndael_ecb_encrypt
-#define aes_ecb_decrypt rijndael_ecb_decrypt
-#define aes_test rijndael_test
-#define aes_done rijndael_done
-#define aes_keysize rijndael_keysize
-
-#define aes_enc_setup rijndael_enc_setup
-#define aes_enc_ecb_encrypt rijndael_enc_ecb_encrypt
-#define aes_enc_keysize rijndael_enc_keysize
-
-int rijndael_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int rijndael_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int rijndael_test(void);
-void rijndael_done(symmetric_key *skey);
-int rijndael_keysize(int *keysize);
-int rijndael_enc_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int rijndael_enc_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-void rijndael_enc_done(symmetric_key *skey);
-int rijndael_enc_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor rijndael_desc, aes_desc;
-extern const struct ltc_cipher_descriptor rijndael_enc_desc, aes_enc_desc;
-#endif
-
-#ifdef LTC_XTEA
-int xtea_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int xtea_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int xtea_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int xtea_test(void);
-void xtea_done(symmetric_key *skey);
-int xtea_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor xtea_desc;
-#endif
-
-#ifdef LTC_TWOFISH
-int twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int twofish_test(void);
-void twofish_done(symmetric_key *skey);
-int twofish_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor twofish_desc;
-#endif
-
-#ifdef LTC_DES
-int des_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int des_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int des_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int des_test(void);
-void des_done(symmetric_key *skey);
-int des_keysize(int *keysize);
-int des3_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int des3_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int des3_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int des3_test(void);
-void des3_done(symmetric_key *skey);
-int des3_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor des_desc, des3_desc;
-#endif
-
-#ifdef LTC_CAST5
-int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int cast5_test(void);
-void cast5_done(symmetric_key *skey);
-int cast5_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor cast5_desc;
-#endif
-
-#ifdef LTC_NOEKEON
-int noekeon_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int noekeon_test(void);
-void noekeon_done(symmetric_key *skey);
-int noekeon_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor noekeon_desc;
-#endif
-
-#ifdef LTC_SKIPJACK
-int skipjack_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int skipjack_test(void);
-void skipjack_done(symmetric_key *skey);
-int skipjack_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor skipjack_desc;
-#endif
-
-#ifdef LTC_KHAZAD
-int khazad_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int khazad_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int khazad_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int khazad_test(void);
-void khazad_done(symmetric_key *skey);
-int khazad_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor khazad_desc;
-#endif
-
-#ifdef LTC_ANUBIS
-int anubis_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int anubis_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int anubis_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int anubis_test(void);
-void anubis_done(symmetric_key *skey);
-int anubis_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor anubis_desc;
-#endif
-
-#ifdef LTC_KSEED
-int kseed_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int kseed_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int kseed_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int kseed_test(void);
-void kseed_done(symmetric_key *skey);
-int kseed_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor kseed_desc;
-#endif
-
-#ifdef LTC_KASUMI
-int kasumi_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int kasumi_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int kasumi_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int kasumi_test(void);
-void kasumi_done(symmetric_key *skey);
-int kasumi_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor kasumi_desc;
-#endif
-
-
-#ifdef LTC_MULTI2
-int multi2_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);
-int multi2_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);
-int multi2_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);
-int multi2_test(void);
-void multi2_done(symmetric_key *skey);
-int multi2_keysize(int *keysize);
-extern const struct ltc_cipher_descriptor multi2_desc;
-#endif
-
-#ifdef LTC_ECB_MODE
-int ecb_start(int cipher, const unsigned char *key,
- int keylen, int num_rounds, symmetric_ECB *ecb);
-int ecb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_ECB *ecb);
-int ecb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_ECB *ecb);
-int ecb_done(symmetric_ECB *ecb);
-#endif
-
-#ifdef LTC_CFB_MODE
-int cfb_start(int cipher, const unsigned char *IV, const unsigned char *key,
- int keylen, int num_rounds, symmetric_CFB *cfb);
-int cfb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CFB *cfb);
-int cfb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CFB *cfb);
-int cfb_getiv(unsigned char *IV, unsigned long *len, symmetric_CFB *cfb);
-int cfb_setiv(const unsigned char *IV, unsigned long len, symmetric_CFB *cfb);
-int cfb_done(symmetric_CFB *cfb);
-#endif
-
-#ifdef LTC_OFB_MODE
-int ofb_start(int cipher, const unsigned char *IV, const unsigned char *key,
- int keylen, int num_rounds, symmetric_OFB *ofb);
-int ofb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_OFB *ofb);
-int ofb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_OFB *ofb);
-int ofb_getiv(unsigned char *IV, unsigned long *len, symmetric_OFB *ofb);
-int ofb_setiv(const unsigned char *IV, unsigned long len, symmetric_OFB *ofb);
-int ofb_done(symmetric_OFB *ofb);
-#endif
-
-#ifdef LTC_CBC_MODE
-int cbc_start(int cipher, const unsigned char *IV, const unsigned char *key,
- int keylen, int num_rounds, symmetric_CBC *cbc);
-int cbc_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CBC *cbc);
-int cbc_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CBC *cbc);
-int cbc_getiv(unsigned char *IV, unsigned long *len, symmetric_CBC *cbc);
-int cbc_setiv(const unsigned char *IV, unsigned long len, symmetric_CBC *cbc);
-int cbc_done(symmetric_CBC *cbc);
-#endif
-
-#ifdef LTC_CTR_MODE
-
-#define CTR_COUNTER_LITTLE_ENDIAN 0x0000
-#define CTR_COUNTER_BIG_ENDIAN 0x1000
-#define LTC_CTR_RFC3686 0x2000
-
-int ctr_start( int cipher,
- const unsigned char *IV,
- const unsigned char *key, int keylen,
- int num_rounds, int ctr_mode,
- symmetric_CTR *ctr);
-int ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CTR *ctr);
-int ctr_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CTR *ctr);
-int ctr_getiv(unsigned char *IV, unsigned long *len, symmetric_CTR *ctr);
-int ctr_setiv(const unsigned char *IV, unsigned long len, symmetric_CTR *ctr);
-int ctr_done(symmetric_CTR *ctr);
-int ctr_test(void);
-#endif
-
-#ifdef LTC_LRW_MODE
-
-#define LRW_ENCRYPT 0
-#define LRW_DECRYPT 1
-
-int lrw_start( int cipher,
- const unsigned char *IV,
- const unsigned char *key, int keylen,
- const unsigned char *tweak,
- int num_rounds,
- symmetric_LRW *lrw);
-int lrw_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_LRW *lrw);
-int lrw_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_LRW *lrw);
-int lrw_getiv(unsigned char *IV, unsigned long *len, symmetric_LRW *lrw);
-int lrw_setiv(const unsigned char *IV, unsigned long len, symmetric_LRW *lrw);
-int lrw_done(symmetric_LRW *lrw);
-int lrw_test(void);
-
-/* don't call */
-int lrw_process(const unsigned char *pt, unsigned char *ct, unsigned long len, int mode, symmetric_LRW *lrw);
-#endif
-
-#ifdef LTC_F8_MODE
-int f8_start( int cipher, const unsigned char *IV,
- const unsigned char *key, int keylen,
- const unsigned char *salt_key, int skeylen,
- int num_rounds, symmetric_F8 *f8);
-int f8_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_F8 *f8);
-int f8_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_F8 *f8);
-int f8_getiv(unsigned char *IV, unsigned long *len, symmetric_F8 *f8);
-int f8_setiv(const unsigned char *IV, unsigned long len, symmetric_F8 *f8);
-int f8_done(symmetric_F8 *f8);
-int f8_test_mode(void);
-#endif
-
-#ifdef LTC_XTS_MODE
-typedef struct {
- symmetric_key key1, key2;
- int cipher;
-} symmetric_xts;
-
-int xts_start( int cipher,
- const unsigned char *key1,
- const unsigned char *key2,
- unsigned long keylen,
- int num_rounds,
- symmetric_xts *xts);
-
-int xts_encrypt(
- const unsigned char *pt, unsigned long ptlen,
- unsigned char *ct,
- const unsigned char *tweak,
- symmetric_xts *xts);
-int xts_decrypt(
- const unsigned char *ct, unsigned long ptlen,
- unsigned char *pt,
- const unsigned char *tweak,
- symmetric_xts *xts);
-
-void xts_done(symmetric_xts *xts);
-int xts_test(void);
-void xts_mult_x(unsigned char *I);
-#endif
-
-int find_cipher(const char *name);
-int find_cipher_any(const char *name, int blocklen, int keylen);
-int find_cipher_id(unsigned char ID);
-int register_cipher(const struct ltc_cipher_descriptor *cipher);
-int unregister_cipher(const struct ltc_cipher_descriptor *cipher);
-int cipher_is_valid(int idx);
-
-LTC_MUTEX_PROTO(ltc_cipher_mutex)
-
-/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_cipher.h,v $ */
-/* $Revision: 1.54 $ */
-/* $Date: 2007/05/12 14:37:41 $ */
diff --git a/StormLib/src/libtomcrypt/src/headers/tomcrypt_custom.h b/StormLib/src/libtomcrypt/src/headers/tomcrypt_custom.h
deleted file mode 100644
index 312a4c256..000000000
--- a/StormLib/src/libtomcrypt/src/headers/tomcrypt_custom.h
+++ /dev/null
@@ -1,424 +0,0 @@
-#ifndef TOMCRYPT_CUSTOM_H_
-#define TOMCRYPT_CUSTOM_H_
-
-#define LTC_NO_CIPHERS
-#define LTC_NO_HASHES
-#define LTC_NO_MACS
-#define LTC_NO_PRNGS
-#define LTC_NO_CURVES
-#define LTC_NO_MODES
-#define LTC_NO_PKCS
-#define LTC_NO_ROLC
-
-#define LTC_SOURCE
-#define LTC_SHA1
-#define LTC_MD5
-#define LTC_DER
-#define LTC_RC4
-
-#define USE_LTM
-#define LTM_DESC
-
-/* macros for various libc functions you can change for embedded targets */
-#ifndef XMALLOC
- #ifdef malloc
- #define LTC_NO_PROTOTYPES
- #endif
-#define XMALLOC LibTomMalloc
-#endif
-#ifndef XREALLOC
- #ifdef realloc
- #define LTC_NO_PROTOTYPES
- #endif
-#define XREALLOC LibTomRealloc
-#endif
-#ifndef XCALLOC
- #ifdef calloc
- #define LTC_NO_PROTOTYPES
- #endif
-#define XCALLOC LibTomCalloc
-#endif
-#ifndef XFREE
- #ifdef free
- #define LTC_NO_PROTOTYPES
- #endif
-#define XFREE LibTomFree
-#endif
-
-#ifndef XMEMSET
- #ifdef memset
- #define LTC_NO_PROTOTYPES_MEMSET
- #endif
-#define XMEMSET memset
-#endif
-#ifndef XMEMCPY
- #ifdef memcpy
- #define LTC_NO_PROTOTYPES_MEMCPY
- #endif
-#define XMEMCPY memcpy
-#endif
-#ifndef XMEMCMP
- #ifdef memcmp
- #define LTC_NO_PROTOTYPES_MEMCMP
- #endif
-#define XMEMCMP memcmp
-#endif
-#ifndef XSTRCMP
- #ifdef strcmp
- #define LTC_NO_PROTOTYPES_STRCMP
- #endif
-#define XSTRCMP strcmp
-#endif
-
-#ifndef XCLOCK
-#define XCLOCK LibTomClock
-#endif
-#ifndef XCLOCKS_PER_SEC
-#define XCLOCKS_PER_SEC CLOCKS_PER_SEC
-#endif
-
-#ifndef XQSORT
- #ifdef qsort
- #define LTC_NO_PROTOTYPES
- #endif
-#define XQSORT LibTomQsort
-#endif
-
-/* Easy button? */
-#ifdef LTC_EASY
- #define LTC_NO_CIPHERS
- #define LTC_RIJNDAEL
- #define LTC_BLOWFISH
- #define LTC_DES
- #define LTC_CAST5
-
- #define LTC_NO_MODES
- #define LTC_ECB_MODE
- #define LTC_CBC_MODE
- #define LTC_CTR_MODE
-
- #define LTC_NO_HASHES
- #define LTC_SHA1
- #define LTC_SHA512
- #define LTC_SHA384
- #define LTC_SHA256
- #define LTC_SHA224
-
- #define LTC_NO_MACS
- #define LTC_HMAC
- #define LTC_OMAC
- #define LTC_CCM_MODE
-
- #define LTC_NO_PRNGS
- #define LTC_SPRNG
- #define LTC_YARROW
- #define LTC_DEVRANDOM
- #define TRY_URANDOM_FIRST
-
- #define LTC_NO_PK
- #define LTC_MRSA
- #define LTC_MECC
-#endif
-
-/* Use small code where possible */
-/* #define LTC_SMALL_CODE */
-
-/* Enable self-test test vector checking */
-#ifndef LTC_NO_TEST
- #define LTC_TEST
-#endif
-
-/* clean the stack of functions which put private information on stack */
-/* #define LTC_CLEAN_STACK */
-
-/* disable all file related functions */
-/* #define LTC_NO_FILE */
-
-/* disable all forms of ASM */
-/* #define LTC_NO_ASM */
-
-/* disable FAST mode */
-/* #define LTC_NO_FAST */
-
-/* disable BSWAP on x86 */
-/* #define LTC_NO_BSWAP */
-
-/* ---> Symmetric Block Ciphers <--- */
-#ifndef LTC_NO_CIPHERS
-
-#define LTC_BLOWFISH
-#define LTC_RC2
-#define LTC_RC5
-#define LTC_RC6
-#define LTC_SAFERP
-#define LTC_RIJNDAEL
-#define LTC_XTEA
-/* _TABLES tells it to use tables during setup, _SMALL means to use the smaller scheduled key format
- * (saves 4KB of ram), _ALL_TABLES enables all tables during setup */
-#define LTC_TWOFISH
-#ifndef LTC_NO_TABLES
- #define LTC_TWOFISH_TABLES
- /* #define LTC_TWOFISH_ALL_TABLES */
-#else
- #define LTC_TWOFISH_SMALL
-#endif
-/* #define LTC_TWOFISH_SMALL */
-/* LTC_DES includes EDE triple-LTC_DES */
-#define LTC_DES
-#define LTC_CAST5
-#define LTC_NOEKEON
-#define LTC_SKIPJACK
-#define LTC_SAFER
-#define LTC_KHAZAD
-#define LTC_ANUBIS
-#define LTC_ANUBIS_TWEAK
-#define LTC_KSEED
-#define LTC_KASUMI
-
-#endif /* LTC_NO_CIPHERS */
-
-
-/* ---> Block Cipher Modes of Operation <--- */
-#ifndef LTC_NO_MODES
-
-#define LTC_CFB_MODE
-#define LTC_OFB_MODE
-#define LTC_ECB_MODE
-#define LTC_CBC_MODE
-#define LTC_CTR_MODE
-
-/* F8 chaining mode */
-#define LTC_F8_MODE
-
-/* LRW mode */
-#define LTC_LRW_MODE
-#ifndef LTC_NO_TABLES
- /* like GCM mode this will enable 16 8x128 tables [64KB] that make
- * seeking very fast.
- */
- #define LRW_TABLES
-#endif
-
-/* XTS mode */
-#define LTC_XTS_MODE
-
-#endif /* LTC_NO_MODES */
-
-/* ---> One-Way Hash Functions <--- */
-#ifndef LTC_NO_HASHES
-
-#define LTC_CHC_HASH
-#define LTC_WHIRLPOOL
-#define LTC_SHA512
-#define LTC_SHA384
-#define LTC_SHA256
-#define LTC_SHA224
-#define LTC_TIGER
-#define LTC_SHA1
-#define LTC_MD5
-#define LTC_MD4
-#define LTC_MD2
-#define LTC_RIPEMD128
-#define LTC_RIPEMD160
-#define LTC_RIPEMD256
-#define LTC_RIPEMD320
-
-#endif /* LTC_NO_HASHES */
-
-/* ---> MAC functions <--- */
-#ifndef LTC_NO_MACS
-
-#define LTC_HMAC
-#define LTC_OMAC
-#define LTC_PMAC
-#define LTC_XCBC
-#define LTC_F9_MODE
-#define LTC_PELICAN
-
-#if defined(LTC_PELICAN) && !defined(LTC_RIJNDAEL)
- #error Pelican-MAC requires LTC_RIJNDAEL
-#endif
-
-/* ---> Encrypt + Authenticate Modes <--- */
-
-#define LTC_EAX_MODE
-#if defined(LTC_EAX_MODE) && !(defined(LTC_CTR_MODE) && defined(LTC_OMAC))
- #error LTC_EAX_MODE requires CTR and LTC_OMAC mode
-#endif
-
-#define LTC_OCB_MODE
-#define LTC_CCM_MODE
-#define LTC_GCM_MODE
-
-/* Use 64KiB tables */
-#ifndef LTC_NO_TABLES
- #define LTC_GCM_TABLES
-#endif
-
-/* USE SSE2? requires GCC works on x86_32 and x86_64*/
-#ifdef LTC_GCM_TABLES
-/* #define LTC_GCM_TABLES_SSE2 */
-#endif
-
-#endif /* LTC_NO_MACS */
-
-/* Various tidbits of modern neatoness */
-#define LTC_BASE64
-
-/* --> Pseudo Random Number Generators <--- */
-#ifndef LTC_NO_PRNGS
-
-/* Yarrow */
-#define LTC_YARROW
-/* which descriptor of AES to use? */
-/* 0 = rijndael_enc 1 = aes_enc, 2 = rijndael [full], 3 = aes [full] */
-#define LTC_YARROW_AES 0
-
-#if defined(LTC_YARROW) && !defined(LTC_CTR_MODE)
- #error LTC_YARROW requires LTC_CTR_MODE chaining mode to be defined!
-#endif
-
-/* a PRNG that simply reads from an available system source */
-#define LTC_SPRNG
-
-/* The LTC_RC4 stream cipher */
-#define LTC_RC4
-
-/* Fortuna PRNG */
-#define LTC_FORTUNA
-/* reseed every N calls to the read function */
-#define LTC_FORTUNA_WD 10
-/* number of pools (4..32) can save a bit of ram by lowering the count */
-#define LTC_FORTUNA_POOLS 32
-
-/* Greg's LTC_SOBER128 PRNG ;-0 */
-#define LTC_SOBER128
-
-/* the *nix style /dev/random device */
-#define LTC_DEVRANDOM
-/* try /dev/urandom before trying /dev/random */
-#define TRY_URANDOM_FIRST
-
-#endif /* LTC_NO_PRNGS */
-
-/* ---> math provider? <--- */
-#ifndef LTC_NO_MATH
-
-/* LibTomMath */
-#define LTM_LTC_DESC
-
-/* TomsFastMath */
-//#define TFM_LTC_DESC
-
-#endif /* LTC_NO_MATH */
-
-/* ---> Public Key Crypto <--- */
-#ifndef LTC_NO_PK
-
-/* Include RSA support */
-#define LTC_MRSA
-
-/* Include Katja (a Rabin variant like RSA) */
-/* #define MKAT */
-
-/* Digital Signature Algorithm */
-#define LTC_MDSA
-
-/* ECC */
-#define LTC_MECC
-
-/* use Shamir's trick for point mul (speeds up signature verification) */
-#define LTC_ECC_SHAMIR
-
-#if defined(TFM_LTC_DESC) && defined(LTC_MECC)
- #define LTC_MECC_ACCEL
-#endif
-
-/* do we want fixed point ECC */
-/* #define LTC_MECC_FP */
-
-/* Timing Resistant? */
-/* #define LTC_ECC_TIMING_RESISTANT */
-
-#endif /* LTC_NO_PK */
-
-/* LTC_PKCS #1 (RSA) and #5 (Password Handling) stuff */
-#ifndef LTC_NO_PKCS
-
-#define LTC_PKCS_1
-#define LTC_PKCS_5
-
-/* Include ASN.1 DER (required by DSA/RSA) */
-#define LTC_DER
-
-#endif /* LTC_NO_PKCS */
-
-/* cleanup */
-
-#ifdef LTC_MECC
-/* Supported ECC Key Sizes */
-#ifndef LTC_NO_CURVES
- #define ECC112
- #define ECC128
- #define ECC160
- #define ECC192
- #define ECC224
- #define ECC256
- #define ECC384
- #define ECC521
-#endif
-#endif
-
-#if defined(LTC_MECC) || defined(LTC_MRSA) || defined(LTC_MDSA) || defined(MKATJA)
- /* Include the MPI functionality? (required by the PK algorithms) */
- #define MPI
-#endif
-
-#ifdef LTC_MRSA
- #define LTC_PKCS_1
-#endif
-
-#if defined(LTC_DER) && !defined(MPI)
- #error ASN.1 DER requires MPI functionality
-#endif
-
-#if (defined(LTC_MDSA) || defined(LTC_MRSA) || defined(LTC_MECC) || defined(MKATJA)) && !defined(LTC_DER)
- #error PK requires ASN.1 DER functionality, make sure LTC_DER is enabled
-#endif
-
-/* THREAD management */
-#ifdef LTC_PTHREAD
-
-#include <pthread.h>
-
-#define LTC_MUTEX_GLOBAL(x) pthread_mutex_t x = PTHREAD_MUTEX_INITIALIZER;
-#define LTC_MUTEX_PROTO(x) extern pthread_mutex_t x;
-#define LTC_MUTEX_TYPE(x) pthread_mutex_t x;
-#define LTC_MUTEX_INIT(x) pthread_mutex_init(x, NULL);
-#define LTC_MUTEX_LOCK(x) pthread_mutex_lock(x);
-#define LTC_MUTEX_UNLOCK(x) pthread_mutex_unlock(x);
-
-#else
-
-/* default no functions */
-#define LTC_MUTEX_GLOBAL(x)
-#define LTC_MUTEX_PROTO(x)
-#define LTC_MUTEX_TYPE(x)
-#define LTC_MUTEX_INIT(x)
-#define LTC_MUTEX_LOCK(x)
-#define LTC_MUTEX_UNLOCK(x)
-
-#endif
-
-/* Debuggers */
-
-/* define this if you use Valgrind, note: it CHANGES the way SOBER-128 and LTC_RC4 work (see the code) */
-/* #define LTC_VALGRIND */
-
-#endif
-
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_custom.h,v $ */
-/* $Revision: 1.73 $ */
-/* $Date: 2007/05/12 14:37:41 $ */
diff --git a/StormLib/src/libtomcrypt/src/headers/tomcrypt_hash.h b/StormLib/src/libtomcrypt/src/headers/tomcrypt_hash.h
deleted file mode 100644
index 18553ebf9..000000000
--- a/StormLib/src/libtomcrypt/src/headers/tomcrypt_hash.h
+++ /dev/null
@@ -1,378 +0,0 @@
-/* ---- HASH FUNCTIONS ---- */
-#ifdef LTC_SHA512
-struct sha512_state {
- ulong64 length, state[8];
- unsigned long curlen;
- unsigned char buf[128];
-};
-#endif
-
-#ifdef LTC_SHA256
-struct sha256_state {
- ulong64 length;
- ulong32 state[8], curlen;
- unsigned char buf[64];
-};
-#endif
-
-#ifdef LTC_SHA1
-struct sha1_state {
- ulong64 length;
- ulong32 state[5], curlen;
- unsigned char buf[64];
-};
-#endif
-
-#ifdef LTC_MD5
-struct md5_state {
- ulong64 length;
- ulong32 state[4], curlen;
- unsigned char buf[64];
-};
-#endif
-
-#ifdef LTC_MD4
-struct md4_state {
- ulong64 length;
- ulong32 state[4], curlen;
- unsigned char buf[64];
-};
-#endif
-
-#ifdef LTC_TIGER
-struct tiger_state {
- ulong64 state[3], length;
- unsigned long curlen;
- unsigned char buf[64];
-};
-#endif
-
-#ifdef LTC_MD2
-struct md2_state {
- unsigned char chksum[16], X[48], buf[16];
- unsigned long curlen;
-};
-#endif
-
-#ifdef LTC_RIPEMD128
-struct rmd128_state {
- ulong64 length;
- unsigned char buf[64];
- ulong32 curlen, state[4];
-};
-#endif
-
-#ifdef LTC_RIPEMD160
-struct rmd160_state {
- ulong64 length;
- unsigned char buf[64];
- ulong32 curlen, state[5];
-};
-#endif
-
-#ifdef LTC_RIPEMD256
-struct rmd256_state {
- ulong64 length;
- unsigned char buf[64];
- ulong32 curlen, state[8];
-};
-#endif
-
-#ifdef LTC_RIPEMD320
-struct rmd320_state {
- ulong64 length;
- unsigned char buf[64];
- ulong32 curlen, state[10];
-};
-#endif
-
-#ifdef LTC_WHIRLPOOL
-struct whirlpool_state {
- ulong64 length, state[8];
- unsigned char buf[64];
- ulong32 curlen;
-};
-#endif
-
-#ifdef LTC_CHC_HASH
-struct chc_state {
- ulong64 length;
- unsigned char state[MAXBLOCKSIZE], buf[MAXBLOCKSIZE];
- ulong32 curlen;
-};
-#endif
-
-typedef union Hash_state {
-#ifdef LTC_CHC_HASH
- struct chc_state chc;
-#endif
-#ifdef LTC_WHIRLPOOL
- struct whirlpool_state whirlpool;
-#endif
-#ifdef LTC_SHA512
- struct sha512_state sha512;
-#endif
-#ifdef LTC_SHA256
- struct sha256_state sha256;
-#endif
-#ifdef LTC_SHA1
- struct sha1_state sha1;
-#endif
-#ifdef LTC_MD5
- struct md5_state md5;
-#endif
-#ifdef LTC_MD4
- struct md4_state md4;
-#endif
-#ifdef LTC_MD2
- struct md2_state md2;
-#endif
-#ifdef LTC_TIGER
- struct tiger_state tiger;
-#endif
-#ifdef LTC_RIPEMD128
- struct rmd128_state rmd128;
-#endif
-#ifdef LTC_RIPEMD160
- struct rmd160_state rmd160;
-#endif
-#ifdef LTC_RIPEMD256
- struct rmd256_state rmd256;
-#endif
-#ifdef LTC_RIPEMD320
- struct rmd320_state rmd320;
-#endif
- void *data;
-} hash_state;
-
-/** hash descriptor */
-extern struct ltc_hash_descriptor {
- /** name of hash */
- char *name;
- /** internal ID */
- unsigned char ID;
- /** Size of digest in octets */
- unsigned long hashsize;
- /** Input block size in octets */
- unsigned long blocksize;
- /** ASN.1 OID */
- unsigned long OID[16];
- /** Length of DER encoding */
- unsigned long OIDlen;
-
- /** Init a hash state
- @param hash The hash to initialize
- @return CRYPT_OK if successful
- */
- int (*init)(hash_state *hash);
- /** Process a block of data
- @param hash The hash state
- @param in The data to hash
- @param inlen The length of the data (octets)
- @return CRYPT_OK if successful
- */
- int (*process)(hash_state *hash, const unsigned char *in, unsigned long inlen);
- /** Produce the digest and store it
- @param hash The hash state
- @param out [out] The destination of the digest
- @return CRYPT_OK if successful
- */
- int (*done)(hash_state *hash, unsigned char *out);
- /** Self-test
- @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled
- */
- int (*test)(void);
-
- /* accelerated hmac callback: if you need to-do multiple packets just use the generic hmac_memory and provide a hash callback */
- int (*hmac_block)(const unsigned char *key, unsigned long keylen,
- const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-
-} hash_descriptor[];
-
-#ifdef LTC_CHC_HASH
-int chc_register(int cipher);
-int chc_init(hash_state * md);
-int chc_process(hash_state * md, const unsigned char *in, unsigned long inlen);
-int chc_done(hash_state * md, unsigned char *hash);
-int chc_test(void);
-extern const struct ltc_hash_descriptor chc_desc;
-#endif
-
-#ifdef LTC_WHIRLPOOL
-int whirlpool_init(hash_state * md);
-int whirlpool_process(hash_state * md, const unsigned char *in, unsigned long inlen);
-int whirlpool_done(hash_state * md, unsigned char *hash);
-int whirlpool_test(void);
-extern const struct ltc_hash_descriptor whirlpool_desc;
-#endif
-
-#ifdef LTC_SHA512
-int sha512_init(hash_state * md);
-int sha512_process(hash_state * md, const unsigned char *in, unsigned long inlen);
-int sha512_done(hash_state * md, unsigned char *hash);
-int sha512_test(void);
-extern const struct ltc_hash_descriptor sha512_desc;
-#endif
-
-#ifdef LTC_SHA384
-#ifndef LTC_SHA512
- #error LTC_SHA512 is required for LTC_SHA384
-#endif
-int sha384_init(hash_state * md);
-#define sha384_process sha512_process
-int sha384_done(hash_state * md, unsigned char *hash);
-int sha384_test(void);
-extern const struct ltc_hash_descriptor sha384_desc;
-#endif
-
-#ifdef LTC_SHA256
-int sha256_init(hash_state * md);
-int sha256_process(hash_state * md, const unsigned char *in, unsigned long inlen);
-int sha256_done(hash_state * md, unsigned char *hash);
-int sha256_test(void);
-extern const struct ltc_hash_descriptor sha256_desc;
-
-#ifdef LTC_SHA224
-#ifndef LTC_SHA256
- #error LTC_SHA256 is required for LTC_SHA224
-#endif
-int sha224_init(hash_state * md);
-#define sha224_process sha256_process
-int sha224_done(hash_state * md, unsigned char *hash);
-int sha224_test(void);
-extern const struct ltc_hash_descriptor sha224_desc;
-#endif
-#endif
-
-#ifdef LTC_SHA1
-int sha1_init(hash_state * md);
-int sha1_process(hash_state * md, const unsigned char *in, unsigned long inlen);
-int sha1_done(hash_state * md, unsigned char *hash);
-int sha1_test(void);
-extern const struct ltc_hash_descriptor sha1_desc;
-#endif
-
-#ifdef LTC_MD5
-int md5_init(hash_state * md);
-int md5_process(hash_state * md, const unsigned char *in, unsigned long inlen);
-int md5_done(hash_state * md, unsigned char *hash);
-int md5_test(void);
-extern const struct ltc_hash_descriptor md5_desc;
-#endif
-
-#ifdef LTC_MD4
-int md4_init(hash_state * md);
-int md4_process(hash_state * md, const unsigned char *in, unsigned long inlen);
-int md4_done(hash_state * md, unsigned char *hash);
-int md4_test(void);
-extern const struct ltc_hash_descriptor md4_desc;
-#endif
-
-#ifdef LTC_MD2
-int md2_init(hash_state * md);
-int md2_process(hash_state * md, const unsigned char *in, unsigned long inlen);
-int md2_done(hash_state * md, unsigned char *hash);
-int md2_test(void);
-extern const struct ltc_hash_descriptor md2_desc;
-#endif
-
-#ifdef LTC_TIGER
-int tiger_init(hash_state * md);
-int tiger_process(hash_state * md, const unsigned char *in, unsigned long inlen);
-int tiger_done(hash_state * md, unsigned char *hash);
-int tiger_test(void);
-extern const struct ltc_hash_descriptor tiger_desc;
-#endif
-
-#ifdef LTC_RIPEMD128
-int rmd128_init(hash_state * md);
-int rmd128_process(hash_state * md, const unsigned char *in, unsigned long inlen);
-int rmd128_done(hash_state * md, unsigned char *hash);
-int rmd128_test(void);
-extern const struct ltc_hash_descriptor rmd128_desc;
-#endif
-
-#ifdef LTC_RIPEMD160
-int rmd160_init(hash_state * md);
-int rmd160_process(hash_state * md, const unsigned char *in, unsigned long inlen);
-int rmd160_done(hash_state * md, unsigned char *hash);
-int rmd160_test(void);
-extern const struct ltc_hash_descriptor rmd160_desc;
-#endif
-
-#ifdef LTC_RIPEMD256
-int rmd256_init(hash_state * md);
-int rmd256_process(hash_state * md, const unsigned char *in, unsigned long inlen);
-int rmd256_done(hash_state * md, unsigned char *hash);
-int rmd256_test(void);
-extern const struct ltc_hash_descriptor rmd256_desc;
-#endif
-
-#ifdef LTC_RIPEMD320
-int rmd320_init(hash_state * md);
-int rmd320_process(hash_state * md, const unsigned char *in, unsigned long inlen);
-int rmd320_done(hash_state * md, unsigned char *hash);
-int rmd320_test(void);
-extern const struct ltc_hash_descriptor rmd320_desc;
-#endif
-
-
-int find_hash(const char *name);
-int find_hash_id(unsigned char ID);
-int find_hash_oid(const unsigned long *ID, unsigned long IDlen);
-int find_hash_any(const char *name, int digestlen);
-int register_hash(const struct ltc_hash_descriptor *hash);
-int unregister_hash(const struct ltc_hash_descriptor *hash);
-int hash_is_valid(int idx);
-
-LTC_MUTEX_PROTO(ltc_hash_mutex)
-
-int hash_memory(int hash,
- const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-int hash_memory_multi(int hash, unsigned char *out, unsigned long *outlen,
- const unsigned char *in, unsigned long inlen, ...);
-int hash_filehandle(int hash, FILE *in, unsigned char *out, unsigned long *outlen);
-int hash_file(int hash, const char *fname, unsigned char *out, unsigned long *outlen);
-
-/* a simple macro for making hash "process" functions */
-#define HASH_PROCESS(func_name, compress_name, state_var, block_size) \
-int func_name (hash_state * md, const unsigned char *in, unsigned long inlen) \
-{ \
- unsigned long n; \
- int err; \
- LTC_ARGCHK(md != NULL); \
- LTC_ARGCHK(in != NULL); \
- if (md-> state_var .curlen > sizeof(md-> state_var .buf)) { \
- return CRYPT_INVALID_ARG; \
- } \
- while (inlen > 0) { \
- if (md-> state_var .curlen == 0 && inlen >= block_size) { \
- if ((err = compress_name (md, (unsigned char *)in)) != CRYPT_OK) { \
- return err; \
- } \
- md-> state_var .length += block_size * 8; \
- in += block_size; \
- inlen -= block_size; \
- } else { \
- n = MIN(inlen, (block_size - md-> state_var .curlen)); \
- memcpy(md-> state_var .buf + md-> state_var.curlen, in, (size_t)n); \
- md-> state_var .curlen += n; \
- in += n; \
- inlen -= n; \
- if (md-> state_var .curlen == block_size) { \
- if ((err = compress_name (md, md-> state_var .buf)) != CRYPT_OK) { \
- return err; \
- } \
- md-> state_var .length += 8*block_size; \
- md-> state_var .curlen = 0; \
- } \
- } \
- } \
- return CRYPT_OK; \
-}
-
-/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_hash.h,v $ */
-/* $Revision: 1.22 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/headers/tomcrypt_mac.h b/StormLib/src/libtomcrypt/src/headers/tomcrypt_mac.h
deleted file mode 100644
index 7ad9516bd..000000000
--- a/StormLib/src/libtomcrypt/src/headers/tomcrypt_mac.h
+++ /dev/null
@@ -1,384 +0,0 @@
-#ifdef LTC_HMAC
-typedef struct Hmac_state {
- hash_state md;
- int hash;
- hash_state hashstate;
- unsigned char *key;
-} hmac_state;
-
-int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen);
-int hmac_process(hmac_state *hmac, const unsigned char *in, unsigned long inlen);
-int hmac_done(hmac_state *hmac, unsigned char *out, unsigned long *outlen);
-int hmac_test(void);
-int hmac_memory(int hash,
- const unsigned char *key, unsigned long keylen,
- const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-int hmac_memory_multi(int hash,
- const unsigned char *key, unsigned long keylen,
- unsigned char *out, unsigned long *outlen,
- const unsigned char *in, unsigned long inlen, ...);
-int hmac_file(int hash, const char *fname, const unsigned char *key,
- unsigned long keylen,
- unsigned char *dst, unsigned long *dstlen);
-#endif
-
-#ifdef LTC_OMAC
-
-typedef struct {
- int cipher_idx,
- buflen,
- blklen;
- unsigned char block[MAXBLOCKSIZE],
- prev[MAXBLOCKSIZE],
- Lu[2][MAXBLOCKSIZE];
- symmetric_key key;
-} omac_state;
-
-int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned long keylen);
-int omac_process(omac_state *omac, const unsigned char *in, unsigned long inlen);
-int omac_done(omac_state *omac, unsigned char *out, unsigned long *outlen);
-int omac_memory(int cipher,
- const unsigned char *key, unsigned long keylen,
- const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-int omac_memory_multi(int cipher,
- const unsigned char *key, unsigned long keylen,
- unsigned char *out, unsigned long *outlen,
- const unsigned char *in, unsigned long inlen, ...);
-int omac_file(int cipher,
- const unsigned char *key, unsigned long keylen,
- const char *filename,
- unsigned char *out, unsigned long *outlen);
-int omac_test(void);
-#endif /* LTC_OMAC */
-
-#ifdef LTC_PMAC
-
-typedef struct {
- unsigned char Ls[32][MAXBLOCKSIZE], /* L shifted by i bits to the left */
- Li[MAXBLOCKSIZE], /* value of Li [current value, we calc from previous recall] */
- Lr[MAXBLOCKSIZE], /* L * x^-1 */
- block[MAXBLOCKSIZE], /* currently accumulated block */
- checksum[MAXBLOCKSIZE]; /* current checksum */
-
- symmetric_key key; /* scheduled key for cipher */
- unsigned long block_index; /* index # for current block */
- int cipher_idx, /* cipher idx */
- block_len, /* length of block */
- buflen; /* number of bytes in the buffer */
-} pmac_state;
-
-int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned long keylen);
-int pmac_process(pmac_state *pmac, const unsigned char *in, unsigned long inlen);
-int pmac_done(pmac_state *pmac, unsigned char *out, unsigned long *outlen);
-
-int pmac_memory(int cipher,
- const unsigned char *key, unsigned long keylen,
- const unsigned char *msg, unsigned long msglen,
- unsigned char *out, unsigned long *outlen);
-
-int pmac_memory_multi(int cipher,
- const unsigned char *key, unsigned long keylen,
- unsigned char *out, unsigned long *outlen,
- const unsigned char *in, unsigned long inlen, ...);
-
-int pmac_file(int cipher,
- const unsigned char *key, unsigned long keylen,
- const char *filename,
- unsigned char *out, unsigned long *outlen);
-
-int pmac_test(void);
-
-/* internal functions */
-int pmac_ntz(unsigned long x);
-void pmac_shift_xor(pmac_state *pmac);
-
-#endif /* PMAC */
-
-#ifdef LTC_EAX_MODE
-
-#if !(defined(LTC_OMAC) && defined(LTC_CTR_MODE))
- #error LTC_EAX_MODE requires LTC_OMAC and CTR
-#endif
-
-typedef struct {
- unsigned char N[MAXBLOCKSIZE];
- symmetric_CTR ctr;
- omac_state headeromac, ctomac;
-} eax_state;
-
-int eax_init(eax_state *eax, int cipher, const unsigned char *key, unsigned long keylen,
- const unsigned char *nonce, unsigned long noncelen,
- const unsigned char *header, unsigned long headerlen);
-
-int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, unsigned long length);
-int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, unsigned long length);
-int eax_addheader(eax_state *eax, const unsigned char *header, unsigned long length);
-int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen);
-
-int eax_encrypt_authenticate_memory(int cipher,
- const unsigned char *key, unsigned long keylen,
- const unsigned char *nonce, unsigned long noncelen,
- const unsigned char *header, unsigned long headerlen,
- const unsigned char *pt, unsigned long ptlen,
- unsigned char *ct,
- unsigned char *tag, unsigned long *taglen);
-
-int eax_decrypt_verify_memory(int cipher,
- const unsigned char *key, unsigned long keylen,
- const unsigned char *nonce, unsigned long noncelen,
- const unsigned char *header, unsigned long headerlen,
- const unsigned char *ct, unsigned long ctlen,
- unsigned char *pt,
- unsigned char *tag, unsigned long taglen,
- int *stat);
-
- int eax_test(void);
-#endif /* EAX MODE */
-
-#ifdef LTC_OCB_MODE
-typedef struct {
- unsigned char L[MAXBLOCKSIZE], /* L value */
- Ls[32][MAXBLOCKSIZE], /* L shifted by i bits to the left */
- Li[MAXBLOCKSIZE], /* value of Li [current value, we calc from previous recall] */
- Lr[MAXBLOCKSIZE], /* L * x^-1 */
- R[MAXBLOCKSIZE], /* R value */
- checksum[MAXBLOCKSIZE]; /* current checksum */
-
- symmetric_key key; /* scheduled key for cipher */
- unsigned long block_index; /* index # for current block */
- int cipher, /* cipher idx */
- block_len; /* length of block */
-} ocb_state;
-
-int ocb_init(ocb_state *ocb, int cipher,
- const unsigned char *key, unsigned long keylen, const unsigned char *nonce);
-
-int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct);
-int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt);
-
-int ocb_done_encrypt(ocb_state *ocb,
- const unsigned char *pt, unsigned long ptlen,
- unsigned char *ct,
- unsigned char *tag, unsigned long *taglen);
-
-int ocb_done_decrypt(ocb_state *ocb,
- const unsigned char *ct, unsigned long ctlen,
- unsigned char *pt,
- const unsigned char *tag, unsigned long taglen, int *stat);
-
-int ocb_encrypt_authenticate_memory(int cipher,
- const unsigned char *key, unsigned long keylen,
- const unsigned char *nonce,
- const unsigned char *pt, unsigned long ptlen,
- unsigned char *ct,
- unsigned char *tag, unsigned long *taglen);
-
-int ocb_decrypt_verify_memory(int cipher,
- const unsigned char *key, unsigned long keylen,
- const unsigned char *nonce,
- const unsigned char *ct, unsigned long ctlen,
- unsigned char *pt,
- const unsigned char *tag, unsigned long taglen,
- int *stat);
-
-int ocb_test(void);
-
-/* internal functions */
-void ocb_shift_xor(ocb_state *ocb, unsigned char *Z);
-int ocb_ntz(unsigned long x);
-int s_ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen,
- unsigned char *ct, unsigned char *tag, unsigned long *taglen, int mode);
-
-#endif /* LTC_OCB_MODE */
-
-#ifdef LTC_CCM_MODE
-
-#define CCM_ENCRYPT 0
-#define CCM_DECRYPT 1
-
-int ccm_memory(int cipher,
- const unsigned char *key, unsigned long keylen,
- symmetric_key *uskey,
- const unsigned char *nonce, unsigned long noncelen,
- const unsigned char *header, unsigned long headerlen,
- unsigned char *pt, unsigned long ptlen,
- unsigned char *ct,
- unsigned char *tag, unsigned long *taglen,
- int direction);
-
-int ccm_test(void);
-
-#endif /* LTC_CCM_MODE */
-
-#if defined(LRW_MODE) || defined(LTC_GCM_MODE)
-void gcm_gf_mult(const unsigned char *a, const unsigned char *b, unsigned char *c);
-#endif
-
-
-/* table shared between GCM and LRW */
-#if defined(LTC_GCM_TABLES) || defined(LRW_TABLES) || ((defined(LTC_GCM_MODE) || defined(LTC_GCM_MODE)) && defined(LTC_FAST))
-extern const unsigned char gcm_shift_table[];
-#endif
-
-#ifdef LTC_GCM_MODE
-
-#define GCM_ENCRYPT 0
-#define GCM_DECRYPT 1
-
-#define LTC_GCM_MODE_IV 0
-#define LTC_GCM_MODE_AAD 1
-#define LTC_GCM_MODE_TEXT 2
-
-typedef struct {
- symmetric_key K;
- unsigned char H[16], /* multiplier */
- X[16], /* accumulator */
- Y[16], /* counter */
- Y_0[16], /* initial counter */
- buf[16]; /* buffer for stuff */
-
- int cipher, /* which cipher */
- ivmode, /* Which mode is the IV in? */
- mode, /* mode the GCM code is in */
- buflen; /* length of data in buf */
-
- ulong64 totlen, /* 64-bit counter used for IV and AAD */
- pttotlen; /* 64-bit counter for the PT */
-
-#ifdef LTC_GCM_TABLES
- unsigned char PC[16][256][16] /* 16 tables of 8x128 */
-#ifdef LTC_GCM_TABLES_SSE2
-__attribute__ ((aligned (16)))
-#endif
-;
-#endif
-} gcm_state;
-
-void gcm_mult_h(gcm_state *gcm, unsigned char *I);
-
-int gcm_init(gcm_state *gcm, int cipher,
- const unsigned char *key, int keylen);
-
-int gcm_reset(gcm_state *gcm);
-
-int gcm_add_iv(gcm_state *gcm,
- const unsigned char *IV, unsigned long IVlen);
-
-int gcm_add_aad(gcm_state *gcm,
- const unsigned char *adata, unsigned long adatalen);
-
-int gcm_process(gcm_state *gcm,
- unsigned char *pt, unsigned long ptlen,
- unsigned char *ct,
- int direction);
-
-int gcm_done(gcm_state *gcm,
- unsigned char *tag, unsigned long *taglen);
-
-int gcm_memory( int cipher,
- const unsigned char *key, unsigned long keylen,
- const unsigned char *IV, unsigned long IVlen,
- const unsigned char *adata, unsigned long adatalen,
- unsigned char *pt, unsigned long ptlen,
- unsigned char *ct,
- unsigned char *tag, unsigned long *taglen,
- int direction);
-int gcm_test(void);
-
-#endif /* LTC_GCM_MODE */
-
-#ifdef LTC_PELICAN
-
-typedef struct pelican_state
-{
- symmetric_key K;
- unsigned char state[16];
- int buflen;
-} pelican_state;
-
-int pelican_init(pelican_state *pelmac, const unsigned char *key, unsigned long keylen);
-int pelican_process(pelican_state *pelmac, const unsigned char *in, unsigned long inlen);
-int pelican_done(pelican_state *pelmac, unsigned char *out);
-int pelican_test(void);
-
-int pelican_memory(const unsigned char *key, unsigned long keylen,
- const unsigned char *in, unsigned long inlen,
- unsigned char *out);
-
-#endif
-
-#ifdef LTC_XCBC
-
-/* add this to "keylen" to xcbc_init to use a pure three-key XCBC MAC */
-#define LTC_XCBC_PURE 0x8000UL
-
-typedef struct {
- unsigned char K[3][MAXBLOCKSIZE],
- IV[MAXBLOCKSIZE];
-
- symmetric_key key;
-
- int cipher,
- buflen,
- blocksize;
-} xcbc_state;
-
-int xcbc_init(xcbc_state *xcbc, int cipher, const unsigned char *key, unsigned long keylen);
-int xcbc_process(xcbc_state *xcbc, const unsigned char *in, unsigned long inlen);
-int xcbc_done(xcbc_state *xcbc, unsigned char *out, unsigned long *outlen);
-int xcbc_memory(int cipher,
- const unsigned char *key, unsigned long keylen,
- const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-int xcbc_memory_multi(int cipher,
- const unsigned char *key, unsigned long keylen,
- unsigned char *out, unsigned long *outlen,
- const unsigned char *in, unsigned long inlen, ...);
-int xcbc_file(int cipher,
- const unsigned char *key, unsigned long keylen,
- const char *filename,
- unsigned char *out, unsigned long *outlen);
-int xcbc_test(void);
-
-#endif
-
-#ifdef LTC_F9_MODE
-
-typedef struct {
- unsigned char akey[MAXBLOCKSIZE],
- ACC[MAXBLOCKSIZE],
- IV[MAXBLOCKSIZE];
-
- symmetric_key key;
-
- int cipher,
- buflen,
- keylen,
- blocksize;
-} f9_state;
-
-int f9_init(f9_state *f9, int cipher, const unsigned char *key, unsigned long keylen);
-int f9_process(f9_state *f9, const unsigned char *in, unsigned long inlen);
-int f9_done(f9_state *f9, unsigned char *out, unsigned long *outlen);
-int f9_memory(int cipher,
- const unsigned char *key, unsigned long keylen,
- const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-int f9_memory_multi(int cipher,
- const unsigned char *key, unsigned long keylen,
- unsigned char *out, unsigned long *outlen,
- const unsigned char *in, unsigned long inlen, ...);
-int f9_file(int cipher,
- const unsigned char *key, unsigned long keylen,
- const char *filename,
- unsigned char *out, unsigned long *outlen);
-int f9_test(void);
-
-#endif
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_mac.h,v $ */
-/* $Revision: 1.23 $ */
-/* $Date: 2007/05/12 14:37:41 $ */
diff --git a/StormLib/src/libtomcrypt/src/headers/tomcrypt_macros.h b/StormLib/src/libtomcrypt/src/headers/tomcrypt_macros.h
deleted file mode 100644
index 53bda9bb4..000000000
--- a/StormLib/src/libtomcrypt/src/headers/tomcrypt_macros.h
+++ /dev/null
@@ -1,424 +0,0 @@
-/* fix for MSVC ...evil! */
-#ifdef _MSC_VER
- #define CONST64(n) n ## ui64
- typedef unsigned __int64 ulong64;
-#else
- #define CONST64(n) n ## ULL
- typedef unsigned long long ulong64;
-#endif
-
-/* this is the "32-bit at least" data type
- * Re-define it to suit your platform but it must be at least 32-bits
- */
-#if defined(__x86_64__) || (defined(__sparc__) && defined(__arch64__))
- typedef unsigned ulong32;
-#else
- typedef unsigned long ulong32;
-#endif
-
-/* ---- HELPER MACROS ---- */
-#ifdef ENDIAN_NEUTRAL
-
-#define STORE32L(x, y) \
- { (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \
- (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); }
-
-#define LOAD32L(x, y) \
- { x = ((unsigned long)((y)[3] & 255)<<24) | \
- ((unsigned long)((y)[2] & 255)<<16) | \
- ((unsigned long)((y)[1] & 255)<<8) | \
- ((unsigned long)((y)[0] & 255)); }
-
-#define STORE64L(x, y) \
- { (y)[7] = (unsigned char)(((x)>>56)&255); (y)[6] = (unsigned char)(((x)>>48)&255); \
- (y)[5] = (unsigned char)(((x)>>40)&255); (y)[4] = (unsigned char)(((x)>>32)&255); \
- (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \
- (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); }
-
-#define LOAD64L(x, y) \
- { x = (((ulong64)((y)[7] & 255))<<56)|(((ulong64)((y)[6] & 255))<<48)| \
- (((ulong64)((y)[5] & 255))<<40)|(((ulong64)((y)[4] & 255))<<32)| \
- (((ulong64)((y)[3] & 255))<<24)|(((ulong64)((y)[2] & 255))<<16)| \
- (((ulong64)((y)[1] & 255))<<8)|(((ulong64)((y)[0] & 255))); }
-
-#define STORE32H(x, y) \
- { (y)[0] = (unsigned char)(((x)>>24)&255); (y)[1] = (unsigned char)(((x)>>16)&255); \
- (y)[2] = (unsigned char)(((x)>>8)&255); (y)[3] = (unsigned char)((x)&255); }
-
-#define LOAD32H(x, y) \
- { x = ((unsigned long)((y)[0] & 255)<<24) | \
- ((unsigned long)((y)[1] & 255)<<16) | \
- ((unsigned long)((y)[2] & 255)<<8) | \
- ((unsigned long)((y)[3] & 255)); }
-
-#define STORE64H(x, y) \
- { (y)[0] = (unsigned char)(((x)>>56)&255); (y)[1] = (unsigned char)(((x)>>48)&255); \
- (y)[2] = (unsigned char)(((x)>>40)&255); (y)[3] = (unsigned char)(((x)>>32)&255); \
- (y)[4] = (unsigned char)(((x)>>24)&255); (y)[5] = (unsigned char)(((x)>>16)&255); \
- (y)[6] = (unsigned char)(((x)>>8)&255); (y)[7] = (unsigned char)((x)&255); }
-
-#define LOAD64H(x, y) \
- { x = (((ulong64)((y)[0] & 255))<<56)|(((ulong64)((y)[1] & 255))<<48) | \
- (((ulong64)((y)[2] & 255))<<40)|(((ulong64)((y)[3] & 255))<<32) | \
- (((ulong64)((y)[4] & 255))<<24)|(((ulong64)((y)[5] & 255))<<16) | \
- (((ulong64)((y)[6] & 255))<<8)|(((ulong64)((y)[7] & 255))); }
-
-#endif /* ENDIAN_NEUTRAL */
-
-#ifdef ENDIAN_LITTLE
-
-#if !defined(LTC_NO_BSWAP) && (defined(INTEL_CC) || (defined(__GNUC__) && (defined(__DJGPP__) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__i386__) || defined(__x86_64__))))
-
-#define STORE32H(x, y) \
-asm __volatile__ ( \
- "bswapl %0 \n\t" \
- "movl %0,(%1)\n\t" \
- "bswapl %0 \n\t" \
- ::"r"(x), "r"(y));
-
-#define LOAD32H(x, y) \
-asm __volatile__ ( \
- "movl (%1),%0\n\t" \
- "bswapl %0\n\t" \
- :"=r"(x): "r"(y));
-
-#else
-
-#define STORE32H(x, y) \
- { (y)[0] = (unsigned char)(((x)>>24)&255); (y)[1] = (unsigned char)(((x)>>16)&255); \
- (y)[2] = (unsigned char)(((x)>>8)&255); (y)[3] = (unsigned char)((x)&255); }
-
-#define LOAD32H(x, y) \
- { x = ((unsigned long)((y)[0] & 255)<<24) | \
- ((unsigned long)((y)[1] & 255)<<16) | \
- ((unsigned long)((y)[2] & 255)<<8) | \
- ((unsigned long)((y)[3] & 255)); }
-
-#endif
-
-
-/* x86_64 processor */
-#if !defined(LTC_NO_BSWAP) && (defined(__GNUC__) && defined(__x86_64__))
-
-#define STORE64H(x, y) \
-asm __volatile__ ( \
- "bswapq %0 \n\t" \
- "movq %0,(%1)\n\t" \
- "bswapq %0 \n\t" \
- ::"r"(x), "r"(y));
-
-#define LOAD64H(x, y) \
-asm __volatile__ ( \
- "movq (%1),%0\n\t" \
- "bswapq %0\n\t" \
- :"=r"(x): "r"(y));
-
-#else
-
-#define STORE64H(x, y) \
- { (y)[0] = (unsigned char)(((x)>>56)&255); (y)[1] = (unsigned char)(((x)>>48)&255); \
- (y)[2] = (unsigned char)(((x)>>40)&255); (y)[3] = (unsigned char)(((x)>>32)&255); \
- (y)[4] = (unsigned char)(((x)>>24)&255); (y)[5] = (unsigned char)(((x)>>16)&255); \
- (y)[6] = (unsigned char)(((x)>>8)&255); (y)[7] = (unsigned char)((x)&255); }
-
-#define LOAD64H(x, y) \
- { x = (((ulong64)((y)[0] & 255))<<56)|(((ulong64)((y)[1] & 255))<<48) | \
- (((ulong64)((y)[2] & 255))<<40)|(((ulong64)((y)[3] & 255))<<32) | \
- (((ulong64)((y)[4] & 255))<<24)|(((ulong64)((y)[5] & 255))<<16) | \
- (((ulong64)((y)[6] & 255))<<8)|(((ulong64)((y)[7] & 255))); }
-
-#endif
-
-#ifdef ENDIAN_32BITWORD
-
-#define STORE32L(x, y) \
- { ulong32 __t = (x); XMEMCPY(y, &__t, 4); }
-
-#define LOAD32L(x, y) \
- XMEMCPY(&(x), y, 4);
-
-#define STORE64L(x, y) \
- { (y)[7] = (unsigned char)(((x)>>56)&255); (y)[6] = (unsigned char)(((x)>>48)&255); \
- (y)[5] = (unsigned char)(((x)>>40)&255); (y)[4] = (unsigned char)(((x)>>32)&255); \
- (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \
- (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); }
-
-#define LOAD64L(x, y) \
- { x = (((ulong64)((y)[7] & 255))<<56)|(((ulong64)((y)[6] & 255))<<48)| \
- (((ulong64)((y)[5] & 255))<<40)|(((ulong64)((y)[4] & 255))<<32)| \
- (((ulong64)((y)[3] & 255))<<24)|(((ulong64)((y)[2] & 255))<<16)| \
- (((ulong64)((y)[1] & 255))<<8)|(((ulong64)((y)[0] & 255))); }
-
-#else /* 64-bit words then */
-
-#define STORE32L(x, y) \
- { ulong32 __t = (x); XMEMCPY(y, &__t, 4); }
-
-#define LOAD32L(x, y) \
- { XMEMCPY(&(x), y, 4); x &= 0xFFFFFFFF; }
-
-#define STORE64L(x, y) \
- { ulong64 __t = (x); XMEMCPY(y, &__t, 8); }
-
-#define LOAD64L(x, y) \
- { XMEMCPY(&(x), y, 8); }
-
-#endif /* ENDIAN_64BITWORD */
-
-#endif /* ENDIAN_LITTLE */
-
-#ifdef ENDIAN_BIG
-#define STORE32L(x, y) \
- { (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \
- (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); }
-
-#define LOAD32L(x, y) \
- { x = ((unsigned long)((y)[3] & 255)<<24) | \
- ((unsigned long)((y)[2] & 255)<<16) | \
- ((unsigned long)((y)[1] & 255)<<8) | \
- ((unsigned long)((y)[0] & 255)); }
-
-#define STORE64L(x, y) \
- { (y)[7] = (unsigned char)(((x)>>56)&255); (y)[6] = (unsigned char)(((x)>>48)&255); \
- (y)[5] = (unsigned char)(((x)>>40)&255); (y)[4] = (unsigned char)(((x)>>32)&255); \
- (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \
- (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); }
-
-#define LOAD64L(x, y) \
- { x = (((ulong64)((y)[7] & 255))<<56)|(((ulong64)((y)[6] & 255))<<48) | \
- (((ulong64)((y)[5] & 255))<<40)|(((ulong64)((y)[4] & 255))<<32) | \
- (((ulong64)((y)[3] & 255))<<24)|(((ulong64)((y)[2] & 255))<<16) | \
- (((ulong64)((y)[1] & 255))<<8)|(((ulong64)((y)[0] & 255))); }
-
-#ifdef ENDIAN_32BITWORD
-
-#define STORE32H(x, y) \
- { ulong32 __t = (x); XMEMCPY(y, &__t, 4); }
-
-#define LOAD32H(x, y) \
- XMEMCPY(&(x), y, 4);
-
-#define STORE64H(x, y) \
- { (y)[0] = (unsigned char)(((x)>>56)&255); (y)[1] = (unsigned char)(((x)>>48)&255); \
- (y)[2] = (unsigned char)(((x)>>40)&255); (y)[3] = (unsigned char)(((x)>>32)&255); \
- (y)[4] = (unsigned char)(((x)>>24)&255); (y)[5] = (unsigned char)(((x)>>16)&255); \
- (y)[6] = (unsigned char)(((x)>>8)&255); (y)[7] = (unsigned char)((x)&255); }
-
-#define LOAD64H(x, y) \
- { x = (((ulong64)((y)[0] & 255))<<56)|(((ulong64)((y)[1] & 255))<<48)| \
- (((ulong64)((y)[2] & 255))<<40)|(((ulong64)((y)[3] & 255))<<32)| \
- (((ulong64)((y)[4] & 255))<<24)|(((ulong64)((y)[5] & 255))<<16)| \
- (((ulong64)((y)[6] & 255))<<8)| (((ulong64)((y)[7] & 255))); }
-
-#else /* 64-bit words then */
-
-#define STORE32H(x, y) \
- { ulong32 __t = (x); XMEMCPY(y, &__t, 4); }
-
-#define LOAD32H(x, y) \
- { XMEMCPY(&(x), y, 4); x &= 0xFFFFFFFF; }
-
-#define STORE64H(x, y) \
- { ulong64 __t = (x); XMEMCPY(y, &__t, 8); }
-
-#define LOAD64H(x, y) \
- { XMEMCPY(&(x), y, 8); }
-
-#endif /* ENDIAN_64BITWORD */
-#endif /* ENDIAN_BIG */
-
-#define BSWAP(x) ( ((x>>24)&0x000000FFUL) | ((x<<24)&0xFF000000UL) | \
- ((x>>8)&0x0000FF00UL) | ((x<<8)&0x00FF0000UL) )
-
-
-/* 32-bit Rotates */
-#if defined(_MSC_VER)
-
-/* instrinsic rotate */
-#include <stdlib.h>
-#pragma intrinsic(_lrotr,_lrotl)
-#define ROR(x,n) _lrotr(x,n)
-#define ROL(x,n) _lrotl(x,n)
-#define RORc(x,n) _lrotr(x,n)
-#define ROLc(x,n) _lrotl(x,n)
-
-#elif !defined(__STRICT_ANSI__) && defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) && !defined(INTEL_CC) && !defined(LTC_NO_ASM)
-
-static inline unsigned ROL(unsigned word, int i)
-{
- asm ("roll %%cl,%0"
- :"=r" (word)
- :"0" (word),"c" (i));
- return word;
-}
-
-static inline unsigned ROR(unsigned word, int i)
-{
- asm ("rorl %%cl,%0"
- :"=r" (word)
- :"0" (word),"c" (i));
- return word;
-}
-
-#ifndef LTC_NO_ROLC
-
-static inline unsigned ROLc(unsigned word, const int i)
-{
- asm ("roll %2,%0"
- :"=r" (word)
- :"0" (word),"I" (i));
- return word;
-}
-
-static inline unsigned RORc(unsigned word, const int i)
-{
- asm ("rorl %2,%0"
- :"=r" (word)
- :"0" (word),"I" (i));
- return word;
-}
-
-#else
-
-#define ROLc ROL
-#define RORc ROR
-
-#endif
-
-#elif !defined(__STRICT_ANSI__) && defined(LTC_PPC32)
-
-static inline unsigned ROL(unsigned word, int i)
-{
- asm ("rotlw %0,%0,%2"
- :"=r" (word)
- :"0" (word),"r" (i));
- return word;
-}
-
-static inline unsigned ROR(unsigned word, int i)
-{
- asm ("rotlw %0,%0,%2"
- :"=r" (word)
- :"0" (word),"r" (32-i));
- return word;
-}
-
-#ifndef LTC_NO_ROLC
-
-static inline unsigned ROLc(unsigned word, const int i)
-{
- asm ("rotlwi %0,%0,%2"
- :"=r" (word)
- :"0" (word),"I" (i));
- return word;
-}
-
-static inline unsigned RORc(unsigned word, const int i)
-{
- asm ("rotrwi %0,%0,%2"
- :"=r" (word)
- :"0" (word),"I" (i));
- return word;
-}
-
-#else
-
-#define ROLc ROL
-#define RORc ROR
-
-#endif
-
-
-#else
-
-/* rotates the hard way */
-#define ROL(x, y) ( (((unsigned long)(x)<<(unsigned long)((y)&31)) | (((unsigned long)(x)&0xFFFFFFFFUL)>>(unsigned long)(32-((y)&31)))) & 0xFFFFFFFFUL)
-#define ROR(x, y) ( ((((unsigned long)(x)&0xFFFFFFFFUL)>>(unsigned long)((y)&31)) | ((unsigned long)(x)<<(unsigned long)(32-((y)&31)))) & 0xFFFFFFFFUL)
-#define ROLc(x, y) ( (((unsigned long)(x)<<(unsigned long)((y)&31)) | (((unsigned long)(x)&0xFFFFFFFFUL)>>(unsigned long)(32-((y)&31)))) & 0xFFFFFFFFUL)
-#define RORc(x, y) ( ((((unsigned long)(x)&0xFFFFFFFFUL)>>(unsigned long)((y)&31)) | ((unsigned long)(x)<<(unsigned long)(32-((y)&31)))) & 0xFFFFFFFFUL)
-
-#endif
-
-
-/* 64-bit Rotates */
-#if !defined(__STRICT_ANSI__) && defined(__GNUC__) && defined(__x86_64__) && !defined(LTC_NO_ASM)
-
-static inline unsigned long ROL64(unsigned long word, int i)
-{
- asm("rolq %%cl,%0"
- :"=r" (word)
- :"0" (word),"c" (i));
- return word;
-}
-
-static inline unsigned long ROR64(unsigned long word, int i)
-{
- asm("rorq %%cl,%0"
- :"=r" (word)
- :"0" (word),"c" (i));
- return word;
-}
-
-#ifndef LTC_NO_ROLC
-
-static inline unsigned long ROL64c(unsigned long word, const int i)
-{
- asm("rolq %2,%0"
- :"=r" (word)
- :"0" (word),"J" (i));
- return word;
-}
-
-static inline unsigned long ROR64c(unsigned long word, const int i)
-{
- asm("rorq %2,%0"
- :"=r" (word)
- :"0" (word),"J" (i));
- return word;
-}
-
-#else /* LTC_NO_ROLC */
-
-#define ROL64c ROL64
-#define ROR64c ROR64
-
-#endif
-
-#else /* Not x86_64 */
-
-#define ROL64(x, y) \
- ( (((x)<<((ulong64)(y)&63)) | \
- (((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>((ulong64)64-((y)&63)))) & CONST64(0xFFFFFFFFFFFFFFFF))
-
-#define ROR64(x, y) \
- ( ((((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>((ulong64)(y)&CONST64(63))) | \
- ((x)<<((ulong64)(64-((y)&CONST64(63)))))) & CONST64(0xFFFFFFFFFFFFFFFF))
-
-#define ROL64c(x, y) \
- ( (((x)<<((ulong64)(y)&63)) | \
- (((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>((ulong64)64-((y)&63)))) & CONST64(0xFFFFFFFFFFFFFFFF))
-
-#define ROR64c(x, y) \
- ( ((((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>((ulong64)(y)&CONST64(63))) | \
- ((x)<<((ulong64)(64-((y)&CONST64(63)))))) & CONST64(0xFFFFFFFFFFFFFFFF))
-
-#endif
-
-#ifndef MAX
- #define MAX(x, y) ( ((x)>(y))?(x):(y) )
-#endif
-
-#ifndef MIN
- #define MIN(x, y) ( ((x)<(y))?(x):(y) )
-#endif
-
-/* extract a byte portably */
-#ifdef _MSC_VER
- #define byte(x, n) ((unsigned char)((x) >> (8 * (n))))
-#else
- #define byte(x, n) (((x) >> (8 * (n))) & 255)
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_macros.h,v $ */
-/* $Revision: 1.15 $ */
-/* $Date: 2006/11/29 23:43:57 $ */
diff --git a/StormLib/src/libtomcrypt/src/headers/tomcrypt_math.h b/StormLib/src/libtomcrypt/src/headers/tomcrypt_math.h
deleted file mode 100644
index a05d7fff9..000000000
--- a/StormLib/src/libtomcrypt/src/headers/tomcrypt_math.h
+++ /dev/null
@@ -1,500 +0,0 @@
-/** math functions **/
-
-#define LTC_MP_LT -1
-#define LTC_MP_EQ 0
-#define LTC_MP_GT 1
-
-#define LTC_MP_NO 0
-#define LTC_MP_YES 1
-
-#ifndef LTC_MECC
- typedef void ecc_point;
-#endif
-
-#ifndef LTC_MRSA
- typedef void rsa_key;
-#endif
-
-/** math descriptor */
-typedef struct {
- /** Name of the math provider */
- char *name;
-
- /** Bits per digit, amount of bits must fit in an unsigned long */
- int bits_per_digit;
-
-/* ---- init/deinit functions ---- */
-
- /** initialize a bignum
- @param a The number to initialize
- @return CRYPT_OK on success
- */
- int (*init)(void **a);
-
- /** init copy
- @param dst The number to initialize and write to
- @param src The number to copy from
- @return CRYPT_OK on success
- */
- int (*init_copy)(void **dst, void *src);
-
- /** deinit
- @param a The number to free
- @return CRYPT_OK on success
- */
- void (*deinit)(void *a);
-
-/* ---- data movement ---- */
-
- /** negate
- @param src The number to negate
- @param dst The destination
- @return CRYPT_OK on success
- */
- int (*neg)(void *src, void *dst);
-
- /** copy
- @param src The number to copy from
- @param dst The number to write to
- @return CRYPT_OK on success
- */
- int (*copy)(void *src, void *dst);
-
-/* ---- trivial low level functions ---- */
-
- /** set small constant
- @param a Number to write to
- @param n Source upto bits_per_digit (actually meant for very small constants)
- @return CRYPT_OK on succcess
- */
- int (*set_int)(void *a, unsigned long n);
-
- /** get small constant
- @param a Number to read, only fetches upto bits_per_digit from the number
- @return The lower bits_per_digit of the integer (unsigned)
- */
- unsigned long (*get_int)(void *a);
-
- /** get digit n
- @param a The number to read from
- @param n The number of the digit to fetch
- @return The bits_per_digit sized n'th digit of a
- */
- unsigned long (*get_digit)(void *a, int n);
-
- /** Get the number of digits that represent the number
- @param a The number to count
- @return The number of digits used to represent the number
- */
- int (*get_digit_count)(void *a);
-
- /** compare two integers
- @param a The left side integer
- @param b The right side integer
- @return LTC_MP_LT if a < b, LTC_MP_GT if a > b and LTC_MP_EQ otherwise. (signed comparison)
- */
- int (*compare)(void *a, void *b);
-
- /** compare against int
- @param a The left side integer
- @param b The right side integer (upto bits_per_digit)
- @return LTC_MP_LT if a < b, LTC_MP_GT if a > b and LTC_MP_EQ otherwise. (signed comparison)
- */
- int (*compare_d)(void *a, unsigned long n);
-
- /** Count the number of bits used to represent the integer
- @param a The integer to count
- @return The number of bits required to represent the integer
- */
- int (*count_bits)(void * a);
-
- /** Count the number of LSB bits which are zero
- @param a The integer to count
- @return The number of contiguous zero LSB bits
- */
- int (*count_lsb_bits)(void *a);
-
- /** Compute a power of two
- @param a The integer to store the power in
- @param n The power of two you want to store (a = 2^n)
- @return CRYPT_OK on success
- */
- int (*twoexpt)(void *a , int n);
-
-/* ---- radix conversions ---- */
-
- /** read ascii string
- @param a The integer to store into
- @param str The string to read
- @param radix The radix the integer has been represented in (2-64)
- @return CRYPT_OK on success
- */
- int (*read_radix)(void *a, const char *str, int radix);
-
- /** write number to string
- @param a The integer to store
- @param str The destination for the string
- @param radix The radix the integer is to be represented in (2-64)
- @return CRYPT_OK on success
- */
- int (*write_radix)(void *a, char *str, int radix);
-
- /** get size as unsigned char string
- @param a The integer to get the size (when stored in array of octets)
- @return The length of the integer
- */
- unsigned long (*unsigned_size)(void *a);
-
- /** store an integer as an array of octets
- @param src The integer to store
- @param dst The buffer to store the integer in
- @return CRYPT_OK on success
- */
- int (*unsigned_write)(void *src, unsigned char *dst);
-
- /** read an array of octets and store as integer
- @param dst The integer to load
- @param src The array of octets
- @param len The number of octets
- @return CRYPT_OK on success
- */
- int (*unsigned_read)(void *dst, unsigned char *src, unsigned long len);
-
-/* ---- basic math ---- */
-
- /** add two integers
- @param a The first source integer
- @param b The second source integer
- @param c The destination of "a + b"
- @return CRYPT_OK on success
- */
- int (*add)(void *a, void *b, void *c);
-
-
- /** add two integers
- @param a The first source integer
- @param b The second source integer (single digit of upto bits_per_digit in length)
- @param c The destination of "a + b"
- @return CRYPT_OK on success
- */
- int (*addi)(void *a, unsigned long b, void *c);
-
- /** subtract two integers
- @param a The first source integer
- @param b The second source integer
- @param c The destination of "a - b"
- @return CRYPT_OK on success
- */
- int (*sub)(void *a, void *b, void *c);
-
- /** subtract two integers
- @param a The first source integer
- @param b The second source integer (single digit of upto bits_per_digit in length)
- @param c The destination of "a - b"
- @return CRYPT_OK on success
- */
- int (*subi)(void *a, unsigned long b, void *c);
-
- /** multiply two integers
- @param a The first source integer
- @param b The second source integer (single digit of upto bits_per_digit in length)
- @param c The destination of "a * b"
- @return CRYPT_OK on success
- */
- int (*mul)(void *a, void *b, void *c);
-
- /** multiply two integers
- @param a The first source integer
- @param b The second source integer (single digit of upto bits_per_digit in length)
- @param c The destination of "a * b"
- @return CRYPT_OK on success
- */
- int (*muli)(void *a, unsigned long b, void *c);
-
- /** Square an integer
- @param a The integer to square
- @param b The destination
- @return CRYPT_OK on success
- */
- int (*sqr)(void *a, void *b);
-
- /** Divide an integer
- @param a The dividend
- @param b The divisor
- @param c The quotient (can be NULL to signify don't care)
- @param d The remainder (can be NULL to signify don't care)
- @return CRYPT_OK on success
- */
- int (*mpdiv)(void *a, void *b, void *c, void *d);
-
- /** divide by two
- @param a The integer to divide (shift right)
- @param b The destination
- @return CRYPT_OK on success
- */
- int (*div_2)(void *a, void *b);
-
- /** Get remainder (small value)
- @param a The integer to reduce
- @param b The modulus (upto bits_per_digit in length)
- @param c The destination for the residue
- @return CRYPT_OK on success
- */
- int (*modi)(void *a, unsigned long b, unsigned long *c);
-
- /** gcd
- @param a The first integer
- @param b The second integer
- @param c The destination for (a, b)
- @return CRYPT_OK on success
- */
- int (*gcd)(void *a, void *b, void *c);
-
- /** lcm
- @param a The first integer
- @param b The second integer
- @param c The destination for [a, b]
- @return CRYPT_OK on success
- */
- int (*lcm)(void *a, void *b, void *c);
-
- /** Modular multiplication
- @param a The first source
- @param b The second source
- @param c The modulus
- @param d The destination (a*b mod c)
- @return CRYPT_OK on success
- */
- int (*mulmod)(void *a, void *b, void *c, void *d);
-
- /** Modular squaring
- @param a The first source
- @param b The modulus
- @param c The destination (a*a mod b)
- @return CRYPT_OK on success
- */
- int (*sqrmod)(void *a, void *b, void *c);
-
- /** Modular inversion
- @param a The value to invert
- @param b The modulus
- @param c The destination (1/a mod b)
- @return CRYPT_OK on success
- */
- int (*invmod)(void *, void *, void *);
-
-/* ---- reduction ---- */
-
- /** setup montgomery
- @param a The modulus
- @param b The destination for the reduction digit
- @return CRYPT_OK on success
- */
- int (*montgomery_setup)(void *a, void **b);
-
- /** get normalization value
- @param a The destination for the normalization value
- @param b The modulus
- @return CRYPT_OK on success
- */
- int (*montgomery_normalization)(void *a, void *b);
-
- /** reduce a number
- @param a The number [and dest] to reduce
- @param b The modulus
- @param c The value "b" from montgomery_setup()
- @return CRYPT_OK on success
- */
- int (*montgomery_reduce)(void *a, void *b, void *c);
-
- /** clean up (frees memory)
- @param a The value "b" from montgomery_setup()
- @return CRYPT_OK on success
- */
- void (*montgomery_deinit)(void *a);
-
-/* ---- exponentiation ---- */
-
- /** Modular exponentiation
- @param a The base integer
- @param b The power (can be negative) integer
- @param c The modulus integer
- @param d The destination
- @return CRYPT_OK on success
- */
- int (*exptmod)(void *a, void *b, void *c, void *d);
-
- /** Primality testing
- @param a The integer to test
- @param b The destination of the result (FP_YES if prime)
- @return CRYPT_OK on success
- */
- int (*isprime)(void *a, int *b);
-
-/* ---- (optional) ecc point math ---- */
-
- /** ECC GF(p) point multiplication (from the NIST curves)
- @param k The integer to multiply the point by
- @param G The point to multiply
- @param R The destination for kG
- @param modulus The modulus for the field
- @param map Boolean indicated whether to map back to affine or not (can be ignored if you work in affine only)
- @return CRYPT_OK on success
- */
- int (*ecc_ptmul)(void *k, ecc_point *G, ecc_point *R, void *modulus, int map);
-
- /** ECC GF(p) point addition
- @param P The first point
- @param Q The second point
- @param R The destination of P + Q
- @param modulus The modulus
- @param mp The "b" value from montgomery_setup()
- @return CRYPT_OK on success
- */
- int (*ecc_ptadd)(ecc_point *P, ecc_point *Q, ecc_point *R, void *modulus, void *mp);
-
- /** ECC GF(p) point double
- @param P The first point
- @param R The destination of 2P
- @param modulus The modulus
- @param mp The "b" value from montgomery_setup()
- @return CRYPT_OK on success
- */
- int (*ecc_ptdbl)(ecc_point *P, ecc_point *R, void *modulus, void *mp);
-
- /** ECC mapping from projective to affine, currently uses (x,y,z) => (x/z^2, y/z^3, 1)
- @param P The point to map
- @param modulus The modulus
- @param mp The "b" value from montgomery_setup()
- @return CRYPT_OK on success
- @remark The mapping can be different but keep in mind a ecc_point only has three
- integers (x,y,z) so if you use a different mapping you have to make it fit.
- */
- int (*ecc_map)(ecc_point *P, void *modulus, void *mp);
-
- /** Computes kA*A + kB*B = C using Shamir's Trick
- @param A First point to multiply
- @param kA What to multiple A by
- @param B Second point to multiply
- @param kB What to multiple B by
- @param C [out] Destination point (can overlap with A or B
- @param modulus Modulus for curve
- @return CRYPT_OK on success
- */
- int (*ecc_mul2add)(ecc_point *A, void *kA,
- ecc_point *B, void *kB,
- ecc_point *C,
- void *modulus);
-
-/* ---- (optional) rsa optimized math (for internal CRT) ---- */
-
- /** RSA Key Generation
- @param prng An active PRNG state
- @param wprng The index of the PRNG desired
- @param size The size of the modulus (key size) desired (octets)
- @param e The "e" value (public key). e==65537 is a good choice
- @param key [out] Destination of a newly created private key pair
- @return CRYPT_OK if successful, upon error all allocated ram is freed
- */
- int (*rsa_keygen)(prng_state *prng, int wprng, int size, long e, rsa_key *key);
-
-
- /** RSA exponentiation
- @param in The octet array representing the base
- @param inlen The length of the input
- @param out The destination (to be stored in an octet array format)
- @param outlen The length of the output buffer and the resulting size (zero padded to the size of the modulus)
- @param which PK_PUBLIC for public RSA and PK_PRIVATE for private RSA
- @param key The RSA key to use
- @return CRYPT_OK on success
- */
- int (*rsa_me)(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen, int which,
- rsa_key *key);
-} ltc_math_descriptor;
-
-extern ltc_math_descriptor ltc_mp;
-
-int ltc_init_multi(void **a, ...);
-void ltc_deinit_multi(void *a, ...);
-
-#ifdef LTM_DESC
-extern const ltc_math_descriptor ltm_desc;
-#endif
-
-#ifdef TFM_DESC
-extern const ltc_math_descriptor tfm_desc;
-#endif
-
-#ifdef GMP_DESC
-extern const ltc_math_descriptor gmp_desc;
-#endif
-
-#if !defined(DESC_DEF_ONLY) && defined(LTC_SOURCE)
-
-#define MP_DIGIT_BIT ltc_mp.bits_per_digit
-
-/* some handy macros */
-#define mp_init(a) ltc_mp.init(a)
-#define mp_init_multi ltc_init_multi
-#define mp_clear(a) ltc_mp.deinit(a)
-#define mp_clear_multi ltc_deinit_multi
-#define mp_init_copy(a, b) ltc_mp.init_copy(a, b)
-
-#define mp_neg(a, b) ltc_mp.neg(a, b)
-#define mp_copy(a, b) ltc_mp.copy(a, b)
-
-#define mp_set(a, b) ltc_mp.set_int(a, b)
-#define mp_set_int(a, b) ltc_mp.set_int(a, b)
-#define mp_get_int(a) ltc_mp.get_int(a)
-#define mp_get_digit(a, n) ltc_mp.get_digit(a, n)
-#define mp_get_digit_count(a) ltc_mp.get_digit_count(a)
-#define mp_cmp(a, b) ltc_mp.compare(a, b)
-#define mp_cmp_d(a, b) ltc_mp.compare_d(a, b)
-#define mp_count_bits(a) ltc_mp.count_bits(a)
-#define mp_cnt_lsb(a) ltc_mp.count_lsb_bits(a)
-#define mp_2expt(a, b) ltc_mp.twoexpt(a, b)
-
-#define mp_read_radix(a, b, c) ltc_mp.read_radix(a, b, c)
-#define mp_toradix(a, b, c) ltc_mp.write_radix(a, b, c)
-#define mp_unsigned_bin_size(a) ltc_mp.unsigned_size(a)
-#define mp_to_unsigned_bin(a, b) ltc_mp.unsigned_write(a, b)
-#define mp_read_unsigned_bin(a, b, c) ltc_mp.unsigned_read(a, b, c)
-
-#define mp_add(a, b, c) ltc_mp.add(a, b, c)
-#define mp_add_d(a, b, c) ltc_mp.addi(a, b, c)
-#define mp_sub(a, b, c) ltc_mp.sub(a, b, c)
-#define mp_sub_d(a, b, c) ltc_mp.subi(a, b, c)
-#define mp_mul(a, b, c) ltc_mp.mul(a, b, c)
-#define mp_mul_d(a, b, c) ltc_mp.muli(a, b, c)
-#define mp_sqr(a, b) ltc_mp.sqr(a, b)
-#define mp_div(a, b, c, d) ltc_mp.mpdiv(a, b, c, d)
-#define mp_div_2(a, b) ltc_mp.div_2(a, b)
-#define mp_mod(a, b, c) ltc_mp.mpdiv(a, b, NULL, c)
-#define mp_mod_d(a, b, c) ltc_mp.modi(a, b, c)
-#define mp_gcd(a, b, c) ltc_mp.gcd(a, b, c)
-#define mp_lcm(a, b, c) ltc_mp.lcm(a, b, c)
-
-#define mp_mulmod(a, b, c, d) ltc_mp.mulmod(a, b, c, d)
-#define mp_sqrmod(a, b, c) ltc_mp.sqrmod(a, b, c)
-#define mp_invmod(a, b, c) ltc_mp.invmod(a, b, c)
-
-#define mp_montgomery_setup(a, b) ltc_mp.montgomery_setup(a, b)
-#define mp_montgomery_normalization(a, b) ltc_mp.montgomery_normalization(a, b)
-#define mp_montgomery_reduce(a, b, c) ltc_mp.montgomery_reduce(a, b, c)
-#define mp_montgomery_free(a) ltc_mp.montgomery_deinit(a)
-
-#define mp_exptmod(a,b,c,d) ltc_mp.exptmod(a,b,c,d)
-#define mp_prime_is_prime(a, b, c) ltc_mp.isprime(a, c)
-
-#define mp_iszero(a) (mp_cmp_d(a, 0) == LTC_MP_EQ ? LTC_MP_YES : LTC_MP_NO)
-#define mp_isodd(a) (mp_get_digit_count(a) > 0 ? (mp_get_digit(a, 0) & 1 ? LTC_MP_YES : LTC_MP_NO) : LTC_MP_NO)
-#define mp_exch(a, b) do { void *ABC__tmp = a; a = b; b = ABC__tmp; } while(0);
-
-#define mp_tohex(a, b) mp_toradix(a, b, 16)
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_math.h,v $ */
-/* $Revision: 1.44 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/headers/tomcrypt_misc.h b/StormLib/src/libtomcrypt/src/headers/tomcrypt_misc.h
deleted file mode 100644
index f5384cacc..000000000
--- a/StormLib/src/libtomcrypt/src/headers/tomcrypt_misc.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* ---- LTC_BASE64 Routines ---- */
-#ifdef LTC_BASE64
-int base64_encode(const unsigned char *in, unsigned long len,
- unsigned char *out, unsigned long *outlen);
-
-int base64_decode(const unsigned char *in, unsigned long len,
- unsigned char *out, unsigned long *outlen);
-#endif
-
-/* ---- MEM routines ---- */
-void zeromem(void *dst, size_t len);
-void burn_stack(unsigned long len);
-
-const char *error_to_string(int err);
-
-extern const char *crypt_build_settings;
-
-/* ---- HMM ---- */
-int crypt_fsa(void *mp, ...);
-
-/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_misc.h,v $ */
-/* $Revision: 1.5 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/headers/tomcrypt_pk.h b/StormLib/src/libtomcrypt/src/headers/tomcrypt_pk.h
deleted file mode 100644
index b5f277a88..000000000
--- a/StormLib/src/libtomcrypt/src/headers/tomcrypt_pk.h
+++ /dev/null
@@ -1,558 +0,0 @@
-/* ---- NUMBER THEORY ---- */
-
-enum {
- PK_PUBLIC=0,
- PK_PRIVATE=1
-};
-
-int rand_prime(void *N, long len, prng_state *prng, int wprng);
-
-/* ---- RSA ---- */
-#ifdef LTC_MRSA
-
-/* Min and Max RSA key sizes (in bits) */
-#define MIN_RSA_SIZE 1024
-#define MAX_RSA_SIZE 4096
-
-/** RSA LTC_PKCS style key */
-typedef struct Rsa_key {
- /** Type of key, PK_PRIVATE or PK_PUBLIC */
- int type;
- /** The public exponent */
- void *e;
- /** The private exponent */
- void *d;
- /** The modulus */
- void *N;
- /** The p factor of N */
- void *p;
- /** The q factor of N */
- void *q;
- /** The 1/q mod p CRT param */
- void *qP;
- /** The d mod (p - 1) CRT param */
- void *dP;
- /** The d mod (q - 1) CRT param */
- void *dQ;
-} rsa_key;
-
-int rsa_make_key(prng_state *prng, int wprng, int size, long e, rsa_key *key);
-
-int rsa_exptmod(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen, int which,
- rsa_key *key);
-
-void rsa_free(rsa_key *key);
-
-/* These use LTC_PKCS #1 v2.0 padding */
-#define rsa_encrypt_key(_in, _inlen, _out, _outlen, _lparam, _lparamlen, _prng, _prng_idx, _hash_idx, _key) \
- rsa_encrypt_key_ex(_in, _inlen, _out, _outlen, _lparam, _lparamlen, _prng, _prng_idx, _hash_idx, LTC_LTC_PKCS_1_OAEP, _key)
-
-#define rsa_decrypt_key(_in, _inlen, _out, _outlen, _lparam, _lparamlen, _hash_idx, _stat, _key) \
- rsa_decrypt_key_ex(_in, _inlen, _out, _outlen, _lparam, _lparamlen, _hash_idx, LTC_LTC_PKCS_1_OAEP, _stat, _key)
-
-#define rsa_sign_hash(_in, _inlen, _out, _outlen, _prng, _prng_idx, _hash_idx, _saltlen, _key) \
- rsa_sign_hash_ex(_in, _inlen, _out, _outlen, LTC_LTC_PKCS_1_PSS, _prng, _prng_idx, _hash_idx, _saltlen, _key)
-
-#define rsa_verify_hash(_sig, _siglen, _hash, _hashlen, _hash_idx, _saltlen, _stat, _key) \
- rsa_verify_hash_ex(_sig, _siglen, _hash, _hashlen, LTC_LTC_PKCS_1_PSS, _hash_idx, _saltlen, _stat, _key)
-
-/* These can be switched between LTC_PKCS #1 v2.x and LTC_PKCS #1 v1.5 paddings */
-int rsa_encrypt_key_ex(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen,
- const unsigned char *lparam, unsigned long lparamlen,
- prng_state *prng, int prng_idx, int hash_idx, int padding, rsa_key *key);
-
-int rsa_decrypt_key_ex(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen,
- const unsigned char *lparam, unsigned long lparamlen,
- int hash_idx, int padding,
- int *stat, rsa_key *key);
-
-int rsa_sign_hash_ex(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen,
- int padding,
- prng_state *prng, int prng_idx,
- int hash_idx, unsigned long saltlen,
- rsa_key *key);
-
-int rsa_verify_hash_ex(const unsigned char *sig, unsigned long siglen,
- const unsigned char *hash, unsigned long hashlen,
- int padding,
- int hash_idx, unsigned long saltlen,
- int *stat, rsa_key *key);
-
-/* LTC_PKCS #1 import/export */
-int rsa_export(unsigned char *out, unsigned long *outlen, int type, rsa_key *key);
-int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key);
-
-/* Ladik: Added for verifying Blizzard strong signature verification */
-int rsa_verify_simple(const unsigned char *sig, unsigned long siglen,
- const unsigned char *hash, unsigned long hashlen,
- int *stat,
- rsa_key *key);
-
-#endif
-
-/* ---- Katja ---- */
-#ifdef MKAT
-
-/* Min and Max KAT key sizes (in bits) */
-#define MIN_KAT_SIZE 1024
-#define MAX_KAT_SIZE 4096
-
-/** Katja LTC_PKCS style key */
-typedef struct KAT_key {
- /** Type of key, PK_PRIVATE or PK_PUBLIC */
- int type;
- /** The private exponent */
- void *d;
- /** The modulus */
- void *N;
- /** The p factor of N */
- void *p;
- /** The q factor of N */
- void *q;
- /** The 1/q mod p CRT param */
- void *qP;
- /** The d mod (p - 1) CRT param */
- void *dP;
- /** The d mod (q - 1) CRT param */
- void *dQ;
- /** The pq param */
- void *pq;
-} katja_key;
-
-int katja_make_key(prng_state *prng, int wprng, int size, katja_key *key);
-
-int katja_exptmod(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen, int which,
- katja_key *key);
-
-void katja_free(katja_key *key);
-
-/* These use LTC_PKCS #1 v2.0 padding */
-int katja_encrypt_key(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen,
- const unsigned char *lparam, unsigned long lparamlen,
- prng_state *prng, int prng_idx, int hash_idx, katja_key *key);
-
-int katja_decrypt_key(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen,
- const unsigned char *lparam, unsigned long lparamlen,
- int hash_idx, int *stat,
- katja_key *key);
-
-/* LTC_PKCS #1 import/export */
-int katja_export(unsigned char *out, unsigned long *outlen, int type, katja_key *key);
-int katja_import(const unsigned char *in, unsigned long inlen, katja_key *key);
-
-#endif
-
-/* ---- ECC Routines ---- */
-#ifdef LTC_MECC
-
-/* size of our temp buffers for exported keys */
-#define ECC_BUF_SIZE 256
-
-/* max private key size */
-#define ECC_MAXSIZE 66
-
-/** Structure defines a NIST GF(p) curve */
-typedef struct {
- /** The size of the curve in octets */
- int size;
-
- /** name of curve */
- char *name;
-
- /** The prime that defines the field the curve is in (encoded in hex) */
- char *prime;
-
- /** The fields B param (hex) */
- char *B;
-
- /** The order of the curve (hex) */
- char *order;
-
- /** The x co-ordinate of the base point on the curve (hex) */
- char *Gx;
-
- /** The y co-ordinate of the base point on the curve (hex) */
- char *Gy;
-} ltc_ecc_set_type;
-
-/** A point on a ECC curve, stored in Jacbobian format such that (x,y,z) => (x/z^2, y/z^3, 1) when interpretted as affine */
-typedef struct {
- /** The x co-ordinate */
- void *x;
-
- /** The y co-ordinate */
- void *y;
-
- /** The z co-ordinate */
- void *z;
-} ecc_point;
-
-/** An ECC key */
-typedef struct {
- /** Type of key, PK_PRIVATE or PK_PUBLIC */
- int type;
-
- /** Index into the ltc_ecc_sets[] for the parameters of this curve; if -1, then this key is using user supplied curve in dp */
- int idx;
-
- /** pointer to domain parameters; either points to NIST curves (identified by idx >= 0) or user supplied curve */
- const ltc_ecc_set_type *dp;
-
- /** The public key */
- ecc_point pubkey;
-
- /** The private key */
- void *k;
-} ecc_key;
-
-/** the ECC params provided */
-extern const ltc_ecc_set_type ltc_ecc_sets[];
-
-int ecc_test(void);
-void ecc_sizes(int *low, int *high);
-int ecc_get_size(ecc_key *key);
-
-int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key);
-int ecc_make_key_ex(prng_state *prng, int wprng, ecc_key *key, const ltc_ecc_set_type *dp);
-void ecc_free(ecc_key *key);
-
-int ecc_export(unsigned char *out, unsigned long *outlen, int type, ecc_key *key);
-int ecc_import(const unsigned char *in, unsigned long inlen, ecc_key *key);
-int ecc_import_ex(const unsigned char *in, unsigned long inlen, ecc_key *key, const ltc_ecc_set_type *dp);
-
-int ecc_ansi_x963_export(ecc_key *key, unsigned char *out, unsigned long *outlen);
-int ecc_ansi_x963_import(const unsigned char *in, unsigned long inlen, ecc_key *key);
-int ecc_ansi_x963_import_ex(const unsigned char *in, unsigned long inlen, ecc_key *key, ltc_ecc_set_type *dp);
-
-int ecc_shared_secret(ecc_key *private_key, ecc_key *public_key,
- unsigned char *out, unsigned long *outlen);
-
-int ecc_encrypt_key(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen,
- prng_state *prng, int wprng, int hash,
- ecc_key *key);
-
-int ecc_decrypt_key(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen,
- ecc_key *key);
-
-int ecc_sign_hash(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen,
- prng_state *prng, int wprng, ecc_key *key);
-
-int ecc_verify_hash(const unsigned char *sig, unsigned long siglen,
- const unsigned char *hash, unsigned long hashlen,
- int *stat, ecc_key *key);
-
-/* low level functions */
-ecc_point *ltc_ecc_new_point(void);
-void ltc_ecc_del_point(ecc_point *p);
-int ltc_ecc_is_valid_idx(int n);
-
-/* point ops (mp == montgomery digit) */
-#if !defined(LTC_MECC_ACCEL) || defined(LTM_LTC_DESC) || defined(GMP_LTC_DESC)
-/* R = 2P */
-int ltc_ecc_projective_dbl_point(ecc_point *P, ecc_point *R, void *modulus, void *mp);
-
-/* R = P + Q */
-int ltc_ecc_projective_add_point(ecc_point *P, ecc_point *Q, ecc_point *R, void *modulus, void *mp);
-#endif
-
-#if defined(LTC_MECC_FP)
-/* optimized point multiplication using fixed point cache (HAC algorithm 14.117) */
-int ltc_ecc_fp_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map);
-
-/* functions for saving/loading/freeing/adding to fixed point cache */
-int ltc_ecc_fp_save_state(unsigned char **out, unsigned long *outlen);
-int ltc_ecc_fp_restore_state(unsigned char *in, unsigned long inlen);
-void ltc_ecc_fp_free(void);
-int ltc_ecc_fp_add_point(ecc_point *g, void *modulus, int lock);
-
-/* lock/unlock all points currently in fixed point cache */
-void ltc_ecc_fp_tablelock(int lock);
-#endif
-
-/* R = kG */
-int ltc_ecc_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map);
-
-#ifdef LTC_ECC_SHAMIR
-/* kA*A + kB*B = C */
-int ltc_ecc_mul2add(ecc_point *A, void *kA,
- ecc_point *B, void *kB,
- ecc_point *C,
- void *modulus);
-
-#ifdef LTC_MECC_FP
-/* Shamir's trick with optimized point multiplication using fixed point cache */
-int ltc_ecc_fp_mul2add(ecc_point *A, void *kA,
- ecc_point *B, void *kB,
- ecc_point *C, void *modulus);
-#endif
-
-#endif
-
-
-/* map P to affine from projective */
-int ltc_ecc_map(ecc_point *P, void *modulus, void *mp);
-
-#endif
-
-#ifdef LTC_MDSA
-
-/* Max diff between group and modulus size in bytes */
-#define LTC_MDSA_DELTA 512
-
-/* Max DSA group size in bytes (default allows 4k-bit groups) */
-#define LTC_MDSA_MAX_GROUP 512
-
-/** DSA key structure */
-typedef struct {
- /** The key type, PK_PRIVATE or PK_PUBLIC */
- int type;
-
- /** The order of the sub-group used in octets */
- int qord;
-
- /** The generator */
- void *g;
-
- /** The prime used to generate the sub-group */
- void *q;
-
- /** The large prime that generats the field the contains the sub-group */
- void *p;
-
- /** The private key */
- void *x;
-
- /** The public key */
- void *y;
-} dsa_key;
-
-int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key);
-void dsa_free(dsa_key *key);
-
-int dsa_sign_hash_raw(const unsigned char *in, unsigned long inlen,
- void *r, void *s,
- prng_state *prng, int wprng, dsa_key *key);
-
-int dsa_sign_hash(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen,
- prng_state *prng, int wprng, dsa_key *key);
-
-int dsa_verify_hash_raw( void *r, void *s,
- const unsigned char *hash, unsigned long hashlen,
- int *stat, dsa_key *key);
-
-int dsa_verify_hash(const unsigned char *sig, unsigned long siglen,
- const unsigned char *hash, unsigned long hashlen,
- int *stat, dsa_key *key);
-
-int dsa_encrypt_key(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen,
- prng_state *prng, int wprng, int hash,
- dsa_key *key);
-
-int dsa_decrypt_key(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen,
- dsa_key *key);
-
-int dsa_import(const unsigned char *in, unsigned long inlen, dsa_key *key);
-int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key);
-int dsa_verify_key(dsa_key *key, int *stat);
-
-int dsa_shared_secret(void *private_key, void *base,
- dsa_key *public_key,
- unsigned char *out, unsigned long *outlen);
-#endif
-
-#ifdef LTC_DER
-/* DER handling */
-
-enum {
- LTC_ASN1_EOL,
- LTC_ASN1_BOOLEAN,
- LTC_ASN1_INTEGER,
- LTC_ASN1_SHORT_INTEGER,
- LTC_ASN1_BIT_STRING,
- LTC_ASN1_OCTET_STRING,
- LTC_ASN1_NULL,
- LTC_ASN1_OBJECT_IDENTIFIER,
- LTC_ASN1_IA5_STRING,
- LTC_ASN1_PRINTABLE_STRING,
- LTC_ASN1_UTF8_STRING,
- LTC_ASN1_UTCTIME,
- LTC_ASN1_CHOICE,
- LTC_ASN1_SEQUENCE,
- LTC_ASN1_SET,
- LTC_ASN1_SETOF
-};
-
-/** A LTC ASN.1 list type */
-typedef struct ltc_asn1_list_ {
- /** The LTC ASN.1 enumerated type identifier */
- int type;
- /** The data to encode or place for decoding */
- void *data;
- /** The size of the input or resulting output */
- unsigned long size;
- /** The used flag, this is used by the CHOICE ASN.1 type to indicate which choice was made */
- int used;
- /** prev/next entry in the list */
- struct ltc_asn1_list_ *prev, *next, *child, *parent;
-} ltc_asn1_list;
-
-#define LTC_SET_ASN1(list, index, Type, Data, Size) \
- do { \
- int LTC_MACRO_temp = (index); \
- ltc_asn1_list *LTC_MACRO_list = (list); \
- LTC_MACRO_list[LTC_MACRO_temp].type = (Type); \
- LTC_MACRO_list[LTC_MACRO_temp].data = (void*)(Data); \
- LTC_MACRO_list[LTC_MACRO_temp].size = (Size); \
- LTC_MACRO_list[LTC_MACRO_temp].used = 0; \
- } while (0);
-
-/* SEQUENCE */
-int der_encode_sequence_ex(ltc_asn1_list *list, unsigned long inlen,
- unsigned char *out, unsigned long *outlen, int type_of);
-
-#define der_encode_sequence(list, inlen, out, outlen) der_encode_sequence_ex(list, inlen, out, outlen, LTC_ASN1_SEQUENCE)
-
-int der_decode_sequence_ex(const unsigned char *in, unsigned long inlen,
- ltc_asn1_list *list, unsigned long outlen, int ordered);
-
-#define der_decode_sequence(in, inlen, list, outlen) der_decode_sequence_ex(in, inlen, list, outlen, 1)
-
-int der_length_sequence(ltc_asn1_list *list, unsigned long inlen,
- unsigned long *outlen);
-
-/* SET */
-#define der_decode_set(in, inlen, list, outlen) der_decode_sequence_ex(in, inlen, list, outlen, 0)
-#define der_length_set der_length_sequence
-int der_encode_set(ltc_asn1_list *list, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-
-int der_encode_setof(ltc_asn1_list *list, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-
-/* VA list handy helpers with triplets of <type, size, data> */
-int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...);
-int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...);
-
-/* FLEXI DECODER handle unknown list decoder */
-int der_decode_sequence_flexi(const unsigned char *in, unsigned long *inlen, ltc_asn1_list **out);
-void der_free_sequence_flexi(ltc_asn1_list *list);
-void der_sequence_free(ltc_asn1_list *in);
-
-/* BOOLEAN */
-int der_length_boolean(unsigned long *outlen);
-int der_encode_boolean(int in,
- unsigned char *out, unsigned long *outlen);
-int der_decode_boolean(const unsigned char *in, unsigned long inlen,
- int *out);
-/* INTEGER */
-int der_encode_integer(void *num, unsigned char *out, unsigned long *outlen);
-int der_decode_integer(const unsigned char *in, unsigned long inlen, void *num);
-int der_length_integer(void *num, unsigned long *len);
-
-/* INTEGER -- handy for 0..2^32-1 values */
-int der_decode_short_integer(const unsigned char *in, unsigned long inlen, unsigned long *num);
-int der_encode_short_integer(unsigned long num, unsigned char *out, unsigned long *outlen);
-int der_length_short_integer(unsigned long num, unsigned long *outlen);
-
-/* BIT STRING */
-int der_encode_bit_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-int der_decode_bit_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-int der_length_bit_string(unsigned long nbits, unsigned long *outlen);
-
-/* OCTET STRING */
-int der_encode_octet_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-int der_decode_octet_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-int der_length_octet_string(unsigned long noctets, unsigned long *outlen);
-
-/* OBJECT IDENTIFIER */
-int der_encode_object_identifier(unsigned long *words, unsigned long nwords,
- unsigned char *out, unsigned long *outlen);
-int der_decode_object_identifier(const unsigned char *in, unsigned long inlen,
- unsigned long *words, unsigned long *outlen);
-int der_length_object_identifier(unsigned long *words, unsigned long nwords, unsigned long *outlen);
-unsigned long der_object_identifier_bits(unsigned long x);
-
-/* IA5 STRING */
-int der_encode_ia5_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-int der_decode_ia5_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-int der_length_ia5_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen);
-
-int der_ia5_char_encode(int c);
-int der_ia5_value_decode(int v);
-
-/* Printable STRING */
-int der_encode_printable_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-int der_decode_printable_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-int der_length_printable_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen);
-
-int der_printable_char_encode(int c);
-int der_printable_value_decode(int v);
-
-/* UTF-8 */
-#if (defined(SIZE_MAX) || __STDC_VERSION__ >= 199901L || defined(WCHAR_MAX) || defined(_WCHAR_T) || defined(_WCHAR_T_DEFINED) || defined (__WCHAR_TYPE__)) && !defined(LTC_NO_WCHAR)
-#include <wchar.h>
-#else
-typedef ulong32 wchar_t;
-#endif
-
-int der_encode_utf8_string(const wchar_t *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen);
-
-int der_decode_utf8_string(const unsigned char *in, unsigned long inlen,
- wchar_t *out, unsigned long *outlen);
-unsigned long der_utf8_charsize(const wchar_t c);
-int der_length_utf8_string(const wchar_t *in, unsigned long noctets, unsigned long *outlen);
-
-
-/* CHOICE */
-int der_decode_choice(const unsigned char *in, unsigned long *inlen,
- ltc_asn1_list *list, unsigned long outlen);
-
-/* UTCTime */
-typedef struct {
- unsigned YY, /* year */
- MM, /* month */
- DD, /* day */
- hh, /* hour */
- mm, /* minute */
- ss, /* second */
- off_dir, /* timezone offset direction 0 == +, 1 == - */
- off_hh, /* timezone offset hours */
- off_mm; /* timezone offset minutes */
-} ltc_utctime;
-
-int der_encode_utctime(ltc_utctime *utctime,
- unsigned char *out, unsigned long *outlen);
-
-int der_decode_utctime(const unsigned char *in, unsigned long *inlen,
- ltc_utctime *out);
-
-int der_length_utctime(ltc_utctime *utctime, unsigned long *outlen);
-
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_pk.h,v $ */
-/* $Revision: 1.81 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/headers/tomcrypt_pkcs.h b/StormLib/src/libtomcrypt/src/headers/tomcrypt_pkcs.h
deleted file mode 100644
index 84fb82a62..000000000
--- a/StormLib/src/libtomcrypt/src/headers/tomcrypt_pkcs.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* LTC_PKCS Header Info */
-
-/* ===> LTC_PKCS #1 -- RSA Cryptography <=== */
-#ifdef LTC_PKCS_1
-
-enum ltc_pkcs_1_v1_5_blocks
-{
- LTC_LTC_PKCS_1_EMSA = 1, /* Block type 1 (LTC_PKCS #1 v1.5 signature padding) */
- LTC_LTC_PKCS_1_EME = 2 /* Block type 2 (LTC_PKCS #1 v1.5 encryption padding) */
-};
-
-enum ltc_pkcs_1_paddings
-{
- LTC_LTC_PKCS_1_V1_5 = 1, /* LTC_PKCS #1 v1.5 padding (\sa ltc_pkcs_1_v1_5_blocks) */
- LTC_LTC_PKCS_1_OAEP = 2, /* LTC_PKCS #1 v2.0 encryption padding */
- LTC_LTC_PKCS_1_PSS = 3 /* LTC_PKCS #1 v2.1 signature padding */
-};
-
-int pkcs_1_mgf1( int hash_idx,
- const unsigned char *seed, unsigned long seedlen,
- unsigned char *mask, unsigned long masklen);
-
-int pkcs_1_i2osp(void *n, unsigned long modulus_len, unsigned char *out);
-int pkcs_1_os2ip(void *n, unsigned char *in, unsigned long inlen);
-
-/* *** v1.5 padding */
-int pkcs_1_v1_5_encode(const unsigned char *msg,
- unsigned long msglen,
- int block_type,
- unsigned long modulus_bitlen,
- prng_state *prng,
- int prng_idx,
- unsigned char *out,
- unsigned long *outlen);
-
-int pkcs_1_v1_5_decode(const unsigned char *msg,
- unsigned long msglen,
- int block_type,
- unsigned long modulus_bitlen,
- unsigned char *out,
- unsigned long *outlen,
- int *is_valid);
-
-/* *** v2.1 padding */
-int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen,
- const unsigned char *lparam, unsigned long lparamlen,
- unsigned long modulus_bitlen, prng_state *prng,
- int prng_idx, int hash_idx,
- unsigned char *out, unsigned long *outlen);
-
-int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen,
- const unsigned char *lparam, unsigned long lparamlen,
- unsigned long modulus_bitlen, int hash_idx,
- unsigned char *out, unsigned long *outlen,
- int *res);
-
-int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen,
- unsigned long saltlen, prng_state *prng,
- int prng_idx, int hash_idx,
- unsigned long modulus_bitlen,
- unsigned char *out, unsigned long *outlen);
-
-int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen,
- const unsigned char *sig, unsigned long siglen,
- unsigned long saltlen, int hash_idx,
- unsigned long modulus_bitlen, int *res);
-
-#endif /* LTC_PKCS_1 */
-
-/* ===> LTC_PKCS #5 -- Password Based Cryptography <=== */
-#ifdef LTC_PKCS_5
-
-/* Algorithm #1 (old) */
-int pkcs_5_alg1(const unsigned char *password, unsigned long password_len,
- const unsigned char *salt,
- int iteration_count, int hash_idx,
- unsigned char *out, unsigned long *outlen);
-
-/* Algorithm #2 (new) */
-int pkcs_5_alg2(const unsigned char *password, unsigned long password_len,
- const unsigned char *salt, unsigned long salt_len,
- int iteration_count, int hash_idx,
- unsigned char *out, unsigned long *outlen);
-
-#endif /* LTC_PKCS_5 */
-
-/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_pkcs.h,v $ */
-/* $Revision: 1.8 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/headers/tomcrypt_prng.h b/StormLib/src/libtomcrypt/src/headers/tomcrypt_prng.h
deleted file mode 100644
index f3e3e550e..000000000
--- a/StormLib/src/libtomcrypt/src/headers/tomcrypt_prng.h
+++ /dev/null
@@ -1,199 +0,0 @@
-/* ---- PRNG Stuff ---- */
-#ifdef LTC_YARROW
-struct yarrow_prng {
- int cipher, hash;
- unsigned char pool[MAXBLOCKSIZE];
- symmetric_CTR ctr;
- LTC_MUTEX_TYPE(prng_lock)
-};
-#endif
-
-#ifdef LTC_RC4
-struct rc4_prng {
- int x, y;
- unsigned char buf[256];
-};
-#endif
-
-#ifdef LTC_FORTUNA
-struct fortuna_prng {
- hash_state pool[LTC_FORTUNA_POOLS]; /* the pools */
-
- symmetric_key skey;
-
- unsigned char K[32], /* the current key */
- IV[16]; /* IV for CTR mode */
-
- unsigned long pool_idx, /* current pool we will add to */
- pool0_len, /* length of 0'th pool */
- wd;
-
- ulong64 reset_cnt; /* number of times we have reset */
- LTC_MUTEX_TYPE(prng_lock)
-};
-#endif
-
-#ifdef LTC_SOBER128
-struct sober128_prng {
- ulong32 R[17], /* Working storage for the shift register */
- initR[17], /* saved register contents */
- konst, /* key dependent constant */
- sbuf; /* partial word encryption buffer */
-
- int nbuf, /* number of part-word stream bits buffered */
- flag, /* first add_entropy call or not? */
- set; /* did we call add_entropy to set key? */
-
-};
-#endif
-
-typedef union Prng_state {
- char dummy[1];
-#ifdef LTC_YARROW
- struct yarrow_prng yarrow;
-#endif
-#ifdef LTC_RC4
- struct rc4_prng rc4;
-#endif
-#ifdef LTC_FORTUNA
- struct fortuna_prng fortuna;
-#endif
-#ifdef LTC_SOBER128
- struct sober128_prng sober128;
-#endif
-} prng_state;
-
-/** PRNG descriptor */
-extern struct ltc_prng_descriptor {
- /** Name of the PRNG */
- char *name;
- /** size in bytes of exported state */
- int export_size;
- /** Start a PRNG state
- @param prng [out] The state to initialize
- @return CRYPT_OK if successful
- */
- int (*start)(prng_state *prng);
- /** Add entropy to the PRNG
- @param in The entropy
- @param inlen Length of the entropy (octets)\
- @param prng The PRNG state
- @return CRYPT_OK if successful
- */
- int (*add_entropy)(const unsigned char *in, unsigned long inlen, prng_state *prng);
- /** Ready a PRNG state to read from
- @param prng The PRNG state to ready
- @return CRYPT_OK if successful
- */
- int (*ready)(prng_state *prng);
- /** Read from the PRNG
- @param out [out] Where to store the data
- @param outlen Length of data desired (octets)
- @param prng The PRNG state to read from
- @return Number of octets read
- */
- unsigned long (*read)(unsigned char *out, unsigned long outlen, prng_state *prng);
- /** Terminate a PRNG state
- @param prng The PRNG state to terminate
- @return CRYPT_OK if successful
- */
- int (*done)(prng_state *prng);
- /** Export a PRNG state
- @param out [out] The destination for the state
- @param outlen [in/out] The max size and resulting size of the PRNG state
- @param prng The PRNG to export
- @return CRYPT_OK if successful
- */
- int (*pexport)(unsigned char *out, unsigned long *outlen, prng_state *prng);
- /** Import a PRNG state
- @param in The data to import
- @param inlen The length of the data to import (octets)
- @param prng The PRNG to initialize/import
- @return CRYPT_OK if successful
- */
- int (*pimport)(const unsigned char *in, unsigned long inlen, prng_state *prng);
- /** Self-test the PRNG
- @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled
- */
- int (*test)(void);
-} prng_descriptor[];
-
-#ifdef LTC_YARROW
-int yarrow_start(prng_state *prng);
-int yarrow_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng);
-int yarrow_ready(prng_state *prng);
-unsigned long yarrow_read(unsigned char *out, unsigned long outlen, prng_state *prng);
-int yarrow_done(prng_state *prng);
-int yarrow_export(unsigned char *out, unsigned long *outlen, prng_state *prng);
-int yarrow_import(const unsigned char *in, unsigned long inlen, prng_state *prng);
-int yarrow_test(void);
-extern const struct ltc_prng_descriptor yarrow_desc;
-#endif
-
-#ifdef LTC_FORTUNA
-int fortuna_start(prng_state *prng);
-int fortuna_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng);
-int fortuna_ready(prng_state *prng);
-unsigned long fortuna_read(unsigned char *out, unsigned long outlen, prng_state *prng);
-int fortuna_done(prng_state *prng);
-int fortuna_export(unsigned char *out, unsigned long *outlen, prng_state *prng);
-int fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prng);
-int fortuna_test(void);
-extern const struct ltc_prng_descriptor fortuna_desc;
-#endif
-
-#ifdef LTC_RC4
-int rc4_start(prng_state *prng);
-int rc4_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng);
-int rc4_ready(prng_state *prng);
-unsigned long rc4_read(unsigned char *out, unsigned long outlen, prng_state *prng);
-int rc4_done(prng_state *prng);
-int rc4_export(unsigned char *out, unsigned long *outlen, prng_state *prng);
-int rc4_import(const unsigned char *in, unsigned long inlen, prng_state *prng);
-int rc4_test(void);
-extern const struct ltc_prng_descriptor rc4_desc;
-#endif
-
-#ifdef LTC_SPRNG
-int sprng_start(prng_state *prng);
-int sprng_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng);
-int sprng_ready(prng_state *prng);
-unsigned long sprng_read(unsigned char *out, unsigned long outlen, prng_state *prng);
-int sprng_done(prng_state *prng);
-int sprng_export(unsigned char *out, unsigned long *outlen, prng_state *prng);
-int sprng_import(const unsigned char *in, unsigned long inlen, prng_state *prng);
-int sprng_test(void);
-extern const struct ltc_prng_descriptor sprng_desc;
-#endif
-
-#ifdef LTC_SOBER128
-int sober128_start(prng_state *prng);
-int sober128_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng);
-int sober128_ready(prng_state *prng);
-unsigned long sober128_read(unsigned char *out, unsigned long outlen, prng_state *prng);
-int sober128_done(prng_state *prng);
-int sober128_export(unsigned char *out, unsigned long *outlen, prng_state *prng);
-int sober128_import(const unsigned char *in, unsigned long inlen, prng_state *prng);
-int sober128_test(void);
-extern const struct ltc_prng_descriptor sober128_desc;
-#endif
-
-int find_prng(const char *name);
-int register_prng(const struct ltc_prng_descriptor *prng);
-int unregister_prng(const struct ltc_prng_descriptor *prng);
-int prng_is_valid(int idx);
-LTC_MUTEX_PROTO(ltc_prng_mutex)
-
-/* Slow RNG you **might** be able to use to seed a PRNG with. Be careful as this
- * might not work on all platforms as planned
- */
-unsigned long rng_get_bytes(unsigned char *out,
- unsigned long outlen,
- void (*callback)(void));
-
-int rng_make_prng(int bits, int wprng, prng_state *prng, void (*callback)(void));
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_prng.h,v $ */
-/* $Revision: 1.9 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/math/ltm_desc.c b/StormLib/src/libtomcrypt/src/math/ltm_desc.c
deleted file mode 100644
index 25dc0b322..000000000
--- a/StormLib/src/libtomcrypt/src/math/ltm_desc.c
+++ /dev/null
@@ -1,483 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-
-#define DESC_DEF_ONLY
-#include "../headers/tomcrypt.h"
-
-#ifdef LTM_DESC
-
-#include "../../../libtommath/tommath.h"
-
-static const struct {
- int mpi_code, ltc_code;
-} mpi_to_ltc_codes[] = {
- { MP_OKAY , CRYPT_OK},
- { MP_MEM , CRYPT_MEM},
- { MP_VAL , CRYPT_INVALID_ARG},
-};
-
-/**
- Convert a MPI error to a LTC error (Possibly the most powerful function ever! Oh wait... no)
- @param err The error to convert
- @return The equivalent LTC error code or CRYPT_ERROR if none found
-*/
-static int mpi_to_ltc_error(int err)
-{
- int x;
-
- for (x = 0; x < (int)(sizeof(mpi_to_ltc_codes)/sizeof(mpi_to_ltc_codes[0])); x++) {
- if (err == mpi_to_ltc_codes[x].mpi_code) {
- return mpi_to_ltc_codes[x].ltc_code;
- }
- }
- return CRYPT_ERROR;
-}
-
-static int init(void **a)
-{
- int err;
-
- LTC_ARGCHK(a != NULL);
-
- *a = XCALLOC(1, sizeof(mp_int));
- if (*a == NULL) {
- return CRYPT_MEM;
- }
-
- if ((err = mpi_to_ltc_error(mp_init(*a))) != CRYPT_OK) {
- XFREE(*a);
- }
- return err;
-}
-
-static void deinit(void *a)
-{
- LTC_ARGCHKVD(a != NULL);
- mp_clear(a);
- XFREE(a);
-}
-
-static int neg(void *a, void *b)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- return mpi_to_ltc_error(mp_neg(a, b));
-}
-
-static int copy(void *a, void *b)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- return mpi_to_ltc_error(mp_copy(a, b));
-}
-
-static int init_copy(void **a, void *b)
-{
- if (init(a) != CRYPT_OK) {
- return CRYPT_MEM;
- }
- return copy(b, *a);
-}
-
-/* ---- trivial ---- */
-static int set_int(void *a, unsigned long b)
-{
- LTC_ARGCHK(a != NULL);
- return mpi_to_ltc_error(mp_set_int(a, b));
-}
-
-static unsigned long get_int(void *a)
-{
- LTC_ARGCHK(a != NULL);
- return mp_get_int(a);
-}
-
-static unsigned long get_digit(void *a, int n)
-{
- mp_int *A;
- LTC_ARGCHK(a != NULL);
- A = a;
- return (n >= A->used || n < 0) ? 0 : A->dp[n];
-}
-
-static int get_digit_count(void *a)
-{
- mp_int *A;
- LTC_ARGCHK(a != NULL);
- A = a;
- return A->used;
-}
-
-static int compare(void *a, void *b)
-{
- int ret;
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- ret = mp_cmp(a, b);
- switch (ret) {
- case MP_LT: return LTC_MP_LT;
- case MP_EQ: return LTC_MP_EQ;
- case MP_GT: return LTC_MP_GT;
- }
- return 0;
-}
-
-static int compare_d(void *a, unsigned long b)
-{
- int ret;
- LTC_ARGCHK(a != NULL);
- ret = mp_cmp_d(a, b);
- switch (ret) {
- case MP_LT: return LTC_MP_LT;
- case MP_EQ: return LTC_MP_EQ;
- case MP_GT: return LTC_MP_GT;
- }
- return 0;
-}
-
-static int count_bits(void *a)
-{
- LTC_ARGCHK(a != NULL);
- return mp_count_bits(a);
-}
-
-static int count_lsb_bits(void *a)
-{
- LTC_ARGCHK(a != NULL);
- return mp_cnt_lsb(a);
-}
-
-
-static int twoexpt(void *a, int n)
-{
- LTC_ARGCHK(a != NULL);
- return mpi_to_ltc_error(mp_2expt(a, n));
-}
-
-/* ---- conversions ---- */
-
-/* read ascii string */
-static int read_radix(void *a, const char *b, int radix)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- return mpi_to_ltc_error(mp_read_radix(a, b, radix));
-}
-
-/* write one */
-static int write_radix(void *a, char *b, int radix)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- return mpi_to_ltc_error(mp_toradix(a, b, radix));
-}
-
-/* get size as unsigned char string */
-static unsigned long unsigned_size(void *a)
-{
- LTC_ARGCHK(a != NULL);
- return mp_unsigned_bin_size(a);
-}
-
-/* store */
-static int unsigned_write(void *a, unsigned char *b)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- return mpi_to_ltc_error(mp_to_unsigned_bin(a, b));
-}
-
-/* read */
-static int unsigned_read(void *a, unsigned char *b, unsigned long len)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- return mpi_to_ltc_error(mp_read_unsigned_bin(a, b, len));
-}
-
-/* add */
-static int add(void *a, void *b, void *c)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- LTC_ARGCHK(c != NULL);
- return mpi_to_ltc_error(mp_add(a, b, c));
-}
-
-static int addi(void *a, unsigned long b, void *c)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(c != NULL);
- return mpi_to_ltc_error(mp_add_d(a, b, c));
-}
-
-/* sub */
-static int sub(void *a, void *b, void *c)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- LTC_ARGCHK(c != NULL);
- return mpi_to_ltc_error(mp_sub(a, b, c));
-}
-
-static int subi(void *a, unsigned long b, void *c)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(c != NULL);
- return mpi_to_ltc_error(mp_sub_d(a, b, c));
-}
-
-/* mul */
-static int mul(void *a, void *b, void *c)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- LTC_ARGCHK(c != NULL);
- return mpi_to_ltc_error(mp_mul(a, b, c));
-}
-
-static int muli(void *a, unsigned long b, void *c)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(c != NULL);
- return mpi_to_ltc_error(mp_mul_d(a, b, c));
-}
-
-/* sqr */
-static int sqr(void *a, void *b)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- return mpi_to_ltc_error(mp_sqr(a, b));
-}
-
-/* div */
-static int divide(void *a, void *b, void *c, void *d)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- return mpi_to_ltc_error(mp_div(a, b, c, d));
-}
-
-static int div_2(void *a, void *b)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- return mpi_to_ltc_error(mp_div_2(a, b));
-}
-
-/* modi */
-static int modi(void *a, unsigned long b, unsigned long *c)
-{
- mp_digit tmp;
- int err;
-
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(c != NULL);
-
- if ((err = mpi_to_ltc_error(mp_mod_d(a, b, &tmp))) != CRYPT_OK) {
- return err;
- }
- *c = tmp;
- return CRYPT_OK;
-}
-
-/* gcd */
-static int gcd(void *a, void *b, void *c)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- LTC_ARGCHK(c != NULL);
- return mpi_to_ltc_error(mp_gcd(a, b, c));
-}
-
-/* lcm */
-static int lcm(void *a, void *b, void *c)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- LTC_ARGCHK(c != NULL);
- return mpi_to_ltc_error(mp_lcm(a, b, c));
-}
-
-static int mulmod(void *a, void *b, void *c, void *d)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- LTC_ARGCHK(c != NULL);
- LTC_ARGCHK(d != NULL);
- return mpi_to_ltc_error(mp_mulmod(a,b,c,d));
-}
-
-static int sqrmod(void *a, void *b, void *c)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- LTC_ARGCHK(c != NULL);
- return mpi_to_ltc_error(mp_sqrmod(a,b,c));
-}
-
-/* invmod */
-static int invmod(void *a, void *b, void *c)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- LTC_ARGCHK(c != NULL);
- return mpi_to_ltc_error(mp_invmod(a, b, c));
-}
-
-/* setup */
-static int montgomery_setup(void *a, void **b)
-{
- int err;
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- *b = XCALLOC(1, sizeof(mp_digit));
- if (*b == NULL) {
- return CRYPT_MEM;
- }
- if ((err = mpi_to_ltc_error(mp_montgomery_setup(a, (mp_digit *)*b))) != CRYPT_OK) {
- XFREE(*b);
- }
- return err;
-}
-
-/* get normalization value */
-static int montgomery_normalization(void *a, void *b)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- return mpi_to_ltc_error(mp_montgomery_calc_normalization(a, b));
-}
-
-/* reduce */
-static int montgomery_reduce(void *a, void *b, void *c)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- LTC_ARGCHK(c != NULL);
- return mpi_to_ltc_error(mp_montgomery_reduce(a, b, *((mp_digit *)c)));
-}
-
-/* clean up */
-static void montgomery_deinit(void *a)
-{
- XFREE(a);
-}
-
-static int exptmod(void *a, void *b, void *c, void *d)
-{
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- LTC_ARGCHK(c != NULL);
- LTC_ARGCHK(d != NULL);
- return mpi_to_ltc_error(mp_exptmod(a,b,c,d));
-}
-
-static int isprime(void *a, int *b)
-{
- int err;
- LTC_ARGCHK(a != NULL);
- LTC_ARGCHK(b != NULL);
- err = mpi_to_ltc_error(mp_prime_is_prime(a, 8, b));
- *b = (*b == MP_YES) ? LTC_MP_YES : LTC_MP_NO;
- return err;
-}
-
-const ltc_math_descriptor ltm_desc = {
-
- "LibTomMath",
- (int)DIGIT_BIT,
-
- &init,
- &init_copy,
- &deinit,
-
- &neg,
- &copy,
-
- &set_int,
- &get_int,
- &get_digit,
- &get_digit_count,
- &compare,
- &compare_d,
- &count_bits,
- &count_lsb_bits,
- &twoexpt,
-
- &read_radix,
- &write_radix,
- &unsigned_size,
- &unsigned_write,
- &unsigned_read,
-
- &add,
- &addi,
- &sub,
- &subi,
- &mul,
- &muli,
- &sqr,
- &divide,
- &div_2,
- &modi,
- &gcd,
- &lcm,
-
- &mulmod,
- &sqrmod,
- &invmod,
-
- &montgomery_setup,
- &montgomery_normalization,
- &montgomery_reduce,
- &montgomery_deinit,
-
- &exptmod,
- &isprime,
-
-#ifdef LTC_MECC
-#ifdef LTC_MECC_FP
- &ltc_ecc_fp_mulmod,
-#else
- &ltc_ecc_mulmod,
-#endif
- &ltc_ecc_projective_add_point,
- &ltc_ecc_projective_dbl_point,
- &ltc_ecc_map,
-#ifdef LTC_ECC_SHAMIR
-#ifdef LTC_MECC_FP
- &ltc_ecc_fp_mul2add,
-#else
- &ltc_ecc_mul2add,
-#endif /* LTC_MECC_FP */
-#else
- NULL,
-#endif /* LTC_ECC_SHAMIR */
-#else
- NULL, NULL, NULL, NULL, NULL,
-#endif /* LTC_MECC */
-
-#ifdef LTC_MRSA
- &rsa_make_key,
- &rsa_exptmod,
-#else
- NULL, NULL
-#endif
-};
-
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/math/ltm_desc.c,v $ */
-/* $Revision: 1.31 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/math/multi.c b/StormLib/src/libtomcrypt/src/math/multi.c
deleted file mode 100644
index 7d40040a1..000000000
--- a/StormLib/src/libtomcrypt/src/math/multi.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-#ifdef MPI
-#include <stdarg.h>
-
-int ltc_init_multi(void **a, ...)
-{
- void **cur = a;
- int np = 0;
- va_list args;
-
- va_start(args, a);
- while (cur != NULL) {
- if (mp_init(cur) != CRYPT_OK) {
- /* failed */
- va_list clean_list;
-
- va_start(clean_list, a);
- cur = a;
- while (np--) {
- mp_clear(*cur);
- cur = va_arg(clean_list, void**);
- }
- va_end(clean_list);
- return CRYPT_MEM;
- }
- ++np;
- cur = va_arg(args, void**);
- }
- va_end(args);
- return CRYPT_OK;
-}
-
-void ltc_deinit_multi(void *a, ...)
-{
- void *cur = a;
- va_list args;
-
- va_start(args, a);
- while (cur != NULL) {
- mp_clear(cur);
- cur = va_arg(args, void *);
- }
- va_end(args);
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/math/multi.c,v $ */
-/* $Revision: 1.6 $ */
-/* $Date: 2006/12/28 01:27:23 $ */
diff --git a/StormLib/src/libtomcrypt/src/math/rand_prime.c b/StormLib/src/libtomcrypt/src/math/rand_prime.c
deleted file mode 100644
index 913fa95a4..000000000
--- a/StormLib/src/libtomcrypt/src/math/rand_prime.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-/**
- @file rand_prime.c
- Generate a random prime, Tom St Denis
-*/
-
-#define USE_BBS 1
-
-int rand_prime(void *N, long len, prng_state *prng, int wprng)
-{
- int err, res, type;
- unsigned char *buf;
-
- LTC_ARGCHK(N != NULL);
-
- /* get type */
- if (len < 0) {
- type = USE_BBS;
- len = -len;
- } else {
- type = 0;
- }
-
- /* allow sizes between 2 and 512 bytes for a prime size */
- if (len < 2 || len > 512) {
- return CRYPT_INVALID_PRIME_SIZE;
- }
-
- /* valid PRNG? Better be! */
- if ((err = prng_is_valid(wprng)) != CRYPT_OK) {
- return err;
- }
-
- /* allocate buffer to work with */
- buf = XCALLOC(1, len);
- if (buf == NULL) {
- return CRYPT_MEM;
- }
-
- do {
- /* generate value */
- if (prng_descriptor[wprng].read(buf, len, prng) != (unsigned long)len) {
- XFREE(buf);
- return CRYPT_ERROR_READPRNG;
- }
-
- /* munge bits */
- buf[0] |= 0x80 | 0x40;
- buf[len-1] |= 0x01 | ((type & USE_BBS) ? 0x02 : 0x00);
-
- /* load value */
- if ((err = mp_read_unsigned_bin(N, buf, len)) != CRYPT_OK) {
- XFREE(buf);
- return err;
- }
-
- /* test */
- if ((err = mp_prime_is_prime(N, 8, &res)) != CRYPT_OK) {
- XFREE(buf);
- return err;
- }
- } while (res == LTC_MP_NO);
-
-#ifdef LTC_CLEAN_STACK
- zeromem(buf, len);
-#endif
-
- XFREE(buf);
- return CRYPT_OK;
-}
-
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/math/rand_prime.c,v $ */
-/* $Revision: 1.7 $ */
-/* $Date: 2006/12/28 01:27:23 $ */
diff --git a/StormLib/src/libtomcrypt/src/misc/base64_decode.c b/StormLib/src/libtomcrypt/src/misc/base64_decode.c
deleted file mode 100644
index 3d13393a1..000000000
--- a/StormLib/src/libtomcrypt/src/misc/base64_decode.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-/**
- @file base64_decode.c
- Compliant base64 code donated by Wayne Scott (wscott@bitmover.com)
-*/
-
-
-#ifdef LTC_BASE64
-
-static const unsigned char map[256] = {
-255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255,
-255, 254, 255, 255, 255, 0, 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, 255, 255, 255, 255, 255,
-255, 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, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-255, 255, 255, 255 };
-
-/**
- base64 decode a block of memory
- @param in The base64 data to decode
- @param inlen The length of the base64 data
- @param out [out] The destination of the binary decoded data
- @param outlen [in/out] The max size and resulting size of the decoded data
- @return CRYPT_OK if successful
-*/
-int base64_decode(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned long t, x, y, z;
- unsigned char c;
- int g;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- g = 3;
- for (x = y = z = t = 0; x < inlen; x++) {
- c = map[in[x]&0xFF];
- if (c == 255) continue;
- /* the final = symbols are read and used to trim the remaining bytes */
- if (c == 254) {
- c = 0;
- /* prevent g < 0 which would potentially allow an overflow later */
- if (--g < 0) {
- return CRYPT_INVALID_PACKET;
- }
- } else if (g != 3) {
- /* we only allow = to be at the end */
- return CRYPT_INVALID_PACKET;
- }
-
- t = (t<<6)|c;
-
- if (++y == 4) {
- if (z + g > *outlen) {
- return CRYPT_BUFFER_OVERFLOW;
- }
- out[z++] = (unsigned char)((t>>16)&255);
- if (g > 1) out[z++] = (unsigned char)((t>>8)&255);
- if (g > 2) out[z++] = (unsigned char)(t&255);
- y = t = 0;
- }
- }
- if (y != 0) {
- return CRYPT_INVALID_PACKET;
- }
- *outlen = z;
- return CRYPT_OK;
-}
-
-#endif
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/misc/base64/base64_decode.c,v $ */
-/* $Revision: 1.6 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/misc/crypt_argchk.c b/StormLib/src/libtomcrypt/src/misc/crypt_argchk.c
deleted file mode 100644
index 537516d80..000000000
--- a/StormLib/src/libtomcrypt/src/misc/crypt_argchk.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-#include <signal.h>
-
-/**
- @file crypt_argchk.c
- Perform argument checking, Tom St Denis
-*/
-
-#if (ARGTYPE == 0)
-void crypt_argchk(char *v, char *s, int d)
-{
- fprintf(stderr, "LTC_ARGCHK '%s' failure on line %d of file %s\n",
- v, d, s);
- (void)raise(SIGABRT);
-}
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_argchk.c,v $ */
-/* $Revision: 1.5 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/misc/crypt_find_hash.c b/StormLib/src/libtomcrypt/src/misc/crypt_find_hash.c
deleted file mode 100644
index fef2d8cca..000000000
--- a/StormLib/src/libtomcrypt/src/misc/crypt_find_hash.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-/**
- @file crypt_find_hash.c
- Find a hash, Tom St Denis
-*/
-
-/**
- Find a registered hash by name
- @param name The name of the hash to look for
- @return >= 0 if found, -1 if not present
-*/
-int find_hash(const char *name)
-{
- int x;
- LTC_ARGCHK(name != NULL);
- LTC_MUTEX_LOCK(&ltc_hash_mutex);
- for (x = 0; x < TAB_SIZE; x++) {
- if (hash_descriptor[x].name != NULL && XSTRCMP(hash_descriptor[x].name, name) == 0) {
- LTC_MUTEX_UNLOCK(&ltc_hash_mutex);
- return x;
- }
- }
- LTC_MUTEX_UNLOCK(&ltc_hash_mutex);
- return -1;
-}
-
-/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_find_hash.c,v $ */
-/* $Revision: 1.7 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/misc/crypt_find_prng.c b/StormLib/src/libtomcrypt/src/misc/crypt_find_prng.c
deleted file mode 100644
index fafbb0e22..000000000
--- a/StormLib/src/libtomcrypt/src/misc/crypt_find_prng.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-/**
- @file crypt_find_prng.c
- Find a PRNG, Tom St Denis
-*/
-
-/**
- Find a registered PRNG by name
- @param name The name of the PRNG to look for
- @return >= 0 if found, -1 if not present
-*/
-int find_prng(const char *name)
-{
- int x;
- LTC_ARGCHK(name != NULL);
- LTC_MUTEX_LOCK(&ltc_prng_mutex);
- for (x = 0; x < TAB_SIZE; x++) {
- if ((prng_descriptor[x].name != NULL) && XSTRCMP(prng_descriptor[x].name, name) == 0) {
- LTC_MUTEX_UNLOCK(&ltc_prng_mutex);
- return x;
- }
- }
- LTC_MUTEX_UNLOCK(&ltc_prng_mutex);
- return -1;
-}
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_find_prng.c,v $ */
-/* $Revision: 1.7 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/misc/crypt_hash_descriptor.c b/StormLib/src/libtomcrypt/src/misc/crypt_hash_descriptor.c
deleted file mode 100644
index 5925fd273..000000000
--- a/StormLib/src/libtomcrypt/src/misc/crypt_hash_descriptor.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-/**
- @file crypt_hash_descriptor.c
- Stores the hash descriptor table, Tom St Denis
-*/
-
-struct ltc_hash_descriptor hash_descriptor[TAB_SIZE] = {
-{ NULL, 0, 0, 0, { 0 }, 0, NULL, NULL, NULL, NULL, NULL }
-};
-
-LTC_MUTEX_GLOBAL(ltc_hash_mutex)
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c,v $ */
-/* $Revision: 1.10 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/misc/crypt_hash_is_valid.c b/StormLib/src/libtomcrypt/src/misc/crypt_hash_is_valid.c
deleted file mode 100644
index 8ed5105b5..000000000
--- a/StormLib/src/libtomcrypt/src/misc/crypt_hash_is_valid.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-/**
- @file crypt_hash_is_valid.c
- Determine if hash is valid, Tom St Denis
-*/
-
-/*
- Test if a hash index is valid
- @param idx The index of the hash to search for
- @return CRYPT_OK if valid
-*/
-int hash_is_valid(int idx)
-{
- LTC_MUTEX_LOCK(&ltc_hash_mutex);
- if (idx < 0 || idx >= TAB_SIZE || hash_descriptor[idx].name == NULL) {
- LTC_MUTEX_UNLOCK(&ltc_hash_mutex);
- return CRYPT_INVALID_HASH;
- }
- LTC_MUTEX_UNLOCK(&ltc_hash_mutex);
- return CRYPT_OK;
-}
-
-/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c,v $ */
-/* $Revision: 1.6 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/misc/crypt_libc.c b/StormLib/src/libtomcrypt/src/misc/crypt_libc.c
deleted file mode 100644
index 3457a5209..000000000
--- a/StormLib/src/libtomcrypt/src/misc/crypt_libc.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*****************************************************************************/
-/* crypt_libc.c Copyright (c) Ladislav Zezula 2010 */
-/*---------------------------------------------------------------------------*/
-/* Description: */
-/*---------------------------------------------------------------------------*/
-/* Date Ver Who Comment */
-/* -------- ---- --- ------- */
-/* 05.05.10 1.00 Lad The first version of crypt_libc.c */
-/*****************************************************************************/
-
-// LibTomCrypt header
-#include <stdlib.h>
-#include "../headers/tomcrypt.h"
-
-LTC_EXPORT void * LTC_CALL LibTomMalloc(size_t n)
-{
- return malloc(n);
-}
-
-LTC_EXPORT void * LTC_CALL LibTomCalloc(size_t n, size_t s)
-{
- return calloc(n, s);
-}
-
-LTC_EXPORT void * LTC_CALL LibTomRealloc(void *p, size_t n)
-{
- return realloc(p, n);
-}
-
-LTC_EXPORT void LTC_CALL LibTomFree(void * p)
-{
- free(p);
-}
-
-LTC_EXPORT clock_t LTC_CALL LibTomClock(void)
-{
- return clock();
-}
-
-LTC_EXPORT void LTC_CALL LibTomQsort(void *base, size_t nmemb, size_t size, int(LTC_CALL * compar)(const void *, const void *))
-{
- qsort(base, nmemb, size, compar);
-}
diff --git a/StormLib/src/libtomcrypt/src/misc/crypt_ltc_mp_descriptor.c b/StormLib/src/libtomcrypt/src/misc/crypt_ltc_mp_descriptor.c
deleted file mode 100644
index c02a96f33..000000000
--- a/StormLib/src/libtomcrypt/src/misc/crypt_ltc_mp_descriptor.c
+++ /dev/null
@@ -1,13 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-ltc_math_descriptor ltc_mp = {0};
diff --git a/StormLib/src/libtomcrypt/src/misc/crypt_prng_descriptor.c b/StormLib/src/libtomcrypt/src/misc/crypt_prng_descriptor.c
deleted file mode 100644
index c5b39e0c2..000000000
--- a/StormLib/src/libtomcrypt/src/misc/crypt_prng_descriptor.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-/**
- @file crypt_prng_descriptor.c
- Stores the PRNG descriptors, Tom St Denis
-*/
-struct ltc_prng_descriptor prng_descriptor[TAB_SIZE] = {
-{ NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
-};
-
-LTC_MUTEX_GLOBAL(ltc_prng_mutex)
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c,v $ */
-/* $Revision: 1.8 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/misc/crypt_prng_is_valid.c b/StormLib/src/libtomcrypt/src/misc/crypt_prng_is_valid.c
deleted file mode 100644
index d38fd3a3c..000000000
--- a/StormLib/src/libtomcrypt/src/misc/crypt_prng_is_valid.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-/**
- @file crypt_prng_is_valid.c
- Determine if PRNG is valid, Tom St Denis
-*/
-
-/*
- Test if a PRNG index is valid
- @param idx The index of the PRNG to search for
- @return CRYPT_OK if valid
-*/
-int prng_is_valid(int idx)
-{
- LTC_MUTEX_LOCK(&ltc_prng_mutex);
- if (idx < 0 || idx >= TAB_SIZE || prng_descriptor[idx].name == NULL) {
- LTC_MUTEX_UNLOCK(&ltc_prng_mutex);
- return CRYPT_INVALID_PRNG;
- }
- LTC_MUTEX_UNLOCK(&ltc_prng_mutex);
- return CRYPT_OK;
-}
-
-/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c,v $ */
-/* $Revision: 1.6 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/misc/crypt_register_hash.c b/StormLib/src/libtomcrypt/src/misc/crypt_register_hash.c
deleted file mode 100644
index 173009154..000000000
--- a/StormLib/src/libtomcrypt/src/misc/crypt_register_hash.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-/**
- @file crypt_register_hash.c
- Register a HASH, Tom St Denis
-*/
-
-/**
- Register a hash with the descriptor table
- @param hash The hash you wish to register
- @return value >= 0 if successfully added (or already present), -1 if unsuccessful
-*/
-int register_hash(const struct ltc_hash_descriptor *hash)
-{
- int x;
-
- LTC_ARGCHK(hash != NULL);
-
- /* is it already registered? */
- LTC_MUTEX_LOCK(&ltc_hash_mutex);
- for (x = 0; x < TAB_SIZE; x++) {
- if (XMEMCMP(&hash_descriptor[x], hash, sizeof(struct ltc_hash_descriptor)) == 0) {
- LTC_MUTEX_UNLOCK(&ltc_hash_mutex);
- return x;
- }
- }
-
- /* find a blank spot */
- for (x = 0; x < TAB_SIZE; x++) {
- if (hash_descriptor[x].name == NULL) {
- XMEMCPY(&hash_descriptor[x], hash, sizeof(struct ltc_hash_descriptor));
- LTC_MUTEX_UNLOCK(&ltc_hash_mutex);
- return x;
- }
- }
-
- /* no spot */
- LTC_MUTEX_UNLOCK(&ltc_hash_mutex);
- return -1;
-}
-
-/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_register_hash.c,v $ */
-/* $Revision: 1.7 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/misc/crypt_register_prng.c b/StormLib/src/libtomcrypt/src/misc/crypt_register_prng.c
deleted file mode 100644
index 29fc9bdf6..000000000
--- a/StormLib/src/libtomcrypt/src/misc/crypt_register_prng.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-/**
- @file crypt_register_prng.c
- Register a PRNG, Tom St Denis
-*/
-
-/**
- Register a PRNG with the descriptor table
- @param prng The PRNG you wish to register
- @return value >= 0 if successfully added (or already present), -1 if unsuccessful
-*/
-int register_prng(const struct ltc_prng_descriptor *prng)
-{
- int x;
-
- LTC_ARGCHK(prng != NULL);
-
- /* is it already registered? */
- LTC_MUTEX_LOCK(&ltc_prng_mutex);
- for (x = 0; x < TAB_SIZE; x++) {
- if (XMEMCMP(&prng_descriptor[x], prng, sizeof(struct ltc_prng_descriptor)) == 0) {
- LTC_MUTEX_UNLOCK(&ltc_prng_mutex);
- return x;
- }
- }
-
- /* find a blank spot */
- for (x = 0; x < TAB_SIZE; x++) {
- if (prng_descriptor[x].name == NULL) {
- XMEMCPY(&prng_descriptor[x], prng, sizeof(struct ltc_prng_descriptor));
- LTC_MUTEX_UNLOCK(&ltc_prng_mutex);
- return x;
- }
- }
-
- /* no spot */
- LTC_MUTEX_UNLOCK(&ltc_prng_mutex);
- return -1;
-}
-
-/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_register_prng.c,v $ */
-/* $Revision: 1.8 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/misc/zeromem.c b/StormLib/src/libtomcrypt/src/misc/zeromem.c
deleted file mode 100644
index faa0efa78..000000000
--- a/StormLib/src/libtomcrypt/src/misc/zeromem.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../headers/tomcrypt.h"
-
-/**
- @file zeromem.c
- Zero a block of memory, Tom St Denis
-*/
-
-/**
- Zero a block of memory
- @param out The destination of the area to zero
- @param outlen The length of the area to zero (octets)
-*/
-void zeromem(void *out, size_t outlen)
-{
- unsigned char *mem = out;
- LTC_ARGCHKVD(out != NULL);
- while (outlen-- > 0) {
- *mem++ = 0;
- }
-}
-
-/* $Source: /cvs/libtom/libtomcrypt/src/misc/zeromem.c,v $ */
-/* $Revision: 1.7 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_bit_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_bit_string.c
deleted file mode 100644
index e53686750..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_bit_string.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_decode_bit_string.c
- ASN.1 DER, encode a BIT STRING, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/**
- Store a BIT STRING
- @param in The DER encoded BIT STRING
- @param inlen The size of the DER BIT STRING
- @param out [out] The array of bits stored (one per char)
- @param outlen [in/out] The number of bits stored
- @return CRYPT_OK if successful
-*/
-int der_decode_bit_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned long dlen, blen, x, y;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* packet must be at least 4 bytes */
- if (inlen < 4) {
- return CRYPT_INVALID_ARG;
- }
-
- /* check for 0x03 */
- if ((in[0]&0x1F) != 0x03) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* offset in the data */
- x = 1;
-
- /* get the length of the data */
- if (in[x] & 0x80) {
- /* long format get number of length bytes */
- y = in[x++] & 0x7F;
-
- /* invalid if 0 or > 2 */
- if (y == 0 || y > 2) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* read the data len */
- dlen = 0;
- while (y--) {
- dlen = (dlen << 8) | (unsigned long)in[x++];
- }
- } else {
- /* short format */
- dlen = in[x++] & 0x7F;
- }
-
- /* is the data len too long or too short? */
- if ((dlen == 0) || (dlen + x > inlen)) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* get padding count */
- blen = ((dlen - 1) << 3) - (in[x++] & 7);
-
- /* too many bits? */
- if (blen > *outlen) {
- *outlen = blen;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- /* decode/store the bits */
- for (y = 0; y < blen; y++) {
- out[y] = (in[x] & (1 << (7 - (y & 7)))) ? 1 : 0;
- if ((y & 7) == 7) {
- ++x;
- }
- }
-
- /* we done */
- *outlen = blen;
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/bit/der_decode_bit_string.c,v $ */
-/* $Revision: 1.5 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_boolean.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_boolean.c
deleted file mode 100644
index 617d4e861..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_boolean.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_decode_boolean.c
- ASN.1 DER, decode a BOOLEAN, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/**
- Read a BOOLEAN
- @param in The destination for the DER encoded BOOLEAN
- @param inlen The size of the DER BOOLEAN
- @param out [out] The boolean to decode
- @return CRYPT_OK if successful
-*/
-int der_decode_boolean(const unsigned char *in, unsigned long inlen,
- int *out)
-{
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
-
- if (inlen != 3 || in[0] != 0x01 || in[1] != 0x01 || (in[2] != 0x00 && in[2] != 0xFF)) {
- return CRYPT_INVALID_ARG;
- }
-
- *out = (in[2]==0xFF) ? 1 : 0;
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/boolean/der_decode_boolean.c,v $ */
-/* $Revision: 1.2 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_choice.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_choice.c
deleted file mode 100644
index 44a0891be..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_choice.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_decode_choice.c
- ASN.1 DER, decode a CHOICE, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-/**
- Decode a CHOICE
- @param in The DER encoded input
- @param inlen [in/out] The size of the input and resulting size of read type
- @param list The list of items to decode
- @param outlen The number of items in the list
- @return CRYPT_OK on success
-*/
-int der_decode_choice(const unsigned char *in, unsigned long *inlen,
- ltc_asn1_list *list, unsigned long outlen)
-{
- unsigned long size, x, z;
- void *data;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(inlen != NULL);
- LTC_ARGCHK(list != NULL);
-
- /* get blk size */
- if (*inlen < 2) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* set all of the "used" flags to zero */
- for (x = 0; x < outlen; x++) {
- list[x].used = 0;
- }
-
- /* now scan until we have a winner */
- for (x = 0; x < outlen; x++) {
- size = list[x].size;
- data = list[x].data;
-
- switch (list[x].type) {
- case LTC_ASN1_INTEGER:
- if (der_decode_integer(in, *inlen, data) == CRYPT_OK) {
- if (der_length_integer(data, &z) == CRYPT_OK) {
- list[x].used = 1;
- *inlen = z;
- return CRYPT_OK;
- }
- }
- break;
-
- case LTC_ASN1_SHORT_INTEGER:
- if (der_decode_short_integer(in, *inlen, data) == CRYPT_OK) {
- if (der_length_short_integer(size, &z) == CRYPT_OK) {
- list[x].used = 1;
- *inlen = z;
- return CRYPT_OK;
- }
- }
- break;
-
- case LTC_ASN1_BIT_STRING:
- if (der_decode_bit_string(in, *inlen, data, &size) == CRYPT_OK) {
- if (der_length_bit_string(size, &z) == CRYPT_OK) {
- list[x].used = 1;
- list[x].size = size;
- *inlen = z;
- return CRYPT_OK;
- }
- }
- break;
-
- case LTC_ASN1_OCTET_STRING:
- if (der_decode_octet_string(in, *inlen, data, &size) == CRYPT_OK) {
- if (der_length_octet_string(size, &z) == CRYPT_OK) {
- list[x].used = 1;
- list[x].size = size;
- *inlen = z;
- return CRYPT_OK;
- }
- }
- break;
-
- case LTC_ASN1_NULL:
- if (*inlen == 2 && in[x] == 0x05 && in[x+1] == 0x00) {
- *inlen = 2;
- list[x].used = 1;
- return CRYPT_OK;
- }
- break;
-
- case LTC_ASN1_OBJECT_IDENTIFIER:
- if (der_decode_object_identifier(in, *inlen, data, &size) == CRYPT_OK) {
- if (der_length_object_identifier(data, size, &z) == CRYPT_OK) {
- list[x].used = 1;
- list[x].size = size;
- *inlen = z;
- return CRYPT_OK;
- }
- }
- break;
-
- case LTC_ASN1_IA5_STRING:
- if (der_decode_ia5_string(in, *inlen, data, &size) == CRYPT_OK) {
- if (der_length_ia5_string(data, size, &z) == CRYPT_OK) {
- list[x].used = 1;
- list[x].size = size;
- *inlen = z;
- return CRYPT_OK;
- }
- }
- break;
-
-
- case LTC_ASN1_PRINTABLE_STRING:
- if (der_decode_printable_string(in, *inlen, data, &size) == CRYPT_OK) {
- if (der_length_printable_string(data, size, &z) == CRYPT_OK) {
- list[x].used = 1;
- list[x].size = size;
- *inlen = z;
- return CRYPT_OK;
- }
- }
- break;
-
- case LTC_ASN1_UTF8_STRING:
- if (der_decode_utf8_string(in, *inlen, data, &size) == CRYPT_OK) {
- if (der_length_utf8_string(data, size, &z) == CRYPT_OK) {
- list[x].used = 1;
- list[x].size = size;
- *inlen = z;
- return CRYPT_OK;
- }
- }
- break;
-
- case LTC_ASN1_UTCTIME:
- z = *inlen;
- if (der_decode_utctime(in, &z, data) == CRYPT_OK) {
- list[x].used = 1;
- *inlen = z;
- return CRYPT_OK;
- }
- break;
-
- case LTC_ASN1_SET:
- case LTC_ASN1_SETOF:
- case LTC_ASN1_SEQUENCE:
- if (der_decode_sequence(in, *inlen, data, size) == CRYPT_OK) {
- if (der_length_sequence(data, size, &z) == CRYPT_OK) {
- list[x].used = 1;
- *inlen = z;
- return CRYPT_OK;
- }
- }
- break;
-
- default:
- return CRYPT_INVALID_ARG;
- }
- }
-
- return CRYPT_INVALID_PACKET;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/choice/der_decode_choice.c,v $ */
-/* $Revision: 1.9 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_ia5_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_ia5_string.c
deleted file mode 100644
index f2e073b8d..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_ia5_string.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_decode_ia5_string.c
- ASN.1 DER, encode a IA5 STRING, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/**
- Store a IA5 STRING
- @param in The DER encoded IA5 STRING
- @param inlen The size of the DER IA5 STRING
- @param out [out] The array of octets stored (one per char)
- @param outlen [in/out] The number of octets stored
- @return CRYPT_OK if successful
-*/
-int der_decode_ia5_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned long x, y, len;
- int t;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* must have header at least */
- if (inlen < 2) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* check for 0x16 */
- if ((in[0] & 0x1F) != 0x16) {
- return CRYPT_INVALID_PACKET;
- }
- x = 1;
-
- /* decode the length */
- if (in[x] & 0x80) {
- /* valid # of bytes in length are 1,2,3 */
- y = in[x] & 0x7F;
- if ((y == 0) || (y > 3) || ((x + y) > inlen)) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* read the length in */
- len = 0;
- ++x;
- while (y--) {
- len = (len << 8) | in[x++];
- }
- } else {
- len = in[x++] & 0x7F;
- }
-
- /* is it too long? */
- if (len > *outlen) {
- *outlen = len;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- if (len + x > inlen) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* read the data */
- for (y = 0; y < len; y++) {
- t = der_ia5_value_decode(in[x++]);
- if (t == -1) {
- return CRYPT_INVALID_ARG;
- }
- out[y] = t;
- }
-
- *outlen = y;
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/ia5/der_decode_ia5_string.c,v $ */
-/* $Revision: 1.4 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_integer.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_integer.c
deleted file mode 100644
index cca274519..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_integer.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_decode_integer.c
- ASN.1 DER, decode an integer, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/**
- Read a mp_int integer
- @param in The DER encoded data
- @param inlen Size of DER encoded data
- @param num The first mp_int to decode
- @return CRYPT_OK if successful
-*/
-int der_decode_integer(const unsigned char *in, unsigned long inlen, void *num)
-{
- unsigned long x, y, z;
- int err;
-
- LTC_ARGCHK(num != NULL);
- LTC_ARGCHK(in != NULL);
-
- /* min DER INTEGER is 0x02 01 00 == 0 */
- if (inlen < (1 + 1 + 1)) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* ok expect 0x02 when we AND with 0001 1111 [1F] */
- x = 0;
- if ((in[x++] & 0x1F) != 0x02) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* now decode the len stuff */
- z = in[x++];
-
- if ((z & 0x80) == 0x00) {
- /* short form */
-
- /* will it overflow? */
- if (x + z > inlen) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* no so read it */
- if ((err = mp_read_unsigned_bin(num, (unsigned char *)in + x, z)) != CRYPT_OK) {
- return err;
- }
- } else {
- /* long form */
- z &= 0x7F;
-
- /* will number of length bytes overflow? (or > 4) */
- if (((x + z) > inlen) || (z > 4) || (z == 0)) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* now read it in */
- y = 0;
- while (z--) {
- y = ((unsigned long)(in[x++])) | (y << 8);
- }
-
- /* now will reading y bytes overrun? */
- if ((x + y) > inlen) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* no so read it */
- if ((err = mp_read_unsigned_bin(num, (unsigned char *)in + x, y)) != CRYPT_OK) {
- return err;
- }
- }
-
- /* see if it's negative */
- if (in[x] & 0x80) {
- void *tmp;
- if (mp_init(&tmp) != CRYPT_OK) {
- return CRYPT_MEM;
- }
-
- if (mp_2expt(tmp, mp_count_bits(num)) != CRYPT_OK || mp_sub(num, tmp, num) != CRYPT_OK) {
- mp_clear(tmp);
- return CRYPT_MEM;
- }
- mp_clear(tmp);
- }
-
- return CRYPT_OK;
-
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/integer/der_decode_integer.c,v $ */
-/* $Revision: 1.5 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_object_identifier.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_object_identifier.c
deleted file mode 100644
index e7baae88e..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_object_identifier.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_decode_object_identifier.c
- ASN.1 DER, Decode Object Identifier, Tom St Denis
-*/
-
-#ifdef LTC_DER
-/**
- Decode OID data and store the array of integers in words
- @param in The OID DER encoded data
- @param inlen The length of the OID data
- @param words [out] The destination of the OID words
- @param outlen [in/out] The number of OID words
- @return CRYPT_OK if successful
-*/
-int der_decode_object_identifier(const unsigned char *in, unsigned long inlen,
- unsigned long *words, unsigned long *outlen)
-{
- unsigned long x, y, t, len;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(words != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* header is at least 3 bytes */
- if (inlen < 3) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* must be room for at least two words */
- if (*outlen < 2) {
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- /* decode the packet header */
- x = 0;
- if ((in[x++] & 0x1F) != 0x06) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* get the length */
- if (in[x] < 128) {
- len = in[x++];
- } else {
- if (in[x] < 0x81 || in[x] > 0x82) {
- return CRYPT_INVALID_PACKET;
- }
- y = in[x++] & 0x7F;
- len = 0;
- while (y--) {
- len = (len << 8) | (unsigned long)in[x++];
- }
- }
-
- if (len < 1 || (len + x) > inlen) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* decode words */
- y = 0;
- t = 0;
- while (len--) {
- t = (t << 7) | (in[x] & 0x7F);
- if (!(in[x++] & 0x80)) {
- /* store t */
- if (y >= *outlen) {
- return CRYPT_BUFFER_OVERFLOW;
- }
- if (y == 0) {
- words[0] = t / 40;
- words[1] = t % 40;
- y = 2;
- } else {
- words[y++] = t;
- }
- t = 0;
- }
- }
-
- *outlen = y;
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/object_identifier/der_decode_object_identifier.c,v $ */
-/* $Revision: 1.6 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_octet_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_octet_string.c
deleted file mode 100644
index 523d0baa0..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_octet_string.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_decode_octet_string.c
- ASN.1 DER, encode a OCTET STRING, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/**
- Store a OCTET STRING
- @param in The DER encoded OCTET STRING
- @param inlen The size of the DER OCTET STRING
- @param out [out] The array of octets stored (one per char)
- @param outlen [in/out] The number of octets stored
- @return CRYPT_OK if successful
-*/
-int der_decode_octet_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned long x, y, len;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* must have header at least */
- if (inlen < 2) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* check for 0x04 */
- if ((in[0] & 0x1F) != 0x04) {
- return CRYPT_INVALID_PACKET;
- }
- x = 1;
-
- /* decode the length */
- if (in[x] & 0x80) {
- /* valid # of bytes in length are 1,2,3 */
- y = in[x] & 0x7F;
- if ((y == 0) || (y > 3) || ((x + y) > inlen)) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* read the length in */
- len = 0;
- ++x;
- while (y--) {
- len = (len << 8) | in[x++];
- }
- } else {
- len = in[x++] & 0x7F;
- }
-
- /* is it too long? */
- if (len > *outlen) {
- *outlen = len;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- if (len + x > inlen) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* read the data */
- for (y = 0; y < len; y++) {
- out[y] = in[x++];
- }
-
- *outlen = y;
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/octet/der_decode_octet_string.c,v $ */
-/* $Revision: 1.4 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_printable_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_printable_string.c
deleted file mode 100644
index f83259343..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_printable_string.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_decode_printable_string.c
- ASN.1 DER, encode a printable STRING, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/**
- Store a printable STRING
- @param in The DER encoded printable STRING
- @param inlen The size of the DER printable STRING
- @param out [out] The array of octets stored (one per char)
- @param outlen [in/out] The number of octets stored
- @return CRYPT_OK if successful
-*/
-int der_decode_printable_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned long x, y, len;
- int t;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* must have header at least */
- if (inlen < 2) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* check for 0x13 */
- if ((in[0] & 0x1F) != 0x13) {
- return CRYPT_INVALID_PACKET;
- }
- x = 1;
-
- /* decode the length */
- if (in[x] & 0x80) {
- /* valid # of bytes in length are 1,2,3 */
- y = in[x] & 0x7F;
- if ((y == 0) || (y > 3) || ((x + y) > inlen)) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* read the length in */
- len = 0;
- ++x;
- while (y--) {
- len = (len << 8) | in[x++];
- }
- } else {
- len = in[x++] & 0x7F;
- }
-
- /* is it too long? */
- if (len > *outlen) {
- *outlen = len;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- if (len + x > inlen) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* read the data */
- for (y = 0; y < len; y++) {
- t = der_printable_value_decode(in[x++]);
- if (t == -1) {
- return CRYPT_INVALID_ARG;
- }
- out[y] = t;
- }
-
- *outlen = y;
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/printable_string/der_decode_printable_string.c,v $ */
-/* $Revision: 1.4 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_ex.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_ex.c
deleted file mode 100644
index 9b00f61b0..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_ex.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-#include <stdarg.h>
-
-
-/**
- @file der_decode_sequence_ex.c
- ASN.1 DER, decode a SEQUENCE, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-/**
- Decode a SEQUENCE
- @param in The DER encoded input
- @param inlen The size of the input
- @param list The list of items to decode
- @param outlen The number of items in the list
- @param ordered Search an unordeded or ordered list
- @return CRYPT_OK on success
-*/
-int der_decode_sequence_ex(const unsigned char *in, unsigned long inlen,
- ltc_asn1_list *list, unsigned long outlen, int ordered)
-{
- int err, type;
- unsigned long size, x, y, z, i, blksize;
- void *data;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(list != NULL);
-
- /* get blk size */
- if (inlen < 2) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* sequence type? We allow 0x30 SEQUENCE and 0x31 SET since fundamentally they're the same structure */
- x = 0;
- if (in[x] != 0x30 && in[x] != 0x31) {
- return CRYPT_INVALID_PACKET;
- }
- ++x;
-
- if (in[x] < 128) {
- blksize = in[x++];
- } else if (in[x] & 0x80) {
- if (in[x] < 0x81 || in[x] > 0x83) {
- return CRYPT_INVALID_PACKET;
- }
- y = in[x++] & 0x7F;
-
- /* would reading the len bytes overrun? */
- if (x + y > inlen) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* read len */
- blksize = 0;
- while (y--) {
- blksize = (blksize << 8) | (unsigned long)in[x++];
- }
- }
-
- /* would this blksize overflow? */
- if (x + blksize > inlen) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* mark all as unused */
- for (i = 0; i < outlen; i++) {
- list[i].used = 0;
- }
-
- /* ok read data */
- inlen = blksize;
- for (i = 0; i < outlen; i++) {
- z = 0;
- type = list[i].type;
- size = list[i].size;
- data = list[i].data;
- if (!ordered && list[i].used == 1) { continue; }
-
- if (type == LTC_ASN1_EOL) {
- break;
- }
-
- switch (type) {
- case LTC_ASN1_BOOLEAN:
- z = inlen;
- if ((err = der_decode_boolean(in + x, z, ((int *)data))) != CRYPT_OK) {
- goto LBL_ERR;
- }
- if ((err = der_length_boolean(&z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- break;
-
- case LTC_ASN1_INTEGER:
- z = inlen;
- if ((err = der_decode_integer(in + x, z, data)) != CRYPT_OK) {
- if (!ordered) { continue; }
- goto LBL_ERR;
- }
- if ((err = der_length_integer(data, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- break;
-
- case LTC_ASN1_SHORT_INTEGER:
- z = inlen;
- if ((err = der_decode_short_integer(in + x, z, data)) != CRYPT_OK) {
- if (!ordered) { continue; }
- goto LBL_ERR;
- }
- if ((err = der_length_short_integer(((unsigned long*)data)[0], &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
-
- break;
-
- case LTC_ASN1_BIT_STRING:
- z = inlen;
- if ((err = der_decode_bit_string(in + x, z, data, &size)) != CRYPT_OK) {
- if (!ordered) { continue; }
- goto LBL_ERR;
- }
- list[i].size = size;
- if ((err = der_length_bit_string(size, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- break;
-
- case LTC_ASN1_OCTET_STRING:
- z = inlen;
- if ((err = der_decode_octet_string(in + x, z, data, &size)) != CRYPT_OK) {
- if (!ordered) { continue; }
- goto LBL_ERR;
- }
- list[i].size = size;
- if ((err = der_length_octet_string(size, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- break;
-
- case LTC_ASN1_NULL:
- if (inlen < 2 || in[x] != 0x05 || in[x+1] != 0x00) {
- if (!ordered) { continue; }
- err = CRYPT_INVALID_PACKET;
- goto LBL_ERR;
- }
- z = 2;
- break;
-
- case LTC_ASN1_OBJECT_IDENTIFIER:
- z = inlen;
- if ((err = der_decode_object_identifier(in + x, z, data, &size)) != CRYPT_OK) {
- if (!ordered) { continue; }
- goto LBL_ERR;
- }
- list[i].size = size;
- if ((err = der_length_object_identifier(data, size, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- break;
-
- case LTC_ASN1_IA5_STRING:
- z = inlen;
- if ((err = der_decode_ia5_string(in + x, z, data, &size)) != CRYPT_OK) {
- if (!ordered) { continue; }
- goto LBL_ERR;
- }
- list[i].size = size;
- if ((err = der_length_ia5_string(data, size, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- break;
-
-
- case LTC_ASN1_PRINTABLE_STRING:
- z = inlen;
- if ((err = der_decode_printable_string(in + x, z, data, &size)) != CRYPT_OK) {
- if (!ordered) { continue; }
- goto LBL_ERR;
- }
- list[i].size = size;
- if ((err = der_length_printable_string(data, size, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- break;
-
- case LTC_ASN1_UTF8_STRING:
- z = inlen;
- if ((err = der_decode_utf8_string(in + x, z, data, &size)) != CRYPT_OK) {
- if (!ordered) { continue; }
- goto LBL_ERR;
- }
- list[i].size = size;
- if ((err = der_length_utf8_string(data, size, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- break;
-
- case LTC_ASN1_UTCTIME:
- z = inlen;
- if ((err = der_decode_utctime(in + x, &z, data)) != CRYPT_OK) {
- if (!ordered) { continue; }
- goto LBL_ERR;
- }
- break;
-
- case LTC_ASN1_SET:
- z = inlen;
- if ((err = der_decode_set(in + x, z, data, size)) != CRYPT_OK) {
- if (!ordered) { continue; }
- goto LBL_ERR;
- }
- if ((err = der_length_sequence(data, size, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- break;
-
- case LTC_ASN1_SETOF:
- case LTC_ASN1_SEQUENCE:
- /* detect if we have the right type */
- if ((type == LTC_ASN1_SETOF && (in[x] & 0x3F) != 0x31) || (type == LTC_ASN1_SEQUENCE && (in[x] & 0x3F) != 0x30)) {
- err = CRYPT_INVALID_PACKET;
- goto LBL_ERR;
- }
-
- z = inlen;
- if ((err = der_decode_sequence(in + x, z, data, size)) != CRYPT_OK) {
- if (!ordered) { continue; }
- goto LBL_ERR;
- }
- if ((err = der_length_sequence(data, size, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- break;
-
-
- case LTC_ASN1_CHOICE:
- z = inlen;
- if ((err = der_decode_choice(in + x, &z, data, size)) != CRYPT_OK) {
- if (!ordered) { continue; }
- goto LBL_ERR;
- }
- break;
-
- default:
- err = CRYPT_INVALID_ARG;
- goto LBL_ERR;
- }
- x += z;
- inlen -= z;
- list[i].used = 1;
- if (!ordered) {
- /* restart the decoder */
- i = -1;
- }
- }
-
- for (i = 0; i < outlen; i++) {
- if (list[i].used == 0) {
- err = CRYPT_INVALID_PACKET;
- goto LBL_ERR;
- }
- }
- err = CRYPT_OK;
-
-LBL_ERR:
- return err;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_ex.c,v $ */
-/* $Revision: 1.16 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_flexi.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_flexi.c
deleted file mode 100644
index 9c648bc89..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_flexi.c
+++ /dev/null
@@ -1,386 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_decode_sequence_flexi.c
- ASN.1 DER, decode an array of ASN.1 types with a flexi parser, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-static unsigned long fetch_length(const unsigned char *in, unsigned long inlen)
-{
- unsigned long x, y, z;
-
- y = 0;
-
- /* skip type and read len */
- if (inlen < 2) {
- return 0xFFFFFFFF;
- }
- ++in; ++y;
-
- /* read len */
- x = *in++; ++y;
-
- /* <128 means literal */
- if (x < 128) {
- return x+y;
- }
- x &= 0x7F; /* the lower 7 bits are the length of the length */
- inlen -= 2;
-
- /* len means len of len! */
- if (x == 0 || x > 4 || x > inlen) {
- return 0xFFFFFFFF;
- }
-
- y += x;
- z = 0;
- while (x--) {
- z = (z<<8) | ((unsigned long)*in);
- ++in;
- }
- return z+y;
-}
-
-/**
- ASN.1 DER Flexi(ble) decoder will decode arbitrary DER packets and create a linked list of the decoded elements.
- @param in The input buffer
- @param inlen [in/out] The length of the input buffer and on output the amount of decoded data
- @param out [out] A pointer to the linked list
- @return CRYPT_OK on success.
-*/
-int der_decode_sequence_flexi(const unsigned char *in, unsigned long *inlen, ltc_asn1_list **out)
-{
- ltc_asn1_list *l;
- unsigned long err, type, len, totlen, x, y;
- void *realloc_tmp;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(inlen != NULL);
- LTC_ARGCHK(out != NULL);
-
- l = NULL;
- totlen = 0;
-
- /* scan the input and and get lengths and what not */
- while (*inlen) {
- /* read the type byte */
- type = *in;
-
- /* fetch length */
- len = fetch_length(in, *inlen);
- if (len > *inlen) {
- err = CRYPT_INVALID_PACKET;
- goto error;
- }
-
- /* alloc new link */
- if (l == NULL) {
- l = XCALLOC(1, sizeof(*l));
- if (l == NULL) {
- err = CRYPT_MEM;
- goto error;
- }
- } else {
- l->next = XCALLOC(1, sizeof(*l));
- if (l->next == NULL) {
- err = CRYPT_MEM;
- goto error;
- }
- l->next->prev = l;
- l = l->next;
- }
-
- /* now switch on type */
- switch (type) {
- case 0x01: /* BOOLEAN */
- l->type = LTC_ASN1_BOOLEAN;
- l->size = 1;
- l->data = XCALLOC(1, sizeof(int));
-
- if ((err = der_decode_boolean(in, *inlen, l->data)) != CRYPT_OK) {
- goto error;
- }
-
- if ((err = der_length_boolean(&len)) != CRYPT_OK) {
- goto error;
- }
- break;
-
- case 0x02: /* INTEGER */
- /* init field */
- l->type = LTC_ASN1_INTEGER;
- l->size = 1;
- if ((err = mp_init(&l->data)) != CRYPT_OK) {
- goto error;
- }
-
- /* decode field */
- if ((err = der_decode_integer(in, *inlen, l->data)) != CRYPT_OK) {
- goto error;
- }
-
- /* calc length of object */
- if ((err = der_length_integer(l->data, &len)) != CRYPT_OK) {
- goto error;
- }
- break;
-
- case 0x03: /* BIT */
- /* init field */
- l->type = LTC_ASN1_BIT_STRING;
- l->size = len * 8; /* *8 because we store decoded bits one per char and they are encoded 8 per char. */
-
- if ((l->data = XCALLOC(1, l->size)) == NULL) {
- err = CRYPT_MEM;
- goto error;
- }
-
- if ((err = der_decode_bit_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) {
- goto error;
- }
-
- if ((err = der_length_bit_string(l->size, &len)) != CRYPT_OK) {
- goto error;
- }
- break;
-
- case 0x04: /* OCTET */
-
- /* init field */
- l->type = LTC_ASN1_OCTET_STRING;
- l->size = len;
-
- if ((l->data = XCALLOC(1, l->size)) == NULL) {
- err = CRYPT_MEM;
- goto error;
- }
-
- if ((err = der_decode_octet_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) {
- goto error;
- }
-
- if ((err = der_length_octet_string(l->size, &len)) != CRYPT_OK) {
- goto error;
- }
- break;
-
- case 0x05: /* NULL */
-
- /* valid NULL is 0x05 0x00 */
- if (in[0] != 0x05 || in[1] != 0x00) {
- err = CRYPT_INVALID_PACKET;
- goto error;
- }
-
- /* simple to store ;-) */
- l->type = LTC_ASN1_NULL;
- l->data = NULL;
- l->size = 0;
- len = 2;
-
- break;
-
- case 0x06: /* OID */
-
- /* init field */
- l->type = LTC_ASN1_OBJECT_IDENTIFIER;
- l->size = len;
-
- if ((l->data = XCALLOC(len, sizeof(unsigned long))) == NULL) {
- err = CRYPT_MEM;
- goto error;
- }
-
- if ((err = der_decode_object_identifier(in, *inlen, l->data, &l->size)) != CRYPT_OK) {
- goto error;
- }
-
- if ((err = der_length_object_identifier(l->data, l->size, &len)) != CRYPT_OK) {
- goto error;
- }
-
- /* resize it to save a bunch of mem */
- if ((realloc_tmp = XREALLOC(l->data, l->size * sizeof(unsigned long))) == NULL) {
- /* out of heap but this is not an error */
- break;
- }
- l->data = realloc_tmp;
- break;
-
- case 0x0C: /* UTF8 */
-
- /* init field */
- l->type = LTC_ASN1_UTF8_STRING;
- l->size = len;
-
- if ((l->data = XCALLOC(sizeof(wchar_t), l->size)) == NULL) {
- err = CRYPT_MEM;
- goto error;
- }
-
- if ((err = der_decode_utf8_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) {
- goto error;
- }
-
- if ((err = der_length_utf8_string(l->data, l->size, &len)) != CRYPT_OK) {
- goto error;
- }
- break;
-
- case 0x13: /* PRINTABLE */
-
- /* init field */
- l->type = LTC_ASN1_PRINTABLE_STRING;
- l->size = len;
-
- if ((l->data = XCALLOC(1, l->size)) == NULL) {
- err = CRYPT_MEM;
- goto error;
- }
-
- if ((err = der_decode_printable_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) {
- goto error;
- }
-
- if ((err = der_length_printable_string(l->data, l->size, &len)) != CRYPT_OK) {
- goto error;
- }
- break;
-
- case 0x16: /* IA5 */
-
- /* init field */
- l->type = LTC_ASN1_IA5_STRING;
- l->size = len;
-
- if ((l->data = XCALLOC(1, l->size)) == NULL) {
- err = CRYPT_MEM;
- goto error;
- }
-
- if ((err = der_decode_ia5_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) {
- goto error;
- }
-
- if ((err = der_length_ia5_string(l->data, l->size, &len)) != CRYPT_OK) {
- goto error;
- }
- break;
-
- case 0x17: /* UTC TIME */
-
- /* init field */
- l->type = LTC_ASN1_UTCTIME;
- l->size = 1;
-
- if ((l->data = XCALLOC(1, sizeof(ltc_utctime))) == NULL) {
- err = CRYPT_MEM;
- goto error;
- }
-
- len = *inlen;
- if ((err = der_decode_utctime(in, &len, l->data)) != CRYPT_OK) {
- goto error;
- }
-
- if ((err = der_length_utctime(l->data, &len)) != CRYPT_OK) {
- goto error;
- }
- break;
-
- case 0x30: /* SEQUENCE */
- case 0x31: /* SET */
-
- /* init field */
- l->type = (type == 0x30) ? LTC_ASN1_SEQUENCE : LTC_ASN1_SET;
-
- /* we have to decode the SEQUENCE header and get it's length */
-
- /* move past type */
- ++in; --(*inlen);
-
- /* read length byte */
- x = *in++; --(*inlen);
-
- /* smallest SEQUENCE/SET header */
- y = 2;
-
- /* now if it's > 127 the next bytes are the length of the length */
- if (x > 128) {
- x &= 0x7F;
- in += x;
- *inlen -= x;
-
- /* update sequence header len */
- y += x;
- }
-
- /* Sequence elements go as child */
- len = len - y;
- if ((err = der_decode_sequence_flexi(in, &len, &(l->child))) != CRYPT_OK) {
- goto error;
- }
-
- /* len update */
- totlen += y;
-
- /* link them up y0 */
- l->child->parent = l;
-
- break;
- default:
- /* invalid byte ... this is a soft error */
- /* remove link */
- l = l->prev;
- XFREE(l->next);
- l->next = NULL;
- goto outside;
- }
-
- /* advance pointers */
- totlen += len;
- in += len;
- *inlen -= len;
- }
-
-outside:
-
- /* rewind l please */
- while (l->prev != NULL || l->parent != NULL) {
- if (l->parent != NULL) {
- l = l->parent;
- } else {
- l = l->prev;
- }
- }
-
- /* return */
- *out = l;
- *inlen = totlen;
- return CRYPT_OK;
-
-error:
- /* free list */
- der_sequence_free(l);
-
- return err;
-}
-
-#endif
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_flexi.c,v $ */
-/* $Revision: 1.26 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_multi.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_multi.c
deleted file mode 100644
index ff633df35..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_sequence_multi.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-#include <stdarg.h>
-
-
-/**
- @file der_decode_sequence_multi.c
- ASN.1 DER, decode a SEQUENCE, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-/**
- Decode a SEQUENCE type using a VA list
- @param in Input buffer
- @param inlen Length of input in octets
- @remark <...> is of the form <type, size, data> (int, unsigned long, void*)
- @return CRYPT_OK on success
-*/
-int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...)
-{
- int err, type;
- unsigned long size, x;
- void *data;
- va_list args;
- ltc_asn1_list *list;
-
- LTC_ARGCHK(in != NULL);
-
- /* get size of output that will be required */
- va_start(args, inlen);
- x = 0;
- for (;;) {
- type = va_arg(args, int);
- size = va_arg(args, unsigned long);
- data = va_arg(args, void*);
-
- if (type == LTC_ASN1_EOL) {
- break;
- }
-
- switch (type) {
- case LTC_ASN1_BOOLEAN:
- case LTC_ASN1_INTEGER:
- case LTC_ASN1_SHORT_INTEGER:
- case LTC_ASN1_BIT_STRING:
- case LTC_ASN1_OCTET_STRING:
- case LTC_ASN1_NULL:
- case LTC_ASN1_OBJECT_IDENTIFIER:
- case LTC_ASN1_IA5_STRING:
- case LTC_ASN1_PRINTABLE_STRING:
- case LTC_ASN1_UTF8_STRING:
- case LTC_ASN1_UTCTIME:
- case LTC_ASN1_SET:
- case LTC_ASN1_SETOF:
- case LTC_ASN1_SEQUENCE:
- case LTC_ASN1_CHOICE:
- ++x;
- break;
-
- default:
- va_end(args);
- return CRYPT_INVALID_ARG;
- }
- }
- va_end(args);
-
- /* allocate structure for x elements */
- if (x == 0) {
- return CRYPT_NOP;
- }
-
- list = XCALLOC(sizeof(*list), x);
- if (list == NULL) {
- return CRYPT_MEM;
- }
-
- /* fill in the structure */
- va_start(args, inlen);
- x = 0;
- for (;;) {
- type = va_arg(args, int);
- size = va_arg(args, unsigned long);
- data = va_arg(args, void*);
-
- if (type == LTC_ASN1_EOL) {
- break;
- }
-
- switch (type) {
- case LTC_ASN1_BOOLEAN:
- case LTC_ASN1_INTEGER:
- case LTC_ASN1_SHORT_INTEGER:
- case LTC_ASN1_BIT_STRING:
- case LTC_ASN1_OCTET_STRING:
- case LTC_ASN1_NULL:
- case LTC_ASN1_OBJECT_IDENTIFIER:
- case LTC_ASN1_IA5_STRING:
- case LTC_ASN1_PRINTABLE_STRING:
- case LTC_ASN1_UTF8_STRING:
- case LTC_ASN1_UTCTIME:
- case LTC_ASN1_SEQUENCE:
- case LTC_ASN1_SET:
- case LTC_ASN1_SETOF:
- case LTC_ASN1_CHOICE:
- list[x].type = type;
- list[x].size = size;
- list[x++].data = data;
- break;
-
- default:
- va_end(args);
- err = CRYPT_INVALID_ARG;
- goto LBL_ERR;
- }
- }
- va_end(args);
-
- err = der_decode_sequence(in, inlen, list, x);
-LBL_ERR:
- XFREE(list);
- return err;
-}
-
-#endif
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_multi.c,v $ */
-/* $Revision: 1.13 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_short_integer.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_short_integer.c
deleted file mode 100644
index 907e4e1c3..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_short_integer.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_decode_short_integer.c
- ASN.1 DER, decode an integer, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/**
- Read a short integer
- @param in The DER encoded data
- @param inlen Size of data
- @param num [out] The integer to decode
- @return CRYPT_OK if successful
-*/
-int der_decode_short_integer(const unsigned char *in, unsigned long inlen, unsigned long *num)
-{
- unsigned long len, x, y;
-
- LTC_ARGCHK(num != NULL);
- LTC_ARGCHK(in != NULL);
-
- /* check length */
- if (inlen < 2) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* check header */
- x = 0;
- if ((in[x++] & 0x1F) != 0x02) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* get the packet len */
- len = in[x++];
-
- if (x + len > inlen) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* read number */
- y = 0;
- while (len--) {
- y = (y<<8) | (unsigned long)in[x++];
- }
- *num = y;
-
- return CRYPT_OK;
-
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/short_integer/der_decode_short_integer.c,v $ */
-/* $Revision: 1.7 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_utctime.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_utctime.c
deleted file mode 100644
index 7f3f0d766..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_utctime.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_decode_utctime.c
- ASN.1 DER, decode a UTCTIME, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-static int char_to_int(unsigned char x)
-{
- switch (x) {
- case '0': return 0;
- case '1': return 1;
- case '2': return 2;
- case '3': return 3;
- case '4': return 4;
- case '5': return 5;
- case '6': return 6;
- case '7': return 7;
- case '8': return 8;
- case '9': return 9;
- }
- return 100;
-}
-
-#define DECODE_V(y, max) \
- y = char_to_int(buf[x])*10 + char_to_int(buf[x+1]); \
- if (y >= max) return CRYPT_INVALID_PACKET; \
- x += 2;
-
-/**
- Decodes a UTC time structure in DER format (reads all 6 valid encoding formats)
- @param in Input buffer
- @param inlen Length of input buffer in octets
- @param out [out] Destination of UTC time structure
- @return CRYPT_OK if successful
-*/
-int der_decode_utctime(const unsigned char *in, unsigned long *inlen,
- ltc_utctime *out)
-{
- unsigned char buf[32];
- unsigned long x;
- int y;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(inlen != NULL);
- LTC_ARGCHK(out != NULL);
-
- /* check header */
- if (*inlen < 2UL || (in[1] >= sizeof(buf)) || ((in[1] + 2UL) > *inlen)) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* decode the string */
- for (x = 0; x < in[1]; x++) {
- y = der_ia5_value_decode(in[x+2]);
- if (y == -1) {
- return CRYPT_INVALID_PACKET;
- }
- buf[x] = y;
- }
- *inlen = 2 + x;
-
-
- /* possible encodings are
-YYMMDDhhmmZ
-YYMMDDhhmm+hh'mm'
-YYMMDDhhmm-hh'mm'
-YYMMDDhhmmssZ
-YYMMDDhhmmss+hh'mm'
-YYMMDDhhmmss-hh'mm'
-
- So let's do a trivial decode upto [including] mm
- */
-
- x = 0;
- DECODE_V(out->YY, 100);
- DECODE_V(out->MM, 13);
- DECODE_V(out->DD, 32);
- DECODE_V(out->hh, 24);
- DECODE_V(out->mm, 60);
-
- /* clear timezone and seconds info */
- out->off_dir = out->off_hh = out->off_mm = out->ss = 0;
-
- /* now is it Z, +, - or 0-9 */
- if (buf[x] == 'Z') {
- return CRYPT_OK;
- } else if (buf[x] == '+' || buf[x] == '-') {
- out->off_dir = (buf[x++] == '+') ? 0 : 1;
- DECODE_V(out->off_hh, 24);
- DECODE_V(out->off_mm, 60);
- return CRYPT_OK;
- }
-
- /* decode seconds */
- DECODE_V(out->ss, 60);
-
- /* now is it Z, +, - */
- if (buf[x] == 'Z') {
- return CRYPT_OK;
- } else if (buf[x] == '+' || buf[x] == '-') {
- out->off_dir = (buf[x++] == '+') ? 0 : 1;
- DECODE_V(out->off_hh, 24);
- DECODE_V(out->off_mm, 60);
- return CRYPT_OK;
- } else {
- return CRYPT_INVALID_PACKET;
- }
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/utctime/der_decode_utctime.c,v $ */
-/* $Revision: 1.9 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_utf8_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_utf8_string.c
deleted file mode 100644
index 898d6cd2a..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_decode_utf8_string.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_decode_utf8_string.c
- ASN.1 DER, encode a UTF8 STRING, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/**
- Store a UTF8 STRING
- @param in The DER encoded UTF8 STRING
- @param inlen The size of the DER UTF8 STRING
- @param out [out] The array of utf8s stored (one per char)
- @param outlen [in/out] The number of utf8s stored
- @return CRYPT_OK if successful
-*/
-int der_decode_utf8_string(const unsigned char *in, unsigned long inlen,
- wchar_t *out, unsigned long *outlen)
-{
- wchar_t tmp;
- unsigned long x, y, z, len;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* must have header at least */
- if (inlen < 2) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* check for 0x0C */
- if ((in[0] & 0x1F) != 0x0C) {
- return CRYPT_INVALID_PACKET;
- }
- x = 1;
-
- /* decode the length */
- if (in[x] & 0x80) {
- /* valid # of bytes in length are 1,2,3 */
- y = in[x] & 0x7F;
- if ((y == 0) || (y > 3) || ((x + y) > inlen)) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* read the length in */
- len = 0;
- ++x;
- while (y--) {
- len = (len << 8) | in[x++];
- }
- } else {
- len = in[x++] & 0x7F;
- }
-
- if (len + x > inlen) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* proceed to decode */
- for (y = 0; x < inlen; ) {
- /* get first byte */
- tmp = in[x++];
-
- /* count number of bytes */
- for (z = 0; (tmp & 0x80) && (z <= 4); z++, tmp = (tmp << 1) & 0xFF);
-
- if (z > 4 || (x + (z - 1) > inlen)) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* decode, grab upper bits */
- tmp >>= z;
-
- /* grab remaining bytes */
- if (z > 1) { --z; }
- while (z-- != 0) {
- if ((in[x] & 0xC0) != 0x80) {
- return CRYPT_INVALID_PACKET;
- }
- tmp = (tmp << 6) | ((wchar_t)in[x++] & 0x3F);
- }
-
- if (y > *outlen) {
- *outlen = y;
- return CRYPT_BUFFER_OVERFLOW;
- }
- out[y++] = tmp;
- }
- *outlen = y;
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/utf8/der_decode_utf8_string.c,v $ */
-/* $Revision: 1.8 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_bit_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_bit_string.c
deleted file mode 100644
index ca29c58a7..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_bit_string.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_encode_bit_string.c
- ASN.1 DER, encode a BIT STRING, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/**
- Store a BIT STRING
- @param in The array of bits to store (one per char)
- @param inlen The number of bits tostore
- @param out [out] The destination for the DER encoded BIT STRING
- @param outlen [in/out] The max size and resulting size of the DER BIT STRING
- @return CRYPT_OK if successful
-*/
-int der_encode_bit_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned long len, x, y;
- unsigned char buf;
- int err;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* avoid overflows */
- if ((err = der_length_bit_string(inlen, &len)) != CRYPT_OK) {
- return err;
- }
-
- if (len > *outlen) {
- *outlen = len;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- /* store header (include bit padding count in length) */
- x = 0;
- y = (inlen >> 3) + ((inlen&7) ? 1 : 0) + 1;
-
- out[x++] = 0x03;
- if (y < 128) {
- out[x++] = (unsigned char)y;
- } else if (y < 256) {
- out[x++] = 0x81;
- out[x++] = (unsigned char)y;
- } else if (y < 65536) {
- out[x++] = 0x82;
- out[x++] = (unsigned char)((y>>8)&255);
- out[x++] = (unsigned char)(y&255);
- }
-
- /* store number of zero padding bits */
- out[x++] = (unsigned char)((8 - inlen) & 7);
-
- /* store the bits in big endian format */
- for (y = buf = 0; y < inlen; y++) {
- buf |= (in[y] ? 1 : 0) << (7 - (y & 7));
- if ((y & 7) == 7) {
- out[x++] = buf;
- buf = 0;
- }
- }
- /* store last byte */
- if (inlen & 7) {
- out[x++] = buf;
- }
- *outlen = x;
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/bit/der_encode_bit_string.c,v $ */
-/* $Revision: 1.5 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_boolean.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_boolean.c
deleted file mode 100644
index ded2731f9..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_boolean.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_encode_boolean.c
- ASN.1 DER, encode a BOOLEAN, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/**
- Store a BOOLEAN
- @param in The boolean to encode
- @param out [out] The destination for the DER encoded BOOLEAN
- @param outlen [in/out] The max size and resulting size of the DER BOOLEAN
- @return CRYPT_OK if successful
-*/
-int der_encode_boolean(int in,
- unsigned char *out, unsigned long *outlen)
-{
- LTC_ARGCHK(outlen != NULL);
- LTC_ARGCHK(out != NULL);
-
- if (*outlen < 3) {
- *outlen = 3;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- *outlen = 3;
- out[0] = 0x01;
- out[1] = 0x01;
- out[2] = in ? 0xFF : 0x00;
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/boolean/der_encode_boolean.c,v $ */
-/* $Revision: 1.4 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_ia5_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_ia5_string.c
deleted file mode 100644
index 30d3f4374..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_ia5_string.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_encode_ia5_string.c
- ASN.1 DER, encode a IA5 STRING, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-/**
- Store an IA5 STRING
- @param in The array of IA5 to store (one per char)
- @param inlen The number of IA5 to store
- @param out [out] The destination for the DER encoded IA5 STRING
- @param outlen [in/out] The max size and resulting size of the DER IA5 STRING
- @return CRYPT_OK if successful
-*/
-int der_encode_ia5_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned long x, y, len;
- int err;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* get the size */
- if ((err = der_length_ia5_string(in, inlen, &len)) != CRYPT_OK) {
- return err;
- }
-
- /* too big? */
- if (len > *outlen) {
- *outlen = len;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- /* encode the header+len */
- x = 0;
- out[x++] = 0x16;
- if (inlen < 128) {
- out[x++] = (unsigned char)inlen;
- } else if (inlen < 256) {
- out[x++] = 0x81;
- out[x++] = (unsigned char)inlen;
- } else if (inlen < 65536UL) {
- out[x++] = 0x82;
- out[x++] = (unsigned char)((inlen>>8)&255);
- out[x++] = (unsigned char)(inlen&255);
- } else if (inlen < 16777216UL) {
- out[x++] = 0x83;
- out[x++] = (unsigned char)((inlen>>16)&255);
- out[x++] = (unsigned char)((inlen>>8)&255);
- out[x++] = (unsigned char)(inlen&255);
- } else {
- return CRYPT_INVALID_ARG;
- }
-
- /* store octets */
- for (y = 0; y < inlen; y++) {
- out[x++] = der_ia5_char_encode(in[y]);
- }
-
- /* retun length */
- *outlen = x;
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/ia5/der_encode_ia5_string.c,v $ */
-/* $Revision: 1.5 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_integer.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_integer.c
deleted file mode 100644
index 4137a94bb..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_integer.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_encode_integer.c
- ASN.1 DER, encode an integer, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/* Exports a positive bignum as DER format (upto 2^32 bytes in size) */
-/**
- Store a mp_int integer
- @param num The first mp_int to encode
- @param out [out] The destination for the DER encoded integers
- @param outlen [in/out] The max size and resulting size of the DER encoded integers
- @return CRYPT_OK if successful
-*/
-int der_encode_integer(void *num, unsigned char *out, unsigned long *outlen)
-{
- unsigned long tmplen, y;
- int err, leading_zero;
-
- LTC_ARGCHK(num != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* find out how big this will be */
- if ((err = der_length_integer(num, &tmplen)) != CRYPT_OK) {
- return err;
- }
-
- if (*outlen < tmplen) {
- *outlen = tmplen;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- if (mp_cmp_d(num, 0) != LTC_MP_LT) {
- /* we only need a leading zero if the msb of the first byte is one */
- if ((mp_count_bits(num) & 7) == 0 || mp_iszero(num) == LTC_MP_YES) {
- leading_zero = 1;
- } else {
- leading_zero = 0;
- }
-
- /* get length of num in bytes (plus 1 since we force the msbyte to zero) */
- y = mp_unsigned_bin_size(num) + leading_zero;
- } else {
- leading_zero = 0;
- y = mp_count_bits(num);
- y = y + (8 - (y & 7));
- y = y >> 3;
- if (((mp_cnt_lsb(num)+1)==mp_count_bits(num)) && ((mp_count_bits(num)&7)==0)) --y;
- }
-
- /* now store initial data */
- *out++ = 0x02;
- if (y < 128) {
- /* short form */
- *out++ = (unsigned char)y;
- } else if (y < 256) {
- *out++ = 0x81;
- *out++ = (unsigned char)y;
- } else if (y < 65536UL) {
- *out++ = 0x82;
- *out++ = (unsigned char)((y>>8)&255);
- *out++ = (unsigned char)y;
- } else if (y < 16777216UL) {
- *out++ = 0x83;
- *out++ = (unsigned char)((y>>16)&255);
- *out++ = (unsigned char)((y>>8)&255);
- *out++ = (unsigned char)y;
- } else {
- return CRYPT_INVALID_ARG;
- }
-
- /* now store msbyte of zero if num is non-zero */
- if (leading_zero) {
- *out++ = 0x00;
- }
-
- /* if it's not zero store it as big endian */
- if (mp_cmp_d(num, 0) == LTC_MP_GT) {
- /* now store the mpint */
- if ((err = mp_to_unsigned_bin(num, out)) != CRYPT_OK) {
- return err;
- }
- } else if (mp_iszero(num) != LTC_MP_YES) {
- void *tmp;
-
- /* negative */
- if (mp_init(&tmp) != CRYPT_OK) {
- return CRYPT_MEM;
- }
-
- /* 2^roundup and subtract */
- y = mp_count_bits(num);
- y = y + (8 - (y & 7));
- if (((mp_cnt_lsb(num)+1)==mp_count_bits(num)) && ((mp_count_bits(num)&7)==0)) y -= 8;
- if (mp_2expt(tmp, y) != CRYPT_OK || mp_add(tmp, num, tmp) != CRYPT_OK) {
- mp_clear(tmp);
- return CRYPT_MEM;
- }
- if ((err = mp_to_unsigned_bin(tmp, out)) != CRYPT_OK) {
- mp_clear(tmp);
- return err;
- }
- mp_clear(tmp);
- }
-
- /* we good */
- *outlen = tmplen;
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/integer/der_encode_integer.c,v $ */
-/* $Revision: 1.9 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_object_identifier.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_object_identifier.c
deleted file mode 100644
index 68e216276..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_object_identifier.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_encode_object_identifier.c
- ASN.1 DER, Encode Object Identifier, Tom St Denis
-*/
-
-#ifdef LTC_DER
-/**
- Encode an OID
- @param words The words to encode (upto 32-bits each)
- @param nwords The number of words in the OID
- @param out [out] Destination of OID data
- @param outlen [in/out] The max and resulting size of the OID
- @return CRYPT_OK if successful
-*/
-int der_encode_object_identifier(unsigned long *words, unsigned long nwords,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned long i, x, y, z, t, mask, wordbuf;
- int err;
-
- LTC_ARGCHK(words != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* check length */
- if ((err = der_length_object_identifier(words, nwords, &x)) != CRYPT_OK) {
- return err;
- }
- if (x > *outlen) {
- *outlen = x;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- /* compute length to store OID data */
- z = 0;
- wordbuf = words[0] * 40 + words[1];
- for (y = 1; y < nwords; y++) {
- t = der_object_identifier_bits(wordbuf);
- z += t/7 + ((t%7) ? 1 : 0) + (wordbuf == 0 ? 1 : 0);
- if (y < nwords - 1) {
- wordbuf = words[y + 1];
- }
- }
-
- /* store header + length */
- x = 0;
- out[x++] = 0x06;
- if (z < 128) {
- out[x++] = (unsigned char)z;
- } else if (z < 256) {
- out[x++] = 0x81;
- out[x++] = (unsigned char)z;
- } else if (z < 65536UL) {
- out[x++] = 0x82;
- out[x++] = (unsigned char)((z>>8)&255);
- out[x++] = (unsigned char)(z&255);
- } else {
- return CRYPT_INVALID_ARG;
- }
-
- /* store first byte */
- wordbuf = words[0] * 40 + words[1];
- for (i = 1; i < nwords; i++) {
- /* store 7 bit words in little endian */
- t = wordbuf & 0xFFFFFFFF;
- if (t) {
- y = x;
- mask = 0;
- while (t) {
- out[x++] = (unsigned char)((t & 0x7F) | mask);
- t >>= 7;
- mask |= 0x80; /* upper bit is set on all but the last byte */
- }
- /* now swap bytes y...x-1 */
- z = x - 1;
- while (y < z) {
- t = out[y]; out[y] = out[z]; out[z] = (unsigned char)t;
- ++y;
- --z;
- }
- } else {
- /* zero word */
- out[x++] = 0x00;
- }
-
- if (i < nwords - 1) {
- wordbuf = words[i + 1];
- }
- }
-
- *outlen = x;
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/object_identifier/der_encode_object_identifier.c,v $ */
-/* $Revision: 1.7 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_octet_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_octet_string.c
deleted file mode 100644
index b3ee7f4a4..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_octet_string.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_encode_octet_string.c
- ASN.1 DER, encode a OCTET STRING, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/**
- Store an OCTET STRING
- @param in The array of OCTETS to store (one per char)
- @param inlen The number of OCTETS to store
- @param out [out] The destination for the DER encoded OCTET STRING
- @param outlen [in/out] The max size and resulting size of the DER OCTET STRING
- @return CRYPT_OK if successful
-*/
-int der_encode_octet_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned long x, y, len;
- int err;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* get the size */
- if ((err = der_length_octet_string(inlen, &len)) != CRYPT_OK) {
- return err;
- }
-
- /* too big? */
- if (len > *outlen) {
- *outlen = len;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- /* encode the header+len */
- x = 0;
- out[x++] = 0x04;
- if (inlen < 128) {
- out[x++] = (unsigned char)inlen;
- } else if (inlen < 256) {
- out[x++] = 0x81;
- out[x++] = (unsigned char)inlen;
- } else if (inlen < 65536UL) {
- out[x++] = 0x82;
- out[x++] = (unsigned char)((inlen>>8)&255);
- out[x++] = (unsigned char)(inlen&255);
- } else if (inlen < 16777216UL) {
- out[x++] = 0x83;
- out[x++] = (unsigned char)((inlen>>16)&255);
- out[x++] = (unsigned char)((inlen>>8)&255);
- out[x++] = (unsigned char)(inlen&255);
- } else {
- return CRYPT_INVALID_ARG;
- }
-
- /* store octets */
- for (y = 0; y < inlen; y++) {
- out[x++] = in[y];
- }
-
- /* retun length */
- *outlen = x;
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/octet/der_encode_octet_string.c,v $ */
-/* $Revision: 1.5 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_printable_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_printable_string.c
deleted file mode 100644
index a1dab5f40..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_printable_string.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_encode_printable_string.c
- ASN.1 DER, encode a printable STRING, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-/**
- Store an printable STRING
- @param in The array of printable to store (one per char)
- @param inlen The number of printable to store
- @param out [out] The destination for the DER encoded printable STRING
- @param outlen [in/out] The max size and resulting size of the DER printable STRING
- @return CRYPT_OK if successful
-*/
-int der_encode_printable_string(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned long x, y, len;
- int err;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* get the size */
- if ((err = der_length_printable_string(in, inlen, &len)) != CRYPT_OK) {
- return err;
- }
-
- /* too big? */
- if (len > *outlen) {
- *outlen = len;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- /* encode the header+len */
- x = 0;
- out[x++] = 0x13;
- if (inlen < 128) {
- out[x++] = (unsigned char)inlen;
- } else if (inlen < 256) {
- out[x++] = 0x81;
- out[x++] = (unsigned char)inlen;
- } else if (inlen < 65536UL) {
- out[x++] = 0x82;
- out[x++] = (unsigned char)((inlen>>8)&255);
- out[x++] = (unsigned char)(inlen&255);
- } else if (inlen < 16777216UL) {
- out[x++] = 0x83;
- out[x++] = (unsigned char)((inlen>>16)&255);
- out[x++] = (unsigned char)((inlen>>8)&255);
- out[x++] = (unsigned char)(inlen&255);
- } else {
- return CRYPT_INVALID_ARG;
- }
-
- /* store octets */
- for (y = 0; y < inlen; y++) {
- out[x++] = der_printable_char_encode(in[y]);
- }
-
- /* retun length */
- *outlen = x;
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/printable_string/der_encode_printable_string.c,v $ */
-/* $Revision: 1.5 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_sequence_ex.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_sequence_ex.c
deleted file mode 100644
index 3df19cf4a..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_sequence_ex.c
+++ /dev/null
@@ -1,335 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-#include <stdarg.h>
-
-
-/**
- @file der_encode_sequence_ex.c
- ASN.1 DER, encode a SEQUENCE, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-/**
- Encode a SEQUENCE
- @param list The list of items to encode
- @param inlen The number of items in the list
- @param out [out] The destination
- @param outlen [in/out] The size of the output
- @param type_of LTC_ASN1_SEQUENCE or LTC_ASN1_SET/LTC_ASN1_SETOF
- @return CRYPT_OK on success
-*/
-int der_encode_sequence_ex(ltc_asn1_list *list, unsigned long inlen,
- unsigned char *out, unsigned long *outlen, int type_of)
-{
- int err, type;
- unsigned long size, x, y, z, i;
- void *data;
-
- LTC_ARGCHK(list != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* get size of output that will be required */
- y = 0;
- for (i = 0; i < inlen; i++) {
- type = list[i].type;
- size = list[i].size;
- data = list[i].data;
-
- if (type == LTC_ASN1_EOL) {
- break;
- }
-
- switch (type) {
- case LTC_ASN1_BOOLEAN:
- if ((err = der_length_boolean(&x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_INTEGER:
- if ((err = der_length_integer(data, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_SHORT_INTEGER:
- if ((err = der_length_short_integer(*((unsigned long*)data), &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_BIT_STRING:
- if ((err = der_length_bit_string(size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_OCTET_STRING:
- if ((err = der_length_octet_string(size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_NULL:
- y += 2;
- break;
-
- case LTC_ASN1_OBJECT_IDENTIFIER:
- if ((err = der_length_object_identifier(data, size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_IA5_STRING:
- if ((err = der_length_ia5_string(data, size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_PRINTABLE_STRING:
- if ((err = der_length_printable_string(data, size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_UTF8_STRING:
- if ((err = der_length_utf8_string(data, size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_UTCTIME:
- if ((err = der_length_utctime(data, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_SET:
- case LTC_ASN1_SETOF:
- case LTC_ASN1_SEQUENCE:
- if ((err = der_length_sequence(data, size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- default:
- err = CRYPT_INVALID_ARG;
- goto LBL_ERR;
- }
- }
-
- /* calc header size */
- z = y;
- if (y < 128) {
- y += 2;
- } else if (y < 256) {
- /* 0x30 0x81 LL */
- y += 3;
- } else if (y < 65536UL) {
- /* 0x30 0x82 LL LL */
- y += 4;
- } else if (y < 16777216UL) {
- /* 0x30 0x83 LL LL LL */
- y += 5;
- } else {
- err = CRYPT_INVALID_ARG;
- goto LBL_ERR;
- }
-
- /* too big ? */
- if (*outlen < y) {
- *outlen = y;
- err = CRYPT_BUFFER_OVERFLOW;
- goto LBL_ERR;
- }
-
- /* store header */
- x = 0;
- out[x++] = (type_of == LTC_ASN1_SEQUENCE) ? 0x30 : 0x31;
-
- if (z < 128) {
- out[x++] = (unsigned char)z;
- } else if (z < 256) {
- out[x++] = 0x81;
- out[x++] = (unsigned char)z;
- } else if (z < 65536UL) {
- out[x++] = 0x82;
- out[x++] = (unsigned char)((z>>8UL)&255);
- out[x++] = (unsigned char)(z&255);
- } else if (z < 16777216UL) {
- out[x++] = 0x83;
- out[x++] = (unsigned char)((z>>16UL)&255);
- out[x++] = (unsigned char)((z>>8UL)&255);
- out[x++] = (unsigned char)(z&255);
- }
-
- /* store data */
- *outlen -= x;
- for (i = 0; i < inlen; i++) {
- type = list[i].type;
- size = list[i].size;
- data = list[i].data;
-
- if (type == LTC_ASN1_EOL) {
- break;
- }
-
- switch (type) {
- case LTC_ASN1_BOOLEAN:
- z = *outlen;
- if ((err = der_encode_boolean(*((int *)data), out + x, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- x += z;
- *outlen -= z;
- break;
-
- case LTC_ASN1_INTEGER:
- z = *outlen;
- if ((err = der_encode_integer(data, out + x, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- x += z;
- *outlen -= z;
- break;
-
- case LTC_ASN1_SHORT_INTEGER:
- z = *outlen;
- if ((err = der_encode_short_integer(*((unsigned long*)data), out + x, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- x += z;
- *outlen -= z;
- break;
-
- case LTC_ASN1_BIT_STRING:
- z = *outlen;
- if ((err = der_encode_bit_string(data, size, out + x, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- x += z;
- *outlen -= z;
- break;
-
- case LTC_ASN1_OCTET_STRING:
- z = *outlen;
- if ((err = der_encode_octet_string(data, size, out + x, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- x += z;
- *outlen -= z;
- break;
-
- case LTC_ASN1_NULL:
- out[x++] = 0x05;
- out[x++] = 0x00;
- *outlen -= 2;
- break;
-
- case LTC_ASN1_OBJECT_IDENTIFIER:
- z = *outlen;
- if ((err = der_encode_object_identifier(data, size, out + x, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- x += z;
- *outlen -= z;
- break;
-
- case LTC_ASN1_IA5_STRING:
- z = *outlen;
- if ((err = der_encode_ia5_string(data, size, out + x, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- x += z;
- *outlen -= z;
- break;
-
- case LTC_ASN1_PRINTABLE_STRING:
- z = *outlen;
- if ((err = der_encode_printable_string(data, size, out + x, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- x += z;
- *outlen -= z;
- break;
-
- case LTC_ASN1_UTF8_STRING:
- z = *outlen;
- if ((err = der_encode_utf8_string(data, size, out + x, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- x += z;
- *outlen -= z;
- break;
-
- case LTC_ASN1_UTCTIME:
- z = *outlen;
- if ((err = der_encode_utctime(data, out + x, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- x += z;
- *outlen -= z;
- break;
-
- case LTC_ASN1_SET:
- z = *outlen;
- if ((err = der_encode_set(data, size, out + x, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- x += z;
- *outlen -= z;
- break;
-
- case LTC_ASN1_SETOF:
- z = *outlen;
- if ((err = der_encode_setof(data, size, out + x, &z)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- x += z;
- *outlen -= z;
- break;
-
- case LTC_ASN1_SEQUENCE:
- z = *outlen;
- if ((err = der_encode_sequence_ex(data, size, out + x, &z, type)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- x += z;
- *outlen -= z;
- break;
-
- default:
- err = CRYPT_INVALID_ARG;
- goto LBL_ERR;
- }
- }
- *outlen = x;
- err = CRYPT_OK;
-
-LBL_ERR:
- return err;
-}
-
-#endif
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_sequence_multi.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_sequence_multi.c
deleted file mode 100644
index 782f042e1..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_sequence_multi.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-#include <stdarg.h>
-
-
-/**
- @file der_encode_sequence_multi.c
- ASN.1 DER, encode a SEQUENCE, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-/**
- Encode a SEQUENCE type using a VA list
- @param out [out] Destination for data
- @param outlen [in/out] Length of buffer and resulting length of output
- @remark <...> is of the form <type, size, data> (int, unsigned long, void*)
- @return CRYPT_OK on success
-*/
-int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...)
-{
- int err, type;
- unsigned long size, x;
- void *data;
- va_list args;
- ltc_asn1_list *list;
-
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* get size of output that will be required */
- va_start(args, outlen);
- x = 0;
- for (;;) {
- type = va_arg(args, int);
- size = va_arg(args, unsigned long);
- data = va_arg(args, void*);
-
- if (type == LTC_ASN1_EOL) {
- break;
- }
-
- switch (type) {
- case LTC_ASN1_BOOLEAN:
- case LTC_ASN1_INTEGER:
- case LTC_ASN1_SHORT_INTEGER:
- case LTC_ASN1_BIT_STRING:
- case LTC_ASN1_OCTET_STRING:
- case LTC_ASN1_NULL:
- case LTC_ASN1_OBJECT_IDENTIFIER:
- case LTC_ASN1_IA5_STRING:
- case LTC_ASN1_PRINTABLE_STRING:
- case LTC_ASN1_UTF8_STRING:
- case LTC_ASN1_UTCTIME:
- case LTC_ASN1_SEQUENCE:
- case LTC_ASN1_SET:
- case LTC_ASN1_SETOF:
- ++x;
- break;
-
- default:
- va_end(args);
- return CRYPT_INVALID_ARG;
- }
- }
- va_end(args);
-
- /* allocate structure for x elements */
- if (x == 0) {
- return CRYPT_NOP;
- }
-
- list = XCALLOC(sizeof(*list), x);
- if (list == NULL) {
- return CRYPT_MEM;
- }
-
- /* fill in the structure */
- va_start(args, outlen);
- x = 0;
- for (;;) {
- type = va_arg(args, int);
- size = va_arg(args, unsigned long);
- data = va_arg(args, void*);
-
- if (type == LTC_ASN1_EOL) {
- break;
- }
-
- switch (type) {
- case LTC_ASN1_BOOLEAN:
- case LTC_ASN1_INTEGER:
- case LTC_ASN1_SHORT_INTEGER:
- case LTC_ASN1_BIT_STRING:
- case LTC_ASN1_OCTET_STRING:
- case LTC_ASN1_NULL:
- case LTC_ASN1_OBJECT_IDENTIFIER:
- case LTC_ASN1_IA5_STRING:
- case LTC_ASN1_PRINTABLE_STRING:
- case LTC_ASN1_UTF8_STRING:
- case LTC_ASN1_UTCTIME:
- case LTC_ASN1_SEQUENCE:
- case LTC_ASN1_SET:
- case LTC_ASN1_SETOF:
- list[x].type = type;
- list[x].size = size;
- list[x++].data = data;
- break;
-
- default:
- va_end(args);
- err = CRYPT_INVALID_ARG;
- goto LBL_ERR;
- }
- }
- va_end(args);
-
- err = der_encode_sequence(list, x, out, outlen);
-LBL_ERR:
- XFREE(list);
- return err;
-}
-
-#endif
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_multi.c,v $ */
-/* $Revision: 1.12 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_set.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_set.c
deleted file mode 100644
index 25d247d18..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_set.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_encode_set.c
- ASN.1 DER, Encode a SET, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-/* LTC define to ASN.1 TAG */
-static int ltc_to_asn1(int v)
-{
- switch (v) {
- case LTC_ASN1_BOOLEAN: return 0x01;
- case LTC_ASN1_INTEGER:
- case LTC_ASN1_SHORT_INTEGER: return 0x02;
- case LTC_ASN1_BIT_STRING: return 0x03;
- case LTC_ASN1_OCTET_STRING: return 0x04;
- case LTC_ASN1_NULL: return 0x05;
- case LTC_ASN1_OBJECT_IDENTIFIER: return 0x06;
- case LTC_ASN1_UTF8_STRING: return 0x0C;
- case LTC_ASN1_PRINTABLE_STRING: return 0x13;
- case LTC_ASN1_IA5_STRING: return 0x16;
- case LTC_ASN1_UTCTIME: return 0x17;
- case LTC_ASN1_SEQUENCE: return 0x30;
- case LTC_ASN1_SET:
- case LTC_ASN1_SETOF: return 0x31;
- default: return -1;
- }
-}
-
-
-static int LTC_CALL qsort_helper1(const void *a, const void *b)
-{
- ltc_asn1_list *A = (ltc_asn1_list *)a, *B = (ltc_asn1_list *)b;
- int r;
-
- r = ltc_to_asn1(A->type) - ltc_to_asn1(B->type);
-
- /* for QSORT the order is UNDEFINED if they are "equal" which means it is NOT DETERMINISTIC. So we force it to be :-) */
- if (r == 0) {
- /* their order in the original list now determines the position */
- return A->used - B->used;
- } else {
- return r;
- }
-}
-
-/*
- Encode a SET type
- @param list The list of items to encode
- @param inlen The number of items in the list
- @param out [out] The destination
- @param outlen [in/out] The size of the output
- @return CRYPT_OK on success
-*/
-int der_encode_set(ltc_asn1_list *list, unsigned long inlen,
- unsigned char *out, unsigned long *outlen)
-{
- ltc_asn1_list *copy;
- unsigned long x;
- int err;
-
- /* make copy of list */
- copy = XCALLOC(inlen, sizeof(*copy));
- if (copy == NULL) {
- return CRYPT_MEM;
- }
-
- /* fill in used member with index so we can fully sort it */
- for (x = 0; x < inlen; x++) {
- copy[x] = list[x];
- copy[x].used = x;
- }
-
- /* sort it by the "type" field */
- XQSORT(copy, inlen, sizeof(*copy), &qsort_helper1);
-
- /* call der_encode_sequence_ex() */
- err = der_encode_sequence_ex(copy, inlen, out, outlen, LTC_ASN1_SET);
-
- /* free list */
- XFREE(copy);
-
- return err;
-}
-
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/set/der_encode_set.c,v $ */
-/* $Revision: 1.12 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_setof.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_setof.c
deleted file mode 100644
index 0987cabe8..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_setof.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_encode_setof.c
- ASN.1 DER, Encode SET OF, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-struct edge {
- unsigned char *start;
- unsigned long size;
-};
-
-static int LTC_CALL qsort_helper2(const void *a, const void *b)
-{
- struct edge *A = (struct edge *)a, *B = (struct edge *)b;
- int r;
- unsigned long x;
-
- /* compare min length */
- r = XMEMCMP(A->start, B->start, MIN(A->size, B->size));
-
- if (r == 0 && A->size != B->size) {
- if (A->size > B->size) {
- for (x = B->size; x < A->size; x++) {
- if (A->start[x]) {
- return 1;
- }
- }
- } else {
- for (x = A->size; x < B->size; x++) {
- if (B->start[x]) {
- return -1;
- }
- }
- }
- }
-
- return r;
-}
-
-/**
- Encode a SETOF stucture
- @param list The list of items to encode
- @param inlen The number of items in the list
- @param out [out] The destination
- @param outlen [in/out] The size of the output
- @return CRYPT_OK on success
-*/
-int der_encode_setof(ltc_asn1_list *list, unsigned long inlen,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned long x, y, z, hdrlen;
- int err;
- struct edge *edges;
- unsigned char *ptr, *buf;
-
- /* check that they're all the same type */
- for (x = 1; x < inlen; x++) {
- if (list[x].type != list[x-1].type) {
- return CRYPT_INVALID_ARG;
- }
- }
-
- /* alloc buffer to store copy of output */
- buf = XCALLOC(1, *outlen);
- if (buf == NULL) {
- return CRYPT_MEM;
- }
-
- /* encode list */
- if ((err = der_encode_sequence_ex(list, inlen, buf, outlen, LTC_ASN1_SETOF)) != CRYPT_OK) {
- XFREE(buf);
- return err;
- }
-
- /* allocate edges */
- edges = XCALLOC(inlen, sizeof(*edges));
- if (edges == NULL) {
- XFREE(buf);
- return CRYPT_MEM;
- }
-
- /* skip header */
- ptr = buf + 1;
-
- /* now skip length data */
- x = *ptr++;
- if (x >= 0x80) {
- ptr += (x & 0x7F);
- }
-
- /* get the size of the static header */
- hdrlen = (unsigned long)((size_t)ptr - (size_t)buf);
-
-
- /* scan for edges */
- x = 0;
- while (ptr < (buf + *outlen)) {
- /* store start */
- edges[x].start = ptr;
-
- /* skip type */
- z = 1;
-
- /* parse length */
- y = ptr[z++];
- if (y < 128) {
- edges[x].size = y;
- } else {
- y &= 0x7F;
- edges[x].size = 0;
- while (y--) {
- edges[x].size = (edges[x].size << 8) | ((unsigned long)ptr[z++]);
- }
- }
-
- /* skip content */
- edges[x].size += z;
- ptr += edges[x].size;
- ++x;
- }
-
- /* sort based on contents (using edges) */
- XQSORT(edges, inlen, sizeof(*edges), &qsort_helper2);
-
- /* copy static header */
- XMEMCPY(out, buf, hdrlen);
-
- /* copy+sort using edges+indecies to output from buffer */
- for (y = hdrlen, x = 0; x < inlen; x++) {
- XMEMCPY(out+y, edges[x].start, edges[x].size);
- y += edges[x].size;
- }
-
-#ifdef LTC_CLEAN_STACK
- zeromem(buf, *outlen);
-#endif
-
- /* free buffers */
- XFREE(edges);
- XFREE(buf);
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/set/der_encode_setof.c,v $ */
-/* $Revision: 1.12 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_short_integer.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_short_integer.c
deleted file mode 100644
index 9b167d084..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_short_integer.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_encode_short_integer.c
- ASN.1 DER, encode an integer, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/**
- Store a short integer in the range (0,2^32-1)
- @param num The integer to encode
- @param out [out] The destination for the DER encoded integers
- @param outlen [in/out] The max size and resulting size of the DER encoded integers
- @return CRYPT_OK if successful
-*/
-int der_encode_short_integer(unsigned long num, unsigned char *out, unsigned long *outlen)
-{
- unsigned long len, x, y, z;
- int err;
-
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* force to 32 bits */
- num &= 0xFFFFFFFFUL;
-
- /* find out how big this will be */
- if ((err = der_length_short_integer(num, &len)) != CRYPT_OK) {
- return err;
- }
-
- if (*outlen < len) {
- *outlen = len;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- /* get len of output */
- z = 0;
- y = num;
- while (y) {
- ++z;
- y >>= 8;
- }
-
- /* handle zero */
- if (z == 0) {
- z = 1;
- }
-
- /* see if msb is set */
- z += (num&(1UL<<((z<<3) - 1))) ? 1 : 0;
-
- /* adjust the number so the msB is non-zero */
- for (x = 0; (z <= 4) && (x < (4 - z)); x++) {
- num <<= 8;
- }
-
- /* store header */
- x = 0;
- out[x++] = 0x02;
- out[x++] = (unsigned char)z;
-
- /* if 31st bit is set output a leading zero and decrement count */
- if (z == 5) {
- out[x++] = 0;
- --z;
- }
-
- /* store values */
- for (y = 0; y < z; y++) {
- out[x++] = (unsigned char)((num >> 24) & 0xFF);
- num <<= 8;
- }
-
- /* we good */
- *outlen = x;
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/short_integer/der_encode_short_integer.c,v $ */
-/* $Revision: 1.8 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_utctime.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_utctime.c
deleted file mode 100644
index 167a2b490..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_utctime.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_encode_utctime.c
- ASN.1 DER, encode a UTCTIME, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-static const char *baseten = "0123456789";
-
-#define STORE_V(y) \
- out[x++] = der_ia5_char_encode(baseten[(y/10) % 10]); \
- out[x++] = der_ia5_char_encode(baseten[y % 10]);
-
-/**
- Encodes a UTC time structure in DER format
- @param utctime The UTC time structure to encode
- @param out The destination of the DER encoding of the UTC time structure
- @param outlen [in/out] The length of the DER encoding
- @return CRYPT_OK if successful
-*/
-int der_encode_utctime(ltc_utctime *utctime,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned long x, tmplen;
- int err;
-
- LTC_ARGCHK(utctime != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- if ((err = der_length_utctime(utctime, &tmplen)) != CRYPT_OK) {
- return err;
- }
- if (tmplen > *outlen) {
- *outlen = tmplen;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- /* store header */
- out[0] = 0x17;
-
- /* store values */
- x = 2;
- STORE_V(utctime->YY);
- STORE_V(utctime->MM);
- STORE_V(utctime->DD);
- STORE_V(utctime->hh);
- STORE_V(utctime->mm);
- STORE_V(utctime->ss);
-
- if (utctime->off_mm || utctime->off_hh) {
- out[x++] = der_ia5_char_encode(utctime->off_dir ? '-' : '+');
- STORE_V(utctime->off_hh);
- STORE_V(utctime->off_mm);
- } else {
- out[x++] = der_ia5_char_encode('Z');
- }
-
- /* store length */
- out[1] = (unsigned char)(x - 2);
-
- /* all good let's return */
- *outlen = x;
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/utctime/der_encode_utctime.c,v $ */
-/* $Revision: 1.10 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_utf8_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_utf8_string.c
deleted file mode 100644
index 84d8d0621..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_encode_utf8_string.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_encode_utf8_string.c
- ASN.1 DER, encode a UTF8 STRING, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-
-/**
- Store an UTF8 STRING
- @param in The array of UTF8 to store (one per wchar_t)
- @param inlen The number of UTF8 to store
- @param out [out] The destination for the DER encoded UTF8 STRING
- @param outlen [in/out] The max size and resulting size of the DER UTF8 STRING
- @return CRYPT_OK if successful
-*/
-int der_encode_utf8_string(const wchar_t *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned long x, y, len;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* get the size */
- for (x = len = 0; x < inlen; x++) {
- if (in[x] < 0 || in[x] > 0x1FFFF) {
- return CRYPT_INVALID_ARG;
- }
- len += der_utf8_charsize(in[x]);
- }
-
- if (len < 128) {
- y = 2 + len;
- } else if (len < 256) {
- y = 3 + len;
- } else if (len < 65536UL) {
- y = 4 + len;
- } else if (len < 16777216UL) {
- y = 5 + len;
- } else {
- return CRYPT_INVALID_ARG;
- }
-
- /* too big? */
- if (y > *outlen) {
- *outlen = len;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- /* encode the header+len */
- x = 0;
- out[x++] = 0x0C;
- if (len < 128) {
- out[x++] = (unsigned char)len;
- } else if (len < 256) {
- out[x++] = 0x81;
- out[x++] = (unsigned char)len;
- } else if (len < 65536UL) {
- out[x++] = 0x82;
- out[x++] = (unsigned char)((len>>8)&255);
- out[x++] = (unsigned char)(len&255);
- } else if (len < 16777216UL) {
- out[x++] = 0x83;
- out[x++] = (unsigned char)((len>>16)&255);
- out[x++] = (unsigned char)((len>>8)&255);
- out[x++] = (unsigned char)(len&255);
- } else {
- return CRYPT_INVALID_ARG;
- }
-
- /* store UTF8 */
- for (y = 0; y < inlen; y++) {
- switch (der_utf8_charsize(in[y])) {
- case 1: out[x++] = (unsigned char)in[y]; break;
- case 2: out[x++] = 0xC0 | ((in[y] >> 6) & 0x1F); out[x++] = 0x80 | (in[y] & 0x3F); break;
- case 3: out[x++] = 0xE0 | ((in[y] >> 12) & 0x0F); out[x++] = 0x80 | ((in[y] >> 6) & 0x3F); out[x++] = 0x80 | (in[y] & 0x3F); break;
- case 4: out[x++] = 0xF0 | ((in[y] >> 18) & 0x07); out[x++] = 0x80 | ((in[y] >> 12) & 0x3F); out[x++] = 0x80 | ((in[y] >> 6) & 0x3F); out[x++] = 0x80 | (in[y] & 0x3F); break;
- }
- }
-
- /* retun length */
- *outlen = x;
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/utf8/der_encode_utf8_string.c,v $ */
-/* $Revision: 1.9 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_bit_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_length_bit_string.c
deleted file mode 100644
index 2bffa3b63..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_bit_string.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_length_bit_string.c
- ASN.1 DER, get length of BIT STRING, Tom St Denis
-*/
-
-#ifdef LTC_DER
-/**
- Gets length of DER encoding of BIT STRING
- @param nbits The number of bits in the string to encode
- @param outlen [out] The length of the DER encoding for the given string
- @return CRYPT_OK if successful
-*/
-int der_length_bit_string(unsigned long nbits, unsigned long *outlen)
-{
- unsigned long nbytes;
- LTC_ARGCHK(outlen != NULL);
-
- /* get the number of the bytes */
- nbytes = (nbits >> 3) + ((nbits & 7) ? 1 : 0) + 1;
-
- if (nbytes < 128) {
- /* 03 LL PP DD DD DD ... */
- *outlen = 2 + nbytes;
- } else if (nbytes < 256) {
- /* 03 81 LL PP DD DD DD ... */
- *outlen = 3 + nbytes;
- } else if (nbytes < 65536) {
- /* 03 82 LL LL PP DD DD DD ... */
- *outlen = 4 + nbytes;
- } else {
- return CRYPT_INVALID_ARG;
- }
-
- return CRYPT_OK;
-}
-
-#endif
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/bit/der_length_bit_string.c,v $ */
-/* $Revision: 1.3 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_boolean.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_length_boolean.c
deleted file mode 100644
index e34ce5c65..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_boolean.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_length_boolean.c
- ASN.1 DER, get length of a BOOLEAN, Tom St Denis
-*/
-
-#ifdef LTC_DER
-/**
- Gets length of DER encoding of a BOOLEAN
- @param outlen [out] The length of the DER encoding
- @return CRYPT_OK if successful
-*/
-int der_length_boolean(unsigned long *outlen)
-{
- LTC_ARGCHK(outlen != NULL);
- *outlen = 3;
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/boolean/der_length_boolean.c,v $ */
-/* $Revision: 1.3 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_ia5_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_length_ia5_string.c
deleted file mode 100644
index 473bc7932..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_ia5_string.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_length_ia5_string.c
- ASN.1 DER, get length of IA5 STRING, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-static const struct {
- int code, value;
-} ia5_table[] = {
-{ '\0', 0 },
-{ '\a', 7 },
-{ '\b', 8 },
-{ '\t', 9 },
-{ '\n', 10 },
-{ '\f', 12 },
-{ '\r', 13 },
-{ ' ', 32 },
-{ '!', 33 },
-{ '"', 34 },
-{ '#', 35 },
-{ '$', 36 },
-{ '%', 37 },
-{ '&', 38 },
-{ '\'', 39 },
-{ '(', 40 },
-{ ')', 41 },
-{ '*', 42 },
-{ '+', 43 },
-{ ',', 44 },
-{ '-', 45 },
-{ '.', 46 },
-{ '/', 47 },
-{ '0', 48 },
-{ '1', 49 },
-{ '2', 50 },
-{ '3', 51 },
-{ '4', 52 },
-{ '5', 53 },
-{ '6', 54 },
-{ '7', 55 },
-{ '8', 56 },
-{ '9', 57 },
-{ ':', 58 },
-{ ';', 59 },
-{ '<', 60 },
-{ '=', 61 },
-{ '>', 62 },
-{ '?', 63 },
-{ '@', 64 },
-{ 'A', 65 },
-{ 'B', 66 },
-{ 'C', 67 },
-{ 'D', 68 },
-{ 'E', 69 },
-{ 'F', 70 },
-{ 'G', 71 },
-{ 'H', 72 },
-{ 'I', 73 },
-{ 'J', 74 },
-{ 'K', 75 },
-{ 'L', 76 },
-{ 'M', 77 },
-{ 'N', 78 },
-{ 'O', 79 },
-{ 'P', 80 },
-{ 'Q', 81 },
-{ 'R', 82 },
-{ 'S', 83 },
-{ 'T', 84 },
-{ 'U', 85 },
-{ 'V', 86 },
-{ 'W', 87 },
-{ 'X', 88 },
-{ 'Y', 89 },
-{ 'Z', 90 },
-{ '[', 91 },
-{ '\\', 92 },
-{ ']', 93 },
-{ '^', 94 },
-{ '_', 95 },
-{ '`', 96 },
-{ 'a', 97 },
-{ 'b', 98 },
-{ 'c', 99 },
-{ 'd', 100 },
-{ 'e', 101 },
-{ 'f', 102 },
-{ 'g', 103 },
-{ 'h', 104 },
-{ 'i', 105 },
-{ 'j', 106 },
-{ 'k', 107 },
-{ 'l', 108 },
-{ 'm', 109 },
-{ 'n', 110 },
-{ 'o', 111 },
-{ 'p', 112 },
-{ 'q', 113 },
-{ 'r', 114 },
-{ 's', 115 },
-{ 't', 116 },
-{ 'u', 117 },
-{ 'v', 118 },
-{ 'w', 119 },
-{ 'x', 120 },
-{ 'y', 121 },
-{ 'z', 122 },
-{ '{', 123 },
-{ '|', 124 },
-{ '}', 125 },
-{ '~', 126 }
-};
-
-int der_ia5_char_encode(int c)
-{
- int x;
- for (x = 0; x < (int)(sizeof(ia5_table)/sizeof(ia5_table[0])); x++) {
- if (ia5_table[x].code == c) {
- return ia5_table[x].value;
- }
- }
- return -1;
-}
-
-int der_ia5_value_decode(int v)
-{
- int x;
- for (x = 0; x < (int)(sizeof(ia5_table)/sizeof(ia5_table[0])); x++) {
- if (ia5_table[x].value == v) {
- return ia5_table[x].code;
- }
- }
- return -1;
-}
-
-/**
- Gets length of DER encoding of IA5 STRING
- @param octets The values you want to encode
- @param noctets The number of octets in the string to encode
- @param outlen [out] The length of the DER encoding for the given string
- @return CRYPT_OK if successful
-*/
-int der_length_ia5_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen)
-{
- unsigned long x;
-
- LTC_ARGCHK(outlen != NULL);
- LTC_ARGCHK(octets != NULL);
-
- /* scan string for validity */
- for (x = 0; x < noctets; x++) {
- if (der_ia5_char_encode(octets[x]) == -1) {
- return CRYPT_INVALID_ARG;
- }
- }
-
- if (noctets < 128) {
- /* 16 LL DD DD DD ... */
- *outlen = 2 + noctets;
- } else if (noctets < 256) {
- /* 16 81 LL DD DD DD ... */
- *outlen = 3 + noctets;
- } else if (noctets < 65536UL) {
- /* 16 82 LL LL DD DD DD ... */
- *outlen = 4 + noctets;
- } else if (noctets < 16777216UL) {
- /* 16 83 LL LL LL DD DD DD ... */
- *outlen = 5 + noctets;
- } else {
- return CRYPT_INVALID_ARG;
- }
-
- return CRYPT_OK;
-}
-
-#endif
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/ia5/der_length_ia5_string.c,v $ */
-/* $Revision: 1.3 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_integer.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_length_integer.c
deleted file mode 100644
index 540d205f0..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_integer.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_length_integer.c
- ASN.1 DER, get length of encoding, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-/**
- Gets length of DER encoding of num
- @param num The int to get the size of
- @param outlen [out] The length of the DER encoding for the given integer
- @return CRYPT_OK if successful
-*/
-int der_length_integer(void *num, unsigned long *outlen)
-{
- unsigned long z, len;
- int leading_zero;
-
- LTC_ARGCHK(num != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- if (mp_cmp_d(num, 0) != LTC_MP_LT) {
- /* positive */
-
- /* we only need a leading zero if the msb of the first byte is one */
- if ((mp_count_bits(num) & 7) == 0 || mp_iszero(num) == LTC_MP_YES) {
- leading_zero = 1;
- } else {
- leading_zero = 0;
- }
-
- /* size for bignum */
- z = len = leading_zero + mp_unsigned_bin_size(num);
- } else {
- /* it's negative */
- /* find power of 2 that is a multiple of eight and greater than count bits */
- leading_zero = 0;
- z = mp_count_bits(num);
- z = z + (8 - (z & 7));
- if (((mp_cnt_lsb(num)+1)==mp_count_bits(num)) && ((mp_count_bits(num)&7)==0)) --z;
- len = z = z >> 3;
- }
-
- /* now we need a length */
- if (z < 128) {
- /* short form */
- ++len;
- } else {
- /* long form (relies on z != 0), assumes length bytes < 128 */
- ++len;
-
- while (z) {
- ++len;
- z >>= 8;
- }
- }
-
- /* we need a 0x02 to indicate it's INTEGER */
- ++len;
-
- /* return length */
- *outlen = len;
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/integer/der_length_integer.c,v $ */
-/* $Revision: 1.5 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_object_identifier.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_length_object_identifier.c
deleted file mode 100644
index 94c326f7c..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_object_identifier.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_length_object_identifier.c
- ASN.1 DER, get length of Object Identifier, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-unsigned long der_object_identifier_bits(unsigned long x)
-{
- unsigned long c;
- x &= 0xFFFFFFFF;
- c = 0;
- while (x) {
- ++c;
- x >>= 1;
- }
- return c;
-}
-
-
-/**
- Gets length of DER encoding of Object Identifier
- @param nwords The number of OID words
- @param words The actual OID words to get the size of
- @param outlen [out] The length of the DER encoding for the given string
- @return CRYPT_OK if successful
-*/
-int der_length_object_identifier(unsigned long *words, unsigned long nwords, unsigned long *outlen)
-{
- unsigned long y, z, t, wordbuf;
-
- LTC_ARGCHK(words != NULL);
- LTC_ARGCHK(outlen != NULL);
-
-
- /* must be >= 2 words */
- if (nwords < 2) {
- return CRYPT_INVALID_ARG;
- }
-
- /* word1 = 0,1,2,3 and word2 0..39 */
- if (words[0] > 3 || (words[0] < 2 && words[1] > 39)) {
- return CRYPT_INVALID_ARG;
- }
-
- /* leading word is the first two */
- z = 0;
- wordbuf = words[0] * 40 + words[1];
- for (y = 1; y < nwords; y++) {
- t = der_object_identifier_bits(wordbuf);
- z += t/7 + ((t%7) ? 1 : 0) + (wordbuf == 0 ? 1 : 0);
- if (y < nwords - 1) {
- /* grab next word */
- wordbuf = words[y+1];
- }
- }
-
- /* now depending on the length our length encoding changes */
- if (z < 128) {
- z += 2;
- } else if (z < 256) {
- z += 3;
- } else if (z < 65536UL) {
- z += 4;
- } else {
- return CRYPT_INVALID_ARG;
- }
-
- *outlen = z;
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/object_identifier/der_length_object_identifier.c,v $ */
-/* $Revision: 1.5 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_octet_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_length_octet_string.c
deleted file mode 100644
index acd4053c1..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_octet_string.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_length_octet_string.c
- ASN.1 DER, get length of OCTET STRING, Tom St Denis
-*/
-
-#ifdef LTC_DER
-/**
- Gets length of DER encoding of OCTET STRING
- @param noctets The number of octets in the string to encode
- @param outlen [out] The length of the DER encoding for the given string
- @return CRYPT_OK if successful
-*/
-int der_length_octet_string(unsigned long noctets, unsigned long *outlen)
-{
- LTC_ARGCHK(outlen != NULL);
-
- if (noctets < 128) {
- /* 04 LL DD DD DD ... */
- *outlen = 2 + noctets;
- } else if (noctets < 256) {
- /* 04 81 LL DD DD DD ... */
- *outlen = 3 + noctets;
- } else if (noctets < 65536UL) {
- /* 04 82 LL LL DD DD DD ... */
- *outlen = 4 + noctets;
- } else if (noctets < 16777216UL) {
- /* 04 83 LL LL LL DD DD DD ... */
- *outlen = 5 + noctets;
- } else {
- return CRYPT_INVALID_ARG;
- }
-
- return CRYPT_OK;
-}
-
-#endif
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/octet/der_length_octet_string.c,v $ */
-/* $Revision: 1.3 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_printable_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_length_printable_string.c
deleted file mode 100644
index ef1ed0ede..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_printable_string.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_length_printable_string.c
- ASN.1 DER, get length of Printable STRING, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-static const struct {
- int code, value;
-} printable_table[] = {
-{ ' ', 32 },
-{ '\'', 39 },
-{ '(', 40 },
-{ ')', 41 },
-{ '+', 43 },
-{ ',', 44 },
-{ '-', 45 },
-{ '.', 46 },
-{ '/', 47 },
-{ '0', 48 },
-{ '1', 49 },
-{ '2', 50 },
-{ '3', 51 },
-{ '4', 52 },
-{ '5', 53 },
-{ '6', 54 },
-{ '7', 55 },
-{ '8', 56 },
-{ '9', 57 },
-{ ':', 58 },
-{ '=', 61 },
-{ '?', 63 },
-{ 'A', 65 },
-{ 'B', 66 },
-{ 'C', 67 },
-{ 'D', 68 },
-{ 'E', 69 },
-{ 'F', 70 },
-{ 'G', 71 },
-{ 'H', 72 },
-{ 'I', 73 },
-{ 'J', 74 },
-{ 'K', 75 },
-{ 'L', 76 },
-{ 'M', 77 },
-{ 'N', 78 },
-{ 'O', 79 },
-{ 'P', 80 },
-{ 'Q', 81 },
-{ 'R', 82 },
-{ 'S', 83 },
-{ 'T', 84 },
-{ 'U', 85 },
-{ 'V', 86 },
-{ 'W', 87 },
-{ 'X', 88 },
-{ 'Y', 89 },
-{ 'Z', 90 },
-{ 'a', 97 },
-{ 'b', 98 },
-{ 'c', 99 },
-{ 'd', 100 },
-{ 'e', 101 },
-{ 'f', 102 },
-{ 'g', 103 },
-{ 'h', 104 },
-{ 'i', 105 },
-{ 'j', 106 },
-{ 'k', 107 },
-{ 'l', 108 },
-{ 'm', 109 },
-{ 'n', 110 },
-{ 'o', 111 },
-{ 'p', 112 },
-{ 'q', 113 },
-{ 'r', 114 },
-{ 's', 115 },
-{ 't', 116 },
-{ 'u', 117 },
-{ 'v', 118 },
-{ 'w', 119 },
-{ 'x', 120 },
-{ 'y', 121 },
-{ 'z', 122 },
-};
-
-int der_printable_char_encode(int c)
-{
- int x;
- for (x = 0; x < (int)(sizeof(printable_table)/sizeof(printable_table[0])); x++) {
- if (printable_table[x].code == c) {
- return printable_table[x].value;
- }
- }
- return -1;
-}
-
-int der_printable_value_decode(int v)
-{
- int x;
- for (x = 0; x < (int)(sizeof(printable_table)/sizeof(printable_table[0])); x++) {
- if (printable_table[x].value == v) {
- return printable_table[x].code;
- }
- }
- return -1;
-}
-
-/**
- Gets length of DER encoding of Printable STRING
- @param octets The values you want to encode
- @param noctets The number of octets in the string to encode
- @param outlen [out] The length of the DER encoding for the given string
- @return CRYPT_OK if successful
-*/
-int der_length_printable_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen)
-{
- unsigned long x;
-
- LTC_ARGCHK(outlen != NULL);
- LTC_ARGCHK(octets != NULL);
-
- /* scan string for validity */
- for (x = 0; x < noctets; x++) {
- if (der_printable_char_encode(octets[x]) == -1) {
- return CRYPT_INVALID_ARG;
- }
- }
-
- if (noctets < 128) {
- /* 16 LL DD DD DD ... */
- *outlen = 2 + noctets;
- } else if (noctets < 256) {
- /* 16 81 LL DD DD DD ... */
- *outlen = 3 + noctets;
- } else if (noctets < 65536UL) {
- /* 16 82 LL LL DD DD DD ... */
- *outlen = 4 + noctets;
- } else if (noctets < 16777216UL) {
- /* 16 83 LL LL LL DD DD DD ... */
- *outlen = 5 + noctets;
- } else {
- return CRYPT_INVALID_ARG;
- }
-
- return CRYPT_OK;
-}
-
-#endif
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/printable_string/der_length_printable_string.c,v $ */
-/* $Revision: 1.3 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_sequence.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_length_sequence.c
deleted file mode 100644
index e75ed7e7e..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_sequence.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_length_sequence.c
- ASN.1 DER, length a SEQUENCE, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-/**
- Get the length of a DER sequence
- @param list The sequences of items in the SEQUENCE
- @param inlen The number of items
- @param outlen [out] The length required in octets to store it
- @return CRYPT_OK on success
-*/
-int der_length_sequence(ltc_asn1_list *list, unsigned long inlen,
- unsigned long *outlen)
-{
- int err, type;
- unsigned long size, x, y, z, i;
- void *data;
-
- LTC_ARGCHK(list != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* get size of output that will be required */
- y = 0;
- for (i = 0; i < inlen; i++) {
- type = list[i].type;
- size = list[i].size;
- data = list[i].data;
-
- if (type == LTC_ASN1_EOL) {
- break;
- }
-
- switch (type) {
- case LTC_ASN1_BOOLEAN:
- if ((err = der_length_boolean(&x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_INTEGER:
- if ((err = der_length_integer(data, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_SHORT_INTEGER:
- if ((err = der_length_short_integer(*((unsigned long *)data), &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_BIT_STRING:
- if ((err = der_length_bit_string(size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_OCTET_STRING:
- if ((err = der_length_octet_string(size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_NULL:
- y += 2;
- break;
-
- case LTC_ASN1_OBJECT_IDENTIFIER:
- if ((err = der_length_object_identifier(data, size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_IA5_STRING:
- if ((err = der_length_ia5_string(data, size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_PRINTABLE_STRING:
- if ((err = der_length_printable_string(data, size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_UTCTIME:
- if ((err = der_length_utctime(data, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_UTF8_STRING:
- if ((err = der_length_utf8_string(data, size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
- case LTC_ASN1_SET:
- case LTC_ASN1_SETOF:
- case LTC_ASN1_SEQUENCE:
- if ((err = der_length_sequence(data, size, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- y += x;
- break;
-
-
- default:
- err = CRYPT_INVALID_ARG;
- goto LBL_ERR;
- }
- }
-
- /* calc header size */
- z = y;
- if (y < 128) {
- y += 2;
- } else if (y < 256) {
- /* 0x30 0x81 LL */
- y += 3;
- } else if (y < 65536UL) {
- /* 0x30 0x82 LL LL */
- y += 4;
- } else if (y < 16777216UL) {
- /* 0x30 0x83 LL LL LL */
- y += 5;
- } else {
- err = CRYPT_INVALID_ARG;
- goto LBL_ERR;
- }
-
- /* store size */
- *outlen = y;
- err = CRYPT_OK;
-
-LBL_ERR:
- return err;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/sequence/der_length_sequence.c,v $ */
-/* $Revision: 1.14 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_short_integer.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_length_short_integer.c
deleted file mode 100644
index afa6dd0ee..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_short_integer.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_length_short_integer.c
- ASN.1 DER, get length of encoding, Tom St Denis
-*/
-
-
-#ifdef LTC_DER
-/**
- Gets length of DER encoding of num
- @param num The integer to get the size of
- @param outlen [out] The length of the DER encoding for the given integer
- @return CRYPT_OK if successful
-*/
-int der_length_short_integer(unsigned long num, unsigned long *outlen)
-{
- unsigned long z, y, len;
-
- LTC_ARGCHK(outlen != NULL);
-
- /* force to 32 bits */
- num &= 0xFFFFFFFFUL;
-
- /* get the number of bytes */
- z = 0;
- y = num;
- while (y) {
- ++z;
- y >>= 8;
- }
-
- /* handle zero */
- if (z == 0) {
- z = 1;
- }
-
- /* we need a 0x02 to indicate it's INTEGER */
- len = 1;
-
- /* length byte */
- ++len;
-
- /* bytes in value */
- len += z;
-
- /* see if msb is set */
- len += (num&(1UL<<((z<<3) - 1))) ? 1 : 0;
-
- /* return length */
- *outlen = len;
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/short_integer/der_length_short_integer.c,v $ */
-/* $Revision: 1.6 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_utctime.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_length_utctime.c
deleted file mode 100644
index 1296babba..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_utctime.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_length_utctime.c
- ASN.1 DER, get length of UTCTIME, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-/**
- Gets length of DER encoding of UTCTIME
- @param utctime The UTC time structure to get the size of
- @param outlen [out] The length of the DER encoding
- @return CRYPT_OK if successful
-*/
-int der_length_utctime(ltc_utctime *utctime, unsigned long *outlen)
-{
- LTC_ARGCHK(outlen != NULL);
- LTC_ARGCHK(utctime != NULL);
-
- if (utctime->off_hh == 0 && utctime->off_mm == 0) {
- /* we encode as YYMMDDhhmmssZ */
- *outlen = 2 + 13;
- } else {
- /* we encode as YYMMDDhhmmss{+|-}hh'mm' */
- *outlen = 2 + 17;
- }
-
- return CRYPT_OK;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/utctime/der_length_utctime.c,v $ */
-/* $Revision: 1.5 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_utf8_string.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_length_utf8_string.c
deleted file mode 100644
index 514db8450..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_length_utf8_string.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_length_utf8_string.c
- ASN.1 DER, get length of UTF8 STRING, Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-/** Return the size in bytes of a UTF-8 character
- @param c The UTF-8 character to measure
- @return The size in bytes
-*/
-unsigned long der_utf8_charsize(const wchar_t c)
-{
- if (c <= 0x7F) {
- return 1;
- } else if (c <= 0x7FF) {
- return 2;
- } else if (c <= 0xFFFF) {
- return 3;
- } else {
- return 4;
- }
-}
-
-/**
- Gets length of DER encoding of UTF8 STRING
- @param in The characters to measure the length of
- @param noctets The number of octets in the string to encode
- @param outlen [out] The length of the DER encoding for the given string
- @return CRYPT_OK if successful
-*/
-int der_length_utf8_string(const wchar_t *in, unsigned long noctets, unsigned long *outlen)
-{
- unsigned long x, len;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- len = 0;
- for (x = 0; x < noctets; x++) {
- if (in[x] < 0 || in[x] > 0x10FFFF) {
- return CRYPT_INVALID_ARG;
- }
- len += der_utf8_charsize(in[x]);
- }
-
- if (len < 128) {
- /* 0C LL DD DD DD ... */
- *outlen = 2 + len;
- } else if (len < 256) {
- /* 0C 81 LL DD DD DD ... */
- *outlen = 3 + len;
- } else if (len < 65536UL) {
- /* 0C 82 LL LL DD DD DD ... */
- *outlen = 4 + len;
- } else if (len < 16777216UL) {
- /* 0C 83 LL LL LL DD DD DD ... */
- *outlen = 5 + len;
- } else {
- return CRYPT_INVALID_ARG;
- }
-
- return CRYPT_OK;
-}
-
-#endif
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/utf8/der_length_utf8_string.c,v $ */
-/* $Revision: 1.6 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/asn1/der_sequence_free.c b/StormLib/src/libtomcrypt/src/pk/asn1/der_sequence_free.c
deleted file mode 100644
index 488721539..000000000
--- a/StormLib/src/libtomcrypt/src/pk/asn1/der_sequence_free.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file der_sequence_free.c
- ASN.1 DER, free's a structure allocated by der_decode_sequence_flexi(), Tom St Denis
-*/
-
-#ifdef LTC_DER
-
-/**
- Free memory allocated by der_decode_sequence_flexi()
- @param in The list to free
-*/
-void der_sequence_free(ltc_asn1_list *in)
-{
- ltc_asn1_list *l;
-
- /* walk to the start of the chain */
- while (in->prev != NULL || in->parent != NULL) {
- if (in->parent != NULL) {
- in = in->parent;
- } else {
- in = in->prev;
- }
- }
-
- /* now walk the list and free stuff */
- while (in != NULL) {
- /* is there a child? */
- if (in->child) {
- /* disconnect */
- in->child->parent = NULL;
- der_sequence_free(in->child);
- }
-
- switch (in->type) {
- case LTC_ASN1_SET:
- case LTC_ASN1_SETOF:
- case LTC_ASN1_SEQUENCE: break;
- case LTC_ASN1_INTEGER : if (in->data != NULL) { mp_clear(in->data); } break;
- default : if (in->data != NULL) { XFREE(in->data); }
- }
-
- /* move to next and free current */
- l = in->next;
- free(in);
- in = l;
- }
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/sequence/der_sequence_free.c,v $ */
-/* $Revision: 1.4 $ */
-/* $Date: 2006/12/28 01:27:24 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_map.c b/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_map.c
deleted file mode 100644
index 5a1324c49..000000000
--- a/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_map.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-
-/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b
- *
- * All curves taken from NIST recommendation paper of July 1999
- * Available at http://csrc.nist.gov/cryptval/dss.htm
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file ltc_ecc_map.c
- ECC Crypto, Tom St Denis
-*/
-
-#ifdef LTC_MECC
-
-/**
- Map a projective jacbobian point back to affine space
- @param P [in/out] The point to map
- @param modulus The modulus of the field the ECC curve is in
- @param mp The "b" value from montgomery_setup()
- @return CRYPT_OK on success
-*/
-int ltc_ecc_map(ecc_point *P, void *modulus, void *mp)
-{
- void *t1, *t2;
- int err;
-
- LTC_ARGCHK(P != NULL);
- LTC_ARGCHK(modulus != NULL);
- LTC_ARGCHK(mp != NULL);
-
- if ((err = mp_init_multi(&t1, &t2, NULL)) != CRYPT_OK) {
- return CRYPT_MEM;
- }
-
- /* first map z back to normal */
- if ((err = mp_montgomery_reduce(P->z, modulus, mp)) != CRYPT_OK) { goto done; }
-
- /* get 1/z */
- if ((err = mp_invmod(P->z, modulus, t1)) != CRYPT_OK) { goto done; }
-
- /* get 1/z^2 and 1/z^3 */
- if ((err = mp_sqr(t1, t2)) != CRYPT_OK) { goto done; }
- if ((err = mp_mod(t2, modulus, t2)) != CRYPT_OK) { goto done; }
- if ((err = mp_mul(t1, t2, t1)) != CRYPT_OK) { goto done; }
- if ((err = mp_mod(t1, modulus, t1)) != CRYPT_OK) { goto done; }
-
- /* multiply against x/y */
- if ((err = mp_mul(P->x, t2, P->x)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(P->x, modulus, mp)) != CRYPT_OK) { goto done; }
- if ((err = mp_mul(P->y, t1, P->y)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(P->y, modulus, mp)) != CRYPT_OK) { goto done; }
- if ((err = mp_set(P->z, 1)) != CRYPT_OK) { goto done; }
-
- err = CRYPT_OK;
-done:
- mp_clear_multi(t1, t2, NULL);
- return err;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/ecc/ltc_ecc_map.c,v $ */
-/* $Revision: 1.7 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
-
diff --git a/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c b/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c
deleted file mode 100644
index 2c468eaaf..000000000
--- a/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-
-/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b
- *
- * All curves taken from NIST recommendation paper of July 1999
- * Available at http://csrc.nist.gov/cryptval/dss.htm
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file ltc_ecc_mul2add.c
- ECC Crypto, Shamir's Trick, Tom St Denis
-*/
-
-#ifdef LTC_MECC
-
-#ifdef LTC_ECC_SHAMIR
-
-/** Computes kA*A + kB*B = C using Shamir's Trick
- @param A First point to multiply
- @param kA What to multiple A by
- @param B Second point to multiply
- @param kB What to multiple B by
- @param C [out] Destination point (can overlap with A or B
- @param modulus Modulus for curve
- @return CRYPT_OK on success
-*/
-int ltc_ecc_mul2add(ecc_point *A, void *kA,
- ecc_point *B, void *kB,
- ecc_point *C,
- void *modulus)
-{
- ecc_point *precomp[16];
- unsigned bitbufA, bitbufB, lenA, lenB, len, x, y, nA, nB, nibble;
- unsigned char *tA, *tB;
- int err, first;
- void *mp, *mu;
-
- /* argchks */
- LTC_ARGCHK(A != NULL);
- LTC_ARGCHK(B != NULL);
- LTC_ARGCHK(C != NULL);
- LTC_ARGCHK(kA != NULL);
- LTC_ARGCHK(kB != NULL);
- LTC_ARGCHK(modulus != NULL);
-
- /* allocate memory */
- tA = XCALLOC(1, ECC_BUF_SIZE);
- if (tA == NULL) {
- return CRYPT_MEM;
- }
- tB = XCALLOC(1, ECC_BUF_SIZE);
- if (tB == NULL) {
- XFREE(tA);
- return CRYPT_MEM;
- }
-
- /* get sizes */
- lenA = mp_unsigned_bin_size(kA);
- lenB = mp_unsigned_bin_size(kB);
- len = MAX(lenA, lenB);
-
- /* sanity check */
- if ((lenA > ECC_BUF_SIZE) || (lenB > ECC_BUF_SIZE)) {
- err = CRYPT_INVALID_ARG;
- goto ERR_T;
- }
-
- /* extract and justify kA */
- mp_to_unsigned_bin(kA, (len - lenA) + tA);
-
- /* extract and justify kB */
- mp_to_unsigned_bin(kB, (len - lenB) + tB);
-
- /* allocate the table */
- for (x = 0; x < 16; x++) {
- precomp[x] = ltc_ecc_new_point();
- if (precomp[x] == NULL) {
- for (y = 0; y < x; ++y) {
- ltc_ecc_del_point(precomp[y]);
- }
- err = CRYPT_MEM;
- goto ERR_T;
- }
- }
-
- /* init montgomery reduction */
- if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) {
- goto ERR_P;
- }
- if ((err = mp_init(&mu)) != CRYPT_OK) {
- goto ERR_MP;
- }
- if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) {
- goto ERR_MU;
- }
-
- /* copy ones ... */
- if ((err = mp_mulmod(A->x, mu, modulus, precomp[1]->x)) != CRYPT_OK) { goto ERR_MU; }
- if ((err = mp_mulmod(A->y, mu, modulus, precomp[1]->y)) != CRYPT_OK) { goto ERR_MU; }
- if ((err = mp_mulmod(A->z, mu, modulus, precomp[1]->z)) != CRYPT_OK) { goto ERR_MU; }
-
- if ((err = mp_mulmod(B->x, mu, modulus, precomp[1<<2]->x)) != CRYPT_OK) { goto ERR_MU; }
- if ((err = mp_mulmod(B->y, mu, modulus, precomp[1<<2]->y)) != CRYPT_OK) { goto ERR_MU; }
- if ((err = mp_mulmod(B->z, mu, modulus, precomp[1<<2]->z)) != CRYPT_OK) { goto ERR_MU; }
-
- /* precomp [i,0](A + B) table */
- if ((err = ltc_mp.ecc_ptdbl(precomp[1], precomp[2], modulus, mp)) != CRYPT_OK) { goto ERR_MU; }
- if ((err = ltc_mp.ecc_ptadd(precomp[1], precomp[2], precomp[3], modulus, mp)) != CRYPT_OK) { goto ERR_MU; }
-
- /* precomp [0,i](A + B) table */
- if ((err = ltc_mp.ecc_ptdbl(precomp[1<<2], precomp[2<<2], modulus, mp)) != CRYPT_OK) { goto ERR_MU; }
- if ((err = ltc_mp.ecc_ptadd(precomp[1<<2], precomp[2<<2], precomp[3<<2], modulus, mp)) != CRYPT_OK) { goto ERR_MU; }
-
- /* precomp [i,j](A + B) table (i != 0, j != 0) */
- for (x = 1; x < 4; x++) {
- for (y = 1; y < 4; y++) {
- if ((err = ltc_mp.ecc_ptadd(precomp[x], precomp[(y<<2)], precomp[x+(y<<2)], modulus, mp)) != CRYPT_OK) { goto ERR_MU; }
- }
- }
-
- nibble = 3;
- first = 1;
- bitbufA = tA[0];
- bitbufB = tB[0];
-
- /* for every byte of the multiplicands */
- for (x = -1;; ) {
- /* grab a nibble */
- if (++nibble == 4) {
- ++x; if (x == len) break;
- bitbufA = tA[x];
- bitbufB = tB[x];
- nibble = 0;
- }
-
- /* extract two bits from both, shift/update */
- nA = (bitbufA >> 6) & 0x03;
- nB = (bitbufB >> 6) & 0x03;
- bitbufA = (bitbufA << 2) & 0xFF;
- bitbufB = (bitbufB << 2) & 0xFF;
-
- /* if both zero, if first, continue */
- if ((nA == 0) && (nB == 0) && (first == 1)) {
- continue;
- }
-
- /* double twice, only if this isn't the first */
- if (first == 0) {
- /* double twice */
- if ((err = ltc_mp.ecc_ptdbl(C, C, modulus, mp)) != CRYPT_OK) { goto ERR_MU; }
- if ((err = ltc_mp.ecc_ptdbl(C, C, modulus, mp)) != CRYPT_OK) { goto ERR_MU; }
- }
-
- /* if not both zero */
- if ((nA != 0) || (nB != 0)) {
- if (first == 1) {
- /* if first, copy from table */
- first = 0;
- if ((err = mp_copy(precomp[nA + (nB<<2)]->x, C->x)) != CRYPT_OK) { goto ERR_MU; }
- if ((err = mp_copy(precomp[nA + (nB<<2)]->y, C->y)) != CRYPT_OK) { goto ERR_MU; }
- if ((err = mp_copy(precomp[nA + (nB<<2)]->z, C->z)) != CRYPT_OK) { goto ERR_MU; }
- } else {
- /* if not first, add from table */
- if ((err = ltc_mp.ecc_ptadd(C, precomp[nA + (nB<<2)], C, modulus, mp)) != CRYPT_OK) { goto ERR_MU; }
- }
- }
- }
-
- /* reduce to affine */
- err = ltc_ecc_map(C, modulus, mp);
-
- /* clean up */
-ERR_MU:
- mp_clear(mu);
-ERR_MP:
- mp_montgomery_free(mp);
-ERR_P:
- for (x = 0; x < 16; x++) {
- ltc_ecc_del_point(precomp[x]);
- }
-ERR_T:
-#ifdef LTC_CLEAN_STACK
- zeromem(tA, ECC_BUF_SIZE);
- zeromem(tB, ECC_BUF_SIZE);
-#endif
- XFREE(tA);
- XFREE(tB);
-
- return err;
-}
-
-#endif
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c,v $ */
-/* $Revision: 1.8 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c b/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c
deleted file mode 100644
index f9d0cad83..000000000
--- a/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c
+++ /dev/null
@@ -1,222 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-
-/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b
- *
- * All curves taken from NIST recommendation paper of July 1999
- * Available at http://csrc.nist.gov/cryptval/dss.htm
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file ltc_ecc_mulmod.c
- ECC Crypto, Tom St Denis
-*/
-
-#ifdef LTC_MECC
-#ifndef LTC_ECC_TIMING_RESISTANT
-
-/* size of sliding window, don't change this! */
-#define WINSIZE 4
-
-/**
- Perform a point multiplication
- @param k The scalar to multiply by
- @param G The base point
- @param R [out] Destination for kG
- @param modulus The modulus of the field the ECC curve is in
- @param map Boolean whether to map back to affine or not (1==map, 0 == leave in projective)
- @return CRYPT_OK on success
-*/
-int ltc_ecc_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map)
-{
- ecc_point *tG, *M[8];
- int i, j, err;
- void *mu, *mp;
- unsigned long buf;
- int first, bitbuf, bitcpy, bitcnt, mode, digidx;
-
- LTC_ARGCHK(k != NULL);
- LTC_ARGCHK(G != NULL);
- LTC_ARGCHK(R != NULL);
- LTC_ARGCHK(modulus != NULL);
-
- /* init montgomery reduction */
- if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) {
- return err;
- }
- if ((err = mp_init(&mu)) != CRYPT_OK) {
- mp_montgomery_free(mp);
- return err;
- }
- if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) {
- mp_montgomery_free(mp);
- mp_clear(mu);
- return err;
- }
-
- /* alloc ram for window temps */
- for (i = 0; i < 8; i++) {
- M[i] = ltc_ecc_new_point();
- if (M[i] == NULL) {
- for (j = 0; j < i; j++) {
- ltc_ecc_del_point(M[j]);
- }
- mp_montgomery_free(mp);
- mp_clear(mu);
- return CRYPT_MEM;
- }
- }
-
- /* make a copy of G incase R==G */
- tG = ltc_ecc_new_point();
- if (tG == NULL) { err = CRYPT_MEM; goto done; }
-
- /* tG = G and convert to montgomery */
- if (mp_cmp_d(mu, 1) == LTC_MP_EQ) {
- if ((err = mp_copy(G->x, tG->x)) != CRYPT_OK) { goto done; }
- if ((err = mp_copy(G->y, tG->y)) != CRYPT_OK) { goto done; }
- if ((err = mp_copy(G->z, tG->z)) != CRYPT_OK) { goto done; }
- } else {
- if ((err = mp_mulmod(G->x, mu, modulus, tG->x)) != CRYPT_OK) { goto done; }
- if ((err = mp_mulmod(G->y, mu, modulus, tG->y)) != CRYPT_OK) { goto done; }
- if ((err = mp_mulmod(G->z, mu, modulus, tG->z)) != CRYPT_OK) { goto done; }
- }
- mp_clear(mu);
- mu = NULL;
-
- /* calc the M tab, which holds kG for k==8..15 */
- /* M[0] == 8G */
- if ((err = ltc_mp.ecc_ptdbl(tG, M[0], modulus, mp)) != CRYPT_OK) { goto done; }
- if ((err = ltc_mp.ecc_ptdbl(M[0], M[0], modulus, mp)) != CRYPT_OK) { goto done; }
- if ((err = ltc_mp.ecc_ptdbl(M[0], M[0], modulus, mp)) != CRYPT_OK) { goto done; }
-
- /* now find (8+k)G for k=1..7 */
- for (j = 9; j < 16; j++) {
- if ((err = ltc_mp.ecc_ptadd(M[j-9], tG, M[j-8], modulus, mp)) != CRYPT_OK) { goto done; }
- }
-
- /* setup sliding window */
- mode = 0;
- bitcnt = 1;
- buf = 0;
- digidx = mp_get_digit_count(k) - 1;
- bitcpy = bitbuf = 0;
- first = 1;
-
- /* perform ops */
- for (;;) {
- /* grab next digit as required */
- if (--bitcnt == 0) {
- if (digidx == -1) {
- break;
- }
- buf = mp_get_digit(k, digidx);
- bitcnt = (int) ltc_mp.bits_per_digit;
- --digidx;
- }
-
- /* grab the next msb from the ltiplicand */
- i = (buf >> (ltc_mp.bits_per_digit - 1)) & 1;
- buf <<= 1;
-
- /* skip leading zero bits */
- if (mode == 0 && i == 0) {
- continue;
- }
-
- /* if the bit is zero and mode == 1 then we double */
- if (mode == 1 && i == 0) {
- if ((err = ltc_mp.ecc_ptdbl(R, R, modulus, mp)) != CRYPT_OK) { goto done; }
- continue;
- }
-
- /* else we add it to the window */
- bitbuf |= (i << (WINSIZE - ++bitcpy));
- mode = 2;
-
- if (bitcpy == WINSIZE) {
- /* if this is the first window we do a simple copy */
- if (first == 1) {
- /* R = kG [k = first window] */
- if ((err = mp_copy(M[bitbuf-8]->x, R->x)) != CRYPT_OK) { goto done; }
- if ((err = mp_copy(M[bitbuf-8]->y, R->y)) != CRYPT_OK) { goto done; }
- if ((err = mp_copy(M[bitbuf-8]->z, R->z)) != CRYPT_OK) { goto done; }
- first = 0;
- } else {
- /* normal window */
- /* ok window is filled so double as required and add */
- /* double first */
- for (j = 0; j < WINSIZE; j++) {
- if ((err = ltc_mp.ecc_ptdbl(R, R, modulus, mp)) != CRYPT_OK) { goto done; }
- }
-
- /* then add, bitbuf will be 8..15 [8..2^WINSIZE] guaranteed */
- if ((err = ltc_mp.ecc_ptadd(R, M[bitbuf-8], R, modulus, mp)) != CRYPT_OK) { goto done; }
- }
- /* empty window and reset */
- bitcpy = bitbuf = 0;
- mode = 1;
- }
- }
-
- /* if bits remain then double/add */
- if (mode == 2 && bitcpy > 0) {
- /* double then add */
- for (j = 0; j < bitcpy; j++) {
- /* only double if we have had at least one add first */
- if (first == 0) {
- if ((err = ltc_mp.ecc_ptdbl(R, R, modulus, mp)) != CRYPT_OK) { goto done; }
- }
-
- bitbuf <<= 1;
- if ((bitbuf & (1 << WINSIZE)) != 0) {
- if (first == 1){
- /* first add, so copy */
- if ((err = mp_copy(tG->x, R->x)) != CRYPT_OK) { goto done; }
- if ((err = mp_copy(tG->y, R->y)) != CRYPT_OK) { goto done; }
- if ((err = mp_copy(tG->z, R->z)) != CRYPT_OK) { goto done; }
- first = 0;
- } else {
- /* then add */
- if ((err = ltc_mp.ecc_ptadd(R, tG, R, modulus, mp)) != CRYPT_OK) { goto done; }
- }
- }
- }
- }
-
- /* map R back from projective space */
- if (map) {
- err = ltc_ecc_map(R, modulus, mp);
- } else {
- err = CRYPT_OK;
- }
-done:
- if (mu != NULL) {
- mp_clear(mu);
- }
- mp_montgomery_free(mp);
- ltc_ecc_del_point(tG);
- for (i = 0; i < 8; i++) {
- ltc_ecc_del_point(M[i]);
- }
- return err;
-}
-
-#endif
-
-#undef WINSIZE
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c,v $ */
-/* $Revision: 1.26 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_points.c b/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_points.c
deleted file mode 100644
index f5a4acb4c..000000000
--- a/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_points.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-
-/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b
- *
- * All curves taken from NIST recommendation paper of July 1999
- * Available at http://csrc.nist.gov/cryptval/dss.htm
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file ltc_ecc_points.c
- ECC Crypto, Tom St Denis
-*/
-
-#ifdef LTC_MECC
-
-/**
- Allocate a new ECC point
- @return A newly allocated point or NULL on error
-*/
-ecc_point *ltc_ecc_new_point(void)
-{
- ecc_point *p;
- p = XCALLOC(1, sizeof(*p));
- if (p == NULL) {
- return NULL;
- }
- if (mp_init_multi(&p->x, &p->y, &p->z, NULL) != CRYPT_OK) {
- XFREE(p);
- return NULL;
- }
- return p;
-}
-
-/** Free an ECC point from memory
- @param p The point to free
-*/
-void ltc_ecc_del_point(ecc_point *p)
-{
- /* prevents free'ing null arguments */
- if (p != NULL) {
- mp_clear_multi(p->x, p->y, p->z, NULL); /* note: p->z may be NULL but that's ok with this function anyways */
- XFREE(p);
- }
-}
-
-#endif
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/ecc/ltc_ecc_points.c,v $ */
-/* $Revision: 1.7 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
-
diff --git a/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c b/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c
deleted file mode 100644
index b4416fc77..000000000
--- a/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-
-/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b
- *
- * All curves taken from NIST recommendation paper of July 1999
- * Available at http://csrc.nist.gov/cryptval/dss.htm
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file ltc_ecc_projective_add_point.c
- ECC Crypto, Tom St Denis
-*/
-
-#if defined(LTC_MECC) && (!defined(LTC_MECC_ACCEL) || defined(LTM_LTC_DESC))
-
-/**
- Add two ECC points
- @param P The point to add
- @param Q The point to add
- @param R [out] The destination of the double
- @param modulus The modulus of the field the ECC curve is in
- @param mp The "b" value from montgomery_setup()
- @return CRYPT_OK on success
-*/
-int ltc_ecc_projective_add_point(ecc_point *P, ecc_point *Q, ecc_point *R, void *modulus, void *mp)
-{
- void *t1, *t2, *x, *y, *z;
- int err;
-
- LTC_ARGCHK(P != NULL);
- LTC_ARGCHK(Q != NULL);
- LTC_ARGCHK(R != NULL);
- LTC_ARGCHK(modulus != NULL);
- LTC_ARGCHK(mp != NULL);
-
- if ((err = mp_init_multi(&t1, &t2, &x, &y, &z, NULL)) != CRYPT_OK) {
- return err;
- }
-
- /* should we dbl instead? */
- if ((err = mp_sub(modulus, Q->y, t1)) != CRYPT_OK) { goto done; }
-
- if ( (mp_cmp(P->x, Q->x) == LTC_MP_EQ) &&
- (Q->z != NULL && mp_cmp(P->z, Q->z) == LTC_MP_EQ) &&
- (mp_cmp(P->y, Q->y) == LTC_MP_EQ || mp_cmp(P->y, t1) == LTC_MP_EQ)) {
- mp_clear_multi(t1, t2, x, y, z, NULL);
- return ltc_ecc_projective_dbl_point(P, R, modulus, mp);
- }
-
- if ((err = mp_copy(P->x, x)) != CRYPT_OK) { goto done; }
- if ((err = mp_copy(P->y, y)) != CRYPT_OK) { goto done; }
- if ((err = mp_copy(P->z, z)) != CRYPT_OK) { goto done; }
-
- /* if Z is one then these are no-operations */
- if (Q->z != NULL) {
- /* T1 = Z' * Z' */
- if ((err = mp_sqr(Q->z, t1)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; }
- /* X = X * T1 */
- if ((err = mp_mul(t1, x, x)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(x, modulus, mp)) != CRYPT_OK) { goto done; }
- /* T1 = Z' * T1 */
- if ((err = mp_mul(Q->z, t1, t1)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; }
- /* Y = Y * T1 */
- if ((err = mp_mul(t1, y, y)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(y, modulus, mp)) != CRYPT_OK) { goto done; }
- }
-
- /* T1 = Z*Z */
- if ((err = mp_sqr(z, t1)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; }
- /* T2 = X' * T1 */
- if ((err = mp_mul(Q->x, t1, t2)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; }
- /* T1 = Z * T1 */
- if ((err = mp_mul(z, t1, t1)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; }
- /* T1 = Y' * T1 */
- if ((err = mp_mul(Q->y, t1, t1)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; }
-
- /* Y = Y - T1 */
- if ((err = mp_sub(y, t1, y)) != CRYPT_OK) { goto done; }
- if (mp_cmp_d(y, 0) == LTC_MP_LT) {
- if ((err = mp_add(y, modulus, y)) != CRYPT_OK) { goto done; }
- }
- /* T1 = 2T1 */
- if ((err = mp_add(t1, t1, t1)) != CRYPT_OK) { goto done; }
- if (mp_cmp(t1, modulus) != LTC_MP_LT) {
- if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; }
- }
- /* T1 = Y + T1 */
- if ((err = mp_add(t1, y, t1)) != CRYPT_OK) { goto done; }
- if (mp_cmp(t1, modulus) != LTC_MP_LT) {
- if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; }
- }
- /* X = X - T2 */
- if ((err = mp_sub(x, t2, x)) != CRYPT_OK) { goto done; }
- if (mp_cmp_d(x, 0) == LTC_MP_LT) {
- if ((err = mp_add(x, modulus, x)) != CRYPT_OK) { goto done; }
- }
- /* T2 = 2T2 */
- if ((err = mp_add(t2, t2, t2)) != CRYPT_OK) { goto done; }
- if (mp_cmp(t2, modulus) != LTC_MP_LT) {
- if ((err = mp_sub(t2, modulus, t2)) != CRYPT_OK) { goto done; }
- }
- /* T2 = X + T2 */
- if ((err = mp_add(t2, x, t2)) != CRYPT_OK) { goto done; }
- if (mp_cmp(t2, modulus) != LTC_MP_LT) {
- if ((err = mp_sub(t2, modulus, t2)) != CRYPT_OK) { goto done; }
- }
-
- /* if Z' != 1 */
- if (Q->z != NULL) {
- /* Z = Z * Z' */
- if ((err = mp_mul(z, Q->z, z)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(z, modulus, mp)) != CRYPT_OK) { goto done; }
- }
-
- /* Z = Z * X */
- if ((err = mp_mul(z, x, z)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(z, modulus, mp)) != CRYPT_OK) { goto done; }
-
- /* T1 = T1 * X */
- if ((err = mp_mul(t1, x, t1)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; }
- /* X = X * X */
- if ((err = mp_sqr(x, x)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(x, modulus, mp)) != CRYPT_OK) { goto done; }
- /* T2 = T2 * x */
- if ((err = mp_mul(t2, x, t2)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; }
- /* T1 = T1 * X */
- if ((err = mp_mul(t1, x, t1)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; }
-
- /* X = Y*Y */
- if ((err = mp_sqr(y, x)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(x, modulus, mp)) != CRYPT_OK) { goto done; }
- /* X = X - T2 */
- if ((err = mp_sub(x, t2, x)) != CRYPT_OK) { goto done; }
- if (mp_cmp_d(x, 0) == LTC_MP_LT) {
- if ((err = mp_add(x, modulus, x)) != CRYPT_OK) { goto done; }
- }
-
- /* T2 = T2 - X */
- if ((err = mp_sub(t2, x, t2)) != CRYPT_OK) { goto done; }
- if (mp_cmp_d(t2, 0) == LTC_MP_LT) {
- if ((err = mp_add(t2, modulus, t2)) != CRYPT_OK) { goto done; }
- }
- /* T2 = T2 - X */
- if ((err = mp_sub(t2, x, t2)) != CRYPT_OK) { goto done; }
- if (mp_cmp_d(t2, 0) == LTC_MP_LT) {
- if ((err = mp_add(t2, modulus, t2)) != CRYPT_OK) { goto done; }
- }
- /* T2 = T2 * Y */
- if ((err = mp_mul(t2, y, t2)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; }
- /* Y = T2 - T1 */
- if ((err = mp_sub(t2, t1, y)) != CRYPT_OK) { goto done; }
- if (mp_cmp_d(y, 0) == LTC_MP_LT) {
- if ((err = mp_add(y, modulus, y)) != CRYPT_OK) { goto done; }
- }
- /* Y = Y/2 */
- if (mp_isodd(y)) {
- if ((err = mp_add(y, modulus, y)) != CRYPT_OK) { goto done; }
- }
- if ((err = mp_div_2(y, y)) != CRYPT_OK) { goto done; }
-
- if ((err = mp_copy(x, R->x)) != CRYPT_OK) { goto done; }
- if ((err = mp_copy(y, R->y)) != CRYPT_OK) { goto done; }
- if ((err = mp_copy(z, R->z)) != CRYPT_OK) { goto done; }
-
- err = CRYPT_OK;
-done:
- mp_clear_multi(t1, t2, x, y, z, NULL);
- return err;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c,v $ */
-/* $Revision: 1.16 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
-
diff --git a/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c b/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c
deleted file mode 100644
index b990e0a14..000000000
--- a/StormLib/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-
-/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b
- *
- * All curves taken from NIST recommendation paper of July 1999
- * Available at http://csrc.nist.gov/cryptval/dss.htm
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file ltc_ecc_projective_dbl_point.c
- ECC Crypto, Tom St Denis
-*/
-
-#if defined(LTC_MECC) && (!defined(LTC_MECC_ACCEL) || defined(LTM_LTC_DESC))
-
-/**
- Double an ECC point
- @param P The point to double
- @param R [out] The destination of the double
- @param modulus The modulus of the field the ECC curve is in
- @param mp The "b" value from montgomery_setup()
- @return CRYPT_OK on success
-*/
-int ltc_ecc_projective_dbl_point(ecc_point *P, ecc_point *R, void *modulus, void *mp)
-{
- void *t1, *t2;
- int err;
-
- LTC_ARGCHK(P != NULL);
- LTC_ARGCHK(R != NULL);
- LTC_ARGCHK(modulus != NULL);
- LTC_ARGCHK(mp != NULL);
-
- if ((err = mp_init_multi(&t1, &t2, NULL)) != CRYPT_OK) {
- return err;
- }
-
- if (P != R) {
- if ((err = mp_copy(P->x, R->x)) != CRYPT_OK) { goto done; }
- if ((err = mp_copy(P->y, R->y)) != CRYPT_OK) { goto done; }
- if ((err = mp_copy(P->z, R->z)) != CRYPT_OK) { goto done; }
- }
-
- /* t1 = Z * Z */
- if ((err = mp_sqr(R->z, t1)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; }
- /* Z = Y * Z */
- if ((err = mp_mul(R->z, R->y, R->z)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(R->z, modulus, mp)) != CRYPT_OK) { goto done; }
- /* Z = 2Z */
- if ((err = mp_add(R->z, R->z, R->z)) != CRYPT_OK) { goto done; }
- if (mp_cmp(R->z, modulus) != LTC_MP_LT) {
- if ((err = mp_sub(R->z, modulus, R->z)) != CRYPT_OK) { goto done; }
- }
-
- /* T2 = X - T1 */
- if ((err = mp_sub(R->x, t1, t2)) != CRYPT_OK) { goto done; }
- if (mp_cmp_d(t2, 0) == LTC_MP_LT) {
- if ((err = mp_add(t2, modulus, t2)) != CRYPT_OK) { goto done; }
- }
- /* T1 = X + T1 */
- if ((err = mp_add(t1, R->x, t1)) != CRYPT_OK) { goto done; }
- if (mp_cmp(t1, modulus) != LTC_MP_LT) {
- if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; }
- }
- /* T2 = T1 * T2 */
- if ((err = mp_mul(t1, t2, t2)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; }
- /* T1 = 2T2 */
- if ((err = mp_add(t2, t2, t1)) != CRYPT_OK) { goto done; }
- if (mp_cmp(t1, modulus) != LTC_MP_LT) {
- if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; }
- }
- /* T1 = T1 + T2 */
- if ((err = mp_add(t1, t2, t1)) != CRYPT_OK) { goto done; }
- if (mp_cmp(t1, modulus) != LTC_MP_LT) {
- if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; }
- }
-
- /* Y = 2Y */
- if ((err = mp_add(R->y, R->y, R->y)) != CRYPT_OK) { goto done; }
- if (mp_cmp(R->y, modulus) != LTC_MP_LT) {
- if ((err = mp_sub(R->y, modulus, R->y)) != CRYPT_OK) { goto done; }
- }
- /* Y = Y * Y */
- if ((err = mp_sqr(R->y, R->y)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(R->y, modulus, mp)) != CRYPT_OK) { goto done; }
- /* T2 = Y * Y */
- if ((err = mp_sqr(R->y, t2)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; }
- /* T2 = T2/2 */
- if (mp_isodd(t2)) {
- if ((err = mp_add(t2, modulus, t2)) != CRYPT_OK) { goto done; }
- }
- if ((err = mp_div_2(t2, t2)) != CRYPT_OK) { goto done; }
- /* Y = Y * X */
- if ((err = mp_mul(R->y, R->x, R->y)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(R->y, modulus, mp)) != CRYPT_OK) { goto done; }
-
- /* X = T1 * T1 */
- if ((err = mp_sqr(t1, R->x)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(R->x, modulus, mp)) != CRYPT_OK) { goto done; }
- /* X = X - Y */
- if ((err = mp_sub(R->x, R->y, R->x)) != CRYPT_OK) { goto done; }
- if (mp_cmp_d(R->x, 0) == LTC_MP_LT) {
- if ((err = mp_add(R->x, modulus, R->x)) != CRYPT_OK) { goto done; }
- }
- /* X = X - Y */
- if ((err = mp_sub(R->x, R->y, R->x)) != CRYPT_OK) { goto done; }
- if (mp_cmp_d(R->x, 0) == LTC_MP_LT) {
- if ((err = mp_add(R->x, modulus, R->x)) != CRYPT_OK) { goto done; }
- }
-
- /* Y = Y - X */
- if ((err = mp_sub(R->y, R->x, R->y)) != CRYPT_OK) { goto done; }
- if (mp_cmp_d(R->y, 0) == LTC_MP_LT) {
- if ((err = mp_add(R->y, modulus, R->y)) != CRYPT_OK) { goto done; }
- }
- /* Y = Y * T1 */
- if ((err = mp_mul(R->y, t1, R->y)) != CRYPT_OK) { goto done; }
- if ((err = mp_montgomery_reduce(R->y, modulus, mp)) != CRYPT_OK) { goto done; }
- /* Y = Y - T2 */
- if ((err = mp_sub(R->y, t2, R->y)) != CRYPT_OK) { goto done; }
- if (mp_cmp_d(R->y, 0) == LTC_MP_LT) {
- if ((err = mp_add(R->y, modulus, R->y)) != CRYPT_OK) { goto done; }
- }
-
- err = CRYPT_OK;
-done:
- mp_clear_multi(t1, t2, NULL);
- return err;
-}
-#endif
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c,v $ */
-/* $Revision: 1.11 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
-
diff --git a/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c b/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c
deleted file mode 100644
index e8f641806..000000000
--- a/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file pkcs_1_mgf1.c
- The Mask Generation Function (MGF1) for LTC_PKCS #1, Tom St Denis
-*/
-
-#ifdef LTC_PKCS_1
-
-/**
- Perform LTC_PKCS #1 MGF1 (internal)
- @param seed The seed for MGF1
- @param seedlen The length of the seed
- @param hash_idx The index of the hash desired
- @param mask [out] The destination
- @param masklen The length of the mask desired
- @return CRYPT_OK if successful
-*/
-int pkcs_1_mgf1(int hash_idx,
- const unsigned char *seed, unsigned long seedlen,
- unsigned char *mask, unsigned long masklen)
-{
- unsigned long hLen, x;
- ulong32 counter;
- int err;
- hash_state *md;
- unsigned char *buf;
-
- LTC_ARGCHK(seed != NULL);
- LTC_ARGCHK(mask != NULL);
-
- /* ensure valid hash */
- if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) {
- return err;
- }
-
- /* get hash output size */
- hLen = hash_descriptor[hash_idx].hashsize;
-
- /* allocate memory */
- md = XMALLOC(sizeof(hash_state));
- buf = XMALLOC(hLen);
- if (md == NULL || buf == NULL) {
- if (md != NULL) {
- XFREE(md);
- }
- if (buf != NULL) {
- XFREE(buf);
- }
- return CRYPT_MEM;
- }
-
- /* start counter */
- counter = 0;
-
- while (masklen > 0) {
- /* handle counter */
- STORE32H(counter, buf);
- ++counter;
-
- /* get hash of seed || counter */
- if ((err = hash_descriptor[hash_idx].init(md)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- if ((err = hash_descriptor[hash_idx].process(md, seed, seedlen)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- if ((err = hash_descriptor[hash_idx].process(md, buf, 4)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- if ((err = hash_descriptor[hash_idx].done(md, buf)) != CRYPT_OK) {
- goto LBL_ERR;
- }
-
- /* store it */
- for (x = 0; x < hLen && masklen > 0; x++, masklen--) {
- *mask++ = buf[x];
- }
- }
-
- err = CRYPT_OK;
-LBL_ERR:
-#ifdef LTC_CLEAN_STACK
- zeromem(buf, hLen);
- zeromem(md, sizeof(hash_state));
-#endif
-
- XFREE(buf);
- XFREE(md);
-
- return err;
-}
-
-#endif /* LTC_PKCS_1 */
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c,v $ */
-/* $Revision: 1.8 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c b/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c
deleted file mode 100644
index 709ab8a8c..000000000
--- a/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file pkcs_1_oaep_decode.c
- OAEP Padding for LTC_PKCS #1, Tom St Denis
-*/
-
-#ifdef LTC_PKCS_1
-
-/**
- LTC_PKCS #1 v2.00 OAEP decode
- @param msg The encoded data to decode
- @param msglen The length of the encoded data (octets)
- @param lparam The session or system data (can be NULL)
- @param lparamlen The length of the lparam
- @param modulus_bitlen The bit length of the RSA modulus
- @param hash_idx The index of the hash desired
- @param out [out] Destination of decoding
- @param outlen [in/out] The max size and resulting size of the decoding
- @param res [out] Result of decoding, 1==valid, 0==invalid
- @return CRYPT_OK if successful (even if invalid)
-*/
-int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen,
- const unsigned char *lparam, unsigned long lparamlen,
- unsigned long modulus_bitlen, int hash_idx,
- unsigned char *out, unsigned long *outlen,
- int *res)
-{
- unsigned char *DB, *seed, *mask;
- unsigned long hLen, x, y, modulus_len;
- int err;
-
- LTC_ARGCHK(msg != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
- LTC_ARGCHK(res != NULL);
-
- /* default to invalid packet */
- *res = 0;
-
- /* test valid hash */
- if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) {
- return err;
- }
- hLen = hash_descriptor[hash_idx].hashsize;
- modulus_len = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0);
-
- /* test hash/message size */
- if ((2*hLen >= (modulus_len - 2)) || (msglen != modulus_len)) {
- return CRYPT_PK_INVALID_SIZE;
- }
-
- /* allocate ram for DB/mask/salt of size modulus_len */
- DB = XMALLOC(modulus_len);
- mask = XMALLOC(modulus_len);
- seed = XMALLOC(hLen);
- if (DB == NULL || mask == NULL || seed == NULL) {
- if (DB != NULL) {
- XFREE(DB);
- }
- if (mask != NULL) {
- XFREE(mask);
- }
- if (seed != NULL) {
- XFREE(seed);
- }
- return CRYPT_MEM;
- }
-
- /* ok so it's now in the form
-
- 0x00 || maskedseed || maskedDB
-
- 1 || hLen || modulus_len - hLen - 1
-
- */
-
- /* must have leading 0x00 byte */
- if (msg[0] != 0x00) {
- err = CRYPT_OK;
- goto LBL_ERR;
- }
-
- /* now read the masked seed */
- x = 1;
- XMEMCPY(seed, msg + x, hLen);
- x += hLen;
-
- /* now read the masked DB */
- XMEMCPY(DB, msg + x, modulus_len - hLen - 1);
- x += modulus_len - hLen - 1;
-
- /* compute MGF1 of maskedDB (hLen) */
- if ((err = pkcs_1_mgf1(hash_idx, DB, modulus_len - hLen - 1, mask, hLen)) != CRYPT_OK) {
- goto LBL_ERR;
- }
-
- /* XOR against seed */
- for (y = 0; y < hLen; y++) {
- seed[y] ^= mask[y];
- }
-
- /* compute MGF1 of seed (k - hlen - 1) */
- if ((err = pkcs_1_mgf1(hash_idx, seed, hLen, mask, modulus_len - hLen - 1)) != CRYPT_OK) {
- goto LBL_ERR;
- }
-
- /* xor against DB */
- for (y = 0; y < (modulus_len - hLen - 1); y++) {
- DB[y] ^= mask[y];
- }
-
- /* now DB == lhash || PS || 0x01 || M, PS == k - mlen - 2hlen - 2 zeroes */
-
- /* compute lhash and store it in seed [reuse temps!] */
- x = modulus_len;
- if (lparam != NULL) {
- if ((err = hash_memory(hash_idx, lparam, lparamlen, seed, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- } else {
- /* can't pass hash_memory a NULL so use DB with zero length */
- if ((err = hash_memory(hash_idx, DB, 0, seed, &x)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- }
-
- /* compare the lhash'es */
- if (XMEMCMP(seed, DB, hLen) != 0) {
- err = CRYPT_OK;
- goto LBL_ERR;
- }
-
- /* now zeroes before a 0x01 */
- for (x = hLen; x < (modulus_len - hLen - 1) && DB[x] == 0x00; x++) {
- /* step... */
- }
-
- /* error out if wasn't 0x01 */
- if (x == (modulus_len - hLen - 1) || DB[x] != 0x01) {
- err = CRYPT_INVALID_PACKET;
- goto LBL_ERR;
- }
-
- /* rest is the message (and skip 0x01) */
- if ((modulus_len - hLen - 1 - ++x) > *outlen) {
- *outlen = modulus_len - hLen - 1 - x;
- err = CRYPT_BUFFER_OVERFLOW;
- goto LBL_ERR;
- }
-
- /* copy message */
- *outlen = modulus_len - hLen - 1 - x;
- XMEMCPY(out, DB + x, modulus_len - hLen - 1 - x);
- x += modulus_len - hLen - 1;
-
- /* valid packet */
- *res = 1;
-
- err = CRYPT_OK;
-LBL_ERR:
-#ifdef LTC_CLEAN_STACK
- zeromem(DB, modulus_len);
- zeromem(seed, hLen);
- zeromem(mask, modulus_len);
-#endif
-
- XFREE(seed);
- XFREE(mask);
- XFREE(DB);
-
- return err;
-}
-
-#endif /* LTC_PKCS_1 */
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c,v $ */
-/* $Revision: 1.13 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c b/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c
deleted file mode 100644
index c3a7211ef..000000000
--- a/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file pkcs_1_pss_decode.c
- LTC_PKCS #1 PSS Signature Padding, Tom St Denis
-*/
-
-#ifdef LTC_PKCS_1
-
-/**
- LTC_PKCS #1 v2.00 PSS decode
- @param msghash The hash to verify
- @param msghashlen The length of the hash (octets)
- @param sig The signature data (encoded data)
- @param siglen The length of the signature data (octets)
- @param saltlen The length of the salt used (octets)
- @param hash_idx The index of the hash desired
- @param modulus_bitlen The bit length of the RSA modulus
- @param res [out] The result of the comparison, 1==valid, 0==invalid
- @return CRYPT_OK if successful (even if the comparison failed)
-*/
-int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen,
- const unsigned char *sig, unsigned long siglen,
- unsigned long saltlen, int hash_idx,
- unsigned long modulus_bitlen, int *res)
-{
- unsigned char *DB, *mask, *salt, *hash;
- unsigned long x, y, hLen, modulus_len;
- int err;
- hash_state md;
-
- LTC_ARGCHK(msghash != NULL);
- LTC_ARGCHK(res != NULL);
-
- /* default to invalid */
- *res = 0;
-
- /* ensure hash is valid */
- if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) {
- return err;
- }
-
- hLen = hash_descriptor[hash_idx].hashsize;
- modulus_len = (modulus_bitlen>>3) + (modulus_bitlen & 7 ? 1 : 0);
-
- /* check sizes */
- if ((saltlen > modulus_len) ||
- (modulus_len < hLen + saltlen + 2) || (siglen != modulus_len)) {
- return CRYPT_PK_INVALID_SIZE;
- }
-
- /* allocate ram for DB/mask/salt/hash of size modulus_len */
- DB = XMALLOC(modulus_len);
- mask = XMALLOC(modulus_len);
- salt = XMALLOC(modulus_len);
- hash = XMALLOC(modulus_len);
- if (DB == NULL || mask == NULL || salt == NULL || hash == NULL) {
- if (DB != NULL) {
- XFREE(DB);
- }
- if (mask != NULL) {
- XFREE(mask);
- }
- if (salt != NULL) {
- XFREE(salt);
- }
- if (hash != NULL) {
- XFREE(hash);
- }
- return CRYPT_MEM;
- }
-
- /* ensure the 0xBC byte */
- if (sig[siglen-1] != 0xBC) {
- err = CRYPT_INVALID_PACKET;
- goto LBL_ERR;
- }
-
- /* copy out the DB */
- x = 0;
- XMEMCPY(DB, sig + x, modulus_len - hLen - 1);
- x += modulus_len - hLen - 1;
-
- /* copy out the hash */
- XMEMCPY(hash, sig + x, hLen);
- x += hLen;
-
- /* check the MSB */
- if ((sig[0] & ~(0xFF >> ((modulus_len<<3) - (modulus_bitlen-1)))) != 0) {
- err = CRYPT_INVALID_PACKET;
- goto LBL_ERR;
- }
-
- /* generate mask of length modulus_len - hLen - 1 from hash */
- if ((err = pkcs_1_mgf1(hash_idx, hash, hLen, mask, modulus_len - hLen - 1)) != CRYPT_OK) {
- goto LBL_ERR;
- }
-
- /* xor against DB */
- for (y = 0; y < (modulus_len - hLen - 1); y++) {
- DB[y] ^= mask[y];
- }
-
- /* now clear the first byte [make sure smaller than modulus] */
- DB[0] &= 0xFF >> ((modulus_len<<3) - (modulus_bitlen-1));
-
- /* DB = PS || 0x01 || salt, PS == modulus_len - saltlen - hLen - 2 zero bytes */
-
- /* check for zeroes and 0x01 */
- for (x = 0; x < modulus_len - saltlen - hLen - 2; x++) {
- if (DB[x] != 0x00) {
- err = CRYPT_INVALID_PACKET;
- goto LBL_ERR;
- }
- }
-
- /* check for the 0x01 */
- if (DB[x++] != 0x01) {
- err = CRYPT_INVALID_PACKET;
- goto LBL_ERR;
- }
-
- /* M = (eight) 0x00 || msghash || salt, mask = H(M) */
- if ((err = hash_descriptor[hash_idx].init(&md)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- zeromem(mask, 8);
- if ((err = hash_descriptor[hash_idx].process(&md, mask, 8)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- if ((err = hash_descriptor[hash_idx].process(&md, msghash, msghashlen)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- if ((err = hash_descriptor[hash_idx].process(&md, DB+x, saltlen)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- if ((err = hash_descriptor[hash_idx].done(&md, mask)) != CRYPT_OK) {
- goto LBL_ERR;
- }
-
- /* mask == hash means valid signature */
- if (XMEMCMP(mask, hash, hLen) == 0) {
- *res = 1;
- }
-
- err = CRYPT_OK;
-LBL_ERR:
-#ifdef LTC_CLEAN_STACK
- zeromem(DB, modulus_len);
- zeromem(mask, modulus_len);
- zeromem(salt, modulus_len);
- zeromem(hash, modulus_len);
-#endif
-
- XFREE(hash);
- XFREE(salt);
- XFREE(mask);
- XFREE(DB);
-
- return err;
-}
-
-#endif /* LTC_PKCS_1 */
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c,v $ */
-/* $Revision: 1.11 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c b/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c
deleted file mode 100644
index 68d5e8615..000000000
--- a/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file pkcs_1_pss_encode.c
- LTC_PKCS #1 PSS Signature Padding, Tom St Denis
-*/
-
-#ifdef LTC_PKCS_1
-
-/**
- LTC_PKCS #1 v2.00 Signature Encoding
- @param msghash The hash to encode
- @param msghashlen The length of the hash (octets)
- @param saltlen The length of the salt desired (octets)
- @param prng An active PRNG context
- @param prng_idx The index of the PRNG desired
- @param hash_idx The index of the hash desired
- @param modulus_bitlen The bit length of the RSA modulus
- @param out [out] The destination of the encoding
- @param outlen [in/out] The max size and resulting size of the encoded data
- @return CRYPT_OK if successful
-*/
-int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen,
- unsigned long saltlen, prng_state *prng,
- int prng_idx, int hash_idx,
- unsigned long modulus_bitlen,
- unsigned char *out, unsigned long *outlen)
-{
- unsigned char *DB, *mask, *salt, *hash;
- unsigned long x, y, hLen, modulus_len;
- int err;
- hash_state md;
-
- LTC_ARGCHK(msghash != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
-
- /* ensure hash and PRNG are valid */
- if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) {
- return err;
- }
- if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) {
- return err;
- }
-
- hLen = hash_descriptor[hash_idx].hashsize;
- modulus_len = (modulus_bitlen>>3) + (modulus_bitlen & 7 ? 1 : 0);
-
- /* check sizes */
- if ((saltlen > modulus_len) || (modulus_len < hLen + saltlen + 2)) {
- return CRYPT_PK_INVALID_SIZE;
- }
-
- /* allocate ram for DB/mask/salt/hash of size modulus_len */
- DB = XMALLOC(modulus_len);
- mask = XMALLOC(modulus_len);
- salt = XMALLOC(modulus_len);
- hash = XMALLOC(modulus_len);
- if (DB == NULL || mask == NULL || salt == NULL || hash == NULL) {
- if (DB != NULL) {
- XFREE(DB);
- }
- if (mask != NULL) {
- XFREE(mask);
- }
- if (salt != NULL) {
- XFREE(salt);
- }
- if (hash != NULL) {
- XFREE(hash);
- }
- return CRYPT_MEM;
- }
-
-
- /* generate random salt */
- if (saltlen > 0) {
- if (prng_descriptor[prng_idx].read(salt, saltlen, prng) != saltlen) {
- err = CRYPT_ERROR_READPRNG;
- goto LBL_ERR;
- }
- }
-
- /* M = (eight) 0x00 || msghash || salt, hash = H(M) */
- if ((err = hash_descriptor[hash_idx].init(&md)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- zeromem(DB, 8);
- if ((err = hash_descriptor[hash_idx].process(&md, DB, 8)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- if ((err = hash_descriptor[hash_idx].process(&md, msghash, msghashlen)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- if ((err = hash_descriptor[hash_idx].process(&md, salt, saltlen)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- if ((err = hash_descriptor[hash_idx].done(&md, hash)) != CRYPT_OK) {
- goto LBL_ERR;
- }
-
- /* generate DB = PS || 0x01 || salt, PS == modulus_len - saltlen - hLen - 2 zero bytes */
- x = 0;
- XMEMSET(DB + x, 0, modulus_len - saltlen - hLen - 2);
- x += modulus_len - saltlen - hLen - 2;
- DB[x++] = 0x01;
- XMEMCPY(DB + x, salt, saltlen);
- x += saltlen;
-
- /* generate mask of length modulus_len - hLen - 1 from hash */
- if ((err = pkcs_1_mgf1(hash_idx, hash, hLen, mask, modulus_len - hLen - 1)) != CRYPT_OK) {
- goto LBL_ERR;
- }
-
- /* xor against DB */
- for (y = 0; y < (modulus_len - hLen - 1); y++) {
- DB[y] ^= mask[y];
- }
-
- /* output is DB || hash || 0xBC */
- if (*outlen < modulus_len) {
- *outlen = modulus_len;
- err = CRYPT_BUFFER_OVERFLOW;
- goto LBL_ERR;
- }
-
- /* DB len = modulus_len - hLen - 1 */
- y = 0;
- XMEMCPY(out + y, DB, modulus_len - hLen - 1);
- y += modulus_len - hLen - 1;
-
- /* hash */
- XMEMCPY(out + y, hash, hLen);
- y += hLen;
-
- /* 0xBC */
- out[y] = 0xBC;
-
- /* now clear the 8*modulus_len - modulus_bitlen most significant bits */
- out[0] &= 0xFF >> ((modulus_len<<3) - (modulus_bitlen-1));
-
- /* store output size */
- *outlen = modulus_len;
- err = CRYPT_OK;
-LBL_ERR:
-#ifdef LTC_CLEAN_STACK
- zeromem(DB, modulus_len);
- zeromem(mask, modulus_len);
- zeromem(salt, modulus_len);
- zeromem(hash, modulus_len);
-#endif
-
- XFREE(hash);
- XFREE(salt);
- XFREE(mask);
- XFREE(DB);
-
- return err;
-}
-
-#endif /* LTC_PKCS_1 */
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c,v $ */
-/* $Revision: 1.9 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c b/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c
deleted file mode 100644
index 7c3711c17..000000000
--- a/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/** @file pkcs_1_v1_5_decode.c
- *
- * LTC_PKCS #1 v1.5 Padding. (Andreas Lange)
- */
-
-#ifdef LTC_PKCS_1
-
-/** @brief LTC_PKCS #1 v1.5 decode.
- *
- * @param msg The encoded data to decode
- * @param msglen The length of the encoded data (octets)
- * @param block_type Block type to use in padding (\sa ltc_pkcs_1_v1_5_blocks)
- * @param modulus_bitlen The bit length of the RSA modulus
- * @param out [out] Destination of decoding
- * @param outlen [in/out] The max size and resulting size of the decoding
- * @param is_valid [out] Boolean whether the padding was valid
- *
- * @return CRYPT_OK if successful (even if invalid)
- */
-int pkcs_1_v1_5_decode(const unsigned char *msg,
- unsigned long msglen,
- int block_type,
- unsigned long modulus_bitlen,
- unsigned char *out,
- unsigned long *outlen,
- int *is_valid)
-{
- unsigned long modulus_len, ps_len, i;
- int result;
-
- /* default to invalid packet */
- *is_valid = 0;
-
- modulus_len = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0);
-
- /* test message size */
-
- if ((msglen > modulus_len) || (modulus_len < 11)) {
- return CRYPT_PK_INVALID_SIZE;
- }
-
- /* separate encoded message */
-
- if ((msg[0] != 0x00) || (msg[1] != (unsigned char)block_type)) {
- result = CRYPT_INVALID_PACKET;
- goto bail;
- }
-
- if (block_type == LTC_LTC_PKCS_1_EME) {
- for (i = 2; i < modulus_len; i++) {
- /* separator */
- if (msg[i] == 0x00) { break; }
- }
- ps_len = i++ - 2;
-
- if ((i >= modulus_len) || (ps_len < 8)) {
- /* There was no octet with hexadecimal value 0x00 to separate ps from m,
- * or the length of ps is less than 8 octets.
- */
- result = CRYPT_INVALID_PACKET;
- goto bail;
- }
- } else {
- for (i = 2; i < modulus_len - 1; i++) {
- if (msg[i] != 0xFF) { break; }
- }
-
- /* separator check */
- if (msg[i] != 0) {
- /* There was no octet with hexadecimal value 0x00 to separate ps from m. */
- result = CRYPT_INVALID_PACKET;
- goto bail;
- }
-
- ps_len = i - 2;
- }
-
- if (*outlen < (msglen - (2 + ps_len + 1))) {
- *outlen = msglen - (2 + ps_len + 1);
- result = CRYPT_BUFFER_OVERFLOW;
- goto bail;
- }
-
- *outlen = (msglen - (2 + ps_len + 1));
- XMEMCPY(out, &msg[2 + ps_len + 1], *outlen);
-
- /* valid packet */
- *is_valid = 1;
- result = CRYPT_OK;
-bail:
- return result;
-} /* pkcs_1_v1_5_decode */
-
-#endif /* #ifdef LTC_PKCS_1 */
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c,v $ */
-/* $Revision: 1.7 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c b/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c
deleted file mode 100644
index 4342919ed..000000000
--- a/StormLib/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/*! \file pkcs_1_v1_5_encode.c
- *
- * LTC_PKCS #1 v1.5 Padding (Andreas Lange)
- */
-
-#ifdef LTC_PKCS_1
-
-/*! \brief LTC_PKCS #1 v1.5 encode.
- *
- * \param msg The data to encode
- * \param msglen The length of the data to encode (octets)
- * \param block_type Block type to use in padding (\sa ltc_pkcs_1_v1_5_blocks)
- * \param modulus_bitlen The bit length of the RSA modulus
- * \param prng An active PRNG state (only for LTC_LTC_PKCS_1_EME)
- * \param prng_idx The index of the PRNG desired (only for LTC_LTC_PKCS_1_EME)
- * \param out [out] The destination for the encoded data
- * \param outlen [in/out] The max size and resulting size of the encoded data
- *
- * \return CRYPT_OK if successful
- */
-int pkcs_1_v1_5_encode(const unsigned char *msg,
- unsigned long msglen,
- int block_type,
- unsigned long modulus_bitlen,
- prng_state *prng,
- int prng_idx,
- unsigned char *out,
- unsigned long *outlen)
-{
- unsigned long modulus_len, ps_len, i;
- unsigned char *ps;
- int result;
-
- /* valid block_type? */
- if ((block_type != LTC_LTC_PKCS_1_EMSA) &&
- (block_type != LTC_LTC_PKCS_1_EME)) {
- return CRYPT_PK_INVALID_PADDING;
- }
-
- if (block_type == LTC_LTC_PKCS_1_EME) { /* encryption padding, we need a valid PRNG */
- if ((result = prng_is_valid(prng_idx)) != CRYPT_OK) {
- return result;
- }
- }
-
- modulus_len = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0);
-
- /* test message size */
- if ((msglen + 11) > modulus_len) {
- return CRYPT_PK_INVALID_SIZE;
- }
-
- if (*outlen < modulus_len) {
- *outlen = modulus_len;
- result = CRYPT_BUFFER_OVERFLOW;
- goto bail;
- }
-
- /* generate an octets string PS */
- ps = &out[2];
- ps_len = modulus_len - msglen - 3;
-
- if (block_type == LTC_LTC_PKCS_1_EME) {
- /* now choose a random ps */
- if (prng_descriptor[prng_idx].read(ps, ps_len, prng) != ps_len) {
- result = CRYPT_ERROR_READPRNG;
- goto bail;
- }
-
- /* transform zero bytes (if any) to non-zero random bytes */
- for (i = 0; i < ps_len; i++) {
- while (ps[i] == 0) {
- if (prng_descriptor[prng_idx].read(&ps[i], 1, prng) != 1) {
- result = CRYPT_ERROR_READPRNG;
- goto bail;
- }
- }
- }
- } else {
- XMEMSET(ps, 0xFF, ps_len);
- }
-
- /* create string of length modulus_len */
- out[0] = 0x00;
- out[1] = (unsigned char)block_type; /* block_type 1 or 2 */
- out[2 + ps_len] = 0x00;
- XMEMCPY(&out[2 + ps_len + 1], msg, msglen);
- *outlen = modulus_len;
-
- result = CRYPT_OK;
-bail:
- return result;
-} /* pkcs_1_v1_5_encode */
-
-#endif /* #ifdef LTC_PKCS_1 */
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c,v $ */
-/* $Revision: 1.4 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_exptmod.c b/StormLib/src/libtomcrypt/src/pk/rsa/rsa_exptmod.c
deleted file mode 100644
index ba44106f2..000000000
--- a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_exptmod.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file rsa_exptmod.c
- RSA LTC_PKCS exptmod, Tom St Denis
-*/
-
-#ifdef LTC_MRSA
-
-/**
- Compute an RSA modular exponentiation
- @param in The input data to send into RSA
- @param inlen The length of the input (octets)
- @param out [out] The destination
- @param outlen [in/out] The max size and resulting size of the output
- @param which Which exponent to use, e.g. PK_PRIVATE or PK_PUBLIC
- @param key The RSA key to use
- @return CRYPT_OK if successful
-*/
-int rsa_exptmod(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen, int which,
- rsa_key *key)
-{
- void *tmp, *tmpa, *tmpb;
- unsigned long x;
- int err;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
- LTC_ARGCHK(key != NULL);
-
- /* is the key of the right type for the operation? */
- if (which == PK_PRIVATE && (key->type != PK_PRIVATE)) {
- return CRYPT_PK_NOT_PRIVATE;
- }
-
- /* must be a private or public operation */
- if (which != PK_PRIVATE && which != PK_PUBLIC) {
- return CRYPT_PK_INVALID_TYPE;
- }
-
- /* init and copy into tmp */
- if ((err = mp_init_multi(&tmp, &tmpa, &tmpb, NULL)) != CRYPT_OK) { return err; }
- if ((err = mp_read_unsigned_bin(tmp, (unsigned char *)in, (int)inlen)) != CRYPT_OK) { goto error; }
-
- /* sanity check on the input */
- if (mp_cmp(key->N, tmp) == LTC_MP_LT) {
- err = CRYPT_PK_INVALID_SIZE;
- goto error;
- }
-
- /* are we using the private exponent and is the key optimized? */
- if (which == PK_PRIVATE) {
- /* tmpa = tmp^dP mod p */
- if ((err = mp_exptmod(tmp, key->dP, key->p, tmpa)) != CRYPT_OK) { goto error; }
-
- /* tmpb = tmp^dQ mod q */
- if ((err = mp_exptmod(tmp, key->dQ, key->q, tmpb)) != CRYPT_OK) { goto error; }
-
- /* tmp = (tmpa - tmpb) * qInv (mod p) */
- if ((err = mp_sub(tmpa, tmpb, tmp)) != CRYPT_OK) { goto error; }
- if ((err = mp_mulmod(tmp, key->qP, key->p, tmp)) != CRYPT_OK) { goto error; }
-
- /* tmp = tmpb + q * tmp */
- if ((err = mp_mul(tmp, key->q, tmp)) != CRYPT_OK) { goto error; }
- if ((err = mp_add(tmp, tmpb, tmp)) != CRYPT_OK) { goto error; }
- } else {
- /* exptmod it */
- if ((err = mp_exptmod(tmp, key->e, key->N, tmp)) != CRYPT_OK) { goto error; }
- }
-
- /* read it back */
- x = (unsigned long)mp_unsigned_bin_size(key->N);
- if (x > *outlen) {
- *outlen = x;
- err = CRYPT_BUFFER_OVERFLOW;
- goto error;
- }
-
- /* this should never happen ... */
- if (mp_unsigned_bin_size(tmp) > mp_unsigned_bin_size(key->N)) {
- err = CRYPT_ERROR;
- goto error;
- }
- *outlen = x;
-
- /* convert it */
- zeromem(out, x);
- if ((err = mp_to_unsigned_bin(tmp, out+(x-mp_unsigned_bin_size(tmp)))) != CRYPT_OK) { goto error; }
-
- /* clean up and return */
- err = CRYPT_OK;
-error:
- mp_clear_multi(tmp, tmpa, tmpb, NULL);
- return err;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_exptmod.c,v $ */
-/* $Revision: 1.18 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_free.c b/StormLib/src/libtomcrypt/src/pk/rsa/rsa_free.c
deleted file mode 100644
index a10ed5928..000000000
--- a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_free.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file rsa_free.c
- Free an RSA key, Tom St Denis
-*/
-
-#ifdef LTC_MRSA
-
-/**
- Free an RSA key from memory
- @param key The RSA key to free
-*/
-void rsa_free(rsa_key *key)
-{
- LTC_ARGCHKVD(key != NULL);
- mp_clear_multi(key->e, key->d, key->N, key->dQ, key->dP, key->qP, key->p, key->q, NULL);
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_free.c,v $ */
-/* $Revision: 1.10 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_import.c b/StormLib/src/libtomcrypt/src/pk/rsa/rsa_import.c
deleted file mode 100644
index 6254fd7ff..000000000
--- a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_import.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file rsa_import.c
- Import a LTC_PKCS RSA key, Tom St Denis
-*/
-
-#ifdef LTC_MRSA
-
-/**
- Import an RSAPublicKey or RSAPrivateKey [two-prime only, only support >= 1024-bit keys, defined in LTC_PKCS #1 v2.1]
- @param in The packet to import from
- @param inlen It's length (octets)
- @param key [out] Destination for newly imported key
- @return CRYPT_OK if successful, upon error allocated memory is freed
-*/
-int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key)
-{
- int err;
- void *zero;
- unsigned char *tmpbuf;
- unsigned long t, x, y, z, tmpoid[16];
- ltc_asn1_list ssl_pubkey_hashoid[2];
- ltc_asn1_list ssl_pubkey[2];
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(key != NULL);
- LTC_ARGCHK(ltc_mp.name != NULL);
-
- /* init key */
- if ((err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ,
- &key->dP, &key->qP, &key->p, &key->q, NULL)) != CRYPT_OK) {
- return err;
- }
-
- /* see if the OpenSSL DER format RSA public key will work */
- tmpbuf = XCALLOC(1, MAX_RSA_SIZE*8);
- if (tmpbuf == NULL) {
- err = CRYPT_MEM;
- goto LBL_ERR;
- }
-
- /* this includes the internal hash ID and optional params (NULL in this case) */
- LTC_SET_ASN1(ssl_pubkey_hashoid, 0, LTC_ASN1_OBJECT_IDENTIFIER, tmpoid, sizeof(tmpoid)/sizeof(tmpoid[0]));
- LTC_SET_ASN1(ssl_pubkey_hashoid, 1, LTC_ASN1_NULL, NULL, 0);
-
- /* the actual format of the SSL DER key is odd, it stores a RSAPublicKey in a **BIT** string ... so we have to extract it
- then proceed to convert bit to octet
- */
- LTC_SET_ASN1(ssl_pubkey, 0, LTC_ASN1_SEQUENCE, &ssl_pubkey_hashoid, 2);
- LTC_SET_ASN1(ssl_pubkey, 1, LTC_ASN1_BIT_STRING, tmpbuf, MAX_RSA_SIZE*8);
-
- if (der_decode_sequence(in, inlen,
- ssl_pubkey, 2UL) == CRYPT_OK) {
-
- /* ok now we have to reassemble the BIT STRING to an OCTET STRING. Thanks OpenSSL... */
- for (t = y = z = x = 0; x < ssl_pubkey[1].size; x++) {
- y = (y << 1) | tmpbuf[x];
- if (++z == 8) {
- tmpbuf[t++] = (unsigned char)y;
- y = 0;
- z = 0;
- }
- }
-
- /* now it should be SEQUENCE { INTEGER, INTEGER } */
- if ((err = der_decode_sequence_multi(tmpbuf, t,
- LTC_ASN1_INTEGER, 1UL, key->N,
- LTC_ASN1_INTEGER, 1UL, key->e,
- LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) {
- XFREE(tmpbuf);
- goto LBL_ERR;
- }
- XFREE(tmpbuf);
- key->type = PK_PUBLIC;
- return CRYPT_OK;
- }
- XFREE(tmpbuf);
-
- /* not SSL public key, try to match against LTC_PKCS #1 standards */
- if ((err = der_decode_sequence_multi(in, inlen,
- LTC_ASN1_INTEGER, 1UL, key->N,
- LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) {
- goto LBL_ERR;
- }
-
- if (mp_cmp_d(key->N, 0) == LTC_MP_EQ) {
- if ((err = mp_init(&zero)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- /* it's a private key */
- if ((err = der_decode_sequence_multi(in, inlen,
- LTC_ASN1_INTEGER, 1UL, zero,
- LTC_ASN1_INTEGER, 1UL, key->N,
- LTC_ASN1_INTEGER, 1UL, key->e,
- LTC_ASN1_INTEGER, 1UL, key->d,
- LTC_ASN1_INTEGER, 1UL, key->p,
- LTC_ASN1_INTEGER, 1UL, key->q,
- LTC_ASN1_INTEGER, 1UL, key->dP,
- LTC_ASN1_INTEGER, 1UL, key->dQ,
- LTC_ASN1_INTEGER, 1UL, key->qP,
- LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) {
- mp_clear(zero);
- goto LBL_ERR;
- }
- mp_clear(zero);
- key->type = PK_PRIVATE;
- } else if (mp_cmp_d(key->N, 1) == LTC_MP_EQ) {
- /* we don't support multi-prime RSA */
- err = CRYPT_PK_INVALID_TYPE;
- goto LBL_ERR;
- } else {
- /* it's a public key and we lack e */
- if ((err = der_decode_sequence_multi(in, inlen,
- LTC_ASN1_INTEGER, 1UL, key->N,
- LTC_ASN1_INTEGER, 1UL, key->e,
- LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) {
- goto LBL_ERR;
- }
- key->type = PK_PUBLIC;
- }
- return CRYPT_OK;
-LBL_ERR:
- mp_clear_multi(key->d, key->e, key->N, key->dQ, key->dP, key->qP, key->p, key->q, NULL);
- return err;
-}
-
-#endif /* LTC_MRSA */
-
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_import.c,v $ */
-/* $Revision: 1.23 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_make_key.c b/StormLib/src/libtomcrypt/src/pk/rsa/rsa_make_key.c
deleted file mode 100644
index bd37b4ae1..000000000
--- a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_make_key.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file rsa_make_key.c
- RSA key generation, Tom St Denis
-*/
-
-#ifdef LTC_MRSA
-
-/**
- Create an RSA key
- @param prng An active PRNG state
- @param wprng The index of the PRNG desired
- @param size The size of the modulus (key size) desired (octets)
- @param e The "e" value (public key). e==65537 is a good choice
- @param key [out] Destination of a newly created private key pair
- @return CRYPT_OK if successful, upon error all allocated ram is freed
-*/
-int rsa_make_key(prng_state *prng, int wprng, int size, long e, rsa_key *key)
-{
- void *p, *q, *tmp1, *tmp2, *tmp3;
- int err;
-
- LTC_ARGCHK(ltc_mp.name != NULL);
- LTC_ARGCHK(key != NULL);
-
- if ((size < (MIN_RSA_SIZE/8)) || (size > (MAX_RSA_SIZE/8))) {
- return CRYPT_INVALID_KEYSIZE;
- }
-
- if ((e < 3) || ((e & 1) == 0)) {
- return CRYPT_INVALID_ARG;
- }
-
- if ((err = prng_is_valid(wprng)) != CRYPT_OK) {
- return err;
- }
-
- if ((err = mp_init_multi(&p, &q, &tmp1, &tmp2, &tmp3, NULL)) != CRYPT_OK) {
- return err;
- }
-
- /* make primes p and q (optimization provided by Wayne Scott) */
- if ((err = mp_set_int(tmp3, e)) != CRYPT_OK) { goto errkey; } /* tmp3 = e */
-
- /* make prime "p" */
- do {
- if ((err = rand_prime( p, size/2, prng, wprng)) != CRYPT_OK) { goto errkey; }
- if ((err = mp_sub_d( p, 1, tmp1)) != CRYPT_OK) { goto errkey; } /* tmp1 = p-1 */
- if ((err = mp_gcd( tmp1, tmp3, tmp2)) != CRYPT_OK) { goto errkey; } /* tmp2 = gcd(p-1, e) */
- } while (mp_cmp_d( tmp2, 1) != 0); /* while e divides p-1 */
-
- /* make prime "q" */
- do {
- if ((err = rand_prime( q, size/2, prng, wprng)) != CRYPT_OK) { goto errkey; }
- if ((err = mp_sub_d( q, 1, tmp1)) != CRYPT_OK) { goto errkey; } /* tmp1 = q-1 */
- if ((err = mp_gcd( tmp1, tmp3, tmp2)) != CRYPT_OK) { goto errkey; } /* tmp2 = gcd(q-1, e) */
- } while (mp_cmp_d( tmp2, 1) != 0); /* while e divides q-1 */
-
- /* tmp1 = lcm(p-1, q-1) */
- if ((err = mp_sub_d( p, 1, tmp2)) != CRYPT_OK) { goto errkey; } /* tmp2 = p-1 */
- /* tmp1 = q-1 (previous do/while loop) */
- if ((err = mp_lcm( tmp1, tmp2, tmp1)) != CRYPT_OK) { goto errkey; } /* tmp1 = lcm(p-1, q-1) */
-
- /* make key */
- if ((err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, &key->dP, &key->qP, &key->p, &key->q, NULL)) != CRYPT_OK) {
- goto errkey;
- }
-
- if ((err = mp_set_int( key->e, e)) != CRYPT_OK) { goto errkey; } /* key->e = e */
- if ((err = mp_invmod( key->e, tmp1, key->d)) != CRYPT_OK) { goto errkey; } /* key->d = 1/e mod lcm(p-1,q-1) */
- if ((err = mp_mul( p, q, key->N)) != CRYPT_OK) { goto errkey; } /* key->N = pq */
-
- /* optimize for CRT now */
- /* find d mod q-1 and d mod p-1 */
- if ((err = mp_sub_d( p, 1, tmp1)) != CRYPT_OK) { goto errkey; } /* tmp1 = q-1 */
- if ((err = mp_sub_d( q, 1, tmp2)) != CRYPT_OK) { goto errkey; } /* tmp2 = p-1 */
- if ((err = mp_mod( key->d, tmp1, key->dP)) != CRYPT_OK) { goto errkey; } /* dP = d mod p-1 */
- if ((err = mp_mod( key->d, tmp2, key->dQ)) != CRYPT_OK) { goto errkey; } /* dQ = d mod q-1 */
- if ((err = mp_invmod( q, p, key->qP)) != CRYPT_OK) { goto errkey; } /* qP = 1/q mod p */
-
- if ((err = mp_copy( p, key->p)) != CRYPT_OK) { goto errkey; }
- if ((err = mp_copy( q, key->q)) != CRYPT_OK) { goto errkey; }
-
- /* set key type (in this case it's CRT optimized) */
- key->type = PK_PRIVATE;
-
- /* return ok and free temps */
- err = CRYPT_OK;
- goto cleanup;
-errkey:
- mp_clear_multi(key->d, key->e, key->N, key->dQ, key->dP, key->qP, key->p, key->q, NULL);
-cleanup:
- mp_clear_multi(tmp3, tmp2, tmp1, p, q, NULL);
- return err;
-}
-
-#endif
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_make_key.c,v $ */
-/* $Revision: 1.16 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_sign_hash.c b/StormLib/src/libtomcrypt/src/pk/rsa/rsa_sign_hash.c
deleted file mode 100644
index 49fb85875..000000000
--- a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_sign_hash.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file rsa_sign_hash.c
- RSA LTC_PKCS #1 v1.5 and v2 PSS sign hash, Tom St Denis and Andreas Lange
-*/
-
-#ifdef LTC_MRSA
-
-/**
- LTC_PKCS #1 pad then sign
- @param in The hash to sign
- @param inlen The length of the hash to sign (octets)
- @param out [out] The signature
- @param outlen [in/out] The max size and resulting size of the signature
- @param padding Type of padding (LTC_LTC_PKCS_1_PSS or LTC_LTC_PKCS_1_V1_5)
- @param prng An active PRNG state
- @param prng_idx The index of the PRNG desired
- @param hash_idx The index of the hash desired
- @param saltlen The length of the salt desired (octets)
- @param key The private RSA key to use
- @return CRYPT_OK if successful
-*/
-int rsa_sign_hash_ex(const unsigned char *in, unsigned long inlen,
- unsigned char *out, unsigned long *outlen,
- int padding,
- prng_state *prng, int prng_idx,
- int hash_idx, unsigned long saltlen,
- rsa_key *key)
-{
- unsigned long modulus_bitlen, modulus_bytelen, x, y;
- int err;
-
- LTC_ARGCHK(in != NULL);
- LTC_ARGCHK(out != NULL);
- LTC_ARGCHK(outlen != NULL);
- LTC_ARGCHK(key != NULL);
-
- /* valid padding? */
- if ((padding != LTC_LTC_PKCS_1_V1_5) && (padding != LTC_LTC_PKCS_1_PSS)) {
- return CRYPT_PK_INVALID_PADDING;
- }
-
- if (padding == LTC_LTC_PKCS_1_PSS) {
- /* valid prng and hash ? */
- if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) {
- return err;
- }
- if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) {
- return err;
- }
- }
-
- /* get modulus len in bits */
- modulus_bitlen = mp_count_bits((key->N));
-
- /* outlen must be at least the size of the modulus */
- modulus_bytelen = mp_unsigned_bin_size((key->N));
- if (modulus_bytelen > *outlen) {
- *outlen = modulus_bytelen;
- return CRYPT_BUFFER_OVERFLOW;
- }
-
- if (padding == LTC_LTC_PKCS_1_PSS) {
- /* PSS pad the key */
- x = *outlen;
- if ((err = pkcs_1_pss_encode(in, inlen, saltlen, prng, prng_idx,
- hash_idx, modulus_bitlen, out, &x)) != CRYPT_OK) {
- return err;
- }
- } else {
- /* LTC_PKCS #1 v1.5 pad the hash */
- unsigned char *tmpin;
- ltc_asn1_list digestinfo[2], siginfo[2];
-
- /* not all hashes have OIDs... so sad */
- if (hash_descriptor[hash_idx].OIDlen == 0) {
- return CRYPT_INVALID_ARG;
- }
-
- /* construct the SEQUENCE
- SEQUENCE {
- SEQUENCE {hashoid OID
- blah NULL
- }
- hash OCTET STRING
- }
- */
- LTC_SET_ASN1(digestinfo, 0, LTC_ASN1_OBJECT_IDENTIFIER, hash_descriptor[hash_idx].OID, hash_descriptor[hash_idx].OIDlen);
- LTC_SET_ASN1(digestinfo, 1, LTC_ASN1_NULL, NULL, 0);
- LTC_SET_ASN1(siginfo, 0, LTC_ASN1_SEQUENCE, digestinfo, 2);
- LTC_SET_ASN1(siginfo, 1, LTC_ASN1_OCTET_STRING, in, inlen);
-
- /* allocate memory for the encoding */
- y = mp_unsigned_bin_size(key->N);
- tmpin = XMALLOC(y);
- if (tmpin == NULL) {
- return CRYPT_MEM;
- }
-
- if ((err = der_encode_sequence(siginfo, 2, tmpin, &y)) != CRYPT_OK) {
- XFREE(tmpin);
- return err;
- }
-
- x = *outlen;
- if ((err = pkcs_1_v1_5_encode(tmpin, y, LTC_LTC_PKCS_1_EMSA,
- modulus_bitlen, NULL, 0,
- out, &x)) != CRYPT_OK) {
- XFREE(tmpin);
- return err;
- }
- XFREE(tmpin);
- }
-
- /* RSA encode it */
- return ltc_mp.rsa_me(out, x, out, outlen, PK_PRIVATE, key);
-}
-
-#endif /* LTC_MRSA */
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_sign_hash.c,v $ */
-/* $Revision: 1.11 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_verify_hash.c b/StormLib/src/libtomcrypt/src/pk/rsa/rsa_verify_hash.c
deleted file mode 100644
index 103ae2f53..000000000
--- a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_verify_hash.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file rsa_verify_hash.c
- RSA LTC_PKCS #1 v1.5 or v2 PSS signature verification, Tom St Denis and Andreas Lange
-*/
-
-#ifdef LTC_MRSA
-
-/**
- LTC_PKCS #1 de-sign then v1.5 or PSS depad
- @param sig The signature data
- @param siglen The length of the signature data (octets)
- @param hash The hash of the message that was signed
- @param hashlen The length of the hash of the message that was signed (octets)
- @param padding Type of padding (LTC_LTC_PKCS_1_PSS or LTC_LTC_PKCS_1_V1_5)
- @param hash_idx The index of the desired hash
- @param saltlen The length of the salt used during signature
- @param stat [out] The result of the signature comparison, 1==valid, 0==invalid
- @param key The public RSA key corresponding to the key that performed the signature
- @return CRYPT_OK on success (even if the signature is invalid)
-*/
-int rsa_verify_hash_ex(const unsigned char *sig, unsigned long siglen,
- const unsigned char *hash, unsigned long hashlen,
- int padding,
- int hash_idx, unsigned long saltlen,
- int *stat, rsa_key *key)
-{
- unsigned long modulus_bitlen, modulus_bytelen, x;
- int err;
- unsigned char *tmpbuf;
-
- LTC_ARGCHK(hash != NULL);
- LTC_ARGCHK(sig != NULL);
- LTC_ARGCHK(stat != NULL);
- LTC_ARGCHK(key != NULL);
-
- /* default to invalid */
- *stat = 0;
-
- /* valid padding? */
-
- if ((padding != LTC_LTC_PKCS_1_V1_5) &&
- (padding != LTC_LTC_PKCS_1_PSS)) {
- return CRYPT_PK_INVALID_PADDING;
- }
-
- if (padding == LTC_LTC_PKCS_1_PSS) {
- /* valid hash ? */
- if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) {
- return err;
- }
- }
-
- /* get modulus len in bits */
- modulus_bitlen = mp_count_bits( (key->N));
-
- /* outlen must be at least the size of the modulus */
- modulus_bytelen = mp_unsigned_bin_size( (key->N));
- if (modulus_bytelen != siglen) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* allocate temp buffer for decoded sig */
- tmpbuf = XMALLOC(siglen);
- if (tmpbuf == NULL) {
- return CRYPT_MEM;
- }
-
- /* RSA decode it */
- x = siglen;
- if ((err = ltc_mp.rsa_me(sig, siglen, tmpbuf, &x, PK_PUBLIC, key)) != CRYPT_OK) {
- XFREE(tmpbuf);
- return err;
- }
-
- /* make sure the output is the right size */
- if (x != siglen) {
- XFREE(tmpbuf);
- return CRYPT_INVALID_PACKET;
- }
-
- if (padding == LTC_LTC_PKCS_1_PSS) {
- /* PSS decode and verify it */
- err = pkcs_1_pss_decode(hash, hashlen, tmpbuf, x, saltlen, hash_idx, modulus_bitlen, stat);
- } else {
- /* LTC_PKCS #1 v1.5 decode it */
- unsigned char *out;
- unsigned long outlen, loid[16];
- int decoded;
- ltc_asn1_list digestinfo[2], siginfo[2];
-
- /* not all hashes have OIDs... so sad */
- if (hash_descriptor[hash_idx].OIDlen == 0) {
- err = CRYPT_INVALID_ARG;
- goto bail_2;
- }
-
- /* allocate temp buffer for decoded hash */
- outlen = ((modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0)) - 3;
- out = XMALLOC(outlen);
- if (out == NULL) {
- err = CRYPT_MEM;
- goto bail_2;
- }
-
- if ((err = pkcs_1_v1_5_decode(tmpbuf, x, LTC_LTC_PKCS_1_EMSA, modulus_bitlen, out, &outlen, &decoded)) != CRYPT_OK) {
- XFREE(out);
- goto bail_2;
- }
-
- /* now we must decode out[0...outlen-1] using ASN.1, test the OID and then test the hash */
- /* construct the SEQUENCE
- SEQUENCE {
- SEQUENCE {hashoid OID
- blah NULL
- }
- hash OCTET STRING
- }
- */
- LTC_SET_ASN1(digestinfo, 0, LTC_ASN1_OBJECT_IDENTIFIER, loid, sizeof(loid)/sizeof(loid[0]));
- LTC_SET_ASN1(digestinfo, 1, LTC_ASN1_NULL, NULL, 0);
- LTC_SET_ASN1(siginfo, 0, LTC_ASN1_SEQUENCE, digestinfo, 2);
- LTC_SET_ASN1(siginfo, 1, LTC_ASN1_OCTET_STRING, tmpbuf, siglen);
-
- if ((err = der_decode_sequence(out, outlen, siginfo, 2)) != CRYPT_OK) {
- XFREE(out);
- goto bail_2;
- }
-
- /* test OID */
- if ((digestinfo[0].size == hash_descriptor[hash_idx].OIDlen) &&
- (XMEMCMP(digestinfo[0].data, hash_descriptor[hash_idx].OID, sizeof(unsigned long) * hash_descriptor[hash_idx].OIDlen) == 0) &&
- (siginfo[1].size == hashlen) &&
- (XMEMCMP(siginfo[1].data, hash, hashlen) == 0)) {
- *stat = 1;
- }
-
-#ifdef LTC_CLEAN_STACK
- zeromem(out, outlen);
-#endif
- XFREE(out);
- }
-
-bail_2:
-#ifdef LTC_CLEAN_STACK
- zeromem(tmpbuf, siglen);
-#endif
- XFREE(tmpbuf);
- return err;
-}
-
-#endif /* LTC_MRSA */
-
-/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_verify_hash.c,v $ */
-/* $Revision: 1.13 $ */
-/* $Date: 2007/05/12 14:32:35 $ */
diff --git a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_verify_simple.c b/StormLib/src/libtomcrypt/src/pk/rsa/rsa_verify_simple.c
deleted file mode 100644
index 6d8888c85..000000000
--- a/StormLib/src/libtomcrypt/src/pk/rsa/rsa_verify_simple.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
- */
-#include "../../headers/tomcrypt.h"
-
-/**
- @file rsa_verify_simple.c
- Created by Ladislav Zezula (zezula@volny.cz) as modification
- for Blizzard strong signature verification
-*/
-
-#ifdef LTC_MRSA
-
-/**
- Simple RSA decryption
- @param sig The signature data
- @param siglen The length of the signature data (octets)
- @param hash The hash of the message that was signed
- @param hashlen The length of the hash of the message that was signed (octets)
- @param stat [out] The result of the signature comparison, 1==valid, 0==invalid
- @param key The public RSA key corresponding
- @return Error code
-*/
-int rsa_verify_simple(const unsigned char *sig, unsigned long siglen,
- const unsigned char *hash, unsigned long hashlen,
- int *stat,
- rsa_key *key)
-{
- unsigned long modulus_bitlen, modulus_bytelen, x;
- unsigned char *tmpbuf;
- int err;
-
- LTC_ARGCHK(sig != NULL);
- LTC_ARGCHK(hash != NULL);
- LTC_ARGCHK(stat != NULL);
- LTC_ARGCHK(key != NULL);
-
- /* default to invalid */
- *stat = 0;
-
- /* get modulus len in bits */
- modulus_bitlen = mp_count_bits( (key->N));
-
- /* outlen must be at least the size of the modulus */
- modulus_bytelen = mp_unsigned_bin_size( (key->N));
- if (modulus_bytelen != siglen) {
- return CRYPT_INVALID_PACKET;
- }
-
- /* allocate temp buffer for decoded sig */
- tmpbuf = XMALLOC(siglen);
- if (tmpbuf == NULL) {
- return CRYPT_MEM;
- }
-
- /* RSA decode it */
- x = siglen;
- if ((err = ltc_mp.rsa_me(sig, siglen, tmpbuf, &x, PK_PUBLIC, key)) != CRYPT_OK) {
- XFREE(tmpbuf);
- return err;
- }
-
- /* make sure the output is the right size */
- if (x != siglen) {
- XFREE(tmpbuf);
- return CRYPT_INVALID_PACKET;
- }
-
- /* compare the decrypted signature with the given hash */
- if(x == hashlen && XMEMCMP(tmpbuf, hash, hashlen) == 0)
- *stat = 1;
-
-#ifdef LTC_CLEAN_STACK
- zeromem(tmpbuf, siglen);
-#endif
- XFREE(tmpbuf);
- return CRYPT_OK;
-}
-
-#endif /* LTC_MRSA */