/// <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); }
/// <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); }