+uint32 DbImpl::dbBlobVersion() {
+ uint32 dbBlobVersion = 0;
+ uint32* dbBlobVersionPtr = &dbBlobVersion;
+
+ // We only have a blob version if we're an apple CSPDL
+ if(dl()->guid() == gGuidAppleCSPDL) {
+ check(CSSM_DL_PassThrough(handle(), CSSM_APPLECSPDL_DB_GET_BLOB_VERSION, NULL, (void**) &dbBlobVersionPtr));
+ } else {
+ secdebugfunc("integrity", "Non-Apple CSPDL keychains don't have keychain versions");
+ }
+ return dbBlobVersion;
+}
+
+uint32 DbImpl::recodeDbToVersion(uint32 version) {
+ uint32 newDbVersion;
+ uint32* newDbVersionPtr = &newDbVersion;
+ check(CSSM_DL_PassThrough(handle(), CSSM_APPLECSPDL_DB_RECODE_TO_BLOB_VERSION, &version, (void**) &newDbVersionPtr));
+ return newDbVersion;
+}
+
+void DbImpl::takeFileLock() {
+ passThrough(CSSM_APPLECSPDL_DB_TAKE_FILE_LOCK, NULL, NULL);
+}
+
+void DbImpl::releaseFileLock(bool success) {
+ passThrough(CSSM_APPLECSPDL_DB_RELEASE_FILE_LOCK, &success, NULL);
+}
+
+void DbImpl::makeBackup() {
+ passThrough(CSSM_APPLECSPDL_DB_MAKE_BACKUP, NULL, NULL);
+}
+