added libtomcrypt-1.02
This commit is contained in:
parent
6ac9952498
commit
65c1317eee
2
Doxyfile
2
Doxyfile
@ -23,7 +23,7 @@ PROJECT_NAME = LibTomCrypt
|
||||
# This could be handy for archiving the generated documentation or
|
||||
# if some version control system is used.
|
||||
|
||||
PROJECT_NUMBER = 1.00rc1
|
||||
PROJECT_NUMBER = 1.02
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||
# base path where the generated documentation will be put.
|
||||
|
8
changes
8
changes
@ -1,3 +1,11 @@
|
||||
April 19th, 2005
|
||||
v1.02
|
||||
-- Added LTC_TEST support to gcm_test()
|
||||
-- "pt/ct" can now be NULL in gcm_process() if you are processing zero bytes
|
||||
-- Optimized GCM by removing the "double copy" handling of the plaintext/aad
|
||||
-- Richard Outerbridge pointed out that x86_prof won't build on MACOS and that the manual
|
||||
erroneously refers to "mycrypt" all over the place. Fixed.
|
||||
|
||||
April 17th, 2005
|
||||
v1.01
|
||||
** Secure Science Corporation has supported this release cycle by sponsoring the development time taken. Their
|
||||
|
16
crypt.tex
16
crypt.tex
@ -47,7 +47,7 @@
|
||||
\def\gap{\vspace{0.5ex}}
|
||||
\makeindex
|
||||
\begin{document}
|
||||
\title{LibTomCrypt \\ Version 1.01}
|
||||
\title{LibTomCrypt \\ Version 1.02}
|
||||
\author{Tom St Denis \\
|
||||
\\
|
||||
tomstdenis@gmail.com \\
|
||||
@ -167,7 +167,7 @@ The project is hereby released as public domain.
|
||||
|
||||
The author (Tom St Denis) is not a patent lawyer so this section is not to be treated as legal advice. To the best
|
||||
of the authors knowledge the only patent related issues within the library are the RC5 and RC6 symmetric block ciphers.
|
||||
They can be removed from a build by simply commenting out the two appropriate lines in ``mycrypt\_custom.h''. The rest
|
||||
They can be removed from a build by simply commenting out the two appropriate lines in ``tomcrypt\_custom.h''. The rest
|
||||
of the ciphers and hashes are patent free or under patents that have since expired.
|
||||
|
||||
The RC2 and RC4 symmetric ciphers are not under patents but are under trademark regulations. This means you can use
|
||||
@ -593,7 +593,7 @@ byte string from the real 7/21 byte key.
|
||||
|
||||
\item
|
||||
Note that ``Twofish'' has additional configuration options that take place at build time. These options are found in
|
||||
the file ``mycrypt\_cfg.h''. The first option is ``TWOFISH\_SMALL'' which when defined will force the Twofish code
|
||||
the file ``tomcrypt\_cfg.h''. The first option is ``TWOFISH\_SMALL'' which when defined will force the Twofish code
|
||||
to not pre-compute the Twofish ``$g(X)$'' function as a set of four $8 \times 32$ s-boxes. This means that a scheduled
|
||||
key will require less ram but the resulting cipher will be slower. The second option is ``TWOFISH\_TABLES'' which when
|
||||
defined will force the Twofish code to use pre-computed tables for the two s-boxes $q_0, q_1$ as well as the multiplication
|
||||
@ -3728,8 +3728,8 @@ This will use libtool and gcc to build a shared library ``libtomcrypt.la'' as we
|
||||
and install them into /usr/lib (and the headers into /usr/include). To link your application you should use the
|
||||
libtool program in ``--mode=link''.
|
||||
|
||||
\section{mycrypt\_cfg.h}
|
||||
The file ``mycrypt\_cfg.h'' is what lets you control various high level macros which control the behaviour
|
||||
\section{tomcrypt\_cfg.h}
|
||||
The file ``tomcrypt\_cfg.h'' is what lets you control various high level macros which control the behaviour
|
||||
of the library.
|
||||
|
||||
\subsubsection{ARGTYPE}
|
||||
@ -3748,10 +3748,10 @@ which will work on all platforms.
|
||||
Currently LibTomCrypt will detect x86-32 and x86-64 running GCC as well as x86-32 running MSVC.
|
||||
|
||||
\section{The Configure Script}
|
||||
There are also options you can specify from the configure script or ``mycrypt\_custom.h''.
|
||||
There are also options you can specify from the configure script or ``tomcrypt\_custom.h''.
|
||||
|
||||
\subsection{X memory routines}
|
||||
At the top of mycrypt\_custom.h are four macros denoted as XMALLOC, XCALLOC, XREALLOC and XFREE which resolve to
|
||||
At the top of tomcrypt\_custom.h are four macros denoted as XMALLOC, XCALLOC, XREALLOC and XFREE which resolve to
|
||||
the name of the respective functions. This lets you substitute in your own memory routines. If you substitute in
|
||||
your own functions they must behave like the standard C library functions in terms of what they expect as input and
|
||||
output. By default the library uses the standard C routines.
|
||||
@ -3830,7 +3830,7 @@ If you plan on only using RSA with moduli in the range of 1024 to 2560 bits you
|
||||
to reduce the library size. Follow these steps
|
||||
|
||||
\begin{enumerate}
|
||||
\item Undefine MDSA, MECC and MDH from mycrypt\_custom.h
|
||||
\item Undefine MDSA, MECC and MDH from tomcrypt\_custom.h
|
||||
\item Undefine LTM\_ALL from tommath\_superclass.h
|
||||
\item Define SC\_RSA\_1 from tommath\_superclass.h
|
||||
\item Rebuild the library.
|
||||
|
BIN
doc/crypt.pdf
BIN
doc/crypt.pdf
Binary file not shown.
2
makefile
2
makefile
@ -4,7 +4,7 @@
|
||||
# Modified by Clay Culver
|
||||
|
||||
# The version
|
||||
VERSION=1.01
|
||||
VERSION=1.02
|
||||
|
||||
# Compiler and Linker Names
|
||||
#CC=gcc
|
||||
|
@ -6,7 +6,7 @@
|
||||
# Tom St Denis
|
||||
|
||||
# The version
|
||||
VERSION=0:101
|
||||
VERSION=0:102
|
||||
|
||||
# Compiler and Linker Names
|
||||
CC=libtool --mode=compile gcc
|
||||
|
@ -101,13 +101,10 @@ int gcm_add_aad(gcm_state *gcm,
|
||||
|
||||
/* start adding AAD data to the state */
|
||||
for (; x < adatalen; x++) {
|
||||
gcm->buf[gcm->buflen++] = *adata++;
|
||||
gcm->X[gcm->buflen++] ^= *adata++;
|
||||
|
||||
if (gcm->buflen == 16) {
|
||||
/* GF mult it */
|
||||
for (y = 0; y < 16; y++) {
|
||||
gcm->X[y] ^= gcm->buf[y];
|
||||
}
|
||||
gcm_mult_h(gcm, gcm->X);
|
||||
gcm->buflen = 0;
|
||||
gcm->totlen += 128;
|
||||
|
@ -49,9 +49,6 @@ int gcm_done(gcm_state *gcm,
|
||||
|
||||
/* handle remaining ciphertext */
|
||||
if (gcm->buflen) {
|
||||
for (x = 0; x < (unsigned long)gcm->buflen; x++) {
|
||||
gcm->X[x] ^= gcm->buf[x];
|
||||
}
|
||||
gcm->pttotlen += gcm->buflen * CONST64(8);
|
||||
gcm_mult_h(gcm, gcm->X);
|
||||
}
|
||||
|
@ -36,8 +36,10 @@ int gcm_process(gcm_state *gcm,
|
||||
int err;
|
||||
|
||||
LTC_ARGCHK(gcm != NULL);
|
||||
if (ptlen > 0) {
|
||||
LTC_ARGCHK(pt != NULL);
|
||||
LTC_ARGCHK(ct != NULL);
|
||||
}
|
||||
|
||||
if (gcm->buflen > 16 || gcm->buflen < 0) {
|
||||
return CRYPT_INVALID_ARG;
|
||||
@ -51,9 +53,6 @@ int gcm_process(gcm_state *gcm,
|
||||
if (gcm->mode == GCM_MODE_AAD) {
|
||||
/* let's process the AAD */
|
||||
if (gcm->buflen) {
|
||||
for (x = 0; x < (unsigned long)gcm->buflen; x++) {
|
||||
gcm->X[x] ^= gcm->buf[x];
|
||||
}
|
||||
gcm->totlen += gcm->buflen * CONST64(8);
|
||||
gcm_mult_h(gcm, gcm->X);
|
||||
}
|
||||
@ -115,9 +114,6 @@ int gcm_process(gcm_state *gcm,
|
||||
/* process text */
|
||||
for (; x < ptlen; x++) {
|
||||
if (gcm->buflen == 16) {
|
||||
for (y = 0; y < 16; y++) {
|
||||
gcm->X[y] ^= gcm->buf[y];
|
||||
}
|
||||
gcm->pttotlen += 128;
|
||||
gcm_mult_h(gcm, gcm->X);
|
||||
|
||||
@ -135,7 +131,7 @@ int gcm_process(gcm_state *gcm,
|
||||
b = ct[x];
|
||||
pt[x] = ct[x] ^ gcm->buf[gcm->buflen];
|
||||
}
|
||||
gcm->buf[gcm->buflen++] = b;
|
||||
gcm->X[gcm->buflen++] ^= b;
|
||||
}
|
||||
|
||||
return CRYPT_OK;
|
||||
|
@ -23,6 +23,9 @@
|
||||
*/
|
||||
int gcm_test(void)
|
||||
{
|
||||
#ifndef LTC_TEST
|
||||
return CRYPT_NOP;
|
||||
#else
|
||||
static const struct {
|
||||
unsigned char K[32];
|
||||
int keylen;
|
||||
@ -355,6 +358,7 @@ int gcm_test(void)
|
||||
|
||||
}
|
||||
return CRYPT_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -16,8 +16,8 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/* version */
|
||||
#define CRYPT 0x0101
|
||||
#define SCRYPT "1.01"
|
||||
#define CRYPT 0x0102
|
||||
#define SCRYPT "1.02"
|
||||
|
||||
/* max size of either a cipher/hash block or symmetric key [largest of the two] */
|
||||
#define MAXBLOCKSIZE 128
|
||||
|
@ -51,7 +51,7 @@ int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key)
|
||||
/* ok all the ASN.1 params are fine so far, let's move up */
|
||||
x = ((unsigned long)in[2]);
|
||||
y = 0;
|
||||
if ((in[1] & 0x0f) == 2) {
|
||||
if ((in[1] & ~0x80) == 2) {
|
||||
x = (x << 8) + ((unsigned long)in[3]) + 1;
|
||||
in += 1;
|
||||
y = 1;
|
||||
|
@ -51,12 +51,14 @@ ulong64 rdtsc (void)
|
||||
ulong64 a;
|
||||
asm __volatile__ ("rdtsc\nmovl %%eax,(%0)\nmovl %%edx,4(%0)\n"::"r"(&a):"%eax","%edx");
|
||||
return a;
|
||||
#else /* gcc-IA64 version */
|
||||
#elif defined(__ia64__) /* gcc-IA64 version */
|
||||
unsigned long result;
|
||||
__asm__ __volatile__("mov %0=ar.itc" : "=r"(result) :: "memory");
|
||||
while (__builtin_expect ((int) result == -1, 0))
|
||||
__asm__ __volatile__("mov %0=ar.itc" : "=r"(result) :: "memory");
|
||||
return result;
|
||||
#else
|
||||
return XCLOCK();
|
||||
#endif
|
||||
|
||||
// Microsoft and Intel Windows compilers
|
||||
@ -70,7 +72,7 @@ ulong64 rdtsc (void)
|
||||
#endif
|
||||
return __getReg (3116);
|
||||
#else
|
||||
#error need rdtsc function for this build
|
||||
return XCLOCK();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user