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) RSA Sign String using Private Key of Certificate Type A3 (smart card / token)Demonstrates RSA signing a string using the private key of a certificate type A3 (smart card, token). Note: This is a Windows-only example.
IncludeFile "CkCertStore.pb" IncludeFile "CkCert.pb" IncludeFile "CkRsa.pb" Procedure ChilkatExample() ; First get the A3 certificate that was installed on the Windows system. certStore.i = CkCertStore::ckCreate() If certStore.i = 0 Debug "Failed to create object." ProcedureReturn EndIf thumbprint.s = "12c1dd8015f3f03f7b1fa619dc24e2493ca8b4b2" ; This is specific to Windows because it is opening the Windows Current-User certificate store. bReadOnly.i = 1 success.i = CkCertStore::ckOpenCurrentUserStore(certStore,bReadOnly) If success <> 1 Debug CkCertStore::ckLastErrorText(certStore) CkCertStore::ckDispose(certStore) ProcedureReturn EndIf ; Find the certificate with the desired thumbprint ; (There are many ways to locate a certificate. This example chooses to find by thumbprint.) cert.i = CkCertStore::ckFindCertBySha1Thumbprint(certStore,thumbprint) If CkCertStore::ckLastMethodSuccess(certStore) <> 1 Debug "Failed to find the certificate." CkCertStore::ckDispose(certStore) ProcedureReturn EndIf Debug "Found: " + CkCert::ckSubjectCN(cert) rsa.i = CkRsa::ckCreate() If rsa.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Provide the cert's private key bUsePrivateKey.i = 1 success = CkRsa::ckSetX509Cert(rsa,cert,bUsePrivateKey) CkCert::ckDispose(cert) If success <> 1 Debug CkRsa::ckLastErrorText(rsa) CkCertStore::ckDispose(certStore) CkRsa::ckDispose(rsa) ProcedureReturn EndIf ; Return the RSA signature in base64 encoded form. CkRsa::setCkEncodingMode(rsa, "base64") ; Sign the utf-8 byte representation of the string. CkRsa::setCkCharset(rsa, "utf-8") ; You can also choose other hash algorithms, such as SHA-1. sigBase64.s = CkRsa::ckSignStringENC(rsa,"text to sign","SHA-256") If CkRsa::ckLastMethodSuccess(rsa) <> 1 Debug CkRsa::ckLastErrorText(rsa) CkCertStore::ckDispose(certStore) CkRsa::ckDispose(rsa) ProcedureReturn EndIf Debug "Base64 signature: " + sigBase64 CkCertStore::ckDispose(certStore) CkRsa::ckDispose(rsa) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.