public async Task LoadCertificatesAsync(OstcListeListe certList) { var sender = new OstcSender(SenderId.FromBnr("99300006"), "Test"); var cred = new NetworkCredential("dataline", "a5pY_4cm"); var client = new OstcClient(sender, Network.Base.Test, cred, new OstcClientInfo("Dataline", "Dataline Office", 21412)) { OstcExtraValidatorFactory = OstcExtraValidator.Factory }; var certs = await client.DownloadCertificateListAsync(certList); Assert.NotNull(certs); Assert.NotEqual(0, certs.Count); }
/// <summary> /// Herunterladen der Zertifikat-Liste /// </summary> /// <param name="list">Zertifikat-Liste die zu Laden ist</param> /// <returns>Zertifikat-Liste</returns> public async Task<IReadOnlyList<X509Certificate>> DownloadCertificateListAsync(OstcListeListe list) { var query = new OstcListe { Liste = list }; var queryData = OstcUtils.Serialize(query, Encoding.UTF8); ValidateData(queryData, OstcMessageType.ListData); var now = DateTime.Now; now = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, DateTimeKind.Local).ToUniversalTime(); var message = new TransportRequestType() { version = SupportedVersionsType.Item11, profile = ExtraProfileOstc, TransportHeader = CreateRequestHeader(now, OstcDataType.ListRequest, ExtraScenario.RequestWithResponse), TransportBody = new TransportRequestBodyType { Items = new object[] { new DataType { Item = new Base64CharSequenceType() { Value = queryData, }, }, }, }, }; ValidateRequest(message, OstcMessageType.List); var messageData = OstcExtraSerializer.Utf8.Serialize(message); var request = CreateRequest(Network.Requests.ListRequest); using (var requestStream = await Task.Factory.FromAsync(request.BeginGetRequestStream, request.EndGetRequestStream, null)) { requestStream.Write(messageData, 0, messageData.Length); } using (var response = await Task.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)) { var serializer = new XmlSerializer(typeof(TransportResponseType)); var responseData = (TransportResponseType)serializer.Deserialize(response.GetResponseStream()); var flags = responseData.TransportHeader.GetFlags().ToList(); if (flags.Any(x => x.weight == ExtraFlagWeight.Error)) throw new Ostc2Exception(flags); var data = ((Base64CharSequenceType)((DataType)responseData.TransportBody.Items[0]).Item).Value; var result = OstcUtils.ReadCertificates(new MemoryStream(data)); return result; } }
/// <summary> /// Herunterladen der Zertifikat-Liste /// </summary> /// <param name="list">Zertifikat-Liste die zu Laden ist</param> /// <returns>Zertifikat-Liste</returns> public async Task <IReadOnlyList <X509Certificate> > DownloadCertificateListAsync(OstcListeListe list) { var query = new OstcListe { Liste = list }; var queryData = OstcUtils.Serialize(query, Encoding.UTF8); ValidateData(queryData, OstcMessageType.ListData); var now = DateTime.Now; now = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, DateTimeKind.Local).ToUniversalTime(); var message = new TransportRequestType() { version = SupportedVersionsType.Item11, profile = ExtraProfileOstc, TransportHeader = CreateRequestHeader(now, OstcDataType.ListRequest, ExtraScenario.RequestWithResponse), TransportBody = new TransportRequestBodyType { Items = new object[] { new DataType { Item = new Base64CharSequenceType() { Value = queryData, }, }, }, }, }; ValidateRequest(message, OstcMessageType.List); var messageData = OstcExtraSerializer.Utf8.Serialize(message); var request = CreateRequest(Network.Requests.ListRequest); using (var requestStream = await Task.Factory.FromAsync(request.BeginGetRequestStream, request.EndGetRequestStream, null)) { requestStream.Write(messageData, 0, messageData.Length); } using (var response = await Task.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)) { var serializer = new XmlSerializer(typeof(TransportResponseType)); var responseData = (TransportResponseType)serializer.Deserialize(response.GetResponseStream()); var flags = responseData.TransportHeader.GetFlags().ToList(); if (flags.Any(x => x.weight == ExtraFlagWeight.Error)) { throw new Ostc2Exception(flags); } var data = ((Base64CharSequenceType)((DataType)responseData.TransportBody.Items[0]).Item).Value; var result = OstcUtils.ReadCertificates(new MemoryStream(data)); return(result); } }