comparison nss/lib/dev/devt.h @ 0:1e5118fa0cb1

This is NSS with a Cmake Buildsyste To compile a static NSS library for Windows we've used the Chromium-NSS fork and added a Cmake buildsystem to compile it statically for Windows. See README.chromium for chromium changes and README.trustbridge for our modifications.
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 28 Jul 2014 10:47:06 +0200
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:1e5118fa0cb1
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
5 #ifndef DEVT_H
6 #define DEVT_H
7
8 /*
9 * devt.h
10 *
11 * This file contains definitions for the low-level cryptoki devices.
12 */
13
14 #ifndef NSSBASET_H
15 #include "nssbaset.h"
16 #endif /* NSSBASET_H */
17
18 #ifndef NSSPKIT_H
19 #include "nsspkit.h"
20 #endif /* NSSPKIT_H */
21
22 #ifndef NSSDEVT_H
23 #include "nssdevt.h"
24 #endif /* NSSDEVT_H */
25
26 #ifndef BASET_H
27 #include "baset.h"
28 #endif /* BASET_H */
29
30 #include "secmodt.h"
31
32 PR_BEGIN_EXTERN_C
33
34 typedef struct nssSessionStr nssSession;
35
36 /* XXX until NSSTokenStr is moved */
37 struct nssDeviceBaseStr
38 {
39 NSSArena *arena;
40 PZLock *lock;
41 PRInt32 refCount;
42 NSSUTF8 *name;
43 PRUint32 flags;
44 };
45
46 typedef struct nssTokenObjectCacheStr nssTokenObjectCache;
47
48 /* XXX until devobject.c goes away */
49 struct NSSTokenStr
50 {
51 struct nssDeviceBaseStr base;
52 NSSSlot *slot; /* Parent (or peer, if you will) */
53 CK_FLAGS ckFlags; /* from CK_TOKEN_INFO.flags */
54 PRUint32 flags;
55 void *epv;
56 nssSession *defaultSession;
57 NSSTrustDomain *trustDomain;
58 PRIntervalTime lastTime;
59 nssTokenObjectCache *cache;
60 PK11SlotInfo *pk11slot;
61 };
62
63 typedef enum {
64 nssSlotAskPasswordTimes_FirstTime = 0,
65 nssSlotAskPasswordTimes_EveryTime = 1,
66 nssSlotAskPasswordTimes_Timeout = 2
67 }
68 nssSlotAskPasswordTimes;
69
70 struct nssSlotAuthInfoStr
71 {
72 PRTime lastLogin;
73 nssSlotAskPasswordTimes askTimes;
74 PRIntervalTime askPasswordTimeout;
75 };
76
77 struct NSSSlotStr
78 {
79 struct nssDeviceBaseStr base;
80 NSSModule *module; /* Parent */
81 NSSToken *token; /* Peer */
82 CK_SLOT_ID slotID;
83 CK_FLAGS ckFlags; /* from CK_SLOT_INFO.flags */
84 struct nssSlotAuthInfoStr authInfo;
85 PRIntervalTime lastTokenPing;
86 PZLock *lock;
87 void *epv;
88 PK11SlotInfo *pk11slot;
89 };
90
91 struct nssSessionStr
92 {
93 PZLock *lock;
94 CK_SESSION_HANDLE handle;
95 NSSSlot *slot;
96 PRBool isRW;
97 PRBool ownLock;
98 };
99
100 typedef enum {
101 NSSCertificateType_Unknown = 0,
102 NSSCertificateType_PKIX = 1
103 } NSSCertificateType;
104
105 typedef enum {
106 nssTrustLevel_Unknown = 0,
107 nssTrustLevel_NotTrusted = 1,
108 nssTrustLevel_Trusted = 2,
109 nssTrustLevel_TrustedDelegator = 3,
110 nssTrustLevel_MustVerify = 4,
111 nssTrustLevel_ValidDelegator = 5
112 } nssTrustLevel;
113
114 typedef struct nssCryptokiInstanceStr nssCryptokiInstance;
115
116 struct nssCryptokiInstanceStr
117 {
118 CK_OBJECT_HANDLE handle;
119 NSSToken *token;
120 PRBool isTokenObject;
121 NSSUTF8 *label;
122 };
123
124 typedef struct nssCryptokiInstanceStr nssCryptokiObject;
125
126 typedef struct nssTokenCertSearchStr nssTokenCertSearch;
127
128 typedef enum {
129 nssTokenSearchType_AllObjects = 0,
130 nssTokenSearchType_SessionOnly = 1,
131 nssTokenSearchType_TokenOnly = 2,
132 nssTokenSearchType_TokenForced = 3
133 } nssTokenSearchType;
134
135 struct nssTokenCertSearchStr
136 {
137 nssTokenSearchType searchType;
138 PRStatus (* callback)(NSSCertificate *c, void *arg);
139 void *cbarg;
140 nssList *cached;
141 /* TODO: add a cache query callback if the list would be large
142 * (traversal)
143 */
144 };
145
146 struct nssSlotListStr;
147 typedef struct nssSlotListStr nssSlotList;
148
149 struct NSSAlgorithmAndParametersStr
150 {
151 CK_MECHANISM mechanism;
152 };
153
154 PR_END_EXTERN_C
155
156 #endif /* DEVT_H */
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)