public void TestBuildChallengeTransactionWithOptions() { var serverKeypair = KeyPair.Random(); var clientAccountId = "GBDIT5GUJ7R5BXO3GJHFXJ6AZ5UQK6MNOIDMPQUSMXLIHTUNR2Q5CFNF"; var anchorName = "NET"; var nonce = new byte[48]; Array.Clear(nonce, 0, nonce.Length); var now = new DateTimeOffset(); var duration = TimeSpan.FromMinutes(10.0); var tx = WebAuthentication .BuildChallengeTransaction(serverKeypair, clientAccountId, anchorName, nonce, now, duration, Network.Test()); var serializedTx = tx.ToEnvelopeXdrBase64(); var back = Transaction.FromEnvelopeXdr(serializedTx); var timeout = back.TimeBounds.MaxTime - back.TimeBounds.MinTime; Assert.AreEqual(600, timeout); CheckAccounts(back, serverKeypair); CheckOperation(back, clientAccountId); }
public void TestVerifyChallengeTransactionReturnsTrueForValidTransaction() { var serverKeypair = KeyPair.Random(); var clientKeypair = KeyPair.Random(); var anchorName = "NET"; Network.UseTestNetwork(); var now = DateTimeOffset.Now; var tx = WebAuthentication.BuildChallengeTransaction(serverKeypair, clientKeypair.AccountId, anchorName, now: now); tx.Sign(clientKeypair); Assert.IsTrue(WebAuthentication.VerifyChallengeTransaction(tx, serverKeypair.AccountId, now: now)); }
public void TestVerifyChallengeTransactionThrowsIfNotSignedByClient() { var serverKeypair = KeyPair.Random(); var clientKeypair = KeyPair.Random(); var anchorName = "NET"; Network.UseTestNetwork(); var now = DateTimeOffset.Now; var tx = WebAuthentication.BuildChallengeTransaction(serverKeypair, clientKeypair.AccountId, anchorName, now: now); Assert.ThrowsException <InvalidWebAuthenticationException>(() => { WebAuthentication.VerifyChallengeTransaction(tx, serverKeypair.AccountId, now: now); }); }
public void TestVerifyChallengeTransactionThrowsIfItsTooLate() { var serverKeypair = KeyPair.Random(); var clientKeypair = KeyPair.Random(); var anchorName = "NET"; Network.UseTestNetwork(); var now = DateTimeOffset.Now; var tx = WebAuthentication.BuildChallengeTransaction(serverKeypair, clientKeypair.AccountId, anchorName, now: now); tx.Sign(clientKeypair); Assert.ThrowsException <InvalidWebAuthenticationException>(() => { WebAuthentication.VerifyChallengeTransaction(tx, serverKeypair.AccountId, now: now.Add(TimeSpan.FromDays(1.0))); }); }
public void TestBuildChallengeTransaction() { var serverKeypair = KeyPair.Random(); var clientAccountId = "GBDIT5GUJ7R5BXO3GJHFXJ6AZ5UQK6MNOIDMPQUSMXLIHTUNR2Q5CFNF"; var anchorName = "NET"; Network.UseTestNetwork(); var tx = WebAuthentication.BuildChallengeTransaction(serverKeypair, clientAccountId, anchorName); var serializedTx = tx.ToEnvelopeXdrBase64(); var back = Transaction.FromEnvelopeXdr(serializedTx); var timeout = back.TimeBounds.MaxTime - back.TimeBounds.MinTime; Assert.AreEqual(300, timeout); CheckAccounts(back, serverKeypair); CheckOperation(back, clientAccountId); }
public IActionResult RequestChallenge([FromQuery] string account) { //need server keys here WebAuthentication.BuildChallengeTransaction(null, account, "Wagering.gg"); return(Ok()); }