Quelle pkix_util.h
Sprache: C
/* 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/. */
/*
* These functions provide support for a number of other functions
* by creating and manipulating data structures used by those functions .
*
*/
#ifndef _PKIX_UTIL_H
#define _PKIX_UTIL_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 .
*
*/
/* PKIX_Logger
*
* PKIX_Loggers provide a standard way for the caller to insert custom logging
* facilities . These are used by libpkix to log errors , debug information ,
* status , etc . The LogCallback allows custom logging to take place .
* Additionally , a Logger can be initialized with a loggerContext , which is
* where the caller can specify configuration data such as the name of a
* logfile or database . Note that this loggerContext must be a PKIX_PL_Object ,
* allowing it to be reference - counted and allowing it to provide the standard
* PKIX_PL_Object functions ( Equals , Hashcode , ToString , Compare , Duplicate ) .
*
* Once the caller has created the Logger object ( s ) ( and set the loggerContext
* ( if any ) and the Log callback ) , the caller then registers these Loggers
* with the system by calling PKIX_SetLoggers or PKIX_AddLogger . All log
* entries will then be logged using the specified Loggers . If multiple
* Loggers are specified , every log entry will be logged with each of them .
*
* XXX Maybe give some guidance somewhere on how much detail each logging
* level should have and where component boundaries should be . Maybe in
* Implementor ' s Guide or Programmer ' s Guide .
*/
#define PKIX_LOGGER_LEVEL_TRACE
5
#define PKIX_LOGGER_LEVEL_DEBUG
4
#define PKIX_LOGGER_LEVEL_WARNING
3
#define PKIX_LOGGER_LEVEL_ERROR
2
#define PKIX_LOGGER_LEVEL_FATALERROR
1
#define PKIX_LOGGER_LEVEL_MAX
5
/*
* FUNCTION : PKIX_Logger_LogCallback
* DESCRIPTION :
*
* This callback function logs a log entry containing the String pointed to
* by " message " , the integer value of logLevel , and the String pointed to by
* " logComponent " . A log entry can be associated with a particular log
* level ( i . e . level 3 ) and a particular log component ( i . e . " CertStore " ) .
* For example , someone reading the log may only be interested in very general
* log entries so they look only for log level 1 . Similarly , they may only be
* interested in log entries pertaining to the CertStore component so they
* look only for that log component . This function can be used before calling
* PKIX_Initialize .
*
* PARAMETERS :
* " logger "
* Address of logger whose LogCallback is to be used . Must be non - NULL .
* " message "
* Address of String that is to be logged used " logger " . Must be non - NULL .
* " logLevel "
* Integer value representing the log level for this entry . The higher the
* level , the more detail . Must be non - NULL .
* " logComponent "
* PKIXERRORNUM value ( defined in pkixt . h ) designating the log component
* for this entry .
* " 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 a Logger 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_Logger_LogCallback)(
PKIX_Logger *logger,
PKIX_PL_String *message,
PKIX_UInt32 logLevel,
PKIX_ERRORCLASS logComponent,
void *plContext);
/*
* FUNCTION : PKIX_Logger_Create
* DESCRIPTION :
*
* Creates a new Logger using the Object pointed to by " loggerContext "
* ( if any ) and stores it at " pLogger " . The new Logger uses the LogCallback
* pointed to by " callback " . The Logger ' s maximum logging level is initially
* set to a very high level and its logging component is set to NULL ( all
* components ) .
*
* PARAMETERS :
* " callback "
* The LogCallback function to be used . Must be non - NULL .
* " loggerContext "
* Address of Object representing the Logger ' s context ( if any ) .
* " pLogger "
* 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 Logger 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_Logger_Create(
PKIX_Logger_LogCallback callback,
PKIX_PL_Object *loggerContext,
PKIX_Logger **pLogger,
void *plContext);
/*
* FUNCTION : PKIX_Logger_GetLogCallback
* DESCRIPTION :
*
* Retrieves a pointer to " logger ' s " Log callback function and puts it in
* " pCallback " .
*
* PARAMETERS :
* " logger "
* Address of Logger whose Log callback is desired . Must be non - NULL .
* " pCallback "
* Address where Log callback function 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 Logger 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_Logger_GetLogCallback(
PKIX_Logger *logger,
PKIX_Logger_LogCallback *pCallback,
void *plContext);
/*
* FUNCTION : PKIX_Logger_GetLoggerContext
* DESCRIPTION :
*
* Retrieves a pointer to a PKIX_PL_Object representing the context ( if any )
* of the Logger pointed to by " logger " and stores it at " pLoggerContext " .
*
* PARAMETERS :
* " logger "
* Address of Logger whose context is to be stored . Must be non - NULL .
* " pLoggerContext "
* 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 Logger 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_Logger_GetLoggerContext(
PKIX_Logger *logger,
PKIX_PL_Object **pLoggerContext,
void *plContext);
/*
* FUNCTION : PKIX_Logger_GetMaxLoggingLevel
* DESCRIPTION :
*
* Retrieves a pointer to a PKIX_UInt32 representing the maximum logging
* level of the Logger pointed to by " logger " and stores it at " pLevel " . Only
* log entries whose log level is less than or equal to this maximum logging
* level will be logged .
*
* PARAMETERS :
* " logger "
* Address of Logger whose maximum logging level is to be stored .
* Must be non - NULL .
* " pLevel "
* Address where PKIX_UInt32 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 Logger 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_Logger_GetMaxLoggingLevel(
PKIX_Logger *logger,
PKIX_UInt32 *pLevel,
void *plContext);
/*
* FUNCTION : PKIX_Logger_SetMaxLoggingLevel
* DESCRIPTION :
*
* Sets the maximum logging level of the Logger pointed to by " logger " with
* the integer value of " level " .
*
* PARAMETERS :
* " logger "
* Address of Logger whose maximum logging level is to be set .
* Must be non - NULL .
* " level "
* Maximum logging level to be set
* " plContext "
* Platform - specific context pointer .
* THREAD SAFETY :
* Not Thread Safe - assumes exclusive access to " logger "
* ( see Thread Safety Definitions in Programmer ' s Guide )
* RETURNS :
* Returns NULL if the function succeeds .
* Returns a Logger 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_Logger_SetMaxLoggingLevel(
PKIX_Logger *logger,
PKIX_UInt32 level,
void *plContext);
/*
* FUNCTION : PKIX_Logger_GetLoggingComponent
* DESCRIPTION :
*
* Retrieves a pointer to a String representing the logging component of the
* Logger pointed to by " logger " and stores it at " pComponent " . Only log
* entries whose log component matches the specified logging component will
* be logged .
*
* PARAMETERS :
* " logger "
* Address of Logger whose logging component is to be stored .
* Must be non - NULL .
* " pComponent "
* Address where PKIXERRORNUM 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 Logger 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_Logger_GetLoggingComponent(
PKIX_Logger *logger,
PKIX_ERRORCLASS *pComponent,
void *plContext);
/*
* FUNCTION : PKIX_Logger_SetLoggingComponent
* DESCRIPTION :
*
* Sets the logging component of the Logger pointed to by " logger " with the
* PKIXERRORNUM pointed to by " component " . To match a small set of components ,
* create a Logger for each .
*
* PARAMETERS :
* " logger "
* Address of Logger whose logging component is to be set .
* Must be non - NULL .
* " component "
* PKIXERRORNUM value representing logging component to be set .
* " plContext "
* Platform - specific context pointer .
* THREAD SAFETY :
* Not Thread Safe - assumes exclusive access to " logger "
* ( see Thread Safety Definitions in Programmer ' s Guide )
* RETURNS :
* Returns NULL if the function succeeds .
* Returns a Logger 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_Logger_SetLoggingComponent(
PKIX_Logger *logger,
PKIX_ERRORCLASS component,
void *plContext);
/*
* FUNCTION : PKIX_GetLoggers
* DESCRIPTION :
*
* Retrieves a pointer to the List of Loggers ( if any ) being used for logging
* by libpkix and stores it at " pLoggers " . If no loggers are being used , this
* function stores an empty List at " pLoggers " .
*
* Note that the List returned by this function is immutable .
*
* PARAMETERS :
* " pLoggers "
* 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 Logger 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_GetLoggers(
PKIX_List **pLoggers,
/* list of PKIX_Logger */
void *plContext);
/*
* FUNCTION : PKIX_SetLoggers
* DESCRIPTION :
*
* Sets the Loggers to be used by libpkix to the List of Loggers pointed to
* by " loggers " . If " loggers " is NULL , no Loggers will be used .
*
* PARAMETERS :
* " loggers "
* Address of List of Loggers to be set . NULL for no Loggers .
* " plContext "
* Platform - specific context pointer .
* THREAD SAFETY :
* Not Thread Safe
* ( see Thread Safety Definitions in Programmer ' s Guide )
* RETURNS :
* Returns NULL if the function succeeds .
* Returns a Logger 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_SetLoggers(
PKIX_List *loggers,
/* list of PKIX_Logger */
void *plContext);
/*
* FUNCTION : PKIX_AddLogger
* DESCRIPTION :
*
* Adds the Logger pointed to by " logger " to the List of Loggers used by
* libpkix .
*
* PARAMETERS :
* " logger "
* Address of Logger to be added . Must be non - NULL .
* " plContext "
* Platform - specific context pointer .
* THREAD SAFETY :
* Not Thread Safe
* ( see Thread Safety Definitions in Programmer ' s Guide )
* RETURNS :
* Returns NULL if the function succeeds .
* Returns a Logger 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_AddLogger(
PKIX_Logger *logger,
void *plContext);
/* Functions pertaining to the PKIX_Error type */
/* Error
*
* An Error object is returned by a function upon encountering some error
* condition . Each Error is associated with an errorCode specified in pkixt . h .
* The remaining components of an Error are optional . An Error ' s description
* specifies a text message describing the Error . An Error ' s supplementary info
* specifies additional information that might be useful . Finally , an Error ' s
* cause specifies the underlying Error ( if any ) that resulted in this Error
* being returned , thereby allowing Errors to be chained so that an entire
* " error stack trace " can be represented . Once created , an Error is immutable .
*
* Note that the Error ' s supplementary info must be an Object ( although any
* object type ) , allowing it to be reference - counted and allowing it to
* provide the standard Object functions ( Equals , Hashcode , ToString , Compare ,
* Duplicate ) .
*
* Errors are classified as either being fatal or non - fatal . If a function
* fails in an unrecoverable way , it returns an Error whose errorCode is
* PKIX_FATAL_ERROR . If such an error is encountered , the caller should
* not attempt to recover since something seriously wrong has happened
* ( e . g . corrupted memory , memory finished , etc . ) . All other errorCodes
* are considered non - fatal errors and can be handled by the caller as they
* see fit .
*/
/*
* FUNCTION : PKIX_Error_Create
* DESCRIPTION :
*
* Creates a new Error using the value of " errorCode " , the Error pointed to by
* " cause " ( if any ) , the Object pointed to by " info " ( if any ) , and the String
* pointed to by " desc " and stores it at " pError " . If any error occurs during
* error allocation , it will be returned without chaining , since new errors
* cannot be created . Once created , an Error is immutable .
*
* PARAMETERS :
* " errorCode "
* Value of error code .
* " cause "
* Address of Error representing error ' s cause .
* NULL if none or unspecified .
* " info "
* Address of Object representing error ' s supplementary information .
* NULL if none .
* " desc "
* Address of String representing error ' s description . NULL if none .
* " pError "
* 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 Error 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_Error_Create(
PKIX_ERRORCLASS errClass,
PKIX_Error *cause,
PKIX_PL_Object *info,
PKIX_ERRORCODE errCode,
PKIX_Error **pError,
void *plContext);
/*
* FUNCTION : PKIX_Error_GetErrorClass
* DESCRIPTION :
*
* Retrieves the error class of the Error pointed to by " error " and
* stores it at " pClass " . Supported error codes are defined in pkixt . h .
*
* PARAMETERS :
* " error "
* Address of Error whose error code is desired . Must be non - NULL .
* " pClass "
* 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 an Error 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_Error_GetErrorClass(
PKIX_Error *error,
PKIX_ERRORCLASS *pClass,
void *plContext);
/*
* FUNCTION : PKIX_Error_GetErrorCode
* DESCRIPTION :
*
* Retrieves the error code of the Error pointed to by " error " and
* stores it at " pCode " . Supported error codes are defined in pkixt . h .
*
* PARAMETERS :
* " error "
* Address of Error whose error code is desired . Must be non - NULL .
* " pCode "
* 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 an Error 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_Error_GetErrorCode(
PKIX_Error *error,
PKIX_ERRORCODE *pCode,
void *plContext);
/*
* FUNCTION : PKIX_Error_GetCause
* DESCRIPTION :
*
* Retrieves the cause of the Error pointed to by " error " and stores it at
* " pCause " . If no cause was specified , NULL will be stored at " pCause " .
*
* PARAMETERS :
* " error "
* Address of Error whose cause is desired . Must be non - NULL .
* " pCause "
* 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 Error 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_Error_GetCause(
PKIX_Error *error,
PKIX_Error **pCause,
void *plContext);
/*
* FUNCTION : PKIX_Error_GetSupplementaryInfo
* DESCRIPTION :
*
* Retrieves the supplementary info of the Error pointed to by " error " and
* stores it at " pInfo " .
*
* PARAMETERS :
* " error "
* Address of Error whose info is desired . Must be non - NULL .
* " pInfo "
* Address where info 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 Error 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_Error_GetSupplementaryInfo(
PKIX_Error *error,
PKIX_PL_Object **pInfo,
void *plContext);
/*
* FUNCTION : PKIX_Error_GetDescription
* DESCRIPTION :
*
* Retrieves the description of the Error pointed to by " error " and stores it
* at " pDesc " . If no description was specified , NULL will be stored at
* " pDesc " .
*
* PARAMETERS :
* " error "
* Address of Error whose description is desired . Must be non - NULL .
* " pDesc "
* 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 Error 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_Error_GetDescription(
PKIX_Error *error,
PKIX_PL_String **pDesc,
void *plContext);
/* PKIX_List
*
* Represents a collection of items . NULL is considered a valid item .
*/
/*
* FUNCTION : PKIX_List_Create
* DESCRIPTION :
*
* Creates a new List and stores it at " pList " . The List is initially empty
* and holds no items . To initially add items to the List , use
* PKIX_List_AppendItem
*
* PARAMETERS :
* " pList "
* 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_List_Create(
PKIX_List **pList,
void *plContext);
/*
* FUNCTION : PKIX_List_SetImmutable
* DESCRIPTION :
*
* Sets the List pointed to by " list " to be immutable . If a caller tries to
* change a List after it has been marked immutable ( i . e . by calling
* PKIX_List_AppendItem , PKIX_List_InsertItem , PKIX_List_SetItem , or
* PKIX_List_DeleteItem ) , an Error is returned .
*
* PARAMETERS :
* " list "
* Address of List to be marked immutable . Must be non - NULL .
* " plContext "
* Platform - specific context pointer .
* THREAD SAFETY :
* Not Thread Safe - assumes exclusive access to " list "
* ( 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_List_SetImmutable(
PKIX_List *list,
void *plContext);
/*
* FUNCTION : PKIX_List_IsImmutable
* DESCRIPTION :
*
* Checks whether the List pointed to by " list " is immutable and stores
* the Boolean result at " pImmutable " . If a caller tries to change a List
* after it has been marked immutable ( i . e . by calling PKIX_List_AppendItem ,
* PKIX_List_InsertItem , PKIX_List_SetItem , or PKIX_List_DeleteItem ) , an
* Error is returned .
*
* PARAMETERS :
* " list "
* Address of List whose immutability is to be determined .
* Must be non - NULL .
* " pImmutable "
* Address where PKIX_Boolean 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 Fatal Error if the function fails in an unrecoverable way .
*/
PKIX_Error *
PKIX_List_IsImmutable(
PKIX_List *list,
PKIX_Boolean *pImmutable,
void *plContext);
/*
* FUNCTION : PKIX_List_GetLength
* DESCRIPTION :
*
* Retrieves the length of the List pointed to by " list " and stores it at
* " pLength " .
*
* PARAMETERS :
* " list "
* Address of List 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 :
* Conditionally 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_List_GetLength(
PKIX_List *list,
PKIX_UInt32 *pLength,
void *plContext);
/*
* FUNCTION : PKIX_List_IsEmpty
* DESCRIPTION :
*
* Checks whether the List pointed to by " list " is empty and stores
* the Boolean result at " pEmpty " .
*
* PARAMETERS :
* " list "
* Address of List whose emptiness is to be determined . Must be non - NULL .
* " pEmpty "
* Address where PKIX_Boolean 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 Fatal Error if the function fails in an unrecoverable way .
*/
PKIX_Error *
PKIX_List_IsEmpty(
PKIX_List *list,
PKIX_Boolean *pEmpty,
void *plContext);
/*
* FUNCTION : PKIX_List_AppendItem
* DESCRIPTION :
*
* Appends the Object pointed to by " item " after the last non - NULL item in
* List pointed to by " list " , if any . Note that a List may validly contain
* NULL items . Appending " c " into the List ( " a " , NULL , " b " , NULL ) will result
* in ( " a " , NULL , " b " , " c " ) .
*
* PARAMETERS :
* " list "
* Address of List to append to . Must be non - NULL .
* " item "
* Address of new item to append .
* " plContext "
* Platform - specific context pointer .
* THREAD SAFETY :
* Not Thread Safe - assumes exclusive access to " list "
* ( 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_List_AppendItem(
PKIX_List *list,
PKIX_PL_Object *item,
void *plContext);
/*
* FUNCTION : PKIX_List_InsertItem
* DESCRIPTION :
*
* Inserts the Object pointed to by " item " into the List pointed to by " list "
* at the given " index " . The index counts from zero and must be less than the
* List ' s length . Existing list entries at or after this index will be moved
* to the next highest index .
*
* XXX why not allow equal to length which would be equivalent to AppendItem ?
*
* PARAMETERS :
* " list "
* Address of List to insert into . Must be non - NULL .
* " index "
* Position to insert into . Must be less than List ' s length .
* " item "
* Address of new item to append .
* " plContext "
* Platform - specific context pointer .
* THREAD SAFETY :
* Not Thread Safe - assumes exclusive access to " list "
* ( 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_List_InsertItem(
PKIX_List *list,
PKIX_UInt32 index,
PKIX_PL_Object *item,
void *plContext);
/*
* FUNCTION : PKIX_List_GetItem
* DESCRIPTION :
*
* Copies the " list " ' s item at " index " into " pItem " . The index counts from
* zero and must be less than the list ' s length . Increments the reference
* count on the returned object , if non - NULL .
*
* PARAMETERS :
* " list "
* Address of List to get item from . Must be non - NULL .
* " index "
* Index of list to get item from . Must be less than List ' s length .
* " pItem "
* 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 Fatal Error if the function fails in an unrecoverable way .
*/
PKIX_Error *
PKIX_List_GetItem(
PKIX_List *list,
PKIX_UInt32 index,
PKIX_PL_Object **pItem,
void *plContext);
/*
* FUNCTION : PKIX_List_SetItem
* DESCRIPTION :
*
* Sets the item at " index " of the List pointed to by " list " with the Object
* pointed to by " item " . The index counts from zero and must be less than the
* List ' s length . The previous entry at this index will have its reference
* count decremented and the new entry will have its reference count
* incremented .
*
* PARAMETERS :
* " list "
* Address of List to modify . Must be non - NULL .
* " index "
* Position in List to set . Must be less than List ' s length .
* " item "
* Address of Object to set at " index " .
* " plContext "
* Platform - specific context pointer .
* THREAD SAFETY :
* Not Thread Safe - assumes exclusive access to " list "
* ( 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_List_SetItem(
PKIX_List *list,
PKIX_UInt32 index,
PKIX_PL_Object *item,
void *plContext);
/*
* FUNCTION : PKIX_List_DeleteItem
*
* Deletes the item at " index " from the List pointed to by " list " . The index
* counts from zero and must be less than the List ' s length . Note that this
* function does not destroy the List . It simply decrements the reference
* count of the item at " index " in the List , deletes that item from the list
* and moves all subsequent entries to a lower index in the list . If there is
* only a single element in the List and that element is deleted , then the
* List will be empty .
*
* PARAMETERS :
* " list "
* Address of List to delete from . Must be non - NULL .
* " index "
* Position in List to delete . Must be less than List ' s length .
* " plContext "
* Platform - specific context pointer .
* THREAD SAFETY :
* Not Thread Safe - assumes exclusive access to " list "
* ( 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_List_DeleteItem(
PKIX_List *list,
PKIX_UInt32 index,
void *plContext);
/*
* FUNCTION : PKIX_List_ReverseList
* DESCRIPTION :
*
* Creates a new List whose elements are in the reverse order as the elements
* of the Object pointed to by " list " and stores the copy at " pReversedList " .
* If " list " is empty , the new reversed List will be a copy of " list " .
* Changes to the new object will not affect the original and vice versa .
*
* PARAMETERS :
* " list "
* Address of List whose elements are to be reversed . Must be non - NULL .
* " pReversedList "
* 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 Fatal Error if the function fails in an unrecoverable way .
*/
PKIX_Error *
PKIX_List_ReverseList(
PKIX_List *list,
PKIX_List **pReversedList,
void *plContext);
#ifdef __cplusplus
}
#endif
#endif /* _PKIX_UTIL_H */
Messung V0.5 in Prozent C=97 H=100 G=98
¤ Dauer der Verarbeitung: 0.28 Sekunden
(vorverarbeitet am 2026-09-30)
¤
*© Formatika GbR, Deutschland
2026-10-10
Neuigkeiten
Aktuelles
Motto des Tages
Open Source Software
Jenseits des Üblichen ....
Besucherstatistik
Statistik
#Sources=1126864
#Domains=1897691