openssl: fix serial number output
The code extracting the cert serial number was broken and didn't display it properly. Bug: https://github.com/bagder/curl/issues/235 Reported-by: dkjjr89
This commit is contained in:
parent
59f3f92ba6
commit
aff153f83a
@ -2472,25 +2472,19 @@ static CURLcode get_cert_chain(struct connectdata *conn,
|
||||
Curl_ssl_push_certinfo(data, i, "Version", bufp); /* hex */
|
||||
|
||||
num=X509_get_serialNumber(x);
|
||||
if(num->length <= 4) {
|
||||
value = ASN1_INTEGER_get(num);
|
||||
infof(data, " Serial Number: %ld (0x%lx)\n", value, value);
|
||||
snprintf(bufp, CERTBUFFERSIZE, "%lx", value);
|
||||
}
|
||||
else {
|
||||
{
|
||||
int left = CERTBUFFERSIZE;
|
||||
|
||||
ptr = bufp;
|
||||
*ptr++ = 0;
|
||||
if(num->type == V_ASN1_NEG_INTEGER)
|
||||
if(num->type == V_ASN1_NEG_INTEGER) {
|
||||
*ptr++='-';
|
||||
left--;
|
||||
}
|
||||
|
||||
for(j=0; (j<num->length) && (left>=4); j++) {
|
||||
/* TODO: length restrictions */
|
||||
snprintf(ptr, 3, "%02x%c",num->data[j],
|
||||
((j+1 == num->length)?'\n':':'));
|
||||
ptr += 3;
|
||||
left-=4;
|
||||
for(j=0; (j<num->length) && (left>=3); j++) {
|
||||
snprintf(ptr, left, "%02x", num->data[j]);
|
||||
ptr += 2;
|
||||
left -= 2;
|
||||
}
|
||||
if(num->length)
|
||||
infof(data, " Serial Number: %s\n", bufp);
|
||||
|
Loading…
Reference in New Issue
Block a user