-
-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathValidationResults.cs
More file actions
120 lines (84 loc) · 3.14 KB
/
Copy pathValidationResults.cs
File metadata and controls
120 lines (84 loc) · 3.14 KB
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
namespace NpgsqlRestClient.Fido2;
public class AttestationResult
{
public bool IsValid { get; init; }
public string? Error { get; init; }
public byte[]? CredentialId { get; init; }
public byte[]? UserHandle { get; init; }
public byte[]? PublicKey { get; init; }
public int Algorithm { get; init; }
public uint SignCount { get; init; }
public bool BackupEligible { get; init; }
public bool BackedUp { get; init; }
public byte[]? Aaguid { get; init; }
public static AttestationResult Success(
byte[] credentialId,
byte[] publicKey,
int algorithm,
uint signCount,
bool backupEligible,
bool backedUp,
byte[]? aaguid = null,
byte[]? userHandle = null) => new()
{
IsValid = true,
CredentialId = credentialId,
PublicKey = publicKey,
Algorithm = algorithm,
SignCount = signCount,
BackupEligible = backupEligible,
BackedUp = backedUp,
Aaguid = aaguid,
UserHandle = userHandle
};
public static AttestationResult Fail(string error) => new()
{
IsValid = false,
Error = error
};
}
public class AssertionResult
{
public bool IsValid { get; init; }
public string? Error { get; init; }
public uint NewSignCount { get; init; }
public string? UserId { get; init; }
public byte[]? UserHandle { get; init; }
public bool UserVerified { get; init; }
public static AssertionResult Success(
uint newSignCount,
string? userId = null,
byte[]? userHandle = null,
bool userVerified = false) => new()
{
IsValid = true,
NewSignCount = newSignCount,
UserId = userId,
UserHandle = userHandle,
UserVerified = userVerified
};
public static AssertionResult Fail(string error) => new()
{
IsValid = false,
Error = error
};
}
public static class ValidationError
{
public const string ChallengeMismatch = "Challenge mismatch";
public const string OriginMismatch = "Origin mismatch";
public const string RpIdHashMismatch = "RP ID hash mismatch";
public const string UserNotPresent = "User not present";
public const string UserVerificationRequired = "User verification required but not performed";
public const string InvalidType = "Invalid type in clientDataJSON";
public const string InvalidClientData = "Invalid clientDataJSON";
public const string InvalidAttestationObject = "Invalid attestation object";
public const string InvalidAuthenticatorData = "Invalid authenticator data";
public const string MissingAttestedCredentialData = "Missing attested credential data";
public const string InvalidSignature = "Invalid signature";
public const string SignCountNotIncremented = "Sign count not incremented - possible cloned authenticator";
public const string CredentialNotFound = "Credential not found";
public const string UnsupportedAlgorithm = "Unsupported algorithm";
public const string ChallengeExpired = "Challenge expired";
public const string ChallengeNotFound = "Challenge not found";
}