+
+//=================================================================================
+// SharedMemoryCommon
+//=================================================================================
+
+std::string SharedMemoryCommon::SharedMemoryFilePath(const char *segmentName, uid_t uid) {
+ std::string path;
+ uid = SharedMemoryCommon::fixUID(uid);
+ path = SharedMemoryCommon::kMDSMessagesDirectory; // i.e. /private/var/db/mds/messages/
+ if (uid != 0) {
+ path += std::to_string(uid) + "/"; // e.g. /private/var/db/mds/messages/501/
+ }
+
+ path += SharedMemoryCommon::kUserPrefix; // e.g. /var/db/mds/messages/se_
+ path += segmentName; // e.g. /var/db/mds/messages/501/se_SecurityMessages
+ return path;
+}
+
+std::string SharedMemoryCommon::notificationDescription(int domain, int event) {
+ string domainstr, eventstr;
+
+ switch (domain) {
+ case Security::SecurityServer::kNotificationDomainAll: domainstr = "all"; break;
+ case Security::SecurityServer::kNotificationDomainDatabase: domainstr = "database"; break;
+ case Security::SecurityServer::kNotificationDomainPCSC: domainstr = "pcsc"; break;
+ case Security::SecurityServer::kNotificationDomainCDSA: domainstr = "CDSA"; break;
+ default:
+ domainstr = "unknown";
+ break;
+ }
+
+ switch (event) {
+ case kSecLockEvent: eventstr = "lock"; break;
+ case kSecUnlockEvent: eventstr = "unlock"; break;
+ case kSecAddEvent: eventstr = "add"; break;
+ case kSecDeleteEvent: eventstr = "delete"; break;
+ case kSecUpdateEvent: eventstr = "update"; break;
+ case kSecPasswordChangedEvent: eventstr = "passwordChange"; break;
+ case kSecDefaultChangedEvent: eventstr = "defaultChange"; break;
+ case kSecDataAccessEvent: eventstr = "dataAccess"; break;
+ case kSecKeychainListChangedEvent: eventstr = "listChange"; break;
+ case kSecTrustSettingsChangedEvent: eventstr = "trustSettings"; break;
+ default:
+ domainstr = "unknown";
+ break;
+ }
+
+ return "Domain: " + domainstr + ", Event: " + eventstr;
+}