From 36851e1a60f64b34f2b396c1659508ed4b16ad19 Mon Sep 17 00:00:00 2001 From: Dolph Flynn <96876199+DolphFlynn@users.noreply.github.com> Date: Sat, 13 Jul 2024 16:43:01 +0100 Subject: [PATCH] Update dependencies. --- build.gradle | 10 +- gradle.properties | 6 +- .../api/montoya/core/FakeAnnotations.java | 10 ++ .../burp/api/montoya/core/FakeByteArray.java | 21 ++++ .../java/burp/api/montoya/core/FakeRange.java | 5 + .../api/montoya/http/FakeHttpRequest.java | 98 ++++++++++++++++++- .../montoya/http/FakeHttpRequestResponse.java | 23 +++++ .../burp/api/montoya/logging/StubLogging.java | 8 ++ .../api/montoya/utilities/FakeByteUtils.java | 24 ++++- .../com/blackberry/jwteditor/AttackTests.java | 2 +- 10 files changed, 194 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index bb595d9..dbb8856 100644 --- a/build.gradle +++ b/build.gradle @@ -35,17 +35,17 @@ dependencies { "com.jetbrains.intellij.java:java-gui-forms-rt:${gui_designer_version}", 'com.nimbusds:nimbus-jose-jwt:9.21', 'org.exbin.deltahex:deltahex-swing:0.1.2', - 'com.fifesoft:rsyntaxtextarea:3.3.4', - 'org.json:json:20240205', + 'com.fifesoft:rsyntaxtextarea:3.4.1', + 'org.json:json:20240303', 'org.apache.commons:commons-lang3:3.14.0' ) testImplementation( "org.bouncycastle:bcprov-jdk18on:${bouncycastle_version}", "org.bouncycastle:bcpkix-jdk18on:${bouncycastle_version}", "net.portswigger.burp.extensions:montoya-api:${extender_version}", - 'org.junit.jupiter:junit-jupiter:5.10.1', - 'org.assertj:assertj-core:3.24.2', - 'org.mockito:mockito-core:5.8.0' + 'org.junit.jupiter:junit-jupiter:5.10.3', + 'org.assertj:assertj-core:3.26.3', + 'org.mockito:mockito-core:5.12.0' ) } diff --git a/gradle.properties b/gradle.properties index 9c33896..4bc0dc1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ -bouncycastle_version=1.77 -gui_designer_version=233.14475.38 -extender_version=2023.5 +bouncycastle_version=1.78.1 +gui_designer_version=241.18034.82 +extender_version=2023.12.1 diff --git a/src/test/java/burp/api/montoya/core/FakeAnnotations.java b/src/test/java/burp/api/montoya/core/FakeAnnotations.java index 3d8a696..082cf79 100644 --- a/src/test/java/burp/api/montoya/core/FakeAnnotations.java +++ b/src/test/java/burp/api/montoya/core/FakeAnnotations.java @@ -32,6 +32,11 @@ public void setNotes(String notes) { this.notes = notes; } + @Override + public boolean hasNotes() { + return notes != null; + } + @Override public HighlightColor highlightColor() { return highlightColor; @@ -42,6 +47,11 @@ public void setHighlightColor(HighlightColor highlightColor) { this.highlightColor = highlightColor; } + @Override + public boolean hasHighlightColor() { + return highlightColor != null; + } + @Override public Annotations withNotes(String s) { throw new UnsupportedOperationException(); diff --git a/src/test/java/burp/api/montoya/core/FakeByteArray.java b/src/test/java/burp/api/montoya/core/FakeByteArray.java index c8db67f..c51d39f 100644 --- a/src/test/java/burp/api/montoya/core/FakeByteArray.java +++ b/src/test/java/burp/api/montoya/core/FakeByteArray.java @@ -19,6 +19,7 @@ package burp.api.montoya.core; import java.util.Iterator; +import java.util.regex.Pattern; import static java.nio.charset.StandardCharsets.UTF_8; @@ -131,6 +132,16 @@ public int indexOf(String searchTerm, boolean caseSensitive, int startIndexInclu throw new UnsupportedOperationException(); } + @Override + public int indexOf(Pattern pattern) { + throw new UnsupportedOperationException(); + } + + @Override + public int indexOf(Pattern pattern, int startIndexInclusive, int endIndexExclusive) { + throw new UnsupportedOperationException(); + } + @Override public int countMatches(ByteArray searchTerm) { throw new UnsupportedOperationException(); @@ -161,6 +172,16 @@ public int countMatches(String searchTerm, boolean caseSensitive, int startIndex throw new UnsupportedOperationException(); } + @Override + public int countMatches(Pattern pattern) { + throw new UnsupportedOperationException(); + } + + @Override + public int countMatches(Pattern pattern, int startIndexInclusive, int endIndexExclusive) { + throw new UnsupportedOperationException(); + } + @Override public ByteArray withAppended(byte... data) { throw new UnsupportedOperationException(); diff --git a/src/test/java/burp/api/montoya/core/FakeRange.java b/src/test/java/burp/api/montoya/core/FakeRange.java index 47bf8fc..9e308f3 100644 --- a/src/test/java/burp/api/montoya/core/FakeRange.java +++ b/src/test/java/burp/api/montoya/core/FakeRange.java @@ -39,6 +39,11 @@ public int endIndexExclusive() { return end; } + @Override + public boolean contains(int i) { + return i >= start && i < end; + } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/src/test/java/burp/api/montoya/http/FakeHttpRequest.java b/src/test/java/burp/api/montoya/http/FakeHttpRequest.java index 46a2d97..b781ab4 100644 --- a/src/test/java/burp/api/montoya/http/FakeHttpRequest.java +++ b/src/test/java/burp/api/montoya/http/FakeHttpRequest.java @@ -23,11 +23,13 @@ import burp.api.montoya.http.message.ContentType; import burp.api.montoya.http.message.HttpHeader; import burp.api.montoya.http.message.params.HttpParameter; +import burp.api.montoya.http.message.params.HttpParameterType; import burp.api.montoya.http.message.params.ParsedHttpParameter; import burp.api.montoya.http.message.requests.HttpRequest; import burp.api.montoya.http.message.requests.HttpTransformation; import java.util.List; +import java.util.regex.Pattern; public class FakeHttpRequest implements HttpRequest { private final ByteArray request; @@ -42,6 +44,11 @@ public FakeHttpRequest(HttpService httpService, ByteArray request) { this.request = request; } + @Override + public boolean isInScope() { + throw new UnsupportedOperationException(); + } + @Override public HttpService httpService() { return httpService; @@ -62,6 +69,21 @@ public String path() { throw new UnsupportedOperationException(); } + @Override + public String query() { + throw new UnsupportedOperationException(); + } + + @Override + public String pathWithoutQuery() { + throw new UnsupportedOperationException(); + } + + @Override + public String fileExtension() { + throw new UnsupportedOperationException(); + } + @Override public String httpVersion() { throw new UnsupportedOperationException(); @@ -82,6 +104,66 @@ public List parameters() { throw new UnsupportedOperationException(); } + @Override + public List parameters(HttpParameterType type) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean hasParameters() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean hasParameters(HttpParameterType type) { + throw new UnsupportedOperationException(); + } + + @Override + public ParsedHttpParameter parameter(String name, HttpParameterType type) { + throw new UnsupportedOperationException(); + } + + @Override + public String parameterValue(String name, HttpParameterType type) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean hasParameter(String name, HttpParameterType type) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean hasParameter(HttpParameter parameter) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean hasHeader(HttpHeader header) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean hasHeader(String name) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean hasHeader(String name, String value) { + throw new UnsupportedOperationException(); + } + + @Override + public HttpHeader header(String name) { + throw new UnsupportedOperationException(); + } + + @Override + public String headerValue(String name) { + throw new UnsupportedOperationException(); + } + @Override public ByteArray body() { throw new UnsupportedOperationException(); @@ -102,6 +184,16 @@ public List markers() { throw new UnsupportedOperationException(); } + @Override + public boolean contains(String searchTerm, boolean caseSensitive) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean contains(Pattern pattern) { + throw new UnsupportedOperationException(); + } + @Override public ByteArray toByteArray() { return request; @@ -143,7 +235,7 @@ public HttpRequest withParameter(HttpParameter parameters) { } @Override - public HttpRequest withAddedParameters(List parameters) { + public HttpRequest withAddedParameters(List parameters) { throw new UnsupportedOperationException(); } @@ -153,7 +245,7 @@ public HttpRequest withAddedParameters(HttpParameter... parameters) { } @Override - public HttpRequest withRemovedParameters(List parameters) { + public HttpRequest withRemovedParameters(List parameters) { throw new UnsupportedOperationException(); } @@ -163,7 +255,7 @@ public HttpRequest withRemovedParameters(HttpParameter... parameters) { } @Override - public HttpRequest withUpdatedParameters(List parameters) { + public HttpRequest withUpdatedParameters(List parameters) { throw new UnsupportedOperationException(); } diff --git a/src/test/java/burp/api/montoya/http/FakeHttpRequestResponse.java b/src/test/java/burp/api/montoya/http/FakeHttpRequestResponse.java index a03406a..e6dd6f7 100644 --- a/src/test/java/burp/api/montoya/http/FakeHttpRequestResponse.java +++ b/src/test/java/burp/api/montoya/http/FakeHttpRequestResponse.java @@ -22,12 +22,15 @@ import burp.api.montoya.core.ByteArray; import burp.api.montoya.core.FakeByteArray; import burp.api.montoya.core.Marker; +import burp.api.montoya.http.handler.TimingData; import burp.api.montoya.http.message.ContentType; import burp.api.montoya.http.message.HttpRequestResponse; import burp.api.montoya.http.message.requests.HttpRequest; import burp.api.montoya.http.message.responses.HttpResponse; import java.util.List; +import java.util.Optional; +import java.util.regex.Pattern; public class FakeHttpRequestResponse implements HttpRequestResponse { private final HttpRequest httpRequest; @@ -51,11 +54,21 @@ public Annotations annotations() { throw new UnsupportedOperationException(); } + @Override + public Optional timingData() { + throw new UnsupportedOperationException(); + } + @Override public String url() { throw new UnsupportedOperationException(); } + @Override + public boolean hasResponse() { + throw new UnsupportedOperationException(); + } + @Override public HttpService httpService() { throw new UnsupportedOperationException(); @@ -81,6 +94,16 @@ public List responseMarkers() { throw new UnsupportedOperationException(); } + @Override + public boolean contains(String searchTerm, boolean caseSensitive) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean contains(Pattern pattern) { + throw new UnsupportedOperationException(); + } + @Override public HttpRequestResponse copyToTempFile() { throw new UnsupportedOperationException(); diff --git a/src/test/java/burp/api/montoya/logging/StubLogging.java b/src/test/java/burp/api/montoya/logging/StubLogging.java index e9af542..3689f95 100644 --- a/src/test/java/burp/api/montoya/logging/StubLogging.java +++ b/src/test/java/burp/api/montoya/logging/StubLogging.java @@ -23,6 +23,14 @@ public void logToOutput(String message) { public void logToError(String message) { } + @Override + public void logToError(String message, Throwable cause) { + } + + @Override + public void logToError(Throwable cause) { + } + @Override public void raiseDebugEvent(String message) { } diff --git a/src/test/java/burp/api/montoya/utilities/FakeByteUtils.java b/src/test/java/burp/api/montoya/utilities/FakeByteUtils.java index c5c8110..59978ed 100644 --- a/src/test/java/burp/api/montoya/utilities/FakeByteUtils.java +++ b/src/test/java/burp/api/montoya/utilities/FakeByteUtils.java @@ -18,9 +18,11 @@ package burp.api.montoya.utilities; +import java.util.regex.Pattern; + import static java.nio.charset.StandardCharsets.UTF_8; -public class FakeByteUtils implements ByteUtils{ +public class FakeByteUtils implements ByteUtils { @Override public int indexOf(byte[] bytes, byte[] bytes1) { throw new UnsupportedOperationException(); @@ -36,6 +38,16 @@ public int indexOf(byte[] bytes, byte[] bytes1, boolean b, int i, int i1) { throw new UnsupportedOperationException(); } + @Override + public int indexOf(byte[] data, Pattern pattern) { + throw new UnsupportedOperationException(); + } + + @Override + public int indexOf(byte[] data, Pattern pattern, int from, int to) { + throw new UnsupportedOperationException(); + } + @Override public int countMatches(byte[] bytes, byte[] bytes1) { throw new UnsupportedOperationException(); @@ -51,6 +63,16 @@ public int countMatches(byte[] bytes, byte[] bytes1, boolean b, int i, int i1) { throw new UnsupportedOperationException(); } + @Override + public int countMatches(byte[] data, Pattern pattern) { + throw new UnsupportedOperationException(); + } + + @Override + public int countMatches(byte[] data, Pattern pattern, int from, int to) { + throw new UnsupportedOperationException(); + } + @Override public String convertToString(byte[] bytes) { return new String(bytes, UTF_8); diff --git a/src/test/java/com/blackberry/jwteditor/AttackTests.java b/src/test/java/com/blackberry/jwteditor/AttackTests.java index a7143b7..9ff18b5 100644 --- a/src/test/java/com/blackberry/jwteditor/AttackTests.java +++ b/src/test/java/com/blackberry/jwteditor/AttackTests.java @@ -56,7 +56,7 @@ class AttackTests { ZXPNgyN0TzNLQjPQOy/tJ/VFq8CQGE4/K5ElRSDlj4kswxonWXYAUVxnqRN1LGHw 2G5QRE2D13sKHCC8ZrZXJzj67Hrq5h2SADKzVzhA8AW3WZlPLrlFT3t1+iZ6m+aF KwIDAQAB - -----END PUBLIC KEY----"""; + -----END PUBLIC KEY-----"""; private static final String EMBEDDED_JWK_KEY = "{\"p\":\"6g4o__Z8GnI2UtRz6AJdD0dVRmZqq1bONXWq6ee70eVHmu-fZ2XQCYj6miF1DT-QHDA1eb7QxKnb5b-HZ2L-OXf6OLtu6xNBmQjT1ZcGHe8YHmNfJN4CP-nxG4EYJRoInZOvQwBEWfXIrqvw0HhGXTrfC8GGHtb1uCP733cITaU\",\"kty\":\"RSA\",\"q\":\"tvQO0f6XevKrWzHDfjfQ_dQohOIpRYMIuiEohAMqphgeVh3VUJHAnigWkHllvJN6wsJcZM9TfXiKFjdEtgl_L9igTJ8BTAJD2yLl_qfnjpODLR7A--AnyFEEFtgO-FfnFRQlBC50-Bfz4JxF5K7hXAYs1X5GHp0j6SyjO7wSaFU\",\"d\":\"SWgkfMybZJ6zFZgVpgLMgjTHWfvrC4MRvtjmif2haSiYHQRB0IgY5_kSUKvp00reb4Xa_Asx1gjq6lrfd8iIt_OSJNkS7Od3s_K6pP_o7WAtl3UUuMqSdZSmJXiPzlkCBldnjsHRU1kqolfiT07m9zCS972ZTilYoErVk9eOCcazPvEihUcyDGTcx2H7cXrZaqrlliQNUpTCWw6SHspq2V4FLGZrioFDCOkbAL1rgD5mg2mANMLv1UY7JWVueuvzs8jnvsGnhRQlnhf7QgSFXUUfhoy-Ej2rWrfYZ5_i17tuGkjqiq0vzAA1U28REZEBHjDQ4p_8vCtHgz3Lc-75UQ\",\"e\":\"AQAB\",\"kid\":\"dfc6a9df-916c-406d-84de-ce5b49d50ad0\",\"qi\":\"Pl4ANTrzCLGsE5IE3jkJiqeOq6Z3HXrQsv39NXQNriLAyghQPgrcnN4rGLaBRi1DKFElU4qmCLXzwaylox-vJd_W4WD-2UFvaSD4h_EUjGSfpcfEPTONECF5WTRHwDCNRVu7XaK53jp0nadsiFaa8a1SmP58uZwl869Bp0Hskks\",\"dp\":\"lLJSUeuihJqy8ISQ7oEx5hcHkiZW9mu7rjMHVnsm0_66MzCxMNt6A9TGgU1oM_aB86adEq-rqoXPcnLv7zrxEEms6oYJvccKEdON4VCFTlcsF4JCXAW_oCNcToEBefDEMHg3DHYK9qwzxuTtpUQEUA6qzakxMD6Y9VfHGP1ihRE\",\"dq\":\"nnRItbXUCsdMhEJYd-Pt3Tm4EkcyyaKQl2yKg7OeZ5ZyB9H048Ao3JIJ4P1TkP0GkNH3ZdRvEjepGU6q8yLMhmsPgu0gGW3IyW2zV1ii48h9D0IYkM32hrcsXICqjorLeGUnHjUCV7GfJoUSv9p7EtHCWPHx1yfwZ06i3eSo6LU\",\"n\":\"p0U0MdHFLPovX5j91oH-dc54oeJDIDapuPDM9gYHjhX2Bwj4fFhqvaAfIhn-w7zm-6HZsH-VxPCngl7GkWxx1F7Cobkg8TOD4UusFFo8srSFDExWCQ4MRFDRcLN9bmfXeiR-MvGE1tHZNJCOnxsx32-ueF0T2xo880-073skum8sS9vi7RuNhaCY_liJNkrznqQCEbNLR_-V_-IQaFG_obDNqEHroKC3lxz34s4CPpUwen8IFJm8_vbcFiI_jZrw_VTwJM4Il5Hr2uJLv_ahsZTLomumJmabvXulgQFBK4hEd-FH4c72glbFfFLEkzRQz-ozCzySudbRG9UvhubPyQ\"}"; private static final String EMBEDDED_JWK_EXPECTED_JWS = "eyJraWQiOiJkZmM2YTlkZi05MTZjLTQwNmQtODRkZS1jZTViNDlkNTBhZDAiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp3ayI6eyJrdHkiOiJSU0EiLCJlIjoiQVFBQiIsImtpZCI6ImRmYzZhOWRmLTkxNmMtNDA2ZC04NGRlLWNlNWI0OWQ1MGFkMCIsIm4iOiJwMFUwTWRIRkxQb3ZYNWo5MW9ILWRjNTRvZUpESURhcHVQRE05Z1lIamhYMkJ3ajRmRmhxdmFBZklobi13N3ptLTZIWnNILVZ4UENuZ2w3R2tXeHgxRjdDb2JrZzhUT0Q0VXVzRkZvOHNyU0ZERXhXQ1E0TVJGRFJjTE45Ym1mWGVpUi1NdkdFMXRIWk5KQ09ueHN4MzItdWVGMFQyeG84ODAtMDczc2t1bThzUzl2aTdSdU5oYUNZX2xpSk5rcnpucVFDRWJOTFJfLVZfLUlRYUZHX29iRE5xRUhyb0tDM2x4ejM0czRDUHBVd2VuOElGSm04X3ZiY0ZpSV9qWnJ3X1ZUd0pNNElsNUhyMnVKTHZfYWhzWlRMb211bUptYWJ2WHVsZ1FGQks0aEVkLUZINGM3MmdsYkZmRkxFa3pSUXotb3pDenlTdWRiUkc5VXZodWJQeVEifX0.eyJpc3MiOiJodHRwOlwvXC9kZW1vLnNqb2VyZGxhbmdrZW1wZXIubmxcLyIsImlhdCI6MTU0NzcyOTY2MiwiZXhwIjoxNTQ3Nzk5OTk5LCJkYXRhIjp7Ik5DQyI6InRlc3QifX0.Fte7ISfZ15DGtYwql8Ej1rou0Kf5Lut3qpxUS2zcp5UsRapQTyU5nehvVZD5BKq_xKRkG0SEVlRbF6Z2FAsG7Al3NXKc257xKc1djt_toh7nsDZPWycfj91FrLVJW5dN06PNgDjkCVlcdM2x_awesc3bApLg7bmcEkxsMoPqUjDBLxo6h-AHEo_7F-0R7mOAC5cSUCsCosEnnwMG7ihC_bPkD9cGUwq5UEPjzVCToavIXXWjNRpHXSob9aGuKUlYao92VoYIuOH51YcyAspzXD3lDViG8ZxOPVTf3T7ZDUmfy161XDRyvmRxeUVSRSUzAt3-WdMjmP8YRylYCC36Ew";