You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by dk...@apache.org on 2021/05/26 12:26:02 UTC

[sling-org-apache-sling-commons-crypto] 01/01: SLING-10415 - Adding support for removing a trailing newline character from the password file

This is an automated email from the ASF dual-hosted git repository.

dklco pushed a commit to branch SLING-10415-remove-final-newline
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-crypto.git

commit e766685e6d2bdefd31451c8ffcc74cc6f4b31682
Author: Dan Klco <kl...@adobe.com>
AuthorDate: Wed May 26 08:25:36 2021 -0400

    SLING-10415 - Adding support for removing a trailing newline character from the password file
---
 .../sling/commons/crypto/internal/FilePasswordProvider.java    | 10 +++++++++-
 .../crypto/internal/FilePasswordProviderConfiguration.java     |  8 ++++++++
 .../tests/jasypt/JasyptStandardPBEStringCryptoServiceIT.java   |  1 +
 src/test/resources/password.ascii85                            |  2 +-
 4 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/sling/commons/crypto/internal/FilePasswordProvider.java b/src/main/java/org/apache/sling/commons/crypto/internal/FilePasswordProvider.java
index 7ecd03e..816c32d 100644
--- a/src/main/java/org/apache/sling/commons/crypto/internal/FilePasswordProvider.java
+++ b/src/main/java/org/apache/sling/commons/crypto/internal/FilePasswordProvider.java
@@ -79,7 +79,7 @@ public class FilePasswordProvider implements PasswordProvider {
         final File file = new File(path);
         final char[] buffer = new char[(int) file.length()];
         try (final BufferedReader reader = Files.newBufferedReader(file.toPath(), StandardCharsets.UTF_8)) {
-            final int size = reader.read(buffer);
+            final int size = getSize(reader.read(buffer));
             final char[] password = new char[size];
             System.arraycopy(buffer, 0, password, 0, size);
             Arrays.fill(buffer, '0');
@@ -87,6 +87,14 @@ public class FilePasswordProvider implements PasswordProvider {
         }
     }
 
+    private int getSize(int readSize) {
+        if (configuration.removeNewline()) {
+            return readSize - 1;
+        } else {
+            return readSize;
+        }
+    }
+
     private void checkConfiguration() throws IOException {
         final String path = configuration.path();
         final File file = new File(path);
diff --git a/src/main/java/org/apache/sling/commons/crypto/internal/FilePasswordProviderConfiguration.java b/src/main/java/org/apache/sling/commons/crypto/internal/FilePasswordProviderConfiguration.java
index cefdfbe..00a4cad 100644
--- a/src/main/java/org/apache/sling/commons/crypto/internal/FilePasswordProviderConfiguration.java
+++ b/src/main/java/org/apache/sling/commons/crypto/internal/FilePasswordProviderConfiguration.java
@@ -19,6 +19,7 @@
 package org.apache.sling.commons.crypto.internal;
 
 import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.AttributeType;
 import org.osgi.service.metatype.annotations.ObjectClassDefinition;
 
 @ObjectClassDefinition(
@@ -40,6 +41,13 @@ import org.osgi.service.metatype.annotations.ObjectClassDefinition;
     )
     String path();
 
+    @AttributeDefinition(
+        name = "Remove Final Newline",
+        description = "removes the final character from the file to remove a trailing newline",
+        type = AttributeType.BOOLEAN
+    )
+    boolean removeNewline() default false;
+
     String webconsole_configurationFactory_nameHint() default "{names} {path}";
 
 }
diff --git a/src/test/java/org/apache/sling/commons/crypto/it/tests/jasypt/JasyptStandardPBEStringCryptoServiceIT.java b/src/test/java/org/apache/sling/commons/crypto/it/tests/jasypt/JasyptStandardPBEStringCryptoServiceIT.java
index 52b1c59..20ce8b9 100644
--- a/src/test/java/org/apache/sling/commons/crypto/it/tests/jasypt/JasyptStandardPBEStringCryptoServiceIT.java
+++ b/src/test/java/org/apache/sling/commons/crypto/it/tests/jasypt/JasyptStandardPBEStringCryptoServiceIT.java
@@ -55,6 +55,7 @@ public class JasyptStandardPBEStringCryptoServiceIT extends JasyptCryptoTestSupp
                 .asOption(),
             factoryConfiguration("org.apache.sling.commons.crypto.internal.FilePasswordProvider")
                 .put("path", path)
+                .put("removeNewline", true)
                 .asOption()
         );
     }
diff --git a/src/test/resources/password.ascii85 b/src/test/resources/password.ascii85
index ad66ce8..8884d75 100644
--- a/src/test/resources/password.ascii85
+++ b/src/test/resources/password.ascii85
@@ -1 +1 @@
-+AQ?aDes!'DBMkrCi:FE6q\sOn=Pbmn=PK8n=PK?
\ No newline at end of file
++AQ?aDes!'DBMkrCi:FE6q\sOn=Pbmn=PK8n=PK?