Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Adjust CryptoAPI codec to support v2 interfaces. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
4a11e7c65aef194c39153a5cc890f412 |
User & Date: | mistachkin 2013-05-29 23:03:34.495 |
Context
2013-05-29
| ||
23:04 | Honor the DateTimeFormat and DateTimeKind connection string properties even when the BindAllAsText connection flag is in use. check-in: d81d546e99 user: mistachkin tags: trunk | |
23:03 | Adjust CryptoAPI codec to support v2 interfaces. check-in: 4a11e7c65a user: mistachkin tags: trunk | |
20:47 | Fix some tests failing due to the previous check-in. check-in: d0957b3941 user: mistachkin tags: trunk | |
Changes
Changes to SQLite.Interop/src/win/crypt.c.
1 2 3 | /******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Robert Simpson (robert@blackcastlesoft.com) | | | 1 2 3 4 5 6 7 8 9 10 11 | /******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Robert Simpson (robert@blackcastlesoft.com) * * Released to the public domain, use at your own risk! ********************************************************/ #ifndef SQLITE_OMIT_DISKIO #ifdef SQLITE_HAS_CODEC #include <windows.h> |
︙ | ︙ | |||
222 223 224 225 226 227 228 | break; } return data; } /* Derive an encryption key from a user-supplied buffer */ | | | | | 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | break; } return data; } /* Derive an encryption key from a user-supplied buffer */ static HCRYPTKEY DeriveKey(const void *pKey, int nKey) { HCRYPTHASH hHash = 0; HCRYPTKEY hKey; if (!pKey || !nKey) 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, nKey, 0)) { CryptDeriveKey(g_hProvider, CALG_RC4, hHash, 0, &hKey); } CryptDestroyHash(hHash); } sqlite3_mutex_leave(pMaster); |
︙ | ︙ | |||
319 320 321 322 323 324 325 | LPCRYPTBLOCK pBlock = (LPCRYPTBLOCK)sqlite3pager_get_codecarg(p); if (ppKey) *ppKey = 0; if (pnKeyLen && pBlock) *pnKeyLen = 1; } /* We do not attach this key to the temp store, only the main database. */ | > > > > > | | | | | 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 | LPCRYPTBLOCK pBlock = (LPCRYPTBLOCK)sqlite3pager_get_codecarg(p); if (ppKey) *ppKey = 0; if (pnKeyLen && pBlock) *pnKeyLen = 1; } /* We do not attach this key to the temp store, only the main database. */ SQLITE_API int sqlite3_key_v2(sqlite3 *db, const char *zDbName, const void *pKey, int nKey) { return sqlite3CodecAttach(db, 0, pKey, nKey); } SQLITE_API int sqlite3_key(sqlite3 *db, const void *pKey, int nKey) { return sqlite3_key_v2(db, 0, pKey, nKey); } /* Changes the encryption key for an existing database. */ SQLITE_API int sqlite3_rekey_v2(sqlite3 *db, const char *zDbName, const void *pKey, int nKey) { Btree *pbt = db->aDb[0].pBt; Pager *p = sqlite3BtreePager(pbt); LPCRYPTBLOCK pBlock = (LPCRYPTBLOCK)sqlite3pager_get_codecarg(p); HCRYPTKEY hKey = DeriveKey(pKey, nKey); int rc = SQLITE_ERROR; if (hKey == MAXDWORD) { sqlite3Error(db, rc, SQLITECRYPTERROR_PROVIDER); return rc; } |
︙ | ︙ | |||
434 435 436 437 438 439 440 441 442 443 | sqlite3PagerSetCodec(p, NULL, NULL, NULL, NULL); } sqlite3_mutex_leave(db->mutex); return rc; } #endif /* SQLITE_HAS_CODEC */ #endif /* SQLITE_OMIT_DISKIO */ | > > > > > | 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 | sqlite3PagerSetCodec(p, NULL, NULL, NULL, NULL); } sqlite3_mutex_leave(db->mutex); return rc; } SQLITE_API int sqlite3_rekey(sqlite3 *db, const void *pKey, int nKey) { return sqlite3_rekey_v2(db, 0, pKey, nKey); } #endif /* SQLITE_HAS_CODEC */ #endif /* SQLITE_OMIT_DISKIO */ |