Example #1
0
 public AsiceArchive(ZipArchive archive, IManifestCreator creator, MessageDigestAlgorithm messageDigestAlgorithm, ICertificateHolder signatureCertificate)
 {
     Archive                = archive ?? throw new ArgumentNullException(nameof(archive));
     manifestCreator        = creator ?? throw new ArgumentNullException(nameof(creator));
     MessageDigestAlgorithm = messageDigestAlgorithm ?? throw new ArgumentNullException(nameof(messageDigestAlgorithm));
     SignatureCertificate   = signatureCertificate;
 }
Example #2
0
        /// <summary>
        /// Create builder
        /// </summary>
        /// <param name="stream">The stream where the ASiC-E data will be written. Can not be null and must be writable</param>
        /// <param name="messageDigestAlgorithm">The digest algorithm to use. Not nullable</param>
        /// <param name="signCertificate">A private/public keypair to use for signing. May be null</param>
        /// <returns>A builder that may be used to construct a ASiC-E package</returns>
        /// <exception cref="ArgumentException">If the provided stream is not writable</exception>
        public static AsiceBuilder Create(
            Stream stream,
            MessageDigestAlgorithm messageDigestAlgorithm,
            ICertificateHolder signCertificate)
        {
            var outStream = stream ?? throw new ArgumentNullException(nameof(stream));
            var algorithm = messageDigestAlgorithm ?? throw new ArgumentNullException(nameof(messageDigestAlgorithm));

            if (!outStream.CanWrite)
            {
                throw new ArgumentException("The provided Stream must be writable", nameof(stream));
            }

            var cadesManifestCreator = signCertificate == null
                ? CadesManifestCreator.CreateWithoutSignatureFile()
                : CadesManifestCreator.CreateWithSignatureFile();

            return(new AsiceBuilder(AsiceArchive.Create(outStream, cadesManifestCreator, signCertificate), algorithm));
        }
Example #3
0
        public static AsiceArchive Create(Stream zipOutStream, IManifestCreator manifestCreator, ICertificateHolder signatureCertificateHolder)
        {
            Log.Debug("Creating ASiC-e Zip");
            var zipArchive = new ZipArchive(zipOutStream, ZipArchiveMode.Create, false, Encoding.UTF8);

            // Add mimetype entry
            var zipArchiveEntry = zipArchive.CreateEntry(AsiceConstants.FileNameMimeType);

            using (var stream = zipArchiveEntry.Open())
            {
                var contentAsBytes = Encoding.UTF8.GetBytes(AsiceConstants.ContentTypeASiCe);
                stream.Write(contentAsBytes, 0, contentAsBytes.Length);
            }

            return(new AsiceArchive(zipArchive, manifestCreator, MessageDigestAlgorithm.SHA256, signatureCertificateHolder));
        }
Example #4
0
 public static SignatureCreator Create(ICertificateHolder certificateHolder)
 {
     return(new SignatureCreator(certificateHolder));
 }
Example #5
0
 private SignatureCreator(ICertificateHolder certificateHolder)
 {
     this.certificateHolder = certificateHolder ?? throw new ArgumentNullException(nameof(certificateHolder));
 }