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