comparison src/proxy.c @ 12765:29594d4ccbb1

[gaim-migrate @ 15112] sf patch #1398385, from Thomas Butter "gaim_cipher_context_digest(ctx, sizeof(response), response, NULL); sizeof(response) is always 4 (its a pointer) and thus digest fails. The patch also cleans up a bit in that function." committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sun, 08 Jan 2006 20:54:57 +0000
parents ef1a954512bc
children ac41924f8bb0
comparison
equal deleted inserted replaced
12764:657895c5f3f2 12765:29594d4ccbb1
1556 GaimCipherContext *ctx; 1556 GaimCipherContext *ctx;
1557 int i; 1557 int i;
1558 unsigned char Kxoripad[65]; 1558 unsigned char Kxoripad[65];
1559 unsigned char Kxoropad[65]; 1559 unsigned char Kxoropad[65];
1560 int pwlen; 1560 int pwlen;
1561 char * pwinput;
1562 guchar md5buf[16];
1563 1561
1564 cipher = gaim_ciphers_find_cipher("md5"); 1562 cipher = gaim_ciphers_find_cipher("md5");
1565 ctx = gaim_cipher_context_new(cipher, NULL); 1563 ctx = gaim_cipher_context_new(cipher, NULL);
1566 1564
1567 pwinput=(char *)passwd; 1565 memset(Kxoripad,0,sizeof(Kxoripad));
1566 memset(Kxoropad,0,sizeof(Kxoropad));
1567
1568 pwlen=strlen(passwd); 1568 pwlen=strlen(passwd);
1569 if (pwlen>64) { 1569 if (pwlen>64) {
1570 gaim_cipher_context_append(ctx, (const guchar *)passwd, strlen(passwd)); 1570 gaim_cipher_context_append(ctx, (const guchar *)passwd, strlen(passwd));
1571 gaim_cipher_context_digest(ctx, sizeof(md5buf), md5buf, NULL); 1571 gaim_cipher_context_digest(ctx, sizeof(Kxoripad), Kxoripad, NULL);
1572 pwinput=(char *)md5buf;
1573 pwlen=16; 1572 pwlen=16;
1574 } 1573 } else {
1575 1574 memcpy(Kxoripad, passwd, pwlen);
1576 memset(Kxoripad,0,sizeof(Kxoripad)); 1575 }
1577 memset(Kxoropad,0,sizeof(Kxoropad)); 1576 memcpy(Kxoropad,Kxoripad,pwlen);
1578 memcpy(Kxoripad,pwinput,pwlen); 1577
1579 memcpy(Kxoropad,pwinput,pwlen);
1580 for (i=0;i<64;i++) { 1578 for (i=0;i<64;i++) {
1581 Kxoripad[i]^=0x36; 1579 Kxoripad[i]^=0x36;
1582 Kxoropad[i]^=0x5c; 1580 Kxoropad[i]^=0x5c;
1583 } 1581 }
1584 1582
1588 gaim_cipher_context_digest(ctx, sizeof(Kxoripad), Kxoripad, NULL); 1586 gaim_cipher_context_digest(ctx, sizeof(Kxoripad), Kxoripad, NULL);
1589 1587
1590 gaim_cipher_context_reset(ctx, NULL); 1588 gaim_cipher_context_reset(ctx, NULL);
1591 gaim_cipher_context_append(ctx, Kxoropad, 64); 1589 gaim_cipher_context_append(ctx, Kxoropad, 64);
1592 gaim_cipher_context_append(ctx, Kxoripad, 16); 1590 gaim_cipher_context_append(ctx, Kxoripad, 16);
1593 gaim_cipher_context_digest(ctx, sizeof(response), response, NULL); 1591 gaim_cipher_context_digest(ctx, 16, response, NULL);
1594 1592
1595 gaim_cipher_context_destroy(ctx); 1593 gaim_cipher_context_destroy(ctx);
1596 } 1594 }
1597 1595
1598 static void 1596 static void