简体   繁体   中英

Sign a PDF using SmartCard

I have tried to sign pdf using a smart card with Node JS chilkat but it fails. and I found this error when I put the smart card and install here driver on my computer then I execute my code: I cannot find the best solution

> TnTrust Token ChilkatLog:   LoadFromSmartcard(123984ms):
>     DllDate: Dec  2 2021
>     ChilkatVersion: 9.5.0.89
>     UnlockPrefix: Auto unlock for 30-day trial
>     Architecture: Little Endian; 64-bit
>     Language: Windows Node.js
>     VerboseLogging: 1
>     NoScminidriver present in UncommonOptions
>       chosenCsp: TnTrust Token
>     --chooseSmartcardLegacyCsp
>     loadFromSmartcard_capi(3078ms):
>       loadSmartcardCert:
>         kcGetKpCertificate:
>           providerName: TnTrust Token
>           bExchangeKey: False
>           WindowsError: Acc�s refus�.
>           WindowsErrorCode: 0x80090010
>         --kcGetKpCertificate
>         retry with opposite choice...
>         kcGetKpCertificate:
>           providerName: TnTrust Token
>           bExchangeKey: True
>           WindowsError: Acc�s refus�.
>           WindowsErrorCode: 0x80090010
>         --kcGetKpCertificate
>         Unable to get the key provider certificate.
>       --loadSmartcardCert
>     --loadFromSmartcard_capi   --LoadFromSmartcard
> --ChilkatLog

also this: [:[enter image description here][1]][1] when I run this code :

    var pdf = new chilkat.Pdf();
    var success = pdf.LoadFile("qa_data/pdf/hello.pdf");
    if (success == false) {
        console.log(pdf.LastErrorText);
        return;
    }
    var json = new chilkat.JsonObject();
    json.UpdateInt("signingCertificateV2",1);
    json.UpdateInt("signingTime",1);
    json.UpdateInt("page",1);
    json.UpdateString("appearance.y","top");
    json.UpdateString("appearance.x","left");
    json.UpdateString("appearance.fontScale","10.0");

    json.UpdateString("appearance.text[0]","Digitally signed by: cert_cn");
    json.UpdateString("appearance.text[1]","current_dt");
    var cert = new chilkat.Cert();
cert.UncommonOptions = "NoScMinidriver"
cspName = "TnTrust Token";
success = cert.LoadFromSmartcard(cspName)
    if (success == false) {
            console.log('TnTrust Token',cert.LastErrorText);
        return;
    }
    cert.SmartCardPin = "123456";
    success = pdf.SetSigningCert(cert);
    if (success == false) {
        console.log(pdf.LastErrorText);
        return;
    }
    success = pdf.SignPdf(json,"qa_output/hello_signed_hsm.pdf");
    if (success == false) {
        console.log(pdf.LastErrorText);
        return;
    }
    console.log("The PDF has been successfully cryptographically signed using an HSM.");
}

chilkatExample();```
thanks. 

  [1]: https://i.stack.imgur.com/11EwM.png

I uploaded a new build here: https://www.npmjs.com/package/@chilkat/ck-node14-win64 It is the version "9.50.89-hotfix1".

Please give it a try. Also, I see you are passing "TnTrust Token" to LoadFromSmartCard. If the problem remains, try passing an empty string. This should cause Chilkat to try using the default Microsoft CNG Storage Provider, which may have better success.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM