|
16 | 16 |
|
17 | 17 | package org.springframework.security.converter;
|
18 | 18 |
|
19 |
| -import java.io.BufferedReader; |
20 | 19 | import java.io.InputStream;
|
| 20 | +import java.io.BufferedReader; |
21 | 21 | import java.io.InputStreamReader;
|
22 | 22 | import java.security.KeyFactory;
|
23 | 23 | import java.security.NoSuchAlgorithmException;
|
24 | 24 | import java.security.interfaces.RSAPrivateKey;
|
25 | 25 | import java.security.interfaces.RSAPublicKey;
|
26 | 26 | import java.security.spec.PKCS8EncodedKeySpec;
|
27 | 27 | import java.security.spec.X509EncodedKeySpec;
|
28 |
| -import java.util.Base64; |
29 | 28 | import java.util.List;
|
| 29 | +import java.util.Base64; |
30 | 30 | import java.util.stream.Collectors;
|
31 | 31 |
|
32 | 32 | import org.springframework.core.convert.converter.Converter;
|
@@ -66,10 +66,13 @@ public static Converter<InputStream, RSAPrivateKey> pkcs8() {
|
66 | 66 | Assert.isTrue(!lines.isEmpty() && lines.get(0).startsWith(PKCS8_PEM_HEADER),
|
67 | 67 | "Key is not in PEM-encoded PKCS#8 format, " +
|
68 | 68 | "please check that the header begins with -----" + PKCS8_PEM_HEADER + "-----");
|
69 |
| - String base64Encoded = lines.stream() |
70 |
| - .filter(RsaKeyConverters::isNotPkcs8Wrapper) |
71 |
| - .collect(Collectors.joining()); |
72 |
| - byte[] pkcs8 = Base64.getDecoder().decode(base64Encoded); |
| 69 | + StringBuilder base64Encoded = new StringBuilder(); |
| 70 | + for (String line : lines) { |
| 71 | + if (RsaKeyConverters.isNotPkcs8Wrapper(line)) { |
| 72 | + base64Encoded.append(line); |
| 73 | + } |
| 74 | + } |
| 75 | + byte[] pkcs8 = Base64.getDecoder().decode(base64Encoded.toString()); |
73 | 76 |
|
74 | 77 | try {
|
75 | 78 | return (RSAPrivateKey) keyFactory.generatePrivate(
|
@@ -97,10 +100,13 @@ public static Converter<InputStream, RSAPublicKey> x509() {
|
97 | 100 | Assert.isTrue(!lines.isEmpty() && lines.get(0).startsWith(X509_PEM_HEADER),
|
98 | 101 | "Key is not in PEM-encoded X.509 format, " +
|
99 | 102 | "please check that the header begins with -----" + X509_PEM_HEADER + "-----");
|
100 |
| - String base64Encoded = lines.stream() |
101 |
| - .filter(RsaKeyConverters::isNotX509Wrapper) |
102 |
| - .collect(Collectors.joining()); |
103 |
| - byte[] x509 = Base64.getDecoder().decode(base64Encoded); |
| 103 | + StringBuilder base64Encoded = new StringBuilder(); |
| 104 | + for (String line : lines) { |
| 105 | + if (RsaKeyConverters.isNotX509Wrapper(line)) { |
| 106 | + base64Encoded.append(line); |
| 107 | + } |
| 108 | + } |
| 109 | + byte[] x509 = Base64.getDecoder().decode(base64Encoded.toString()); |
104 | 110 |
|
105 | 111 | try {
|
106 | 112 | return (RSAPublicKey) keyFactory.generatePublic(
|
|
0 commit comments