@@ -13,6 +13,14 @@ export class BiometricAuth implements BiometricApi {
13
13
BiometricAuth . deleteKeyChainEntry ( useKeyName ) ;
14
14
}
15
15
16
+ private static get keychainItemServiceName ( ) {
17
+ if ( keychainItemServiceName === null ) {
18
+ const bundleID = NSBundle . mainBundle . infoDictionary . objectForKey ( 'CFBundleIdentifier' ) ;
19
+ keychainItemServiceName = `${ bundleID } .TouchID` ;
20
+ }
21
+ return keychainItemServiceName ;
22
+ }
23
+
16
24
available ( ) : Promise < BiometricIDAvailableResult > {
17
25
return new Promise ( ( resolve , reject ) => {
18
26
try {
@@ -85,11 +93,6 @@ export class BiometricAuth implements BiometricApi {
85
93
return ;
86
94
}
87
95
88
- if ( keychainItemServiceName === null ) {
89
- const bundleID = NSBundle . mainBundle . infoDictionary . objectForKey ( 'CFBundleIdentifier' ) ;
90
- keychainItemServiceName = `${ bundleID } .TouchID` ;
91
- }
92
-
93
96
const keyName = options . keyName ?? keychainItemIdentifier ;
94
97
const secret = options . secret ?? 'dummy content' ;
95
98
@@ -123,7 +126,7 @@ export class BiometricAuth implements BiometricApi {
123
126
const query = NSMutableDictionary . alloc ( ) . init ( ) ;
124
127
query . setObjectForKey ( kSecClassGenericPassword , kSecClass ) ;
125
128
query . setObjectForKey ( keyName , kSecAttrAccount ) ;
126
- query . setObjectForKey ( keychainItemServiceName , kSecAttrService ) ;
129
+ query . setObjectForKey ( BiometricAuth . keychainItemServiceName , kSecAttrService ) ;
127
130
query . setObjectForKey ( true , kSecReturnData ) ;
128
131
129
132
// Note that you can only do this for Touch ID; for Face ID you need to tweak the plist value of NSFaceIDUsageDescription
@@ -219,7 +222,7 @@ export class BiometricAuth implements BiometricApi {
219
222
const query = NSMutableDictionary . alloc ( ) . init ( ) ;
220
223
query . setObjectForKey ( kSecClassGenericPassword , kSecClass ) ;
221
224
query . setObjectForKey ( keyName , kSecAttrAccount ) ;
222
- query . setObjectForKey ( keychainItemServiceName , kSecAttrService ) ;
225
+ query . setObjectForKey ( BiometricAuth . keychainItemServiceName , kSecAttrService ) ;
223
226
224
227
SecItemDelete ( query ) ;
225
228
}
@@ -228,7 +231,7 @@ export class BiometricAuth implements BiometricApi {
228
231
const attributes = NSMutableDictionary . new ( ) ;
229
232
attributes . setObjectForKey ( kSecClassGenericPassword , kSecClass ) ;
230
233
attributes . setObjectForKey ( keyName , kSecAttrAccount ) ;
231
- attributes . setObjectForKey ( keychainItemServiceName , kSecAttrService ) ;
234
+ attributes . setObjectForKey ( BiometricAuth . keychainItemServiceName , kSecAttrService ) ;
232
235
233
236
const accessControlRef = SecAccessControlCreateWithFlags (
234
237
kCFAllocatorDefault ,
0 commit comments