| package net.glowstone.util; |
| |
| import net.glowstone.GlowServer; |
| |
| import java.security.*; |
| import java.security.spec.X509EncodedKeySpec; |
| import java.util.logging.Level; |
| |
| /** |
| * Utility class for performing encrypted authentication |
| */ |
| public final class SecurityUtils { |
| |
| private static SecureRandom random = new SecureRandom(); |
| |
| private SecurityUtils() { |
| } |
| |
| /** |
| * Generate a RSA key pair |
| */ |
| public static KeyPair generateKeyPair() { |
| KeyPair keyPair = null; |
| try { |
| KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA"); |
| generator.initialize(1024); |
| |
| keyPair = generator.generateKeyPair(); |
| } catch (NoSuchAlgorithmException ex) { |
| GlowServer.logger.log(Level.SEVERE, "Unable to generate RSA key pair", ex); |
| } |
| return keyPair; |
| } |
| |
| /** |
| * Generate a random verify token |
| */ |
| public static byte[] generateVerifyToken() { |
| byte[] token = new byte[4]; |
| random.nextBytes(token); |
| return token; |
| } |
| |
| /** |
| * Generates an X509 formatted key used in authentication |
| */ |
| public static Key generateX509Key(Key base) { |
| Key key = null; |
| try { |
| X509EncodedKeySpec encodedKeySpec = new X509EncodedKeySpec(base.getEncoded()); |
| KeyFactory keyFactory = KeyFactory.getInstance("RSA"); |
| |
| key = keyFactory.generatePublic(encodedKeySpec); |
| } catch (Exception ex) { |
| GlowServer.logger.log(Level.SEVERE, "Unable to generate X509 encoded key", ex); |
| } |
| return key; |
| } |
| } |