From 566e433cce30c293c734d24390d297b874e8b3d6 Mon Sep 17 00:00:00 2001 From: claudius Date: Mon, 15 Apr 2019 13:35:27 +0300 Subject: [PATCH 01/12] =?UTF-8?q?Added=20new=20signature=20for=20crypto?= =?UTF-8?q?=C8=98generate-signature?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Useful for JWT encryption. --- .classpath | 2 + .gitignore | 0 .project | 0 .settings/org.eclipse.core.resources.prefs | 0 .settings/org.eclipse.jdt.core.prefs | 1 + .settings/org.eclipse.m2e.core.prefs | 0 LICENSE | 0 README.md | 0 build/footer.html | 0 build/header.html | 0 ...kuberam.expath.exist.crypto package.launch | 0 pom.xml | 25 +-- .../exist/crypto/EXpathCryptoException.java | 0 .../exist/crypto/ExistExpathCryptoModule.java | 0 .../exist/crypto/ExpathCryptoErrorCode.java | 0 .../expath/exist/crypto/ModuleProperties.java | 0 .../exist/crypto/digest/HashFunction.java | 0 .../exist/crypto/digest/HmacFunction.java | 0 .../GenerateSignatureFunction.java | 162 +++++++++++------- .../ValidateSignatureFunction.java | 0 .../crypto/encrypt/EncryptionFunctions.java | 0 .../expath/exist/crypto/utils/Conversion.java | 0 src/main/resources/icon.png | Bin .../org/expath/exist/crypto/test-plan.xml | 0 .../exist/crypto/xquery/AwsRestRequest.xq | 0 .../xquery/AwsRestRequestWithDefaultFormat.xq | 0 ...decryptStringWithAesSymmetricKeyCbcMode.xq | 0 ...thAesSymmetricKeyCbcModeDefaultProvider.xq | 0 ...decryptStringWithAesSymmetricKeyEcbMode.xq | 0 ...ecryptStringWithAesSymmetricKeyCbcMode.xql | 0 ...encryptStringWithAesSymmetricKeyCbcMode.xq | 0 ...thAesSymmetricKeyCbcModeDefaultProvider.xq | 0 ...encryptStringWithAesSymmetricKeyEcbMode.xq | 0 ...ptStringWithAesWrongSymmetricKeyCbcMode.xq | 0 ...WrongSymmetricKeyCbcModeDefaultProvider.xq | 0 .../generateEnvelopedDigitalSignature.xq | 0 .../exist/crypto/xquery/hashBinaryWithMd5.xq | 0 .../hashBinaryWithMd5AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hashBinaryWithSha1.xq | 0 .../hashBinaryWithSha1AndDefaultFormat.xq | 0 .../crypto/xquery/hashBinaryWithSha256.xq | 0 .../hashBinaryWithSha256AndDefaultFormat.xq | 0 .../crypto/xquery/hashBinaryWithSha384.xq | 0 .../hashBinaryWithSha384AndDefaultFormat.xq | 0 .../crypto/xquery/hashBinaryWithSha512.xq | 0 .../hashBinaryWithSha512AndDefaultFormat.xq | 0 .../xquery/hashBinaryWithWrongAlgorithm.xq | 0 ...inaryWithWrongAlgorithmAndDefaultFormat.xq | 0 .../exist/crypto/xquery/hashStringWithMd5.xq | 0 .../hashStringWithMd5AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hashStringWithSha1.xq | 0 .../hashStringWithSha1AndDefaultFormat.xq | 0 .../crypto/xquery/hashStringWithSha256.xq | 0 .../hashStringWithSha256AndDefaultFormat.xq | 0 .../crypto/xquery/hashStringWithSha384.xq | 0 .../hashStringWithSha384AndDefaultFormat.xq | 0 .../crypto/xquery/hashStringWithSha512.xq | 0 .../hashStringWithSha512AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hashXmlWithMd5.xq | 0 .../xquery/hashXmlWithMd5AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hmacStringWithMd5.xq | 0 .../hmacStringWithMd5AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hmacStringWithSha1.xq | 0 .../hmacStringWithSha1AndDefaultFormat.xq | 0 .../crypto/xquery/hmacStringWithSha256.xq | 0 .../hmacStringWithSha256AndDefaultFormat.xq | 0 .../crypto/xquery/hmacStringWithSha384.xq | 0 .../hmacStringWithSha384AndDefaultFormat.xq | 0 .../crypto/xquery/hmacStringWithSha512.xq | 0 .../hmacStringWithSha512AndDefaultFormat.xq | 0 .../validateEnvelopedDigitalSignature.xq | 0 .../crypto/digital-certificate-base64.txt | 0 .../exist/crypto/digital-certificate.xml | 0 .../org/expath/exist/crypto/doc-1.xml | 0 .../org/expath/exist/crypto/keystore.ks | Bin .../org/expath/exist/crypto/mycert.cer | 0 .../org/expath/exist/crypto/private-key.pem | 0 xar-assembly.xml | 0 78 files changed, 104 insertions(+), 86 deletions(-) mode change 100644 => 100755 .classpath mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .project mode change 100644 => 100755 .settings/org.eclipse.core.resources.prefs mode change 100644 => 100755 .settings/org.eclipse.jdt.core.prefs mode change 100644 => 100755 .settings/org.eclipse.m2e.core.prefs mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 build/footer.html mode change 100644 => 100755 build/header.html mode change 100644 => 100755 build/ro.kuberam.expath.exist.crypto package.launch mode change 100644 => 100755 pom.xml mode change 100644 => 100755 src/main/java/org/expath/exist/crypto/EXpathCryptoException.java mode change 100644 => 100755 src/main/java/org/expath/exist/crypto/ExistExpathCryptoModule.java mode change 100644 => 100755 src/main/java/org/expath/exist/crypto/ExpathCryptoErrorCode.java mode change 100644 => 100755 src/main/java/org/expath/exist/crypto/ModuleProperties.java mode change 100644 => 100755 src/main/java/org/expath/exist/crypto/digest/HashFunction.java mode change 100644 => 100755 src/main/java/org/expath/exist/crypto/digest/HmacFunction.java mode change 100644 => 100755 src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java mode change 100644 => 100755 src/main/java/org/expath/exist/crypto/digitalSignature/ValidateSignatureFunction.java mode change 100644 => 100755 src/main/java/org/expath/exist/crypto/encrypt/EncryptionFunctions.java mode change 100644 => 100755 src/main/java/org/expath/exist/crypto/utils/Conversion.java mode change 100644 => 100755 src/main/resources/icon.png mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/test-plan.xml mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/AwsRestRequest.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/AwsRestRequestWithDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyCbcMode.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyCbcModeDefaultProvider.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyEcbMode.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/encryptAbdDecryptStringWithAesSymmetricKeyCbcMode.xql mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyCbcMode.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyCbcModeDefaultProvider.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyEcbMode.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesWrongSymmetricKeyCbcMode.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesWrongSymmetricKeyCbcModeDefaultProvider.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/generateEnvelopedDigitalSignature.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithMd5.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithMd5AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha1.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha1AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha256.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha256AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha384.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha384AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha512.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha512AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithWrongAlgorithm.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithWrongAlgorithmAndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashStringWithMd5.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashStringWithMd5AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha1.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha1AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha256.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha256AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha384.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha384AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha512.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha512AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashXmlWithMd5.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hashXmlWithMd5AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithMd5.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithMd5AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha1.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha1AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha256.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha256AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha384.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha384AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha512.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha512AndDefaultFormat.xq mode change 100644 => 100755 src/test/java/org/expath/exist/crypto/xquery/validateEnvelopedDigitalSignature.xq mode change 100644 => 100755 src/test/resources/org/expath/exist/crypto/digital-certificate-base64.txt mode change 100644 => 100755 src/test/resources/org/expath/exist/crypto/digital-certificate.xml mode change 100644 => 100755 src/test/resources/org/expath/exist/crypto/doc-1.xml mode change 100644 => 100755 src/test/resources/org/expath/exist/crypto/keystore.ks mode change 100644 => 100755 src/test/resources/org/expath/exist/crypto/mycert.cer mode change 100644 => 100755 src/test/resources/org/expath/exist/crypto/private-key.pem mode change 100644 => 100755 xar-assembly.xml diff --git a/.classpath b/.classpath old mode 100644 new mode 100755 index fae1a2b..002ad57 --- a/.classpath +++ b/.classpath @@ -15,11 +15,13 @@ + + diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.project b/.project old mode 100644 new mode 100755 diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs old mode 100644 new mode 100755 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs old mode 100644 new mode 100755 index 714351a..b8947ec --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -2,4 +2,5 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/build/footer.html b/build/footer.html old mode 100644 new mode 100755 diff --git a/build/header.html b/build/header.html old mode 100644 new mode 100755 diff --git a/build/ro.kuberam.expath.exist.crypto package.launch b/build/ro.kuberam.expath.exist.crypto package.launch old mode 100644 new mode 100755 diff --git a/pom.xml b/pom.xml old mode 100644 new mode 100755 index 9a697e4..588e843 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ org.exist-db.xquery.extensions.expath expath-crypto-module - 1.1.0-SNAPSHOT + 6.0.0-SNAPSHOT eXist-db EXPath Cryptographic library eXist-db wrapper for EXPath Cryptographic Java library @@ -55,7 +55,7 @@ EXPath Cryptographic Module Implementation - 1.5 + 1.7 5.2.0 http://expath.org/ns/crypto crypto @@ -134,7 +134,7 @@ 2.3.0 - package + prepare-package generate @@ -144,26 +144,9 @@ ${project.basedir} ${project.basedir}/build/header.html ${project.basedir}/build/footer.html + index.html - - com.coderplus.maven.plugins - copy-rename-maven-plugin - 1.0.1 - - - rename-readme-file - package - - rename - - - ${project.build.directory}/html/README.html - ${project.build.directory}/html/index.html - - - - ro.kuberam.maven.plugins kuberam-expath-plugin diff --git a/src/main/java/org/expath/exist/crypto/EXpathCryptoException.java b/src/main/java/org/expath/exist/crypto/EXpathCryptoException.java old mode 100644 new mode 100755 diff --git a/src/main/java/org/expath/exist/crypto/ExistExpathCryptoModule.java b/src/main/java/org/expath/exist/crypto/ExistExpathCryptoModule.java old mode 100644 new mode 100755 diff --git a/src/main/java/org/expath/exist/crypto/ExpathCryptoErrorCode.java b/src/main/java/org/expath/exist/crypto/ExpathCryptoErrorCode.java old mode 100644 new mode 100755 diff --git a/src/main/java/org/expath/exist/crypto/ModuleProperties.java b/src/main/java/org/expath/exist/crypto/ModuleProperties.java old mode 100644 new mode 100755 diff --git a/src/main/java/org/expath/exist/crypto/digest/HashFunction.java b/src/main/java/org/expath/exist/crypto/digest/HashFunction.java old mode 100644 new mode 100755 diff --git a/src/main/java/org/expath/exist/crypto/digest/HmacFunction.java b/src/main/java/org/expath/exist/crypto/digest/HmacFunction.java old mode 100644 new mode 100755 diff --git a/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java b/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java old mode 100644 new mode 100755 index 261e227..2d68157 --- a/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java +++ b/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java @@ -19,10 +19,17 @@ */ package org.expath.exist.crypto.digitalSignature; +import static org.exist.xquery.FunctionDSL.arities; +import static org.exist.xquery.FunctionDSL.arity; +import static org.exist.xquery.FunctionDSL.param; +import static org.exist.xquery.FunctionDSL.returns; +import static org.expath.exist.crypto.ExistExpathCryptoModule.functionSignatures; + import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.net.URISyntaxException; +import java.security.PrivateKey; import javax.xml.crypto.dsig.XMLSignatureException; import javax.xml.parsers.DocumentBuilder; @@ -49,6 +56,7 @@ import org.exist.xquery.value.FunctionParameterSequenceType; import org.exist.xquery.value.NodeValue; import org.exist.xquery.value.Sequence; +import org.exist.xquery.value.StringValue; import org.exist.xquery.value.Type; import org.expath.exist.crypto.EXpathCryptoException; import org.expath.exist.crypto.ExpathCryptoErrorCode; @@ -63,9 +71,8 @@ import ro.kuberam.libs.java.crypto.CryptoException; import ro.kuberam.libs.java.crypto.ExpathCryptoModule; import ro.kuberam.libs.java.crypto.digitalSignature.GenerateXmlSignature; - -import static org.exist.xquery.FunctionDSL.*; -import static org.expath.exist.crypto.ExistExpathCryptoModule.*; +import ro.kuberam.libs.java.crypto.digitalSignature.SignatureForString; +import ro.kuberam.libs.java.crypto.keyManagement.Load; /** * @author Claudius Teodorescu (claudius.teodorescu@gmail.com) @@ -75,8 +82,9 @@ public class GenerateSignatureFunction extends BasicFunction { private static final Logger LOG = LogManager.getLogger(GenerateSignatureFunction.class); private static String FS_GENERATE_SIGNATURE_NAME = "generate-signature"; - private static FunctionParameterSequenceType FS_GENERATE_SIGNATURE_PARAM_DATA = param("data", Type.NODE, - "The document to be signed."); + + private static FunctionParameterSequenceType FS_GENERATE_SIGNATURE_PARAM_DATA = param("data", Type.ITEM, + "The data to be signed."); private static FunctionParameterSequenceType FS_GENERATE_SIGNATURE_PARAM_CANONICALIZATION_ALGORITHM = param( "canonicalization-algorithm", Type.STRING, "Canonicalization Algorithm."); private static FunctionParameterSequenceType FS_GENERATE_SIGNATURE_PARAM_DIGEST_ALGORITHM = param( @@ -85,16 +93,19 @@ public class GenerateSignatureFunction extends BasicFunction { "signature-algorithm", Type.STRING, ExpathCryptoModule.SIGNATURE_ALGORITHM); private static FunctionParameterSequenceType FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_NAMESPACE_PREFIX = param( "signature-namespace-prefix", Type.STRING, "The namespace prefix for signature."); - private static FunctionParameterSequenceType FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_TYPE = param( - "signature-type", Type.STRING, ExpathCryptoModule.SIGNATURE_TYPE); + private static FunctionParameterSequenceType FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_TYPE = param("signature-type", + Type.STRING, ExpathCryptoModule.SIGNATURE_TYPE); private static FunctionParameterSequenceType FS_GENERATE_SIGNATURE_PARAM_DIGITAL_CERTIFICATE = param( "digital-certificate", Type.ANY_TYPE, ExpathCryptoModule.digitalCertificateDetailsDescription); + private static FunctionParameterSequenceType FS_GENERATE_SIGNATURE_PARAM_PRIVATE_KEY = param("private-key", + Type.STRING, "The private key needed for a digital signature."); + private static FunctionParameterSequenceType FS_GENERATE_SIGNATURE_PARAM_XPATH = param("xpath-expression", Type.ANY_TYPE, "The XPath expression used for selecting the subset to be signed."); public static final FunctionSignature FS_GENERATE_SIGNATURE[] = functionSignatures(FS_GENERATE_SIGNATURE_NAME, "Generate an XML digital signature based on generated key pair. This signature is for the whole document.", - returns(Type.NODE, "the signed document (or signature) as node()."), + returns(Type.ITEM, "the signed document (or signature) as item()."), arities(arity(FS_GENERATE_SIGNATURE_PARAM_DATA, FS_GENERATE_SIGNATURE_PARAM_CANONICALIZATION_ALGORITHM, FS_GENERATE_SIGNATURE_PARAM_DIGEST_ALGORITHM, FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_ALGORITHM, FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_NAMESPACE_PREFIX, FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_TYPE), @@ -114,7 +125,9 @@ public class GenerateSignatureFunction extends BasicFunction { FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_ALGORITHM, FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_NAMESPACE_PREFIX, FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_TYPE, FS_GENERATE_SIGNATURE_PARAM_XPATH, - FS_GENERATE_SIGNATURE_PARAM_DIGITAL_CERTIFICATE))); + FS_GENERATE_SIGNATURE_PARAM_DIGITAL_CERTIFICATE), + arity(FS_GENERATE_SIGNATURE_PARAM_DATA, FS_GENERATE_SIGNATURE_PARAM_PRIVATE_KEY, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_ALGORITHM))); private static final String certificateRootElementName = "digital-certificate"; private static final String[] certificateChildElementNames = { "keystore-type", "keystore-password", "key-alias", @@ -126,72 +139,91 @@ public GenerateSignatureFunction(final XQueryContext context, final FunctionSign @Override public Sequence eval(final Sequence[] args, final Sequence contextSequence) throws XPathException { - Serializer serializer = context.getBroker().getSerializer(); - NodeValue inputNode = (NodeValue) args[0].itemAt(0); - Document inputDOMDoc; - - try (InputStream inputNodeStream = new NodeInputStream(context.getBroker().getBrokerPool(), serializer, inputNode)) { - inputDOMDoc = inputStreamToDocument(inputNodeStream); - } catch (IOException e) { - throw new EXpathCryptoException(this, e); - } - - String canonicalizationAlgorithm = args[1].getStringValue(); - String digestAlgorithm = args[2].getStringValue(); - String signatureAlgorithm = args[3].getStringValue(); - String signatureNamespacePrefix = args[4].getStringValue(); - String signatureType = args[5].getStringValue(); - - String signatureString = null; - Document signatureDocument = null; + if (args.length == 3) { + String input = args[0].getStringValue(); + String base64PrivateKey = args[1].getStringValue(); + String signatureAlgorithm = args[2].getStringValue(); + String output = null; + + String algorithm = "RSA"; + PrivateKey privateKey; + try { + privateKey = Load.privateKey(base64PrivateKey, algorithm, null); + output = SignatureForString.generate(input, privateKey, signatureAlgorithm); + } catch (Exception e) { + e.printStackTrace(); + } - // get the XPath expression and/or the certificate's details - String xpathExprString = null; - String[] certificateDetails = new String[5]; - certificateDetails[0] = ""; - InputStream keyStoreInputStream = null; + return new StringValue(output); + } else { + Serializer serializer = context.getBroker().getSerializer(); + NodeValue inputNode = (NodeValue) args[0].itemAt(0); + Document inputDOMDoc; + + try (InputStream inputNodeStream = new NodeInputStream(context.getBroker().getBrokerPool(), serializer, + inputNode)) { + inputDOMDoc = inputStreamToDocument(inputNodeStream); + } catch (IOException e) { + throw new EXpathCryptoException(this, e); + } - try { + String canonicalizationAlgorithm = args[1].getStringValue(); + String digestAlgorithm = args[2].getStringValue(); + String signatureAlgorithm = args[3].getStringValue(); + String signatureNamespacePrefix = args[4].getStringValue(); + String signatureType = args[5].getStringValue(); + + String signatureString = null; + Document signatureDocument = null; + + // get the XPath expression and/or the certificate's details + String xpathExprString = null; + String[] certificateDetails = new String[5]; + certificateDetails[0] = ""; + InputStream keyStoreInputStream = null; + + try { + + // signature with 7 arguments + if (args.length == 7) { + if (args[6].itemAt(0).getType() == 22) { + xpathExprString = args[6].getStringValue(); + } else if (args[6].itemAt(0).getType() == 1) { + final Node certificateDetailsNode = ((NodeValue) args[6].itemAt(0)).getNode(); + // get the certificate details + certificateDetails = getDigitalCertificateDetails(certificateDetails, certificateDetailsNode); + // get the keystore InputStream + keyStoreInputStream = getKeyStoreInputStream(certificateDetails[4]); + } + } - // function with 7 arguments - if (args.length == 7) { - if (args[6].itemAt(0).getType() == 22) { + // signature with 8 arguments + if (args.length == 8) { xpathExprString = args[6].getStringValue(); - } else if (args[6].itemAt(0).getType() == 1) { - final Node certificateDetailsNode = ((NodeValue) args[6].itemAt(0)).getNode(); + final Node certificateDetailsNode = ((NodeValue) args[7].itemAt(0)).getNode(); // get the certificate details certificateDetails = getDigitalCertificateDetails(certificateDetails, certificateDetailsNode); // get the keystore InputStream keyStoreInputStream = getKeyStoreInputStream(certificateDetails[4]); } - } - - // function with 8 arguments - if (args.length == 8) { - xpathExprString = args[6].getStringValue(); - final Node certificateDetailsNode = ((NodeValue) args[7].itemAt(0)).getNode(); - // get the certificate details - certificateDetails = getDigitalCertificateDetails(certificateDetails, certificateDetailsNode); - // get the keystore InputStream - keyStoreInputStream = getKeyStoreInputStream(certificateDetails[4]); - } - signatureString = GenerateXmlSignature.generate(inputDOMDoc, canonicalizationAlgorithm, digestAlgorithm, - signatureAlgorithm, signatureNamespacePrefix, signatureType, xpathExprString, certificateDetails, - keyStoreInputStream); - keyStoreInputStream.close(); - - signatureDocument = stringToDocument(signatureString); - - return (Sequence) signatureDocument; - } catch (CryptoException | IOException | XMLSignatureException e) { - throw new EXpathCryptoException(this, e); - } finally { - if (keyStoreInputStream != null) { - try { - keyStoreInputStream.close(); - } catch (final IOException e) { - throw new EXpathCryptoException(this, e); + signatureString = GenerateXmlSignature.generate(inputDOMDoc, canonicalizationAlgorithm, digestAlgorithm, + signatureAlgorithm, signatureNamespacePrefix, signatureType, xpathExprString, + certificateDetails, keyStoreInputStream); + keyStoreInputStream.close(); + + signatureDocument = stringToDocument(signatureString); + + return (Sequence) signatureDocument; + } catch (CryptoException | IOException | XMLSignatureException e) { + throw new EXpathCryptoException(this, e); + } finally { + if (keyStoreInputStream != null) { + try { + keyStoreInputStream.close(); + } catch (final IOException e) { + throw new EXpathCryptoException(this, e); + } } } } diff --git a/src/main/java/org/expath/exist/crypto/digitalSignature/ValidateSignatureFunction.java b/src/main/java/org/expath/exist/crypto/digitalSignature/ValidateSignatureFunction.java old mode 100644 new mode 100755 diff --git a/src/main/java/org/expath/exist/crypto/encrypt/EncryptionFunctions.java b/src/main/java/org/expath/exist/crypto/encrypt/EncryptionFunctions.java old mode 100644 new mode 100755 diff --git a/src/main/java/org/expath/exist/crypto/utils/Conversion.java b/src/main/java/org/expath/exist/crypto/utils/Conversion.java old mode 100644 new mode 100755 diff --git a/src/main/resources/icon.png b/src/main/resources/icon.png old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/test-plan.xml b/src/test/java/org/expath/exist/crypto/test-plan.xml old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/AwsRestRequest.xq b/src/test/java/org/expath/exist/crypto/xquery/AwsRestRequest.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/AwsRestRequestWithDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/AwsRestRequestWithDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyCbcMode.xq b/src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyCbcMode.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyCbcModeDefaultProvider.xq b/src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyCbcModeDefaultProvider.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyEcbMode.xq b/src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyEcbMode.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/encryptAbdDecryptStringWithAesSymmetricKeyCbcMode.xql b/src/test/java/org/expath/exist/crypto/xquery/encryptAbdDecryptStringWithAesSymmetricKeyCbcMode.xql old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyCbcMode.xq b/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyCbcMode.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyCbcModeDefaultProvider.xq b/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyCbcModeDefaultProvider.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyEcbMode.xq b/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyEcbMode.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesWrongSymmetricKeyCbcMode.xq b/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesWrongSymmetricKeyCbcMode.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesWrongSymmetricKeyCbcModeDefaultProvider.xq b/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesWrongSymmetricKeyCbcModeDefaultProvider.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/generateEnvelopedDigitalSignature.xq b/src/test/java/org/expath/exist/crypto/xquery/generateEnvelopedDigitalSignature.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithMd5.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithMd5.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithMd5AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithMd5AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha1.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha1.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha1AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha1AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha256.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha256.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha256AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha256AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha384.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha384.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha384AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha384AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha512.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha512.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha512AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha512AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithWrongAlgorithm.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithWrongAlgorithm.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithWrongAlgorithmAndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithWrongAlgorithmAndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithMd5.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithMd5.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithMd5AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithMd5AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha1.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha1.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha1AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha1AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha256.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha256.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha256AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha256AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha384.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha384.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha384AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha384AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha512.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha512.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha512AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha512AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashXmlWithMd5.xq b/src/test/java/org/expath/exist/crypto/xquery/hashXmlWithMd5.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashXmlWithMd5AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashXmlWithMd5AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithMd5.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithMd5.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithMd5AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithMd5AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha1.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha1.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha1AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha1AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha256.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha256.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha256AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha256AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha384.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha384.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha384AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha384AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha512.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha512.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha512AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha512AndDefaultFormat.xq old mode 100644 new mode 100755 diff --git a/src/test/java/org/expath/exist/crypto/xquery/validateEnvelopedDigitalSignature.xq b/src/test/java/org/expath/exist/crypto/xquery/validateEnvelopedDigitalSignature.xq old mode 100644 new mode 100755 diff --git a/src/test/resources/org/expath/exist/crypto/digital-certificate-base64.txt b/src/test/resources/org/expath/exist/crypto/digital-certificate-base64.txt old mode 100644 new mode 100755 diff --git a/src/test/resources/org/expath/exist/crypto/digital-certificate.xml b/src/test/resources/org/expath/exist/crypto/digital-certificate.xml old mode 100644 new mode 100755 diff --git a/src/test/resources/org/expath/exist/crypto/doc-1.xml b/src/test/resources/org/expath/exist/crypto/doc-1.xml old mode 100644 new mode 100755 diff --git a/src/test/resources/org/expath/exist/crypto/keystore.ks b/src/test/resources/org/expath/exist/crypto/keystore.ks old mode 100644 new mode 100755 diff --git a/src/test/resources/org/expath/exist/crypto/mycert.cer b/src/test/resources/org/expath/exist/crypto/mycert.cer old mode 100644 new mode 100755 diff --git a/src/test/resources/org/expath/exist/crypto/private-key.pem b/src/test/resources/org/expath/exist/crypto/private-key.pem old mode 100644 new mode 100755 diff --git a/xar-assembly.xml b/xar-assembly.xml old mode 100644 new mode 100755 From ae145bf9f1ff06d615fe96170113cdc41cd1a38d Mon Sep 17 00:00:00 2001 From: claudius Date: Wed, 30 Sep 2020 10:40:11 +0300 Subject: [PATCH 02/12] Updated some dependencies. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 588e843..7b96ec3 100755 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,7 @@ EXPath Cryptographic Module Implementation 1.7 - 5.2.0 + 5.3.0-SNAPSHOT http://expath.org/ns/crypto crypto ${crypto.module.ns} From df9797fed1406137a89c8adb83b7e6efd9f4aa4a Mon Sep 17 00:00:00 2001 From: claudius Date: Sat, 3 Oct 2020 15:31:38 +0300 Subject: [PATCH 03/12] Adapted GenerateSignatureFunction class to eXist 5.3.0 --- .../GenerateSignatureFunction.java | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java b/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java index 2d68157..858807f 100755 --- a/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java +++ b/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java @@ -43,10 +43,13 @@ import org.exist.Namespaces; import org.exist.dom.memtree.SAXAdapter; import org.exist.dom.persistent.BinaryDocument; +import org.exist.dom.persistent.DocumentImpl; import org.exist.dom.persistent.LockedDocument; import org.exist.security.PermissionDeniedException; -import org.exist.storage.lock.Lock; +import org.exist.storage.lock.Lock.LockMode; import org.exist.storage.serializers.Serializer; +import org.exist.storage.txn.TransactionException; +import org.exist.storage.txn.Txn; import org.exist.validation.internal.node.NodeInputStream; import org.exist.xmldb.XmldbURI; import org.exist.xquery.BasicFunction; @@ -275,27 +278,30 @@ private String[] getDigitalCertificateDetails(final String[] certificateDetails, } private InputStream getKeyStoreInputStream(final String keystoreURI) throws CryptoException { - // get the keystore as InputStream - try { - try(final LockedDocument lockedKeyStoreDoc = context.getBroker().getXMLResource(XmldbURI.xmldbUriFor(keystoreURI), Lock.LockMode.READ_LOCK)) { - if (lockedKeyStoreDoc == null) { - throw new CryptoException(CryptoError.UNREADABLE_KEYSTORE); - } + try (final LockedDocument keyStoreLockedDoc = context.getBroker() + .getXMLResource(XmldbURI.xmldbUriFor(keystoreURI), LockMode.READ_LOCK);) { + if (keyStoreLockedDoc == null) { + throw new CryptoException(CryptoError.UNREADABLE_KEYSTORE); + } - final BinaryDocument keyStoreBinaryDoc = (BinaryDocument) lockedKeyStoreDoc.getDocument(); - try { - return context.getBroker().getBinaryResource(keyStoreBinaryDoc); - } catch (final IOException e) { - throw new CryptoException(CryptoError.UNREADABLE_KEYSTORE, e); - } + final DocumentImpl doc = keyStoreLockedDoc.getDocument(); - } catch (final PermissionDeniedException e) { - LOG.error(ExpathCryptoErrorCode.getDescription(CryptoError.DENIED_KEYSTORE)); - return null; + try (final Txn transaction = context.getBroker().continueOrBeginTransaction()) { + final BinaryDocument bin = (BinaryDocument) doc; + final InputStream is = context.getBroker().getBinaryResource(transaction, bin); + + transaction.commit(); + + return is; } } catch (final URISyntaxException e) { LOG.error(ExpathCryptoErrorCode.getDescription(CryptoError.KEYSTORE_URL)); return null; + } catch (final IOException | TransactionException e) { + throw new CryptoException(CryptoError.UNREADABLE_KEYSTORE, e); + } catch (final PermissionDeniedException e) { + LOG.error(CryptoError.DENIED_KEYSTORE.getDescription()); + return null; } } From 731ea88dd39416abb1f75f348cc477b286b18d42 Mon Sep 17 00:00:00 2001 From: Olaf Schreck Date: Wed, 3 Mar 2021 22:51:06 +0100 Subject: [PATCH 04/12] fix duplicate function signature --- .../GenerateSignatureFunction.java | 58 +++++++++++-------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java b/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java index 858807f..9ef5f2e 100755 --- a/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java +++ b/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java @@ -109,28 +109,40 @@ public class GenerateSignatureFunction extends BasicFunction { public static final FunctionSignature FS_GENERATE_SIGNATURE[] = functionSignatures(FS_GENERATE_SIGNATURE_NAME, "Generate an XML digital signature based on generated key pair. This signature is for the whole document.", returns(Type.ITEM, "the signed document (or signature) as item()."), - arities(arity(FS_GENERATE_SIGNATURE_PARAM_DATA, FS_GENERATE_SIGNATURE_PARAM_CANONICALIZATION_ALGORITHM, - FS_GENERATE_SIGNATURE_PARAM_DIGEST_ALGORITHM, FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_ALGORITHM, - FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_NAMESPACE_PREFIX, FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_TYPE), - arity(FS_GENERATE_SIGNATURE_PARAM_DATA, FS_GENERATE_SIGNATURE_PARAM_CANONICALIZATION_ALGORITHM, - FS_GENERATE_SIGNATURE_PARAM_DIGEST_ALGORITHM, - FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_ALGORITHM, - FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_NAMESPACE_PREFIX, - FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_TYPE, FS_GENERATE_SIGNATURE_PARAM_XPATH), - arity(FS_GENERATE_SIGNATURE_PARAM_DATA, FS_GENERATE_SIGNATURE_PARAM_CANONICALIZATION_ALGORITHM, - FS_GENERATE_SIGNATURE_PARAM_DIGEST_ALGORITHM, - FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_ALGORITHM, - FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_NAMESPACE_PREFIX, - FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_TYPE, - FS_GENERATE_SIGNATURE_PARAM_DIGITAL_CERTIFICATE), - arity(FS_GENERATE_SIGNATURE_PARAM_DATA, FS_GENERATE_SIGNATURE_PARAM_CANONICALIZATION_ALGORITHM, - FS_GENERATE_SIGNATURE_PARAM_DIGEST_ALGORITHM, - FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_ALGORITHM, - FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_NAMESPACE_PREFIX, - FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_TYPE, FS_GENERATE_SIGNATURE_PARAM_XPATH, - FS_GENERATE_SIGNATURE_PARAM_DIGITAL_CERTIFICATE), - arity(FS_GENERATE_SIGNATURE_PARAM_DATA, FS_GENERATE_SIGNATURE_PARAM_PRIVATE_KEY, - FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_ALGORITHM))); + arities( + arity(FS_GENERATE_SIGNATURE_PARAM_DATA, + FS_GENERATE_SIGNATURE_PARAM_CANONICALIZATION_ALGORITHM, + FS_GENERATE_SIGNATURE_PARAM_DIGEST_ALGORITHM, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_ALGORITHM, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_NAMESPACE_PREFIX, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_TYPE), + arity(FS_GENERATE_SIGNATURE_PARAM_DATA, + FS_GENERATE_SIGNATURE_PARAM_CANONICALIZATION_ALGORITHM, + FS_GENERATE_SIGNATURE_PARAM_DIGEST_ALGORITHM, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_ALGORITHM, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_NAMESPACE_PREFIX, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_TYPE, + FS_GENERATE_SIGNATURE_PARAM_XPATH), + /* + arity(FS_GENERATE_SIGNATURE_PARAM_DATA, + FS_GENERATE_SIGNATURE_PARAM_CANONICALIZATION_ALGORITHM, + FS_GENERATE_SIGNATURE_PARAM_DIGEST_ALGORITHM, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_ALGORITHM, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_NAMESPACE_PREFIX, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_TYPE, + FS_GENERATE_SIGNATURE_PARAM_DIGITAL_CERTIFICATE), + */ + arity(FS_GENERATE_SIGNATURE_PARAM_DATA, + FS_GENERATE_SIGNATURE_PARAM_CANONICALIZATION_ALGORITHM, + FS_GENERATE_SIGNATURE_PARAM_DIGEST_ALGORITHM, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_ALGORITHM, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_NAMESPACE_PREFIX, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_TYPE, + FS_GENERATE_SIGNATURE_PARAM_XPATH, + FS_GENERATE_SIGNATURE_PARAM_DIGITAL_CERTIFICATE), + arity(FS_GENERATE_SIGNATURE_PARAM_DATA, + FS_GENERATE_SIGNATURE_PARAM_PRIVATE_KEY, + FS_GENERATE_SIGNATURE_PARAM_SIGNATURE_ALGORITHM))); private static final String certificateRootElementName = "digital-certificate"; private static final String[] certificateChildElementNames = { "keystore-type", "keystore-password", "key-alias", @@ -325,4 +337,4 @@ private Document inputStreamToDocument(final InputStream inputStream) { return document; } -} \ No newline at end of file +} From 87241f05e9e0d9cc048e8f2d0b975f4e5d723d44 Mon Sep 17 00:00:00 2001 From: Olaf Schreck Date: Wed, 3 Mar 2021 23:05:55 +0100 Subject: [PATCH 05/12] make compatible with exist 5.3.0 - change to UnsynchronizedByteArrayOutputStream - reapply changes from previous commits that got lost in the merge --- .../exist/crypto/EXpathCryptoException.java | 2 +- .../exist/crypto/ExpathCryptoErrorCode.java | 14 +------------- .../GenerateSignatureFunction.java | 3 +-- .../crypto/encrypt/EncryptionFunctions.java | 17 ++++++----------- .../expath/exist/crypto/utils/Conversion.java | 9 +++++---- 5 files changed, 14 insertions(+), 31 deletions(-) diff --git a/src/main/java/org/expath/exist/crypto/EXpathCryptoException.java b/src/main/java/org/expath/exist/crypto/EXpathCryptoException.java index 3be3ab7..5b940b0 100755 --- a/src/main/java/org/expath/exist/crypto/EXpathCryptoException.java +++ b/src/main/java/org/expath/exist/crypto/EXpathCryptoException.java @@ -30,7 +30,7 @@ public class EXpathCryptoException extends XPathException { private static final long serialVersionUID = -6789727720893604433L; public EXpathCryptoException(Expression expr, CryptoError cryptoError) { - super(expr, new ExpathCryptoErrorCode(cryptoError), ExpathCryptoErrorCode.getDescription(cryptoError)); + super(expr, new ExpathCryptoErrorCode(cryptoError), cryptoError.getDescription()); } public EXpathCryptoException(Expression expr, Exception exception) { diff --git a/src/main/java/org/expath/exist/crypto/ExpathCryptoErrorCode.java b/src/main/java/org/expath/exist/crypto/ExpathCryptoErrorCode.java index a21fe0d..6eddf21 100755 --- a/src/main/java/org/expath/exist/crypto/ExpathCryptoErrorCode.java +++ b/src/main/java/org/expath/exist/crypto/ExpathCryptoErrorCode.java @@ -5,24 +5,12 @@ import ro.kuberam.libs.java.crypto.CryptoError; -import java.lang.reflect.Field; - public class ExpathCryptoErrorCode extends ErrorCode { public ExpathCryptoErrorCode(String code, String description) { super(new QName(code, ExistExpathCryptoModule.NAMESPACE_URI, ExistExpathCryptoModule.PREFIX), description); } public ExpathCryptoErrorCode(CryptoError cryptoError) { - super(new QName(cryptoError.name(), ExistExpathCryptoModule.NAMESPACE_URI, ExistExpathCryptoModule.PREFIX), getDescription(cryptoError)); - } - - public static String getDescription(final CryptoError cryptoError) { - try { - final Field field = cryptoError.getClass().getDeclaredField("description"); - field.setAccessible(true); - return (String) field.get(cryptoError); - } catch (final NoSuchFieldException | IllegalAccessException e) { - return "UNKNOWN"; - } + super(new QName(cryptoError.getCode(), ExistExpathCryptoModule.NAMESPACE_URI, ExistExpathCryptoModule.PREFIX), cryptoError.getDescription()); } } diff --git a/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java b/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java index 9ef5f2e..ccbb4c5 100755 --- a/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java +++ b/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java @@ -62,7 +62,6 @@ import org.exist.xquery.value.StringValue; import org.exist.xquery.value.Type; import org.expath.exist.crypto.EXpathCryptoException; -import org.expath.exist.crypto.ExpathCryptoErrorCode; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -307,7 +306,7 @@ private InputStream getKeyStoreInputStream(final String keystoreURI) throws Cryp return is; } } catch (final URISyntaxException e) { - LOG.error(ExpathCryptoErrorCode.getDescription(CryptoError.KEYSTORE_URL)); + LOG.error(CryptoError.KEYSTORE_URL.getDescription()); return null; } catch (final IOException | TransactionException e) { throw new CryptoException(CryptoError.UNREADABLE_KEYSTORE, e); diff --git a/src/main/java/org/expath/exist/crypto/encrypt/EncryptionFunctions.java b/src/main/java/org/expath/exist/crypto/encrypt/EncryptionFunctions.java index 872abaf..e62028c 100755 --- a/src/main/java/org/expath/exist/crypto/encrypt/EncryptionFunctions.java +++ b/src/main/java/org/expath/exist/crypto/encrypt/EncryptionFunctions.java @@ -33,7 +33,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.exist.util.io.FastByteArrayInputStream; import org.exist.xquery.BasicFunction; import org.exist.xquery.FunctionSignature; import org.exist.xquery.XPathException; @@ -122,13 +121,11 @@ public Sequence eval(final Sequence[] args, final Sequence contextSequence) thro private Sequence encrypt(byte[] data, CryptType encryptType, String secretKey, String algorithm, @Nullable String iv, @Nullable String provider) throws XPathException { try { - String resultBytes = null; + byte[] resultBytes = null; switch (encryptType) { case SYMMETRIC: - try (final FastByteArrayInputStream is = new FastByteArrayInputStream(data)) { - resultBytes = SymmetricEncryption.encrypt(is, secretKey, algorithm, iv, provider); - } + resultBytes = SymmetricEncryption.encrypt(data, secretKey, algorithm, iv, provider); break; case ASYMMETRIC: @@ -138,7 +135,7 @@ private Sequence encrypt(byte[] data, CryptType encryptType, String secretKey, S default: throw new EXpathCryptoException(this, CryptoError.ENCRYPTION_TYPE); } - String result = Base64.getEncoder().encodeToString(resultBytes.getBytes()); + String result = Base64.getEncoder().encodeToString(resultBytes); LOG.debug("encrypt result = {}", () -> result); return new StringValue(result); @@ -154,13 +151,11 @@ private Sequence encrypt(byte[] data, CryptType encryptType, String secretKey, S private Sequence decrypt(byte[] data, CryptType decryptType, String secretKey, String algorithm, @Nullable String iv, @Nullable String provider) throws XPathException { try { - String resultBytes = null; + byte[] resultBytes = null; switch (decryptType) { case SYMMETRIC: - try (final FastByteArrayInputStream is = new FastByteArrayInputStream(data)) { - resultBytes = SymmetricEncryption.decrypt(is, secretKey, algorithm, iv, provider); - } + resultBytes = SymmetricEncryption.decrypt(data, secretKey, algorithm, iv, provider); break; case ASYMMETRIC: @@ -172,7 +167,7 @@ private Sequence decrypt(byte[] data, CryptType decryptType, String secretKey, S throw new EXpathCryptoException(this, CryptoError.DECRYPTION_TYPE); } - String result = new String(resultBytes.getBytes(), UTF_8); + String result = new String(resultBytes, UTF_8); LOG.debug("decrypt result = {}", () -> result); return new StringValue(result); diff --git a/src/main/java/org/expath/exist/crypto/utils/Conversion.java b/src/main/java/org/expath/exist/crypto/utils/Conversion.java index c884493..25b1ebc 100755 --- a/src/main/java/org/expath/exist/crypto/utils/Conversion.java +++ b/src/main/java/org/expath/exist/crypto/utils/Conversion.java @@ -8,7 +8,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.exist.util.io.FastByteArrayOutputStream; import org.exist.xquery.XPathException; import org.exist.xquery.value.BinaryValue; import org.exist.xquery.value.IntegerValue; @@ -18,6 +17,8 @@ import org.exist.xquery.value.Type; import org.exist.xquery.value.ValueSequence; +import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream; + import com.evolvedbinary.j8fu.Either; import ro.kuberam.libs.java.crypto.utils.Buffer; @@ -36,7 +37,7 @@ public static byte[] toByteArray(@Nullable final Either dat return data.right().get(); } else { try (final InputStream is = data.left().get(); - final FastByteArrayOutputStream baos = new FastByteArrayOutputStream()) { + final UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream()) { final byte[] buf = new byte[Buffer.TRANSFER_SIZE]; int read = -1; @@ -77,11 +78,11 @@ public static Either sequence2javaTypes(final Sequence sequ return null; } } else { - final FastByteArrayOutputStream baos = new FastByteArrayOutputStream(); + final UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(); for (final SequenceIterator iterator = sequence.iterate(); iterator.hasNext();) { baos.write(((NumericValue) iterator.nextItem()).getInt()); } - return Either.Left(baos.toFastByteInputStream()); + return Either.Left(baos.toInputStream()); } } From 991fef3d821ed71206c77f71cf27eb4c42db0a47 Mon Sep 17 00:00:00 2001 From: Juri Leino Date: Fri, 11 Jun 2021 12:50:12 +0200 Subject: [PATCH 06/12] [ignore] fix file permissions --- .classpath | 0 .gitignore | 0 .project | 0 .settings/org.eclipse.core.resources.prefs | 0 .settings/org.eclipse.jdt.core.prefs | 0 .settings/org.eclipse.m2e.core.prefs | 0 LICENSE | 0 README.md | 0 build/footer.html | 0 build/header.html | 0 build/ro.kuberam.expath.exist.crypto package.launch | 0 pom.xml | 0 .../expath/exist/crypto/EXpathCryptoException.java | 0 .../exist/crypto/ExistExpathCryptoModule.java | 0 .../expath/exist/crypto/ExpathCryptoErrorCode.java | 0 .../org/expath/exist/crypto/ModuleProperties.java | 0 .../expath/exist/crypto/digest/HashFunction.java | 0 .../expath/exist/crypto/digest/HmacFunction.java | 0 .../digitalSignature/GenerateSignatureFunction.java | 0 .../digitalSignature/ValidateSignatureFunction.java | 0 .../exist/crypto/encrypt/EncryptionFunctions.java | 0 .../org/expath/exist/crypto/utils/Conversion.java | 0 src/main/resources/icon.png | Bin src/test/java/org/expath/exist/crypto/test-plan.xml | 0 .../expath/exist/crypto/xquery/AwsRestRequest.xq | 0 .../xquery/AwsRestRequestWithDefaultFormat.xq | 0 .../decryptStringWithAesSymmetricKeyCbcMode.xq | 0 ...ringWithAesSymmetricKeyCbcModeDefaultProvider.xq | 0 .../decryptStringWithAesSymmetricKeyEcbMode.xq | 0 ...ptAbdDecryptStringWithAesSymmetricKeyCbcMode.xql | 0 .../encryptStringWithAesSymmetricKeyCbcMode.xq | 0 ...ringWithAesSymmetricKeyCbcModeDefaultProvider.xq | 0 .../encryptStringWithAesSymmetricKeyEcbMode.xq | 0 .../encryptStringWithAesWrongSymmetricKeyCbcMode.xq | 0 ...ithAesWrongSymmetricKeyCbcModeDefaultProvider.xq | 0 .../xquery/generateEnvelopedDigitalSignature.xq | 0 .../expath/exist/crypto/xquery/hashBinaryWithMd5.xq | 0 .../xquery/hashBinaryWithMd5AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hashBinaryWithSha1.xq | 0 .../xquery/hashBinaryWithSha1AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hashBinaryWithSha256.xq | 0 .../xquery/hashBinaryWithSha256AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hashBinaryWithSha384.xq | 0 .../xquery/hashBinaryWithSha384AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hashBinaryWithSha512.xq | 0 .../xquery/hashBinaryWithSha512AndDefaultFormat.xq | 0 .../crypto/xquery/hashBinaryWithWrongAlgorithm.xq | 0 .../hashBinaryWithWrongAlgorithmAndDefaultFormat.xq | 0 .../expath/exist/crypto/xquery/hashStringWithMd5.xq | 0 .../xquery/hashStringWithMd5AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hashStringWithSha1.xq | 0 .../xquery/hashStringWithSha1AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hashStringWithSha256.xq | 0 .../xquery/hashStringWithSha256AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hashStringWithSha384.xq | 0 .../xquery/hashStringWithSha384AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hashStringWithSha512.xq | 0 .../xquery/hashStringWithSha512AndDefaultFormat.xq | 0 .../expath/exist/crypto/xquery/hashXmlWithMd5.xq | 0 .../crypto/xquery/hashXmlWithMd5AndDefaultFormat.xq | 0 .../expath/exist/crypto/xquery/hmacStringWithMd5.xq | 0 .../xquery/hmacStringWithMd5AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hmacStringWithSha1.xq | 0 .../xquery/hmacStringWithSha1AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hmacStringWithSha256.xq | 0 .../xquery/hmacStringWithSha256AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hmacStringWithSha384.xq | 0 .../xquery/hmacStringWithSha384AndDefaultFormat.xq | 0 .../exist/crypto/xquery/hmacStringWithSha512.xq | 0 .../xquery/hmacStringWithSha512AndDefaultFormat.xq | 0 .../xquery/validateEnvelopedDigitalSignature.xq | 0 .../exist/crypto/digital-certificate-base64.txt | 0 .../org/expath/exist/crypto/digital-certificate.xml | 0 .../resources/org/expath/exist/crypto/doc-1.xml | 0 .../resources/org/expath/exist/crypto/keystore.ks | Bin .../resources/org/expath/exist/crypto/mycert.cer | 0 .../org/expath/exist/crypto/private-key.pem | 0 xar-assembly.xml | 0 78 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 .classpath mode change 100755 => 100644 .gitignore mode change 100755 => 100644 .project mode change 100755 => 100644 .settings/org.eclipse.core.resources.prefs mode change 100755 => 100644 .settings/org.eclipse.jdt.core.prefs mode change 100755 => 100644 .settings/org.eclipse.m2e.core.prefs mode change 100755 => 100644 LICENSE mode change 100755 => 100644 README.md mode change 100755 => 100644 build/footer.html mode change 100755 => 100644 build/header.html mode change 100755 => 100644 build/ro.kuberam.expath.exist.crypto package.launch mode change 100755 => 100644 pom.xml mode change 100755 => 100644 src/main/java/org/expath/exist/crypto/EXpathCryptoException.java mode change 100755 => 100644 src/main/java/org/expath/exist/crypto/ExistExpathCryptoModule.java mode change 100755 => 100644 src/main/java/org/expath/exist/crypto/ExpathCryptoErrorCode.java mode change 100755 => 100644 src/main/java/org/expath/exist/crypto/ModuleProperties.java mode change 100755 => 100644 src/main/java/org/expath/exist/crypto/digest/HashFunction.java mode change 100755 => 100644 src/main/java/org/expath/exist/crypto/digest/HmacFunction.java mode change 100755 => 100644 src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java mode change 100755 => 100644 src/main/java/org/expath/exist/crypto/digitalSignature/ValidateSignatureFunction.java mode change 100755 => 100644 src/main/java/org/expath/exist/crypto/encrypt/EncryptionFunctions.java mode change 100755 => 100644 src/main/java/org/expath/exist/crypto/utils/Conversion.java mode change 100755 => 100644 src/main/resources/icon.png mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/test-plan.xml mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/AwsRestRequest.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/AwsRestRequestWithDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyCbcMode.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyCbcModeDefaultProvider.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyEcbMode.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/encryptAbdDecryptStringWithAesSymmetricKeyCbcMode.xql mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyCbcMode.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyCbcModeDefaultProvider.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyEcbMode.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesWrongSymmetricKeyCbcMode.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesWrongSymmetricKeyCbcModeDefaultProvider.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/generateEnvelopedDigitalSignature.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithMd5.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithMd5AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha1.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha1AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha256.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha256AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha384.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha384AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha512.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha512AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithWrongAlgorithm.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithWrongAlgorithmAndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashStringWithMd5.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashStringWithMd5AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha1.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha1AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha256.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha256AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha384.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha384AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha512.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha512AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashXmlWithMd5.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hashXmlWithMd5AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithMd5.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithMd5AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha1.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha1AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha256.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha256AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha384.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha384AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha512.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha512AndDefaultFormat.xq mode change 100755 => 100644 src/test/java/org/expath/exist/crypto/xquery/validateEnvelopedDigitalSignature.xq mode change 100755 => 100644 src/test/resources/org/expath/exist/crypto/digital-certificate-base64.txt mode change 100755 => 100644 src/test/resources/org/expath/exist/crypto/digital-certificate.xml mode change 100755 => 100644 src/test/resources/org/expath/exist/crypto/doc-1.xml mode change 100755 => 100644 src/test/resources/org/expath/exist/crypto/keystore.ks mode change 100755 => 100644 src/test/resources/org/expath/exist/crypto/mycert.cer mode change 100755 => 100644 src/test/resources/org/expath/exist/crypto/private-key.pem mode change 100755 => 100644 xar-assembly.xml diff --git a/.classpath b/.classpath old mode 100755 new mode 100644 diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 diff --git a/.project b/.project old mode 100755 new mode 100644 diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs old mode 100755 new mode 100644 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs old mode 100755 new mode 100644 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs old mode 100755 new mode 100644 diff --git a/LICENSE b/LICENSE old mode 100755 new mode 100644 diff --git a/README.md b/README.md old mode 100755 new mode 100644 diff --git a/build/footer.html b/build/footer.html old mode 100755 new mode 100644 diff --git a/build/header.html b/build/header.html old mode 100755 new mode 100644 diff --git a/build/ro.kuberam.expath.exist.crypto package.launch b/build/ro.kuberam.expath.exist.crypto package.launch old mode 100755 new mode 100644 diff --git a/pom.xml b/pom.xml old mode 100755 new mode 100644 diff --git a/src/main/java/org/expath/exist/crypto/EXpathCryptoException.java b/src/main/java/org/expath/exist/crypto/EXpathCryptoException.java old mode 100755 new mode 100644 diff --git a/src/main/java/org/expath/exist/crypto/ExistExpathCryptoModule.java b/src/main/java/org/expath/exist/crypto/ExistExpathCryptoModule.java old mode 100755 new mode 100644 diff --git a/src/main/java/org/expath/exist/crypto/ExpathCryptoErrorCode.java b/src/main/java/org/expath/exist/crypto/ExpathCryptoErrorCode.java old mode 100755 new mode 100644 diff --git a/src/main/java/org/expath/exist/crypto/ModuleProperties.java b/src/main/java/org/expath/exist/crypto/ModuleProperties.java old mode 100755 new mode 100644 diff --git a/src/main/java/org/expath/exist/crypto/digest/HashFunction.java b/src/main/java/org/expath/exist/crypto/digest/HashFunction.java old mode 100755 new mode 100644 diff --git a/src/main/java/org/expath/exist/crypto/digest/HmacFunction.java b/src/main/java/org/expath/exist/crypto/digest/HmacFunction.java old mode 100755 new mode 100644 diff --git a/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java b/src/main/java/org/expath/exist/crypto/digitalSignature/GenerateSignatureFunction.java old mode 100755 new mode 100644 diff --git a/src/main/java/org/expath/exist/crypto/digitalSignature/ValidateSignatureFunction.java b/src/main/java/org/expath/exist/crypto/digitalSignature/ValidateSignatureFunction.java old mode 100755 new mode 100644 diff --git a/src/main/java/org/expath/exist/crypto/encrypt/EncryptionFunctions.java b/src/main/java/org/expath/exist/crypto/encrypt/EncryptionFunctions.java old mode 100755 new mode 100644 diff --git a/src/main/java/org/expath/exist/crypto/utils/Conversion.java b/src/main/java/org/expath/exist/crypto/utils/Conversion.java old mode 100755 new mode 100644 diff --git a/src/main/resources/icon.png b/src/main/resources/icon.png old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/test-plan.xml b/src/test/java/org/expath/exist/crypto/test-plan.xml old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/AwsRestRequest.xq b/src/test/java/org/expath/exist/crypto/xquery/AwsRestRequest.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/AwsRestRequestWithDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/AwsRestRequestWithDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyCbcMode.xq b/src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyCbcMode.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyCbcModeDefaultProvider.xq b/src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyCbcModeDefaultProvider.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyEcbMode.xq b/src/test/java/org/expath/exist/crypto/xquery/decryptStringWithAesSymmetricKeyEcbMode.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/encryptAbdDecryptStringWithAesSymmetricKeyCbcMode.xql b/src/test/java/org/expath/exist/crypto/xquery/encryptAbdDecryptStringWithAesSymmetricKeyCbcMode.xql old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyCbcMode.xq b/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyCbcMode.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyCbcModeDefaultProvider.xq b/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyCbcModeDefaultProvider.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyEcbMode.xq b/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesSymmetricKeyEcbMode.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesWrongSymmetricKeyCbcMode.xq b/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesWrongSymmetricKeyCbcMode.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesWrongSymmetricKeyCbcModeDefaultProvider.xq b/src/test/java/org/expath/exist/crypto/xquery/encryptStringWithAesWrongSymmetricKeyCbcModeDefaultProvider.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/generateEnvelopedDigitalSignature.xq b/src/test/java/org/expath/exist/crypto/xquery/generateEnvelopedDigitalSignature.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithMd5.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithMd5.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithMd5AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithMd5AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha1.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha1.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha1AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha1AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha256.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha256.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha256AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha256AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha384.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha384.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha384AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha384AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha512.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha512.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha512AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithSha512AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithWrongAlgorithm.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithWrongAlgorithm.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithWrongAlgorithmAndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashBinaryWithWrongAlgorithmAndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithMd5.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithMd5.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithMd5AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithMd5AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha1.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha1.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha1AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha1AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha256.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha256.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha256AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha256AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha384.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha384.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha384AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha384AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha512.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha512.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha512AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashStringWithSha512AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashXmlWithMd5.xq b/src/test/java/org/expath/exist/crypto/xquery/hashXmlWithMd5.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hashXmlWithMd5AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hashXmlWithMd5AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithMd5.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithMd5.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithMd5AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithMd5AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha1.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha1.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha1AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha1AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha256.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha256.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha256AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha256AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha384.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha384.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha384AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha384AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha512.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha512.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha512AndDefaultFormat.xq b/src/test/java/org/expath/exist/crypto/xquery/hmacStringWithSha512AndDefaultFormat.xq old mode 100755 new mode 100644 diff --git a/src/test/java/org/expath/exist/crypto/xquery/validateEnvelopedDigitalSignature.xq b/src/test/java/org/expath/exist/crypto/xquery/validateEnvelopedDigitalSignature.xq old mode 100755 new mode 100644 diff --git a/src/test/resources/org/expath/exist/crypto/digital-certificate-base64.txt b/src/test/resources/org/expath/exist/crypto/digital-certificate-base64.txt old mode 100755 new mode 100644 diff --git a/src/test/resources/org/expath/exist/crypto/digital-certificate.xml b/src/test/resources/org/expath/exist/crypto/digital-certificate.xml old mode 100755 new mode 100644 diff --git a/src/test/resources/org/expath/exist/crypto/doc-1.xml b/src/test/resources/org/expath/exist/crypto/doc-1.xml old mode 100755 new mode 100644 diff --git a/src/test/resources/org/expath/exist/crypto/keystore.ks b/src/test/resources/org/expath/exist/crypto/keystore.ks old mode 100755 new mode 100644 diff --git a/src/test/resources/org/expath/exist/crypto/mycert.cer b/src/test/resources/org/expath/exist/crypto/mycert.cer old mode 100755 new mode 100644 diff --git a/src/test/resources/org/expath/exist/crypto/private-key.pem b/src/test/resources/org/expath/exist/crypto/private-key.pem old mode 100755 new mode 100644 diff --git a/xar-assembly.xml b/xar-assembly.xml old mode 100755 new mode 100644 From b29c8199f7ab65386215a8b2851a52033a4b87e2 Mon Sep 17 00:00:00 2001 From: Juri Leino Date: Tue, 15 Jun 2021 17:11:43 +0200 Subject: [PATCH 07/12] [ignore] remove and ignore IDE settings --- .classpath | 38 ---------------------- .gitignore | 4 +++ .settings/org.eclipse.core.resources.prefs | 6 ---- .settings/org.eclipse.jdt.core.prefs | 6 ---- .settings/org.eclipse.m2e.core.prefs | 4 --- 5 files changed, 4 insertions(+), 54 deletions(-) delete mode 100644 .classpath delete mode 100644 .settings/org.eclipse.core.resources.prefs delete mode 100644 .settings/org.eclipse.jdt.core.prefs delete mode 100644 .settings/org.eclipse.m2e.core.prefs diff --git a/.classpath b/.classpath deleted file mode 100644 index 002ad57..0000000 --- a/.classpath +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.gitignore b/.gitignore index 1ebf457..b878ed4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ target/ *.iml .idea/ +.classpath +.settings +.vscode + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 29abf99..0000000 --- a/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,6 +0,0 @@ -eclipse.preferences.version=1 -encoding//src/main/java=UTF-8 -encoding//src/main/resources=UTF-8 -encoding//src/test/java=UTF-8 -encoding//src/test/resources=UTF-8 -encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index b8947ec..0000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,6 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f..0000000 --- a/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 From 2ceb12abf075afd20ba311819249ca63afb535ce Mon Sep 17 00:00:00 2001 From: Juri Leino Date: Sat, 26 Jun 2021 20:53:10 +0200 Subject: [PATCH 08/12] [fix] depend on release version of exist-5.3.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7b96ec3..028f3b6 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,7 @@ EXPath Cryptographic Module Implementation 1.7 - 5.3.0-SNAPSHOT + 5.3.0 http://expath.org/ns/crypto crypto ${crypto.module.ns} From 8a53148b4b046551fee600927ef0d98a1338ad2e Mon Sep 17 00:00:00 2001 From: Lars Windauer Date: Sat, 26 Jun 2021 21:15:42 +0200 Subject: [PATCH 09/12] [build] change pom.xml - add github-release-plugin - add developers and contributors - fix scm.url - change --- pom.xml | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 028f3b6..60e923d 100644 --- a/pom.xml +++ b/pom.xml @@ -27,15 +27,15 @@ - https://github.com/exist-db/crypto-exist-java-lib.git + scm:git://github.com/exist-db/crypto-exist-java-lib.git scm:git:https://github.com/exist-db/crypto-exist-java-lib.git scm:git:https://github.com/exist-db/crypto-exist-java-lib.git HEAD - Kuberam - http://kuberam.ro + exist-db Project + https://exist-db.org @@ -44,6 +44,11 @@ Claudius Teodorescu claudius.teodorescu@gmail.com + + olaf + Olaf Schreck + olaf@existsolutions.com + @@ -51,6 +56,10 @@ Adam Retter adam@exist-db.org + + Juri Leino + juri@existsolutions.com + @@ -180,6 +189,34 @@ @{project.version} + + de.jutzig + github-release-plugin + 1.4.0 + + + github-upload + deploy + + release + + false + + eXist implementation for EXPath Cryptographic Module + v6.0.0 + ${project.version} + + + ${project.build.directory} + + ${project.artifactId}*.xar + + + + + + + From 496ce739102914bf681ebc3d4cb6b4b999f781ac Mon Sep 17 00:00:00 2001 From: Lars Windauer Date: Mon, 28 Jun 2021 22:38:49 +0200 Subject: [PATCH 10/12] switched to crypto-java-lib dependency to org.expath.crypto > crypto-java v1.8.0 --- pom.xml | 6 +++--- xar-assembly.xml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 60e923d..5442993 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ EXPath Cryptographic Module Implementation - 1.7 + 1.8.0 5.3.0 http://expath.org/ns/crypto crypto @@ -73,8 +73,8 @@ - ro.kuberam.libs.java - crypto + org.expath.crypto + crypto-java ${crypto.java.lib.version} diff --git a/xar-assembly.xml b/xar-assembly.xml index 1bbe1be..9203c5a 100644 --- a/xar-assembly.xml +++ b/xar-assembly.xml @@ -22,8 +22,8 @@ ${project.artifactId}-exist-java-lib-${project.version}.jar - ro.kuberam.libs.java - crypto + org.expath.crypto + crypto-java ${crypto.java.lib.version} crypto-java-lib-${crypto.java.lib.version}.jar From 2a8c006402df81a485b8186ac247bdba60b5769f Mon Sep 17 00:00:00 2001 From: Lars Windauer Date: Mon, 28 Jun 2021 22:48:31 +0200 Subject: [PATCH 11/12] added a chapter building from source to README.md --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fcfbf60..da7dc63 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,19 @@ -## eXist implementation for EXPath Cryptographic Module +# eXist-db implementation for EXPath Cryptographic Module + +This is an eXist-db implementation of the [EXPath HTTP Crypto Module specification](http://expath.org/spec/crypto). +## Building from source + +Requires: +* Java 1.8 or newer +* Maven 3.6 or newer + +```bash +$ git clone https://github.com/eXist-db/crypto-exist-java-lib +$ cd crypto-exist-java-lib +$ mvn clean package +``` + +This will create a "expath-crypto-module-.xar" file in the target folder. The .xar file can be uploaded to any eXist-db version > 5.3.0 via the Dashboard. ### Currently implemented functions From 270bad2846b1601f8fe4f9bd604a8b1e61a590a9 Mon Sep 17 00:00:00 2001 From: Juri Leino Date: Tue, 29 Jun 2021 14:33:00 +0200 Subject: [PATCH 12/12] [hotfix] default value for encoding in crypto:hash - remove import of Optional in HashFunction and HmacFunction - refactor for readability --- .../org/expath/exist/crypto/digest/HashFunction.java | 9 ++++++--- .../org/expath/exist/crypto/digest/HmacFunction.java | 5 +---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/expath/exist/crypto/digest/HashFunction.java b/src/main/java/org/expath/exist/crypto/digest/HashFunction.java index c103362..e81b14d 100644 --- a/src/main/java/org/expath/exist/crypto/digest/HashFunction.java +++ b/src/main/java/org/expath/exist/crypto/digest/HashFunction.java @@ -27,7 +27,6 @@ import java.io.IOException; import java.io.InputStream; -import java.util.Optional; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -73,8 +72,12 @@ public Sequence eval(final Sequence[] args, final Sequence contextSequence) thro final int inputType = args[0].itemAt(0).getType(); final String hashAlgorithm = args[1].getStringValue(); - final String encoding = Optional.ofNullable(args[2].getStringValue()).filter(str -> !str.isEmpty()) - .orElse("base64"); + final String encoding; + if (args.length == 2) { + encoding = "base64"; + } else { + encoding = args[2].getStringValue().isEmpty() ? "base64" : args[2].getStringValue(); + } LOG.debug("encoding = {}", () -> encoding); final Sequence result; diff --git a/src/main/java/org/expath/exist/crypto/digest/HmacFunction.java b/src/main/java/org/expath/exist/crypto/digest/HmacFunction.java index ce74504..72ff548 100644 --- a/src/main/java/org/expath/exist/crypto/digest/HmacFunction.java +++ b/src/main/java/org/expath/exist/crypto/digest/HmacFunction.java @@ -28,7 +28,6 @@ import java.io.IOException; import java.io.InputStream; -import java.util.Optional; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -101,9 +100,7 @@ public Sequence eval(final Sequence[] args, final Sequence contextSequence) thro result = Conversion.byteArrayToIntegerSequence(resultBytes); } else if (argsLength == 4) { - - final String encoding = Optional.ofNullable(args[3].getStringValue()).filter(str -> !str.isEmpty()) - .orElse("base64"); + final String encoding = args[3].getStringValue().isEmpty() ? "base64" : args[3].getStringValue(); LOG.debug("encoding = {}", () -> encoding); final String resultString;