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
(Chilkat2-Python) 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 v9.5.0.66.
import sys import chilkat2 # Note: This example requires Chilkat v9.5.0.66. # 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" sb = chilkat2.StringBuilder() bCrlf = True sb.AppendLine("-----BEGIN ENCRYPTED PRIVATE KEY-----",bCrlf) sb.AppendLine("MIGtMEkGCSqGSIb3DQEFDTA8MBsGCSqGSIb3DQEFDDAOBAiweNs9xIWNoAICCAAw",bCrlf) sb.AppendLine("HQYJYIZIAWUDBAECBBCz0IMryNxuJEo5ChMktg9cBGCsKDEeRqGJX4g/X2c6CNtK",bCrlf) sb.AppendLine("I8q7KClUwy9ms7ckHZAw/997WuW9QIGGnJEfHL/jSJsZViDwFAB4sunmdHSOTGMD",bCrlf) sb.AppendLine("3ZINNlkA+XobMaQtj1HNERtb1qskW1mf/X0sauw5aPA=",bCrlf) sb.AppendLine("-----END ENCRYPTED PRIVATE KEY-----",bCrlf) sb.AppendLine("-----BEGIN CERTIFICATE-----",bCrlf) sb.AppendLine("MIICzjCCAlOgAwIBAgIETULS8zAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJVUzEW",bCrlf) sb.AppendLine("MBQGA1UEChMNRW50cnVzdCwgSW5jLjEfMB0GA1UECxMWRm9yIFRlc3QgUHVycG9z",bCrlf) sb.AppendLine("ZXMgT25seTElMCMGA1UEAxMcRW50cnVzdCBFQ0MgRGVtb25zdHJhdGlvbiBDQTAe",bCrlf) sb.AppendLine("Fw0xNjAzMTgxMjM5MzFaFw0xNjA1MTcxMzA5MzFaMFgxHzAdBgNVBAsTFkZvciBU",bCrlf) sb.AppendLine("ZXN0IFB1cnBvc2VzIE9ubHkxHTAbBgNVBAsTFFBlcnNvbmEgTm90IFZlcmlmaWVk",bCrlf) sb.AppendLine("MRYwFAYDVQQDEw1DaGlsa2F0IEFkbWluMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE",bCrlf) sb.AppendLine("uB62JGMJKXnp1PNsOOIYKGhrzfLev3O+UuthL6UzEqNNDTd8dEYMUQP/DTS3qk98",bCrlf) sb.AppendLine("gyQEFxdmZUsPF0fFokkZZ1cV6z7QD3MsPvSjrBzB0GUB3r8CLnDK/F4pF2Q995hr",bCrlf) sb.AppendLine("o4HYMIHVMA4GA1UdDwEB/wQEAwIDiDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB",bCrlf) sb.AppendLine("BQUHAwQwNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDovL2NybC5lbnRydXN0LmNvbS9D",bCrlf) sb.AppendLine("UkwvZWNjZGVtby5jcmwwIAYDVR0RBBkwF4EVYWRtaW5AY2hpbGthdHNvZnQuY29t",bCrlf) sb.AppendLine("MB8GA1UdIwQYMBaAFCQFS+Fkghr4Ccz7eHkh+nDmkzLqMB0GA1UdDgQWBBTB82fm",bCrlf) sb.AppendLine("vrdG2iX5uS/agVW3L4DisjAJBgNVHRMEAjAAMAoGCCqGSM49BAMDA2kAMGYCMQCH",bCrlf) sb.AppendLine("ILghMprWoYPEp9mCE+tpVE7vYwkFV3m0RDzT2BSUezL8Ky78XNk+XPqSB2biT70C",bCrlf) sb.AppendLine("MQDCase1oaPY4AxCmjB+rEB1ir+QS8mrtF+iCSqHVv1aIxT6abQL57BZSdvwIm/T",bCrlf) sb.AppendLine("T8o=",bCrlf) sb.AppendLine("-----END CERTIFICATE-----",bCrlf) sb.AppendLine("-----BEGIN CERTIFICATE-----",bCrlf) sb.AppendLine("MIICljCCAhugAwIBAgIETUHhezAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJVUzEW",bCrlf) sb.AppendLine("MBQGA1UEChMNRW50cnVzdCwgSW5jLjEfMB0GA1UECxMWRm9yIFRlc3QgUHVycG9z",bCrlf) sb.AppendLine("ZXMgT25seTElMCMGA1UEAxMcRW50cnVzdCBFQ0MgRGVtb25zdHJhdGlvbiBDQTAe",bCrlf) sb.AppendLine("Fw0xMTAxMjcyMDQ5NTRaFw0zNjAxMjcyMTE5NTRaMG0xCzAJBgNVBAYTAlVTMRYw",bCrlf) sb.AppendLine("FAYDVQQKEw1FbnRydXN0LCBJbmMuMR8wHQYDVQQLExZGb3IgVGVzdCBQdXJwb3Nl",bCrlf) sb.AppendLine("cyBPbmx5MSUwIwYDVQQDExxFbnRydXN0IEVDQyBEZW1vbnN0cmF0aW9uIENBMHYw",bCrlf) sb.AppendLine("EAYHKoZIzj0CAQYFK4EEACIDYgAEhCWBpuJuzvRtQyibkcbCj7EkcwAqS2EqRQ/Q",bCrlf) sb.AppendLine("ntroTdRM2SssEN4TruTxtwcY/7lR64L6Tfjz3+ujrfjNFss3EWVpUlbOJ+xHC3xH",bCrlf) sb.AppendLine("PteNyAGZtHbZO3tVuhP6yX6dFqCCo4GLMIGIMCsGA1UdEAQkMCKADzIwMTEwMTI3",bCrlf) sb.AppendLine("MjA0OTU0WoEPMjAzNjAxMjcyMTE5NTRaMAsGA1UdDwQEAwIBBjAfBgNVHSMEGDAW",bCrlf) sb.AppendLine("gBQkBUvhZIIa+AnM+3h5Ifpw5pMy6jAdBgNVHQ4EFgQUJAVL4WSCGvgJzPt4eSH6",bCrlf) sb.AppendLine("cOaTMuowDAYDVR0TBAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAyAhA70OIb6lb",bCrlf) sb.AppendLine("fN6kOTQloHyCLmihNK+PT5wOuaMR//KSQP2c/H18YhDYnlwMxF9fAjEA0URaJOXM",bCrlf) sb.AppendLine("F0qwdvS2rm7N5PWMLc/4BbeOZyZ94XJiG5u96iTgp6N9JI0MMmCQE87N",bCrlf) sb.AppendLine("-----END CERTIFICATE-----",bCrlf) pem = chilkat2.Pem() success = pem.LoadPem(sb.GetAsString(),"secret123") if (success != True): print(pem.LastErrorText) sys.exit() # Get the private key and examine it in JSON Web Key form (JWK) # privKey is a CkPrivateKey privKey = pem.GetPrivateKey(0) if (pem.LastMethodSuccess != True): print(pem.LastErrorText) sys.exit() json = chilkat2.JsonObject() json.Load(privKey.GetJwk()) json.EmitCompact = False print(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: # cert is a CkCert cert = pem.GetCert(0) if (pem.LastMethodSuccess != True): print(pem.LastErrorText) sys.exit() certXml = cert.ExportCertXml() print(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> # # # |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.