@@ -1394,6 +1394,7 @@ void SSLWrap<Base>::AddMethods(Environment* env, Local<FunctionTemplate> t) {
1394
1394
HandleScope scope (env->isolate ());
1395
1395
1396
1396
env->SetProtoMethodNoSideEffect (t, " getPeerCertificate" , GetPeerCertificate);
1397
+ env->SetProtoMethodNoSideEffect (t, " getCertificate" , GetCertificate);
1397
1398
env->SetProtoMethodNoSideEffect (t, " getFinished" , GetFinished);
1398
1399
env->SetProtoMethodNoSideEffect (t, " getPeerFinished" , GetPeerFinished);
1399
1400
env->SetProtoMethodNoSideEffect (t, " getSession" , GetSession);
@@ -1856,8 +1857,26 @@ void SSLWrap<Base>::GetPeerCertificate(
1856
1857
}
1857
1858
1858
1859
done:
1859
- if (result.IsEmpty ())
1860
- result = Object::New (env->isolate ());
1860
+ args.GetReturnValue ().Set (result);
1861
+ }
1862
+
1863
+
1864
+ template <class Base >
1865
+ void SSLWrap<Base>::GetCertificate(
1866
+ const FunctionCallbackInfo<Value>& args) {
1867
+ Base* w;
1868
+ ASSIGN_OR_RETURN_UNWRAP (&w, args.Holder ());
1869
+ Environment* env = w->ssl_env ();
1870
+
1871
+ ClearErrorOnReturn clear_error_on_return;
1872
+
1873
+ Local<Object> result;
1874
+
1875
+ X509Pointer cert (SSL_get_certificate (w->ssl_ .get ()));
1876
+
1877
+ if (cert)
1878
+ result = X509ToObject (env, cert.get ());
1879
+
1861
1880
args.GetReturnValue ().Set (result);
1862
1881
}
1863
1882
0 commit comments