annotate src/protocols/simple/digcalc.c @ 11986:bfbb1798535e

[gaim-migrate @ 14279] Switch to using the unicode character 0x25cf instead of an asterisk as our password masking character. In the words of the great Christian Hammond, "By the way, isn't it about time we replace the asterisk in masked entries with that unicode character for the round filled circle ("?")? The asterisk is so 1980s." committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sat, 05 Nov 2005 23:42:35 +0000
parents 2cf6d4cf2cb0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11181
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
1 /*
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
2 * Taken from RFC 2617
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
3 * Copyright (C) The Internet Society (1999). All Rights Reserved.
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
4
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
5 This document and translations of it may be copied and furnished to
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
6 others, and derivative works that comment on or otherwise explain it
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
7 or assist in its implementation may be prepared, copied, published
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
8 and distributed, in whole or in part, without restriction of any
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
9 kind, provided that the above copyright notice and this paragraph are
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
10 included on all such copies and derivative works. However, this
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
11 document itself may not be modified in any way, such as by removing
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
12 the copyright notice or references to the Internet Society or other
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
13 Internet organizations, except as needed for the purpose of
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
14 developing Internet standards in which case the procedures for
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
15 copyrights defined in the Internet Standards process must be
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
16 followed, or as required to translate it into languages other than
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
17 English.
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
18
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
19 The limited permissions granted above are perpetual and will not be
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
20 revoked by the Internet Society or its successors or assigns.
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
21
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
22 This document and the information contained herein is provided on an
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
23 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
24 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
25 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
26 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
27 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
28 */
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
29 #include "cipher.h"
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
30
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
31 #include <string.h>
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
32 #include "digcalc.h"
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
33
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
34 void CvtHex(
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
35 IN HASH Bin,
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
36 OUT HASHHEX Hex
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
37 )
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
38 {
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
39 unsigned short i;
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
40 unsigned char j;
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
41
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
42 for (i = 0; i < HASHLEN; i++) {
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
43 j = (Bin[i] >> 4) & 0xf;
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
44 if (j <= 9)
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
45 Hex[i*2] = (j + '0');
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
46 else
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
47 Hex[i*2] = (j + 'a' - 10);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
48 j = Bin[i] & 0xf;
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
49 if (j <= 9)
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
50 Hex[i*2+1] = (j + '0');
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
51 else
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
52 Hex[i*2+1] = (j + 'a' - 10);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
53 };
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
54 Hex[HASHHEXLEN] = '\0';
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
55 };
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
56
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
57 /* calculate H(A1) as per spec */
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
58 void DigestCalcHA1(
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
59 IN char * pszAlg,
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
60 IN char * pszUserName,
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
61 IN char * pszRealm,
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
62 IN char * pszPassword,
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
63 IN char * pszNonce,
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
64 IN char * pszCNonce,
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
65 OUT HASHHEX SessionKey
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
66 )
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
67 {
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
68 GaimCipher *cipher;
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
69 GaimCipherContext *context;
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
70 HASH HA1;
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
71
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
72 cipher = gaim_ciphers_find_cipher("md5");
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
73 context = gaim_cipher_context_new(cipher, NULL);
11512
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
74 gaim_cipher_context_append(context, (guchar *)pszUserName, strlen(pszUserName));
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
75 gaim_cipher_context_append(context, (guchar *)":", 1);
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
76 gaim_cipher_context_append(context, (guchar *)pszRealm, strlen(pszRealm));
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
77 gaim_cipher_context_append(context, (guchar *)":", 1);
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
78 gaim_cipher_context_append(context, (guchar *)pszPassword, strlen(pszPassword));
11181
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
79 gaim_cipher_context_digest(context, sizeof(HA1), HA1, NULL);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
80 if (strcmp(pszAlg, "md5-sess") == 0) {
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
81 context = gaim_cipher_context_new(cipher, NULL);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
82 gaim_cipher_context_append(context, HA1, HASHLEN);
11512
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
83 gaim_cipher_context_append(context, (guchar *)":", 1);
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
84 gaim_cipher_context_append(context, (guchar *)pszNonce, strlen(pszNonce));
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
85 gaim_cipher_context_append(context, (guchar *)":", 1);
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
86 gaim_cipher_context_append(context, (guchar *)pszCNonce, strlen(pszCNonce));
11181
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
87 gaim_cipher_context_digest(context, sizeof(HA1), HA1, NULL);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
88 };
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
89 CvtHex(HA1, SessionKey);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
90 gaim_cipher_context_destroy(context);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
91 };
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
92
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
93 /* calculate request-digest/response-digest as per HTTP Digest spec */
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
94 void DigestCalcResponse(
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
95 IN HASHHEX HA1, /* H(A1) */
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
96 IN char * pszNonce, /* nonce from server */
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
97 IN char * pszNonceCount, /* 8 hex digits */
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
98 IN char * pszCNonce, /* client nonce */
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
99 IN char * pszQop, /* qop-value: "", "auth", "auth-int" */
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
100 IN char * pszMethod, /* method from the request */
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
101 IN char * pszDigestUri, /* requested URL */
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
102 IN HASHHEX HEntity, /* H(entity body) if qop="auth-int" */
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
103 OUT HASHHEX Response /* request-digest or response-digest */
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
104 )
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
105 {
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
106 GaimCipher *cipher;
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
107 GaimCipherContext *context;
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
108 HASH HA2;
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
109 HASH RespHash;
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
110 HASHHEX HA2Hex;
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
111
11820
2cf6d4cf2cb0 [gaim-migrate @ 14111]
Richard Laager <rlaager@wiktel.com>
parents: 11512
diff changeset
112 /* calculate H(A2) */
11181
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
113 cipher = gaim_ciphers_find_cipher("md5");
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
114 context = gaim_cipher_context_new(cipher, NULL);
11512
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
115 gaim_cipher_context_append(context, (guchar *)pszMethod, strlen(pszMethod));
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
116 gaim_cipher_context_append(context, (guchar *)":", 1);
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
117 gaim_cipher_context_append(context, (guchar *)pszDigestUri, strlen(pszDigestUri));
11181
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
118 if (strcmp(pszQop, "auth-int") == 0) {
11512
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
119 gaim_cipher_context_append(context, (guchar *)":", 1);
11181
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
120 gaim_cipher_context_append(context, HEntity, HASHHEXLEN);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
121 };
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
122 gaim_cipher_context_digest(context, sizeof(HA2), HA2, NULL);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
123 CvtHex(HA2, HA2Hex);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
124
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
125 gaim_cipher_context_destroy(context);
11820
2cf6d4cf2cb0 [gaim-migrate @ 14111]
Richard Laager <rlaager@wiktel.com>
parents: 11512
diff changeset
126 /* calculate response */
11181
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
127 context = gaim_cipher_context_new(cipher, NULL);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
128 gaim_cipher_context_append(context, HA1, HASHHEXLEN);
11512
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
129 gaim_cipher_context_append(context, (guchar *)":", 1);
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
130 gaim_cipher_context_append(context, (guchar *)pszNonce, strlen(pszNonce));
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
131 gaim_cipher_context_append(context, (guchar *)":", 1);
11181
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
132 if (*pszQop) {
11512
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
133 gaim_cipher_context_append(context, (guchar *)pszNonceCount, strlen(pszNonceCount));
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
134 gaim_cipher_context_append(context, (guchar *)":", 1);
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
135 gaim_cipher_context_append(context, (guchar *)pszCNonce, strlen(pszCNonce));
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
136 gaim_cipher_context_append(context, (guchar *)":", 1);
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
137 gaim_cipher_context_append(context, (guchar *)pszQop, strlen(pszQop));
dc8b8db7f6e3 [gaim-migrate @ 13757]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11181
diff changeset
138 gaim_cipher_context_append(context, (guchar *)":", 1);
11181
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
139 };
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
140 gaim_cipher_context_append(context, HA2Hex, HASHHEXLEN);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
141 gaim_cipher_context_digest(context, sizeof(RespHash), RespHash, NULL);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
142 CvtHex(RespHash, Response);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
143 gaim_cipher_context_destroy(context);
e5bbe5070e04 [gaim-migrate @ 13292]
Thomas Butter <tbutter>
parents:
diff changeset
144 };