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 Workerbool 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 Workerbool 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