Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi DLL) Get Certificate User Principal Name (UPN)See more Certificates ExamplesDemonstrates how to get a certificate's UPN from the SAN (Subject Alternative Name). Most certificates do not have a UPN. This example only applies to those certificates that have a User Principal Name. Note: This example requires Chilkat v9.5.0.90 or greater due to fixes made in getting the UPN from the SAN.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Cert, Xml; ... procedure TForm1.Button1Click(Sender: TObject); var cert: HCkCert; success: Boolean; xml: HCkXml; upn: PWideChar; begin cert := CkCert_Create(); success := CkCert_LoadFromFile(cert,'qa_data/certs/sample.cer'); if (success = False) then begin Memo1.Lines.Add(CkCert__lastErrorText(cert)); Exit; end; xml := CkXml_Create(); CkXml_LoadXml(xml,CkCert__subjectAlternativeName(cert)); Memo1.Lines.Add(CkXml__getXml(xml)); // A certificate with a User Principal Name in the SAN might have this: // <SubjectAltName> // <rfc822Name>joe@example.com</rfc822Name> // <name type="oid" oid="1.3.6.1.4.1.311.20.2.3">joe@example.com</name> // </SubjectAltName> // The OID 1.3.6.1.4.1.311.20.2.3 is for the User Principal Name. upn := CkXml__chilkatPath(xml,'/A/name,oid,1.3.6.1.4.1.311.20.2.3|*'); if (CkXml_getLastMethodSuccess(xml) = False) then begin Memo1.Lines.Add('No user principle name.'); end else begin Memo1.Lines.Add('User Principle Name = ' + upn); end; CkCert_Dispose(cert); CkXml_Dispose(xml); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.