194b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales/* 294b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * Copyright 2015 The Android Open Source Project 394b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * 494b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * Licensed under the Apache License, Version 2.0 (the "License"); 594b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * you may not use this file except in compliance with the License. 694b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * You may obtain a copy of the License at 794b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * 894b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * http://www.apache.org/licenses/LICENSE-2.0 994b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * 1094b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * Unless required by applicable law or agreed to in writing, software 1194b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * distributed under the License is distributed on an "AS IS" BASIS, 1294b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1394b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * See the License for the specific language governing permissions and 1494b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * limitations under the License. 1594b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales */ 1694b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales 1794b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales#ifndef GATEKEEPER_PASSWORD_HANDLE_H_ 1894b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales#define GATEKEEPER_PASSWORD_HANDLE_H_ 1994b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales 2048a4f837d1a696f6edfd48270047b36a3d21086bAndres Morales#define HANDLE_FLAG_THROTTLE_SECURE 1 2148a4f837d1a696f6edfd48270047b36a3d21086bAndres Morales 2248a4f837d1a696f6edfd48270047b36a3d21086bAndres Morales#define HANDLE_VERSION_THROTTLE 2 2348a4f837d1a696f6edfd48270047b36a3d21086bAndres Morales 2494b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Moralesnamespace gatekeeper { 2594b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales 2694b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Moralestypedef uint64_t secure_id_t; 2794b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Moralestypedef uint64_t salt_t; 2894b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales/** 2994b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * structure for easy serialization 3094b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * and deserialization of password handles. 3194b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales */ 3248a4f837d1a696f6edfd48270047b36a3d21086bAndres Moralesstatic const uint8_t HANDLE_VERSION = 2; 3394b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Moralesstruct __attribute__ ((__packed__)) password_handle_t { 3494b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales // fields included in signature 3594b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales uint8_t version; 3694b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales secure_id_t user_id; 3748a4f837d1a696f6edfd48270047b36a3d21086bAndres Morales uint64_t flags; 3894b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales 3994b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales // fields not included in signature 4094b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales salt_t salt; 4194b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales uint8_t signature[32]; 42aedf605d883b4ebade9c810eb39cbf5125a58c7dAndres Morales 43aedf605d883b4ebade9c810eb39cbf5125a58c7dAndres Morales bool hardware_backed; 4494b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales}; 4594b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales} 4694b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales 4794b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales#endif // GATEKEEPER_PASSWORD_HANDLE_H_ 48