OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 package org.chromium.net; | 5 package org.chromium.net; |
6 | 6 |
7 import android.util.Log; | 7 import android.util.Log; |
8 | 8 |
9 import java.lang.reflect.Method; | 9 import java.lang.reflect.Method; |
10 import java.security.NoSuchAlgorithmException; | 10 import java.security.NoSuchAlgorithmException; |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 return PrivateKeyType.RSA; | 136 return PrivateKeyType.RSA; |
137 if (javaKey instanceof DSAPrivateKey) | 137 if (javaKey instanceof DSAPrivateKey) |
138 return PrivateKeyType.DSA; | 138 return PrivateKeyType.DSA; |
139 if (javaKey instanceof ECPrivateKey) | 139 if (javaKey instanceof ECPrivateKey) |
140 return PrivateKeyType.ECDSA; | 140 return PrivateKeyType.ECDSA; |
141 else | 141 else |
142 return PrivateKeyType.INVALID; | 142 return PrivateKeyType.INVALID; |
143 } | 143 } |
144 | 144 |
145 @Override | 145 @Override |
146 public int getOpenSSLHandleForPrivateKey(AndroidPrivateKey key) { | 146 public long getOpenSSLHandleForPrivateKey(AndroidPrivateKey key) { |
147 PrivateKey javaKey = ((DefaultAndroidPrivateKey) key).getJavaKey(); | 147 PrivateKey javaKey = ((DefaultAndroidPrivateKey) key).getJavaKey(); |
148 // Sanity checks | 148 // Sanity checks |
149 if (javaKey == null) { | 149 if (javaKey == null) { |
150 Log.e(TAG, "key == null"); | 150 Log.e(TAG, "key == null"); |
151 return 0; | 151 return 0; |
152 } | 152 } |
153 if (!(javaKey instanceof RSAPrivateKey)) { | 153 if (!(javaKey instanceof RSAPrivateKey)) { |
154 Log.e(TAG, "does not implement RSAPrivateKey"); | 154 Log.e(TAG, "does not implement RSAPrivateKey"); |
155 return 0; | 155 return 0; |
156 } | 156 } |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 // which is the address of an EVP_PKEY object. | 200 // which is the address of an EVP_PKEY object. |
201 Method getPkeyContext; | 201 Method getPkeyContext; |
202 try { | 202 try { |
203 getPkeyContext = opensslKey.getClass().getDeclaredMethod("getPke
yContext"); | 203 getPkeyContext = opensslKey.getClass().getDeclaredMethod("getPke
yContext"); |
204 } catch (Exception e) { | 204 } catch (Exception e) { |
205 // Bail here too, something really not working as expected. | 205 // Bail here too, something really not working as expected. |
206 Log.e(TAG, "No getPkeyContext() method on OpenSSLKey member:" +
e); | 206 Log.e(TAG, "No getPkeyContext() method on OpenSSLKey member:" +
e); |
207 return 0; | 207 return 0; |
208 } | 208 } |
209 getPkeyContext.setAccessible(true); | 209 getPkeyContext.setAccessible(true); |
210 int evp_pkey = 0; | 210 long evp_pkey = 0; |
211 try { | 211 try { |
212 evp_pkey = (Integer) getPkeyContext.invoke(opensslKey); | 212 evp_pkey = (Long) getPkeyContext.invoke(opensslKey); |
213 } finally { | 213 } finally { |
214 getPkeyContext.setAccessible(false); | 214 getPkeyContext.setAccessible(false); |
215 } | 215 } |
216 if (evp_pkey == 0) { | 216 if (evp_pkey == 0) { |
217 // The PrivateKey is probably rotten for some reason. | 217 // The PrivateKey is probably rotten for some reason. |
218 Log.e(TAG, "getPkeyContext() returned null"); | 218 Log.e(TAG, "getPkeyContext() returned null"); |
219 } | 219 } |
220 return evp_pkey; | 220 return evp_pkey; |
221 | 221 |
222 } catch (Exception e) { | 222 } catch (Exception e) { |
223 Log.e(TAG, "Exception while trying to retrieve system EVP_PKEY handl
e: " + e); | 223 Log.e(TAG, "Exception while trying to retrieve system EVP_PKEY handl
e: " + e); |
224 return 0; | 224 return 0; |
225 } | 225 } |
226 } | 226 } |
227 | 227 |
228 @Override | 228 @Override |
229 public void releaseKey(AndroidPrivateKey key) { | 229 public void releaseKey(AndroidPrivateKey key) { |
230 // no-op for in-process. GC will handle key collection | 230 // no-op for in-process. GC will handle key collection |
231 } | 231 } |
232 } | 232 } |
OLD | NEW |