tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

pkcs11uri.h (3065B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 #ifndef _PKCS11URI_H_
      6 #define _PKCS11URI_H_ 1
      7 
      8 #include "seccomon.h"
      9 
     10 /* Path attributes defined in RFC7512. */
     11 #define PK11URI_PATTR_TOKEN "token"
     12 #define PK11URI_PATTR_MANUFACTURER "manufacturer"
     13 #define PK11URI_PATTR_SERIAL "serial"
     14 #define PK11URI_PATTR_MODEL "model"
     15 #define PK11URI_PATTR_LIBRARY_MANUFACTURER "library-manufacturer"
     16 #define PK11URI_PATTR_LIBRARY_DESCRIPTION "library-description"
     17 #define PK11URI_PATTR_LIBRARY_VERSION "library-version"
     18 #define PK11URI_PATTR_OBJECT "object"
     19 #define PK11URI_PATTR_TYPE "type"
     20 #define PK11URI_PATTR_ID "id"
     21 #define PK11URI_PATTR_SLOT_MANUFACTURER "slot-manufacturer"
     22 #define PK11URI_PATTR_SLOT_DESCRIPTION "slot-description"
     23 #define PK11URI_PATTR_SLOT_ID "slot-id"
     24 
     25 /* Query attributes defined in RFC7512. */
     26 #define PK11URI_QATTR_PIN_SOURCE "pin-source"
     27 #define PK11URI_QATTR_PIN_VALUE "pin-value"
     28 #define PK11URI_QATTR_MODULE_NAME "module-name"
     29 #define PK11URI_QATTR_MODULE_PATH "module-path"
     30 
     31 SEC_BEGIN_PROTOS
     32 
     33 /* A PK11URI object is an immutable structure that holds path and
     34 * query attributes of a PKCS#11 URI. */
     35 struct PK11URIStr;
     36 typedef struct PK11URIStr PK11URI;
     37 
     38 struct PK11URIAttributeStr {
     39    const char *name;
     40    const char *value;
     41 };
     42 typedef struct PK11URIAttributeStr PK11URIAttribute;
     43 
     44 /* Create a new PK11URI object from a set of attributes. */
     45 extern PK11URI *PK11URI_CreateURI(const PK11URIAttribute *pattrs,
     46                                  size_t num_pattrs,
     47                                  const PK11URIAttribute *qattrs,
     48                                  size_t num_qattrs);
     49 
     50 /* Parse PKCS#11 URI and return a new PK11URI object. */
     51 extern PK11URI *PK11URI_ParseURI(const char *string);
     52 
     53 /* Format a PK11URI object to a string. */
     54 extern char *PK11URI_FormatURI(PLArenaPool *arena, PK11URI *uri);
     55 
     56 /* Destroy a PK11URI object. */
     57 extern void PK11URI_DestroyURI(PK11URI *uri);
     58 
     59 /* Retrieve a path attribute with the given name. This function can be used only
     60 * when we can assume that the attribute value is a string (such as "label" or
     61 * "type"). If it can be a binary blob (such as "id"), use
     62 * PK11URI_GetPathAttributeItem.
     63 */
     64 extern const char *PK11URI_GetPathAttribute(PK11URI *uri, const char *name);
     65 
     66 /* Retrieve a query attribute with the given name. This function can be used
     67 * only when we can assume that the attribute value is a string (such as
     68 * "module-name").  If it can be a binary blob, use
     69 * PK11URI_GetQueryAttributeItem.*/
     70 extern const char *PK11URI_GetQueryAttribute(PK11URI *uri, const char *name);
     71 
     72 /* Retrieve a path attribute with the given name as a SECItem. */
     73 extern const SECItem *PK11URI_GetPathAttributeItem(PK11URI *uri, const char *name);
     74 
     75 /* Retrieve a query attribute with the given name as a SECItem. */
     76 extern const SECItem *PK11URI_GetQueryAttributeItem(PK11URI *uri, const char *name);
     77 
     78 SEC_END_PROTOS
     79 
     80 #endif /* _PKCS11URI_H_ */