2011-01-21 63 views
2

我有PEM格式的RSA公钥和私钥(p,q,e,n,d全部)。我很好奇地想知道:OpenSSL/Mozilla NSS RSA签名和验证(PK11_Sign,PK11_Verify,PK11_VerifyRecover函数)如何工作?

  • 如何PK11_Sign()PK11_Verify()PK11_VerifyRecover()从OpenSSL的/ Mozilla的NSS库)与RSA合作?
  • 如何将填充应用于要签名的输入消息?

我的问题的上下文是:我看到PK11_Sign()在签名过程中为我的输入数据添加了一些填充。例如(假设密钥大小为162位):

 
my input = 31323334353036373839 
padded input = 1FFFFFFFFFFFFFFFF0031323334353036373839 

我想知道:

  • 这是什么填补方案和指针上它是如何工作的名字吗?
  • 上述OpenSSL函数的默认填充方案是什么?例如,如果我执行“openssl rsautl -in input.txt -inkey mykey.pem -out signed.txt”,将使用哪种填充方案?

回答

3
  • PK11_Sign等使用PKCS#1 v.1.5的签名,其中包括你提到的填充。

  • 填充方案是称为EMSA-PKCS1-V1_5-ENCODE算法的一部分。我不认为它有一个名字,尽管它可能被非正式地称为“PKCS#1 v.1.5签名填充”。它在the PKCS#1 standard中定义。

  • 根据the documentationopenssl rsautl的默认值是使用PKCS#1 v.1.5签名,这意味着此填充。