[email protected] | 9493ee95c | 2011-03-28 23:48:44 | [diff] [blame] | 1 | // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
[email protected] | 3bcd5790 | 2010-06-23 22:46:04 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. | ||||
4 | |||||
[email protected] | 4b559b4d | 2011-04-14 17:37:14 | [diff] [blame] | 5 | #ifndef CRYPTO_CAPI_UTIL_H_ |
6 | #define CRYPTO_CAPI_UTIL_H_ | ||||
[email protected] | 32b76ef | 2010-07-26 23:08:24 | [diff] [blame] | 7 | #pragma once |
[email protected] | 3bcd5790 | 2010-06-23 22:46:04 | [diff] [blame] | 8 | |
9 | #include <windows.h> | ||||
10 | #include <wincrypt.h> | ||||
11 | |||||
[email protected] | 4b559b4d | 2011-04-14 17:37:14 | [diff] [blame] | 12 | namespace crypto { |
[email protected] | 3bcd5790 | 2010-06-23 22:46:04 | [diff] [blame] | 13 | |
14 | // CryptAcquireContext when passed CRYPT_NEWKEYSET or CRYPT_DELETEKEYSET in | ||||
15 | // flags is not thread-safe. For such calls, we create a global lock to | ||||
16 | // synchronize it. | ||||
17 | // | ||||
18 | // From "Threading Issues with Cryptographic Service Providers", | ||||
19 | // <http://msdn.microsoft.com/en-us/library/aa388149(v=VS.85).aspx>: | ||||
20 | // | ||||
21 | // "The CryptAcquireContext function is generally thread safe unless | ||||
22 | // CRYPT_NEWKEYSET or CRYPT_DELETEKEYSET is specified in the dwFlags | ||||
23 | // parameter." | ||||
[email protected] | 4b559b4d | 2011-04-14 17:37:14 | [diff] [blame] | 24 | BOOL CryptAcquireContextLocked(HCRYPTPROV* prov, |
25 | LPCWSTR container, | ||||
26 | LPCWSTR provider, | ||||
27 | DWORD prov_type, | ||||
28 | DWORD flags); | ||||
[email protected] | 3bcd5790 | 2010-06-23 22:46:04 | [diff] [blame] | 29 | |
[email protected] | 4b559b4d | 2011-04-14 17:37:14 | [diff] [blame] | 30 | } // namespace crypto |
[email protected] | 3bcd5790 | 2010-06-23 22:46:04 | [diff] [blame] | 31 | |
[email protected] | 4b559b4d | 2011-04-14 17:37:14 | [diff] [blame] | 32 | #endif // CRYPTO_CAPI_UTIL_H_ |