1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "crypto/mac_security_services_lock.h" 6 7 #include "base/memory/singleton.h" 8 #include "base/synchronization/lock.h" 9 10 namespace { 11 12 // This singleton pertains to Apple's wrappers over their own CSSM handles, 13 // as opposed to our own CSSM_CSP_HANDLE in cssm_init.cc. 14 class SecurityServicesSingleton { 15 public: 16 static SecurityServicesSingleton* GetInstance() { 17 return Singleton<SecurityServicesSingleton, 18 LeakySingletonTraits<SecurityServicesSingleton> >::get(); 19 } 20 21 base::Lock& lock() { return lock_; } 22 23 private: 24 friend struct DefaultSingletonTraits<SecurityServicesSingleton>; 25 26 SecurityServicesSingleton() {} 27 ~SecurityServicesSingleton() {} 28 29 base::Lock lock_; 30 31 DISALLOW_COPY_AND_ASSIGN(SecurityServicesSingleton); 32 }; 33 34 } // namespace 35 36 namespace crypto { 37 38 base::Lock& GetMacSecurityServicesLock() { 39 return SecurityServicesSingleton::GetInstance()->lock(); 40 } 41 42 } // namespace crypto 43