]> granicus.if.org Git - p11-kit/commitdiff
uri: Accept 'type' in additon to 'object-type' in PKCS#11 URIs
authorStef Walter <stefw@redhat.com>
Fri, 14 Nov 2014 05:13:10 +0000 (06:13 +0100)
committerStef Walter <stefw@redhat.com>
Fri, 14 Nov 2014 05:13:10 +0000 (06:13 +0100)
This was a later change to the PKCS#11 specification drafts

p11-kit/test-uri.c
p11-kit/uri.c

index 9b5b293102f9a916e53c8f6645a9b02a47684e8c..673ef4a7e7a18eff8da996e5f41259dfe8d39beb 100644 (file)
@@ -158,6 +158,32 @@ test_uri_parse_with_label_and_klass (void)
        p11_kit_uri_free (uri);
 }
 
+static void
+test_uri_parse_with_label_and_new_klass (void)
+{
+       CK_ATTRIBUTE_PTR attr;
+       P11KitUri *uri;
+       int ret;
+
+       uri = p11_kit_uri_new ();
+       assert_ptr_not_null (uri);
+
+       ret = p11_kit_uri_parse ("pkcs11:object=Test%20Label;type=cert", P11_KIT_URI_FOR_ANY, uri);
+       assert_num_eq (P11_KIT_URI_OK, ret);
+
+       attr = p11_kit_uri_get_attribute (uri, CKA_LABEL);
+       assert_ptr_not_null (attr);
+       assert (attr->ulValueLen == strlen ("Test Label"));
+       assert (memcmp (attr->pValue, "Test Label", attr->ulValueLen) == 0);
+
+       attr = p11_kit_uri_get_attribute (uri, CKA_CLASS);
+       assert_ptr_not_null (attr);
+       assert (attr->ulValueLen == sizeof (CK_OBJECT_CLASS));
+       assert (*((CK_OBJECT_CLASS_PTR)attr->pValue) == CKO_CERTIFICATE);
+
+       p11_kit_uri_free (uri);
+}
+
 static void
 test_uri_parse_with_empty_label (void)
 {
@@ -1273,6 +1299,7 @@ main (int argc,
        p11_test (test_uri_parse_with_empty_label, "/uri/test_uri_parse_with_empty_label");
        p11_test (test_uri_parse_with_empty_id, "/uri/test_uri_parse_with_empty_id");
        p11_test (test_uri_parse_with_label_and_klass, "/uri/test_uri_parse_with_label_and_klass");
+       p11_test (test_uri_parse_with_label_and_new_klass, "/uri/parse-with-label-and-new-class");
        p11_test (test_uri_parse_with_id, "/uri/test_uri_parse_with_id");
        p11_test (test_uri_parse_with_bad_string_encoding, "/uri/test_uri_parse_with_bad_string_encoding");
        p11_test (test_uri_parse_with_bad_hex_encoding, "/uri/test_uri_parse_with_bad_hex_encoding");
index a60974cee08350a7af8541b322e5c78c10a9217a..970f12536bad88790879df2ddf100f9096fa7efd 100644 (file)
@@ -62,7 +62,7 @@
  * <code><literallayout>
  *      pkcs11:token=The\%20Software\%20PKCS\#11\%20softtoken;
  *          manufacturer=Snake\%20Oil,\%20Inc.;serial=;object=my-certificate;
- *          model=1.0;object-type=cert;id=\%69\%95\%3e\%5c\%f4\%bd\%ec\%91
+ *          model=1.0;type=cert;id=\%69\%95\%3e\%5c\%f4\%bd\%ec\%91
  * </literallayout></code>
  *
  * You can use p11_kit_uri_parse() to parse such a URI, and p11_kit_uri_format()
@@ -902,7 +902,8 @@ parse_class_attribute (const char *name, const char *start, const char *end,
        assert (start <= end);
 
        if (strcmp ("objecttype", name) != 0 &&
-           strcmp ("object-type", name) != 0)
+           strcmp ("object-type", name) != 0 &&
+           strcmp ("type", name) != 0)
                return 0;
 
        value = key_decode (start, end);