public void WriteAndReadECParameters(ECParameters parameters, int keySize) { parameters.Validate(); var xmlString = ECParametersFormatter.ToXmlString(parameters); Assert.False(string.IsNullOrEmpty(xmlString)); // TODO: fix big integer value validation var settings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Document, //ValidationType = ValidationType.Schema, //Schemas = ECDsaXmlSchemaSet, //ValidationFlags = // XmlSchemaValidationFlags.ProcessInlineSchema | // XmlSchemaValidationFlags.ProcessSchemaLocation | // XmlSchemaValidationFlags.ReportValidationWarnings, }; using (var textReader = new StringReader(xmlString)) using (var reader = XmlReader.Create(textReader, settings)) while (reader.Read()) { ; } var newParameters = ECParametersFormatter.FromXml(xmlString, keySize); ECHelper.AssertEqual(parameters, newParameters, false); }
/// <summary> /// Reconstructs a <see cref="GostECDsa"/> object from an XML string. /// </summary> /// <param name="xmlString"> /// The XML string to use to reconstruct the <see cref="GostECDsa"/> object. /// </param> /// <exception cref="ArgumentNullException"> /// The <paramref name="xmlString"/> parameter is <see langword="null"/>. /// </exception> /// <exception cref="CryptographicException"> /// The format of the <paramref name="xmlString"/> parameter is not valid. /// </exception> public sealed override void FromXmlString(string xmlString) { if (xmlString == null) { throw new ArgumentNullException(nameof(xmlString)); } var parameters = ECParametersFormatter.FromXml(xmlString, KeySize / 8); ImportParameters(parameters); }
/// <summary> /// Creates and returns an XML string representation of the current /// <see cref="GostECDsa"/> object. /// </summary> /// <param name="includePrivateParameters"> /// <see langword="true"/> to include private parameters; otherwise, <see langword="false"/>. /// </param> /// <returns> /// An XML string encoding of the current <see cref="GostECDsa"/> object. /// </returns> public sealed override string ToXmlString(bool includePrivateParameters) { var parameters = ExportParameters(includePrivateParameters); return(ECParametersFormatter.ToXmlString(parameters)); }