GUACAMOLE-774: Different approach to loading MD4 support.

This commit is contained in:
Virtually Nick
2019-08-13 14:11:38 -04:00
parent f7d836da9e
commit 95ec3c73ce

View File

@@ -20,18 +20,17 @@
package org.apache.guacamole.auth.radius; package org.apache.guacamole.auth.radius;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import java.lang.reflect.Constructor; import java.security.MessageDigest;
import java.lang.reflect.InvocationTargetException; import java.security.NoSuchAlgorithmException;
import java.security.Provider;
import java.security.Security; import java.security.Security;
import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.GuacamoleServerException;
import org.apache.guacamole.auth.radius.conf.ConfigurationService; import org.apache.guacamole.auth.radius.conf.ConfigurationService;
import org.apache.guacamole.auth.radius.conf.RadiusAuthenticationProtocol; import org.apache.guacamole.auth.radius.conf.RadiusAuthenticationProtocol;
import org.apache.guacamole.auth.radius.conf.RadiusGuacamoleProperties; import org.apache.guacamole.auth.radius.conf.RadiusGuacamoleProperties;
import org.apache.guacamole.environment.Environment; import org.apache.guacamole.environment.Environment;
import org.apache.guacamole.environment.LocalEnvironment; import org.apache.guacamole.environment.LocalEnvironment;
import org.apache.guacamole.net.auth.AuthenticationProvider; import org.apache.guacamole.net.auth.AuthenticationProvider;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
/** /**
* Guice module which configures RADIUS-specific injections. * Guice module which configures RADIUS-specific injections.
@@ -75,26 +74,10 @@ public class RadiusAuthenticationProviderModule extends AbstractModule {
|| innerProtocol == RadiusAuthenticationProtocol.MSCHAPv2) { || innerProtocol == RadiusAuthenticationProtocol.MSCHAPv2) {
try { try {
Provider md4Provider; MessageDigest.getInstance("MD4");
Constructor providerConstructor = Provider.class
.getConstructor(String.class, String.class, String.class);
if (providerConstructor != null)
md4Provider = (Provider) providerConstructor
.newInstance("MD4", "0.00", "MD4 for MSCHAPv1/2 Support");
else
md4Provider = (Provider) Provider.class
.getConstructor(String.class, Double.class, String.class)
.newInstance("MD4", 0.00, "MD4 for MSCHAPv1/2 Support");
assert(md4Provider != null);
md4Provider.put("MessageDigest.MD4", org.bouncycastle.jce.provider.JDKMessageDigest.MD4.class.getName());
Security.addProvider(md4Provider);
} }
catch (IllegalAccessException catch (NoSuchAlgorithmException e) {
| InstantiationException Security.addProvider(new BouncyCastleProvider());
| InvocationTargetException
| NoSuchMethodException e) {
throw new GuacamoleServerException("Unable to load MD4 support.", e);
} }
} }