OpenSSL (버전 1.0.1)을 사용하여 디지털 서명 (PKCS7) 기능을 구현하려고합니다.openssl의 pkcs7에 대한 다이제스트 및 암호화 알고리즘을 선택하십시오.
나는 이것을 비교적 잘 알고 있습니다.
API를 사용: PKCS7_sign 및 PKCS7_verify, 나는 특정 다이제스트를 설정 및/또는 서명을위한 암호화 알고리즘하는 방법을 모르겠어요. 차례로
PKCS7_sign 누구 넷째 다이제스트 식별자를 나타내는 파라미터왔다 NULL로 하드 코딩 PKCS7_sign_add_signer를 호출한다. 이것은 기본 다이제스트 알고리즘이 사용될 것임을 의미합니다.
그래서 제 질문은 다음과 같습니다
1) 무엇을 기본적으로 사용되는 다이제스트 및 암호화 알고리즘은?
2)이 기본값을 설정할 방법이 있습니까? 어떻게 할 수 있습니까?
3) 일부 데이터에 서명하여 다른 사람에게 보냈다고 가정합니다. 서명에 사용 된 기본 알고리즘을 어떻게 알 수 있습니까? [답변]
1) 설명서를 확인하십시오. 2) 기본값으로 설정되었으므로 원하는대로 지정할 수 있습니다 (예 : SHA256 예). 3) PKCS7 사양을 읽습니다. 서명 알고리즘과 다이제스트 알고리즘은 [PKCS # 7 Cryptographic Message Syntax Standard] (http://www.rsa.com/rsalabs/node.asp?id=2129) 형식의 일부로 OID에 포함됩니다. – WhozCraig
또한 (1)과 관련하여 PKCS7_sign의 문서에서 "서명자가 지정되면 서명 알고리즘에 기본 요약을 사용하며 이것은 RSA 및 DSA 키 모두에 대해 SHA1입니다." – WhozCraig