public static PublicKeyRecord createNew(KeyPair kp) throws NoSuchAlgorithmException, InvalidKeySpecException { KeyFactory fact = KeyFactory.getInstance("RSA"); RSAPublicKeySpec pub = fact.getKeySpec(kp.getPublic(), RSAPublicKeySpec.class); int id = 0; try { Connection conn = DatabaseConnection.getConn(); String sql = "insert into publickey modulus = ?, exponent = ?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setString(1, pub.getModulus().toString()); stmt.setString(2, pub.getPublicExponent().toString()); stmt.executeUpdate(); ResultSet generatedKeys = stmt.getGeneratedKeys(); if (generatedKeys.next()) { id = generatedKeys.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } return get(id); }
public static PublicKeyRecord get(int id) { BigInteger modulus = null; BigInteger exponent = null; try { Connection conn = DatabaseConnection.getConn(); String sql = "select * from publickey where id = ? limit 1"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setInt(1, id); ResultSet rs = stmt.executeQuery(); if (rs.next()) { modulus = new BigInteger(rs.getString("MODULUS")); exponent = new BigInteger(rs.getString("EXPONENT")); } stmt.close(); } catch (SQLException e) { e.printStackTrace(); } if (modulus == null || exponent == null) { return null; } else { return new PublicKeyRecord(id, modulus, exponent); } }