- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在线程“主”java.lang.NoSuchMethodError 中遇到异常:org.bouncycaSTLe.asn1.ASN1InputStream.readObject()Lorg/bouncycaSTLe/asn1/ASN1Primitive;
这是我的 TestSign.java
package com.test.sign;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.PrivateKey;
import java.security.Security;
import java.security.cert.Certificate;
import java.util.Properties;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfAnnotation;
import com.itextpdf.text.pdf.PdfAppearance;
import com.itextpdf.text.pdf.PdfFormField;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfSignatureAppearance;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.security.ExternalSignature;
import com.itextpdf.text.pdf.security.MakeSignature.CryptoStandard;
import com.itextpdf.text.pdf.security.BouncyCastleDigest;
import com.itextpdf.text.pdf.security.ExternalDigest;
import com.itextpdf.text.pdf.security.PrivateKeySignature;
import com.itextpdf.text.pdf.security.MakeSignature;
public class TestSign {
/** The resulting PDF */
public static String ORIGINAL = "C://results/xmlworker/test3.pdf";
/** The resulting PDF */
public static String SIGNED1 = "results/part3/chapter12/signed_1.pdf";
/** The resulting PDF */
public static String SIGNED2 = "C://results/xmlworker/test3yfguhik.pdf";
/** One of the resources. */
public static final String RESOURCE
= "resources/img/1t3xt.gif";
/**
* A properties file that is PRIVATE.
* You should make your own properties file and adapt this line.
*/
//public static String PATH = "c:/home/blowagie/key.properties";
/** Some properties used when signing. */
//public static Properties properties = new Properties();
/**
* Creates a PDF document.
* @param filename the path to the new PDF document
* @throws DocumentException
* @throws IOException
*/
public void createPdf(String filename) throws IOException, DocumentException {
// step 1
Document document = new Document();
// step 2
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));
// step 3
document.open();
// step 4
document.add(new Paragraph("Hello World!"));
PdfFormField field = PdfFormField.createSignature(writer);
field.setWidget(new Rectangle(72, 732, 144, 780), PdfAnnotation.HIGHLIGHT_INVERT);
field.setFieldName("mySig");
field.setFlags(PdfAnnotation.FLAGS_PRINT);
field.setPage();
field.setMKBorderColor(BaseColor.BLACK);
field.setMKBackgroundColor(BaseColor.WHITE);
PdfAppearance tp = PdfAppearance.createAppearance(writer, 72, 48);
tp.rectangle(0.5f, 0.5f, 71.5f, 47.5f);
tp.stroke();
field.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, tp);
writer.addAnnotation(field);
// step 5
document.close();
}
/**
* Manipulates a PDF file src with the file dest as result
* @param src the original PDF
* @param dest the resulting PDF
* @throws GeneralSecurityException
* @throws IOException
* @throws DocumentException
* @throws FileNotFoundException
* @throws KeyStoreException
* @throws Exception
*/
public void signPdf(String src, String dest, boolean certified, boolean graphic) throws GeneralSecurityException, IOException, DocumentException {
// private key and certificate
KeyStore ks = KeyStore.getInstance("pkcs12");
ks.load(new FileInputStream("C://results/xmlworker/Test.pfx"), "10111995".toCharArray());
String alias = (String)ks.aliases().nextElement();
PrivateKey pk = (PrivateKey)ks.getKey(alias, "10111995".toCharArray());
Certificate[] chain = ks.getCertificateChain(alias);
// reader and stamper
PdfReader reader = new PdfReader(ORIGINAL);
PdfStamper stamper = PdfStamper.createSignature(reader, new FileOutputStream(dest), '\0');
// appearance
PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
appearance.setVisibleSignature("mySig");
appearance.setReason("It's personal.");
appearance.setLocation("Foobar");
if (certified)
appearance.setCertificationLevel(PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED);
if (graphic) {
appearance.setSignatureGraphic(Image.getInstance(RESOURCE));
appearance.setRenderingMode(PdfSignatureAppearance.RenderingMode.GRAPHIC);
}
// signature
ExternalSignature es = new PrivateKeySignature(pk, "SHA-256", "BC");
ExternalDigest digest = new BouncyCastleDigest();
MakeSignature.signDetached(appearance, digest, es, chain, null, null, null, 0, CryptoStandard.CMS);
}
/**
* Main method.
*
* @param args no arguments needed
*/
public static void main(String[] args)
throws Exception {
//Security.addProvider(new BouncyCastleProvider());
TestSign signatures = new TestSign();
signatures.createPdf(ORIGINAL);
//signatures.signPdf(ORIGINAL, SIGNED1, false, false);
signatures.signPdf(ORIGINAL, SIGNED2, true, false);
}
}
Pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>exemple</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>exemple Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.0</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.56</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcmail-jdk15on</artifactId>
<version>1.56</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
我已经尝试了所有版本的 bcprov-jdk15on 和 bcmail-jdk15on,你能帮帮我吗,我在这个问题上被困了大约一个星期?
我从这个 Exemple 复制了代码
最佳答案
您为这个版本的 iText 使用了错误版本的 BouncyCaSTLe。
我建议您结合使用 iText 5.5.11 和 BouncyCaSTLe 1.49,如您在 iText POM 中所见:https://github.com/itext/itextpdf/blob/5.5.11/itext/pom.xml
<artifactId>itextpdf</artifactId>
<version>5.5.11</version>
<dependencies>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.49</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.49</version>
<optional>true</optional>
</dependency>
</dependencies>
还要确保您只有一个版本的 BouncyCaSTLe。
关于java - NoSuchMethodError org.bouncycaSTLe.asn1.ASN1InputStream.readObject()Lorg/bouncycaSTLe/asn1/ASN1Primitive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43181550/
我正在尝试使用 iText java 。运行示例“how to sign”时会出现以下错误: Caused by: java.lang.ClassNotFoundException: org.boun
我的问题看起来像这样。我已经在卡和终端侧生成了 key 。我在终端端有卡公钥和私钥以及终端公钥和私钥,在卡端也是如此(我正在做测试,所以这就是为什么我在终端和卡上都有它们)。当我为私有(private
我正在尝试使用 BouncyCaSTLe 类来加密和解密密码。我已经编写了一个测试程序并生成了 PEM 格式和 DER 格式的测试 key /证书。我可以将 key /证书读入我的程序并获取公钥并加密
我在线程“主”java.lang.NoSuchMethodError 中遇到异常:org.bouncycaSTLe.asn1.ASN1InputStream.readObject()Lorg/boun
我有一个 tomcat 8.5 正在运行并在上面部署了我的应用程序。虽然编译一切正常,但在运行时出现以下错误: java.lang.NoClassDefFoundError: org/bouncyca
我有一个使用已弃用的函数 org.bouncycaSTLe.jce.PKCS10CertificationRequest 的函数,并且我尝试使用 org.bouncycaSTLe.pkcs.PKCS1
在我的c#项目中,我放了这段代码: 最初,我从我用充气城堡创建的证书中恢复, key 对,然后我提取私钥,我的目标是,它是一种格式。 pem, AsymmetricKeyParameter priv
当我尝试获取时间戳响应时出现错误。我使用的代码是: PdfPKCS7 sgn = new PdfPKCS7(pk, chain, null, "SHA256", null, false);
我正在尝试使用 silvertunnel netlib 连接到 tor 隐藏服务,但我不断遇到相同的异常: Exception in thread "org.silvertunnel.netlib.l
我想在 android 中使用 BouncyCaSTLe 进行 GnuPG 加密(想要获取 .gpg 文件)。但我收到此错误。(不支持的类文件主要版本 59。 无法转换 bcprov-jdk15on-
我想从此answer进行编码,但我有错误The import org.bouncycastle.openssl cannot be resolved The import org.bouncycast
我使用 Bouncy CaSTLe API 创建了一个 OCSP 客户端。我在从我得到的 OCSP 响应中找到证书状态(说明它是否被撤销)时遇到了麻烦。从 resp.getCertStatus() 返
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我已经用现有的Gradle文件导入BouncyCaSTLe项目。而且我目前正在将其他API实现到BC中,但出现了StackOverflow错误。现在,我想增加我的JVM堆栈。我已经尝试添加 task
我有一个使用 Spring Boot 创建的 Web 应用程序。我添加了 jasper 报告、iText 和 bouncycaSTLe maven 依赖项。 Jasper 和 iText 都包含 bo
是否可以在不修改安全策略文件的情况下以编程方式安装 BouncycaSTLe 提供程序? 最佳答案 当然: java.security.Security.addProvider(new Bou
在gpg中,您可以选择通过--comments选项向您的签名文件添加注释。 BouncyCaSTLe icw Java 上有可用的东西吗? 例如在gpg中: gpg --batch
我正在尝试使用 BouncyCaSTLe 库对字符串进行签名。我的代码可以工作,但生成的字符串充满了奇怪的字符,我的直觉表明它有问题。我的代码如下所示 Security.addProvider(new
我正在使用 BouncyCaSTLe 包进行 OpenPGP 加密。除了一部分之外,一切都很顺利。当我将加密文本写入文件时,它会附加以下消息 -----BEGIN PGP MESSAGE----- V
如何创建 org.bouncycastle.asn1.x509.AlgorithmIdentifier 的新实例RSA OAEP?为了能够在这里使用它: JceKeyTransRecipientInf
我是一名优秀的程序员,十分优秀!