Changeset 83e47ec


Ignore:
Timestamp:
2010-10-17T06:44:35Z (14 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
79b5c41
Parents:
3fc6c32
Message:

Use gcrypt for 3DES encryption (used for new MSN authentication) so we
mostly don't need lib/des.c anymore.

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • configure

    r3fc6c32 r83e47ec  
    269269        if $PKG_CONFIG --exists gnutls; then
    270270                cat <<EOF>>Makefile.settings
    271 EFLAGS+=`$PKG_CONFIG --libs gnutls`
    272 CFLAGS+=`$PKG_CONFIG --cflags gnutls`
     271EFLAGS+=`$PKG_CONFIG --libs gnutls` `libgcrypt-config --libs`
     272CFLAGS+=`$PKG_CONFIG --cflags gnutls` `libgcrypt-config --cflags`
    273273EOF
    274274                ssl=gnutls
     
    276276        elif libgnutls-config --version > /dev/null 2> /dev/null; then
    277277                cat <<EOF>>Makefile.settings
    278 EFLAGS+=`libgnutls-config --libs`
    279 CFLAGS+=`libgnutls-config --cflags`
     278EFLAGS+=`libgnutls-config --libs` `libgcrypt-config --libs`
     279CFLAGS+=`libgnutls-config --cflags` `libgcrypt-config --cflags`
    280280EOF
    281281               
     
    427427fi;
    428428
    429 if [ "$msn" = "1" -a "$ssl" != "openssl" ]; then
     429if [ "$msn" = "1" -a "$ssl" != "openssl" -a "$ssl" != "gnutls" ]; then
    430430        # Needed for MSN only. OpenSSL exports nice cipher functions already,
    431         # others don't, so use our own 3des code.
     431        # in case of GnuTLS we should be able to use gcrypt. Otherwise, use
     432        # built-in stuff. (Since right now those are the only two supported
     433        # SSL modules anyway, this is mostly unnecessary.)
    432434        echo 'DES=des.o' >> Makefile.settings
    433435fi
  • lib/ssl_gnutls.c

    r3fc6c32 r83e47ec  
    2525
    2626#include <gnutls/gnutls.h>
     27#include <gcrypt.h>
    2728#include <fcntl.h>
    2829#include <unistd.h>
     
    6364void ssl_init( void )
    6465{
     66        if( initialized )
     67                return;
     68       
    6569        gnutls_global_init();
    6670        initialized = TRUE;
     
    127131        }
    128132       
    129         if( !initialized )
    130         {
    131                 ssl_init();
    132         }
     133        ssl_init();
    133134       
    134135        gnutls_certificate_allocate_credentials( &conn->xcred );
     
    255256                B_EV_IO_WRITE : B_EV_IO_READ );
    256257}
     258
     259size_t ssl_des3_encrypt( const unsigned char *key, size_t key_len, const unsigned char *input,
     260                         size_t input_len, const unsigned char *iv, unsigned char **res )
     261{
     262        gcry_cipher_hd_t gcr;
     263        gcry_error_t st;
     264       
     265        ssl_init();
     266       
     267        *res = g_malloc( input_len  );
     268        st = gcry_cipher_open( &gcr, GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_CBC, 0 ) ||
     269             gcry_cipher_setkey( gcr, key, key_len ) ||
     270             gcry_cipher_setiv( gcr, iv, 8 ) ||
     271             gcry_cipher_encrypt( gcr, *res, input_len, input, input_len );
     272       
     273        gcry_cipher_close( gcr );
     274       
     275        if( st == 0 )
     276                return input_len;
     277       
     278        g_free( *res );
     279        return 0;
     280}
Note: See TracChangeset for help on using the changeset viewer.