From f95dc8ff627d35216c721ef521c5d3d487f131fb Mon Sep 17 00:00:00 2001 From: Hans-Peter Grahsl Date: Sun, 10 Dec 2023 16:33:00 +0100 Subject: [PATCH] Fix issue 13+16 (#17) * address bug in TypeSchemaMapper * address key identifier data type range issue * version bump to 0.4.2 patch release fixes #13 fixes #16 --- connect-transform-kryptonite/pom.xml | 6 ++-- .../kryptonite/TypeSchemaMapper.java | 2 +- .../CipherFieldSmtFunctionalTest.java | 12 ++++--- .../transforms/kryptonite/TestFixtures.java | 13 ++++--- funqy-http-kryptonite/pom.xml | 6 ++-- kryptonite/pom.xml | 4 +-- .../kryptonite/config/TinkKeyConfig.java | 12 +++---- .../config/TinkKeyConfigEncrypted.java | 34 ++++++------------- ksqldb-udfs-kryptonite/pom.xml | 6 ++-- pom.xml | 2 +- 10 files changed, 46 insertions(+), 51 deletions(-) diff --git a/connect-transform-kryptonite/pom.xml b/connect-transform-kryptonite/pom.xml index 13788ae..b80de72 100644 --- a/connect-transform-kryptonite/pom.xml +++ b/connect-transform-kryptonite/pom.xml @@ -22,15 +22,15 @@ com.github.hpgrahsl kryptonite-for-kafka - 0.4.1 + 0.4.2 ../pom.xml connect-transform-kryptonite - 0.4.1 + 0.4.2 jar - 0.4.1 + 0.4.2 3.3.1 2.14.1 1.2.11 diff --git a/connect-transform-kryptonite/src/main/java/com/github/hpgrahsl/kafka/connect/transforms/kryptonite/TypeSchemaMapper.java b/connect-transform-kryptonite/src/main/java/com/github/hpgrahsl/kafka/connect/transforms/kryptonite/TypeSchemaMapper.java index 5e8ad2c..98d1ade 100644 --- a/connect-transform-kryptonite/src/main/java/com/github/hpgrahsl/kafka/connect/transforms/kryptonite/TypeSchemaMapper.java +++ b/connect-transform-kryptonite/src/main/java/com/github/hpgrahsl/kafka/connect/transforms/kryptonite/TypeSchemaMapper.java @@ -46,7 +46,7 @@ public interface TypeSchemaMapper { Type.INT8, SchemaBuilder::int8, Type.INT16, SchemaBuilder::int16, Type.INT32, SchemaBuilder::int32, - Type.INT64, SchemaBuilder::int16, + Type.INT64, SchemaBuilder::int64, Type.FLOAT32, SchemaBuilder::float32, Type.FLOAT64, SchemaBuilder::float64, Type.STRING, SchemaBuilder::string, diff --git a/connect-transform-kryptonite/src/test/java/com/github/hpgrahsl/kafka/connect/transforms/kryptonite/CipherFieldSmtFunctionalTest.java b/connect-transform-kryptonite/src/test/java/com/github/hpgrahsl/kafka/connect/transforms/kryptonite/CipherFieldSmtFunctionalTest.java index f92eca7..7a899a8 100644 --- a/connect-transform-kryptonite/src/test/java/com/github/hpgrahsl/kafka/connect/transforms/kryptonite/CipherFieldSmtFunctionalTest.java +++ b/connect-transform-kryptonite/src/test/java/com/github/hpgrahsl/kafka/connect/transforms/kryptonite/CipherFieldSmtFunctionalTest.java @@ -113,7 +113,8 @@ void performSchemalessRecordTest(String cipherDataKeys,FieldMode fieldMode, Ciph "[" + " {\"name\":\"id\",\"keyId\":\""+keyId1+"\"}," + " {\"name\":\"myString\",\"keyId\":\""+keyId2+"\"}," - + " {\"name\":\"myInt\"}," + + " {\"name\":\"myInt32\"}," + + " {\"name\":\"myInt64\"}," + " {\"name\":\"myBoolean\",\"keyId\":\""+keyId2+"\"}," + " {\"name\":\"mySubDoc1\",\"keyId\":\""+keyId1+"\"}," + " {\"name\":\"myArray1\"}," @@ -167,7 +168,8 @@ void performSchemalessRecordTest(String cipherDataKeys,FieldMode fieldMode, Ciph "[" + " {\"name\":\"id\"}," + " {\"name\":\"myString\"}," - + " {\"name\":\"myInt\"}," + + " {\"name\":\"myInt32\"}," + + " {\"name\":\"myInt64\"}," + " {\"name\":\"myBoolean\"}," + " {\"name\":\"mySubDoc1\"}," + " {\"name\":\"myArray1\"}," @@ -202,7 +204,8 @@ void performSchemafulRecordTest(String cipherDataKeys,FieldMode fieldMode, Ciphe "[" + " {\"name\":\"id\"}," + " {\"name\":\"myString\",\"keyId\":\""+keyId1+"\"}," - + " {\"name\":\"myInt\",\"keyId\":\""+keyId2+"\"}," + + " {\"name\":\"myInt32\",\"keyId\":\""+keyId2+"\"}," + + " {\"name\":\"myInt64\",\"keyId\":\""+keyId2+"\"}," + " {\"name\":\"myBoolean\"}," + " {\"name\":\"mySubDoc1\",\"keyId\":\""+keyId1+"\"}," + " {\"name\":\"mySubDoc1.myString\",\"keyId\":\""+keyId1+"\"}," @@ -258,7 +261,8 @@ void performSchemafulRecordTest(String cipherDataKeys,FieldMode fieldMode, Ciphe "[" + " {\"name\":\"id\",\"schema\": {\"type\": \"STRING\"}}," + " {\"name\":\"myString\",\"schema\": {\"type\": \"STRING\"}}," - + " {\"name\":\"myInt\",\"schema\": {\"type\": \"INT32\"}}," + + " {\"name\":\"myInt32\",\"schema\": {\"type\": \"INT32\"}}," + + " {\"name\":\"myInt64\",\"schema\": {\"type\": \"INT64\"}}," + " {\"name\":\"myBoolean\",\"schema\": {\"type\": \"BOOLEAN\"}}," + " {\"name\":\"mySubDoc1\",\"schema\": { \"type\": \"STRUCT\",\"fields\": [ { \"name\": \"myString\", \"schema\": { \"type\": \"STRING\"}}]}}," + " {\"name\":\"mySubDoc1.myString\",\"schema\": {\"type\": \"STRING\"}}," diff --git a/connect-transform-kryptonite/src/test/java/com/github/hpgrahsl/kafka/connect/transforms/kryptonite/TestFixtures.java b/connect-transform-kryptonite/src/test/java/com/github/hpgrahsl/kafka/connect/transforms/kryptonite/TestFixtures.java index caa9bab..56832ff 100644 --- a/connect-transform-kryptonite/src/test/java/com/github/hpgrahsl/kafka/connect/transforms/kryptonite/TestFixtures.java +++ b/connect-transform-kryptonite/src/test/java/com/github/hpgrahsl/kafka/connect/transforms/kryptonite/TestFixtures.java @@ -76,14 +76,14 @@ public class TestFixtures { + "}," + "{\"identifier\":\"key8\"," + "\"material\":{" - + "\"primaryKeyId\":1000000004," + + "\"primaryKeyId\":3015563227," + "\"key\":[" + "{\"keyData\":" + "{\"typeUrl\":\"type.googleapis.com/google.crypto.tink.AesSivKey\"," + "\"value\":\"EkBWT3ZL7DmAN91erW3xAzMFDWMaQx34Su3VlaMiTWzjVDbKsH3IRr2HQFnaMvvVz2RH/+eYXn3zvAzWJbReCto/\"," + "\"keyMaterialType\":\"SYMMETRIC\"}," + "\"status\":\"ENABLED\"," - + "\"keyId\":1000000004," + + "\"keyId\":3015563227," + "\"outputPrefixType\":\"TINK\"" + "}" + "]" @@ -170,7 +170,8 @@ public class TestFixtures { TEST_OBJ_SCHEMA_1 = SchemaBuilder.struct() .field("id", Schema.STRING_SCHEMA) .field("myString", Schema.STRING_SCHEMA) - .field("myInt",Schema.INT32_SCHEMA) + .field("myInt32",Schema.INT32_SCHEMA) + .field("myInt64",Schema.INT64_SCHEMA) .field("myBoolean", Schema.BOOLEAN_SCHEMA) .field("mySubDoc1", SchemaBuilder.struct().field("myString",Schema.STRING_SCHEMA).build()) .field("myArray1", SchemaBuilder.array(Schema.STRING_SCHEMA).build()) @@ -181,7 +182,8 @@ public class TestFixtures { TEST_OBJ_STRUCT_1 = new Struct(TEST_OBJ_SCHEMA_1) .put("id","1234567890") .put("myString","some foo bla text") - .put("myInt",42) + .put("myInt32",42) + .put("myInt64",4294967294L) .put("myBoolean",true) .put("mySubDoc1",new Struct(TEST_OBJ_SCHEMA_1.field("mySubDoc1").schema()) .put("myString","hello json") @@ -193,7 +195,8 @@ public class TestFixtures { TEST_OBJ_MAP_1 = new LinkedHashMap<>(); TEST_OBJ_MAP_1.put("id","1234567890"); TEST_OBJ_MAP_1.put("myString","some foo bla text"); - TEST_OBJ_MAP_1.put("myInt",42); + TEST_OBJ_MAP_1.put("myInt32",42); + TEST_OBJ_MAP_1.put("myInt64",4294967294L); TEST_OBJ_MAP_1.put("myBoolean",true); TEST_OBJ_MAP_1.put("mySubDoc1",Map.of("myString","hello json")); TEST_OBJ_MAP_1.put("myArray1",List.of("str_1","str_2","...","str_N")); diff --git a/funqy-http-kryptonite/pom.xml b/funqy-http-kryptonite/pom.xml index d31641e..0d3a244 100644 --- a/funqy-http-kryptonite/pom.xml +++ b/funqy-http-kryptonite/pom.xml @@ -5,11 +5,11 @@ com.github.hpgrahsl kryptonite-for-kafka - 0.4.1 + 0.4.2 com.github.hpgrahsl funqy-http-kryptonite - 0.1.1 + 0.1.2 funqy-http-kryptonite 3.10.1 @@ -17,7 +17,7 @@ 3.3.1 0.45 5.4.0 - 0.4.1 + 0.4.2 11 UTF-8 UTF-8 diff --git a/kryptonite/pom.xml b/kryptonite/pom.xml index c1ec1e0..2cdb2d2 100644 --- a/kryptonite/pom.xml +++ b/kryptonite/pom.xml @@ -22,11 +22,11 @@ com.github.hpgrahsl kryptonite-for-kafka - 0.4.1 + 0.4.2 ../pom.xml kryptonite - 0.4.1 + 0.4.2 jar diff --git a/kryptonite/src/main/java/com/github/hpgrahsl/kryptonite/config/TinkKeyConfig.java b/kryptonite/src/main/java/com/github/hpgrahsl/kryptonite/config/TinkKeyConfig.java index a8ea9c4..741177c 100644 --- a/kryptonite/src/main/java/com/github/hpgrahsl/kryptonite/config/TinkKeyConfig.java +++ b/kryptonite/src/main/java/com/github/hpgrahsl/kryptonite/config/TinkKeyConfig.java @@ -28,20 +28,20 @@ public class TinkKeyConfig { @JsonIgnore public static final int RAW_KEY_BYTES_OFFSET = 2; - private int primaryKeyId; + private long primaryKeyId; private Set key; public TinkKeyConfig() { } - public TinkKeyConfig(int primaryKeyId, + public TinkKeyConfig(long primaryKeyId, Set key) { this.primaryKeyId = primaryKeyId; this.key = key; } - public int getPrimaryKeyId() { + public long getPrimaryKeyId() { return primaryKeyId; } @@ -95,13 +95,13 @@ public enum Status { private KeyData keyData; private Status status; - private int keyId; + private long keyId; private String outputPrefixType; public KeyConfig() { } - public KeyConfig(KeyData keyData, Status status, int keyId, String outputPrefixType) { + public KeyConfig(KeyData keyData, Status status, long keyId, String outputPrefixType) { this.keyData = keyData; this.status = status; this.keyId = keyId; @@ -116,7 +116,7 @@ public Status getStatus() { return status; } - public int getKeyId() { + public long getKeyId() { return keyId; } diff --git a/kryptonite/src/main/java/com/github/hpgrahsl/kryptonite/config/TinkKeyConfigEncrypted.java b/kryptonite/src/main/java/com/github/hpgrahsl/kryptonite/config/TinkKeyConfigEncrypted.java index e72929c..5091dc1 100644 --- a/kryptonite/src/main/java/com/github/hpgrahsl/kryptonite/config/TinkKeyConfigEncrypted.java +++ b/kryptonite/src/main/java/com/github/hpgrahsl/kryptonite/config/TinkKeyConfigEncrypted.java @@ -17,6 +17,8 @@ package com.github.hpgrahsl.kryptonite.config; import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.Objects; import java.util.Set; public class TinkKeyConfigEncrypted { @@ -41,11 +43,7 @@ public KeysetInfo getKeysetInfo() { @Override public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((encryptedKeyset == null) ? 0 : encryptedKeyset.hashCode()); - result = prime * result + ((keysetInfo == null) ? 0 : keysetInfo.hashCode()); - return result; + return Objects.hash(encryptedKeyset, keysetInfo); } @Override @@ -90,17 +88,17 @@ public byte[] getKeyBytesForEnabledPkId() { public static class KeysetInfo { - private int primaryKeyId; + private long primaryKeyId; private Set keyInfo; public KeysetInfo() {} - public KeysetInfo(int primaryKeyId, Set keyInfo) { + public KeysetInfo(long primaryKeyId, Set keyInfo) { this.primaryKeyId = primaryKeyId; this.keyInfo = keyInfo; } - public int getPrimaryKeyId() { + public long getPrimaryKeyId() { return primaryKeyId; } @@ -110,11 +108,7 @@ public Set getKeyInfo() { @Override public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + primaryKeyId; - result = prime * result + ((keyInfo == null) ? 0 : keyInfo.hashCode()); - return result; + return Objects.hash(primaryKeyId, keyInfo); } @Override @@ -152,12 +146,12 @@ public enum Status { private String typeUrl; private Status status; - private int keyId; + private long keyId; private String outputPrefixType; public KeyInfo() {} - public KeyInfo(String typeUrl, Status status, int keyId, String outputPrefixType) { + public KeyInfo(String typeUrl, Status status, long keyId, String outputPrefixType) { this.typeUrl = typeUrl; this.status = status; this.keyId = keyId; @@ -172,7 +166,7 @@ public Status getStatus() { return status; } - public int getKeyId() { + public long getKeyId() { return keyId; } @@ -182,13 +176,7 @@ public String getOutputPrefixType() { @Override public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((typeUrl == null) ? 0 : typeUrl.hashCode()); - result = prime * result + ((status == null) ? 0 : status.hashCode()); - result = prime * result + keyId; - result = prime * result + ((outputPrefixType == null) ? 0 : outputPrefixType.hashCode()); - return result; + return Objects.hash(typeUrl, status, keyId, outputPrefixType); } @Override diff --git a/ksqldb-udfs-kryptonite/pom.xml b/ksqldb-udfs-kryptonite/pom.xml index 349b7bd..86413fb 100644 --- a/ksqldb-udfs-kryptonite/pom.xml +++ b/ksqldb-udfs-kryptonite/pom.xml @@ -23,15 +23,15 @@ com.github.hpgrahsl kryptonite-for-kafka - 0.4.1 + 0.4.2 ../pom.xml ksqldb-udfs-kryptonite - 0.2.1 + 0.2.2 jar - 0.4.1 + 0.4.2 7.3.0 2.14.1 1.2.11 diff --git a/pom.xml b/pom.xml index 23a983b..7be64f7 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ 4.0.0 com.github.hpgrahsl kryptonite-for-kafka - 0.4.1 + 0.4.2 pom