- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
作为我对客户端/服务器 pdf 签名研究的一部分,我测试了 itext pdf 延迟签名示例。不幸的是,我生成的 pdf 即合并空签名 pdf 和哈希值的输出显示无效签名。
我的代码片段如下
class MyExternalSignatureContainer implements ExternalSignatureContainer {
protected byte[] sig;
protected Certificate[] chain;
public MyExternalSignatureContainer(byte[] sig,Certificate[] chain) {
this.sig = sig;
this.chain=chain;
}
public byte[] sign(InputStream is)throws GeneralSecurityException {
return sig;
}
public byte[] emptySignature_hash(String src, String dest, String fieldname, Certificate[] chain) throws IOException, DocumentException, GeneralSecurityException {
PdfReader reader = new PdfReader(src);
FileOutputStream os = new FileOutputStream(dest);
PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0');
PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
appearance.setVisibleSignature(new Rectangle(36, 748, 144, 780), 1, fieldname);
appearance.setCertificate(chain[0]);
ExternalSignatureContainer external = new ExternalBlankSignatureContainer(PdfName.ADOBE_PPKLITE, PdfName.ADBE_PKCS7_DETACHED);
MakeSignature.signExternalContainer(appearance, external, 8192);
InputStream inp = appearance.getRangeStream();
BouncyCastleDigest digest = new BouncyCastleDigest();
PdfPKCS7 sgn = new PdfPKCS7(null, chain, "SHA256", null, digest, false);
byte[] hash = DigestAlgorithms.digest(inp, digest.getMessageDigest("SHA256"));
Calendar cal = Calendar.getInstance();
cal1=cal;
System.out.println(cal);
byte[] sh = sgn.getAuthenticatedAttributeBytes(hash, cal, null, null, CryptoStandard.CMS);
return(sh);
}
public byte[] signed_hash(byte[] hash, PrivateKey pk, Certificate[] chain)throws GeneralSecurityException{
PrivateKeySignature signature = new PrivateKeySignature(pk, "SHA256", "SunPKCS11-eToken");
byte[] extSignature = signature.sign(hash);
//return extSignature;
BouncyCastleDigest digest = new BouncyCastleDigest();
Calendar cal = Calendar.getInstance();
String hashAlgorithm = signature.getHashAlgorithm();
System.out.println(hashAlgorithm);
PdfPKCS7 sgn = new PdfPKCS7(null, chain, "SHA256", null, digest, false);
sgn.setExternalDigest(extSignature, null, signature.getEncryptionAlgorithm());
return sgn.getEncodedPKCS7(hash, cal1, null, null, null, CryptoStandard.CMS);
}
public void createSignature(String src, String dest, String fieldname,byte[] hash, PrivateKey pk, Certificate[] chain) throws IOException, DocumentException, GeneralSecurityException {
PdfReader reader = new PdfReader(src);
FileOutputStream os = new FileOutputStream(dest);
ExternalSignatureContainer external = new MyExternalSignatureContainer(hash,chain);
MakeSignature.signDeferred(reader, fieldname, os, external);
}
public static void main(String[] args) throws IOException, GeneralSecurityException, DocumentException {
byte[] hh = app.emptySignature_hash(SRC, TEMP, "sig1", chain);
byte[] hh_sign = (app.signed_hash(hh, pk, chain));
app.createSignature(TEMP, DEST1, "sig1",hh_sign, pk, chain);
}
出了点问题。我不明白。搜索了很多相同的教程。
我使用 pkcss11 USB token 进行签名
1 Câu trả lời
您的架构是错误的,因为您在运行 MakeSignature.signExternalContainer
后使用 PdfSignatureAppearance 外观
. MakeSignature
TRONG signExternalContainer
Và signDetached
重载都会关闭底层 PdfStamper
,PdfSignatureAppearance
、和 PdfReader
实例。
因此,当您在方法中执行以下操作时 emptySignature_hash
MakeSignature.signExternalContainer(appearance, external, 8192);
InputStream inp = appearance.getRangeStream();
Của bạnvào
可能不一定包含任何有意义的内容。
相反,您应该访问字节范围来登录您的外部
对象,它会将其作为其dấu hiệu
方法的参数进行检索。简单地将哈希计算重构为该方法,并将计算出的哈希存储在该容器的成员中,以便在 emptySignature_hash
中检索它。
由于您尚未分享签名代码的示例结果,我无法尝试确定您的签名中是否还存在其他问题。
关于pdf - Itext pdf 延迟签名导致 pdf 签名无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47505696/
Tôi có hàm printHashKey này và nó hoạt động tốt. vui vẻ printHashKey() { thử { val info : PackageInfo = packageM
Làm thế nào để tôi ký gói ứng dụng Android của mình bằng khóa ký chính xác? Câu trả lời hay nhất Tôi đã thử sử dụng nhiều câu trả lời ở đây và trong câu hỏi này, nhưng bằng cách nào đó tôi nhận được lỗi này vì android/ứng dụng của tôi
Tôi có điều này trong tệp gradle của tôi: android { signingConfigs { mySigningConfig { keyAlias 'the
Vui lòng chọn ít nhất một phiên bản chữ ký để sử dụng trong Android Studio 2.3 Bây giờ khi bạn tạo APK đã ký trong Android Studio, nó sẽ hiển thị hai tùy chọn (hộp kiểm) cụ thể là 1. V1 (Chữ ký Jar)
Tôi muốn biểu diễn một số giá trị vô hướng (ví dụ số nguyên hoặc chuỗi) theo giá trị thực của nó hoặc một số giá trị NA rồi lưu trữ chúng trong một bộ sưu tập (ví dụ danh sách). Mục đích là xử lý các giá trị bị thiếu. Để thực hiện điều này, tôi đã triển khai một mô-đun chữ ký loại Scalar = sig
Tại sao cách này lại không hiệu quả? sum :: (Num a, Num b) => a -> b -> c sum ab = a + b Tất nhiên thông báo lỗi có liên quan đến chữ ký, nhưng tôi vẫn không hiểu tại sao. Không thể chiếu được
Cảm ơn sự trợ giúp, câu hỏi của tôi liên quan đến giá trị ax nhận được từ đoạn mã bên dưới? mov al,22h mov cl,0fdh imul cl Kết quả thực tế: ff9a Kỳ vọng của tôi: 00:9a (thông qua phép nhân nhị phân) Số đầu tiên là 22h
Tôi có một chú thích: import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.
Tôi nghĩ ra một thuật ngữ khi suy nghĩ về các đồ vật. Khi chúng ta mở rộng một lớp, lớp mở rộng sẽ có cùng chữ ký với lớp cha, do đó thuật ngữ IS-A xuất phát từ... Ví dụ lớp Foo{ } lớp Foo2 mở rộng Foo{ } c
Tôi cần chuyển đổi giữa số nguyên có dấu và biểu diễn bên trong của chúng dưới dạng chuỗi byte. Trong C, tôi sử dụng hàm sau: unsigned char hibyte(unsigned short i) {return i>>8;}
Tôi đang cố gắng ký một số dữ liệu bằng cách sử dụng các tham số RSA được cung cấp. Tôi đã đưa ra môđun, số mũ, D, DP, DQ, P, Q và InverseQ. Thư viện hoặc phương pháp nào dễ sử dụng nhất để tính toán chữ ký này? Trong C#, sau khi bạn cung cấp các tham số, chúng có
Sự khác biệt giữa các chữ ký này là gì? T * f(T & định danh); T & f(T & định danh); T f(T & định danh); void f(T * định danh
Câu hỏi này đã có câu trả lời ở đây: Đã đóng cách đây 11 năm. Có thể trùng lặp: Tôi phải đặt “mẫu” và “kiểu” ở đâu và tại sao?
Tôi có chữ ký và cần thêm hình ảnh bên cạnh chữ ký. Nhưng tôi không chắc chắn chính xác là bao nhiêu và css là gì. Hiện tại nó hiển thị bên dưới văn bản, tôi nên đặt hình ảnh ở đâu? Trong cùng một tr hay td?
Khi xem mã nguồn JDK cho LinkedHashMap, tôi nhận thấy rằng lớp này được khai báo là: public class LinkedHashMap extends HashMap im
Bối cảnh: Tôi được thừa hưởng một hệ thống nhúng dựa trên Linux bao gồm một proxy SMTP và một số hạn chế kỳ quặc mà tôi phải chấp nhận. Nó nằm giữa máy khách và máy chủ SMTP. Khi máy khách SMTP kết nối, proxy sẽ mở kết nối tới máy chủ.
Đây là quy tắc trong dạng C++17 ([basic.lval]/8), nhưng nó có vẻ tương tự trong các tiêu chuẩn khác (đó là "lvalue" thay vì "glvalue" trong C++98): 8 Nếu một chương trình cố gắng
Tôi có một chú thích: import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.
Tôi có một dự án sắp tới trong đó tôi muốn sử dụng bảng chữ ký điện tử để ghi lại chữ ký của khách hàng bằng C#, hiển thị văn bản trên thiết bị, v.v. Bây giờ, trước khi tôi bắt đầu nghiên cứu sâu hơn, tôi muốn hỏi mọi người một số ý kiến/gợi ý về thiết bị tôi nên sử dụng. Yêu cầu của tôi hiện rất chung chung: Tôi
Tiếng thì thầm bắt đầu mở rộng lãnh thổ trong tim nó, như thể nó đã được phát sóng ba lần theo một cách thông thường. Những gợn sóng đẹp đẽ được tạo ra bằng một kỹ thuật không mấy tinh vi. Từ chối bình minh nhưng vẫn khao khát ánh nắng rực rỡ. Dòng hình ảnh bất tận chính là họ, và tấm rèm của tôi dừng lại ở chân phải tôi, nó háo hức bước xuống, và tôi chỉ còn lại lời tự nói với chính mình
Tôi là một lập trình viên xuất sắc, rất giỏi!