<?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:doc="http://www.gtk.org/introspection/doc/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <package name="gck-1"/>
  <c:include name="gck/gck.h"/>
  <doc:format name="unknown"/>
  <namespace name="Gck"
             version="1"
             shared-library="libgck-1.so.2.1"
             c:identifier-prefixes="Gck"
             c:symbol-prefixes="gck">
    <callback name="Allocator" c:type="GckAllocator">
      <doc xml:space="preserve"
           filename="gck/gck-attributes.c"
           line="2017">An allocator used to allocate data for the attributes in this
[struct@Attributes] set.

This is a function that acts like g_realloc. Specifically it frees when length is
set to zero, it allocates when data is set to %NULL, and it reallocates when both
are valid.</doc>
      <source-position filename="gck/gck.h" line="78"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2029">The allocated memory, or %NULL when freeing.</doc>
        <type name="gpointer" c:type="gpointer"/>
      </return-value>
      <parameters>
        <parameter name="data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2019">Memory to allocate or deallocate.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="length" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2020">New length of memory.</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </callback>
    <record name="Attribute"
            c:type="GckAttribute"
            glib:type-name="GckAttribute"
            glib:get-type="gck_attribute_get_type"
            c:symbol-prefix="attribute">
      <doc xml:space="preserve"
           filename="gck/gck-attributes.c"
           line="34">This structure represents a PKCS#11 `CK_ATTRIBUTE`. These attributes contain
information about a PKCS#11 object. Use [method@Object.get] or
[method@Object.set] to set and attributes on an object.

Although you are free to allocate a `GckAttribute` in your own code, no
functions in this library will operate on such an attribute.</doc>
      <source-position filename="gck/gck.h" line="101"/>
      <field name="type" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="36">The attribute type, such as `CKA_LABEL`.</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
      <field name="value" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="37">The value of the attribute. May be %NULL.</doc>
        <array length="2" zero-terminated="0" c:type="guchar*">
          <type name="guint8" c:type="guchar"/>
        </array>
      </field>
      <field name="length" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="38">The length of the attribute. May be [const@INVALID] if the
attribute is invalid.</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
      <constructor name="new" c:identifier="gck_attribute_new">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1713">Create a new PKCS#11 attribute. The value will be copied
into the new attribute.</doc>
        <source-position filename="gck/gck.h" line="147"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1722">the new attribute; when done with the attribute
         use gck_attribute_free() to free it</doc>
          <type name="Attribute" c:type="GckAttribute*"/>
        </return-value>
        <parameters>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1715">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1716">the raw value of the attribute</doc>
            <type name="guint8" c:type="const guchar*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1717">the length of the attribute</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_boolean" c:identifier="gck_attribute_new_boolean">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1771">Initialize a PKCS#11 attribute to boolean. This will result
in a CK_BBOOL attribute from the PKCS#11 specs.</doc>
        <source-position filename="gck/gck.h" line="155"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1779">the new attribute; when done with the attribute u
         gck_attribute_free() to free it</doc>
          <type name="Attribute" c:type="GckAttribute*"/>
        </return-value>
        <parameters>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1773">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1774">the boolean value of the attribute</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_date" c:identifier="gck_attribute_new_date">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1791">Initialize a PKCS#11 attribute to a date. This will result
in a CK_DATE attribute from the PKCS#11 specs.</doc>
        <source-position filename="gck/gck.h" line="158"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1799">the new attribute; when done with the attribute u
         gck_attribute_free() to free it</doc>
          <type name="Attribute" c:type="GckAttribute*"/>
        </return-value>
        <parameters>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1793">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1794">the date value of the attribute</doc>
            <type name="GLib.Date" c:type="const GDate*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_empty" c:identifier="gck_attribute_new_empty">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1754">Create a new PKCS#11 attribute with empty data.</doc>
        <source-position filename="gck/gck.h" line="153"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1760">the new attribute; when done with the attribute
         use gck_attribute_free() to free it</doc>
          <type name="Attribute" c:type="GckAttribute*"/>
        </return-value>
        <parameters>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1756">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_invalid" c:identifier="gck_attribute_new_invalid">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1735">Create a new PKCS#11 attribute as 'invalid' or 'not found'
state. Specifically this sets the value length to (CK_ULONG)-1
as specified in the PKCS#11 specification.</doc>
        <source-position filename="gck/gck.h" line="151"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1743">the new attribute; when done with the attribute
         use gck_attribute_free() to free it</doc>
          <type name="Attribute" c:type="GckAttribute*"/>
        </return-value>
        <parameters>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1737">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_string" c:identifier="gck_attribute_new_string">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1831">Initialize a PKCS#11 attribute to a string. This will result
in an attribute containing the text, but not the null terminator.
The text in the attribute will be of the same encoding as you pass
to this function.</doc>
        <source-position filename="gck/gck.h" line="164"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1841">the new attribute; when done with the attribute u
         gck_attribute_free() to free it</doc>
          <type name="Attribute" c:type="GckAttribute*"/>
        </return-value>
        <parameters>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1833">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1834">the null-terminated string value of the attribute</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_ulong" c:identifier="gck_attribute_new_ulong">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1811">Initialize a PKCS#11 attribute to a unsigned long. This will result
in a `CK_ULONG` attribute from the PKCS#11 specs.</doc>
        <source-position filename="gck/gck.h" line="161"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1819">the new attribute; when done with the attribute u
         gck_attribute_free() to free it</doc>
          <type name="Attribute" c:type="GckAttribute*"/>
        </return-value>
        <parameters>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1813">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1814">the ulong value of the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="clear" c:identifier="gck_attribute_clear">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1910">Clear allocated memory held by a #GckAttribute.

This attribute must have been allocated by a Gck library function, or
the results of this method are undefined.

The type of the attribute will remain set.</doc>
        <source-position filename="gck/gck.h" line="188"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1912">Attribute to clear.</doc>
            <type name="Attribute" c:type="GckAttribute*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="gck_attribute_dump">
        <doc xml:space="preserve"
             filename="gck/gck-dump.c"
             line="325">Dump the specified attribute using g_printerr().</doc>
        <source-position filename="gck/gck.h" line="192"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-dump.c"
                 line="327">The attribute</doc>
            <type name="Attribute" c:type="const GckAttribute*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup" c:identifier="gck_attribute_dup">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1853">Duplicate the PKCS#11 attribute. All value memory is
also copied.

The @attr must have been allocated or initialized by a Gck function or
the results of this function are undefined.</doc>
        <source-position filename="gck/gck.h" line="186"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1863">the duplicated attribute; use gck_attribute_free()
         to free it</doc>
          <type name="Attribute" c:type="GckAttribute*"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1855">the attribute to duplicate</doc>
            <type name="Attribute" c:type="const GckAttribute*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="equal" c:identifier="gck_attribute_equal">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1950">Compare two attributes. Useful with &lt;code&gt;GHashTable&lt;/code&gt;.</doc>
        <source-position filename="gck/gck.h" line="181"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1957">%TRUE if the attributes are equal.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1952">first attribute to compare</doc>
            <type name="Attribute" c:type="gconstpointer"/>
          </instance-parameter>
          <parameter name="attr2" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1953">second attribute to compare</doc>
            <type name="Attribute" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gck_attribute_free">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1932">Free an attribute and its allocated memory. These is usually
used with attributes that are allocated by [ctor@Attribute.new]
or a similar function.</doc>
        <source-position filename="gck/gck.h" line="190"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1934">attribute to free</doc>
            <type name="Attribute" c:type="gpointer"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_boolean" c:identifier="gck_attribute_get_boolean">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1388">Get the CK_BBOOL of a PKCS#11 attribute. No conversion
is performed. It is an error to pass an attribute to this
function unless you're know it's supposed to contain a
boolean value.</doc>
        <source-position filename="gck/gck.h" line="169"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1397">The boolean value of the attribute.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1390">The attribute to retrieve value from.</doc>
            <type name="Attribute" c:type="const GckAttribute*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_data" c:identifier="gck_attribute_get_data">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1509">Get the raw value in the attribute.

This is useful from scripting languages. C callers will generally
access the #GckAttribute struct directly.

This function will %NULL if the attribute contains empty or invalid
data. The returned data must not be modified and is only valid
as long as this @attribute.</doc>
        <source-position filename="gck/gck.h" line="178"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1523">the value data 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="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1511">an attribute</doc>
            <type name="Attribute" c:type="const GckAttribute*"/>
          </instance-parameter>
          <parameter name="length"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1512">the length of the returned data</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_date" c:identifier="gck_attribute_get_date">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1461">Get the CK_DATE of a PKCS#11 attribute. No
conversion is performed. It is an error to pass an attribute
to this function unless you're know it's supposed to contain
a value of the right type.</doc>
        <source-position filename="gck/gck.h" line="175"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1463">The attribute to retrieve value from.</doc>
            <type name="Attribute" c:type="const GckAttribute*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1464">The date value to fill in with the parsed date.</doc>
            <type name="GLib.Date" c:type="GDate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_string" c:identifier="gck_attribute_get_string">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1436">Get the string value of a PKCS#11 attribute. No
conversion is performed. It is an error to pass an attribute
to this function unless you're know it's supposed to contain
a value of the right type.</doc>
        <source-position filename="gck/gck.h" line="173"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1445">a null terminated string, to be freed with
              g_free(), or %NULL if the value was invalid</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1438">The attribute to retrieve value from.</doc>
            <type name="Attribute" c:type="const GckAttribute*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ulong" c:identifier="gck_attribute_get_ulong">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1412">Get the CK_ULONG value of a PKCS#11 attribute. No
conversion is performed. It is an error to pass an attribute
to this function unless you're know it's supposed to contain
a value of the right type.</doc>
        <source-position filename="gck/gck.h" line="171"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1421">The ulong value of the attribute.</doc>
          <type name="gulong" c:type="gulong"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1414">The attribute to retrieve value from.</doc>
            <type name="Attribute" c:type="const GckAttribute*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="hash" c:identifier="gck_attribute_hash">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1982">Hash an attribute for use in &lt;code&gt;GHashTable&lt;/code&gt; keys.</doc>
        <source-position filename="gck/gck.h" line="184"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1988">the hash code</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1984">attribute to hash</doc>
            <type name="Attribute" c:type="gconstpointer"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init" c:identifier="gck_attribute_init" introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1539">Initialize a PKCS#11 attribute. This copies the value memory
into an internal buffer.

When done with the attribute you should use [method@Attribute.clear]
to free the internal memory.</doc>
        <source-position filename="gck/gck.h" line="113"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1541">an uninitialized attribute</doc>
            <type name="Attribute" c:type="GckAttribute*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1542">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1543">The raw value of the attribute.</doc>
            <array length="2" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1544">The length of the raw value.</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_boolean"
              c:identifier="gck_attribute_init_boolean"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1616">Initialize a PKCS#11 attribute to boolean. This will result
in a CK_BBOOL attribute from the PKCS#11 specs.

When done with the attribute you should use [method@Attribute.clear]
to free the internal memory.</doc>
        <source-position filename="gck/gck.h" line="124"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1618">an uninitialized attribute</doc>
            <type name="Attribute" c:type="GckAttribute*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1619">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1620">the boolean value of the attribute</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_copy" c:identifier="gck_attribute_init_copy">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1879">Initialize a PKCS#11 attribute as a copy of another attribute.
This copies the value memory as well.

When done with the copied attribute you should use
[method@Attribute.clear] to free the internal memory.</doc>
        <source-position filename="gck/gck.h" line="140"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1881">An uninitialized attribute.</doc>
            <type name="Attribute" c:type="GckAttribute*"/>
          </instance-parameter>
          <parameter name="src" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1882">An attribute to copy.</doc>
            <type name="Attribute" c:type="const GckAttribute*"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_date"
              c:identifier="gck_attribute_init_date"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1638">Initialize a PKCS#11 attribute to a date. This will result
in a CK_DATE attribute from the PKCS#11 specs.

When done with the attribute you should use [method@Attribute.clear]
to free the internal memory.</doc>
        <source-position filename="gck/gck.h" line="128"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1640">an uninitialized attribute</doc>
            <type name="Attribute" c:type="GckAttribute*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1641">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1642">the date value of the attribute</doc>
            <type name="GLib.Date" c:type="const GDate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_empty"
              c:identifier="gck_attribute_init_empty"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1595">Initialize a PKCS#11 attribute to an empty state. The attribute
type will be set, but no data will be set.

When done with the attribute you should use [method@Attribute.clear]
to free the internal memory.</doc>
        <source-position filename="gck/gck.h" line="121"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1597">an uninitialized attribute</doc>
            <type name="Attribute" c:type="GckAttribute*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1598">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_invalid"
              c:identifier="gck_attribute_init_invalid"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1573">Initialize a PKCS#11 attribute to an 'invalid' or 'not found'
state. Specifically this sets the value length to (CK_ULONG)-1
as specified in the PKCS#11 specification.

When done with the attribute you should use [method@Attribute.clear]
to free the internal memory.</doc>
        <source-position filename="gck/gck.h" line="118"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1575">an uninitialized attribute</doc>
            <type name="Attribute" c:type="GckAttribute*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1576">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_string"
              c:identifier="gck_attribute_init_string"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1686">Initialize a PKCS#11 attribute to a string. This will result
in an attribute containing the text, but not the null terminator.
The text in the attribute will be of the same encoding as you pass
to this function.

When done with the attribute you should use [method@Attribute.clear]
to free the internal memory.</doc>
        <source-position filename="gck/gck.h" line="136"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1688">an uninitialized attribute</doc>
            <type name="Attribute" c:type="GckAttribute*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1689">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1690">the null terminated string value of the attribute</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_ulong"
              c:identifier="gck_attribute_init_ulong"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1664">Initialize a PKCS#11 attribute to a unsigned long. This will result
in a CK_ULONG attribute from the PKCS#11 specs.

When done with the attribute you should use [method@Attribute.clear]
to free the internal memory.</doc>
        <source-position filename="gck/gck.h" line="132"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1666">an uninitialized attribute</doc>
            <type name="Attribute" c:type="GckAttribute*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1667">the PKCS#11 attribute type to set on the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1668">the ulong value of the attribute</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_invalid" c:identifier="gck_attribute_is_invalid">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1371">Check if the PKCS#11 attribute represents 'invalid' or 'not found'
according to the PKCS#11 spec. That is, having length
of (CK_ULONG)-1.</doc>
        <source-position filename="gck/gck.h" line="167"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1379">Whether the attribute represents invalid or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1373">The attribute to check.</doc>
            <type name="Attribute" c:type="const GckAttribute*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="Attributes"
            c:type="GckAttributes"
            opaque="1"
            glib:type-name="GckAttributes"
            glib:get-type="gck_attributes_get_type"
            c:symbol-prefix="attributes">
      <doc xml:space="preserve"
           filename="gck/gck-attributes.c"
           line="2007">A set of [struct@Attribute] structures.

These attributes contain information about a PKCS11 object. Use
[method@Object.get] or [method@Object.set] to set and retrieve attributes on
an object.</doc>
      <source-position filename="gck/gck.h" line="208"/>
      <constructor name="new" c:identifier="gck_attributes_new">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2811">Create a new empty `GckAttributes` array.

The returned set of attributes is floating, and should either be passed to
another gck library function which consumes this floating reference, or if
you wish to keep these attributes around you should ref them with
gck_attributes_ref_sink() and unref them later with gck_attributes_unref().</doc>
        <source-position filename="gck/gck.h" line="348"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2822">a floating reference to the new attributes array;
         when done with the array release it with gck_attributes_unref().</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <parameter name="reserved" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2813">Should be set to always be [const@INVALID]</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_empty"
                   c:identifier="gck_attributes_new_empty"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2042">Creates an GckAttributes array with empty attributes

Terminate the argument list with [const@INVALID].

The returned set of attributes is floating, and should either be passed to
another gck library function which consumes this floating reference, or if
you wish to keep these attributes around you should ref them with
gck_attributes_ref_sink() and unref them later with gck_attributes_unref().</doc>
        <source-position filename="gck/gck.h" line="350"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2056">a floating reference to an empty set of attributes</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <parameter name="first_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2044">the first empty attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2045">the other empty attribute types</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <method name="at" c:identifier="gck_attributes_at">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2076">Get attribute at the specified index in the attribute array.

Use [method@Attributes.count] to determine how many attributes are
in the array.</doc>
        <source-position filename="gck/gck.h" line="353"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2086">the specified attribute</doc>
          <type name="Attribute" c:type="const GckAttribute*"/>
        </return-value>
        <parameters>
          <instance-parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2078">The attributes array.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2079">The attribute index to retrieve.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="contains" c:identifier="gck_attributes_contains">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2307">Check whether the attributes contain a certain attribute.</doc>
        <source-position filename="gck/gck.h" line="383"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2314">%TRUE if the attributes contain the attribute.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2309">The attributes to check</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </instance-parameter>
          <parameter name="match" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2310">The attribute to find</doc>
            <type name="Attribute" c:type="const GckAttribute*"/>
          </parameter>
        </parameters>
      </method>
      <method name="count" c:identifier="gck_attributes_count">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2097">Get the number of attributes in this attribute array.</doc>
        <source-position filename="gck/gck.h" line="375"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2103">The number of contained attributes.</doc>
          <type name="gulong" c:type="gulong"/>
        </return-value>
        <parameters>
          <instance-parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2099">The attributes array to count.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="gck_attributes_dump">
        <doc xml:space="preserve"
             filename="gck/gck-dump.c"
             line="344">Dump the attributes using g_printerr().</doc>
        <source-position filename="gck/gck.h" line="386"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-dump.c"
                 line="346">The attributes</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="find" c:identifier="gck_attributes_find">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2112">Find an attribute with the specified type in the array.</doc>
        <source-position filename="gck/gck.h" line="356"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2119">the first attribute found with the specified type,
         or %NULL</doc>
          <type name="Attribute" c:type="const GckAttribute*"/>
        </return-value>
        <parameters>
          <instance-parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2114">The attributes array to search.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2115">The type of attribute to find.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_boolean" c:identifier="gck_attributes_find_boolean">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2131">Find an attribute with the specified type in the array.

The attribute (if found) must be of the right size to store
a boolean value (ie: CK_BBOOL). If the attribute is marked invalid
then it will be treated as not found.</doc>
        <source-position filename="gck/gck.h" line="359"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2143">Whether a value was found or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2133">The attributes array to search.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2134">The type of attribute to find.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2135">The resulting gboolean value.</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_date" c:identifier="gck_attributes_find_date">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2200">Find an attribute with the specified type in the array.

The attribute (if found) must be of the right size to store
a date value (ie: CK_DATE). If the attribute is marked invalid
then it will be treated as not found.</doc>
        <source-position filename="gck/gck.h" line="371"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2212">Whether a value was found or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2202">The attributes array to search.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2203">The type of attribute to find.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2204">The resulting GDate value.</doc>
            <type name="GLib.Date" c:type="GDate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_string" c:identifier="gck_attributes_find_string">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2177">Find an attribute with the specified type in the array.

If the attribute is marked invalid then it will be treated as not found.
The resulting string will be null-terminated, and must be freed by the caller
using g_free().</doc>
        <source-position filename="gck/gck.h" line="367"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2189">Whether a value was found or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2179">The attributes array to search.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2180">The type of attribute to find.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2181">The resulting string value.</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_ulong" c:identifier="gck_attributes_find_ulong">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2154">Find an attribute with the specified type in the array.

The attribute (if found) must be of the right size to store
a unsigned long value (ie: CK_ULONG). If the attribute is marked invalid
then it will be treated as not found.</doc>
        <source-position filename="gck/gck.h" line="363"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2166">Whether a value was found or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2156">The attributes array to search.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2157">The type of attribute to find.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2158">The resulting gulong value.</doc>
            <type name="gulong" c:type="gulong*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="gck_attributes_ref">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2223">Reference this attributes array.</doc>
        <source-position filename="gck/gck.h" line="377"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2229">the attributes</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2225">An attribute array</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_sink" c:identifier="gck_attributes_ref_sink">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2239">#GckAttributes uses a floating reference count system. [method@Builder.end]
and [ctor@Attributes.new_empty] both return floating references.

Calling this function on a `GckAttributes` with a floating
reference will convert the floating reference into a full reference.
Calling this function on a non-floating `GckAttributes` results
in an additional normal reference being added.

In other words, if the @attrs is floating, then this call "assumes
ownership" of the floating reference, converting it to a normal
reference.  If the @attrs is not floating, then this call adds a
new normal reference increasing the reference count by one.

All Gck library functions that assume ownership of floating references
are documented as such. Essentially any Gck function that performs
an operation using a #GckAttributes argument rather than operating on the
attributes themselves, will accept a floating reference.</doc>
        <source-position filename="gck/gck.h" line="379"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2261">the referenced attributes</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2241">an attribute array</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="to_string" c:identifier="gck_attributes_to_string">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2792">Print out attributes to a string in aform that's useful for debugging
or logging.

The format of the string returned may change in the future.</doc>
        <source-position filename="gck/gck.h" line="388"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="2801">a newly allocated string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2794">the attributes</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="gck_attributes_unref">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="2278">Unreference this attribute array.

When all outstanding references are gone, the array will be freed.</doc>
        <source-position filename="gck/gck.h" line="381"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="attrs"
                              transfer-ownership="full"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="2280">An attribute array</doc>
            <type name="Attributes" c:type="gpointer"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="Builder"
            c:type="GckBuilder"
            glib:type-name="GckBuilder"
            glib:get-type="gck_builder_get_type"
            c:symbol-prefix="builder">
      <doc xml:space="preserve"
           filename="gck/gck-attributes.c"
           line="157">A builder for a set of attributes. Add attributes to a builder, and then use
[method@Builder.end] to get the completed [struct@Attributes].

The fields of #GckBuilder are private and not to be accessed directly.</doc>
      <source-position filename="gck/gck.h" line="201"/>
      <field name="x" readable="0" private="1">
        <array zero-terminated="0" fixed-size="16">
          <type name="gsize" c:type="gsize"/>
        </array>
      </field>
      <constructor name="new" c:identifier="gck_builder_new">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="184">Create a new `GckBuilder` not allocated on the stack, so it can be shared
across a single scope, and referenced / unreferenced.

Normally a `GckBuilder` is created on the stack, and simply initialized.

If the %GCK_BUILDER_SECURE_MEMORY flag is specified then non-pageable memory
will be used for the various values of the attributes in the builder</doc>
        <source-position filename="gck/gck.h" line="210"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="196">a new builder, to be freed with gck_builder_unref()</doc>
          <type name="Builder" c:type="GckBuilder*"/>
        </return-value>
        <parameters>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="186">flags for the new builder</doc>
            <type name="BuilderFlags" c:type="GckBuilderFlags"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_all" c:identifier="gck_builder_add_all">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="831">Add all the @attrs attributes to the builder. The attributes are added
uncondititionally whether or not attributes with the same types already
exist in the builder.

As an optimization, the attribute memory values are automatically shared
between the attributes and the builder.</doc>
        <source-position filename="gck/gck.h" line="262"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="833">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="834">the attributes to add</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_attribute" c:identifier="gck_builder_add_attribute">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="806">Add an attribute to the builder. The attribute is added unconditionally whether
or not an attribute with the same type already exists on the builder.

The @attr attribute must have been created or owned by the Gck library.
If you call this function on an arbitrary `GckAttribute` that is allocated on
the stack or elsewhere, then this will result in undefined behavior.

As an optimization, the attribute memory value is automatically shared
between the attribute and the builder.</doc>
        <source-position filename="gck/gck.h" line="259"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="808">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="809">the attribute to add</doc>
            <type name="Attribute" c:type="const GckAttribute*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_boolean" c:identifier="gck_builder_add_boolean">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="666">Add a new attribute to the builder for the boolean @value.
Unconditionally adds a new attribute, even if one with the same @attr_type
already exists.</doc>
        <source-position filename="gck/gck.h" line="247"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="668">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="669">the new attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="670">the attribute value</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_data" c:identifier="gck_builder_add_data">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="466">Add a new attribute to the builder with an arbitrary value. Unconditionally
adds a new attribute, even if one with the same @attr_type already exists.

The memory in @value is copied by the builder.

%NULL may be specified for the @value argument, in which case an empty
attribute is created. [const@INVALID] may be specified for the length, in
which case an invalid attribute is created in the PKCS#11 style.</doc>
        <source-position filename="gck/gck.h" line="232"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="468">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="469">the new attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="470">the new attribute memory</doc>
            <array length="2" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="471">the length of the memory</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_date" c:identifier="gck_builder_add_date">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="720">Add a new attribute to the builder for the date @value.
Unconditionally adds a new attribute, even if one with the same @attr_type
already exists.</doc>
        <source-position filename="gck/gck.h" line="251"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="722">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="723">the new attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="724">the attribute value</doc>
            <type name="GLib.Date" c:type="const GDate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_empty" c:identifier="gck_builder_add_empty">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="549">Add a new attribute to the builder that is empty. Unconditionally
adds a new attribute, even if one with the same @attr_type already exists.</doc>
        <source-position filename="gck/gck.h" line="237"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="551">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="552">the new attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_except"
              c:identifier="gck_builder_add_except"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="942">Add the attributes in @attrs to the builder, with the exception of those
in the argument list. The attributes are added uncondititionally whether or
not attributes with the same types already exist in the builder.

The variable arguments must be unsigned longs.

```c
// Add all attributes in attrs except CKA_CLASS to the builder
gck_builder_add_except (builder, attrs, CKA_CLASS, GCK_INVALID);
```

As an optimization, the attribute memory values are automatically shared
between the attributes and the builder.</doc>
        <source-position filename="gck/gck.h" line="275"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="944">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="945">the attributes to add</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="except_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="946">the first type of attribute to to exclude</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="947">the remaining attribute types to exclude, ending with [const@INVALID]</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="add_exceptv"
              c:identifier="gck_builder_add_exceptv"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="988">Add the attributes in @attrs to the builder, with the exception of those
whose types are specified in @except_types. The attributes are added
uncondititionally whether or not attributes with the same types already
exist in the builder.

```c
// Add all attributes in attrs except CKA_CLASS to the builder
unsigned long except_types[] = { CKA_CLASS };
gck_builder_add_exceptv (builder, attrs, except_types, 1);
```

As an optimization, the attribute memory values are automatically shared
between the attributes and the builder.</doc>
        <source-position filename="gck/gck.h" line="280"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="990">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="991">the attributes to add</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="except_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="992">the except types</doc>
            <array length="2" zero-terminated="0" c:type="const gulong*">
              <type name="gulong" c:type="gulong"/>
            </array>
          </parameter>
          <parameter name="n_except_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="993">the number of except types</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_invalid" c:identifier="gck_builder_add_invalid">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="584">Add a new attribute to the builder that is invalid in the PKCS#11 sense.
Unconditionally adds a new attribute, even if one with the same @attr_type
already exists.</doc>
        <source-position filename="gck/gck.h" line="240"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="586">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="587">the new attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_only"
              c:identifier="gck_builder_add_only"
              shadowed-by="add_onlyv"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="856">Add the attributes specified in the argument list from @attrs to the
builder. The attributes are added uncondititionally whether or not
attributes with the same types already exist in the builder.

The variable arguments must be unsigned longs.

```c
// Add the CKA_ID and CKA_CLASS attributes from attrs to builder
gck_builder_add_only (builder, attrs, CKA_ID, CKA_CLASS, GCK_INVALID);
```

As an optimization, the attribute memory values are automatically shared
between the attributes and the builder.</doc>
        <source-position filename="gck/gck.h" line="265"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="858">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="859">the attributes to add</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="only_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="860">the first type of attribute to add</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="861">the remaining attribute types to add, ending with [const@INVALID]</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="add_onlyv"
              c:identifier="gck_builder_add_onlyv"
              shadows="add_only">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="902">Add the attributes with the types in @only_types from @attrs to the
builder. The attributes are added uncondititionally whether or not
attributes with the same types already exist in the builder.

```c
// Add the CKA_ID and CKA_CLASS attributes from attrs to builder
gulong only[] = { CKA_ID, CKA_CLASS };
gck_builder_add_onlyv (builder, attrs, only, 2);
```

As an optimization, the attribute memory values are automatically shared
between the attributes and the builder.</doc>
        <source-position filename="gck/gck.h" line="270"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="904">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="905">the attributes to add</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="only_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="906">the types of attributes to add</doc>
            <array length="2" zero-terminated="0" c:type="const gulong*">
              <type name="gulong" c:type="gulong"/>
            </array>
          </parameter>
          <parameter name="n_only_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="907">the number of attributes</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_string" c:identifier="gck_builder_add_string">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="768">Add a new attribute to the builder for the string @value or %NULL.
Unconditionally adds a new attribute, even if one with the same @attr_type
already exists.</doc>
        <source-position filename="gck/gck.h" line="255"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="770">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="771">the new attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="772">the attribute value</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_ulong" c:identifier="gck_builder_add_ulong">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="626">Add a new attribute to the builder for the unsigned long @value.
Unconditionally adds a new attribute, even if one with the same @attr_type
already exists.</doc>
        <source-position filename="gck/gck.h" line="243"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="628">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="629">the new attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="630">the attribute value</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear" c:identifier="gck_builder_clear">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1340">Clear the builder and release all allocated memory. The builder may be used
again to build another set of attributes after this function call.

If memory is shared between this builder and other attributes, then that
memory is only freed when both of them are cleared or unreferenced.</doc>
        <source-position filename="gck/gck.h" line="340"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1342">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="gck_builder_copy">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="387">Make a copy of the builder and its state. The new builder is allocated
with [ctor@Builder.new] and should be freed with gck_builder_unref().

Attribute value memory is automatically shared between the two builders,
and is only freed when both are gone.</doc>
        <source-position filename="gck/gck.h" line="338"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="397">the builder copy, which should be freed with
         gck_builder_unref().</doc>
          <type name="Builder" c:type="GckBuilder*"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="389">the builder to copy</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="end" c:identifier="gck_builder_end">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1307">Complete the #GckBuilder, and return the attributes contained in the builder.
The #GckBuilder will be cleared after this function call, and it is no
longer necessary to use [method@Builder.clear] on it, although it is also
permitted. The builder may be used again to build another set of attributes
after this function call.

The returned set of attributes is floating, and should either be passed to
another gck library function which consumes this floating reference, or if
you wish to keep these attributes around you should ref them with
gck_attributes_ref_sink() and unref them later with gck_attributes_unref().</doc>
        <source-position filename="gck/gck.h" line="336"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1322">a floating reference to the attributes created
         in the builder</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1309">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="find" c:identifier="gck_builder_find">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1056">Find an attribute in the builder. Both valid and invalid attributes (in
the PKCS#11 sense) are returned. If multiple attributes exist for the given
attribute type, then the first one is returned.

The returned [struct@Attribute] is owned by the builder and may not be
modified in any way. It is only valid until another attribute is added to or
set on the builder, or until the builder is cleared or unreferenced.</doc>
        <source-position filename="gck/gck.h" line="315"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1069">the attribute or %NULL if not found</doc>
          <type name="Attribute" c:type="const GckAttribute*"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1058">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1059">the type of attribute to find</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_boolean" c:identifier="gck_builder_find_boolean">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1100">Find a boolean attribute in the builder that has the type @attr_type, is
of the correct boolean size, and is not invalid in the PKCS#11 sense.
If multiple attributes exist for the given attribute type, then the first\
one is returned.</doc>
        <source-position filename="gck/gck.h" line="318"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1111">whether a valid boolean attribute was found</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1102">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1103">the type of attribute to find</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1104">the location to place the found value</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_date" c:identifier="gck_builder_find_date">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1238">Find a date attribute in the builder that has the type @attr_type, is of
the correct date size, and is not invalid in the PKCS#11 sense.
If multiple attributes exist for the given attribute type, then the first
one is returned.</doc>
        <source-position filename="gck/gck.h" line="330"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1249">whether a valid date attribute was found</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1240">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1241">the type of attribute to find</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1242">the location to place the found value</doc>
            <type name="GLib.Date" c:type="GDate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_string" c:identifier="gck_builder_find_string">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1193">Find a string attribute in the builder that has the type @attr_type, has a
non %NULL value pointer, and is not invalid in the PKCS#11 sense.
If multiple attributes exist for the given attribute type, then the first
one is returned.</doc>
        <source-position filename="gck/gck.h" line="326"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1204">whether a valid string attribute was found</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1195">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1196">the type of attribute to find</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1197">the location to place the found value</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_ulong" c:identifier="gck_builder_find_ulong">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1144">Find a unsigned long attribute in the builder that has the type @attr_type,
is of the correct unsigned long size, and is not invalid in the PKCS#11 sense.
If multiple attributes exist for the given attribute type, then the first
one is returned.</doc>
        <source-position filename="gck/gck.h" line="322"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1155">whether a valid unsigned long attribute was found</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1146">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1147">the type of attribute to find</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1148">the location to place the found value</doc>
            <type name="gulong" c:type="gulong*"/>
          </parameter>
        </parameters>
      </method>
      <method name="init" c:identifier="gck_builder_init">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="285">Initialize a stack allocated builder, with the default flags.

This is equivalent to initializing a builder variable with the
%GCK_BUILDER_INIT constant, or setting it to zeroed memory.

```c
// Equivalent ways of initializing a GckBuilder
GckBuilder builder = GCK_BUILDER_INIT;
GckBuilder builder2;
GckBuilder builder3;

gck_builder_init (&amp;builder2);

memset (&amp;builder3, 0, sizeof (builder3));
```</doc>
        <source-position filename="gck/gck.h" line="218"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="287">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init_full" c:identifier="gck_builder_init_full">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="263">Initialize a stack allocated builder, with the appropriate flags.

If the %GCK_BUILDER_SECURE_MEMORY flag is specified then non-pageable memory
will be used for the various values of the attributes in the builder</doc>
        <source-position filename="gck/gck.h" line="220"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="265">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="266">the flags for the new builder</doc>
            <type name="BuilderFlags" c:type="GckBuilderFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="gck_builder_ref">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="210">Add a reference to a builder that was created with [ctor@Builder.new]. The
builder must later be unreferenced again with gck_builder_unref().

It is an error to use this function on builders that were allocated on the
stack.</doc>
        <source-position filename="gck/gck.h" line="214"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="220">the builder</doc>
          <type name="Builder" c:type="GckBuilder*"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="212">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_all" c:identifier="gck_builder_set_all">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1031">Set all the @attrs attributes to the builder. If any attributes with the
same types are already present in the builder, then those attributes are
changed to the new values.

As an optimization, the attribute memory values are automatically shared
between the attributes and the builder.</doc>
        <source-position filename="gck/gck.h" line="312"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1033">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1034">the attributes to set</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_boolean" c:identifier="gck_builder_set_boolean">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="686">Set an attribute on the builder for the boolean @value.
If an attribute with @attr_type already exists in the builder then it is
changed to the new value, otherwise an attribute is added.</doc>
        <source-position filename="gck/gck.h" line="300"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="688">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="689">the new attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="690">the attribute value</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_data" c:identifier="gck_builder_set_data">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="507">Set a new attribute to the builder with an arbitrary value. If an attribute
with @attr_type already exists in the builder then it is changed to the new
value, otherwise an attribute is added.

The memory in @value is copied by the builder.

%NULL may be specified for the @value argument, in which case an empty
attribute is created. [const@INVALID] may be specified for the length, in
which case an invalid attribute is created in the PKCS#11 style.</doc>
        <source-position filename="gck/gck.h" line="285"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="509">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="510">the attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="511">the new attribute memory</doc>
            <array length="2" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="512">the length of the memory</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_date" c:identifier="gck_builder_set_date">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="744">Set an attribute on the builder for the date @value.
If an attribute with @attr_type already exists in the builder then it is
changed to the new value, otherwise an attribute is added.</doc>
        <source-position filename="gck/gck.h" line="304"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="746">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="747">the new attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="748">the attribute value</doc>
            <type name="GLib.Date" c:type="const GDate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_empty" c:identifier="gck_builder_set_empty">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="566">Set an attribute on the builder that is empty. If an attribute
with @attr_type already exists in the builder then it is changed to the new
value, otherwise an attribute is added.</doc>
        <source-position filename="gck/gck.h" line="290"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="568">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="569">the attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_invalid" c:identifier="gck_builder_set_invalid">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="605">Set an attribute on the builder that is invalid in the PKCS#11 sense.
If an attribute with @attr_type already exists in the builder then it is
changed to the new value, otherwise an attribute is added.</doc>
        <source-position filename="gck/gck.h" line="293"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="607">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="608">the attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_string" c:identifier="gck_builder_set_string">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="787">Set an attribute on the builder for the string @value or %NULL.
If an attribute with @attr_type already exists in the builder then it is
changed to the new value, otherwise an attribute is added.</doc>
        <source-position filename="gck/gck.h" line="308"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="789">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="790">the new attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="791">the attribute value</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_ulong" c:identifier="gck_builder_set_ulong">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="646">Set an attribute on the builder for the unsigned long @value.
If an attribute with @attr_type already exists in the builder then it is
changed to the new value, otherwise an attribute is added.</doc>
        <source-position filename="gck/gck.h" line="296"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="648">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="649">the new attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="650">the attribute value</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </method>
      <method name="steal" c:identifier="gck_builder_steal">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="1268">Take the attributes that have been built in the #GckBuilder. The builder
will no longer contain any attributes after this function call.

The returned set of attributes is a full reference, not floating.</doc>
        <source-position filename="gck/gck.h" line="334"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="1277">the stolen attributes, which should be freed with
         gck_attributes_unref()</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="1270">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="take_data" c:identifier="gck_builder_take_data">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="417">Add a new attribute to the builder with an arbitrary value. Unconditionally
adds a new attribute, even if one with the same @attr_type already exists.

Ownership of the @value memory is taken by the builder, may be reallocated,
and is eventually freed with g_free(). The memory must have been allocated
using the standard GLib memory allocation routines.

%NULL may be specified for the @value argument, in which case an empty
attribute is created. [const@INVALID] may be specified for the length, in
which case an invalid attribute is created in the PKCS#11 style.</doc>
        <source-position filename="gck/gck.h" line="227"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="builder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="419">the builder</doc>
            <type name="Builder" c:type="GckBuilder*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="420">the new attribute type</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="421">the new
        attribute memory</doc>
            <array length="2" zero-terminated="0" c:type="guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="423">the length of the memory</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <function name="unref" c:identifier="gck_builder_unref">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="239">Unreferences a builder. If this was the last reference then the builder
is freed.

It is an error to use this function on builders that were allocated on the
stack.</doc>
        <source-position filename="gck/gck.h" line="216"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="builder"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-attributes.c"
                 line="241">the builder</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="BuilderFlags"
                 glib:type-name="GckBuilderFlags"
                 glib:get-type="gck_builder_flags_get_type"
                 c:type="GckBuilderFlags">
      <doc xml:space="preserve"
           filename="gck/gck-attributes.c"
           line="166">Flags to be used with a [method@Builder.init_full] and [ctor@Builder.new].</doc>
      <member name="none"
              value="0"
              c:identifier="GCK_BUILDER_NONE"
              glib:nick="none"
              glib:name="GCK_BUILDER_NONE">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="168">no special flags</doc>
      </member>
      <member name="secure_memory"
              value="1"
              c:identifier="GCK_BUILDER_SECURE_MEMORY"
              glib:nick="secure-memory"
              glib:name="GCK_BUILDER_SECURE_MEMORY">
        <doc xml:space="preserve"
             filename="gck/gck-attributes.c"
             line="169">use non-pageable memory for the values of the attributes</doc>
      </member>
    </enumeration>
    <function-macro name="CHECK_VERSION"
                    c:identifier="GCK_CHECK_VERSION"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="37">Checks the version of the Gck library that is being compiled
against.

```
#if !GCK_CHECK_VERSION (3, 0, 0)
#warning Old Gck version, disabling functionality
#endif
```</doc>
      <source-position filename="gck/gck-version.h" line="38"/>
      <parameters>
        <parameter name="major">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="39">the major version to check for</doc>
        </parameter>
        <parameter name="minor">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="40">the minor version to check for</doc>
        </parameter>
        <parameter name="micro">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="41">the micro version to check for</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ENUMERATOR"
                    c:identifier="GCK_ENUMERATOR"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="541"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ENUMERATOR_CLASS"
                    c:identifier="GCK_ENUMERATOR_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="542"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ENUMERATOR_GET_CLASS"
                    c:identifier="GCK_ENUMERATOR_GET_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="545"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Enumerator"
           c:symbol-prefix="enumerator"
           c:type="GckEnumerator"
           parent="GObject.Object"
           glib:type-name="GckEnumerator"
           glib:get-type="gck_enumerator_get_type"
           glib:type-struct="EnumeratorClass">
      <doc xml:space="preserve"
           filename="gck/gck-enumerator.c"
           line="30">Can be used to enumerate through PKCS#11 objects. It will automatically
create sessions as necessary.

Use [func@modules_enumerate_objects] or [func@modules_enumerate_uri] to
create an enumerator. To get the objects, use [method@Enumerator.next] or
[method@Enumerator.next_async] functions.</doc>
      <source-position filename="gck/gck.h" line="563"/>
      <method name="get_chained"
              c:identifier="gck_enumerator_get_chained"
              glib:get-property="chained">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="909">Get the enumerator that will be run after all objects from this one
are seen.</doc>
        <source-position filename="gck/gck.h" line="582"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gck/gck-enumerator.c"
               line="916">the chained enumerator or %NULL</doc>
          <type name="Enumerator" c:type="GckEnumerator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="911">the enumerator</doc>
            <type name="Enumerator" c:type="GckEnumerator*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_interaction"
              c:identifier="gck_enumerator_get_interaction"
              glib:get-property="interaction">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="967">Get the interaction used when a pin is needed</doc>
        <source-position filename="gck/gck.h" line="567"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gck/gck-enumerator.c"
               line="973">the interaction or %NULL</doc>
          <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="969">the enumerator</doc>
            <type name="Enumerator" c:type="GckEnumerator*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_object_type"
              c:identifier="gck_enumerator_get_object_type"
              glib:get-property="object-type">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="814">Get the type of objects created by this enumerator. The type will always
either be #GckObject or derived from it.</doc>
        <source-position filename="gck/gck.h" line="572"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-enumerator.c"
               line="821">the type of objects created</doc>
          <type name="GType" c:type="GType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="816">an enumerator</doc>
            <type name="Enumerator" c:type="GckEnumerator*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="next" c:identifier="gck_enumerator_next" throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="1168">Get the next object in the enumerator, or %NULL if there are no more objects.

%NULL is also returned if the function fails. Use the @error to determine
whether a failure occurred or not.</doc>
        <source-position filename="gck/gck.h" line="587"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gck/gck-enumerator.c"
               line="1179">The next object, which must be released
using g_object_unref, or %NULL.</doc>
          <type name="Object" c:type="GckObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="1170">The enumerator</doc>
            <type name="Enumerator" c:type="GckEnumerator*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="1171">A #GCancellable or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="next_async"
              c:identifier="gck_enumerator_next_async"
              glib:finish-func="next_finish">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="1272">Get the next set of objects from the enumerator. This operation completes
asynchronously.The maximum number of objects can be specified with
@max_objects. If -1 is specified, then all the remaining objects will be
enumerated.</doc>
        <source-position filename="gck/gck.h" line="596"/>
        <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="gck/gck-enumerator.c"
                 line="1274">An enumerator</doc>
            <type name="Enumerator" c:type="GckEnumerator*"/>
          </instance-parameter>
          <parameter name="max_objects" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="1275">The maximum number of objects to get</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="1276">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="gck/gck-enumerator.c"
                 line="1277">Called when the 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="gck/gck-enumerator.c"
                 line="1278">Data to pass to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="next_finish"
              c:identifier="gck_enumerator_next_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="1312">Complete an operation to enumerate next objects.

%NULL is also returned if the function fails. Use the @error to determine
whether a failure occurred or not.</doc>
        <source-position filename="gck/gck.h" line="602"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-enumerator.c"
               line="1323">The list of objects, which
should be freed with gck_list_unref_free()</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Object"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="1314">An enumerator</doc>
            <type name="Enumerator" c:type="GckEnumerator*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="1315">The result passed to the callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="next_n" c:identifier="gck_enumerator_next_n" throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="1214">Get the next set of objects from the enumerator. The maximum number of
objects can be specified with @max_objects. If -1 is specified, then all
the remaining objects will be returned.

%NULL is also returned if the function fails. Use the @error to determine
whether a failure occurred or not.</doc>
        <source-position filename="gck/gck.h" line="591"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-enumerator.c"
               line="1228">A list of objects, which
should be freed using gck_list_unref_free().</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Object"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="1216">An enumerator</doc>
            <type name="Enumerator" c:type="GckEnumerator*"/>
          </instance-parameter>
          <parameter name="max_objects" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="1217">The maximum amount of objects to enumerate</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="1218">A #GCancellable or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_chained"
              c:identifier="gck_enumerator_set_chained"
              glib:set-property="chained">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="935">Set a chained enumerator that will be run after all objects from this one
are seen.</doc>
        <source-position filename="gck/gck.h" line="584"/>
        <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="gck/gck-enumerator.c"
                 line="937">the enumerator</doc>
            <type name="Enumerator" c:type="GckEnumerator*"/>
          </instance-parameter>
          <parameter name="chained"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="938">the chained enumerator or %NULL</doc>
            <type name="Enumerator" c:type="GckEnumerator*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_interaction"
              c:identifier="gck_enumerator_set_interaction"
              glib:set-property="interaction">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="992">Set the interaction used when a pin is needed</doc>
        <source-position filename="gck/gck.h" line="569"/>
        <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="gck/gck-enumerator.c"
                 line="994">the enumerator</doc>
            <type name="Enumerator" c:type="GckEnumerator*"/>
          </instance-parameter>
          <parameter name="interaction"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="995">the interaction or %NULL</doc>
            <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_object_type"
              c:identifier="gck_enumerator_set_object_type"
              shadowed-by="set_object_type_full"
              glib:set-property="object-type"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="839">Set the type of objects to be created by this enumerator. The type must
always be either #GckObject or derived from it.

If the #GckObjectCache interface is implemented on the derived class
and the default_types class field is set, then the enumerator will retrieve
attributes for each object.</doc>
        <source-position filename="gck/gck.h" line="574"/>
        <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="gck/gck-enumerator.c"
                 line="841">an enumerator</doc>
            <type name="Enumerator" c:type="GckEnumerator*"/>
          </instance-parameter>
          <parameter name="object_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="842">the type of objects to create</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_object_type_full"
              c:identifier="gck_enumerator_set_object_type_full"
              shadows="set_object_type">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="858">Set the type of objects to be created by this enumerator. The type must
always be either #GckObject or derived from it.

If @attr_types and @attr_count are non-NULL and non-zero respectively,
then the #GckObjectCache interface is expected to be implemented on the
derived class, then the enumerator will retrieve attributes for each object.</doc>
        <source-position filename="gck/gck.h" line="577"/>
        <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="gck/gck-enumerator.c"
                 line="860">an enumerator</doc>
            <type name="Enumerator" c:type="GckEnumerator*"/>
          </instance-parameter>
          <parameter name="object_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="861">the type of objects to create</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="attr_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="862">types of attributes to retrieve for objects</doc>
            <array length="2" zero-terminated="0" c:type="const gulong*">
              <type name="gulong" c:type="gulong"/>
            </array>
          </parameter>
          <parameter name="attr_count" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-enumerator.c"
                 line="863">the number of attributes to retrieve</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <property name="chained"
                writable="1"
                transfer-ownership="none"
                setter="set_chained"
                getter="get_chained">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="675">Chained enumerator, which will be enumerated when this enumerator
has enumerated all its objects.</doc>
        <type name="Enumerator"/>
      </property>
      <property name="interaction"
                writable="1"
                transfer-ownership="none"
                setter="set_interaction"
                getter="get_interaction">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="652">Interaction object used to ask the user for pins when opening
sessions. Used if the session_options of the enumerator have
%GCK_SESSION_LOGIN_USER</doc>
        <type name="Gio.TlsInteraction"/>
      </property>
      <property name="object-type"
                introspectable="0"
                writable="1"
                transfer-ownership="none"
                setter="set_object_type"
                getter="get_object_type">
        <doc xml:space="preserve"
             filename="gck/gck-enumerator.c"
             line="664">The type of objects that are created by the enumerator. Must be
GckObject or derived from it.</doc>
        <type name="GType" c:type="GType"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="EnumeratorPrivate" c:type="GckEnumeratorPrivate*"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="2">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="EnumeratorClass"
            c:type="GckEnumeratorClass"
            glib:is-gtype-struct-for="Enumerator">
      <source-position filename="gck/gck.h" line="563"/>
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="2">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="EnumeratorPrivate"
            c:type="GckEnumeratorPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gck/gck.h" line="548"/>
    </record>
    <enumeration name="Error"
                 glib:type-name="GckError"
                 glib:get-type="gck_error_get_type"
                 c:type="GckError">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="87">Various error codes. All the `CKR_XXX` error codes from PKCS#11 are also
relevant error codes.

Note that errors are returned as [struct@GLib.Error] structures. The `code`
member of the error then contains the raw PKCS#11 `CK_RV` result value.</doc>
      <member name="problem"
              value="-951891199"
              c:identifier="GCK_ERROR_MODULE_PROBLEM"
              glib:nick="problem"
              glib:name="GCK_ERROR_MODULE_PROBLEM">
        <doc xml:space="preserve"
             filename="gck/gck-misc.c"
             line="89">a result code that signifies there was a problem
                           loading a PKCS#11 module, usually a shared library</doc>
      </member>
      <function name="get_quark" c:identifier="gck_error_get_quark">
        <source-position filename="gck/gck.h" line="59"/>
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <constant name="INVALID" value="-1" c:type="GCK_INVALID">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="74">Used as a terminator at the end of variable argument lists.</doc>
      <source-position filename="gck/gck.h" line="103"/>
      <type name="gulong" c:type="gulong"/>
    </constant>
    <function-macro name="IS_ENUMERATOR"
                    c:identifier="GCK_IS_ENUMERATOR"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="543"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ENUMERATOR_CLASS"
                    c:identifier="GCK_IS_ENUMERATOR_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="544"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_MODULE"
                    c:identifier="GCK_IS_MODULE"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="434"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_MODULE_CLASS"
                    c:identifier="GCK_IS_MODULE_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="435"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_OBJECT"
                    c:identifier="GCK_IS_OBJECT"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="1275"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_OBJECT_CACHE"
                    c:identifier="GCK_IS_OBJECT_CACHE"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="1432"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_OBJECT_CLASS"
                    c:identifier="GCK_IS_OBJECT_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="1276"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PASSWORD"
                    c:identifier="GCK_IS_PASSWORD"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="1503"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PASSWORD_CLASS"
                    c:identifier="GCK_IS_PASSWORD_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="1504"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SESSION"
                    c:identifier="GCK_IS_SESSION"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="816"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SESSION_CLASS"
                    c:identifier="GCK_IS_SESSION_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="817"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SLOT"
                    c:identifier="GCK_IS_SLOT"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="697"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SLOT_CLASS"
                    c:identifier="GCK_IS_SLOT_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="698"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="MAJOR_VERSION" value="1" c:type="GCK_MAJOR_VERSION">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="56">The major version number of the Gck library.</doc>
      <source-position filename="gck/gck-version.h" line="31"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MICRO_VERSION" value="0" c:type="GCK_MICRO_VERSION">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="68">The micro version number of the Gck library.</doc>
      <source-position filename="gck/gck-version.h" line="33"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MINOR_VERSION" value="0" c:type="GCK_MINOR_VERSION">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="62">The minor version number of the Gck library.</doc>
      <source-position filename="gck/gck-version.h" line="32"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <function-macro name="MODULE" c:identifier="GCK_MODULE" introspectable="0">
      <source-position filename="gck/gck.h" line="432"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="MODULE_CLASS"
                    c:identifier="GCK_MODULE_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="433"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="MODULE_GET_CLASS"
                    c:identifier="GCK_MODULE_GET_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="436"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <record name="Mechanism" c:type="GckMechanism">
      <doc xml:space="preserve"
           filename="gck/gck-session.c"
           line="52">Represents a mechanism used with crypto operations.</doc>
      <source-position filename="gck/gck.h" line="93"/>
      <field name="type" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="54">The mechanism type</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
      <field name="parameter" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="55">Mechanism specific data.</doc>
        <type name="gpointer" c:type="gconstpointer"/>
      </field>
      <field name="n_parameter" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="56">Length of mechanism specific data.</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
    </record>
    <record name="MechanismInfo"
            c:type="GckMechanismInfo"
            glib:type-name="GckMechanismInfo"
            glib:get-type="gck_mechanism_info_get_type"
            c:symbol-prefix="mechanism_info">
      <doc xml:space="preserve"
           filename="gck/gck-slot.c"
           line="290">Represents information about a PKCS11 mechanism.

This is analogous to a CK_MECHANISM_INFO structure.

When you're done with this structure it should be released with
gck_mechanism_info_free().</doc>
      <source-position filename="gck/gck.h" line="675"/>
      <field name="min_key_size" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="292">The minimum key size that can be used with this mechanism.</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
      <field name="max_key_size" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="293">The maximum key size that can be used with this mechanism.</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
      <field name="flags" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="294">Various PKCS11 flags that apply to this mechanism.</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
      <method name="copy" c:identifier="gck_mechanism_info_copy">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="307">Make a copy of the mechanism info.</doc>
        <source-position filename="gck/gck.h" line="681"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="313">a newly allocated copy mechanism info</doc>
          <type name="MechanismInfo" c:type="GckMechanismInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mech_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="309">a mechanism info</doc>
            <type name="MechanismInfo" c:type="GckMechanismInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gck_mechanism_info_free">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="321">Free the GckMechanismInfo and associated resources.</doc>
        <source-position filename="gck/gck.h" line="683"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mech_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="323">The mechanism info to free, or %NULL.</doc>
            <type name="MechanismInfo" c:type="GckMechanismInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="Module"
           c:symbol-prefix="module"
           c:type="GckModule"
           parent="GObject.Object"
           glib:type-name="GckModule"
           glib:get-type="gck_module_get_type"
           glib:type-struct="ModuleClass">
      <doc xml:space="preserve"
           filename="gck/gck-module.c"
           line="37">Holds a loaded PKCS#11 module. A PKCS#11 module is a shared library.

You can load and initialize a PKCS#11 module with the
[func@Module.initialize] call. If you already have a loaded and
initialized module that you'd like to use with the various Gck functions,
then you can use [ctor@Module.new].</doc>
      <source-position filename="gck/gck.h" line="458"/>
      <constructor name="new" c:identifier="gck_module_new" introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="458">Create a [class@Module] representing a PKCS#11 module. It is assumed that
this the module is already initialized. In addition it will not be
finalized when complete.</doc>
        <source-position filename="gck/gck.h" line="462"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-module.c"
               line="466">The new PKCS#11 module.</doc>
          <type name="Module" c:type="GckModule*"/>
        </return-value>
        <parameters>
          <parameter name="funcs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="460">Initialized PKCS#11 function list pointer</doc>
            <type c:type="CK_FUNCTION_LIST_PTR"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="initialize"
                c:identifier="gck_module_initialize"
                throws="1"
                glib:async-func="initialize_async">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="359">Load and initialize a PKCS#11 module represented by a GckModule object.</doc>
        <source-position filename="gck/gck.h" line="464"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-module.c"
               line="367">The loaded PKCS#11 module or %NULL if failed.</doc>
          <type name="Module" c:type="GckModule*"/>
        </return-value>
        <parameters>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="361">The file system path to the PKCS#11 module to load.</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="gck/gck-module.c"
                 line="362">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </function>
      <function name="initialize_async"
                c:identifier="gck_module_initialize_async"
                glib:finish-func="initialize_finish"
                glib:sync-func="initialize">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="396">Asynchronously load and initialize a PKCS#11 module represented by a
[class@Module] object.</doc>
        <source-position filename="gck/gck.h" line="468"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="398">the file system path to the PKCS#11 module to load</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="gck/gck-module.c"
                 line="399">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="gck/gck-module.c"
                 line="400">a 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="gck/gck-module.c"
                 line="401">data to pass to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="initialize_finish"
                c:identifier="gck_module_initialize_finish"
                throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="425">Finishes the asynchronous initialize operation.</doc>
        <source-position filename="gck/gck.h" line="473"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gck/gck-module.c"
               line="432">The initialized module, or %NULL</doc>
          <type name="Module" c:type="GckModule*"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="427">the asynchronous result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="authenticate_object">
        <source-position filename="gck/gck.h" line="454"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Module" c:type="GckModule*"/>
          </instance-parameter>
          <parameter name="object" transfer-ownership="none">
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="label" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="password" transfer-ownership="none">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="authenticate_slot">
        <source-position filename="gck/gck.h" line="452"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Module" c:type="GckModule*"/>
          </instance-parameter>
          <parameter name="slot" transfer-ownership="none">
            <type name="Slot" c:type="GckSlot*"/>
          </parameter>
          <parameter name="label" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="password" transfer-ownership="none">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="equal" c:identifier="gck_module_equal">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="483">Checks equality of two modules. Two GckModule objects can point to the same
underlying PKCS#11 module.</doc>
        <source-position filename="gck/gck.h" line="476"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-module.c"
               line="491">%TRUE if module1 and module2 are equal.
              %FALSE if either is not a GckModule.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="module1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="485">a pointer to the first #GckModule</doc>
            <type name="Module" c:type="gconstpointer"/>
          </instance-parameter>
          <parameter name="module2" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="486">a pointer to the second #GckModule</doc>
            <type name="Module" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_functions"
              c:identifier="gck_module_get_functions"
              glib:get-property="functions"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="661">Get the PKCS#11 function list for the module.</doc>
        <source-position filename="gck/gck.h" line="486"/>
        <return-value>
          <doc xml:space="preserve"
               filename="gck/gck-module.c"
               line="667">The function list, do not modify this structure.</doc>
          <type c:type="CK_FUNCTION_LIST_PTR"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="663">The module for which to get the function list.</doc>
            <type name="Module" c:type="GckModule*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_info" c:identifier="gck_module_get_info">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="569">Get the info about a PKCS#11 module.</doc>
        <source-position filename="gck/gck.h" line="488"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-module.c"
               line="575">the module info; release this with gck_module_info_free()</doc>
          <type name="ModuleInfo" c:type="GckModuleInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="571">The module to get info for.</doc>
            <type name="Module" c:type="GckModule*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_path"
              c:identifier="gck_module_get_path"
              glib:get-property="path">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="645">Get the file path of this module. This may not be an absolute path, and
usually reflects the path passed to [func@Module.initialize].</doc>
        <source-position filename="gck/gck.h" line="484"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-module.c"
               line="652">The path, do not modify or free this value.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="647">The module for which to get the path.</doc>
            <type name="Module" c:type="GckModule*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_slots" c:identifier="gck_module_get_slots">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="596">Get the GckSlot objects for a given module.</doc>
        <source-position filename="gck/gck.h" line="490"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-module.c"
               line="603">The possibly empty
              list of slots. Release this with gck_list_unref_free().</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Slot"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="598">The module for which to get the slots.</doc>
            <type name="Module" c:type="GckModule*"/>
          </instance-parameter>
          <parameter name="token_present" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="599">Whether to limit only to slots with a token present.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="hash" c:identifier="gck_module_hash">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="510">Create a hash value for the GckModule.

This function is intended for easily hashing a [class@Module] to add to
a [struct@GLib.HashTable] or similar data structure.</doc>
        <source-position filename="gck/gck.h" line="479"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-module.c"
               line="519">An integer that can be used as a hash value, or 0 if invalid.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="module" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="512">a pointer to a #GckModule</doc>
            <type name="Module" c:type="gconstpointer"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="match" c:identifier="gck_module_match">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="676">Check whether the PKCS#11 URI matches the module</doc>
        <source-position filename="gck/gck.h" line="481"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-module.c"
               line="683">whether the URI matches or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="678">the module to match</doc>
            <type name="Module" c:type="GckModule*"/>
          </instance-parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="679">the uri to match against the module</doc>
            <type name="UriData" c:type="GckUriData*"/>
          </parameter>
        </parameters>
      </method>
      <property name="functions"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_functions">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="224">The raw PKCS&amp;num;11 function list for the module.

This points to a CK_FUNCTION_LIST structure.</doc>
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="path"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_path"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="211">The PKCS&amp;num;11 module file path.

This may be set to NULL if this object was created from an already
initialized module via the gck_module_new() function.</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="ModulePrivate" c:type="GckModulePrivate*"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <glib:signal name="authenticate-object" when="last" deprecated="1">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="251">Use gck_session_set_interaction() instead of connecting to this signal.</doc>
        <doc-deprecated xml:space="preserve">Since 3.4</doc-deprecated>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="254">The object to be authenticated.</doc>
            <type name="Object"/>
          </parameter>
          <parameter name="label" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="255">A displayable label which describes the object.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="password"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="256">A gchar** where a password should be returned.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="authenticate-slot" when="last" deprecated="1">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="235">Use gck_session_set_interaction() instead of connecting to this signal.</doc>
        <doc-deprecated xml:space="preserve">Since 3.4</doc-deprecated>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="slot" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="238">The slot to be authenticated.</doc>
            <type name="Slot"/>
          </parameter>
          <parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="239">A displayable label which describes the object.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="password"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="240">A gchar** where a password should be returned.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ModuleClass"
            c:type="GckModuleClass"
            glib:is-gtype-struct-for="Module">
      <source-position filename="gck/gck.h" line="458"/>
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="authenticate_slot">
        <callback name="authenticate_slot">
          <source-position filename="gck/gck.h" line="452"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Module" c:type="GckModule*"/>
            </parameter>
            <parameter name="slot" transfer-ownership="none">
              <type name="Slot" c:type="GckSlot*"/>
            </parameter>
            <parameter name="label" transfer-ownership="none">
              <type name="utf8" c:type="gchar*"/>
            </parameter>
            <parameter name="password" transfer-ownership="none">
              <type name="utf8" c:type="gchar**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="authenticate_object">
        <callback name="authenticate_object">
          <source-position filename="gck/gck.h" line="454"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Module" c:type="GckModule*"/>
            </parameter>
            <parameter name="object" transfer-ownership="none">
              <type name="Object" c:type="GckObject*"/>
            </parameter>
            <parameter name="label" transfer-ownership="none">
              <type name="utf8" c:type="gchar*"/>
            </parameter>
            <parameter name="password" transfer-ownership="none">
              <type name="utf8" c:type="gchar**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="ModuleInfo"
            c:type="GckModuleInfo"
            glib:type-name="GckModuleInfo"
            glib:get-type="gck_module_info_get_type"
            c:symbol-prefix="module_info">
      <doc xml:space="preserve"
           filename="gck/gck-module.c"
           line="48">Holds information about the PKCS#11 module.

This structure corresponds to `CK_MODULE_INFO` in the PKCS#11 standard. The
strings are %NULL terminated for easier use.

Use gck_module_info_free() to release this structure when done with it.</doc>
      <source-position filename="gck/gck.h" line="419"/>
      <field name="pkcs11_version_major" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="50">The major version of the module.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="pkcs11_version_minor" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="51">The minor version of the module.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="manufacturer_id" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="52">The module manufacturer.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="flags" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="53">The module PKCS&amp;num;11 flags.</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
      <field name="library_description" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="54">The module description.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="library_version_major" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="55">The major version of the library.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="library_version_minor" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="56">The minor version of the library.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <method name="copy" c:identifier="gck_module_info_copy">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="271">Make a copy of the module info.</doc>
        <source-position filename="gck/gck.h" line="425"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-module.c"
               line="277">a newly allocated copy module info</doc>
          <type name="ModuleInfo" c:type="GckModuleInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="module_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="273">a module info</doc>
            <type name="ModuleInfo" c:type="GckModuleInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gck_module_info_free">
        <doc xml:space="preserve"
             filename="gck/gck-module.c"
             line="292">Free a GckModuleInfo structure.</doc>
        <source-position filename="gck/gck.h" line="427"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="module_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-module.c"
                 line="294">The module info to free, or %NULL.</doc>
            <type name="ModuleInfo" c:type="GckModuleInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="ModulePrivate"
            c:type="GckModulePrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gck/gck.h" line="439"/>
    </record>
    <function-macro name="OBJECT" c:identifier="GCK_OBJECT" introspectable="0">
      <source-position filename="gck/gck.h" line="1273"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="OBJECT_CACHE"
                    c:identifier="GCK_OBJECT_CACHE"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="1431"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="OBJECT_CACHE_GET_INTERFACE"
                    c:identifier="GCK_OBJECT_CACHE_GET_INTERFACE"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="1433"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="OBJECT_CLASS"
                    c:identifier="GCK_OBJECT_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="1274"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="OBJECT_GET_CLASS"
                    c:identifier="GCK_OBJECT_GET_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="1277"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Object"
           c:symbol-prefix="object"
           c:type="GckObject"
           parent="GObject.Object"
           glib:type-name="GckObject"
           glib:get-type="gck_object_get_type"
           glib:type-struct="ObjectClass">
      <doc xml:space="preserve"
           filename="gck/gck-object.c"
           line="30">Holds a handle to a PKCS11 object such as a key or certificate. Token
objects are stored on the token persistently. Others are transient and are
called session objects.</doc>
      <source-position filename="gck/gck.h" line="1295"/>
      <constructor name="from_handle" c:identifier="gck_object_from_handle">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="197">Initialize a GckObject from a raw PKCS#11 handle. Normally you would use
[method@Session.create_object] or [method@Session.find_objects] to access
objects.</doc>
        <source-position filename="gck/gck.h" line="1299"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="206">The new object</doc>
          <type name="Object" c:type="GckObject*"/>
        </return-value>
        <parameters>
          <parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="199">The session through which this object is accessed or created.</doc>
            <type name="Session" c:type="GckSession*"/>
          </parameter>
          <parameter name="object_handle" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="200">The raw `CK_OBJECT_HANDLE` of the object.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="cache_lookup"
              c:identifier="gck_object_cache_lookup"
              throws="1"
              glib:async-func="cache_lookup_async">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="313">Lookup attributes in the cache, or retrieve them from the object if necessary.

If @object is a #GckObjectCache then this will lookup the attributes there
first if available, otherwise will read them from the object and update
the cache.

If @object is not a #GckObjectCache, then the attributes will simply be
read from the object.

This may block, use the asynchronous version when this is not desirable</doc>
        <source-position filename="gck/gck.h" line="1477"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-object-cache.c"
               line="332">the attributes retrieved or %NULL on failure</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="315">the object</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="attr_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="316">the types of attributes to update</doc>
            <array length="1" zero-terminated="0" c:type="const gulong*">
              <type name="gulong" c:type="gulong"/>
            </array>
          </parameter>
          <parameter name="n_attr_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="317">the number of attribute types</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="318">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="cache_lookup_async"
              c:identifier="gck_object_cache_lookup_async"
              glib:finish-func="cache_lookup_finish"
              glib:sync-func="cache_lookup">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="368">Lookup attributes in the cache, or retrieve them from the object if necessary.

If @object is a #GckObjectCache then this will lookup the attributes there
first if available, otherwise will read them from the object and update
the cache.

If @object is not a #GckObjectCache, then the attributes will simply be
read from the object.

This will return immediately and complete asynchronously</doc>
        <source-position filename="gck/gck.h" line="1483"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="370">the object</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="attr_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="371">the types of attributes to update</doc>
            <array length="1" zero-terminated="0" c:type="const gulong*">
              <type name="gulong" c:type="gulong"/>
            </array>
          </parameter>
          <parameter name="n_attr_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="372">the number of attribute types</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="373">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="gck/gck-object-cache.c"
                 line="374">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="gck/gck-object-cache.c"
                 line="375">data to pass to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="cache_lookup_finish"
              c:identifier="gck_object_cache_lookup_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="427">Complete an operation to lookup attributes in the cache or retrieve them
from the object if necessary.</doc>
        <source-position filename="gck/gck.h" line="1490"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-object-cache.c"
               line="436">the attributes retrieved or %NULL on failure</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="429">the object</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="430">the asynchrounous result passed to the callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="destroy"
              c:identifier="gck_object_destroy"
              throws="1"
              glib:async-func="destroy_async">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="396">Destroy a PKCS#11 object, deleting it from storage or the session.
This call may block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1317"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="405">Whether the call was successful or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="398">The object to destroy.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="399">Optional cancellable object, or %NULL to ignore.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="destroy_async"
              c:identifier="gck_object_destroy_async"
              glib:finish-func="destroy_finish"
              glib:sync-func="destroy">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="420">Destroy a PKCS#11 object, deleting it from storage or the session.
This call will return immediately and complete asynchronously.</doc>
        <source-position filename="gck/gck.h" line="1321"/>
        <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="gck/gck-object.c"
                 line="422">The object to destroy.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="423">Optional cancellable object, or %NULL to ignore.</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="gck/gck-object.c"
                 line="424">Callback which is called when 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="gck/gck-object.c"
                 line="425">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="destroy_finish"
              c:identifier="gck_object_destroy_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="447">Get the status of the operation to destroy a PKCS#11 object, begun with
gck_object_destroy_async().</doc>
        <source-position filename="gck/gck.h" line="1326"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="456">Whether the object was destroyed 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="gck/gck-object.c"
                 line="449">The object being destroyed.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="450">The result of the destory operation passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="equal" c:identifier="gck_object_equal">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="257">Checks equality of two objects. Two GckObject objects can point to the same
underlying PKCS#11 object.</doc>
        <source-position filename="gck/gck.h" line="1306"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="265">%TRUE if object1 and object2 are equal.
              %FALSE if either is not a GckObject.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="object1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="259">a pointer to the first #GckObject</doc>
            <type name="Object" c:type="gconstpointer"/>
          </instance-parameter>
          <parameter name="object2" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="260">a pointer to the second #GckObject</doc>
            <type name="Object" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get"
              c:identifier="gck_object_get"
              introspectable="0"
              glib:async-func="get_async">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="644">Get the specified attributes from the object. This call may
block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1345"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="654">the resulting PKCS#11 attributes, or %NULL if an
         error occurred; the result must be unreffed when you're finished
         with it</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="646">The object to get attributes from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="647">A #GCancellable or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="648">A location to store an error.</doc>
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="649">The attribute types to get.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get_async"
              c:identifier="gck_object_get_async"
              glib:finish-func="get_finish"
              glib:sync-func="get">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="734">Get the specified attributes from the object. The attributes will be cleared
of their current values, and new attributes will be stored. The attributes
should not be accessed in any way except for referencing and unreferencing
them until gck_object_get_finish() is called.

This call returns immediately and completes asynchronously.</doc>
        <source-position filename="gck/gck.h" line="1356"/>
        <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="gck/gck-object.c"
                 line="736">The object to get attributes from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="attr_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="737">the types of the attributes to get</doc>
            <array length="1" zero-terminated="0" c:type="const gulong*">
              <type name="gulong" c:type="gulong"/>
            </array>
          </parameter>
          <parameter name="n_attr_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="738">the number of attr_types</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="739">optional cancellation object, 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="4">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="740">A callback which is 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="gck/gck-object.c"
                 line="741">Data to be passed to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_data"
              c:identifier="gck_object_get_data"
              throws="1"
              glib:async-func="get_data_async">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="865">Get the data for the specified attribute from the object. For convenience
the returned data has a null terminator.

This call may block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1367"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="878">the resulting PKCS#11
         attribute data, or %NULL if an error occurred</doc>
          <array length="2" 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="gck/gck-object.c"
                 line="867">The object to get attribute data from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="868">The attribute to get data for.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="869">A #GCancellable or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="n_data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="870">The length of the resulting data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_data_async"
              c:identifier="gck_object_get_data_async"
              glib:finish-func="get_data_finish"
              glib:sync-func="get_data">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="944">Get the data for the specified attribute from the object.

This call will return immediately and complete asynchronously.</doc>
        <source-position filename="gck/gck.h" line="1380"/>
        <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="gck/gck-object.c"
                 line="946">The object to get attribute data from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="947">The attribute to get data for.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="allocator" transfer-ownership="none" skip="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="948">An allocator with which to allocate memory for the data, or %NULL for default.</doc>
            <type name="Allocator" c:type="GckAllocator"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="949">Optional cancellation object, 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="4">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="950">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="gck/gck-object.c"
                 line="951">Data to be passed to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_data_finish"
              c:identifier="gck_object_get_data_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="981">Get the result of an operation to get attribute data from
an object. For convenience the returned data has an extra null terminator,
not included in the returned length.</doc>
        <source-position filename="gck/gck.h" line="1387"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="992">The PKCS#11 attribute data
         or %NULL if an error occurred.</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="gck/gck-object.c"
                 line="983">The object to get an attribute from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="984">The result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="n_data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="985">The length of the resulting data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_data_full"
              c:identifier="gck_object_get_data_full"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="895">Get the data for the specified attribute from the object. For convenience
the returned data has an extra null terminator, not included in the returned length.

This call may block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1373"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="909">The resulting PKCS#11
         attribute data, or %NULL if an error occurred.</doc>
          <array length="3" 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="gck/gck-object.c"
                 line="897">The object to get attribute data from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="898">The attribute to get data for.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="allocator" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="899">An allocator with which to allocate memory for the data, or %NULL for default.</doc>
            <type name="Allocator" c:type="GckAllocator"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="900">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="n_data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="901">The length of the resulting data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_finish"
              c:identifier="gck_object_get_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="777">Get the result of a get operation and return specified attributes from
the object.

No extra references are added to the returned attributes pointer.</doc>
        <source-position filename="gck/gck.h" line="1363"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="788">The filled in attributes structure if successful or
%NULL if not successful.</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="779">The object to get attributes from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="780">The result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_full" c:identifier="gck_object_get_full" throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="685">Get the specified attributes from the object. This call may
block for an indefinite period.

No extra references are added to the returned attributes pointer.
During this call you may not access the attributes in any way.</doc>
        <source-position filename="gck/gck.h" line="1350"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="699">a pointer to the filled in attributes if successful,
         or %NULL if not</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="687">The object to get attributes from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="attr_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="688">the types of the attributes to get</doc>
            <array length="1" zero-terminated="0" c:type="const gulong*">
              <type name="gulong" c:type="gulong"/>
            </array>
          </parameter>
          <parameter name="n_attr_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="689">the number of attr_types</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="690">optional cancellation object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_handle"
              c:identifier="gck_object_get_handle"
              glib:get-property="handle">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="327">Get the raw PKCS#11 handle of a GckObject.</doc>
        <source-position filename="gck/gck.h" line="1313"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="333">the raw CK_OBJECT_HANDLE object handle</doc>
          <type name="gulong" c:type="gulong"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="329">The object.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_module"
              c:identifier="gck_object_get_module"
              glib:get-property="module">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="342">Get the PKCS#11 module to which this object belongs.</doc>
        <source-position filename="gck/gck.h" line="1311"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="348">the module, which should be unreffed after use</doc>
          <type name="Module" c:type="GckModule*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="344">The object.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_session"
              c:identifier="gck_object_get_session"
              glib:get-property="session">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="359">Get the PKCS#11 session assigned to make calls on when operating
on this object.

This will only return a session if it was set explitly on this
object. By default an object will open and close sessions
appropriate for its calls.</doc>
        <source-position filename="gck/gck.h" line="1315"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="370">the assigned session, which must be unreffed after use</doc>
          <type name="Session" c:type="GckSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="361">The object</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_template"
              c:identifier="gck_object_get_template"
              throws="1"
              glib:async-func="get_template_async">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="1220">Get an attribute template from the object. The attr_type must be for
an attribute which returns a template.

This call may block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1409"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="1232">the resulting PKCS#11 attribute template, or %NULL
         if an error occurred</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1222">The object to get an attribute template from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1223">The template attribute type.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1224">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_template_async"
              c:identifier="gck_object_get_template_async"
              glib:finish-func="get_template_finish"
              glib:sync-func="get_template">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="1260">Get an attribute template from the object. The @attr_type must be for
an attribute which returns a template.

This call will return immediately and complete asynchronously.</doc>
        <source-position filename="gck/gck.h" line="1414"/>
        <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="gck/gck-object.c"
                 line="1262">The object to get an attribute template from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1263">The template attribute type.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1264">Optional cancellation object, 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="gck/gck-object.c"
                 line="1265">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="gck/gck-object.c"
                 line="1266">Data to be passed to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_template_finish"
              c:identifier="gck_object_get_template_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="1293">Get the result of an operation to get attribute template from
an object.</doc>
        <source-position filename="gck/gck.h" line="1420"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="1302">the resulting PKCS#11 attribute template, or %NULL
         if an error occurred</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1295">The object to get an attribute from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1296">The result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="hash" c:identifier="gck_object_hash">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="295">Create a hash value for the GckObject.

This function is intended for easily hashing a GckObject to add to
a GHashTable or similar data structure.</doc>
        <source-position filename="gck/gck.h" line="1309"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="304">An integer that can be used as a hash value, or 0 if invalid.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="297">a pointer to a #GckObject</doc>
            <type name="Object" c:type="gconstpointer"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set"
              c:identifier="gck_object_set"
              throws="1"
              glib:async-func="set_async">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="497">Set PKCS#11 attributes on an object. This call may block for an indefinite period.

If the @attrs #GckAttributes is floating, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="1330"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="508">Whether the call was successful or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="499">The object to set attributes on.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="500">The attributes to set on the object.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="501">Optional cancellable object, or %NULL to ignore.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_async"
              c:identifier="gck_object_set_async"
              glib:finish-func="set_finish"
              glib:sync-func="set">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="534">Set PKCS#11 attributes on an object. This call will return
immediately and completes asynchronously.

If the @attrs #GckAttributes is floating, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="1335"/>
        <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="gck/gck-object.c"
                 line="536">The object to set attributes on.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="537">The attributes to set on the object.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="538">Optional cancellable object, or %NULL to ignore.</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="gck/gck-object.c"
                 line="539">Callback which is called when 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="gck/gck-object.c"
                 line="540">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_finish"
              c:identifier="gck_object_set_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="567">Get the status of the operation to set attributes on a PKCS#11 object,
begun with gck_object_set_async().</doc>
        <source-position filename="gck/gck.h" line="1341"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="576">Whether the attributes were successfully set on the object or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="569">The object to set attributes on.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="570">The result of the destory operation passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_template"
              c:identifier="gck_object_set_template"
              throws="1"
              glib:async-func="set_template_async">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="1055">Set an attribute template on the object. The attr_type must be for
an attribute which contains a template.

If the @attrs #GckAttributes is floating, it is consumed.

This call may block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1392"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="1070">%TRUE if 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="gck/gck-object.c"
                 line="1057">The object to set an attribute template on.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1058">The attribute template type.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1059">The attribute template.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1060">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_template_async"
              c:identifier="gck_object_set_template_async"
              glib:finish-func="set_template_finish"
              glib:sync-func="set_template">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="1097">Set an attribute template on the object. The attr_type must be for
an attribute which contains a template.

If the @attrs #GckAttributes is floating, it is consumed.

This call will return immediately and complete asynchronously.</doc>
        <source-position filename="gck/gck.h" line="1398"/>
        <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="gck/gck-object.c"
                 line="1099">The object to set an attribute template on.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="attr_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1100">The attribute template type.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1101">The attribute template.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1102">Optional cancellation object, 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="4">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1103">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="gck/gck-object.c"
                 line="1104">Data to be passed to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_template_finish"
              c:identifier="gck_object_set_template_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="1135">Get the result of an operation to set attribute template on
an object.</doc>
        <source-position filename="gck/gck.h" line="1405"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="1144">%TRUE if 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="gck/gck-object.c"
                 line="1137">The object to set an attribute template on.</doc>
            <type name="Object" c:type="GckObject*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object.c"
                 line="1138">The result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <property name="handle"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_handle"
                default-value="0">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="168">The raw PKCS11 handle for this object.</doc>
        <type name="gulong" c:type="gulong"/>
      </property>
      <property name="module"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_module">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="158">The GckModule that this object belongs to.</doc>
        <type name="Module"/>
      </property>
      <property name="session"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_session">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="178">The PKCS11 session to make calls on when this object needs to
perform operations on itself.

If this is NULL then a new session is opened for each operation,
such as gck_object_get(), gck_object_set() or gck_object_destroy().</doc>
        <type name="Session"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="ObjectPrivate" c:type="GckObjectPrivate*"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <interface name="ObjectCache"
               c:symbol-prefix="object_cache"
               c:type="GckObjectCache"
               glib:type-name="GckObjectCache"
               glib:get-type="gck_object_cache_get_type"
               glib:type-struct="ObjectCacheIface">
      <doc xml:space="preserve"
           filename="gck/gck-object-cache.c"
           line="29">An interface implemented by derived classes of [class@Object] to indicate
which attributes they'd like an enumerator to retrieve.

These attributes are then cached on the object and can be retrieved through
the [property@ObjectCache:attributes] property.</doc>
      <source-position filename="gck/gck.h" line="1448"/>
      <prerequisite name="Object"/>
      <virtual-method name="fill" invoker="fill">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="116">Adds the attributes to the set cached on this object. If an attribute is
already present in the cache it will be overridden by this value.

This will be done in a thread-safe manner.

If the @attrs #GckAttributes is floating, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="1443"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="118">an object with the cache</doc>
            <type name="ObjectCache" c:type="GckObjectCache*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="119">the attributes to cache</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="fill" c:identifier="gck_object_cache_fill">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="116">Adds the attributes to the set cached on this object. If an attribute is
already present in the cache it will be overridden by this value.

This will be done in a thread-safe manner.

If the @attrs #GckAttributes is floating, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="1457"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="118">an object with the cache</doc>
            <type name="ObjectCache" c:type="GckObjectCache*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="119">the attributes to cache</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attributes"
              c:identifier="gck_object_cache_get_attributes"
              glib:get-property="attributes"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="78">Gets the attributes cached on this object.</doc>
        <source-position filename="gck/gck.h" line="1452"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gck/gck-object-cache.c"
               line="84">the attributes</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="80">an object with an attribute cache</doc>
            <type name="ObjectCache" c:type="GckObjectCache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_attributes"
              c:identifier="gck_object_cache_set_attributes"
              glib:set-property="attributes">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="95">Sets the attributes cached on this object.

If the @attrs #GckAttributes is floating, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="1454"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="97">an object with an attribute cache</doc>
            <type name="ObjectCache" c:type="GckObjectCache*"/>
          </instance-parameter>
          <parameter name="attrs"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="98">the attributes to set</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update"
              c:identifier="gck_object_cache_update"
              throws="1"
              glib:async-func="update_async">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="145">Update the object cache with given attributes. If an attribute already
exists in the cache, it will be updated, and if it doesn't it will be added.

This may block, use the asynchronous version when this is not desirable</doc>
        <source-position filename="gck/gck.h" line="1460"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object-cache.c"
               line="158">whether the cache update was successful</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="147">the object with the cache</doc>
            <type name="ObjectCache" c:type="GckObjectCache*"/>
          </instance-parameter>
          <parameter name="attr_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="148">the types of attributes to update</doc>
            <array length="1" zero-terminated="0" c:type="const gulong*">
              <type name="gulong" c:type="gulong"/>
            </array>
          </parameter>
          <parameter name="n_attr_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="149">the number of attribute types</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="150">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_async"
              c:identifier="gck_object_cache_update_async"
              glib:finish-func="update_finish"
              glib:sync-func="update">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="221">Update the object cache with given attributes. If an attribute already
exists in the cache, it will be updated, and if it doesn't it will be added.

This call will return immediately and complete asynchronously.</doc>
        <source-position filename="gck/gck.h" line="1466"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="223">the object with the cache</doc>
            <type name="ObjectCache" c:type="GckObjectCache*"/>
          </instance-parameter>
          <parameter name="attr_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="224">the types of attributes to update</doc>
            <array length="1" zero-terminated="0" c:type="const gulong*">
              <type name="gulong" c:type="gulong"/>
            </array>
          </parameter>
          <parameter name="n_attr_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="225">the number of attribute types</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="226">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="gck/gck-object-cache.c"
                 line="227">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="gck/gck-object-cache.c"
                 line="228">data to be passed to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_finish"
              c:identifier="gck_object_cache_update_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="272">Complete an asynchronous operation to update the object cache with given
attributes.</doc>
        <source-position filename="gck/gck.h" line="1473"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object-cache.c"
               line="281">whether the cache update was successful</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="274">the object with the cache</doc>
            <type name="ObjectCache" c:type="GckObjectCache*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-object-cache.c"
                 line="275">the asynchronous result passed to the callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <property name="attributes"
                writable="1"
                transfer-ownership="none"
                setter="set_attributes"
                getter="get_attributes">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="65">The attributes cached on this object.</doc>
        <type name="Attributes"/>
      </property>
    </interface>
    <record name="ObjectCacheIface"
            c:type="GckObjectCacheIface"
            glib:is-gtype-struct-for="ObjectCache">
      <doc xml:space="preserve"
           filename="gck/gck-object-cache.c"
           line="39">Interface for [iface@ObjectCache]. If the @default_types field is
implemented by a implementing class, then that will be used by a
[class@Enumerator] which has been setup using
[method@Enumerator.set_object_type]

The implementation for @populate should add the attributes to the
cache. It must be thread safe.</doc>
      <source-position filename="gck/gck.h" line="1448"/>
      <field name="interface">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="41">parent interface</doc>
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="default_types">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="42">attribute types that an
                  enumerator should retrieve</doc>
        <array length="2" zero-terminated="0" c:type="const gulong*">
          <type name="gulong" c:type="gulong"/>
        </array>
      </field>
      <field name="n_default_types">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="44">number of attribute types to be retrieved</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="fill">
        <doc xml:space="preserve"
             filename="gck/gck-object-cache.c"
             line="45">virtual method to add attributes to the cache</doc>
        <callback name="fill">
          <source-position filename="gck/gck.h" line="1443"/>
          <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="gck/gck-object-cache.c"
                   line="118">an object with the cache</doc>
              <type name="ObjectCache" c:type="GckObjectCache*"/>
            </parameter>
            <parameter name="attrs" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="gck/gck-object-cache.c"
                   line="119">the attributes to cache</doc>
              <type name="Attributes" c:type="GckAttributes*"/>
            </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>
    <record name="ObjectClass"
            c:type="GckObjectClass"
            glib:is-gtype-struct-for="Object">
      <doc xml:space="preserve"
           filename="gck/gck-object.c"
           line="38">The class for a [class@Object].

If the @attribute_types field is set by a derived class, then the a
#GckEnumerator which has been setup using [method@Enumerator.set_object_type]
with this derived type will retrieve these attributes when enumerating. In
this case the class must implement an 'attributes' property of boxed type
`GCK_TYPE_ATTRIBUTES`.</doc>
      <source-position filename="gck/gck.h" line="1295"/>
      <field name="parent">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="40">derived from this</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="ObjectPrivate"
            c:type="GckObjectPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gck/gck.h" line="1280"/>
    </record>
    <function-macro name="PASSWORD"
                    c:identifier="GCK_PASSWORD"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="1501"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PASSWORD_CLASS"
                    c:identifier="GCK_PASSWORD_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="1502"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PASSWORD_GET_CLASS"
                    c:identifier="GCK_PASSWORD_GET_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="1505"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Password"
           c:symbol-prefix="password"
           c:type="GckPassword"
           parent="Gio.TlsPassword"
           glib:type-name="GckPassword"
           glib:get-type="gck_password_get_type"
           glib:type-struct="PasswordClass">
      <doc xml:space="preserve"
           filename="gck/gck-password.c"
           line="32">Represents a password which is requested of the user.

This is used in conjuction with [class@Gio.TlsInteraction]. `GckPassword` is
a [class@Gio.TlsPassword] which contains additional information about which
PKCS#11 token or key the password is being requested for.</doc>
      <source-position filename="gck/gck.h" line="1524"/>
      <method name="get_key"
              c:identifier="gck_password_get_key"
              glib:get-property="key">
        <doc xml:space="preserve"
             filename="gck/gck-password.c"
             line="227">If the password request is to unlock a PKCS#11 key, then this is the
the object representing that key.</doc>
        <source-position filename="gck/gck.h" line="1532"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-password.c"
               line="234">the password is for this key, or %NULL if not
         being requested for a key; must be unreferenced after use</doc>
          <type name="Object" c:type="GckObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-password.c"
                 line="229">the password object</doc>
            <type name="Password" c:type="GckPassword*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_module"
              c:identifier="gck_password_get_module"
              glib:get-property="module">
        <doc xml:space="preserve"
             filename="gck/gck-password.c"
             line="188">Get the PKCS#11 module that is requesting the password.</doc>
        <source-position filename="gck/gck.h" line="1528"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-password.c"
               line="194">the module that is requesting the password, which
         must be unreferenced after use</doc>
          <type name="Module" c:type="GckModule*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-password.c"
                 line="190">the password object</doc>
            <type name="Password" c:type="GckPassword*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_token"
              c:identifier="gck_password_get_token"
              glib:get-property="token">
        <doc xml:space="preserve"
             filename="gck/gck-password.c"
             line="207">If the password request is to unlock a PKCS#11 token, then this is the
slot containing that token.</doc>
        <source-position filename="gck/gck.h" line="1530"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-password.c"
               line="214">the slot that contains the token, or %NULL if not
         being requested for a token; must be unreferenced after use</doc>
          <type name="Slot" c:type="GckSlot*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-password.c"
                 line="209">the password object</doc>
            <type name="Password" c:type="GckPassword*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="key"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_key">
        <doc xml:space="preserve"
             filename="gck/gck-password.c"
             line="177">The PKCS#11 key that the password is being requested for. If this
is set then the GckPassword:token property will be %NULL</doc>
        <type name="Object"/>
      </property>
      <property name="module" transfer-ownership="none" getter="get_module">
        <doc xml:space="preserve"
             filename="gck/gck-password.c"
             line="158">The PKCS#11 module that is requesting the password</doc>
        <type name="Module"/>
      </property>
      <property name="token"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_token">
        <doc xml:space="preserve"
             filename="gck/gck-password.c"
             line="167">The PKCS#11 token the password is for, if this is set then
the GckPassword:object property will be %NULL</doc>
        <type name="Slot"/>
      </property>
      <field name="parent">
        <type name="Gio.TlsPassword" c:type="GTlsPassword"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="PasswordPrivate" c:type="GckPasswordPrivate*"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="PasswordClass"
            c:type="GckPasswordClass"
            glib:is-gtype-struct-for="Password">
      <doc xml:space="preserve"
           filename="gck/gck-password.c"
           line="42">The class struct for [class@Password].</doc>
      <source-position filename="gck/gck.h" line="1524"/>
      <field name="parent">
        <doc xml:space="preserve"
             filename="gck/gck-password.c"
             line="44">parent class</doc>
        <type name="Gio.TlsPasswordClass" c:type="GTlsPasswordClass"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="PasswordPrivate"
            c:type="GckPasswordPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gck/gck.h" line="1509"/>
    </record>
    <function-macro name="SESSION"
                    c:identifier="GCK_SESSION"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="814"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SESSION_CLASS"
                    c:identifier="GCK_SESSION_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="815"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SESSION_GET_CLASS"
                    c:identifier="GCK_SESSION_GET_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="818"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SLOT" c:identifier="GCK_SLOT" introspectable="0">
      <source-position filename="gck/gck.h" line="695"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SLOT_CLASS"
                    c:identifier="GCK_SLOT_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="696"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SLOT_GET_CLASS"
                    c:identifier="GCK_SLOT_GET_CLASS"
                    introspectable="0">
      <source-position filename="gck/gck.h" line="699"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Session"
           c:symbol-prefix="session"
           c:type="GckSession"
           parent="GObject.Object"
           glib:type-name="GckSession"
           glib:get-type="gck_session_get_type"
           glib:type-struct="SessionClass">
      <doc xml:space="preserve"
           filename="gck/gck-session.c"
           line="33">Represents an open PKCS11 session.

Before performing any PKCS11 operations, a session must be opened. This is
analogous to an open database handle, or a file handle.</doc>
      <source-position filename="gck/gck.h" line="838"/>
      <implements name="Gio.AsyncInitable"/>
      <implements name="Gio.Initable"/>
      <function name="from_handle" c:identifier="gck_session_from_handle">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="580">Initialize a session object from a raw PKCS#11 session handle.
Usually one would use the [method@Slot.open_session] function to
create a session.</doc>
        <source-position filename="gck/gck.h" line="842"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="590">the new GckSession object</doc>
          <type name="Session" c:type="GckSession*"/>
        </return-value>
        <parameters>
          <parameter name="slot" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="582">The slot which the session belongs to.</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </parameter>
          <parameter name="session_handle" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="583">the raw PKCS#11 handle of the session</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="584">Session options. Those which are used during opening a session have no effect.</doc>
            <type name="SessionOptions" c:type="GckSessionOptions"/>
          </parameter>
        </parameters>
      </function>
      <function name="open"
                c:identifier="gck_session_open"
                throws="1"
                glib:async-func="open_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="803">Open a session on the slot. This call may block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="863"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="813">the new session</doc>
          <type name="Session" c:type="GckSession*"/>
        </return-value>
        <parameters>
          <parameter name="slot" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="805">the slot to open session on</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="806">session options</doc>
            <type name="SessionOptions" c:type="GckSessionOptions"/>
          </parameter>
          <parameter name="interaction"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="807">optional interaction for logins or object authentication</doc>
            <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="808">optional cancellation object</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </function>
      <function name="open_async"
                c:identifier="gck_session_open_async"
                glib:finish-func="open_finish"
                glib:sync-func="open">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="829">Open a session on the slot. This call will return immediately and complete
asynchronously.</doc>
        <source-position filename="gck/gck.h" line="869"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="slot" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="831">the slot to open session on</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="832">session options</doc>
            <type name="SessionOptions" c:type="GckSessionOptions"/>
          </parameter>
          <parameter name="interaction"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="833">optional interaction for logins or object authentication</doc>
            <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="834">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="5">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="835">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="gck/gck-session.c"
                 line="836">data to pass to callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="open_finish"
                c:identifier="gck_session_open_finish"
                throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="857">Get the result of an open session operation.</doc>
        <source-position filename="gck/gck.h" line="876"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="864">the new session</doc>
          <type name="Session" c:type="GckSession*"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="859">the result passed to the callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="discard_handle" introspectable="0">
        <source-position filename="gck/gck.h" line="834"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="handle" transfer-ownership="none">
            <type c:type="CK_SESSION_HANDLE"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="create_object"
              c:identifier="gck_session_create_object"
              throws="1"
              glib:async-func="create_object_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1403">Create a new PKCS#11 object. This call may block for an
indefinite period.

If the @attrs #GckAttributes is floating, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="966"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1415">the newly created object or %NULL if an error occurred</doc>
          <type name="Object" c:type="GckObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1405">The session to create the object on.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1406">The attributes to create the object with.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1407">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_object_async"
              c:identifier="gck_session_create_object_async"
              glib:finish-func="create_object_finish"
              glib:sync-func="create_object">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1437">Create a new PKCS#11 object. This call will return immediately
and complete asynchronously.

If @attrs is a floating reference, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="971"/>
        <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="gck/gck-session.c"
                 line="1439">The session to create the object on.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1440">The attributes to create the object with.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1441">Optional cancellation object 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="gck/gck-session.c"
                 line="1442">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="gck/gck-session.c"
                 line="1443">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_object_finish"
              c:identifier="gck_session_create_object_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1469">Get the result of creating a new PKCS#11 object.</doc>
        <source-position filename="gck/gck.h" line="977"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1477">the newly created object or %NULL if an error occurred</doc>
          <type name="Object" c:type="GckObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1471">The session to create the object on.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1472">The result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="decrypt"
              c:identifier="gck_session_decrypt"
              throws="1"
              glib:async-func="decrypt_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2881">Decrypt data in a mechanism specific manner. This call may
block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1080"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2895">the data that was decrypted,
         or %NULL if an error occured</doc>
          <array length="4" 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="gck/gck-session.c"
                 line="2883">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2884">The key to decrypt with.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mech_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2885">The mechanism type to use for decryption.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2886">data to decrypt</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2887">length of the data to decrypt</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="n_result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2888">location to store the length of the result data</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2889">Optional cancellation object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="decrypt_async"
              c:identifier="gck_session_decrypt_async"
              glib:finish-func="decrypt_finish"
              glib:sync-func="decrypt">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2944">Decrypt data in a mechanism specific manner. This call will
return immediately and complete asynchronously.</doc>
        <source-position filename="gck/gck.h" line="1098"/>
        <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="gck/gck-session.c"
                 line="2946">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2947">The key to decrypt with.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2948">The mechanism type and parameters to use for decryption.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2949">data to decrypt</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2950">length of the data to decrypt</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2951">A GCancellable which can be 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="6">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2952">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="gck/gck-session.c"
                 line="2953">A pointer to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="decrypt_finish"
              c:identifier="gck_session_decrypt_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2977">Get the result of an decryption operation.</doc>
        <source-position filename="gck/gck.h" line="1107"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2986">the data that was decrypted,
         or %NULL if an error occurred</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="gck/gck-session.c"
                 line="2979">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2980">The result object passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="n_result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2981">A location to store the length of the result data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="decrypt_full"
              c:identifier="gck_session_decrypt_full"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2906">Decrypt data in a mechanism specific manner. This call may
block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1089"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2920">the data that was decrypted,
         or %NULL if an error occured</doc>
          <array length="4" 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="gck/gck-session.c"
                 line="2908">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2909">The key to decrypt with.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2910">The mechanism type and parameters to use for decryption.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2911">data to decrypt</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2912">length of the data to decrypt</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="n_result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2913">location to store the length of the result data</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2914">A GCancellable which can be used to cancel the operation.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="derive_key"
              c:identifier="gck_session_derive_key"
              throws="1"
              glib:async-func="derive_key_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2444">Derive a key from another key. This call may block for an
indefinite period.

If the @attrs #GckAttributes is floating, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="1240"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2458">the new derived key or %NULL if the operation
         failed</doc>
          <type name="Object" c:type="GckObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2446">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="base" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2447">The key to derive from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mech_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2448">The mechanism to use for derivation.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2449">Additional attributes for the derived key.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2450">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="derive_key_async"
              c:identifier="gck_session_derive_key_async"
              glib:finish-func="derive_key_finish"
              glib:sync-func="derive_key">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2516">Derive a key from another key. This call will
return immediately and complete asynchronously.

If the @attrs #GckAttributes is floating, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="1254"/>
        <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="gck/gck-session.c"
                 line="2518">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="base" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2519">The key to derive from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2520">The mechanism to use for derivation.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2521">Additional attributes for the derived key.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2522">Optional cancellation object 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="gck/gck-session.c"
                 line="2523">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="gck/gck-session.c"
                 line="2524">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="derive_key_finish"
              c:identifier="gck_session_derive_key_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2558">Get the result of a derive key operation.</doc>
        <source-position filename="gck/gck.h" line="1262"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2566">the new derived key or %NULL if the operation
         failed</doc>
          <type name="Object" c:type="GckObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2560">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2561">The async result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="derive_key_full"
              c:identifier="gck_session_derive_key_full"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2469">Derive a key from another key. This call may block for an
indefinite period.

If the @attrs #GckAttributes is floating, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="1247"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2483">the new derived key or %NULL if the operation
         failed</doc>
          <type name="Object" c:type="GckObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2471">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="base" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2472">The key to derive from.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2473">The mechanism to use for derivation.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2474">Additional attributes for the derived key.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2475">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="encrypt"
              c:identifier="gck_session_encrypt"
              throws="1"
              glib:async-func="encrypt_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2760">Encrypt data in a mechanism specific manner. This call may
block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1048"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2774">the data that was encrypted,
         or %NULL if an error occured.</doc>
          <array length="4" 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="gck/gck-session.c"
                 line="2762">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2763">The key to encrypt with.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mech_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2764">The mechanism type to use for encryption.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2765">the data to encrypt</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2766">the length of the data to encrypt</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="n_result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2767">location to store the length of the result data</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2768">Optional cancellation object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="encrypt_async"
              c:identifier="gck_session_encrypt_async"
              glib:finish-func="encrypt_finish"
              glib:sync-func="encrypt">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2824">Encrypt data in a mechanism specific manner. This call will
return immediately and complete asynchronously.</doc>
        <source-position filename="gck/gck.h" line="1066"/>
        <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="gck/gck-session.c"
                 line="2826">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2827">The key to encrypt with.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2828">The mechanism type and parameters to use for encryption.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2829">the data to encrypt</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2830">length of the data to encrypt</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2831">A GCancellable which can be 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="6">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2832">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="gck/gck-session.c"
                 line="2833">A pointer to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="encrypt_finish"
              c:identifier="gck_session_encrypt_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2858">Get the result of an encryption operation.</doc>
        <source-position filename="gck/gck.h" line="1075"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2867">the data that was encrypted,
         or %NULL if an error occurred.</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="gck/gck-session.c"
                 line="2860">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2861">The result object passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="n_result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2862">A location to store the length of the result data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="encrypt_full"
              c:identifier="gck_session_encrypt_full"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2785">Encrypt data in a mechanism specific manner. This call may
block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1057"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2799">the data that was encrypted,
         or %NULL if an error occured</doc>
          <array length="4" 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="gck/gck-session.c"
                 line="2787">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2788">The key to encrypt with.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2789">The mechanism type and parameters to use for encryption.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2790">the data to encrypt</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2791">the length of the data to encrypt</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="n_result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2792">location to store the length of the result data</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2793">A GCancellable which can be used to cancel the operation.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="enumerate_objects"
              c:identifier="gck_session_enumerate_objects">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1782">Setup an enumerator for listing matching objects available via this session.

If @match is a floating reference, it is consumed.

This call will not block but will return an enumerator immediately.</doc>
        <source-position filename="gck/gck.h" line="1013"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1793">a new enumerator</doc>
          <type name="Enumerator" c:type="GckEnumerator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1784">session to enumerate objects on</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="match" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1785">attributes that the objects must match, or empty for all objects</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_handles"
              c:identifier="gck_session_find_handles"
              throws="1"
              glib:async-func="find_handles_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1570">Find the objects matching the passed attributes. This call may
block for an indefinite period.

If @match is a floating reference, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="996"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1583">a list of
         the matching objects, which may be empty</doc>
          <array length="2" zero-terminated="0" c:type="gulong*">
            <type name="gulong" c:type="gulong"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1572">the session to find objects on</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="match" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1573">the attributes to match against objects</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1574">optional cancellation object or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="n_handles"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1575">location to return number of handles</doc>
            <type name="gulong" c:type="gulong*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_handles_async"
              c:identifier="gck_session_find_handles_async"
              glib:finish-func="find_handles_finish"
              glib:sync-func="find_handles">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1614">Find the objects matching the passed attributes. This call will
return immediately and complete asynchronously.

If @match is a floating reference, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="1002"/>
        <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="gck/gck-session.c"
                 line="1616">the session to find objects on</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="match" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1617">the attributes to match against the objects</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1618">optional cancellation object 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="gck/gck-session.c"
                 line="1619">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="gck/gck-session.c"
                 line="1620">data to pass to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_handles_finish"
              c:identifier="gck_session_find_handles_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1648">Get the result of a find handles operation.</doc>
        <source-position filename="gck/gck.h" line="1008"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1657">an array of
         handles that matched, which may be empty, or %NULL on failure</doc>
          <array length="1" zero-terminated="0" c:type="gulong*">
            <type name="gulong" c:type="gulong"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1650">the session</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1651">the asynchronous result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="n_handles"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1652">location to store number of handles returned</doc>
            <type name="gulong" c:type="gulong*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_objects"
              c:identifier="gck_session_find_objects"
              throws="1"
              glib:async-func="find_objects_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1683">Find the objects matching the passed attributes. This call may
block for an indefinite period.

If @match is a floating reference, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="981"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1695">a list of the matching
         objects, which may be empty</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Object"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1685">The session to find objects on.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="match" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1686">the attributes to match</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1687">Optional cancellation object or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_objects_async"
              c:identifier="gck_session_find_objects_async"
              glib:finish-func="find_objects_finish"
              glib:sync-func="find_objects">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1722">Find the objects matching the passed attributes. This call will
return immediately and complete asynchronously.

If the @match #GckAttributes is floating, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="986"/>
        <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="gck/gck-session.c"
                 line="1724">The session to find objects on.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="match" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1725">The attributes to match.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1726">Optional cancellation object 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="gck/gck-session.c"
                 line="1727">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="gck/gck-session.c"
                 line="1728">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_objects_finish"
              c:identifier="gck_session_find_objects_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1749">Get the result of a find operation.</doc>
        <source-position filename="gck/gck.h" line="992"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1757">a list of the matching
         objects, which may be empty</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Object"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1751">The session to find objects on.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1752">The attributes to match.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="generate_key_pair"
              c:identifier="gck_session_generate_key_pair"
              throws="1"
              glib:async-func="generate_key_pair_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1849">Generate a new key pair of public and private keys. This call may block for
an indefinite period.

If @public_attrs and/or @private_attrs is a floating reference, it is
consumed.</doc>
        <source-position filename="gck/gck.h" line="1016"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1866">%TRUE if 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="gck/gck-session.c"
                 line="1851">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="mech_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1852">The mechanism type to use for key generation.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="public_attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1853">Additional attributes for the generated public key.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="private_attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1854">Additional attributes for the generated private key.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="public_key"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1855">location to return the resulting public key</doc>
            <type name="Object" c:type="GckObject**"/>
          </parameter>
          <parameter name="private_key"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1856">location to return the resulting private key.</doc>
            <type name="Object" c:type="GckObject**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1857">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="generate_key_pair_async"
              c:identifier="gck_session_generate_key_pair_async"
              glib:finish-func="generate_key_pair_finish"
              glib:sync-func="generate_key_pair">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1936">Generate a new key pair of public and private keys. This call will
return immediately and complete asynchronously.

If @public_attrs and/or @private_attrs is a floating reference, it is
consumed.</doc>
        <source-position filename="gck/gck.h" line="1034"/>
        <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="gck/gck-session.c"
                 line="1938">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1939">The mechanism to use for key generation.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="public_attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1940">Additional attributes for the generated public key.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="private_attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1941">Additional attributes for the generated private key.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1942">Optional cancellation object 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="gck/gck-session.c"
                 line="1943">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="gck/gck-session.c"
                 line="1944">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="generate_key_pair_finish"
              c:identifier="gck_session_generate_key_pair_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1979">Get the result of a generate key pair operation.</doc>
        <source-position filename="gck/gck.h" line="1042"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1989">%TRUE if 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="gck/gck-session.c"
                 line="1981">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1982">The async result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="public_key"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1983">a location to return the resulting public key</doc>
            <type name="Object" c:type="GckObject**"/>
          </parameter>
          <parameter name="private_key"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1984">a location to return the resulting private key</doc>
            <type name="Object" c:type="GckObject**"/>
          </parameter>
        </parameters>
      </method>
      <method name="generate_key_pair_full"
              c:identifier="gck_session_generate_key_pair_full"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1878">Generate a new key pair of public and private keys. This call may block for an
indefinite period.

If @public_attrs and/or @private_attrs is a floating reference, it is
consumed.</doc>
        <source-position filename="gck/gck.h" line="1025"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1895">%TRUE if 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="gck/gck-session.c"
                 line="1880">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1881">The mechanism to use for key generation.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="public_attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1882">Additional attributes for the generated public key.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="private_attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1883">Additional attributes for the generated private key.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="public_key"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1884">a location to return the resulting public key</doc>
            <type name="Object" c:type="GckObject**"/>
          </parameter>
          <parameter name="private_key"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1885">a location to return the resulting private key</doc>
            <type name="Object" c:type="GckObject**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1886">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_handle"
              c:identifier="gck_session_get_handle"
              glib:get-property="handle">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="610">Get the raw PKCS#11 session handle from a session object.</doc>
        <source-position filename="gck/gck.h" line="850"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="616">The raw session handle.</doc>
          <type name="gulong" c:type="gulong"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="612">The session object.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_info" c:identifier="gck_session_get_info">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="656">Get information about the session.</doc>
        <source-position filename="gck/gck.h" line="852"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="662">the session info. Use the gck_session_info_free()
         to release when done</doc>
          <type name="SessionInfo" c:type="GckSessionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="658">The session object.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_interaction"
              c:identifier="gck_session_get_interaction"
              glib:get-property="interaction">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="753">Get the interaction object set on this session, which is used to prompt
for pins and the like.</doc>
        <source-position filename="gck/gck.h" line="858"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="760">the interaction object, or %NULL</doc>
          <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="755">the session</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_module"
              c:identifier="gck_session_get_module"
              glib:get-property="module">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="625">Get the PKCS#11 module to which this session belongs.</doc>
        <source-position filename="gck/gck.h" line="846"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="631">the module, which should be unreffed after use</doc>
          <type name="Module" c:type="GckModule*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="627">The session object.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_options"
              c:identifier="gck_session_get_options"
              glib:get-property="options">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="738">Get the options this session was opened with.</doc>
        <source-position filename="gck/gck.h" line="856"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="744">The session options.</doc>
          <type name="SessionOptions" c:type="GckSessionOptions"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="740">The session to get options from.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_slot"
              c:identifier="gck_session_get_slot"
              glib:get-property="slot">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="640">Get the PKCS#11 slot to which this session belongs.</doc>
        <source-position filename="gck/gck.h" line="848"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="646">The slot, which should be unreffed after use.</doc>
          <type name="Slot" c:type="GckSlot*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="642">The session object.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_state" c:identifier="gck_session_get_state">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="701">Get the session state. The state is the various PKCS#11 CKS_XXX flags.</doc>
        <source-position filename="gck/gck.h" line="854"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="707">the session state</doc>
          <type name="gulong" c:type="gulong"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="703">the session</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init_pin"
              c:identifier="gck_session_init_pin"
              throws="1"
              glib:async-func="init_pin_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="905">Initialize the user's pin on this slot that this session is opened on.
According to the PKCS#11 standards, the session must be logged in with
the CKU_SO user type.

This call may block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="879"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="920">Whether successful or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="907">Initialize PIN for this session's slot.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="pin"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="908">the user's PIN, or %NULL for
      protected authentication path</doc>
            <array length="1" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_pin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="910">the length of the PIN</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="911">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_pin_async"
              c:identifier="gck_session_init_pin_async"
              glib:finish-func="init_pin_finish"
              glib:sync-func="init_pin">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="931">Initialize the user's pin on this slot that this session is opened on.
According to the PKCS#11 standards, the session must be logged in with
the `CKU_SO` user type.

This call will return immediately and completes asynchronously.</doc>
        <source-position filename="gck/gck.h" line="885"/>
        <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="gck/gck-session.c"
                 line="933">Initialize PIN for this session's slot.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="pin"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="934">the user's PIN, or %NULL for protected authentication path</doc>
            <array length="1" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_pin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="935">the length of the PIN</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="936">Optional cancellation object, 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="4">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="937">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="gck/gck-session.c"
                 line="938">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_pin_finish"
              c:identifier="gck_session_init_pin_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="963">Get the result of initializing a user's PIN.</doc>
        <source-position filename="gck/gck.h" line="892"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="971">Whether the operation was successful or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="965">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="966">The result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="login"
              c:identifier="gck_session_login"
              throws="1"
              glib:async-func="login_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1112">Login the user on the session. This call may block for
an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="917"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1125">Whether successful or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1114">Log in to this session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="user_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1115">The type of login user.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="pin"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1116">the user's PIN, or %NULL for
      protected authentication path</doc>
            <array length="2" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_pin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1118">The length of the PIN.</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1119">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="login_async"
              c:identifier="gck_session_login_async"
              glib:finish-func="login_finish"
              glib:sync-func="login">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1136">Login the user on the session. This call will return
immediately and completes asynchronously.</doc>
        <source-position filename="gck/gck.h" line="924"/>
        <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="gck/gck-session.c"
                 line="1138">Log in to this session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="user_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1139">The type of login user.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="pin"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1140">the user's PIN, or %NULL for
      protected authentication path</doc>
            <array length="2" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_pin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1142">The length of the PIN.</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1143">Optional cancellation object, 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="gck/gck-session.c"
                 line="1144">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="gck/gck-session.c"
                 line="1145">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="login_finish"
              c:identifier="gck_session_login_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1168">Get the result of a login operation.</doc>
        <source-position filename="gck/gck.h" line="932"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1176">Whether the operation was successful or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1170">The session logged into.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1171">The result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="login_interactive"
              c:identifier="gck_session_login_interactive"
              throws="1"
              glib:async-func="login_interactive_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1207">Login the user on the session requesting the password interactively
when necessary. This call may block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="936"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1218">Whether successful or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1209">session to use for login</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="user_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1210">the type of login user</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="interaction"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1211">interaction to request PIN when necessary</doc>
            <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1212">optional cancellation object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="login_interactive_async"
              c:identifier="gck_session_login_interactive_async"
              glib:finish-func="login_interactive_finish"
              glib:sync-func="login_interactive">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1242">Login the user on the session prompting for passwords interactively when
necessary. This call will return immediately and completes asynchronously.</doc>
        <source-position filename="gck/gck.h" line="942"/>
        <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="gck/gck-session.c"
                 line="1244">session to use for login</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="user_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1245">the type of login user</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="interaction"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1246">interaction to request PIN when necessary</doc>
            <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1247">optional cancellation object, 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="4">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1248">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="gck/gck-session.c"
                 line="1249">data to pass to the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="login_interactive_finish"
              c:identifier="gck_session_login_interactive_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1282">Get the result of a login operation.</doc>
        <source-position filename="gck/gck.h" line="949"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1290">Whether the operation was successful or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1284">the session logged into</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1285">the result passed to the callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="logout"
              c:identifier="gck_session_logout"
              throws="1"
              glib:async-func="logout_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1310">Log out of the session. This call may block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="953"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1318">Whether the logout was successful or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1312">Logout of this session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1313">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="logout_async"
              c:identifier="gck_session_logout_async"
              glib:finish-func="logout_finish"
              glib:sync-func="logout">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1327">Log out of the session. This call returns immediately and completes
asynchronously.</doc>
        <source-position filename="gck/gck.h" line="957"/>
        <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="gck/gck-session.c"
                 line="1329">Logout of this session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1330">Optional cancellation object, 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="gck/gck-session.c"
                 line="1331">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="gck/gck-session.c"
                 line="1332">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="logout_finish"
              c:identifier="gck_session_logout_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1347">Get the result of logging out of a session.</doc>
        <source-position filename="gck/gck.h" line="962"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1355">Whether the logout was successful or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1349">Logout of this session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1350">The result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_interaction"
              c:identifier="gck_session_set_interaction"
              glib:set-property="interaction">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="773">Set the interaction object on this session, which is used to prompt for
pins and the like.</doc>
        <source-position filename="gck/gck.h" line="860"/>
        <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="gck/gck-session.c"
                 line="775">the session</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="interaction"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="776">the interaction or %NULL</doc>
            <type name="Gio.TlsInteraction" c:type="GTlsInteraction*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pin"
              c:identifier="gck_session_set_pin"
              throws="1"
              glib:async-func="set_pin_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1007">Change the user's pin on this slot that this session is opened on.

This call may block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="896"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1023">Whether successful or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1009">Change the PIN for this session's slot.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="old_pin"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1010">the user's old PIN, or %NULL
          for protected authentication path.</doc>
            <array length="1" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_old_pin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1012">The length of the PIN.</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="new_pin"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1013">the user's new PIN, or %NULL
          for protected authentication path</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_new_pin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1015">The length of the PIN.</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1016">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pin_async"
              c:identifier="gck_session_set_pin_async"
              glib:finish-func="set_pin_finish"
              glib:sync-func="set_pin">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1034">Change the user's pin on this slot that this session is opened on.

This call will return immediately and completes asynchronously.</doc>
        <source-position filename="gck/gck.h" line="904"/>
        <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="gck/gck-session.c"
                 line="1036">Change the PIN for this session's slot.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="old_pin"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1037">the user's old PIN, or %NULL
          for protected authentication path</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_old_pin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1039">the length of the old PIN</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="new_pin"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1040">the user's new PIN, or %NULL
          for protected authentication path</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_new_pin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1042">the length of the new PIN</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1043">Optional cancellation object, 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="6">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1044">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="gck/gck-session.c"
                 line="1045">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pin_finish"
              c:identifier="gck_session_set_pin_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="1070">Get the result of changing a user's PIN.</doc>
        <source-position filename="gck/gck.h" line="913"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="1078">Whether the operation was successful or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1072">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="1073">The result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="sign"
              c:identifier="gck_session_sign"
              throws="1"
              glib:async-func="sign_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="3000">Sign data in a mechanism specific manner. This call may
block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1112"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="3014">the data that was signed,
         or %NULL if an error occured</doc>
          <array length="4" 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="gck/gck-session.c"
                 line="3002">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3003">The key to sign with.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mech_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3004">The mechanism type to use for signing.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3005">data to sign</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3006">length of the data to sign</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="n_result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3007">location to store the length of the result data</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3008">Optional cancellation object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="sign_async"
              c:identifier="gck_session_sign_async"
              glib:finish-func="sign_finish"
              glib:sync-func="sign">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="3062">Sign data in a mechanism specific manner. This call will
return immediately and complete asynchronously.</doc>
        <source-position filename="gck/gck.h" line="1130"/>
        <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="gck/gck-session.c"
                 line="3064">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3065">The key to sign with.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3066">The mechanism type and parameters to use for signing.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3067">data to sign</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3068">length of the data to sign</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3069">A GCancellable which can be 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="6">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3070">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="gck/gck-session.c"
                 line="3071">A pointer to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="sign_finish"
              c:identifier="gck_session_sign_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="3095">Get the result of an signing operation.</doc>
        <source-position filename="gck/gck.h" line="1139"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="3104">the data that was signed,
         or %NULL if an error occurred</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="gck/gck-session.c"
                 line="3097">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3098">The result object passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="n_result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3099">A location to store the length of the result data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="sign_full" c:identifier="gck_session_sign_full" throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="3025">Sign data in a mechanism specific manner. This call may
block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1121"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="3039">The data that was signed, or %NULL if an error occured.</doc>
          <type name="guint8" c:type="guchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3027">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3028">The key to sign with.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3029">The mechanism type and parameters to use for signing.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3030">data to sign</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3031">length of the data to sign</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="n_result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3032">location to store the length of the result data</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3033">A GCancellable which can be used to cancel the operation.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unwrap_key"
              c:identifier="gck_session_unwrap_key"
              throws="1"
              glib:async-func="unwrap_key_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2244">Unwrap a key from a byte stream. This call may block for an
indefinite period.

If @attrs is a floating reference, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="1208"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2260">the new unwrapped key or %NULL if the
         operation failed</doc>
          <type name="Object" c:type="GckObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2246">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="wrapper" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2247">The key to use for unwrapping.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mech_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2248">The mechanism to use for unwrapping.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2249">the wrapped data as a byte stream</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2250">The length of the wrapped data.</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2251">Additional attributes for the unwrapped key.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2252">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unwrap_key_async"
              c:identifier="gck_session_unwrap_key_async"
              glib:finish-func="unwrap_key_finish"
              glib:sync-func="unwrap_key">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2332">Unwrap a key from a byte stream. This call will
return immediately and complete asynchronously.

If @attrs is a floating reference, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="1226"/>
        <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="gck/gck-session.c"
                 line="2334">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="wrapper" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2335">The key to use for unwrapping.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2336">The mechanism to use for unwrapping.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2337">the wrapped data as a byte stream</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2338">The length of the wrapped data.</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2339">Additional attributes for the unwrapped key.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2340">Optional cancellation object 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="7">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2341">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="gck/gck-session.c"
                 line="2342">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="unwrap_key_finish"
              c:identifier="gck_session_unwrap_key_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2384">Get the result of a unwrap key operation.</doc>
        <source-position filename="gck/gck.h" line="1236"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2392">the new unwrapped key or %NULL if the operation
         failed.</doc>
          <type name="Object" c:type="GckObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2386">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2387">The async result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unwrap_key_full"
              c:identifier="gck_session_unwrap_key_full"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2277">Unwrap a key from a byte stream. This call may block for an
indefinite period.

If @attrs is a floating reference, it is consumed.</doc>
        <source-position filename="gck/gck.h" line="1217"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2293">the new unwrapped key or %NULL if the operation
         failed</doc>
          <type name="Object" c:type="GckObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2279">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="wrapper" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2280">The key to use for unwrapping.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2281">The mechanism to use for unwrapping.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2282">the wrapped data as a byte stream</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2283">The length of the wrapped data.</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2284">Additional attributes for the unwrapped key.</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2285">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify"
              c:identifier="gck_session_verify"
              throws="1"
              glib:async-func="verify_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="3177">Verify data in a mechanism specific manner. This call may
block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1144"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="3192">%TRUE if the data verified correctly, otherwise a failure or error occurred.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3179">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3180">The key to verify with.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mech_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3181">The mechanism type to use for verifying.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3182">data to verify</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3183">length of the data to verify</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="signature" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3184">the signature</doc>
            <array length="5" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_signature" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3185">length of the signature</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3186">Optional cancellation object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify_async"
              c:identifier="gck_session_verify_async"
              glib:finish-func="verify_finish"
              glib:sync-func="verify">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="3254">Verify data in a mechanism specific manner. This call returns
immediately and completes asynchronously.</doc>
        <source-position filename="gck/gck.h" line="1164"/>
        <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="gck/gck-session.c"
                 line="3256">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3257">The key to verify with.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3258">The mechanism type and parameters to use for signing.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3259">data to verify</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3260">the length of the data to verify</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="signature" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3261">the signature</doc>
            <array length="5" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_signature" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3262">the length of the signature</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3263">A GCancellable which can be 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="8">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3264">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="gck/gck-session.c"
                 line="3265">A pointer to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify_finish"
              c:identifier="gck_session_verify_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="3302">Get the result of an verify operation.</doc>
        <source-position filename="gck/gck.h" line="1175"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="3310">%TRUE if the data verified correctly, otherwise a failure or error occurred.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3304">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3305">The result object passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify_full"
              c:identifier="gck_session_verify_full"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="3203">Verify data in a mechanism specific manner. This call may
block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1154"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="3218">%TRUE if the data verified correctly, otherwise a failure or error occurred.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3205">The session.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3206">The key to verify with.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3207">The mechanism type and parameters to use for signing.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3208">data to verify</doc>
            <array length="3" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_input" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3209">the length of the data to verify</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="signature" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3210">the signature</doc>
            <array length="5" zero-terminated="0" c:type="const guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="n_signature" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3211">length of the signature</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="3212">A GCancellable which can be used to cancel the operation.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="wrap_key"
              c:identifier="gck_session_wrap_key"
              throws="1"
              glib:async-func="wrap_key_async">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2059">Wrap a key into a byte stream. This call may block for an
indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1179"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2072">the wrapped data or %NULL
         if the operation failed</doc>
          <array length="3" 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="gck/gck-session.c"
                 line="2061">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="wrapper" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2062">The key to use for wrapping.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mech_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2063">The mechanism type to use for wrapping.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="wrapped" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2064">The key to wrap.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="n_result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2065">A location in which to return the length of the wrapped data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2066">A #GCancellable or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="wrap_key_async"
              c:identifier="gck_session_wrap_key_async"
              glib:finish-func="wrap_key_finish"
              glib:sync-func="wrap_key">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2130">Wrap a key into a byte stream. This call will
return immediately and complete asynchronously.</doc>
        <source-position filename="gck/gck.h" line="1195"/>
        <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="gck/gck-session.c"
                 line="2132">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="wrapper" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2133">The key to use for wrapping.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2134">The mechanism to use for wrapping.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="wrapped" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2135">The key to wrap.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2136">Optional cancellation object 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="gck/gck-session.c"
                 line="2137">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="gck/gck-session.c"
                 line="2138">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="wrap_key_finish"
              c:identifier="gck_session_wrap_key_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2171">Get the result of a wrap key operation.</doc>
        <source-position filename="gck/gck.h" line="1203"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2180">the wrapped data or %NULL
         if the operation failed</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="gck/gck-session.c"
                 line="2173">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2174">The async result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="n_result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2175">A location in which to return the length of the wrapped data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="wrap_key_full"
              c:identifier="gck_session_wrap_key_full"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="2083">Wrap a key into a byte stream. This call may block for an
indefinite period.</doc>
        <source-position filename="gck/gck.h" line="1187"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="2096">the wrapped data or %NULL
         if the operation failed</doc>
          <array length="3" 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="gck/gck-session.c"
                 line="2085">The session to use.</doc>
            <type name="Session" c:type="GckSession*"/>
          </instance-parameter>
          <parameter name="wrapper" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2086">The key to use for wrapping.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="mechanism" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2087">The mechanism to use for wrapping.</doc>
            <type name="Mechanism" c:type="GckMechanism*"/>
          </parameter>
          <parameter name="wrapped" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2088">The key to wrap.</doc>
            <type name="Object" c:type="GckObject*"/>
          </parameter>
          <parameter name="n_result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2089">A location in which to return the length of the wrapped data.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="2090">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="app-data"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="338">Raw PKCS#11 application data used to open the PKCS#11 session.</doc>
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="handle"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_handle"
                default-value="0">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="286">The raw CK_SESSION_HANDLE handle of this session.</doc>
        <type name="gulong" c:type="gulong"/>
      </property>
      <property name="interaction"
                writable="1"
                transfer-ownership="none"
                setter="set_interaction"
                getter="get_interaction">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="316">Interaction object used to ask the user for pins when opening
sessions. Used if the session_options of the enumerator have
%GCK_SESSION_LOGIN_USER</doc>
        <type name="Gio.TlsInteraction"/>
      </property>
      <property name="module" transfer-ownership="none" getter="get_module">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="276">The GckModule that this session is opened on.</doc>
        <type name="Module"/>
      </property>
      <property name="opening-flags"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="328">Raw PKCS#11 flags used to open the PKCS#11 session.</doc>
        <type name="gulong" c:type="gulong"/>
      </property>
      <property name="options"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_options"
                default-value="GCK_SESSION_READ_ONLY">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="306">The options this session was opened with.</doc>
        <type name="SessionOptions"/>
      </property>
      <property name="slot"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_slot">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="296">The GckSlot this session is opened on.</doc>
        <type name="Slot"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="SessionPrivate" c:type="GckSessionPrivate*"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <glib:signal name="discard-handle" when="last">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="347">When a GckSession is being disposed of it emits this signal to allow
a session pool to pick up the handle and keep it around.

If no signal handler claims the handle, then it is closed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="357">Whether or not this handle was claimed.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="handle" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="350">The handle being discarded.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="SessionClass"
            c:type="GckSessionClass"
            glib:is-gtype-struct-for="Session">
      <source-position filename="gck/gck.h" line="838"/>
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="discard_handle" introspectable="0">
        <callback name="discard_handle" introspectable="0">
          <source-position filename="gck/gck.h" line="834"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="session" transfer-ownership="none">
              <type name="Session" c:type="GckSession*"/>
            </parameter>
            <parameter name="handle" transfer-ownership="none">
              <type c:type="CK_SESSION_HANDLE"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="SessionInfo"
            c:type="GckSessionInfo"
            glib:type-name="GckSessionInfo"
            glib:get-type="gck_session_info_get_type"
            c:symbol-prefix="session_info">
      <doc xml:space="preserve"
           filename="gck/gck-session.c"
           line="537">Information about the session. This is analogous to a CK_SESSION_INFO structure.

When done with this structure, release it using gck_session_info_free().</doc>
      <source-position filename="gck/gck.h" line="801"/>
      <field name="slot_id" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="539">The handle of the PKCS11 slot that this session is opened on.</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
      <field name="state" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="540">The user login state of the session.</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
      <field name="flags" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="541">Various PKCS11 flags.</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
      <field name="device_error" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="542">The last device error that occurred from an operation on this session.</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
      <method name="copy" c:identifier="gck_session_info_copy">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="552">Make a new copy of a session info structure.</doc>
        <source-position filename="gck/gck.h" line="807"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-session.c"
               line="558">a new copy of the session info</doc>
          <type name="SessionInfo" c:type="GckSessionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="session_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="554">a session info structure</doc>
            <type name="SessionInfo" c:type="GckSessionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gck_session_info_free">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="566">Free the GckSessionInfo structure and all associated memory.</doc>
        <source-position filename="gck/gck.h" line="809"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-session.c"
                 line="568">Session info to free.</doc>
            <type name="SessionInfo" c:type="GckSessionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <bitfield name="SessionOptions"
              glib:type-name="GckSessionOptions"
              glib:get-type="gck_session_options_get_type"
              c:type="GckSessionOptions">
      <doc xml:space="preserve"
           filename="gck/gck-session.c"
           line="42">Options for creating sessions.</doc>
      <member name="read_only"
              value="0"
              c:identifier="GCK_SESSION_READ_ONLY"
              glib:nick="read-only"
              glib:name="GCK_SESSION_READ_ONLY">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="44">Open session as read only</doc>
      </member>
      <member name="read_write"
              value="2"
              c:identifier="GCK_SESSION_READ_WRITE"
              glib:nick="read-write"
              glib:name="GCK_SESSION_READ_WRITE">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="45">Open sessions as read/write</doc>
      </member>
      <member name="login_user"
              value="4"
              c:identifier="GCK_SESSION_LOGIN_USER"
              glib:nick="login-user"
              glib:name="GCK_SESSION_LOGIN_USER">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="46">Login as user on new sessions</doc>
      </member>
      <member name="authenticate"
              value="8"
              c:identifier="GCK_SESSION_AUTHENTICATE"
              glib:nick="authenticate"
              glib:name="GCK_SESSION_AUTHENTICATE">
        <doc xml:space="preserve"
             filename="gck/gck-session.c"
             line="47">Authenticate as necessary</doc>
      </member>
    </bitfield>
    <record name="SessionPrivate"
            c:type="GckSessionPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gck/gck.h" line="821"/>
    </record>
    <class name="Slot"
           c:symbol-prefix="slot"
           c:type="GckSlot"
           parent="GObject.Object"
           glib:type-name="GckSlot"
           glib:get-type="gck_slot_get_type"
           glib:type-struct="SlotClass">
      <doc xml:space="preserve"
           filename="gck/gck-slot.c"
           line="33">Represents a PKCS#11 slot that can contain a token.

A PKCS#11 slot can contain a token. As an example, a slot might be a card
reader, and the token the card. If the PKCS#11 module is not a hardware
driver, often the slot and token are equivalent.</doc>
      <source-position filename="gck/gck.h" line="717"/>
      <function name="from_handle" c:identifier="gck_slot_from_handle">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="465">Create a new GckSlot object for a raw PKCS#11 handle.</doc>
        <source-position filename="gck/gck.h" line="729"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="472">The new GckSlot object.</doc>
          <type name="Slot" c:type="GckSlot*"/>
        </return-value>
        <parameters>
          <parameter name="module" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="467">The module that this slot is on.</doc>
            <type name="Module" c:type="GckModule*"/>
          </parameter>
          <parameter name="slot_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="468">The raw PKCS#11 handle or slot id of this slot.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </function>
      <method name="enumerate_objects"
              c:identifier="gck_slot_enumerate_objects">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="888">Setup an enumerator for listing matching objects on the slot.

If the @match #GckAttributes is floating, it is consumed.

This call will not block but will return an enumerator immediately.</doc>
        <source-position filename="gck/gck.h" line="780"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="900">a new enumerator</doc>
          <type name="Enumerator" c:type="GckEnumerator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="890">a #GckSlot to enumerate objects on</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
          <parameter name="match" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="891">attributes that the objects must match, or empty for all objects</doc>
            <type name="Attributes" c:type="GckAttributes*"/>
          </parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="892">options for opening a session</doc>
            <type name="SessionOptions" c:type="GckSessionOptions"/>
          </parameter>
        </parameters>
      </method>
      <method name="equal" c:identifier="gck_slot_equal">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="413">Checks equality of two slots. Two GckSlot objects can point to the same
underlying PKCS#11 slot.</doc>
        <source-position filename="gck/gck.h" line="721"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="421">%TRUE if slot1 and slot2 are equal.
              %FALSE if either is not a GckSlot.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="slot1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="415">a pointer to the first #GckSlot</doc>
            <type name="Slot" c:type="gconstpointer"/>
          </instance-parameter>
          <parameter name="slot2" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="416">a pointer to the second #GckSlot</doc>
            <type name="Slot" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_handle"
              c:identifier="gck_slot_get_handle"
              glib:get-property="handle">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="484">Get the raw PKCS#11 handle of a slot.</doc>
        <source-position filename="gck/gck.h" line="734"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="490">the raw CK_SLOT_ID handle</doc>
          <type name="gulong" c:type="gulong"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="486">The slot to get the handle of.</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_info" c:identifier="gck_slot_get_info">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="516">Get the information for this slot.</doc>
        <source-position filename="gck/gck.h" line="736"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="522">the slot information, when done, use gck_slot_info_free()
         to release it.</doc>
          <type name="SlotInfo" c:type="GckSlotInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="518">The slot to get info for.</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mechanism_info"
              c:identifier="gck_slot_get_mechanism_info">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="763">Get information for the specified mechanism.</doc>
        <source-position filename="gck/gck.h" line="742"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="770">the mechanism information, or %NULL if failed; use
         gck_mechanism_info_free() when done with it</doc>
          <type name="MechanismInfo" c:type="GckMechanismInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="765">The slot to get mechanism info from.</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
          <parameter name="mech_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="766">The mechanisms type to get info for.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_mechanisms" c:identifier="gck_slot_get_mechanisms">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="707">Get the available mechanisms for this slot.</doc>
        <source-position filename="gck/gck.h" line="740"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="713">a list of the mechanisms
         for this slot, which should be freed with g_array_free ()</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="gulong"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="709">The slot to get mechanisms for.</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_module"
              c:identifier="gck_slot_get_module"
              glib:get-property="module">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="499">Get the module that this slot is on.</doc>
        <source-position filename="gck/gck.h" line="732"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="505">The module, you must unreference this after
         you're done with it.</doc>
          <type name="Module" c:type="GckModule*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="501">The slot to get the module for.</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_token_info" c:identifier="gck_slot_get_token_info">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="668">Get the token information for this slot.</doc>
        <source-position filename="gck/gck.h" line="738"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="674">the token information; when done, use gck_token_info_free()
         to release it</doc>
          <type name="TokenInfo" c:type="GckTokenInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="670">The slot to get info for.</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_flags" c:identifier="gck_slot_has_flags">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="810">Check if the PKCS11 slot has the given flags.</doc>
        <source-position filename="gck/gck.h" line="745"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="817">Whether one or more flags exist.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="812">The GckSlot object.</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="813">The flags to check.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
        </parameters>
      </method>
      <method name="hash" c:identifier="gck_slot_hash">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="441">Create a hash value for the GckSlot.

This function is intended for easily hashing a GckSlot to add to
a GHashTable or similar data structure.</doc>
        <source-position filename="gck/gck.h" line="724"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="450">An integer that can be used as a hash value, or 0 if invalid.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="slot" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="443">a pointer to a #GckSlot</doc>
            <type name="Slot" c:type="gconstpointer"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="match" c:identifier="gck_slot_match">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="1115">Check whether the PKCS#11 URI matches the slot</doc>
        <source-position filename="gck/gck.h" line="726"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="1122">whether the URI matches or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="1117">the slot to match</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="1118">the uri to match against the slot</doc>
            <type name="UriData" c:type="GckUriData*"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_session"
              c:identifier="gck_slot_open_session"
              throws="1"
              glib:async-func="open_session_async">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="950">Open a session on the slot. If the 'auto reuse' setting is set,
then this may be a recycled session with the same flags.

This call may block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="748"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="962">a new session or %NULL if an error occurs</doc>
          <type name="Session" c:type="GckSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="952">The slot ot open a session on.</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="953">The #GckSessionOptions to open a session with.</doc>
            <type name="SessionOptions" c:type="GckSessionOptions"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="954">An optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_session_async"
              c:identifier="gck_slot_open_session_async"
              glib:finish-func="open_session_finish"
              glib:sync-func="open_session">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="1007">Open a session on the slot. If the 'auto reuse' setting is set,
then this may be a recycled session with the same flags.

This call will return immediately and complete asynchronously.</doc>
        <source-position filename="gck/gck.h" line="761"/>
        <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="gck/gck-slot.c"
                 line="1009">The slot to open a session on.</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="1010">The options to open the new session with.</doc>
            <type name="SessionOptions" c:type="GckSessionOptions"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="1011">Optional cancellation object, 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="gck/gck-slot.c"
                 line="1012">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="gck/gck-slot.c"
                 line="1013">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_session_finish"
              c:identifier="gck_slot_open_session_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="1094">Get the result of an open session operation. If the 'auto reuse' setting is set,
then this may be a recycled session with the same flags.</doc>
        <source-position filename="gck/gck.h" line="776"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="1103">the new session or %NULL if an error occurs</doc>
          <type name="Session" c:type="GckSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="1096">The slot to open a session on.</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="1097">The result passed to the callback.</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_session_full"
              c:identifier="gck_slot_open_session_full"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="973">Open a session on the slot. If the 'auto reuse' setting is set,
then this may be a recycled session with the same flags.

This call may block for an indefinite period.</doc>
        <source-position filename="gck/gck.h" line="753"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="988">a new session or %NULL if an error occurs</doc>
          <type name="Session" c:type="GckSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="975">The slot to open a session on.</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="976">The options to open the new session with.</doc>
            <type name="SessionOptions" c:type="GckSessionOptions"/>
          </parameter>
          <parameter name="pkcs11_flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="977">Additional raw PKCS#11 flags.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="app_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="978">Application data for notification callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="979">PKCS#11 notification callback.</doc>
            <type c:type="CK_NOTIFY"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="980">Optional cancellation object, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_session_full_async"
              c:identifier="gck_slot_open_session_full_async"
              introspectable="0">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="1048">Open a session on the slot. If the 'auto reuse' setting is set,
then this may be a recycled session with the same flags.

This call will return immediately and complete asynchronously.</doc>
        <source-position filename="gck/gck.h" line="767"/>
        <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="gck/gck-slot.c"
                 line="1050">The slot to open a session on.</doc>
            <type name="Slot" c:type="GckSlot*"/>
          </instance-parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="1051">Options to open the new session with.</doc>
            <type name="SessionOptions" c:type="GckSessionOptions"/>
          </parameter>
          <parameter name="pkcs11_flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="1052">Additional raw PKCS#11 flags.</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="app_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="1053">Application data for notification callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="1054">PKCS#11 notification callback.</doc>
            <type c:type="CK_NOTIFY"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="1055">Optional cancellation object, 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="6">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="1056">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="gck/gck-slot.c"
                 line="1057">Data to pass to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <property name="handle"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_handle"
                default-value="0">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="140">The raw CK_SLOT_ID handle of this slot.</doc>
        <type name="gulong" c:type="gulong"/>
      </property>
      <property name="module"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_module">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="130">The PKCS11 object that this slot is a part of.</doc>
        <type name="Module"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pv" readable="0" private="1">
        <type name="SlotPrivate" c:type="GckSlotPrivate*"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="SlotClass"
            c:type="GckSlotClass"
            glib:is-gtype-struct-for="Slot">
      <source-position filename="gck/gck.h" line="717"/>
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="9">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="SlotInfo"
            c:type="GckSlotInfo"
            glib:type-name="GckSlotInfo"
            glib:get-type="gck_slot_info_get_type"
            c:symbol-prefix="slot_info">
      <doc xml:space="preserve"
           filename="gck/gck-slot.c"
           line="155">Represents information about a PKCS11 slot.

This is analogous to a CK_SLOT_INFO structure, but the
strings are far more usable.

When you're done with this structure it should be released with
gck_slot_info_free().</doc>
      <source-position filename="gck/gck.h" line="622"/>
      <field name="slot_description" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="157">Description of the slot.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="manufacturer_id" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="158">The manufacturer of this slot.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="flags" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="159">Various PKCS11 flags that apply to this slot.</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
      <field name="hardware_version_major" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="160">The major version of the hardware.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="hardware_version_minor" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="161">The minor version of the hardware.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="firmware_version_major" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="162">The major version of the firmware.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="firmware_version_minor" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="163">The minor version of the firmware.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <method name="copy" c:identifier="gck_slot_info_copy">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="177">Make a copy of the slot info.</doc>
        <source-position filename="gck/gck.h" line="628"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="183">a newly allocated copy slot info</doc>
          <type name="SlotInfo" c:type="GckSlotInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="slot_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="179">a slot info</doc>
            <type name="SlotInfo" c:type="GckSlotInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gck_slot_info_free">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="199">Free the GckSlotInfo and associated resources.</doc>
        <source-position filename="gck/gck.h" line="630"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="slot_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="201">The slot info to free, or %NULL.</doc>
            <type name="SlotInfo" c:type="GckSlotInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="SlotPrivate"
            c:type="GckSlotPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="gck/gck.h" line="702"/>
    </record>
    <record name="TokenInfo"
            c:type="GckTokenInfo"
            glib:type-name="GckTokenInfo"
            glib:get-type="gck_token_info_get_type"
            c:symbol-prefix="token_info">
      <doc xml:space="preserve"
           filename="gck/gck-slot.c"
           line="215">Represents information about a PKCS11 token.

This is analogous to a CK_TOKEN_INFO structure, but the
strings are far more usable.

When you're done with this structure it should be released with
gck_token_info_free().</doc>
      <source-position filename="gck/gck.h" line="657"/>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="217">The displayable token label.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="manufacturer_id" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="218">The manufacturer of this slot.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="model" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="219">The token model number as a string.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="serial_number" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="220">The token serial number as a string.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="flags" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="221">Various PKCS11 flags that apply to this token.</doc>
        <type name="gulong" c:type="gulong"/>
      </field>
      <field name="max_session_count" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="222">The maximum number of sessions allowed on this token.</doc>
        <type name="glong" c:type="glong"/>
      </field>
      <field name="session_count" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="223">The number of sessions open on this token.</doc>
        <type name="glong" c:type="glong"/>
      </field>
      <field name="max_rw_session_count" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="224">The maximum number of read/write sessions allowed on this token.</doc>
        <type name="glong" c:type="glong"/>
      </field>
      <field name="rw_session_count" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="225">The number of sessions open on this token.</doc>
        <type name="glong" c:type="glong"/>
      </field>
      <field name="max_pin_len" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="226">The maximum length of a PIN for locking this token.</doc>
        <type name="glong" c:type="glong"/>
      </field>
      <field name="min_pin_len" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="227">The minimum length of a PIN for locking this token.</doc>
        <type name="glong" c:type="glong"/>
      </field>
      <field name="total_public_memory" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="228">The total amount of memory on this token for storing public objects.</doc>
        <type name="glong" c:type="glong"/>
      </field>
      <field name="free_public_memory" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="229">The available amount of memory on this token for storing public objects.</doc>
        <type name="glong" c:type="glong"/>
      </field>
      <field name="total_private_memory" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="230">The total amount of memory on this token for storing private objects.</doc>
        <type name="glong" c:type="glong"/>
      </field>
      <field name="free_private_memory" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="231">The available amount of memory on this token for storing private objects.</doc>
        <type name="glong" c:type="glong"/>
      </field>
      <field name="hardware_version_major" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="232">The major version of the hardware.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="hardware_version_minor" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="233">The minor version of the hardware.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="firmware_version_major" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="234">The major version of the firmware.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="firmware_version_minor" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="235">The minor version of the firmware.</doc>
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="utc_time" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="236">If the token has a hardware clock, this is set to the number of seconds since the epoch.</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <method name="copy" c:identifier="gck_token_info_copy">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="250">Make a copy of the token info.</doc>
        <source-position filename="gck/gck.h" line="663"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="256">a newly allocated copy token info</doc>
          <type name="TokenInfo" c:type="GckTokenInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="token_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="252">a token info</doc>
            <type name="TokenInfo" c:type="GckTokenInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gck_token_info_free">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="272">Free the GckTokenInfo and associated resources.</doc>
        <source-position filename="gck/gck.h" line="665"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="token_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-slot.c"
                 line="274">The token info to free, or %NULL.</doc>
            <type name="TokenInfo" c:type="GckTokenInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <constant name="URI_FOR_MODULE_WITH_VERSION"
              value="24"
              c:type="GCK_URI_FOR_MODULE_WITH_VERSION">
      <doc xml:space="preserve"
           filename="gck/gck-uri.c"
           line="64">The URI will match specific version of modules. To be used as a GckUriFlags argument.</doc>
      <source-position filename="gck/gck.h" line="1557"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="URI_FOR_OBJECT_ON_TOKEN"
              value="6"
              c:type="GCK_URI_FOR_OBJECT_ON_TOKEN">
      <doc xml:space="preserve"
           filename="gck/gck-uri.c"
           line="70">The URI will match objects on a specific token. To be used as a GckUriFlags argument.</doc>
      <source-position filename="gck/gck.h" line="1559"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="URI_FOR_OBJECT_ON_TOKEN_AND_MODULE"
              value="8"
              c:type="GCK_URI_FOR_OBJECT_ON_TOKEN_AND_MODULE">
      <doc xml:space="preserve"
           filename="gck/gck-uri.c"
           line="76">The token inserted into a device with a specific module.</doc>
      <source-position filename="gck/gck.h" line="1561"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <record name="UriData"
            c:type="GckUriData"
            glib:type-name="GckUriData"
            glib:get-type="gck_uri_data_get_type"
            c:symbol-prefix="uri_data">
      <doc xml:space="preserve"
           filename="gck/gck-uri.c"
           line="37">Information about the contents of a PKCS#11 URI. Various fields may be %NULL
depending on the context that the URI was parsed for.

Since PKCS#11 URIs represent a set which results from the intersections of
all of the URI parts, if @any_recognized is set to %TRUE then usually the URI
should be treated as not matching anything.</doc>
      <source-position filename="gck/gck.h" line="1571"/>
      <field name="any_unrecognized" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="39">whether any parts of the PKCS#11 URI were unsupported or unrecognized.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="module_info" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="40">information about the PKCS#11 modules matching the URI.</doc>
        <type name="ModuleInfo" c:type="GckModuleInfo*"/>
      </field>
      <field name="token_info" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="41">information about the PKCS#11 tokens matching the URI.</doc>
        <type name="TokenInfo" c:type="GckTokenInfo*"/>
      </field>
      <field name="attributes" writable="1">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="42">information about the PKCS#11 objects matching the URI.</doc>
        <type name="Attributes" c:type="GckAttributes*"/>
      </field>
      <field name="dummy" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <constructor name="new" c:identifier="gck_uri_data_new">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="146">Allocate a new GckUriData structure. None of the fields
will be set.</doc>
        <source-position filename="gck/gck.h" line="1577"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-uri.c"
               line="152">a newly allocated GckUriData, free with
         gck_uri_data_free()</doc>
          <type name="UriData" c:type="GckUriData*"/>
        </return-value>
      </constructor>
      <method name="copy" c:identifier="gck_uri_data_copy">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="295">Copy a #GckUriData</doc>
        <source-position filename="gck/gck.h" line="1590"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-uri.c"
               line="301">newly allocated copy of the uri data</doc>
          <type name="UriData" c:type="GckUriData*"/>
        </return-value>
        <parameters>
          <instance-parameter name="uri_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="gck/gck-uri.c"
                 line="297">URI data to copy</doc>
            <type name="UriData" c:type="GckUriData*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gck_uri_data_free">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="315">Free a #GckUriData.</doc>
        <source-position filename="gck/gck.h" line="1592"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="uri_data" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="gck/gck-uri.c"
                 line="317">URI data to free.</doc>
            <type name="UriData" c:type="GckUriData*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="UriError"
                 glib:type-name="GckUriError"
                 glib:get-type="gck_uri_error_get_type"
                 c:type="GckUriError">
      <doc xml:space="preserve"
           filename="gck/gck-uri.c"
           line="82">Various error codes used with PKCS#11 URIs</doc>
      <member name="bad_scheme"
              value="1"
              c:identifier="GCK_URI_BAD_SCHEME"
              glib:nick="bad-scheme"
              glib:name="GCK_URI_BAD_SCHEME">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="84">invalid URI scheme</doc>
      </member>
      <member name="bad_encoding"
              value="2"
              c:identifier="GCK_URI_BAD_ENCODING"
              glib:nick="bad-encoding"
              glib:name="GCK_URI_BAD_ENCODING">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="85">bad URI encoding</doc>
      </member>
      <member name="bad_syntax"
              value="3"
              c:identifier="GCK_URI_BAD_SYNTAX"
              glib:nick="bad-syntax"
              glib:name="GCK_URI_BAD_SYNTAX">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="86">bad URI syntax</doc>
      </member>
      <member name="bad_version"
              value="4"
              c:identifier="GCK_URI_BAD_VERSION"
              glib:nick="bad-version"
              glib:name="GCK_URI_BAD_VERSION">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="87">bad URI version component</doc>
      </member>
      <member name="not_found"
              value="5"
              c:identifier="GCK_URI_NOT_FOUND"
              glib:nick="not-found"
              glib:name="GCK_URI_NOT_FOUND">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="88">piece of the URI was not found</doc>
      </member>
      <function name="get_quark" c:identifier="gck_uri_error_get_quark">
        <source-position filename="gck/gck.h" line="1575"/>
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <bitfield name="UriFlags"
              glib:type-name="GckUriFlags"
              glib:get-type="gck_uri_flags_get_type"
              c:type="GckUriFlags">
      <doc xml:space="preserve"
           filename="gck/gck-uri.c"
           line="52">Which parts of the PKCS#11 URI will be parsed or formatted. These can be
combined.</doc>
      <member name="for_object"
              value="2"
              c:identifier="GCK_URI_FOR_OBJECT"
              glib:nick="for-object"
              glib:name="GCK_URI_FOR_OBJECT">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="56">the URI will be used to match objects.</doc>
      </member>
      <member name="for_token"
              value="4"
              c:identifier="GCK_URI_FOR_TOKEN"
              glib:nick="for-token"
              glib:name="GCK_URI_FOR_TOKEN">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="55">the URI will be used to match tokens.</doc>
      </member>
      <member name="for_module"
              value="8"
              c:identifier="GCK_URI_FOR_MODULE"
              glib:nick="for-module"
              glib:name="GCK_URI_FOR_MODULE">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="54">the URI will be used to match modules.</doc>
      </member>
      <member name="with_version"
              value="16"
              c:identifier="GCK_URI_WITH_VERSION"
              glib:nick="with-version"
              glib:name="GCK_URI_WITH_VERSION">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="57">the URI has specific version numbers for module and/or token</doc>
      </member>
      <member name="for_any"
              value="65535"
              c:identifier="GCK_URI_FOR_ANY"
              glib:nick="for-any"
              glib:name="GCK_URI_FOR_ANY">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="58">parse all recognized components of the URI.</doc>
      </member>
    </bitfield>
    <constant name="VENDOR_CODE" value="1195592448" c:type="GCK_VENDOR_CODE">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="80">Custom PKCS#11 errors that originate from the gck library, are
based at this error code.</doc>
      <source-position filename="gck/gck.h" line="50"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <function name="builder_unref"
              c:identifier="gck_builder_unref"
              moved-to="Builder.unref">
      <doc xml:space="preserve"
           filename="gck/gck-attributes.c"
           line="239">Unreferences a builder. If this was the last reference then the builder
is freed.

It is an error to use this function on builders that were allocated on the
stack.</doc>
      <source-position filename="gck/gck.h" line="216"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="builder"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gck/gck-attributes.c"
               line="241">the builder</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="error_get_quark"
              c:identifier="gck_error_get_quark"
              moved-to="Error.get_quark">
      <source-position filename="gck/gck.h" line="59"/>
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="list_get_boxed_type"
              c:identifier="gck_list_get_boxed_type">
      <source-position filename="gck/gck.h" line="63"/>
      <return-value transfer-ownership="none">
        <type name="GType" c:type="GType"/>
      </return-value>
    </function>
    <function name="list_ref_copy"
              c:identifier="gck_list_ref_copy"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="294">Copy a list of GObject based pointers. All objects
in the list will be reffed and the list will be copied.</doc>
      <source-position filename="gck/gck.h" line="65"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-misc.c"
             line="302">the copied and
              reffed list, when done, free it with gck_list_unref_free ()</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="GObject.Object"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="reflist" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="296">list of GObject reference counted
          objects</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="GObject.Object"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="list_unref_free"
              c:identifier="gck_list_unref_free"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="276">Free a list of GObject based pointers. All objects in the list
will be unreffed and then the list itself will be freed.</doc>
      <source-position filename="gck/gck.h" line="67"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="reflist" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="278">list of Gobject reference counted pointers</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="GObject.Object"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function-macro name="mechanisms_at"
                    c:identifier="gck_mechanisms_at"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gck/gck-slot.c"
           line="350">Get a specific mechanism in a the set.</doc>
      <source-position filename="gck/gck.h" line="687"/>
      <parameters>
        <parameter name="a">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="352">A GckMechanisms set.</doc>
        </parameter>
        <parameter name="i">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="353">The index of a mechanism</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function name="mechanisms_check"
              c:identifier="gck_mechanisms_check"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gck/gck-slot.c"
           line="367">Check whether all the mechanism types are in the list.

The arguments should be a list of CKM_XXX mechanism types. The last argument
should be GCK_INVALID.</doc>
      <source-position filename="gck/gck.h" line="689"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="378">Whether the mechanism is in the list or not.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mechanisms" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="369">A list of mechanisms, perhaps
             retrieved from gck_slot_get_mechanisms().</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="gulong"/>
          </array>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="371">A list of mechanism types followed by GCK_INVALID.</doc>
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function-macro name="mechanisms_length"
                    c:identifier="gck_mechanisms_length"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="gck/gck-slot.c"
           line="341">Get the number of GckMechanismInfo in the set.</doc>
      <source-position filename="gck/gck.h" line="685"/>
      <parameters>
        <parameter name="a">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="343">A GckMechanisms set.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function name="message_from_rv" c:identifier="gck_message_from_rv">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="126">Get a message for a PKCS#11 return value or error code. Do not
pass `CKR_OK` or other non-errors to this function.</doc>
      <source-position filename="gck/gck.h" line="69"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gck/gck-misc.c"
             line="133">The user readable message.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="rv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="128">The PKCS#11 return value to get a message for.</doc>
          <type name="gulong" c:type="gulong"/>
        </parameter>
      </parameters>
    </function>
    <function name="modules_enumerate_objects"
              c:identifier="gck_modules_enumerate_objects">
      <doc xml:space="preserve"
           filename="gck/gck-modules.c"
           line="188">Setup an enumerator for listing matching objects on the modules.

This call will not block but will return an enumerator immediately.

If the @attrs [struct@Attributes] is floating, it is consumed.</doc>
      <source-position filename="gck/gck.h" line="506"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-modules.c"
             line="200">A new enumerator, which should be released
with g_object_unref().</doc>
        <type name="Enumerator" c:type="GckEnumerator*"/>
      </return-value>
      <parameters>
        <parameter name="modules" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="190">The modules</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Module"/>
          </type>
        </parameter>
        <parameter name="attrs" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="191">attributes that the objects must have, or empty for all objects</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </parameter>
        <parameter name="session_options" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="192">Options from GckSessionOptions</doc>
          <type name="SessionOptions" c:type="GckSessionOptions"/>
        </parameter>
      </parameters>
    </function>
    <function name="modules_enumerate_uri"
              c:identifier="gck_modules_enumerate_uri"
              throws="1">
      <doc xml:space="preserve"
           filename="gck/gck-modules.c"
           line="397">Enumerate objects that match a URI.

This call will not block. Use the [class@Enumerator] functions in order to
get at the actual objects that match.</doc>
      <source-position filename="gck/gck.h" line="528"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-modules.c"
             line="409">A new #GckEnumerator, or %NULL if an error occurs.</doc>
        <type name="Enumerator" c:type="GckEnumerator*"/>
      </return-value>
      <parameters>
        <parameter name="modules" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="399">The modules</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Module"/>
          </type>
        </parameter>
        <parameter name="uri" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="400">The URI that the enumerator will match</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="session_options" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="401">Options from GckSessionOptions</doc>
          <type name="SessionOptions" c:type="GckSessionOptions"/>
        </parameter>
      </parameters>
    </function>
    <function name="modules_get_slots" c:identifier="gck_modules_get_slots">
      <doc xml:space="preserve"
           filename="gck/gck-modules.c"
           line="165">Get a list of slots for across all of the modules.</doc>
      <source-position filename="gck/gck.h" line="503"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-modules.c"
             line="172">A list of #GckSlot
objects, which should be freed with gck_list_unref_free().</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="Slot"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="modules" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="167">The modules</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Module"/>
          </type>
        </parameter>
        <parameter name="token_present" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="168">Whether to only list slots with token present</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="modules_initialize_registered"
              c:identifier="gck_modules_initialize_registered"
              throws="1">
      <doc xml:space="preserve"
           filename="gck/gck-modules.c"
           line="81">Load and initialize all the registered modules.</doc>
      <source-position filename="gck/gck.h" line="493"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-modules.c"
             line="88">A newly allocated list
of #GckModule objects, which should be released with gck_list_unref_free().</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="Module"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="83">optional cancellation object</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="modules_initialize_registered_async"
              c:identifier="gck_modules_initialize_registered_async">
      <doc xml:space="preserve"
           filename="gck/gck-modules.c"
           line="109">Load and initialize all the registered modules asynchronously.</doc>
      <source-position filename="gck/gck.h" line="496"/>
      <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="gck/gck-modules.c"
               line="111">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="gck/gck-modules.c"
               line="112">a 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="gck/gck-modules.c"
               line="113">data to pass to the callback</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="modules_initialize_registered_finish"
              c:identifier="gck_modules_initialize_registered_finish"
              throws="1">
      <doc xml:space="preserve"
           filename="gck/gck-modules.c"
           line="130">Finishes the asynchronous operation to initialize the registered
PKCS#11 modules.</doc>
      <source-position filename="gck/gck.h" line="500"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-modules.c"
             line="138">a list of newly
initialized #GckModule objects</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="Module"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="132">the asynchronous result</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </parameter>
      </parameters>
    </function>
    <function name="modules_object_for_uri"
              c:identifier="gck_modules_object_for_uri"
              throws="1">
      <doc xml:space="preserve"
           filename="gck/gck-modules.c"
           line="322">Find an object that matches a URI.

This call can block. Use [func@modules_enumerate_uri] for a non-blocking
version.</doc>
      <source-position filename="gck/gck.h" line="518"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="gck/gck-modules.c"
             line="334">A new #GckObject which should be released with
g_object_unref(), or %NULL if no matching object was found.</doc>
        <type name="Object" c:type="GckObject*"/>
      </return-value>
      <parameters>
        <parameter name="modules" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="324">The modules</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Module"/>
          </type>
        </parameter>
        <parameter name="uri" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="325">The URI the objects must match</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="session_options" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="326">Options from GckSessionOptions</doc>
          <type name="SessionOptions" c:type="GckSessionOptions"/>
        </parameter>
      </parameters>
    </function>
    <function name="modules_objects_for_uri"
              c:identifier="gck_modules_objects_for_uri"
              throws="1">
      <doc xml:space="preserve"
           filename="gck/gck-modules.c"
           line="359">Find objects that match a URI.

This call can block. Use [func@modules_enumerate_uri] for a non-blocking
version.</doc>
      <source-position filename="gck/gck.h" line="523"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-modules.c"
             line="371">A list of #GckObject which
should be released with gck_list_unref_free(), or %NULL if no matching object
was found.</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="Object"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="modules" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="361">The modules</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Module"/>
          </type>
        </parameter>
        <parameter name="uri" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="362">The URI the objects must match</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="session_options" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="363">Options from GckSessionOptions</doc>
          <type name="SessionOptions" c:type="GckSessionOptions"/>
        </parameter>
      </parameters>
    </function>
    <function name="modules_token_for_uri"
              c:identifier="gck_modules_token_for_uri"
              throws="1">
      <doc xml:space="preserve"
           filename="gck/gck-modules.c"
           line="271">Lookup a token that matches the URI.</doc>
      <source-position filename="gck/gck.h" line="510"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-modules.c"
             line="279">A newly allocated #GckSlot or %NULL if no such
token was found.</doc>
        <type name="Slot" c:type="GckSlot*"/>
      </return-value>
      <parameters>
        <parameter name="modules" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="273">The modules</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Module"/>
          </type>
        </parameter>
        <parameter name="uri" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="274">The URI that the token must match</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="modules_tokens_for_uri"
              c:identifier="gck_modules_tokens_for_uri"
              throws="1">
      <doc xml:space="preserve"
           filename="gck/gck-modules.c"
           line="300">Lookup a token that matches the URI.</doc>
      <source-position filename="gck/gck.h" line="514"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-modules.c"
             line="308">A list of newly allocated
#GckSlot objects. Use gck_list_unref_free() to release the list once you're
done with it.</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="Slot"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="modules" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="302">The modules</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Module"/>
          </type>
        </parameter>
        <parameter name="uri" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-modules.c"
               line="303">The URI that the token must match</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="objects_from_handle_array"
              c:identifier="gck_objects_from_handle_array">
      <doc xml:space="preserve"
           filename="gck/gck-object.c"
           line="228">Initialize a list of GckObject from raw PKCS#11 handles. The handles argument must contain
contiguous CK_OBJECT_HANDLE handles in an array.</doc>
      <source-position filename="gck/gck.h" line="1302"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-object.c"
             line="237">The list of #GckObject
         objects. You should use gck_list_unref_free() when done with this
         list.</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="Object"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="session" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="230">The session for these objects</doc>
          <type name="Session" c:type="GckSession*"/>
        </parameter>
        <parameter name="object_handles" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="231">The raw object handles.</doc>
          <array length="2" zero-terminated="0" c:type="gulong*">
            <type name="gulong" c:type="gulong"/>
          </array>
        </parameter>
        <parameter name="n_object_handles" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-object.c"
               line="232">The number of raw object handles.</doc>
          <type name="gulong" c:type="gulong"/>
        </parameter>
      </parameters>
    </function>
    <function name="slots_enumerate_objects"
              c:identifier="gck_slots_enumerate_objects">
      <doc xml:space="preserve"
           filename="gck/gck-slot.c"
           line="920">Setup an enumerator for listing matching objects on the slots.

If the @match #GckAttributes is floating, it is consumed.

This call will not block but will return an enumerator immediately.</doc>
      <source-position filename="gck/gck.h" line="784"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-slot.c"
             line="932">a new enumerator</doc>
        <type name="Enumerator" c:type="GckEnumerator*"/>
      </return-value>
      <parameters>
        <parameter name="slots" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="922">a list of #GckSlot to enumerate objects on.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Slot"/>
          </type>
        </parameter>
        <parameter name="match" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="923">attributes that the objects must match, or empty for all objects</doc>
          <type name="Attributes" c:type="GckAttributes*"/>
        </parameter>
        <parameter name="options" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-slot.c"
               line="924">options for opening a session</doc>
          <type name="SessionOptions" c:type="GckSessionOptions"/>
        </parameter>
      </parameters>
    </function>
    <function name="string_from_chars"
              c:identifier="gck_string_from_chars"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="316">Create a string from a set of PKCS#11 characters. This is
similar to [func@GLib.strndup], except for that it also strips trailing
spaces. These space padded strings are often used in PKCS#11
structures.

If the space padded string is filled with null characters then
this function will return %NULL.</doc>
      <source-position filename="gck/gck.h" line="75"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-misc.c"
             line="329">The null terminated string.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="318">The character data to turn into a null terminated string.</doc>
          <type name="guint8" c:type="const guchar*"/>
        </parameter>
        <parameter name="max" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="319">The maximum length of the charater data.</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="string_to_chars"
              c:identifier="gck_string_to_chars"
              introspectable="0">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="348">Create a space padded PKCS#11 string from a null terminated string.
The string must be shorter than the buffer or %FALSE will be
returned.

If a %NULL string is passed, then the space padded string will be
set to zero characters.</doc>
      <source-position filename="gck/gck.h" line="71"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gck/gck-misc.c"
             line="361">The null terminated string.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="350">The character buffer to place string into.</doc>
          <type name="guint8" c:type="guchar*"/>
        </parameter>
        <parameter name="max" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="351">The maximum length of the charater buffer.</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="string" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="352">The string to place in the buffer.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="uri_build" c:identifier="gck_uri_build">
      <doc xml:space="preserve"
           filename="gck/gck-uri.c"
           line="242">Build a PKCS#11 URI. The various parts relevant to the flags
specified will be used to build the URI.</doc>
      <source-position filename="gck/gck.h" line="1579"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="250">a newly allocated string containing a PKCS#11 URI.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="uri_data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-uri.c"
               line="244">the info to build the URI from.</doc>
          <type name="UriData" c:type="GckUriData*"/>
        </parameter>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-uri.c"
               line="245">The context that the URI is for</doc>
          <type name="UriFlags" c:type="GckUriFlags"/>
        </parameter>
      </parameters>
    </function>
    <function name="uri_error_get_quark"
              c:identifier="gck_uri_error_get_quark"
              moved-to="UriError.get_quark">
      <source-position filename="gck/gck.h" line="1575"/>
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="uri_parse" c:identifier="gck_uri_parse" throws="1">
      <doc xml:space="preserve"
           filename="gck/gck-uri.c"
           line="161">Parse a PKCS#11 URI for use in a given context.

The result will contain the fields that are relevant for
the given context. See #GckUriData  for more info.
Other fields will be set to %NULL.</doc>
      <source-position filename="gck/gck.h" line="1582"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="gck/gck-uri.c"
             line="173">a newly allocated #GckUriData; which should be
         freed with gck_uri_data_free()</doc>
        <type name="UriData" c:type="GckUriData*"/>
      </return-value>
      <parameters>
        <parameter name="string" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-uri.c"
               line="163">the URI to parse.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-uri.c"
               line="164">the context in which the URI will be used.</doc>
          <type name="UriFlags" c:type="GckUriFlags"/>
        </parameter>
      </parameters>
    </function>
    <function name="value_to_boolean" c:identifier="gck_value_to_boolean">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="425">Convert `CK_BBOOL` type memory to a boolean.</doc>
      <source-position filename="gck/gck.h" line="109"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gck/gck-misc.c"
             line="433">Whether the conversion was successful.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="427">memory to convert</doc>
          <array length="1" zero-terminated="0" c:type="const guchar*">
            <type name="guint8" c:type="guchar"/>
          </array>
        </parameter>
        <parameter name="length" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="428">length of memory</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="result"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="429">A location to store the result</doc>
          <type name="gboolean" c:type="gboolean*"/>
        </parameter>
      </parameters>
    </function>
    <function name="value_to_ulong" c:identifier="gck_value_to_ulong">
      <doc xml:space="preserve"
           filename="gck/gck-misc.c"
           line="403">Convert `CK_ULONG` type memory to a boolean.</doc>
      <source-position filename="gck/gck.h" line="105"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="gck/gck-misc.c"
             line="411">Whether the conversion was successful.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="405">memory to convert</doc>
          <array length="1" zero-terminated="0" c:type="const guchar*">
            <type name="guint8" c:type="guchar"/>
          </array>
        </parameter>
        <parameter name="length" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="406">length of memory</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="result"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="gck/gck-misc.c"
               line="407">A location to store the result</doc>
          <type name="gulong" c:type="gulong*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
