nssckt.h

来自「支持SSL v2/v3, TLS, PKCS #5, PKCS #7, PKCS」· C头文件 代码 · 共 1,124 行 · 第 1/3 页

H
1,124
字号
/*  * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. *  * The Original Code is the Netscape security libraries. *  * The Initial Developer of the Original Code is Netscape * Communications Corporation.  Portions created by Netscape are  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All * Rights Reserved. *  * Contributor(s): *  * Alternatively, the contents of this file may be used under the * terms of the GNU General Public License Version 2 or later (the * "GPL"), in which case the provisions of the GPL are applicable  * instead of those above.  If you wish to allow use of your  * version of this file only under the terms of the GPL and not to * allow others to use your version of this file under the MPL, * indicate your decision by deleting the provisions above and * replace them with the notice and other provisions required by * the GPL.  If you do not delete the provisions above, a recipient * may use your version of this file under either the MPL or the * GPL. *//* * This file is in part derived from a file "pkcs11t.h" made available * by RSA Security at ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/pkcs11t.h * * Copyright (C) 1994-1999 RSA Security Inc. Licence to copy this document * is granted provided that it is identified as "RSA Security Inc Public-Key * Cryptography Standards (PKCS)" in all material mentioning or referencing * this document. * */#ifndef NSSCKT_H#define NSSCKT_H#ifdef DEBUGstatic const char NSSCKT_CVS_ID[] = "@(#) $RCSfile: nssckt.h,v $ $Revision: 1.2 $ $Date: 2000/05/09 18:57:58 $ $Name: NSS_3_1_1_RTM $";#endif /* DEBUG */#include "nspr.h"/* * nssckt.h * * This file contains the type definitions for Cryptoki (PKCS#11). * These definitions are taken from the RSA Standard. * * NOTE: Unlike most things in NSS, there are public types and  * preprocessor definitions which do *NOT* begin with NSS-- rather, * they begin with CK, as per the standard. */#ifndef CK_FALSE#define CK_FALSE             0#endif#ifndef CK_TRUE#define CK_TRUE              (!CK_FALSE)#endif#define CK_PTR *#define CK_NULL_PTR 0#define CK_CALLBACK_FUNCTION(rv,func) rv (PR_CALLBACK * func)#define CK_DECLARE_FUNCTION(rv,func) NSS_EXTERN rv func#define CK_DECLARE_FUNCTION_POINTER(rv,func) rv (PR_CALLBACK * func)/* an unsigned 8-bit value */typedef unsigned char     CK_BYTE;/* an unsigned 8-bit character */typedef CK_BYTE           CK_CHAR;/* a BYTE-sized Boolean flag */typedef CK_BYTE           CK_BBOOL;/* an unsigned value, at least 16 bits long */typedef unsigned short int CK_USHORT;/* a signed value, the same size as a CK_USHORT */typedef short int         CK_SHORT;/* an unsigned value, at least 32 bits long */typedef unsigned long int CK_ULONG;/* a signed value, the same size as a CK_ULONG *//* CK_LONG is new for v2.0 */typedef long int          CK_LONG;/* at least 32 bits; each bit is a Boolean flag */typedef CK_ULONG          CK_FLAGS;/* some special values for certain CK_ULONG variables */#define CK_UNAVAILABLE_INFORMATION (~0UL)#define CK_EFFECTIVELY_INFINITE    0typedef CK_BYTE     CK_PTR   CK_BYTE_PTR;typedef CK_CHAR     CK_PTR   CK_CHAR_PTR;typedef CK_ULONG    CK_PTR   CK_ULONG_PTR;typedef void        CK_PTR   CK_VOID_PTR;/* Pointer to a CK_VOID_PTR-- i.e., pointer to pointer to void */typedef CK_VOID_PTR CK_PTR CK_VOID_PTR_PTR;/* The following value is always invalid if used as a session *//* handle or object handle */#define CK_INVALID_HANDLE 0#define CK_ENTRY/* pack */#include "nssckp.h"typedef struct CK_VERSION {  CK_BYTE       major;  /* integer portion of version number */  CK_BYTE       minor;  /* 1/100ths portion of version number */} CK_VERSION;typedef CK_VERSION CK_PTR CK_VERSION_PTR;typedef struct CK_INFO {  CK_VERSION    cryptokiVersion;     /* Cryptoki interface ver */  CK_CHAR       manufacturerID[32];  /* blank padded */  CK_FLAGS      flags;               /* must be zero */  /* libraryDescription and libraryVersion are new for v2.0 */  CK_CHAR       libraryDescription[32];  /* blank padded */  CK_VERSION    libraryVersion;          /* version of library */} CK_INFO;typedef CK_INFO CK_PTR    CK_INFO_PTR;/* CK_NOTIFICATION enumerates the types of notifications that * Cryptoki provides to an application *//* CK_NOTIFICATION has been changed from an enum to a CK_ULONG * for v2.0 */typedef CK_ULONG CK_NOTIFICATION;#define CKN_SURRENDER       0typedef CK_ULONG          CK_SLOT_ID;typedef CK_SLOT_ID CK_PTR CK_SLOT_ID_PTR;/* CK_SLOT_INFO provides information about a slot */typedef struct CK_SLOT_INFO {  CK_CHAR       slotDescription[64];  /* blank padded */  CK_CHAR       manufacturerID[32];   /* blank padded */  CK_FLAGS      flags;  /* hardwareVersion and firmwareVersion are new for v2.0 */  CK_VERSION    hardwareVersion;  /* version of hardware */  CK_VERSION    firmwareVersion;  /* version of firmware */} CK_SLOT_INFO;/* flags: bit flags that provide capabilities of the slot *      Bit Flag              Mask        Meaning */#define CKF_TOKEN_PRESENT     0x00000001  /* a token is there */#define CKF_REMOVABLE_DEVICE  0x00000002  /* removable devices*/#define CKF_HW_SLOT           0x00000004  /* hardware slot */typedef CK_SLOT_INFO CK_PTR CK_SLOT_INFO_PTR;/* CK_TOKEN_INFO provides information about a token */typedef struct CK_TOKEN_INFO {  CK_CHAR       label[32];           /* blank padded */  CK_CHAR       manufacturerID[32];  /* blank padded */  CK_CHAR       model[16];           /* blank padded */  CK_CHAR       serialNumber[16];    /* blank padded */  CK_FLAGS      flags;               /* see below */  /* ulMaxSessionCount, ulSessionCount, ulMaxRwSessionCount,   * ulRwSessionCount, ulMaxPinLen, and ulMinPinLen have all been   * changed from CK_USHORT to CK_ULONG for v2.0 */  CK_ULONG      ulMaxSessionCount;     /* max open sessions */  CK_ULONG      ulSessionCount;        /* sess. now open */  CK_ULONG      ulMaxRwSessionCount;   /* max R/W sessions */  CK_ULONG      ulRwSessionCount;      /* R/W sess. now open */  CK_ULONG      ulMaxPinLen;           /* in bytes */  CK_ULONG      ulMinPinLen;           /* in bytes */  CK_ULONG      ulTotalPublicMemory;   /* in bytes */  CK_ULONG      ulFreePublicMemory;    /* in bytes */  CK_ULONG      ulTotalPrivateMemory;  /* in bytes */  CK_ULONG      ulFreePrivateMemory;   /* in bytes */  /* hardwareVersion, firmwareVersion, and time are new for   * v2.0 */  CK_VERSION    hardwareVersion;       /* version of hardware */  CK_VERSION    firmwareVersion;       /* version of firmware */  CK_CHAR       utcTime[16];           /* time */} CK_TOKEN_INFO;/* The flags parameter is defined as follows: *      Bit Flag                    Mask        Meaning  */#define CKF_RNG                     0x00000001  /* has random #                                                 * generator */#define CKF_WRITE_PROTECTED         0x00000002  /* token is                                                 * write-                                                 * protected */#define CKF_LOGIN_REQUIRED          0x00000004  /* user must                                                 * login */#define CKF_USER_PIN_INITIALIZED    0x00000008  /* normal user's                                                 * PIN is set *//* CKF_RESTORE_KEY_NOT_NEEDED is new for v2.0.  If it is set, * that means that *every* time the state of cryptographic * operations of a session is successfully saved, all keys * needed to continue those operations are stored in the state */#define CKF_RESTORE_KEY_NOT_NEEDED  0x00000020/* CKF_CLOCK_ON_TOKEN is new for v2.0.  If it is set, that means * that the token has some sort of clock.  The time on that * clock is returned in the token info structure */#define CKF_CLOCK_ON_TOKEN          0x00000040/* CKF_PROTECTED_AUTHENTICATION_PATH is new for v2.0.  If it is * set, that means that there is some way for the user to login * without sending a PIN through the Cryptoki library itself */#define CKF_PROTECTED_AUTHENTICATION_PATH 0x00000100/* CKF_DUAL_CRYPTO_OPERATIONS is new for v2.0.  If it is true, * that means that a single session with the token can perform * dual simultaneous cryptographic operations (digest and * encrypt; decrypt and digest; sign and encrypt; and decrypt * and sign) */#define CKF_DUAL_CRYPTO_OPERATIONS  0x00000200typedef CK_TOKEN_INFO CK_PTR CK_TOKEN_INFO_PTR;/* CK_SESSION_HANDLE is a Cryptoki-assigned value that * identifies a session */typedef CK_ULONG          CK_SESSION_HANDLE;typedef CK_SESSION_HANDLE CK_PTR CK_SESSION_HANDLE_PTR; /* CK_USER_TYPE enumerates the types of Cryptoki users *//* CK_USER_TYPE has been changed from an enum to a CK_ULONG for * v2.0 */typedef CK_ULONG          CK_USER_TYPE;/* Security Officer */#define CKU_SO    0/* Normal user */#define CKU_USER  1/* CK_STATE enumerates the session states *//* CK_STATE has been changed from an enum to a CK_ULONG for * v2.0 */typedef CK_ULONG          CK_STATE;#define CKS_RO_PUBLIC_SESSION  0#define CKS_RO_USER_FUNCTIONS  1#define CKS_RW_PUBLIC_SESSION  2#define CKS_RW_USER_FUNCTIONS  3#define CKS_RW_SO_FUNCTIONS    4/* CK_SESSION_INFO provides information about a session */typedef struct CK_SESSION_INFO {  CK_SLOT_ID    slotID;  CK_STATE      state;  CK_FLAGS      flags;          /* see below */  /* ulDeviceError was changed from CK_USHORT to CK_ULONG for   * v2.0 */  CK_ULONG      ulDeviceError;  /* device-dependent error code */} CK_SESSION_INFO;/* The flags are defined in the following table: *      Bit Flag                Mask        Meaning */#define CKF_RW_SESSION          0x00000002  /* session is r/w */#define CKF_SERIAL_SESSION      0x00000004  /* no parallel */typedef CK_SESSION_INFO CK_PTR CK_SESSION_INFO_PTR;/* CK_OBJECT_HANDLE is a token-specific identifier for an * object  */typedef CK_ULONG          CK_OBJECT_HANDLE;typedef CK_OBJECT_HANDLE CK_PTR CK_OBJECT_HANDLE_PTR;/* CK_OBJECT_CLASS is a value that identifies the classes (or * types) of objects that Cryptoki recognizes.  It is defined * as follows: *//* CK_OBJECT_CLASS was changed from CK_USHORT to CK_ULONG for * v2.0 */typedef CK_ULONG          CK_OBJECT_CLASS;/* The following classes of objects are defined: */#define CKO_DATA            0x00000000#define CKO_CERTIFICATE     0x00000001#define CKO_PUBLIC_KEY      0x00000002#define CKO_PRIVATE_KEY     0x00000003#define CKO_SECRET_KEY      0x00000004#define CKO_VENDOR_DEFINED  0x80000000typedef CK_OBJECT_CLASS CK_PTR CK_OBJECT_CLASS_PTR;/* CK_KEY_TYPE is a value that identifies a key type *//* CK_KEY_TYPE was changed from CK_USHORT to CK_ULONG for v2.0 */typedef CK_ULONG          CK_KEY_TYPE;/* the following key types are defined: */#define CKK_RSA             0x00000000#define CKK_DSA             0x00000001#define CKK_DH              0x00000002/* CKK_ECDSA and CKK_KEA are new for v2.0 *//* Cryptoki V2.01 probably won't actually have ECDSA in it */#define CKK_ECDSA           0x00000003#define CKK_KEA             0x00000005#define CKK_GENERIC_SECRET  0x00000010#define CKK_RC2             0x00000011#define CKK_RC4             0x00000012#define CKK_DES             0x00000013#define CKK_DES2            0x00000014#define CKK_DES3            0x00000015/* all these key types are new for v2.0 */#define CKK_CAST            0x00000016#define CKK_CAST3           0x00000017#define CKK_CAST5           0x00000018#define CKK_CAST128         0x00000018  /* CAST128=CAST5 */#define CKK_RC5             0x00000019#define CKK_IDEA            0x0000001A#define CKK_SKIPJACK        0x0000001B#define CKK_BATON           0x0000001C#define CKK_JUNIPER         0x0000001D#define CKK_CDMF            0x0000001E#define CKK_VENDOR_DEFINED  0x80000000/* CK_CERTIFICATE_TYPE is a value that identifies a certificate * type *//* CK_CERTIFICATE_TYPE was changed from CK_USHORT to CK_ULONG * for v2.0 */typedef CK_ULONG          CK_CERTIFICATE_TYPE;/* The following certificate types are defined: */#define CKC_X_509           0x00000000#define CKC_VENDOR_DEFINED  0x80000000/* CK_ATTRIBUTE_TYPE is a value that identifies an attribute * type *//* CK_ATTRIBUTE_TYPE was changed from CK_USHORT to CK_ULONG for * v2.0 */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?