Home | History | Annotate | Download | only in 1.0
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.hardware.confirmationui@1.0;
     18 
     19 /**
     20  * UI modification options.
     21  */
     22 enum UIOption : uint32_t {
     23     /** Accessibility: Requests color inverted style. */
     24     AccessibilityInverted = 0,
     25     /** Accessibility: Requests magnified style. */
     26     AccessibilityMagnified = 1,
     27 };
     28 
     29 /**
     30  * Codes returned by ConfirmationUI API calls.
     31  */
     32 enum ResponseCode : uint32_t {
     33     /** API call succeeded or the user gave approval (result callback). */
     34     OK = 0,
     35     /** The user canceled the TUI (result callback). */
     36     Canceled = 1,
     37     /** IConfirmationUI::abort() was called. (result callback). */
     38     Aborted = 2,
     39     /** Cannot start another prompt. */
     40     OperationPending = 3,
     41     /** IConfirmationUI::deliverSecureInputEvent call was ingored. */
     42     Ignored = 4,
     43     /** An unexpected system error occured. */
     44     SystemError = 5,
     45     /** Returned by an unimplemented API call. */
     46     Unimplemented = 6,
     47      /**
     48        * This is returned when an error is diagnosed that should have been
     49        * caught by earlier input sanitization. Should never be seen in production.
     50        */
     51     Unexpected = 7,
     52     /** General UI error. */
     53     UIError = 0x10000,
     54     UIErrorMissingGlyph,
     55     /**
     56      * The implementation must return this error code on promptUserConfirmation if the
     57      * resulting formatted message does not fit into MessageSize::MAX bytes. It is
     58      * advised that the implementation formats the message upon receiving this API call to
     59      * be able to diagnose this syndrome.
     60      */
     61     UIErrorMessageTooLong,
     62     UIErrorMalformedUTF8Encoding,
     63 };
     64 
     65 /**
     66  * This defines the maximum message size. This indirectly limits the size of the prompt text
     67  * and the extra data that can be passed to the confirmation UI. The prompt text and extra data
     68  * must fit in to this size including CBOR header information.
     69  */
     70 enum MessageSize : uint32_t { MAX = 0x1800 };
     71 
     72 /**
     73  * The test key is 32byte word with all bytes set to TestKeyBits::BYTE.
     74  */
     75 enum TestKeyBits: uint8_t { BYTE = 0xA5 };
     76 
     77 /**
     78  * Test mode commands.
     79  *
     80  * IConfirmationUI::deliverSecureInputEvent can be used to test certain code paths.
     81  * To that end, the caller passes an auth token that has an HMAC keyed with the test key
     82  * (see TestKeyBits in types.hal). Implementations first check the HMAC against test key.
     83  * If the test key produces a matching HMAC, the implementation evaluates the challenge field
     84  * of the auth token against the values defined in TestModeCommand.
     85  * If the command indicates that a confirmation token is to be generated the test key MUST be used
     86  * to generate this confirmation token.
     87  *
     88  * See command code for individual test command descriptions.
     89  */
     90 enum TestModeCommands: uint64_t {
     91     /**
     92      * Simulates the user pressing the OK button on the UI. If no operation is pending
     93      * ResponseCode::Ignored must be returned. A pending operation is finalized successfully
     94      * see IConfirmationResultCallback::result, however, the test key (see TestKeyBits) MUST be
     95      * used to generate the confirmation token.
     96      */
     97     OK_EVENT = 0,
     98     /**
     99      * Simulates the user pressing the CANCEL button on the UI. If no operation is pending
    100      * Result::Ignored must be returned. A pending operation is finalized as specified in
    101      * IConfirmationResultCallback.hal.
    102      */
    103     CANCEL_EVENT = 1,
    104 };
    105