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