return uniqueId;
}
+void
+SSDatabaseImpl::authenticate(CSSM_DB_ACCESS_TYPE inAccessRequest,
+ const CSSM_ACCESS_CREDENTIALS *inAccessCredentials)
+{
+ mClientSession.authenticateDb(dbHandle(), inAccessRequest,
+ AccessCredentials::overlay(inAccessCredentials));
+}
+
void
SSDatabaseImpl::lock()
{
// Reencode the db blob.
CssmDataContainer dbb(allocator());
mClientSession.encodeDb(mSSDbHandle, dbb, allocator());
- mDbBlobId->modify(DBBlobRelationID, NULL, &dbb, CSSM_DB_MODIFY_ATTRIBUTE_NONE);
+ getDbBlobId(NULL)->modify(DBBlobRelationID, NULL, &dbb, CSSM_DB_MODIFY_ATTRIBUTE_NONE);
}
bool
// Reencode the db blob.
CssmDataContainer dbb(allocator());
mClientSession.encodeDb(mSSDbHandle, dbb, allocator());
- mDbBlobId->modify(DBBlobRelationID, NULL, &dbb, CSSM_DB_MODIFY_ATTRIBUTE_NONE);
+ getDbBlobId(NULL)->modify(DBBlobRelationID, NULL, &dbb, CSSM_DB_MODIFY_ATTRIBUTE_NONE);
}
DbHandle
if (mForked()) {
// re-establish the dbHandle with the SecurityServer
CssmDataContainer dbb(allocator());
- mDbBlobId->get(NULL, &dbb);
+ getDbBlobId(&dbb);
mSSDbHandle = mClientSession.decodeDb(mIdentifier,
AccessCredentials::overlay(accessCredentials()), dbb);
}
mSSDbHandle = mClientSession.createDb(dlDbIdentifier, cred, owner, dbParameters);
CssmDataContainer dbb(allocator());
mClientSession.encodeDb(mSSDbHandle, dbb, allocator());
- mDbBlobId = Db::Impl::insert(DBBlobRelationID, NULL, &dbb);
+ Db::Impl::insert(DBBlobRelationID, NULL, &dbb);
}
catch(...)
{
mIdentifier = dlDbIdentifier;
Db::Impl::open();
- DbCursor cursor(SSDatabase(this));
- cursor->recordType(DBBlobRelationID);
CssmDataContainer dbb(allocator());
- if (!cursor->next(NULL, &dbb, mDbBlobId))
- CssmError::throwMe(CSSMERR_DL_DATABASE_CORRUPT);
+ getDbBlobId(&dbb);
mSSDbHandle = mClientSession.decodeDb(dlDbIdentifier, AccessCredentials::overlay(accessCredentials()), dbb);
}
return new SSUniqueRecordImpl(SSDatabase(this));
}
+CssmClient::DbUniqueRecord
+SSDatabaseImpl::getDbBlobId(CssmDataContainer *dbb)
+{
+ CssmClient::DbUniqueRecord dbBlobId;
+
+ DbCursor cursor(SSDatabase(this));
+ cursor->recordType(DBBlobRelationID);
+ if (!cursor->next(NULL, dbb, dbBlobId))
+ CssmError::throwMe(CSSMERR_DL_DATABASE_CORRUPT);
+
+ return dbBlobId;
+}
+
+
SSUniqueRecordImpl::SSUniqueRecordImpl(const SSDatabase &db)
: DbUniqueRecord::Impl(db)
{
return parent<SSDatabase>();
}
-