summaryrefslogtreecommitdiffhomepage
path: root/libtomcrypt/src/misc/crypt
diff options
context:
space:
mode:
Diffstat (limited to 'libtomcrypt/src/misc/crypt')
-rw-r--r--libtomcrypt/src/misc/crypt/crypt.c332
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_argchk.c13
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_cipher_descriptor.c10
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_cipher_is_valid.c8
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_constants.c297
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_find_cipher.c8
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c18
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_find_cipher_id.c8
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_find_hash.c8
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_find_hash_any.c10
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_find_hash_id.c8
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_find_hash_oid.c8
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_find_prng.c8
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_fsa.c27
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c10
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c10
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_inits.c43
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_ltc_mp_descriptor.c9
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c10
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c8
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_prng_rng_descriptor.c17
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_register_all_ciphers.c100
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_register_all_hashes.c99
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_register_all_prngs.c48
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_register_cipher.c8
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_register_hash.c8
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_register_prng.c10
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_sizes.c356
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_unregister_cipher.c8
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_unregister_hash.c8
-rw-r--r--libtomcrypt/src/misc/crypt/crypt_unregister_prng.c12
31 files changed, 1283 insertions, 244 deletions
diff --git a/libtomcrypt/src/misc/crypt/crypt.c b/libtomcrypt/src/misc/crypt/crypt.c
index 054f4b7..e20c271 100644
--- a/libtomcrypt/src/misc/crypt/crypt.c
+++ b/libtomcrypt/src/misc/crypt/crypt.c
@@ -5,57 +5,57 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
/**
@file crypt.c
Build strings, Tom St Denis
-*/
+*/
+#define NAME_VALUE(s) #s"="NAME(s)
+#define NAME(s) #s
/*
const char *crypt_build_settings =
- "LibTomCrypt " SCRYPT " (Tom St Denis, tomstdenis@gmail.com)\n"
+ "LibTomCrypt " SCRYPT " (www.libtom.net)\n"
"LibTomCrypt is public domain software.\n"
- "Built on " __DATE__ " at " __TIME__ "\n\n\n"
- "Endianess: "
+#if defined(INCLUDE_BUILD_DATE)
+ "Built on " __DATE__ " at " __TIME__ "\n"
+#endif
+ "\n\nEndianness: "
#if defined(ENDIAN_NEUTRAL)
- "neutral\n"
-#elif defined(ENDIAN_LITTLE)
+ "neutral/"
+#endif
+#if defined(ENDIAN_LITTLE)
"little"
- #if defined(ENDIAN_32BITWORD)
- " (32-bit words)\n"
- #else
- " (64-bit words)\n"
- #endif
#elif defined(ENDIAN_BIG)
"big"
+#endif
#if defined(ENDIAN_32BITWORD)
" (32-bit words)\n"
- #else
+ #elif defined(ENDIAN_64BITWORD)
" (64-bit words)\n"
+ #else
+ " (no wordsize defined)\n"
#endif
-#endif
"Clean stack: "
#if defined(LTC_CLEAN_STACK)
"enabled\n"
#else
"disabled\n"
#endif
- "Ciphers built-in:\n"
+ "\nCiphers built-in:\n"
#if defined(LTC_BLOWFISH)
" Blowfish\n"
#endif
#if defined(LTC_RC2)
- " LTC_RC2\n"
+ " RC2\n"
#endif
#if defined(LTC_RC5)
- " LTC_RC5\n"
+ " RC5\n"
#endif
#if defined(LTC_RC6)
- " LTC_RC6\n"
+ " RC6\n"
#endif
#if defined(LTC_SAFERP)
" Safer+\n"
@@ -67,7 +67,7 @@ const char *crypt_build_settings =
" Rijndael\n"
#endif
#if defined(LTC_XTEA)
- " LTC_XTEA\n"
+ " XTEA\n"
#endif
#if defined(LTC_TWOFISH)
" Twofish "
@@ -90,10 +90,10 @@ const char *crypt_build_settings =
#endif
#endif
#if defined(LTC_DES)
- " LTC_DES\n"
+ " DES\n"
#endif
#if defined(LTC_CAST5)
- " LTC_CAST5\n"
+ " CAST5\n"
#endif
#if defined(LTC_NOEKEON)
" Noekeon\n"
@@ -112,57 +112,88 @@ const char *crypt_build_settings =
#endif
"\n"
#if defined(LTC_KSEED)
- " LTC_KSEED\n"
+ " KSEED\n"
#endif
#if defined(LTC_KASUMI)
" KASUMI\n"
#endif
+#if defined(LTC_MULTI2)
+ " MULTI2\n"
+#endif
+#if defined(LTC_CAMELLIA)
+ " Camellia\n"
+#endif
+ "Stream ciphers built-in:\n"
+#if defined(LTC_CHACHA)
+ " ChaCha\n"
+#endif
+#if defined(LTC_RC4_STREAM)
+ " RC4\n"
+#endif
+#if defined(LTC_SOBER128_STREAM)
+ " SOBER128\n"
+#endif
"\nHashes built-in:\n"
+#if defined(LTC_SHA3)
+ " SHA3\n"
+#endif
#if defined(LTC_SHA512)
- " LTC_SHA-512\n"
+ " SHA-512\n"
#endif
#if defined(LTC_SHA384)
- " LTC_SHA-384\n"
+ " SHA-384\n"
+#endif
+#if defined(LTC_SHA512_256)
+ " SHA-512/256\n"
#endif
#if defined(LTC_SHA256)
- " LTC_SHA-256\n"
+ " SHA-256\n"
+#endif
+#if defined(LTC_SHA512_224)
+ " SHA-512/224\n"
#endif
#if defined(LTC_SHA224)
- " LTC_SHA-224\n"
+ " SHA-224\n"
#endif
#if defined(LTC_TIGER)
- " LTC_TIGER\n"
+ " TIGER\n"
#endif
#if defined(LTC_SHA1)
- " LTC_SHA1\n"
+ " SHA1\n"
#endif
#if defined(LTC_MD5)
- " LTC_MD5\n"
+ " MD5\n"
#endif
#if defined(LTC_MD4)
- " LTC_MD4\n"
+ " MD4\n"
#endif
#if defined(LTC_MD2)
- " LTC_MD2\n"
+ " MD2\n"
#endif
#if defined(LTC_RIPEMD128)
- " LTC_RIPEMD128\n"
+ " RIPEMD128\n"
#endif
#if defined(LTC_RIPEMD160)
- " LTC_RIPEMD160\n"
+ " RIPEMD160\n"
#endif
#if defined(LTC_RIPEMD256)
- " LTC_RIPEMD256\n"
+ " RIPEMD256\n"
#endif
#if defined(LTC_RIPEMD320)
- " LTC_RIPEMD320\n"
+ " RIPEMD320\n"
#endif
#if defined(LTC_WHIRLPOOL)
- " LTC_WHIRLPOOL\n"
+ " WHIRLPOOL\n"
+#endif
+#if defined(LTC_BLAKE2S)
+ " BLAKE2S\n"
+#endif
+#if defined(LTC_BLAKE2B)
+ " BLAKE2B\n"
#endif
#if defined(LTC_CHC_HASH)
- " LTC_CHC_HASH \n"
+ " CHC_HASH\n"
#endif
"\nBlock Chaining Modes:\n"
@@ -179,97 +210,151 @@ const char *crypt_build_settings =
" CBC\n"
#endif
#if defined(LTC_CTR_MODE)
- " CTR "
+ " CTR\n"
#endif
-#if defined(LTC_CTR_OLD)
- " (CTR_OLD) "
-#endif
- "\n"
-#if defined(LRW_MODE)
- " LRW_MODE"
-#if defined(LRW_TABLES)
- " (LRW_TABLES) "
+#if defined(LTC_LRW_MODE)
+ " LRW"
+#if defined(LTC_LRW_TABLES)
+ " (tables) "
#endif
"\n"
#endif
#if defined(LTC_F8_MODE)
- " F8 MODE\n"
-#endif
+ " F8\n"
+#endif
#if defined(LTC_XTS_MODE)
- " LTC_XTS_MODE\n"
+ " XTS\n"
#endif
"\nMACs:\n"
#if defined(LTC_HMAC)
- " LTC_HMAC\n"
+ " HMAC\n"
#endif
#if defined(LTC_OMAC)
- " LTC_OMAC\n"
+ " OMAC\n"
#endif
#if defined(LTC_PMAC)
" PMAC\n"
#endif
#if defined(LTC_PELICAN)
- " LTC_PELICAN\n"
+ " PELICAN\n"
#endif
#if defined(LTC_XCBC)
- " XCBC-MAC\n"
+ " XCBC\n"
#endif
#if defined(LTC_F9_MODE)
- " F9-MAC\n"
+ " F9\n"
+#endif
+#if defined(LTC_POLY1305)
+ " POLY1305\n"
+#endif
+#if defined(LTC_BLAKE2SMAC)
+ " BLAKE2S MAC\n"
+#endif
+#if defined(LTC_BLAKE2BMAC)
+ " BLAKE2B MAC\n"
#endif
"\nENC + AUTH modes:\n"
#if defined(LTC_EAX_MODE)
- " LTC_EAX_MODE\n"
+ " EAX\n"
#endif
#if defined(LTC_OCB_MODE)
- " LTC_OCB_MODE\n"
+ " OCB\n"
+#endif
+#if defined(LTC_OCB3_MODE)
+ " OCB3\n"
#endif
#if defined(LTC_CCM_MODE)
- " LTC_CCM_MODE\n"
+ " CCM\n"
#endif
#if defined(LTC_GCM_MODE)
- " LTC_GCM_MODE "
-#endif
+ " GCM"
#if defined(LTC_GCM_TABLES)
- " (LTC_GCM_TABLES) "
+ " (tables) "
+#endif
+#if defined(LTC_GCM_TABLES_SSE2)
+ " (SSE2) "
#endif
"\n"
+#endif
+#if defined(LTC_CHACHA20POLY1305_MODE)
+ " CHACHA20POLY1305\n"
+#endif
"\nPRNG:\n"
#if defined(LTC_YARROW)
- " Yarrow\n"
+ " Yarrow ("NAME_VALUE(LTC_YARROW_AES)")\n"
#endif
#if defined(LTC_SPRNG)
- " LTC_SPRNG\n"
+ " SPRNG\n"
#endif
#if defined(LTC_RC4)
- " LTC_RC4\n"
+ " RC4\n"
+#endif
+#if defined(LTC_CHACHA20_PRNG)
+ " ChaCha20\n"
#endif
#if defined(LTC_FORTUNA)
- " Fortuna\n"
+ " Fortuna (" NAME_VALUE(LTC_FORTUNA_POOLS) ", " NAME_VALUE(LTC_FORTUNA_WD) ")\n"
#endif
#if defined(LTC_SOBER128)
- " LTC_SOBER128\n"
+ " SOBER128\n"
#endif
- "\nPK Algs:\n"
+ "\nPK Crypto:\n"
#if defined(LTC_MRSA)
- " RSA \n"
+ " RSA"
+#if defined(LTC_RSA_BLINDING) && defined(LTC_RSA_CRT_HARDENING)
+ " (with blinding and CRT hardening)"
+#elif defined(LTC_RSA_BLINDING)
+ " (with blinding)"
+#elif defined(LTC_RSA_CRT_HARDENING)
+ " (with CRT hardening)"
+#endif
+ "\n"
+#endif
+#if defined(LTC_MDH)
+ " DH\n"
#endif
#if defined(LTC_MECC)
- " ECC\n"
+ " ECC"
+#if defined(LTC_ECC_TIMING_RESISTANT)
+ " (with blinding)"
+#endif
+ "\n"
#endif
#if defined(LTC_MDSA)
" DSA\n"
#endif
-#if defined(MKAT)
+#if defined(LTC_MKAT)
" Katja\n"
-#endif
+#endif
+#if defined(LTC_PK_MAX_RETRIES)
+ " "NAME_VALUE(LTC_PK_MAX_RETRIES)"\n"
+#endif
+
+ "\nMPI (Math):\n"
+#if defined(LTC_MPI)
+ " LTC_MPI\n"
+#endif
+#if defined(LTM_DESC)
+ " LTM_DESC\n"
+#endif
+#if defined(TFM_DESC)
+ " TFM_DESC\n"
+#endif
+#if defined(GMP_DESC)
+ " GMP_DESC\n"
+#endif
+#if defined(LTC_MILLER_RABIN_REPS)
+ " "NAME_VALUE(LTC_MILLER_RABIN_REPS)"\n"
+#endif
"\nCompiler:\n"
-#if defined(WIN32)
+#if defined(_WIN64)
+ " WIN64 platform detected.\n"
+#elif defined(_WIN32)
" WIN32 platform detected.\n"
#endif
#if defined(__CYGWIN__)
@@ -281,37 +366,78 @@ const char *crypt_build_settings =
#if defined(_MSC_VER)
" MSVC compiler detected.\n"
#endif
-#if defined(__GNUC__)
- " GCC compiler detected.\n"
-#endif
-#if defined(INTEL_CC)
- " Intel C Compiler detected.\n"
+#if defined(__clang_version__)
+ " Clang compiler " __clang_version__ ".\n"
+#elif defined(INTEL_CC)
+ " Intel C Compiler " __VERSION__ ".\n"
+#elif defined(__GNUC__) /* clang and icc also define __GNUC__ */
+ " GCC compiler " __VERSION__ ".\n"
#endif
+
#if defined(__x86_64__)
" x86-64 detected.\n"
#endif
#if defined(LTC_PPC32)
- " LTC_PPC32 defined \n"
-#endif
+ " PPC32 detected.\n"
+#endif
"\nVarious others: "
+#if defined(ARGTYPE)
+ " " NAME_VALUE(ARGTYPE) " "
+#endif
+#if defined(LTC_ADLER32)
+ " ADLER32 "
+#endif
#if defined(LTC_BASE64)
- " LTC_BASE64 "
+ " BASE64 "
#endif
-#if defined(MPI)
- " MPI "
+#if defined(LTC_BASE64_URL)
+ " BASE64-URL-SAFE "
#endif
-#if defined(TRY_UNRANDOM_FIRST)
- " TRY_UNRANDOM_FIRST "
+#if defined(LTC_CRC32)
+ " CRC32 "
#endif
-#if defined(LTC_TEST)
- " LTC_TEST "
+#if defined(LTC_DER)
+ " DER "
#endif
#if defined(LTC_PKCS_1)
- " LTC_PKCS#1 "
+ " PKCS#1 "
#endif
#if defined(LTC_PKCS_5)
- " LTC_PKCS#5 "
+ " PKCS#5 "
+#endif
+#if defined(LTC_HKDF)
+ " HKDF "
+#endif
+#if defined(LTC_DEVRANDOM)
+ " LTC_DEVRANDOM "
+#endif
+#if defined(LTC_TRY_URANDOM_FIRST)
+ " LTC_TRY_URANDOM_FIRST "
+#endif
+#if defined(LTC_RNG_GET_BYTES)
+ " LTC_RNG_GET_BYTES "
+#endif
+#if defined(LTC_RNG_MAKE_PRNG)
+ " LTC_RNG_MAKE_PRNG "
+#endif
+#if defined(LTC_PRNG_ENABLE_LTC_RNG)
+ " LTC_PRNG_ENABLE_LTC_RNG "
+#endif
+#if defined(LTC_HASH_HELPERS)
+ " LTC_HASH_HELPERS "
+#endif
+#if defined(LTC_VALGRIND)
+ " LTC_VALGRIND "
+#endif
+#if defined(LTC_TEST)
+ " LTC_TEST "
+#endif
+#if defined(LTC_TEST_DBG)
+ " " NAME_VALUE(LTC_TEST_DBG) " "
+#endif
+#if defined(LTC_TEST_EXT)
+ " LTC_TEST_EXT "
#endif
#if defined(LTC_SMALL_CODE)
" LTC_SMALL_CODE "
@@ -319,8 +445,8 @@ const char *crypt_build_settings =
#if defined(LTC_NO_FILE)
" LTC_NO_FILE "
#endif
-#if defined(LTC_DER)
- " LTC_DER "
+#if defined(LTC_FILE_READ_BUFSIZE)
+ " " NAME_VALUE(LTC_FILE_READ_BUFSIZE) " "
#endif
#if defined(LTC_FAST)
" LTC_FAST "
@@ -334,6 +460,12 @@ const char *crypt_build_settings =
#if defined(LTC_NO_ASM)
" LTC_NO_ASM "
#endif
+#if defined(LTC_ROx_ASM)
+ " LTC_ROx_ASM "
+#if defined(LTC_NO_ROLC)
+ " LTC_NO_ROLC "
+#endif
+#endif
#if defined(LTC_NO_TEST)
" LTC_NO_TEST "
#endif
@@ -343,21 +475,12 @@ const char *crypt_build_settings =
#if defined(LTC_PTHREAD)
" LTC_PTHREAD "
#endif
-#if defined(LTM_LTC_DESC)
- " LTM_DESC "
-#endif
-#if defined(TFM_LTC_DESC)
- " TFM_DESC "
+#if defined(LTC_EASY)
+ " LTC_EASY "
#endif
#if defined(LTC_MECC_ACCEL)
" LTC_MECC_ACCEL "
#endif
-#if defined(GMP_LTC_DESC)
- " GMP_DESC "
-#endif
-#if defined(LTC_EASY)
- " (easy) "
-#endif
#if defined(LTC_MECC_FP)
" LTC_MECC_FP "
#endif
@@ -365,11 +488,10 @@ const char *crypt_build_settings =
" LTC_ECC_SHAMIR "
#endif
"\n"
- "\n\n\n"
;
*/
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_argchk.c b/libtomcrypt/src/misc/crypt/crypt_argchk.c
index 2f2faa7..da7306b 100644
--- a/libtomcrypt/src/misc/crypt/crypt_argchk.c
+++ b/libtomcrypt/src/misc/crypt/crypt_argchk.c
@@ -5,19 +5,16 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "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)
+void crypt_argchk(const char *v, const char *s, int d)
{
fprintf(stderr, "LTC_ARGCHK '%s' failure on line %d of file %s\n",
v, d, s);
@@ -25,6 +22,6 @@ void crypt_argchk(char *v, char *s, int d)
}
#endif
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_cipher_descriptor.c b/libtomcrypt/src/misc/crypt/crypt_cipher_descriptor.c
index 20aac57..ccc9890 100644
--- a/libtomcrypt/src/misc/crypt/crypt_cipher_descriptor.c
+++ b/libtomcrypt/src/misc/crypt/crypt_cipher_descriptor.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -16,12 +14,12 @@
*/
struct ltc_cipher_descriptor cipher_descriptor[TAB_SIZE] = {
-{ NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
+{ NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
};
LTC_MUTEX_GLOBAL(ltc_cipher_mutex)
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_cipher_is_valid.c b/libtomcrypt/src/misc/crypt/crypt_cipher_is_valid.c
index 35f1ace..aebc94c 100644
--- a/libtomcrypt/src/misc/crypt/crypt_cipher_is_valid.c
+++ b/libtomcrypt/src/misc/crypt/crypt_cipher_is_valid.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -31,6 +29,6 @@ int cipher_is_valid(int idx)
return CRYPT_OK;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_constants.c b/libtomcrypt/src/misc/crypt/crypt_constants.c
new file mode 100644
index 0000000..a7418d5
--- /dev/null
+++ b/libtomcrypt/src/misc/crypt/crypt_constants.c
@@ -0,0 +1,297 @@
+/* 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.
+ */
+#include "tomcrypt.h"
+
+/**
+ @file crypt_constants.c
+
+ Make various constants available to dynamic languages
+ like Python - Larry Bugbee, February 2013
+
+ LB - Dec 2013 - revised to include compiler define options
+ LB - Mar 2014 - added endianness and word size
+*/
+
+typedef struct {
+ const char *name;
+ const int value;
+} crypt_constant;
+
+#define _C_STRINGIFY(s) { #s, s }
+
+static const crypt_constant _crypt_constants[] = {
+
+ _C_STRINGIFY(CRYPT_OK),
+ _C_STRINGIFY(CRYPT_ERROR),
+ _C_STRINGIFY(CRYPT_NOP),
+ _C_STRINGIFY(CRYPT_INVALID_KEYSIZE),
+ _C_STRINGIFY(CRYPT_INVALID_ROUNDS),
+ _C_STRINGIFY(CRYPT_FAIL_TESTVECTOR),
+ _C_STRINGIFY(CRYPT_BUFFER_OVERFLOW),
+ _C_STRINGIFY(CRYPT_INVALID_PACKET),
+ _C_STRINGIFY(CRYPT_INVALID_PRNGSIZE),
+ _C_STRINGIFY(CRYPT_ERROR_READPRNG),
+ _C_STRINGIFY(CRYPT_INVALID_CIPHER),
+ _C_STRINGIFY(CRYPT_INVALID_HASH),
+ _C_STRINGIFY(CRYPT_INVALID_PRNG),
+ _C_STRINGIFY(CRYPT_MEM),
+ _C_STRINGIFY(CRYPT_PK_TYPE_MISMATCH),
+ _C_STRINGIFY(CRYPT_PK_NOT_PRIVATE),
+ _C_STRINGIFY(CRYPT_INVALID_ARG),
+ _C_STRINGIFY(CRYPT_FILE_NOTFOUND),
+ _C_STRINGIFY(CRYPT_PK_INVALID_TYPE),
+ _C_STRINGIFY(CRYPT_OVERFLOW),
+ _C_STRINGIFY(CRYPT_UNUSED1),
+ _C_STRINGIFY(CRYPT_INPUT_TOO_LONG),
+ _C_STRINGIFY(CRYPT_PK_INVALID_SIZE),
+ _C_STRINGIFY(CRYPT_INVALID_PRIME_SIZE),
+ _C_STRINGIFY(CRYPT_PK_INVALID_PADDING),
+ _C_STRINGIFY(CRYPT_HASH_OVERFLOW),
+
+ _C_STRINGIFY(PK_PUBLIC),
+ _C_STRINGIFY(PK_PRIVATE),
+
+ _C_STRINGIFY(LTC_ENCRYPT),
+ _C_STRINGIFY(LTC_DECRYPT),
+
+#ifdef LTC_PKCS_1
+ {"LTC_PKCS_1", 1},
+ /* Block types */
+ _C_STRINGIFY(LTC_PKCS_1_EMSA),
+ _C_STRINGIFY(LTC_PKCS_1_EME),
+
+ /* Padding types */
+ _C_STRINGIFY(LTC_PKCS_1_V1_5),
+ _C_STRINGIFY(LTC_PKCS_1_OAEP),
+ _C_STRINGIFY(LTC_PKCS_1_PSS),
+ _C_STRINGIFY(LTC_PKCS_1_V1_5_NA1),
+#else
+ {"LTC_PKCS_1", 0},
+#endif
+
+#ifdef LTC_MRSA
+ {"LTC_MRSA", 1},
+#else
+ {"LTC_MRSA", 0},
+#endif
+
+#ifdef LTC_MKAT
+ {"LTC_MKAT", 1},
+ _C_STRINGIFY(MIN_KAT_SIZE),
+ _C_STRINGIFY(MAX_KAT_SIZE),
+#else
+ {"LTC_MKAT", 0},
+#endif
+
+#ifdef LTC_MECC
+ {"LTC_MECC", 1},
+ _C_STRINGIFY(ECC_BUF_SIZE),
+ _C_STRINGIFY(ECC_MAXSIZE),
+#else
+ {"LTC_MECC", 0},
+#endif
+
+#ifdef LTC_MDSA
+ {"LTC_MDSA", 1},
+ _C_STRINGIFY(LTC_MDSA_DELTA),
+ _C_STRINGIFY(LTC_MDSA_MAX_GROUP),
+#else
+ {"LTC_MDSA", 0},
+#endif
+
+#ifdef LTC_MILLER_RABIN_REPS
+ _C_STRINGIFY(LTC_MILLER_RABIN_REPS),
+#endif
+
+#ifdef LTC_DER
+/* DER handling */
+ _C_STRINGIFY(LTC_ASN1_EOL),
+ _C_STRINGIFY(LTC_ASN1_BOOLEAN),
+ _C_STRINGIFY(LTC_ASN1_INTEGER),
+ _C_STRINGIFY(LTC_ASN1_SHORT_INTEGER),
+ _C_STRINGIFY(LTC_ASN1_BIT_STRING),
+ _C_STRINGIFY(LTC_ASN1_OCTET_STRING),
+ _C_STRINGIFY(LTC_ASN1_NULL),
+ _C_STRINGIFY(LTC_ASN1_OBJECT_IDENTIFIER),
+ _C_STRINGIFY(LTC_ASN1_IA5_STRING),
+ _C_STRINGIFY(LTC_ASN1_PRINTABLE_STRING),
+ _C_STRINGIFY(LTC_ASN1_UTF8_STRING),
+ _C_STRINGIFY(LTC_ASN1_UTCTIME),
+ _C_STRINGIFY(LTC_ASN1_CHOICE),
+ _C_STRINGIFY(LTC_ASN1_SEQUENCE),
+ _C_STRINGIFY(LTC_ASN1_SET),
+ _C_STRINGIFY(LTC_ASN1_SETOF),
+ _C_STRINGIFY(LTC_ASN1_RAW_BIT_STRING),
+ _C_STRINGIFY(LTC_ASN1_TELETEX_STRING),
+ _C_STRINGIFY(LTC_ASN1_CONSTRUCTED),
+ _C_STRINGIFY(LTC_ASN1_CONTEXT_SPECIFIC),
+ _C_STRINGIFY(LTC_ASN1_GENERALIZEDTIME),
+#endif
+
+#ifdef LTC_CTR_MODE
+ {"LTC_CTR_MODE", 1},
+ _C_STRINGIFY(CTR_COUNTER_LITTLE_ENDIAN),
+ _C_STRINGIFY(CTR_COUNTER_BIG_ENDIAN),
+ _C_STRINGIFY(LTC_CTR_RFC3686),
+#else
+ {"LTC_CTR_MODE", 0},
+#endif
+#ifdef LTC_GCM_MODE
+ _C_STRINGIFY(LTC_GCM_MODE_IV),
+ _C_STRINGIFY(LTC_GCM_MODE_AAD),
+ _C_STRINGIFY(LTC_GCM_MODE_TEXT),
+#endif
+
+ _C_STRINGIFY(LTC_MP_LT),
+ _C_STRINGIFY(LTC_MP_EQ),
+ _C_STRINGIFY(LTC_MP_GT),
+
+ _C_STRINGIFY(LTC_MP_NO),
+ _C_STRINGIFY(LTC_MP_YES),
+
+ _C_STRINGIFY(MAXBLOCKSIZE),
+ _C_STRINGIFY(TAB_SIZE),
+ _C_STRINGIFY(ARGTYPE),
+
+#ifdef LTM_DESC
+ {"LTM_DESC", 1},
+#else
+ {"LTM_DESC", 0},
+#endif
+#ifdef TFM_DESC
+ {"TFM_DESC", 1},
+#else
+ {"TFM_DESC", 0},
+#endif
+#ifdef GMP_DESC
+ {"GMP_DESC", 1},
+#else
+ {"GMP_DESC", 0},
+#endif
+
+#ifdef LTC_FAST
+ {"LTC_FAST", 1},
+#else
+ {"LTC_FAST", 0},
+#endif
+
+#ifdef LTC_NO_FILE
+ {"LTC_NO_FILE", 1},
+#else
+ {"LTC_NO_FILE", 0},
+#endif
+
+#ifdef ENDIAN_LITTLE
+ {"ENDIAN_LITTLE", 1},
+#else
+ {"ENDIAN_LITTLE", 0},
+#endif
+
+#ifdef ENDIAN_BIG
+ {"ENDIAN_BIG", 1},
+#else
+ {"ENDIAN_BIG", 0},
+#endif
+
+#ifdef ENDIAN_32BITWORD
+ {"ENDIAN_32BITWORD", 1},
+#else
+ {"ENDIAN_32BITWORD", 0},
+#endif
+
+#ifdef ENDIAN_64BITWORD
+ {"ENDIAN_64BITWORD", 1},
+#else
+ {"ENDIAN_64BITWORD", 0},
+#endif
+
+#ifdef ENDIAN_NEUTRAL
+ {"ENDIAN_NEUTRAL", 1},
+#else
+ {"ENDIAN_NEUTRAL", 0},
+#endif
+};
+
+
+/* crypt_get_constant()
+ * valueout will be the value of the named constant
+ * return -1 if named item not found
+ */
+int crypt_get_constant(const char* namein, int *valueout) {
+ int i;
+ int _crypt_constants_len = sizeof(_crypt_constants) / sizeof(_crypt_constants[0]);
+ for (i=0; i<_crypt_constants_len; i++) {
+ if (XSTRCMP(_crypt_constants[i].name, namein) == 0) {
+ *valueout = _crypt_constants[i].value;
+ return 0;
+ }
+ }
+ return 1;
+}
+
+/* crypt_list_all_constants()
+ * if names_list is NULL, names_list_size will be the minimum
+ * number of bytes needed to receive the complete names_list
+ * if names_list is NOT NULL, names_list must be the addr of
+ * sufficient memory allocated into which the names_list
+ * is to be written. Also, the value in names_list_size
+ * sets the upper bound of the number of characters to be
+ * written.
+ * a -1 return value signifies insufficient space made available
+ */
+int crypt_list_all_constants(char *names_list, unsigned int *names_list_size) {
+ int i;
+ unsigned int total_len = 0;
+ char number[32], *ptr;
+ int number_len;
+ int count = sizeof(_crypt_constants) / sizeof(_crypt_constants[0]);
+
+ /* calculate amount of memory required for the list */
+ for (i=0; i<count; i++) {
+ total_len += (unsigned int)strlen(_crypt_constants[i].name) + 1;
+ /* the above +1 is for the commas */
+ number_len = snprintf(number, sizeof(number), "%d", _crypt_constants[i].value);
+ if ((number_len < 0) ||
+ ((unsigned int)number_len >= sizeof(number)))
+ return -1;
+ total_len += number_len + 1;
+ /* this last +1 is for newlines (and ending NULL) */
+ }
+
+ if (names_list == NULL) {
+ *names_list_size = total_len;
+ } else {
+ if (total_len > *names_list_size) {
+ return -1;
+ }
+ /* build the names list */
+ ptr = names_list;
+ for (i=0; i<count; i++) {
+ strcpy(ptr, _crypt_constants[i].name);
+ ptr += strlen(_crypt_constants[i].name);
+ strcpy(ptr, ",");
+ ptr += 1;
+
+ number_len = snprintf(number, sizeof(number), "%d", _crypt_constants[i].value);
+ strcpy(ptr, number);
+ ptr += number_len;
+ strcpy(ptr, "\n");
+ ptr += 1;
+ }
+ /* to remove the trailing new-line */
+ ptr -= 1;
+ *ptr = 0;
+ }
+ return 0;
+}
+
+
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_find_cipher.c b/libtomcrypt/src/misc/crypt/crypt_find_cipher.c
index 0c563b0..ba908f4 100644
--- a/libtomcrypt/src/misc/crypt/crypt_find_cipher.c
+++ b/libtomcrypt/src/misc/crypt/crypt_find_cipher.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -36,6 +34,6 @@ int find_cipher(const char *name)
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c b/libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c
index c528e6e..5cdcdf8 100644
--- a/libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c
+++ b/libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -16,7 +14,7 @@
*/
/**
- Find a cipher flexibly. First by name then if not present by block and key size
+ Find a cipher flexibly. First by name then if not present by block and key size
@param name The name of the cipher desired
@param blocklen The minimum length of the block cipher desired (octets)
@param keylen The minimum length of the key size desired (octets)
@@ -26,10 +24,10 @@ int find_cipher_any(const char *name, int blocklen, int keylen)
{
int x;
- LTC_ARGCHK(name != NULL);
-
- x = find_cipher(name);
- if (x != -1) return x;
+ if(name != NULL) {
+ x = find_cipher(name);
+ if (x != -1) return x;
+ }
LTC_MUTEX_LOCK(&ltc_cipher_mutex);
for (x = 0; x < TAB_SIZE; x++) {
@@ -45,6 +43,6 @@ int find_cipher_any(const char *name, int blocklen, int keylen)
return -1;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_find_cipher_id.c b/libtomcrypt/src/misc/crypt/crypt_find_cipher_id.c
index be4e0fa..34d0049 100644
--- a/libtomcrypt/src/misc/crypt/crypt_find_cipher_id.c
+++ b/libtomcrypt/src/misc/crypt/crypt_find_cipher_id.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -35,6 +33,6 @@ int find_cipher_id(unsigned char ID)
return -1;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_find_hash.c b/libtomcrypt/src/misc/crypt/crypt_find_hash.c
index 12ef320..19ee55c 100644
--- a/libtomcrypt/src/misc/crypt/crypt_find_hash.c
+++ b/libtomcrypt/src/misc/crypt/crypt_find_hash.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -35,6 +33,6 @@ int find_hash(const char *name)
return -1;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_find_hash_any.c b/libtomcrypt/src/misc/crypt/crypt_find_hash_any.c
index 65ecce7..413809f 100644
--- a/libtomcrypt/src/misc/crypt/crypt_find_hash_any.c
+++ b/libtomcrypt/src/misc/crypt/crypt_find_hash_any.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -16,7 +14,7 @@
*/
/**
- Find a hash flexibly. First by name then if not present by digest size
+ Find a hash flexibly. First by name then if not present by digest size
@param name The name of the hash desired
@param digestlen The minimum length of the digest size (octets)
@return >= 0 if found, -1 if not present
@@ -44,6 +42,6 @@
return z;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_find_hash_id.c b/libtomcrypt/src/misc/crypt/crypt_find_hash_id.c
index f8e75fc..ea784e8 100644
--- a/libtomcrypt/src/misc/crypt/crypt_find_hash_id.c
+++ b/libtomcrypt/src/misc/crypt/crypt_find_hash_id.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -35,6 +33,6 @@ int find_hash_id(unsigned char ID)
return -1;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_find_hash_oid.c b/libtomcrypt/src/misc/crypt/crypt_find_hash_oid.c
index 19aece7..026cc73 100644
--- a/libtomcrypt/src/misc/crypt/crypt_find_hash_oid.c
+++ b/libtomcrypt/src/misc/crypt/crypt_find_hash_oid.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -30,6 +28,6 @@ int find_hash_oid(const unsigned long *ID, unsigned long IDlen)
return -1;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_find_prng.c b/libtomcrypt/src/misc/crypt/crypt_find_prng.c
index af3f7b6..a0cad16 100644
--- a/libtomcrypt/src/misc/crypt/crypt_find_prng.c
+++ b/libtomcrypt/src/misc/crypt/crypt_find_prng.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -36,6 +34,6 @@ int find_prng(const char *name)
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_fsa.c b/libtomcrypt/src/misc/crypt/crypt_fsa.c
index 3d6d86d..dc2a570 100644
--- a/libtomcrypt/src/misc/crypt/crypt_fsa.c
+++ b/libtomcrypt/src/misc/crypt/crypt_fsa.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
#include <stdarg.h>
@@ -14,12 +12,11 @@
/**
@file crypt_fsa.c
LibTomCrypt FULL SPEED AHEAD!, Tom St Denis
-*/
+*/
/* format is ltc_mp, cipher_desc, [cipher_desc], NULL, hash_desc, [hash_desc], NULL, prng_desc, [prng_desc], NULL */
int crypt_fsa(void *mp, ...)
{
- int err;
va_list args;
void *p;
@@ -27,33 +24,33 @@ int crypt_fsa(void *mp, ...)
if (mp != NULL) {
XMEMCPY(&ltc_mp, mp, sizeof(ltc_mp));
}
-
+
while ((p = va_arg(args, void*)) != NULL) {
- if ((err = register_cipher(p)) != CRYPT_OK) {
+ if (register_cipher(p) == -1) {
va_end(args);
- return err;
+ return CRYPT_INVALID_CIPHER;
}
}
while ((p = va_arg(args, void*)) != NULL) {
- if ((err = register_hash(p)) != CRYPT_OK) {
+ if (register_hash(p) == -1) {
va_end(args);
- return err;
+ return CRYPT_INVALID_HASH;
}
}
while ((p = va_arg(args, void*)) != NULL) {
- if ((err = register_prng(p)) != CRYPT_OK) {
+ if (register_prng(p) == -1) {
va_end(args);
- return err;
+ return CRYPT_INVALID_PRNG;
}
}
va_end(args);
- return CRYPT_OK;
+ return CRYPT_OK;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c b/libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c
index a0c3c1a..6e1103f 100644
--- a/libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c
+++ b/libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c
@@ -5,14 +5,12 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
/**
@file crypt_hash_descriptor.c
- Stores the hash descriptor table, Tom St Denis
+ Stores the hash descriptor table, Tom St Denis
*/
struct ltc_hash_descriptor hash_descriptor[TAB_SIZE] = {
@@ -22,6 +20,6 @@ struct ltc_hash_descriptor hash_descriptor[TAB_SIZE] = {
LTC_MUTEX_GLOBAL(ltc_hash_mutex)
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c b/libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c
index 011f829..ca75f05 100644
--- a/libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c
+++ b/libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c
@@ -5,15 +5,13 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
/**
@file crypt_hash_is_valid.c
Determine if hash is valid, Tom St Denis
-*/
+*/
/*
Test if a hash index is valid
@@ -31,6 +29,6 @@ int hash_is_valid(int idx)
return CRYPT_OK;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_inits.c b/libtomcrypt/src/misc/crypt/crypt_inits.c
new file mode 100644
index 0000000..8042f38
--- /dev/null
+++ b/libtomcrypt/src/misc/crypt/crypt_inits.c
@@ -0,0 +1,43 @@
+/* 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.
+ */
+#include "tomcrypt.h"
+
+/**
+ @file crypt_inits.c
+
+ Provide math library functions for dynamic languages
+ like Python - Larry Bugbee, February 2013
+*/
+
+
+#ifdef LTM_DESC
+void init_LTM(void)
+{
+ ltc_mp = ltm_desc;
+}
+#endif
+
+#ifdef TFM_DESC
+void init_TFM(void)
+{
+ ltc_mp = tfm_desc;
+}
+#endif
+
+#ifdef GMP_DESC
+void init_GMP(void)
+{
+ ltc_mp = gmp_desc;
+}
+#endif
+
+
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_ltc_mp_descriptor.c b/libtomcrypt/src/misc/crypt/crypt_ltc_mp_descriptor.c
index 8e565d2..0f1407c 100644
--- a/libtomcrypt/src/misc/crypt/crypt_ltc_mp_descriptor.c
+++ b/libtomcrypt/src/misc/crypt/crypt_ltc_mp_descriptor.c
@@ -5,9 +5,12 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
-ltc_math_descriptor ltc_mp = {0};
+/* Initialize ltc_mp to nulls, to force allocation on all platforms, including macOS. */
+ltc_math_descriptor ltc_mp = { 0 };
+
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c b/libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c
index 3af9df5..276047c 100644
--- a/libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c
+++ b/libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c
@@ -5,15 +5,13 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "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 }
};
@@ -21,6 +19,6 @@ struct ltc_prng_descriptor prng_descriptor[TAB_SIZE] = {
LTC_MUTEX_GLOBAL(ltc_prng_mutex)
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c b/libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c
index ccc6e04..9930a06 100644
--- a/libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c
+++ b/libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -31,6 +29,6 @@ int prng_is_valid(int idx)
return CRYPT_OK;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_prng_rng_descriptor.c b/libtomcrypt/src/misc/crypt/crypt_prng_rng_descriptor.c
new file mode 100644
index 0000000..1a79337
--- /dev/null
+++ b/libtomcrypt/src/misc/crypt/crypt_prng_rng_descriptor.c
@@ -0,0 +1,17 @@
+/* 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.
+ */
+#include "tomcrypt.h"
+
+#ifdef LTC_PRNG_ENABLE_LTC_RNG
+unsigned long (*ltc_rng)(unsigned char *out, unsigned long outlen, void (*callback)(void));
+#endif
+
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_register_all_ciphers.c b/libtomcrypt/src/misc/crypt/crypt_register_all_ciphers.c
new file mode 100644
index 0000000..3250a93
--- /dev/null
+++ b/libtomcrypt/src/misc/crypt/crypt_register_all_ciphers.c
@@ -0,0 +1,100 @@
+/* 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.
+ */
+
+#include "tomcrypt.h"
+
+/**
+ @file crypt_register_all_ciphers.c
+
+ Steffen Jaeckel
+*/
+
+#define REGISTER_CIPHER(h) do {\
+ LTC_ARGCHK(register_cipher(h) != -1); \
+} while(0)
+
+int register_all_ciphers(void)
+{
+#ifdef LTC_RIJNDAEL
+#ifdef ENCRYPT_ONLY
+ /* alternative would be
+ * register_cipher(&rijndael_enc_desc);
+ */
+ REGISTER_CIPHER(&aes_enc_desc);
+#else
+ /* alternative would be
+ * register_cipher(&rijndael_desc);
+ */
+ REGISTER_CIPHER(&aes_desc);
+#endif
+#endif
+#ifdef LTC_BLOWFISH
+ REGISTER_CIPHER(&blowfish_desc);
+#endif
+#ifdef LTC_XTEA
+ REGISTER_CIPHER(&xtea_desc);
+#endif
+#ifdef LTC_RC5
+ REGISTER_CIPHER(&rc5_desc);
+#endif
+#ifdef LTC_RC6
+ REGISTER_CIPHER(&rc6_desc);
+#endif
+#ifdef LTC_SAFERP
+ REGISTER_CIPHER(&saferp_desc);
+#endif
+#ifdef LTC_TWOFISH
+ REGISTER_CIPHER(&twofish_desc);
+#endif
+#ifdef LTC_SAFER
+ REGISTER_CIPHER(&safer_k64_desc);
+ REGISTER_CIPHER(&safer_sk64_desc);
+ REGISTER_CIPHER(&safer_k128_desc);
+ REGISTER_CIPHER(&safer_sk128_desc);
+#endif
+#ifdef LTC_RC2
+ REGISTER_CIPHER(&rc2_desc);
+#endif
+#ifdef LTC_DES
+ REGISTER_CIPHER(&des_desc);
+ REGISTER_CIPHER(&des3_desc);
+#endif
+#ifdef LTC_CAST5
+ REGISTER_CIPHER(&cast5_desc);
+#endif
+#ifdef LTC_NOEKEON
+ REGISTER_CIPHER(&noekeon_desc);
+#endif
+#ifdef LTC_SKIPJACK
+ REGISTER_CIPHER(&skipjack_desc);
+#endif
+#ifdef LTC_ANUBIS
+ REGISTER_CIPHER(&anubis_desc);
+#endif
+#ifdef LTC_KHAZAD
+ REGISTER_CIPHER(&khazad_desc);
+#endif
+#ifdef LTC_KSEED
+ REGISTER_CIPHER(&kseed_desc);
+#endif
+#ifdef LTC_KASUMI
+ REGISTER_CIPHER(&kasumi_desc);
+#endif
+#ifdef LTC_MULTI2
+ REGISTER_CIPHER(&multi2_desc);
+#endif
+#ifdef LTC_CAMELLIA
+ REGISTER_CIPHER(&camellia_desc);
+#endif
+ return CRYPT_OK;
+}
+
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_register_all_hashes.c b/libtomcrypt/src/misc/crypt/crypt_register_all_hashes.c
new file mode 100644
index 0000000..b529389
--- /dev/null
+++ b/libtomcrypt/src/misc/crypt/crypt_register_all_hashes.c
@@ -0,0 +1,99 @@
+/* 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.
+ */
+
+#include "tomcrypt.h"
+
+/**
+ @file crypt_register_all_hashes.c
+
+ Steffen Jaeckel
+*/
+
+#define REGISTER_HASH(h) do {\
+ LTC_ARGCHK(register_hash(h) != -1); \
+} while(0)
+
+int register_all_hashes(void)
+{
+#ifdef LTC_TIGER
+ REGISTER_HASH(&tiger_desc);
+#endif
+#ifdef LTC_MD2
+ REGISTER_HASH(&md2_desc);
+#endif
+#ifdef LTC_MD4
+ REGISTER_HASH(&md4_desc);
+#endif
+#ifdef LTC_MD5
+ REGISTER_HASH(&md5_desc);
+#endif
+#ifdef LTC_SHA1
+ REGISTER_HASH(&sha1_desc);
+#endif
+#ifdef LTC_SHA224
+ REGISTER_HASH(&sha224_desc);
+#endif
+#ifdef LTC_SHA256
+ REGISTER_HASH(&sha256_desc);
+#endif
+#ifdef LTC_SHA384
+ REGISTER_HASH(&sha384_desc);
+#endif
+#ifdef LTC_SHA512
+ REGISTER_HASH(&sha512_desc);
+#endif
+#ifdef LTC_SHA512_224
+ REGISTER_HASH(&sha512_224_desc);
+#endif
+#ifdef LTC_SHA512_256
+ REGISTER_HASH(&sha512_256_desc);
+#endif
+#ifdef LTC_SHA3
+ REGISTER_HASH(&sha3_224_desc);
+ REGISTER_HASH(&sha3_256_desc);
+ REGISTER_HASH(&sha3_384_desc);
+ REGISTER_HASH(&sha3_512_desc);
+#endif
+#ifdef LTC_RIPEMD128
+ REGISTER_HASH(&rmd128_desc);
+#endif
+#ifdef LTC_RIPEMD160
+ REGISTER_HASH(&rmd160_desc);
+#endif
+#ifdef LTC_RIPEMD256
+ REGISTER_HASH(&rmd256_desc);
+#endif
+#ifdef LTC_RIPEMD320
+ REGISTER_HASH(&rmd320_desc);
+#endif
+#ifdef LTC_WHIRLPOOL
+ REGISTER_HASH(&whirlpool_desc);
+#endif
+#ifdef LTC_BLAKE2S
+ REGISTER_HASH(&blake2s_128_desc);
+ REGISTER_HASH(&blake2s_160_desc);
+ REGISTER_HASH(&blake2s_224_desc);
+ REGISTER_HASH(&blake2s_256_desc);
+#endif
+#ifdef LTC_BLAKE2S
+ REGISTER_HASH(&blake2b_160_desc);
+ REGISTER_HASH(&blake2b_256_desc);
+ REGISTER_HASH(&blake2b_384_desc);
+ REGISTER_HASH(&blake2b_512_desc);
+#endif
+#ifdef LTC_CHC_HASH
+ REGISTER_HASH(&chc_desc);
+ LTC_ARGCHK(chc_register(find_cipher_any("aes", 8, 16)) == CRYPT_OK);
+#endif
+ return CRYPT_OK;
+}
+
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_register_all_prngs.c b/libtomcrypt/src/misc/crypt/crypt_register_all_prngs.c
new file mode 100644
index 0000000..aca8a36
--- /dev/null
+++ b/libtomcrypt/src/misc/crypt/crypt_register_all_prngs.c
@@ -0,0 +1,48 @@
+/* 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.
+ */
+
+#include "tomcrypt.h"
+
+/**
+ @file crypt_register_all_prngs.c
+
+ Steffen Jaeckel
+*/
+
+#define REGISTER_PRNG(h) do {\
+ LTC_ARGCHK(register_prng(h) != -1); \
+} while(0)
+
+int register_all_prngs(void)
+{
+#ifdef LTC_YARROW
+ REGISTER_PRNG(&yarrow_desc);
+#endif
+#ifdef LTC_FORTUNA
+ REGISTER_PRNG(&fortuna_desc);
+#endif
+#ifdef LTC_RC4
+ REGISTER_PRNG(&rc4_desc);
+#endif
+#ifdef LTC_CHACHA20_PRNG
+ REGISTER_PRNG(&chacha20_prng_desc);
+#endif
+#ifdef LTC_SOBER128
+ REGISTER_PRNG(&sober128_desc);
+#endif
+#ifdef LTC_SPRNG
+ REGISTER_PRNG(&sprng_desc);
+#endif
+
+ return CRYPT_OK;
+}
+
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_register_cipher.c b/libtomcrypt/src/misc/crypt/crypt_register_cipher.c
index d7feedf..85178d2 100644
--- a/libtomcrypt/src/misc/crypt/crypt_register_cipher.c
+++ b/libtomcrypt/src/misc/crypt/crypt_register_cipher.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -49,6 +47,6 @@ int register_cipher(const struct ltc_cipher_descriptor *cipher)
return -1;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_register_hash.c b/libtomcrypt/src/misc/crypt/crypt_register_hash.c
index 10ccee4..fc7f4e0 100644
--- a/libtomcrypt/src/misc/crypt/crypt_register_hash.c
+++ b/libtomcrypt/src/misc/crypt/crypt_register_hash.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -49,6 +47,6 @@ int register_hash(const struct ltc_hash_descriptor *hash)
return -1;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_register_prng.c b/libtomcrypt/src/misc/crypt/crypt_register_prng.c
index 1724df0..9cbd634 100644
--- a/libtomcrypt/src/misc/crypt/crypt_register_prng.c
+++ b/libtomcrypt/src/misc/crypt/crypt_register_prng.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -14,7 +12,7 @@
@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
@@ -49,6 +47,6 @@ int register_prng(const struct ltc_prng_descriptor *prng)
return -1;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_sizes.c b/libtomcrypt/src/misc/crypt/crypt_sizes.c
new file mode 100644
index 0000000..79b3bd4
--- /dev/null
+++ b/libtomcrypt/src/misc/crypt/crypt_sizes.c
@@ -0,0 +1,356 @@
+/* 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.
+ */
+#include "tomcrypt.h"
+
+/**
+ @file crypt_sizes.c
+
+ Make various struct sizes available to dynamic languages
+ like Python - Larry Bugbee, February 2013
+
+ LB - Dec 2013 - revised to include compiler define options
+*/
+
+
+typedef struct {
+ const char *name;
+ const unsigned int size;
+} crypt_size;
+
+#define _SZ_STRINGIFY_S(s) { #s, sizeof(struct s) }
+#define _SZ_STRINGIFY_T(s) { #s, sizeof(s) }
+
+static const crypt_size _crypt_sizes[] = {
+ /* hash state sizes */
+ _SZ_STRINGIFY_S(ltc_hash_descriptor),
+ _SZ_STRINGIFY_T(hash_state),
+#ifdef LTC_CHC_HASH
+ _SZ_STRINGIFY_S(chc_state),
+#endif
+#ifdef LTC_WHIRLPOOL
+ _SZ_STRINGIFY_S(whirlpool_state),
+#endif
+#ifdef LTC_SHA3
+ _SZ_STRINGIFY_S(sha3_state),
+#endif
+#ifdef LTC_SHA512
+ _SZ_STRINGIFY_S(sha512_state),
+#endif
+#ifdef LTC_SHA256
+ _SZ_STRINGIFY_S(sha256_state),
+#endif
+#ifdef LTC_SHA1
+ _SZ_STRINGIFY_S(sha1_state),
+#endif
+#ifdef LTC_MD5
+ _SZ_STRINGIFY_S(md5_state),
+#endif
+#ifdef LTC_MD4
+ _SZ_STRINGIFY_S(md4_state),
+#endif
+#ifdef LTC_MD2
+ _SZ_STRINGIFY_S(md2_state),
+#endif
+#ifdef LTC_TIGER
+ _SZ_STRINGIFY_S(tiger_state),
+#endif
+#ifdef LTC_RIPEMD128
+ _SZ_STRINGIFY_S(rmd128_state),
+#endif
+#ifdef LTC_RIPEMD160
+ _SZ_STRINGIFY_S(rmd160_state),
+#endif
+#ifdef LTC_RIPEMD256
+ _SZ_STRINGIFY_S(rmd256_state),
+#endif
+#ifdef LTC_RIPEMD320
+ _SZ_STRINGIFY_S(rmd320_state),
+#endif
+#ifdef LTC_BLAKE2S
+ _SZ_STRINGIFY_S(blake2s_state),
+#endif
+#ifdef LTC_BLAKE2B
+ _SZ_STRINGIFY_S(blake2b_state),
+#endif
+
+ /* block cipher key sizes */
+ _SZ_STRINGIFY_S(ltc_cipher_descriptor),
+ _SZ_STRINGIFY_T(symmetric_key),
+#ifdef LTC_ANUBIS
+ _SZ_STRINGIFY_S(anubis_key),
+#endif
+#ifdef LTC_CAMELLIA
+ _SZ_STRINGIFY_S(camellia_key),
+#endif
+#ifdef LTC_BLOWFISH
+ _SZ_STRINGIFY_S(blowfish_key),
+#endif
+#ifdef LTC_CAST5
+ _SZ_STRINGIFY_S(cast5_key),
+#endif
+#ifdef LTC_DES
+ _SZ_STRINGIFY_S(des_key),
+ _SZ_STRINGIFY_S(des3_key),
+#endif
+#ifdef LTC_KASUMI
+ _SZ_STRINGIFY_S(kasumi_key),
+#endif
+#ifdef LTC_KHAZAD
+ _SZ_STRINGIFY_S(khazad_key),
+#endif
+#ifdef LTC_KSEED
+ _SZ_STRINGIFY_S(kseed_key),
+#endif
+#ifdef LTC_MULTI2
+ _SZ_STRINGIFY_S(multi2_key),
+#endif
+#ifdef LTC_NOEKEON
+ _SZ_STRINGIFY_S(noekeon_key),
+#endif
+#ifdef LTC_RC2
+ _SZ_STRINGIFY_S(rc2_key),
+#endif
+#ifdef LTC_RC5
+ _SZ_STRINGIFY_S(rc5_key),
+#endif
+#ifdef LTC_RC6
+ _SZ_STRINGIFY_S(rc6_key),
+#endif
+#ifdef LTC_SKIPJACK
+ _SZ_STRINGIFY_S(skipjack_key),
+#endif
+#ifdef LTC_XTEA
+ _SZ_STRINGIFY_S(xtea_key),
+#endif
+#ifdef LTC_RIJNDAEL
+ _SZ_STRINGIFY_S(rijndael_key),
+#endif
+#ifdef LTC_SAFER
+ _SZ_STRINGIFY_S(safer_key),
+#endif
+#ifdef LTC_SAFERP
+ _SZ_STRINGIFY_S(saferp_key),
+#endif
+#ifdef LTC_TWOFISH
+ _SZ_STRINGIFY_S(twofish_key),
+#endif
+
+ /* mode sizes */
+#ifdef LTC_ECB_MODE
+ _SZ_STRINGIFY_T(symmetric_ECB),
+#endif
+#ifdef LTC_CFB_MODE
+ _SZ_STRINGIFY_T(symmetric_CFB),
+#endif
+#ifdef LTC_OFB_MODE
+ _SZ_STRINGIFY_T(symmetric_OFB),
+#endif
+#ifdef LTC_CBC_MODE
+ _SZ_STRINGIFY_T(symmetric_CBC),
+#endif
+#ifdef LTC_CTR_MODE
+ _SZ_STRINGIFY_T(symmetric_CTR),
+#endif
+#ifdef LTC_LRW_MODE
+ _SZ_STRINGIFY_T(symmetric_LRW),
+#endif
+#ifdef LTC_F8_MODE
+ _SZ_STRINGIFY_T(symmetric_F8),
+#endif
+#ifdef LTC_XTS_MODE
+ _SZ_STRINGIFY_T(symmetric_xts),
+#endif
+
+ /* stream cipher sizes */
+#ifdef LTC_CHACHA
+ _SZ_STRINGIFY_T(chacha_state),
+#endif
+#ifdef LTC_RC4_STREAM
+ _SZ_STRINGIFY_T(rc4_state),
+#endif
+#ifdef LTC_SOBER128_STREAM
+ _SZ_STRINGIFY_T(sober128_state),
+#endif
+
+ /* MAC sizes -- no states for ccm, lrw */
+#ifdef LTC_HMAC
+ _SZ_STRINGIFY_T(hmac_state),
+#endif
+#ifdef LTC_OMAC
+ _SZ_STRINGIFY_T(omac_state),
+#endif
+#ifdef LTC_PMAC
+ _SZ_STRINGIFY_T(pmac_state),
+#endif
+#ifdef LTC_POLY1305
+ _SZ_STRINGIFY_T(poly1305_state),
+#endif
+#ifdef LTC_EAX_MODE
+ _SZ_STRINGIFY_T(eax_state),
+#endif
+#ifdef LTC_OCB_MODE
+ _SZ_STRINGIFY_T(ocb_state),
+#endif
+#ifdef LTC_OCB3_MODE
+ _SZ_STRINGIFY_T(ocb3_state),
+#endif
+#ifdef LTC_CCM_MODE
+ _SZ_STRINGIFY_T(ccm_state),
+#endif
+#ifdef LTC_GCM_MODE
+ _SZ_STRINGIFY_T(gcm_state),
+#endif
+#ifdef LTC_PELICAN
+ _SZ_STRINGIFY_T(pelican_state),
+#endif
+#ifdef LTC_XCBC
+ _SZ_STRINGIFY_T(xcbc_state),
+#endif
+#ifdef LTC_F9_MODE
+ _SZ_STRINGIFY_T(f9_state),
+#endif
+#ifdef LTC_CHACHA20POLY1305_MODE
+ _SZ_STRINGIFY_T(chacha20poly1305_state),
+#endif
+
+ /* asymmetric keys */
+#ifdef LTC_MRSA
+ _SZ_STRINGIFY_T(rsa_key),
+#endif
+#ifdef LTC_MDSA
+ _SZ_STRINGIFY_T(dsa_key),
+#endif
+#ifdef LTC_MDH
+ _SZ_STRINGIFY_T(dh_key),
+#endif
+#ifdef LTC_MECC
+ _SZ_STRINGIFY_T(ltc_ecc_set_type),
+ _SZ_STRINGIFY_T(ecc_point),
+ _SZ_STRINGIFY_T(ecc_key),
+#endif
+#ifdef LTC_MKAT
+ _SZ_STRINGIFY_T(katja_key),
+#endif
+
+ /* DER handling */
+#ifdef LTC_DER
+ _SZ_STRINGIFY_T(ltc_asn1_list), /* a list entry */
+ _SZ_STRINGIFY_T(ltc_utctime),
+ _SZ_STRINGIFY_T(ltc_generalizedtime),
+#endif
+
+ /* prng state sizes */
+ _SZ_STRINGIFY_S(ltc_prng_descriptor),
+ _SZ_STRINGIFY_T(prng_state),
+#ifdef LTC_FORTUNA
+ _SZ_STRINGIFY_S(fortuna_prng),
+#endif
+#ifdef LTC_CHACHA20_PRNG
+ _SZ_STRINGIFY_S(chacha20_prng),
+#endif
+#ifdef LTC_RC4
+ _SZ_STRINGIFY_S(rc4_prng),
+#endif
+#ifdef LTC_SOBER128
+ _SZ_STRINGIFY_S(sober128_prng),
+#endif
+#ifdef LTC_YARROW
+ _SZ_STRINGIFY_S(yarrow_prng),
+#endif
+ /* sprng has no state as it uses other potentially available sources */
+ /* like /dev/random. See Developers Guide for more info. */
+
+#ifdef LTC_ADLER32
+ _SZ_STRINGIFY_T(adler32_state),
+#endif
+#ifdef LTC_CRC32
+ _SZ_STRINGIFY_T(crc32_state),
+#endif
+
+ _SZ_STRINGIFY_T(ltc_mp_digit),
+ _SZ_STRINGIFY_T(ltc_math_descriptor)
+
+};
+
+/* crypt_get_size()
+ * sizeout will be the size (bytes) of the named struct or union
+ * return -1 if named item not found
+ */
+int crypt_get_size(const char* namein, unsigned int *sizeout) {
+ int i;
+ int count = sizeof(_crypt_sizes) / sizeof(_crypt_sizes[0]);
+ for (i=0; i<count; i++) {
+ if (XSTRCMP(_crypt_sizes[i].name, namein) == 0) {
+ *sizeout = _crypt_sizes[i].size;
+ return 0;
+ }
+ }
+ return -1;
+}
+
+/* crypt_list_all_sizes()
+ * if names_list is NULL, names_list_size will be the minimum
+ * size needed to receive the complete names_list
+ * if names_list is NOT NULL, names_list must be the addr with
+ * sufficient memory allocated into which the names_list
+ * is to be written. Also, the value in names_list_size
+ * sets the upper bound of the number of characters to be
+ * written.
+ * a -1 return value signifies insufficient space made available
+ */
+int crypt_list_all_sizes(char *names_list, unsigned int *names_list_size) {
+ int i;
+ unsigned int total_len = 0;
+ char number[32], *ptr;
+ int number_len;
+ int count = sizeof(_crypt_sizes) / sizeof(_crypt_sizes[0]);
+
+ /* calculate amount of memory required for the list */
+ for (i=0; i<count; i++) {
+ total_len += (unsigned int)strlen(_crypt_sizes[i].name) + 1;
+ /* the above +1 is for the commas */
+ number_len = snprintf(number, sizeof(number), "%u", _crypt_sizes[i].size);
+ if ((number_len < 0) ||
+ ((unsigned int)number_len >= sizeof(number)))
+ return -1;
+ total_len += (unsigned int)strlen(number) + 1;
+ /* this last +1 is for newlines (and ending NULL) */
+ }
+
+ if (names_list == NULL) {
+ *names_list_size = total_len;
+ } else {
+ if (total_len > *names_list_size) {
+ return -1;
+ }
+ /* build the names list */
+ ptr = names_list;
+ for (i=0; i<count; i++) {
+ strcpy(ptr, _crypt_sizes[i].name);
+ ptr += strlen(_crypt_sizes[i].name);
+ strcpy(ptr, ",");
+ ptr += 1;
+
+ number_len = snprintf(number, sizeof(number), "%u", _crypt_sizes[i].size);
+ strcpy(ptr, number);
+ ptr += number_len;
+ strcpy(ptr, "\n");
+ ptr += 1;
+ }
+ /* to remove the trailing new-line */
+ ptr -= 1;
+ *ptr = 0;
+ }
+ return 0;
+}
+
+
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_unregister_cipher.c b/libtomcrypt/src/misc/crypt/crypt_unregister_cipher.c
index b75785f..b57c736 100644
--- a/libtomcrypt/src/misc/crypt/crypt_unregister_cipher.c
+++ b/libtomcrypt/src/misc/crypt/crypt_unregister_cipher.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -40,6 +38,6 @@ int unregister_cipher(const struct ltc_cipher_descriptor *cipher)
return CRYPT_ERROR;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_unregister_hash.c b/libtomcrypt/src/misc/crypt/crypt_unregister_hash.c
index ac95d2d..dbbff33 100644
--- a/libtomcrypt/src/misc/crypt/crypt_unregister_hash.c
+++ b/libtomcrypt/src/misc/crypt/crypt_unregister_hash.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -39,6 +37,6 @@ int unregister_hash(const struct ltc_hash_descriptor *hash)
return CRYPT_ERROR;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */
diff --git a/libtomcrypt/src/misc/crypt/crypt_unregister_prng.c b/libtomcrypt/src/misc/crypt/crypt_unregister_prng.c
index bb34501..f7606ef 100644
--- a/libtomcrypt/src/misc/crypt/crypt_unregister_prng.c
+++ b/libtomcrypt/src/misc/crypt/crypt_unregister_prng.c
@@ -5,8 +5,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
*/
#include "tomcrypt.h"
@@ -25,11 +23,11 @@ int unregister_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) {
+ if (XMEMCMP(&prng_descriptor[x], prng, sizeof(struct ltc_prng_descriptor)) == 0) {
prng_descriptor[x].name = NULL;
LTC_MUTEX_UNLOCK(&ltc_prng_mutex);
return CRYPT_OK;
@@ -39,6 +37,6 @@ int unregister_prng(const struct ltc_prng_descriptor *prng)
return CRYPT_ERROR;
}
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref: $Format:%D$ */
+/* git commit: $Format:%H$ */
+/* commit time: $Format:%ai$ */