⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 providerlookup.java

📁 一个非常好的ssh客户端实现
💻 JAVA
字号:
/****************************************************************************** * * Copyright (c) 1999-2003 AppGate Network Security AB. All Rights Reserved. *  * This file contains Original Code and/or Modifications of Original Code as * defined in and that are subject to the MindTerm Public Source License, * Version 2.0, (the 'License'). You may not use this file except in compliance * with the License. *  * You should have received a copy of the MindTerm Public Source License * along with this software; see the file LICENSE.  If not, write to * AppGate Network Security AB, Otterhallegatan 2, SE-41118 Goteborg, SWEDEN * *****************************************************************************/package com.mindbright.jca.security;public final class ProviderLookup {    Provider provider;    Object   impl;    private ProviderLookup(Object impl, Provider provider) {	this.provider = provider;	this.impl     = impl;    }    public Object getImpl() {	return impl;    }    public Provider getProvider() {	return provider;    }    private static String className(String type, String algorithmSpec,				    Provider provider) {	String aliasFor =	    provider.getProperty("Alg.Alias." + type + "." + algorithmSpec);	if(aliasFor != null) {	    algorithmSpec = aliasFor;	}	return provider.getProperty(type + "." + algorithmSpec);    }    public static ProviderLookup getImplementation(String type,						   String algorithmSpec,						   String providerName)	throws NoSuchAlgorithmException, NoSuchProviderException    {	Provider provider = Security.getProvider(providerName);	if(provider == null) {	    throw new NoSuchProviderException("Provider not found: " +					      providerName);	}	String className = className(type, algorithmSpec, provider);	if(className == null) {	    throw new NoSuchAlgorithmException("Algorithm not found: " +					       algorithmSpec);	}	Object impl = null;	try {	    impl = Class.forName(className).newInstance();	} catch (ClassNotFoundException e) {	    throw new NoSuchAlgorithmException("Class " + className +					       " not found (" +					       provider + " - " +					       algorithmSpec + ")");	} catch (InstantiationException e) {	    throw new NoSuchAlgorithmException("Class " + className +					       " can't be instantiated (" +					       provider + " - " +					       algorithmSpec + ") error: " +					       e.getMessage());	} catch (IllegalAccessException e) {	    throw new NoSuchAlgorithmException("Class " + className +					       " can't be accessed (" +					       provider + " - " +					       algorithmSpec + ") error: " +					       e.getMessage());	}	return new ProviderLookup(impl, provider);    }    public static String findImplementingProvider(String type,						  String algorithmSpec)	throws NoSuchAlgorithmException    {	Provider[] providers = Security.getProviders();	for(int i = 0; i < providers.length; i++) {	    if(className(type, algorithmSpec, providers[i]) != null) {		return providers[i].getName();	    }	}	throw new NoSuchAlgorithmException("No implementing provider found: '" +					   type + "' - '" + algorithmSpec + "'");    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -