Skip to content

Commit

Permalink
Only set current certificate to valid values.
Browse files Browse the repository at this point in the history
When setting the current certificate check that it has a corresponding
private key.
(cherry picked from commit 358d352)
  • Loading branch information
snhenson committed Feb 23, 2014
1 parent c5ea65b commit c3f5d3d
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions ssl/ssl_cert.c
Original file line number Diff line number Diff line change
Expand Up @@ -627,18 +627,20 @@ int ssl_cert_select_current(CERT *c, X509 *x)
return 0;
for (i = 0; i < SSL_PKEY_NUM; i++)
{
if (c->pkeys[i].x509 == x)
CERT_PKEY *cpk = c->pkeys + i;
if (cpk->x509 == x && cpk->privatekey)
{
c->key = &c->pkeys[i];
c->key = cpk;
return 1;
}
}

for (i = 0; i < SSL_PKEY_NUM; i++)
{
if (c->pkeys[i].x509 && !X509_cmp(c->pkeys[i].x509, x))
CERT_PKEY *cpk = c->pkeys + i;
if (cpk->privatekey && cpk->x509 && !X509_cmp(cpk->x509, x))
{
c->key = &c->pkeys[i];
c->key = cpk;
return 1;
}
}
Expand All @@ -662,9 +664,10 @@ int ssl_cert_set_current(CERT *c, long op)
return 0;
for (i = idx; i < SSL_PKEY_NUM; i++)
{
if (c->pkeys[i].x509)
CERT_PKEY *cpk = c->key + i;
if (cpk->x509 && cpk->privatekey)
{
c->key = &c->pkeys[i];
c->key = cpk;
return 1;
}
}
Expand Down

0 comments on commit c3f5d3d

Please sign in to comment.