forked from SelfLender/react-native-biometrics
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.ts
134 lines (115 loc) · 4.42 KB
/
index.ts
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import { NativeModules } from 'react-native';
const { ReactNativeBiometrics: bridge } = NativeModules;
/**
* Type alias for possible biometry types
*/
export type BiometryType = 'TouchID' | 'FaceID' | 'Biometrics';
interface IsSensorAvailableResult {
available: boolean
biometryType?: BiometryType
error?: string
}
interface CreateKeysResult {
publicKey: string
}
interface BiometricKeysExistResult {
keysExist: boolean
}
interface DeleteKeysResult {
keysDeleted: boolean
}
interface CreateSignatureOptions {
promptMessage: string
payload: string
cancelButtonText?: string
}
interface CreateSignatureResult {
success: boolean
signature?: string
error?: string
}
interface SimplePromptOptions {
promptMessage: string
cancelButtonText?: string
}
interface SimplePromptResult {
success: boolean
error?: string
}
module ReactNativeBiometrics {
/**
* Enum for touch id sensor type
*/
export const TouchID = 'TouchID';
/**
* Enum for face id sensor type
*/
export const FaceID = 'FaceID';
/**
* Enum for generic biometrics (this is the only value available on android)
*/
export const Biometrics = 'Biometrics';
/**
* Returns promise that resolves to an object with object.biometryType = Biometrics | TouchID | FaceID
* @returns {Promise<Object>} Promise that resolves to an object with details about biometrics available
*/
export function isSensorAvailable(): Promise<IsSensorAvailableResult> {
return bridge.isSensorAvailable();
}
/**
* Creates a public private key pair,returns promise that resolves to
* an object with object.publicKey, which is the public key of the newly generated key pair
* @returns {Promise<Object>} Promise that resolves to object with details about the newly generated public key
*/
export function createKeys(): Promise<CreateKeysResult> {
return bridge.createKeys();
}
/**
* Returns promise that resolves to an object with object.keysExists = true | false
* indicating if the keys were found to exist or not
* @returns {Promise<Object>} Promise that resolves to object with details aobut the existence of keys
*/
export function biometricKeysExist(): Promise<BiometricKeysExistResult> {
return bridge.biometricKeysExist();
}
/**
* Returns promise that resolves to an object with true | false
* indicating if the keys were properly deleted
* @returns {Promise<Object>} Promise that resolves to an object with details about the deletion
*/
export function deleteKeys(): Promise<DeleteKeysResult> {
return bridge.deleteKeys();
}
/**
* Prompts user with biometrics dialog using the passed in prompt message and
* returns promise that resolves to an object with object.signature,
* which is cryptographic signature of the payload
* @param {Object} createSignatureOptions
* @param {string} createSignatureOptions.promptMessage
* @param {string} createSignatureOptions.payload
* @param {string} createSignatureOptions.cancelButtonText (Android only)
* @returns {Promise<Object>} Promise that resolves to an object cryptographic signature details
*/
export function createSignature(createSignatureOptions: CreateSignatureOptions): Promise<CreateSignatureResult> {
if (!createSignatureOptions.cancelButtonText) {
createSignatureOptions.cancelButtonText = 'Cancel';
}
return bridge.createSignature(createSignatureOptions);
}
/**
* Prompts user with biometrics dialog using the passed in prompt message and
* returns promise that resolves to an object with object.success = true if the user passes,
* object.success = false if the user cancels, and rejects if anything fails
* @param {Object} simplePromptOptions
* @param {string} simplePromptOptions.promptMessage
* @param {string} simplePromptOptions.cancelButtonText (Android only)
* @returns {Promise<Object>} Promise that resolves an object with details about the biometrics result
*/
export function simplePrompt(simplePromptOptions: SimplePromptOptions): Promise<SimplePromptResult> {
if (!simplePromptOptions.cancelButtonText) {
simplePromptOptions.cancelButtonText = 'Cancel';
}
return bridge.simplePrompt(simplePromptOptions);
}
}
export default ReactNativeBiometrics;