@@ -1724,26 +1724,31 @@ void SSLWrap<Base>::OnClientHello(void* arg,
1724
1724
Base* w = static_cast <Base*>(arg);
1725
1725
Environment* env = w->ssl_env ();
1726
1726
HandleScope handle_scope (env->isolate ());
1727
- Context::Scope context_scope (env->context ());
1727
+ Local<Context> context = env->context ();
1728
+ Context::Scope context_scope (context);
1728
1729
1729
1730
Local<Object> hello_obj = Object::New (env->isolate ());
1730
1731
Local<Object> buff = Buffer::Copy (
1731
1732
env,
1732
1733
reinterpret_cast <const char *>(hello.session_id ()),
1733
1734
hello.session_size ()).ToLocalChecked ();
1734
- hello_obj->Set (env->session_id_string (), buff);
1735
+ hello_obj->Set (context, env->session_id_string (), buff). FromJust ( );
1735
1736
if (hello.servername () == nullptr ) {
1736
- hello_obj->Set (env->servername_string (), String::Empty (env->isolate ()));
1737
+ hello_obj->Set (context,
1738
+ env->servername_string (),
1739
+ String::Empty (env->isolate ())).FromJust ();
1737
1740
} else {
1738
1741
Local<String> servername = OneByteString (env->isolate (),
1739
1742
hello.servername (),
1740
1743
hello.servername_size ());
1741
- hello_obj->Set (env->servername_string (), servername);
1744
+ hello_obj->Set (context, env->servername_string (), servername). FromJust ( );
1742
1745
}
1743
- hello_obj->Set (env->tls_ticket_string (),
1744
- Boolean::New (env->isolate (), hello.has_ticket ()));
1745
- hello_obj->Set (env->ocsp_request_string (),
1746
- Boolean::New (env->isolate (), hello.ocsp_request ()));
1746
+ hello_obj->Set (context,
1747
+ env->tls_ticket_string (),
1748
+ Boolean::New (env->isolate (), hello.has_ticket ())).FromJust ();
1749
+ hello_obj->Set (context,
1750
+ env->ocsp_request_string (),
1751
+ Boolean::New (env->isolate (), hello.ocsp_request ())).FromJust ();
1747
1752
1748
1753
Local<Value> argv[] = { hello_obj };
1749
1754
w->MakeCallback (env->onclienthello_string (), arraysize (argv), argv);
@@ -1788,7 +1793,7 @@ static bool SafeX509ExtPrint(BIO* out, X509_EXTENSION* ext) {
1788
1793
1789
1794
static Local<Object> X509ToObject (Environment* env, X509* cert) {
1790
1795
EscapableHandleScope scope (env->isolate ());
1791
-
1796
+ Local<Context> context = env-> context ();
1792
1797
Local<Object> info = Object::New (env->isolate ());
1793
1798
1794
1799
BIO* bio = BIO_new (BIO_s_mem ());
@@ -1798,18 +1803,20 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1798
1803
0 ,
1799
1804
X509_NAME_FLAGS) > 0 ) {
1800
1805
BIO_get_mem_ptr (bio, &mem);
1801
- info->Set (env->subject_string (),
1806
+ info->Set (context, env->subject_string (),
1802
1807
String::NewFromUtf8 (env->isolate (), mem->data ,
1803
- String::kNormalString , mem->length ));
1808
+ String::kNormalString ,
1809
+ mem->length )).FromJust ();
1804
1810
}
1805
1811
USE (BIO_reset (bio));
1806
1812
1807
1813
X509_NAME* issuer_name = X509_get_issuer_name (cert);
1808
1814
if (X509_NAME_print_ex (bio, issuer_name, 0 , X509_NAME_FLAGS) > 0 ) {
1809
1815
BIO_get_mem_ptr (bio, &mem);
1810
- info->Set (env->issuer_string (),
1816
+ info->Set (context, env->issuer_string (),
1811
1817
String::NewFromUtf8 (env->isolate (), mem->data ,
1812
- String::kNormalString , mem->length ));
1818
+ String::kNormalString ,
1819
+ mem->length )).FromJust ();
1813
1820
}
1814
1821
USE (BIO_reset (bio));
1815
1822
@@ -1834,9 +1841,10 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1834
1841
}
1835
1842
1836
1843
BIO_get_mem_ptr (bio, &mem);
1837
- info->Set (keys[i],
1844
+ info->Set (context, keys[i],
1838
1845
String::NewFromUtf8 (env->isolate (), mem->data ,
1839
- String::kNormalString , mem->length ));
1846
+ String::kNormalString ,
1847
+ mem->length )).FromJust ();
1840
1848
1841
1849
USE (BIO_reset (bio));
1842
1850
}
@@ -1852,9 +1860,10 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1852
1860
RSA_get0_key (rsa, &n, &e, nullptr );
1853
1861
BN_print (bio, n);
1854
1862
BIO_get_mem_ptr (bio, &mem);
1855
- info->Set (env->modulus_string (),
1863
+ info->Set (context, env->modulus_string (),
1856
1864
String::NewFromUtf8 (env->isolate (), mem->data ,
1857
- String::kNormalString , mem->length ));
1865
+ String::kNormalString ,
1866
+ mem->length )).FromJust ();
1858
1867
USE (BIO_reset (bio));
1859
1868
1860
1869
uint64_t exponent_word = static_cast <uint64_t >(BN_get_word (e));
@@ -1866,9 +1875,10 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1866
1875
BIO_printf (bio, " 0x%x%08x" , hi, lo);
1867
1876
}
1868
1877
BIO_get_mem_ptr (bio, &mem);
1869
- info->Set (env->exponent_string (),
1878
+ info->Set (context, env->exponent_string (),
1870
1879
String::NewFromUtf8 (env->isolate (), mem->data ,
1871
- String::kNormalString , mem->length ));
1880
+ String::kNormalString ,
1881
+ mem->length )).FromJust ();
1872
1882
USE (BIO_reset (bio));
1873
1883
}
1874
1884
@@ -1883,16 +1893,18 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1883
1893
1884
1894
ASN1_TIME_print (bio, X509_get_notBefore (cert));
1885
1895
BIO_get_mem_ptr (bio, &mem);
1886
- info->Set (env->valid_from_string (),
1896
+ info->Set (context, env->valid_from_string (),
1887
1897
String::NewFromUtf8 (env->isolate (), mem->data ,
1888
- String::kNormalString , mem->length ));
1898
+ String::kNormalString ,
1899
+ mem->length )).FromJust ();
1889
1900
USE (BIO_reset (bio));
1890
1901
1891
1902
ASN1_TIME_print (bio, X509_get_notAfter (cert));
1892
1903
BIO_get_mem_ptr (bio, &mem);
1893
- info->Set (env->valid_to_string (),
1904
+ info->Set (context, env->valid_to_string (),
1894
1905
String::NewFromUtf8 (env->isolate (), mem->data ,
1895
- String::kNormalString , mem->length ));
1906
+ String::kNormalString ,
1907
+ mem->length )).FromJust ();
1896
1908
BIO_free_all (bio);
1897
1909
1898
1910
unsigned int md_size, i;
@@ -1913,8 +1925,8 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1913
1925
fingerprint[0 ] = ' \0 ' ;
1914
1926
}
1915
1927
1916
- info->Set (env->fingerprint_string (),
1917
- OneByteString (env->isolate (), fingerprint));
1928
+ info->Set (context, env->fingerprint_string (),
1929
+ OneByteString (env->isolate (), fingerprint)). FromJust () ;
1918
1930
}
1919
1931
1920
1932
STACK_OF (ASN1_OBJECT)* eku = static_cast <STACK_OF (ASN1_OBJECT)*>(
@@ -1926,18 +1938,20 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1926
1938
int j = 0 ;
1927
1939
for (int i = 0 ; i < sk_ASN1_OBJECT_num (eku); i++) {
1928
1940
if (OBJ_obj2txt (buf, sizeof (buf), sk_ASN1_OBJECT_value (eku, i), 1 ) >= 0 )
1929
- ext_key_usage->Set (j++, OneByteString (env->isolate (), buf));
1941
+ ext_key_usage->Set (context,
1942
+ j++,
1943
+ OneByteString (env->isolate (), buf)).FromJust ();
1930
1944
}
1931
1945
1932
1946
sk_ASN1_OBJECT_pop_free (eku, ASN1_OBJECT_free);
1933
- info->Set (env->ext_key_usage_string (), ext_key_usage);
1947
+ info->Set (context, env->ext_key_usage_string (), ext_key_usage). FromJust ( );
1934
1948
}
1935
1949
1936
1950
if (ASN1_INTEGER* serial_number = X509_get_serialNumber (cert)) {
1937
1951
if (BIGNUM* bn = ASN1_INTEGER_to_BN (serial_number, nullptr )) {
1938
1952
if (char * buf = BN_bn2hex (bn)) {
1939
- info->Set (env->serial_number_string (),
1940
- OneByteString (env->isolate (), buf));
1953
+ info->Set (context, env->serial_number_string (),
1954
+ OneByteString (env->isolate (), buf)). FromJust () ;
1941
1955
OPENSSL_free (buf);
1942
1956
}
1943
1957
BN_free (bn);
@@ -1950,7 +1964,7 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1950
1964
unsigned char * serialized = reinterpret_cast <unsigned char *>(
1951
1965
Buffer::Data (buff));
1952
1966
i2d_X509 (cert, &serialized);
1953
- info->Set (env->raw_string (), buff);
1967
+ info->Set (context, env->raw_string (), buff). FromJust ( );
1954
1968
1955
1969
return scope.Escape (info);
1956
1970
}
@@ -1963,6 +1977,7 @@ void SSLWrap<Base>::GetPeerCertificate(
1963
1977
Base* w;
1964
1978
ASSIGN_OR_RETURN_UNWRAP (&w, args.Holder ());
1965
1979
Environment* env = w->ssl_env ();
1980
+ Local<Context> context = env->context ();
1966
1981
1967
1982
ClearErrorOnReturn clear_error_on_return;
1968
1983
@@ -2014,7 +2029,7 @@ void SSLWrap<Base>::GetPeerCertificate(
2014
2029
continue ;
2015
2030
2016
2031
Local<Object> ca_info = X509ToObject (env, ca);
2017
- info->Set (env->issuercert_string (), ca_info);
2032
+ info->Set (context, env->issuercert_string (), ca_info). FromJust ( );
2018
2033
info = ca_info;
2019
2034
2020
2035
// NOTE: Intentionally freeing cert that is not used anymore
@@ -2037,7 +2052,7 @@ void SSLWrap<Base>::GetPeerCertificate(
2037
2052
break ;
2038
2053
2039
2054
Local<Object> ca_info = X509ToObject (env, ca);
2040
- info->Set (env->issuercert_string (), ca_info);
2055
+ info->Set (context, env->issuercert_string (), ca_info). FromJust ( );
2041
2056
info = ca_info;
2042
2057
2043
2058
// NOTE: Intentionally freeing cert that is not used anymore
@@ -2049,7 +2064,7 @@ void SSLWrap<Base>::GetPeerCertificate(
2049
2064
2050
2065
// Self-issued certificate
2051
2066
if (X509_check_issued (cert, cert) == X509_V_OK)
2052
- info->Set (env->issuercert_string (), info);
2067
+ info->Set (context, env->issuercert_string (), info). FromJust ( );
2053
2068
2054
2069
CHECK_NE (cert, nullptr );
2055
2070
@@ -2245,6 +2260,7 @@ void SSLWrap<Base>::GetEphemeralKeyInfo(
2245
2260
Base* w;
2246
2261
ASSIGN_OR_RETURN_UNWRAP (&w, args.Holder ());
2247
2262
Environment* env = Environment::GetCurrent (args);
2263
+ Local<Context> context = env->context ();
2248
2264
2249
2265
CHECK_NE (w->ssl_ , nullptr );
2250
2266
@@ -2259,22 +2275,24 @@ void SSLWrap<Base>::GetEphemeralKeyInfo(
2259
2275
if (SSL_get_server_tmp_key (w->ssl_ , &key)) {
2260
2276
switch (EVP_PKEY_id (key)) {
2261
2277
case EVP_PKEY_DH:
2262
- info->Set (env->type_string (),
2263
- FIXED_ONE_BYTE_STRING (env->isolate (), " DH" ));
2264
- info->Set (env->size_string (),
2265
- Integer::New (env->isolate (), EVP_PKEY_bits (key)));
2278
+ info->Set (context, env->type_string (),
2279
+ FIXED_ONE_BYTE_STRING (env->isolate (), " DH" )). FromJust () ;
2280
+ info->Set (context, env->size_string (),
2281
+ Integer::New (env->isolate (), EVP_PKEY_bits (key))). FromJust () ;
2266
2282
break ;
2267
2283
case EVP_PKEY_EC:
2268
2284
{
2269
2285
EC_KEY* ec = EVP_PKEY_get1_EC_KEY (key);
2270
2286
int nid = EC_GROUP_get_curve_name (EC_KEY_get0_group (ec));
2271
2287
EC_KEY_free (ec);
2272
- info->Set (env->type_string (),
2273
- FIXED_ONE_BYTE_STRING (env->isolate (), " ECDH" ));
2274
- info->Set (env->name_string (),
2275
- OneByteString (args.GetIsolate (), OBJ_nid2sn (nid)));
2276
- info->Set (env->size_string (),
2277
- Integer::New (env->isolate (), EVP_PKEY_bits (key)));
2288
+ info->Set (context, env->type_string (),
2289
+ FIXED_ONE_BYTE_STRING (env->isolate (), " ECDH" )).FromJust ();
2290
+ info->Set (context, env->name_string (),
2291
+ OneByteString (args.GetIsolate (),
2292
+ OBJ_nid2sn (nid))).FromJust ();
2293
+ info->Set (context, env->size_string (),
2294
+ Integer::New (env->isolate (),
2295
+ EVP_PKEY_bits (key))).FromJust ();
2278
2296
}
2279
2297
}
2280
2298
EVP_PKEY_free (key);
@@ -2367,7 +2385,8 @@ void SSLWrap<Base>::VerifyError(const FunctionCallbackInfo<Value>& args) {
2367
2385
Local<String> reason_string = OneByteString (isolate, reason);
2368
2386
Local<Value> exception_value = Exception::Error (reason_string);
2369
2387
Local<Object> exception_object = exception_value->ToObject (isolate);
2370
- exception_object->Set (w->env ()->code_string (), OneByteString (isolate, code));
2388
+ exception_object->Set (w->env ()->context (), w->env ()->code_string (),
2389
+ OneByteString (isolate, code)).FromJust ();
2371
2390
args.GetReturnValue ().Set (exception_object);
2372
2391
}
2373
2392
@@ -2377,16 +2396,18 @@ void SSLWrap<Base>::GetCurrentCipher(const FunctionCallbackInfo<Value>& args) {
2377
2396
Base* w;
2378
2397
ASSIGN_OR_RETURN_UNWRAP (&w, args.Holder ());
2379
2398
Environment* env = w->ssl_env ();
2399
+ Local<Context> context = env->context ();
2380
2400
2381
2401
const SSL_CIPHER* c = SSL_get_current_cipher (w->ssl_ );
2382
2402
if (c == nullptr )
2383
2403
return ;
2384
2404
2385
2405
Local<Object> info = Object::New (env->isolate ());
2386
2406
const char * cipher_name = SSL_CIPHER_get_name (c);
2387
- info->Set (env->name_string (), OneByteString (args.GetIsolate (), cipher_name));
2388
- info->Set (env->version_string (),
2389
- OneByteString (args.GetIsolate (), " TLSv1/SSLv3" ));
2407
+ info->Set (context, env->name_string (),
2408
+ OneByteString (args.GetIsolate (), cipher_name)).FromJust ();
2409
+ info->Set (context, env->version_string (),
2410
+ OneByteString (args.GetIsolate (), " TLSv1/SSLv3" )).FromJust ();
2390
2411
args.GetReturnValue ().Set (info);
2391
2412
}
2392
2413
@@ -2695,27 +2716,31 @@ int SSLWrap<Base>::SSLCertCallback(SSL* s, void* arg) {
2695
2716
return -1 ;
2696
2717
2697
2718
Environment* env = w->env ();
2719
+ Local<Context> context = env->context ();
2698
2720
HandleScope handle_scope (env->isolate ());
2699
- Context::Scope context_scope (env-> context () );
2721
+ Context::Scope context_scope (context);
2700
2722
w->cert_cb_running_ = true ;
2701
2723
2702
2724
Local<Object> info = Object::New (env->isolate ());
2703
2725
2704
2726
const char * servername = SSL_get_servername (s, TLSEXT_NAMETYPE_host_name);
2705
2727
if (servername == nullptr ) {
2706
- info->Set (env->servername_string (), String::Empty (env->isolate ()));
2728
+ info->Set (context,
2729
+ env->servername_string (),
2730
+ String::Empty (env->isolate ())).FromJust ();
2707
2731
} else {
2708
2732
Local<String> str = OneByteString (env->isolate (), servername,
2709
2733
strlen (servername));
2710
- info->Set (env->servername_string (), str);
2734
+ info->Set (context, env->servername_string (), str). FromJust ( );
2711
2735
}
2712
2736
2713
2737
bool ocsp = false ;
2714
2738
#ifdef NODE__HAVE_TLSEXT_STATUS_CB
2715
2739
ocsp = SSL_get_tlsext_status_type (s) == TLSEXT_STATUSTYPE_ocsp;
2716
2740
#endif
2717
2741
2718
- info->Set (env->ocsp_request_string (), Boolean::New (env->isolate (), ocsp));
2742
+ info->Set (context, env->ocsp_request_string (),
2743
+ Boolean::New (env->isolate (), ocsp)).FromJust ();
2719
2744
2720
2745
Local<Value> argv[] = { info };
2721
2746
w->MakeCallback (env->oncertcb_string (), arraysize (argv), argv);
@@ -4997,7 +5022,7 @@ void PBKDF2(const FunctionCallbackInfo<Value>& args) {
4997
5022
keylen));
4998
5023
4999
5024
if (args[5 ]->IsFunction ()) {
5000
- obj->Set (env->ondone_string (), args[5 ]);
5025
+ obj->Set (env->context (), env-> ondone_string (), args[5 ]). FromJust ( );
5001
5026
5002
5027
uv_queue_work (env->event_loop (),
5003
5028
req.release ()->work_req (),
@@ -5185,7 +5210,7 @@ void RandomBytes(const FunctionCallbackInfo<Value>& args) {
5185
5210
RandomBytesRequest::FREE_DATA));
5186
5211
5187
5212
if (args[1 ]->IsFunction ()) {
5188
- obj->Set (env->ondone_string (), args[1 ]);
5213
+ obj->Set (env->context (), env-> ondone_string (), args[1 ]). FromJust ( );
5189
5214
5190
5215
uv_queue_work (env->event_loop (),
5191
5216
req.release ()->work_req (),
@@ -5254,7 +5279,10 @@ void GetSSLCiphers(const FunctionCallbackInfo<Value>& args) {
5254
5279
5255
5280
for (int i = 0 ; i < sk_SSL_CIPHER_num (ciphers); ++i) {
5256
5281
const SSL_CIPHER* cipher = sk_SSL_CIPHER_value (ciphers, i);
5257
- arr->Set (i, OneByteString (args.GetIsolate (), SSL_CIPHER_get_name (cipher)));
5282
+ arr->Set (env->context (),
5283
+ i,
5284
+ OneByteString (args.GetIsolate (),
5285
+ SSL_CIPHER_get_name (cipher))).FromJust ();
5258
5286
}
5259
5287
5260
5288
SSL_free (ssl);
@@ -5317,7 +5345,10 @@ void GetCurves(const FunctionCallbackInfo<Value>& args) {
5317
5345
5318
5346
if (EC_get_builtin_curves (curves, num_curves)) {
5319
5347
for (size_t i = 0 ; i < num_curves; i++) {
5320
- arr->Set (i, OneByteString (env->isolate (), OBJ_nid2sn (curves[i].nid )));
5348
+ arr->Set (env->context (),
5349
+ i,
5350
+ OneByteString (env->isolate (),
5351
+ OBJ_nid2sn (curves[i].nid ))).FromJust ();
5321
5352
}
5322
5353
}
5323
5354
0 commit comments