public void ProvideWithReferences() { const string FileName = "filename.txt"; var digestAlgorithm = MessageDigestAlgorithm.SHA256; var manifestType = new ASiCManifestType { DataObjectReference = new[] { new DataObjectReferenceType { Rootfile = false, MimeType = "text/plain", URI = FileName, DigestMethod = new DigestMethodType { Algorithm = digestAlgorithm.Uri.ToString() }, DigestValue = new byte[] { 0, 1, 0, 1 } } } }; var cadesManifest = new CadesManifest(manifestType); AssertionExtensions.Should(cadesManifest).NotBeNull(); var digests = cadesManifest.Digests; digests.Should().NotBeNull(); AssertionExtensions.Should(digests.Count).Be(1); AssertionExtensions.Should(Enumerable.First(digests).Value.MessageDigestAlgorithm).BeEquivalentTo(digestAlgorithm); AssertionExtensions.Should(cadesManifest.SignatureFileRef).BeNull(); }
public ManifestContainer CreateManifest(IEnumerable <AsicePackageEntry> entries) { var manifest = new ASiCManifestType { DataObjectReference = entries.Select(ToDataObject).ToArray() }; SignatureFileRef signatureFileRef = null; if (addSignatureFile) { signatureFileRef = CadesSignature.CreateSignatureRef(); manifest.SigReference = new SigReferenceType { MimeType = signatureFileRef.MimeType.ToString(), URI = signatureFileRef.FileName }; } using (var outStream = new MemoryStream()) using (var xmlWriter = CreateXmlWriter(outStream)) { new XmlSerializer(typeof(ASiCManifestType)).Serialize(xmlWriter, manifest, CreateNamespaces()); //Stupid whitespace manipulation to please DNB var resultString = Encoding.UTF8.GetString(outStream.ToArray()); resultString = resultString.Replace(" />", "/>").Replace(" xmlns=\"http://uri.etsi.org/02918/v1.2.1#\"", "") + "\n"; var x = Encoding.UTF8.GetBytes(resultString); return(new ManifestContainer(AsiceConstants.CadesManifestFilename, x, signatureFileRef, ManifestSpec.Cades)); } }
public void ProvideWithNoSignatureRef() { var manifestType = new ASiCManifestType(); var cadesManifest = new CadesManifest(manifestType); AssertionExtensions.Should(cadesManifest).NotBeNull(); AssertionExtensions.Should(cadesManifest.Spec).Be(ManifestSpec.Cades); cadesManifest.Digests.Should().BeNull(); AssertionExtensions.Should(cadesManifest.SignatureFileName).BeNull(); AssertionExtensions.Should(cadesManifest.SignatureFileRef).BeNull(); }
public CadesManifest(ASiCManifestType asiCManifestType) : base(ManifestSpec.Cades) { this._asiCManifestType = asiCManifestType ?? throw new ArgumentNullException(nameof(asiCManifestType)); Digests = this._asiCManifestType?.DataObjectReference? .ToImmutableDictionary( d => d.URI, d => new DeclaredDigestFile( d.DigestValue, MessageDigestAlgorithm.FromUri(new Uri(d.DigestMethod.Algorithm)), d.URI, MimeType.ForString(d.MimeType))); RootFile = asiCManifestType.DataObjectReference?.Where(d => d.Rootfile).Select(d => d.URI).FirstOrDefault(); }
public void ProvideWithSignatureFile() { const string SignatureFileName = "my.p7"; var manifestType = new ASiCManifestType { SigReference = new SigReferenceType { MimeType = AsiceConstants.ContentTypeSignature, URI = SignatureFileName } }; var cadesManifest = new CadesManifest(manifestType); AssertionExtensions.Should(cadesManifest).NotBeNull(); AssertionExtensions.Should(cadesManifest.SignatureFileName).NotBeNull(); AssertionExtensions.Should(cadesManifest.SignatureFileName).Be(SignatureFileName); AssertionExtensions.Should(cadesManifest.SignatureFileRef).NotBeNull(); AssertionExtensions.Should(cadesManifest.SignatureFileRef.FileName).Be(SignatureFileName); AssertionExtensions.Should(cadesManifest.SignatureFileRef.MimeType).Be(AsiceConstants.MimeTypeCadesSignature); }
public ManifestContainer CreateManifest(IEnumerable <AsicePackageEntry> entries) { var manifest = new ASiCManifestType { DataObjectReference = entries.Select(ToDataObject).ToArray() }; SignatureFileRef signatureFileRef = null; if (addSignatureFile) { signatureFileRef = CadesSignature.CreateSignatureRef(); manifest.SigReference = new SigReferenceType { MimeType = signatureFileRef.MimeType.ToString(), URI = signatureFileRef.FileName }; } using (var outStream = new MemoryStream()) using (var xmlWriter = CreateXmlWriter(outStream)) { new XmlSerializer(typeof(ASiCManifestType)).Serialize(xmlWriter, manifest, CreateNamespaces()); return(new ManifestContainer(AsiceConstants.CadesManifestFilename, outStream.ToArray(), signatureFileRef, ManifestSpec.Cades)); } }