BCertificate: fix parsing of date and name.

This commit is contained in:
Adrien Destugues 2014-11-04 14:20:20 +01:00
parent b7f8d64d19
commit 3b657701db
1 changed files with 12 additions and 6 deletions

View File

@ -23,9 +23,14 @@ parse_ASN1(ASN1_GENERALIZEDTIME *asn1)
if (sscanf((char*)asn1->data, "%2d%2d%2d%2d%2d%2d", &time.tm_year,
&time.tm_mon, &time.tm_mday, &time.tm_hour, &time.tm_min,
&time.tm_sec) == 6)
return mktime(&time);
&time.tm_sec) == 6) {
// Month is 0 based, and year is 1900-based for mktime.
time.tm_year += 100;
time.tm_mon -= 1;
return mktime(&time);
}
return B_BAD_DATA;
}
@ -33,11 +38,11 @@ parse_ASN1(ASN1_GENERALIZEDTIME *asn1)
static BString
decode_X509_NAME(X509_NAME* name)
{
int len = X509_NAME_get_text_by_NID(name, 0, NULL, 0);
char buffer[len];
X509_NAME_get_text_by_NID(name, 0, buffer, len);
char* buffer = X509_NAME_oneline(name, NULL, 0);
return BString(buffer);
BString result(buffer);
OPENSSL_free(buffer);
return result;
}
@ -109,6 +114,7 @@ BCertificate::Private::Private(X509* data)
{
}
#else