From 231198992ad5959977072e7407a31a2b50b81eff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20K=C3=B6rber?= Date: Mon, 1 May 2017 17:22:29 +0200 Subject: [PATCH] Use constants for PEM labels --- .../org/shredzone/acme4j/Certificate.java | 2 +- .../org/shredzone/acme4j/util/AcmeUtils.java | 29 ++++++++++++++++--- .../connector/DefaultConnectionTest.java | 2 +- .../shredzone/acme4j/util/AcmeUtilsTest.java | 2 +- .../java/org/shredzone/acme4j/ClientTest.java | 2 +- 5 files changed, 29 insertions(+), 8 deletions(-) diff --git a/acme4j-client/src/main/java/org/shredzone/acme4j/Certificate.java b/acme4j-client/src/main/java/org/shredzone/acme4j/Certificate.java index fc6f4ec8..ce10dd00 100644 --- a/acme4j-client/src/main/java/org/shredzone/acme4j/Certificate.java +++ b/acme4j-client/src/main/java/org/shredzone/acme4j/Certificate.java @@ -110,7 +110,7 @@ public class Certificate extends AcmeResource { public void writeCertificate(Writer out) throws IOException { try { for (X509Certificate cert : getCertificateChain()) { - AcmeUtils.writeToPem(cert.getEncoded(), "CERTIFICATE", out); + AcmeUtils.writeToPem(cert.getEncoded(), AcmeUtils.PemLabel.CERTIFICATE, out); } } catch (CertificateEncodingException ex) { throw new IOException("Encoding error", ex); diff --git a/acme4j-client/src/main/java/org/shredzone/acme4j/util/AcmeUtils.java b/acme4j-client/src/main/java/org/shredzone/acme4j/util/AcmeUtils.java index df2c8e17..8903802d 100644 --- a/acme4j-client/src/main/java/org/shredzone/acme4j/util/AcmeUtils.java +++ b/acme4j-client/src/main/java/org/shredzone/acme4j/util/AcmeUtils.java @@ -55,6 +55,27 @@ public final class AcmeUtils { private static final Base64.Encoder PEM_ENCODER = Base64.getMimeEncoder(64, "\n".getBytes()); + /** + * Enumeration of PEM labels. + */ + public enum PemLabel { + CERTIFICATE("CERTIFICATE"), + CERTIFICATE_REQUEST("CERTIFICATE REQUEST"), + PRIVATE_KEY("PRIVATE KEY"), + PUBLIC_KEY("PUBLIC KEY"); + + private final String label; + + PemLabel(String label) { + this.label = label; + } + + @Override + public String toString() { + return label; + } + } + private AcmeUtils() { // Utility class without constructor @@ -242,14 +263,14 @@ public final class AcmeUtils { * @param encoded * Encoded data to write * @param label - * PEM label, e.g. "CERTIFICATE" + * {@link PemLabel} to be used * @param out * {@link Writer} to write to. It will not be closed after use! */ - public static void writeToPem(byte[] encoded, String label, Writer out) throws IOException { - out.append("-----BEGIN ").append(label).append("-----\n"); + public static void writeToPem(byte[] encoded, PemLabel label, Writer out) throws IOException { + out.append("-----BEGIN ").append(label.toString()).append("-----\n"); out.append(new String(PEM_ENCODER.encode(encoded))); - out.append("\n-----END ").append(label).append("-----\n"); + out.append("\n-----END ").append(label.toString()).append("-----\n"); } } diff --git a/acme4j-client/src/test/java/org/shredzone/acme4j/connector/DefaultConnectionTest.java b/acme4j-client/src/test/java/org/shredzone/acme4j/connector/DefaultConnectionTest.java index 17d508db..701fb022 100644 --- a/acme4j-client/src/test/java/org/shredzone/acme4j/connector/DefaultConnectionTest.java +++ b/acme4j-client/src/test/java/org/shredzone/acme4j/connector/DefaultConnectionTest.java @@ -802,7 +802,7 @@ public class DefaultConnectionTest { for (X509Certificate cert : TestUtils.createCertificate()) { byte[] badCert = cert.getEncoded(); Arrays.sort(badCert); // break it - AcmeUtils.writeToPem(badCert, "CERTIFICATE", w); + AcmeUtils.writeToPem(badCert, AcmeUtils.PemLabel.CERTIFICATE, w); } w.flush(); brokenPem = baos.toByteArray(); diff --git a/acme4j-client/src/test/java/org/shredzone/acme4j/util/AcmeUtilsTest.java b/acme4j-client/src/test/java/org/shredzone/acme4j/util/AcmeUtilsTest.java index b9439200..4e55c9aa 100644 --- a/acme4j-client/src/test/java/org/shredzone/acme4j/util/AcmeUtilsTest.java +++ b/acme4j-client/src/test/java/org/shredzone/acme4j/util/AcmeUtilsTest.java @@ -270,7 +270,7 @@ public class AcmeUtilsTest { ByteArrayOutputStream pemFile = new ByteArrayOutputStream(); try (Writer w = new OutputStreamWriter(pemFile)) { for (X509Certificate cert : certChain) { - AcmeUtils.writeToPem(cert.getEncoded(), "CERTIFICATE", w); + AcmeUtils.writeToPem(cert.getEncoded(), AcmeUtils.PemLabel.CERTIFICATE, w); } } diff --git a/acme4j-example/src/main/java/org/shredzone/acme4j/ClientTest.java b/acme4j-example/src/main/java/org/shredzone/acme4j/ClientTest.java index fb03884b..c2055ea4 100644 --- a/acme4j-example/src/main/java/org/shredzone/acme4j/ClientTest.java +++ b/acme4j-example/src/main/java/org/shredzone/acme4j/ClientTest.java @@ -379,7 +379,7 @@ public class ClientTest { // Create a validation certificate try (FileWriter fw = new FileWriter("tlssni.crt")) { X509Certificate cert = CertificateUtils.createTlsSni02Certificate(domainKeyPair, subject, sanB); - AcmeUtils.writeToPem(cert.getEncoded(), "CERTIFICATE", fw); + AcmeUtils.writeToPem(cert.getEncoded(), AcmeUtils.PemLabel.CERTIFICATE, fw); } catch (IOException | CertificateEncodingException ex) { throw new AcmeException("Could not write certificate", ex); }