BCertificate: fix parsing of date and name.

This commit is contained in:
Adrien Destugues
2014-11-06 15:01:58 +01:00
parent b7f8d64d19
commit 3b657701db
+12 -6
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, 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_mon, &time.tm_mday, &time.tm_hour, &time.tm_min,
&time.tm_sec) == 6) &time.tm_sec) == 6) {
return mktime(&time);
// 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; return B_BAD_DATA;
} }
@@ -33,11 +38,11 @@ parse_ASN1(ASN1_GENERALIZEDTIME *asn1)
static BString static BString
decode_X509_NAME(X509_NAME* name) decode_X509_NAME(X509_NAME* name)
{ {
int len = X509_NAME_get_text_by_NID(name, 0, NULL, 0); char* buffer = X509_NAME_oneline(name, NULL, 0);
char buffer[len];
X509_NAME_get_text_by_NID(name, 0, buffer, len);
return BString(buffer); BString result(buffer);
OPENSSL_free(buffer);
return result;
} }
@@ -109,6 +114,7 @@ BCertificate::Private::Private(X509* data)
{ {
} }
#else #else