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
(DataFlex) Get a .pfx/.p12 Safe Bag AttributeDemonstrates how to get the value of a private key or certificate safe bag attribute. Safe bag attributes are associated with a key or certificate. They are attributes stored in the .p12/.pfx alongside a key or certificate. Note: This example requires Chilkat v9.5.0.83 or greater.
Use ChilkatAx-win32.pkg Procedure Test Handle hoPfx Boolean iSuccess Variant vJson Handle hoJson Boolean iGetPrivateKeyAttr Integer iPrivateKeyIdx String sTemp1 Get Create (RefClass(cComChilkatPfx)) To hoPfx If (Not(IsComObjectCreated(hoPfx))) Begin Send CreateComObject of hoPfx End Get ComLoadPfxFile Of hoPfx "qa_data/pfx/test_ecdsa_secret.pfx" "secret" To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoPfx To sTemp1 Showln sTemp1 Procedure_Return End Get ComLastJsonData Of hoPfx To vJson If (IsComObject(vJson)) Begin Get Create (RefClass(cComChilkatJsonObject)) To hoJson Set pvComObject Of hoJson To vJson End Set ComEmitCompact Of hoJson To False Get ComEmit Of hoJson To sTemp1 Showln sTemp1 Send Destroy of hoJson // The LastJsonData provides information about the what is contained in the PFX after loading. // For example: // { // "authenticatedSafe": { // "contentInfo": [ // { // "type": "Data", // "safeBag": [ // { // "type": "pkcs8ShroudedKeyBag", // "attrs": { // "localKeyId": "16777216", // "keyContainerName": "{B99EB9E7-6AF7-42AF-A43A-D4B2225B7605}", // "msStorageProvider": "Microsoft Software Key Storage Provider" // } // } // ] // }, // { // "type": "EncryptedData", // "safeBag": [ // { // "type": "certBag", // "attrs": { // "localKeyId": "16777216" // }, // "subject": "EE", // "serialNumber": "1a9da86df17ad411bb413b2aa724fe56fc71242d" // }, // { // "type": "certBag", // "subject": "CA", // "serialNumber": "02742228acbf3dd2e71f403abd8281ab6d70d490" // } // ] // } // ] // } // } // Use this online tool to generate parsing code from sample JSON: // Generate Parsing Code from JSON // In the above JSON, we can see the .pfx contains one private key (a pkcs8ShroudedKeyBag) and two certificates (each in a certBag). // The certificates in a .pfx/.p12 are typicaly a single certificate with associated private key, along with the other certificates // in the chain of authentication. // We can see that the private key has 3 safebag attributes: localKeyId, keyContainerName, and msStorageProvider. // The certificate associated with the private key contains one safebag attribute: localKeyId. // Notice the localKeyId is the same. The localKeyId helps associate the private key that corresponds to the given certificate. // Let's demonstrate the GetSafeBagAttr method: // Get each of the private key safebag attributes: Move True To iGetPrivateKeyAttr Move 0 To iPrivateKeyIdx Showln "---- private key safebag attributes ----" Get ComGetSafeBagAttr Of hoPfx iGetPrivateKeyAttr iPrivateKeyIdx "localKeyId" To sTemp1 Showln sTemp1 Get ComGetSafeBagAttr Of hoPfx iGetPrivateKeyAttr iPrivateKeyIdx "keyContainerName" To sTemp1 Showln sTemp1 Get ComGetSafeBagAttr Of hoPfx iGetPrivateKeyAttr iPrivateKeyIdx "storageProvider" To sTemp1 Showln sTemp1 // Get the localKeyId attribute for the 1st certificate. Move False To iGetPrivateKeyAttr Showln "---- cert safebag attributes ----" Get ComGetSafeBagAttr Of hoPfx iGetPrivateKeyAttr 0 "localKeyId" To sTemp1 Showln sTemp1 End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.