예제 #1
0
        private PublicKey?ParseSecp256k1PublicKey(PublicKey publicKey)
        {
            byte[]? keyBytes = null;
            //todo: try to parse bech32 from publicKey.Value
            if (keyBytes == null)
            {
                try
                {
                    keyBytes = ByteArrayExtensions.ParseBase64(publicKey.Value);
                }
                catch
                {
                    // ignored
                }
            }

            if (keyBytes == null)
            {
                try
                {
                    keyBytes = ByteArrayExtensions.ParseBase64(publicKey.Value);
                }
                catch
                {
                    // ignored
                }
            }

            if (keyBytes == null)
            {
                return(null);
            }

            if (Context.Instance.TryCreatePubKey(keyBytes, out var compressed, out var ecPublicKey))
            {
                var compressedBytes = ecPublicKey !.ToBytes(true);
                return(new PublicKey(Secp256k1PublicKeyType, compressedBytes.ToBase64String()));
            }
            return(null);
        }
        public override object?ReadJson(JsonReader reader, Type objectType, object?existingValue, JsonSerializer serializer)
        {
            var deserializedString = serializer.Deserialize <string>(reader);

            return(ByteArrayExtensions.ParseBase64(deserializedString));
        }
예제 #3
0
 private static byte[]? ParseBase64(string str) => ByteArrayExtensions.ParseBase64(str);