You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Tilman Hausherr (JIRA)" <ji...@apache.org> on 2016/07/11 17:13:11 UTC
[jira] [Assigned] (PDFBOX-3416) CreateVisibleSignature example does
not use the correct alias
[ https://issues.apache.org/jira/browse/PDFBOX-3416?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tilman Hausherr reassigned PDFBOX-3416:
---------------------------------------
Assignee: Tilman Hausherr
> CreateVisibleSignature example does not use the correct alias
> -------------------------------------------------------------
>
> Key: PDFBOX-3416
> URL: https://issues.apache.org/jira/browse/PDFBOX-3416
> Project: PDFBox
> Issue Type: Improvement
> Components: Signing
> Affects Versions: 2.1.0
> Environment: OS X 10.11.5
> java version "1.8.0_92"
> Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
> Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)
> Reporter: Vittal Aithal
> Assignee: Tilman Hausherr
>
> When attempting to use the create visible signature example with a valid pfx from Ascertia, the following is thrown:
> {quote}
> Exception in thread "main" java.lang.NullPointerException
> at org.apache.pdfbox.examples.signature.CreateVisibleSignature.<init>(CreateVisibleSignature.java:102)
> at org.apache.pdfbox.examples.signature.CreateVisibleSignature.main(CreateVisibleSignature.java:228)
> {quote}
> It appears the first alias in the key file can not be found. However, iterating through the aliases to find a certificate that can be used does work.
> The following patch will iterate through the aliases until a workable alias is found.
> {code}
> --- CreateVisibleSignature.java 2016-07-11 17:54:42.000000000 +0100
> +++ CreateVisibleSignature.java.new 2016-07-11 17:54:21.000000000 +0100
> @@ -90,21 +90,26 @@
> // alias that should be used.
> Enumeration<String> aliases = keystore.aliases();
> String alias = null;
> - if (aliases.hasMoreElements())
> - {
> + Certificate cert = null;
> + while (aliases.hasMoreElements()) {
> alias = aliases.nextElement();
> + setPrivateKey((PrivateKey) keystore.getKey(alias, pin));
> + Certificate[] certChain = keystore.getCertificateChain(alias);
> + if (certChain == null) {
> + continue;
> + }
> + cert = certChain[0];
> + setCertificate(cert);
> + if (cert instanceof X509Certificate)
> + {
> + // avoid expired certificate
> + ((X509Certificate) cert).checkValidity();
> + }
> + break;
> }
> - else
> - {
> - throw new IOException("Could not find alias");
> - }
> - setPrivateKey((PrivateKey) keystore.getKey(alias, pin));
> - Certificate cert = keystore.getCertificateChain(alias)[0];
> - setCertificate(cert);
> - if (cert instanceof X509Certificate)
> - {
> - // avoid expired certificate
> - ((X509Certificate) cert).checkValidity();
> +
> + if (cert == null) {
> + throw new IOException("Could not find certificate");
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: dev-help@pdfbox.apache.org