Back to index

lightning-sunbird  0.9+nobinonly
devt.h
Go to the documentation of this file.
00001 /* ***** BEGIN LICENSE BLOCK *****
00002  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00003  *
00004  * The contents of this file are subject to the Mozilla Public License Version
00005  * 1.1 (the "License"); you may not use this file except in compliance with
00006  * the License. You may obtain a copy of the License at
00007  * http://www.mozilla.org/MPL/
00008  *
00009  * Software distributed under the License is distributed on an "AS IS" basis,
00010  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00011  * for the specific language governing rights and limitations under the
00012  * License.
00013  *
00014  * The Original Code is the Netscape security libraries.
00015  *
00016  * The Initial Developer of the Original Code is
00017  * Netscape Communications Corporation.
00018  * Portions created by the Initial Developer are Copyright (C) 1994-2000
00019  * the Initial Developer. All Rights Reserved.
00020  *
00021  * Contributor(s):
00022  *
00023  * Alternatively, the contents of this file may be used under the terms of
00024  * either the GNU General Public License Version 2 or later (the "GPL"), or
00025  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00026  * in which case the provisions of the GPL or the LGPL are applicable instead
00027  * of those above. If you wish to allow use of your version of this file only
00028  * under the terms of either the GPL or the LGPL, and not to allow others to
00029  * use your version of this file under the terms of the MPL, indicate your
00030  * decision by deleting the provisions above and replace them with the notice
00031  * and other provisions required by the GPL or the LGPL. If you do not delete
00032  * the provisions above, a recipient may use your version of this file under
00033  * the terms of any one of the MPL, the GPL or the LGPL.
00034  *
00035  * ***** END LICENSE BLOCK ***** */
00036 
00037 #ifndef DEVT_H
00038 #define DEVT_H
00039 
00040 #ifdef DEBUG
00041 static const char DEVT_CVS_ID[] = "@(#) $RCSfile: devt.h,v $ $Revision: 1.22.28.1 $ $Date: 2007/11/16 05:25:07 $";
00042 #endif /* DEBUG */
00043 
00044 /*
00045  * devt.h
00046  *
00047  * This file contains definitions for the low-level cryptoki devices.
00048  */
00049 
00050 #ifndef NSSBASET_H
00051 #include "nssbaset.h"
00052 #endif /* NSSBASET_H */
00053 
00054 #ifndef NSSPKIT_H
00055 #include "nsspkit.h"
00056 #endif /* NSSPKIT_H */
00057 
00058 #ifndef NSSDEVT_H
00059 #include "nssdevt.h"
00060 #endif /* NSSDEVT_H */
00061 
00062 #ifndef NSSCKT_H
00063 #include "nssckt.h"
00064 #endif /* NSSCKT_H */
00065 
00066 #ifndef BASET_H
00067 #include "baset.h"
00068 #endif /* BASET_H */
00069 
00070 #include "secmodt.h"
00071 
00072 PR_BEGIN_EXTERN_C
00073 
00074 typedef struct nssSessionStr nssSession;
00075 
00076 /* XXX until NSSTokenStr is moved */
00077 struct nssDeviceBaseStr
00078 {
00079   NSSArena *arena;
00080   PZLock *lock;
00081   PRInt32 refCount;
00082   NSSUTF8 *name;
00083   PRUint32 flags;
00084 };
00085 
00086 typedef struct nssTokenObjectCacheStr nssTokenObjectCache;
00087 
00088 /* XXX until devobject.c goes away */
00089 struct NSSTokenStr
00090 {
00091     struct nssDeviceBaseStr base;
00092     NSSSlot *slot;  /* Parent (or peer, if you will) */
00093     CK_FLAGS ckFlags; /* from CK_TOKEN_INFO.flags */
00094     PRUint32 flags;
00095     void *epv;
00096     nssSession *defaultSession;
00097     NSSTrustDomain *trustDomain;
00098     PRIntervalTime lastTime;
00099     nssTokenObjectCache *cache;
00100     PK11SlotInfo *pk11slot;
00101 };
00102 
00103 typedef enum {
00104   nssSlotAskPasswordTimes_FirstTime = 0,
00105   nssSlotAskPasswordTimes_EveryTime = 1,
00106   nssSlotAskPasswordTimes_Timeout = 2
00107 } 
00108 nssSlotAskPasswordTimes;
00109 
00110 struct nssSlotAuthInfoStr
00111 {
00112   PRTime lastLogin;
00113   nssSlotAskPasswordTimes askTimes;
00114   PRIntervalTime askPasswordTimeout;
00115 };
00116 
00117 struct NSSSlotStr
00118 {
00119   struct nssDeviceBaseStr base;
00120   NSSModule *module; /* Parent */
00121   NSSToken *token;  /* Peer */
00122   CK_SLOT_ID slotID;
00123   CK_FLAGS ckFlags; /* from CK_SLOT_INFO.flags */
00124   struct nssSlotAuthInfoStr authInfo;
00125   PRIntervalTime lastTokenPing;
00126   PZLock *lock;
00127   void *epv;
00128   PK11SlotInfo *pk11slot;
00129 };
00130 
00131 struct nssSessionStr
00132 {
00133   PZLock *lock;
00134   CK_SESSION_HANDLE handle;
00135   NSSSlot *slot;
00136   PRBool isRW;
00137   PRBool ownLock;
00138 };
00139 
00140 typedef enum {
00141     NSSCertificateType_Unknown = 0,
00142     NSSCertificateType_PKIX = 1
00143 } NSSCertificateType;
00144 
00145 typedef enum {
00146     nssTrustLevel_Unknown = 0,
00147     nssTrustLevel_NotTrusted = 1,
00148     nssTrustLevel_Trusted = 2,
00149     nssTrustLevel_TrustedDelegator = 3,
00150     nssTrustLevel_Valid = 4,
00151     nssTrustLevel_ValidDelegator = 5
00152 } nssTrustLevel;
00153 
00154 typedef struct nssCryptokiInstanceStr nssCryptokiInstance;
00155 
00156 struct nssCryptokiInstanceStr
00157 {
00158     CK_OBJECT_HANDLE handle;
00159     NSSToken *token;
00160     PRBool isTokenObject;
00161     NSSUTF8 *label;
00162 };
00163 
00164 typedef struct nssCryptokiInstanceStr nssCryptokiObject;
00165 
00166 typedef struct nssTokenCertSearchStr nssTokenCertSearch;
00167 
00168 typedef enum {
00169     nssTokenSearchType_AllObjects = 0,
00170     nssTokenSearchType_SessionOnly = 1,
00171     nssTokenSearchType_TokenOnly = 2,
00172     nssTokenSearchType_TokenForced = 3
00173 } nssTokenSearchType;
00174 
00175 struct nssTokenCertSearchStr
00176 {
00177     nssTokenSearchType searchType;
00178     PRStatus (* callback)(NSSCertificate *c, void *arg);
00179     void *cbarg;
00180     nssList *cached;
00181     /* TODO: add a cache query callback if the list would be large 
00182      *       (traversal) 
00183      */
00184 };
00185 
00186 struct nssSlotListStr;
00187 typedef struct nssSlotListStr nssSlotList;
00188 
00189 struct NSSAlgorithmAndParametersStr
00190 {
00191     CK_MECHANISM mechanism;
00192 };
00193 
00194 PR_END_EXTERN_C
00195 
00196 #endif /* DEVT_H */