Hi all,
Finally it is working, thanks a lot for showing me the right way :)
(I had some problems with compilation in csharp, so I had to rewrite
into vb)
Imports System
Imports System.Security
Imports System.Security .Cryptography.X 509Certificates
Imports System.Collecti ons.Generic
Imports System.Componen tModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows. Forms
Imports System.Net
Imports System.Net.WebC lient
Imports System.IO
Public Class Form1
Private Sub Button1_Click(B yVal sender As Object, ByVal e As
System.EventArg s) Handles Button1.Click
System.Net.Serv icePointManager .CertificatePol icy = New
AcceptAllCertif icatePolicy
Dim userString As String = "UserName"
Dim passwString As String = "Password12 3"
Dim userpaswString As String = userString & ":" & passwString
Dim queryString As String = "<ping/>"
Dim AuthBytes As Byte() =
System.Text.Enc oding.ASCII.Get Bytes(userpaswS tring)
Dim headerString As String =
Convert.ToBase6 4String(AuthByt es)
'Load the certificate from a file
Dim cert As X509Certificate 2 = New X509Certificate 2("C:
\cert.pfx", "CertPassw1 23")
Dim request As HttpWebRequest =
ttpWebRequest.C reate("https://
extranet.mooa.c om:8225")
request.ClientC ertificates.Add (cert)
request.Method = "POST"
request.Content Type = "text/xml"
request.Headers .Add("Authoriza tion: Basic " & headerString)
request.Timeout = 10000
'write data to request
Dim reqPostBuffer As Byte() =
System.Text.Enc oding.UTF8.GetB ytes(queryStrin g)
request.Content Length = reqPostBuffer.L ength
Dim reqPostData As Stream = request.GetRequ estStream()
reqPostData.Wri te(reqPostBuffe r, 0, reqPostBuffer.L ength)
reqPostData.Clo se()
Dim reqWebResponse As HttpWebResponse = request.GetResp onse()
Dim enc As Encoding = System.Text.Enc oding.UTF8
Dim reqResponseStre am As StreamReader = New
reamReader(reqW ebResponse.GetR esponseStream() , enc)
Dim resHtml As String = reqResponseStre am.ReadToEnd()
Debug.Print(res Html)
reqWebResponse. Close()
reqResponseStre am.Close()
End Sub
Private Class AcceptAllCertif icatePolicy
Implements System.Net.ICer tificatePolicy
Public Function CheckValidation Result(ByVal srvPoint As
System.Net.Serv icePoint, ByVal certificate As
System.Security .Cryptography.X 509Certificates .X509Certificat e, ByVal
request As System.Net.WebR equest, ByVal certificateProb lem As
Integer)
As Boolean Implements
System.Net.ICer tificatePolicy. CheckValidation Result
Return True
End Function
End Class
End Class
On May 28, 2:21 pm, j...@post.cz wrote:
Thank you for quick response :)
But I have another (probably silly) question (and sorry for that,
because I have just started working with C#).
In my case it seems theat I am not able to add certificate to
WebRequest, I got following error message:
ClientCertifica tes' is not a member of 'System.Net.Web Request
Is it another wrong reference?
Thank you for your advice.
Jitsu
On May 27, 11:54 pm, "Miroslav Stampar [MCSD.NET / Security+]"
<miroslav.stam. ..@gmail.comwro te:
you have to add reference to System.Security manually (right click on
References -Add reference -System.Security ).
j...@post.cz je napisao/la:
Many thanks for the response. I didn't have time to try it until
tomorrow,
but when I had tried it I received an error message:
"The name 'X509Certificat e2UI' does not exist in the current context"
Do you have any Idea where could be the problem?
Jitsu
Miroslav Stampar napsal:
using System;
using System.Collecti ons.Generic;
using System.Componen tModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows. Forms;
using System.Net;
using System.IO;
using System.Security .Cryptography.X 509Certificates ;
...
X509Store store = new X509Store(Store Name.My,
StoreLocation.C urrentUser);
store.Open(Open Flags.ReadOnly |
OpenFlags.OpenE xistingOnly);
//add reference to System.Security
X509Certificate 2Collection certs =
X509Certificate 2UI.SelectFromC ollection(store .Certificates,
"Certificat es", "Please select certificate to
use", X509SelectionFl ag.SingleSelect ion);
HttpWebRequest request = WebRequest.Crea te("https://
extranet.com:84 43");
string queryString = "<invoicing ver=\"1\" action=\"abc
\"><ID>155</ID></invoicing>";
request.ClientC ertificates.Add (certs[0]);
request.Method = "POST";
request.Content Type = "text/xml";
request.Content Length = queryString.Len gth;
request.Timeout = 10000;
BinaryWriter tempBinaryWrite r = new
BinaryWriter(re quest.GetReques tStream());
tempBinaryWrite r.Write(querySt ring);
tempBinaryWrite r.Flush();
StreamReader streamReader = new
StreamReader(re quest.GetRespon se().GetRespons eStream());
string response = streamReader.Re adToEnd();
Hope this helps :)- Hide quoted text -
- Show quoted text -- Hide quoted text -
- Show quoted text -