# HG changeset patch # User William Ehlhardt # Date 1184315901 0 # Node ID d6f902265076f6ebbe5f67339579d437dc63cddd # Parent e6558bae2bc637ddfce38d6f49718eb90f10a1c8 - Add purple_certificate_copy and associated machinery diff -r e6558bae2bc6 -r d6f902265076 libpurple/certificate.c --- a/libpurple/certificate.c Fri Jul 13 08:10:33 2007 +0000 +++ b/libpurple/certificate.c Fri Jul 13 08:38:21 2007 +0000 @@ -98,6 +98,15 @@ g_free(vrq); } +PurpleCertificate * +purple_certificate_copy(PurpleCertificate *crt) +{ + g_return_val_if_fail(crt, NULL); + g_return_val_if_fail(crt->scheme, NULL); + g_return_val_if_fail(crt->scheme->copy_certificate, NULL); + + return (crt->scheme->copy_certificate)(crt); +} void purple_certificate_destroy (PurpleCertificate *crt) diff -r e6558bae2bc6 -r d6f902265076 libpurple/certificate.h --- a/libpurple/certificate.h Fri Jul 13 08:10:33 2007 +0000 +++ b/libpurple/certificate.h Fri Jul 13 08:38:21 2007 +0000 @@ -162,6 +162,16 @@ */ gboolean (* export_certificate)(const gchar *filename, PurpleCertificate *crt); + /** + * Duplicates a certificate + * + * Certificates are generally assumed to be read-only, so feel free to + * do any sort of reference-counting magic you want here. If this ever + * changes, please remember to change the magic accordingly. + * @return Reference to the new copy + */ + PurpleCertificate * (* copy_certificate)(PurpleCertificate *crt); + /** Destroys and frees a Certificate structure * * Destroys a Certificate's internal data structures and calls @@ -360,6 +370,15 @@ /*@{*/ /** + * Makes a duplicate of a certificate + * + * @param crt Instance to duplicate + * @return Pointer to new instance + */ +PurpleCertificate * +purple_certificate_copy(PurpleCertificate *crt); + +/** * Destroys and free()'s a Certificate * * @param crt Instance to destroy. May be NULL. diff -r e6558bae2bc6 -r d6f902265076 libpurple/plugins/ssl/ssl-gnutls.c --- a/libpurple/plugins/ssl/ssl-gnutls.c Fri Jul 13 08:10:33 2007 +0000 +++ b/libpurple/plugins/ssl/ssl-gnutls.c Fri Jul 13 08:38:21 2007 +0000 @@ -799,6 +799,7 @@ N_("X.509 Certificates"), /* User-visible scheme name */ x509_import_from_file, /* Certificate import function */ x509_export_certificate, /* Certificate export function */ + NULL, /* Copy */ x509_destroy_certificate, /* Destroy cert */ x509_sha1sum, /* SHA1 fingerprint */ NULL, /* Unique ID */