diff --git a/changeme/__mock__/mockKeyStore.js b/changeme/__mock__/mockKeyStore.js index 4f681f4..60369e3 100644 --- a/changeme/__mock__/mockKeyStore.js +++ b/changeme/__mock__/mockKeyStore.js @@ -1,32 +1,29 @@ -class MockKeyStore { - async remove(key) { - if (key === 'notakey') { - throw ('Key not found'); - } - return true; + +export async function resetInternetCredentials(key) { + if (key === 'notakey') { + throw ('Key not found'); } + return true; +} - async set(key, value) { - if (key === 'savefailed'){ - throw ('Failed to save key'); - } - return true; +export async function setInternetCredentials(key, value, placeholder) { + if (key === 'savefailed'){ + throw ('Failed to save key'); } - - async get(key) { - if (key === 'isNull'){ - return null; - } else if (key === 'negTest') { - return '-1'; - } else if (key === 'notakey') { - throw ('Key not found'); - } else { - return '1234567890'; - } - } + return true; } -export default RNSecureKeyStore = new MockKeyStore(); +export async function getInternetCredentials(key) { + if (key === 'isNull'){ + return false; + } else if (key === 'negTest') { + return {username: '-1'}; + } else if (key === 'notakey') { + throw ('Key not found'); + } else { + return {username: '1234567890'}; + } +} export const ACCESSIBLE = { AFTER_FIRST_UNLOCK :'AccessibleAfterFirstUnlock', diff --git a/changeme/jest.config.js b/changeme/jest.config.js index 9e0fac9..3b8666c 100644 --- a/changeme/jest.config.js +++ b/changeme/jest.config.js @@ -6,7 +6,7 @@ module.exports = { moduleDirectories: ['node_modules', 'src'], moduleNameMapper: { // '@react-native-firebase/messaging: '/__mock__/mockFirebase.js', - 'react-native-secure-key-store': '/__mock__/mockKeyStore.js', + 'react-native-keychain': '/__mock__/mockKeyStore.js', '\\.(jpg|ico|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/__mock__/file.js', '^(realm)': '/__mock__/mockRealmObject' }, diff --git a/changeme/package-lock.json b/changeme/package-lock.json index 10bbbdc..539e71d 100644 --- a/changeme/package-lock.json +++ b/changeme/package-lock.json @@ -15,9 +15,9 @@ "react-native": "0.69.2", "react-native-gesture-handler": "^2.5.0", "react-native-get-random-values": "^1.8.0", + "react-native-keychain": "^8.1.1", "react-native-safe-area-context": "^4.3.1", "react-native-screens": "^3.15.0", - "react-native-secure-key-store": "^2.0.9", "react-native-vector-icons": "^9.2.0", "react-redux": "^8.0.2", "realm": "^10.19.5", @@ -14507,6 +14507,11 @@ "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.7.tgz", "integrity": "sha512-+4JpbIx42zGTONhBTIXSyfyHICHC29VTvhkkoUOJAh/XHPEixpuBduYgf6Y4y9wsN1ARlQhBBoptTvXvAFQf5g==" }, + "node_modules/react-native-keychain": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/react-native-keychain/-/react-native-keychain-8.1.1.tgz", + "integrity": "sha512-8fxgeHKwGcL657eAYpdBTkDIxNhbIHI+kyyO0Yac2dgVAN184JoIwQcW2z6snahwDaCObQOu0biLFHnsH+4KSg==" + }, "node_modules/react-native-safe-area-context": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.3.1.tgz", @@ -14540,11 +14545,6 @@ "react": "^17.0.0" } }, - "node_modules/react-native-secure-key-store": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/react-native-secure-key-store/-/react-native-secure-key-store-2.0.9.tgz", - "integrity": "sha512-9qi1rOlv4qNSpJIjqcIB7d0EQSwo2Yho8NVBT/Jc9NeYibDLHdArLXl8jn8H6nlf+8alk/bXqr4rPINrCTtmog==" - }, "node_modules/react-native-vector-icons": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-9.2.0.tgz", @@ -28080,6 +28080,11 @@ "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.7.tgz", "integrity": "sha512-+4JpbIx42zGTONhBTIXSyfyHICHC29VTvhkkoUOJAh/XHPEixpuBduYgf6Y4y9wsN1ARlQhBBoptTvXvAFQf5g==" }, + "react-native-keychain": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/react-native-keychain/-/react-native-keychain-8.1.1.tgz", + "integrity": "sha512-8fxgeHKwGcL657eAYpdBTkDIxNhbIHI+kyyO0Yac2dgVAN184JoIwQcW2z6snahwDaCObQOu0biLFHnsH+4KSg==" + }, "react-native-safe-area-context": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.3.1.tgz", @@ -28103,11 +28108,6 @@ } } }, - "react-native-secure-key-store": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/react-native-secure-key-store/-/react-native-secure-key-store-2.0.9.tgz", - "integrity": "sha512-9qi1rOlv4qNSpJIjqcIB7d0EQSwo2Yho8NVBT/Jc9NeYibDLHdArLXl8jn8H6nlf+8alk/bXqr4rPINrCTtmog==" - }, "react-native-vector-icons": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-9.2.0.tgz", diff --git a/changeme/package.json b/changeme/package.json index 27b71f5..571af2b 100644 --- a/changeme/package.json +++ b/changeme/package.json @@ -27,9 +27,9 @@ "react-native": "0.69.2", "react-native-gesture-handler": "^2.5.0", "react-native-get-random-values": "^1.8.0", + "react-native-keychain": "^8.1.1", "react-native-safe-area-context": "^4.3.1", "react-native-screens": "^3.15.0", - "react-native-secure-key-store": "^2.0.9", "react-native-vector-icons": "^9.2.0", "react-redux": "^8.0.2", "realm": "^10.19.5", diff --git a/changeme/src/realm/DbInit.js b/changeme/src/realm/DbInit.js index 20c95a0..c0d674f 100644 --- a/changeme/src/realm/DbInit.js +++ b/changeme/src/realm/DbInit.js @@ -20,14 +20,14 @@ export async function initDB(dbKeyRef = 'appDB', dbLocation = Realm.defaultPath) try { let fromStore = await KeyStore.getKey(dbKeyRef); - if (fromStore === null) { + if (fromStore === false) { let newKey = generateKey(); await KeyStore.setKey(dbKeyRef, newKey); fromStore = await KeyStore.getKey(dbKeyRef); } let dbKey = new Uint8Array(64); - if (fromStore !== null){ + if (fromStore !== false){ for (let i = 0; i < 64; ++i){ dbKey[i] = fromStore.charAt(i); } diff --git a/changeme/src/services/Keystore.js b/changeme/src/services/Keystore.js index 70cd3f3..32d4f37 100644 --- a/changeme/src/services/Keystore.js +++ b/changeme/src/services/Keystore.js @@ -1,8 +1,13 @@ -import RNSecureKeyStore, {ACCESSIBLE} from 'react-native-secure-key-store'; +import { + setInternetCredentials, + getInternetCredentials, + resetInternetCredentials, + ACCESSIBLE +} from "react-native-keychain"; export async function removeKey(key) { let outcome = null; - await RNSecureKeyStore.remove(key).then( + await resetInternetCredentials(key).then( (res) => { outcome = true; }, @@ -16,7 +21,7 @@ export async function removeKey(key) { export async function setKey(key, value) { let outcome = null; - await RNSecureKeyStore.set(key, value, { + await setInternetCredentials(key, value, 'none', { accessible: ACCESSIBLE.WHEN_UNLOCKED_THIS_DEVICE_ONLY, }).then( (res) => { @@ -32,9 +37,13 @@ export async function setKey(key, value) { export async function getKey(key) { let value = null; - await RNSecureKeyStore.get(key).then( + await getInternetCredentials(key).then( (res) => { - value = res; + if (res === false) { + value = false; + } else { + value = res.username; + } }, (err) => { value = null;