From e0d91da672bc6479e8e290cd5a77a55c399082e5 Mon Sep 17 00:00:00 2001 From: "ARTECH\\sgrampone" Date: Tue, 2 Aug 2022 13:33:03 -0300 Subject: [PATCH 1/3] Refactor JWTModule --- GeneXusJWT/pom.xml | 2 +- .../main/java/com/genexus/JWT/JWTCreator.java | 171 ++++++++++-------- .../java/com/genexus/JWT/claims/Claims.java | 2 +- .../genexus/JWT/claims/RegisteredClaim.java | 28 +-- .../genexus/JWT/claims/RegisteredClaims.java | 10 +- .../com/genexus/JWT/utils/JWTAlgorithm.java | 8 +- .../com/genexus/JWT/utils/RevocationList.java | 2 +- .../java/com/genexus/commons/JWTOptions.java | 6 +- 8 files changed, 122 insertions(+), 107 deletions(-) diff --git a/GeneXusJWT/pom.xml b/GeneXusJWT/pom.xml index ed1ec1d..fcb4f27 100644 --- a/GeneXusJWT/pom.xml +++ b/GeneXusJWT/pom.xml @@ -26,7 +26,7 @@ com.auth0 java-jwt - 3.10.3 + 4.0.0 diff --git a/GeneXusJWT/src/main/java/com/genexus/JWT/JWTCreator.java b/GeneXusJWT/src/main/java/com/genexus/JWT/JWTCreator.java index 2b62543..1d3e316 100644 --- a/GeneXusJWT/src/main/java/com/genexus/JWT/JWTCreator.java +++ b/GeneXusJWT/src/main/java/com/genexus/JWT/JWTCreator.java @@ -43,75 +43,34 @@ public JWTCreator() { } /******** EXTERNAL OBJECT PUBLIC METHODS - BEGIN ********/ + public String doCreate(String algorithm, PrivateClaims privateClaims, JWTOptions options) { this.error.cleanError(); - if (options.hasError()) { - this.error = options.getError(); - return ""; - } - JWTAlgorithm alg = JWTAlgorithm.getJWTAlgorithm(algorithm, this.error); - if (this.hasError()) { - return ""; - } - Builder tokenBuilder = JWT.create(); - if (!options.getHeaderParameters().isEmpty()) { - HeaderParameters parameters = options.getHeaderParameters(); - tokenBuilder.withHeader(parameters.getMap()); - } - tokenBuilder = doBuildPayload(tokenBuilder, privateClaims, options); - if (this.hasError()) { - return ""; - } - Algorithm algorithmType = null; - if (JWTAlgorithm.isPrivate(alg)) { - - PrivateKeyManager key = options.getPrivateKey(); - if (key.hasError()) { - this.error = key.getError(); - return ""; - } - - algorithmType = JWTAlgorithm.getAsymmetricAlgorithm(alg, key, null, error); - if (this.hasError()) { - return ""; - } - - } else { - - algorithmType = JWTAlgorithm.getSymmetricAlgorithm(alg, options.getSecret(), this.error); - if (this.hasError()) { - return ""; - } - } - String signedJwt = ""; - try { - signedJwt = tokenBuilder.sign(algorithmType); - } catch (Exception e) { - this.error.setError("JW003", e.getMessage()); - return ""; - } - - return signedJwt; + return create_Aux(algorithm, privateClaims, options); } public boolean doVerify(String token, String expectedAlgorithm, PrivateClaims privateClaims, JWTOptions options) { + this.error.cleanError(); return doVerify(token, expectedAlgorithm, privateClaims, options, true, true); } public boolean doVerifyJustSignature(String token, String expectedAlgorithm, JWTOptions options) { + this.error.cleanError(); return doVerify(token, expectedAlgorithm, null, options, false, false); } public boolean doVerifySignature(String token, String expectedAlgorithm, JWTOptions options) { + this.error.cleanError(); return doVerify(token, expectedAlgorithm, null, options, false, true); } public String getPayload(String token) { + this.error.cleanError(); String res = ""; try { res = getTokenPart(token, "payload"); } catch (Exception e) { - this.error.setError("JW009", e.getMessage()); + this.error.setError("JW001", e.getMessage()); return ""; } return res; @@ -119,23 +78,25 @@ public String getPayload(String token) { } public String getHeader(String token) { + this.error.cleanError(); String res = ""; try { res = getTokenPart(token, "header"); } catch (Exception e) { - this.error.setError("JW010", e.getMessage()); + this.error.setError("JW002", e.getMessage()); return ""; } return res; } public String getTokenID(String token) { + this.error.cleanError(); String res = ""; try { res = getTokenPart(token, "id"); } catch (Exception e) { - this.error.setError("JW011", e.getMessage()); + this.error.setError("JW003", e.getMessage()); return ""; } return res; @@ -143,11 +104,65 @@ public String getTokenID(String token) { /******** EXTERNAL OBJECT PUBLIC METHODS - END ********/ + private String create_Aux(String algorithm, PrivateClaims privateClaims, JWTOptions options) { + if (options == null) { + this.error.setError("JW004", "Options parameter is null"); + return ""; + } + JWTAlgorithm alg = JWTAlgorithm.getJWTAlgorithm(algorithm, this.error); + if (this.hasError()) { + return ""; + } + Builder tokenBuilder = JWT.create(); + if (!options.getHeaderParameters().isEmpty()) { + HeaderParameters parameters = options.getHeaderParameters(); + tokenBuilder.withHeader(parameters.getMap()); + } + if (privateClaims == null) { + this.error.setError("JW005", "PrivateClaims parameter is null"); + return ""; + } + tokenBuilder = doBuildPayload(tokenBuilder, privateClaims, options); + if (this.hasError()) { + return ""; + } + Algorithm algorithmType = null; + if (JWTAlgorithm.isPrivate(alg)) { + + PrivateKeyManager key = options.getPrivateKey(); + if (key.hasError()) { + this.error = key.getError(); + return ""; + } + + algorithmType = JWTAlgorithm.getAsymmetricAlgorithm(alg, key, null, error); + if (this.hasError()) { + return ""; + } + + } else { + + algorithmType = JWTAlgorithm.getSymmetricAlgorithm(alg, options.getSecret(), this.error); + if (this.hasError()) { + return ""; + } + } + String signedJwt = ""; + try { + signedJwt = tokenBuilder.sign(algorithmType); + } catch (Exception e) { + this.error.setError("JW006", e.getMessage()); + return ""; + } + + return signedJwt; + } + private boolean doVerify(String token, String expectedAlgorithm, PrivateClaims privateClaims, JWTOptions options, boolean verifyClaims, boolean verifyRegClaims) { - this.error.cleanError(); - if (options.hasError()) { - this.error = options.getError(); + + if (options == null) { + this.error.setError("JW004", "Options parameter is null"); return false; } DecodedJWT decodedJWT = null; @@ -155,7 +170,7 @@ private boolean doVerify(String token, String expectedAlgorithm, PrivateClaims p decodedJWT = JWT.decode(token); } catch (Exception e) { - this.error.setError("JW005", e.getMessage()); + this.error.setError("JW007", e.getMessage()); return false; } if (isRevoqued(decodedJWT, options)) { @@ -199,14 +214,14 @@ private boolean doVerify(String token, String expectedAlgorithm, PrivateClaims p if (this.hasError()) { return false; } - try { JWTVerifier verifier = verification.build(); DecodedJWT decodedToken = JWT.decode(token); verifier.verify(decodedToken); } catch (Exception e) { - error.setError("JW006", e.getMessage()); + + error.setError("JW009", e.getMessage()); return false; } @@ -227,7 +242,7 @@ private String getTokenPart(String token, String part) throws Exception { case "id": return decodedToken.getId(); default: - error.setError("JW007", "Unknown token segment"); + error.setError("JW010", "Unknown token segment"); return ""; } byte[] base64Bytes = Base64.decodeBase64(base64Part); @@ -268,7 +283,7 @@ private Verification buildVerification(Verification verification, JWTOptions opt return null; } } else { - error.setError("JW002", registeredC.get(z).getKey() + " wrong registered claim key"); + error.setError("JW011", String.format("%s wrong registered claim key", registeredC.get(z).getKey())); return null; } } @@ -303,7 +318,7 @@ private Builder doBuildPayload(Builder tokenBuilder, PrivateClaims privateClaims // tokenBuilder.withClaim(privateC.get(i).getKey(), privateC.get(i).getValue()); } } catch (Exception e) { - this.error.setError("JW004", e.getMessage()); + this.error.setError("JW012", e.getMessage()); return null; } } @@ -315,7 +330,7 @@ private Builder doBuildPayload(Builder tokenBuilder, PrivateClaims privateClaims try { tokenBuilder.withClaim(publicC.get(j).getKey(), (String) publicC.get(j).getValue()); } catch (Exception e) { - this.error.setError("JW003", e.getMessage()); + this.error.setError("JW013", e.getMessage()); return null; } } @@ -332,7 +347,7 @@ private Builder doBuildPayload(Builder tokenBuilder, PrivateClaims privateClaims return null; } } else { - error.setError("JW002", registeredC.get(z).getKey() + " wrong registered claim key"); + error.setError("JW011", String.format("%s wrong registered claim key", registeredC.get(z).getKey())); return null; } } @@ -358,7 +373,7 @@ private boolean verifyPrivateClaims(DecodedJWT decodedJWT, PrivateClaims private map = (HashMap) mapper.readValue(plainTextPart, new TypeReference>() { }); } catch (Exception e) { - this.error.setError("JW009", "Cannot parse JWT payload"); + this.error.setError("JW014", e.getMessage()); return false; } this.counter = 0; @@ -394,23 +409,21 @@ private boolean verifyNestedClaims(Map pclaimMap, Map) op, (HashMap) ot, registeredClaims, publicClaims); @@ -511,12 +524,12 @@ private int getHeaderClaimsNumber(DecodedJWT decodedJWT) { return map.size(); } - - private Long convertToLong(Object o){ - String stringToConvert = String.valueOf(o); - Long convertedLong = Long.parseLong(stringToConvert); - return convertedLong; - } + private Long convertToLong(Object o) { + String stringToConvert = String.valueOf(o); + Long convertedLong = Long.parseLong(stringToConvert); + return convertedLong; + + } } diff --git a/GeneXusJWT/src/main/java/com/genexus/JWT/claims/Claims.java b/GeneXusJWT/src/main/java/com/genexus/JWT/claims/Claims.java index 2243ee4..097f9f9 100644 --- a/GeneXusJWT/src/main/java/com/genexus/JWT/claims/Claims.java +++ b/GeneXusJWT/src/main/java/com/genexus/JWT/claims/Claims.java @@ -30,7 +30,7 @@ public Object getClaimValue(String key, Error error) { return claims.get(i).getValue(); } } - error.setError("CL001", "Could not find a claim with" + key + " key value"); + error.setError("CLA01", String.format("Could not find a claim with %s key value", key)); return ""; } diff --git a/GeneXusJWT/src/main/java/com/genexus/JWT/claims/RegisteredClaim.java b/GeneXusJWT/src/main/java/com/genexus/JWT/claims/RegisteredClaim.java index fe3c8b2..24e3d7d 100644 --- a/GeneXusJWT/src/main/java/com/genexus/JWT/claims/RegisteredClaim.java +++ b/GeneXusJWT/src/main/java/com/genexus/JWT/claims/RegisteredClaim.java @@ -29,7 +29,7 @@ public static String valueOf(RegisteredClaim registeredClaim, Error error) { case jti: return "jti"; default: - error.setError("RC001", "Unknown registered Claim"); + error.setError("RCL01", "Unknown registered Claim"); return "Unknown registered claim"; } @@ -52,7 +52,7 @@ public static RegisteredClaim getRegisteredClaim(String registeredClaim, Error e case "jti": return RegisteredClaim.jti; default: - error.setError("RC002", "Unknown registered Claim"); + error.setError("RCL02", "Unknown registered Claim"); return null; } } @@ -126,7 +126,7 @@ public static Verification getVerificationWithClaim(RegisteredClaim registeredCl verification.withJWTId(registeredClaimValue); break; default: - error.setError("RC005", "Unknown registered claim"); + error.setError("RCL03", "Unknown registered claim"); return null; } return verification; @@ -152,7 +152,7 @@ public static Builder getBuilderWithClaim(RegisteredClaim registeredClaimKey, St try { tokenBuilder.withIssuer(registeredClaimValue); } catch (Exception e) { - error.setError("RC003", e.getMessage()); + error.setError("RCL04", e.getMessage()); return null; } break; @@ -165,14 +165,14 @@ public static Builder getBuilderWithClaim(RegisteredClaim registeredClaimKey, St date = dateFormat.parse(registeredClaimValue); } catch (Exception e) { - error.setError("RC004", "Date format error; expected yyyy/MM/dd HH:mm:ss"); + error.setError("RCL05", "Date format error; expected yyyy/MM/dd HH:mm:ss"); return null; } try { tokenBuilder.withExpiresAt(date); } catch (Exception e) { - error.setError("RC005", e.getMessage()); + error.setError("RCL06", e.getMessage()); return null; } break; @@ -181,7 +181,7 @@ public static Builder getBuilderWithClaim(RegisteredClaim registeredClaimKey, St try { tokenBuilder.withSubject(registeredClaimValue); } catch (Exception e) { - error.setError("RC006", e.getMessage()); + error.setError("RCL07", e.getMessage()); return null; } break; @@ -189,7 +189,7 @@ public static Builder getBuilderWithClaim(RegisteredClaim registeredClaimKey, St try { tokenBuilder.withAudience(registeredClaimValue); } catch (Exception e) { - error.setError("RC007", e.getMessage()); + error.setError("RCL08", e.getMessage()); return null; } break; @@ -198,13 +198,13 @@ public static Builder getBuilderWithClaim(RegisteredClaim registeredClaimKey, St try { dateNbf = dateFormat.parse(registeredClaimValue); } catch (Exception e) { - error.setError("RC008", "Date format error; expected yyyy/MM/dd HH:mm:ss"); + error.setError("RCL05", "Date format error; expected yyyy/MM/dd HH:mm:ss"); return null; } try { tokenBuilder.withNotBefore(dateNbf); } catch (Exception e) { - error.setError("RC009", e.getMessage()); + error.setError("RCL09", e.getMessage()); return null; } break; @@ -213,13 +213,13 @@ public static Builder getBuilderWithClaim(RegisteredClaim registeredClaimKey, St try { dateIat = dateFormat.parse(registeredClaimValue); } catch (Exception e) { - error.setError("RC010", "Date format error; expected yyyy/MM/dd HH:mm:ss"); + error.setError("RCL05", "Date format error; expected yyyy/MM/dd HH:mm:ss"); return null; } try { tokenBuilder.withIssuedAt(dateIat); } catch (Exception e) { - error.setError("RC011", e.getMessage()); + error.setError("RCL10", e.getMessage()); return null; } break; @@ -227,12 +227,12 @@ public static Builder getBuilderWithClaim(RegisteredClaim registeredClaimKey, St try { tokenBuilder.withJWTId(registeredClaimValue); } catch (Exception e) { - error.setError("RC012", e.getMessage()); + error.setError("RCL11", e.getMessage()); return null; } break; default: - error.setError("RC013", "Unknown registered claim"); + error.setError("RCL12", "Unknown registered claim"); return null; } return tokenBuilder; diff --git a/GeneXusJWT/src/main/java/com/genexus/JWT/claims/RegisteredClaims.java b/GeneXusJWT/src/main/java/com/genexus/JWT/claims/RegisteredClaims.java index 2a1737f..d8c4860 100644 --- a/GeneXusJWT/src/main/java/com/genexus/JWT/claims/RegisteredClaims.java +++ b/GeneXusJWT/src/main/java/com/genexus/JWT/claims/RegisteredClaims.java @@ -19,7 +19,7 @@ public RegisteredClaims() { @Override public boolean setClaim(String key, Object value, Error error) { - error.setError("RC001", "Not alllowed data type"); + error.setError("RCS01", "Not alllowed data type"); return false; } @@ -27,7 +27,7 @@ public boolean setClaim(String key, String value, Error error) { if (RegisteredClaim.exists(key)) { return super.setClaim(key, value, error); } else { - error.setError("RC001", "Wrong registered key value"); + error.setError("RCS02", "Wrong registered key value"); return false; } } @@ -37,7 +37,7 @@ public boolean setTimeValidatingClaim(String key, String value, String customVal customTimeValidationClaims.put(key, customValidationSeconds); return setClaim(key, value, error); } else { - error.setError("RC001", "Wrong registered key value"); + error.setError("RCS02", "Wrong registered key value"); return false; } } @@ -70,10 +70,10 @@ public Object getClaimValue(String key, Error error) { return claims.get(i).getValue(); } } - error.setError("RC001", "Could not find a claim with" + key + " key value"); + error.setError("RCS03", String.format("Could not find a claim with %s key value", key)); return ""; } else { - error.setError("RC002", "Wrong registered key value"); + error.setError("RCS02", "Wrong registered key value"); return ""; } } diff --git a/GeneXusJWT/src/main/java/com/genexus/JWT/utils/JWTAlgorithm.java b/GeneXusJWT/src/main/java/com/genexus/JWT/utils/JWTAlgorithm.java index 37e8e99..0b2d3ae 100644 --- a/GeneXusJWT/src/main/java/com/genexus/JWT/utils/JWTAlgorithm.java +++ b/GeneXusJWT/src/main/java/com/genexus/JWT/utils/JWTAlgorithm.java @@ -25,7 +25,7 @@ public static String valueOf(JWTAlgorithm jWTAlgorithm, Error error) { case ES512: return "ES512"; default: - error.setError("JA001", "Unrecognized algorithm"); + error.setError("JWA01", "Unrecognized algorithm"); return "Unrecognized algorithm"; } } @@ -47,7 +47,7 @@ public static JWTAlgorithm getJWTAlgorithm(String jWTAlgorithm, Error error) { case "ES512": return JWTAlgorithm.ES512; default: - error.setError("JA002", "Unrecognized algorithm"); + error.setError("JWA02", "Unrecognized algorithm"); return null; } } @@ -67,7 +67,7 @@ public static boolean isPrivate(JWTAlgorithm jWTAlgorithm) { public static Algorithm getSymmetricAlgorithm(JWTAlgorithm algorithm, byte[] secret, Error error) { if (isPrivate(algorithm)) { - error.setError("JA003", "It is not a symmetric algorithm name"); + error.setError("JWA03", "It is not a symmetric algorithm name"); return null; } else { switch (algorithm) { @@ -76,7 +76,7 @@ public static Algorithm getSymmetricAlgorithm(JWTAlgorithm algorithm, byte[] sec case HS512: return Algorithm.HMAC512(secret); default: - error.setError("JA004", "Unknown symmetric algorithm"); + error.setError("JWA04", "Unknown symmetric algorithm"); return null; } } diff --git a/GeneXusJWT/src/main/java/com/genexus/JWT/utils/RevocationList.java b/GeneXusJWT/src/main/java/com/genexus/JWT/utils/RevocationList.java index d7c5bd6..1eab360 100644 --- a/GeneXusJWT/src/main/java/com/genexus/JWT/utils/RevocationList.java +++ b/GeneXusJWT/src/main/java/com/genexus/JWT/utils/RevocationList.java @@ -23,7 +23,7 @@ public boolean deleteFromRevocationList(String id) { return true; } } - this.error.setError("OP001", "The " + id + " id is not in the revocation list"); + this.error.setError("REL01", String.format("The id %s is not in the revocation list", id)); return false; } diff --git a/GeneXusJWT/src/main/java/com/genexus/commons/JWTOptions.java b/GeneXusJWT/src/main/java/com/genexus/commons/JWTOptions.java index fe0247d..7019d9e 100644 --- a/GeneXusJWT/src/main/java/com/genexus/commons/JWTOptions.java +++ b/GeneXusJWT/src/main/java/com/genexus/commons/JWTOptions.java @@ -39,15 +39,17 @@ public void setCertificate(CertificateX509 cert) { } public void setSecret(String value) { - try { - secret = Hex.decode(value); + this.secret = Hex.decode(value); } catch (Exception e) { this.error.setError("OP001", e.getMessage()); secret = null; } } + + + public boolean addCustomTimeValidationClaim(String key, String value, String customTime) { this.registeredClaims.setTimeValidatingClaim(key, value, customTime, this.error); From 5afff080425157d0917308f4aca1acd098cfa689 Mon Sep 17 00:00:00 2001 From: "ARTECH\\sgrampone" Date: Thu, 18 Aug 2022 16:38:44 -0300 Subject: [PATCH 2/3] Fix error codes and descriptions --- .../src/main/java/com/genexus/JWT/JWTCreator.java | 2 +- .../java/com/genexus/JWT/utils/JWTAlgorithm.java | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/GeneXusJWT/src/main/java/com/genexus/JWT/JWTCreator.java b/GeneXusJWT/src/main/java/com/genexus/JWT/JWTCreator.java index 1d3e316..6f96e53 100644 --- a/GeneXusJWT/src/main/java/com/genexus/JWT/JWTCreator.java +++ b/GeneXusJWT/src/main/java/com/genexus/JWT/JWTCreator.java @@ -313,7 +313,7 @@ private Builder doBuildPayload(Builder tokenBuilder, PrivateClaims privateClaims } else if (obj instanceof Boolean) { tokenBuilder.withClaim(privateC.get(i).getKey(), (boolean) privateC.get(i).getValue()); } else { - this.error.setError("JW012", "Unrecognized data type"); + this.error.setError("JW016", "Unrecognized data type"); } // tokenBuilder.withClaim(privateC.get(i).getKey(), privateC.get(i).getValue()); } diff --git a/GeneXusJWT/src/main/java/com/genexus/JWT/utils/JWTAlgorithm.java b/GeneXusJWT/src/main/java/com/genexus/JWT/utils/JWTAlgorithm.java index 0b2d3ae..ef40ef2 100644 --- a/GeneXusJWT/src/main/java/com/genexus/JWT/utils/JWTAlgorithm.java +++ b/GeneXusJWT/src/main/java/com/genexus/JWT/utils/JWTAlgorithm.java @@ -86,7 +86,7 @@ public static Algorithm getSymmetricAlgorithm(JWTAlgorithm algorithm, byte[] sec public static Algorithm getAsymmetricAlgorithm(JWTAlgorithm algorithm, PrivateKeyManager key, CertificateX509 cert, Error error) { if (!isPrivate(algorithm)) { - error.setError("JA005", "It is not an asymmetric algorithm name"); + error.setError("JWA07", "It is not an asymmetric algorithm name"); return null; } else { switch (algorithm) { @@ -100,7 +100,7 @@ public static Algorithm getAsymmetricAlgorithm(JWTAlgorithm algorithm, PrivateKe : Algorithm.RSA256(cert.getRSAPublicKey(), null); } } catch (Exception e) { - error.setError("JA007", e.getMessage()); + error.setError("JWA08", e.getMessage()); return null; } case RS512: @@ -113,7 +113,7 @@ public static Algorithm getAsymmetricAlgorithm(JWTAlgorithm algorithm, PrivateKe : Algorithm.RSA512(cert.getRSAPublicKey(), null); } } catch (Exception e) { - error.setError("JA008", e.getMessage()); + error.setError("JWA09", e.getMessage()); return null; } case ES256: @@ -126,7 +126,7 @@ public static Algorithm getAsymmetricAlgorithm(JWTAlgorithm algorithm, PrivateKe : Algorithm.ECDSA256(cert.getECPublicKeyJWT(), null); } } catch (Exception e) { - error.setError("JA008", e.getMessage()); + error.setError("JWA10", e.getMessage()); return null; } case ES384: @@ -139,7 +139,7 @@ public static Algorithm getAsymmetricAlgorithm(JWTAlgorithm algorithm, PrivateKe : Algorithm.ECDSA384(cert.getECPublicKeyJWT(), null); } } catch (Exception e) { - error.setError("JA008", e.getMessage()); + error.setError("JWA11", e.getMessage()); return null; } case ES512: @@ -152,11 +152,11 @@ public static Algorithm getAsymmetricAlgorithm(JWTAlgorithm algorithm, PrivateKe : Algorithm.ECDSA512(cert.getECPublicKeyJWT(), null); } } catch (Exception e) { - error.setError("JA008", e.getMessage()); + error.setError("JWA12", e.getMessage()); return null; } default: - error.setError("JA006", "Unknown asymmetric algorithm"); + error.setError("JWA13", "Unknown asymmetric algorithm"); return null; } } From 31da5822f4221f6699512cc85b13b5ae2bbaeda6 Mon Sep 17 00:00:00 2001 From: "ARTECH\\sgrampone" Date: Mon, 22 Aug 2022 13:46:10 -0300 Subject: [PATCH 3/3] Fix version for v18 --- GeneXusCryptography/pom.xml | 2 +- GeneXusFtps/pom.xml | 2 +- GeneXusJWT/pom.xml | 2 +- GeneXusSftp/pom.xml | 2 +- GeneXusXmlSignature/pom.xml | 2 +- SecurityAPICommons/pom.xml | 2 +- pom.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/GeneXusCryptography/pom.xml b/GeneXusCryptography/pom.xml index 5fc7769..15e4ed8 100644 --- a/GeneXusCryptography/pom.xml +++ b/GeneXusCryptography/pom.xml @@ -7,7 +7,7 @@ com.genexus SecurityAPIParent - 17.10.0 + 18.0.0 diff --git a/GeneXusFtps/pom.xml b/GeneXusFtps/pom.xml index 502bc0c..a1d7f48 100644 --- a/GeneXusFtps/pom.xml +++ b/GeneXusFtps/pom.xml @@ -8,7 +8,7 @@ com.genexus SecurityAPIParent - 17.10.0 + 18.0.0 diff --git a/GeneXusJWT/pom.xml b/GeneXusJWT/pom.xml index fcb4f27..61b11eb 100644 --- a/GeneXusJWT/pom.xml +++ b/GeneXusJWT/pom.xml @@ -7,7 +7,7 @@ com.genexus SecurityAPIParent - 17.10.0 + 18.0.0 diff --git a/GeneXusSftp/pom.xml b/GeneXusSftp/pom.xml index 70c611f..a638f3a 100644 --- a/GeneXusSftp/pom.xml +++ b/GeneXusSftp/pom.xml @@ -7,7 +7,7 @@ com.genexus SecurityAPIParent - 17.10.0 + 18.0.0 diff --git a/GeneXusXmlSignature/pom.xml b/GeneXusXmlSignature/pom.xml index c0f5e88..8791993 100644 --- a/GeneXusXmlSignature/pom.xml +++ b/GeneXusXmlSignature/pom.xml @@ -7,7 +7,7 @@ com.genexus SecurityAPIParent - 17.10.0 + 18.0.0 GeneXusXmlSignature diff --git a/SecurityAPICommons/pom.xml b/SecurityAPICommons/pom.xml index a36b034..6a1de0c 100644 --- a/SecurityAPICommons/pom.xml +++ b/SecurityAPICommons/pom.xml @@ -7,7 +7,7 @@ com.genexus SecurityAPIParent - 17.10.0 + 18.0.0 diff --git a/pom.xml b/pom.xml index 88e5c1d..4ec0f98 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.genexus SecurityAPIParent - 17.10.0 + 18.0.0 pom GeneXusSecurityAPI (Parent)