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
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
43