Skip to content

Commit 5119541

Browse files
committed
Use en locale for uppercase/lowercase (fixes #156)
1 parent bbc057b commit 5119541

File tree

5 files changed

+18
-10
lines changed

5 files changed

+18
-10
lines changed

acme4j-client/src/main/java/org/shredzone/acme4j/Status.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package org.shredzone.acme4j;
1515

1616
import java.util.Arrays;
17+
import java.util.Locale;
1718

1819
/**
1920
* An enumeration of status codes of challenges and authorizations.
@@ -84,7 +85,7 @@ public enum Status {
8485
* no match
8586
*/
8687
public static Status parse(String str) {
87-
var check = str.toUpperCase();
88+
var check = str.toUpperCase(Locale.ENGLISH);
8889
return Arrays.stream(values())
8990
.filter(s -> s.name().equals(check))
9091
.findFirst()

acme4j-client/src/main/java/org/shredzone/acme4j/toolbox/AcmeUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ public static boolean isValidBase64Url(@Nullable String base64) {
183183
*/
184184
public static String toAce(String domain) {
185185
Objects.requireNonNull(domain, "domain");
186-
return IDN.toASCII(domain.trim()).toLowerCase();
186+
return IDN.toASCII(domain.trim()).toLowerCase(Locale.ENGLISH);
187187
}
188188

189189
/**
@@ -307,7 +307,7 @@ public static String getContentType(@Nullable String header) {
307307
if (charset != null && !"utf-8".equalsIgnoreCase(charset)) {
308308
throw new AcmeProtocolException("Unsupported charset " + charset);
309309
}
310-
return m.group(1).trim().toLowerCase();
310+
return m.group(1).trim().toLowerCase(Locale.ENGLISH);
311311
}
312312
}
313313
return null;

acme4j-client/src/test/java/org/shredzone/acme4j/StatusTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
import static org.assertj.core.api.Assertions.assertThat;
1717

18+
import java.util.Locale;
19+
1820
import org.junit.jupiter.api.Test;
1921

2022
/**
@@ -27,8 +29,11 @@ public class StatusTest {
2729
*/
2830
@Test
2931
public void testParse() {
32+
// Would break toUpperCase() if English locale is not set, see #156.
33+
Locale.setDefault(new Locale("tr"));
34+
3035
for (var s : Status.values()) {
31-
var parsed = Status.parse(s.name().toLowerCase());
36+
var parsed = Status.parse(s.name().toLowerCase(Locale.ENGLISH));
3237
assertThat(parsed).isEqualTo(s);
3338
}
3439

acme4j-smime/src/main/java/org/shredzone/acme4j/smime/wrapper/SignedMail.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.util.Collections;
1919
import java.util.Enumeration;
2020
import java.util.List;
21+
import java.util.Locale;
2122
import java.util.Optional;
2223
import java.util.Set;
2324
import java.util.TreeSet;
@@ -74,7 +75,7 @@ public void importUntrustedHeaders(Enumeration<Header> en) {
7475
while (en.hasMoreElements()) {
7576
var h = en.nextElement();
7677
var name = h.getName();
77-
if (IGNORE_HEADERS.contains(name.toUpperCase())) {
78+
if (IGNORE_HEADERS.contains(name.toUpperCase(Locale.ENGLISH))) {
7879
continue;
7980
}
8081

@@ -95,7 +96,7 @@ public void importTrustedHeaders(Enumeration<Header> en) throws AcmeInvalidMessa
9596
while (en.hasMoreElements()) {
9697
var h = en.nextElement();
9798
var name = h.getName();
98-
if (IGNORE_HEADERS.contains(name.toUpperCase())) {
99+
if (IGNORE_HEADERS.contains(name.toUpperCase(Locale.ENGLISH))) {
99100
continue;
100101
}
101102

@@ -122,7 +123,7 @@ public void importTrustedHeadersRelaxed(Enumeration<Header> en) {
122123
while (en.hasMoreElements()) {
123124
var h = en.nextElement();
124125
var name = h.getName();
125-
if (IGNORE_HEADERS.contains(name.toUpperCase())) {
126+
if (IGNORE_HEADERS.contains(name.toUpperCase(Locale.ENGLISH))) {
126127
continue;
127128
}
128129

@@ -252,7 +253,7 @@ public boolean isAutoSubmitted() {
252253
.filter(mh -> "AUTO-SUBMITTED".equalsIgnoreCase(mh.name))
253254
.map(mh -> mh.value)
254255
.map(String::trim)
255-
.map(String::toLowerCase)
256+
.map(mh -> mh.toLowerCase(Locale.ENGLISH))
256257
.anyMatch(h -> h.equals("auto-generated") || h.startsWith("auto-generated;"));
257258
}
258259

@@ -266,7 +267,7 @@ public Set<String> getMissingSecuredHeaders() {
266267
headers.stream()
267268
.filter(mh -> mh.trusted)
268269
.map(mh -> mh.name)
269-
.map(String::toUpperCase)
270+
.map(mh -> mh.toUpperCase(Locale.ENGLISH))
270271
.forEach(missing::remove);
271272
return missing;
272273
}

acme4j-smime/src/main/java/org/shredzone/acme4j/smime/wrapper/SimpleMail.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.Arrays;
2020
import java.util.Collection;
2121
import java.util.Collections;
22+
import java.util.Locale;
2223
import java.util.Optional;
2324

2425
import jakarta.mail.Message;
@@ -136,7 +137,7 @@ public boolean isAutoSubmitted() throws AcmeInvalidMessageException {
136137
}
137138
return Arrays.stream(autoSubmitted)
138139
.map(String::trim)
139-
.map(String::toLowerCase)
140+
.map(as -> as.toLowerCase(Locale.ENGLISH))
140141
.anyMatch(h -> h.equals("auto-generated") || h.startsWith("auto-generated;"));
141142
} catch (MessagingException ex) {
142143
throw new AcmeInvalidMessageException("Could not read '" + HEADER_AUTO_SUBMITTED + "' header", ex);

0 commit comments

Comments
 (0)