![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PowerBuilder) Load Encrypted PEM Containing ECC Private Key and Certs and Examine ContentsLoads an encrypted PEM containing an ECC private key and ECC certificate (and chain), and examines the contents. Note: This example requires Chilkat v11.0.0 or greater.
integer li_rc integer li_Success oleobject loo_Sb integer li_BCrlf oleobject loo_Pem oleobject loo_PrivKey oleobject loo_Json oleobject loo_Cert string ls_CertXml li_Success = 0 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // Create a PEM containing a valid EC private key and certificates. // The password for this encrypted PEM is "secret123" loo_Sb = create oleobject li_rc = loo_Sb.ConnectToNewObject("Chilkat.StringBuilder") if li_rc < 0 then destroy loo_Sb MessageBox("Error","Connecting to COM object failed") return end if li_BCrlf = 1 loo_Sb.AppendLine("-----BEGIN ENCRYPTED PRIVATE KEY-----",li_BCrlf) loo_Sb.AppendLine("MIGtMEkGCSqGSIb3DQEFDTA8MBsGCSqGSIb3DQEFDDAOBAiweNs9xIWNoAICCAAw",li_BCrlf) loo_Sb.AppendLine("HQYJYIZIAWUDBAECBBCz0IMryNxuJEo5ChMktg9cBGCsKDEeRqGJX4g/X2c6CNtK",li_BCrlf) loo_Sb.AppendLine("I8q7KClUwy9ms7ckHZAw/997WuW9QIGGnJEfHL/jSJsZViDwFAB4sunmdHSOTGMD",li_BCrlf) loo_Sb.AppendLine("3ZINNlkA+XobMaQtj1HNERtb1qskW1mf/X0sauw5aPA=",li_BCrlf) loo_Sb.AppendLine("-----END ENCRYPTED PRIVATE KEY-----",li_BCrlf) loo_Sb.AppendLine("-----BEGIN CERTIFICATE-----",li_BCrlf) loo_Sb.AppendLine("MIICzjCCAlOgAwIBAgIETULS8zAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJVUzEW",li_BCrlf) loo_Sb.AppendLine("MBQGA1UEChMNRW50cnVzdCwgSW5jLjEfMB0GA1UECxMWRm9yIFRlc3QgUHVycG9z",li_BCrlf) loo_Sb.AppendLine("ZXMgT25seTElMCMGA1UEAxMcRW50cnVzdCBFQ0MgRGVtb25zdHJhdGlvbiBDQTAe",li_BCrlf) loo_Sb.AppendLine("Fw0xNjAzMTgxMjM5MzFaFw0xNjA1MTcxMzA5MzFaMFgxHzAdBgNVBAsTFkZvciBU",li_BCrlf) loo_Sb.AppendLine("ZXN0IFB1cnBvc2VzIE9ubHkxHTAbBgNVBAsTFFBlcnNvbmEgTm90IFZlcmlmaWVk",li_BCrlf) loo_Sb.AppendLine("MRYwFAYDVQQDEw1DaGlsa2F0IEFkbWluMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE",li_BCrlf) loo_Sb.AppendLine("uB62JGMJKXnp1PNsOOIYKGhrzfLev3O+UuthL6UzEqNNDTd8dEYMUQP/DTS3qk98",li_BCrlf) loo_Sb.AppendLine("gyQEFxdmZUsPF0fFokkZZ1cV6z7QD3MsPvSjrBzB0GUB3r8CLnDK/F4pF2Q995hr",li_BCrlf) loo_Sb.AppendLine("o4HYMIHVMA4GA1UdDwEB/wQEAwIDiDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB",li_BCrlf) loo_Sb.AppendLine("BQUHAwQwNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDovL2NybC5lbnRydXN0LmNvbS9D",li_BCrlf) loo_Sb.AppendLine("UkwvZWNjZGVtby5jcmwwIAYDVR0RBBkwF4EVYWRtaW5AY2hpbGthdHNvZnQuY29t",li_BCrlf) loo_Sb.AppendLine("MB8GA1UdIwQYMBaAFCQFS+Fkghr4Ccz7eHkh+nDmkzLqMB0GA1UdDgQWBBTB82fm",li_BCrlf) loo_Sb.AppendLine("vrdG2iX5uS/agVW3L4DisjAJBgNVHRMEAjAAMAoGCCqGSM49BAMDA2kAMGYCMQCH",li_BCrlf) loo_Sb.AppendLine("ILghMprWoYPEp9mCE+tpVE7vYwkFV3m0RDzT2BSUezL8Ky78XNk+XPqSB2biT70C",li_BCrlf) loo_Sb.AppendLine("MQDCase1oaPY4AxCmjB+rEB1ir+QS8mrtF+iCSqHVv1aIxT6abQL57BZSdvwIm/T",li_BCrlf) loo_Sb.AppendLine("T8o=",li_BCrlf) loo_Sb.AppendLine("-----END CERTIFICATE-----",li_BCrlf) loo_Sb.AppendLine("-----BEGIN CERTIFICATE-----",li_BCrlf) loo_Sb.AppendLine("MIICljCCAhugAwIBAgIETUHhezAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJVUzEW",li_BCrlf) loo_Sb.AppendLine("MBQGA1UEChMNRW50cnVzdCwgSW5jLjEfMB0GA1UECxMWRm9yIFRlc3QgUHVycG9z",li_BCrlf) loo_Sb.AppendLine("ZXMgT25seTElMCMGA1UEAxMcRW50cnVzdCBFQ0MgRGVtb25zdHJhdGlvbiBDQTAe",li_BCrlf) loo_Sb.AppendLine("Fw0xMTAxMjcyMDQ5NTRaFw0zNjAxMjcyMTE5NTRaMG0xCzAJBgNVBAYTAlVTMRYw",li_BCrlf) loo_Sb.AppendLine("FAYDVQQKEw1FbnRydXN0LCBJbmMuMR8wHQYDVQQLExZGb3IgVGVzdCBQdXJwb3Nl",li_BCrlf) loo_Sb.AppendLine("cyBPbmx5MSUwIwYDVQQDExxFbnRydXN0IEVDQyBEZW1vbnN0cmF0aW9uIENBMHYw",li_BCrlf) loo_Sb.AppendLine("EAYHKoZIzj0CAQYFK4EEACIDYgAEhCWBpuJuzvRtQyibkcbCj7EkcwAqS2EqRQ/Q",li_BCrlf) loo_Sb.AppendLine("ntroTdRM2SssEN4TruTxtwcY/7lR64L6Tfjz3+ujrfjNFss3EWVpUlbOJ+xHC3xH",li_BCrlf) loo_Sb.AppendLine("PteNyAGZtHbZO3tVuhP6yX6dFqCCo4GLMIGIMCsGA1UdEAQkMCKADzIwMTEwMTI3",li_BCrlf) loo_Sb.AppendLine("MjA0OTU0WoEPMjAzNjAxMjcyMTE5NTRaMAsGA1UdDwQEAwIBBjAfBgNVHSMEGDAW",li_BCrlf) loo_Sb.AppendLine("gBQkBUvhZIIa+AnM+3h5Ifpw5pMy6jAdBgNVHQ4EFgQUJAVL4WSCGvgJzPt4eSH6",li_BCrlf) loo_Sb.AppendLine("cOaTMuowDAYDVR0TBAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAyAhA70OIb6lb",li_BCrlf) loo_Sb.AppendLine("fN6kOTQloHyCLmihNK+PT5wOuaMR//KSQP2c/H18YhDYnlwMxF9fAjEA0URaJOXM",li_BCrlf) loo_Sb.AppendLine("F0qwdvS2rm7N5PWMLc/4BbeOZyZ94XJiG5u96iTgp6N9JI0MMmCQE87N",li_BCrlf) loo_Sb.AppendLine("-----END CERTIFICATE-----",li_BCrlf) loo_Pem = create oleobject li_rc = loo_Pem.ConnectToNewObject("Chilkat.Pem") li_Success = loo_Pem.LoadPem(loo_Sb.GetAsString(),"secret123") if li_Success = 0 then Write-Debug loo_Pem.LastErrorText destroy loo_Sb destroy loo_Pem return end if // Get the private key and examine it in JSON Web Key form (JWK) loo_PrivKey = create oleobject li_rc = loo_PrivKey.ConnectToNewObject("Chilkat.PrivateKey") li_Success = loo_Pem.PrivateKeyAt(0,loo_PrivKey) if li_Success = 0 then Write-Debug loo_Pem.LastErrorText destroy loo_Sb destroy loo_Pem destroy loo_PrivKey return end if loo_Json = create oleobject li_rc = loo_Json.ConnectToNewObject("Chilkat.JsonObject") loo_Json.Load(loo_PrivKey.GetJwk()) loo_Json.EmitCompact = 0 Write-Debug loo_Json.Emit() // JWK output: // { // "kty": "EC", // "crv": "P-384", // "x": "uB62JGMJKXnp1PNsOOIYKGhrzfLev3O-UuthL6UzEqNNDTd8dEYMUQP_DTS3qk98", // "y": "gyQEFxdmZUsPF0fFokkZZ1cV6z7QD3MsPvSjrBzB0GUB3r8CLnDK_F4pF2Q995hr", // "d": "ugTy2ZpuQqv1uQyLSgz1SPRvngzrd5vLyzU2ICaJd25zZRIxxlNR-uFo9UWC6llt" // } // Now get 1st certificate and examine in XML format: loo_Cert = create oleobject li_rc = loo_Cert.ConnectToNewObject("Chilkat.Cert") li_Success = loo_Pem.CertAt(0,loo_Cert) if li_Success = 0 then Write-Debug loo_Pem.LastErrorText destroy loo_Sb destroy loo_Pem destroy loo_PrivKey destroy loo_Json destroy loo_Cert return end if ls_CertXml = loo_Cert.ExportCertXml() Write-Debug ls_CertXml // XML output: // <?xml version="1.0" encoding="utf-8" ?> // <sequence> // <sequence> // <contextSpecific tag="0" constructed="1"> // <int>02</int> // </contextSpecific> // <int>4D42D2F3</int> // <sequence> // <oid>1.2.840.10045.4.3.3</oid> // </sequence> // <sequence> // <set> // <sequence> // <oid>2.5.4.6</oid> // <printable>US</printable> // </sequence> // </set> // <set> // <sequence> // <oid>2.5.4.10</oid> // <printable>Entrust, Inc.</printable> // </sequence> // </set> // <set> // <sequence> // <oid>2.5.4.11</oid> // <printable>For Test Purposes Only</printable> // </sequence> // </set> // <set> // <sequence> // <oid>2.5.4.3</oid> // <printable>Entrust ECC Demonstration CA</printable> // </sequence> // </set> // </sequence> // <sequence> // <utctime>160318123931Z</utctime> // <utctime>160517130931Z</utctime> // </sequence> // <sequence> // <set> // <sequence> // <oid>2.5.4.11</oid> // <printable>For Test Purposes Only</printable> // </sequence> // </set> // <set> // <sequence> // <oid>2.5.4.11</oid> // <printable>Persona Not Verified</printable> // </sequence> // </set> // <set> // <sequence> // <oid>2.5.4.3</oid> // <printable>Chilkat Admin</printable> // </sequence> // </set> // </sequence> // <sequence> // <sequence> // <oid>1.2.840.10045.2.1</oid> // <oid>1.3.132.0.34</oid> // </sequence> // <bits n="776">04B81EB62463092979E9D4F36C38E21828686BCDF2DEBF73BE52EB612FA53312A34D0D377C74460C5103FF0D34B7AA4F7C832404171766654B0F1747C5A24919675715EB3ED00F732C3EF4A3AC1CC1D06501DEBF022E70CAFC5E2917643DF7986B</bits> // </sequence> // <contextSpecific tag="3" constructed="1"> // <sequence> // <sequence> // <oid>2.5.29.15</oid> // <bool>1</bool> // <octets>AwIDiA==</octets> // </sequence> // <sequence> // <oid>2.5.29.37</oid> // <octets>MBQGCCsGAQUFBwMCBggrBgEFBQcDBA==</octets> // </sequence> // <sequence> // <oid>2.5.29.31</oid> // <octets>MC4wLKAqoCiGJmh0dHA6Ly9jcmwuZW50cnVzdC5jb20vQ1JML2VjY2RlbW8uY3Js</octets> // </sequence> // <sequence> // <oid>2.5.29.17</oid> // <octets>MBeBFWFkbWluQGNoaWxrYXRzb2Z0LmNvbQ==</octets> // </sequence> // <sequence> // <oid>2.5.29.35</oid> // <octets>MBaAFCQFS+Fkghr4Ccz7eHkh+nDmkzLq</octets> // </sequence> // <sequence> // <oid>2.5.29.14</oid> // <octets>BBTB82fmvrdG2iX5uS/agVW3L4Disg==</octets> // </sequence> // <sequence> // <oid>2.5.29.19</oid> // <octets>MAA=</octets> // </sequence> // </sequence> // </contextSpecific> // </sequence> // <sequence> // <oid>1.2.840.10045.4.3.3</oid> // </sequence> // <bits n="832">30660231008720B821329AD6A183C4A7D98213EB69544EEF6309055779B4443CD3D814947B32FC2B2EFC5CD93E5CFA920766E24FBD023100C26AC7B5A1A3D8E00C429A307EAC40758ABF904BC9ABB45FA2092A8756FD5A2314FA69B40BE7B05949DBF0226FD34FCA</bits> // </sequence> // // // destroy loo_Sb destroy loo_Pem destroy loo_PrivKey destroy loo_Json destroy loo_Cert |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.