solo1/fido2/storage.h

71 wiersze
1.5 KiB
C
Czysty Zwykły widok Historia

2019-02-12 22:18:17 +00:00
// Copyright 2019 SoloKeys Developers
//
// Licensed under the Apache License, Version 2.0, <LICENSE-APACHE or
// http://apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or
// http://opensource.org/licenses/MIT>, at your option. This file may not be
// copied, modified, or distributed except according to those terms.
2018-07-12 01:55:20 +00:00
#ifndef _STORAGE_H
#define _STORAGE_H
#include "ctap.h"
#define KEY_SPACE_BYTES 128
2018-07-14 01:34:15 +00:00
#define MAX_KEYS (1)
2019-08-07 15:18:56 +00:00
#define PIN_SALT_LEN (32)
2019-08-20 09:31:09 +00:00
#define STATE_VERSION (1)
2019-08-07 15:18:56 +00:00
2018-07-12 01:55:20 +00:00
#define BACKUP_MARKER 0x5A
#define INITIALIZED_MARKER 0xA5
#define ERR_NO_KEY_SPACE (-1)
#define ERR_KEY_SPACE_TAKEN (-2)
#define ERR_KEY_SPACE_EMPTY (-2)
2019-08-20 09:31:09 +00:00
typedef struct
{
// Pin information
uint8_t is_initialized;
uint8_t is_pin_set;
uint8_t pin_code[NEW_PIN_ENC_MIN_SIZE];
int pin_code_length;
int8_t remaining_tries;
uint16_t rk_stored;
uint16_t key_lens[MAX_KEYS];
uint8_t key_space[KEY_SPACE_BYTES];
} AuthenticatorState_0xFF;
2018-07-12 01:55:20 +00:00
typedef struct
{
// Pin information
uint8_t is_initialized;
uint8_t is_pin_set;
2019-08-07 15:18:56 +00:00
uint8_t PIN_CODE_HASH[32];
uint8_t PIN_SALT[PIN_SALT_LEN];
2019-08-20 09:31:09 +00:00
int _reserved;
2018-10-28 20:30:55 +00:00
int8_t remaining_tries;
2018-07-12 01:55:20 +00:00
2018-11-12 16:51:43 +00:00
uint16_t rk_stored;
2018-07-12 01:55:20 +00:00
uint16_t key_lens[MAX_KEYS];
uint8_t key_space[KEY_SPACE_BYTES];
uint8_t data_version;
2019-08-20 09:57:32 +00:00
} AuthenticatorState_0x01;
typedef AuthenticatorState_0x01 AuthenticatorState;
2018-07-12 01:55:20 +00:00
typedef struct
{
uint32_t addr;
uint8_t * filename;
uint32_t count;
} AuthenticatorCounter;
extern AuthenticatorState STATE;
#endif