<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GObject" version="2.0"/>
  <include name="Gck" version="1"/>
  <include name="Gio" version="2.0"/>
  <package name="gcr-base-3"/>
  <c:include name="gcr/gcr-base.h"/>
  <namespace name="Gcr"
             version="3"
             shared-library="libgcr-base-3.so.1"
             c:identifier-prefixes="Gcr"
             c:symbol-prefixes="gcr">
    <function-macro name="CERTIFICATE"
                    c:identifier="GCR_CERTIFICATE"
                    introspectable="0">
      <source-position filename="gcr/gcr-certificate.h" line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CERTIFICATE_CHAIN"
                    c:identifier="GCR_CERTIFICATE_CHAIN"
                    introspectable="0">
      <source-position filename="gcr/gcr-certificate-chain.h" line="51"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CERTIFICATE_CHAIN_CLASS"
                    c:identifier="GCR_CERTIFICATE_CHAIN_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-certificate-chain.h" line="52"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CERTIFICATE_CHAIN_GET_CLASS"
                    c:identifier="GCR_CERTIFICATE_CHAIN_GET_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-certificate-chain.h" line="55"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CERTIFICATE_GET_INTERFACE"
                    c:identifier="GCR_CERTIFICATE_GET_INTERFACE"
                    introspectable="0">
      <source-position filename="gcr/gcr-certificate.h" line="40"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CERTIFICATE_MIXIN_IMPLEMENT_COMPARABLE"
                    c:identifier="GCR_CERTIFICATE_MIXIN_IMPLEMENT_COMPARABLE"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate.c"
           line="1046">Implement the GcrComparable interface. Use this macro like this:

&lt;informalexample&gt;&lt;programlisting&gt;
G_DEFINE_TYPE_WITH_CODE (MyCertificate, my_certificate, G_TYPE_OBJECT,
GCR_CERTIFICATE_MIXIN_IMPLEMENT_COMPARABLE ();
G_IMPLEMENT_INTERFACE (GCR_TYPE_CERTIFICATE, my_certificate_iface_init);
);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
      <source-position filename="gcr/gcr-certificate.h" line="135"/>
    </function-macro>
    <function-macro name="CHECK_VERSION"
                    c:identifier="GCR_CHECK_VERSION"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="47">Checks the version of the Gcr libarry that is being compiled
against.

&lt;example&gt;
&lt;title&gt;Checking the version of the Gcr library&lt;/title&gt;
&lt;programlisting&gt;
#if !GCR_CHECK_VERSION (3, 0, 0)
#warning Old Gcr version, disabling functionality
#endif
&lt;/programlisting&gt;
&lt;/example&gt;</doc>
      <source-position filename="gcr/gcr-version.h" line="38"/>
      <parameters>
        <parameter name="major">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="49">the major version to check for</doc>
        </parameter>
        <parameter name="minor">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="50">the minor version to check for</doc>
        </parameter>
        <parameter name="micro">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="51">the micro version to check for</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="COLLECTION"
                    c:identifier="GCR_COLLECTION"
                    introspectable="0">
      <source-position filename="gcr/gcr-collection.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="COLLECTION_GET_INTERFACE"
                    c:identifier="GCR_COLLECTION_GET_INTERFACE"
                    introspectable="0">
      <source-position filename="gcr/gcr-collection.h" line="32"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="COMPARABLE"
                    c:identifier="GCR_COMPARABLE"
                    introspectable="0">
      <source-position filename="gcr/gcr-comparable.h" line="28"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="COMPARABLE_GET_INTERFACE"
                    c:identifier="GCR_COMPARABLE_GET_INTERFACE"
                    introspectable="0">
      <source-position filename="gcr/gcr-comparable.h" line="30"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <interface name="Certificate"
               c:symbol-prefix="certificate"
               c:type="GcrCertificate"
               glib:type-name="GcrCertificate"
               glib:get-type="gcr_certificate_get_type"
               glib:type-struct="CertificateIface">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate.c"
           line="65">An object which holds a certificate.</doc>
      <source-position filename="gcr/gcr-certificate.h" line="70"/>
      <prerequisite name="Comparable"/>
      <function name="compare" c:identifier="gcr_certificate_compare">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="364">Compare one certificate against another. If the certificates are equal
then zero is returned. If one certificate is %NULL or not a certificate,
then a non-zero value is returned.

The return value is useful in a stable sort, but has no user logical
meaning.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="376">zero if the certificates match, non-zero otherwise.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="first"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="366">the certificate to compare</doc>
            <type name="Comparable" c:type="GcrComparable*"/>
          </parameter>
          <parameter name="other"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="367">the certificate to compare against</doc>
            <type name="Comparable" c:type="GcrComparable*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_columns"
                c:identifier="gcr_certificate_get_columns"
                introspectable="0">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="338">Get the columns appropriate for a certificate</doc>
        <source-position filename="gcr/gcr-certificate.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="343">the columns</doc>
          <type name="Column" c:type="const GcrColumn*"/>
        </return-value>
      </function>
      <function name="mixin_class_init"
                c:identifier="gcr_certificate_mixin_class_init"
                introspectable="0">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="1096">Initialize the certificate mixin for the class. This mixin implements the
various required properties for the certificate.

Call this function near the end of your derived class_init function. The
derived class must implement the #GcrCertificate interface.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="142"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object_class" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="1098">The GObjectClass for this class</doc>
            <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
          </parameter>
        </parameters>
      </function>
      <function name="mixin_comparable_init"
                c:identifier="gcr_certificate_mixin_comparable_init"
                introspectable="0">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="1082">Initialize a #GcrComparableIface to compare the current certificate.
In general it's easier to use the GCR_CERTIFICATE_MIXIN_IMPLEMENT_COMPARABLE()
macro instead of this function.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="140"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="iface" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="1084">The interface</doc>
            <type name="ComparableIface" c:type="GcrComparableIface*"/>
          </parameter>
        </parameters>
      </function>
      <function name="mixin_get_property"
                c:identifier="gcr_certificate_mixin_get_property"
                introspectable="0">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="1127">Implementation to get various required certificate properties. This should
be called from your derived class get_property function, or used as a
get_property virtual function.

Example of use as called from derived class get_property function:

&lt;informalexample&gt;&lt;programlisting&gt;
static void
my_get_property (GObject *obj, guint prop_id, GValue *value, GParamSpec *pspec)
{
	switch (prop_id) {

	...

	default:
		gcr_certificate_mixin_get_property (obj, prop_id, value, pspec);
		break;
	}
}
&lt;/programlisting&gt;&lt;/informalexample&gt;

Example of use as get_property function:

&lt;informalexample&gt;&lt;programlisting&gt;
static void
my_class_init (MyClass *klass)
{
	GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
	gobject_class-&gt;get_property = gcr_certificate_mixin_get_property;

	...
}
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <source-position filename="gcr/gcr-certificate.h" line="144"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="obj" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="1129">The object</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
          <parameter name="prop_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="1130">The property id</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="1131">The value to fill in.</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
          <parameter name="pspec" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="1132">The param specification.</doc>
            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="get_der_data" invoker="get_der_data">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="403">Gets the raw DER data for an X.509 certificate.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="59"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="410">raw DER data of the X.509 certificate</doc>
          <array length="0" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="405">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
          <parameter name="n_data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="406">a pointer to a location to store the size of the resulting DER data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_basic_constraints"
              c:identifier="gcr_certificate_get_basic_constraints">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="1005">Get the basic constraints for the certificate if present. If %FALSE is
returned then no basic constraints are present and the @is_ca and
@path_len arguments are not changed.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="131"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="1015">whether basic constraints are present or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="1007">the certificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
          <parameter name="is_ca"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="1008">location to place a %TRUE if is an authority</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
          <parameter name="path_len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="1009">location to place the max path length</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_der_data" c:identifier="gcr_certificate_get_der_data">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="403">Gets the raw DER data for an X.509 certificate.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="410">raw DER data of the X.509 certificate</doc>
          <array length="0" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="405">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
          <parameter name="n_data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="406">a pointer to a location to store the size of the resulting DER data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_expiry_date"
              c:identifier="gcr_certificate_get_expiry_date">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="786">Get the expiry date of this certificate.

The #GDate returned should be freed by the caller using
g_date_free() when no longer required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="111"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="795">An allocated expiry date of this certificate.</doc>
          <type name="GLib.Date" c:type="GDate*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="788">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_fingerprint"
              c:identifier="gcr_certificate_get_fingerprint">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="848">Calculate the fingerprint for this certificate.

The caller should free the returned data using g_free() when
it is no longer required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="120"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="859">the raw binary fingerprint</doc>
          <array length="1" zero-terminated="0" c:type="guchar*">
            <type name="guint8" c:type="guchar"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="850">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="851">the type of algorithm for the fingerprint.</doc>
            <type name="GLib.ChecksumType" c:type="GChecksumType"/>
          </parameter>
          <parameter name="n_length"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="852">The length of the resulting fingerprint.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_fingerprint_hex"
              c:identifier="gcr_certificate_get_fingerprint_hex">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="885">Calculate the fingerprint for this certificate, and return it
as a hex string.

The caller should free the returned data using g_free() when
it is no longer required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="124"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="896">an allocated hex string which contains the fingerprint.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="887">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="888">the type of algorithm for the fingerprint.</doc>
            <type name="GLib.ChecksumType" c:type="GChecksumType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_icon"
              c:identifier="gcr_certificate_get_icon"
              glib:get-property="icon"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="989">Get the icon for a certificate.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="129"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="995">the icon for this certificate, which should be
         released with g_object_unref()</doc>
          <type name="Gio.Icon" c:type="GIcon*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="991">The certificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_issued_date"
              c:identifier="gcr_certificate_get_issued_date">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="754">Get the issued date of this certificate.

The #GDate returned should be freed by the caller using
g_date_free() when no longer required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="109"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="763">An allocated issued date of this certificate.</doc>
          <type name="GLib.Date" c:type="GDate*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="756">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_issuer_cn"
              c:identifier="gcr_certificate_get_issuer_cn">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="447">Get the common name of the issuer of this certificate.

The string returned should be freed by the caller when no longer
required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="84"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="456">The allocated issuer CN, or %NULL if no issuer CN present.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="449">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_issuer_dn"
              c:identifier="gcr_certificate_get_issuer_dn">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="581">Get the full issuer DN of the certificate as a (mostly)
readable string.

The string returned should be freed by the caller when no longer
required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="86"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="591">The allocated issuer DN of the certificate.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="583">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_issuer_name"
              c:identifier="gcr_certificate_get_issuer_name">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="422">Get a name to represent the issuer of this certificate.

This will try to lookup the common name, orianizational unit,
organization in that order.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="82"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="431">the allocated issuer name, or %NULL if no issuer name</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="424">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_issuer_part"
              c:identifier="gcr_certificate_get_issuer_part">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="464">Get a part of the DN of the issuer of this certificate.

Examples of a @part might be the 'OU' (organizational unit)
or the 'CN' (common name). Only the value of that part
of the DN is returned.

The string returned should be freed by the caller when no longer
required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="88"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="478">the allocated part of the issuer DN, or %NULL if no
         such part is present</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="466">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
          <parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="467">a DN type string or OID.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_issuer_raw"
              c:identifier="gcr_certificate_get_issuer_raw">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="510">Get the raw DER data for the issuer DN of the certificate.

The data should be freed by using g_free() when no longer required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="91"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="519">allocated memory containing
         the raw issuer</doc>
          <array length="0" zero-terminated="0" c:type="guchar*">
            <type name="guint8" c:type="guchar"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="512">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
          <parameter name="n_data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="513">The length of the returned data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_key_size" c:identifier="gcr_certificate_get_key_size">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="818">Get the key size in bits of the public key represented
by this certificate.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="118"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="825">The key size of the certificate.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="820">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_markup_text"
              c:identifier="gcr_certificate_get_markup_text">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="202">Calculate a GMarkup string for displaying this certificate.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="127"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="208">the markup string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="204">a certificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_serial_number"
              c:identifier="gcr_certificate_get_serial_number">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="924">Get the raw binary serial number of the certificate.

The caller should free the returned data using g_free() when
it is no longer required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="113"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="934">the raw binary serial number.</doc>
          <array length="0" zero-terminated="0" c:type="guchar*">
            <type name="guint8" c:type="guchar"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="926">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
          <parameter name="n_length"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="927">the length of the returned data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_serial_number_hex"
              c:identifier="gcr_certificate_get_serial_number_hex">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="960">Get the serial number of the certificate as a hex string.

The caller should free the returned data using g_free() when
it is no longer required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="116"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="969">an allocated string containing the serial number as hex.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="962">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subject_cn"
              c:identifier="gcr_certificate_get_subject_cn">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="607">Get the common name of the subject of this certificate.

The string returned should be freed by the caller when no longer
required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="99"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="616">The allocated subject CN, or %NULL if no subject CN present.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="609">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subject_dn"
              c:identifier="gcr_certificate_get_subject_dn">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="681">Get the full subject DN of the certificate as a (mostly)
readable string.

The string returned should be freed by the caller when no longer
required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="101"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="691">The allocated subject DN of the certificate.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="683">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subject_name"
              c:identifier="gcr_certificate_get_subject_name">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="624">Get a name to represent the subject of this certificate.

This will try to lookup the common name, orianizational unit,
organization in that order.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="97"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="633">the allocated subject name, or %NULL if no subject name</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="626">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subject_part"
              c:identifier="gcr_certificate_get_subject_part">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="649">Get a part of the DN of the subject of this certificate.

Examples of a @part might be the 'OU' (organizational unit)
or the 'CN' (common name). Only the value of that part
of the DN is returned.

The string returned should be freed by the caller when no longer
required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="103"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="663">the allocated part of the subject DN, or %NULL if no
         such part is present.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="651">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
          <parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="652">a DN type string or OID.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_subject_raw"
              c:identifier="gcr_certificate_get_subject_raw">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="721">Get the raw DER data for the subject DN of the certificate.

The data should be freed by using g_free() when no longer required.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="106"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="730">allocated memory containing
         the raw subject</doc>
          <array length="0" zero-terminated="0" c:type="guchar*">
            <type name="guint8" c:type="guchar"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="723">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
          <parameter name="n_data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="724">The length of the returned data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_issuer" c:identifier="gcr_certificate_is_issuer">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="543">Check if @issuer could be the issuer of this certificate. This is done by
comparing the relevant subject and issuer fields. No signature check is
done. Proper verification of certificates must be done via a crypto
library.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="553">whether @issuer could be the issuer of the certificate.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="545">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
          <parameter name="issuer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="546">a possible issuer #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="mixin_emit_notify"
              c:identifier="gcr_certificate_mixin_emit_notify">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="1059">Implementers of the #GcrCertificate mixin should call this function to notify
when the certificate has changed to emit notifications on the various
properties.</doc>
        <source-position filename="gcr/gcr-certificate.h" line="138"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="1061">the #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="description" transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="272">A readable description for this certificate</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="expiry" transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="317">The expiry date of the certificate</doc>
        <type name="GLib.Date"/>
      </property>
      <property name="icon" transfer-ownership="none" getter="get_icon">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="290">An icon representing the certificate</doc>
        <type name="Gio.Icon"/>
      </property>
      <property name="issuer" transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="308">Common name part of the certificate issuer</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="label" transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="263">A readable label for this certificate.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="markup" transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="281">GLib markup to describe the certificate</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="subject" transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="299">Common name part of the certificate subject</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
    </interface>
    <class name="CertificateChain"
           c:symbol-prefix="certificate_chain"
           c:type="GcrCertificateChain"
           parent="GObject.Object"
           glib:type-name="GcrCertificateChain"
           glib:get-type="gcr_certificate_chain_get_type"
           glib:type-struct="CertificateChainClass">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate-chain.c"
           line="72">A chain of certificates.</doc>
      <source-position filename="gcr/gcr-certificate-chain.h" line="70"/>
      <constructor name="new" c:identifier="gcr_certificate_chain_new">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="532">Create a new #GcrCertificateChain.</doc>
        <source-position filename="gcr/gcr-certificate-chain.h" line="74"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-chain.c"
               line="537">a newly allocated certificate chain</doc>
          <type name="CertificateChain" c:type="GcrCertificateChain*"/>
        </return-value>
      </constructor>
      <method name="add" c:identifier="gcr_certificate_chain_add">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="545">Add @certificate to the chain. The order of certificates in the chain are
important. The first certificate should be the endpoint certificate, and
then come the signers (certificate authorities) each in turn. If a root
certificate authority is present, it should come last.

Adding a certificate an already built chain (see
gcr_certificate_chain_build()) resets the type of the certificate chain
to %GCR_CERTIFICATE_CHAIN_UNKNOWN</doc>
        <source-position filename="gcr/gcr-certificate-chain.h" line="76"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="547">the #GcrCertificateChain</doc>
            <type name="CertificateChain" c:type="GcrCertificateChain*"/>
          </instance-parameter>
          <parameter name="certificate" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="548">a #GcrCertificate to add to the chain</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="build"
              c:identifier="gcr_certificate_chain_build"
              throws="1"
              glib:async-func="build_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="668">Complete a certificate chain. Once a certificate chain has been built
its status can be examined.

This operation will lookup missing certificates in PKCS\#11
modules and also that each certificate in the chain is the signer of the
previous one. If a trust anchor, pinned certificate, or self-signed certificate
is found, then the chain is considered built. Any extra certificates are
removed from the chain.

It's important to understand that building of a certificate chain does not
constitute verifying that chain. This is merely the first step towards
trust verification.

The @purpose is a string like %GCR_PURPOSE_CLIENT_AUTH and is the purpose
for which the certificate chain will be used. Trust anchors are looked up
for this purpose. This argument is required.

The @peer is usually the host name of the peer whith which this certificate
chain is being used. It is used to look up pinned certificates that have
been stored for this peer. If %NULL then no pinned certificates will
be considered.

If the %GCR_CERTIFICATE_CHAIN_NO_LOOKUPS flag is specified then no
lookups for anchors or pinned certificates are done, and the resulting chain
will be neither anchored or pinned. Additionally no missing certificate
authorities are looked up in PKCS\#11

This call will block, see gcr_certificate_chain_build_async() for the
asynchronous version.</doc>
        <source-position filename="gcr/gcr-certificate-chain.h" line="90"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-chain.c"
               line="707">whether the operation completed successfully</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="670">the #GcrCertificateChain</doc>
            <type name="CertificateChain" c:type="GcrCertificateChain*"/>
          </instance-parameter>
          <parameter name="purpose" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="671">the purpose the certificate chain will be used for</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="peer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="672">the peer the certificate chain will be used with, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="673">chain completion flags</doc>
            <type name="CertificateChainFlags"
                  c:type="GcrCertificateChainFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="674">a #GCancellable or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="build_async"
              c:identifier="gcr_certificate_chain_build_async"
              glib:finish-func="build_finish"
              glib:sync-func="build">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="739">Complete a certificate chain. Once a certificate chain has been built
its status can be examined.

This will lookup missing certificates in PKCS\#11
modules and also that each certificate in the chain is the signer of the
previous one. If a trust anchor, pinned certificate, or self-signed certificate
is found, then the chain is considered built. Any extra certificates are
removed from the chain.

It's important to understand that building of a certificate chain does not
constitute verifying that chain. This is merely the first step towards
trust verification.

The @purpose is a string like %GCR_PURPOSE_CLIENT_AUTH and is the purpose
for which the certificate chain will be used. Trust anchors are looked up
for this purpose. This argument is required.

The @peer is usually the host name of the peer whith which this certificate
chain is being used. It is used to look up pinned certificates that have
been stored for this peer. If %NULL then no pinned certificates will
be considered.

If the %GCR_CERTIFICATE_CHAIN_NO_LOOKUPS flag is specified then no
lookups for anchors or pinned certificates are done, and the resulting chain
will be neither anchored or pinned. Additionally no missing certificate
authorities are looked up in PKCS\#11

When the operation is finished, @callback will be called. You can then call
gcr_certificate_chain_build_finish() to get the result of the operation.</doc>
        <source-position filename="gcr/gcr-certificate-chain.h" line="97"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="741">the #GcrCertificateChain</doc>
            <type name="CertificateChain" c:type="GcrCertificateChain*"/>
          </instance-parameter>
          <parameter name="purpose" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="742">the purpose the certificate chain will be used for</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="peer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="743">the peer the certificate chain will be used with, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="744">chain completion flags</doc>
            <type name="CertificateChainFlags"
                  c:type="GcrCertificateChainFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="745">a #GCancellable or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="746">this will be called when the operation completes.</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="747">data to pass to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="build_finish"
              c:identifier="gcr_certificate_chain_build_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="804">Finishes an asynchronous operation started by
gcr_certificate_chain_build_async().</doc>
        <source-position filename="gcr/gcr-certificate-chain.h" line="105"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-chain.c"
               line="813">whether the operation succeeded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="806">the #GcrCertificateChain</doc>
            <type name="CertificateChain" c:type="GcrCertificateChain*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="807">the #GAsyncResult passed to the callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_anchor"
              c:identifier="gcr_certificate_chain_get_anchor">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="590">If the certificate chain has been built and is of status
%GCR_CERTIFICATE_CHAIN_ANCHORED, then this will return the anchor
certificate that was found. This is not necessarily a root certificate
authority. If an intermediate certificate authority in the chain was
found to be anchored, then that certificate will be returned.

If an anchor is returned it does not mean that the certificate chain has
been verified, but merely that an anchor has been found.</doc>
        <source-position filename="gcr/gcr-certificate-chain.h" line="81"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-chain.c"
               line="603">the anchor certificate, or %NULL if not anchored.</doc>
          <type name="Certificate" c:type="GcrCertificate*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="592">the #GcrCertificateChain</doc>
            <type name="CertificateChain" c:type="GcrCertificateChain*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_certificate"
              c:identifier="gcr_certificate_chain_get_certificate">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="650">Get a certificate in the chain. It is an error to call this function
with an invalid index.</doc>
        <source-position filename="gcr/gcr-certificate-chain.h" line="87"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-chain.c"
               line="658">the certificate</doc>
          <type name="Certificate" c:type="GcrCertificate*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="652">the #GcrCertificateChain</doc>
            <type name="CertificateChain" c:type="GcrCertificateChain*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="653">index of the certificate to get</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_endpoint"
              c:identifier="gcr_certificate_chain_get_endpoint">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="616">Get the endpoint certificate in the chain. This is always the first
certificate in the chain. The endpoint certificate cannot be anchored.</doc>
        <source-position filename="gcr/gcr-certificate-chain.h" line="83"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-chain.c"
               line="623">the endpoint certificate, or %NULL if the chain
         is empty</doc>
          <type name="Certificate" c:type="GcrCertificate*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="618">the #GcrCertificateChain</doc>
            <type name="CertificateChain" c:type="GcrCertificateChain*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_length"
              c:identifier="gcr_certificate_chain_get_length"
              glib:get-property="length">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="635">Get the length of the certificate chain.</doc>
        <source-position filename="gcr/gcr-certificate-chain.h" line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-chain.c"
               line="641">the length of the certificate chain</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="637">the #GcrCertificateChain</doc>
            <type name="CertificateChain" c:type="GcrCertificateChain*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_status"
              c:identifier="gcr_certificate_chain_get_status">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="570">Get the status of a certificate chain. If the certificate chain has not
been built, then the status will be %GCR_CERTIFICATE_CHAIN_UNKNOWN.

A status of %GCR_CERTIFICATE_CHAIN_ANCHORED does not mean that the
certificate chain has been verified, but merely that an anchor has been
found.</doc>
        <source-position filename="gcr/gcr-certificate-chain.h" line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-chain.c"
               line="581">the status of the certificate chain.</doc>
          <type name="CertificateChainStatus"
                c:type="GcrCertificateChainStatus"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-chain.c"
                 line="572">the #GcrCertificateChain</doc>
            <type name="CertificateChain" c:type="GcrCertificateChain*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="length"
                transfer-ownership="none"
                getter="get_length"
                default-value="0">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="467">The length of the certificate chain.</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="status"
                introspectable="0"
                transfer-ownership="none"
                default-value="GCR_CERTIFICATE_CHAIN_UNKNOWN">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="456">The certificate chain status. See #GcrCertificateChainStatus</doc>
        <type/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="CertificateChainPrivate"
              c:type="GcrCertificateChainPrivate*"/>
      </field>
    </class>
    <record name="CertificateChainClass"
            c:type="GcrCertificateChainClass"
            glib:is-gtype-struct-for="CertificateChain">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate-chain.c"
           line="78">The class for #GcrCertificateChain.</doc>
      <source-position filename="gcr/gcr-certificate-chain.h" line="70"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="80">The parent class</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <bitfield name="CertificateChainFlags" c:type="GcrCertificateChainFlags">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate-chain.c"
           line="515">Flags to be used with the gcr_certificate_chain_build() operation.</doc>
      <source-position filename="gcr/gcr-certificate-chain.h" line="48"/>
      <member name="none" value="0" c:identifier="GCR_CERTIFICATE_CHAIN_NONE">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="517">no flags</doc>
      </member>
      <member name="no_lookups"
              value="1"
              c:identifier="GCR_CERTIFICATE_CHAIN_NO_LOOKUPS">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="518">If this flag is specified then no
lookups for anchors or pinned certificates are done, and the resulting chain
will be neither anchored or pinned. Additionally no missing certificate
authorities are looked up in PKCS\#11.</doc>
      </member>
    </bitfield>
    <record name="CertificateChainPrivate"
            c:type="GcrCertificateChainPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gcr/gcr-certificate-chain.h" line="59"/>
    </record>
    <enumeration name="CertificateChainStatus"
                 c:type="GcrCertificateChainStatus">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate-chain.c"
           line="485">The status of a built certificate chain. Will be set to
%GCR_CERTIFICATE_CHAIN_UNKNOWN for certificate chains that have not been
built.</doc>
      <source-position filename="gcr/gcr-certificate-chain.h" line="43"/>
      <member name="unknown"
              value="0"
              c:identifier="GCR_CERTIFICATE_CHAIN_UNKNOWN">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="487">The certificate chain's status is unknown.
When a chain is not yet built it has this status. If a chain is modified after
being built, it has this status.</doc>
      </member>
      <member name="incomplete"
              value="1"
              c:identifier="GCR_CERTIFICATE_CHAIN_INCOMPLETE">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="490">A full chain could not be loaded. The
chain does not end with a self-signed certificate, a trusted anchor, or a
pinned certificate.</doc>
      </member>
      <member name="distrusted"
              value="2"
              c:identifier="GCR_CERTIFICATE_CHAIN_DISTRUSTED">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="495">The certificate chain contains a revoked
or otherwise explicitly distrusted certificate. The entire chain should
be distrusted.</doc>
      </member>
      <member name="selfsigned"
              value="3"
              c:identifier="GCR_CERTIFICATE_CHAIN_SELFSIGNED">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="493">The chain ends with a self-signed
certificate. No trust anchor was found.</doc>
      </member>
      <member name="pinned"
              value="4"
              c:identifier="GCR_CERTIFICATE_CHAIN_PINNED">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="500">The chain represents a pinned certificate. A
pinned certificate is an exception which trusts a given certificate
explicitly for a purpose and communication with a certain peer.</doc>
      </member>
      <member name="anchored"
              value="5"
              c:identifier="GCR_CERTIFICATE_CHAIN_ANCHORED">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-chain.c"
             line="498">The chain ends with an anchored
certificate. The anchored certificate is not necessarily self-signed.</doc>
      </member>
    </enumeration>
    <record name="CertificateIface"
            c:type="GcrCertificateIface"
            glib:is-gtype-struct-for="Certificate">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate.c"
           line="71">The interface that implementors of #GcrCertificate must implement.</doc>
      <source-position filename="gcr/gcr-certificate.h" line="70"/>
      <field name="parent">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="73">the parent interface type</doc>
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_der_data">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="74">a method which returns the RAW der data of the certificate</doc>
        <callback name="get_der_data">
          <source-position filename="gcr/gcr-certificate.h" line="59"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate.c"
                 line="410">raw DER data of the X.509 certificate</doc>
            <array length="1" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-certificate.c"
                   line="405">a #GcrCertificate</doc>
              <type name="Certificate" c:type="GcrCertificate*"/>
            </parameter>
            <parameter name="n_data"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve"
                   filename="gcr/gcr-certificate.c"
                   line="406">a pointer to a location to store the size of the resulting DER data.</doc>
              <type name="gsize" c:type="gsize*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="dummy1" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy2" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy3" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy5" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy6" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy7" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy8" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
    </record>
    <class name="CertificateRequest"
           c:symbol-prefix="certificate_request"
           c:type="GcrCertificateRequest"
           parent="GObject.Object"
           glib:type-name="GcrCertificateRequest"
           glib:get-type="gcr_certificate_request_get_type"
           glib:type-struct="CertificateRequestClass">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate-request.c"
           line="51">Represents a certificate request.</doc>
      <source-position filename="gcr/gcr-certificate-request.h" line="38"/>
      <function name="capable"
                c:identifier="gcr_certificate_request_capable"
                throws="1"
                glib:async-func="capable_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="742">Check whether #GcrCertificateRequest is capable of creating a request
for the given @private_key.</doc>
        <source-position filename="gcr/gcr-certificate-request.h" line="42"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-request.c"
               line="751">whether a request can be created</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="private_key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="744">a private key</doc>
            <type name="Gck.Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="745">cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </function>
      <function name="capable_async"
                c:identifier="gcr_certificate_request_capable_async"
                glib:finish-func="capable_finish"
                glib:sync-func="capable">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="767">Asynchronously check whether #GcrCertificateRequest is capable of creating
a request for the given @private_key.</doc>
        <source-position filename="gcr/gcr-certificate-request.h" line="46"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="private_key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="769">a private key</doc>
            <type name="Gck.Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="770">cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="771">will be called when the operation completes</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="772">data to be passed to callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="capable_finish"
                c:identifier="gcr_certificate_request_capable_finish"
                throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="792">Get the result for asynchronously check whether #GcrCertificateRequest is
capable of creating a request for the given @private_key.</doc>
        <source-position filename="gcr/gcr-certificate-request.h" line="52"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-request.c"
               line="800">whether a request can be created</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="794">asynchronous result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </function>
      <function name="prepare" c:identifier="gcr_certificate_request_prepare">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="213">Create a new certificate request, in the given format for the private key.</doc>
        <source-position filename="gcr/gcr-certificate-request.h" line="55"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-request.c"
               line="220">a new #GcrCertificate request</doc>
          <type name="CertificateRequest" c:type="GcrCertificateRequest*"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="215">the format for the certificate request</doc>
            <type name="CertificateRequestFormat"
                  c:type="GcrCertificateRequestFormat"/>
          </parameter>
          <parameter name="private_key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="216">the private key the the certificate is being requested for</doc>
            <type name="Gck.Object" c:type="GckObject*"/>
          </parameter>
        </parameters>
      </function>
      <method name="complete"
              c:identifier="gcr_certificate_request_complete"
              throws="1"
              glib:async-func="complete_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="439">Complete and sign a certificate request, so that it can be encoded
and sent to a certificate authority.

This call may block as it signs the request using the private key.</doc>
        <source-position filename="gcr/gcr-certificate-request.h" line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-request.c"
               line="450">whether certificate request was successfully completed or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="441">a certificate request</doc>
            <type name="CertificateRequest" c:type="GcrCertificateRequest*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="442">a cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="complete_async"
              c:identifier="gcr_certificate_request_complete_async"
              glib:finish-func="complete_finish"
              glib:sync-func="complete">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="628">Asynchronously complete and sign a certificate request, so that it can
be encoded and sent to a certificate authority.

This call will return immediately and complete later.</doc>
        <source-position filename="gcr/gcr-certificate-request.h" line="69"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="630">a certificate request</doc>
            <type name="CertificateRequest" c:type="GcrCertificateRequest*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="631">a cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="632">called when the operation completes</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="633">data to pass to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="complete_finish"
              c:identifier="gcr_certificate_request_complete_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="666">Finish an asynchronous operation to complete and sign a certificate
request.</doc>
        <source-position filename="gcr/gcr-certificate-request.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-request.c"
               line="675">whether certificate request was successfully completed or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="668">a certificate request</doc>
            <type name="CertificateRequest" c:type="GcrCertificateRequest*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="669">result of the asynchronous operation</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="encode" c:identifier="gcr_certificate_request_encode">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="689">Encode the certificate request. It must have been completed with
gcr_certificate_request_complete() or gcr_certificate_request_complete_async()

If @textual is %FALSE, the output is a DER encoded certificate request.

If @textual is %TRUE, the output is encoded as text. For PKCS\#10 requests this
is done using the OpenSSL style PEM encoding.</doc>
        <source-position filename="gcr/gcr-certificate-request.h" line="78"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-request.c"
               line="703">the encoded certificate request</doc>
          <array length="1" zero-terminated="0" c:type="guchar*">
            <type name="guint8" c:type="guchar"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="691">a certificate request</doc>
            <type name="CertificateRequest" c:type="GcrCertificateRequest*"/>
          </instance-parameter>
          <parameter name="textual" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="692">whether to encode output as text</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="length"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="693">location to place length of returned data</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_format"
              c:identifier="gcr_certificate_request_get_format">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="250">Get the format of this certificate request.</doc>
        <source-position filename="gcr/gcr-certificate-request.h" line="60"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-request.c"
               line="256">the format</doc>
          <type name="CertificateRequestFormat"
                c:type="GcrCertificateRequestFormat"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="252">the certificate request</doc>
            <type name="CertificateRequest" c:type="GcrCertificateRequest*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_private_key"
              c:identifier="gcr_certificate_request_get_private_key"
              glib:get-property="private-key">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="235">Get the private key this certificate request is for.</doc>
        <source-position filename="gcr/gcr-certificate-request.h" line="58"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate-request.c"
               line="241">the private key,</doc>
          <type name="Gck.Object" c:type="GckObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="237">the certificate request</doc>
            <type name="CertificateRequest" c:type="GcrCertificateRequest*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_cn" c:identifier="gcr_certificate_request_set_cn">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="265">Set the common name encoded in the certificate request.</doc>
        <source-position filename="gcr/gcr-certificate-request.h" line="62"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="267">the certificate request</doc>
            <type name="CertificateRequest" c:type="GcrCertificateRequest*"/>
          </instance-parameter>
          <parameter name="cn" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-certificate-request.c"
                 line="268">common name to set on the request</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="format"
                introspectable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="GCR_CERTIFICATE_REQUEST_PKCS10">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="202">The format of the certificate request.</doc>
        <type/>
      </property>
      <property name="private-key"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_private_key">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="192">The private key that this certificate request is for.</doc>
        <type name="Gck.Object"/>
      </property>
    </class>
    <record name="CertificateRequestClass"
            c:type="GcrCertificateRequestClass"
            glib:is-gtype-struct-for="CertificateRequest">
      <source-position filename="gcr/gcr-certificate-request.h" line="38"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="CertificateRequestFormat"
                 c:type="GcrCertificateRequestFormat">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate-request.c"
           line="57">The format of a certificate request. Currently only PKCS\#10 is supported.</doc>
      <source-position filename="gcr/gcr-certificate-request.h" line="35"/>
      <member name="certificate_request_pkcs10"
              value="1"
              c:identifier="GCR_CERTIFICATE_REQUEST_PKCS10">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate-request.c"
             line="59">certificate request is in PKCS\#10 format</doc>
      </member>
    </enumeration>
    <interface name="Collection"
               c:symbol-prefix="collection"
               c:type="GcrCollection"
               glib:type-name="GcrCollection"
               glib:get-type="gcr_collection_get_type"
               glib:type-struct="CollectionIface">
      <doc xml:space="preserve"
           filename="gcr/gcr-collection.c"
           line="37">A #GcrCollection is used to group a set of objects.</doc>
      <source-position filename="gcr/gcr-collection.h" line="61"/>
      <virtual-method name="added">
        <source-position filename="gcr/gcr-collection.h" line="41"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Collection" c:type="GcrCollection*"/>
          </instance-parameter>
          <parameter name="object" transfer-ownership="none">
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="contains" invoker="contains">
        <doc xml:space="preserve"
             filename="gcr/gcr-collection.c"
             line="129">Check whether the collection contains an object or not.</doc>
        <source-position filename="gcr/gcr-collection.h" line="50"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-collection.c"
               line="136">whether the collection contains this object</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="131">the collection</doc>
            <type name="Collection" c:type="GcrCollection*"/>
          </instance-parameter>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="132">object to check</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_length" invoker="get_length">
        <doc xml:space="preserve"
             filename="gcr/gcr-collection.c"
             line="96">Get the number of objects in this collection.</doc>
        <source-position filename="gcr/gcr-collection.h" line="46"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-collection.c"
               line="102">The number of objects.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="98">The collection</doc>
            <type name="Collection" c:type="GcrCollection*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_objects" invoker="get_objects">
        <doc xml:space="preserve"
             filename="gcr/gcr-collection.c"
             line="112">Get a list of the objects in this collection.</doc>
        <source-position filename="gcr/gcr-collection.h" line="48"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="gcr/gcr-collection.c"
               line="118">a list of the objects
         in this collection, which should be freed with g_list_free()</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="GObject.Object"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="114">The collection</doc>
            <type name="Collection" c:type="GcrCollection*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="removed">
        <source-position filename="gcr/gcr-collection.h" line="43"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Collection" c:type="GcrCollection*"/>
          </instance-parameter>
          <parameter name="object" transfer-ownership="none">
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="contains" c:identifier="gcr_collection_contains">
        <doc xml:space="preserve"
             filename="gcr/gcr-collection.c"
             line="129">Check whether the collection contains an object or not.</doc>
        <source-position filename="gcr/gcr-collection.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-collection.c"
               line="136">whether the collection contains this object</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="131">the collection</doc>
            <type name="Collection" c:type="GcrCollection*"/>
          </instance-parameter>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="132">object to check</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="emit_added" c:identifier="gcr_collection_emit_added">
        <doc xml:space="preserve"
             filename="gcr/gcr-collection.c"
             line="148">Emit the #GcrCollection::added signal for the given object. This function
is used by implementors of this interface.</doc>
        <source-position filename="gcr/gcr-collection.h" line="72"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="150">The collection</doc>
            <type name="Collection" c:type="GcrCollection*"/>
          </instance-parameter>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="151">The object that was added</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="emit_removed" c:identifier="gcr_collection_emit_removed">
        <doc xml:space="preserve"
             filename="gcr/gcr-collection.c"
             line="163">Emit the #GcrCollection::removed signal for the given object. This function
is used by implementors of this interface.</doc>
        <source-position filename="gcr/gcr-collection.h" line="75"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="165">The collection</doc>
            <type name="Collection" c:type="GcrCollection*"/>
          </instance-parameter>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="166">The object that was removed</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_length" c:identifier="gcr_collection_get_length">
        <doc xml:space="preserve"
             filename="gcr/gcr-collection.c"
             line="96">Get the number of objects in this collection.</doc>
        <source-position filename="gcr/gcr-collection.h" line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-collection.c"
               line="102">The number of objects.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="98">The collection</doc>
            <type name="Collection" c:type="GcrCollection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_objects" c:identifier="gcr_collection_get_objects">
        <doc xml:space="preserve"
             filename="gcr/gcr-collection.c"
             line="112">Get a list of the objects in this collection.</doc>
        <source-position filename="gcr/gcr-collection.h" line="67"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="gcr/gcr-collection.c"
               line="118">a list of the objects
         in this collection, which should be freed with g_list_free()</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="GObject.Object"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="114">The collection</doc>
            <type name="Collection" c:type="GcrCollection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <glib:signal name="added" when="last">
        <doc xml:space="preserve"
             filename="gcr/gcr-collection.c"
             line="63">This signal is emitted when an object is added to the collection.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="66">object that was added</doc>
            <type name="GObject.Object"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="removed" when="last">
        <doc xml:space="preserve"
             filename="gcr/gcr-collection.c"
             line="75">This signal is emitted when an object is removed from the collection.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="78">object that was removed</doc>
            <type name="GObject.Object"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <record name="CollectionIface"
            c:type="GcrCollectionIface"
            glib:is-gtype-struct-for="Collection">
      <source-position filename="gcr/gcr-collection.h" line="61"/>
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="added">
        <callback name="added">
          <source-position filename="gcr/gcr-collection.h" line="41"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Collection" c:type="GcrCollection*"/>
            </parameter>
            <parameter name="object" transfer-ownership="none">
              <type name="GObject.Object" c:type="GObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="removed">
        <callback name="removed">
          <source-position filename="gcr/gcr-collection.h" line="43"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Collection" c:type="GcrCollection*"/>
            </parameter>
            <parameter name="object" transfer-ownership="none">
              <type name="GObject.Object" c:type="GObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_length">
        <callback name="get_length">
          <source-position filename="gcr/gcr-collection.h" line="46"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="102">The number of objects.</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-collection.c"
                   line="98">The collection</doc>
              <type name="Collection" c:type="GcrCollection*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_objects">
        <callback name="get_objects">
          <source-position filename="gcr/gcr-collection.h" line="48"/>
          <return-value transfer-ownership="container">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="118">a list of the objects
         in this collection, which should be freed with g_list_free()</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="GObject.Object"/>
            </type>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-collection.c"
                   line="114">The collection</doc>
              <type name="Collection" c:type="GcrCollection*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="contains">
        <callback name="contains">
          <source-position filename="gcr/gcr-collection.h" line="50"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-collection.c"
                 line="136">whether the collection contains this object</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-collection.c"
                   line="131">the collection</doc>
              <type name="Collection" c:type="GcrCollection*"/>
            </parameter>
            <parameter name="object" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-collection.c"
                   line="132">object to check</doc>
              <type name="GObject.Object" c:type="GObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="dummy1" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy2" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy3" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy5" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy6" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy7" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy8" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
    </record>
    <record name="Column" c:type="GcrColumn">
      <source-position filename="gcr/gcr-column.h" line="49"/>
      <field name="property_name" writable="1">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="property_type" writable="1">
        <type name="GType" c:type="GType"/>
      </field>
      <field name="column_type" writable="1">
        <type name="GType" c:type="GType"/>
      </field>
      <field name="label" writable="1">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="flags" writable="1">
        <type name="ColumnFlags" c:type="GcrColumnFlags"/>
      </field>
      <field name="transformer" writable="1">
        <type name="GObject.ValueTransform" c:type="GValueTransform"/>
      </field>
      <field name="user_data" writable="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
    </record>
    <bitfield name="ColumnFlags" c:type="GcrColumnFlags">
      <source-position filename="gcr/gcr-column.h" line="33"/>
      <member name="none" value="0" c:identifier="GCR_COLUMN_NONE">
      </member>
      <member name="hidden" value="2" c:identifier="GCR_COLUMN_HIDDEN">
      </member>
      <member name="sortable" value="4" c:identifier="GCR_COLUMN_SORTABLE">
      </member>
    </bitfield>
    <interface name="Comparable"
               c:symbol-prefix="comparable"
               c:type="GcrComparable"
               glib:type-name="GcrComparable"
               glib:get-type="gcr_comparable_get_type"
               glib:type-struct="ComparableIface">
      <doc xml:space="preserve"
           filename="gcr/gcr-comparable.c"
           line="35">The #GcrComparable interface is implemented by comparable objects.</doc>
      <source-position filename="gcr/gcr-comparable.h" line="38"/>
      <function name="memcmp"
                c:identifier="gcr_comparable_memcmp"
                introspectable="0">
        <doc xml:space="preserve"
             filename="gcr/gcr-comparable.c"
             line="78">Compare two blocks of memory. The return value can be used to sort
the blocks of memory.</doc>
        <source-position filename="gcr/gcr-comparable.h" line="45"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-comparable.c"
               line="88">Zero if the blocks are identical, negative if first
         less than secend, possitive otherwise.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="mem1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-comparable.c"
                 line="80">First block of memory</doc>
            <array length="1" zero-terminated="0" c:type="gconstpointer">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="size1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-comparable.c"
                 line="81">Length of first block</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="mem2" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-comparable.c"
                 line="82">Second block of memory</doc>
            <array length="3" zero-terminated="0" c:type="gconstpointer">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="size2" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-comparable.c"
                 line="83">Length of second block</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="compare" invoker="compare">
        <doc xml:space="preserve"
             filename="gcr/gcr-comparable.c"
             line="59">Compare whether two objects represent the same thing. The return value can
also be used to sort the objects.</doc>
        <source-position filename="gcr/gcr-comparable.h" line="37"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-comparable.c"
               line="67">Zero if the two objects represent the same thing, non-zero if not.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-comparable.c"
                 line="61">The comparable object</doc>
            <type name="Comparable" c:type="GcrComparable*"/>
          </instance-parameter>
          <parameter name="other"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-comparable.c"
                 line="62">Another comparable object</doc>
            <type name="Comparable" c:type="GcrComparable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="compare" c:identifier="gcr_comparable_compare">
        <doc xml:space="preserve"
             filename="gcr/gcr-comparable.c"
             line="59">Compare whether two objects represent the same thing. The return value can
also be used to sort the objects.</doc>
        <source-position filename="gcr/gcr-comparable.h" line="42"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-comparable.c"
               line="67">Zero if the two objects represent the same thing, non-zero if not.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-comparable.c"
                 line="61">The comparable object</doc>
            <type name="Comparable" c:type="GcrComparable*"/>
          </instance-parameter>
          <parameter name="other"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-comparable.c"
                 line="62">Another comparable object</doc>
            <type name="Comparable" c:type="GcrComparable*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="ComparableIface"
            c:type="GcrComparableIface"
            glib:is-gtype-struct-for="Comparable">
      <doc xml:space="preserve"
           filename="gcr/gcr-comparable.c"
           line="41">The interface to implement for #GcrComparable</doc>
      <source-position filename="gcr/gcr-comparable.h" line="38"/>
      <field name="parent">
        <doc xml:space="preserve"
             filename="gcr/gcr-comparable.c"
             line="43">type interface</doc>
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="compare">
        <doc xml:space="preserve"
             filename="gcr/gcr-comparable.c"
             line="44">Compare whether tow objects represent the same thing.</doc>
        <callback name="compare">
          <source-position filename="gcr/gcr-comparable.h" line="37"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-comparable.c"
                 line="67">Zero if the two objects represent the same thing, non-zero if not.</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-comparable.c"
                   line="61">The comparable object</doc>
              <type name="Comparable" c:type="GcrComparable*"/>
            </parameter>
            <parameter name="other"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="gcr/gcr-comparable.c"
                   line="62">Another comparable object</doc>
              <type name="Comparable" c:type="GcrComparable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <enumeration name="DataError" c:type="GcrDataError">
      <doc xml:space="preserve"
           filename="gcr/gcr-parser.c"
           line="93">Values responding to error codes for parsing and serializing data.</doc>
      <source-position filename="gcr/gcr-types.h" line="57"/>
      <member name="failure" value="-1" c:identifier="GCR_ERROR_FAILURE">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="95">Failed to parse or serialize the data</doc>
      </member>
      <member name="unrecognized"
              value="1"
              c:identifier="GCR_ERROR_UNRECOGNIZED">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="96">The data was unrecognized or unsupported</doc>
      </member>
      <member name="cancelled" value="2" c:identifier="GCR_ERROR_CANCELLED">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="97">The operation was cancelled</doc>
      </member>
      <member name="locked" value="3" c:identifier="GCR_ERROR_LOCKED">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="98">The data was encrypted or locked and could not be unlocked.</doc>
      </member>
    </enumeration>
    <enumeration name="DataFormat" c:type="GcrDataFormat">
      <doc xml:space="preserve"
           filename="gcr/gcr-parser.c"
           line="2185">The various format identifiers.</doc>
      <source-position filename="gcr/gcr-types.h" line="101"/>
      <member name="all" value="-1" c:identifier="GCR_FORMAT_ALL">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2187">Represents all the formats, when enabling or disabling</doc>
      </member>
      <member name="invalid" value="0" c:identifier="GCR_FORMAT_INVALID">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2188">Not a valid format</doc>
      </member>
      <member name="der_private_key"
              value="100"
              c:identifier="GCR_FORMAT_DER_PRIVATE_KEY">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2189">DER encoded private key</doc>
      </member>
      <member name="der_private_key_rsa"
              value="101"
              c:identifier="GCR_FORMAT_DER_PRIVATE_KEY_RSA">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2190">DER encoded RSA private key</doc>
      </member>
      <member name="der_private_key_dsa"
              value="102"
              c:identifier="GCR_FORMAT_DER_PRIVATE_KEY_DSA">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2191">DER encoded DSA private key</doc>
      </member>
      <member name="der_private_key_ec"
              value="103"
              c:identifier="GCR_FORMAT_DER_PRIVATE_KEY_EC">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2192">DER encoded EC private key</doc>
      </member>
      <member name="der_subject_public_key"
              value="150"
              c:identifier="GCR_FORMAT_DER_SUBJECT_PUBLIC_KEY">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2193">DER encoded SubjectPublicKeyInfo</doc>
      </member>
      <member name="der_certificate_x509"
              value="200"
              c:identifier="GCR_FORMAT_DER_CERTIFICATE_X509">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2194">DER encoded X.509 certificate</doc>
      </member>
      <member name="der_pkcs7" value="300" c:identifier="GCR_FORMAT_DER_PKCS7">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2195">DER encoded PKCS\#7 container file which can contain certificates</doc>
      </member>
      <member name="der_pkcs8" value="400" c:identifier="GCR_FORMAT_DER_PKCS8">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2196">DER encoded PKCS\#8 file which can contain a key</doc>
      </member>
      <member name="der_pkcs8_plain"
              value="401"
              c:identifier="GCR_FORMAT_DER_PKCS8_PLAIN">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2197">Unencrypted DER encoded PKCS\#8 file which can contain a key</doc>
      </member>
      <member name="der_pkcs8_encrypted"
              value="402"
              c:identifier="GCR_FORMAT_DER_PKCS8_ENCRYPTED">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2198">Encrypted DER encoded PKCS\#8 file which can contain a key</doc>
      </member>
      <member name="der_pkcs10"
              value="450"
              c:identifier="GCR_FORMAT_DER_PKCS10">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2199">DER encoded PKCS\#10 certificate request file</doc>
      </member>
      <member name="der_spkac" value="455" c:identifier="GCR_FORMAT_DER_SPKAC">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2216">DER encoded SPKAC as generated by HTML5 keygen element</doc>
      </member>
      <member name="base64_spkac"
              value="456"
              c:identifier="GCR_FORMAT_BASE64_SPKAC">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2217">OpenSSL style SPKAC data</doc>
      </member>
      <member name="der_pkcs12"
              value="500"
              c:identifier="GCR_FORMAT_DER_PKCS12">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2200">DER encoded PKCS\#12 file which can contain certificates and/or keys</doc>
      </member>
      <member name="openssh_public"
              value="600"
              c:identifier="GCR_FORMAT_OPENSSH_PUBLIC">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2201">OpenSSH v1 or v2 public key</doc>
      </member>
      <member name="openpgp_packet"
              value="700"
              c:identifier="GCR_FORMAT_OPENPGP_PACKET">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2202">OpenPGP key packet(s)</doc>
      </member>
      <member name="openpgp_armor"
              value="701"
              c:identifier="GCR_FORMAT_OPENPGP_ARMOR">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2203">OpenPGP public or private key armor encoded data</doc>
      </member>
      <member name="pem" value="1000" c:identifier="GCR_FORMAT_PEM">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2204">An OpenSSL style PEM file with unspecified contents</doc>
      </member>
      <member name="pem_private_key_rsa"
              value="1001"
              c:identifier="GCR_FORMAT_PEM_PRIVATE_KEY_RSA">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2206">An OpenSSL style PEM file with a private RSA key</doc>
      </member>
      <member name="pem_private_key_dsa"
              value="1002"
              c:identifier="GCR_FORMAT_PEM_PRIVATE_KEY_DSA">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2207">An OpenSSL style PEM file with a private DSA key</doc>
      </member>
      <member name="pem_certificate_x509"
              value="1003"
              c:identifier="GCR_FORMAT_PEM_CERTIFICATE_X509">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2209">An OpenSSL style PEM file with an X.509 certificate</doc>
      </member>
      <member name="pem_pkcs7"
              value="1004"
              c:identifier="GCR_FORMAT_PEM_PKCS7">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2210">An OpenSSL style PEM file containing PKCS\#7</doc>
      </member>
      <member name="pem_pkcs8_plain"
              value="1005"
              c:identifier="GCR_FORMAT_PEM_PKCS8_PLAIN">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2211">Unencrypted OpenSSL style PEM file containing PKCS\#8</doc>
      </member>
      <member name="pem_pkcs8_encrypted"
              value="1006"
              c:identifier="GCR_FORMAT_PEM_PKCS8_ENCRYPTED">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2212">Encrypted OpenSSL style PEM file containing PKCS\#8</doc>
      </member>
      <member name="pem_pkcs12"
              value="1007"
              c:identifier="GCR_FORMAT_PEM_PKCS12">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2214">An OpenSSL style PEM file containing PKCS\#12</doc>
      </member>
      <member name="pem_private_key"
              value="1008"
              c:identifier="GCR_FORMAT_PEM_PRIVATE_KEY">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2205">An OpenSSL style PEM file with a private key</doc>
      </member>
      <member name="pem_pkcs10"
              value="1009"
              c:identifier="GCR_FORMAT_PEM_PKCS10">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2213">An OpenSSL style PEM file containing PKCS\#10</doc>
      </member>
      <member name="pem_private_key_ec"
              value="1010"
              c:identifier="GCR_FORMAT_PEM_PRIVATE_KEY_EC">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2208">An OpenSSL style PEM file with a private EC key</doc>
      </member>
      <member name="pem_public_key"
              value="1011"
              c:identifier="GCR_FORMAT_PEM_PUBLIC_KEY">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2215">An OpenSSL style PEM file containing a SubjectPublicKeyInfo</doc>
      </member>
    </enumeration>
    <function-macro name="FILTER_COLLECTION"
                    c:identifier="GCR_FILTER_COLLECTION"
                    introspectable="0">
      <source-position filename="gcr/gcr-filter-collection.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILTER_COLLECTION_CLASS"
                    c:identifier="GCR_FILTER_COLLECTION_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-filter-collection.h" line="33"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILTER_COLLECTION_GET_CLASS"
                    c:identifier="GCR_FILTER_COLLECTION_GET_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-filter-collection.h" line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="FilterCollection"
           c:symbol-prefix="filter_collection"
           c:type="GcrFilterCollection"
           parent="GObject.Object"
           glib:type-name="GcrFilterCollection"
           glib:get-type="gcr_filter_collection_get_type"
           glib:type-struct="FilterCollectionClass">
      <doc xml:space="preserve"
           filename="gcr/gcr-filter-collection.c"
           line="40">A filter implementation of #GcrCollection.</doc>
      <source-position filename="gcr/gcr-filter-collection.h" line="51"/>
      <implements name="Collection"/>
      <constructor name="new_with_callback"
                   c:identifier="gcr_filter_collection_new_with_callback">
        <doc xml:space="preserve"
             filename="gcr/gcr-filter-collection.c"
             line="252">Create a new #GcrFilterCollection.

The callback should return %TRUE if an object should appear in the
filtered collection.

If a %NULL callback is set, then all underlynig objects will appear in the
filtered collection.</doc>
        <source-position filename="gcr/gcr-filter-collection.h" line="58"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-filter-collection.c"
               line="267">a newly allocated
         filtered collection, which should be freed with g_object_unref()</doc>
          <type name="FilterCollection" c:type="GcrCollection*"/>
        </return-value>
        <parameters>
          <parameter name="underlying" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-filter-collection.c"
                 line="254">the underlying collection</doc>
            <type name="Collection" c:type="GcrCollection*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="notified"
                     closure="2"
                     destroy="3">
            <doc xml:space="preserve"
                 filename="gcr/gcr-filter-collection.c"
                 line="255">function to call for each object</doc>
            <type name="FilterCollectionFunc"
                  c:type="GcrFilterCollectionFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-filter-collection.c"
                 line="256">data to pass to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy_func"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve"
                 filename="gcr/gcr-filter-collection.c"
                 line="257">called for user_data when it is no longer needed</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_underlying"
              c:identifier="gcr_filter_collection_get_underlying"
              glib:get-property="underlying">
        <doc xml:space="preserve"
             filename="gcr/gcr-filter-collection.c"
             line="365">Get the collection that is being filtered by this filter collection.</doc>
        <source-position filename="gcr/gcr-filter-collection.h" line="70"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-filter-collection.c"
               line="371">the underlying collection</doc>
          <type name="Collection" c:type="GcrCollection*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-filter-collection.c"
                 line="367">a filter collection</doc>
            <type name="FilterCollection" c:type="GcrFilterCollection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="refilter" c:identifier="gcr_filter_collection_refilter">
        <doc xml:space="preserve"
             filename="gcr/gcr-filter-collection.c"
             line="320">Refilter all objects in the underlying collection. Call this function if
the filter callback function changes its filtering criteria.</doc>
        <source-position filename="gcr/gcr-filter-collection.h" line="68"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-filter-collection.c"
                 line="322">a filter collection</doc>
            <type name="FilterCollection" c:type="GcrFilterCollection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_callback"
              c:identifier="gcr_filter_collection_set_callback">
        <doc xml:space="preserve"
             filename="gcr/gcr-filter-collection.c"
             line="287">Set the callback used to filter the objects in the underlying collection.
The callback should return %TRUE if an object should appear in the
filtered collection.

If a %NULL callback is set, then all underlynig objects will appear in the
filtered collection.

This will refilter the collection.</doc>
        <source-position filename="gcr/gcr-filter-collection.h" line="63"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-filter-collection.c"
                 line="289">a filter collection</doc>
            <type name="FilterCollection" c:type="GcrFilterCollection*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve"
                 filename="gcr/gcr-filter-collection.c"
                 line="290">function to call for each object</doc>
            <type name="FilterCollectionFunc"
                  c:type="GcrFilterCollectionFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-filter-collection.c"
                 line="291">data to pass to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy_func"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve"
                 filename="gcr/gcr-filter-collection.c"
                 line="292">called for user_data when it is no longer needed</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <property name="underlying"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_underlying">
        <type name="Collection"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="FilterCollectionPrivate"
              c:type="GcrFilterCollectionPrivate*"/>
      </field>
    </class>
    <record name="FilterCollectionClass"
            c:type="GcrFilterCollectionClass"
            glib:is-gtype-struct-for="FilterCollection">
      <doc xml:space="preserve"
           filename="gcr/gcr-filter-collection.c"
           line="46">The class for #GcrFilterCollection.</doc>
      <source-position filename="gcr/gcr-filter-collection.h" line="51"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="gcr/gcr-filter-collection.c"
             line="48">the parent class</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <callback name="FilterCollectionFunc" c:type="GcrFilterCollectionFunc">
      <doc xml:space="preserve"
           filename="gcr/gcr-filter-collection.c"
           line="53">A function which is called by #GcrFilterCollection in order to determine
whether an object should show through the filter or not.</doc>
      <source-position filename="gcr/gcr-filter-collection.h" line="55"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-filter-collection.c"
             line="61">%TRUE if an object should be included in the filtered collection</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="object" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-filter-collection.c"
               line="55">object to filter</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-filter-collection.c"
               line="56">user data passed to the callback</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="FilterCollectionPrivate"
            c:type="GcrFilterCollectionPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gcr/gcr-filter-collection.h" line="40"/>
    </record>
    <constant name="ICON_CERTIFICATE"
              value="application-certificate"
              c:type="GCR_ICON_CERTIFICATE">
      <source-position filename="gcr/gcr-icons.h" line="34"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="ICON_GNUPG" value="gcr-gnupg" c:type="GCR_ICON_GNUPG">
      <source-position filename="gcr/gcr-icons.h" line="36"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="ICON_HOME_DIRECTORY"
              value="user-home"
              c:type="GCR_ICON_HOME_DIRECTORY">
      <source-position filename="gcr/gcr-icons.h" line="40"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="ICON_KEY" value="gcr-key" c:type="GCR_ICON_KEY">
      <source-position filename="gcr/gcr-icons.h" line="37"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="ICON_KEY_PAIR"
              value="gcr-key-pair"
              c:type="GCR_ICON_KEY_PAIR">
      <source-position filename="gcr/gcr-icons.h" line="38"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="ICON_PASSWORD"
              value="gcr-password"
              c:type="GCR_ICON_PASSWORD">
      <source-position filename="gcr/gcr-icons.h" line="35"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="ICON_SMART_CARD"
              value="gcr-smart-card"
              c:type="GCR_ICON_SMART_CARD">
      <source-position filename="gcr/gcr-icons.h" line="39"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="IMPORTER"
                    c:identifier="GCR_IMPORTER"
                    introspectable="0">
      <source-position filename="gcr/gcr-importer.h" line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IMPORTER_GET_INTERFACE"
                    c:identifier="GCR_IMPORTER_GET_INTERFACE"
                    introspectable="0">
      <source-position filename="gcr/gcr-importer.h" line="40"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IMPORT_INTERACTION"
                    c:identifier="GCR_IMPORT_INTERACTION"
                    introspectable="0">
      <source-position filename="gcr/gcr-import-interaction.h" line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IMPORT_INTERACTION_GET_INTERFACE"
                    c:identifier="GCR_IMPORT_INTERACTION_GET_INTERFACE"
                    introspectable="0">
      <source-position filename="gcr/gcr-import-interaction.h" line="40"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CERTIFICATE"
                    c:identifier="GCR_IS_CERTIFICATE"
                    introspectable="0">
      <source-position filename="gcr/gcr-certificate.h" line="39"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CERTIFICATE_CHAIN"
                    c:identifier="GCR_IS_CERTIFICATE_CHAIN"
                    introspectable="0">
      <source-position filename="gcr/gcr-certificate-chain.h" line="53"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CERTIFICATE_CHAIN_CLASS"
                    c:identifier="GCR_IS_CERTIFICATE_CHAIN_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-certificate-chain.h" line="54"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_COLLECTION"
                    c:identifier="GCR_IS_COLLECTION"
                    introspectable="0">
      <source-position filename="gcr/gcr-collection.h" line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_COMPARABLE"
                    c:identifier="GCR_IS_COMPARABLE"
                    introspectable="0">
      <source-position filename="gcr/gcr-comparable.h" line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILTER_COLLECTION"
                    c:identifier="GCR_IS_FILTER_COLLECTION"
                    introspectable="0">
      <source-position filename="gcr/gcr-filter-collection.h" line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILTER_COLLECTION_CLASS"
                    c:identifier="GCR_IS_FILTER_COLLECTION_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-filter-collection.h" line="35"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_IMPORTER"
                    c:identifier="GCR_IS_IMPORTER"
                    introspectable="0">
      <source-position filename="gcr/gcr-importer.h" line="39"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_IMPORT_INTERACTION"
                    c:identifier="GCR_IS_IMPORT_INTERACTION"
                    introspectable="0">
      <source-position filename="gcr/gcr-import-interaction.h" line="39"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PARSER"
                    c:identifier="GCR_IS_PARSER"
                    introspectable="0">
      <source-position filename="gcr/gcr-parser.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PARSER_CLASS"
                    c:identifier="GCR_IS_PARSER_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-parser.h" line="38"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PKCS11_CERTIFICATE"
                    c:identifier="GCR_IS_PKCS11_CERTIFICATE"
                    introspectable="0">
      <source-position filename="gcr/gcr-pkcs11-certificate.h" line="39"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PKCS11_CERTIFICATE_CLASS"
                    c:identifier="GCR_IS_PKCS11_CERTIFICATE_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-pkcs11-certificate.h" line="40"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PROMPT"
                    c:identifier="GCR_IS_PROMPT"
                    introspectable="0">
      <source-position filename="gcr/gcr-prompt.h" line="42"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SECRET_EXCHANGE"
                    c:identifier="GCR_IS_SECRET_EXCHANGE"
                    introspectable="0">
      <source-position filename="gcr/gcr-secret-exchange.h" line="40"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SECRET_EXCHANGE_CLASS"
                    c:identifier="GCR_IS_SECRET_EXCHANGE_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-secret-exchange.h" line="41"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SIMPLE_CERTIFICATE"
                    c:identifier="GCR_IS_SIMPLE_CERTIFICATE"
                    introspectable="0">
      <source-position filename="gcr/gcr-simple-certificate.h" line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SIMPLE_CERTIFICATE_CLASS"
                    c:identifier="GCR_IS_SIMPLE_CERTIFICATE_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-simple-certificate.h" line="37"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SIMPLE_COLLECTION"
                    c:identifier="GCR_IS_SIMPLE_COLLECTION"
                    introspectable="0">
      <source-position filename="gcr/gcr-simple-collection.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SIMPLE_COLLECTION_CLASS"
                    c:identifier="GCR_IS_SIMPLE_COLLECTION_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-simple-collection.h" line="33"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SYSTEM_PROMPT"
                    c:identifier="GCR_IS_SYSTEM_PROMPT"
                    introspectable="0">
      <source-position filename="gcr/gcr-system-prompt.h" line="47"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SYSTEM_PROMPTER"
                    c:identifier="GCR_IS_SYSTEM_PROMPTER"
                    introspectable="0">
      <source-position filename="gcr/gcr-system-prompter.h" line="45"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SYSTEM_PROMPTER_CLASS"
                    c:identifier="GCR_IS_SYSTEM_PROMPTER_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-system-prompter.h" line="46"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SYSTEM_PROMPT_CLASS"
                    c:identifier="GCR_IS_SYSTEM_PROMPT_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-system-prompt.h" line="48"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_UNION_COLLECTION"
                    c:identifier="GCR_IS_UNION_COLLECTION"
                    introspectable="0">
      <source-position filename="gcr/gcr-union-collection.h" line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_UNION_COLLECTION_CLASS"
                    c:identifier="GCR_IS_UNION_COLLECTION_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-union-collection.h" line="35"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <interface name="ImportInteraction"
               c:symbol-prefix="import_interaction"
               c:type="GcrImportInteraction"
               glib:type-name="GcrImportInteraction"
               glib:get-type="gcr_import_interaction_get_type"
               glib:type-struct="ImportInteractionIface">
      <doc xml:space="preserve"
           filename="gcr/gcr-import-interaction.c"
           line="37">Interface implemented by the caller performing an import.</doc>
      <source-position filename="gcr/gcr-import-interaction.h" line="68"/>
      <prerequisite name="Gio.TlsInteraction"/>
      <virtual-method name="supplement"
                      invoker="supplement"
                      throws="1"
                      glib:async-func="supplement_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-import-interaction.c"
             line="95">Supplement attributes before import. This means prompting the user for
things like labels and the like. The needed attributes will have been passed
to gcr_import_interaction_supplement_prep().

This method prompts the user and fills in the attributes. If the user or
cancellable cancels the operation the error should be set with %G_IO_ERROR_CANCELLED.</doc>
        <source-position filename="gcr/gcr-import-interaction.h" line="51"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-import-interaction.c"
               line="109">%G_TLS_INTERACTION_HANDLED if successful or %G_TLS_INTERACTION_FAILED</doc>
          <type name="Gio.TlsInteractionResult"
                c:type="GTlsInteractionResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="interaction" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="97">the interaction</doc>
            <type name="ImportInteraction" c:type="GcrImportInteraction*"/>
          </instance-parameter>
          <parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="98">supplemented attributes</doc>
            <type name="Gck.Builder" c:type="GckBuilder*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="99">optional cancellable object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="supplement_async"
                      invoker="supplement_async"
                      glib:finish-func="supplement_finish"
                      glib:sync-func="supplement">
        <doc xml:space="preserve"
             filename="gcr/gcr-import-interaction.c"
             line="131">Asynchronously supplement attributes before import. This means prompting the
user for things like labels and the like. The needed attributes will have
been passed to gcr_import_interaction_supplement_prep().

This method prompts the user and fills in the attributes.</doc>
        <source-position filename="gcr/gcr-import-interaction.h" line="56"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="interaction" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="133">the interaction</doc>
            <type name="ImportInteraction" c:type="GcrImportInteraction*"/>
          </instance-parameter>
          <parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="134">supplemented attributes</doc>
            <type name="Gck.Builder" c:type="GckBuilder*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="135">optional cancellable object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="136">called when the operation completes</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="3">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="137">data to be passed to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="supplement_finish"
                      invoker="supplement_finish"
                      throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-import-interaction.c"
             line="164">Complete operation to asynchronously supplement attributes before import.

If the user or cancellable cancels the operation the error should be set
with %G_IO_ERROR_CANCELLED.</doc>
        <source-position filename="gcr/gcr-import-interaction.h" line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-import-interaction.c"
               line="175">%G_TLS_INTERACTION_HANDLED if successful or %G_TLS_INTERACTION_FAILED</doc>
          <type name="Gio.TlsInteractionResult"
                c:type="GTlsInteractionResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="interaction" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="166">the interaction</doc>
            <type name="ImportInteraction" c:type="GcrImportInteraction*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="167">the asynchronous result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="supplement_prep" invoker="supplement_prep">
        <doc xml:space="preserve"
             filename="gcr/gcr-import-interaction.c"
             line="68">Prepare for supplementing the given attributes before import. This means
prompting the user for things like labels and the like. The attributes
will contain attributes for values that the importer needs, either empty
or prefilled with suggested values.

This method does not prompt the user, but rather just prepares the
interaction that these are the attributes that are needed.</doc>
        <source-position filename="gcr/gcr-import-interaction.h" line="48"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="interaction" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="70">the interaction</doc>
            <type name="ImportInteraction" c:type="GcrImportInteraction*"/>
          </instance-parameter>
          <parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="71">attributes to supplement</doc>
            <type name="Gck.Builder" c:type="GckBuilder*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="supplement"
              c:identifier="gcr_import_interaction_supplement"
              throws="1"
              glib:async-func="supplement_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-import-interaction.c"
             line="95">Supplement attributes before import. This means prompting the user for
things like labels and the like. The needed attributes will have been passed
to gcr_import_interaction_supplement_prep().

This method prompts the user and fills in the attributes. If the user or
cancellable cancels the operation the error should be set with %G_IO_ERROR_CANCELLED.</doc>
        <source-position filename="gcr/gcr-import-interaction.h" line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-import-interaction.c"
               line="109">%G_TLS_INTERACTION_HANDLED if successful or %G_TLS_INTERACTION_FAILED</doc>
          <type name="Gio.TlsInteractionResult"
                c:type="GTlsInteractionResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="interaction" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="97">the interaction</doc>
            <type name="ImportInteraction" c:type="GcrImportInteraction*"/>
          </instance-parameter>
          <parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="98">supplemented attributes</doc>
            <type name="Gck.Builder" c:type="GckBuilder*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="99">optional cancellable object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="supplement_async"
              c:identifier="gcr_import_interaction_supplement_async"
              glib:finish-func="supplement_finish"
              glib:sync-func="supplement">
        <doc xml:space="preserve"
             filename="gcr/gcr-import-interaction.c"
             line="131">Asynchronously supplement attributes before import. This means prompting the
user for things like labels and the like. The needed attributes will have
been passed to gcr_import_interaction_supplement_prep().

This method prompts the user and fills in the attributes.</doc>
        <source-position filename="gcr/gcr-import-interaction.h" line="80"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="interaction" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="133">the interaction</doc>
            <type name="ImportInteraction" c:type="GcrImportInteraction*"/>
          </instance-parameter>
          <parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="134">supplemented attributes</doc>
            <type name="Gck.Builder" c:type="GckBuilder*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="135">optional cancellable object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="136">called when the operation completes</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="137">data to be passed to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="supplement_finish"
              c:identifier="gcr_import_interaction_supplement_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-import-interaction.c"
             line="164">Complete operation to asynchronously supplement attributes before import.

If the user or cancellable cancels the operation the error should be set
with %G_IO_ERROR_CANCELLED.</doc>
        <source-position filename="gcr/gcr-import-interaction.h" line="86"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-import-interaction.c"
               line="175">%G_TLS_INTERACTION_HANDLED if successful or %G_TLS_INTERACTION_FAILED</doc>
          <type name="Gio.TlsInteractionResult"
                c:type="GTlsInteractionResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="interaction" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="166">the interaction</doc>
            <type name="ImportInteraction" c:type="GcrImportInteraction*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="167">the asynchronous result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="supplement_prep"
              c:identifier="gcr_import_interaction_supplement_prep">
        <doc xml:space="preserve"
             filename="gcr/gcr-import-interaction.c"
             line="68">Prepare for supplementing the given attributes before import. This means
prompting the user for things like labels and the like. The attributes
will contain attributes for values that the importer needs, either empty
or prefilled with suggested values.

This method does not prompt the user, but rather just prepares the
interaction that these are the attributes that are needed.</doc>
        <source-position filename="gcr/gcr-import-interaction.h" line="72"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="interaction" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="70">the interaction</doc>
            <type name="ImportInteraction" c:type="GcrImportInteraction*"/>
          </instance-parameter>
          <parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="71">attributes to supplement</doc>
            <type name="Gck.Builder" c:type="GckBuilder*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="ImportInteractionIface"
            c:type="GcrImportInteractionIface"
            glib:is-gtype-struct-for="ImportInteraction">
      <doc xml:space="preserve"
           filename="gcr/gcr-import-interaction.c"
           line="43">Interface implemented by implementations of #GcrImportInteraction.</doc>
      <source-position filename="gcr/gcr-import-interaction.h" line="68"/>
      <field name="parent">
        <doc xml:space="preserve"
             filename="gcr/gcr-import-interaction.c"
             line="45">parent interface</doc>
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="supplement_prep">
        <doc xml:space="preserve"
             filename="gcr/gcr-import-interaction.c"
             line="46">method which prepares for supplementing the given attributes before import</doc>
        <callback name="supplement_prep">
          <source-position filename="gcr/gcr-import-interaction.h" line="48"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="interaction" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-import-interaction.c"
                   line="70">the interaction</doc>
              <type name="ImportInteraction" c:type="GcrImportInteraction*"/>
            </parameter>
            <parameter name="builder" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-import-interaction.c"
                   line="71">attributes to supplement</doc>
              <type name="Gck.Builder" c:type="GckBuilder*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="supplement">
        <doc xml:space="preserve"
             filename="gcr/gcr-import-interaction.c"
             line="47">method which synchronously supplements attributes before import</doc>
        <callback name="supplement" throws="1">
          <source-position filename="gcr/gcr-import-interaction.h" line="51"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="109">%G_TLS_INTERACTION_HANDLED if successful or %G_TLS_INTERACTION_FAILED</doc>
            <type name="Gio.TlsInteractionResult"
                  c:type="GTlsInteractionResult"/>
          </return-value>
          <parameters>
            <parameter name="interaction" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-import-interaction.c"
                   line="97">the interaction</doc>
              <type name="ImportInteraction" c:type="GcrImportInteraction*"/>
            </parameter>
            <parameter name="builder" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-import-interaction.c"
                   line="98">supplemented attributes</doc>
              <type name="Gck.Builder" c:type="GckBuilder*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="gcr/gcr-import-interaction.c"
                   line="99">optional cancellable object</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="supplement_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-import-interaction.c"
             line="48">method which asynchronously supplements attributes before import</doc>
        <callback name="supplement_async">
          <source-position filename="gcr/gcr-import-interaction.h" line="56"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="interaction" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-import-interaction.c"
                   line="133">the interaction</doc>
              <type name="ImportInteraction" c:type="GcrImportInteraction*"/>
            </parameter>
            <parameter name="builder" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-import-interaction.c"
                   line="134">supplemented attributes</doc>
              <type name="Gck.Builder" c:type="GckBuilder*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="gcr/gcr-import-interaction.c"
                   line="135">optional cancellable object</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="4">
              <doc xml:space="preserve"
                   filename="gcr/gcr-import-interaction.c"
                   line="136">called when the operation completes</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="4">
              <doc xml:space="preserve"
                   filename="gcr/gcr-import-interaction.c"
                   line="137">data to be passed to the callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="supplement_finish">
        <doc xml:space="preserve"
             filename="gcr/gcr-import-interaction.c"
             line="49">method which completes @supplement_async</doc>
        <callback name="supplement_finish" throws="1">
          <source-position filename="gcr/gcr-import-interaction.h" line="62"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-import-interaction.c"
                 line="175">%G_TLS_INTERACTION_HANDLED if successful or %G_TLS_INTERACTION_FAILED</doc>
            <type name="Gio.TlsInteractionResult"
                  c:type="GTlsInteractionResult"/>
          </return-value>
          <parameters>
            <parameter name="interaction" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-import-interaction.c"
                   line="166">the interaction</doc>
              <type name="ImportInteraction" c:type="GcrImportInteraction*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-import-interaction.c"
                   line="167">the asynchronous result</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="6">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <interface name="Importer"
               c:symbol-prefix="importer"
               c:type="GcrImporter"
               glib:type-name="GcrImporter"
               glib:get-type="gcr_importer_get_type"
               glib:type-struct="ImporterIface">
      <doc xml:space="preserve"
           filename="gcr/gcr-importer.c"
           line="56">Imports certificates and keys</doc>
      <source-position filename="gcr/gcr-importer.h" line="68"/>
      <function name="create_for_parsed"
                c:identifier="gcr_importer_create_for_parsed">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="191">Create a set of importers which can import this parsed item.
The parsed item is represented by the state of the GcrParser at the
time of calling this method.</doc>
        <source-position filename="gcr/gcr-importer.h" line="72"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-importer.c"
               line="199">a list of importers
         which can import the parsed item, which should be freed with
         g_object_unref(), or %NULL if no types of importers can be created</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Importer"/>
          </type>
        </return-value>
        <parameters>
          <parameter name="parsed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="193">a parser with a parsed item to import</doc>
            <type name="Parsed" c:type="GcrParsed*"/>
          </parameter>
        </parameters>
      </function>
      <function name="queue_and_filter_for_parsed"
                c:identifier="gcr_importer_queue_and_filter_for_parsed">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="308">Queues an additional item to be imported in all compattible importers
in the set. The parsed item is represented by the state of the #GcrParser
at the time of calling this method.

If the parsed item is incompatible with an importer, then that the item
will not be queued on that importer.</doc>
        <source-position filename="gcr/gcr-importer.h" line="77"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-importer.c"
               line="320">a new set of importers
         that queued the item, which should be freed with gck_list_unref_free()</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Importer"/>
          </type>
        </return-value>
        <parameters>
          <parameter name="importers" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="310">a set of importers</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="Importer"/>
            </type>
          </parameter>
          <parameter name="parsed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="311">a parsed item</doc>
            <type name="Parsed" c:type="GcrParsed*"/>
          </parameter>
        </parameters>
      </function>
      <function name="register" c:identifier="gcr_importer_register">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="138">Register an importer to handle parsed items that match the given attributes.

If @attrs are a floating reference, then it is consumed.</doc>
        <source-position filename="gcr/gcr-importer.h" line="98"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="importer_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="140">the GType of the importer being registered</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="141">the attributes that this importer is compatible with</doc>
            <type name="Gck.Attributes" c:type="GckAttributes*"/>
          </parameter>
        </parameters>
      </function>
      <function name="register_well_known"
                c:identifier="gcr_importer_register_well_known">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="545">Register built-in PKCS\#11 and GnuPG importers.</doc>
        <source-position filename="gcr/gcr-importer.h" line="101"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <virtual-method name="import_async"
                      invoker="import_async"
                      glib:finish-func="import_finish">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="449">Import the queued items in the importer. This function returns immediately
and completes asynchronously.</doc>
        <source-position filename="gcr/gcr-importer.h" line="57"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="importer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="451">the importer</doc>
            <type name="Importer" c:type="GcrImporter*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="452">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="453">called when the operation completes</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="2">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="454">data to be passed to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="import_finish" invoker="import_finish" throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="477">Complete an asynchronous operation to import queued items.</doc>
        <source-position filename="gcr/gcr-importer.h" line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-importer.c"
               line="485">whether the import succeeded or failed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="importer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="479">the importer</doc>
            <type name="Importer" c:type="GcrImporter*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="480">an asynchronous result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="import_sync" throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="67">optional implemantionon of gcr_importer_import()</doc>
        <source-position filename="gcr/gcr-importer.h" line="53"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="importer" transfer-ownership="none">
            <type name="Importer" c:type="GcrImporter*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="queue_for_parsed" invoker="queue_for_parsed">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="279">Queues an additional item to be imported. The parsed item is represented
by the state of the #GcrParser at the time of calling this method.

If the parsed item is incompatible with the importer, then this will
fail and the item will not be queued.</doc>
        <source-position filename="gcr/gcr-importer.h" line="50"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-importer.c"
               line="290">whether the item was queued or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="importer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="281">an importer to add additional items to</doc>
            <type name="Importer" c:type="GcrImporter*"/>
          </instance-parameter>
          <parameter name="parsed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="282">a parsed item to import</doc>
            <type name="Parsed" c:type="GcrParsed*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_interaction"
              c:identifier="gcr_importer_get_interaction"
              glib:get-property="interaction">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="505">Get the interaction used to prompt the user when needed by this
importer.</doc>
        <source-position filename="gcr/gcr-importer.h" line="93"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-importer.c"
               line="512">the interaction or %NULL</doc>
          <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
        </return-value>
        <parameters>
          <instance-parameter name="importer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="507">the importer</doc>
            <type name="Importer" c:type="GcrImporter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="import"
              c:identifier="gcr_importer_import"
              throws="1"
              glib:async-func="import_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="370">Import the queued items in the importer. This call will block
until the operation completes.</doc>
        <source-position filename="gcr/gcr-importer.h" line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-importer.c"
               line="379">whether the items were imported successfully or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="importer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="372">the importer</doc>
            <type name="Importer" c:type="GcrImporter*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="373">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="import_async"
              c:identifier="gcr_importer_import_async"
              glib:finish-func="import_finish"
              glib:sync-func="import">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="449">Import the queued items in the importer. This function returns immediately
and completes asynchronously.</doc>
        <source-position filename="gcr/gcr-importer.h" line="84"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="importer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="451">the importer</doc>
            <type name="Importer" c:type="GcrImporter*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="452">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="453">called when the operation completes</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="454">data to be passed to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="import_finish"
              c:identifier="gcr_importer_import_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="477">Complete an asynchronous operation to import queued items.</doc>
        <source-position filename="gcr/gcr-importer.h" line="89"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-importer.c"
               line="485">whether the import succeeded or failed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="importer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="479">the importer</doc>
            <type name="Importer" c:type="GcrImporter*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="480">an asynchronous result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="queue_for_parsed"
              c:identifier="gcr_importer_queue_for_parsed">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="279">Queues an additional item to be imported. The parsed item is represented
by the state of the #GcrParser at the time of calling this method.

If the parsed item is incompatible with the importer, then this will
fail and the item will not be queued.</doc>
        <source-position filename="gcr/gcr-importer.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-importer.c"
               line="290">whether the item was queued or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="importer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="281">an importer to add additional items to</doc>
            <type name="Importer" c:type="GcrImporter*"/>
          </instance-parameter>
          <parameter name="parsed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="282">a parsed item to import</doc>
            <type name="Parsed" c:type="GcrParsed*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_interaction"
              c:identifier="gcr_importer_set_interaction"
              glib:set-property="interaction">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="529">Set the interaction used to prompt the user when needed by this
importer.</doc>
        <source-position filename="gcr/gcr-importer.h" line="95"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="importer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="531">the importer</doc>
            <type name="Importer" c:type="GcrImporter*"/>
          </instance-parameter>
          <parameter name="interaction" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="532">the interaction used by the importer</doc>
            <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
          </parameter>
        </parameters>
      </method>
      <property name="icon" transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="103">The icon for the importer.</doc>
        <type name="Gio.Icon"/>
      </property>
      <property name="interaction"
                writable="1"
                transfer-ownership="none"
                setter="set_interaction"
                getter="get_interaction">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="113">The interaction for the importer.</doc>
        <type name="Gio.TlsInteraction"/>
      </property>
      <property name="label" transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="93">The label for the importer.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="uri" transfer-ownership="none" default-value="NULL">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="124">The URI of the location imported to.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
    </interface>
    <record name="ImporterIface"
            c:type="GcrImporterIface"
            glib:is-gtype-struct-for="Importer">
      <doc xml:space="preserve"
           filename="gcr/gcr-importer.c"
           line="62">Interface implemented for a #GcrImporter.</doc>
      <source-position filename="gcr/gcr-importer.h" line="68"/>
      <field name="parent">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="64">parent interface</doc>
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="create_for_parsed" introspectable="0">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="65">implementation of gcr_importer_create_for_parsed(), required</doc>
        <callback name="create_for_parsed" introspectable="0">
          <source-position filename="gcr/gcr-importer.h" line="48"/>
          <return-value>
            <type name="GLib.List" c:type="GList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </return-value>
          <parameters>
            <parameter name="parsed" transfer-ownership="none">
              <type name="Parsed" c:type="GcrParsed*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="queue_for_parsed">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="66">implementation of gcr_importer_queue_for_parsed(), required</doc>
        <callback name="queue_for_parsed">
          <source-position filename="gcr/gcr-importer.h" line="50"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="290">whether the item was queued or not</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="importer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-importer.c"
                   line="281">an importer to add additional items to</doc>
              <type name="Importer" c:type="GcrImporter*"/>
            </parameter>
            <parameter name="parsed" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-importer.c"
                   line="282">a parsed item to import</doc>
              <type name="Parsed" c:type="GcrParsed*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="import_sync">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="67">optional implemantionon of gcr_importer_import()</doc>
        <callback name="import_sync" throws="1">
          <source-position filename="gcr/gcr-importer.h" line="53"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="importer" transfer-ownership="none">
              <type name="Importer" c:type="GcrImporter*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="import_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="68">implementation of gcr_importer_import_async(), required</doc>
        <callback name="import_async">
          <source-position filename="gcr/gcr-importer.h" line="57"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="importer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-importer.c"
                   line="451">the importer</doc>
              <type name="Importer" c:type="GcrImporter*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="gcr/gcr-importer.c"
                   line="452">a #GCancellable, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="3">
              <doc xml:space="preserve"
                   filename="gcr/gcr-importer.c"
                   line="453">called when the operation completes</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="3">
              <doc xml:space="preserve"
                   filename="gcr/gcr-importer.c"
                   line="454">data to be passed to the callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="import_finish">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="69">implementation of gcr_importer_import_finish()</doc>
        <callback name="import_finish" throws="1">
          <source-position filename="gcr/gcr-importer.h" line="62"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-importer.c"
                 line="485">whether the import succeeded or failed</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="importer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-importer.c"
                   line="479">the importer</doc>
              <type name="Importer" c:type="GcrImporter*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gcr/gcr-importer.c"
                   line="480">an asynchronous result</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="14">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <constant name="MAJOR_VERSION" value="3" c:type="GCR_MAJOR_VERSION">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="69">The major version number of the Gcr library.</doc>
      <source-position filename="gcr/gcr-version.h" line="31"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MICRO_VERSION" value="0" c:type="GCR_MICRO_VERSION">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="81">The micro version number of the Gcr library.</doc>
      <source-position filename="gcr/gcr-version.h" line="33"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MINOR_VERSION" value="40" c:type="GCR_MINOR_VERSION">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="75">The minor version number of the Gcr library.</doc>
      <source-position filename="gcr/gcr-version.h" line="32"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <function-macro name="PARSER" c:identifier="GCR_PARSER" introspectable="0">
      <source-position filename="gcr/gcr-parser.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PARSER_CLASS"
                    c:identifier="GCR_PARSER_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-parser.h" line="36"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PARSER_GET_CLASS"
                    c:identifier="GCR_PARSER_GET_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-parser.h" line="39"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PKCS11_CERTIFICATE"
                    c:identifier="GCR_PKCS11_CERTIFICATE"
                    introspectable="0">
      <source-position filename="gcr/gcr-pkcs11-certificate.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PKCS11_CERTIFICATE_CLASS"
                    c:identifier="GCR_PKCS11_CERTIFICATE_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-pkcs11-certificate.h" line="38"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PKCS11_CERTIFICATE_GET_CLASS"
                    c:identifier="GCR_PKCS11_CERTIFICATE_GET_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-pkcs11-certificate.h" line="41"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PROMPT" c:identifier="GCR_PROMPT" introspectable="0">
      <source-position filename="gcr/gcr-prompt.h" line="41"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PROMPT_GET_INTERFACE"
                    c:identifier="GCR_PROMPT_GET_INTERFACE"
                    introspectable="0">
      <source-position filename="gcr/gcr-prompt.h" line="43"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="PURPOSE_CLIENT_AUTH"
              value="1.3.6.1.5.5.7.3.2"
              c:type="GCR_PURPOSE_CLIENT_AUTH">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="77">The purpose used to verify the client certificate in a TLS connection.</doc>
      <source-position filename="gcr/gcr-trust.h" line="33"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="PURPOSE_CODE_SIGNING"
              value="1.3.6.1.5.5.7.3.3"
              c:type="GCR_PURPOSE_CODE_SIGNING">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="83">The purpose used to verify certificate used for the signature on signed code.</doc>
      <source-position filename="gcr/gcr-trust.h" line="34"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="PURPOSE_EMAIL"
              value="1.3.6.1.5.5.7.3.4"
              c:type="GCR_PURPOSE_EMAIL">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="89">The purpose used to verify certificates that are used in email communication
such as S/MIME.</doc>
      <source-position filename="gcr/gcr-trust.h" line="35"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="PURPOSE_SERVER_AUTH"
              value="1.3.6.1.5.5.7.3.1"
              c:type="GCR_PURPOSE_SERVER_AUTH">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="70">The purpose used to verify the server certificate in a TLS connection. This
is the most common purpose in use.</doc>
      <source-position filename="gcr/gcr-trust.h" line="32"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <record name="Parsed"
            c:type="GcrParsed"
            opaque="1"
            glib:type-name="GcrParsed"
            glib:get-type="gcr_parsed_get_type"
            c:symbol-prefix="parsed">
      <doc xml:space="preserve"
           filename="gcr/gcr-parser.c"
           line="72">A parsed item parsed by a #GcrParser.</doc>
      <source-position filename="gcr/gcr-parser.h" line="44"/>
      <method name="get_attributes" c:identifier="gcr_parsed_get_attributes">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2904">Get the attributes which make up the parsed item.</doc>
        <source-position filename="gcr/gcr-parser.h" line="136"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2910">the attributes for the item; these
         are owned by the parsed item and should not be freed</doc>
          <type name="Gck.Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parsed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2906">a parsed item</doc>
            <type name="Parsed" c:type="GcrParsed*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_bytes" c:identifier="gcr_parsed_get_bytes">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="3030">Get the raw data block for the parsed item.</doc>
        <source-position filename="gcr/gcr-parser.h" line="141"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="3036">the raw data of the parsed item, or %NULL</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parsed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3032">a parsed item</doc>
            <type name="Parsed" c:type="GcrParsed*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_data" c:identifier="gcr_parsed_get_data">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="3003">Get the raw data block for the parsed item.</doc>
        <source-position filename="gcr/gcr-parser.h" line="138"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="3010">the raw data of
         the parsed item, or %NULL</doc>
          <array length="0" zero-terminated="0" c:type="const guchar*">
            <type name="guint8" c:type="guchar"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="parsed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3005">a parsed item</doc>
            <type name="Parsed" c:type="GcrParsed*"/>
          </instance-parameter>
          <parameter name="n_data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3006">location to store size of returned data</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_description" c:identifier="gcr_parsed_get_description">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2865">Get the descirption for a parsed item.</doc>
        <source-position filename="gcr/gcr-parser.h" line="134"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2871">the description</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parsed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2867">a parsed item</doc>
            <type name="Parsed" c:type="GcrParsed*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_filename" c:identifier="gcr_parsed_get_filename">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="3090">Get the filename of the parsed item.</doc>
        <source-position filename="gcr/gcr-parser.h" line="145"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="3096">the filename of
         the parsed item, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parsed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3092">a parsed item</doc>
            <type name="Parsed" c:type="GcrParsed*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_format" c:identifier="gcr_parsed_get_format">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="3070">Get the format of the parsed item.</doc>
        <source-position filename="gcr/gcr-parser.h" line="143"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="3076">the data format of the item</doc>
          <type name="DataFormat" c:type="GcrDataFormat"/>
        </return-value>
        <parameters>
          <instance-parameter name="parsed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3072">a parsed item</doc>
            <type name="Parsed" c:type="GcrParsed*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_label" c:identifier="gcr_parsed_get_label">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2944">Get the label for the parsed item.</doc>
        <source-position filename="gcr/gcr-parser.h" line="132"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2950">the label for the item</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parsed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2946">a parsed item</doc>
            <type name="Parsed" c:type="GcrParsed*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="gcr_parsed_ref">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2783">Add a reference to a parsed item. An item may not be shared across threads
until it has been referenced at least once.</doc>
        <source-position filename="gcr/gcr-parser.h" line="128"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2790">the parsed item</doc>
          <type name="Parsed" c:type="GcrParsed*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parsed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2785">a parsed item</doc>
            <type name="Parsed" c:type="GcrParsed*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="unref" c:identifier="gcr_parsed_unref">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2828">Unreferences a parsed item which was referenced with gcr_parsed_ref()</doc>
        <source-position filename="gcr/gcr-parser.h" line="130"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="parsed"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2830">a parsed item</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <class name="Parser"
           c:symbol-prefix="parser"
           c:type="GcrParser"
           parent="GObject.Object"
           glib:type-name="GcrParser"
           glib:get-type="gcr_parser_get_type"
           glib:type-struct="ParserClass">
      <doc xml:space="preserve"
           filename="gcr/gcr-parser.c"
           line="66">A parser for parsing various types of files or data.</doc>
      <source-position filename="gcr/gcr-parser.h" line="62"/>
      <constructor name="new" c:identifier="gcr_parser_new">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2523">Create a new #GcrParser</doc>
        <source-position filename="gcr/gcr-parser.h" line="66"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2528">a newly allocated #GcrParser</doc>
          <type name="Parser" c:type="GcrParser*"/>
        </return-value>
      </constructor>
      <virtual-method name="authenticate">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="81">The default handler for the authenticate signal.</doc>
        <source-position filename="gcr/gcr-parser.h" line="59"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="parsed">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="82">The default handler for the parsed signal.</doc>
        <source-position filename="gcr/gcr-parser.h" line="61"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="add_password" c:identifier="gcr_parser_add_password">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2536">Add a password to the set of passwords to try when parsing locked or encrypted
items. This is usually called from the #GcrParser::authenticate signal.</doc>
        <source-position filename="gcr/gcr-parser.h" line="101"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2538">The parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
          <parameter name="password"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2539">a password to try</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="format_disable" c:identifier="gcr_parser_format_disable">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2685">Disable parsing of the given format. Use %GCR_FORMAT_ALL to disable all the formats.</doc>
        <source-position filename="gcr/gcr-parser.h" line="71"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2687">The parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2688">The format identifier</doc>
            <type name="DataFormat" c:type="GcrDataFormat"/>
          </parameter>
        </parameters>
      </method>
      <method name="format_enable" c:identifier="gcr_parser_format_enable">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2652">Enable parsing of the given format. Use %GCR_FORMAT_ALL to enable all the formats.</doc>
        <source-position filename="gcr/gcr-parser.h" line="68"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2654">The parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2655">The format identifier</doc>
            <type name="DataFormat" c:type="GcrDataFormat"/>
          </parameter>
        </parameters>
      </method>
      <method name="format_supported"
              c:identifier="gcr_parser_format_supported">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2716">Check whether the given format is supported by the parser.</doc>
        <source-position filename="gcr/gcr-parser.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2723">Whether the format is supported.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2718">The parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2719">The format identifier</doc>
            <type name="DataFormat" c:type="GcrDataFormat"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_filename" c:identifier="gcr_parser_get_filename">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2752">Get the filename of the parser item.</doc>
        <source-position filename="gcr/gcr-parser.h" line="119"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2758">the filename set on the parser, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2754">a parser item</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parsed" c:identifier="gcr_parser_get_parsed">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2735">Get the currently parsed item</doc>
        <source-position filename="gcr/gcr-parser.h" line="104"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2741">the currently parsed item</doc>
          <type name="Parsed" c:type="GcrParsed*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2737">a parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parsed_attributes"
              c:identifier="gcr_parser_get_parsed_attributes"
              glib:get-property="parsed-attributes">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2885">Get the attributes which make up the currently parsed item. This is generally
only valid during the #GcrParser::parsed signal.</doc>
        <source-position filename="gcr/gcr-parser.h" line="110"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2892">the attributes for the current item,
         which are owned by the parser and should not be freed</doc>
          <type name="Gck.Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2887">The parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parsed_block"
              c:identifier="gcr_parser_get_parsed_block">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2964">Get the raw data block that represents this parsed object. This is only
valid during the #GcrParser::parsed signal.</doc>
        <source-position filename="gcr/gcr-parser.h" line="112"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2972">the raw data
         block of the currently parsed item; the value is owned by the parser
         and should not be freed</doc>
          <array length="0" zero-terminated="0" c:type="const guchar*">
            <type name="guint8" c:type="guchar"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2966">a parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
          <parameter name="n_block"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2967">a location to place the size of the block</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_parsed_bytes"
              c:identifier="gcr_parser_get_parsed_bytes">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2988">Get the raw data block that represents this parsed object. This is only
valid during the #GcrParser::parsed signal.</doc>
        <source-position filename="gcr/gcr-parser.h" line="115"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2995">the raw data block of the currently parsed item</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2990">a parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parsed_description"
              c:identifier="gcr_parser_get_parsed_description"
              glib:get-property="parsed-description">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2846">Get a description for the type of the currently parsed item. This is generally
only valid during the #GcrParser::parsed signal.</doc>
        <source-position filename="gcr/gcr-parser.h" line="108"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2853">the description for the current item; this is owned by
         the parser and should not be freed</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2848">The parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parsed_format"
              c:identifier="gcr_parser_get_parsed_format">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="3050">Get the format of the raw data block that represents this parsed object.
This corresponds with the data returned from gcr_parser_get_parsed_block().

This is only valid during the #GcrParser::parsed signal.</doc>
        <source-position filename="gcr/gcr-parser.h" line="117"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="3059">the data format of the currently parsed item</doc>
          <type name="DataFormat" c:type="GcrDataFormat"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3052">a parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parsed_label"
              c:identifier="gcr_parser_get_parsed_label"
              glib:get-property="parsed-label">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2925">Get the label of the currently parsed item. This is generally only valid
during the #GcrParser::parsed signal.</doc>
        <source-position filename="gcr/gcr-parser.h" line="106"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2932">the label of the currently parsed item. The value is
         owned by the parser and should not be freed.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2927">The parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="parse_bytes"
              c:identifier="gcr_parser_parse_bytes"
              throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2551">Parse the data. The #GcrParser::parsed and #GcrParser::authenticate signals
may fire during the parsing.</doc>
        <source-position filename="gcr/gcr-parser.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2560">Whether the data was parsed successfully or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2553">The parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2554">the data to parse</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_data"
              c:identifier="gcr_parser_parse_data"
              throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2618">Parse the data. The #GcrParser::parsed and #GcrParser::authenticate signals
may fire during the parsing.

A copy of the data will be made. Use gcr_parser_parse_bytes() to avoid this.</doc>
        <source-position filename="gcr/gcr-parser.h" line="81"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2630">Whether the data was parsed successfully or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2620">The parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2621">the data to parse</doc>
            <array length="1" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2622">The length of the data</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_stream"
              c:identifier="gcr_parser_parse_stream"
              throws="1"
              glib:async-func="parse_stream_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="3356">Parse items from the data in a #GInputStream. This function may block while
reading from the input stream. Use gcr_parser_parse_stream_async() for
a non-blocking variant.

The #GcrParser::parsed and #GcrParser::authenticate signals
may fire during the parsing.</doc>
        <source-position filename="gcr/gcr-parser.h" line="86"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="3370">Whether the parsing completed successfully or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3358">The parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3359">The input stream</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3360">An optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_stream_async"
              c:identifier="gcr_parser_parse_stream_async"
              glib:finish-func="parse_stream_finish"
              glib:sync-func="parse_stream">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="3395">Parse items from the data in a #GInputStream. This function completes
asyncronously and doesn't block.

The #GcrParser::parsed and #GcrParser::authenticate signals
may fire during the parsing.</doc>
        <source-position filename="gcr/gcr-parser.h" line="91"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3397">The parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3398">The input stream</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3399">An optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3400">Called when the operation result is ready.</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3401">Data to pass to callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_stream_finish"
              c:identifier="gcr_parser_parse_stream_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="3426">Complete an operation to parse a stream.</doc>
        <source-position filename="gcr/gcr-parser.h" line="97"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="3434">Whether the parsing completed successfully or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3428">The parser</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="3429">The operation result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_filename" c:identifier="gcr_parser_set_filename">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2767">Sets the filename of the parser item.</doc>
        <source-position filename="gcr/gcr-parser.h" line="121"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2769">a parser item</doc>
            <type name="Parser" c:type="GcrParser*"/>
          </instance-parameter>
          <parameter name="filename"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2770">a string of the filename of the parser item</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="parsed-attributes"
                transfer-ownership="none"
                getter="get_parsed_attributes">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2440">Get the attributes that make up the currently parsed item. This is
generally only valid during a #GcrParser::parsed signal.</doc>
        <type name="Gck.Attributes"/>
      </property>
      <property name="parsed-description"
                transfer-ownership="none"
                getter="get_parsed_description">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2462">The description of the type of the currently parsed item. This is generally
only valid during a #GcrParser::parsed signal.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="parsed-label"
                transfer-ownership="none"
                getter="get_parsed_label">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2451">The label of the currently parsed item. This is generally
only valid during a #GcrParser::parsed signal.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="ParserPrivate" c:type="GcrParserPrivate*"/>
      </field>
      <glib:signal name="authenticate" when="last">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2473">This signal is emitted when an item needs to be unlocked or decrypted before
it can be parsed. The @count argument specifies the number of times
the signal has been emitted for a given item. This can be used to
display a message saying the previous password was incorrect.

Typically the gcr_parser_add_password() function is called in
response to this signal.

If %FALSE is returned, then the authentication was not handled. If
no handlers return %TRUE then the item is not parsed and an error
with the code %GCR_ERROR_CANCELLED will be raised.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2490">Whether the authentication was handled.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="count" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-parser.c"
                 line="2476">the number of times this item has been authenticated</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="parsed" when="first">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="2497">This signal is emitted when an item is sucessfully parsed. To access
the information about the item use the gcr_parser_get_parsed_label(),
gcr_parser_get_parsed_attributes() and gcr_parser_get_parsed_description()
functions.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="ParserClass"
            c:type="GcrParserClass"
            glib:is-gtype-struct-for="Parser">
      <doc xml:space="preserve"
           filename="gcr/gcr-parser.c"
           line="78">The class for #GcrParser</doc>
      <source-position filename="gcr/gcr-parser.h" line="62"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="80">The parent class</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="authenticate">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="81">The default handler for the authenticate signal.</doc>
        <callback name="authenticate">
          <source-position filename="gcr/gcr-parser.h" line="59"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Parser" c:type="GcrParser*"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="parsed">
        <doc xml:space="preserve"
             filename="gcr/gcr-parser.c"
             line="82">The default handler for the parsed signal.</doc>
        <callback name="parsed">
          <source-position filename="gcr/gcr-parser.h" line="61"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Parser" c:type="GcrParser*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="ParserPrivate"
            c:type="GcrParserPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gcr/gcr-parser.h" line="43"/>
    </record>
    <class name="Pkcs11Certificate"
           c:symbol-prefix="pkcs11_certificate"
           c:type="GcrPkcs11Certificate"
           parent="Gck.Object"
           glib:type-name="GcrPkcs11Certificate"
           glib:get-type="gcr_pkcs11_certificate_get_type"
           glib:type-struct="Pkcs11CertificateClass">
      <doc xml:space="preserve"
           filename="gcr/gcr-pkcs11-certificate.c"
           line="49">A certificate loaded from PKCS\#11 storage.</doc>
      <source-position filename="gcr/gcr-pkcs11-certificate.h" line="57"/>
      <implements name="Certificate"/>
      <implements name="Comparable"/>
      <function name="lookup_issuer"
                c:identifier="gcr_pkcs11_certificate_lookup_issuer"
                throws="1"
                glib:async-func="lookup_issuer_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-pkcs11-certificate.c"
             line="327">Lookup a the issuer of a @certificate in the PKCS\#11 storage. The
lookup is done using the issuer DN of the certificate. No certificate chain
verification is done. Use a crypto library to make trust decisions.

This call may block, see gcr_pkcs11_certificate_lookup_issuer() for the
non-blocking version.

Will return %NULL if no issuer certificate is found. Use @error to determine
if an error occurred.</doc>
        <source-position filename="gcr/gcr-pkcs11-certificate.h" line="63"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-pkcs11-certificate.c"
               line="343">a new #GcrPkcs11Certificate, or %NULL</doc>
          <type name="Certificate" c:type="GcrCertificate*"/>
        </return-value>
        <parameters>
          <parameter name="certificate" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-pkcs11-certificate.c"
                 line="329">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-pkcs11-certificate.c"
                 line="330">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </function>
      <function name="lookup_issuer_async"
                c:identifier="gcr_pkcs11_certificate_lookup_issuer_async"
                glib:finish-func="lookup_issuer_finish"
                glib:sync-func="lookup_issuer">
        <doc xml:space="preserve"
             filename="gcr/gcr-pkcs11-certificate.c"
             line="366">Lookup a the issuer of a @certificate in the PKCS\#11 storage. The
lookup is done using the issuer DN of the certificate. No certificate chain
verification is done. Use a crypto library to make trust decisions.

When the operation is finished, callback will be called. You can then call
gcr_pkcs11_certificate_lookup_issuer_finish() to get the result of the
operation.</doc>
        <source-position filename="gcr/gcr-pkcs11-certificate.h" line="67"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="certificate" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-pkcs11-certificate.c"
                 line="368">a #GcrCertificate</doc>
            <type name="Certificate" c:type="GcrCertificate*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-pkcs11-certificate.c"
                 line="369">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="gcr/gcr-pkcs11-certificate.c"
                 line="370">a #GAsyncReadyCallback to call when the operation completes</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-pkcs11-certificate.c"
                 line="371">the data to pass to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="lookup_issuer_finish"
                c:identifier="gcr_pkcs11_certificate_lookup_issuer_finish"
                throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-pkcs11-certificate.c"
             line="402">Finishes an asynchronous operation started by
gcr_pkcs11_certificate_lookup_issuer_async().

Will return %NULL if no issuer certificate is found. Use @error to determine
if an error occurred.</doc>
        <source-position filename="gcr/gcr-pkcs11-certificate.h" line="72"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-pkcs11-certificate.c"
               line="413">a new #GcrPkcs11Certificate, or %NULL</doc>
          <type name="Certificate" c:type="GcrCertificate*"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-pkcs11-certificate.c"
                 line="404">the #GAsyncResult passed to the callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_attributes"
              c:identifier="gcr_pkcs11_certificate_get_attributes"
              glib:get-property="attributes">
        <doc xml:space="preserve"
             filename="gcr/gcr-pkcs11-certificate.c"
             line="312">Access the automatically loaded attributes for this certificate.</doc>
        <source-position filename="gcr/gcr-pkcs11-certificate.h" line="61"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-pkcs11-certificate.c"
               line="318">the certificate attributes</doc>
          <type name="Gck.Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-pkcs11-certificate.c"
                 line="314">A #GcrPkcs11Certificate</doc>
            <type name="Pkcs11Certificate" c:type="GcrPkcs11Certificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="attributes"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_attributes">
        <doc xml:space="preserve"
             filename="gcr/gcr-pkcs11-certificate.c"
             line="271">Automatically loaded attributes for this certificate.</doc>
        <type name="Gck.Attributes"/>
      </property>
      <field name="parent">
        <type name="Gck.Object" c:type="GckObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="Pkcs11CertificatePrivate"
              c:type="GcrPkcs11CertificatePrivate*"/>
      </field>
    </class>
    <record name="Pkcs11CertificateClass"
            c:type="GcrPkcs11CertificateClass"
            glib:is-gtype-struct-for="Pkcs11Certificate">
      <doc xml:space="preserve"
           filename="gcr/gcr-pkcs11-certificate.c"
           line="55">The class for #GcrPkcs11Certificate.</doc>
      <source-position filename="gcr/gcr-pkcs11-certificate.h" line="57"/>
      <field name="parent_class" readable="0" private="1">
        <type name="Gck.ObjectClass" c:type="GckObjectClass"/>
      </field>
    </record>
    <record name="Pkcs11CertificatePrivate"
            c:type="GcrPkcs11CertificatePrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gcr/gcr-pkcs11-certificate.h" line="45"/>
    </record>
    <interface name="Prompt"
               c:symbol-prefix="prompt"
               c:type="GcrPrompt"
               glib:type-name="GcrPrompt"
               glib:get-type="gcr_prompt_get_type"
               glib:type-struct="PromptIface">
      <doc xml:space="preserve"
           filename="gcr/gcr-prompt.c"
           line="52">Represents a #GcrPrompt displayed to the user.</doc>
      <source-position filename="gcr/gcr-prompt.h" line="70"/>
      <virtual-method name="prompt_close">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="65">close a prompt</doc>
        <source-position filename="gcr/gcr-prompt.h" line="69"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="prompt_confirm_async"
                      glib:finish-func="prompt_confirm_finish">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="63">begin a confirm prompt</doc>
        <source-position filename="gcr/gcr-prompt.h" line="60"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="2">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="prompt_confirm_finish" throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="64">complete a confirm prompt</doc>
        <source-position filename="gcr/gcr-prompt.h" line="65"/>
        <return-value transfer-ownership="none">
          <type name="PromptReply" c:type="GcrPromptReply"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="prompt_password_async"
                      glib:finish-func="prompt_password_finish">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="61">begin a password prompt</doc>
        <source-position filename="gcr/gcr-prompt.h" line="51"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="2">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="prompt_password_finish" throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="62">complete a password prompt</doc>
        <source-position filename="gcr/gcr-prompt.h" line="56"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="close" c:identifier="gcr_prompt_close">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="1062">Closes the prompt so that in can no longer be used to prompt. The various
prompt methods will return results as if the user dismissed the prompt.

The prompt may also be closed by the implementor of the #GcrPrompt object.

This emits the GcrPrompt::prompt-close signal on the prompt object.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="162"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="1064">a prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="confirm"
              c:identifier="gcr_prompt_confirm"
              throws="1"
              glib:async-func="confirm_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="976">Prompts for confirmation asking a cancel/continue style question.
Set the various properties on the prompt before calling this function to
represent the question correctly.

This method will block until the a response is returned from the prompter.

%GCR_PROMPT_REPLY_CONTINUE will be returned if the user confirms the prompt. The
return value will also be %GCR_PROMPT_REPLY_CANCEL if the user cancels or if
an error occurs. Check the @error argument to tell the difference.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="154"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="992">the reply from the prompt</doc>
          <type name="PromptReply" c:type="GcrPromptReply"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="978">a prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="979">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="confirm_async"
              c:identifier="gcr_prompt_confirm_async"
              glib:finish-func="confirm_finish"
              glib:sync-func="confirm">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="915">Prompts for confirmation asking a cancel/continue style question.
Set the various properties on the prompt before calling this method to
represent the question correctly.

This method will return immediately and complete asynchronously.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="145"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="917">a prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="918">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="919">called when the operation completes</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="920">data to pass to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="confirm_finish"
              c:identifier="gcr_prompt_confirm_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="945">Complete an operation to prompt for confirmation.

%GCR_PROMPT_REPLY_CONTINUE will be returned if the user confirms the prompt. The
return value will also be %GCR_PROMPT_REPLY_CANCEL if the user cancels or if
an error occurs. Check the @error argument to tell the difference.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="150"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="957">the reply from the prompt</doc>
          <type name="PromptReply" c:type="GcrPromptReply"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="947">a prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="948">asynchronous result passed to callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="confirm_run"
              c:identifier="gcr_prompt_confirm_run"
              throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="1018">Prompts for confirmation asking a cancel/continue style question.
Set the various properties on the prompt before calling this function to
represent the question correctly.

This method will block until the a response is returned from the prompter
and will run a main loop similar to a gtk_dialog_run(). The application
will remain responsive but care must be taken to handle reentrancy issues.

%GCR_PROMPT_REPLY_CONTINUE will be returned if the user confirms the prompt. The
return value will also be %GCR_PROMPT_REPLY_CANCEL if the user cancels or if
an error occurs. Check the @error argument to tell the difference.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="158"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="1036">the reply from the prompt</doc>
          <type name="PromptReply" c:type="GcrPromptReply"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="1020">a prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="1021">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_caller_window"
              c:identifier="gcr_prompt_get_caller_window"
              glib:get-property="caller-window">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="646">Get the string handle of the caller's window.

The caller window indicates to the prompt which window is prompting the
user. The prompt may choose to ignore this information or use it in whatever
way it sees fit.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="113"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="656">a newly allocated string containing the string
         handle of the window.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="648">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_cancel_label"
              c:identifier="gcr_prompt_get_cancel_label"
              glib:get-property="cancel-label">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="725">Get the label for the cancel button.

This is the button that results in a %GCR_PROMPT_REPLY_CANCEL reply
from the prompt.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="123"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="734">a newly allocated string containing the label</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="727">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_choice_chosen"
              c:identifier="gcr_prompt_get_choice_chosen"
              glib:get-property="choice-chosen">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="547">Get whether the additional choice was chosen or not.

The additional choice would have been setup using
gcr_prompt_set_choice_label().</doc>
        <source-position filename="gcr/gcr-prompt.h" line="101"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="556">whether chosen</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="549">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_choice_label"
              c:identifier="gcr_prompt_get_choice_label"
              glib:get-property="choice-label">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="504">Get the label for the additional choice.

This will be %NULL if no additional choice is being displayed.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="96"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="512">a newly allocated string containing the additional
         choice or %NULL</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="506">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_continue_label"
              c:identifier="gcr_prompt_get_continue_label"
              glib:get-property="continue-label">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="687">Get the label for the continue button.

This is the button that results in a %GCR_PROMPT_REPLY_CONTINUE reply
from the prompt.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="118"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="696">a newly allocated string containing the label</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="689">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_description"
              c:identifier="gcr_prompt_get_description"
              glib:get-property="description">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="421">Get the detailed description of the prompt.

A prompt implementation may choose not to display this detailed description.
The prompt message should contain relevant information.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="86"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="430">a newly allocated string containing the detailed
         description of the prompt</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="423">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_message"
              c:identifier="gcr_prompt_get_message"
              glib:get-property="message">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="384">Gets the prompt message for the user.

A prompt implementation should always display this message.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="81"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="392">a newly allocated string containing the detailed
         description of the prompt</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="386">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_password_new"
              c:identifier="gcr_prompt_get_password_new"
              glib:get-property="password-new">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="584">Get whether the prompt will prompt for a new password.

This will cause the prompt implementation to ask the user to confirm the
password and/or display other relevant user interface for creating a new
password.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="106"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="594">whether in new password mode or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="586">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_password_strength"
              c:identifier="gcr_prompt_get_password_strength"
              glib:get-property="password-strength">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="624">Get indication of the password strength.

Prompts will return a zero value if the password is empty, and a value
greater than zero if the password has any characters.

This is only valid after a successful prompt for a password.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="111"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="635">zero if the password is empty, greater than zero if not</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="626">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_title"
              c:identifier="gcr_prompt_get_title"
              glib:get-property="title">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="345">Gets the title of the prompt.

A prompt implementation may choose not to display the prompt title. The
prompt message should contain relevant information.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="76"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="354">a newly allocated string containing the prompt
         title.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="347">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_warning"
              c:identifier="gcr_prompt_get_warning"
              glib:get-property="warning">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="461">Get a prompt warning displayed on the prompt.

This is a warning like "The password is incorrect." usually displayed to the
user about a previous 'unsuccessful' prompt.

If this string is %NULL then no warning is displayed.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="91"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="472">a newly allocated string containing the prompt
         warning, or %NULL if no warning</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="463">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="password"
              c:identifier="gcr_prompt_password"
              throws="1"
              glib:async-func="password_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="825">Prompts for password. Set the various properties on the prompt before calling
this method to explain which password should be entered.

This method will block until the a response is returned from the prompter.

A password will be returned if the user enters a password successfully.
The returned password is valid until the next time a method is called
to display another prompt.

%NULL will be returned if the user cancels or if an error occurs. Check the
@error argument to tell the difference.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="137"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="843">the password owned by the prompt, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="827">a prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="828">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="password_async"
              c:identifier="gcr_prompt_password_async"
              glib:finish-func="password_finish"
              glib:sync-func="password">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="762">Prompts for password. Set the various properties on the prompt before calling
this method to explain which password should be entered.

This method will return immediately and complete asynchronously.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="128"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="764">a prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="765">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="766">called when the operation completes</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="767">data to pass to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="password_finish"
              c:identifier="gcr_prompt_password_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="791">Complete an operation to prompt for a password.

A password will be returned if the user enters a password successfully.
The returned password is valid until the next time a method is called
to display another prompt.

%NULL will be returned if the user cancels or if an error occurs. Check the
@error argument to tell the difference.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="133"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="806">the password owned by the prompt, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="793">a prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="794">asynchronous result passed to callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="password_run"
              c:identifier="gcr_prompt_password_run"
              throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="869">Prompts for password. Set the various properties on the prompt before calling
this method to explain which password should be entered.

This method will block until the a response is returned from the prompter
and will run a main loop similar to a gtk_dialog_run(). The application
will remain responsive but care must be taken to handle reentrancy issues.

A password will be returned if the user enters a password successfully.
The returned password is valid until the next time a method is called
to display another prompt.

%NULL will be returned if the user cancels or if an error occurs. Check the
@error argument to tell the difference.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="141"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-prompt.c"
               line="889">the password owned by the prompt, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="871">a prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="872">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="reset" c:identifier="gcr_prompt_reset">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="297">Reset the contents and properties of the prompt.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="74"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="299">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_caller_window"
              c:identifier="gcr_prompt_set_caller_window"
              glib:set-property="caller-window">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="668">Set the string handle of the caller's window.

The caller window indicates to the prompt which window is prompting the
user. The prompt may choose to ignore this information or use it in whatever
way it sees fit.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="115"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="670">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="window_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="671">the window id</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_cancel_label"
              c:identifier="gcr_prompt_set_cancel_label"
              glib:set-property="cancel-label">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="744">Set the label for the continue button.

This is the button that results in a %GCR_PROMPT_REPLY_CANCEL reply
from the prompt.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="125"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="746">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="cancel_label" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="747">the label</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_choice_chosen"
              c:identifier="gcr_prompt_set_choice_chosen"
              glib:set-property="choice-chosen">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="567">Set whether the additional choice is chosen or not.

The additional choice should be set up using gcr_prompt_set_choice_label().</doc>
        <source-position filename="gcr/gcr-prompt.h" line="103"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="569">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="chosen" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="570">whether chosen</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_choice_label"
              c:identifier="gcr_prompt_set_choice_label"
              glib:set-property="choice-label">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="524">Set the label for the additional choice.

If this is a non-%NULL value then an additional boolean choice will be
displayed by the prompt allowing the user to select or deselect it.

The initial value of the choice can be set with the
gcr_prompt_set_choice_label() method.

If this is %NULL, then no additional choice is being displayed.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="98"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="526">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="choice_label"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="527">the additional choice or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_continue_label"
              c:identifier="gcr_prompt_set_continue_label"
              glib:set-property="continue-label">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="707">Set the label for the continue button.

This is the button that results in a %GCR_PROMPT_REPLY_CONTINUE reply
from the prompt.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="120"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="709">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="continue_label" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="710">the label</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_description"
              c:identifier="gcr_prompt_set_description"
              glib:set-property="description">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="442">Set the detailed description of the prompt.

A prompt implementation may choose not to display this detailed description.
Use gcr_prompt_set_message() to set a general message containing relevant
information.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="88"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="444">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="445">the detailed description</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_message"
              c:identifier="gcr_prompt_set_message"
              glib:set-property="message">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="404">Sets the prompt message for the user.

A prompt implementation should always display this message.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="83"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="406">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="407">the prompt message</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_password_new"
              c:identifier="gcr_prompt_set_password_new"
              glib:set-property="password-new">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="605">Set whether the prompt will prompt for a new password.

This will cause the prompt implementation to ask the user to confirm the
password and/or display other relevant user interface for creating a new
password.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="108"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="607">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="new_password" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="608">whether in new password mode or not</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_title"
              c:identifier="gcr_prompt_set_title"
              glib:set-property="title">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="366">Sets the title of the prompt.

A prompt implementation may choose not to display the prompt title. The
prompt message should contain relevant information.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="368">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="title" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="369">the prompt title</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_warning"
              c:identifier="gcr_prompt_set_warning"
              glib:set-property="warning">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="484">Set a prompt warning displayed on the prompt.

This is a warning like "The password is incorrect." usually displayed to the
user about a previous 'unsuccessful' prompt.

If this string is %NULL then no warning is displayed.</doc>
        <source-position filename="gcr/gcr-prompt.h" line="93"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="486">the prompt</doc>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </instance-parameter>
          <parameter name="warning"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-prompt.c"
                 line="487">the warning or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="caller-window"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_caller_window"
                getter="get_caller_window"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="205">The string handle of the caller's window.

The caller window indicates to the prompt which window is prompting the
user. The prompt may choose to ignore this information or use it in whatever
way it sees fit.

In X11, this will be a stringified version of the XWindow handle; in
Wayland this is the result of an export using the XDG foreign
protocol.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="cancel-label"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_cancel_label"
                getter="get_cancel_label"
                default-value="Cancel">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="231">The label for the cancel button in the prompt.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="choice-chosen"
                writable="1"
                transfer-ownership="none"
                setter="set_choice_chosen"
                getter="get_choice_chosen"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="194">Whether the additional choice is chosen or not.

The additional choice would have been setup using #GcrPrompt:choice-label.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="choice-label"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_choice_label"
                getter="get_choice_label"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="178">The label for the additional choice.

If this is a non-%NULL value then an additional boolean choice will be
displayed by the prompt allowing the user to select or deselect it.

If %NULL, then no additional choice is displayed.

The initial value of the choice can be set with #GcrPrompt:choice-chosen.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="continue-label"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_continue_label"
                getter="get_continue_label"
                default-value="Continue">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="222">The label for the continue button in the prompt.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="description"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_description"
                getter="get_description"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="127">The detailed description of the prompt.

A prompt implementation may choose not to display this detailed description.
The prompt message should contain relevant information.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="message"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_message"
                getter="get_message"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="116">The prompt message for the user.

A prompt implementation should always display this message.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="password-new"
                writable="1"
                transfer-ownership="none"
                setter="set_password_new"
                getter="get_password_new"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="151">Whether the prompt will prompt for a new password.

This will cause the prompt implementation to ask the user to confirm the
password and/or display other relevant user interface for creating a new
password.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="password-strength"
                transfer-ownership="none"
                getter="get_password_strength"
                default-value="0">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="164">Indication of the password strength.

Prompts will return a zero value if the password is empty, and a value
greater than zero if the password has any characters.

This is only valid after a successful prompt for a password.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="title"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_title"
                getter="get_title"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="104">The title of the prompt.

A prompt implementation may choose not to display the prompt title. The
#GcrPrompt:message should contain relevant information.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="warning"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_warning"
                getter="get_warning"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="139">A prompt warning displayed on the prompt, or %NULL for no warning.

This is a warning like "The password is incorrect." usually displayed to the
user about a previous 'unsuccessful' prompt.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <glib:signal name="prompt-close" when="first">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="240">Action signal fired when the prompt is to be closed. After the default
handler has run, the prompt is closed. The various prompting methods
will return results as if the user dismissed the prompt.

You can use the gcr_prompt_close() method to emit this signal.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </interface>
    <record name="PromptIface"
            c:type="GcrPromptIface"
            glib:is-gtype-struct-for="Prompt">
      <doc xml:space="preserve"
           filename="gcr/gcr-prompt.c"
           line="58">The interface for implementing #GcrPrompt.</doc>
      <source-position filename="gcr/gcr-prompt.h" line="70"/>
      <field name="parent_iface">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="60">parent interface</doc>
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="prompt_password_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="61">begin a password prompt</doc>
        <callback name="prompt_password_async">
          <source-position filename="gcr/gcr-prompt.h" line="51"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="prompt" transfer-ownership="none">
              <type name="Prompt" c:type="GcrPrompt*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="3">
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="3">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="prompt_password_finish">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="62">complete a password prompt</doc>
        <callback name="prompt_password_finish" throws="1">
          <source-position filename="gcr/gcr-prompt.h" line="56"/>
          <return-value transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="prompt" transfer-ownership="none">
              <type name="Prompt" c:type="GcrPrompt*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="prompt_confirm_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="63">begin a confirm prompt</doc>
        <callback name="prompt_confirm_async">
          <source-position filename="gcr/gcr-prompt.h" line="60"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="prompt" transfer-ownership="none">
              <type name="Prompt" c:type="GcrPrompt*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="3">
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="3">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="prompt_confirm_finish">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="64">complete a confirm prompt</doc>
        <callback name="prompt_confirm_finish" throws="1">
          <source-position filename="gcr/gcr-prompt.h" line="65"/>
          <return-value transfer-ownership="none">
            <type name="PromptReply" c:type="GcrPromptReply"/>
          </return-value>
          <parameters>
            <parameter name="prompt" transfer-ownership="none">
              <type name="Prompt" c:type="GcrPrompt*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="prompt_close">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="65">close a prompt</doc>
        <callback name="prompt_close">
          <source-position filename="gcr/gcr-prompt.h" line="69"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="prompt" transfer-ownership="none">
              <type name="Prompt" c:type="GcrPrompt*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <enumeration name="PromptReply" c:type="GcrPromptReply">
      <doc xml:space="preserve"
           filename="gcr/gcr-prompt.c"
           line="70">Various replies returned by gcr_prompt_confirm() and friends.</doc>
      <source-position filename="gcr/gcr-prompt.h" line="38"/>
      <member name="cancel" value="0" c:identifier="GCR_PROMPT_REPLY_CANCEL">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="73">the prompt was cancelled</doc>
      </member>
      <member name="continue"
              value="1"
              c:identifier="GCR_PROMPT_REPLY_CONTINUE">
        <doc xml:space="preserve"
             filename="gcr/gcr-prompt.c"
             line="72">the user replied with 'ok'</doc>
      </member>
    </enumeration>
    <function-macro name="SECRET_EXCHANGE"
                    c:identifier="GCR_SECRET_EXCHANGE"
                    introspectable="0">
      <source-position filename="gcr/gcr-secret-exchange.h" line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SECRET_EXCHANGE_CLASS"
                    c:identifier="GCR_SECRET_EXCHANGE_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-secret-exchange.h" line="39"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SECRET_EXCHANGE_GET_CLASS"
                    c:identifier="GCR_SECRET_EXCHANGE_GET_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-secret-exchange.h" line="42"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="SECRET_EXCHANGE_PROTOCOL_1"
              value="sx-aes-1"
              c:type="GCR_SECRET_EXCHANGE_PROTOCOL_1">
      <doc xml:space="preserve"
           filename="gcr/gcr-secret-exchange.c"
           line="75">The current secret exchange protocol. Key agreement is done using DH with the
1536 bit IKE parameter group. Keys are derived using SHA256 with HKDF. The
transport encryption is done with 128 bit AES.</doc>
      <source-position filename="gcr/gcr-secret-exchange.h" line="35"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="SIMPLE_CERTIFICATE"
                    c:identifier="GCR_SIMPLE_CERTIFICATE"
                    introspectable="0">
      <source-position filename="gcr/gcr-simple-certificate.h" line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SIMPLE_CERTIFICATE_CLASS"
                    c:identifier="GCR_SIMPLE_CERTIFICATE_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-simple-certificate.h" line="35"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SIMPLE_CERTIFICATE_GET_CLASS"
                    c:identifier="GCR_SIMPLE_CERTIFICATE_GET_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-simple-certificate.h" line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SIMPLE_COLLECTION"
                    c:identifier="GCR_SIMPLE_COLLECTION"
                    introspectable="0">
      <source-position filename="gcr/gcr-simple-collection.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SIMPLE_COLLECTION_CLASS"
                    c:identifier="GCR_SIMPLE_COLLECTION_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-simple-collection.h" line="31"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SIMPLE_COLLECTION_GET_CLASS"
                    c:identifier="GCR_SIMPLE_COLLECTION_GET_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-simple-collection.h" line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SYSTEM_PROMPT"
                    c:identifier="GCR_SYSTEM_PROMPT"
                    introspectable="0">
      <source-position filename="gcr/gcr-system-prompt.h" line="45"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SYSTEM_PROMPTER"
                    c:identifier="GCR_SYSTEM_PROMPTER"
                    introspectable="0">
      <source-position filename="gcr/gcr-system-prompter.h" line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SYSTEM_PROMPTER_CLASS"
                    c:identifier="GCR_SYSTEM_PROMPTER_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-system-prompter.h" line="44"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SYSTEM_PROMPTER_GET_CLASS"
                    c:identifier="GCR_SYSTEM_PROMPTER_GET_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-system-prompter.h" line="47"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SYSTEM_PROMPT_CLASS"
                    c:identifier="GCR_SYSTEM_PROMPT_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-system-prompt.h" line="46"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SYSTEM_PROMPT_GET_CLASS"
                    c:identifier="GCR_SYSTEM_PROMPT_GET_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-system-prompt.h" line="49"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="SecretExchange"
           c:symbol-prefix="secret_exchange"
           c:type="GcrSecretExchange"
           parent="GObject.Object"
           glib:type-name="GcrSecretExchange"
           glib:get-type="gcr_secret_exchange_get_type"
           glib:type-struct="SecretExchangeClass">
      <doc xml:space="preserve"
           filename="gcr/gcr-secret-exchange.c"
           line="63">An object representing one side of a secret exchange.</doc>
      <source-position filename="gcr/gcr-secret-exchange.h" line="87"/>
      <constructor name="new" c:identifier="gcr_secret_exchange_new">
        <doc xml:space="preserve"
             filename="gcr/gcr-secret-exchange.c"
             line="219">Create a new secret exchange object.

Specify a protocol of %NULL to allow any protocol. This is especially
relevant on the side of the exchange that does not call
gcr_secret_exchange_begin(), that is the originator. Currently the only
protocol supported is %GCR_SECRET_EXCHANGE_PROTOCOL_1.</doc>
        <source-position filename="gcr/gcr-secret-exchange.h" line="93"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-secret-exchange.c"
               line="230">A new #GcrSecretExchange object</doc>
          <type name="SecretExchange" c:type="GcrSecretExchange*"/>
        </return-value>
        <parameters>
          <parameter name="protocol"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-secret-exchange.c"
                 line="221">the exchange protocol to use</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="decrypt_transport_data" introspectable="0">
        <source-position filename="gcr/gcr-secret-exchange.h" line="77"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="exchange" transfer-ownership="none">
            <type name="SecretExchange" c:type="GcrSecretExchange*"/>
          </instance-parameter>
          <parameter name="allocator" transfer-ownership="none">
            <type name="Gck.Allocator" c:type="GckAllocator"/>
          </parameter>
          <parameter name="cipher_text" transfer-ownership="none">
            <type name="guint8" c:type="const guchar*"/>
          </parameter>
          <parameter name="n_cipher_text" transfer-ownership="none">
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="parameter" transfer-ownership="none">
            <type name="guint8" c:type="const guchar*"/>
          </parameter>
          <parameter name="n_parameter" transfer-ownership="none">
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="plain_text" transfer-ownership="none">
            <type name="guint8" c:type="guchar**"/>
          </parameter>
          <parameter name="n_plain_text" transfer-ownership="none">
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="derive_transport_key">
        <source-position filename="gcr/gcr-secret-exchange.h" line="64"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="exchange" transfer-ownership="none">
            <type name="SecretExchange" c:type="GcrSecretExchange*"/>
          </instance-parameter>
          <parameter name="peer" transfer-ownership="none">
            <type name="guint8" c:type="const guchar*"/>
          </parameter>
          <parameter name="n_peer" transfer-ownership="none">
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="encrypt_transport_data" introspectable="0">
        <source-position filename="gcr/gcr-secret-exchange.h" line="68"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="exchange" transfer-ownership="none">
            <type name="SecretExchange" c:type="GcrSecretExchange*"/>
          </instance-parameter>
          <parameter name="allocator" transfer-ownership="none">
            <type name="Gck.Allocator" c:type="GckAllocator"/>
          </parameter>
          <parameter name="plain_text" transfer-ownership="none">
            <type name="guint8" c:type="const guchar*"/>
          </parameter>
          <parameter name="n_plain_text" transfer-ownership="none">
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="parameter" transfer-ownership="none">
            <type name="guint8" c:type="guchar**"/>
          </parameter>
          <parameter name="n_parameter" transfer-ownership="none">
            <type name="gsize" c:type="gsize*"/>
          </parameter>
          <parameter name="cipher_text" transfer-ownership="none">
            <type name="guint8" c:type="guchar**"/>
          </parameter>
          <parameter name="n_cipher_text" transfer-ownership="none">
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="generate_exchange_key">
        <source-position filename="gcr/gcr-secret-exchange.h" line="59"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="exchange" transfer-ownership="none">
            <type name="SecretExchange" c:type="GcrSecretExchange*"/>
          </instance-parameter>
          <parameter name="scheme" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="public_key" transfer-ownership="none">
            <type name="guint8" c:type="guchar**"/>
          </parameter>
          <parameter name="n_public_key" transfer-ownership="none">
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="begin" c:identifier="gcr_secret_exchange_begin">
        <doc xml:space="preserve"
             filename="gcr/gcr-secret-exchange.c"
             line="260">Begin the secret exchange. The resulting string should be sent to the other
side of the exchange. The other side should use gcr_secret_exchange_receive()
to process the string.</doc>
        <source-position filename="gcr/gcr-secret-exchange.h" line="97"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-secret-exchange.c"
               line="268">A newly allocated string to be sent to the other
    side of the secret exchange</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-secret-exchange.c"
                 line="262">a #GcrSecretExchange object</doc>
            <type name="SecretExchange" c:type="GcrSecretExchange*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_protocol"
              c:identifier="gcr_secret_exchange_get_protocol"
              glib:get-property="protocol">
        <doc xml:space="preserve"
             filename="gcr/gcr-secret-exchange.c"
             line="240">Will return %NULL if no protocol was specified, and either
gcr_secret_exchange_begin() or gcr_secret_exchange_receive() have not been
called successfully.</doc>
        <source-position filename="gcr/gcr-secret-exchange.h" line="95"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-secret-exchange.c"
               line="249">the protocol or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-secret-exchange.c"
                 line="242">a #GcrSecretExchange object
Get the secret exchange protocol.</doc>
            <type name="SecretExchange" c:type="GcrSecretExchange*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_secret" c:identifier="gcr_secret_exchange_get_secret">
        <doc xml:space="preserve"
             filename="gcr/gcr-secret-exchange.c"
             line="454">Returns the last secret received. If no secret has yet been received this
will return %NULL. The string is owned by the #GcrSecretExchange object
and will be valid until the next time that gcr_secret_exchange_receive()
is called on this object, or the object is destroyed.

Depending on the secret passed into the other side of the secret exchange,
the result may be a binary string. It does however have a null terminator,
so if you're certain that it is does not contain arbitrary binary data,
it can be used as a string.</doc>
        <source-position filename="gcr/gcr-secret-exchange.h" line="106"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-secret-exchange.c"
               line="469">the last secret received</doc>
          <array length="0" zero-terminated="0" c:type="const gchar*">
            <type name="utf8" c:type="gchar"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-secret-exchange.c"
                 line="456">a #GcrSecretExchange object</doc>
            <type name="SecretExchange" c:type="GcrSecretExchange*"/>
          </instance-parameter>
          <parameter name="secret_len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-secret-exchange.c"
                 line="457">optionally, a location to store the length of returned secret</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="receive" c:identifier="gcr_secret_exchange_receive">
        <doc xml:space="preserve"
             filename="gcr/gcr-secret-exchange.c"
             line="384">Receive a string from the other side of secret exchange. This string will
have been created by gcr_secret_exchange_begin() or gcr_secret_exchange_send().

After this call completes successfully the value returned from
gcr_secret_exchange_get_secret() will have changed.</doc>
        <source-position filename="gcr/gcr-secret-exchange.h" line="99"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-secret-exchange.c"
               line="395">whether the string was successfully parsed and received</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-secret-exchange.c"
                 line="386">a #GcrSecretExchange object</doc>
            <type name="SecretExchange" c:type="GcrSecretExchange*"/>
          </instance-parameter>
          <parameter name="exchange" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-secret-exchange.c"
                 line="387">the string received</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="send" c:identifier="gcr_secret_exchange_send">
        <doc xml:space="preserve"
             filename="gcr/gcr-secret-exchange.c"
             line="508">Send a reply to the other side of the secret exchange, optionally sending a
secret.

gcr_secret_exchange_receive() must have been successfully called at least
once on this object. In other words this object must have received data
from the other side of the secret exchange, before we can send a secret.</doc>
        <source-position filename="gcr/gcr-secret-exchange.h" line="102"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-secret-exchange.c"
               line="521">a newly allocated string to be sent to the other
    side of the secret exchange</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-secret-exchange.c"
                 line="510">a #GcrSecretExchange object</doc>
            <type name="SecretExchange" c:type="GcrSecretExchange*"/>
          </instance-parameter>
          <parameter name="secret"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-secret-exchange.c"
                 line="511">optionally, a secret to send to the other side</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="secret_len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-secret-exchange.c"
                 line="512">length of @secret, or -1 if null terminated</doc>
            <type name="gssize" c:type="gssize"/>
          </parameter>
        </parameters>
      </method>
      <property name="protocol"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_protocol"
                default-value="sx-aes-1">
        <doc xml:space="preserve"
             filename="gcr/gcr-secret-exchange.c"
             line="861">The protocol being used for the exchange.

Will be %NULL if no protocol was specified when creating this object,
and either gcr_secret_exchange_begin() or gcr_secret_exchange_receive()
have not been called successfully.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="SecretExchangePrivate" c:type="GcrSecretExchangePrivate*"/>
      </field>
    </class>
    <record name="SecretExchangeClass"
            c:type="GcrSecretExchangeClass"
            glib:is-gtype-struct-for="SecretExchange">
      <doc xml:space="preserve"
           filename="gcr/gcr-secret-exchange.c"
           line="69">The class for #GcrSecretExchange</doc>
      <source-position filename="gcr/gcr-secret-exchange.h" line="87"/>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="generate_exchange_key">
        <callback name="generate_exchange_key">
          <source-position filename="gcr/gcr-secret-exchange.h" line="59"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="exchange" transfer-ownership="none">
              <type name="SecretExchange" c:type="GcrSecretExchange*"/>
            </parameter>
            <parameter name="scheme" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="public_key" transfer-ownership="none">
              <type name="guint8" c:type="guchar**"/>
            </parameter>
            <parameter name="n_public_key" transfer-ownership="none">
              <type name="gsize" c:type="gsize*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="derive_transport_key">
        <callback name="derive_transport_key">
          <source-position filename="gcr/gcr-secret-exchange.h" line="64"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="exchange" transfer-ownership="none">
              <type name="SecretExchange" c:type="GcrSecretExchange*"/>
            </parameter>
            <parameter name="peer" transfer-ownership="none">
              <type name="guint8" c:type="const guchar*"/>
            </parameter>
            <parameter name="n_peer" transfer-ownership="none">
              <type name="gsize" c:type="gsize"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="encrypt_transport_data" introspectable="0">
        <callback name="encrypt_transport_data" introspectable="0">
          <source-position filename="gcr/gcr-secret-exchange.h" line="68"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="exchange" transfer-ownership="none">
              <type name="SecretExchange" c:type="GcrSecretExchange*"/>
            </parameter>
            <parameter name="allocator" transfer-ownership="none">
              <type name="Gck.Allocator" c:type="GckAllocator"/>
            </parameter>
            <parameter name="plain_text" transfer-ownership="none">
              <type name="guint8" c:type="const guchar*"/>
            </parameter>
            <parameter name="n_plain_text" transfer-ownership="none">
              <type name="gsize" c:type="gsize"/>
            </parameter>
            <parameter name="parameter" transfer-ownership="none">
              <type name="guint8" c:type="guchar**"/>
            </parameter>
            <parameter name="n_parameter" transfer-ownership="none">
              <type name="gsize" c:type="gsize*"/>
            </parameter>
            <parameter name="cipher_text" transfer-ownership="none">
              <type name="guint8" c:type="guchar**"/>
            </parameter>
            <parameter name="n_cipher_text" transfer-ownership="none">
              <type name="gsize" c:type="gsize*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="decrypt_transport_data" introspectable="0">
        <callback name="decrypt_transport_data" introspectable="0">
          <source-position filename="gcr/gcr-secret-exchange.h" line="77"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="exchange" transfer-ownership="none">
              <type name="SecretExchange" c:type="GcrSecretExchange*"/>
            </parameter>
            <parameter name="allocator" transfer-ownership="none">
              <type name="Gck.Allocator" c:type="GckAllocator"/>
            </parameter>
            <parameter name="cipher_text" transfer-ownership="none">
              <type name="guint8" c:type="const guchar*"/>
            </parameter>
            <parameter name="n_cipher_text" transfer-ownership="none">
              <type name="gsize" c:type="gsize"/>
            </parameter>
            <parameter name="parameter" transfer-ownership="none">
              <type name="guint8" c:type="const guchar*"/>
            </parameter>
            <parameter name="n_parameter" transfer-ownership="none">
              <type name="gsize" c:type="gsize"/>
            </parameter>
            <parameter name="plain_text" transfer-ownership="none">
              <type name="guint8" c:type="guchar**"/>
            </parameter>
            <parameter name="n_plain_text" transfer-ownership="none">
              <type name="gsize" c:type="gsize*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="dummy" readable="0" private="1">
        <array zero-terminated="0" fixed-size="6">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="SecretExchangePrivate"
            c:type="GcrSecretExchangePrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gcr/gcr-secret-exchange.h" line="46"/>
    </record>
    <class name="SimpleCertificate"
           c:symbol-prefix="simple_certificate"
           c:type="GcrSimpleCertificate"
           parent="GObject.Object"
           glib:type-name="GcrSimpleCertificate"
           glib:get-type="gcr_simple_certificate_get_type"
           glib:type-struct="SimpleCertificateClass">
      <doc xml:space="preserve"
           filename="gcr/gcr-simple-certificate.c"
           line="42">A #GcrCertificate which represents a certificate already in memory.</doc>
      <source-position filename="gcr/gcr-simple-certificate.h" line="53"/>
      <implements name="Certificate"/>
      <implements name="Comparable"/>
      <constructor name="new" c:identifier="gcr_simple_certificate_new">
        <doc xml:space="preserve"
             filename="gcr/gcr-simple-certificate.c"
             line="130">Create a new #GcrSimpleCertificate for the raw DER data. The @data memory is
copied so you can dispose of it after this function returns.</doc>
        <source-position filename="gcr/gcr-simple-certificate.h" line="57"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-simple-certificate.c"
               line="138">a new #GcrSimpleCertificate</doc>
          <type name="SimpleCertificate" c:type="GcrCertificate*"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-simple-certificate.c"
                 line="132">the raw DER certificate data</doc>
            <array length="1" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-simple-certificate.c"
                 line="133">The length of @data</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_static"
                   c:identifier="gcr_simple_certificate_new_static"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="gcr/gcr-simple-certificate.c"
             line="156">Create a new #GcrSimpleCertificate for the raw DER data. The @data memory is
not copied and must persist until the #GcrSimpleCertificate object is
destroyed.</doc>
        <source-position filename="gcr/gcr-simple-certificate.h" line="60"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-simple-certificate.c"
               line="165">a new #GcrSimpleCertificate</doc>
          <type name="SimpleCertificate" c:type="GcrCertificate*"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-simple-certificate.c"
                 line="158">The raw DER certificate data</doc>
            <array length="1" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-simple-certificate.c"
                 line="159">The length of @data</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="SimpleCertificatePrivate"
              c:type="GcrSimpleCertificatePrivate*"/>
      </field>
    </class>
    <record name="SimpleCertificateClass"
            c:type="GcrSimpleCertificateClass"
            glib:is-gtype-struct-for="SimpleCertificate">
      <doc xml:space="preserve"
           filename="gcr/gcr-simple-certificate.c"
           line="48">The class for #GcrSimpleCertificate.</doc>
      <source-position filename="gcr/gcr-simple-certificate.h" line="53"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="gcr/gcr-simple-certificate.c"
             line="50">The parent class</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="SimpleCertificatePrivate"
            c:type="GcrSimpleCertificatePrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gcr/gcr-simple-certificate.h" line="42"/>
    </record>
    <class name="SimpleCollection"
           c:symbol-prefix="simple_collection"
           c:type="GcrSimpleCollection"
           parent="GObject.Object"
           glib:type-name="GcrSimpleCollection"
           glib:get-type="gcr_simple_collection_get_type"
           glib:type-struct="SimpleCollectionClass">
      <doc xml:space="preserve"
           filename="gcr/gcr-simple-collection.c"
           line="39">A simple implementation of #GcrCollection.</doc>
      <source-position filename="gcr/gcr-simple-collection.h" line="49"/>
      <implements name="Collection"/>
      <constructor name="new" c:identifier="gcr_simple_collection_new">
        <doc xml:space="preserve"
             filename="gcr/gcr-simple-collection.c"
             line="139">Create a new #GcrSimpleCollection.</doc>
        <source-position filename="gcr/gcr-simple-collection.h" line="53"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-simple-collection.c"
               line="144">a newly allocated
    collection, which should be freed with g_object_unref()</doc>
          <type name="SimpleCollection" c:type="GcrCollection*"/>
        </return-value>
      </constructor>
      <method name="add" c:identifier="gcr_simple_collection_add">
        <doc xml:space="preserve"
             filename="gcr/gcr-simple-collection.c"
             line="153">Add an object to this collection</doc>
        <source-position filename="gcr/gcr-simple-collection.h" line="55"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-simple-collection.c"
                 line="155">The collection</doc>
            <type name="SimpleCollection" c:type="GcrSimpleCollection*"/>
          </instance-parameter>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-simple-collection.c"
                 line="156">The object to add</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="gcr_simple_collection_remove">
        <doc xml:space="preserve"
             filename="gcr/gcr-simple-collection.c"
             line="170">Remove an object from the collection.</doc>
        <source-position filename="gcr/gcr-simple-collection.h" line="58"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-simple-collection.c"
                 line="172">The collection</doc>
            <type name="SimpleCollection" c:type="GcrSimpleCollection*"/>
          </instance-parameter>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-simple-collection.c"
                 line="173">The object to remove from the collection</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="SimpleCollectionPrivate"
              c:type="GcrSimpleCollectionPrivate*"/>
      </field>
    </class>
    <record name="SimpleCollectionClass"
            c:type="GcrSimpleCollectionClass"
            glib:is-gtype-struct-for="SimpleCollection">
      <doc xml:space="preserve"
           filename="gcr/gcr-simple-collection.c"
           line="45">The class for #GcrSimpleCollection.</doc>
      <source-position filename="gcr/gcr-simple-collection.h" line="49"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="gcr/gcr-simple-collection.c"
             line="47">The parent class</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="SimpleCollectionPrivate"
            c:type="GcrSimpleCollectionPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gcr/gcr-simple-collection.h" line="38"/>
    </record>
    <class name="SshAskpass"
           c:symbol-prefix="ssh_askpass"
           c:type="GcrSshAskpass"
           parent="GObject.Object"
           glib:type-name="GcrSshAskpass"
           glib:get-type="gcr_ssh_askpass_get_type"
           glib:type-struct="SshAskpassClass">
      <doc xml:space="preserve"
           filename="gcr/gcr-ssh-askpass.c"
           line="46">An object containing the password prompting state.</doc>
      <source-position filename="gcr/gcr-ssh-askpass.h" line="34"/>
      <constructor name="new" c:identifier="gcr_ssh_askpass_new">
        <doc xml:space="preserve"
             filename="gcr/gcr-ssh-askpass.c"
             line="360">Create a new GcrSshAskpass object which can be used to spawn an
ssh command and prompt for any necessary passwords.

Use the gcr_ssh_askpass_child_setup() function as a callback with
g_spawn_sync(), g_spawn_async() or g_spawn_async_with_pipes().</doc>
        <source-position filename="gcr/gcr-ssh-askpass.h" line="38"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-ssh-askpass.c"
               line="370">A new #GcrSshAskpass object</doc>
          <type name="SshAskpass" c:type="GcrSshAskpass*"/>
        </return-value>
        <parameters>
          <parameter name="interaction" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-ssh-askpass.c"
                 line="362">the interaction to use for prompting paswords</doc>
            <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="child_setup" c:identifier="gcr_ssh_askpass_child_setup">
        <doc xml:space="preserve"
             filename="gcr/gcr-ssh-askpass.c"
             line="396">Use this function as a callback setup function passed to g_spawn_sync(),
g_spawn_async(), g_spawn_async_with_pipes().</doc>
        <source-position filename="gcr/gcr-ssh-askpass.h" line="42"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="askpass"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-ssh-askpass.c"
                 line="398">a #GcrSshAskpass object</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_interaction"
              c:identifier="gcr_ssh_askpass_get_interaction"
              glib:get-property="interaction">
        <doc xml:space="preserve"
             filename="gcr/gcr-ssh-askpass.c"
             line="381">Get the interaction associated with this object.</doc>
        <source-position filename="gcr/gcr-ssh-askpass.h" line="40"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-ssh-askpass.c"
               line="387">the interaction</doc>
          <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-ssh-askpass.c"
                 line="383">a #GcrSshAskpass object</doc>
            <type name="SshAskpass" c:type="GcrSshAskpass*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="interaction"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_interaction">
        <doc xml:space="preserve"
             filename="gcr/gcr-ssh-askpass.c"
             line="433">The interaction used to prompt for passwords.</doc>
        <type name="Gio.TlsInteraction"/>
      </property>
    </class>
    <record name="SshAskpassClass"
            c:type="GcrSshAskpassClass"
            glib:is-gtype-struct-for="SshAskpass">
      <doc xml:space="preserve"
           filename="gcr/gcr-ssh-askpass.c"
           line="52">The class for #GcrSshAskpass</doc>
      <source-position filename="gcr/gcr-ssh-askpass.h" line="34"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="SystemPrompt"
           c:symbol-prefix="system_prompt"
           c:type="GcrSystemPrompt"
           parent="GObject.Object"
           glib:type-name="GcrSystemPrompt"
           glib:get-type="gcr_system_prompt_get_type"
           glib:type-struct="SystemPromptClass">
      <doc xml:space="preserve"
           filename="gcr/gcr-system-prompt.c"
           line="55">A #GcrPrompt which shows a system prompt. This is usually a system modal
dialog.</doc>
      <source-position filename="gcr/gcr-system-prompt.h" line="64"/>
      <implements name="Prompt"/>
      <implements name="Gio.AsyncInitable"/>
      <implements name="Gio.Initable"/>
      <function name="error_get_domain"
                c:identifier="gcr_system_prompt_error_get_domain">
        <source-position filename="gcr/gcr-system-prompt.h" line="42"/>
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="open"
                c:identifier="gcr_system_prompt_open"
                throws="1"
                glib:async-func="open_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="1456">Opens a system prompt with the default prompter.

Most system prompters only allow showing one prompt at a time, and if
another prompt is shown then this method will block for up to
@timeout_seconds seconds. If @timeout_seconds is equal to -1, then this
will block indefinitely until the prompt can be opened. If @timeout_seconds
expires, then this function will fail with a %GCR_SYSTEM_PROMPT_IN_PROGRESS
error.</doc>
        <source-position filename="gcr/gcr-system-prompt.h" line="90"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-system-prompt.c"
               line="1471">the prompt, or %NULL if
         prompt could not be opened</doc>
          <type name="SystemPrompt" c:type="GcrPrompt*"/>
        </return-value>
        <parameters>
          <parameter name="timeout_seconds" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1458">the number of seconds to wait to access the prompt, or -1</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1459">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </function>
      <function name="open_async"
                c:identifier="gcr_system_prompt_open_async"
                glib:finish-func="open_finish"
                glib:sync-func="open">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="1350">Asynchronously open a system prompt with the default system prompter.

Most system prompters only allow showing one prompt at a time, and if
another prompt is shown then this method will block for up to
@timeout_seconds seconds. If @timeout_seconds is equal to -1, then this
will block indefinitely until the prompt can be opened. If @timeout_seconds
expires, then this operation will fail with a %GCR_SYSTEM_PROMPT_IN_PROGRESS
error.</doc>
        <source-position filename="gcr/gcr-system-prompt.h" line="70"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="timeout_seconds" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1352">the number of seconds to wait to access the prompt, or -1</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1353">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1354">called when the operation completes</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1355">data to pass the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="open_finish"
                c:identifier="gcr_system_prompt_open_finish"
                throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="1423">Complete an operation to asynchronously open a system prompt.</doc>
        <source-position filename="gcr/gcr-system-prompt.h" line="82"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-system-prompt.c"
               line="1430">the prompt, or %NULL if
         prompt could not be opened</doc>
          <type name="SystemPrompt" c:type="GcrPrompt*"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1425">the asynchronous result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </function>
      <function name="open_for_prompter"
                c:identifier="gcr_system_prompt_open_for_prompter"
                throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="1487">Opens a system prompt. If prompter_name is %NULL, then the default
system prompter is used.

Most system prompters only allow showing one prompt at a time, and if
another prompt is shown then this method will block for up to
@timeout_seconds seconds. If @timeout_seconds is equal to -1, then this
will block indefinitely until the prompt can be opened. If @timeout_seconds
expires, then this function will fail with a %GCR_SYSTEM_PROMPT_IN_PROGRESS
error.</doc>
        <source-position filename="gcr/gcr-system-prompt.h" line="85"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-system-prompt.c"
               line="1504">the prompt, or %NULL if
         prompt could not be opened</doc>
          <type name="SystemPrompt" c:type="GcrPrompt*"/>
        </return-value>
        <parameters>
          <parameter name="prompter_name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1489">the prompter dbus name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="timeout_seconds" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1490">the number of seconds to wait to access the prompt, or -1</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1491">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </function>
      <function name="open_for_prompter_async"
                c:identifier="gcr_system_prompt_open_for_prompter_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="1380">Opens a system prompt asynchronously. If prompter_name is %NULL, then the
default system prompter is used.

Most system prompters only allow showing one prompt at a time, and if
another prompt is shown then this method will block for up to
@timeout_seconds seconds. If @timeout_seconds is equal to -1, then this
will block indefinitely until the prompt can be opened. If @timeout_seconds
expires, then this operation will fail with a %GCR_SYSTEM_PROMPT_IN_PROGRESS
error.</doc>
        <source-position filename="gcr/gcr-system-prompt.h" line="75"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="prompter_name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1382">the prompter dbus name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="timeout_seconds" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1383">the number of seconds to wait to access the prompt, or -1</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1384">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1385">called when the operation completes</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1386">data to pass the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <method name="close"
              c:identifier="gcr_system_prompt_close"
              throws="1"
              glib:async-func="close_async">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="1528">Close this prompt. After calling this function, no further prompts will
succeed on this object. The prompt object is not unreferenced by this
function, and you must unreference it once done.

This call may block, use the gcr_system_prompt_close_async() to perform
this action indefinitely.

Whether or not this function returns %TRUE, the system prompt object is
still closed and may not be further used.</doc>
        <source-position filename="gcr/gcr-system-prompt.h" line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-system-prompt.c"
               line="1544">whether close was cleanly completed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1530">the prompt</doc>
            <type name="SystemPrompt" c:type="GcrSystemPrompt*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1531">an optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="close_async"
              c:identifier="gcr_system_prompt_close_async"
              glib:finish-func="close_finish"
              glib:sync-func="close">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="1570">Close this prompt asynchronously. After calling this function, no further
methods may be called on this object. The prompt object is not unreferenced
by this function, and you must unreference it once done.

This call returns immediately and completes asynchronously.</doc>
        <source-position filename="gcr/gcr-system-prompt.h" line="98"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1572">the prompt</doc>
            <type name="SystemPrompt" c:type="GcrSystemPrompt*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1573">an optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1574">called when the operation completes</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1575">data to pass to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="close_finish"
              c:identifier="gcr_system_prompt_close_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="1608">Complete operation to close this prompt.

Whether or not this function returns %TRUE, the system prompt object is
still closed and may not be further used.</doc>
        <source-position filename="gcr/gcr-system-prompt.h" line="103"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-system-prompt.c"
               line="1619">whether close was cleanly completed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1610">the prompt</doc>
            <type name="SystemPrompt" c:type="GcrSystemPrompt*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="1611">asynchronous operation result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_secret_exchange"
              c:identifier="gcr_system_prompt_get_secret_exchange"
              glib:get-property="secret-exchange">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="602">Get the current #GcrSecretExchange used to transfer secrets in this prompt.</doc>
        <source-position filename="gcr/gcr-system-prompt.h" line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-system-prompt.c"
               line="608">the secret exchange</doc>
          <type name="SecretExchange" c:type="GcrSecretExchange*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompt.c"
                 line="604">a prompter</doc>
            <type name="SystemPrompt" c:type="GcrSystemPrompt*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="bus-name"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="557">The DBus bus name of the prompter to use for prompting, or %NULL
for the default prompter.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="secret-exchange"
                writable="1"
                transfer-ownership="none"
                getter="get_secret_exchange">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="578">The #GcrSecretExchange to use when transferring passwords. A default
secret exchange will be used if this is not set.</doc>
        <type name="SecretExchange"/>
      </property>
      <property name="timeout-seconds"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="-1">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="568">The timeout in seconds to wait when opening the prompt.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="SystemPromptPrivate" c:type="GcrSystemPromptPrivate*"/>
      </field>
    </class>
    <record name="SystemPromptClass"
            c:type="GcrSystemPromptClass"
            glib:is-gtype-struct-for="SystemPrompt">
      <doc xml:space="preserve"
           filename="gcr/gcr-system-prompt.c"
           line="62">The class for #GcrSystemPrompt.</doc>
      <source-position filename="gcr/gcr-system-prompt.h" line="64"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="64">parent class</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="SystemPromptError" c:type="GcrSystemPromptError">
      <doc xml:space="preserve"
           filename="gcr/gcr-system-prompt.c"
           line="75">No error returned by the #GcrSystemPrompt is suitable for display or
to the user.

If the system prompter can only show one prompt at a time, and there is
already a prompt being displayed, and the timeout waiting to open the
prompt expires, then %GCR_SYSTEM_PROMPT_IN_PROGRESS is returned.</doc>
      <source-position filename="gcr/gcr-system-prompt.h" line="38"/>
      <member name="system_prompt_in_progress"
              value="1"
              c:identifier="GCR_SYSTEM_PROMPT_IN_PROGRESS">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompt.c"
             line="77">another prompt is already in progress</doc>
      </member>
    </enumeration>
    <record name="SystemPromptPrivate"
            c:type="GcrSystemPromptPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gcr/gcr-system-prompt.h" line="53"/>
    </record>
    <class name="SystemPrompter"
           c:symbol-prefix="system_prompter"
           c:type="GcrSystemPrompter"
           parent="GObject.Object"
           glib:type-name="GcrSystemPrompter"
           glib:get-type="gcr_system_prompter_get_type"
           glib:type-struct="SystemPrompterClass">
      <doc xml:space="preserve"
           filename="gcr/gcr-system-prompter.c"
           line="54">A prompter used by implementations of system prompts.</doc>
      <source-position filename="gcr/gcr-system-prompter.h" line="69"/>
      <constructor name="new" c:identifier="gcr_system_prompter_new">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="1084">Create a new system prompter service. This prompter won't do anything unless
you connect to its signals and show appropriate prompts.

If @prompt_type is zero, then the new-prompt signal must be handled and
return a valid prompt object implementing the #GcrPrompt interface.

If @prompt_type is non-zero then the #GType must implement the #GcrPrompt
interface.</doc>
        <source-position filename="gcr/gcr-system-prompter.h" line="73"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-system-prompter.c"
               line="1098">a new prompter service</doc>
          <type name="SystemPrompter" c:type="GcrSystemPrompter*"/>
        </return-value>
        <parameters>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompter.c"
                 line="1086">the mode for the prompt</doc>
            <type name="SystemPrompterMode" c:type="GcrSystemPrompterMode"/>
          </parameter>
          <parameter name="prompt_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompter.c"
                 line="1087">the gobject type for prompts created by this prompter</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="new_prompt" introspectable="0">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="63">default handler for the #GcrSystemPrompter::new-prompt signal</doc>
        <source-position filename="gcr/gcr-system-prompter.h" line="65"/>
        <return-value>
          <type name="Prompt" c:type="GcrPrompt*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SystemPrompter" c:type="GcrSystemPrompter*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="get_mode" c:identifier="gcr_system_prompter_get_mode">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="1117">Get the mode for this prompter.

Most system prompters only display one prompt at a time and therefore
return %GCR_SYSTEM_PROMPTER_SINGLE.</doc>
        <source-position filename="gcr/gcr-system-prompter.h" line="76"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-system-prompter.c"
               line="1126">the prompter mode</doc>
          <type name="SystemPrompterMode" c:type="GcrSystemPrompterMode"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompter.c"
                 line="1119">the prompter</doc>
            <type name="SystemPrompter" c:type="GcrSystemPrompter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_prompt_type"
              c:identifier="gcr_system_prompter_get_prompt_type"
              glib:get-property="prompt-type">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="1135">Get the #GType for prompts created by this prompter.

The returned #GType will be a #GcrPrompt implementation.</doc>
        <source-position filename="gcr/gcr-system-prompter.h" line="78"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-system-prompter.c"
               line="1143">the prompt #GType</doc>
          <type name="GType" c:type="GType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompter.c"
                 line="1137">the prompter</doc>
            <type name="SystemPrompter" c:type="GcrSystemPrompter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_prompting"
              c:identifier="gcr_system_prompter_get_prompting"
              glib:get-property="prompting">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="1152">Get whether prompting or not.</doc>
        <source-position filename="gcr/gcr-system-prompter.h" line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-system-prompter.c"
               line="1158">whether prompting or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompter.c"
                 line="1154">the prompter</doc>
            <type name="SystemPrompter" c:type="GcrSystemPrompter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="register" c:identifier="gcr_system_prompter_register">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="1007">Register this system prompter on the DBus @connection.

This makes the prompter available for clients to call. The prompter will
remain registered until gcr_system_prompter_unregister() is called, or the
prompter is unreferenced.</doc>
        <source-position filename="gcr/gcr-system-prompter.h" line="82"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompter.c"
                 line="1009">the system prompter</doc>
            <type name="SystemPrompter" c:type="GcrSystemPrompter*"/>
          </instance-parameter>
          <parameter name="connection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompter.c"
                 line="1010">a DBus connection</doc>
            <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unregister" c:identifier="gcr_system_prompter_unregister">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="1044">Unregister this system prompter on the DBus @connection.

The prompter must have previously been registered with gcr_system_prompter_register().

If @wait is set then this function will wait until all prompts have been closed
or cancelled. This is usually only used by tests.</doc>
        <source-position filename="gcr/gcr-system-prompter.h" line="85"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompter.c"
                 line="1046">the system prompter</doc>
            <type name="SystemPrompter" c:type="GcrSystemPrompter*"/>
          </instance-parameter>
          <parameter name="wait" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-system-prompter.c"
                 line="1047">whether to wait for closing prompts</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="mode"
                introspectable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="GCR_SYSTEM_PROMPTER_SINGLE">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="379">The mode for this prompter.

Most system prompters only display one prompt at a time and therefore
return %GCR_SYSTEM_PROMPTER_SINGLE.</doc>
        <type/>
      </property>
      <property name="prompt-type"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_prompt_type">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="392">The #GType for prompts created by this prompter. This must be a
#GcrPrompt implementation.</doc>
        <type name="GType" c:type="GType"/>
      </property>
      <property name="prompting"
                transfer-ownership="none"
                getter="get_prompting"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="403">Whether the prompter is prompting or not.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="SystemPrompterPrivate" c:type="GcrSystemPrompterPrivate*"/>
      </field>
      <glib:signal name="new-prompt" when="last">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="412">Signal emitted to create a new prompt when needed.

The default implementation of this signal creates a prompt of the type
gcr_system_prompter_get_prompt_type().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-system-prompter.c"
               line="420">the new prompt</doc>
          <type name="Prompt"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="SystemPrompterClass"
            c:type="GcrSystemPrompterClass"
            glib:is-gtype-struct-for="SystemPrompter">
      <doc xml:space="preserve"
           filename="gcr/gcr-system-prompter.c"
           line="60">The class for #GcrSystemPrompter.</doc>
      <source-position filename="gcr/gcr-system-prompter.h" line="69"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="62">parent class</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="new_prompt" introspectable="0">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="63">default handler for the #GcrSystemPrompter::new-prompt signal</doc>
        <callback name="new_prompt" introspectable="0">
          <source-position filename="gcr/gcr-system-prompter.h" line="65"/>
          <return-value>
            <type name="Prompt" c:type="GcrPrompt*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="SystemPrompter" c:type="GcrSystemPrompter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="7">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="SystemPrompterMode" c:type="GcrSystemPrompterMode">
      <doc xml:space="preserve"
           filename="gcr/gcr-system-prompter.c"
           line="68">The mode for the system prompter. Most system prompters can only show
one prompt at a time and would use the %GCR_SYSTEM_PROMPTER_SINGLE mode.</doc>
      <source-position filename="gcr/gcr-system-prompter.h" line="40"/>
      <member name="single"
              value="0"
              c:identifier="GCR_SYSTEM_PROMPTER_SINGLE">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="70">only one prompt shown at a time</doc>
      </member>
      <member name="multiple"
              value="1"
              c:identifier="GCR_SYSTEM_PROMPTER_MULTIPLE">
        <doc xml:space="preserve"
             filename="gcr/gcr-system-prompter.c"
             line="71">more than one prompt shown at a time</doc>
      </member>
    </enumeration>
    <record name="SystemPrompterPrivate"
            c:type="GcrSystemPrompterPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gcr/gcr-system-prompter.h" line="51"/>
    </record>
    <function-macro name="UNION_COLLECTION"
                    c:identifier="GCR_UNION_COLLECTION"
                    introspectable="0">
      <source-position filename="gcr/gcr-union-collection.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="UNION_COLLECTION_CLASS"
                    c:identifier="GCR_UNION_COLLECTION_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-union-collection.h" line="33"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="UNION_COLLECTION_GET_CLASS"
                    c:identifier="GCR_UNION_COLLECTION_GET_CLASS"
                    introspectable="0">
      <source-position filename="gcr/gcr-union-collection.h" line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="UNLOCK_OPTION_ALWAYS"
              value="always"
              c:type="GCR_UNLOCK_OPTION_ALWAYS">
      <source-position filename="gcr/gcr-unlock-options.h" line="23"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="UNLOCK_OPTION_IDLE"
              value="idle"
              c:type="GCR_UNLOCK_OPTION_IDLE">
      <source-position filename="gcr/gcr-unlock-options.h" line="26"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="UNLOCK_OPTION_SESSION"
              value="session"
              c:type="GCR_UNLOCK_OPTION_SESSION">
      <source-position filename="gcr/gcr-unlock-options.h" line="24"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="UNLOCK_OPTION_TIMEOUT"
              value="timeout"
              c:type="GCR_UNLOCK_OPTION_TIMEOUT">
      <source-position filename="gcr/gcr-unlock-options.h" line="25"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="UnionCollection"
           c:symbol-prefix="union_collection"
           c:type="GcrUnionCollection"
           parent="GObject.Object"
           glib:type-name="GcrUnionCollection"
           glib:get-type="gcr_union_collection_get_type"
           glib:type-struct="UnionCollectionClass">
      <doc xml:space="preserve"
           filename="gcr/gcr-union-collection.c"
           line="40">A union implementation of #GcrCollection.</doc>
      <source-position filename="gcr/gcr-union-collection.h" line="51"/>
      <implements name="Collection"/>
      <constructor name="new" c:identifier="gcr_union_collection_new">
        <doc xml:space="preserve"
             filename="gcr/gcr-union-collection.c"
             line="215">Create a new #GcrUnionCollection.</doc>
        <source-position filename="gcr/gcr-union-collection.h" line="55"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-union-collection.c"
               line="220">a newly allocated
         collection, which should be freed with g_object_unref()</doc>
          <type name="UnionCollection" c:type="GcrCollection*"/>
        </return-value>
      </constructor>
      <method name="add" c:identifier="gcr_union_collection_add">
        <doc xml:space="preserve"
             filename="gcr/gcr-union-collection.c"
             line="229">Add objects from this collection to the union</doc>
        <source-position filename="gcr/gcr-union-collection.h" line="57"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-union-collection.c"
                 line="231">The union collection</doc>
            <type name="UnionCollection" c:type="GcrUnionCollection*"/>
          </instance-parameter>
          <parameter name="collection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-union-collection.c"
                 line="232">The collection whose objects to add</doc>
            <type name="Collection" c:type="GcrCollection*"/>
          </parameter>
        </parameters>
      </method>
      <method name="elements" c:identifier="gcr_union_collection_elements">
        <doc xml:space="preserve"
             filename="gcr/gcr-union-collection.c"
             line="340">Get the collections that have been added to this union.</doc>
        <source-position filename="gcr/gcr-union-collection.h" line="71"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="gcr/gcr-union-collection.c"
               line="346">collections
         added to the union</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Collection"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-union-collection.c"
                 line="342">the union collection</doc>
            <type name="UnionCollection" c:type="GcrUnionCollection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="have" c:identifier="gcr_union_collection_have">
        <doc xml:space="preserve"
             filename="gcr/gcr-union-collection.c"
             line="306">Check whether the collection is present in the union.</doc>
        <source-position filename="gcr/gcr-union-collection.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-union-collection.c"
               line="313">whether present or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-union-collection.c"
                 line="308">the union collection</doc>
            <type name="UnionCollection" c:type="GcrUnionCollection*"/>
          </instance-parameter>
          <parameter name="collection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-union-collection.c"
                 line="309">the collection to check</doc>
            <type name="Collection" c:type="GcrCollection*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="gcr_union_collection_remove">
        <doc xml:space="preserve"
             filename="gcr/gcr-union-collection.c"
             line="276">Remove an object from the collection.</doc>
        <source-position filename="gcr/gcr-union-collection.h" line="63"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-union-collection.c"
                 line="278">The collection</doc>
            <type name="UnionCollection" c:type="GcrUnionCollection*"/>
          </instance-parameter>
          <parameter name="collection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-union-collection.c"
                 line="279">The collection whose objects to remove</doc>
            <type name="Collection" c:type="GcrCollection*"/>
          </parameter>
        </parameters>
      </method>
      <method name="size" c:identifier="gcr_union_collection_size">
        <doc xml:space="preserve"
             filename="gcr/gcr-union-collection.c"
             line="324">Return the number of collections in this union. This does not reflect
the number of objects in the combined collection.</doc>
        <source-position filename="gcr/gcr-union-collection.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-union-collection.c"
               line="331">number of collections inlcuded</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-union-collection.c"
                 line="326">the union collection</doc>
            <type name="UnionCollection" c:type="GcrUnionCollection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="take" c:identifier="gcr_union_collection_take">
        <doc xml:space="preserve"
             filename="gcr/gcr-union-collection.c"
             line="245">Add objects from this collection to the union. Do not add an additional
reference to the collection.</doc>
        <source-position filename="gcr/gcr-union-collection.h" line="60"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-union-collection.c"
                 line="247">The union collection</doc>
            <type name="UnionCollection" c:type="GcrUnionCollection*"/>
          </instance-parameter>
          <parameter name="collection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gcr/gcr-union-collection.c"
                 line="248">The collection whose objects to add</doc>
            <type name="Collection" c:type="GcrCollection*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="UnionCollectionPrivate"
              c:type="GcrUnionCollectionPrivate*"/>
      </field>
    </class>
    <record name="UnionCollectionClass"
            c:type="GcrUnionCollectionClass"
            glib:is-gtype-struct-for="UnionCollection">
      <doc xml:space="preserve"
           filename="gcr/gcr-union-collection.c"
           line="46">The class for #GcrUnionCollection.</doc>
      <source-position filename="gcr/gcr-union-collection.h" line="51"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="gcr/gcr-union-collection.c"
             line="48">The parent class</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="UnionCollectionPrivate"
            c:type="GcrUnionCollectionPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gcr/gcr-union-collection.h" line="40"/>
    </record>
    <function name="certificate_compare"
              c:identifier="gcr_certificate_compare"
              moved-to="Certificate.compare">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate.c"
           line="364">Compare one certificate against another. If the certificates are equal
then zero is returned. If one certificate is %NULL or not a certificate,
then a non-zero value is returned.

The return value is useful in a stable sort, but has no user logical
meaning.</doc>
      <source-position filename="gcr/gcr-certificate.h" line="79"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="376">zero if the certificates match, non-zero otherwise.</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="first"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="366">the certificate to compare</doc>
          <type name="Comparable" c:type="GcrComparable*"/>
        </parameter>
        <parameter name="other"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="367">the certificate to compare against</doc>
          <type name="Comparable" c:type="GcrComparable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="certificate_get_columns"
              c:identifier="gcr_certificate_get_columns"
              moved-to="Certificate.get_columns"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate.c"
           line="338">Get the columns appropriate for a certificate</doc>
      <source-position filename="gcr/gcr-certificate.h" line="77"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-certificate.c"
             line="343">the columns</doc>
        <type name="Column" c:type="const GcrColumn*"/>
      </return-value>
    </function>
    <function name="certificate_mixin_class_init"
              c:identifier="gcr_certificate_mixin_class_init"
              moved-to="Certificate.mixin_class_init"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate.c"
           line="1096">Initialize the certificate mixin for the class. This mixin implements the
various required properties for the certificate.

Call this function near the end of your derived class_init function. The
derived class must implement the #GcrCertificate interface.</doc>
      <source-position filename="gcr/gcr-certificate.h" line="142"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="object_class" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="1098">The GObjectClass for this class</doc>
          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
        </parameter>
      </parameters>
    </function>
    <function name="certificate_mixin_comparable_init"
              c:identifier="gcr_certificate_mixin_comparable_init"
              moved-to="Certificate.mixin_comparable_init"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate.c"
           line="1082">Initialize a #GcrComparableIface to compare the current certificate.
In general it's easier to use the GCR_CERTIFICATE_MIXIN_IMPLEMENT_COMPARABLE()
macro instead of this function.</doc>
      <source-position filename="gcr/gcr-certificate.h" line="140"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="iface" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="1084">The interface</doc>
          <type name="ComparableIface" c:type="GcrComparableIface*"/>
        </parameter>
      </parameters>
    </function>
    <function name="certificate_mixin_get_property"
              c:identifier="gcr_certificate_mixin_get_property"
              moved-to="Certificate.mixin_get_property"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate.c"
           line="1127">Implementation to get various required certificate properties. This should
be called from your derived class get_property function, or used as a
get_property virtual function.

Example of use as called from derived class get_property function:

&lt;informalexample&gt;&lt;programlisting&gt;
static void
my_get_property (GObject *obj, guint prop_id, GValue *value, GParamSpec *pspec)
{
	switch (prop_id) {

	...

	default:
		gcr_certificate_mixin_get_property (obj, prop_id, value, pspec);
		break;
	}
}
&lt;/programlisting&gt;&lt;/informalexample&gt;

Example of use as get_property function:

&lt;informalexample&gt;&lt;programlisting&gt;
static void
my_class_init (MyClass *klass)
{
	GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
	gobject_class-&gt;get_property = gcr_certificate_mixin_get_property;

	...
}
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
      <source-position filename="gcr/gcr-certificate.h" line="144"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="obj" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="1129">The object</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
        <parameter name="prop_id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="1130">The property id</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="1131">The value to fill in.</doc>
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
        <parameter name="pspec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-certificate.c"
               line="1132">The param specification.</doc>
          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
        </parameter>
      </parameters>
    </function>
    <function name="comparable_memcmp"
              c:identifier="gcr_comparable_memcmp"
              moved-to="Comparable.memcmp"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-comparable.c"
           line="78">Compare two blocks of memory. The return value can be used to sort
the blocks of memory.</doc>
      <source-position filename="gcr/gcr-comparable.h" line="45"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-comparable.c"
             line="88">Zero if the blocks are identical, negative if first
         less than secend, possitive otherwise.</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="mem1" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-comparable.c"
               line="80">First block of memory</doc>
          <array length="1" zero-terminated="0" c:type="gconstpointer">
            <type name="guint8"/>
          </array>
        </parameter>
        <parameter name="size1" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-comparable.c"
               line="81">Length of first block</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="mem2" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-comparable.c"
               line="82">Second block of memory</doc>
          <array length="3" zero-terminated="0" c:type="gconstpointer">
            <type name="guint8"/>
          </array>
        </parameter>
        <parameter name="size2" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-comparable.c"
               line="83">Length of second block</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="data_error_get_domain"
              c:identifier="gcr_data_error_get_domain">
      <source-position filename="gcr/gcr-types.h" line="50"/>
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="fingerprint_from_attributes"
              c:identifier="gcr_fingerprint_from_attributes">
      <doc xml:space="preserve"
           filename="gcr/gcr-fingerprint.c"
           line="88">Create a key fingerprint for a certificate, public key or private key.
Note that this is not a fingerprint of certificate data, which you would
use gcr_certificate_get_fingerprint() for.</doc>
      <source-position filename="gcr/gcr-fingerprint.h" line="39"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-fingerprint.c"
             line="98">the
         fingerprint or %NULL if the input was invalid.</doc>
        <array length="2" zero-terminated="0" c:type="guchar*">
          <type name="guint8" c:type="guchar"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="attrs" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-fingerprint.c"
               line="90">attributes for key or certificate</doc>
          <type name="Gck.Attributes" c:type="GckAttributes*"/>
        </parameter>
        <parameter name="checksum_type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-fingerprint.c"
               line="91">the type of fingerprint to create</doc>
          <type name="GLib.ChecksumType" c:type="GChecksumType"/>
        </parameter>
        <parameter name="n_fingerprint"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-fingerprint.c"
               line="92">the length of fingerprint returned</doc>
          <type name="gsize" c:type="gsize*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fingerprint_from_subject_public_key_info"
              c:identifier="gcr_fingerprint_from_subject_public_key_info">
      <doc xml:space="preserve"
           filename="gcr/gcr-fingerprint.c"
           line="50">Create a key fingerprint for a DER encoded subjectPublicKeyInfo.</doc>
      <source-position filename="gcr/gcr-fingerprint.h" line="34"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-fingerprint.c"
             line="59">the
         fingerprint or %NULL if the input was invalid.</doc>
        <array length="3" zero-terminated="0" c:type="guchar*">
          <type name="guint8" c:type="guchar"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="key_info" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-fingerprint.c"
               line="52">DER encoded subjectPublicKeyInfo structure</doc>
          <array length="1" zero-terminated="0" c:type="const guchar*">
            <type name="guint8" c:type="guchar"/>
          </array>
        </parameter>
        <parameter name="n_key_info" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-fingerprint.c"
               line="53">length of DER encoded structure</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="checksum_type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-fingerprint.c"
               line="54">the type of fingerprint to create</doc>
          <type name="GLib.ChecksumType" c:type="GChecksumType"/>
        </parameter>
        <parameter name="n_fingerprint"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gcr/gcr-fingerprint.c"
               line="55">the length of fingerprint returned</doc>
          <type name="gsize" c:type="gsize*"/>
        </parameter>
      </parameters>
    </function>
    <docsection name="gcr-certificate">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate.c"
           line="39">This is an interface that represents an X.509 certificate. Objects can
implement this interface to make a certificate usable with the GCR
library.

Various methods are available to parse out relevant bits of the certificate.
However no verification of the validity of a certificate is done here. Use
your favorite crypto library to do this.

You can use #GcrSimpleCertificate to simply load a certificate for which
you already have the raw certificate data.

The #GcrCertificate interface has several properties that must be implemented.
You can use a mixin to implement these properties if desired. See the
gcr_certificate_mixin_class_init() and gcr_certificate_mixin_get_property()
functions.

All certificates are comparable. If implementing a #GcrCertificate, you can
use GCR_CERTIFICATE_MIXIN_IMPLEMENT_COMPARABLE() to implement the #GcrComparable
interface.</doc>
    </docsection>
    <docsection name="gcr-certificate-chain">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate-chain.c"
           line="35">#GcrCertificateChain represents a chain of certificates, normally used to
validate the trust in a certificate. An X.509 certificate chain has one
endpoint certificate (the one for which trust is being verified) and then
in turn the certificate that issued each previous certificate in the chain.

This functionality is for building of certificate chains not for validating
them. Use your favorite crypto library to validate trust in a certificate
chain once its built.

The order of certificates in the chain should be first the endpoint
certificates and then the signing certificates.

Create a new certificate chain with gcr_certificate_chain_new() and then
add the certificates with gcr_certificate_chain_add().

You can then use gcr_certificate_chain_build() to build the remainder of
the chain. This will lookup missing certificates in PKCS\#11 modules and
also check that each certificate in the chain is the signer of the previous
one. If a trust anchor, pinned certificate, or self-signed certificate is
found, then the chain is considered built. Any extra certificates are
removed from the chain.

Once the certificate chain has been built, you can access its status
through gcr_certificate_chain_get_status(). The status signifies whether
the chain is anchored on a trust root, self-signed, incomplete etc. See
#GcrCertificateChainStatus for information on the various statuses.

It's important to understand that the building of a certificate chain is
merely the first step towards verifying trust in a certificate.</doc>
    </docsection>
    <docsection name="gcr-certificate-request">
      <doc xml:space="preserve"
           filename="gcr/gcr-certificate-request.c"
           line="36">This is an object that allows creation of certificate requests. A
certificate request is sent to a certificate authority to request an
X.509 certificate.

Use gcr_certificate_request_prepare() to create a blank certificate
request for a given private key. Set the common name on the certificate
request with gcr_certificate_request_set_cn(), and then sign the request
with gcr_certificate_request_complete_async().</doc>
    </docsection>
    <docsection name="gcr-collection">
      <doc xml:space="preserve"
           filename="gcr/gcr-collection.c"
           line="24">A #GcrCollection is used to group a set of objects. This is an abstract
interface which can be used to determine which objects show up in a selector
or other user interface element.

Use gcr_simple_collection_new() to create a concrete implementation of this
interface which you can add objects to.</doc>
    </docsection>
    <docsection name="gcr-comparable">
      <doc xml:space="preserve"
           filename="gcr/gcr-comparable.c"
           line="26">The #GcrComparable interface is implemented by objects when they should be
comparable against one another.</doc>
    </docsection>
    <docsection name="gcr-filter-collection">
      <doc xml:space="preserve"
           filename="gcr/gcr-filter-collection.c"
           line="27">An implementation of #GcrCollection which filters objects from another
underlying collection. Use gcr_filter_collection_new_with_callback()
to create a new filter collection.

The callback will determine the criteria for whether an object shows through
the filter or not.</doc>
    </docsection>
    <docsection name="gcr-fingerprint">
      <doc xml:space="preserve"
           filename="gcr/gcr-fingerprint.c"
           line="34">These functions generate key fingerprints for public keys, certificates and
key data. The fingerprints are created so that they they will be identical
for a key and its corresponding certificate.

Note that in the case of certificates these are not fingerprints of the
actual certificate data, but rather of the public key contained in a
certificate.

These fingerprints are created using the subjectPublicKeyInfo ASN.1 structure.</doc>
    </docsection>
    <docsection name="gcr-import-interaction">
      <doc xml:space="preserve"
           filename="gcr/gcr-import-interaction.c"
           line="26">This is an interface implemented by a caller performing an import. It allows
the importer to ask the caller for further information about the import.

It must be implemented on a derived class of #GTlsInteraction</doc>
    </docsection>
    <docsection name="gcr-importer">
      <doc xml:space="preserve"
           filename="gcr/gcr-importer.c"
           line="35">An interface which allows importing of certificates and keys. Each
#GcrImporter is registered with a set of PKCS\#11 attributes to match
stuff that it can import.

An importer gets passed a #GcrParser and accesses the currently parsed
item. To create a set of importers that can import the currently parsed
item in a #GcrParser, use gcr_importer_create_for_parsed(). The list of
importers returned has the parsed item queued for import.

To queue additional items with a importer use gcr_importer_queue_for_parsed().
In addition you can try and queue an additional item with a set of importers
using the gcr_importer_queue_and_filter_for_parsed().

To start the import use gcr_importer_import() or the async variants.</doc>
    </docsection>
    <docsection name="gcr-library">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="39">Basic library utilities such as version checks.</doc>
    </docsection>
    <docsection name="gcr-mock-prompter">
      <doc xml:space="preserve"
           filename="gcr/gcr-mock-prompter.c"
           line="33">A mock GcrSystemPrompter used for testing against.

Use gcr_mock_prompter_start() to start the mock prompter in another
thread. The returned string is the dbus address of the mock prompter.
You can pass this to gcr_system_prompt_open() as the prompter bus name.

Use the gcr_mock_prompter_expect_confirm_ok() function and friends before
prompting to verify that the prompts are displayed as expected, and to
provide a response.</doc>
    </docsection>
    <docsection name="gcr-parser">
      <doc xml:space="preserve"
           filename="gcr/gcr-parser.c"
           line="47">A #GcrParser can parse various certificate and key files such as OpenSSL
PEM files, DER encoded certifictes, PKCS\#8 keys and so on. Each various
format is identified by a value in the #GcrDataFormat enumeration.

In order to parse data, a new parser is created with gcr_parser_new() and
then the #GcrParser::authenticate and #GcrParser::parsed signals should be
connected to. Data is then fed to the parser via gcr_parser_parse_data()
or gcr_parser_parse_stream().

During the #GcrParser::parsed signal the attributes that make up the currently
parsed item can be retrieved using the gcr_parser_get_parsed_attributes()
function.</doc>
    </docsection>
    <docsection name="gcr-pkcs11">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="87">Manage or lookup various global aspesct and settings of the library.

The GCR library maintains a global list of PKCS\#11 modules to use for
its various lookups and storage operations. Each module is represented by
a GckModule object. You can examine this list by using
gcr_pkcs11_get_modules().

The list is configured automatically by looking for system installed
PKCS\#11 modules. It's not not normally necessary to modify this list. But
if you have special needs, you can use the gcr_pkcs11_set_modules() and
gcr_pkcs11_add_module() to do so.

Trust assertions are stored and looked up in specific PKCS\#11 slots.
You can examine this list with gcr_pkcs11_get_trust_lookup_slots()</doc>
    </docsection>
    <docsection name="gcr-pkcs11-certificate">
      <doc xml:space="preserve"
           filename="gcr/gcr-pkcs11-certificate.c"
           line="34">A #GcrPkcs11Certificate is a certificate loaded from a PKCS\#11 storage.
It is also a valid #GckObject and can be used as such.

Use gcr_pkcs11_certificate_lookup_issuer() to lookup the issuer of a given
certificate in the PKCS\#11 store.

Various common PKCS\#11 certificate attributes are automatically loaded and
are available via gcr_pkcs11_certificate_get_attributes().</doc>
    </docsection>
    <docsection name="gcr-private">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="108">This section is only here to supress warnings, and should not be displayed.</doc>
    </docsection>
    <docsection name="gcr-prompt">
      <doc xml:space="preserve"
           filename="gcr/gcr-prompt.c"
           line="28">A #GcrPrompt represents a prompt displayed to the user. It is an interface
with various implementations.

Various properties are set on the prompt, and then the prompt is displayed
the various prompt methods like gcr_prompt_password_run().

A #GcrPrompt may be used to display multiple related prompts. Most
implemantions do not hide the window between display of multiple related
prompts, and the #GcrPrompt must be closed or destroyed in order to make
it go away. This allows the user to see that the prompts are related.

Use #GcrPromptDialog to create an in-process GTK+ dialog prompt. Use
#GcrSystemPrompt to create a system prompt in a prompter process.

The prompt implementation will always display the GcrPrompt:message property,
but may choose not to display the GcrPrompt:description or GcrPrompt:title
properties.</doc>
    </docsection>
    <docsection name="gcr-secret-exchange">
      <doc xml:space="preserve"
           filename="gcr/gcr-secret-exchange.c"
           line="35">Allows exchange of secrets between two processes on the same system without
exposing those secrets to things like loggers, non-pageable memory etc.

This does not protect against active attacks like MITM attacks.

Each side creates a #GcrSecretExchange object, and one of the sides calls
gcr_secret_exchange_begin(). This creates a string, which should be passed
to the other side. Each side passes the strings it receives into
gcr_secret_exchange_receive().

In order to send a reply (either with or without a secret) use
gcr_secret_exchange_send(). A side must have had gcr_secret_exchange_receive()
successfully called before it can use gcr_secret_exchange_send().

The #GcrSecretExchange objects can be used for multiple iterations of the
conversation, or for just one request/reply. The only limitation being that
the initial request cannot contain a secret.

Caveat: Information about the approximate length (rounded up to the nearest
16 bytes) may be leaked. If this is considered inacceptable, do not use
#GcrSecretExchange.</doc>
    </docsection>
    <docsection name="gcr-secure-memory">
      <doc xml:space="preserve"
           filename="gcr/gcr-secure-memory.c"
           line="34">Normal allocated memory can be paged to disk at the whim of the operating
system. This can be a problem for sensitive information like passwords, keys
and secrets.

The Gcr library holds passwords and keys in non-pageable, or locked memory.
This is only possible if the OS contains support for it.

These functions allow applications to use secure memory to hold passwords
and other sensitive information.</doc>
    </docsection>
    <docsection name="gcr-simple-certificate">
      <doc xml:space="preserve"
           filename="gcr/gcr-simple-certificate.c"
           line="29">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.</doc>
    </docsection>
    <docsection name="gcr-simple-collection">
      <doc xml:space="preserve"
           filename="gcr/gcr-simple-collection.c"
           line="29">A simple implementation of #GcrCollection, which you can add and remove
objects from. Use gcr_simple_collection_add() to do this
gcr_simple_collection_remove().</doc>
    </docsection>
    <docsection name="gcr-ssh-askpass">
      <doc xml:space="preserve"
           filename="gcr/gcr-ssh-askpass.c"
           line="37">When used as the setup function while spawning an ssh command like ssh-add
or ssh, this allows callbacks for passwords on the provided interaction.</doc>
    </docsection>
    <docsection name="gcr-system-prompt">
      <doc xml:space="preserve"
           filename="gcr/gcr-system-prompt.c"
           line="37">A #GcrPrompt implementation which calls to the system prompter to
display prompts in a system modal fashion.

Since the system prompter usually only displays one prompt at a time, you
may have to wait for the prompt to be displayed. Use gcr_system_prompt_open()
or a related function to open a prompt. Since this can take a long time, you
should always check that the prompt is still needed after it is opened. A
previous prompt may have already provided the information needed and you
may no longer need to prompt.

Use gcr_system_prompt_close() to close the prompt when you're done with it.</doc>
    </docsection>
    <docsection name="gcr-system-prompter">
      <doc xml:space="preserve"
           filename="gcr/gcr-system-prompter.c"
           line="40">This is a DBus service which is rarely implemented. Use #GcrSystemPrompt
to display system prompts.

The GcrSystemPrompter service responds to dbus requests to create system
prompts and creates #GcrPrompt type objects to display those prompts.

Pass the GType of the implementation of #GcrPrompt to gcr_system_prompter_new().</doc>
    </docsection>
    <docsection name="gcr-trust">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="36">These functions provide access to stored information about which
certificates the system and user trusts as certificate authority trust
anchors, or overrides to the normal verification of certificates.

Trust anchors are used to verify the certificate authority in a certificate
chain. Trust anchors are always valid for a given purpose. The most common
purpose is the #GCR_PURPOSE_SERVER_AUTH and is used for a client application
to verify that the certificate at the server side of a TLS connection is
authorized to act as such. To check if a certificate is a trust anchor use
gcr_trust_is_certificate_anchored().

Pinned certificates are used when a user overrides the default trust
decision for a given certificate. They're often used with self-signed
certificates. Pinned certificates are always only valid for a single peer
such as the remote host with which TLS is being performed. To lookup
pinned certificates use gcr_trust_is_certificate_pinned().

After the user has requested to override the trust decision
about a given certificate then a pinned certificates can be added by using
the gcr_trust_add_pinned_certificate() function.

These functions do not constitute a viable method for verifying certificates
used in TLS or other locations. Instead they support such verification
by providing some of the needed data for a trust decision.

The storage is provided by pluggable PKCS\#11 modules.</doc>
    </docsection>
    <docsection name="gcr-union-collection">
      <doc xml:space="preserve"
           filename="gcr/gcr-union-collection.c"
           line="30">An implementation of #GcrCollection, which combines the objects in
other #GcrCollections. Use gcr_union_collection_add() to add and
gcr_union_collection_remove() to remove them.</doc>
    </docsection>
    <function name="icon_for_token" c:identifier="gcr_icon_for_token">
      <doc xml:space="preserve"
           filename="gcr/gcr-icons.c"
           line="29">Get an appropriate icon for the token</doc>
      <source-position filename="gcr/gcr-icons.h" line="42"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gcr/gcr-icons.c"
             line="35">the icon</doc>
        <type name="Gio.Icon" c:type="GIcon*"/>
      </return-value>
      <parameters>
        <parameter name="token_info" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-icons.c"
               line="31">the token info</doc>
          <type name="Gck.TokenInfo" c:type="GckTokenInfo*"/>
        </parameter>
      </parameters>
    </function>
    <function name="importer_create_for_parsed"
              c:identifier="gcr_importer_create_for_parsed"
              moved-to="Importer.create_for_parsed">
      <doc xml:space="preserve"
           filename="gcr/gcr-importer.c"
           line="191">Create a set of importers which can import this parsed item.
The parsed item is represented by the state of the GcrParser at the
time of calling this method.</doc>
      <source-position filename="gcr/gcr-importer.h" line="72"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="199">a list of importers
         which can import the parsed item, which should be freed with
         g_object_unref(), or %NULL if no types of importers can be created</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="Importer"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="parsed" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-importer.c"
               line="193">a parser with a parsed item to import</doc>
          <type name="Parsed" c:type="GcrParsed*"/>
        </parameter>
      </parameters>
    </function>
    <function name="importer_queue_and_filter_for_parsed"
              c:identifier="gcr_importer_queue_and_filter_for_parsed"
              moved-to="Importer.queue_and_filter_for_parsed">
      <doc xml:space="preserve"
           filename="gcr/gcr-importer.c"
           line="308">Queues an additional item to be imported in all compattible importers
in the set. The parsed item is represented by the state of the #GcrParser
at the time of calling this method.

If the parsed item is incompatible with an importer, then that the item
will not be queued on that importer.</doc>
      <source-position filename="gcr/gcr-importer.h" line="77"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gcr/gcr-importer.c"
             line="320">a new set of importers
         that queued the item, which should be freed with gck_list_unref_free()</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="Importer"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="importers" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-importer.c"
               line="310">a set of importers</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Importer"/>
          </type>
        </parameter>
        <parameter name="parsed" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-importer.c"
               line="311">a parsed item</doc>
          <type name="Parsed" c:type="GcrParsed*"/>
        </parameter>
      </parameters>
    </function>
    <function name="importer_register"
              c:identifier="gcr_importer_register"
              moved-to="Importer.register">
      <doc xml:space="preserve"
           filename="gcr/gcr-importer.c"
           line="138">Register an importer to handle parsed items that match the given attributes.

If @attrs are a floating reference, then it is consumed.</doc>
      <source-position filename="gcr/gcr-importer.h" line="98"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="importer_type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-importer.c"
               line="140">the GType of the importer being registered</doc>
          <type name="GType" c:type="GType"/>
        </parameter>
        <parameter name="attrs" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-importer.c"
               line="141">the attributes that this importer is compatible with</doc>
          <type name="Gck.Attributes" c:type="GckAttributes*"/>
        </parameter>
      </parameters>
    </function>
    <function name="importer_register_well_known"
              c:identifier="gcr_importer_register_well_known"
              moved-to="Importer.register_well_known">
      <doc xml:space="preserve"
           filename="gcr/gcr-importer.c"
           line="545">Register built-in PKCS\#11 and GnuPG importers.</doc>
      <source-position filename="gcr/gcr-importer.h" line="101"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="mock_prompter_disconnect"
              c:identifier="gcr_mock_prompter_disconnect">
      <doc xml:space="preserve"
           filename="gcr/gcr-mock-prompter.c"
           line="1037">Disconnect the mock prompter</doc>
      <source-position filename="gcr/gcr-mock-prompter.h" line="37"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="mock_prompter_expect_close"
              c:identifier="gcr_mock_prompter_expect_close">
      <doc xml:space="preserve"
           filename="gcr/gcr-mock-prompter.c"
           line="812">Queue an expected response on the mock prompter.

Expects any prompt, and closes the prompt when it gets it.</doc>
      <source-position filename="gcr/gcr-mock-prompter.h" line="58"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="mock_prompter_expect_confirm_cancel"
              c:identifier="gcr_mock_prompter_expect_confirm_cancel">
      <doc xml:space="preserve"
           filename="gcr/gcr-mock-prompter.c"
           line="712">Queue an expected response on the mock prompter.

Expects a confirmation prompt, and then cancels that prompt.</doc>
      <source-position filename="gcr/gcr-mock-prompter.h" line="50"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="mock_prompter_expect_confirm_ok"
              c:identifier="gcr_mock_prompter_expect_confirm_ok"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-mock-prompter.c"
           line="666">Queue an expected response on the mock prompter.

Expects a confirmation prompt, and then confirms that prompt by
simulating a click on the ok button.

Additional property pairs for the prompt can be added in the argument
list, in the same way that you would with g_object_new().

If the "choice-chosen" property is specified then that value will be
set on the prompt as if the user had changed the value.

All other properties will be checked against the prompt, and an error
will occur if they do not match the value set on the prompt.</doc>
      <source-position filename="gcr/gcr-mock-prompter.h" line="47"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="first_property_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-mock-prompter.c"
               line="668">the first property name in the argument list or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-mock-prompter.c"
               line="669">properties to expect</doc>
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="mock_prompter_expect_password_cancel"
              c:identifier="gcr_mock_prompter_expect_password_cancel">
      <doc xml:space="preserve"
           filename="gcr/gcr-mock-prompter.c"
           line="787">Queue an expected response on the mock prompter.

Expects a password prompt, and then cancels that prompt.</doc>
      <source-position filename="gcr/gcr-mock-prompter.h" line="56"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="mock_prompter_expect_password_ok"
              c:identifier="gcr_mock_prompter_expect_password_ok"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-mock-prompter.c"
           line="737">Queue an expected response on the mock prompter.

Expects a password prompt, and returns @password as if the user had entered
it and clicked the ok button.

Additional property pairs for the prompt can be added in the argument
list, in the same way that you would with g_object_new().

If the "choice-chosen" property is specified then that value will be
set on the prompt as if the user had changed the value.

All other properties will be checked against the prompt, and an error
will occur if they do not match the value set on the prompt.</doc>
      <source-position filename="gcr/gcr-mock-prompter.h" line="52"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="password" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-mock-prompter.c"
               line="739">the password to return from the prompt</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="first_property_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-mock-prompter.c"
               line="740">the first property name in the argument list or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-mock-prompter.c"
               line="741">properties to expect</doc>
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="mock_prompter_get_delay_msec"
              c:identifier="gcr_mock_prompter_get_delay_msec">
      <doc xml:space="preserve"
           filename="gcr/gcr-mock-prompter.c"
           line="629">Get the delay in milliseconds before the mock prompter completes
an expected prompt.</doc>
      <source-position filename="gcr/gcr-mock-prompter.h" line="43"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-mock-prompter.c"
             line="635">the delay</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
    </function>
    <function name="mock_prompter_is_expecting"
              c:identifier="gcr_mock_prompter_is_expecting">
      <doc xml:space="preserve"
           filename="gcr/gcr-mock-prompter.c"
           line="836">Check if the mock prompter is expecting a response. This will be %TRUE
when one of the &lt;literal&gt;gcr_mock_prompter_expect_xxx&lt;!-- --&gt;()&lt;/literal&gt;
functions have been used to queue an expected prompt, but that prompt
response has not be 'used' yet.</doc>
      <source-position filename="gcr/gcr-mock-prompter.h" line="60"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-mock-prompter.c"
             line="844">whether expecting a prompt</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="mock_prompter_is_prompting"
              c:identifier="gcr_mock_prompter_is_prompting">
      <doc xml:space="preserve"
           filename="gcr/gcr-mock-prompter.c"
           line="616">Check if the mock prompter is showing any prompts.</doc>
      <source-position filename="gcr/gcr-mock-prompter.h" line="41"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-mock-prompter.c"
             line="621">whether prompting</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="mock_prompter_set_delay_msec"
              c:identifier="gcr_mock_prompter_set_delay_msec">
      <doc xml:space="preserve"
           filename="gcr/gcr-mock-prompter.c"
           line="650">Set the delay in milliseconds before the mock prompter completes
an expected prompt.</doc>
      <source-position filename="gcr/gcr-mock-prompter.h" line="45"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="delay_msec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-mock-prompter.c"
               line="652">prompt response delay in milliseconds</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="mock_prompter_start"
              c:identifier="gcr_mock_prompter_start">
      <doc xml:space="preserve"
           filename="gcr/gcr-mock-prompter.c"
           line="999">Start the mock prompter. This is often used from the
&lt;literal&gt;setup&lt;!-- --&gt;()&lt;/literal&gt; function of tests.

Starts the mock prompter in an additional thread. Use the returned DBus bus
name with gcr_system_prompt_open_for_prompter() to connect to this prompter.</doc>
      <source-position filename="gcr/gcr-mock-prompter.h" line="35"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-mock-prompter.c"
             line="1008">the bus name that the mock prompter is listening on</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
    </function>
    <function name="mock_prompter_stop" c:identifier="gcr_mock_prompter_stop">
      <doc xml:space="preserve"
           filename="gcr/gcr-mock-prompter.c"
           line="1057">Stop the mock prompter. This is often used from the
&lt;literal&gt;teardown&lt;!-- --&gt;()&lt;/literal&gt; function of tests.</doc>
      <source-position filename="gcr/gcr-mock-prompter.h" line="39"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="parsed_unref"
              c:identifier="gcr_parsed_unref"
              moved-to="Parsed.unref">
      <doc xml:space="preserve"
           filename="gcr/gcr-parser.c"
           line="2828">Unreferences a parsed item which was referenced with gcr_parsed_ref()</doc>
      <source-position filename="gcr/gcr-parser.h" line="130"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="parsed"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-parser.c"
               line="2830">a parsed item</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="pkcs11_add_module" c:identifier="gcr_pkcs11_add_module">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="415">Add a #GckModule to the list of PKCS\#11 modules that are used by the
GCR library.

It is not normally necessary to call this function. The available
PKCS\#11 modules installed on the system are automatically loaded
by the GCR library.</doc>
      <source-position filename="gcr/gcr-library.h" line="47"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="module" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="417">a #GckModule</doc>
          <type name="Gck.Module" c:type="GckModule*"/>
        </parameter>
      </parameters>
    </function>
    <function name="pkcs11_add_module_from_file"
              c:identifier="gcr_pkcs11_add_module_from_file"
              throws="1">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="433">Initialize a PKCS\#11 module and add it to the modules that are
used by the GCR library. Note that is an error to initialize the same
PKCS\#11 module twice.

It is not normally necessary to call this function. The available
PKCS\#11 modules installed on the system are automatically loaded
by the GCR library.</doc>
      <source-position filename="gcr/gcr-library.h" line="49"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-library.c"
             line="447">whether the module was sucessfully added.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="module_path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="435">the full file path of the PKCS\#11 module</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="unused"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="436">unused</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="pkcs11_get_modules" c:identifier="gcr_pkcs11_get_modules">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="366">List all the PKCS\#11 modules that are used by the GCR library.
Each module is a #GckModule object.

An empty list of modules will be returned if gcr_pkcs11_set_modules(),
or gcr_pkcs11_initialize() has not yet run.

When done with the list, free it with gck_list_unref_free().</doc>
      <source-position filename="gcr/gcr-library.h" line="43"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gcr/gcr-library.c"
             line="377">a newly allocated list
         of #GckModule objects</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="Gck.Module"/>
        </type>
      </return-value>
    </function>
    <function name="pkcs11_get_trust_lookup_slots"
              c:identifier="gcr_pkcs11_get_trust_lookup_slots">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="518">List all the PKCS\#11 slots that are used by the GCR library for lookup
of trust assertions. Each slot is a #GckSlot object.

This will return an empty list if the gcr_pkcs11_initialize() function has
not yet been called.

When done with the list, free it with gck_list_unref_free().</doc>
      <source-position filename="gcr/gcr-library.h" line="53"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gcr/gcr-library.c"
             line="529">a list of #GckSlot
         objects to use for lookup of trust, or the empty list if not
         initialized or no appropriate trust stores could be found.</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="Gck.Slot"/>
        </type>
      </return-value>
    </function>
    <function name="pkcs11_get_trust_lookup_uris"
              c:identifier="gcr_pkcs11_get_trust_lookup_uris">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="602">Get the PKCS\#11 URIs that are used to identify which slots to use for
lookup trust assertions.</doc>
      <source-position filename="gcr/gcr-library.h" line="57"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-library.c"
             line="608">the uri which identifies trust storage slot</doc>
        <array c:type="const gchar**">
          <type name="utf8"/>
        </array>
      </return-value>
    </function>
    <function name="pkcs11_get_trust_store_slot"
              c:identifier="gcr_pkcs11_get_trust_store_slot">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="474">Selects an appropriate PKCS\#11 slot to store trust assertions. The slot
to use is normally configured automatically by the system.

This will only return a valid result after the gcr_pkcs11_initialize()
method has been called.

When done with the #GckSlot, use g_object_unref() to release it.</doc>
      <source-position filename="gcr/gcr-library.h" line="55"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-library.c"
             line="485">the #GckSlot to use for trust
         assertions, or null if not initialized or no appropriate
         trust store could be found.</doc>
        <type name="Gck.Slot" c:type="GckSlot*"/>
      </return-value>
    </function>
    <function name="pkcs11_get_trust_store_uri"
              c:identifier="gcr_pkcs11_get_trust_store_uri">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="564">Get the PKCS\#11 URI that is used to identify which slot to use for
storing trust storage.</doc>
      <source-position filename="gcr/gcr-library.h" line="61"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-library.c"
             line="570">the uri which identifies trust storage slot</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
    </function>
    <function name="pkcs11_initialize"
              c:identifier="gcr_pkcs11_initialize"
              throws="1">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="321">Asynchronously initialize the registered PKCS\#11 modules.</doc>
      <source-position filename="gcr/gcr-library.h" line="40"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-library.c"
             line="328">whether the operation was successful or not.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="323">optional cancellable used to cancel the operation</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="pkcs11_initialize_async"
              c:identifier="gcr_pkcs11_initialize_async">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="269">Asynchronously initialize the registered PKCS\#11 modules.</doc>
      <source-position filename="gcr/gcr-library.h" line="33"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="271">optional cancellable used to cancel the operation</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
        <parameter name="callback"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="async"
                   closure="2">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="272">callback which will be called when the operation completes</doc>
          <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="273">data passed to the callback</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="pkcs11_initialize_finish"
              c:identifier="gcr_pkcs11_initialize_finish"
              throws="1">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="302">Complete the asynchronous operation to initialize the registered PKCS\#11
modules.</doc>
      <source-position filename="gcr/gcr-library.h" line="37"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-library.c"
             line="310">whether the operation was successful or not.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="304">the asynchronous result</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </parameter>
      </parameters>
    </function>
    <function name="pkcs11_set_modules" c:identifier="gcr_pkcs11_set_modules">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="390">Set the list of PKCS\#11 modules that are used by the GCR library.
Each module in the list is a #GckModule object.

It is not normally necessary to call this function. The available
PKCS\#11 modules installed on the system are automatically loaded
by the GCR library.</doc>
      <source-position filename="gcr/gcr-library.h" line="45"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="modules" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="392">a list of #GckModule</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Gck.Module"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="pkcs11_set_trust_lookup_uris"
              c:identifier="gcr_pkcs11_set_trust_lookup_uris">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="617">Set the PKCS\#11 URIs that are used to identify which slots to use for
lookup of trust assertions.

It is not normally necessary to call this function. The relevant
PKCS\#11 slots are automatically configured by the GCR library.</doc>
      <source-position filename="gcr/gcr-library.h" line="59"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="pkcs11_uris"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="619">the uris which identifies trust lookup slots</doc>
          <type name="utf8" c:type="const gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="pkcs11_set_trust_store_uri"
              c:identifier="gcr_pkcs11_set_trust_store_uri">
      <doc xml:space="preserve"
           filename="gcr/gcr-library.c"
           line="579">Set the PKCS\#11 URI that is used to identify which slot to use for
storing trust assertions.

It is not normally necessary to call this function. The relevant
PKCS\#11 slot is automatically configured by the GCR library.</doc>
      <source-position filename="gcr/gcr-library.h" line="63"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="pkcs11_uri"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-library.c"
               line="581">the uri which identifies trust storage slot</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="secure_memory_alloc"
              c:identifier="gcr_secure_memory_alloc"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-secure-memory.c"
           line="60">Allocate a block of non-pageable memory.

If non-pageable memory cannot be allocated then normal memory will be
returned.</doc>
      <source-position filename="gcr/gcr-secure-memory.h" line="38"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-secure-memory.c"
             line="69">new memory block which should be freed
with gcr_secure_memory_free()</doc>
        <type name="gpointer" c:type="gpointer"/>
      </return-value>
      <parameters>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-secure-memory.c"
               line="62">The new desired size of the memory block.</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="secure_memory_free"
              c:identifier="gcr_secure_memory_free"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-secure-memory.c"
           line="185">Free a block of non-pageable memory.

Glib memory is also freed correctly when passed to this function. If called
with a %NULL pointer then no action is taken.</doc>
      <source-position filename="gcr/gcr-secure-memory.h" line="48"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="memory"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-secure-memory.c"
               line="187">pointer to the beginning of the block of memory to free</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="secure_memory_is_secure"
              c:identifier="gcr_secure_memory_is_secure"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-secure-memory.c"
           line="202">Check if a pointer is in non-pageable memory allocated by.</doc>
      <source-position filename="gcr/gcr-secure-memory.h" line="50"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-secure-memory.c"
             line="208">whether the memory is secure non-pageable memory allocated by the
         Gcr library or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="memory"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-secure-memory.c"
               line="204">pointer to check</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function-macro name="secure_memory_new"
                    c:identifier="gcr_secure_memory_new"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-secure-memory.c"
           line="50">Allocate objects in non-pageable memory.</doc>
      <source-position filename="gcr/gcr-secure-memory.h" line="35"/>
      <parameters>
        <parameter name="type">
          <doc xml:space="preserve"
               filename="gcr/gcr-secure-memory.c"
               line="52">C type of the objects to allocate</doc>
        </parameter>
        <parameter name="n_objects">
          <doc xml:space="preserve"
               filename="gcr/gcr-secure-memory.c"
               line="53">number of objects to allocate</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function name="secure_memory_realloc"
              c:identifier="gcr_secure_memory_realloc"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-secure-memory.c"
           line="104">Reallocate a block of non-pageable memory.

Glib memory is also reallocated correctly. If called with a null pointer,
then a new block of memory is allocated. If called with a zero size,
then the block of memory is freed.

If non-pageable memory cannot be allocated then normal memory will be
returned.</doc>
      <source-position filename="gcr/gcr-secure-memory.h" line="42"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-secure-memory.c"
             line="118">new block, or %NULL if the block was
freed; memory block should be freed with gcr_secure_memory_free()</doc>
        <type name="gpointer" c:type="gpointer"/>
      </return-value>
      <parameters>
        <parameter name="memory"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-secure-memory.c"
               line="106">pointer to reallocate or %NULL to allocate a new block</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-secure-memory.c"
               line="107">new desired size of the memory block, or 0 to free the memory</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="secure_memory_strdup"
              c:identifier="gcr_secure_memory_strdup"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-secure-memory.c"
           line="217">Copy a string into non-pageable memory. If the input string is %NULL, then
%NULL will be returned.</doc>
      <source-position filename="gcr/gcr-secure-memory.h" line="52"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gcr/gcr-secure-memory.c"
             line="224">copied string, should be freed with gcr_secure_memory_free()</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="string"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-secure-memory.c"
               line="219">null terminated string to copy</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="secure_memory_strfree"
              c:identifier="gcr_secure_memory_strfree"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-secure-memory.c"
           line="233">Free a string, whether securely allocated using these functions or not.
This will also clear out the contents of the string so they do not
remain in memory.</doc>
      <source-position filename="gcr/gcr-secure-memory.h" line="54"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="string"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-secure-memory.c"
               line="235">null terminated string to fere</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="secure_memory_try_alloc"
              c:identifier="gcr_secure_memory_try_alloc"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-secure-memory.c"
           line="87">Allocate a block of non-pageable memory.

If non-pageable memory cannot be allocated, then %NULL is returned.</doc>
      <source-position filename="gcr/gcr-secure-memory.h" line="40"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-secure-memory.c"
             line="95">new block, or %NULL if memory cannot be
allocated; memory block should be freed with gcr_secure_memory_free()</doc>
        <type name="gpointer" c:type="gpointer"/>
      </return-value>
      <parameters>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-secure-memory.c"
               line="89">new desired size of the memory block</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="secure_memory_try_realloc"
              c:identifier="gcr_secure_memory_try_realloc"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gcr/gcr-secure-memory.c"
           line="145">Reallocate a block of non-pageable memory.

Glib memory is also reallocated correctly when passed to this function.
If called with a null pointer, then a new block of memory is allocated.
If called with a zero size, then the block of memory is freed.

If memory cannot be allocated, %NULL is returned and the original block
of memory remains intact.</doc>
      <source-position filename="gcr/gcr-secure-memory.h" line="45"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gcr/gcr-secure-memory.c"
             line="159">the new block, or %NULL if memory cannot be
allocated; the memory block should be freed with gcr_secure_memory_free()</doc>
        <type name="gpointer" c:type="gpointer"/>
      </return-value>
      <parameters>
        <parameter name="memory"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-secure-memory.c"
               line="147">pointer to reallocate or %NULL to allocate a new block</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-secure-memory.c"
               line="148">new desired size of the memory block</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="trust_add_pinned_certificate"
              c:identifier="gcr_trust_add_pinned_certificate"
              throws="1">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="367">Add a pinned @certificate for connections to @peer for @purpose. A pinned
certificate overrides all other certificate verification and should be
used with care.

If the same pinned certificate already exists, then this operation
does not add another, and succeeds without error.

This call may block, see gcr_trust_add_pinned_certificate_async() for the
non-blocking version.</doc>
      <source-position filename="gcr/gcr-trust.h" line="53"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-trust.c"
             line="385">%TRUE if the pinned certificate is recorded successfully</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="certificate" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="369">a #GcrCertificate</doc>
          <type name="Certificate" c:type="GcrCertificate*"/>
        </parameter>
        <parameter name="purpose" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="370">the purpose string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="peer" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="371">the peer for this pinned certificate</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="372">a #GCancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="trust_add_pinned_certificate_async"
              c:identifier="gcr_trust_add_pinned_certificate_async">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="421">Add a pinned certificate for communication with @peer for @purpose. A pinned
certificate overrides all other certificate verification and should be used
with care.

If the same pinned certificate already exists, then this operation
does not add another, and succeeds without error.

When the operation is finished, callback will be called. You can then call
gcr_trust_add_pinned_certificate_finish() to get the result of the
operation.</doc>
      <source-position filename="gcr/gcr-trust.h" line="59"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="certificate" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="423">a #GcrCertificate</doc>
          <type name="Certificate" c:type="GcrCertificate*"/>
        </parameter>
        <parameter name="purpose" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="424">the purpose string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="peer" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="425">the peer for this pinned certificate</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="426">a #GCancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
        <parameter name="callback"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="async"
                   closure="5">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="427">a #GAsyncReadyCallback to call when the operation completes</doc>
          <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="428">the data to pass to callback function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="trust_add_pinned_certificate_finish"
              c:identifier="gcr_trust_add_pinned_certificate_finish"
              throws="1">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="465">Finishes an asynchronous operation started by
gcr_trust_add_pinned_certificate_async().</doc>
      <source-position filename="gcr/gcr-trust.h" line="66"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-trust.c"
             line="473">%TRUE if the pinned certificate is recorded successfully</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="467">the #GAsyncResult passed to the callback</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </parameter>
      </parameters>
    </function>
    <function name="trust_is_certificate_anchored"
              c:identifier="gcr_trust_is_certificate_anchored"
              throws="1">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="706">Check if the @certificate is a trust anchor for the given @purpose. A trust
anchor is used to verify the signatures on other certificates when verifying
a certificate chain. Also known as a trusted certificate authority.

This call may block, see gcr_trust_is_certificate_anchored_async() for the
non-blocking version.

In the case of an error, %FALSE is also returned. Check @error to detect
if an error occurred.</doc>
      <source-position filename="gcr/gcr-trust.h" line="85"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-trust.c"
             line="723">%TRUE if the certificate is a trust anchor</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="certificate" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="708">a #GcrCertificate to check</doc>
          <type name="Certificate" c:type="GcrCertificate*"/>
        </parameter>
        <parameter name="purpose" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="709">the purpose string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="710">a #GCancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="trust_is_certificate_anchored_async"
              c:identifier="gcr_trust_is_certificate_anchored_async">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="759">Check if the @certificate is a trust anchor for the given @purpose. A trust
anchor is used to verify the signatures on other certificates when verifying
a certificate chain. Also known as a trusted certificate authority.

When the operation is finished, callback will be called. You can then call
gcr_trust_is_certificate_anchored_finish() to get the result of the operation.</doc>
      <source-position filename="gcr/gcr-trust.h" line="90"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="certificate" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="761">a #GcrCertificate to check</doc>
          <type name="Certificate" c:type="GcrCertificate*"/>
        </parameter>
        <parameter name="purpose" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="762">the purpose string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="763">a #GCancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
        <parameter name="callback"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="async"
                   closure="4">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="764">a #GAsyncReadyCallback to call when the operation completes</doc>
          <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="765">the data to pass to callback function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="trust_is_certificate_anchored_finish"
              c:identifier="gcr_trust_is_certificate_anchored_finish"
              throws="1">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="797">Finishes an asynchronous operation started by
gcr_trust_is_certificate_anchored_async().

In the case of an error, %FALSE is also returned. Check @error to detect
if an error occurred.</doc>
      <source-position filename="gcr/gcr-trust.h" line="96"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-trust.c"
             line="808">%TRUE if the certificate is a trust anchor</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="799">the #GAsyncResult passed to the callback</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </parameter>
      </parameters>
    </function>
    <function name="trust_is_certificate_pinned"
              c:identifier="gcr_trust_is_certificate_pinned"
              throws="1">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="161">Check if @certificate is pinned for @purpose to communicate with @peer.
A pinned certificate overrides all other certificate verification.

This call may block, see gcr_trust_is_certificate_pinned_async() for the
non-blocking version.

In the case of an error, %FALSE is also returned. Check @error to detect
if an error occurred.</doc>
      <source-position filename="gcr/gcr-trust.h" line="37"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-trust.c"
             line="178">%TRUE if the certificate is pinned for the host and purpose</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="certificate" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="163">a #GcrCertificate to check</doc>
          <type name="Certificate" c:type="GcrCertificate*"/>
        </parameter>
        <parameter name="purpose" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="164">the purpose string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="peer" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="165">the peer for this pinned</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="166">a #GCancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="trust_is_certificate_pinned_async"
              c:identifier="gcr_trust_is_certificate_pinned_async">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="215">Check if @certificate is pinned for @purpose to communicate with @peer. A
pinned certificate overrides all other certificate verification.

When the operation is finished, callback will be called. You can then call
gcr_trust_is_certificate_pinned_finish() to get the result of the
operation.</doc>
      <source-position filename="gcr/gcr-trust.h" line="43"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="certificate" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="217">a #GcrCertificate to check</doc>
          <type name="Certificate" c:type="GcrCertificate*"/>
        </parameter>
        <parameter name="purpose" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="218">the purpose string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="peer" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="219">the peer for this pinned</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="220">a #GCancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
        <parameter name="callback"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="async"
                   closure="5">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="221">a #GAsyncReadyCallback to call when the operation completes</doc>
          <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="222">the data to pass to callback function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="trust_is_certificate_pinned_finish"
              c:identifier="gcr_trust_is_certificate_pinned_finish"
              throws="1">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="255">Finishes an asynchronous operation started by
gcr_trust_is_certificate_pinned_async().

In the case of an error, %FALSE is also returned. Check @error to detect
if an error occurred.</doc>
      <source-position filename="gcr/gcr-trust.h" line="50"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-trust.c"
             line="266">%TRUE if the certificate is pinned.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="257">the #GAsyncResult passed to the callback</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </parameter>
      </parameters>
    </function>
    <function name="trust_remove_pinned_certificate"
              c:identifier="gcr_trust_remove_pinned_certificate"
              throws="1">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="546">Remove a pinned certificate for communication with @peer for @purpose.

If the same pinned certificate does not exist, or was already removed,
then this operation succeeds without error.

This call may block, see gcr_trust_remove_pinned_certificate_async() for the
non-blocking version.</doc>
      <source-position filename="gcr/gcr-trust.h" line="69"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-trust.c"
             line="562">%TRUE if the pinned certificate no longer exists</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="certificate" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="548">a #GcrCertificate</doc>
          <type name="Certificate" c:type="GcrCertificate*"/>
        </parameter>
        <parameter name="purpose" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="549">the purpose string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="peer" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="550">the peer for this pinned certificate</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="551">a #GCancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="trust_remove_pinned_certificate_async"
              c:identifier="gcr_trust_remove_pinned_certificate_async">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="599">Remove a pinned certificate for communication with @peer for @purpose.

If the same pinned certificate does not exist, or was already removed,
then this operation succeeds without error.

When the operation is finished, callback will be called. You can then call
gcr_trust_remove_pinned_certificate_finish() to get the result of the
operation.</doc>
      <source-position filename="gcr/gcr-trust.h" line="75"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="certificate" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="601">a #GcrCertificate</doc>
          <type name="Certificate" c:type="GcrCertificate*"/>
        </parameter>
        <parameter name="purpose" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="602">the purpose string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="peer" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="603">the peer for this pinned certificate</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="604">a #GCancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
        <parameter name="callback"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="async"
                   closure="5">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="605">a #GAsyncReadyCallback to call when the operation completes</doc>
          <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="606">the data to pass to callback function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="trust_remove_pinned_certificate_finish"
              c:identifier="gcr_trust_remove_pinned_certificate_finish"
              throws="1">
      <doc xml:space="preserve"
           filename="gcr/gcr-trust.c"
           line="644">Finishes an asynchronous operation started by
gcr_trust_remove_pinned_certificate_async().</doc>
      <source-position filename="gcr/gcr-trust.h" line="82"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gcr/gcr-trust.c"
             line="652">%TRUE if the pinned certificate no longer exists</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gcr/gcr-trust.c"
               line="646">the #GAsyncResult passed to the callback</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
