IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 12502


Ignore:
Timestamp:
Mar 19, 2007, 3:13:54 PM (19 years ago)
Author:
Paul Price
Message:

Pulling out openssl/crypto dependency (we've had SO much trouble getting it to behave with us) in favour of libmd5-rfc. I put the source code (from sourceforge.net/projects/libmd5-rfc/) directly into the tree, because the original distribution doesn't build a library, and we don't want the user to have to go and grab it. The license (zlib/libpng) is compatible with the GPL, so no problems there. Changed the source code a little bit so that it behaves a little bit better with 32/64 bit issues ('unsigned int' --> 'uint32_t'), and got it to use the autoconf WORDS_BIGENDIAN flag.

Location:
trunk/psLib
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/configure.ac

    r12498 r12502  
    8484dnl check the systems endianness
    8585AC_C_BIGENDIAN
     86
     87dnl set NO_STRCASESTR if we can't find strcasestr
     88AC_CHECK_FUNC([strcasestr], [], [AC_SUBST(NO_STRCASESTR, [1])])
    8689
    8790AC_PREFIX_DEFAULT([/usr/local])
     
    409412LDFLAGS=${TMP_LDFLAGS}
    410413CPPFLAGS=${TMP_CPPFLAGS}
    411 
    412 dnl ------- openssl ---------
    413 
    414 dnl save LIBS/CFLAGS/LDFLAGS
    415 TMP_LIBS=${LIBS}
    416 TMP_CFLAGS=${CFLAGS}
    417 TMP_LDFLAGS=${LDFLAGS}
    418 TMP_CPPFLAGS=${CPPFLAGS}
    419 
    420 AC_ARG_WITH(ssl,
    421 [AS_HELP_STRING(--with-ssl=DIR,Specify location of SSL.)],
    422 [SSL_CFLAGS="-I$withval/include"
    423  SSL_LDFLAGS="-L$withval/lib"])
    424 AC_ARG_WITH(ssl-include,
    425 [AS_HELP_STRING(--with-ssl-include=DIR,Specify SSL include directory.)],
    426 [SSL_CFLAGS="-I$withval"])
    427 AC_ARG_WITH(ssl-lib,
    428 [AS_HELP_STRING(--with-ssl-lib=DIR,Specify SSL library directory.)],
    429 [SSL_LDFLAGS="-L$withval"])
    430 
    431 CFLAGS="${CFLAGS} ${SSL_CFLAGS}"
    432 CPPFLAGS=${CFLAGS}
    433 LDFLAGS="${LDFLAGS} ${SSL_LIBS}"
    434 
    435 AC_CHECK_HEADERS([openssl/md5.h],[],
    436         [AC_CHECK_HEADERS([sys/md5.h],[],
    437                 [AC_MSG_ERROR([SSL headers not found.  Obtain it at http://www.openssl.org/ or use --with-ssl to specify location.])]
    438         )]
    439 )
    440 AC_CHECK_LIB(crypto,MD5,[],
    441   [AC_MSG_ERROR([SSL library not found.  Obtain it at http://www.openssl.org/ or use --with-ssl to specify location.])]
    442 )
    443 
    444 PSLIB_CFLAGS="${PSLIB_CFLAGS=} ${SSL_CFLAGS}"
    445 PSLIB_LIBS="${PSLIB_LIBS=} ${SSL_LDFLAGS=} ${LIBS}"
    446 
    447 AC_SUBST([SSL_CFLAGS])
    448 AC_SUBST([SSL_LDFLAGS])
    449 
    450 dnl restore the CFLAGS/LDFLAGS
    451 LIBS=${TMP_LIBS}
    452 CFLAGS=${TMP_CFLAGS}
    453 LDFLAGS=${TMP_LDFLAGS}
    454 CPPFLAGS=${TMP_CPPFLAGS}
    455 
    456 dnl set NO_STRCASESTR if we can't find strcasestr
    457 AC_CHECK_FUNC([strcasestr], [], [AC_SUBST(NO_STRCASESTR, [1])])
    458414
    459415dnl ------- enable -Werror after all of the probes have run ---------
  • trunk/psLib/src/math/Makefile.am

    r11669 r12502  
    2626        psStats.c \
    2727        psHistogram.c \
    28         psVectorSmooth.c
     28        psVectorSmooth.c \
     29        md5.c
    2930
    3031EXTRA_DIST = math.i
     
    5556        psVectorSmooth.h
    5657
     58noinst_HEADERS = \
     59        md5.h
     60
    5761CLEANFILES = *~ *.bb *.bbg *.da
  • trunk/psLib/src/math/psMD5.c

    r12430 r12502  
    66#include <string.h>
    77
    8 #ifdef HAVE_SYS_MD5_H
    9 // Seems to be the case for Solaris
    10 #include <sys/md5.h>
    11 #else
    12 // Seems to be the case for most others
    13 #include <openssl/md5.h>
    14 #endif // HAVE_SYS_MD5_H
    15 
     8#include "md5.h"
    169
    1710#include "psAssert.h"
     
    2417
    2518
     19#define MD5_DIGEST_LENGTH 16            // Length of an MD5 digest, in bytes
     20
    2621psVector *psStringMD5(const char *string)
    2722{
    2823    psVector *hash = psVectorAlloc(MD5_DIGEST_LENGTH, PS_TYPE_U8); // The resultant MD5 hash
    29     if (!MD5((const unsigned char *)string, strlen(string), &hash->data.U8[0])) {
    30         psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to generate md5 hash.\n");
    31         psFree(hash);
    32         return NULL;
    33     }
     24    md5_state_t buffer;                 // Calculation buffer
     25    md5_init(&buffer);
     26    md5_append(&buffer, (psU8*)string, strlen(string));
     27    md5_finish(&buffer, &hash->data.U8[0]);
    3428    return hash;
    3529}
     
    4034
    4135    psVector *hash = psVectorAlloc(MD5_DIGEST_LENGTH, PS_TYPE_U8); // The resultant MD5 hash
    42     if (!MD5(vector->data.U8, vector->n * PSELEMTYPE_SIZEOF(vector->type.type), &hash->data.U8[0])) {
    43         psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to generate md5 hash.\n");
    44         psFree(hash);
    45         return NULL;
    46     }
     36    md5_state_t buffer;                 // Calculation buffer
     37    md5_init(&buffer);
     38    md5_append(&buffer, vector->data.U8, vector->n * PSELEMTYPE_SIZEOF(vector->type.type));
     39    md5_finish(&buffer, &hash->data.U8[0]);
    4740    return hash;
    4841}
     
    5447
    5548    psVector *hash = psVectorAlloc(MD5_DIGEST_LENGTH, PS_TYPE_U8); // The resultant MD5 hash
     49    md5_state_t buffer;                 // Calculation buffer
     50    md5_init(&buffer);
    5651    if (!image->parent) {
    5752        // No parent means image is contiguous
    58         if (!MD5(&image->data.U8[0][0], image->numCols * image->numRows * PSELEMTYPE_SIZEOF(image->type.type),
    59                  &hash->data.U8[0])) {
    60             psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to generate md5 hash.\n");
    61             psFree(hash);
    62             return NULL;
     53        md5_append(&buffer, image->data.U8[0],
     54                   image->numCols * image->numRows * PSELEMTYPE_SIZEOF(image->type.type));
     55    } else {
     56        for (int row = 0; row < image->numRows; row++) {
     57            md5_append(&buffer, image->data.U8[row],
     58                       image->numCols * PSELEMTYPE_SIZEOF(image->type.type));
    6359        }
    64     } else {
    65         MD5_CTX ctx;                    // MD5 calculator
    66         MD5_Init(&ctx);
    67         for (int row = 0; row < image->numRows; row++) {
    68             MD5_Update(&ctx, image->data.U8[row], image->numCols * PSELEMTYPE_SIZEOF(image->type.type));
    69         }
    70         MD5_Final(&hash->data.U8[0], &ctx);
    7160    }
     61    md5_finish(&buffer, &hash->data.U8[0]);
    7262
    7363    return hash;
Note: See TracChangeset for help on using the changeset viewer.