Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: net/android/keystore_openssl.cc

Issue 166143002: Refactoring AndroidKeyStore to support a KeyStore running in another process (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/android/keystore_openssl.h" 5 #include "net/android/keystore_openssl.h"
6 6
7 #include <jni.h> 7 #include <jni.h>
8 #include <openssl/bn.h> 8 #include <openssl/bn.h>
9 // This include is required to get the ECDSA_METHOD structure definition 9 // This include is required to get the ECDSA_METHOD structure definition
10 // which isn't currently part of the OpenSSL official ABI. This should 10 // which isn't currently part of the OpenSSL official ABI. This should
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 int RsaMethodInit(RSA* rsa) { 201 int RsaMethodInit(RSA* rsa) {
202 return 0; 202 return 0;
203 } 203 }
204 204
205 int RsaMethodFinish(RSA* rsa) { 205 int RsaMethodFinish(RSA* rsa) {
206 // Ensure the global JNI reference created with this wrapper is 206 // Ensure the global JNI reference created with this wrapper is
207 // properly destroyed with it. 207 // properly destroyed with it.
208 jobject key = reinterpret_cast<jobject>(RSA_get_app_data(rsa)); 208 jobject key = reinterpret_cast<jobject>(RSA_get_app_data(rsa));
209 if (key != NULL) { 209 if (key != NULL) {
210 RSA_set_app_data(rsa, NULL); 210 RSA_set_app_data(rsa, NULL);
211 JNIEnv* env = base::android::AttachCurrentThread(); 211 ReleaseKey(key);
212 env->DeleteGlobalRef(key);
213 } 212 }
214 // Actual return value is ignored by OpenSSL. There are no docs 213 // Actual return value is ignored by OpenSSL. There are no docs
215 // explaining what this is supposed to be. 214 // explaining what this is supposed to be.
216 return 0; 215 return 0;
217 } 216 }
218 217
219 const RSA_METHOD android_rsa_method = { 218 const RSA_METHOD android_rsa_method = {
220 /* .name = */ "Android signing-only RSA method", 219 /* .name = */ "Android signing-only RSA method",
221 /* .rsa_pub_enc = */ RsaMethodPubEnc, 220 /* .rsa_pub_enc = */ RsaMethodPubEnc,
222 /* .rsa_pub_dec = */ RsaMethodPubDec, 221 /* .rsa_pub_dec = */ RsaMethodPubDec,
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 DSAerr(DSA_F_DSA_DO_VERIFY, DSA_R_INVALID_DIGEST_TYPE); 405 DSAerr(DSA_F_DSA_DO_VERIFY, DSA_R_INVALID_DIGEST_TYPE);
407 return -1; 406 return -1;
408 } 407 }
409 408
410 int DsaMethodFinish(DSA* dsa) { 409 int DsaMethodFinish(DSA* dsa) {
411 // Free the global JNI reference that was created with this 410 // Free the global JNI reference that was created with this
412 // wrapper key. 411 // wrapper key.
413 jobject key = reinterpret_cast<jobject>(DSA_get_ex_data(dsa,0)); 412 jobject key = reinterpret_cast<jobject>(DSA_get_ex_data(dsa,0));
414 if (key != NULL) { 413 if (key != NULL) {
415 DSA_set_ex_data(dsa, 0, NULL); 414 DSA_set_ex_data(dsa, 0, NULL);
416 JNIEnv* env = base::android::AttachCurrentThread(); 415 ReleaseKey(key);
417 env->DeleteGlobalRef(key);
418 } 416 }
419 // Actual return value is ignored by OpenSSL. There are no docs 417 // Actual return value is ignored by OpenSSL. There are no docs
420 // explaining what this is supposed to be. 418 // explaining what this is supposed to be.
421 return 0; 419 return 0;
422 } 420 }
423 421
424 const DSA_METHOD android_dsa_method = { 422 const DSA_METHOD android_dsa_method = {
425 /* .name = */ "Android signing-only DSA method", 423 /* .name = */ "Android signing-only DSA method",
426 /* .dsa_do_sign = */ DsaMethodDoSign, 424 /* .dsa_do_sign = */ DsaMethodDoSign,
427 /* .dsa_sign_setup = */ DsaMethodSignSetup, 425 /* .dsa_sign_setup = */ DsaMethodSignSetup,
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 void* ptr, 484 void* ptr,
487 CRYPTO_EX_DATA* ad, 485 CRYPTO_EX_DATA* ad,
488 int idx, 486 int idx,
489 long argl, 487 long argl,
490 void* argp) { 488 void* argp) {
491 jobject private_key = reinterpret_cast<jobject>(ptr); 489 jobject private_key = reinterpret_cast<jobject>(ptr);
492 if (private_key == NULL) 490 if (private_key == NULL)
493 return; 491 return;
494 492
495 CRYPTO_set_ex_data(ad, idx, NULL); 493 CRYPTO_set_ex_data(ad, idx, NULL);
496 494 ReleaseKey(private_key);
497 JNIEnv* env = base::android::AttachCurrentThread();
498 env->DeleteGlobalRef(private_key);
499 } 495 }
500 496
501 int ExDataDup(CRYPTO_EX_DATA* to, 497 int ExDataDup(CRYPTO_EX_DATA* to,
502 CRYPTO_EX_DATA* from, 498 CRYPTO_EX_DATA* from,
503 void* from_d, 499 void* from_d,
504 int idx, 500 int idx,
505 long argl, 501 long argl,
506 void* argp) { 502 void* argp) {
507 // This callback shall never be called with the current OpenSSL 503 // This callback shall never be called with the current OpenSSL
508 // implementation (the library only ever duplicates EX_DATA items 504 // implementation (the library only ever duplicates EX_DATA items
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
691 default: 687 default:
692 LOG(WARNING) 688 LOG(WARNING)
693 << "GetOpenSSLPrivateKeyWrapper() called with invalid key type"; 689 << "GetOpenSSLPrivateKeyWrapper() called with invalid key type";
694 return NULL; 690 return NULL;
695 } 691 }
696 return pkey.release(); 692 return pkey.release();
697 } 693 }
698 694
699 } // namespace android 695 } // namespace android
700 } // namespace net 696 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698