@@ -1630,26 +1630,31 @@ void SSLWrap<Base>::OnClientHello(void* arg,
1630
1630
Base* w = static_cast <Base*>(arg);
1631
1631
Environment* env = w->ssl_env ();
1632
1632
HandleScope handle_scope (env->isolate ());
1633
- Context::Scope context_scope (env->context ());
1633
+ Local<Context> context = env->context ();
1634
+ Context::Scope context_scope (context);
1634
1635
1635
1636
Local<Object> hello_obj = Object::New (env->isolate ());
1636
1637
Local<Object> buff = Buffer::Copy (
1637
1638
env,
1638
1639
reinterpret_cast <const char *>(hello.session_id ()),
1639
1640
hello.session_size ()).ToLocalChecked ();
1640
- hello_obj->Set (env->session_id_string (), buff);
1641
+ hello_obj->Set (context, env->session_id_string (), buff). FromJust ( );
1641
1642
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 ();
1643
1646
} else {
1644
1647
Local<String> servername = OneByteString (env->isolate (),
1645
1648
hello.servername (),
1646
1649
hello.servername_size ());
1647
- hello_obj->Set (env->servername_string (), servername);
1650
+ hello_obj->Set (context, env->servername_string (), servername). FromJust ( );
1648
1651
}
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 ();
1653
1658
1654
1659
Local<Value> argv[] = { hello_obj };
1655
1660
w->MakeCallback (env->onclienthello_string (), arraysize (argv), argv);
@@ -1694,7 +1699,7 @@ static bool SafeX509ExtPrint(BIO* out, X509_EXTENSION* ext) {
1694
1699
1695
1700
static Local<Object> X509ToObject (Environment* env, X509* cert) {
1696
1701
EscapableHandleScope scope (env->isolate ());
1697
-
1702
+ Local<Context> context = env-> context ();
1698
1703
Local<Object> info = Object::New (env->isolate ());
1699
1704
1700
1705
BIO* bio = BIO_new (BIO_s_mem ());
@@ -1704,18 +1709,20 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1704
1709
0 ,
1705
1710
X509_NAME_FLAGS) > 0 ) {
1706
1711
BIO_get_mem_ptr (bio, &mem);
1707
- info->Set (env->subject_string (),
1712
+ info->Set (context, env->subject_string (),
1708
1713
String::NewFromUtf8 (env->isolate (), mem->data ,
1709
- String::kNormalString , mem->length ));
1714
+ String::kNormalString ,
1715
+ mem->length )).FromJust ();
1710
1716
}
1711
1717
(void ) BIO_reset (bio);
1712
1718
1713
1719
X509_NAME* issuer_name = X509_get_issuer_name (cert);
1714
1720
if (X509_NAME_print_ex (bio, issuer_name, 0 , X509_NAME_FLAGS) > 0 ) {
1715
1721
BIO_get_mem_ptr (bio, &mem);
1716
- info->Set (env->issuer_string (),
1722
+ info->Set (context, env->issuer_string (),
1717
1723
String::NewFromUtf8 (env->isolate (), mem->data ,
1718
- String::kNormalString , mem->length ));
1724
+ String::kNormalString ,
1725
+ mem->length )).FromJust ();
1719
1726
}
1720
1727
(void ) BIO_reset (bio);
1721
1728
@@ -1740,9 +1747,10 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1740
1747
}
1741
1748
1742
1749
BIO_get_mem_ptr (bio, &mem);
1743
- info->Set (keys[i],
1750
+ info->Set (context, keys[i],
1744
1751
String::NewFromUtf8 (env->isolate (), mem->data ,
1745
- String::kNormalString , mem->length ));
1752
+ String::kNormalString ,
1753
+ mem->length )).FromJust ();
1746
1754
1747
1755
(void ) BIO_reset (bio);
1748
1756
}
@@ -1758,9 +1766,10 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1758
1766
RSA_get0_key (rsa, &n, &e, nullptr );
1759
1767
BN_print (bio, n);
1760
1768
BIO_get_mem_ptr (bio, &mem);
1761
- info->Set (env->modulus_string (),
1769
+ info->Set (context, env->modulus_string (),
1762
1770
String::NewFromUtf8 (env->isolate (), mem->data ,
1763
- String::kNormalString , mem->length ));
1771
+ String::kNormalString ,
1772
+ mem->length )).FromJust ();
1764
1773
(void ) BIO_reset (bio);
1765
1774
1766
1775
uint64_t exponent_word = static_cast <uint64_t >(BN_get_word (e));
@@ -1772,9 +1781,10 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1772
1781
BIO_printf (bio, " 0x%x%08x" , hi, lo);
1773
1782
}
1774
1783
BIO_get_mem_ptr (bio, &mem);
1775
- info->Set (env->exponent_string (),
1784
+ info->Set (context, env->exponent_string (),
1776
1785
String::NewFromUtf8 (env->isolate (), mem->data ,
1777
- String::kNormalString , mem->length ));
1786
+ String::kNormalString ,
1787
+ mem->length )).FromJust ();
1778
1788
(void ) BIO_reset (bio);
1779
1789
}
1780
1790
@@ -1789,16 +1799,18 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1789
1799
1790
1800
ASN1_TIME_print (bio, X509_get_notBefore (cert));
1791
1801
BIO_get_mem_ptr (bio, &mem);
1792
- info->Set (env->valid_from_string (),
1802
+ info->Set (context, env->valid_from_string (),
1793
1803
String::NewFromUtf8 (env->isolate (), mem->data ,
1794
- String::kNormalString , mem->length ));
1804
+ String::kNormalString ,
1805
+ mem->length )).FromJust ();
1795
1806
(void ) BIO_reset (bio);
1796
1807
1797
1808
ASN1_TIME_print (bio, X509_get_notAfter (cert));
1798
1809
BIO_get_mem_ptr (bio, &mem);
1799
- info->Set (env->valid_to_string (),
1810
+ info->Set (context, env->valid_to_string (),
1800
1811
String::NewFromUtf8 (env->isolate (), mem->data ,
1801
- String::kNormalString , mem->length ));
1812
+ String::kNormalString ,
1813
+ mem->length )).FromJust ();
1802
1814
BIO_free_all (bio);
1803
1815
1804
1816
unsigned int md_size, i;
@@ -1819,8 +1831,8 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1819
1831
fingerprint[0 ] = ' \0 ' ;
1820
1832
}
1821
1833
1822
- info->Set (env->fingerprint_string (),
1823
- OneByteString (env->isolate (), fingerprint));
1834
+ info->Set (context, env->fingerprint_string (),
1835
+ OneByteString (env->isolate (), fingerprint)). FromJust () ;
1824
1836
}
1825
1837
1826
1838
STACK_OF (ASN1_OBJECT)* eku = static_cast <STACK_OF (ASN1_OBJECT)*>(
@@ -1832,18 +1844,20 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1832
1844
int j = 0 ;
1833
1845
for (int i = 0 ; i < sk_ASN1_OBJECT_num (eku); i++) {
1834
1846
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 ();
1836
1850
}
1837
1851
1838
1852
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 ( );
1840
1854
}
1841
1855
1842
1856
if (ASN1_INTEGER* serial_number = X509_get_serialNumber (cert)) {
1843
1857
if (BIGNUM* bn = ASN1_INTEGER_to_BN (serial_number, nullptr )) {
1844
1858
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 () ;
1847
1861
OPENSSL_free (buf);
1848
1862
}
1849
1863
BN_free (bn);
@@ -1856,7 +1870,7 @@ static Local<Object> X509ToObject(Environment* env, X509* cert) {
1856
1870
unsigned char * serialized = reinterpret_cast <unsigned char *>(
1857
1871
Buffer::Data (buff));
1858
1872
i2d_X509 (cert, &serialized);
1859
- info->Set (env->raw_string (), buff);
1873
+ info->Set (context, env->raw_string (), buff). FromJust ( );
1860
1874
1861
1875
return scope.Escape (info);
1862
1876
}
@@ -1869,6 +1883,7 @@ void SSLWrap<Base>::GetPeerCertificate(
1869
1883
Base* w;
1870
1884
ASSIGN_OR_RETURN_UNWRAP (&w, args.Holder ());
1871
1885
Environment* env = w->ssl_env ();
1886
+ Local<Context> context = env->context ();
1872
1887
1873
1888
ClearErrorOnReturn clear_error_on_return;
1874
1889
@@ -1920,7 +1935,7 @@ void SSLWrap<Base>::GetPeerCertificate(
1920
1935
continue ;
1921
1936
1922
1937
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 ( );
1924
1939
info = ca_info;
1925
1940
1926
1941
// NOTE: Intentionally freeing cert that is not used anymore
@@ -1943,7 +1958,7 @@ void SSLWrap<Base>::GetPeerCertificate(
1943
1958
break ;
1944
1959
1945
1960
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 ( );
1947
1962
info = ca_info;
1948
1963
1949
1964
// NOTE: Intentionally freeing cert that is not used anymore
@@ -1955,7 +1970,7 @@ void SSLWrap<Base>::GetPeerCertificate(
1955
1970
1956
1971
// Self-issued certificate
1957
1972
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 ( );
1959
1974
1960
1975
CHECK_NE (cert, nullptr );
1961
1976
@@ -2151,6 +2166,7 @@ void SSLWrap<Base>::GetEphemeralKeyInfo(
2151
2166
Base* w;
2152
2167
ASSIGN_OR_RETURN_UNWRAP (&w, args.Holder ());
2153
2168
Environment* env = Environment::GetCurrent (args);
2169
+ Local<Context> context = env->context ();
2154
2170
2155
2171
CHECK_NE (w->ssl_ , nullptr );
2156
2172
@@ -2165,22 +2181,24 @@ void SSLWrap<Base>::GetEphemeralKeyInfo(
2165
2181
if (SSL_get_server_tmp_key (w->ssl_ , &key)) {
2166
2182
switch (EVP_PKEY_id (key)) {
2167
2183
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 () ;
2172
2188
break ;
2173
2189
case EVP_PKEY_EC:
2174
2190
{
2175
2191
EC_KEY* ec = EVP_PKEY_get1_EC_KEY (key);
2176
2192
int nid = EC_GROUP_get_curve_name (EC_KEY_get0_group (ec));
2177
2193
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 ();
2184
2202
}
2185
2203
}
2186
2204
EVP_PKEY_free (key);
@@ -2273,7 +2291,8 @@ void SSLWrap<Base>::VerifyError(const FunctionCallbackInfo<Value>& args) {
2273
2291
Local<String> reason_string = OneByteString (isolate, reason);
2274
2292
Local<Value> exception_value = Exception::Error (reason_string);
2275
2293
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 ();
2277
2296
args.GetReturnValue ().Set (exception_object);
2278
2297
}
2279
2298
@@ -2283,16 +2302,18 @@ void SSLWrap<Base>::GetCurrentCipher(const FunctionCallbackInfo<Value>& args) {
2283
2302
Base* w;
2284
2303
ASSIGN_OR_RETURN_UNWRAP (&w, args.Holder ());
2285
2304
Environment* env = w->ssl_env ();
2305
+ Local<Context> context = env->context ();
2286
2306
2287
2307
const SSL_CIPHER* c = SSL_get_current_cipher (w->ssl_ );
2288
2308
if (c == nullptr )
2289
2309
return ;
2290
2310
2291
2311
Local<Object> info = Object::New (env->isolate ());
2292
2312
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 ();
2296
2317
args.GetReturnValue ().Set (info);
2297
2318
}
2298
2319
@@ -2601,27 +2622,31 @@ int SSLWrap<Base>::SSLCertCallback(SSL* s, void* arg) {
2601
2622
return -1 ;
2602
2623
2603
2624
Environment* env = w->env ();
2625
+ Local<Context> context = env->context ();
2604
2626
HandleScope handle_scope (env->isolate ());
2605
- Context::Scope context_scope (env-> context () );
2627
+ Context::Scope context_scope (context);
2606
2628
w->cert_cb_running_ = true ;
2607
2629
2608
2630
Local<Object> info = Object::New (env->isolate ());
2609
2631
2610
2632
const char * servername = SSL_get_servername (s, TLSEXT_NAMETYPE_host_name);
2611
2633
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 ();
2613
2637
} else {
2614
2638
Local<String> str = OneByteString (env->isolate (), servername,
2615
2639
strlen (servername));
2616
- info->Set (env->servername_string (), str);
2640
+ info->Set (context, env->servername_string (), str). FromJust ( );
2617
2641
}
2618
2642
2619
2643
bool ocsp = false ;
2620
2644
#ifdef NODE__HAVE_TLSEXT_STATUS_CB
2621
2645
ocsp = SSL_get_tlsext_status_type (s) == TLSEXT_STATUSTYPE_ocsp;
2622
2646
#endif
2623
2647
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 ();
2625
2650
2626
2651
Local<Value> argv[] = { info };
2627
2652
w->MakeCallback (env->oncertcb_string (), arraysize (argv), argv);
@@ -5550,7 +5575,7 @@ void PBKDF2(const FunctionCallbackInfo<Value>& args) {
5550
5575
keylen);
5551
5576
5552
5577
if (args[5 ]->IsFunction ()) {
5553
- obj->Set (env->ondone_string (), args[5 ]);
5578
+ obj->Set (env->context (), env-> ondone_string (), args[5 ]). FromJust ( );
5554
5579
5555
5580
if (env->in_domain ()) {
5556
5581
obj->Set (env->context (),
@@ -5758,7 +5783,7 @@ void RandomBytes(const FunctionCallbackInfo<Value>& args) {
5758
5783
RandomBytesRequest::FREE_DATA);
5759
5784
5760
5785
if (args[1 ]->IsFunction ()) {
5761
- obj->Set (env->ondone_string (), args[1 ]);
5786
+ obj->Set (env->context (), env-> ondone_string (), args[1 ]). FromJust ( );
5762
5787
5763
5788
if (env->in_domain ()) {
5764
5789
obj->Set (env->context (),
@@ -5846,7 +5871,10 @@ void GetSSLCiphers(const FunctionCallbackInfo<Value>& args) {
5846
5871
5847
5872
for (int i = 0 ; i < sk_SSL_CIPHER_num (ciphers); ++i) {
5848
5873
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 ();
5850
5878
}
5851
5879
5852
5880
SSL_free (ssl);
@@ -5909,7 +5937,10 @@ void GetCurves(const FunctionCallbackInfo<Value>& args) {
5909
5937
5910
5938
if (EC_get_builtin_curves (curves, num_curves)) {
5911
5939
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 ();
5913
5944
}
5914
5945
}
5915
5946
0 commit comments