Provide method for returning certificate expiration time stamp.

We convert ASN1 time via std::tm to int64_t representing milliseconds-since-epoch. We do not use time_t since that cannot store milliseconds, and expires for 32-bit platforms in 2038 also for seconds.

Conversion via std::tm might might seem silly, but actually doesn't add any complexity.

One would expect tm -> seconds-since-epoch to already exist on the standard library. There is mktime, but it uses localtime (and sets an environment variable, and has the 2038 problem).

The ASN1 TIME parsing is limited to what is required by RFC 5280.

BUG=webrtc:5150
R=hbos@webrtc.org, nisse@webrtc.org, tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1468273004 .

Cr-Commit-Position: refs/heads/master@{#10854}
This commit is contained in:
Torbjorn Granlund
2015-12-01 13:06:34 +01:00
parent ea07373a2e
commit 46c9cc0190
10 changed files with 376 additions and 10 deletions

View File

@ -11,6 +11,7 @@
#ifndef WEBRTC_BASE_TIMEUTILS_H_
#define WEBRTC_BASE_TIMEUTILS_H_
#include <ctime>
#include <time.h>
#include "webrtc/base/basictypes.h"
@ -93,6 +94,11 @@ class TimestampWrapAroundHandler {
int64_t num_wrap_;
};
// Convert from std::tm, which is relative to 1900-01-01 00:00 to number of
// seconds from 1970-01-01 00:00 ("epoch"). Don't return time_t since that
// is still 32 bits on many systems.
int64_t TmToSeconds(const std::tm& tm);
} // namespace rtc
#endif // WEBRTC_BASE_TIMEUTILS_H_