Skip to content

Commit c046add

Browse files
committed
merge fix
2 parents f60d749 + f0f5f22 commit c046add

4 files changed

Lines changed: 17 additions & 2 deletions

File tree

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,13 @@ SInfo.setItem('key1', 'value1', {
201201

202202
Note: By default `kSecAccessControl` will get set to `kSecAccessControlUserPresence`.
203203

204+
#### kSecAttrSynchronizable
205+
206+
You can set this to `true` in order to sync the keychain items with iCloud.
207+
208+
Note: By default `kSecAttrSynchronizable` will get set to `false`.
209+
210+
204211
# How to use?
205212

206213
Here is a simple example:

android/src/main/java/br/com/classapp/RNSensitiveInfo/RNSensitiveInfoModule.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@
1212
import android.security.keystore.KeyInfo;
1313
import java.security.InvalidKeyException;
1414
import android.security.keystore.KeyProperties;
15-
import android.support.annotation.NonNull;
1615
import android.util.Base64;
1716
import android.util.Log;
1817

18+
import androidx.annotation.NonNull;
19+
1920
import com.facebook.react.bridge.Promise;
2021
import com.facebook.react.bridge.ReactApplicationContext;
2122
import com.facebook.react.bridge.ReactContextBaseJavaModule;

ios/RNSensitiveInfo/RNSensitiveInfo.m

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,10 @@ - (NSString *)messageForError:(NSError *)error
124124
valueData, kSecValueData,
125125
key, kSecAttrAccount, nil];
126126

127+
if([RCTConvert BOOL:options[@"kSecAttrSynchronizable"]]){
128+
[query setValue:@YES forKey:(NSString *)kSecAttrSynchronizable];
129+
}
130+
127131
if([RCTConvert BOOL:options[@"touchID"]]){
128132
CFStringRef kSecAccessControlValue = convertkSecAccessControl([RCTConvert NSString:options[@"kSecAccessControl"]]);
129133
SecAccessControlRef sac = SecAccessControlCreateWithFlags(kCFAllocatorDefault, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, kSecAccessControlValue, NULL);
@@ -155,6 +159,7 @@ - (NSString *)messageForError:(NSError *)error
155159
NSMutableDictionary* query = [NSMutableDictionary dictionaryWithObjectsAndKeys:(__bridge id)(kSecClassGenericPassword), kSecClass,
156160
keychainService, kSecAttrService,
157161
key, kSecAttrAccount,
162+
kSecAttrSynchronizableAny, kSecAttrSynchronizable,
158163
kCFBooleanTrue, kSecReturnAttributes,
159164
kCFBooleanTrue, kSecReturnData,
160165
nil];
@@ -224,6 +229,7 @@ - (void)getItemWithQuery:(NSDictionary *)query resolver:(RCTPromiseResolveBlock)
224229

225230
NSMutableArray* finalResult = [[NSMutableArray alloc] init];
226231
NSMutableDictionary *query = [NSMutableDictionary dictionaryWithObjectsAndKeys:
232+
(__bridge id)kSecAttrSynchronizableAny, kSecAttrSynchronizable,
227233
(__bridge id)kCFBooleanTrue, (__bridge id)kSecReturnAttributes,
228234
(__bridge id)kSecMatchLimitAll, (__bridge id)kSecMatchLimit,
229235
(__bridge id)kCFBooleanTrue, (__bridge id)kSecReturnData,
@@ -285,6 +291,7 @@ - (void)getItemWithQuery:(NSDictionary *)query resolver:(RCTPromiseResolveBlock)
285291
// Create dictionary of search parameters
286292
NSDictionary* query = [NSDictionary dictionaryWithObjectsAndKeys:
287293
(__bridge id)(kSecClassGenericPassword), kSecClass,
294+
(__bridge id)(kSecAttrSynchronizableAny), kSecAttrSynchronizable,
288295
keychainService, kSecAttrService,
289296
key, kSecAttrAccount,
290297
kCFBooleanTrue, kSecReturnAttributes,

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-sensitive-info",
3-
"version": "5.4.2",
3+
"version": "5.5.0",
44
"main": "RNSensitiveInfo.js",
55
"description": "react-native-sensitive-info manages all data stored in Android Shared Preferences and iOS Keychain. You can set, get and delete keys/values using simple methods.",
66
"scripts": {

0 commit comments

Comments
 (0)