Example #1
0
        /// <summary>
        /// Offline generates an address
        /// </summary>
        /// <param name="seed">The seed from which an address should be generated</param>
        /// <param name="index">The index of the address</param>
        /// <param name="security">Security level (1, 2, 3). Use 2 if you don't know what to use.</param>
        /// <param name="cancellationToken">The CancellationToken</param>
        /// <returns></returns>
        public static AddressItem GenerateAddress(string seed, int index, int security, CancellationToken cancellationToken)
        {
            var trits = Crypto.Converter.GetTrits(seed);

            sbyte[] key     = new Crypto.Signing().Key(trits, index, security);
            string  address = GenerateAddress(key, false, cancellationToken);

            var addressItem = new AddressItem()
            {
                Address    = address,
                PrivateKey = key,
                Index      = index,
                Balance    = 0
            };

            return(addressItem);
        }
Example #2
0
        /// <summary>
        ///  Generates an address from private key
        /// </summary>
        /// <param name="seed"></param>
        /// <param name="index"></param>
        /// <param name="checksum"></param>
        /// <param name="curl"></param>
        /// <returns></returns>
        public static string GenerateAddress(sbyte[] privateKey, bool checksum, CancellationToken cancellationToken)
        {
            Crypto.Signing signing = new Crypto.Signing();
            var            digests = signing.Digests(privateKey);

            cancellationToken.ThrowIfCancellationRequested();

            var addressTrits = signing.Address(digests);

            cancellationToken.ThrowIfCancellationRequested();

            string address = Crypto.Converter.GetTrytes(addressTrits);

            if (checksum)
            {
                address = Checksum.AddChecksum(address);
            }

            return(address);
        }