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
(Visual FoxPro) RSA Sign using a Private Key on a USB Token or SmartcardSee more Apple Keychain ExamplesCreate an RSA signature using a private key stored on a USB token or smartcard. Note: On MacOS and iOS, this example requires Chilkat v10.1.2 or later when the Apple Keychain is used as the underlying means to do the signing.
LOCAL loCert LOCAL lnSuccess LOCAL loBd LOCAL i LOCAL loRsa LOCAL loBdSig * Assuming the smartcard/USB token is installed with the correct drivers from the manufacturer, * this code can work on multiple platforms including Windows, MacOS, Linux, and iOS. * Chilkat automatically detects and determines the way in which the HSM is used, * which can be by PKCS11, Apple Keychain, Microsoft CNG / Crypto API, or ScMinidriver. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Cert') loCert = CreateObject('Chilkat.Cert') * Set the token/smartcard PIN prior to loading. loCert.SmartCardPin = "123456" * Specify the certificate by its common name. lnSuccess = loCert.LoadFromSmartcard("cn=chilkat-rsa-2048") IF (lnSuccess = 0) THEN ? loCert.LastErrorText RELEASE loCert CANCEL ENDIF ? "Signing with cert: " + loCert.SubjectCN * Create data to be hashed and signed. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.BinData') loBd = CreateObject('Chilkat.BinData') FOR i = 0 TO 100 loBd.AppendEncoded("000102030405060708090A0B0C0D0E0F","hex") NEXT * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Rsa') loRsa = CreateObject('Chilkat.Rsa') * Use the certificate's private key for signing. lnSuccess = loRsa.SetX509Cert(loCert,1) IF (lnSuccess = 0) THEN ? loRsa.LastErrorText RELEASE loCert RELEASE loBd RELEASE loRsa CANCEL ENDIF * Sign the SHA-256 hash of the contents of bd. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.BinData') loBdSig = CreateObject('Chilkat.BinData') lnSuccess = loRsa.SignBd(loBd,"sha256",loBdSig) IF (lnSuccess = 0) THEN ? loRsa.LastErrorText RELEASE loCert RELEASE loBd RELEASE loRsa RELEASE loBdSig CANCEL ENDIF * The RSA signature is equal in length to the size of the RSA key. ? "Output signature size in bits = " + STR(loBdSig.NumBytes * 8) * We can save the signature for later verification.. loBdSig.WriteFile("rsaSignatures/test1.sig") * See the example to verify the RSA signature: * Verfies an RSA Signature RELEASE loCert RELEASE loBd RELEASE loRsa RELEASE loBdSig |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.