password_handle.h revision aedf605d883b4ebade9c810eb39cbf5125a58c7d
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
2094b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Moralesnamespace gatekeeper {
2194b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales
2294b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Moralestypedef uint64_t secure_id_t;
2394b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Moralestypedef uint64_t salt_t;
2494b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales/**
2594b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * structure for easy serialization
2694b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales * and deserialization of password handles.
2794b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales */
28aedf605d883b4ebade9c810eb39cbf5125a58c7dAndres Moralesstatic const uint8_t HANDLE_VERSION = 1;
2994b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Moralesstruct __attribute__ ((__packed__)) password_handle_t {
3094b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales    // fields included in signature
3194b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales    uint8_t version;
3294b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales    secure_id_t user_id;
3394b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales    secure_id_t authenticator_id;
3494b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales
3594b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales    // fields not included in signature
3694b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales    salt_t salt;
3794b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales    uint8_t signature[32];
38aedf605d883b4ebade9c810eb39cbf5125a58c7dAndres Morales
39aedf605d883b4ebade9c810eb39cbf5125a58c7dAndres Morales    bool hardware_backed;
4094b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales};
4194b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales}
4294b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales
4394b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales
4494b201ee929de7ca8ee01c5b5aac5495ba749a30Andres Morales#endif // GATEKEEPER_PASSWORD_HANDLE_H_
45