Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,17 @@ public static Converter<InputStream, RSAPrivateKey> pkcs8() {
"Key is not in PEM-encoded PKCS#8 format, please check that the header begins with "
+ PKCS8_PEM_HEADER);
StringBuilder base64Encoded = new StringBuilder();
for (String line : lines) {
if (RsaKeyConverters.isNotPkcs8Wrapper(line)) {
base64Encoded.append(line);
if (lines.size() == 1) {
base64Encoded.append(lines.get(0)
.replace(PKCS8_PEM_HEADER, "")
.replace(PKCS8_PEM_FOOTER, "")
.replaceAll("\\s+", ""));
}
else {
for (String line : lines) {
if (RsaKeyConverters.isNotPkcs8Wrapper(line)) {
base64Encoded.append(line);
}
}
}
byte[] pkcs8 = Base64.getDecoder().decode(base64Encoded.toString());
Expand Down Expand Up @@ -165,9 +173,15 @@ private static class X509PemDecoder implements Converter<List<String>, RSAPublic
@Override
public @NonNull RSAPublicKey convert(List<String> lines) {
StringBuilder base64Encoded = new StringBuilder();
for (String line : lines) {
if (isNotX509PemWrapper(line)) {
base64Encoded.append(line);
if (lines.size() == 1) {
base64Encoded.append(
lines.get(0).replace(X509_PEM_HEADER, "").replace(X509_PEM_FOOTER, "").replaceAll("\\s+", ""));
}
else {
for (String line : lines) {
if (isNotX509PemWrapper(line)) {
base64Encoded.append(line);
}
}
}
byte[] x509 = Base64.getDecoder().decode(base64Encoded.toString());
Expand Down Expand Up @@ -196,9 +210,17 @@ private static class X509CertificateDecoder implements Converter<List<String>, R
@Override
public @NonNull RSAPublicKey convert(List<String> lines) {
StringBuilder base64Encoded = new StringBuilder();
for (String line : lines) {
if (isNotX509CertificateWrapper(line)) {
base64Encoded.append(line);
if (lines.size() == 1) {
base64Encoded.append(lines.get(0)
.replace(X509_CERT_HEADER, "")
.replace(X509_CERT_FOOTER, "")
.replaceAll("\\s+", ""));
}
else {
for (String line : lines) {
if (isNotX509CertificateWrapper(line)) {
base64Encoded.append(line);
}
}
}
byte[] x509 = Base64.getDecoder().decode(base64Encoded.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,13 @@ public void pkcs8WhenConvertingPkcs8PrivateKeyThenOk() {
Assertions.assertThat(key.getModulus().bitLength()).isEqualTo(2048);
}

@Test
public void pkcs8WhenConvertingSingleLinePkcs8PrivateKeyThenOk() {
RSAPrivateKey key = this.pkcs8.convert(toInputStream(PKCS8_PRIVATE_KEY.replace("\n", "")));
Assertions.assertThat(key).isInstanceOf(RSAPrivateCrtKey.class);
Assertions.assertThat(key.getModulus().bitLength()).isEqualTo(2048);
}

@Test
public void pkcs8WhenConvertingPkcs1PrivateKeyThenIllegalArgumentException() {
assertThatIllegalArgumentException().isThrownBy(() -> this.pkcs8.convert(toInputStream(PKCS1_PRIVATE_KEY)));
Expand All @@ -131,12 +138,24 @@ public void x509WhenConvertingX509PublicKeyThenOk() {
Assertions.assertThat(key.getModulus().bitLength()).isEqualTo(1024);
}

@Test
public void x509WhenConvertingSingleLineX509PublicKeyThenOk() {
RSAPublicKey key = this.x509.convert(toInputStream(X509_PUBLIC_KEY.replace("\n", "")));
Assertions.assertThat(key.getModulus().bitLength()).isEqualTo(1024);
}

@Test
public void x509WhenConvertingX509CertificateThenOk() {
RSAPublicKey key = this.x509.convert(toInputStream(X509_CERTIFICATE));
Assertions.assertThat(key.getModulus().bitLength()).isEqualTo(1024);
}

@Test
public void x509WhenConvertingX509SingleLineCertificateThenOk() {
RSAPublicKey key = this.x509.convert(toInputStream(X509_CERTIFICATE.replace("\n", "")));
Assertions.assertThat(key.getModulus().bitLength()).isEqualTo(1024);
}

@Test
public void x509WhenConvertingDerEncodedX509PublicKeyThenIllegalArgumentException() {
assertThatIllegalArgumentException().isThrownBy(() -> this.x509.convert(toInputStream(MALFORMED_X509_KEY)));
Expand Down
Loading