From 67bd1413dc47ec37a9ba042949973eff0a5045fd Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Tue, 29 Jun 2021 14:59:45 +0200 Subject: - test for FCB version 3 --- .../uic/barcode/utils/AlgorithmNameResolver.java | 167 +++------------------ 1 file changed, 22 insertions(+), 145 deletions(-) (limited to 'src/main/java/org/uic/barcode/utils/AlgorithmNameResolver.java') diff --git a/src/main/java/org/uic/barcode/utils/AlgorithmNameResolver.java b/src/main/java/org/uic/barcode/utils/AlgorithmNameResolver.java index 1671ba9..4491358 100644 --- a/src/main/java/org/uic/barcode/utils/AlgorithmNameResolver.java +++ b/src/main/java/org/uic/barcode/utils/AlgorithmNameResolver.java @@ -3,11 +3,6 @@ package org.uic.barcode.utils; import java.security.Provider; import java.security.Provider.Service; import java.security.Security; -import java.util.Set; -import java.util.SortedSet; -import java.util.TreeSet; -import java.util.regex.Matcher; -import java.util.regex.Pattern; public class AlgorithmNameResolver { @@ -16,10 +11,6 @@ public class AlgorithmNameResolver { public static final String TYPE_SIGNATURE_ALG = "Signature"; - private static final Pattern KEY_TYPE_PATTERN = Pattern.compile("^(\\w+)[.].*$"); - private static final Pattern KEY_ALIAS_TYPE_PATTERN = Pattern.compile("^Alg[.]Alias[.](\\w+).*$"); - private static final Pattern KEY_OID_PATTERN = Pattern.compile(".*?(\\d+(?:[.]\\d+){3,})$"); - public static String getSignatureAlgorithmName (String oid) throws Exception { Provider[] provs = Security.getProviders(); @@ -32,85 +23,35 @@ public class AlgorithmNameResolver { return null; } + + public static String getName (String type, String oid) throws Exception { - - public static String getName(String type, String oid) throws Exception { - - Provider[] provs = Security.getProviders(); - - for (Provider prov : provs) { - - String name = getName(type, oid, prov); - if (name != null) return name; - - } - - if (oid.startsWith("1.2.840.10045")) { - return "ECDSA"; - } else if (oid.startsWith("1.2.840.10040")) { - return "DSA"; + Provider[] provs = Security.getProviders(); + for (Provider prov : provs) { + Service service = prov.getService(type,oid); + if (service != null) { + return service.getAlgorithm(); + } } - return null; - - } - - public static String getName(String type, String oid, Provider prov) throws Exception { - - SortedSet typeAndOID = getTypeAndOIDStrings(prov); - - for (String entry : typeAndOID) { - String[] typeAndOIDArray = entry.split("-"); - String ptype = typeAndOIDArray[0]; - if (ptype.equalsIgnoreCase(type)) { - String poid = typeAndOIDArray[1]; - Service pservice = prov.getService(ptype, poid); - String palgo = pservice.getAlgorithm(); - - if (poid != null && ptype.equalsIgnoreCase(type) && poid.equals(oid)) { - return palgo; - } - } - } - - if (oid.startsWith("1.2.840.10045")) { return "ECDSA"; } else if (oid.startsWith("1.2.840.10040")) { return "DSA"; } - - return null; - - } - - public static String getName(String type, String oid, String providerName) throws Exception { - - Provider[] provs = Security.getProviders(); - - for (Provider prov : provs) { - - if (providerName == null || prov.getName().equals(providerName)) { - - SortedSet typeAndOID = getTypeAndOIDStrings(prov); - for (String entry : typeAndOID) { - String[] typeAndOIDArray = entry.split("-"); - String ptype = typeAndOIDArray[0]; - if (ptype.equalsIgnoreCase(type)) { - String poid = typeAndOIDArray[1]; - Service pservice = prov.getService(ptype, poid); - String palgo = pservice.getAlgorithm(); - - if (ptype.equalsIgnoreCase(type) && poid.equals(oid)) { - return palgo; - } - } - } - } - } - - + return null; + + } + + + public static String getName(String type, String oid, Provider prov) throws Exception { + + Service service = prov.getService(type,oid); + if (service != null) { + return service.getAlgorithm(); + } + if (oid.startsWith("1.2.840.10045")) { return "ECDSA"; } else if (oid.startsWith("1.2.840.10040")) { @@ -119,73 +60,9 @@ public class AlgorithmNameResolver { return null; - } - - - - private static SortedSet getTypeAndOIDStrings(Provider prov) { - - SortedSet typeAndOID = new TreeSet<>(); - - Set keys = prov.keySet(); - for (Object key : keys) { - String keyString = key.toString(); - Matcher oidMatcher = KEY_OID_PATTERN.matcher(keyString); - if (oidMatcher.matches()) { - // get OID from matched keyString - String oid = oidMatcher.group(1); - - // determine type - String type; - Matcher aliasTypeMatcher = KEY_ALIAS_TYPE_PATTERN.matcher(keyString); - if (aliasTypeMatcher.matches()) { - type = aliasTypeMatcher.group(1); - } else { - Matcher typeMatcher = KEY_TYPE_PATTERN.matcher(keyString); - typeMatcher.matches(); - type = typeMatcher.group(1); - } - // algorithm parameters are not algorithms, so skip them - if (type.equals("AlgorithmParameters")) { - continue; - } - - // auto-removes dupes - typeAndOID.add(type + "-" + oid); - } - } - return typeAndOID; - } + } + - public static String getSecurityNames() throws Exception { - - Provider[] provs = Security.getProviders(); - - StringBuilder sb = new StringBuilder(); - - for (Provider prov : provs) { - - SortedSet typeAndOID = getTypeAndOIDStrings(prov); - - for (String entry : typeAndOID) { - String[] typeAndOIDArray = entry.split("-"); - String ptype = typeAndOIDArray[0]; - String poid = typeAndOIDArray[1]; - Service pservice = prov.getService(ptype, poid); - String palgo = ""; - if ( pservice != null) { - palgo = pservice.getAlgorithm(); - } - sb.append(prov).append(";"); - sb.append(ptype).append(";"); - sb.append(poid).append(";"); - sb.append(palgo).append(";"); - sb.append("\r\n"); - } - } - return sb.toString(); - - } } -- cgit v1.2.3