Skip to content

Commit c2b7f3b

Browse files
committed
Merge branch 'master' of git://github.com/cjthompson/react-native-simple-crypto
2 parents 1f2d4b4 + ac5e581 commit c2b7f3b

19 files changed

Lines changed: 181 additions & 166 deletions

File tree

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,11 @@ All methods are asynchronous and return promises (except for convert utils)
8383
- decrypt(cipherText: ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer)
8484
- SHA
8585
- sha1(text: string)
86+
- sha1(text: ArrayBuffer)
8687
- sha256(text: string)
88+
- sha256(text: ArrayBuffer)
8789
- sha512(text: string)
90+
- sha512(text: ArrayBuffer)
8891
- HMAC
8992
- hmac256(text: ArrayBuffer, key: ArrayBuffer)
9093
- PBKDF2
@@ -163,6 +166,13 @@ console.log("SHA256 hash", sha256Hash);
163166
const sha512Hash = await RNSimpleCrypto.SHA.sha1("test");
164167
console.log("SHA512 hash", sha512Hash);
165168

169+
const dataToHash = await RNSimpleCrypto.utils.randomBytes(64);
170+
const sha1ArrayBuffer = await RNSimpleCrypto.SHA.sha1(dataToHash);
171+
console.log('SHA256 hash bytes', [...sha1ArrayBuffer]);
172+
173+
const sha256ArrayBuffer = await RNSimpleCrypto.SHA.sha256(dataToHash);
174+
console.log('SHA256 hash bytes', [...sha256ArrayBuffer]);
175+
166176
// -- PBKDF2 ---------------------------------------------------------- //
167177

168178
const password = "secret password";
-1.04 KB
Binary file not shown.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Wed Oct 31 17:20:33 PDT 2018
1+
#Mon Apr 13 18:24:21 MDT 2020
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

android/src/main/java/org/walletconnect/crypto/RCTAes.java renamed to android/src/main/java/com/pedrouid/crypto/RCTAes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ private static String encrypt(String textBase64, String hexKey, String hexIv) th
126126

127127
Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
128128
cipher.init(Cipher.ENCRYPT_MODE, secretKey, hexIv == null ? emptyIvSpec : new IvParameterSpec(Hex.decode(hexIv)));
129-
byte [] textBytes = Base64.getEncoder().decode(textBase64);
129+
byte [] textBytes = java.util.Base64.getDecoder().decode(textBase64);
130130
byte[] encrypted = cipher.doFinal(textBytes);
131131
return Base64.encodeToString(encrypted, Base64.NO_WRAP);
132132
}
@@ -142,7 +142,7 @@ private static String decrypt(String ciphertext, String hexKey, String hexIv) th
142142
Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
143143
cipher.init(Cipher.DECRYPT_MODE, secretKey, hexIv == null ? emptyIvSpec : new IvParameterSpec(Hex.decode(hexIv)));
144144
byte[] decrypted = cipher.doFinal(Base64.decode(ciphertext, Base64.NO_WRAP));
145-
return Base64.encodeToString(decrypted, Base64.NO_WRAP)
145+
return Base64.encodeToString(decrypted, Base64.NO_WRAP);
146146
}
147147

148148
}

android/src/main/java/org/walletconnect/crypto/RCTCryptoPackage.java renamed to android/src/main/java/com/pedrouid/crypto/RCTCryptoPackage.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.ArrayList;
44
import java.util.Collections;
55
import java.util.List;
6+
import java.util.Arrays;
67

78
import com.facebook.react.ReactPackage;
89
import com.facebook.react.bridge.JavaScriptModule;

android/src/main/java/org/walletconnect/crypto/RCTHmac.java renamed to android/src/main/java/com/pedrouid/crypto/RCTHmac.java

File renamed without changes.

android/src/main/java/org/walletconnect/crypto/RCTPbkdf2.java renamed to android/src/main/java/com/pedrouid/crypto/RCTPbkdf2.java

File renamed without changes.

android/src/main/java/org/walletconnect/crypto/RCTRsa.java renamed to android/src/main/java/com/pedrouid/crypto/RCTRsa.java

File renamed without changes.

android/src/main/java/org/walletconnect/crypto/RCTSha.java renamed to android/src/main/java/com/pedrouid/crypto/RCTSha.java

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
import java.io.IOException;
66
import java.security.SecureRandom;
7+
import java.util.Arrays;
8+
import java.util.ArrayList;
79
import java.util.HashMap;
810
import java.util.Map;
911

@@ -29,7 +31,6 @@
2931
import org.spongycastle.crypto.digests.SHA224Digest;
3032
import org.spongycastle.crypto.digests.SHA256Digest;
3133
import org.spongycastle.crypto.digests.SHA384Digest;
32-
import org.spongycastle.crypto.digests.SHA384Digest;
3334
import org.spongycastle.crypto.digests.SHA512Digest;
3435
import org.spongycastle.crypto.generators.PKCS5S2ParametersGenerator;
3536
import org.spongycastle.crypto.PBEParametersGenerator;
@@ -52,46 +53,43 @@ public RCTSha(ReactApplicationContext reactContext) {
5253
super(reactContext);
5354
}
5455

56+
private static ArrayList<String> algorithms = new ArrayList<String>(
57+
Arrays.asList("SHA-1",
58+
"SHA-256",
59+
"SHA-512"));
60+
5561
@Override
5662
public String getName() {
5763
return "RCTSha";
5864
}
5965

60-
@ReactMethod
61-
public void sha256(String data, Promise promise) {
62-
try {
63-
String result = shaX(data, "SHA-256");
64-
promise.resolve(result);
65-
} catch (Exception e) {
66-
promise.reject("-1", e.getMessage());
66+
private byte[] sha(byte[] data, String algorithm) throws Exception {
67+
if (!algorithms.contains(algorithm)) {
68+
throw new Exception("Invalid algorithm");
6769
}
70+
71+
MessageDigest md = MessageDigest.getInstance(algorithm);
72+
md.update(data);
73+
return md.digest();
6874
}
6975

7076
@ReactMethod
71-
public void sha1(String data, Promise promise) {
77+
public void shaBase64(String data, String algorithm, Promise promise) throws Exception {
7278
try {
73-
String result = shaX(data, "SHA-1");
74-
promise.resolve(result);
79+
byte[] digest = this.sha(Base64.decode(data, Base64.NO_WRAP), algorithm);
80+
promise.resolve(Base64.encodeToString(digest, Base64.NO_WRAP));
7581
} catch (Exception e) {
7682
promise.reject("-1", e.getMessage());
7783
}
7884
}
7985

8086
@ReactMethod
81-
public void sha512(String data, Promise promise) {
87+
public void shaUtf8(String data, String algorithm, Promise promise) throws Exception {
8288
try {
83-
String result = shaX(data, "SHA-512");
84-
promise.resolve(result);
89+
byte[] digest = data.getBytes();
90+
promise.resolve(Base64.encodeToString(digest, Base64.DEFAULT));
8591
} catch (Exception e) {
8692
promise.reject("-1", e.getMessage());
8793
}
8894
}
89-
90-
private String shaX(String data, String algorithm) throws Exception {
91-
MessageDigest md = MessageDigest.getInstance(algorithm);
92-
md.update(data.getBytes());
93-
byte[] digest = md.digest();
94-
95-
return Base64.encodeToString(digest, Base64.DEFAULT);
96-
}
9795
}
File renamed without changes.

0 commit comments

Comments
 (0)