272 this.supportedProtocols = Arrays.asList(supportedProtocols); |
272 this.supportedProtocols = Arrays.asList(supportedProtocols); |
273 this.handshakeSupportedProtocols = |
273 this.handshakeSupportedProtocols = |
274 Arrays.asList(handshakeSupportedProtocols); |
274 Arrays.asList(handshakeSupportedProtocols); |
275 |
275 |
276 boolean mediator = true; |
276 boolean mediator = true; |
277 if (signAlgParams != null) { |
277 // HACK CODE |
278 mediator = signAlgParams.isAvailable; |
278 // |
279 } else { |
279 // An EC provider, for example the SunEC provider, may support |
280 try { |
280 // AlgorithmParameters but not KeyPairGenerator or Signature. |
281 Signature.getInstance(algorithm); |
281 if ("EC".equals(keyAlgorithm)) { |
282 } catch (Exception e) { |
282 mediator = JsseJce.isEcAvailable(); |
283 mediator = false; |
283 } |
284 if (SSLLogger.isOn && SSLLogger.isOn("ssl,handshake")) { |
284 |
285 SSLLogger.warning( |
285 // Check the specific algorithm and parameters. |
286 "Signature algorithm, " + algorithm + |
286 if (mediator) { |
287 ", is not supported by the underlying providers"); |
287 if (signAlgParams != null) { |
|
288 mediator = signAlgParams.isAvailable; |
|
289 } else { |
|
290 try { |
|
291 Signature.getInstance(algorithm); |
|
292 } catch (Exception e) { |
|
293 mediator = false; |
|
294 if (SSLLogger.isOn && SSLLogger.isOn("ssl,handshake")) { |
|
295 SSLLogger.warning( |
|
296 "Signature algorithm, " + algorithm + |
|
297 ", is not supported by the underlying providers"); |
|
298 } |
288 } |
299 } |
289 } |
300 } |
290 } |
301 } |
291 |
302 |
292 if (mediator && ((id >> 8) & 0xFF) == 0x03) { // SHA224 |
303 if (mediator && ((id >> 8) & 0xFF) == 0x03) { // SHA224 |