2017-09-07 1 views
0

unique_ptr과 함께 SSL 및 SSL_CTX 포인터를 관리하는 코드가 있습니다.unique_ptr using OpenSSL v1.1.0 <SSL>

다음 코드는 OpenSSL을 1.0.2로 컴파일하지만 OpenSSL을 1.1.1로 :

std::unique_ptr<SSL> m_pSession 

나는 '하려면 openssl/ssl.h'를 포함하지만, OpenSSL을 1.1.1로 나는 다음과 같은 컴파일 수 (Visual Studio를 사용) 오류 :

error C2027: use of undefined type 'ssl_st' 

나는 조금 검색 좀 그리고 OpenSSL을의 최신 버전은 어디 ssl_st의 실제 선언을 제공하지 않는 것 같다? 이것에 대한 해결책은 무엇입니까?

답변

0

OpenSSL 포럼을 통해 다음 솔루션을 얻었습니다.

using UniqueSslPtr = std::unique_ptr<SSL, SslDeleter>; 

using UniqueCtxPtr = std::unique_ptr<SSL_CTX, SslDeleter>; 

을 사용자 정의 Deleter가이 SSL 작동 :

struct SslDeleter { 
    void operator()(SSL *_p) 
    { 
     SSL_shutdown(_p); 
     SSL_free(_p); 
    } 

    void operator()(SSL_CTX *_p) 
    { 
     SSL_CTX_free(_p); 
    } 
}; 

쉽게 스마트 포인터와 함께 작동하는 타입 정의를 사용

은 unique_ptr에 대한 사용자 정의 Deleter가를 정의 SSL_CTX이고에서도 작동해야합니다..