Home | History | Annotate | Download | only in crypto
      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