Sample code for 30+ languages & platforms
Visual FoxPro

Get Certificate User Principal Name (UPN)

See more Certificates Examples

Demonstrates 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.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loCert
LOCAL loXml
LOCAL lcUpn

lnSuccess = 0

loCert = CreateObject('Chilkat.Cert')

lnSuccess = loCert.LoadFromFile("qa_data/certs/sample.cer")
IF (lnSuccess = 0) THEN
    ? loCert.LastErrorText
    RELEASE loCert
    CANCEL
ENDIF

loXml = CreateObject('Chilkat.Xml')
loXml.LoadXml(loCert.SubjectAlternativeName)
? loXml.GetXml()

* 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.
lcUpn = loXml.ChilkatPath("/A/name,oid,1.3.6.1.4.1.311.20.2.3|*")
IF (loXml.LastMethodSuccess = 0) THEN
    ? "No user principle name."
ELSE
    ? "User Principle Name = " + lcUpn
ENDIF

RELEASE loCert
RELEASE loXml