Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Protect access to the CryptoAPI provider handle with a mutex. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
2847ced3666f238d4189530fc3b5cc4a |
User & Date: | mistachkin 2013-02-26 00:39:53.067 |
Context
2013-02-26
| ||
02:51 | Style fix. check-in: 44eb94e4ec user: mistachkin tags: trunk | |
00:39 | Protect access to the CryptoAPI provider handle with a mutex. check-in: 2847ced366 user: mistachkin tags: trunk | |
2013-02-25
| ||
23:37 | Adjust the Fossil ignore-glob settings file. check-in: 101f077d2c user: mistachkin tags: trunk | |
Changes
Changes to SQLite.Interop/src/win/crypt.c.
︙ | ︙ | |||
39 40 41 42 43 44 45 | } /* Create a cryptographic context. Use the enhanced provider because it is available on ** most platforms */ static BOOL InitializeProvider() { | > > > | > > > > > > | 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | } /* Create a cryptographic context. Use the enhanced provider because it is available on ** most platforms */ static BOOL InitializeProvider() { MUTEX_LOGIC( sqlite3_mutex *pMaster = sqlite3_mutex_alloc(SQLITE_MUTEX_STATIC_MASTER); ) sqlite3_mutex_enter(pMaster); if (g_hProvider) { sqlite3_mutex_leave(pMaster); return TRUE; } if (!CryptAcquireContext(&g_hProvider, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { sqlite3_mutex_leave(pMaster); return FALSE; } sqlite3_mutex_leave(pMaster); return TRUE; } /* Create or update a cryptographic context for a pager. ** This function will automatically determine if the encryption algorithm requires ** extra padding, and if it does, will create a temp buffer big enough to provide ** space to hold it. |
︙ | ︙ | |||
224 225 226 227 228 229 230 | if (!pKey || !nKeyLen) return 0; if (!InitializeProvider()) { return MAXDWORD; } | > > > > | | | | | | | | > > > > | 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 | if (!pKey || !nKeyLen) return 0; if (!InitializeProvider()) { return MAXDWORD; } { MUTEX_LOGIC( sqlite3_mutex *pMaster = sqlite3_mutex_alloc(SQLITE_MUTEX_STATIC_MASTER); ) sqlite3_mutex_enter(pMaster); if (CryptCreateHash(g_hProvider, CALG_SHA1, 0, 0, &hHash)) { if (CryptHashData(hHash, (LPBYTE)pKey, nKeyLen, 0)) { CryptDeriveKey(g_hProvider, CALG_RC4, hHash, 0, &hKey); } CryptDestroyHash(hHash); } sqlite3_mutex_leave(pMaster); } return hKey; } /* Called by sqlite and sqlite3_key_interop to attach a key to a database. */ int sqlite3CodecAttach(sqlite3 *db, int nDb, const void *pKey, int nKeyLen) { int rc = SQLITE_ERROR; |
︙ | ︙ |