public void EksBuilderV1WithDummy_NLSigHasDummyText() { //Arrange var keyCount = 500; var lf = new LoggerFactory(); var eksBuilderV1Logger = new EksBuilderV1LoggingExtensions(lf.CreateLogger <EksBuilderV1LoggingExtensions>()); var dtp = new StandardUtcDateTimeProvider(); var dummySigner = new DummyCmsSigner(); var sut = new EksBuilderV1( new FakeEksHeaderInfoConfig(), TestSignerHelpers.CreateEcdsaSigner(lf), dummySigner, dtp, new GeneratedProtobufEksContentFormatter(), eksBuilderV1Logger); //Act var result = sut.BuildAsync(GetRandomKeys(keyCount, 123)).GetAwaiter().GetResult(); //Assert using var zipFileInMemory = new MemoryStream(); zipFileInMemory.Write(result, 0, result.Length); using (var zipFileContent = new ZipArchive(zipFileInMemory, ZipArchiveMode.Read, false)) { var nlSignature = zipFileContent.ReadEntry(ZippedContentEntryNames.NlSignature); Assert.NotNull(nlSignature); Assert.Equal(nlSignature, dummySigner.DummyContent); } }
public void Build(int keyCount, int seed) { var lf = new LoggerFactory(); var dtp = new StandardUtcDateTimeProvider(); var builder = new EksBuilderV1( new FakeEksHeaderInfoConfig(), new EcdSaSigner(new EmbeddedResourceCertificateProvider(new HardCodedCertificateLocationConfig("TestECDSA.p12", ""), lf.CreateLogger <EmbeddedResourceCertificateProvider>())), new CmsSignerEnhanced( new EmbeddedResourceCertificateProvider(new HardCodedCertificateLocationConfig("TestRSA.p12", "Covid-19!"), lf.CreateLogger <EmbeddedResourceCertificateProvider>()), new EmbeddedResourcesCertificateChainProvider(new HardCodedCertificateLocationConfig("StaatDerNLChain-Expires2020-08-28.p7b", "")), dtp ), dtp, new GeneratedProtobufEksContentFormatter(), lf.CreateLogger <EksBuilderV1>() ); //new StandardUtcDateTimeProvider(), new GeneratedProtobufContentFormatter(), new LoggerFactory().CreateLogger<ExposureKeySetBuilderV1>()); var actual = builder.BuildAsync(GetRandomKeys(keyCount, seed)).GetAwaiter().GetResult(); Assert.IsTrue(actual.Length > 0); Trace.WriteLine($"{keyCount} keys = {actual.Length} bytes."); using (var fs = new FileStream("EKS.zip", FileMode.Create, FileAccess.Write)) { fs.Write(actual, 0, actual.Length); } }
public void Build(int keyCount, int seed) { //Arrange var lf = new LoggerFactory(); var eksBuilderV1Logger = new EksBuilderV1LoggingExtensions(lf.CreateLogger <EksBuilderV1LoggingExtensions>()); var dtp = new StandardUtcDateTimeProvider(); var sut = new EksBuilderV1( new FakeEksHeaderInfoConfig(), TestSignerHelpers.CreateEcdsaSigner(lf), TestSignerHelpers.CreateCmsSignerEnhanced(lf), dtp, new GeneratedProtobufEksContentFormatter(), eksBuilderV1Logger); //Act var result = sut.BuildAsync(GetRandomKeys(keyCount, seed)).GetAwaiter().GetResult(); Trace.WriteLine($"{keyCount} keys = {result.Length} bytes."); //Assert Assert.True(result.Length > 0); using (var fs = new FileStream("EKS.zip", FileMode.Create, FileAccess.Write)) { fs.Write(result, 0, result.Length); } }
public void EksBuilderV1WithDummy_NLSigHasDummyText() { //Arrange int KeyCount = 500; var lf = new LoggerFactory(); var dtp = new StandardUtcDateTimeProvider(); var dummySigner = new DummyCmsSigner(); var sut = new EksBuilderV1( new FakeEksHeaderInfoConfig(), new EcdSaSigner( new EmbeddedResourceCertificateProvider( new HardCodedCertificateLocationConfig("TestECDSA.p12", ""), lf.CreateLogger <EmbeddedResourceCertificateProvider>()) ), dummySigner, dtp, new GeneratedProtobufEksContentFormatter(), lf.CreateLogger <EksBuilderV1>()); //Act var result = sut.BuildAsync(GetRandomKeys(KeyCount, 123)).GetAwaiter().GetResult(); //Assert using var zipFileInMemory = new MemoryStream(); zipFileInMemory.Write(result, 0, result.Length); using (var zipFileContent = new ZipArchive(zipFileInMemory, ZipArchiveMode.Read, false)) { var NlSignature = zipFileContent.ReadEntry(ZippedContentEntryNames.NLSignature); Assert.NotNull(NlSignature); Assert.Equal(NlSignature, dummySigner.DummyContent); } }
private RemoveExpiredManifestsV4Command CompileRemoveExpiredManifestsV4Command() { var logger = new ExpiredManifestV4LoggingExtensions(new LoggerFactory().CreateLogger <ExpiredManifestV4LoggingExtensions>()); var dateTimeProvider = new StandardUtcDateTimeProvider(); var result = new RemoveExpiredManifestsV4Command(_ContentDbProvider.CreateNew, logger, _ManifestConfigMock.Object, dateTimeProvider); return(result); }
private RemoveExpiredManifestsCommand CompileRemoveExpiredManifestsCommand() { var loggerMock = new Mock <ILogger <RemoveExpiredManifestsReceiver> >(); var dateTimeProvider = new StandardUtcDateTimeProvider(); var receiver = new RemoveExpiredManifestsReceiver(_contentDbProvider.CreateNew, _manifestConfigMock.Object, dateTimeProvider, loggerMock.Object); var result = new RemoveExpiredManifestsCommand(receiver); return(result); }
public void SnapshotSame() { var dtp = new StandardUtcDateTimeProvider(); var v0 = dtp.Snapshot; Thread.Sleep(500); var v1 = dtp.Snapshot; Assert.Equal(v0, v1); }
public void Build(int keyCount, int seed) { //Arrange var lf = new LoggerFactory(); var certProviderLogger = new EmbeddedCertProviderLoggingExtensions(lf.CreateLogger <EmbeddedCertProviderLoggingExtensions>()); var eksBuilderV1Logger = new EksBuilderV1LoggingExtensions(lf.CreateLogger <EksBuilderV1LoggingExtensions>()); var dtp = new StandardUtcDateTimeProvider(); var cmsCertLoc = new Mock <IEmbeddedResourceCertificateConfig>(); cmsCertLoc.Setup(x => x.Path).Returns("TestRSA.p12"); cmsCertLoc.Setup(x => x.Password).Returns("Covid-19!"); //Not a secret. var cmsCertChainLoc = new Mock <IEmbeddedResourceCertificateConfig>(); cmsCertChainLoc.Setup(x => x.Path).Returns("StaatDerNLChain-Expires2020-08-28.p7b"); cmsCertChainLoc.Setup(x => x.Password).Returns(string.Empty); //Not a secret. //resign some var cmsSigner = new CmsSignerEnhanced( new EmbeddedResourceCertificateProvider(cmsCertLoc.Object, certProviderLogger), new EmbeddedResourcesCertificateChainProvider(cmsCertChainLoc.Object), new StandardUtcDateTimeProvider() ); var gaCertLoc = new Mock <IEmbeddedResourceCertificateConfig>(); gaCertLoc.Setup(x => x.Path).Returns("TestECDSA.p12"); gaCertLoc.Setup(x => x.Password).Returns(string.Empty); //Not a secret. var sut = new EksBuilderV1( new FakeEksHeaderInfoConfig(), new EcdSaSigner( new EmbeddedResourceCertificateProvider( gaCertLoc.Object, certProviderLogger)), cmsSigner, dtp, new GeneratedProtobufEksContentFormatter(), eksBuilderV1Logger ); //Act var result = sut.BuildAsync(GetRandomKeys(keyCount, seed)).GetAwaiter().GetResult(); Trace.WriteLine($"{keyCount} keys = {result.Length} bytes."); //Assert Assert.True(result.Length > 0); using (var fs = new FileStream("EKS.zip", FileMode.Create, FileAccess.Write)) { fs.Write(result, 0, result.Length); } }
public string[] Execute() { //TODO cant test this - inject! var expired = new StandardUtcDateTimeProvider().Now() - TimeSpan.FromDays(_GaenContentConfig.ExposureKeySetLifetimeDays); var result = _DbConfig.Set <ExposureKeySetContentEntity>() .Where(x => x.Release > expired) .Select(x => x.PublishingId) .ToArray(); return(result); }
public void NewEksStuffingGeneratorTest() { var rng = new StandardRandomNumberGenerator(); var eksConfigMock = new Mock <IEksConfig>(MockBehavior.Strict); eksConfigMock.Setup(x => x.LifetimeDays).Returns(14); var dtp = new StandardUtcDateTimeProvider(); var stuffer = new EksStuffingGeneratorMk2(new TransmissionRiskLevelCalculationMk2(), rng, dtp, eksConfigMock.Object); var result = stuffer.Execute(10); Assert.Equal(10, result.Length); }
public AgExposureKeySetsConfig Execute() { var expired = new StandardUtcDateTimeProvider().Now() - TimeSpan.FromDays(_AgConfig.ExposureKeySetLifetimeDays); var activeExposureKeySets = _DbConfig.Current.Set <ExposureKeySetContentEntity>() .Where(x => x.Release > expired) .Select(x => x.PublishingId) .ToArray(); return(new AgExposureKeySetsConfig { Ids = activeExposureKeySets }); }
public void Valid(string labConfirmationId) { // Assemble var dtp = new StandardUtcDateTimeProvider(); var validator = new AuthorisationArgsValidator(new LabConfirmationIdService(new StandardRandomNumberGenerator()), dtp); var args = new AuthorisationArgs { LabConfirmationId = labConfirmationId, DateOfSymptomsOnset = dtp.Snapshot }; // Act var result = validator.Validate(args); // Assert Assert.Empty(result); }
public TestJwtGeneratorService(IJwtService jwtService, IUtcDateTimeProvider dateTimeProvider, ILogger <TestJwtGeneratorService> logger) { _jwtService = jwtService ?? throw new ArgumentNullException(nameof(jwtService)); _dateTimeProvider = dateTimeProvider ?? throw new ArgumentNullException(nameof(dateTimeProvider)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _logger.WriteTestJwtConstructed(); var testJwtData = new Dictionary <string, object> { { "access_token", "test_access_token" }, { "id", "0" } }; var expiry = new StandardUtcDateTimeProvider().Now().AddDays(7).ToUnixTimeU64(); _logger.WriteGeneratedToken(jwtService.Generate(expiry, testJwtData)); }
public TestJwtGeneratorService(IJwtService jwtService, IUtcDateTimeProvider dateTimeProvider, ILogger <TestJwtGeneratorService> logger) { _JwtService = jwtService ?? throw new ArgumentNullException(nameof(jwtService)); _DateTimeProvider = dateTimeProvider ?? throw new ArgumentNullException(nameof(dateTimeProvider)); _Logger = logger ?? throw new ArgumentNullException(nameof(logger)); _Logger.LogInformation("TestJwtGeneratorService Singleton constructed, generating test JWT now..."); var testJwtData = new Dictionary <string, object> { { "access_token", "test_access_token" }, { "id", "0" } }; var expiry = new StandardUtcDateTimeProvider().Now().AddDays(7).ToUnixTimeU64(); _Logger.LogInformation(jwtService.Generate(expiry, testJwtData)); }
public void EksBuilderV1WithDummy_NLSigHasDummyText() { //Arrange var KeyCount = 500; var lf = new LoggerFactory(); var certProviderLogger = new EmbeddedCertProviderLoggingExtensions(lf.CreateLogger <EmbeddedCertProviderLoggingExtensions>()); var eksBuilderV1Logger = new EksBuilderV1LoggingExtensions(lf.CreateLogger <EksBuilderV1LoggingExtensions>()); var dtp = new StandardUtcDateTimeProvider(); var dummySigner = new DummyCmsSigner(); var gaCertLoc = new Mock <IEmbeddedResourceCertificateConfig>(); gaCertLoc.Setup(x => x.Path).Returns("TestECDSA.p12"); gaCertLoc.Setup(x => x.Password).Returns(string.Empty); //Not a secret. var sut = new EksBuilderV1( new FakeEksHeaderInfoConfig(), new EcdSaSigner( new EmbeddedResourceCertificateProvider( gaCertLoc.Object, certProviderLogger) ), dummySigner, dtp, new GeneratedProtobufEksContentFormatter(), eksBuilderV1Logger ); //Act var result = sut.BuildAsync(GetRandomKeys(KeyCount, 123)).GetAwaiter().GetResult(); //Assert using var zipFileInMemory = new MemoryStream(); zipFileInMemory.Write(result, 0, result.Length); using (var zipFileContent = new ZipArchive(zipFileInMemory, ZipArchiveMode.Read, false)) { var NlSignature = zipFileContent.ReadEntry(ZippedContentEntryNames.NLSignature); Assert.NotNull(NlSignature); Assert.Equal(NlSignature, dummySigner.DummyContent); } }
private ManifestUpdateCommand CreateManifestJob() { var eksConfig = new Mock <IEksConfig>(MockBehavior.Strict); eksConfig.Setup(x => x.LifetimeDays).Returns(14); var _Dtp = new StandardUtcDateTimeProvider(); var jsonSerializer = new StandardJsonSerializer(); return(new ManifestUpdateCommand( new ManifestBuilder(_ContentDbProvider.CreateNew(), eksConfig.Object, _Dtp), new ManifestBuilderV3(_ContentDbProvider.CreateNew(), eksConfig.Object, _Dtp), new ManifestBuilderV4(_ContentDbProvider.CreateNew(), eksConfig.Object, _Dtp), _ContentDbProvider.CreateNew, new ManifestUpdateCommandLoggingExtensions(_Lf.CreateLogger <ManifestUpdateCommandLoggingExtensions>()), _Dtp, jsonSerializer, () => new StandardContentEntityFormatter(new ZippedSignedContentFormatter(_NlSigner.Object), new Sha256HexPublishingIdService(), jsonSerializer) )); }
static void Main(string[] args) { try { var standardUtcDateTimeProvider = new StandardUtcDateTimeProvider(); var config = AppSettingsFromJsonFiles.GetConfigurationRoot(); using var inputContext = new DbContextProvider <WorkflowDbContext>( () => new WorkflowDbContext(new PostGresDbContextOptionsBuilder(new StandardEfDbConfig(config, "Input")).Build()) ); var jobConfigBuilder = new PostGresDbContextOptionsBuilder(new StandardEfDbConfig(config, "Job")); using var jobContext = new DbContextProvider <ExposureKeySetsBatchJobDbContext>( () => new ExposureKeySetsBatchJobDbContext(jobConfigBuilder.Build()) ); using var outputContext = new DbContextProvider <ExposureContentDbContext>( () => new ExposureContentDbContext(new PostGresDbContextOptionsBuilder(new StandardEfDbConfig(config, "Output")).Build()) ); using var bb = new ExposureKeySetBatchJob( new DbTekSource(inputContext), jobConfigBuilder, standardUtcDateTimeProvider, new ExposureKeySetDbWriter(outputContext, new Sha256PublishingIdCreator(new HardCodedExposureKeySetSigning())), new HardCodedAgConfig(), new JsonContentExposureKeySetFormatter(), new ExposureKeySetBuilderV1( new HsmExposureKeySetHeaderInfoConfig(config), new HardCodedExposureKeySetSigning(), standardUtcDateTimeProvider, new GeneratedProtobufContentFormatter()) , new ExposureKeySetBatchJobConfig(config) ); bb.Execute().GetAwaiter().GetResult(); } catch (Exception exception) { Console.WriteLine(exception); } }
private ManifestUpdateCommand CompileManifestUpdateCommand() { var eksConfigMock = new Mock <IEksConfig>(); var lf = new LoggerFactory(); var dateTimeProvider = new StandardUtcDateTimeProvider(); var jsonSerialiser = new StandardJsonSerializer(); var entityFormatterMock = new Mock <IContentEntityFormatter>(); Func <IContentEntityFormatter> formatterForV3 = () => new StandardContentEntityFormatter( new ZippedSignedContentFormatter( TestSignerHelpers.CreateCmsSignerEnhanced(lf)), new Sha256HexPublishingIdService(), jsonSerialiser ); var result = new ManifestUpdateCommand( new ManifestBuilder( _ContentDbProvider.CreateNew(), eksConfigMock.Object, dateTimeProvider), new ManifestBuilderV3( _ContentDbProvider.CreateNew(), eksConfigMock.Object, dateTimeProvider), new ManifestBuilderV4( _ContentDbProvider.CreateNew(), eksConfigMock.Object, dateTimeProvider), _ContentDbProvider.CreateNew, new ManifestUpdateCommandLoggingExtensions(lf.CreateLogger <ManifestUpdateCommandLoggingExtensions>()), dateTimeProvider, jsonSerialiser, entityFormatterMock.Object, formatterForV3 ); return(result); }