public static CardManager GetManagerWithConstAccessTokenProvider(ConstAccessTokenProvider constAccessTokenProvider) { Func <RawSignedModel, Task <RawSignedModel> > signCallBackFunc = async(model) => { var response = await EmulateServerResponseToSignByAppRequest(model.ExportAsString()); return(RawSignedModelUtils.GenerateFromString(response)); }; var validator = new VirgilCardVerifier(new VirgilCardCrypto()) { VerifySelfSignature = true, VerifyVirgilSignature = true }; validator.ChangeServiceCreds(AppSettings.ServicePublicKeyDerBase64); var manager = new CardManager(new CardManagerParams() { CardCrypto = CardCrypto, ApiUrl = AppSettings.CardsServiceAddress, AccessTokenProvider = constAccessTokenProvider, SignCallBack = signCallBackFunc, Verifier = validator }); return(manager); }
public async Task CardManager_Should_RaiseException_IfExpiredToken() { // STC-26 var aliceName = "alice-" + Guid.NewGuid(); //var aliceCard = await IntegrationHelper.PublishCard(aliceName); var crypto = new VirgilCrypto(); var keypair = crypto.GenerateKeys(); var jwtFromServer = await IntegrationHelper.EmulateServerResponseToBuildTokenRequest( new TokenContext(faker.Random.AlphaNumeric(20), "some_operation"), 0.3 ); var jwt = new Jwt(jwtFromServer); var constAccessTokenProvider = new ConstAccessTokenProvider(jwt); var cardManager = IntegrationHelper.GetManagerWithConstAccessTokenProvider(constAccessTokenProvider); var aliceCard = await cardManager.PublishCardAsync( new CardParams() { Identity = aliceName, PublicKey = keypair.PublicKey, PrivateKey = keypair.PrivateKey, PreviousCardId = null, ExtraFields = new Dictionary <string, string> { { "some meta key", "some meta val" } } }); // var aaa = await IntegrationHelper.GetCardAsync(aliceCard.Id); Thread.Sleep(30000); Assert.ThrowsAsync <UnauthorizedClientException>( async() => await cardManager.GetCardAsync(aliceCard.Id)); }
public async Task YTC16() { var correnctPassword = "******"; var wrongPassword = "******"; var crypto = Substitute.For <IPythiaCrypto>(); crypto.Blind(correnctPassword).Returns(new PythiaCrypto().Blind(correnctPassword)); crypto.Blind(wrongPassword).Returns(new PythiaCrypto().Blind(wrongPassword)); crypto.Deblind(Arg.Any <byte[]>(), Arg.Any <byte[]>()) .Returns((arg) => new PythiaCrypto().Deblind((byte[])arg[0], (byte[])arg[1])); crypto.GenerateSalt().Returns(new PythiaCrypto().GenerateSalt()); crypto.Verify(Arg.Any <PythiaProofParams>()).Returns(true, false, false, false, false); var virgilCrypto = new VirgilCrypto(); var signer = new VirgilAccessTokenSigner(); var apiKey = virgilCrypto.ImportPrivateKey(Bytes.FromString(AppSettings.Get.ApiKey, StringEncoding.BASE64)); var generator = new JwtGenerator(AppSettings.Get.AppId, apiKey, AppSettings.Get.ApiKeyId, TimeSpan.FromDays(1), signer); var jwt = generator.GenerateToken("PYTHIA-CLIENT"); var connection = new ServiceConnection(AppSettings.Get.ApiURL); var tokenProvider = new ConstAccessTokenProvider(jwt); var client = new PythiaClient(connection, new NewtonsoftJsonSerializer()); var protocol = new PythiaProtocol(client, crypto, tokenProvider, AppSettings.Get.ProofKeys.Skip(1)); var bpp = await protocol.CreateBreachProofPasswordAsync(correnctPassword); await Task.Delay(TimeSpan.FromSeconds(2)); var verifyResult1 = await protocol.VerifyBreachProofPasswordAsync(correnctPassword, bpp, false); verifyResult1.Should().BeTrue(); await Task.Delay(TimeSpan.FromSeconds(2)); Func <Task> verifyResult2 = async() => { await protocol.VerifyBreachProofPasswordAsync(correnctPassword, bpp, true); }; verifyResult2.Should().Throw <Exception>(); await Task.Delay(TimeSpan.FromSeconds(2)); var verifyResult3 = await protocol.VerifyBreachProofPasswordAsync(wrongPassword, bpp, false); verifyResult3.Should().BeFalse(); await Task.Delay(TimeSpan.FromSeconds(2)); Func <Task> verifyResult4 = async() => { await protocol.VerifyBreachProofPasswordAsync(wrongPassword, bpp, true); }; verifyResult4.Should().Throw <Exception>(); await Task.Delay(TimeSpan.FromSeconds(2)); }
public async Task GetTokenAsync_Should_ReturnTheSameToken_InConstAccessTokenProviderAsync() { var jwtFromServer = await IntegrationHelper.EmulateServerResponseToBuildTokenRequest( new TokenContext(faker.Random.AlphaNumeric(20), "some_operation") ); var jwt = new Jwt(jwtFromServer); var constAccessTokenProvider = new ConstAccessTokenProvider(jwt); var token1 = await constAccessTokenProvider.GetTokenAsync( new TokenContext( faker.Random.AlphaNumeric(10), faker.Random.AlphaNumeric(10), true) ); var token2 = await constAccessTokenProvider.GetTokenAsync( new TokenContext( faker.Random.AlphaNumeric(10), faker.Random.AlphaNumeric(10), true) ); Assert.AreEqual(token1, token2); }