1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// As defined by FIDO U2F Javascript API.
// https://fidoalliance.org/specs/fido-u2f-v1.0-nfc-bt-amendment-20150514/fido-u2f-javascript-api.html#registration

#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct U2fRegisterRequest {
    pub app_id: String,
    pub register_requests: Vec<RegisterRequest>,
    pub registered_keys: Vec<RegisteredKey>,
}

#[derive(Serialize)]
pub struct RegisterRequest {
    pub version: String,
    pub challenge: String
}

#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct RegisteredKey {
    pub version: String,
    pub key_handle: Option<String>,
    pub app_id: String
}

#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RegisterResponse {
    pub registration_data: String,
    pub version: String,
    pub challenge: String,
    pub client_data: String
}

#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct U2fSignRequest {
    pub app_id: String,
    pub challenge: String,
    pub registered_keys: Vec<RegisteredKey>
}

#[derive(Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SignResponse {
    pub key_handle: String,
    pub signature_data: String,
    pub client_data: String
}