/* 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/. */ #ifndef _PK11_TABLE_H_ #define _PK11_TABLE_H_ /* * Supported functions.. */ #include #include "nspr.h" #include "prtypes.h" typedef enum { F_No_Function, #undef CK_NEED_ARG_LIST #define CK_PKCS11_FUNCTION_INFO(func) F_##func, #include "pkcs11f.h" #undef CK_NEED_ARG_LISt #undef CK_PKCS11_FUNCTION_INFO F_SetVar, F_SetStringVar, F_NewArray, F_NewInitializeArgs, F_NewTemplate, F_NewMechanism, F_BuildTemplate, F_SetTemplate, F_Print, F_SaveVar, F_RestoreVar, F_Increment, F_Decrement, F_Delete, F_List, F_Run, F_Load, F_Unload, F_System, F_Loop, F_Time, F_Help, F_Quit, F_QuitIf, F_QuitIfString } FunctionType; /* * Supported Argument Types */ typedef enum { ArgNone, ArgVar, ArgULong, ArgChar, ArgUTF8, ArgInfo, ArgSlotInfo, ArgTokenInfo, ArgSessionInfo, ArgAttribute, ArgMechanism, ArgMechanismInfo, ArgInitializeArgs, ArgFunctionList, /* Modifier Flags */ ArgMask = 0xff, ArgOut = 0x100, ArgArray = 0x200, ArgNew = 0x400, ArgFile = 0x800, ArgStatic = 0x1000, ArgOpt = 0x2000, ArgFull = 0x4000 } ArgType; typedef enum _constType { ConstNone, ConstBool, ConstInfoFlags, ConstSlotFlags, ConstTokenFlags, ConstSessionFlags, ConstMechanismFlags, ConstInitializeFlags, ConstUsers, ConstSessionState, ConstObject, ConstHardware, ConstKeyType, ConstCertType, ConstAttribute, ConstMechanism, ConstResult, ConstTrust, ConstAvailableSizes, ConstCurrentSize } ConstType; typedef struct _constant { const char *name; CK_ULONG value; ConstType type; ConstType attrType; } Constant ; /* * Values structures. */ typedef struct _values { ArgType type; ConstType constType; int size; char *filename; void *data; int reference; int arraySize; } Value; /* * Variables */ typedef struct _variable Variable; struct _variable { Variable *next; char *vname; Value *value; }; /* NOTE: if you change MAX_ARGS, you need to change the commands array * below as well. */ #define MAX_ARGS 10 /* * structure for master command array */ typedef struct _commands { char *fname; FunctionType fType; char *helpString; ArgType args[MAX_ARGS]; } Commands; typedef struct _module { PRLibrary *library; CK_FUNCTION_LIST *functionList; } Module; typedef struct _topics { char *name; char *helpString; } Topics; /* * the command array itself. Make name to function and it's arguments */ extern const char **valueString; extern const int valueCount; extern const char **constTypeString; extern const int constTypeCount; extern const Constant *consts; extern const int constCount; extern const Commands *commands; extern const int commandCount; extern const Topics *topics; extern const int topicCount; extern const char * getName(CK_ULONG value, ConstType type); extern const char * getNameFromAttribute(CK_ATTRIBUTE_TYPE type); extern int totalKnownType(ConstType type); #endif /* _PK11_TABLE_H_ */