xref: /aosp_15_r20/hardware/interfaces/confirmationui/1.0/default/PlatformSpecifics.h (revision 4d7e907c777eeecc4c5bd7cf640a754fac206ff7)
1*4d7e907cSAndroid Build Coastguard Worker /*
2*4d7e907cSAndroid Build Coastguard Worker **
3*4d7e907cSAndroid Build Coastguard Worker ** Copyright 2017, The Android Open Source Project
4*4d7e907cSAndroid Build Coastguard Worker **
5*4d7e907cSAndroid Build Coastguard Worker ** Licensed under the Apache License, Version 2.0 (the "License");
6*4d7e907cSAndroid Build Coastguard Worker ** you may not use this file except in compliance with the License.
7*4d7e907cSAndroid Build Coastguard Worker ** You may obtain a copy of the License at
8*4d7e907cSAndroid Build Coastguard Worker **
9*4d7e907cSAndroid Build Coastguard Worker **     http://www.apache.org/licenses/LICENSE-2.0
10*4d7e907cSAndroid Build Coastguard Worker **
11*4d7e907cSAndroid Build Coastguard Worker ** Unless required by applicable law or agreed to in writing, software
12*4d7e907cSAndroid Build Coastguard Worker ** distributed under the License is distributed on an "AS IS" BASIS,
13*4d7e907cSAndroid Build Coastguard Worker ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*4d7e907cSAndroid Build Coastguard Worker ** See the License for the specific language governing permissions and
15*4d7e907cSAndroid Build Coastguard Worker ** limitations under the License.
16*4d7e907cSAndroid Build Coastguard Worker */
17*4d7e907cSAndroid Build Coastguard Worker 
18*4d7e907cSAndroid Build Coastguard Worker #ifndef CONFIRMATIONUI_1_0_DEFAULT_PLATFORMSPECIFICS_H_
19*4d7e907cSAndroid Build Coastguard Worker #define CONFIRMATIONUI_1_0_DEFAULT_PLATFORMSPECIFICS_H_
20*4d7e907cSAndroid Build Coastguard Worker 
21*4d7e907cSAndroid Build Coastguard Worker #include <stdint.h>
22*4d7e907cSAndroid Build Coastguard Worker #include <time.h>
23*4d7e907cSAndroid Build Coastguard Worker 
24*4d7e907cSAndroid Build Coastguard Worker #include <android/hardware/confirmationui/1.0/IConfirmationResultCallback.h>
25*4d7e907cSAndroid Build Coastguard Worker #include <android/hardware/confirmationui/1.0/generic/GenericOperation.h>
26*4d7e907cSAndroid Build Coastguard Worker #include <android/hardware/confirmationui/support/confirmationui_utils.h>
27*4d7e907cSAndroid Build Coastguard Worker 
28*4d7e907cSAndroid Build Coastguard Worker namespace android {
29*4d7e907cSAndroid Build Coastguard Worker namespace hardware {
30*4d7e907cSAndroid Build Coastguard Worker namespace confirmationui {
31*4d7e907cSAndroid Build Coastguard Worker namespace V1_0 {
32*4d7e907cSAndroid Build Coastguard Worker namespace implementation {
33*4d7e907cSAndroid Build Coastguard Worker 
34*4d7e907cSAndroid Build Coastguard Worker struct MonotonicClockTimeStamper {
35*4d7e907cSAndroid Build Coastguard Worker     class TimeStamp {
36*4d7e907cSAndroid Build Coastguard Worker        public:
TimeStampMonotonicClockTimeStamper37*4d7e907cSAndroid Build Coastguard Worker         explicit TimeStamp(uint64_t ts) : timestamp_(ts), ok_(true) {}
TimeStampMonotonicClockTimeStamper38*4d7e907cSAndroid Build Coastguard Worker         TimeStamp() : timestamp_(0), ok_(false) {}
isOkMonotonicClockTimeStamper39*4d7e907cSAndroid Build Coastguard Worker         bool isOk() const { return ok_; }
uint64_tMonotonicClockTimeStamper40*4d7e907cSAndroid Build Coastguard Worker         operator const uint64_t() const { return timestamp_; }
41*4d7e907cSAndroid Build Coastguard Worker 
42*4d7e907cSAndroid Build Coastguard Worker        private:
43*4d7e907cSAndroid Build Coastguard Worker         uint64_t timestamp_;
44*4d7e907cSAndroid Build Coastguard Worker         bool ok_;
45*4d7e907cSAndroid Build Coastguard Worker     };
46*4d7e907cSAndroid Build Coastguard Worker     static TimeStamp now();
47*4d7e907cSAndroid Build Coastguard Worker };
48*4d7e907cSAndroid Build Coastguard Worker 
49*4d7e907cSAndroid Build Coastguard Worker class HMacImplementation {
50*4d7e907cSAndroid Build Coastguard Worker    public:
51*4d7e907cSAndroid Build Coastguard Worker     static support::NullOr<support::hmac_t> hmac256(
52*4d7e907cSAndroid Build Coastguard Worker         const support::auth_token_key_t& key,
53*4d7e907cSAndroid Build Coastguard Worker         std::initializer_list<support::ByteBufferProxy> buffers);
54*4d7e907cSAndroid Build Coastguard Worker };
55*4d7e907cSAndroid Build Coastguard Worker 
56*4d7e907cSAndroid Build Coastguard Worker class MyOperation : public generic::Operation<sp<IConfirmationResultCallback>,
57*4d7e907cSAndroid Build Coastguard Worker                                               MonotonicClockTimeStamper, HMacImplementation> {
58*4d7e907cSAndroid Build Coastguard Worker    public:
get()59*4d7e907cSAndroid Build Coastguard Worker     static MyOperation& get() {
60*4d7e907cSAndroid Build Coastguard Worker         static MyOperation op;
61*4d7e907cSAndroid Build Coastguard Worker         return op;
62*4d7e907cSAndroid Build Coastguard Worker     }
63*4d7e907cSAndroid Build Coastguard Worker };
64*4d7e907cSAndroid Build Coastguard Worker 
65*4d7e907cSAndroid Build Coastguard Worker }  // namespace implementation
66*4d7e907cSAndroid Build Coastguard Worker }  // namespace V1_0
67*4d7e907cSAndroid Build Coastguard Worker }  // namespace confirmationui
68*4d7e907cSAndroid Build Coastguard Worker }  // namespace hardware
69*4d7e907cSAndroid Build Coastguard Worker }  // namespace android
70*4d7e907cSAndroid Build Coastguard Worker 
71*4d7e907cSAndroid Build Coastguard Worker #endif  // CONFIRMATIONUI_1_0_DEFAULT_PLATFORMSPECIFICS_H_
72