public void LengthEdgeCaseOperationTest()
        {
            var keys = PostchainUtil.MakeKeyPair();
            var gtx  = new Gtx("abcdef1234567890abcdef1234567890");

            gtx.AddOperationToGtx("test", new object[] { "teststring", 123, new byte[] { 0xaf, 0xfe }, new string[] { "hello", "world" } });
            gtx.AddSignerToGtx(keys["pubKey"]);
            gtx.Sign(keys["privKey"], keys["pubKey"]);

            var encode = gtx.Encode();

            if (PRINT_CONTENT)
            {
                Console.WriteLine("LengthEdgeCaseOperationTest: " + PostchainUtil.ByteArrayToString(encode).ToUpper());
            }
            var decoded = Gtx.Decode(encode);

            Assert.Equal(gtx.BlockchainID, decoded.BlockchainID);
            Assert.Equal(gtx.Signatures, decoded.Signatures);
            Assert.Equal(gtx.Signers, decoded.Signers);

            var gtxOpJson = JsonConvert.SerializeObject(gtx.Operations);
            var decOpJson = JsonConvert.SerializeObject(decoded.Operations);

            Assert.Equal(gtxOpJson, decOpJson);
        }
        public void MultiSigOperationTest()
        {
            var keys1 = PostchainUtil.MakeKeyPair();
            var keys2 = PostchainUtil.MakeKeyPair();
            var gtx   = new Gtx("abcdef1234567890abcdef1234567890");

            gtx.AddOperationToGtx("test", new object[] { "teststring" });

            gtx.AddSignerToGtx(keys1["pubKey"]);
            gtx.AddSignerToGtx(keys2["pubKey"]);

            gtx.Sign(keys1["privKey"], keys1["pubKey"]);
            gtx.Sign(keys2["privKey"], keys2["pubKey"]);

            var encode = gtx.Encode();

            if (PRINT_CONTENT)
            {
                Console.WriteLine("MultiSigOperationTest: " + PostchainUtil.ByteArrayToString(encode).ToUpper());
            }
            var decoded = Gtx.Decode(encode);

            Assert.Equal(gtx.BlockchainID, decoded.BlockchainID);
            Assert.Equal(gtx.Signatures, decoded.Signatures);
            Assert.Equal(gtx.Signers, decoded.Signers);

            var gtxOpJson = JsonConvert.SerializeObject(gtx.Operations);
            var decOpJson = JsonConvert.SerializeObject(decoded.Operations);

            Assert.Equal(gtxOpJson, decOpJson);
        }
        public void SSOCodeTest()
        {
            var encode  = PostchainUtil.HexStringToBuffer("A582030A30820306A58202B6308202B2A12204201A3A5B4C919798B52292094185B37E71898CC245FA9F0AC51A33B473150FE889A582023C30820238A581D63081D3A21A0C186674332E6465765F72656769737465725F6163636F756E74A581B43081B1A581AE3081ABA2030C0153A5483046A2440C42303364663064333232333864323130303031663164656637373464393031303132343565343235633839353366623435373061633630313961303665373163633732A5563054A50C300AA2030C0141A2030C0154A2440C42303364663064333232333864323130303031663164656637373464393031303132343565343235633839353366623435373061633630313961303665373163633732A0020500A582015B30820157A2190C176674332E6164645F617574685F64657363726970746F72A582013830820134A2420C4036376331646431316332393630613836663261663933633939626538326333353530303734353839636234366531383564346538363030316439376464646466A2420C4036376331646431316332393630613836663261663933633939626538326333353530303734353839636234366531383564346538363030316439376464646466A581A93081A6A2030C0153A5483046A2440C42303332666462616430643537383439343436353633346661646339633534333066333865663566623231333634353731643637313464363036393336633530643434A551304FA5073005A2030C0154A2440C42303332666462616430643537383439343436353633346661646339633534333066333865663566623231333634353731643637313464363036393336633530643434A0020500A54C304AA123042103DF0D32238D210001F1DEF774D90101245E425C8953FB4570AC6019A06E71CC72A1230421032FDBAD0D578494465634FADC9C5430F38EF5FB21364571D6714D606936C50D44A54A3048A14204406F54F8D0B38A90414C1DD4C84D2D2B1553822F8F6D026058BD601221367958E379416A6E771944DA2B6DCFEE05A0A4FC875A90BA04F0C59637C7BEC9A646B890A1020400");
            var decoded = Gtx.Decode(encode);

            if (PRINT_SSO_TEST)
            {
                Console.Write("BRID: ");
                Console.WriteLine(decoded.BlockchainID);

                Console.WriteLine("\nSignatures: ");
                foreach (var sig in decoded.Signatures)
                {
                    Console.WriteLine(PostchainUtil.ByteArrayToString(sig));
                }


                Console.WriteLine("Signers: ");
                foreach (var signer in decoded.Signers)
                {
                    Console.WriteLine(PostchainUtil.ByteArrayToString(signer));
                }

                Console.WriteLine("\nOperations: ");
                foreach (var op in decoded.Operations)
                {
                    Console.WriteLine(op);
                }
            }
        }
        public async void StringTest()
        {
            var keyPair = PostchainUtil.MakeKeyPair();
            var privKey = keyPair["privKey"];
            var pubKey  = keyPair["pubKey"];

            var gtx = await InitTest();

            var req = gtx.NewTransaction(new byte[][] { pubKey });

            req.AddOperation("send_string", "Swedish: Åå Ää Öö");
            req.AddOperation("send_string", "Danish/Norway: Ææ Øø Åå");
            req.AddOperation("send_string", "German/Finish: Ää Öö Üü");
            req.AddOperation("send_string", "Greek lower: αβγδϵζηθικλμνξοπρστυϕχψω");
            req.AddOperation("send_string", "Greek upper: ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ");
            req.AddOperation("send_string", "Russian: АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя");


            req.AddOperation("nop", new Random().Next());

            req.Sign(privKey, pubKey);

            var result = await req.PostAndWaitConfirmation();

            if (result.Error)
            {
                Console.WriteLine("StringTest error: " + result.ErrorMessage);
            }
        }
        public void SequenceTest()
        {
            var writer = new AsnWriter();

            writer.PushSequence();

            writer.PushSequence();
            writer.WriteOctetString(PostchainUtil.HexStringToBuffer("E2BE5C617CE50AFD0882A753C6FDA9C4D925EEDAC50DB97E33F457826A856DE0"));
            writer.PopSequence();

            writer.PushSequence();
            writer.PushSequence();
            writer.WriteUTF8String("test_op1");
            writer.WriteUTF8String("arg1");
            writer.WriteInteger(42);
            writer.PopSequence();
            writer.PushSequence();
            writer.WriteUTF8String("test_op2");
            writer.PopSequence();
            writer.PopSequence();

            writer.PopSequence();

            var content = PostchainUtil.ByteArrayToString(writer.Encode()).ToUpper();

            var expected = "304730220420E2BE5C617CE50AFD0882A753C6FDA9C4D925EEDAC50DB97E33F457826A856DE0302130130C08746573745F6F70310C046172673102012A300A0C08746573745F6F7032";

            Assert.Equal(expected, content);
        }
Ejemplo n.º 6
0
        public void ArrayInArrayTest()
        {
            var val = new GTXValue();

            val.Choice = GTXValueChoice.Array;
            val.Array  = new System.Collections.Generic.List <GTXValue>();

            var innerVal = new GTXValue();

            innerVal.Choice = GTXValueChoice.Array;
            innerVal.Array  = new System.Collections.Generic.List <GTXValue>();

            var innerInnerVal = new GTXValue();

            innerInnerVal.Choice  = GTXValueChoice.Integer;
            innerInnerVal.Integer = Int64.MinValue;
            innerVal.Array.Add(innerInnerVal);

            val.Array.Add(innerVal);

            if (PRINT_CONTENT)
            {
                var str = PostchainUtil.ByteArrayToString(val.Encode());
                System.Console.WriteLine("ArrayInArrayTest: " + str.ToUpper());
            }

            var decoded = GTXValue.Decode(new AsnReader(val.Encode()));

            Assert.Equal(val.Choice, decoded.Choice);
            Assert.Equal(val.Array, decoded.Array);
            Assert.Equal(val, decoded);
        }
        public void SSOAddAuthOperationTest()
        {
            var keys = PostchainUtil.MakeKeyPair();
            var gtx  = new Gtx("abcdef1234567890abcdef1234567890");

            gtx.AddOperationToGtx("ft3.add_auth_descriptor", new object[] {
                PostchainUtil.HexStringToBuffer("abcdef1234567890abcdef1234567890"),
                PostchainUtil.HexStringToBuffer("abcdef1234567890abcdef1234567890"),
                new object[] {
                    PostchainUtil.HexStringToBuffer("abcdef1234567890abcdef1234567890"),
                    keys["pubKey"],
                    null,
                    PostchainUtil.HexStringToBuffer("abcdef1234567890abcdef1234567890")
                }
            });
            gtx.AddSignerToGtx(keys["pubKey"]);
            gtx.Sign(keys["privKey"], keys["pubKey"]);

            var encode = gtx.Encode();

            if (PRINT_CONTENT)
            {
                Console.WriteLine("SSOAddAuthOperationTest: " + PostchainUtil.ByteArrayToString(encode).ToUpper());
            }
            var decoded = Gtx.Decode(encode);

            Assert.Equal(gtx.BlockchainID, decoded.BlockchainID);
            Assert.Equal(gtx.Signatures, decoded.Signatures);
            Assert.Equal(gtx.Signers, decoded.Signers);

            var gtxOpJson = JsonConvert.SerializeObject(gtx.Operations);
            var decOpJson = JsonConvert.SerializeObject(decoded.Operations);

            Assert.Equal(gtxOpJson, decOpJson);
        }
        public void NegativeIntegerTest()
        {
            var writer = new AsnWriter();

            writer.WriteInteger(-256);

            var content = PostchainUtil.ByteArrayToString(writer.Encode()).ToUpper();

            var expected = "0202FF00";

            Assert.Equal(expected, content);
        }
Ejemplo n.º 9
0
        public void CheckKeyPairLength()
        {
            const int expPrivKeyLength = 32;
            const int expPubKeyLength  = 33;

            var user    = PostchainUtil.MakeKeyPair();
            var privKey = user["privKey"];
            var pubKey  = user["pubKey"];

            Assert.Equal(privKey.Length, expPrivKeyLength);
            Assert.Equal(pubKey.Length, expPubKeyLength);
        }
        public void UTF8StringTest()
        {
            var writer = new AsnWriter();

            writer.WriteUTF8String("Hello World!");

            var content = PostchainUtil.ByteArrayToString(writer.Encode()).ToUpper();

            var expected = "0C0C48656C6C6F20576F726C6421";

            Assert.Equal(expected, content);
        }
        public void EmptyUTF8StringTest()
        {
            var writer = new AsnWriter();

            writer.WriteUTF8String("");

            var content = PostchainUtil.ByteArrayToString(writer.Encode()).ToUpper();

            var expected = "0C00";

            Assert.Equal(expected, content);
        }
        public void EmptyOctetStringTest()
        {
            var writer = new AsnWriter();

            writer.WriteOctetString(new byte[] { });

            var content = PostchainUtil.ByteArrayToString(writer.Encode()).ToUpper();

            var expected = "0400";

            Assert.Equal(expected, content);
        }
        public void IntegerTest()
        {
            var writer = new AsnWriter();

            writer.WriteInteger(42424242);

            var content = PostchainUtil.ByteArrayToString(writer.Encode()).ToUpper();

            var expected = "0204028757B2";

            Assert.Equal(expected, content);
        }
        public void NullTest()
        {
            var writer = new AsnWriter();

            writer.WriteNull();

            var content = PostchainUtil.ByteArrayToString(writer.Encode()).ToUpper();

            var expected = "0500";

            Assert.Equal(expected, content);
        }
        public void BRIDOctetStringTest()
        {
            var writer = new AsnWriter();

            writer.WriteOctetString(PostchainUtil.HexStringToBuffer("E2BE5C617CE50AFD0882A753C6FDA9C4D925EEDAC50DB97E33F457826A856DE0"));

            var content = PostchainUtil.ByteArrayToString(writer.Encode()).ToUpper();

            var expected = "0420E2BE5C617CE50AFD0882A753C6FDA9C4D925EEDAC50DB97E33F457826A856DE0";

            Assert.Equal(expected, content);
        }
        public void LimitIntegerTest()
        {
            var writer = new AsnWriter();

            writer.WriteInteger(Int64.MinValue);
            writer.WriteInteger(Int64.MaxValue);

            var content = PostchainUtil.ByteArrayToString(writer.Encode()).ToUpper();

            var expected = "0208800000000000000002087FFFFFFFFFFFFFFF";

            Assert.Equal(expected, content);
        }
        public async void IntegerTest()
        {
            var keyPair = PostchainUtil.MakeKeyPair();
            var privKey = keyPair["privKey"];
            var pubKey  = keyPair["pubKey"];

            var gtx = await InitTest();

            var req = gtx.NewTransaction(new byte[][] { pubKey });

            req.AddOperation("send_timestamp", -127);
            req.AddOperation("send_timestamp", -128);
            req.AddOperation("send_timestamp", -129);
            req.AddOperation("send_timestamp", -130);
            req.AddOperation("send_timestamp", -255);
            req.AddOperation("send_timestamp", -256);
            req.AddOperation("send_timestamp", System.Byte.MinValue);
            req.AddOperation("send_timestamp", System.Byte.MaxValue);

            req.AddOperation("send_timestamp", System.SByte.MinValue);
            req.AddOperation("send_timestamp", System.SByte.MaxValue);

            req.AddOperation("send_timestamp", System.UInt16.MinValue);
            req.AddOperation("send_timestamp", System.UInt16.MaxValue);

            req.AddOperation("send_timestamp", System.UInt32.MinValue);
            req.AddOperation("send_timestamp", System.UInt32.MaxValue);

            req.AddOperation("send_timestamp", System.Int16.MinValue);
            req.AddOperation("send_timestamp", System.Int16.MaxValue);

            req.AddOperation("send_timestamp", System.Int32.MinValue);
            req.AddOperation("send_timestamp", System.Int32.MaxValue);

            req.AddOperation("send_timestamp", System.Int64.MinValue);
            req.AddOperation("send_timestamp", System.Int64.MaxValue);

            req.AddOperation("nop", new Random().Next());

            req.Sign(privKey, pubKey);

            var result = await req.PostAndWaitConfirmation();

            if (result.Error)
            {
                Console.WriteLine("IntegerTest error: " + result.ErrorMessage);
            }
        }
Ejemplo n.º 18
0
        public void FullArrayTest()
        {
            var val = new GTXValue();

            val.Choice = GTXValueChoice.Array;
            val.Array  = new System.Collections.Generic.List <GTXValue>();

            var innerVal1 = new GTXValue();

            innerVal1.Choice = GTXValueChoice.String;
            innerVal1.String = "test";
            val.Array.Add(innerVal1);

            var innerVal2 = new GTXValue();

            innerVal2.Choice = GTXValueChoice.Null;
            val.Array.Add(innerVal2);

            var innerVal3 = new GTXValue();

            innerVal3.Choice  = GTXValueChoice.Integer;
            innerVal3.Integer = Int64.MaxValue;
            val.Array.Add(innerVal3);

            var innerVal4 = new GTXValue();

            innerVal4.Choice    = GTXValueChoice.ByteArray;
            innerVal4.ByteArray = new byte[] { 0xde, 0xad, 0xbe, 0xef };
            val.Array.Add(innerVal4);

            var innerVal5 = new GTXValue();

            innerVal5.Choice = GTXValueChoice.Array;
            innerVal5.Array  = new System.Collections.Generic.List <GTXValue>();
            val.Array.Add(innerVal5);

            if (PRINT_CONTENT)
            {
                var str = PostchainUtil.ByteArrayToString(val.Encode());
                System.Console.WriteLine("FullArrayTest: " + str.ToUpper());
            }

            var decoded = GTXValue.Decode(new AsnReader(val.Encode()));

            Assert.Equal(val.Choice, decoded.Choice);
            Assert.Equal(val.Array, decoded.Array);
            Assert.Equal(val, decoded);
        }
        public void SepcialUTF8StringTest()
        {
            var writer = new AsnWriter();

            writer.WriteUTF8String("Swedish: Åå Ää Öö");
            writer.WriteUTF8String("Danish/Norway: Ææ Øø Åå");
            writer.WriteUTF8String("German/Finish: Ää Öö Üü");
            writer.WriteUTF8String("Greek lower: αβγδϵζηθικλμνξοπρστυϕχψω");
            writer.WriteUTF8String("Greek upper: ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ");
            writer.WriteUTF8String("Russian: АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя");

            var content = PostchainUtil.ByteArrayToString(writer.Encode()).ToUpper();

            var expected = "0C17537765646973683A20C385C3A520C384C3A420C396C3B60C1D44616E6973682F4E6F727761793A20C386C3A620C398C3B820C385C3A50C1D4765726D616E2F46696E6973683A20C384C3A420C396C3B620C39CC3BC0C3D477265656B206C6F7765723A20CEB1CEB2CEB3CEB4CFB5CEB6CEB7CEB8CEB9CEBACEBBCEBCCEBDCEBECEBFCF80CF81CF83CF84CF85CF95CF87CF88CF890C3D477265656B2075707065723A20CE91CE92CE93CE94CE95CE96CE97CE98CE99CE9ACE9BCE9CCE9DCE9ECE9FCEA0CEA1CEA3CEA4CEA5CEA6CEA7CEA8CEA90C81895275737369616E3A20D090D0B0D091D0B1D092D0B2D093D0B3D094D0B4D095D0B5D081D191D096D0B6D097D0B7D098D0B8D099D0B9D09AD0BAD09BD0BBD09CD0BCD09DD0BDD09ED0BED09FD0BFD0A1D181D0A2D182D0A3D183D0A4D184D0A5D185D0A6D186D0A7D187D0A8D188D0A9D189D0AAD18AD0ABD18BD0ACD18CD0ADD18DD0AED18ED0AFD18F";

            Assert.Equal(expected, content);
        }
Ejemplo n.º 20
0
        public void SimpleNullTest()
        {
            var val = new GTXValue();

            val.Choice = GTXValueChoice.Null;

            if (PRINT_CONTENT)
            {
                var str = PostchainUtil.ByteArrayToString(val.Encode());
                System.Console.WriteLine("SimpleNullTest: " + str.ToUpper());
            }

            var decoded = GTXValue.Decode(new AsnReader(val.Encode()));

            Assert.Equal(val.Choice, decoded.Choice);
            Assert.Equal(val, decoded);
        }
        public async void QueryTest()
        {
            var keyPair = PostchainUtil.MakeKeyPair();
            var privKey = keyPair["privKey"];
            var pubKey  = keyPair["pubKey"];

            var gtx = await InitTest();

            var ret = await gtx.Query <long>("get_timestamp");

            if (ret.control.Error)
            {
                Console.WriteLine("QueryTest error: " + ret.control.ErrorMessage);
            }
            else
            {
                Console.WriteLine("QueryTest success: " + ret.content);
            }
        }
Ejemplo n.º 22
0
        public void LongStringTest()
        {
            var val = new GTXValue();

            val.Choice = GTXValueChoice.String;
            val.String = new string('x', 2048);

            if (PRINT_CONTENT)
            {
                var str = PostchainUtil.ByteArrayToString(val.Encode());
                System.Console.WriteLine("LongStringTest: " + str.ToUpper());
            }

            var decoded = GTXValue.Decode(new AsnReader(val.Encode()));

            Assert.Equal(val.Choice, decoded.Choice);
            Assert.Equal(val.String, decoded.String);
            Assert.Equal(val, decoded);
        }
Ejemplo n.º 23
0
        public void MinIntegerTest()
        {
            var val = new GTXValue();

            val.Choice  = GTXValueChoice.Integer;
            val.Integer = Int64.MinValue;

            if (PRINT_CONTENT)
            {
                var str = PostchainUtil.ByteArrayToString(val.Encode());
                System.Console.WriteLine("MinIntegerTest: " + str.ToUpper());
            }

            var decoded = GTXValue.Decode(new AsnReader(val.Encode()));

            Assert.Equal(val.Choice, decoded.Choice);
            Assert.Equal(val.Integer, decoded.Integer);
            Assert.Equal(val, decoded);
        }
Ejemplo n.º 24
0
        public void BufferToSignTest()
        {
            var keys1 = PostchainUtil.MakeKeyPair();
            var keys2 = PostchainUtil.MakeKeyPair();
            var gtx   = new Gtx("abcdef1234567890abcdef1234567890");

            gtx.AddOperationToGtx("test", new object[] { "teststring" });

            gtx.AddSignerToGtx(keys1["pubKey"]);
            gtx.AddSignerToGtx(keys2["pubKey"]);

            gtx.Sign(keys1["privKey"], keys1["pubKey"]);
            gtx.Sign(keys2["privKey"], keys2["pubKey"]);

            var beforeSigs = gtx.Signatures;

            gtx.GetBufferToSign();
            var afterSigs = gtx.Signatures;

            Assert.Equal(beforeSigs, afterSigs);
        }
        public async void StringErrorTest()
        {
            var keyPair = PostchainUtil.MakeKeyPair();
            var privKey = keyPair["privKey"];
            var pubKey  = keyPair["pubKey"];

            var gtx = await InitTest();

            var req = gtx.NewTransaction(new byte[][] { pubKey });

            req.AddOperation("send_string", "");
            req.AddOperation("nop", new Random().Next());

            req.Sign(privKey, pubKey);

            var result = await req.PostAndWaitConfirmation();

            if (result.Error)
            {
                Console.WriteLine("StringErrorTest error: " + result.ErrorMessage);
            }
        }
        public async void DemoTest()
        {
            var keyPair = PostchainUtil.MakeKeyPair();
            var privKey = keyPair["privKey"];
            var pubKey  = keyPair["pubKey"];

            // The lower-level client that can be used for any
            // postchain client messages. It only handles binary data.
            var rest = new RESTClient("http://localhost:7740/");

            // Instead of updateing the BRID each time the Rell code is compiled,
            // the blockchain can now be accessed throug its chain_id from the
            // run.xml file (<chain name="MyCahin" iid="0">)
            var initResult = await rest.InitializeBRIDFromChainID(0);

            if (initResult.Error)
            {
                Console.WriteLine("DemoTest: Cannot connect to blockchain!");
                return;
            }

            // Create an instance of the higher-level gtx client. It will
            // use the rest client instance
            var gtx = new GTXClient(rest);

            // Start a new request. A request instance is created.
            // The public keys are the keys that must sign the request
            // before sending it to postchain. Can be empty.
            var req = gtx.NewTransaction(new byte[][] { pubKey });

            req.AddOperation("insert_city", "Hamburg", 22222);
            req.AddOperation("create_user", pubKey, "Peter");

            // Since transactions with the same operations will result in the same txid,
            // transactions can contain "nop" operations. This is needed to satisfy
            // the unique txid constraint of the postchain.
            req.AddOperation("nop", new Random().Next());

            req.Sign(privKey, pubKey);

            var result = await req.PostAndWaitConfirmation();

            if (result.Error)
            {
                Console.WriteLine("DemoTest Operation failed: " + result.ErrorMessage);
            }

            // The expected return type has to be passed to the query function. This
            // also works with complex types (i.e. your own struct as well as lists).
            // The returned tuple will consist of (content, control). The content is of
            // the type you pass the function. The control struct contains an error flag
            // as well as the error message.
            var queryResult = await gtx.Query <int>("get_city", ("name", "Hamburg"));

            if (queryResult.control.Error)
            {
                Console.WriteLine("DemoTest city query error: " + queryResult.control.ErrorMessage);
            }
            else
            {
                int plz = queryResult.content;
                Console.WriteLine("DemoTest ZIP Query: " + plz);
            }

            // Same as above with the exception that byte arrays will be returned as strings.
            // To convert it to a byte array, use the util function Util.HexStringToBuffer()
            // in the Chromia.Postchain.Client.GTX namespace.
            var queryResult2 = await gtx.Query <string>("get_user_pubkey", ("name", "Peter"));

            if (queryResult2.control.Error)
            {
                Console.WriteLine("DemoTest userquery error: " + queryResult2.control.ErrorMessage);
            }
            else
            {
                string queryPubkeyString = queryResult2.content;
                byte[] queryPubkey       = PostchainUtil.HexStringToBuffer(queryPubkeyString);
                Console.WriteLine("DemoTest User Query: " + PostchainUtil.ByteArrayToString(queryPubkey));
            }
        }