@@ -1630,26 +1630,31 @@ void SSLWrap<Base>::OnClientHello(void* arg,
16301630 Base* w = static_cast <Base*>(arg);
16311631 Environment* env = w->ssl_env ();
16321632 HandleScope handle_scope (env->isolate ());
1633- Context::Scope context_scope (env->context ());
1633+ Local<Context> context = env->context ();
1634+ Context::Scope context_scope (context);
16341635
16351636 Local<Object> hello_obj = Object::New (env->isolate ());
16361637 Local<Object> buff = Buffer::Copy (
16371638 env,
16381639 reinterpret_cast <const char *>(hello.session_id ()),
16391640 hello.session_size ()).ToLocalChecked ();
1640- hello_obj->Set (env->session_id_string (), buff);
1641+ hello_obj->Set (context, env->session_id_string (), buff). FromJust ( );
16411642 if (hello.servername () == nullptr ) {
1642- hello_obj->Set (env->servername_string (), String::Empty (env->isolate ()));
1643+ hello_obj->Set (context,
1644+ env->servername_string (),
1645+ String::Empty (env->isolate ())).FromJust ();
16431646 } else {
16441647 Local<String> servername = OneByteString (env->isolate (),
16451648 hello.servername (),
16461649 hello.servername_size ());
1647- hello_obj->Set (env->servername_string (), servername);
1650+ hello_obj->Set (context, env->servername_string (), servername). FromJust ( );
16481651 }
1649- hello_obj->Set (env->tls_ticket_string (),
1650- Boolean::New (env->isolate (), hello.has_ticket ()));
1651- hello_obj->Set (env->ocsp_request_string (),
1652- Boolean::New (env->isolate (), hello.ocsp_request ()));
1652+ hello_obj->Set (context,
1653+ env->tls_ticket_string (),
1654+ Boolean::New (env->isolate (), hello.has_ticket ())).FromJust ();
1655+ hello_obj->Set (context,
1656+ env->ocsp_request_string (),
1657+ Boolean::New (env->isolate (), hello.ocsp_request ())).FromJust ();
16531658
16541659 Local<Value> argv[] = { hello_obj };
16551660 w->MakeCallback (env->onclienthello_string (), arraysize (argv), argv);
@@ -1694,7 +1699,7 @@ static bool SafeX509ExtPrint(BIO* out, X509_EXTENSION* ext) {
16941699
16951700static Local<Object> X509ToObject (Environment* env, X509* cert) {
16961701 EscapableHandleScope scope (env->isolate ());
1697-
1702+ Local<Context> context = env-> context ();
16981703 Local<Object> info = Object::New (env->isolate ());
16991704
17001705 BIO* bio = BIO_new (BIO_s_mem ());
@@ -1704,18 +1709,20 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
17041709 0 ,
17051710 X509_NAME_FLAGS) > 0 ) {
17061711 BIO_get_mem_ptr (bio, &mem);
1707- info->Set (env->subject_string (),
1712+ info->Set (context, env->subject_string (),
17081713 String::NewFromUtf8 (env->isolate (), mem->data ,
1709- String::kNormalString , mem->length ));
1714+ String::kNormalString ,
1715+ mem->length )).FromJust ();
17101716 }
17111717 (void ) BIO_reset (bio);
17121718
17131719 X509_NAME* issuer_name = X509_get_issuer_name (cert);
17141720 if (X509_NAME_print_ex (bio, issuer_name, 0 , X509_NAME_FLAGS) > 0 ) {
17151721 BIO_get_mem_ptr (bio, &mem);
1716- info->Set (env->issuer_string (),
1722+ info->Set (context, env->issuer_string (),
17171723 String::NewFromUtf8 (env->isolate (), mem->data ,
1718- String::kNormalString , mem->length ));
1724+ String::kNormalString ,
1725+ mem->length )).FromJust ();
17191726 }
17201727 (void ) BIO_reset (bio);
17211728
@@ -1740,9 +1747,10 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
17401747 }
17411748
17421749 BIO_get_mem_ptr (bio, &mem);
1743- info->Set (keys[i],
1750+ info->Set (context, keys[i],
17441751 String::NewFromUtf8 (env->isolate (), mem->data ,
1745- String::kNormalString , mem->length ));
1752+ String::kNormalString ,
1753+ mem->length )).FromJust ();
17461754
17471755 (void ) BIO_reset (bio);
17481756 }
@@ -1758,9 +1766,10 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
17581766 RSA_get0_key (rsa, &n, &e, nullptr );
17591767 BN_print (bio, n);
17601768 BIO_get_mem_ptr (bio, &mem);
1761- info->Set (env->modulus_string (),
1769+ info->Set (context, env->modulus_string (),
17621770 String::NewFromUtf8 (env->isolate (), mem->data ,
1763- String::kNormalString , mem->length ));
1771+ String::kNormalString ,
1772+ mem->length )).FromJust ();
17641773 (void ) BIO_reset (bio);
17651774
17661775 uint64_t exponent_word = static_cast <uint64_t >(BN_get_word (e));
@@ -1772,9 +1781,10 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
17721781 BIO_printf (bio, " 0x%x%08x" , hi, lo);
17731782 }
17741783 BIO_get_mem_ptr (bio, &mem);
1775- info->Set (env->exponent_string (),
1784+ info->Set (context, env->exponent_string (),
17761785 String::NewFromUtf8 (env->isolate (), mem->data ,
1777- String::kNormalString , mem->length ));
1786+ String::kNormalString ,
1787+ mem->length )).FromJust ();
17781788 (void ) BIO_reset (bio);
17791789 }
17801790
@@ -1789,16 +1799,18 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
17891799
17901800 ASN1_TIME_print (bio, X509_get_notBefore (cert));
17911801 BIO_get_mem_ptr (bio, &mem);
1792- info->Set (env->valid_from_string (),
1802+ info->Set (context, env->valid_from_string (),
17931803 String::NewFromUtf8 (env->isolate (), mem->data ,
1794- String::kNormalString , mem->length ));
1804+ String::kNormalString ,
1805+ mem->length )).FromJust ();
17951806 (void ) BIO_reset (bio);
17961807
17971808 ASN1_TIME_print (bio, X509_get_notAfter (cert));
17981809 BIO_get_mem_ptr (bio, &mem);
1799- info->Set (env->valid_to_string (),
1810+ info->Set (context, env->valid_to_string (),
18001811 String::NewFromUtf8 (env->isolate (), mem->data ,
1801- String::kNormalString , mem->length ));
1812+ String::kNormalString ,
1813+ mem->length )).FromJust ();
18021814 BIO_free_all (bio);
18031815
18041816 unsigned int md_size, i;
@@ -1819,8 +1831,8 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
18191831 fingerprint[0 ] = ' \0 ' ;
18201832 }
18211833
1822- info->Set (env->fingerprint_string (),
1823- OneByteString (env->isolate (), fingerprint));
1834+ info->Set (context, env->fingerprint_string (),
1835+ OneByteString (env->isolate (), fingerprint)). FromJust () ;
18241836 }
18251837
18261838 STACK_OF (ASN1_OBJECT)* eku = static_cast <STACK_OF (ASN1_OBJECT)*>(
@@ -1832,18 +1844,20 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
18321844 int j = 0 ;
18331845 for (int i = 0 ; i < sk_ASN1_OBJECT_num (eku); i++) {
18341846 if (OBJ_obj2txt (buf, sizeof (buf), sk_ASN1_OBJECT_value (eku, i), 1 ) >= 0 )
1835- ext_key_usage->Set (j++, OneByteString (env->isolate (), buf));
1847+ ext_key_usage->Set (context,
1848+ j++,
1849+ OneByteString (env->isolate (), buf)).FromJust ();
18361850 }
18371851
18381852 sk_ASN1_OBJECT_pop_free (eku, ASN1_OBJECT_free);
1839- info->Set (env->ext_key_usage_string (), ext_key_usage);
1853+ info->Set (context, env->ext_key_usage_string (), ext_key_usage). FromJust ( );
18401854 }
18411855
18421856 if (ASN1_INTEGER* serial_number = X509_get_serialNumber (cert)) {
18431857 if (BIGNUM* bn = ASN1_INTEGER_to_BN (serial_number, nullptr )) {
18441858 if (char * buf = BN_bn2hex (bn)) {
1845- info->Set (env->serial_number_string (),
1846- OneByteString (env->isolate (), buf));
1859+ info->Set (context, env->serial_number_string (),
1860+ OneByteString (env->isolate (), buf)). FromJust () ;
18471861 OPENSSL_free (buf);
18481862 }
18491863 BN_free (bn);
@@ -1856,7 +1870,7 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
18561870 unsigned char * serialized = reinterpret_cast <unsigned char *>(
18571871 Buffer::Data (buff));
18581872 i2d_X509 (cert, &serialized);
1859- info->Set (env->raw_string (), buff);
1873+ info->Set (context, env->raw_string (), buff). FromJust ( );
18601874
18611875 return scope.Escape (info);
18621876}
@@ -1869,6 +1883,7 @@ void SSLWrap<Base>::GetPeerCertificate(
18691883 Base* w;
18701884 ASSIGN_OR_RETURN_UNWRAP (&w, args.Holder ());
18711885 Environment* env = w->ssl_env ();
1886+ Local<Context> context = env->context ();
18721887
18731888 ClearErrorOnReturn clear_error_on_return;
18741889
@@ -1920,7 +1935,7 @@ void SSLWrap<Base>::GetPeerCertificate(
19201935 continue ;
19211936
19221937 Local<Object> ca_info = X509ToObject (env, ca);
1923- info->Set (env->issuercert_string (), ca_info);
1938+ info->Set (context, env->issuercert_string (), ca_info). FromJust ( );
19241939 info = ca_info;
19251940
19261941 // NOTE: Intentionally freeing cert that is not used anymore
@@ -1943,7 +1958,7 @@ void SSLWrap<Base>::GetPeerCertificate(
19431958 break ;
19441959
19451960 Local<Object> ca_info = X509ToObject (env, ca);
1946- info->Set (env->issuercert_string (), ca_info);
1961+ info->Set (context, env->issuercert_string (), ca_info). FromJust ( );
19471962 info = ca_info;
19481963
19491964 // NOTE: Intentionally freeing cert that is not used anymore
@@ -1955,7 +1970,7 @@ void SSLWrap<Base>::GetPeerCertificate(
19551970
19561971 // Self-issued certificate
19571972 if (X509_check_issued (cert, cert) == X509_V_OK)
1958- info->Set (env->issuercert_string (), info);
1973+ info->Set (context, env->issuercert_string (), info). FromJust ( );
19591974
19601975 CHECK_NE (cert, nullptr );
19611976
@@ -2151,6 +2166,7 @@ void SSLWrap<Base>::GetEphemeralKeyInfo(
21512166 Base* w;
21522167 ASSIGN_OR_RETURN_UNWRAP (&w, args.Holder ());
21532168 Environment* env = Environment::GetCurrent (args);
2169+ Local<Context> context = env->context ();
21542170
21552171 CHECK_NE (w->ssl_ , nullptr );
21562172
@@ -2165,22 +2181,24 @@ void SSLWrap<Base>::GetEphemeralKeyInfo(
21652181 if (SSL_get_server_tmp_key (w->ssl_ , &key)) {
21662182 switch (EVP_PKEY_id (key)) {
21672183 case EVP_PKEY_DH:
2168- info->Set (env->type_string (),
2169- FIXED_ONE_BYTE_STRING (env->isolate (), " DH" ));
2170- info->Set (env->size_string (),
2171- Integer::New (env->isolate (), EVP_PKEY_bits (key)));
2184+ info->Set (context, env->type_string (),
2185+ FIXED_ONE_BYTE_STRING (env->isolate (), " DH" )). FromJust () ;
2186+ info->Set (context, env->size_string (),
2187+ Integer::New (env->isolate (), EVP_PKEY_bits (key))). FromJust () ;
21722188 break ;
21732189 case EVP_PKEY_EC:
21742190 {
21752191 EC_KEY* ec = EVP_PKEY_get1_EC_KEY (key);
21762192 int nid = EC_GROUP_get_curve_name (EC_KEY_get0_group (ec));
21772193 EC_KEY_free (ec);
2178- info->Set (env->type_string (),
2179- FIXED_ONE_BYTE_STRING (env->isolate (), " ECDH" ));
2180- info->Set (env->name_string (),
2181- OneByteString (args.GetIsolate (), OBJ_nid2sn (nid)));
2182- info->Set (env->size_string (),
2183- Integer::New (env->isolate (), EVP_PKEY_bits (key)));
2194+ info->Set (context, env->type_string (),
2195+ FIXED_ONE_BYTE_STRING (env->isolate (), " ECDH" )).FromJust ();
2196+ info->Set (context, env->name_string (),
2197+ OneByteString (args.GetIsolate (),
2198+ OBJ_nid2sn (nid))).FromJust ();
2199+ info->Set (context, env->size_string (),
2200+ Integer::New (env->isolate (),
2201+ EVP_PKEY_bits (key))).FromJust ();
21842202 }
21852203 }
21862204 EVP_PKEY_free (key);
@@ -2273,7 +2291,8 @@ void SSLWrap<Base>::VerifyError(const FunctionCallbackInfo<Value>& args) {
22732291 Local<String> reason_string = OneByteString (isolate, reason);
22742292 Local<Value> exception_value = Exception::Error (reason_string);
22752293 Local<Object> exception_object = exception_value->ToObject (isolate);
2276- exception_object->Set (w->env ()->code_string (), OneByteString (isolate, code));
2294+ exception_object->Set (w->env ()->context (), w->env ()->code_string (),
2295+ OneByteString (isolate, code)).FromJust ();
22772296 args.GetReturnValue ().Set (exception_object);
22782297}
22792298
@@ -2283,16 +2302,18 @@ void SSLWrap<Base>::GetCurrentCipher(const FunctionCallbackInfo<Value>& args) {
22832302 Base* w;
22842303 ASSIGN_OR_RETURN_UNWRAP (&w, args.Holder ());
22852304 Environment* env = w->ssl_env ();
2305+ Local<Context> context = env->context ();
22862306
22872307 const SSL_CIPHER* c = SSL_get_current_cipher (w->ssl_ );
22882308 if (c == nullptr )
22892309 return ;
22902310
22912311 Local<Object> info = Object::New (env->isolate ());
22922312 const char * cipher_name = SSL_CIPHER_get_name (c);
2293- info->Set (env->name_string (), OneByteString (args.GetIsolate (), cipher_name));
2294- info->Set (env->version_string (),
2295- OneByteString (args.GetIsolate (), " TLSv1/SSLv3" ));
2313+ info->Set (context, env->name_string (),
2314+ OneByteString (args.GetIsolate (), cipher_name)).FromJust ();
2315+ info->Set (context, env->version_string (),
2316+ OneByteString (args.GetIsolate (), " TLSv1/SSLv3" )).FromJust ();
22962317 args.GetReturnValue ().Set (info);
22972318}
22982319
@@ -2601,27 +2622,31 @@ int SSLWrap<Base>::SSLCertCallback(SSL* s, void* arg) {
26012622 return -1 ;
26022623
26032624 Environment* env = w->env ();
2625+ Local<Context> context = env->context ();
26042626 HandleScope handle_scope (env->isolate ());
2605- Context::Scope context_scope (env-> context () );
2627+ Context::Scope context_scope (context);
26062628 w->cert_cb_running_ = true ;
26072629
26082630 Local<Object> info = Object::New (env->isolate ());
26092631
26102632 const char * servername = SSL_get_servername (s, TLSEXT_NAMETYPE_host_name);
26112633 if (servername == nullptr ) {
2612- info->Set (env->servername_string (), String::Empty (env->isolate ()));
2634+ info->Set (context,
2635+ env->servername_string (),
2636+ String::Empty (env->isolate ())).FromJust ();
26132637 } else {
26142638 Local<String> str = OneByteString (env->isolate (), servername,
26152639 strlen (servername));
2616- info->Set (env->servername_string (), str);
2640+ info->Set (context, env->servername_string (), str). FromJust ( );
26172641 }
26182642
26192643 bool ocsp = false ;
26202644#ifdef NODE__HAVE_TLSEXT_STATUS_CB
26212645 ocsp = SSL_get_tlsext_status_type (s) == TLSEXT_STATUSTYPE_ocsp;
26222646#endif
26232647
2624- info->Set (env->ocsp_request_string (), Boolean::New (env->isolate (), ocsp));
2648+ info->Set (context, env->ocsp_request_string (),
2649+ Boolean::New (env->isolate (), ocsp)).FromJust ();
26252650
26262651 Local<Value> argv[] = { info };
26272652 w->MakeCallback (env->oncertcb_string (), arraysize (argv), argv);
@@ -5550,7 +5575,7 @@ void PBKDF2(const FunctionCallbackInfo<Value>& args) {
55505575 keylen);
55515576
55525577 if (args[5 ]->IsFunction ()) {
5553- obj->Set (env->ondone_string (), args[5 ]);
5578+ obj->Set (env->context (), env-> ondone_string (), args[5 ]). FromJust ( );
55545579
55555580 if (env->in_domain ()) {
55565581 obj->Set (env->context (),
@@ -5758,7 +5783,7 @@ void RandomBytes(const FunctionCallbackInfo<Value>& args) {
57585783 RandomBytesRequest::FREE_DATA);
57595784
57605785 if (args[1 ]->IsFunction ()) {
5761- obj->Set (env->ondone_string (), args[1 ]);
5786+ obj->Set (env->context (), env-> ondone_string (), args[1 ]). FromJust ( );
57625787
57635788 if (env->in_domain ()) {
57645789 obj->Set (env->context (),
@@ -5846,7 +5871,10 @@ void GetSSLCiphers(const FunctionCallbackInfo<Value>& args) {
58465871
58475872 for (int i = 0 ; i < sk_SSL_CIPHER_num (ciphers); ++i) {
58485873 const SSL_CIPHER* cipher = sk_SSL_CIPHER_value (ciphers, i);
5849- arr->Set (i, OneByteString (args.GetIsolate (), SSL_CIPHER_get_name (cipher)));
5874+ arr->Set (env->context (),
5875+ i,
5876+ OneByteString (args.GetIsolate (),
5877+ SSL_CIPHER_get_name (cipher))).FromJust ();
58505878 }
58515879
58525880 SSL_free (ssl);
@@ -5909,7 +5937,10 @@ void GetCurves(const FunctionCallbackInfo<Value>& args) {
59095937
59105938 if (EC_get_builtin_curves (curves, num_curves)) {
59115939 for (size_t i = 0 ; i < num_curves; i++) {
5912- arr->Set (i, OneByteString (env->isolate (), OBJ_nid2sn (curves[i].nid )));
5940+ arr->Set (env->context (),
5941+ i,
5942+ OneByteString (env->isolate (),
5943+ OBJ_nid2sn (curves[i].nid ))).FromJust ();
59135944 }
59145945 }
59155946
0 commit comments