- 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 đang cố gắng đọc dữ liệu từ Cassandra bằng Spark. DataFrame rdf = sqlContext.read().option("keyspace", "readypulse
Đây là mã: void i_log_ (int error, const char * file, int line, const char * fmt, ...) { /* Nhận lỗi
Tôi phải gỡ lỗi một chương trình phụ thuộc nhiều vào Gtk. Vấn đề là vì một lý do nào đó, tôi bắt đầu nhận được rất nhiều cảnh báo thời gian chạy khi sử dụng đối tượng GtkWindow. Vấn đề là ngay cả khi Gtk báo lỗi nghiêm trọng, nó vẫn không dừng khi gặp những lỗi này. Tôi không có lịch sử thay đổi cơ sở mã
Tôi đang cố gắng lấy mã nhị phân từ một chương trình đã được biên dịch và liên kết hiệu quả. Tôi đã nhận được độ dài của nó thông qua GL_PROGRAM_BINARY_LENGTH. Tài liệu cho biết có hai trường hợp GL_INVALID_OPERATION có thể xảy ra
Tôi có một dịch vụ được lưu trữ trên môi trường Azure. Tôi đang sử dụng ứng dụng bảng điều khiển để sử dụng dịch vụ. Khi thực hiện việc này, tôi nhận được ngoại lệ: "Dịch vụ được yêu cầu, 'http://xxxx-d.yyyy.be/S
Tôi có đoạn mã sau và nó bị tắt bởi tín hiệu SEGV. Sử dụng trình gỡ lỗi cho thấy nó bị tắt bởi lệnh sem_init() đầu tiên trong main(). Nếu tôi chú thích sem_init() đầu tiên, sem_init() thứ hai cũng gây ra vấn đề tương tự. Tôi đang cố gắng tìm ra điều gì
Hiện tại tôi đang viết một ứng dụng (dành cho iOS 6, hỗ trợ ARC) sử dụng JSON để truyền dữ liệu và Core Data để lưu trữ lâu dài. Dữ liệu JSON được mã hóa bằng tập lệnh PHP từ cơ sở dữ liệu MySQL bằng cách sử dụng json_encode.
Tôi vẫn còn rất mới với Xamarin.Forms. Tôi có một hàm rất đơn giản trên trang chủ xuất hiện async public Task BaseAppearing() { if (UserID
Sau đây là phiên bản đơn giản hóa của mã của tôi. lớp công khai MainActivity mở rộng ActionBarActivity { mục nhập ArrayList riêng tư = new Arr
Tôi đang cố gắng tìm hiểu lý do tại sao hai thư viện Java của tôi gặp khó khăn khi hoạt động cùng nhau. Đây là kịch bản: Thư viện 1 có lớp A với hàm tạo sau: public A(Object obj) { /* boilerplate */ }
Mã của tôi hoạt động tốt nếu trang web không yêu cầu xác thực, nếu có, tôi sẽ nhận được lỗi EXC_BAD_ACCESS ngay sau khi in "Đã tạo thông tin xác thực". Tôi sẽ không đăng bất cứ điều gì và mã này được sao chép trực tiếp từ tài liệu - bạn có biết điều gì đang xảy ra không
Tôi đang gặp sự cố khi đưa NSArray vào UITableView. Tôi chắc chắn mình đang làm điều gì đó ngu ngốc nhưng tôi không thể hiểu nổi. Khi tôi thử đếm đơn giản, tôi nhận được lỗi EXC_BAD_ACCESS, tôi biết điều này là do tôi đang cố gắng
Tôi có một UITextField trên UITableViewCell và một nút trên một ô khác. Tôi nhấp vào UITextField (bàn phím xuất hiện). UITextField gọi phương thức sau: - (BO
Tôi có một ứng dụng thỉnh thoảng bị sập. Nhật ký sự cố hiển thị dấu vết ngăn xếp mà tôi thấy khó giải mã nên hy vọng ai đó đã thấy điều này và có thể chỉ cho tôi hướng đi đúng. Về cơ bản, ứng dụng thực hiện yêu cầu mã hóa địa lý ngược khi khởi động để hiển thị vị trí của người dùng trong một tab.
Tôi đã phát triển một CGImage và nó hoạt động tốt khi chương trình hiển thị nó trên màn hình bằng cách sử dụng: [output_view.layer performSelectorOnMainThread:@selector(set
Tôi đang sử dụng lớp EncryptedSharedPreferences mới theo cách được Google khuyến nghị: private fun securePrefs(context: Context): SharedPrefe
Tôi có một bộ lặp với một số nút điều khiển bên trong, một trong số đó là hộp văn bản. Tôi đang cố gắng lấy một hộp văn bản bằng cách sử dụng jquery, mã của tôi trông như thế này: $("#").click(function (event) {}); nhưng tôi luôn nhận được nu
Lỗi khởi tạo TTS được quan sát thấy trong tình huống sau đây, quá ngẫu nhiên. Công cụ TTS đã được cài đặt, bộ giọng nói đã có và có thể phát các tt mẫu từ các tùy chọn trợ năng. Việc khởi tạo TTS ngẫu nhiên không thành công trên cùng thiết bị nơi nó đã được khởi tạo và phát trước đó. Trên các thiết bị khác nhau (
maven pom.xml org.openjdk.jol jol-core 0.10 Lớp Java: public class MyObjectData { pr
Độ dài chuỗi tối đa có thể sử dụng MD5 làm giá trị băm mà không lo xung đột là bao nhiêu? Điều này có thể được tính toán bằng cách tạo ra hàm băm MD5 cho mọi chuỗi có thể có trong một bộ ký tự cụ thể, với độ dài tăng dần, cho đến khi hàm băm xuất hiện lần thứ hai (xung đột). Không có xung đột
Tôi là một lập trình viên xuất sắc, rất giỏi!