112
msn_object_new_from_image(PurpleStoredImage *img, const char *location,
113
const char *creator, MsnObjectType type)
117
PurpleCipherContext *ctx;
122
unsigned char digest[20];
129
size = purple_imgstore_get_size(img);
130
data = purple_imgstore_get_data(img);
133
msnobj = msn_object_new();
134
msn_object_set_local(msnobj);
135
msn_object_set_type(msnobj, type);
136
msn_object_set_location(msnobj, location);
137
msn_object_set_creator(msnobj, creator);
139
msn_object_set_image(msnobj, img);
141
/* Compute the SHA1D field. */
142
memset(digest, 0, sizeof(digest));
144
ctx = purple_cipher_context_new_by_name("sha1", NULL);
145
purple_cipher_context_append(ctx, data, size);
146
purple_cipher_context_digest(ctx, sizeof(digest), digest, NULL);
148
base64 = purple_base64_encode(digest, sizeof(digest));
149
msn_object_set_sha1d(msnobj, base64);
152
msn_object_set_size(msnobj, size);
154
/* Compute the SHA1C field. */
155
buf = g_strdup_printf(
156
"Creator%sSize%dType%dLocation%sFriendly%sSHA1D%s",
157
msn_object_get_creator(msnobj),
158
msn_object_get_size(msnobj),
159
msn_object_get_type(msnobj),
160
msn_object_get_location(msnobj),
161
msn_object_get_friendly(msnobj),
162
msn_object_get_sha1d(msnobj));
164
memset(digest, 0, sizeof(digest));
166
purple_cipher_context_reset(ctx, NULL);
167
purple_cipher_context_append(ctx, (const guchar *)buf, strlen(buf));
168
purple_cipher_context_digest(ctx, sizeof(digest), digest, NULL);
169
purple_cipher_context_destroy(ctx);
172
base64 = purple_base64_encode(digest, sizeof(digest));
173
msn_object_set_sha1c(msnobj, base64);
108
180
msn_object_destroy(MsnObject *obj)