OpenSSL의 c 라이브러리를 사용하여 첫 번째 코드 샘플 here 다음에 타원 곡선 Diffie-Hellman (ECDH) 키 쌍을 생성합니다. 그것은이 라인 공개 키의 실제 교환 얼버무 :OpenSSL의 EVP_PKEY 구조 내에서 원시 ECDH 공개 키, 개인 키 및 매개 변수에 어떻게 액세스합니까?
peerkey = get_peerkey(pkey);
pkey
변수와 반환 값 유형 EVP *
의 등록 상표입니다. pkey
에는 이전에 생성 된 공개 키, 개인 키 및 params가 들어 있으며 반환 값에는 피어의 공개 키만 포함됩니다.
- 방법
get_peerkey()
실제로 피어에 보내는pkey
에서 불과 공개 키를 추출하는 것입니다 : 그래서이 세 가지 질문을 제기? - 코드에서 키 교환 후 개인 키와 매개 변수를 나중에 사용하기 위해 저장하기 위해
pKey
에서 어떻게 추출합니까? get_peerkey()
은 피어의 원시 공개 키에서 새로운EVP_PKEY
구조를 어떻게 생성합니까?
난에는 OpenSSL 기능 EVP_PKEY_print_public()
, EVP_PKEY_print_private()
및 EVP_PKEY_print_params()
을 본 적이 있지만, 이들은 사람이 읽을 수있는 출력을 생성합니다. 그리고 사람이 읽을 수있는 공개 키를 다시 EVP_PKEY
구조로 변환하는 것과 동일한 것을 발견하지 못했습니다.
후속 답변을 제공해 주셔서 감사합니다. – samoz
공개 키를 비 직렬화하는 것은 4 년 5 개월 전일지도 모르지만 오늘은 상당히 복잡하게 들립니다 !!! : p EVP_PKEY_get1_EC_KEY는 옥텟으로부터 EC_POINT를 생성하기로되어 있지만 입력으로부터 EC_POINT *를 얻습니다! 나는 EC_POINT_new에 의해 그것을 만들려고했으나 나중에 EVP_KEY를 생성하는 비밀 키를 만들 수 없었다! – madz