minimal build
[platform/upstream/gcr.git] / gcr / gcr-simple-certificate.c
index 415fe15..fc30d40 100644 (file)
 #include "config.h"
 
 #include "gcr-certificate.h"
+#include "gcr-comparable.h"
 #include "gcr-internal.h"
 #include "gcr-simple-certificate.h"
 
-#include "egg/egg-hex.h"
-
 #include <string.h>
 
+/**
+ * SECTION:gcr-simple-certificate
+ * @title: GcrSimpleCertificate
+ * @short_description: A certificate loaded from a memory buffer
+ *
+ * An implementation of #GcrCertificate which loads a certificate from DER
+ * data already located in memory.
+ *
+ * To create a #GcrSimpleCertificate object use the
+ * gcr_simple_certificate_new() or gcr_simple_certificate_new_static()
+ * functions.
+ */
+
+/**
+ * GcrSimpleCertificate:
+ *
+ * A #GcrCertificate which represents a certificate already in memory.
+ */
+
+/**
+ * GcrSimpleCertificateClass:
+ * @parent_class: The parent class
+ *
+ * The class for #GcrSimpleCertificate.
+ */
+
 struct _GcrSimpleCertificatePrivate {
        const guchar *data;
        gsize n_data;
        guchar *owned;
 };
 
-static void gcr_certificate_iface (GcrCertificateIface *iface);
+/* Forward declarations */
+static void gcr_simple_certificate_iface_init (GcrCertificateIface *iface);
+
 G_DEFINE_TYPE_WITH_CODE (GcrSimpleCertificate, gcr_simple_certificate, G_TYPE_OBJECT,
-                         G_IMPLEMENT_INTERFACE (GCR_TYPE_CERTIFICATE, gcr_certificate_iface));
+       GCR_CERTIFICATE_MIXIN_IMPLEMENT_COMPARABLE ();
+       G_IMPLEMENT_INTERFACE (GCR_TYPE_CERTIFICATE, gcr_simple_certificate_iface_init);
+);
 
 /* -----------------------------------------------------------------------------
  * OBJECT
@@ -50,7 +79,7 @@ gcr_simple_certificate_init (GcrSimpleCertificate *self)
 }
 
 static void
-gcr_simple_certificate_finalize (GObject *obj)
+gcr_simple_certificate_real_finalize (GObject *obj)
 {
        GcrSimpleCertificate *self = GCR_SIMPLE_CERTIFICATE (obj);
 
@@ -66,15 +95,21 @@ static void
 gcr_simple_certificate_class_init (GcrSimpleCertificateClass *klass)
 {
        GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-       gobject_class->finalize = gcr_simple_certificate_finalize;
+
+       gobject_class->finalize = gcr_simple_certificate_real_finalize;
+       gobject_class->get_property = gcr_certificate_mixin_get_property;
+
        g_type_class_add_private (gobject_class, sizeof (GcrSimpleCertificatePrivate));
-       _gcr_initialize ();
+
+       gcr_certificate_mixin_class_init (gobject_class);
+       _gcr_initialize_library ();
 }
 
-static const guchar*
-gcr_simple_certificate_real_get_der_data (GcrCertificate *base, gsize *n_data)
+static const guchar *
+gcr_simple_certificate_get_der_data (GcrCertificate *cert,
+                                     gsize *n_data)
 {
-       GcrSimpleCertificate *self = GCR_SIMPLE_CERTIFICATE (base);
+       GcrSimpleCertificate *self = GCR_SIMPLE_CERTIFICATE (cert);
 
        g_return_val_if_fail (GCR_IS_CERTIFICATE (self), NULL);
        g_return_val_if_fail (n_data, NULL);
@@ -86,17 +121,28 @@ gcr_simple_certificate_real_get_der_data (GcrCertificate *base, gsize *n_data)
 }
 
 static void
-gcr_certificate_iface (GcrCertificateIface *iface)
+gcr_simple_certificate_iface_init (GcrCertificateIface *iface)
 {
-       iface->get_der_data = (gpointer)gcr_simple_certificate_real_get_der_data;
+       iface->get_der_data = gcr_simple_certificate_get_der_data;
 }
 
 /* -----------------------------------------------------------------------------
  * PUBLIC
  */
 
-GcrCertificate*
-gcr_simple_certificate_new (gconstpointer data, gsize n_data)
+/**
+ * gcr_simple_certificate_new:
+ * @data: (array length=n_data): the raw DER certificate data
+ * @n_data: The length of @data
+ *
+ * Create a new #GcrSimpleCertificate for the raw DER data. The @data memory is
+ * copied so you can dispose of it after this function returns.
+ *
+ * Returns: (transfer full) (type Gcr.SimpleCertificate): a new #GcrSimpleCertificate
+ */
+GcrCertificate *
+gcr_simple_certificate_new (const guchar *data,
+                            gsize n_data)
 {
        GcrSimpleCertificate *cert;
 
@@ -110,8 +156,20 @@ gcr_simple_certificate_new (gconstpointer data, gsize n_data)
        return GCR_CERTIFICATE (cert);
 }
 
-GcrCertificate*
-gcr_simple_certificate_new_static (gconstpointer data, gsize n_data)
+/**
+ * gcr_simple_certificate_new_static: (skip)
+ * @data: (array length=n_data): The raw DER certificate data
+ * @n_data: The length of @data
+ *
+ * Create a new #GcrSimpleCertificate for the raw DER data. The @data memory is
+ * not copied and must persist until the #GcrSimpleCertificate object is
+ * destroyed.
+ *
+ * Returns: (transfer full) (type Gcr.SimpleCertificate): a new #GcrSimpleCertificate
+ */
+GcrCertificate *
+gcr_simple_certificate_new_static (const guchar *data,
+                                   gsize n_data)
 {
        GcrSimpleCertificate *cert;