xref: /aosp_15_r20/external/cronet/net/cert/time_conversions.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2023 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "net/cert/time_conversions.h"
6 
7 #include "base/time/time.h"
8 #include "third_party/boringssl/src/pki/encode_values.h"
9 #include "third_party/boringssl/src/pki/parse_values.h"
10 
11 #include "third_party/boringssl/src/include/openssl/time.h"
12 
13 namespace net {
14 
EncodeTimeAsGeneralizedTime(const base::Time & time,bssl::der::GeneralizedTime * generalized_time)15 bool EncodeTimeAsGeneralizedTime(const base::Time& time,
16                                  bssl::der::GeneralizedTime* generalized_time) {
17   return bssl::der::EncodePosixTimeAsGeneralizedTime(
18       (time - base::Time::UnixEpoch()).InSecondsFloored(), generalized_time);
19 }
20 
GeneralizedTimeToTime(const bssl::der::GeneralizedTime & generalized,base::Time * result)21 bool GeneralizedTimeToTime(const bssl::der::GeneralizedTime& generalized,
22                            base::Time* result) {
23   int64_t posix_time;
24   if (bssl::der::GeneralizedTimeToPosixTime(generalized, &posix_time)) {
25     *result = base::Time::UnixEpoch() + base::Seconds(posix_time);
26     return true;
27   }
28   return false;
29 }
30 
31 }  // namespace net
32