static void purple_aes_cipher_set_property(GObject *obj, guint param_id, const GValue *value, GParamSpec *pspec) { PurpleCipher *cipher = PURPLE_CIPHER(obj); switch(param_id) { case PROP_BATCH_MODE: purple_cipher_set_batch_mode(cipher, g_value_get_enum(value)); break; case PROP_IV: { guchar *iv = (guchar *)g_value_get_string(value); purple_cipher_set_iv(cipher, iv, strlen((gchar*)iv)); } break; case PROP_KEY: purple_cipher_set_key(cipher, (guchar *)g_value_get_string(value), purple_aes_cipher_get_key_size(cipher)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); break; } }
static void purple_hmac_cipher_finalize(GObject *obj) { PurpleCipher *cipher = PURPLE_CIPHER(obj); PurpleHMACCipherPrivate *priv = PURPLE_HMAC_CIPHER_GET_PRIVATE(cipher); purple_hmac_cipher_reset(cipher); if (priv->hash != NULL) g_object_unref(priv->hash); parent_class->finalize(obj); }
/****************************************************************************** * Object Stuff *****************************************************************************/ static void purple_aes_cipher_get_property(GObject *obj, guint param_id, GValue *value, GParamSpec *pspec) { PurpleCipher *cipher = PURPLE_CIPHER(obj); switch(param_id) { case PROP_BATCH_MODE: g_value_set_enum(value, purple_cipher_get_batch_mode(cipher)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); break; } }
/****************************************************************************** * Object Stuff *****************************************************************************/ static void purple_hmac_cipher_set_property(GObject *obj, guint param_id, const GValue *value, GParamSpec *pspec) { PurpleCipher *cipher = PURPLE_CIPHER(obj); switch(param_id) { case PROP_HASH: purple_hmac_cipher_set_hash(cipher, g_value_get_object(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); break; } }
void purple_ciphers_uninit() { PurpleCipher *cipher; GList *l, *ll; for(l = ciphers; l; l = ll) { ll = l->next; cipher = PURPLE_CIPHER(l->data); purple_ciphers_unregister_cipher(cipher); } g_list_free(ciphers); purple_signals_unregister_by_instance(purple_ciphers_get_handle()); }
/****************************************************************************** * PurpleCiphers API *****************************************************************************/ PurpleCipher * purple_ciphers_find_cipher(const gchar *name) { PurpleCipher *cipher; GList *l; g_return_val_if_fail(name, NULL); for(l = ciphers; l; l = l->next) { cipher = PURPLE_CIPHER(l->data); if(!g_ascii_strcasecmp(cipher->name, name)) return cipher; } return NULL; }