代码拉取完成,页面将自动刷新
同步操作将从 ofdrw/ofdrw 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package org.ofdrw.sign.signContainer;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.junit.jupiter.api.Test;
import org.ofdrw.gm.cert.PEMLoader;
import org.ofdrw.reader.OFDReader;
import org.ofdrw.sign.ExtendSignatureContainer;
import org.ofdrw.sign.NumberFormatAtomicSignID;
import org.ofdrw.sign.OFDSigner;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.GeneralSecurityException;
import java.security.PrivateKey;
import java.security.Security;
import java.security.cert.Certificate;
import static org.junit.jupiter.api.Assertions.*;
/**
* 测试数科兼容的PKCS#7 CMS 签名格式
*
* @author 权观宇
* @since 2022-06-24 22:40:45
*/
class GBT35275PKCS9DSContainerTest {
/**
* 测试数科兼容的数字签名
*/
@Test
void sign() throws GeneralSecurityException, IOException {
Security.addProvider(new BouncyCastleProvider());
Path certPemFile = Paths.get("src/test/resources", "sign_cert.pem");
Path keyPemFile = Paths.get("src/test/resources", "sign_key.pem");
final PrivateKey privateKey = PEMLoader.loadPrivateKey(keyPemFile);
final Certificate certificate = PEMLoader.loadCert(certPemFile);
Path src = Paths.get("src/test/resources", "helloworld.ofd");
Path out = Paths.get("target/GB35275PKCS9DigitalSign.ofd");
// 1. 构造签名引擎
try (OFDReader reader = new OFDReader(src);
OFDSigner signer = new OFDSigner(reader, out, new NumberFormatAtomicSignID())) {
ExtendSignatureContainer signContainer = new GBT35275PKCS9DSContainer(certificate, privateKey);
// 3. 设置签名使用的扩展签名容器
signer.setSignContainer(signContainer);
// 4. 执行签名
signer.exeSign();
// 5. 关闭签名引擎,生成文档。
}
System.out.println(">> 生成文件位置: " + out.toAbsolutePath().toAbsolutePath());
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。