Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions src/crypto/crypto_x509.cc
Original file line number Diff line number Diff line change
Expand Up @@ -699,9 +699,10 @@ MaybeLocal<Value> GetECGroupBits(Environment* env, const EC_GROUP* group) {

template <const char* (*nid2string)(int nid)>
MaybeLocal<Value> GetCurveName(Environment* env, const int nid) {
std::string_view name = nid2string(nid);
return name.size() ? MaybeLocal<Value>(OneByteString(env->isolate(), name))
: MaybeLocal<Value>(Undefined(env->isolate()));
const char* name = nid2string(nid);
return name != nullptr
? MaybeLocal<Value>(OneByteString(env->isolate(), name))
: MaybeLocal<Value>(Undefined(env->isolate()));
}

MaybeLocal<Object> X509ToObject(Environment* env, const X509View& cert) {
Expand Down
19 changes: 19 additions & 0 deletions test/parallel/test-crypto-x509.js
Original file line number Diff line number Diff line change
Expand Up @@ -514,3 +514,22 @@ CQAAAAAAAAAAAA==
assert.strictEqual(cert.signatureAlgorithm, undefined);
assert.strictEqual(cert.signatureAlgorithmOid, '1.3.6.1.4.1.99999.1');
}

if (!isBoringSSL) {
// EC certificate on a curve without a NIST name (brainpoolP256r1).
const certPem = `-----BEGIN CERTIFICATE-----
MIIBfzCCASagAwIBAgIUcZKohGvML9PeBwQtylddAdUU3nkwCgYIKoZIzj0EAwIw
FDESMBAGA1UEAwwJYnJhaW5wb29sMCAXDTI2MTAxMjE0NDczMVoYDzIxMjYwOTE4
MTQ0NzMxWjAUMRIwEAYDVQQDDAlicmFpbnBvb2wwWjAUBgcqhkjOPQIBBgkrJAMD
AggBAQcDQgAEKnP14jKQEUyWxWhXrs+ql7OlMy0EW3mnYTvwkF8VyYsPB9dBUJOW
8IHqIik0kjQVSVhtLH0j+hveyZvGd0aQq6NTMFEwHQYDVR0OBBYEFNx4uQEsAiNZ
zcrKuAZ9/9d1eIeDMB8GA1UdIwQYMBaAFNx4uQEsAiNZzcrKuAZ9/9d1eIeDMA8G
A1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDRwAwRAIgHc4TOjOLOPXrvWXRQ44L
jEVmV959vS0DtFIIsrGT3moCIBBRZWdLdd0YjFHUQshMZFM9BN2INpjFNUUxqPAC
3qPo
-----END CERTIFICATE-----`;

const legacyObject = new X509Certificate(certPem).toLegacyObject();
assert.ok([undefined, 'brainpoolP256r1'].includes(legacyObject.asn1Curve));
assert.strictEqual(legacyObject.nistCurve, undefined);
}
Loading