Esempio n. 1
0
        private static PublicKey FromRawDataStream(MemoryStream stream)
        {
            using (var reader = new NearBinaryReader(stream, true))
            {
                KeyType keyType;
                switch ((int)reader.ReadByte())
                {
                case 0:
                {
                    keyType = KeyType.Ed25519;
                    break;
                }

                default:
                {
                    throw new NotSupportedException("Invalid key type in raw bytes for public key");
                }
                }

                var data = new ByteArray32
                {
                    Buffer = reader.ReadBytes(32)
                };

                return(new PublicKey(keyType, data));
            }
        }
Esempio n. 2
0
        public KeyPairEd25519(string secretKey)
        {
            var publicKeyFromSeed   = Ed25519.Ed25519.PublicKeyFromSeed(Base58.Decode(secretKey));
            var publicKeyFromSeed32 = new ByteArray32 {
                Buffer = publicKeyFromSeed
            };

            _publicKey         = new PublicKey(KeyType.Ed25519, publicKeyFromSeed32);
            _secretKey         = secretKey;
            _expandedSecretKey = Ed25519.Ed25519.ExpandedPrivateKeyFromSeed(Base58.Decode(secretKey));
        }
Esempio n. 3
0
        public PublicKey(string encodedKey)
        {
            var parts = encodedKey.Split(':');

            switch (parts.Length)
            {
            case 1:
            {
                var decodeData = Base58.Decode(parts[0]);
                if (decodeData.Length != ByteArray32.BufferLength)
                {
                    throw new ArgumentException("Invalid encoded key");
                }
                var byteArray32 = new ByteArray32 {
                    Buffer = decodeData
                };
                _keyType = KeyType.Ed25519;
                _data    = byteArray32;
                break;
            }

            case 2:
            {
                var decodeData = Base58.Decode(parts[1]);
                if (decodeData.Length != 32)
                {
                    throw new ArgumentException("Invalid encoded key");
                }
                var byteArray32 = new ByteArray32 {
                    Buffer = decodeData
                };
                _keyType = KeyTypeConverter.StringToKeyType(parts[0]);
                _data    = byteArray32;
                break;
            }

            default:
                throw new NotSupportedException("Invalid encoded key format, must be '<curve>:<encoded key>'");
            }
        }
Esempio n. 4
0
 public PublicKey(KeyType keyType, ByteArray32 data)
 {
     _keyType = keyType;
     _data    = data;
 }