2013-01-17 1 views
1

OpenSSL (버전 1.0.1)을 사용하여 디지털 서명 (PKCS7) 기능을 구현하려고합니다.openssl의 pkcs7에 대한 다이제스트 및 암호화 알고리즘을 선택하십시오.

나는 이것을 비교적 잘 알고 있습니다.

API를 사용

: PKCS7_signPKCS7_verify, 나는 특정 다이제스트를 설정 및/또는 서명을위한 암호화 알고리즘하는 방법을 모르겠어요. 차례로

PKCS7_sign 누구 넷째 다이제스트 식별자를 나타내는 파라미터왔다 NULL로 하드 코딩 PKCS7_sign_add_signer를 호출한다. 이것은 기본 다이제스트 알고리즘이 사용될 것임을 의미합니다.

그래서 제 질문은 다음과 같습니다

1) 무엇을 기본적으로 사용되는 다이제스트 및 암호화 알고리즘은?

2)이 기본값을 설정할 방법이 있습니까? 어떻게 할 수 있습니까?

3) 일부 데이터에 서명하여 다른 사람에게 보냈다고 가정합니다. 서명에 사용 된 기본 알고리즘을 어떻게 알 수 있습니까? [답변]

+0

1) 설명서를 확인하십시오. 2) 기본값으로 설정되었으므로 원하는대로 지정할 수 있습니다 (예 : SHA256 예). 3) PKCS7 사양을 읽습니다. 서명 알고리즘과 다이제스트 알고리즘은 [PKCS # 7 Cryptographic Message Syntax Standard] (http://www.rsa.com/rsalabs/node.asp?id=2129) 형식의 일부로 OID에 포함됩니다. – WhozCraig

+1

또한 (1)과 관련하여 PKCS7_sign의 문서에서 "서명자가 지정되면 서명 알고리즘에 기본 요약을 사용하며 이것은 RSA 및 DSA 키 모두에 대해 SHA1입니다." – WhozCraig

답변

0

기본 요약 알고리즘은 OpenSSL documentation 당 SHA-1입니다.

서명에 사용되는 "기본"알고리즘은 signkey 매개 변수에 대해 전달한 x509 인증서에있는 키 유형에 따라 결정됩니다. 일반적으로 이것은 RSA 키가 될 것이지만 DSA 키일 수도 있습니다.

관련 문제