X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Fcrypto%2FsslUtil.cpp;h=a3432ea5253c87026814d3eaf1cfa96dc231d858;hb=e290d5b161394e00585e85a4c8cff37605eb81ed;hp=39df1ffc6a8695ee15162551335a16be0fa7fdb1;hpb=156855b7e12c3a0254590da514b0d0e8efe469f4;p=cassiopeia.git diff --git a/src/crypto/sslUtil.cpp b/src/crypto/sslUtil.cpp index 39df1ff..a3432ea 100644 --- a/src/crypto/sslUtil.cpp +++ b/src/crypto/sslUtil.cpp @@ -91,7 +91,7 @@ static std::shared_ptr dh_param; std::shared_ptr generateSSLContext( bool server ) { std::shared_ptr ctx = std::shared_ptr( - SSL_CTX_new( TLSv1_2_method() ), + SSL_CTX_new( TLS_method() ), []( SSL_CTX* p ) { SSL_CTX_free( p ); } ); @@ -125,14 +125,13 @@ std::shared_ptr generateSSLContext( bool server ) { } else { dh_param = std::shared_ptr( DH_new(), DH_free ); logger::note( "Generating DH params" ); - BN_GENCB cb; - cb.ver = 2; - cb.arg = 0; - cb.cb.cb_2 = gencb; + BN_GENCB *cb = BN_GENCB_new(); + BN_GENCB_set(cb, gencb, NULL); - if( !DH_generate_parameters_ex( dh_param.get(), 2048, 5, &cb ) ) { + if( !DH_generate_parameters_ex( dh_param.get(), 2048, 5, cb ) ) { throw std::runtime_error("DH generation failed"); } + BN_GENCB_free(cb); std::cout << std::endl; paramfile = std::shared_ptr( fopen( "dh_param.pem", "w" ), fclose ); @@ -194,8 +193,9 @@ extern std::string crtPrefix; CAConfig::CAConfig( const std::string& name ) : path( "ca/" + name ), name( name ) { ca = loadX509FromFile( path + "/ca.crt" ); caKey = loadPkeyFromFile( path + "/ca.key" ); - ASN1_TIME* tm = X509_get_notBefore( ca ); - notBefore = std::shared_ptr( tm, ASN1_TIME_free ); + ASN1_TIME* tm = X509_get_notBefore( ca.get() ); + auto ca0 = ca; + notBefore = std::shared_ptr( tm, [ca0](auto p){(void)p;} ); std::size_t pos = name.find("_"); if (pos == std::string::npos) { throw new std::invalid_argument("ca name: " + name + " is malformed."); @@ -210,7 +210,7 @@ CAConfig::CAConfig( const std::string& name ) : path( "ca/" + name ), name( name std::string timeToString( std::shared_ptr time ) { std::shared_ptr gtime( ASN1_TIME_to_generalizedtime( time.get(), 0 ) ); - std::string strdate( ( char* ) ASN1_STRING_data( gtime.get() ), ASN1_STRING_length( gtime.get() ) ); + std::string strdate( ( char* ) ASN1_STRING_get0_data( gtime.get() ), ASN1_STRING_length( gtime.get() ) ); logger::notef("openssl formatted me a date: %s", strdate); if( strdate[strdate.size() - 1] != 'Z' ) {