Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将构造签名消息的操作分为两部分_Java_C_Openssl_Rsa_Pkcs#1 - Fatal编程技术网

Java 将构造签名消息的操作分为两部分

Java 将构造签名消息的操作分为两部分,java,c,openssl,rsa,pkcs#1,Java,C,Openssl,Rsa,Pkcs#1,我的任务是使用给定的私钥和证书对给定的数据进行签名,并输出签名消息(DER编码)。根据RFC 3370,它遵循CMS标准,签名为RSASSA_PKCS1_V1_5 我可以使用命令行中的openssl实现此操作: openssl cms -sign -in indata -nodetach -inkey private.key -signer public.cert -out outdata.der -outform DER 我的问题是,我想将签名行为和消息构造行为分开。为了签名,我们需要私钥,

我的任务是使用给定的私钥和证书对给定的数据进行签名,并输出签名消息(DER编码)。根据RFC 3370,它遵循CMS标准,签名为RSASSA_PKCS1_V1_5

我可以使用命令行中的
openssl
实现此操作:

openssl cms -sign -in indata -nodetach -inkey private.key -signer public.cert -out outdata.der -outform DER
我的问题是,我想将签名行为和消息构造行为分开。为了签名,我们需要私钥,为了构造消息,我们需要来自证书的数据。因此,理想情况下,我想这样做:

openssl cms -sign -step 1 -in indata -inkey private.key -out signature.bin 
openssl cms -sign -step 2 -in indata -signature signature.bin -signer public.cert -out outdata.der -outform DER

在C、C++或java中使用的任何密码库中有一种方法可以做到吗?< /P> OpenSSL是用C编写的;因此,您可以使用它的库。我一直在逐步了解openssl,openssl库的使用方式如下:查看CMS库API,我看不出如何与CMS\u add1\u signer做得不同,CMS\u add1\u signer只是一次接受所有内容。我将更深入地挖掘,但我只是想问,我是否可以在不深入挖掘libcrypto API的情况下完成这项工作