aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/node/ext
diff options
context:
space:
mode:
Diffstat (limited to 'src/node/ext')
-rw-r--r--src/node/ext/channel_credentials.cc6
-rw-r--r--src/node/ext/server_credentials.cc24
2 files changed, 12 insertions, 18 deletions
diff --git a/src/node/ext/channel_credentials.cc b/src/node/ext/channel_credentials.cc
index b77ff80af2..059bc8a890 100644
--- a/src/node/ext/channel_credentials.cc
+++ b/src/node/ext/channel_credentials.cc
@@ -154,6 +154,12 @@ NAN_METHOD(ChannelCredentials::CreateSsl) {
return Nan::ThrowTypeError(
"createSSl's third argument must be a Buffer if provided");
}
+ if ((key_cert_pair.private_key == NULL) !=
+ (key_cert_pair.cert_chain == NULL)) {
+ return Nan::ThrowError(
+ "createSsl's second and third arguments must be"
+ " provided or omitted together");
+ }
grpc_channel_credentials *creds = grpc_ssl_credentials_create(
root_certs, key_cert_pair.private_key == NULL ? NULL : &key_cert_pair,
NULL);
diff --git a/src/node/ext/server_credentials.cc b/src/node/ext/server_credentials.cc
index e6c55e263c..5285d53df4 100644
--- a/src/node/ext/server_credentials.cc
+++ b/src/node/ext/server_credentials.cc
@@ -167,30 +167,18 @@ NAN_METHOD(ServerCredentials::CreateSsl) {
return Nan::ThrowTypeError("Key/cert pairs must be objects");
}
Local<Object> pair_obj = Nan::To<Object>(pair_val).ToLocalChecked();
- MaybeLocal<Value> maybe_key = Nan::Get(pair_obj, key_key);
- if (maybe_key.IsEmpty()) {
- delete key_cert_pairs;
- return Nan::ThrowTypeError(
- "Key/cert pairs must have a private_key and a cert_chain");
- }
- MaybeLocal<Value> maybe_cert = Nan::Get(pair_obj, cert_key);
- if (maybe_cert.IsEmpty()) {
- delete key_cert_pairs;
- return Nan::ThrowTypeError(
- "Key/cert pairs must have a private_key and a cert_chain");
- }
- if (!::node::Buffer::HasInstance(maybe_key.ToLocalChecked())) {
+ Local<Value> maybe_key = Nan::Get(pair_obj, key_key).ToLocalChecked();
+ Local<Value> maybe_cert = Nan::Get(pair_obj, cert_key).ToLocalChecked();
+ if (!::node::Buffer::HasInstance(maybe_key)) {
delete key_cert_pairs;
return Nan::ThrowTypeError("private_key must be a Buffer");
}
- if (!::node::Buffer::HasInstance(maybe_cert.ToLocalChecked())) {
+ if (!::node::Buffer::HasInstance(maybe_cert)) {
delete key_cert_pairs;
return Nan::ThrowTypeError("cert_chain must be a Buffer");
}
- key_cert_pairs[i].private_key = ::node::Buffer::Data(
- maybe_key.ToLocalChecked());
- key_cert_pairs[i].cert_chain = ::node::Buffer::Data(
- maybe_cert.ToLocalChecked());
+ key_cert_pairs[i].private_key = ::node::Buffer::Data(maybe_key);
+ key_cert_pairs[i].cert_chain = ::node::Buffer::Data(maybe_cert);
}
grpc_server_credentials *creds = grpc_ssl_server_credentials_create(
root_certs, key_cert_pairs, key_cert_pair_count, force_client_auth, NULL);