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:01 UTC

[sling-org-apache-sling-commons-crypto] branch SLING-10415-remove-final-newline created (now e766685)

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

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


      at e766685  SLING-10415 - Adding support for removing a trailing newline character from the password file

This branch includes the following new commits:

     new e766685  SLING-10415 - Adding support for removing a trailing newline character from the password file

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


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

Posted by dk...@apache.org.
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?