| OLD | NEW |
| 1 /* This Source Code Form is subject to the terms of the Mozilla Public | 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 | 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/. */ | 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| 4 /* | 4 /* |
| 5 * This file implements PKCS 11 on top of our existing security modules | 5 * This file implements PKCS 11 on top of our existing security modules |
| 6 * | 6 * |
| 7 * For more information about PKCS 11 See PKCS 11 Token Inteface Standard. | 7 * For more information about PKCS 11 See PKCS 11 Token Inteface Standard. |
| 8 * This implementation has two slots: | 8 * This implementation has two slots: |
| 9 * slot 1 is our generic crypto support. It does not require login. | 9 * slot 1 is our generic crypto support. It does not require login. |
| 10 * It supports Public Key ops, and all they bulk ciphers and hashes. | 10 * It supports Public Key ops, and all they bulk ciphers and hashes. |
| (...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 682 SDBFind **find) | 682 SDBFind **find) |
| 683 { | 683 { |
| 684 SDBPrivate *sdb_p = sdb->private; | 684 SDBPrivate *sdb_p = sdb->private; |
| 685 sqlite3 *sqlDB = NULL; | 685 sqlite3 *sqlDB = NULL; |
| 686 const char *table; | 686 const char *table; |
| 687 char *newStr, *findStr = NULL; | 687 char *newStr, *findStr = NULL; |
| 688 sqlite3_stmt *findstmt = NULL; | 688 sqlite3_stmt *findstmt = NULL; |
| 689 char *join=""; | 689 char *join=""; |
| 690 int sqlerr = SQLITE_OK; | 690 int sqlerr = SQLITE_OK; |
| 691 CK_RV error = CKR_OK; | 691 CK_RV error = CKR_OK; |
| 692 int i; | 692 unsigned int i; |
| 693 | 693 |
| 694 LOCK_SQLITE() | 694 LOCK_SQLITE() |
| 695 *find = NULL; | 695 *find = NULL; |
| 696 error = sdb_openDBLocal(sdb_p, &sqlDB, &table); | 696 error = sdb_openDBLocal(sdb_p, &sqlDB, &table); |
| 697 if (error != CKR_OK) { | 697 if (error != CKR_OK) { |
| 698 goto loser; | 698 goto loser; |
| 699 } | 699 } |
| 700 | 700 |
| 701 findStr = sqlite3_mprintf(""); | 701 findStr = sqlite3_mprintf(""); |
| 702 for (i=0; findStr && i < count; i++) { | 702 for (i=0; findStr && i < count; i++) { |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 829 SDBPrivate *sdb_p = sdb->private; | 829 SDBPrivate *sdb_p = sdb->private; |
| 830 sqlite3 *sqlDB = NULL; | 830 sqlite3 *sqlDB = NULL; |
| 831 sqlite3_stmt *stmt = NULL; | 831 sqlite3_stmt *stmt = NULL; |
| 832 char *getStr = NULL; | 832 char *getStr = NULL; |
| 833 char *newStr = NULL; | 833 char *newStr = NULL; |
| 834 const char *table = NULL; | 834 const char *table = NULL; |
| 835 int sqlerr = SQLITE_OK; | 835 int sqlerr = SQLITE_OK; |
| 836 CK_RV error = CKR_OK; | 836 CK_RV error = CKR_OK; |
| 837 int found = 0; | 837 int found = 0; |
| 838 int retry = 0; | 838 int retry = 0; |
| 839 int i; | 839 unsigned int i; |
| 840 | 840 |
| 841 | 841 |
| 842 /* open a new db if necessary */ | 842 /* open a new db if necessary */ |
| 843 error = sdb_openDBLocal(sdb_p, &sqlDB, &table); | 843 error = sdb_openDBLocal(sdb_p, &sqlDB, &table); |
| 844 if (error != CKR_OK) { | 844 if (error != CKR_OK) { |
| 845 goto loser; | 845 goto loser; |
| 846 } | 846 } |
| 847 | 847 |
| 848 for (i=0; i < count; i++) { | 848 for (i=0; i < count; i++) { |
| 849 getStr = sqlite3_mprintf("a%x", template[i].type); | 849 getStr = sqlite3_mprintf("a%x", template[i].type); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 872 | 872 |
| 873 sqlerr = sqlite3_bind_int(stmt, 1, object_id); | 873 sqlerr = sqlite3_bind_int(stmt, 1, object_id); |
| 874 if (sqlerr != SQLITE_OK) { goto loser; } | 874 if (sqlerr != SQLITE_OK) { goto loser; } |
| 875 | 875 |
| 876 do { | 876 do { |
| 877 sqlerr = sqlite3_step(stmt); | 877 sqlerr = sqlite3_step(stmt); |
| 878 if (sqlerr == SQLITE_BUSY) { | 878 if (sqlerr == SQLITE_BUSY) { |
| 879 PR_Sleep(SDB_BUSY_RETRY_TIME); | 879 PR_Sleep(SDB_BUSY_RETRY_TIME); |
| 880 } | 880 } |
| 881 if (sqlerr == SQLITE_ROW) { | 881 if (sqlerr == SQLITE_ROW) { |
| 882 » » int blobSize; | 882 » » unsigned int blobSize; |
| 883 const char *blobData; | 883 const char *blobData; |
| 884 | 884 |
| 885 blobSize = sqlite3_column_bytes(stmt, 0); | 885 blobSize = sqlite3_column_bytes(stmt, 0); |
| 886 blobData = sqlite3_column_blob(stmt, 0); | 886 blobData = sqlite3_column_blob(stmt, 0); |
| 887 if (blobData == NULL) { | 887 if (blobData == NULL) { |
| 888 template[i].ulValueLen = -1; | 888 template[i].ulValueLen = -1; |
| 889 error = CKR_ATTRIBUTE_TYPE_INVALID; | 889 error = CKR_ATTRIBUTE_TYPE_INVALID; |
| 890 break; | 890 break; |
| 891 } | 891 } |
| 892 /* If the blob equals our explicit NULL value, then the | 892 /* If the blob equals our explicit NULL value, then the |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 956 const CK_ATTRIBUTE *template, CK_ULONG count) | 956 const CK_ATTRIBUTE *template, CK_ULONG count) |
| 957 { | 957 { |
| 958 SDBPrivate *sdb_p = sdb->private; | 958 SDBPrivate *sdb_p = sdb->private; |
| 959 sqlite3 *sqlDB = NULL; | 959 sqlite3 *sqlDB = NULL; |
| 960 sqlite3_stmt *stmt = NULL; | 960 sqlite3_stmt *stmt = NULL; |
| 961 char *setStr = NULL; | 961 char *setStr = NULL; |
| 962 char *newStr = NULL; | 962 char *newStr = NULL; |
| 963 int sqlerr = SQLITE_OK; | 963 int sqlerr = SQLITE_OK; |
| 964 int retry = 0; | 964 int retry = 0; |
| 965 CK_RV error = CKR_OK; | 965 CK_RV error = CKR_OK; |
| 966 int i; | 966 unsigned int i; |
| 967 | 967 |
| 968 if ((sdb->sdb_flags & SDB_RDONLY) != 0) { | 968 if ((sdb->sdb_flags & SDB_RDONLY) != 0) { |
| 969 return CKR_TOKEN_WRITE_PROTECTED; | 969 return CKR_TOKEN_WRITE_PROTECTED; |
| 970 } | 970 } |
| 971 | 971 |
| 972 if (count == 0) { | 972 if (count == 0) { |
| 973 return CKR_OK; | 973 return CKR_OK; |
| 974 } | 974 } |
| 975 | 975 |
| 976 LOCK_SQLITE() | 976 LOCK_SQLITE() |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1108 SDBPrivate *sdb_p = sdb->private; | 1108 SDBPrivate *sdb_p = sdb->private; |
| 1109 sqlite3 *sqlDB = NULL; | 1109 sqlite3 *sqlDB = NULL; |
| 1110 sqlite3_stmt *stmt = NULL; | 1110 sqlite3_stmt *stmt = NULL; |
| 1111 char *columnStr = NULL; | 1111 char *columnStr = NULL; |
| 1112 char *valueStr = NULL; | 1112 char *valueStr = NULL; |
| 1113 char *newStr = NULL; | 1113 char *newStr = NULL; |
| 1114 int sqlerr = SQLITE_OK; | 1114 int sqlerr = SQLITE_OK; |
| 1115 CK_RV error = CKR_OK; | 1115 CK_RV error = CKR_OK; |
| 1116 CK_OBJECT_HANDLE this_object = CK_INVALID_HANDLE; | 1116 CK_OBJECT_HANDLE this_object = CK_INVALID_HANDLE; |
| 1117 int retry = 0; | 1117 int retry = 0; |
| 1118 int i; | 1118 unsigned int i; |
| 1119 | 1119 |
| 1120 if ((sdb->sdb_flags & SDB_RDONLY) != 0) { | 1120 if ((sdb->sdb_flags & SDB_RDONLY) != 0) { |
| 1121 return CKR_TOKEN_WRITE_PROTECTED; | 1121 return CKR_TOKEN_WRITE_PROTECTED; |
| 1122 } | 1122 } |
| 1123 | 1123 |
| 1124 LOCK_SQLITE() | 1124 LOCK_SQLITE() |
| 1125 if ((*object_id != CK_INVALID_HANDLE) && | 1125 if ((*object_id != CK_INVALID_HANDLE) && |
| 1126 !sdb_objectExists(sdb, *object_id)) { | 1126 !sdb_objectExists(sdb, *object_id)) { |
| 1127 this_object = *object_id; | 1127 this_object = *object_id; |
| 1128 } else { | 1128 } else { |
| (...skipping 949 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2078 s_shutdown() | 2078 s_shutdown() |
| 2079 { | 2079 { |
| 2080 #ifdef SQLITE_UNSAFE_THREADS | 2080 #ifdef SQLITE_UNSAFE_THREADS |
| 2081 if (sqlite_lock) { | 2081 if (sqlite_lock) { |
| 2082 PR_DestroyLock(sqlite_lock); | 2082 PR_DestroyLock(sqlite_lock); |
| 2083 sqlite_lock = NULL; | 2083 sqlite_lock = NULL; |
| 2084 } | 2084 } |
| 2085 #endif | 2085 #endif |
| 2086 return CKR_OK; | 2086 return CKR_OK; |
| 2087 } | 2087 } |
| OLD | NEW |