Ejemplo n.º 1
0
        public static ExternalAccount BuildExternalSigner(ILogger log, string KeyVaultURI)
        {
            var azureServiceTokenProvider = new AzureServiceTokenProvider();
            var keyVaultClient            = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));

            try{
                var signer = new AzureKeyVaultExternalSigner(keyVaultClient, KeyVaultURI);

                var address = signer.GetAddressAsync();

                log.LogInformation("Signer Address: " + address);

                return(new ExternalAccount(signer));
            }
            catch (Exception e) {
                log.LogInformation(e.Message);
                Console.WriteLine(e.Message);
                return(null);
            }
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            KeyVaultClient kvc       = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken));
            var            signer    = new AzureKeyVaultExternalSigner(kvc, URI);
            var            publicKey = signer.GetPublicKeyAsync().Result;

            System.Console.WriteLine(publicKey.ToHex());

            var msgHash           = new Util.Sha3Keccack().CalculateHash("Hello").HexToByteArray();
            var ethExternalSigner = new EthECKeyExternalSigner(signer);

            var signature          = ethExternalSigner.SignAndCalculateVAsync(msgHash).Result;
            var publicKeyRecovered = EthECKey.RecoverFromSignature(signature, msgHash);

            System.Console.WriteLine(publicKeyRecovered.GetPubKey().ToHex());

            var transfer = new TransferFunction();

            transfer.To          = "0x1996a57077877D38e18A1BE44A55100D77b8fA1D";
            transfer.FromAddress = publicKeyRecovered.GetPublicAddress();
            transfer.Value       = 1;
            transfer.Nonce       = 1;
            transfer.GasPrice    = 100;
            transfer.Gas         = 1000;

            var rpcClient        = new RpcClient(new Uri("http://localhost:8545"));
            var transactionInput = transfer.CreateTransactionInput("0x12890d2cce102216644c59daE5baed380d84830c");

            var externalAccount = new ExternalAccount(ethExternalSigner, 1);

            externalAccount.InitialiseAsync().Wait();
            externalAccount.InitialiseDefaultTransactionManager(rpcClient);
            var signature2          = externalAccount.TransactionManager.SignTransactionAsync(transactionInput).Result;
            var transactionSigner   = new TransactionSigner();
            var publicKeyRecovered2 = transactionSigner.GetPublicKey(signature2, 1);

            System.Console.WriteLine(publicKeyRecovered2.ToHex());
            System.Console.ReadLine();
        }
Ejemplo n.º 3
0
        public static async Task <ExternalAccount> BuildExternalSignerWithToken(ILogger log, string KeyVaultURI, string appID, string appSecret)
        {
            APP_ID     = appID;
            APP_SECRET = appSecret;

            var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken));

            try{
                var signer = new AzureKeyVaultExternalSigner(keyVaultClient, KeyVaultURI);

                var address = await signer.GetAddressAsync();

                Console.WriteLine("Signer Address: " + address);

                return(new ExternalAccount(signer));
            }
            catch (Exception e) {
                log.LogInformation(e.Message);
                Console.WriteLine(e.Message);
                return(null);
            }
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            //var credential = new DefaultAzureCredential(
            //    new DefaultAzureCredentialOptions
            //    {
            //        //VisualStudioTenantId = TENANT_ID,
            //        //VisualStudioCodeTenantId = TENANT_ID,
            //    });
            var credential = new ClientSecretCredential(TENANT_ID, APP_ID, APP_PASSWORD);
            var signer     = new AzureKeyVaultExternalSigner(KEY_NAME, URI, credential);
            var address    = signer.GetAddressAsync().Result;

            System.Console.WriteLine(address);

            var msgHash = new Util.Sha3Keccack().CalculateHash("Hello").HexToByteArray();

            var signature          = signer.SignAsync(msgHash).Result;
            var publicKeyRecovered = EthECKey.RecoverFromSignature(signature, msgHash);

            System.Console.WriteLine(publicKeyRecovered.GetPubKey().ToHex());

            var transfer = new TransferFunction();

            transfer.To          = "0x1996a57077877D38e18A1BE44A55100D77b8fA1D";
            transfer.FromAddress = publicKeyRecovered.GetPublicAddress();
            transfer.Value       = 1;
            transfer.Nonce       = 1;
            transfer.GasPrice    = 100;
            transfer.Gas         = 1000;

            var rpcClient        = new RpcClient(new Uri("http://localhost:8545"));
            var transactionInput = transfer.CreateTransactionInput("0x12890d2cce102216644c59daE5baed380d84830c");

            var externalAccount = new ExternalAccount(signer, 1);

            externalAccount.InitialiseAsync().Wait();
            externalAccount.InitialiseDefaultTransactionManager(rpcClient);


            var signature2               = externalAccount.TransactionManager.SignTransactionAsync(transactionInput).Result;
            var publicKeyRecovered2      = TransactionVerificationAndRecovery.GetPublicKey(signature2);
            var transactionFromSignature = TransactionFactory.CreateTransaction(signature2);

            System.Console.WriteLine("Recovered public key");
            System.Console.WriteLine(publicKeyRecovered2.ToHex());
            System.Console.WriteLine("Recovered transaction Type");
            System.Console.WriteLine(transactionFromSignature.TransactionType.ToString());


            System.Console.WriteLine("Signing EIP1559");


            var transferEip1559 = new TransferFunction();

            transferEip1559.To                   = "0x1996a57077877D38e18A1BE44A55100D77b8fA1D";
            transferEip1559.FromAddress          = publicKeyRecovered.GetPublicAddress();
            transferEip1559.Value                = 1;
            transferEip1559.Nonce                = 1;
            transferEip1559.MaxFeePerGas         = 1000;
            transferEip1559.MaxPriorityFeePerGas = 999;
            transferEip1559.Gas                  = 1000;

            var transactionInputEip1559 = transferEip1559.CreateTransactionInput("0x12890d2cce102216644c59daE5baed380d84830c");
            var signature3                      = externalAccount.TransactionManager.SignTransactionAsync(transactionInputEip1559).Result;
            var publicKeyRecovered3             = TransactionVerificationAndRecovery.GetPublicKey(signature3);
            var transactionFromSignatureEIP1559 = TransactionFactory.CreateTransaction(signature3);

            System.Console.WriteLine("Recovered public key");
            System.Console.WriteLine(publicKeyRecovered3.ToHex());
            System.Console.WriteLine("Recovered transaction Type");
            System.Console.WriteLine(transactionFromSignatureEIP1559.TransactionType.ToString());
            System.Console.ReadLine();
        }