[FEATURE] Encrypt realms

This commit is contained in:
kwingram25 2018-04-10 23:00:48 -07:00 committed by Roman Volosovskyi
parent 30dd92d902
commit 90eb2aaaa1
No known key found for this signature in database
GPG Key ID: 0238A4B5ECEE70DE
19 changed files with 460 additions and 415 deletions

View File

@ -25,6 +25,7 @@
"react-native-dialogs",
"react-native-image-resizer",
"react-native-image-crop-picker",
"react-native-securerandom",
"react-native-webview-bridge",
"react-native-fcm",
"homoglyph-finder",
@ -36,6 +37,7 @@
"emojilib",
"react-native-config",
"react-native-svg",
"react-native-keychain",
"rn-snoopy",
"rn-snoopy/stream/bars",
"rn-snoopy/stream/filter",

View File

@ -208,11 +208,13 @@ dependencies {
implementation project(':react-native-status')
implementation project(':react-native-fs')
implementation project(':react-native-image-crop-picker')
implementation project(':react-native-securerandom')
implementation project(':react-native-webview-bridge')
implementation project(':react-native-config')
implementation project(':react-native-fcm')
implementation 'com.google.firebase:firebase-core:10.0.1' //this decides your firebase SDK version
compile project(':react-native-testfairy')
implementation project(':react-native-keychain')
implementation project(':instabug-reactnative')
implementation 'status-im:function:0.0.1'

View File

@ -4,6 +4,7 @@ import android.support.multidex.MultiDexApplication;
import com.aakashns.reactnativedialogs.ReactNativeDialogsPackage;
import org.devio.rn.splashscreen.SplashScreenReactPackage;
import com.facebook.react.ReactApplication;
import net.rhogan.rnsecurerandom.RNSecureRandomPackage;
import com.instabug.reactlibrary.RNInstabugReactnativePackage;
import com.ocetnik.timer.BackgroundTimerPackage;
import com.horcrux.svg.SvgPackage;
@ -24,6 +25,7 @@ import im.status.ethereum.module.StatusPackage;
import io.realm.react.RealmReactPackage;
import me.alwx.HttpServer.HttpServerReactPackage;
import com.testfairy.react.TestFairyPackage;
import com.oblador.keychain.KeychainPackage;
import java.util.ArrayList;
import java.util.Arrays;
@ -59,6 +61,7 @@ public class MainApplication extends MultiDexApplication implements ReactApplica
Function<String, String> callRPC = statusPackage.getCallRPC();
List<ReactPackage> packages = new ArrayList<ReactPackage>(Arrays.asList(
new MainReactPackage(),
new RNSecureRandomPackage(),
new BackgroundTimerPackage(),
new SvgPackage(),
new FIRMessagingPackage(),
@ -76,6 +79,7 @@ public class MainApplication extends MultiDexApplication implements ReactApplica
new TestFairyPackage(),
new WebViewBridgePackage(webViewDebugEnabled, callRPC),
new ReactNativeConfigPackage(),
new KeychainPackage(),
new RNInstabugReactnativePackage.Builder(BuildConfig.INSTABUG_TOKEN,MainApplication.this)
.setInvocationEvent("shake")
.setPrimaryColor("#1D82DC")

View File

@ -1,4 +1,6 @@
rootProject.name = 'StatusIm'
include ':react-native-securerandom'
project(':react-native-securerandom').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-securerandom/android')
include ':instabug-reactnative'
project(':instabug-reactnative').projectDir = new File(rootProject.projectDir, '../node_modules/instabug-reactnative/android')
include ':react-native-background-timer'
@ -32,6 +34,8 @@ include ':react-native-fs'
project(':react-native-fs').projectDir = new File(settingsDir, '../node_modules/react-native-fs/android')
include ':react-native-image-crop-picker'
project(':react-native-image-crop-picker').projectDir = new File(settingsDir, '../node_modules/react-native-image-crop-picker/android')
include ':react-native-keychain'
project(':react-native-keychain').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keychain/android')
include ':react-native-webview-bridge'
project(':react-native-webview-bridge').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview-bridge/android')
include ':react-native-config'

View File

@ -21,6 +21,7 @@ target 'StatusIm' do
pod 'React', :path => '../node_modules/react-native'
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
pod 'react-native-background-timer', :path => '../node_modules/react-native-background-timer'
pod 'RNKeychain', :path => '../node_modules/react-native-keychain'
target 'StatusImTests' do
inherit! :search_paths

View File

@ -5,7 +5,6 @@
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
@ -72,6 +71,7 @@
E0AD9E8F495A4907B65104BF /* libRCTImageResizer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BEE3436791D42248F853999 /* libRCTImageResizer.a */; };
F9238D6C1E5F055900C047B9 /* SF-UI-Text-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = F9238D6B1E5F055900C047B9 /* SF-UI-Text-Semibold.otf */; };
FD4F213C3873473CB703B1D2 /* libRNFS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 674B3D9595A047AB8D518F4E /* libRNFS.a */; };
AB96C730942E49178F59AE6F /* libRNSecureRandom.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1464A9A9E12F45068947C28F /* libRNSecureRandom.a */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -604,6 +604,8 @@
F89A8F8005874B86B63C22E3 /* RNFIRMessaging.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNFIRMessaging.xcodeproj; path = "../node_modules/react-native-fcm/ios/RNFIRMessaging.xcodeproj"; sourceTree = "<group>"; };
F9238D6B1E5F055900C047B9 /* SF-UI-Text-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Semibold.otf"; sourceTree = "<group>"; };
FC1CBCFE6C906043D6CCEEE1 /* libPods-StatusImTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-StatusImTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
AF409BB755B94FB1BBA01927 /* RNSecureRandom.xcodeproj */ = {isa = PBXFileReference; name = "RNSecureRandom.xcodeproj"; path = "../node_modules/react-native-securerandom/ios/RNSecureRandom.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
1464A9A9E12F45068947C28F /* libRNSecureRandom.a */ = {isa = PBXFileReference; name = "libRNSecureRandom.a"; path = "libRNSecureRandom.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -664,6 +666,7 @@
5974D2035B8B47E0946B63B6 /* libRNFIRMessaging.a in Frameworks */,
91446A820DA5E1C15C24D2A7 /* Instabug.framework in Frameworks */,
63AE4174241B852A045FAE1F /* InstabugCore.framework in Frameworks */,
AB96C730942E49178F59AE6F /* libRNSecureRandom.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -921,6 +924,7 @@
F3548417D8DA4362B6796A54 /* RNInstabug.xcodeproj */,
1E74DC52A1E449A2BA858B14 /* RNSVG.xcodeproj */,
F89A8F8005874B86B63C22E3 /* RNFIRMessaging.xcodeproj */,
AF409BB755B94FB1BBA01927 /* RNSecureRandom.xcodeproj */,
);
name = Libraries;
sourceTree = "<group>";
@ -1161,7 +1165,7 @@
83CBB9F71A601CBA00E9B192 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0830;
LastUpgradeCheck = 830;
ORGANIZATIONNAME = Facebook;
TargetAttributes = {
00E356ED1AD99517003FC87E = {
@ -1176,6 +1180,9 @@
com.apple.BackgroundModes = {
enabled = 1;
};
com.apple.Keychain = {
enabled = 1;
};
com.apple.Push = {
enabled = 1;
};
@ -1972,6 +1979,7 @@
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
PRODUCT_BUNDLE_IDENTIFIER = im.status.ethereum;
PRODUCT_NAME = "$(TARGET_NAME)";
@ -2014,6 +2022,7 @@
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
PRODUCT_BUNDLE_IDENTIFIER = im.status.ethereum;
PRODUCT_NAME = "$(TARGET_NAME)";
@ -2060,6 +2069,7 @@
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
"$(SRCROOT)/../node_modules/react-native-fcm/ios",
"$(SRCROOT)/../node_modules/react-native-testfairy/ios",
"$(SRCROOT)/../node_modules/react-native-securerandom/ios",
);
INFOPLIST_FILE = StatusIm/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
@ -2118,6 +2128,7 @@
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
"$(SRCROOT)/../node_modules/react-native-fcm/ios",
"$(SRCROOT)/../node_modules/react-native-testfairy/ios",
"$(SRCROOT)/../node_modules/react-native-securerandom/ios",
);
INFOPLIST_FILE = StatusIm/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;

View File

@ -4,5 +4,9 @@
<dict>
<key>aps-environment</key>
<string>development</string>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)im.status.ethereum</string>
</array>
</dict>
</plist>

620
package-lock.json generated
View File

@ -231,7 +231,7 @@
"requires": {
"bn.js": "4.11.8",
"inherits": "2.0.1",
"minimalistic-assert": "1.0.0"
"minimalistic-assert": "1.0.1"
}
},
"assert": {
@ -290,9 +290,9 @@
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
},
"aws4": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
"integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
"integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w=="
},
"axobject-query": {
"version": "0.1.0",
@ -388,7 +388,7 @@
"requires": {
"babel-core": "6.26.0",
"babel-runtime": "6.26.0",
"core-js": "2.5.4",
"core-js": "2.5.5",
"home-or-tmp": "2.0.0",
"lodash": "4.17.5",
"mkdirp": "0.5.1",
@ -1053,7 +1053,7 @@
"requires": {
"babel-core": "6.24.1",
"babel-runtime": "6.26.0",
"core-js": "2.5.4",
"core-js": "2.5.5",
"home-or-tmp": "2.0.0",
"lodash": "4.17.5",
"mkdirp": "0.5.1",
@ -1065,7 +1065,7 @@
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"requires": {
"core-js": "2.5.4",
"core-js": "2.5.5",
"regenerator-runtime": "0.11.1"
}
},
@ -1139,6 +1139,32 @@
"requires": {
"is-descriptor": "1.0.2"
}
},
"is-accessor-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"requires": {
"kind-of": "6.0.2"
}
},
"is-data-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"requires": {
"kind-of": "6.0.2"
}
},
"is-descriptor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"requires": {
"is-accessor-descriptor": "1.0.0",
"is-data-descriptor": "1.0.0",
"kind-of": "6.0.2"
}
}
}
},
@ -1187,9 +1213,9 @@
"integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak="
},
"big-integer": {
"version": "1.6.27",
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.27.tgz",
"integrity": "sha512-NzUKMYW4SWme+H5K+mfEmBxEF/V04PhlzoxxXwSnDig78y2t7HLBVotfDBMUhRPRA3WWID3GmJB/OJSWPhVXtg=="
"version": "1.6.28",
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.28.tgz",
"integrity": "sha512-OJT3rzgtsYca/5WmmEuFJDPMwROVh5SSjoEX9wIrpfbbWJ4KqRzShs8Cj6jWHaatBYAeWngBA+kmmrcHSklT1g=="
},
"bignumber.js": {
"version": "github:status-im/bignumber.js#cc066a0a3d6bfe0c436c9957f4ea8344bf963c89"
@ -1303,7 +1329,7 @@
"resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz",
"integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=",
"requires": {
"big-integer": "1.6.27"
"big-integer": "1.6.28"
}
},
"brace-expansion": {
@ -1316,17 +1342,15 @@
}
},
"braces": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz",
"integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==",
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
"integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
"requires": {
"arr-flatten": "1.1.0",
"array-unique": "0.3.2",
"define-property": "1.0.0",
"extend-shallow": "2.0.1",
"fill-range": "4.0.0",
"isobject": "3.0.1",
"kind-of": "6.0.2",
"repeat-element": "1.1.2",
"snapdragon": "0.8.2",
"snapdragon-node": "2.1.1",
@ -1334,14 +1358,6 @@
"to-regex": "3.0.2"
},
"dependencies": {
"define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"requires": {
"is-descriptor": "1.0.2"
}
},
"extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
@ -1364,26 +1380,26 @@
"requires": {
"buffer-xor": "1.0.3",
"cipher-base": "1.0.4",
"create-hash": "1.1.3",
"create-hash": "1.2.0",
"evp_bytestokey": "1.0.3",
"inherits": "2.0.1",
"safe-buffer": "5.1.1"
}
},
"browserify-cipher": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz",
"integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
"integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
"requires": {
"browserify-aes": "1.2.0",
"browserify-des": "1.0.0",
"browserify-des": "1.0.1",
"evp_bytestokey": "1.0.3"
}
},
"browserify-des": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz",
"integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz",
"integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==",
"requires": {
"cipher-base": "1.0.4",
"des.js": "1.0.0",
@ -1406,11 +1422,11 @@
"requires": {
"bn.js": "4.11.8",
"browserify-rsa": "4.0.1",
"create-hash": "1.1.3",
"create-hmac": "1.1.6",
"create-hash": "1.2.0",
"create-hmac": "1.1.7",
"elliptic": "6.4.0",
"inherits": "2.0.1",
"parse-asn1": "5.1.0"
"parse-asn1": "5.1.1"
}
},
"bser": {
@ -1588,57 +1604,6 @@
"requires": {
"is-descriptor": "0.1.6"
}
},
"is-accessor-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
"requires": {
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
"is-buffer": "1.1.6"
}
}
}
},
"is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
"requires": {
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
"is-buffer": "1.1.6"
}
}
}
},
"is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
"integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
"requires": {
"is-accessor-descriptor": "0.1.6",
"is-data-descriptor": "0.1.4",
"kind-of": "5.1.0"
}
},
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
}
}
},
@ -1959,9 +1924,9 @@
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
},
"core-js": {
"version": "2.5.4",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.4.tgz",
"integrity": "sha1-8si/GB8qgLkvNgEhQpzmOi8K6uA="
"version": "2.5.5",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz",
"integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs="
},
"core-util-is": {
"version": "1.0.2",
@ -1974,32 +1939,33 @@
"integrity": "sha1-+mIuG8OIvyVzCQgta2UgDOZwkLo="
},
"create-ecdh": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz",
"integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.1.tgz",
"integrity": "sha512-iZvCCg8XqHQZ1ioNBTzXS/cQSkqkqcPs8xSX4upNB+DAk9Ht3uzQf2J32uAHNCne8LDmKr29AgZrEs4oIrwLuQ==",
"requires": {
"bn.js": "4.11.8",
"elliptic": "6.4.0"
}
},
"create-hash": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz",
"integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=",
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
"requires": {
"cipher-base": "1.0.4",
"inherits": "2.0.1",
"md5.js": "1.3.4",
"ripemd160": "2.0.1",
"sha.js": "2.4.11"
}
},
"create-hmac": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz",
"integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=",
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
"requires": {
"cipher-base": "1.0.4",
"create-hash": "1.1.3",
"create-hash": "1.2.0",
"inherits": "2.0.1",
"ripemd160": "2.0.1",
"safe-buffer": "5.1.1",
@ -2248,6 +2214,34 @@
"requires": {
"is-descriptor": "1.0.2",
"isobject": "3.0.1"
},
"dependencies": {
"is-accessor-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"requires": {
"kind-of": "6.0.2"
}
},
"is-data-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"requires": {
"kind-of": "6.0.2"
}
},
"is-descriptor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"requires": {
"is-accessor-descriptor": "1.0.0",
"is-data-descriptor": "1.0.0",
"kind-of": "6.0.2"
}
}
}
},
"delayed-stream": {
@ -2276,7 +2270,7 @@
"integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
"requires": {
"inherits": "2.0.1",
"minimalistic-assert": "1.0.0"
"minimalistic-assert": "1.0.1"
}
},
"destroy": {
@ -2308,9 +2302,9 @@
"integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I="
},
"diffie-hellman": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz",
"integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=",
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
"requires": {
"bn.js": "4.11.8",
"miller-rabin": "4.0.1",
@ -2377,7 +2371,7 @@
"hash.js": "1.1.3",
"hmac-drbg": "1.0.1",
"inherits": "2.0.1",
"minimalistic-assert": "1.0.0",
"minimalistic-assert": "1.0.1",
"minimalistic-crypto-utils": "1.0.1"
}
},
@ -2401,7 +2395,7 @@
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
"integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
"requires": {
"iconv-lite": "0.4.19"
"iconv-lite": "0.4.21"
}
},
"end-of-stream": {
@ -2603,57 +2597,6 @@
"requires": {
"is-extendable": "0.1.1"
}
},
"is-accessor-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
"requires": {
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
"is-buffer": "1.1.6"
}
}
}
},
"is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
"requires": {
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
"is-buffer": "1.1.6"
}
}
}
},
"is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
"integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
"requires": {
"is-accessor-descriptor": "0.1.6",
"is-data-descriptor": "0.1.4",
"kind-of": "5.1.0"
}
},
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
}
}
},
@ -2780,7 +2723,7 @@
"integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
"requires": {
"chardet": "0.4.2",
"iconv-lite": "0.4.19",
"iconv-lite": "0.4.21",
"tmp": "0.0.33"
}
},
@ -2814,6 +2757,32 @@
"requires": {
"is-extendable": "0.1.1"
}
},
"is-accessor-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"requires": {
"kind-of": "6.0.2"
}
},
"is-data-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"requires": {
"kind-of": "6.0.2"
}
},
"is-descriptor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"requires": {
"is-accessor-descriptor": "1.0.0",
"is-data-descriptor": "1.0.0",
"kind-of": "6.0.2"
}
}
}
},
@ -2878,7 +2847,7 @@
"requires": {
"babel-core": "6.24.1",
"babel-preset-fbjs": "2.1.4",
"core-js": "2.5.4",
"core-js": "2.5.5",
"cross-spawn": "5.1.0",
"gulp-util": "3.0.8",
"object-assign": "4.1.1",
@ -4325,11 +4294,12 @@
}
},
"hash-base": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz",
"integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=",
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
"integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
"requires": {
"inherits": "2.0.1"
"inherits": "2.0.1",
"safe-buffer": "5.1.1"
}
},
"hash.js": {
@ -4338,7 +4308,7 @@
"integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
"requires": {
"inherits": "2.0.3",
"minimalistic-assert": "1.0.0"
"minimalistic-assert": "1.0.1"
},
"dependencies": {
"inherits": {
@ -4365,7 +4335,7 @@
"integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
"requires": {
"hash.js": "1.1.3",
"minimalistic-assert": "1.0.0",
"minimalistic-assert": "1.0.1",
"minimalistic-crypto-utils": "1.0.1"
}
},
@ -4448,9 +4418,12 @@
"integrity": "sha512-u144MQhV/8mz4Y5wP86SQAWMwS8gpe/JavIa9hugSI4WreezGgbhJPdk2Q60KcdIltKLiNefGtHNh1N8SSmQqQ=="
},
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
"version": "0.4.21",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz",
"integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==",
"requires": {
"safer-buffer": "2.1.2"
}
},
"identicon.js": {
"version": "github:status-im/identicon.js#4cd179daaf6f01384502b4b2c1876f982db0f57e"
@ -4585,11 +4558,21 @@
"integrity": "sha1-OzSixI81mXLzUEKEkZOucmS2NWI="
},
"is-accessor-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
"requires": {
"kind-of": "6.0.2"
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
"is-buffer": "1.1.6"
}
}
}
},
"is-arrayish": {
@ -4616,11 +4599,21 @@
"integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI="
},
"is-data-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
"requires": {
"kind-of": "6.0.2"
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
"is-buffer": "1.1.6"
}
}
}
},
"is-date-object": {
@ -4629,13 +4622,20 @@
"integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
},
"is-descriptor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
"integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
"requires": {
"is-accessor-descriptor": "1.0.0",
"is-data-descriptor": "1.0.0",
"kind-of": "6.0.2"
"is-accessor-descriptor": "0.1.6",
"is-data-descriptor": "0.1.4",
"kind-of": "5.1.0"
},
"dependencies": {
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
}
}
},
"is-dotfile": {
@ -5030,9 +5030,9 @@
}
},
"left-pad": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz",
"integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4="
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
"integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA=="
},
"level-blobs": {
"version": "0.1.7",
@ -5411,17 +5411,6 @@
"requires": {
"hash-base": "3.0.4",
"inherits": "2.0.1"
},
"dependencies": {
"hash-base": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
"integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
"requires": {
"inherits": "2.0.1",
"safe-buffer": "5.1.1"
}
}
}
},
"media-typer": {
@ -5491,7 +5480,7 @@
"chalk": "1.1.3",
"concat-stream": "1.6.2",
"connect": "3.6.6",
"core-js": "2.5.4",
"core-js": "2.5.5",
"debug": "2.6.9",
"denodeify": "1.2.1",
"eventemitter3": "3.0.1",
@ -5504,7 +5493,7 @@
"jest-worker": "22.1.0",
"json-stable-stringify": "1.0.1",
"json5": "0.4.0",
"left-pad": "1.2.0",
"left-pad": "1.3.0",
"lodash.throttle": "4.1.1",
"merge-stream": "1.0.1",
"metro-core": "0.24.7",
@ -5555,7 +5544,7 @@
"requires": {
"babel-core": "6.26.0",
"babel-runtime": "6.26.0",
"core-js": "2.5.4",
"core-js": "2.5.5",
"home-or-tmp": "2.0.0",
"lodash": "4.17.5",
"mkdirp": "0.5.1",
@ -5764,7 +5753,7 @@
"requires": {
"arr-diff": "4.0.0",
"array-unique": "0.3.2",
"braces": "2.3.1",
"braces": "2.3.2",
"define-property": "2.0.2",
"extend-shallow": "3.0.2",
"extglob": "2.0.4",
@ -5818,9 +5807,9 @@
}
},
"minimalistic-assert": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
"integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M="
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
"integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
},
"minimalistic-crypto-utils": {
"version": "1.0.1",
@ -6155,7 +6144,7 @@
"integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
"requires": {
"aws-sign2": "0.6.0",
"aws4": "1.6.0",
"aws4": "1.7.0",
"caseless": "0.12.0",
"combined-stream": "1.0.6",
"extend": "3.0.1",
@ -6277,39 +6266,6 @@
"is-descriptor": "0.1.6"
}
},
"is-accessor-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
"requires": {
"kind-of": "3.2.2"
}
},
"is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
"requires": {
"kind-of": "3.2.2"
}
},
"is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
"integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
"requires": {
"is-accessor-descriptor": "0.1.6",
"is-data-descriptor": "0.1.4",
"kind-of": "5.1.0"
},
"dependencies": {
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
}
}
},
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
@ -6492,13 +6448,13 @@
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
},
"parse-asn1": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz",
"integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=",
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
"integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
"requires": {
"asn1.js": "4.10.1",
"browserify-aes": "1.2.0",
"create-hash": "1.1.3",
"create-hash": "1.2.0",
"evp_bytestokey": "1.0.3",
"pbkdf2": "3.0.8"
}
@ -6585,7 +6541,7 @@
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.8.tgz",
"integrity": "sha1-L4q/FuvsyCJ3lF10irodeHYfYeI=",
"requires": {
"create-hmac": "1.1.6"
"create-hmac": "1.1.7"
}
},
"pegjs": {
@ -6696,14 +6652,14 @@
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
},
"public-encrypt": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz",
"integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=",
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
"integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
"requires": {
"bn.js": "4.11.8",
"browserify-rsa": "4.0.1",
"create-hash": "1.1.3",
"parse-asn1": "5.1.0",
"create-hash": "1.2.0",
"parse-asn1": "5.1.1",
"randombytes": "2.0.6"
}
},
@ -6975,7 +6931,7 @@
"requires": {
"babel-core": "6.26.0",
"babel-runtime": "6.26.0",
"core-js": "2.5.4",
"core-js": "2.5.5",
"home-or-tmp": "2.0.0",
"lodash": "4.17.5",
"mkdirp": "0.5.1",
@ -7115,15 +7071,15 @@
"resolved": "https://registry.npmjs.org/react-native-crypto/-/react-native-crypto-2.1.1.tgz",
"integrity": "sha512-JHwX0zobeYqCAwdSffRoivXeqlZR54WpCj8ICGcoNh7bvOh8khr63zvNk+fcqdRH3eI9Jhglygswijza0f3D4Q==",
"requires": {
"browserify-cipher": "1.0.0",
"browserify-cipher": "1.0.1",
"browserify-sign": "4.0.4",
"create-ecdh": "4.0.0",
"create-hash": "1.1.3",
"create-hmac": "1.1.6",
"diffie-hellman": "5.0.2",
"create-ecdh": "4.0.1",
"create-hash": "1.2.0",
"create-hmac": "1.1.7",
"diffie-hellman": "5.0.3",
"inherits": "2.0.1",
"pbkdf2": "3.0.8",
"public-encrypt": "4.0.0"
"public-encrypt": "4.0.2"
}
},
"react-native-dialogs": {
@ -7189,6 +7145,11 @@
"react-native-scrollable-mixin": "1.0.1"
}
},
"react-native-keychain": {
"version": "3.0.0-rc.3",
"resolved": "https://registry.npmjs.org/react-native-keychain/-/react-native-keychain-3.0.0-rc.3.tgz",
"integrity": "sha512-ijWfHmxTPKnrHtPJiDbKW3D6lRH8O9wbCNEE3xlxEg1WZT+VhP6iiF+HUansNYuxL7Hh7k41GSFfvr3xumfmXA=="
},
"react-native-level-fs": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/react-native-level-fs/-/react-native-level-fs-3.0.0.tgz",
@ -7218,6 +7179,14 @@
"resolved": "https://registry.npmjs.org/react-native-scrollable-mixin/-/react-native-scrollable-mixin-1.0.1.tgz",
"integrity": "sha1-NKMhZ7ZCSFlBVP0NaosD8idAVI4="
},
"react-native-securerandom": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/react-native-securerandom/-/react-native-securerandom-0.1.1.tgz",
"integrity": "sha1-8TBiOkEsM4sK+t7bwgTFy7i/IHA=",
"requires": {
"base64-js": "0.0.8"
}
},
"react-native-splash-screen": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/react-native-splash-screen/-/react-native-splash-screen-3.0.6.tgz",
@ -7520,7 +7489,7 @@
"integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==",
"requires": {
"aws-sign2": "0.7.0",
"aws4": "1.6.0",
"aws4": "1.7.0",
"caseless": "0.12.0",
"combined-stream": "1.0.6",
"extend": "3.0.1",
@ -7633,6 +7602,16 @@
"requires": {
"hash-base": "2.0.2",
"inherits": "2.0.1"
},
"dependencies": {
"hash-base": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz",
"integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=",
"requires": {
"inherits": "2.0.1"
}
}
}
},
"rn-snoopy": {
@ -7697,6 +7676,11 @@
"ret": "0.1.15"
}
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sane": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/sane/-/sane-2.5.0.tgz",
@ -8019,57 +8003,6 @@
"requires": {
"is-extendable": "0.1.1"
}
},
"is-accessor-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
"requires": {
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
"is-buffer": "1.1.6"
}
}
}
},
"is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
"requires": {
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
"is-buffer": "1.1.6"
}
}
}
},
"is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
"integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
"requires": {
"is-accessor-descriptor": "0.1.6",
"is-data-descriptor": "0.1.4",
"kind-of": "5.1.0"
}
},
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
}
}
},
@ -8090,6 +8023,32 @@
"requires": {
"is-descriptor": "1.0.2"
}
},
"is-accessor-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"requires": {
"kind-of": "6.0.2"
}
},
"is-data-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"requires": {
"kind-of": "6.0.2"
}
},
"is-descriptor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"requires": {
"is-accessor-descriptor": "1.0.0",
"is-data-descriptor": "1.0.0",
"kind-of": "6.0.2"
}
}
}
},
@ -8226,57 +8185,6 @@
"requires": {
"is-descriptor": "0.1.6"
}
},
"is-accessor-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
"requires": {
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
"is-buffer": "1.1.6"
}
}
}
},
"is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
"requires": {
"kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"requires": {
"is-buffer": "1.1.6"
}
}
}
},
"is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
"integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
"requires": {
"is-accessor-descriptor": "0.1.6",
"is-data-descriptor": "0.1.4",
"kind-of": "5.1.0"
}
},
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
}
}
},

View File

@ -48,9 +48,11 @@
"react-native-image-crop-picker": "0.18.1",
"react-native-image-resizer": "1.0.0",
"react-native-invertible-scroll-view": "1.1.0",
"react-native-keychain": "3.0.0-rc.3",
"react-native-level-fs": "3.0.0",
"react-native-os": "1.1.0",
"react-native-qrcode": "0.2.6",
"react-native-securerandom": "0.1.1",
"react-native-splash-screen": "3.0.6",
"react-native-svg": "6.3.1",
"react-native-tcp": "3.3.0",

View File

@ -12,6 +12,7 @@
(def image-crop-picker (js/require "react-native-image-crop-picker"))
(def image-resizer (js/require "react-native-image-resizer"))
(def instabug (js/require "instabug-reactnative"))
(def keychain (js/require "react-native-keychain"))
(def nfc (js/require "nfc-react-native"))
(def qr-code (js/require "react-native-qrcode"))
(def react-native (js/require "react-native"))
@ -19,6 +20,7 @@
(def webview-bridge (js/require "react-native-webview-bridge"))
(def svg (js/require "react-native-svg"))
(def react-native-fcm (js/require "react-native-fcm"))
(def secure-random (.-generateSecureRandom (js/require "react-native-securerandom")))
(def snoopy (js/require "rn-snoopy"))
(def snoopy-filter (js/require "rn-snoopy/stream/filter"))
(def snoopy-bars (js/require "rn-snoopy/stream/bars"))

View File

@ -11,9 +11,10 @@
[status-im.data-store.realm.core :as data-source]
[status-im.utils.handlers :as handlers]))
(defn init [encryption-key]
(when-not @data-source/base-realm
(data-source/open-base-realm encryption-key))
(data-source/reset-account-realm encryption-key))
(defn init []
(data-source/reset-account))
(defn change-account [address new-account? handler]
(data-source/change-account address new-account? handler))
(defn change-account [address new-account? encryption-key handler]
(data-source/change-account address new-account? encryption-key handler))

View File

@ -2,21 +2,21 @@
(:require [status-im.data-store.realm.core :as realm]))
(defn get-all-as-list []
(->> (realm/all-clj (realm/get-all realm/base-realm :account) :account)
(->> (realm/all-clj (realm/get-all @realm/base-realm :account) :account)
(mapv #(update % :settings realm/deserialize))))
(defn get-by-address [address]
(-> realm/base-realm
(-> @realm/base-realm
(realm/get-by-field :account :address address)
(realm/single-clj :account)
(update :settings realm/deserialize)))
(defn- create-account-fn [account update?]
#(realm/create realm/base-realm :account account update?))
#(realm/create @realm/base-realm :account account update?))
(defn save [account update?]
(realm/write realm/base-realm
(realm/write @realm/base-realm
(-> account
(update :settings realm/serialize)
(update :networks vals)

View File

@ -12,15 +12,29 @@
[status-im.utils.utils :as utils])
(:refer-clojure :exclude [exists?]))
(defn- realm-version
[file-name]
(.schemaVersion rn-dependencies/realm file-name))
(defn to-buffer [key]
(when key
(let [length (.-length key)
arr (js/Uint8Array. length)]
(dotimes [i length]
(aset arr i (aget key i)))
(.-buffer arr))))
(defn- open-realm
[options file-name]
(let [options (merge options {:path file-name})]
(when (cljs.core/exists? js/window)
(rn-dependencies/realm. (clj->js options)))))
(defn realm-version
[file-name encryption-key]
(if encryption-key
(.schemaVersion rn-dependencies/realm file-name (to-buffer encryption-key))
(.schemaVersion rn-dependencies/realm file-name)))
(defn open-realm
[options file-name encryption-key]
(log/debug "Opening realm at " file-name "...")
(let [options-js (clj->js (assoc options :path file-name))]
(when encryption-key
(log/debug "Using encryption key...")
(set! (.-encryptionKey options-js) (to-buffer encryption-key)))
(when (cljs.core/exists? js/window)
(rn-dependencies/realm. options-js))))
(defn- delete-realm
[file-name]
@ -30,38 +44,37 @@
(when realm
(.close realm)))
(defn- migrate-realm [file-name schemas]
(let [current-version (realm-version file-name)]
(defn migrate-realm [file-name schemas encryption-key]
(let [current-version (realm-version file-name encryption-key)]
(doseq [schema schemas
:when (> (:schemaVersion schema) current-version)
:let [migrated-realm (open-realm schema file-name)]]
:let [migrated-realm (open-realm schema file-name encryption-key)]]
(close migrated-realm)))
(open-realm (last schemas) file-name))
(open-realm (last schemas) file-name encryption-key))
(defn- reset-realm [file-name schemas]
(defn reset-realm [file-name schemas encryption-key]
(utils/show-popup "Please note" "You must recover or create a new account with this upgrade. Also chatting with accounts in previous releases is incompatible")
(delete-realm file-name)
(open-realm (last schemas) file-name))
(open-realm (last schemas) file-name encryption-key))
(defn- open-migrated-realm
[file-name schemas]
(defn open-migrated-realm
[file-name schemas encryption-key]
;; TODO: remove for release 0.9.18
;; delete the realm file if its schema version is higher
;; than existing schema version (this means the previous
;; install has incompatible database schemas)
(if (> (realm-version file-name)
(if (> (realm-version file-name encryption-key)
(apply max (map :schemaVersion base/schemas)))
(reset-realm file-name schemas)
(migrate-realm file-name schemas)))
(reset-realm file-name schemas encryption-key)
(migrate-realm file-name schemas encryption-key)))
(defn- index-entity-schemas [all-schemas]
(into {} (map (juxt :name identity)) (-> all-schemas last :schema)))
(def new-account-filename "new-account")
(def base-realm (open-migrated-realm (.-defaultPath rn-dependencies/realm) base/schemas))
(def account-realm (atom (open-migrated-realm new-account-filename account/schemas)))
(def base-realm (atom nil))
(def account-realm (atom nil))
(def entity->schemas (merge (index-entity-schemas base/schemas)
(index-entity-schemas account/schemas)))
@ -72,20 +85,29 @@
(close @account-realm)
(reset! account-realm nil))
(defn reset-account []
(defn open-base-realm [encryption-key]
(log/debug "Opening base realm... (first run)")
(when @base-realm
(close @base-realm))
(reset! base-realm (open-migrated-realm (.-defaultPath rn-dependencies/realm) base/schemas encryption-key))
(log/debug "Created @base-realm"))
(defn reset-account-realm [encryption-key]
(log/debug "Resetting account realm...")
(when @account-realm
(close @account-realm))
(reset! account-realm (open-migrated-realm new-account-filename account/schemas))
(.write @account-realm #(.deleteAll @account-realm)))
(reset! account-realm (open-migrated-realm new-account-filename account/schemas encryption-key))
(.write @account-realm #(.deleteAll @account-realm))
(log/debug "Created @account-realm"))
(defn move-file-handler [address err handler]
(defn move-file-handler [address encryption-key err handler]
(log/debug "Moved file with error: " err address)
(if err
(log/error "Error moving account realm: " (.-message err))
(reset! account-realm (open-migrated-realm address account/schemas)))
(reset! account-realm (open-migrated-realm address account/schemas encryption-key)))
(handler err))
(defn change-account [address new-account? handler]
(defn change-account [address new-account? encryption-key handler]
(let [path (.-path @account-realm)]
(log/debug "closing account realm: " path)
(close-account-realm)
@ -93,9 +115,9 @@
(if new-account?
(let [new-path (string/replace path new-account-filename address)]
(log/debug "Moving file " path " to " new-path)
(fs/move-file path new-path #(move-file-handler address % handler)))
(fs/move-file path new-path #(move-file-handler address encryption-key % handler)))
(do
(reset! account-realm (open-migrated-realm address account/schemas))
(reset! account-realm (open-migrated-realm address account/schemas encryption-key))
(handler nil)))))
(declare realm-obj->clj)

View File

@ -63,7 +63,7 @@
"JavaScriptCore"
"OttoVM")
" jail initialized")]
(.initJail status init-js' #(do (re-frame/dispatch [:initialize-app])
(.initJail status init-js' #(do (re-frame/dispatch [:initialize-keychain])
(log/debug log-message))))))))
(defonce listener-initialized (atom false))

View File

@ -7,6 +7,7 @@
[status-im.data-store.core :as data-store]
[status-im.native-module.core :as status]
[status-im.utils.config :as config]
[status-im.utils.keychain :as keychain]
[status-im.utils.utils :as utils]
[status-im.constants :as constants]))
@ -29,13 +30,16 @@
(fn [[address]]
;; if we don't add delay when running app without status-go
;; "null is not an object (evaluating 'realm.schema')" error appears
(let [change-account-fn (fn [] (data-store/change-account address
false
#(dispatch [:change-account-handler % address])))]
(if config/stub-status-go?
(utils/set-timeout change-account-fn
300)
(change-account-fn)))))
(keychain/get-encryption-key-then
(fn [encryption-key]
(let [change-account-fn (fn [] (data-store/change-account address
false
encryption-key
#(dispatch [:change-account-handler % address])))]
(if config/stub-status-go?
(utils/set-timeout change-account-fn
300)
(change-account-fn)))))))
;;;; Handlers

View File

@ -1,6 +1,7 @@
(ns status-im.ui.screens.desktop.main.tabs.profile.views
(:require-macros [status-im.utils.views :as views])
(:require [re-frame.core :as re-frame]
[status-im.utils.keychain :as keychain]
[status-im.ui.components.react :as react]
[status-im.ui.screens.profile.user.views :as profile]))
@ -35,7 +36,9 @@
[react/view
[my-profile-info current-account]]
[react/view {:style {:height 1 :background-color "#e8ebec" :margin-horizontal 16}}]
[react/touchable-highlight {:on-press #(re-frame/dispatch [:logout])
[react/touchable-highlight {:on-press #(keychain/get-encryption-key-then
(fn [encryption-key]
(re-frame/dispatch [:logout encryption-key])))
:style {:margin-top 60}}
[react/view
[react/text {:style {:color :red}} "Log out"]]]]))

View File

@ -43,6 +43,7 @@
[status-im.utils.handlers-macro :as handlers-macro]
[status-im.utils.http :as http]
[status-im.utils.instabug :as instabug]
[status-im.utils.keychain :as keychain]
[status-im.utils.mixpanel :as mixpanel]
[status-im.utils.platform :as platform]
[status-im.utils.types :as types]
@ -126,13 +127,25 @@
(re-frame/reg-fx
::init-store
(fn []
(data-store/init)))
(fn [encryption-key]
(data-store/init encryption-key)))
(defn move-to-internal-storage [config]
(status/move-to-internal-storage
#(status/start-node config)))
(re-frame/reg-fx
::initialize-keychain-fx
(fn []
(keychain/get-encryption-key-then
(fn [encryption-key]
(re-frame/dispatch [:initialize-app encryption-key])))))
(re-frame/reg-fx
::got-encryption-key-fx
(fn [{:keys [encryption-key callback]}]
(callback encryption-key)))
(re-frame/reg-fx
:initialize-geth-fx
(fn [config]
@ -201,10 +214,20 @@
(assoc-in db path v)))
(handlers/register-handler-fx
:initialize-app
:initialize-keychain
(fn [_ _]
{::initialize-keychain-fx nil}))
(handlers/register-handler-fx
:got-encryption-key
(fn [_ [_ opts]]
{::got-encryption-key-fx opts}))
(handlers/register-handler-fx
:initialize-app
(fn [_ [_ encryption-key]]
{::testfairy-alert nil
:dispatch-n [[:initialize-db]
:dispatch-n [[:initialize-db encryption-key]
[:load-accounts]
[:initialize-views]
[:listen-to-network-status]
@ -212,11 +235,11 @@
(handlers/register-handler-fx
:logout
(fn [{:keys [db] :as cofx} _]
(fn [{:keys [db] :as cofx} [_ encryption-key]]
(let [{:transport/keys [chats]} db
sharing-usage-data? (get-in db [:account/account :sharing-usage-data?])]
(handlers-macro/merge-fx cofx
{:dispatch-n (concat [[:initialize-db]
{:dispatch-n (concat [[:initialize-db encryption-key]
[:load-accounts]
[:listen-to-network-status]
[:navigate-to :accounts]]
@ -228,8 +251,9 @@
:initialize-db
(fn [{{:keys [status-module-initialized? status-node-started?
network-status network]
:or {network (get app-db :network)}} :db} _]
{::init-store nil
:or {network (get app-db :network)}} :db}
[_ encryption-key]]
{::init-store encryption-key
:db (assoc app-db
:contacts/contacts {}
:network-status network-status

View File

@ -16,6 +16,7 @@
[status-im.ui.screens.profile.user.styles :as styles]
[status-im.utils.build :as build]
[status-im.utils.config :as config]
[status-im.utils.keychain :as keychain]
[status-im.utils.platform :as platform]
[status-im.utils.utils :as utils]
[status-im.ui.components.icons.vector-icons :as icons]
@ -90,7 +91,9 @@
(defn- handle-logout []
(utils/show-confirmation (i18n/label :t/logout-title)
(i18n/label :t/logout-are-you-sure)
(i18n/label :t/logout) #(re-frame/dispatch [:logout])))
(i18n/label :t/logout) #(keychain/get-encryption-key-then
(fn [encryption-key]
(re-frame/dispatch [:logout encryption-key])))))
(defn- my-profile-settings [{:keys [seed-backed-up? mnemonic]} sharing-usage-data?]
(let [show-backup-seed? (and (not seed-backed-up?) (not (string/blank? mnemonic)))]

View File

@ -0,0 +1,48 @@
(ns status-im.utils.keychain
(:require [re-frame.core :as re-frame]
[taoensso.timbre :as log]
[status-im.react-native.js-dependencies :as rn]))
(def key-bytes 64)
(def username "status-im.encryptionkey")
(defn- encryption-key-fetch [{:keys [resolve reject]}]
(-> (.getGenericPassword rn/keychain)
(.then
(fn [res]
(if (not res)
(when reject
(reject))
(let [encryption-key (.parse js/JSON (.-password res))]
(log/debug "Found existing encryption key!")
(re-frame/dispatch [:got-encryption-key {:encryption-key encryption-key
:callback resolve}])))))
(.catch
(fn [err]
(log/debug err)))))
(defn encryption-key-reset []
(log/debug "Resetting key...")
(-> (.resetGenericPassword rn/keychain)))
(defn get-encryption-key-then [callback]
(log/debug "Initializing realm encryption key...")
(encryption-key-fetch {:resolve callback
:reject (fn []
(log/debug "No key exists, creating...")
(-> (rn/secure-random key-bytes)
(.then
(fn [encryption-key]
(-> (.setGenericPassword
rn/keychain
username
(.stringify js/JSON (.from js/Array encryption-key)))
(.then
(fn [res]
(encryption-key-fetch {:resolve callback})))
(.catch
(fn [err]
(log/debug err))))))
(.catch
(fn [err]
(log/debug err)))))}))