Skip to content

Commit 9a9950e

Browse files
dbwiddistexastony
andauthored
fix: Add Locale.ROOT to String uppercase conversions (#1880)
Adds Locale.ROOT to all toUpperCase() string conversions. See #1879 for more details --------- Signed-off-by: Daniel Widdis <[email protected]> Co-authored-by: texastony <[email protected]>
1 parent 32a92a9 commit 9a9950e

File tree

5 files changed

+18
-9
lines changed

5 files changed

+18
-9
lines changed

src/main/java/com/amazonaws/encryptionsdk/internal/RsaJceKeyCipher.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.security.PublicKey;
2020
import java.security.spec.AlgorithmParameterSpec;
2121
import java.security.spec.MGF1ParameterSpec;
22+
import java.util.Locale;
2223
import java.util.Map;
2324
import java.util.logging.Logger;
2425
import java.util.regex.Matcher;
@@ -49,7 +50,7 @@ class RsaJceKeyCipher extends JceKeyCipher {
4950
final String hashUnknownCase = matcher.group(1);
5051
if (hashUnknownCase != null) {
5152
// OAEP mode a.k.a PKCS #1v2
52-
final String hash = hashUnknownCase.toUpperCase();
53+
final String hash = hashUnknownCase.toUpperCase(Locale.ROOT);
5354
transformation_ = "RSA/ECB/OAEPPadding";
5455

5556
final MGF1ParameterSpec mgf1Spec;

src/main/java/com/amazonaws/encryptionsdk/jce/JceMasterKey.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.util.ArrayList;
2929
import java.util.Collection;
3030
import java.util.List;
31+
import java.util.Locale;
3132
import java.util.Map;
3233
import javax.crypto.SecretKey;
3334
import javax.crypto.spec.SecretKeySpec;
@@ -59,7 +60,7 @@ public static JceMasterKey getInstance(
5960
final String provider,
6061
final String keyId,
6162
final String wrappingAlgorithm) {
62-
switch (wrappingAlgorithm.toUpperCase()) {
63+
switch (wrappingAlgorithm.toUpperCase(Locale.ROOT)) {
6364
case "AES/GCM/NOPADDING":
6465
return new JceMasterKey(provider, keyId, JceKeyCipher.aesGcm(key));
6566
default:
@@ -82,7 +83,7 @@ public static JceMasterKey getInstance(
8283
final String provider,
8384
final String keyId,
8485
final String wrappingAlgorithm) {
85-
if (wrappingAlgorithm.toUpperCase().startsWith("RSA/ECB/")) {
86+
if (wrappingAlgorithm.toUpperCase(Locale.ROOT).startsWith("RSA/ECB/")) {
8687
return new JceMasterKey(
8788
provider, keyId, JceKeyCipher.rsa(wrappingKey, unwrappingKey, wrappingAlgorithm));
8889
}

src/main/java/com/amazonaws/encryptionsdk/jce/KeyStoreProvider.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import java.util.Collection;
3737
import java.util.Collections;
3838
import java.util.List;
39+
import java.util.Locale;
3940
import java.util.Map;
4041

4142
/**
@@ -79,7 +80,7 @@ public KeyStoreProvider(
7980
wrappingAlgorithm_ = wrappingAlgorithm;
8081
aliasNames_ = Arrays.asList(aliasNames);
8182
providerName_ = providerName;
82-
keyAlgorithm_ = wrappingAlgorithm.split("/", 2)[0].toUpperCase();
83+
keyAlgorithm_ = wrappingAlgorithm.split("/", 2)[0].toUpperCase(Locale.ROOT);
8384
}
8485

8586
/**

src/test/java/com/amazonaws/encryptionsdk/TestVectorRunner.java

+8-3
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import java.util.Collections;
3535
import java.util.HashMap;
3636
import java.util.List;
37+
import java.util.Locale;
3738
import java.util.Map;
3839
import java.util.concurrent.Callable;
3940
import java.util.function.Supplier;
@@ -333,7 +334,9 @@ private static <T> TestCase parseTest(
333334
transformation += "PKCS1Padding";
334335
} else if ("oaep-mgf1".equals(padding)) {
335336
final String hashName =
336-
((String) mkEntry.get("padding-hash")).replace("sha", "sha-").toUpperCase();
337+
((String) mkEntry.get("padding-hash"))
338+
.replace("sha", "sha-")
339+
.toUpperCase(Locale.ROOT);
337340
transformation += "OAEPWith" + hashName + "AndMGF1Padding";
338341
} else {
339342
throw new IllegalArgumentException("Unsupported padding:" + padding);
@@ -438,7 +441,9 @@ private static TestCase parseTest(
438441
transformation += "PKCS1Padding";
439442
} else if ("oaep-mgf1".equals(padding)) {
440443
final String hashName =
441-
((String) mkEntry.get("padding-hash")).replace("sha", "sha-").toUpperCase();
444+
((String) mkEntry.get("padding-hash"))
445+
.replace("sha", "sha-")
446+
.toUpperCase(Locale.ROOT);
442447
transformation += "OAEPWith" + hashName + "AndMGF1Padding";
443448
} else {
444449
throw new IllegalArgumentException("Unsupported padding:" + padding);
@@ -544,7 +549,7 @@ private static Map<String, KeyEntry> parseKeyManifest(final Map<String, Object>
544549
name,
545550
keyId,
546551
keyType,
547-
new SecretKeySpec(Base64.decode(material), algorithm.toUpperCase()));
552+
new SecretKeySpec(Base64.decode(material), algorithm.toUpperCase(Locale.ROOT)));
548553
break;
549554
case "private":
550555
kf = KeyFactory.getInstance(algorithm);

src/test/java/com/amazonaws/encryptionsdk/XCompatDecryptTest.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.Collections;
2424
import java.util.HashMap;
2525
import java.util.List;
26+
import java.util.Locale;
2627
import java.util.Map;
2728
import javax.crypto.spec.SecretKeySpec;
2829
import org.apache.commons.lang3.StringUtils;
@@ -143,7 +144,7 @@ public static Collection<Object[]> data() throws Exception {
143144
+ "."
144145
+ paddingHash;
145146
String encAlg = (String) aMasterKey.get("encryption_algorithm");
146-
switch (encAlg.toUpperCase()) {
147+
switch (encAlg.toUpperCase(Locale.ROOT)) {
147148
case "RSA":
148149
String cipherBase = "RSA/ECB/";
149150
String cipherName;
@@ -176,7 +177,7 @@ public static Collection<Object[]> data() throws Exception {
176177
break;
177178
default:
178179
throw new IllegalArgumentException(
179-
"Unknown encryption algorithm: " + encAlg.toUpperCase());
180+
"Unknown encryption algorithm: " + encAlg.toUpperCase(Locale.ROOT));
180181
}
181182
}
182183
}

0 commit comments

Comments
 (0)