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
(PureBasic) About RSA Public/Private KeysThis example provides some additional information for understanding public/private key pairs. In demonstrates how a private key is a superset of the public key. A public key contains the modulus and exponent. The matching private key also contains the modulus and exponent, but also contains the additional private key parts.
IncludeFile "CkCert.pb" IncludeFile "CkPrivateKey.pb" IncludeFile "CkPublicKey.pb" Procedure ChilkatExample() cert.i = CkCert::ckCreate() If cert.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i ; Load a digital certificate. success = CkCert::ckLoadFromFile(cert,"digitalCert.cer") If success <> 1 Debug CkCert::ckLastErrorText(cert) CkCert::ckDispose(cert) ProcedureReturn EndIf pubKey.i ; A .cer file does not contain the private key. It should contain ; the public key... pubKey = CkCert::ckExportPublicKey(cert) ; Let's have a look at it (in XML format). Debug "Public Key from Certificate:" Debug CkPublicKey::ckGetXml(pubKey) ; An RSA public key consists of a modulus and exponent. ; An RSA private key includes both the modulus and exponent, ; as well as other "big" numbers: P, Q, D, etc. ; Let's load an RSA private key from a DER-encoded file: privKey.i = CkPrivateKey::ckCreate() If privKey.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkPrivateKey::ckLoadAnyFormatFile(privKey,"PrivateKey.key","") If success <> 1 Debug CkPrivateKey::ckLastErrorText(privKey) CkPublicKey::ckDispose(pubKey) CkCert::ckDispose(cert) CkPrivateKey::ckDispose(privKey) ProcedureReturn EndIf ; If this private key is the matching half to the public key from ; the certificate, then the modulus and exponent should ; be identical. (Thus, a "private key" really contains both the public part as well as the private parts...). Debug "Private Key from DER:" Debug CkPrivateKey::ckGetXml(privKey) CkPublicKey::ckDispose(pubKey) CkCert::ckDispose(cert) CkPrivateKey::ckDispose(privKey) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.