コード例 #1
0
ファイル: test-uri.c プロジェクト: p11-glue/p11-kit
static void
test_uri_get_set_attribute (void)
{
	CK_ATTRIBUTE attr;
	CK_ATTRIBUTE_PTR ptr;
	P11KitUri *uri;
	int ret;

	uri = p11_kit_uri_new ();
	assert_ptr_not_null (uri);

	ptr = p11_kit_uri_get_attribute (uri, CKA_LABEL);
	assert_ptr_eq (NULL, ptr);

	ret = p11_kit_uri_clear_attribute (uri, CKA_LABEL);
	assert_num_eq (P11_KIT_URI_OK, ret);

	ret = p11_kit_uri_clear_attribute (uri, CKA_COLOR);
	assert_num_eq (P11_KIT_URI_NOT_FOUND, ret);

	attr.type = CKA_LABEL;
	attr.pValue = "Test";
	attr.ulValueLen = 4;

	ret = p11_kit_uri_set_attribute (uri, &attr);
	assert_num_eq (P11_KIT_URI_OK, ret);

	/* We can set other attributes */
	attr.type = CKA_COLOR;
	ret = p11_kit_uri_set_attribute (uri, &attr);
	assert_num_eq (P11_KIT_URI_OK, ret);

	/* And get them too */
	ptr = p11_kit_uri_get_attribute (uri, CKA_COLOR);
	assert_ptr_not_null (ptr);

	ptr = p11_kit_uri_get_attribute (uri, CKA_LABEL);
	assert_ptr_not_null (ptr);

	assert (ptr->type == CKA_LABEL);
	assert (ptr->ulValueLen == 4);
	assert (memcmp (ptr->pValue, "Test", 4) == 0);

	ret = p11_kit_uri_clear_attribute (uri, CKA_LABEL);
	assert_num_eq (P11_KIT_URI_OK, ret);

	ptr = p11_kit_uri_get_attribute (uri, CKA_LABEL);
	assert_ptr_eq (NULL, ptr);

	p11_kit_uri_free (uri);
}
コード例 #2
0
ファイル: test-uri.c プロジェクト: p11-glue/p11-kit
static void
test_uri_build_object_type_secret (void)
{
	CK_ATTRIBUTE attr;
	CK_OBJECT_CLASS klass;
	P11KitUri *uri;
	char *string;
	int ret;

	uri = p11_kit_uri_new ();
	assert_ptr_not_null (uri);

	klass = CKO_SECRET_KEY;
	attr.type = CKA_CLASS;
	attr.pValue = &klass;
	attr.ulValueLen = sizeof (klass);
	p11_kit_uri_set_attribute (uri, &attr);

	ret = p11_kit_uri_format (uri, P11_KIT_URI_FOR_ANY, &string);
	assert_num_eq (P11_KIT_URI_OK, ret);
	assert (strstr (string, "type=secret-key") != NULL);

	p11_kit_uri_free (uri);
	free (string);
}
コード例 #3
0
ファイル: uri.c プロジェクト: tjwei/WebKitGtkKindleDXG
int
p11_kit_uri_set_attributes (P11KitUri *uri, CK_ATTRIBUTE_PTR attrs,
                            CK_ULONG n_attrs)
{
	CK_ULONG i;
	int ret;

	assert (uri);

	p11_kit_uri_clear_attributes (uri);

	for (i = 0; i < n_attrs; i++) {
		ret = p11_kit_uri_set_attribute (uri, &attrs[i]);
		if (ret != P11_KIT_URI_OK && ret != P11_KIT_URI_NOT_FOUND)
			return ret;
	}

	return P11_KIT_URI_OK;
}
コード例 #4
0
ファイル: test-uri.c プロジェクト: p11-glue/p11-kit
static void
test_uri_build_with_attributes (void)
{
	char *string = NULL;
	P11KitUri *uri;
	P11KitUri *check;
	CK_OBJECT_CLASS klass;
	CK_ATTRIBUTE_PTR attr;
	CK_ATTRIBUTE at;
	int ret;

	uri = p11_kit_uri_new ();
	assert_ptr_not_null (uri);

	at.type = CKA_LABEL;
	at.pValue = "The Label";
	at.ulValueLen = 9;
	ret = p11_kit_uri_set_attribute (uri, &at);
	assert_num_eq (P11_KIT_URI_OK, ret);

	at.type = CKA_ID;
	at.pValue = "HELLO";
	at.ulValueLen = 5;
	ret = p11_kit_uri_set_attribute (uri, &at);
	assert_num_eq (P11_KIT_URI_OK, ret);

	klass = CKO_DATA;
	at.type = CKA_CLASS;
	at.pValue = &klass;
	at.ulValueLen = sizeof (klass);
	ret = p11_kit_uri_set_attribute (uri, &at);
	assert_num_eq (P11_KIT_URI_OK, ret);

	ret = p11_kit_uri_format (uri, P11_KIT_URI_FOR_ANY, &string);
	assert_num_eq (P11_KIT_URI_OK, ret);

	check = p11_kit_uri_new ();
	assert_ptr_not_null (check);

	ret = p11_kit_uri_parse (string, P11_KIT_URI_FOR_ANY, check);
	assert_num_eq (P11_KIT_URI_OK, ret);

	attr = p11_kit_uri_get_attribute (check, CKA_LABEL);
	assert_ptr_not_null (attr);
	assert (attr->ulValueLen == 9);
	assert (memcmp (attr->pValue, "The Label", attr->ulValueLen) == 0);

	attr = p11_kit_uri_get_attribute (check, CKA_CLASS);
	assert_ptr_not_null (attr);
	assert (attr->ulValueLen == sizeof (klass));
	assert (*((CK_OBJECT_CLASS_PTR)attr->pValue) == klass);

	attr = p11_kit_uri_get_attribute (check, CKA_ID);
	assert_ptr_not_null (attr);
	assert (attr->ulValueLen == 5);
	assert (memcmp (attr->pValue, "HELLO", attr->ulValueLen) == 0);

	p11_kit_uri_free (check);

	assert (strstr (string, "object=The%20Label") != NULL);
	assert (strstr (string, "type=data") != NULL);
	assert (strstr (string, "id=%48%45%4c%4c%4f") != NULL);

	free (string);
	p11_kit_uri_free (uri);
}
コード例 #5
0
ファイル: test-uri.c プロジェクト: p11-glue/p11-kit
static void
test_uri_get_set_attributes (void)
{
	CK_ATTRIBUTE_PTR attrs;
	CK_OBJECT_CLASS klass;
	CK_ATTRIBUTE attr;
	CK_ULONG n_attrs;
	P11KitUri *uri;
	int ret;

	uri = p11_kit_uri_new ();
	assert_ptr_not_null (uri);

	attrs = p11_kit_uri_get_attributes (uri, &n_attrs);
	assert_ptr_not_null (attrs);
	assert_num_eq (0, n_attrs);

	attr.type = CKA_LABEL;
	attr.pValue = "Test";
	attr.ulValueLen = 4;

	ret = p11_kit_uri_set_attribute (uri, &attr);
	assert_num_eq (P11_KIT_URI_OK, ret);

	attrs = p11_kit_uri_get_attributes (uri, &n_attrs);
	assert_ptr_not_null (attrs);
	assert_num_eq (1, n_attrs);
	assert (attrs[0].type == CKA_LABEL);
	assert (attrs[0].ulValueLen == 4);
	assert (memcmp (attrs[0].pValue, "Test", 4) == 0);

	attr.type = CKA_LABEL;
	attr.pValue = "Kablooey";
	attr.ulValueLen = 8;

	ret = p11_kit_uri_set_attribute (uri, &attr);
	assert_num_eq (P11_KIT_URI_OK, ret);

	attrs = p11_kit_uri_get_attributes (uri, &n_attrs);
	assert_ptr_not_null (attrs);
	assert_num_eq (1, n_attrs);
	assert (attrs[0].type == CKA_LABEL);
	assert (attrs[0].ulValueLen == 8);
	assert (memcmp (attrs[0].pValue, "Kablooey", 8) == 0);

	klass = CKO_DATA;
	attr.type = CKA_CLASS;
	attr.pValue = &klass;
	attr.ulValueLen = sizeof (klass);

	ret = p11_kit_uri_set_attribute (uri, &attr);
	assert_num_eq (P11_KIT_URI_OK, ret);

	attrs = p11_kit_uri_get_attributes (uri, &n_attrs);
	assert_ptr_not_null (attrs);
	assert_num_eq (2, n_attrs);
	assert (attrs[0].type == CKA_LABEL);
	assert (attrs[0].ulValueLen == 8);
	assert (memcmp (attrs[0].pValue, "Kablooey", 8) == 0);
	assert (attrs[1].type == CKA_CLASS);
	assert (attrs[1].ulValueLen == sizeof (klass));
	assert (memcmp (attrs[1].pValue, &klass, sizeof (klass)) == 0);

	ret = p11_kit_uri_clear_attribute (uri, CKA_LABEL);
	assert_num_eq (P11_KIT_URI_OK, ret);

	attrs = p11_kit_uri_get_attributes (uri, &n_attrs);
	assert_ptr_not_null (attrs);
	assert_num_eq (1, n_attrs);
	assert (attrs[0].type == CKA_CLASS);
	assert (attrs[0].ulValueLen == sizeof (klass));
	assert (memcmp (attrs[0].pValue, &klass, sizeof (klass)) == 0);

	attr.type = CKA_LABEL;
	attr.pValue = "Three";
	attr.ulValueLen = 5;

	ret = p11_kit_uri_set_attributes (uri, &attr, 1);
	assert_num_eq (P11_KIT_URI_OK, ret);

	attrs = p11_kit_uri_get_attributes (uri, &n_attrs);
	assert_ptr_not_null (attrs);
	assert_num_eq (1, n_attrs);
	assert (attrs[0].type == CKA_LABEL);
	assert (attrs[0].ulValueLen == 5);
	assert (memcmp (attrs[0].pValue, "Three", 5) == 0);

	p11_kit_uri_clear_attributes (uri);

	attrs = p11_kit_uri_get_attributes (uri, &n_attrs);
	assert_ptr_not_null (attrs);
	assert_num_eq (0, n_attrs);

	p11_kit_uri_free (uri);
}