QuickOPC User's Guide and Reference
ObtainNewCertificate(IEasyUAClientApplication,UAEndpointDescriptor) Method
Example 



OpcLabs.EasyOpcUA Assembly > OpcLabs.EasyOpc.UA.Application.Extensions Namespace > IEasyUAClientApplicationExtension Class > ObtainNewCertificate Method : ObtainNewCertificate(IEasyUAClientApplication,UAEndpointDescriptor) Method
The OPC UA client application object that will perform the operation.
The GDS endpoint acting as OPC UA certificate manager (CM).
Obtains a new application instance certificate from the certificate manager, and stores it for subsequent usage.
Syntax
'Declaration
 
<ExtensionAttribute()>
<NotNullAttribute()>
Public Overloads Shared Function ObtainNewCertificate( _
   ByVal application As IEasyUAClientApplication, _
   ByVal gdsEndpointDescriptor As UAEndpointDescriptor _
) As PkiCertificate
'Usage
 
Dim application As IEasyUAClientApplication
Dim gdsEndpointDescriptor As UAEndpointDescriptor
Dim value As PkiCertificate
 
value = IEasyUAClientApplicationExtension.ObtainNewCertificate(application, gdsEndpointDescriptor)

Parameters

application
The OPC UA client application object that will perform the operation.
gdsEndpointDescriptor
The GDS endpoint acting as OPC UA certificate manager (CM).

Return Value

Returns the certificate obtained from the certificate manager.
Remarks

The operation is synchronous. It can take considerable time to execute, because it involves multiple steps, and waiting for a finalization of the request by the GDS (see the OpcLabs.EasyOpc.UA.Gds.IEasyUACertificateManagementClient.FinishRequest method).

For an alternative based on asynchronous programming model (APM, System.IAsyncResult) pattern, see the BeginObtainNewCertificate method and related extension methods.

For a task-based asynchronous programming pattern alternative, see the ObtainNewCertificateAsync(IEasyUAClientApplication,UAEndpointDescriptor) extension method and its overloads.

Example
// Shows how to obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage.

using System;
using OpcLabs.BaseLib.Extensions;
using OpcLabs.BaseLib.Security.Cryptography.PkiCertificates;
using OpcLabs.EasyOpc.UA;
using OpcLabs.EasyOpc.UA.Application;
using OpcLabs.EasyOpc.UA.Application.Extensions;
using OpcLabs.EasyOpc.UA.Extensions;
using OpcLabs.EasyOpc.UA.OperationModel;

namespace UADocExamples.Application._IEasyUAClientApplication
{
    partial class ObtainNewCertificate
    {
        public static void Main1()
        {
            // Define which GDS we will work with.
            UAEndpointDescriptor gdsEndpointDescriptor =
                ((UAEndpointDescriptor)"opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer")
                .WithUserNameIdentity("appadmin", "demo");

            // Obtain the client application service.
            var client = new EasyUAClient();
            IEasyUAClientApplication clientApplication = client.GetService<IEasyUAClientApplication>();

            // Display which application we are about to work with.
            Console.WriteLine("Application URI string: {0}",
                clientApplication.GetApplicationElement().ApplicationUriString);
            
            // Obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage.
            PkiCertificate certificate;
            try
            {
                certificate = clientApplication.ObtainNewCertificate(gdsEndpointDescriptor);
            }
            catch (UAException uaException)
            {
                Console.WriteLine("*** Failure: {0}", uaException.GetBaseException().Message);
                return;
            }

            // Display results
            Console.WriteLine("Certificate: {0}", certificate);
        }
    }
}
// Shows how to obtain a new application certificate from the certificate manager (GDS),
// and store it for subsequent usage.

class procedure ObtainNewCertificate.Main;
var
  ApplicationElement: _UAApplicationElement;
  Certificate: _X509Certificate;
  Client: _EasyUAClient;
  ClientApplication: _EasyUAClientApplication;
  GdsEndpointDescriptor: _UAEndpointDescriptor;
  Parameters: _UAObtainNewCertificateParameters;
begin
  // Define which GDS we will work with.
  GdsEndpointDescriptor := CoUAEndpointDescriptor.Create;
  GdsEndpointDescriptor.UrlString := 'opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer';
  GdsEndpointDescriptor.UserIdentity.UserNameTokenInfo.UserName := 'appadmin';
  GdsEndpointDescriptor.UserIdentity.UserNameTokenInfo.Password := 'demo';

  // Obtain the client application service.
  Client := CoEasyUAClient.Create;
  ClientApplication := IInterface(Client.GetServiceByName('OpcLabs.EasyOpc.UA.Application.IEasyUAClientApplication, OpcLabs.EasyOpcUA')) as _EasyUAClientApplication;

  // Display which application we are about to work with.
  ApplicationElement := ClientApplication.GetApplicationElement;
  WriteLn('Application URI string: ', ClientApplication.GetApplicationElement.ApplicationUriString);

  // Obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage.
  Parameters := CoUAObtainNewCertificateParameters.Create;

  try
    Certificate := ClientApplication.ObtainNewCertificate(GdsEndpointDescriptor, Parameters);
  except
    on E: EOleException do
    begin
      WriteLn(Format('*** Failure: %s', [E.GetBaseException.Message]));
    end;
  end;

  // Display results
  WriteLn('Certificate: ', (Certificate as _PKICertificate).ToString);
end;
// Shows how to obtain a new application certificate from the certificate manager (GDS),
// and store it for subsequent usage.

// Define which GDS we will work with.
$GdsEndpointDescriptor = new COM("OpcLabs.EasyOpc.UA.UAEndpointDescriptor");
$GdsEndpointDescriptor->UrlString = "opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer";
$GdsEndpointDescriptor->UserIdentity->UserNameTokenInfo->UserName = "appadmin";
$GdsEndpointDescriptor->UserIdentity->UserNameTokenInfo->Password = "demo";

// Obtain the client application service.
$Client = new COM("OpcLabs.EasyOpc.UA.EasyUAClient");
$ClientApplication = $Client->GetServiceByName("OpcLabs.EasyOpc.UA.Application.IEasyUAClientApplication, OpcLabs.EasyOpcUA");

// Display which application we are about to work with.
$ApplicationElement = $ClientApplication->GetApplicationElement;
printf("Application URI string: %s\n", $ClientApplication->GetApplicationElement->ApplicationUriString);

// Obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage.
$Parameters = new COM("OpcLabs.EasyOpc.UA.Application.UAObtainNewCertificateParameters");

try
{
    $Certificate = $ClientApplication->ObtainNewCertificate($GdsEndpointDescriptor, $Parameters);
}
catch (com_exception $e)
{
    printf("*** Failure: %s\n", $e->getMessage());
    exit();
}

// Display results
printf("Certificate: %s\n", $Certificate);
' Shows how to obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage.

Imports OpcLabs.BaseLib.Extensions
Imports OpcLabs.BaseLib.Security.Cryptography.PkiCertificates
Imports OpcLabs.EasyOpc.UA
Imports OpcLabs.EasyOpc.UA.Application
Imports OpcLabs.EasyOpc.UA.Application.Extensions
Imports OpcLabs.EasyOpc.UA.Extensions
Imports OpcLabs.EasyOpc.UA.OperationModel

Namespace UADocExamples.Application._IEasyUAClientApplication
    Partial Friend Class ObtainNewCertificate
        Public Shared Sub Main1()

            ' Define which GDS we will work with.
            Dim gdsEndpointDescriptor As UAEndpointDescriptor =
                New UAEndpointDescriptor("opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer") _
                .WithUserNameIdentity("appadmin", "demo")

            ' Obtain the client application service.
            Dim client = New EasyUAClient()
            Dim clientApplication = client.GetService(Of IEasyUAClientApplication)()

            ' Display which application we are about to work with.
            Console.WriteLine("Application URI string: {0}",
                clientApplication.GetApplicationElement().ApplicationUriString)

            ' Obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage.
            Dim certificate As PkiCertificate
            Try
                certificate = clientApplication.ObtainNewCertificate(gdsEndpointDescriptor)
            Catch uaException As UAException
                Console.WriteLine("*** Failure: {0}", uaException.GetBaseException.Message)
                Exit Sub
            End Try

            ' Display results
            Console.WriteLine("Certificate: {0}", certificate)
        End Sub
    End Class
End Namespace
Rem Shows how to obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage.

Option Explicit

' Define which GDS we will work with.
Dim GdsEndpointDescriptor: Set GdsEndpointDescriptor = CreateObject("OpcLabs.EasyOpc.UA.UAEndpointDescriptor")
GdsEndpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer"
GdsEndpointDescriptor.UserIdentity.UserNameTokenInfo.UserName = "appadmin"
GdsEndpointDescriptor.UserIdentity.UserNameTokenInfo.Password = "demo"

' Obtain the client application service.
Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.UA.EasyUAClient")
Dim ClientApplication: Set ClientApplication = Client.GetServiceByName("OpcLabs.EasyOpc.UA.Application.IEasyUAClientApplication, OpcLabs.EasyOpcUA")

' Display which application we are about to work with.
Dim ApplicationElement: Set ApplicationElement = ClientApplication.GetApplicationElement
WScript.Echo "Application URI string: " & ClientApplication.GetApplicationElement.ApplicationUriString

Rem Obtain a new application certificate from the certificate manager (GDS), and store it for subsequent usage.
Dim Parameters: Set Parameters = CreateObject("OpcLabs.EasyOpc.UA.Application.UAObtainNewCertificateParameters")
On Error Resume Next
Dim Certificate: Set Certificate = ClientApplication.ObtainNewCertificate(GdsEndpointDescriptor, Parameters)
If Err.Number <> 0 Then
    WScript.Echo "*** Failure: " & Err.Source & ": " & Err.Description
    WScript.Quit
End If
On Error Goto 0

' Display results
WScript.Echo "Certificate: " & Certificate
Requirements

Target Platforms: .NET Framework: Windows 7 with SP1, Windows Server 2012; .NET Core: Linux, Microsoft Windows

See Also

Reference

IEasyUAClientApplicationExtension Class
IEasyUAClientApplicationExtension Members
Overload List