Hello,
The combination of symptoms you’re seeing points to a mismatch between how Windows expects to interact with the private key on the YubiKey and how the certificate was provisioned. The error 0x80100014 is a smart‑card communication error that usually means the CSP/KSP cannot perform the requested private‑key operation. In your case, certutil -scinfo shows the certificate under the Microsoft Smart Card Key Storage Provider, but also reports “Could not verify certificate public key against private key”. That indicates Windows can see the certificate object but cannot successfully bind it to the private key stored in the PIV slot.
This typically happens when the certificate was imported separately from the key, rather than generated as a key pair on the YubiKey and then having the CSR signed by the CA. With modern Sectigo code‑signing certificates, the private key is marked non‑exportable, so you cannot generate the key in Windows and then move it into the YubiKey. Instead, the supported workflow is to generate the key pair directly on the YubiKey PIV slot, export a CSR, have Sectigo issue the certificate against that CSR, and then import the issued certificate back into the same slot. That ensures the certificate and private key are correctly paired and Windows can perform signing operations through the Smart Card KSP.
Because your current certificate was likely imported without a matching key container, Windows can enumerate the certificate but fails when attempting to use the private key for signing. That explains why signtool finds the certificate but fails at SignerSign().
To resolve this, you’ll need to re‑provision the certificate properly:
- Use ykman piv generate to create a key pair in the YubiKey slot (for code signing, slot 9a is typical).
- Export a CSR from that slot (ykman piv request) and submit it to Sectigo.
- Import the issued certificate back into the same slot (ykman piv certificates import).
Once the certificate is bound to the key generated on the YubiKey, Windows will be able to verify the public/private key match, and signtool or InstallShield will succeed when prompted for the PIN.
In short, the failure is not a Windows bug but a provisioning mismatch: the certificate is present, but the private key is not usable because it wasn’t generated on the YubiKey. The fix is to reissue or reimport the certificate using a CSR generated directly from the YubiKey.
I hope you've found something useful here. If it helps you get more insight into the issue, it's appreciated to accept the answer. Should you have more questions, feel free to leave a message. Have a nice day!
Domic Vo.