| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2013 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 #ifndef NET_ANDROID_KEYSTORE_OPENSSL_H | |
| 6 #define NET_ANDROID_KEYSTORE_OPENSSL_H | |
| 7 | |
| 8 #include <jni.h> | |
| 9 #include <openssl/evp.h> | |
| 10 | |
| 11 #include "crypto/scoped_openssl_types.h" | |
| 12 #include "net/base/net_export.h" | |
| 13 | |
| 14 // OpenSSL-specific functions to use the Android platform keystore. | |
| 15 // The features provided here are highly specific to OpenSSL and are | |
| 16 // segregated from net/android/keystore.h because the latter only provides | |
| 17 // simply JNI stubs to call Java code which only uses platform APIs. | |
| 18 | |
| 19 namespace net { | |
| 20 namespace android { | |
| 21 | |
| 22 // Create a custom OpenSSL EVP_PKEY instance that wraps a platform | |
| 23 // java.security.PrivateKey object, and will call the platform APIs | |
| 24 // through JNI to implement signing (and only signing). | |
| 25 // | |
| 26 // This method can be called from any thread. It shall only be used | |
| 27 // to implement client certificate handling though. | |
| 28 // | |
| 29 // |private_key| is a JNI local (or global) reference to the Java | |
| 30 // PrivateKey object. | |
| 31 // | |
| 32 // Returns a new EVP_PKEY* object with the following features: | |
| 33 // | |
| 34 // - Only contains a private key. | |
| 35 // | |
| 36 // - Owns its own _global_ JNI reference to the object. This means the | |
| 37 // caller can free |private_key| safely after the call, and that the | |
| 38 // the returned EVP_PKEY instance can be used from any thread. | |
| 39 // | |
| 40 // - Uses a custom method to implement the minimum functions required to | |
| 41 // *sign* the digest that is part of the "Verify Certificate" message | |
| 42 // during the OpenSSL handshake. Anything else will result in undefined | |
| 43 // behaviour. | |
| 44 NET_EXPORT crypto::ScopedEVP_PKEY GetOpenSSLPrivateKeyWrapper( | |
| 45 jobject private_key); | |
| 46 | |
| 47 } // namespace android | |
| 48 } // namespace net | |
| 49 | |
| 50 #endif // NET_ANDROID_KEYSTORE_OPENSSL_H | |
| OLD | NEW |