| 128 msn_object_new_from_image(PurpleStoredImage *img, const char *location, |
128 msn_object_new_from_image(PurpleStoredImage *img, const char *location, |
| 129 const char *creator, MsnObjectType type) |
129 const char *creator, MsnObjectType type) |
| 130 { |
130 { |
| 131 MsnObject *msnobj; |
131 MsnObject *msnobj; |
| 132 |
132 |
| 133 PurpleCipherContext *ctx; |
133 PurpleCipher *cipher; |
| 134 char *buf; |
134 char *buf; |
| 135 gconstpointer data; |
135 gconstpointer data; |
| 136 size_t size; |
136 size_t size; |
| 137 char *base64; |
137 char *base64; |
| 138 unsigned char digest[20]; |
138 unsigned char digest[20]; |
| 155 msn_object_set_image(msnobj, img); |
155 msn_object_set_image(msnobj, img); |
| 156 |
156 |
| 157 /* Compute the SHA1D field. */ |
157 /* Compute the SHA1D field. */ |
| 158 memset(digest, 0, sizeof(digest)); |
158 memset(digest, 0, sizeof(digest)); |
| 159 |
159 |
| 160 ctx = purple_cipher_context_new_by_name("sha1", NULL); |
160 cipher = purple_sha1_cipher_new(); |
| 161 purple_cipher_context_append(ctx, data, size); |
161 purple_cipher_append(cipher, data, size); |
| 162 purple_cipher_context_digest(ctx, digest, sizeof(digest)); |
162 purple_cipher_digest(cipher, digest, sizeof(digest)); |
| 163 |
163 |
| 164 base64 = purple_base64_encode(digest, sizeof(digest)); |
164 base64 = purple_base64_encode(digest, sizeof(digest)); |
| 165 msn_object_set_sha1d(msnobj, base64); |
165 msn_object_set_sha1d(msnobj, base64); |
| 166 g_free(base64); |
166 g_free(base64); |
| 167 |
167 |
| 177 msn_object_get_friendly(msnobj), |
177 msn_object_get_friendly(msnobj), |
| 178 msn_object_get_sha1d(msnobj)); |
178 msn_object_get_sha1d(msnobj)); |
| 179 |
179 |
| 180 memset(digest, 0, sizeof(digest)); |
180 memset(digest, 0, sizeof(digest)); |
| 181 |
181 |
| 182 purple_cipher_context_reset(ctx, NULL); |
182 purple_cipher_reset(cipher); |
| 183 purple_cipher_context_append(ctx, (const guchar *)buf, strlen(buf)); |
183 purple_cipher_append(cipher, (const guchar *)buf, strlen(buf)); |
| 184 purple_cipher_context_digest(ctx, digest, sizeof(digest)); |
184 purple_cipher_digest(cipher, digest, sizeof(digest)); |
| 185 purple_cipher_context_destroy(ctx); |
185 g_object_unref(cipher); |
| 186 g_free(buf); |
186 g_free(buf); |
| 187 |
187 |
| 188 base64 = purple_base64_encode(digest, sizeof(digest)); |
188 base64 = purple_base64_encode(digest, sizeof(digest)); |
| 189 msn_object_set_sha1c(msnobj, base64); |
189 msn_object_set_sha1c(msnobj, base64); |
| 190 g_free(base64); |
190 g_free(base64); |