| Index: mozilla/security/nss/lib/libpkix/include/pkix_pl_system.h
|
| ===================================================================
|
| --- mozilla/security/nss/lib/libpkix/include/pkix_pl_system.h (revision 191424)
|
| +++ mozilla/security/nss/lib/libpkix/include/pkix_pl_system.h (working copy)
|
| @@ -1,1545 +0,0 @@
|
| -/* This Source Code Form is subject to the terms of the Mozilla Public
|
| - * License, v. 2.0. If a copy of the MPL was not distributed with this
|
| - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
| -/*
|
| - * This file defines several platform independent functions to make system
|
| - * calls in a portable manner.
|
| - *
|
| - */
|
| -
|
| -#ifndef _PKIX_PL_SYSTEM_H
|
| -#define _PKIX_PL_SYSTEM_H
|
| -
|
| -#include "pkixt.h"
|
| -
|
| -#ifdef __cplusplus
|
| -extern "C" {
|
| -#endif
|
| -
|
| -/* General
|
| - *
|
| - * Please refer to the libpkix Programmer's Guide for detailed information
|
| - * about how to use the libpkix library. Certain key warnings and notices from
|
| - * that document are repeated here for emphasis.
|
| - *
|
| - * All identifiers in this file (and all public identifiers defined in
|
| - * libpkix) begin with "PKIX_". Private identifiers only intended for use
|
| - * within the library begin with "pkix_".
|
| - *
|
| - * A function returns NULL upon success, and a PKIX_Error pointer upon failure.
|
| - *
|
| - * Unless otherwise noted, for all accessor (gettor) functions that return a
|
| - * PKIX_PL_Object pointer, callers should assume that this pointer refers to a
|
| - * shared object. Therefore, the caller should treat this shared object as
|
| - * read-only and should not modify this shared object. When done using the
|
| - * shared object, the caller should release the reference to the object by
|
| - * using the PKIX_PL_Object_DecRef function.
|
| - *
|
| - * While a function is executing, if its arguments (or anything referred to by
|
| - * its arguments) are modified, free'd, or destroyed, the function's behavior
|
| - * is undefined.
|
| - *
|
| - */
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Initialize
|
| - * DESCRIPTION:
|
| - *
|
| - * XXX If this function is really only meant to be used by PKIX_Initialize,
|
| - * why don't we just put it in a private header file rather than the public
|
| - * API. I think it may confuse users.
|
| - *
|
| - * This function should NOT be called by applications. It is only meant to
|
| - * be used internally. The application needs only to call PKIX_Initialize,
|
| - * which in turn will call this function.
|
| - *
|
| - * This function initializes data structures critical to the operation of
|
| - * libpkix. If initialization is not successful, an Error pointer is
|
| - * returned. This function should only be called once. If it is called more
|
| - * than once, the behavior is undefined.
|
| - *
|
| - * No PKIX_* types and functions should be used before this function is
|
| - * called and returns successfully.
|
| - *
|
| - * PARAMETERS:
|
| - * "platformInitNeeded"
|
| - * Boolean indicating whether platform initialization is to be called
|
| - * "useArenas"
|
| - * Boolean indicating whether allocation is to be done using arenas or
|
| - * individual allocation (malloc).
|
| - * "pPlContext"
|
| - * Address at which platform-specific context pointer is stored. Must be
|
| - * non-NULL.
|
| - * THREAD SAFETY:
|
| - * Not Thread Safe
|
| - *
|
| - * This function assumes that no other thread is calling this function while
|
| - * it is executing.
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Initialize(
|
| - PKIX_Boolean platformInitNeeded,
|
| - PKIX_Boolean useArenas,
|
| - void **pPlContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Shutdown
|
| - * DESCRIPTION:
|
| - *
|
| - * XXX If this function is really only meant to be used by PKIX_Shutdown,
|
| - * why don't we just put it in a private header file rather than the public
|
| - * API. I think it may confuse users.
|
| - *
|
| - * This function should NOT be called by applications. It is only meant to
|
| - * be used internally. The application needs only to call PKIX_Shutdown,
|
| - * which in turn will call this function.
|
| - *
|
| - * This function deallocates any memory used by the Portability Layer (PL)
|
| - * component of the libpkix library and shuts down any ongoing operations.
|
| - * This function should only be called once. If it is called more than once,
|
| - * the behavior is undefined.
|
| - *
|
| - * No PKIX_* types and functions should be used after this function is called
|
| - * and returns successfully.
|
| - *
|
| - * PARAMETERS:
|
| - * "platformInitNeeded"
|
| - * Boolean value of whether PKIX initialized NSS: PKIX_TRUE if we
|
| - * called nssInit, PKIX_FALSE otherwise
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Not Thread Safe
|
| - *
|
| - * This function makes use of global variables and should only be called once.
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Shutdown(void *plContext);
|
| -
|
| -/* standard memory management operations (not reference-counted) */
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Malloc
|
| - * DESCRIPTION:
|
| - *
|
| - * Allocates a block of "size" bytes. The bytes are not initialized. A
|
| - * pointer to the newly allocated memory will be stored at "pMemory". The
|
| - * memory allocated by PKIX_PL_Malloc() may only be freed by PKIX_PL_Free().
|
| - * If "size" equals zero, this function stores NULL at "pMemory".
|
| - *
|
| - * PARAMETERS:
|
| - * "size"
|
| - * Number of bytes to allocate.
|
| - * "pMemory"
|
| - * Address where newly allocated pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread safety depends on underlying thread safety of platform used by PL.
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Malloc(
|
| - PKIX_UInt32 size,
|
| - void **pMemory,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Calloc
|
| - * DESCRIPTION:
|
| - *
|
| - * Allocates memory for an array of "nElem" elements, with each element
|
| - * requiring "elSize" bytes, and with all the bits initialized to zero. A
|
| - * pointer to the newly allocated memory will be stored at "pMemory". The
|
| - * memory allocated by PKIX_PL_Calloc() may only be freed by PKIX_PL_Free().
|
| - * If "nElem" equals zero or "elSize" equals zero, this function stores NULL
|
| - * at "pMemory".
|
| - *
|
| - * PARAMETERS:
|
| - * "nElem"
|
| - * Number of elements needed.
|
| - * "elSize"
|
| - * Number of bytes needed per element.
|
| - * "pMemory"
|
| - * Address where newly allocated pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread safety depends on underlying thread safety of platform used by PL.
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Calloc(
|
| - PKIX_UInt32 nElem,
|
| - PKIX_UInt32 elSize,
|
| - void **pMemory,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Realloc
|
| - * DESCRIPTION:
|
| - *
|
| - * Resizes an existing block of memory (pointed to by "ptr") to "size" bytes.
|
| - * Stores a pointer to the resized memory at "pNewPtr". The "ptr" must
|
| - * originate from either PKIX_PL_Malloc(), PKIX_PL_Realloc(), or
|
| - * PKIX_PL_Calloc(). If "ptr" is NULL, this function behaves as if
|
| - * PKIX_PL_Malloc were called. If "ptr" is not NULL and "size" equals zero,
|
| - * the memory pointed to by "ptr" is deallocated and this function stores
|
| - * NULL at "pPtr".
|
| - *
|
| - * PARAMETERS:
|
| - * "ptr"
|
| - * A pointer to an existing block of memory.
|
| - * "size"
|
| - * New size in bytes.
|
| - * "pPtr"
|
| - * Address where newly allocated pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread safety depends on underlying thread safety of platform used by PL.
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Realloc(
|
| - void *ptr,
|
| - PKIX_UInt32 size,
|
| - void **pNewPtr,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Free
|
| - * DESCRIPTION:
|
| - *
|
| - * Frees a block of memory pointed to by "ptr". This value must originate with
|
| - * either PKIX_PL_Malloc(), PKIX_PL_Calloc, or PKIX_PL_Realloc(). If "ptr" is
|
| - * NULL, the function has no effect.
|
| - *
|
| - * PARAMETERS:
|
| - * "ptr"
|
| - * A pointer to an existing block of memory.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread safety depends on underlying thread safety of platform used by PL.
|
| - * RETURNS:
|
| - * Returns NULL always.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Free(
|
| - void *ptr,
|
| - void *plContext);
|
| -
|
| -/* Callback Types
|
| - *
|
| - * The next few typedefs define function pointer types for the standard
|
| - * functions associated with every object type. See the Implementation
|
| - * Guidelines or the comments below for more information.
|
| - */
|
| -
|
| -/*
|
| - * TYPE: PKIX_PL_DestructorCallback
|
| - * DESCRIPTION:
|
| - *
|
| - * This callback function destroys (or DecRef's) any pointers contained in
|
| - * the user data for the Object pointed to by "object" before the Object is
|
| - * destroyed.
|
| - *
|
| - * PARAMETERS:
|
| - * "object"
|
| - * Address of Object to destroy. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe
|
| - *
|
| - * Multiple threads must be able to safely call this function without
|
| - * worrying about conflicts (as long as they're not operating on the same
|
| - * object and nobody else is performing an operation on the object at the
|
| - * same time). Both of these conditions should be guaranteed by the fact that
|
| - * the object's ref count was reduced to 0 in a lock that's still held when
|
| - * this callback is called.
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -typedef PKIX_Error *
|
| -(*PKIX_PL_DestructorCallback)(
|
| - PKIX_PL_Object *object,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * TYPE: PKIX_PL_EqualsCallback
|
| - * DESCRIPTION:
|
| - *
|
| - * This callback function compares the Object pointed to by "firstObject" with
|
| - * the Object pointed to by "secondObject" for equality and stores the result
|
| - * at "pResult" (PKIX_TRUE if equal; PKIX_FALSE if not).
|
| - *
|
| - * PARAMETERS:
|
| - * "firstObject"
|
| - * Address of first object to compare. Must be non-NULL.
|
| - * "secondObject"
|
| - * Address of second object to compare. Must be non-NULL.
|
| - * "pResult"
|
| - * Address where Boolean will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe
|
| - *
|
| - * Multiple threads must be able to safely call this function without
|
| - * worrying about conflicts, even if they're operating on the same objects.
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -typedef PKIX_Error *
|
| -(*PKIX_PL_EqualsCallback)(
|
| - PKIX_PL_Object *firstObject,
|
| - PKIX_PL_Object *secondObject,
|
| - PKIX_Boolean *pResult,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * TYPE: PKIX_PL_HashcodeCallback
|
| - * DESCRIPTION:
|
| - *
|
| - * This callback function computes the hashcode of the Object pointed to by
|
| - * "object" and stores the result at "pValue".
|
| - *
|
| - * PARAMETERS:
|
| - * "object"
|
| - * Address of Object whose hashcode is desired. Must be non-NULL.
|
| - * "pValue"
|
| - * Address where PKIX_UInt32 will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe
|
| - *
|
| - * Multiple threads must be able to safely call this function without
|
| - * worrying about conflicts, even if they're operating on the same object.
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -typedef PKIX_Error *
|
| -(*PKIX_PL_HashcodeCallback)(
|
| - PKIX_PL_Object *object,
|
| - PKIX_UInt32 *pValue,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * TYPE: PKIX_PL_ToStringCallback
|
| - * DESCRIPTION:
|
| - *
|
| - * This callback function converts the Object pointed to by "object" to a
|
| - * string representation and stores the result at "pString".
|
| - *
|
| - * PARAMETERS:
|
| - * "object"
|
| - * Object to get a string representation from. Must be non-NULL.
|
| - * "pString"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe
|
| - *
|
| - * Multiple threads must be able to safely call this function without
|
| - * worrying about conflicts, even if they're operating on the same object.
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -typedef PKIX_Error *
|
| -(*PKIX_PL_ToStringCallback)(
|
| - PKIX_PL_Object *object,
|
| - PKIX_PL_String **pString,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * TYPE: PKIX_PL_ComparatorCallback
|
| - * DESCRIPTION:
|
| - *
|
| - * This callback function determines how the Object pointed to by
|
| - * "firstObject" compares to the Object pointed to by "secondObject" and
|
| - * stores the result at "pResult".
|
| - *
|
| - * Result is less than 0 if firstObject < secondObject
|
| - * Result equals 0 if firstObject = secondObject
|
| - * Result is greater than 0 if firstObject > secondObject
|
| - *
|
| - * PARAMETERS:
|
| - * "firstObject"
|
| - * Address of the first Object to compare. Must be non-NULL.
|
| - * "secondObject"
|
| - * Address of the second Object to compare. Must be non-NULL.
|
| - * "pResult"
|
| - * Address where PKIX_Int32 will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe
|
| - *
|
| - * Multiple threads must be able to safely call this function without
|
| - * worrying about conflicts, even if they're operating on the same objects.
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -typedef PKIX_Error *
|
| -(*PKIX_PL_ComparatorCallback)(
|
| - PKIX_PL_Object *firstObject,
|
| - PKIX_PL_Object *secondObject,
|
| - PKIX_Int32 *pResult,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * TYPE: PKIX_PL_DuplicateCallback
|
| - * DESCRIPTION:
|
| - *
|
| - * This callback function creates a copy of the Object pointed to by "object"
|
| - * and stores it at "pNewObject". Changes to the copy will not affect the
|
| - * original and vice versa.
|
| - *
|
| - * Note that if "object" is immutable, the Duplicate callback function simply
|
| - * needs to increment the reference count on "object" and return a reference
|
| - * to "object".
|
| - *
|
| - * PARAMETERS:
|
| - * "object"
|
| - * Address of the object to be copied. Must be non-NULL.
|
| - * "pNewObject"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe
|
| - *
|
| - * Multiple threads must be able to safely call this function without
|
| - * worrying about conflicts, even if they're operating on the same object.
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -typedef PKIX_Error *
|
| -(*PKIX_PL_DuplicateCallback)(
|
| - PKIX_PL_Object *object,
|
| - PKIX_PL_Object **pNewObject,
|
| - void *plContext);
|
| -
|
| -/* reference-counted objects */
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_Alloc
|
| - * DESCRIPTION:
|
| - *
|
| - * Allocates a new Object of type "type" with "size" bytes and stores the
|
| - * resulting pointer at "pObject". The reference count of the newly
|
| - * allocated object will be initialized to 1. To improve performance, each
|
| - * object maintains a small cache for the results of Hashcode and ToString.
|
| - * Mutable objects should call InvalidateCache whenever changes are made to
|
| - * the object's state (after creation). If an error occurs during allocation,
|
| - * "pObject" will be set to NULL. If "size" equals zero, this function creates
|
| - * an Object with a reference count of 1, and places a pointer to unallocated
|
| - * memory at "pMemory".
|
| - *
|
| - * PARAMETERS:
|
| - * "type"
|
| - * The type code of this object. See pkixt.h for codes. The type code
|
| - * must be previously registered with PKIX_PL_Object_RegisterType().
|
| - * "size"
|
| - * The number of bytes needed for this object.
|
| - * "pMemory"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_Alloc(
|
| - PKIX_TYPENUM type,
|
| - PKIX_UInt32 size,
|
| - PKIX_PL_Object **pObject,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_IsTypeRegistered
|
| - * DESCRIPTION:
|
| - *
|
| - * Checks whether "type" has been registered by a previous call to
|
| - * PKIX_PL_Object_RegisterType() and stores the Boolean result at "pBool".
|
| - * This function will typically only be called by constructors for specific
|
| - * types.
|
| - *
|
| - * PARAMETERS:
|
| - * "type"
|
| - * The type code to check if valid.
|
| - * "pBool"
|
| - * Address where Boolean will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_IsTypeRegistered(
|
| - PKIX_UInt32 type,
|
| - PKIX_Boolean *pBool,
|
| - void *plContext);
|
| -
|
| -#ifdef PKIX_USER_OBJECT_TYPE
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_RegisterType
|
| - * DESCRIPTION:
|
| - *
|
| - * Registers a new Object with type value "type" and associates it with a set
|
| - * of functions ("destructor", "equalsFunction", "hashcodeFunction",
|
| - * "toStringFunction", "comparator", "duplicateFunction"). The new type value
|
| - * is also associated with a string pointed to by "description", which is used
|
| - * by the default ToStringCallback. This function may only be called with a
|
| - * particular "type" value once. If "destructor", "equalsFunction",
|
| - * "hashcodeFunction", or "toStringFunction" are NULL, default functions will
|
| - * be registered. However, if "comparator" and "duplicateFunction" are NULL,
|
| - * no functions will be registered and calls to PKIX_PL_Object_Compare and
|
| - * PKIX_PL_Object_Duplicate will result in an error.
|
| - *
|
| - * PARAMETERS:
|
| - * "type"
|
| - * The type code.
|
| - * "description"
|
| - * The string used by the default ToStringCallback. Default used if NULL.
|
| - * "destructor"
|
| - * The DestructorCallback function to be set. Default used if NULL.
|
| - * "equalsFunction"
|
| - * The EqualsCallback function to be set. Default used if NULL.
|
| - * "hashcodeFunction"
|
| - * The HashcodeCallback function to be set. Default used if NULL.
|
| - * "toStringFunction"
|
| - * The ToStringCallback function to be set. Default used if NULL.
|
| - * "comparator"
|
| - * The ComparatorCallback function to be set. None set if NULL. If no
|
| - * callback function is set in this field, calls to
|
| - * PKIX_PL_Object_Compare() will result in an error.
|
| - * "duplicateFunction"
|
| - * The DuplicateCallback function to be set. None set if NULL. If no
|
| - * callback function is set in this field, calls to
|
| - * PKIX_PL_Object_Duplicate() will result in an error.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an Object Error if "type" is already registered.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_RegisterType(
|
| - PKIX_UInt32 type,
|
| - char *description,
|
| - PKIX_PL_DestructorCallback destructor,
|
| - PKIX_PL_EqualsCallback equalsFunction,
|
| - PKIX_PL_HashcodeCallback hashcodeFunction,
|
| - PKIX_PL_ToStringCallback toStringFunction,
|
| - PKIX_PL_ComparatorCallback comparator,
|
| - PKIX_PL_DuplicateCallback duplicateFunction,
|
| - void *plContext);
|
| -
|
| -#endif
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_InvalidateCache
|
| - * DESCRIPTION:
|
| - *
|
| - * Invalidates the cache of the Object pointed to by "object". The cache
|
| - * contains results of Hashcode and ToString. This function should be used by
|
| - * mutable objects whenever changes are made to the Object's state (after
|
| - * creation).
|
| - *
|
| - * For example, if ToString is called on a mutable Object, the result will be
|
| - * computed, cached, and returned. If the Object's state does not change, a
|
| - * subsequent call to ToString will recognize that the relevant result is
|
| - * cached and will simply return the result (without calling the Object's
|
| - * ToStringCallback to recompute it). However, when the Object's state
|
| - * changes, the cache needs to be invalidated in order to force a subsequent
|
| - * call to ToString to recompute the result.
|
| - *
|
| - * PARAMETERS:
|
| - * "object"
|
| - * Address of Object whose cache is to be invalidated. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - *
|
| - * THREAD SAFETY
|
| - * Thread Safe - Object Type Table is locked during modification.
|
| - *
|
| - * Multiple threads can safely call this function without worrying about
|
| - * conflicts, even if they're operating on the same object.
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_InvalidateCache(
|
| - PKIX_PL_Object *object,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_IncRef
|
| - * DESCRIPTION:
|
| - *
|
| - * Increments the reference count of the Object pointed to by "object".
|
| - *
|
| - * PARAMETERS:
|
| - * "object"
|
| - * Address of Object whose reference count is to be incremented.
|
| - * Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_IncRef(
|
| - PKIX_PL_Object *object,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_DecRef
|
| - * DESCRIPTION:
|
| - *
|
| - * Decrements the reference count of the Object pointed to by "object". If the
|
| - * resulting reference count is zero, the destructor (if any) registered for
|
| - * the Object's type (by PKIX_PL_RegisterType) will be called and then the
|
| - * Object will be destroyed.
|
| - *
|
| - * PARAMETERS:
|
| - * "object"
|
| - * Address of Object whose reference count is to be decremented.
|
| - * Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * If destructor is not called, multiple threads can safely call this function
|
| - * without worrying about conflicts, even if they're operating on the same
|
| - * object. If destructor is called, thread safety depends on the callback
|
| - * defined by PKIX_PL_RegisterType().
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_DecRef(
|
| - PKIX_PL_Object *object,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_Equals
|
| - * DESCRIPTION:
|
| - *
|
| - * Compares the Object pointed to by "firstObject" with the Object pointed to
|
| - * by "secondObject" for equality using the callback function registered for
|
| - * "firstObject"'s type, and stores the Boolean result at "pResult". While
|
| - * typical callbacks will return PKIX_FALSE if the objects are of different
|
| - * types, other callbacks may be capable of comparing objects of different
|
| - * types [which may correctly result in cases where Equals(first, second)
|
| - * differs from Equals(second, first)].
|
| - *
|
| - * PARAMETERS:
|
| - * "firstObject"
|
| - * Address of the first Object to compare. Must be non-NULL.
|
| - * The EqualsCallback for this Object will be called.
|
| - * "secondObject"
|
| - * Address of the second Object to compare. Must be non-NULL.
|
| - * "pResult"
|
| - * Address where Boolean will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread safety depends on the callback defined by PKIX_PL_RegisterType().
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an Object Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_Equals(
|
| - PKIX_PL_Object *firstObject,
|
| - PKIX_PL_Object *secondObject,
|
| - PKIX_Boolean *pResult,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_Hashcode
|
| - * DESCRIPTION:
|
| - *
|
| - * Computes a hashcode of the Object pointed to by "object" using the
|
| - * callback registered for "object"'s type and stores it at "pValue". Two
|
| - * objects which are equal should have the same hashcode. Once a call to
|
| - * Hashcode has been made, the results are cached and subsequent calls to
|
| - * Hashcode will return the cached value. For mutable objects, an
|
| - * InvalidateCache function is provided, which should be called whenever
|
| - * changes are made to the object's state (after creation).
|
| - *
|
| - * PARAMETERS:
|
| - * "object"
|
| - * Address of the Object whose hashcode is desired. Must be non-NULL.
|
| - * The HashcodeCallback for this object will be called.
|
| - * "pValue"
|
| - * Address where PKIX_Int32 will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - *
|
| - * THREAD SAFETY:
|
| - * Thread safety depends on the callback defined by PKIX_PL_RegisterType().
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an Object Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_Hashcode(
|
| - PKIX_PL_Object *object,
|
| - PKIX_UInt32 *pValue,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_ToString
|
| - * DESCRIPTION:
|
| - *
|
| - * Creates a string representation of the Object pointed to by "object" using
|
| - * the callback registered for "object"'s type and stores it at "pString".
|
| - * Once a call to ToString has been made, the results are cached and
|
| - * subsequent calls to ToString will return the cached value. For mutable
|
| - * objects, an InvalidateCache function is provided, which should be called
|
| - * whenever changes are made to the object's state (after creation).
|
| - *
|
| - * PARAMETERS:
|
| - * "object"
|
| - * Address of Object whose string representation is desired.
|
| - * Must be non-NULL. The ToStringCallback for this object will be called.
|
| - * "pString"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread safety depends on the callback defined by PKIX_PL_RegisterType().
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an Object Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_ToString(
|
| - PKIX_PL_Object *object,
|
| - PKIX_PL_String **pString,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_Compare
|
| - * DESCRIPTION:
|
| - *
|
| - * Compares the Object pointed to by "firstObject" and the Object pointed to
|
| - * by "secondObject" using the comparator registered for "firstObject"'s type
|
| - * and stores the result at "pResult". Different types may be compared. This
|
| - * may correctly result in cases where Compare(first, second) is not the
|
| - * opposite of Compare(second, first). The PKIX_Int32 value stored at
|
| - * "pResult" will be:
|
| - * Less than 0 if "firstObject" < "secondObject"
|
| - * Equals to 0 if "firstObject" = "secondObject"
|
| - * Greater than 0 if "firstObject" > "secondObject"
|
| - *
|
| - * PARAMETERS:
|
| - * "firstObject"
|
| - * Address of first Object to compare. Must be non-NULL.
|
| - * The ComparatorCallback for this object will be called.
|
| - * "secondObject"
|
| - * Address of second object to compare. Must be non-NULL.
|
| - * "pResult
|
| - * Address where PKIX_Int32 will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread safety depends on the comparator defined by PKIX_PL_RegisterType().
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an Object Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_Compare(
|
| - PKIX_PL_Object *firstObject,
|
| - PKIX_PL_Object *secondObject,
|
| - PKIX_Int32 *pResult,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_Duplicate
|
| - * DESCRIPTION:
|
| - *
|
| - * Creates a duplicate copy of the Object pointed to by "object" using the
|
| - * callback registered for "object"'s type and stores the copy at
|
| - * "pNewObject". Changes to the new object will not affect the original and
|
| - * vice versa.
|
| - *
|
| - * Note that if "object" is immutable, the Duplicate callback function simply
|
| - * needs to increment the reference count on "object" and return a reference
|
| - * to "object".
|
| - *
|
| - * PARAMETERS:
|
| - * "object"
|
| - * Address of Object to be duplicated. Must be non-NULL.
|
| - * The DuplicateCallback for this Object will be called.
|
| - * "pNewObject"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread safety depends on the callback defined by PKIX_PL_RegisterType().
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an Object Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_Duplicate(
|
| - PKIX_PL_Object *object,
|
| - PKIX_PL_Object **pNewObject,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_GetType
|
| - * DESCRIPTION:
|
| - *
|
| - * Retrieves the type code of the Object pointed to by "object" and stores it
|
| - * at "pType". See pkixt.h for type codes.
|
| - *
|
| - * PARAMETERS:
|
| - * "object"
|
| - * Address of Object whose type is desired. Must be non-NULL.
|
| - * "pType"
|
| - * Address where PKIX_UInt32 will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_GetType(
|
| - PKIX_PL_Object *object,
|
| - PKIX_UInt32 *pType,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_Lock
|
| - * DESCRIPTION:
|
| - *
|
| - * Locks the Mutex associated with the Object pointed to by "object". When an
|
| - * object is created, it is associated with an object-specific Mutex to allow
|
| - * for synchronization when the fields of the object are modified.
|
| - *
|
| - * PARAMETERS:
|
| - * "object"
|
| - * Address of Object whose Mutex is to be locked. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_Lock(
|
| - PKIX_PL_Object *object,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Object_Unlock
|
| - * DESCRIPTION:
|
| - *
|
| - * Unlocks the Mutex associated with the Object pointed to by "object". When
|
| - * an object is created, it is associated with an object-specific Mutex to
|
| - * allow for synchronization when the fields of the object are modified.
|
| - *
|
| - * PARAMETERS:
|
| - * "object"
|
| - * Address of Object whose Mutex is to be unlocked. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Object_Unlock(
|
| - PKIX_PL_Object *object,
|
| - void *plContext);
|
| -
|
| -/* mutexes (locks) */
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Mutex_Create
|
| - * DESCRIPTION:
|
| - *
|
| - * Creates a new Mutex and stores it at "pNewLock".
|
| - *
|
| - * PARAMETERS:
|
| - * "pNewLock"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Mutex_Create(
|
| - PKIX_PL_Mutex **pNewLock,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Mutex_Lock
|
| - * DESCRIPTION:
|
| - *
|
| - * Locks the Mutex pointed to by "lock". If the Mutex is already locked, this
|
| - * function will block the current thread until the mutex can be locked by
|
| - * this thread.
|
| - *
|
| - * PARAMETERS:
|
| - * "lock"
|
| - * Address of Mutex to lock. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Mutex_Lock(
|
| - PKIX_PL_Mutex *lock,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Mutex_Unlock
|
| - * DESCRIPTION:
|
| - *
|
| - * Unlocks the Mutex pointed to by "lock" if the current thread holds the
|
| - * Mutex.
|
| - *
|
| - * PARAMETERS:
|
| - * "lock"
|
| - * Address of Mutex to unlock. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Mutex_Unlock(
|
| - PKIX_PL_Mutex *lock,
|
| - void *plContext);
|
| -
|
| -/* monitor (locks) */
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_MonitorLock_Create
|
| - * DESCRIPTION:
|
| - *
|
| - * Creates a new PKIX_PL_MonitorLock and stores it at "pNewLock".
|
| - *
|
| - * PARAMETERS:
|
| - * "pNewLock"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_MonitorLock_Create(
|
| - PKIX_PL_MonitorLock **pNewLock,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_MonitorLock_Enter
|
| - * DESCRIPTION:
|
| - *
|
| - * Locks the MonitorLock pointed to by "lock". If the MonitorLock is already
|
| - * locked by other thread, this function will block the current thread. If
|
| - * the "lock" had been locked by current thread, this function will NOT block.
|
| - *
|
| - * PARAMETERS:
|
| - * "lock"
|
| - * Address of MonitorLock to lock. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_MonitorLock_Enter(
|
| - PKIX_PL_MonitorLock *lock,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_MonitorLock_Exit
|
| - * DESCRIPTION:
|
| - *
|
| - * Unlocks the MonitorLock pointed to by "lock" if the lock counter of
|
| - * current thread holds the MonitorLock reach 0, the lock is released.
|
| - *
|
| - * PARAMETERS:
|
| - * "lock"
|
| - * Address of MonitorLock to unlock. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_MonitorLock_Exit(
|
| - PKIX_PL_MonitorLock *lock,
|
| - void *plContext);
|
| -
|
| -/* strings and formatted printing */
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_String_Create
|
| - * DESCRIPTION:
|
| - *
|
| - * Creates a new String using the data pointed to by "pString", the
|
| - * PKIX_UInt32 pointed to by "stringLen", and the PKIX_UInt32 pointed to by
|
| - * "fmtIndicator" and stores it at "pString". If the format is PKIX_ESCASCII
|
| - * the "stringLen" parameter is ignored and the string extends until a zero
|
| - * byte is found. Once created, a String object is immutable.
|
| - *
|
| - * Valid formats are:
|
| - * PKIX_ESCASCII
|
| - * PKIX_ESCASCII_DEBUG
|
| - * PKIX_UTF8
|
| - * PKIX_UTF8_NULL_TERM
|
| - * PKIX_UTF16
|
| - *
|
| - * PARAMETERS:
|
| - * "fmtIndicator"
|
| - * Format that "stringRep" is encoded with. Must be non-NULL.
|
| - * "stringRep"
|
| - * Address of encoded string representation. Must be non-NULL.
|
| - * "stringLen"
|
| - * Length of data stored at stringRep.
|
| - * "pString"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a String Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_String_Create(
|
| - PKIX_UInt32 fmtIndicator,
|
| - const void *stringRep,
|
| - PKIX_UInt32 stringLen,
|
| - PKIX_PL_String **pString,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_Sprintf
|
| - * DESCRIPTION:
|
| - *
|
| - * Creates a formatted string at "pOut" using the given format "fmt" and a
|
| - * variable length list of arguments. The format flags are identical to
|
| - * standard C with the exception that %s expects a PKIX_PL_String*, rather
|
| - * than a char *, and that {%d, %i, %o, %u, %x, %X} expect PKIX_UInt32 or
|
| - * PKIX_Int32 instead of int or unsigned int.
|
| - *
|
| - * PARAMETERS:
|
| - * "pOut"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * "fmt"
|
| - * Address of format string. Must be non-NULL.
|
| - * THREAD SAFETY:
|
| - * Not Thread Safe - Caller must have exclusive access to all arguments.
|
| - * (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a String Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_Sprintf(
|
| - PKIX_PL_String **pOut,
|
| - void *plContext,
|
| - const PKIX_PL_String *fmt, ...);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_GetString
|
| - * DESCRIPTION:
|
| - *
|
| - * Retrieves the String associated with the value of "stringID" (if any) and
|
| - * stores it at "pString". If no such string is associated with "stringID",
|
| - * this function uses "defaultString" to create a String and stores it at
|
| - * "pString".
|
| - *
|
| - * PARAMETERS:
|
| - * "stringID"
|
| - * PKIX_UInt32 valud of string identifier.
|
| - * "defaultString"
|
| - * Address of a PKIX_ESCASCII encoded string representation.
|
| - * Must be non-NULL.
|
| - * "pString"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a String Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_GetString(
|
| - PKIX_UInt32 stringID,
|
| - char *defaultString,
|
| - PKIX_PL_String **pString,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_String_GetEncoded
|
| - * DESCRIPTION:
|
| - *
|
| - * Retrieves the value of the String pointed to by "string" in the encoding
|
| - * specified by "fmtIndicator" and stores the result in "pStringRep" and
|
| - * "pLength", respectively. Note that "pStringRep" is not reference counted
|
| - * and will need to be freed with PKIX_PL_Free().
|
| - *
|
| - * PARAMETERS:
|
| - * "string"
|
| - * Address of String whose encoded value is desired. Must be non-NULL.
|
| - * "fmtIndicator"
|
| - * Format of encoding. Supported formats are:
|
| - * PKIX_ESCASCII, PKIX_ESCASII_DEBUG, PKIX_UTF8, PKIX_UTF8_NULL_TERM, and
|
| - * PKIX_UTF16. XXX Where are these documented?
|
| - * "pStringRep"
|
| - * Address where pointer to encoded value will be stored.
|
| - * Must be non-NULL.
|
| - * "pLength"
|
| - * Address where byte length of encoded value will be stored.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a String Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_String_GetEncoded(
|
| - PKIX_PL_String *string,
|
| - PKIX_UInt32 fmtIndicator,
|
| - void **pStringRep,
|
| - PKIX_UInt32 *pLength,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * Hashtable
|
| - *
|
| - * A hashtable is a very efficient data structure used for mapping keys to
|
| - * values. Any non-null PKIX_PL_Object can be used as a key or as a value,
|
| - * provided that it correctly implements the PKIX_PL_EqualsCallback and the
|
| - * PKIX_PL_HashcodeCallback. A hashtable consists of several buckets, with
|
| - * each bucket capable of holding a linked list of key/value mappings. When
|
| - * adding, retrieving, or deleting a value, the hashcode of the key is used to
|
| - * determine which bucket's linked list is relevant. The corresponding
|
| - * key/value pair is then appended, retrieved, or deleted.
|
| - */
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_HashTable_Create
|
| - * DESCRIPTION:
|
| - *
|
| - * Creates a new Hashtable with an initial capacity of "numBuckets" buckets
|
| - * and "maxEntriesPerBucket" of entries limit for each bucket and stores it
|
| - * at "pResult".
|
| - *
|
| - * PARAMETERS:
|
| - * "numBuckets"
|
| - * The initial number of hash table buckets. Must be non-zero.
|
| - * "maxEntriesPerBucket"
|
| - * The limit of entries per bucket. Zero means no limit.
|
| - * "pResult"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_HashTable_Create(
|
| - PKIX_UInt32 numBuckets,
|
| - PKIX_UInt32 maxEntriesPerBucket,
|
| - PKIX_PL_HashTable **pResult,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_HashTable_Add
|
| - * DESCRIPTION:
|
| - *
|
| - * Adds a key/value mapping using the Objects pointed to by "key" and "value"
|
| - * to the Hashtable pointed to by "ht".
|
| - *
|
| - * Function increments key/value reference counts. Caller is responsible to
|
| - * to decrement(destroy) key/value ref counts(objects).
|
| - *
|
| - * PARAMETERS:
|
| - * "ht"
|
| - * Address of Hashtable to be added to. Must be non-NULL.
|
| - * "key"
|
| - * Address of Object to be associated with "value". Must be non-NULL.
|
| - * "value"
|
| - * Address of Object to be added to Hashtable. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Not Thread Safe - assumes exclusive access to "ht"
|
| - * (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Hashtable Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_HashTable_Add(
|
| - PKIX_PL_HashTable *ht,
|
| - PKIX_PL_Object *key,
|
| - PKIX_PL_Object *value,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_HashTable_Remove
|
| - * DESCRIPTION:
|
| - *
|
| - * Removes the Object value whose key is equal to the Object pointed to by
|
| - * "key" from the Hashtable pointed to by "ht". If no such object exists,
|
| - * this function throws an Error.
|
| - *
|
| - * Function frees "value" object. Caller is responsible to free "key"
|
| - * object.
|
| - *
|
| - * PARAMETERS:
|
| - * "ht"
|
| - * Address of Hashtable to remove object from. Must be non-NULL.
|
| - * "key"
|
| - * Address of Object used for lookup. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Not Thread Safe - assumes exclusive access to "ht"
|
| - * (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Hashtable Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_HashTable_Remove(
|
| - PKIX_PL_HashTable *ht,
|
| - PKIX_PL_Object *key,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_HashTable_Lookup
|
| - * DESCRIPTION:
|
| - *
|
| - * Retrieves the Object whose key equals the Object pointed to by "key" from
|
| - * the Hashtable associated with "ht" and stores it at "pResult". If no
|
| - * Object is found, this function stores NULL at "pResult".
|
| - *
|
| - * PARAMETERS:
|
| - * "ht"
|
| - * Address of Hashtable to lookup Object from. Must be non-NULL.
|
| - * "key"
|
| - * Address of key Object used for lookup. Must be non-NULL.
|
| - * "pResult"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Conditionally Thread Safe
|
| - * (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Hashtable Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_HashTable_Lookup(
|
| - PKIX_PL_HashTable *ht,
|
| - PKIX_PL_Object *key,
|
| - PKIX_PL_Object **pResult,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_ByteArray_Create
|
| - * DESCRIPTION:
|
| - *
|
| - * Creates a new ByteArray using "length" bytes of data pointed to by "array"
|
| - * and stores it at "pByteArray". Once created, a ByteArray is immutable.
|
| - *
|
| - * PARAMETERS:
|
| - * "array"
|
| - * Address of source data.
|
| - * "length"
|
| - * Number of bytes to copy.
|
| - * "pByteArray"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_ByteArray_Create(
|
| - void *array,
|
| - PKIX_UInt32 length,
|
| - PKIX_PL_ByteArray **pByteArray,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_ByteArray_GetPointer
|
| - * DESCRIPTION:
|
| - *
|
| - * Allocates enough memory to hold the contents of the ByteArray pointed to
|
| - * by "byteArray", copies the data from the ByteArray pointed to by
|
| - * "byteArray" into the newly allocated memory, and stores a pointer to the
|
| - * memory at "pArray". Note that "pArray" is not reference counted. It will
|
| - * need to be freed with PKIX_PL_Free().
|
| - *
|
| - * PARAMETERS:
|
| - * "byteArray"
|
| - * Address of ByteArray whose data is desired. Must be non-NULL.
|
| - * "pArray"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_ByteArray_GetPointer(
|
| - PKIX_PL_ByteArray *byteArray,
|
| - void **pArray,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_ByteArray_GetLength
|
| - * DESCRIPTION:
|
| - *
|
| - * Retrieves the length of the ByteArray pointed to by "byteArray" and stores
|
| - * the length at "pLength".
|
| - *
|
| - * PARAMETERS:
|
| - * "byteArray"
|
| - * Address of ByteArray whose length is desired. Must be non-NULL.
|
| - * "pLength"
|
| - * Address where PKIX_UInt32 will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_ByteArray_GetLength(
|
| - PKIX_PL_ByteArray *byteArray,
|
| - PKIX_UInt32 *pLength,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_OID_Create
|
| - * DESCRIPTION:
|
| - *
|
| - * Creates a new OID using NSS oid tag.
|
| - *
|
| - * PARAMETERS:
|
| - * "idtag"
|
| - * nss oid id tag.
|
| - * "pOID"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an OID Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_OID_Create(
|
| - SECOidTag idtag,
|
| - PKIX_PL_OID **pOID,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_OID_CreateBySECItem
|
| - * DESCRIPTION:
|
| - *
|
| - * Creates a new OID using a DER encoded OID stored as SECItem.
|
| - *
|
| - * PARAMETERS:
|
| - * "derOid"
|
| - * Address of SECItem that holds DER encoded OID.
|
| - * "pOID"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns an OID Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_OID_CreateBySECItem(
|
| - SECItem *derOid,
|
| - PKIX_PL_OID **pOID,
|
| - void *plContext);
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_BigInt_Create
|
| - * DESCRIPTION:
|
| - *
|
| - * Creates a new BigInt using the source String pointed to by "stringRep" and
|
| - * stores it at "pBigInt". Valid source Strings consist of an even number of
|
| - * hexadecimal digits, which are always interpreted as a positive number.
|
| - * Once created, a BigInt is immutable.
|
| - *
|
| - * The regexp format is:
|
| - * HexDigit ::= [0-9] | [A-F] | [a-f]
|
| - * DoubleHex ::= HexDigit HexDigit
|
| - * BigIntSrc ::= (DoubleHex)+
|
| - *
|
| - * Note that since we are using DoubleHex, the number of characters in the
|
| - * source MUST be even. Additionally, the first DoubleHex MUST NOT be "00"
|
| - * unless it is the only DoubleHex.
|
| - *
|
| - * Valid : "09"
|
| - * Valid : "00" (special case where first and only DoubleHex is "00")
|
| - * Invalid: "9" (not DoubleHex: odd number of characters)
|
| - * Invalid: "0009" (first DoubleHex is "00")
|
| - *
|
| - * XXX Why does this take a String object while OID_Create takes a char* ?
|
| - * Perhaps because OID_Create is often used with constant strings and
|
| - * this function isn't. That's a good reason, but we should explain it
|
| - * (if it's right)
|
| - * PARAMETERS:
|
| - * "stringRep"
|
| - * Address of String representing a BigInt. Must be non-NULL.
|
| - * "pBigInt"
|
| - * Address where object pointer will be stored. Must be non-NULL.
|
| - * "plContext"
|
| - * Platform-specific context pointer.
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * Returns NULL if the function succeeds.
|
| - * Returns a BigInt Error if the function fails in a non-fatal way.
|
| - * Returns a Fatal Error if the function fails in an unrecoverable way.
|
| - */
|
| -PKIX_Error *
|
| -PKIX_PL_BigInt_Create(
|
| - PKIX_PL_String *stringRep,
|
| - PKIX_PL_BigInt **pBigInt,
|
| - void *plContext);
|
| -
|
| -#ifdef __cplusplus
|
| -}
|
| -#endif
|
| -
|
| -/*
|
| - * FUNCTION: PKIX_PL_GetPLErrorCode
|
| - * DESCRIPTION:
|
| - *
|
| - * Returns error code from PL layer.
|
| - *
|
| - * THREAD SAFETY:
|
| - * Thread Safe (see Thread Safety Definitions in Programmer's Guide)
|
| - * RETURNS:
|
| - * PL layer error code.
|
| - */
|
| -int
|
| -PKIX_PL_GetPLErrorCode();
|
| -
|
| -#endif /* _LIBPKIX_SYSTEM_H */
|
|
|