Dart.PowerTCP.SslSockets Namespace > Tcp Class : CertificateReceived Event (Tcp) |
This event is raised when a certificate has been received to be authenticated.
[Visual Basic]
<CategoryAttribute("Security")>
<DescriptionAttribute("Raised when a remote certificate has been received for verification.")>
Public Event CertificateReceived() As CertificateReceivedEventHandler
[C#]
[CategoryAttribute("Security")]
[DescriptionAttribute("Raised when a remote certificate has been received for verification.")]
public event CertificateReceivedEventHandler CertificateReceived();
[C++]
[CategoryAttribute("Security")]
[DescriptionAttribute("Raised when a remote certificate has been received for verification.")]
public: __event CertificateReceivedEventHandler* CertificateReceived();
[C++/CLI]
[CategoryAttribute("Security")]
[DescriptionAttribute("Raised when a remote certificate has been received for verification.")]
public:
event CertificateReceivedEventHandler^ CertificateReceived();
The event handler receives an argument of type CertificateReceivedEventArgs containing data related to this event. The following CertificateReceivedEventArgs properties provide information specific to this event.
Property | Description |
---|---|
Accept | Controls whether or not the certificate is accepted. |
Certificate | The certificate received for authentication. |
RemoteEndPoint | Returns the endpoint of the remote host. |
TrustedRoot | Returns whether or not the certificate is from a Trusted Root Authority. |
ValidDate | Returns whether or not the current time-date is within the certificate's life span. |
ValidName | Returns whether or not the name is valid. |
The CertificateReceived event is raised when a certificate has been received from a secure server. A CertificateReceivedEventArgs object is passed into the event handler, containing information required to determine the validity of the certificate. If the certificate is determined to be invalid (if any of the properties ValidDate, ValidName, or TrustedRoot are false) the certificate is rejected. Accept is false to signify this. Set Accept to true to override this and accept the certificate.
The following example demonstrates creating a simple secure client.
[Visual Basic]
Private Sub SecureTest()
'Allow component to negotiate best security option
Tcp1.SecureProtocol = SecureProtocol.Auto
' Connect to a secure echo server.
Tcp1.Connect("mysecureserver", 7)
' Send secure data
Tcp1.Send("Test")
' Receive and display secure data
System.Diagnostics.Debug.WriteLine(Tcp1.Receive().ToString())
' Close the connection
Tcp1.Close()
End Sub
Private Sub Tcp1_CertificateRequested(ByVal sender As Object, ByVal e As System.EventArgs) Handles Tcp1.CertificateRequested
'The server has requested client authentication
'Allow the user to select a certificate
Dim certform As New CertificateListForm(True, True)
If (certform.ShowDialog(Me) = DialogResult.OK) Then
Tcp1.Certificate = certform.SelectedCertificate
End If
End Sub
Private Sub Tcp1_CertificateReceived(ByVal sender As Object, ByVal e As Dart.PowerTCP.SslSockets.CertificateReceivedEventArgs) Handles Tcp1.CertificateReceived
'If the server's certificate is invalid for any reason,
'the user can decide whether to proceed
Dim msg As String = "The certificate was invalid for the following reason(s)" + vbLf
' Check to see if the certificate is from a trusted root.
If (Not e.TrustedRoot) Then
msg += "This certificate is not from a trusted root" + vbLf
End If
' Check to see if the certificate has a valid date.
If (Not e.ValidDate) Then
msg += "This certificate does not have a valid date" + vbLf
End If
' Check to see if the certificate has a valid name.
If (Not e.ValidName) Then
msg += "This certificate does not have a valid name" + vbLf
End If
If (Not e.Accept) Then
msg += "Would you like to accept this certificate anyway?"
If (MessageBox.Show(msg, "Invalid Cert Received", MessageBoxButtons.YesNo) = DialogResult.Yes) Then
e.Accept = True
End If
End If
End Sub
[C#]
private void SecureTest()
{
//Allow component to negotiate best security option
tcp1.SecureProtocol = SecureProtocol.Auto;
// Connect to a secure echo server.
tcp1.Connect("mysecureserver", 7);
// Send secure data
tcp1.Send("Test");
// Receive and display secure data
System.Diagnostics.Debug.WriteLine(tcp1.Receive().ToString());
// Close the connection
tcp1.Close();
}
private void tcp1_CertificateRequested(object sender, System.EventArgs e)
{
//The server has requested client authentication
//Allow the user to select a certificate
CertificateListForm certform = new CertificateListForm(true,
true);
if(certform.ShowDialog(this) ==
DialogResult.OK)
tcp1.Certificate = certform.SelectedCertificate;
}
private void tcp1_CertificateReceived(object sender, CertificateReceivedEventArgs e)
{
//If the server's certificate is invalid for any reason,
//the user can decide whether to proceed
string msg = "The certificate was invalid for the following
reason(s)\n";
// Check to see if the certificate is from a trusted root.
if(!e.TrustedRoot)
msg+= "This certificate is not from a trusted root\n";
// Check to see if the certificate has a valid date.
if(!e.ValidDate)
msg+= "This certificate does not have a valid date\n";
// Check to see if the certificate has a valid name.
if(!e.ValidName)
msg+= "This certificate does not have a valid name\n";
if(!e.Accept)
{
msg += "Would you like to accept this certificate anyway?";
if(MessageBox.Show(msg, "Invalid
Cert Received", MessageBoxButtons.YesNo) == DialogResult.Yes)
e.Accept = true;
}
}
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
Send comments on this topic.
Documentation version 1.1.2.0.
© 2008 Dart Communications. All rights reserved.