Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(577)

Side by Side Diff: crypto_pkcs11.h

Issue 6338003: Explicitly logging out the token to avoid leaving it in a non-stable state. (Closed) Base URL: http://git.chromium.org/git/entd.git@master
Patch Set: Returning early on logout failure. Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base_policy/policy-utils.js ('k') | crypto_pkcs11.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef ENTD_CRYPTO_PKCS11_H_ 5 #ifndef ENTD_CRYPTO_PKCS11_H_
6 #define ENTD_CRYPTO_PKCS11_H_ 6 #define ENTD_CRYPTO_PKCS11_H_
7 7
8 #include <string> 8 #include <string>
9 #include <map> 9 #include <map>
10 10
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 private: 118 private:
119 SlotMap slot_map_; 119 SlotMap slot_map_;
120 }; 120 };
121 121
122 class Session : public Scriptable<Session> { 122 class Session : public Scriptable<Session> {
123 public: 123 public:
124 static const std::string class_name() { 124 static const std::string class_name() {
125 return "entd.crypto.Pkcs11.Session"; 125 return "entd.crypto.Pkcs11.Session";
126 }; 126 };
127 127
128 Session() : session_handle_(0) {} 128 Session() : session_handle_(0), logged_in_(false) {}
129 ~Session() { 129 ~Session() {
130 if (logged_in_)
131 C_Logout(session_handle_);
130 if (session_handle_) 132 if (session_handle_)
131 C_CloseSession(session_handle_); 133 C_CloseSession(session_handle_);
132 } 134 }
133 135
134 bool Initialize(const CK_SLOT_ID slot_id, 136 bool Initialize(const CK_SLOT_ID slot_id,
135 const CK_SESSION_HANDLE& session_handle); 137 const CK_SESSION_HANDLE& session_handle);
136 static bool InitializeTemplate(v8::Handle<v8::FunctionTemplate> ctor_t); 138 static bool InitializeTemplate(v8::Handle<v8::FunctionTemplate> ctor_t);
137 139
138 v8::Handle<v8::Value> Construct(const v8::Arguments& args) { 140 v8::Handle<v8::Value> Construct(const v8::Arguments& args) {
139 return ThrowNoScriptableConstructor(); 141 return ThrowNoScriptableConstructor();
140 } 142 }
141 143
142 // Call C_GetSessionInfo(), and copy the results to the js_object(). 144 // Call C_GetSessionInfo(), and copy the results to the js_object().
143 bool Refresh(); 145 bool Refresh();
144 146
145 // Stubs for PKCS#11 C_* functions of the same name. 147 // Stubs for PKCS#11 C_* functions of the same name.
146 v8::Handle<v8::Value> Close(const v8::Arguments& args); 148 v8::Handle<v8::Value> Close(const v8::Arguments& args);
147 v8::Handle<v8::Value> Login(const v8::Arguments& args); 149 v8::Handle<v8::Value> Login(const v8::Arguments& args);
148 v8::Handle<v8::Value> Logout(const v8::Arguments& args); 150 v8::Handle<v8::Value> Logout(const v8::Arguments& args);
149 v8::Handle<v8::Value> InitPin(const v8::Arguments& args); 151 v8::Handle<v8::Value> InitPin(const v8::Arguments& args);
150 v8::Handle<v8::Value> SetPin(const v8::Arguments& args); 152 v8::Handle<v8::Value> SetPin(const v8::Arguments& args);
151 v8::Handle<v8::Value> FindObjects(const v8::Arguments& args); 153 v8::Handle<v8::Value> FindObjects(const v8::Arguments& args);
152 v8::Handle<v8::Value> CreateObject(const v8::Arguments& args); 154 v8::Handle<v8::Value> CreateObject(const v8::Arguments& args);
153 v8::Handle<v8::Value> GenerateKeyPair(const v8::Arguments& args); 155 v8::Handle<v8::Value> GenerateKeyPair(const v8::Arguments& args);
154 156
157 // Helper functions.
158 v8::Handle<v8::Value> LogoutAndClose(const v8::Arguments& args);
159
155 // Invoke the 'bool Refresh()' method from script. 160 // Invoke the 'bool Refresh()' method from script.
156 v8::Handle<v8::Value> CallRefresh(const v8::Arguments& args); 161 v8::Handle<v8::Value> CallRefresh(const v8::Arguments& args);
157 162
158 private: 163 private:
159 CK_SLOT_ID slot_id_; 164 CK_SLOT_ID slot_id_;
160 CK_SESSION_HANDLE session_handle_; 165 CK_SESSION_HANDLE session_handle_;
166 bool logged_in_;
161 }; 167 };
162 168
163 class Object : public Scriptable<Object> { 169 class Object : public Scriptable<Object> {
164 public: 170 public:
165 static const std::string class_name() { 171 static const std::string class_name() {
166 return "entd.crypto.Pkcs11.Object"; 172 return "entd.crypto.Pkcs11.Object";
167 }; 173 };
168 174
169 Object() : session_handle_(0), object_handle_(0) {} 175 Object() : session_handle_(0), object_handle_(0) {}
170 ~Object() {} 176 ~Object() {}
(...skipping 25 matching lines...) Expand all
196 // This can be called multiple times. It will keep trying to initialize the 202 // This can be called multiple times. It will keep trying to initialize the
197 // library until it succeeds, then it will become a no-op. 203 // library until it succeeds, then it will become a no-op.
198 static CK_RV InitializeLibrary(); 204 static CK_RV InitializeLibrary();
199 }; 205 };
200 206
201 } // namespace crypto 207 } // namespace crypto
202 208
203 } // namespace entd 209 } // namespace entd
204 210
205 #endif // ENTD_CRYPTO_PKCS11_H_ 211 #endif // ENTD_CRYPTO_PKCS11_H_
OLDNEW
« no previous file with comments | « base_policy/policy-utils.js ('k') | crypto_pkcs11.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698