我需要使用rails应用程序服务器将数字签名插入到现有的pdf文件中.(基本上,客户端上传pdf文件,服务器使用本地证书对其进行签名)
我一直在使用JSignpdf将数字签名插入到pdf文件中,并开始探索ruby的宝石......
我在rubypdf网站http://soft.rubypdf.com/software/pdf-digital-signe上找到了另一个可移植文件,但在ruby中找不到任何宝石甚至示例代码.
我还看了OpenSSL的数字签名验证,但无法理解如何使用本地证书文件对现有文档进行实际签名.
我还在http://code.google.com/p/origami-pdf/上达到了一个高峰,但对于一个假设"简单"(至少在概念上)的任务来说,这似乎有点苛刻.
有什么想法/建议吗?
谢谢
我想使用两个密钥对来实现两个通信系统之间不可否认的安全消息传递.我使用以下方法生成并存储了两组密钥对:
sys1_key = OpenSSL::PKey::RSA.generate( 2048 )
sys2_key = OpenSSL::PKey::RSA.generate( 2048 )
Run Code Online (Sandbox Code Playgroud)
这两个密钥对都将其单独的公钥和私钥保存到文件中:
系统1有自己的公钥和私钥以及系统2的公钥.系统2有自己的公钥和私钥以及系统1的公钥.
在系统1上,我想使用消息"Hello world"并使用System 1的私钥和System 2的公钥对其进行加密.此消息只能由系统2使用其自己的私钥和系统1的公钥解密.
我们目前正在使用GPG实现类似的流程,但我希望自动化流程 - 任何帮助表示赞赏.我们在Ruby 1.9.2上.
我需要获取PKCS#7信封的摘要来手动检查它.
通常,当您想要验证pkcs#7信封的签名时,您可以这样做:
from M2Crypto import SMIME, X509, BIO
sm_obj = SMIME.SMIME()
x509 = X509.load_cert(join(PATH, 'QualifiedChain.crt'))
sk = X509.X509_Stack()
sk.push(x509)
sm_obj.set_x509_stack(sk)
st = X509.X509_Store()
st.load_info(join(PATH, 'QualifiedChain.crt'))
sm_obj.set_x509_store(st)
# re-wrap signature so that it fits base64 standards
cooked_sig = '\n'.join(raw_sig[pos:pos + 76] for pos in
xrange(0, len(raw_sig), 76))
# now, wrap the signature in a PKCS7 block
sig = "-----BEGIN PKCS7-----\n%s\n-----END PKCS7-----\n" % cooked_sig
# and load it into an SMIME p7 object through the BIO I/O buffer:
buf = BIO.MemoryBuffer(sig)
p7 …Run Code Online (Sandbox Code Playgroud)