Пример #1
0
        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();
        }
Пример #2
0
        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));
                }
        }
Пример #3
0
        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();
        }
Пример #4
0
 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();
 }
Пример #5
0
        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));
                }
        }