about summary refs log tree commit diff
path: root/android/app/src/main/java/xyz
diff options
context:
space:
mode:
Diffstat (limited to 'android/app/src/main/java/xyz')
-rw-r--r--android/app/src/main/java/xyz/blueskyweb/pubsq/AppSecureRandomModule.java28
-rw-r--r--android/app/src/main/java/xyz/blueskyweb/pubsq/AppSecureRandomPackage.java26
-rw-r--r--android/app/src/main/java/xyz/blueskyweb/pubsq/MainApplication.java1
3 files changed, 55 insertions, 0 deletions
diff --git a/android/app/src/main/java/xyz/blueskyweb/pubsq/AppSecureRandomModule.java b/android/app/src/main/java/xyz/blueskyweb/pubsq/AppSecureRandomModule.java
new file mode 100644
index 000000000..96887c36f
--- /dev/null
+++ b/android/app/src/main/java/xyz/blueskyweb/pubsq/AppSecureRandomModule.java
@@ -0,0 +1,28 @@
+package xyz.blueskyweb.pubsq;
+
+import com.facebook.react.bridge.ReactApplicationContext;
+import com.facebook.react.bridge.ReactContextBaseJavaModule;
+import com.facebook.react.bridge.ReactMethod;
+import com.facebook.react.bridge.Promise;
+
+import java.security.SecureRandom;
+import android.util.Base64;
+
+public class AppSecureRandomModule extends ReactContextBaseJavaModule {
+  public AppSecureRandomModule(ReactApplicationContext context) {
+    super(context);
+  }
+
+  @ReactMethod
+  public void generateSecureRandomAsBase64(int length, Promise promise) {
+    SecureRandom secureRandom = new SecureRandom();
+    byte[] buffer = new byte[length];
+    secureRandom.nextBytes(buffer);
+    promise.resolve(Base64.encodeToString(buffer, Base64.NO_WRAP));
+  }
+
+  @Override
+  public String getName() {
+    return "AppSecureRandomModule";
+  }
+}
diff --git a/android/app/src/main/java/xyz/blueskyweb/pubsq/AppSecureRandomPackage.java b/android/app/src/main/java/xyz/blueskyweb/pubsq/AppSecureRandomPackage.java
new file mode 100644
index 000000000..1fd650747
--- /dev/null
+++ b/android/app/src/main/java/xyz/blueskyweb/pubsq/AppSecureRandomPackage.java
@@ -0,0 +1,26 @@
+package xyz.blueskyweb.pubsq;
+
+import com.facebook.react.ReactPackage;
+import com.facebook.react.bridge.NativeModule;
+import com.facebook.react.bridge.ReactApplicationContext;
+import com.facebook.react.uimanager.ViewManager;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class AppSecureRandomPackage implements ReactPackage {
+
+  @Override
+  public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
+      return Collections.emptyList();
+  }
+
+  @Override
+  public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
+    List<NativeModule> modules = new ArrayList<>();
+    modules.add(new AppSecureRandomModule(reactContext));
+    return modules;
+  }
+
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/xyz/blueskyweb/pubsq/MainApplication.java b/android/app/src/main/java/xyz/blueskyweb/pubsq/MainApplication.java
index abd0f1640..8c554a480 100644
--- a/android/app/src/main/java/xyz/blueskyweb/pubsq/MainApplication.java
+++ b/android/app/src/main/java/xyz/blueskyweb/pubsq/MainApplication.java
@@ -28,6 +28,7 @@ public class MainApplication extends Application implements ReactApplication {
           List<ReactPackage> packages = new PackageList(this).getPackages();
           // Packages that cannot be autolinked yet can be added manually here, for example:
           // packages.add(new MyReactNativePackage());
+          packages.add(new AppSecureRandomPackage());
           return packages;
         }