Skip to content

Conversation

ls-bit
Copy link

@ls-bit ls-bit commented Aug 13, 2025

Some of the KeyStoreTypes like PKCS12 do not seem to return a provider which lead to the exception below. This small patch seems to fix it.

Exception in thread "main" java.lang.IllegalArgumentException: missing provider
	at java.base/sun.security.jca.GetInstance.getService(GetInstance.java:96)
	at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:218)
	at java.base/java.security.Signature.getInstance(Signature.java:449)
	at net.jsign.jca.JsignJcaProvider$JsignJcaSignature.engineInitSign(JsignJcaProvider.java:204)
	at java.base/java.security.Signature$Delegate.tryOperation(Signature.java:1322)
	at java.base/java.security.Signature$Delegate.chooseProvider(Signature.java:1276)
	at java.base/java.security.Signature$Delegate.engineInitSign(Signature.java:1360)
	at java.base/java.security.Signature.initSign(Signature.java:636)

…specific provider

e.g. using PKCS#12 keystore for signing
@ebourg ebourg added the bug label Aug 13, 2025
@ebourg ebourg added this to the 7.2 milestone Aug 13, 2025
@ebourg
Copy link
Owner

ebourg commented Aug 13, 2025

Thank you for the PR. How did you trigger this error?

@ls-bit
Copy link
Author

ls-bit commented Aug 14, 2025

For context, I was testing to integrate Jsign and marketplace-zip-signer. For that, I made changes to marketplace-zip-signer in my fork to allow passing the provider class and arg here https://github.com/ls-bit/marketplace-zip-signer/pull/1/files

Then I ran following command:

java -cp marketplace-zip-signer-cli.jar:jsign.jar org.jetbrains.zip.signer.ZipSigningTool sign \
 -in test.zip  \
 -out signed.zip \
 -ks NONE \
 -ks-pass changeit \
 -ks-provider-class net.jsign.jca.JsignJcaProvider \ 
 -ks-provider-arg example.p12 \
 -cert example.crt \ 
 -ks-key-alias test \
 -ks-type pkcs12 \
 -ks-provider-name Jsign
Full stacktrace Exception in thread "main" java.lang.IllegalArgumentException: missing provider at java.base/sun.security.jca.GetInstance.getService(GetInstance.java:96) at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:218) at java.base/java.security.Signature.getInstance(Signature.java:449) at net.jsign.jca.JsignJcaProvider$JsignJcaSignature.engineInitSign(JsignJcaProvider.java:204) at java.base/java.security.Signature$Delegate.tryOperation(Signature.java:1322) at java.base/java.security.Signature$Delegate.chooseProvider(Signature.java:1276) at java.base/java.security.Signature$Delegate.engineInitSign(Signature.java:1360) at java.base/java.security.Signature.initSign(Signature.java:636) at org.jetbrains.zip.signer.signing.DefaultSignatureProvider.sign(DefaultSignatureProvider.kt:16) at org.jetbrains.zip.signer.signing.SigningKt.generateSignatureOverData(Signing.kt:41) at org.jetbrains.zip.signer.signing.SigningKt.generateSignerBlock(Signing.kt:27) at org.jetbrains.zip.signer.signing.ZipSigner.sign(ZipSigner.kt:81) at org.jetbrains.zip.signer.signing.ZipSigner.sign(ZipSigner.kt:31) at org.jetbrains.zip.signer.ZipSigningTool.sign(ZipSigningTool.kt:81) at org.jetbrains.zip.signer.ZipSigningTool.main(ZipSigningTool.kt:32)

I will say that there is a non-zero chance that I am doing something wrong or that I got the implementation wrong

@ebourg ebourg modified the milestones: 7.2, 7.3 Aug 31, 2025
@ebourg ebourg removed this from the 7.3 milestone Oct 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants