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
flags for the new builder
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.
the attributes to add
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.
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.
the new attribute type
the attribute value
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. [constINVALID]
may be specified for the length, in
which case an invalid attribute is created in the PKCS#11 style.
the new attribute type
the new attribute memory
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.
the new attribute type
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.
the new attribute type
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.
// 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.
the attributes to add
the types of attributes to add
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.
the new attribute type
the attribute value
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.
the new attribute type
the attribute value
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.
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 [methodBuilder
.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().
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 [structAttribute]
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.
the type of attribute to find
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.
the type of attribute to find
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.
the type of attribute to find
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.
the type of attribute to find
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.
the type of attribute to find
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.
// Equivalent ways of initializing a GckBuilder
GckBuilder builder = GCK_BUILDER_INIT;
GckBuilder builder2;
GckBuilder builder3;
gck_builder_init (&builder2);
memset (&builder3, 0, sizeof (builder3));
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
the flags for the new builder
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.
the attributes to set
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.
the new attribute type
the attribute value
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. [constINVALID]
may be specified for the length, in
which case an invalid attribute is created in the PKCS#11 style.
the attribute type
the new attribute memory
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.
the attribute type
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.
the attribute type
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.
the new attribute type
the attribute value
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.
the new attribute type
the attribute value
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.
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. [constINVALID]
may be specified for the length, in
which case an invalid attribute is created in the PKCS#11 style.
the new attribute type
the new attribute memory
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
flags for the new builder
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.
the builder
A builder for a set of attributes. Add attributes to a builder, and then use [method
Builder
.end] to get the completed [structAttributes]
.The fields of #GckBuilder are private and not to be accessed directly.