Esempio n. 1
0
        /// <summary>
        /// Writes the Canonicalized bytes into a stream.
        /// </summary>
        /// <param name="stream">the <see cref="Stream"/> to receive the bytes.</param>
        public void GetCanonicalBytes(Stream stream)
        {
            if (stream == null)
            {
                throw LogArgumentNullException(nameof(stream));
            }

            // CanonicalStream is set by reading with the DSigSerializer
            if (CanonicalStream != null)
            {
                CanonicalStream.WriteTo(stream);
            }
            else
            {
                using (var signedInfoWriter = XmlDictionaryWriter.CreateTextWriter(Stream.Null, Encoding.UTF8, false))
                {
                    using (var c14nStream = new MemoryStream())
                    {
                        signedInfoWriter.StartCanonicalization(c14nStream, _canonicalizationMethod.Equals(SecurityAlgorithms.ExclusiveC14nWithComments, StringComparison.Ordinal), null);
                        _dsigSerializer.WriteSignedInfo(signedInfoWriter, this);
                        signedInfoWriter.Flush();
                        signedInfoWriter.EndCanonicalization();
                        c14nStream.WriteTo(stream);
                    }
                }
            }
        }