blob: c0b8712089e9c76003ed2b47db7f7ba42fb1c052 [file] [log] [blame]
Torne (Richard Coles)58218062012-11-14 11:43:16 +00001// 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
10namespace {
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.
14class 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
36namespace crypto {
37
38base::Lock& GetMacSecurityServicesLock() {
39 return SecurityServicesSingleton::GetInstance()->lock();
40}
41
42} // namespace crypto