{"id":12922,"date":"2019-10-31T18:30:51","date_gmt":"2019-10-31T17:30:51","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/"},"modified":"2019-10-31T18:30:51","modified_gmt":"2019-10-31T17:30:51","slug":"aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/","title":{"rendered":"AEM Forms &#8211; Certify PDF end-up with NoSuchMethodError on bouncycastle"},"content":{"rendered":"<p>As part of an AEM project, we were working on setting up a few actions on PDF files. One of these actions was to Sign &amp; Certify a PDF file. The basic Sign &amp; Certify action provided by AEM is working easily by default but if you look deeper, you might get some surprise. The complexity in this case came from the fact that we absolutely needed the signature to contain a valid Time-Stamp using the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Time_stamp_protocol\" target=\"_blank\" rel=\"noopener noreferrer\">Time-Stamp Protocol<\/a> (TSP) as well as a valid <a href=\"https:\/\/en.wikipedia.org\/wiki\/PAdES\" target=\"_blank\" rel=\"noopener noreferrer\">Long-Term Validation<\/a> (LTV). In this blog, I will talk about one (of the numerous) issue we faced that I believe is related only to AEM on WebLogic.<\/p>\n<p>As I mentioned above, the basic Certify operation is working easily but if you do not take a closer look, it might not be TSP and\/or LTV. In our case, using AEM 6.4 SP3 on WebLogic Server 12.2.1.3, we got the Certify operation to work but without TSP &amp; LTV:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPfailed_LTVfailed.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-35082\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPfailed_LTVfailed.png\" alt=\"Certify PDF - TSP failed &amp; LTV failed\" width=\"1026\" height=\"621\" \/><\/a><\/p>\n<p>Looking at the AEM Managed Server logs, you can see that the last line is an error message:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1; highlight: [14]\">####&lt;Aug 28, 2019 12:15:22,278 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.livecycle.usermanager.sslauthprovider.SSLMutualAuthProvider&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '16' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-129013562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000055&gt; &lt;1566994522278&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Got Subject DN as CN=aem-dev,OU=IT,O=dbi services,L=Delemont,ST=Jura,C=CH&gt;\n####&lt;Aug 28, 2019 12:15:25,025 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.livecycle.usermanager.sslauthprovider.SSLMutualAuthProvider&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '67' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-129513562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000056&gt; &lt;1566994525025&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Got Subject DN as CN=aem-dev,OU=IT,O=dbi services,L=Delemont,ST=Jura,C=CH&gt;\n####&lt;Aug 28, 2019 12:15:25,680 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.config.FormServerConfigImpl&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '67' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-12C213562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000056&gt; &lt;1566994525680&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;FSC008: Using the database to access and persist configuration properties.&gt;\n####&lt;Aug 28, 2019 12:15:25,681 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.config.FormServerConfigImpl&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '67' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-12C213562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000056&gt; &lt;1566994525681&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;FSC001: The property LastCacheResetTime has been changed from  to 1555070921173&gt;\n####&lt;Aug 28, 2019 12:15:25,681 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.config.FormServerConfigImpl&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '67' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-12C213562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000056&gt; &lt;1566994525681&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;FSC001: The property CacheValidationTime has been changed from 0 to 1555070921058&gt;\n####&lt;Aug 28, 2019 12:15:25,684 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.common.cachemanager.CacheConfig&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '67' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-12C213562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000056&gt; &lt;1566994525684&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Initializing cache from default values &gt;\n####&lt;Aug 28, 2019 12:15:26,130 PM UTC&gt; &lt;Info&gt; &lt;Common&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '67' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-130E13562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000056&gt; &lt;1566994526130&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000628&gt; &lt;Created \"1\" resources for pool \"IDP_DS\", out of which \"1\" are available and \"0\" are unavailable.&gt;\n####&lt;Aug 28, 2019 12:15:26,141 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.common.cachemanager.CacheConfig&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '67' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-12C213562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000056&gt; &lt;1566994526141&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Initializing cache from default values &gt;\n####&lt;Aug 28, 2019 12:15:26,147 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.common.cachemanager.CacheConfig&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '67' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-12C213562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000056&gt; &lt;1566994526147&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Initializing cache from default values &gt;\n####&lt;Aug 28, 2019 12:15:26,153 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.common.cachemanager.CacheConfig&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '67' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-12C213562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000056&gt; &lt;1566994526153&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Initializing cache from default values &gt;\n####&lt;Aug 28, 2019 12:15:26,158 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.common.cachemanager.CacheConfig&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '67' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-12C213562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000056&gt; &lt;1566994526158&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Initializing cache from default values &gt;\n####&lt;Aug 28, 2019 12:15:26,571 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.config.FormServerConfigImpl&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '67' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-12C213562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000056&gt; &lt;1566994526571&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;FSC008: Using the database to access and persist configuration properties.&gt;\n####&lt;Aug 28, 2019 12:15:27,835 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.livecycle.usermanager.sslauthprovider.SSLMutualAuthProvider&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '60' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-13A613562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000057&gt; &lt;1566994527835&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Got Subject DN as CN=aem-dev,OU=IT,O=dbi services,L=Delemont,ST=Jura,C=CH&gt;\n####&lt;Aug 28, 2019 12:15:30,923 PM UTC&gt; &lt;Error&gt; &lt;com.adobe.workflow.AWS&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '67' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-12C213562811050A7F40&gt; &lt;7503b440-54b5-43c7-be22-0f19c434ef4c-00000056&gt; &lt;1566994530923&gt; &lt;[severity-value: 8] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;An exception was thrown with name java.lang.NoSuchMethodError message:org.bouncycastle.asn1.x509.AlgorithmIdentifier.getObjectId()Lorg\/bouncycastle\/asn1\/ASN1ObjectIdentifier; while invoking service SignatureService and operation certify and no fault routes were found to be configured.&gt;<\/pre>\n<p>&nbsp;<\/p>\n<p>At the same time, we also got this kind of messages:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1; highlight: [105,109,115,120]\">ALC-DSC-003-000: com.adobe.idp.dsc.DSCInvocationException: Invocation error.\n            at com.adobe.idp.dsc.component.impl.DefaultPOJOInvokerImpl.invoke(DefaultPOJOInvokerImpl.java:152)\n            at com.adobe.idp.dsc.interceptor.impl.InvocationInterceptor.intercept(InvocationInterceptor.java:140)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.interceptor.impl.DocumentPassivationInterceptor.intercept(DocumentPassivationInterceptor.java:53)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.transaction.interceptor.TransactionInterceptor$1.doInTransaction(TransactionInterceptor.java:74)\n            at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapterBean.execute(EjbTransactionCMTAdapterBean.java:357)\n            at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapterBean.doRequired(EjbTransactionCMTAdapterBean.java:274)\n            at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapter_yjcxi4_ELOImpl.__WL_invoke(Unknown Source)\n            at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:33)\n            at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapter_yjcxi4_ELOImpl.doRequired(Unknown Source)\n            at com.adobe.idp.dsc.transaction.impl.ejb.EjbTransactionProvider.execute(EjbTransactionProvider.java:129)\n            at com.adobe.idp.dsc.transaction.interceptor.TransactionInterceptor.intercept(TransactionInterceptor.java:72)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.interceptor.impl.InvocationStrategyInterceptor.intercept(InvocationStrategyInterceptor.java:55)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.interceptor.impl.InvalidStateInterceptor.intercept(InvalidStateInterceptor.java:37)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.interceptor.impl.AuthorizationInterceptor.intercept(AuthorizationInterceptor.java:188)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.interceptor.impl.JMXInterceptor.intercept(JMXInterceptor.java:48)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.engine.impl.ServiceEngineImpl.invoke(ServiceEngineImpl.java:121)\n            at com.adobe.idp.dsc.routing.Router.routeRequest(Router.java:131)\n            at com.adobe.idp.dsc.provider.impl.base.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:93)\n            at com.adobe.idp.dsc.provider.impl.vm.VMMessageDispatcher.doSend(VMMessageDispatcher.java:225)\n            at com.adobe.idp.dsc.provider.impl.base.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:69)\n            at com.adobe.idp.dsc.clientsdk.ServiceClient.invoke(ServiceClient.java:215)\n            at com.adobe.workflow.engine.PEUtil.invokeAction(PEUtil.java:893)\n            at com.adobe.idp.workflow.dsc.invoker.WorkflowDSCInvoker.transientInvoke(WorkflowDSCInvoker.java:356)\n            at com.adobe.idp.workflow.dsc.invoker.WorkflowDSCInvoker.invoke(WorkflowDSCInvoker.java:159)\n            at com.adobe.idp.dsc.interceptor.impl.InvocationInterceptor.intercept(InvocationInterceptor.java:140)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.interceptor.impl.DocumentPassivationInterceptor.intercept(DocumentPassivationInterceptor.java:53)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.transaction.interceptor.TransactionInterceptor$1.doInTransaction(TransactionInterceptor.java:74)\n            at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapterBean.execute(EjbTransactionCMTAdapterBean.java:357)\n            at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapterBean.doRequiresNew(EjbTransactionCMTAdapterBean.java:299)\n            at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapter_yjcxi4_ELOImpl.__WL_invoke(Unknown Source)\n            at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:33)\n            at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapter_yjcxi4_ELOImpl.doRequiresNew(Unknown Source)\n            at com.adobe.idp.dsc.transaction.impl.ejb.EjbTransactionProvider.execute(EjbTransactionProvider.java:143)\n            at com.adobe.idp.dsc.transaction.interceptor.TransactionInterceptor.intercept(TransactionInterceptor.java:72)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.interceptor.impl.InvocationStrategyInterceptor.intercept(InvocationStrategyInterceptor.java:55)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.interceptor.impl.InvalidStateInterceptor.intercept(InvalidStateInterceptor.java:37)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.interceptor.impl.AuthorizationInterceptor.intercept(AuthorizationInterceptor.java:188)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.interceptor.impl.JMXInterceptor.intercept(JMXInterceptor.java:48)\n            at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptorChainImpl.java:60)\n            at com.adobe.idp.dsc.engine.impl.ServiceEngineImpl.invoke(ServiceEngineImpl.java:121)\n            at com.adobe.idp.dsc.routing.Router.routeRequest(Router.java:131)\n            at com.adobe.idp.dsc.provider.impl.base.AbstractMessageReceiver.invoke(AbstractMessageReceiver.java:329)\n            at com.adobe.idp.dsc.provider.impl.soap.axis.sdk.SoapSdkEndpoint.invokeCall(SoapSdkEndpoint.java:153)\n            at com.adobe.idp.dsc.provider.impl.soap.axis.sdk.SoapSdkEndpoint.invoke(SoapSdkEndpoint.java:91)\n            at sun.reflect.GeneratedMethodAccessor621.invoke(Unknown Source)\n            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n            at java.lang.reflect.Method.invoke(Method.java:498)\n            at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)\n            at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)\n            at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)\n            at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)\n            at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)\n            at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)\n            at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)\n            at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)\n            at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)\n            at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)\n            at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)\n            at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n            at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)\n            at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)\n            at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)\n            at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:350)\n            at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)\n            at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)\n            at com.adobe.idp.dsc.provider.impl.soap.axis.InvocationFilter.doFilter(InvocationFilter.java:43)\n            at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)\n            at com.adobe.idp.um.auth.filter.ParameterFilter.doFilter(ParameterFilter.java:105)\n            at com.adobe.idp.um.auth.filter.CSRFFilter.invokeNextFilter(CSRFFilter.java:141)\n            at com.adobe.idp.um.auth.filter.CSRFFilter.doFilter(CSRFFilter.java:132)\n            at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)\n            at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3706)\n            at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3672)\n            at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:328)\n            at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)\n            at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)\n            at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)\n            at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2443)\n            at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2291)\n            at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2269)\n            at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1705)\n            at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1665)\n            at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:272)\n            at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)\n            at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)\n            at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)\n            at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)\n            at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:652)\n            at weblogic.work.ExecuteThread.execute(ExecuteThread.java:420)\n            at weblogic.work.ExecuteThread.run(ExecuteThread.java:360)\nCaused by: java.lang.NoSuchMethodError: org.bouncycastle.asn1.x509.AlgorithmIdentifier.getObjectId()Lorg\/bouncycastle\/asn1\/ASN1ObjectIdentifier;\n            at com.adobe.livecycle.signatures.pki.timestamp.TimestampInfoBC.matchesMessageImprint(TimestampInfoBC.java:187)\n            at com.adobe.livecycle.signatures.pki.timestamp.TimestampToken.validateRequest(TimestampToken.java:430)\n            at com.adobe.livecycle.signatures.pki.impl.PKIOperations.createTimestamp(PKIOperations.java:562)\n            at com.adobe.livecycle.signatures.service.impl.TimeStampProviderImpl.getTimestampToken(TimeStampProviderImpl.java:85)\n            at com.adobe.idp.cryptoprovider.LCPKCS7Signer$1.getActualAttributes(LCPKCS7Signer.java:256)\n            at com.adobe.livecycle.signatures.pki.signature.CMSPKCS7Impl.sign(CMSPKCS7Impl.java:702)\n            at com.adobe.livecycle.signatures.pki.impl.PKIOperations.sign(PKIOperations.java:345)\n            at com.adobe.livecycle.signatures.service.cryptoprovider.DSSPKCS7Signer.signData(DSSPKCS7Signer.java:84)\n            at com.adobe.idp.cryptoprovider.LCPKCS7Signer.sign(LCPKCS7Signer.java:123)\n            at com.adobe.internal.pdftoolkit.services.digsig.digsigframework.impl.SignatureHandlerPPKLite.writeSignatureAfterSave(SignatureHandlerPPKLite.java:816)\n            at com.adobe.internal.pdftoolkit.services.digsig.impl.SigningUtils.doSigning(SigningUtils.java:820)\n            at com.adobe.internal.pdftoolkit.services.digsig.SignatureManager.certifyWrapperAPI(SignatureManager.java:1554)\n            at com.adobe.internal.pdftoolkit.services.digsig.SignatureManager.certify(SignatureManager.java:1542)\n            at com.adobe.livecycle.signatures.service.impl.SignCertifyImpl.certify(SignCertifyImpl.java:894)\n            at com.adobe.livecycle.signatures.service.impl.DocumentSecurityService.certify(DocumentSecurityService.java:1644)\n            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n            at java.lang.reflect.Method.invoke(Method.java:498)\n            at com.adobe.idp.dsc.component.impl.DefaultPOJOInvokerImpl.invoke(DefaultPOJOInvokerImpl.java:118)\n            ... 102 more<\/pre>\n<p>&nbsp;<\/p>\n<p>Based on the above messages, it is clear that there is a problem with some of the bouncycastle classes. This kind of thing is usually a missing class (&#8220;<strong>ClassNotFoundException<\/strong>&#8220;) or a conflict between two or more versions that are loaded by WebLogic (&#8220;<strong>NoSuchMethodError<\/strong>&#8220;) with the loaded\/active version not containing the specific java method that is being called. We opened a SR with the Adobe Support (<em>#188938<\/em>) because this kind of thing shouldn&#8217;t be happening but after a few days without any meaningful update from them, I decided to look into the product myself to stop losing time on such trivial thing.<\/p>\n<p>So this specific class (&#8220;<strong>org.bouncycastle.asn1.x509.AlgorithmIdentifier<\/strong>&#8220;) can be found in numerous jar files: apacheds*.jar, bcprov*.jar, bouncycastle*.jar, ec2*.jar, aso&#8230; I checked all these jar files on our WebLogic Server libraries as well as AEM ones and found what I believe was the issue: different versions of these jars being loaded. To confirm and before changing anything, I deployed the WebLogic CAT and found:<\/p>\n<ul style=\"margin-top: -27px\">\n<li>0 conflicts in adobe-livecycle-cq-author.ear<\/li>\n<li>0 conflicts in adobe-livecycle-native-weblogic-x86_linux.ear<\/li>\n<li>5339 conflicts in adobe-livecycle-weblogic.ear<\/li>\n<\/ul>\n<p>&nbsp;<br \/>\nThese numbers pretty much confirmed what I thought already. Going further, I found a few hundred conflicts related to the &#8220;<strong>org.bouncycastle.*<\/strong>&#8221; classes only. One of these being for the class &#8220;<strong>org.bouncycastle.asn1.x509.AlgorithmIdentifier<\/strong>&#8221; and it was conflicting between the following files:<\/p>\n<ul style=\"margin-top: -27px\">\n<li>WebLogic: $MW_HOME\/oracle_common\/modules\/org.bouncycastle.bcprov-jdk15on.jar (1st loaded)<\/li>\n<li>WebLogic: $MW_HOME\/oracle_common\/modules\/org.bouncycastle.bcprov-ext-jdk15on.jar<\/li>\n<li>AEM: $APPLICATIONS\/adobe-livecycle-weblogic.ear\/bcprov-151.jar<\/li>\n<\/ul>\n<p>&nbsp;<br \/>\nSo what should be done to fix this? Well, a simple solution is just to force WebLogic to use the AEM provided files by default by updating the load preferences:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [6,7,12,13,14]\">[weblogic@aem-node-1 ~]$ cd $APPLICATIONS\n[weblogic@aem-node-1 AEM]$ \n[weblogic@aem-node-1 AEM]$ jar -xvf adobe-livecycle-weblogic.ear META-INF\/weblogic-application.xml\n[weblogic@aem-node-1 AEM]$ \n[weblogic@aem-node-1 AEM]$ grep -B1 \"&lt;\/prefer-application-packages&gt;\" META-INF\/weblogic-application.xml\n&lt;package-name&gt;org.mozilla.javascript.xmlimpl.*&lt;\/package-name&gt;\n&lt;\/prefer-application-packages&gt;\n[weblogic@aem-node-1 AEM]$ \n[weblogic@aem-node-1 AEM]$ sed -i 's,&lt;\/prefer-application-packages&gt;,&lt;package-name&gt;org.bouncycastle.*&lt;\/package-name&gt;\\n&amp;,' META-INF\/weblogic-application.xml\n[weblogic@aem-node-1 AEM]$ \n[weblogic@aem-node-1 AEM]$ grep -B2 \"&lt;\/prefer-application-packages&gt;\" META-INF\/weblogic-application.xml\n&lt;package-name&gt;org.mozilla.javascript.xmlimpl.*&lt;\/package-name&gt;\n&lt;package-name&gt;org.bouncycastle.*&lt;\/package-name&gt;\n&lt;\/prefer-application-packages&gt;\n[weblogic@aem-node-1 AEM]$ \n[weblogic@aem-node-1 AEM]$ jar -uvf adobe-livecycle-weblogic.ear META-INF\/weblogic-application.xml\n[weblogic@aem-node-1 AEM]$ rm -rf META-INF\n[weblogic@aem-node-1 AEM]$<\/pre>\n<p>&nbsp;<\/p>\n<p>What the above commands are doing is simply to add &#8220;<strong>&lt;package-name&gt;org.bouncycastle.*&lt;\/package-name&gt;<\/strong>&#8221; just before the end of the &#8220;<strong>&lt;prefer-application-packages&gt;<\/strong>&#8221; section so that WebLogic will know that it needs to use the AEM provided classes for this package and it shouldn&#8217;t use its own files. Once that is done, simply redeploy the EAR file. In my case, I was left with &#8220;<em>only<\/em>&#8221; 2442 conflicts, none regarding the bouncycastle (obviously).<\/p>\n<p>After that, executing the same Certify action with the new classloader preferences resulted in no more errors:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1\">####&lt;Aug 28, 2019 1:12:22,359 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.livecycle.usermanager.sslauthprovider.SSLMutualAuthProvider&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '109' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-1475E729A745050A7F40&gt; &lt;3a34648b-38e4-4ec5-8a0a-e6872bc1c6a1-00000071&gt; &lt;1566997942359&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Got Subject DN as CN=aem-dev,OU=IT,O=dbi services,L=Delemont,ST=Jura,C=CH&gt;\n####&lt;Aug 28, 2019 1:12:23,702 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.livecycle.usermanager.sslauthprovider.SSLMutualAuthProvider&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '116' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-147BE729A745050A7F40&gt; &lt;3a34648b-38e4-4ec5-8a0a-e6872bc1c6a1-00000072&gt; &lt;1566997943702&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Got Subject DN as CN=aem-dev,OU=IT,O=dbi services,L=Delemont,ST=Jura,C=CH&gt;\n####&lt;Aug 28, 2019 1:12:24,199 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.config.FormServerConfigImpl&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '116' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-14A8E729A745050A7F40&gt; &lt;3a34648b-38e4-4ec5-8a0a-e6872bc1c6a1-00000072&gt; &lt;1566997944199&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;FSC008: Using the database to access and persist configuration properties.&gt;\n####&lt;Aug 28, 2019 1:12:24,199 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.config.FormServerConfigImpl&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '116' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-14A8E729A745050A7F40&gt; &lt;3a34648b-38e4-4ec5-8a0a-e6872bc1c6a1-00000072&gt; &lt;1566997944199&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;FSC001: The property LastCacheResetTime has been changed from  to 1555070921173&gt;\n####&lt;Aug 28, 2019 1:12:24,200 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.config.FormServerConfigImpl&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '116' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-14A8E729A745050A7F40&gt; &lt;3a34648b-38e4-4ec5-8a0a-e6872bc1c6a1-00000072&gt; &lt;1566997944200&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;FSC001: The property CacheValidationTime has been changed from 0 to 1555070921058&gt;\n####&lt;Aug 28, 2019 1:12:24,202 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.common.cachemanager.CacheConfig&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '116' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-14A8E729A745050A7F40&gt; &lt;3a34648b-38e4-4ec5-8a0a-e6872bc1c6a1-00000072&gt; &lt;1566997944202&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Initializing cache from default values &gt;\n####&lt;Aug 28, 2019 1:12:24,691 PM UTC&gt; &lt;Info&gt; &lt;Common&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '116' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-14F2E729A745050A7F40&gt; &lt;3a34648b-38e4-4ec5-8a0a-e6872bc1c6a1-00000072&gt; &lt;1566997944691&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000628&gt; &lt;Created \"1\" resources for pool \"IDP_DS\", out of which \"1\" are available and \"0\" are unavailable.&gt;\n####&lt;Aug 28, 2019 1:12:24,704 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.common.cachemanager.CacheConfig&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '116' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-14A8E729A745050A7F40&gt; &lt;3a34648b-38e4-4ec5-8a0a-e6872bc1c6a1-00000072&gt; &lt;1566997944704&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Initializing cache from default values &gt;\n####&lt;Aug 28, 2019 1:12:24,710 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.common.cachemanager.CacheConfig&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '116' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-14A8E729A745050A7F40&gt; &lt;3a34648b-38e4-4ec5-8a0a-e6872bc1c6a1-00000072&gt; &lt;1566997944710&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Initializing cache from default values &gt;\n####&lt;Aug 28, 2019 1:12:24,717 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.common.cachemanager.CacheConfig&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '116' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-14A8E729A745050A7F40&gt; &lt;3a34648b-38e4-4ec5-8a0a-e6872bc1c6a1-00000072&gt; &lt;1566997944717&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Initializing cache from default values &gt;\n####&lt;Aug 28, 2019 1:12:24,724 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.common.cachemanager.CacheConfig&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '116' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-14A8E729A745050A7F40&gt; &lt;3a34648b-38e4-4ec5-8a0a-e6872bc1c6a1-00000072&gt; &lt;1566997944724&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;Initializing cache from default values &gt;\n####&lt;Aug 28, 2019 1:12:24,928 PM UTC&gt; &lt;Info&gt; &lt;com.adobe.formServer.config.FormServerConfigImpl&gt; &lt;aem-node-1&gt; &lt;msAEM-01&gt; &lt;[ACTIVE] ExecuteThread: '116' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;anonymous&gt;&gt; &lt;BEA1-14A8E729A745050A7F40&gt; &lt;3a34648b-38e4-4ec5-8a0a-e6872bc1c6a1-00000072&gt; &lt;1566997944928&gt; &lt;[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] &gt; &lt;BEA-000000&gt; &lt;FSC008: Using the database to access and persist configuration properties.&gt;<\/pre>\n<p>&nbsp;<\/p>\n<p>The generated PDF now contained a correct Time-Stamp information but still not LTV information:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPworking_LTVfailed.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-35083\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPworking_LTVfailed.png\" alt=\"Certify PDF - TSP working &amp; LTV failed\" width=\"1026\" height=\"621\" \/><\/a><\/p>\n<p>Finally, adding a Validation step after the Certify step in the process (in the AEM Application (LCA)) allowed both TSP and LTV information to be shown properly:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPworking_LTVworking.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-35084\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPworking_LTVworking.png\" alt=\"Certify PDF - TSP working &amp; LTV working\" width=\"1026\" height=\"621\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>As part of an AEM project, we were working on setting up a few actions on PDF files. One of these actions was to Sign &amp; Certify a PDF file. The basic Sign &amp; Certify action provided by AEM is working easily by default but if you look deeper, you might get some surprise. The [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":12923,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197],"tags":[1720,1721,1722,1723,1724],"type_dbi":[],"class_list":["post-12922","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-integration-middleware","tag-6-4","tag-aem","tag-aem-forms","tag-forms","tag-workbench"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>AEM Forms - Certify PDF end-up with NoSuchMethodError on bouncycastle - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AEM Forms - Certify PDF end-up with NoSuchMethodError on bouncycastle\" \/>\n<meta property=\"og:description\" content=\"As part of an AEM project, we were working on setting up a few actions on PDF files. One of these actions was to Sign &amp; Certify a PDF file. The basic Sign &amp; Certify action provided by AEM is working easily by default but if you look deeper, you might get some surprise. The [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-31T17:30:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPfailed_LTVfailed.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1026\" \/>\n\t<meta property=\"og:image:height\" content=\"621\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Morgan Patou\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@MorganPatou\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Morgan Patou\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/\"},\"author\":{\"name\":\"Morgan Patou\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"headline\":\"AEM Forms &#8211; Certify PDF end-up with NoSuchMethodError on bouncycastle\",\"datePublished\":\"2019-10-31T17:30:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/\"},\"wordCount\":627,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPfailed_LTVfailed.png\",\"keywords\":[\"6.4\",\"AEM\",\"AEM Forms\",\"Forms\",\"Workbench\"],\"articleSection\":[\"Application integration &amp; Middleware\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/\",\"name\":\"AEM Forms - Certify PDF end-up with NoSuchMethodError on bouncycastle - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPfailed_LTVfailed.png\",\"datePublished\":\"2019-10-31T17:30:51+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPfailed_LTVfailed.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPfailed_LTVfailed.png\",\"width\":1026,\"height\":621,\"caption\":\"Certify PDF - TSP failed & LTV failed\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AEM Forms &#8211; Certify PDF end-up with NoSuchMethodError on bouncycastle\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8\",\"name\":\"Morgan Patou\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"caption\":\"Morgan Patou\"},\"description\":\"Morgan Patou has over 12 years of experience in Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\/Banking, and the Pharmaceutical industry.\",\"sameAs\":[\"https:\/\/blog.dbi-services.com\/author\/morgan-patou\/\",\"https:\/\/x.com\/MorganPatou\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/morgan-patou\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"AEM Forms - Certify PDF end-up with NoSuchMethodError on bouncycastle - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/","og_locale":"en_US","og_type":"article","og_title":"AEM Forms - Certify PDF end-up with NoSuchMethodError on bouncycastle","og_description":"As part of an AEM project, we were working on setting up a few actions on PDF files. One of these actions was to Sign &amp; Certify a PDF file. The basic Sign &amp; Certify action provided by AEM is working easily by default but if you look deeper, you might get some surprise. The [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/","og_site_name":"dbi Blog","article_published_time":"2019-10-31T17:30:51+00:00","og_image":[{"width":1026,"height":621,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPfailed_LTVfailed.png","type":"image\/png"}],"author":"Morgan Patou","twitter_card":"summary_large_image","twitter_creator":"@MorganPatou","twitter_misc":{"Written by":"Morgan Patou","Est. reading time":"21 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/"},"author":{"name":"Morgan Patou","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"headline":"AEM Forms &#8211; Certify PDF end-up with NoSuchMethodError on bouncycastle","datePublished":"2019-10-31T17:30:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/"},"wordCount":627,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPfailed_LTVfailed.png","keywords":["6.4","AEM","AEM Forms","Forms","Workbench"],"articleSection":["Application integration &amp; Middleware"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/","url":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/","name":"AEM Forms - Certify PDF end-up with NoSuchMethodError on bouncycastle - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPfailed_LTVfailed.png","datePublished":"2019-10-31T17:30:51+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPfailed_LTVfailed.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CertifyPDF_TSPfailed_LTVfailed.png","width":1026,"height":621,"caption":"Certify PDF - TSP failed & LTV failed"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/aem-forms-certify-pdf-end-up-with-nosuchmethoderror-on-bouncycastle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"AEM Forms &#8211; Certify PDF end-up with NoSuchMethodError on bouncycastle"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8","name":"Morgan Patou","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","caption":"Morgan Patou"},"description":"Morgan Patou has over 12 years of experience in Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\/Banking, and the Pharmaceutical industry.","sameAs":["https:\/\/blog.dbi-services.com\/author\/morgan-patou\/","https:\/\/x.com\/MorganPatou"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/morgan-patou\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12922","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=12922"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12922\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/12923"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=12922"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=12922"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=12922"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=12922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}