+ MacOSError::check(SecRandomCopyBytes(kSecRandomDefault, sizeof(mCssmHandle), &mCssmHandle));
+}
+
+
+//
+// Create an "integrity" ACL
+//
+ACL::ACL(const CssmData &digest, Allocator &alloc)
+: allocator(alloc), mSubjectForm(NULL), mIntegrity(alloc, digest), mMutex(Mutex::recursive)
+{
+ mState = inserted; // new
+ mForm = integrityForm;
+ mAuthorizations.insert(CSSM_ACL_AUTHORIZATION_INTEGRITY);
+ mEntryTag = CSSM_APPLE_ACL_TAG_INTEGRITY;
+ mDelegate = false;
+
+ //mPromptDescription stays empty
+ //mPromptSelector stays empty
+
+ // randomize the CSSM handle
+ MacOSError::check(SecRandomCopyBytes(kSecRandomDefault, sizeof(mCssmHandle), &mCssmHandle));