plugin_tozny 0.0.5 copy "plugin_tozny: ^0.0.5" to clipboard
plugin_tozny: ^0.0.5 copied to clipboard

Tozny flutter plugin to communicate with native SDKs.

plugin_tozny #

A work in progress flutter plugin for using Tozny's products such as TozStore and TozId to encrypt and secure data, applications, and identities.

Using #

Use in your Dart or Flutter project by adding plugin_tozny as a dependency in your pubspec file:

 plugin_tozny:
   git:
     url: git://github.com/tozny/flutter-plugin
     ref: 0.0.5

End-to-end TozId Identity Registration, Login, & TozStore encrypted filed storage example #

After creating a Realm (using all lowercase characters) and Registration Token, update the example values for realm_name and registration token below, and then you can run the following example function to register a new Identity for that Realm, login as that Identity, and encrypt and write data to TozStore.

import 'package:plugin_tozny/plugin_tozny.dart';
import 'package:plugin_tozny/plugin_identity.dart';
import 'package:plugin_tozny/plugin_realm.dart';
import 'package:plugin_tozny/tozny_model.dart';

void registerLoginStoreFileExample() async {
   RealmConfig realmConfig = new RealmConfig.fromJson({
     "realm_name": "example",
     "app_name": "account", // Only supported value at the moment
     "broker_target_url": "https://id.tozny.com/example/recover", // Default value in the form of https://<TozIdBaseURL>/<YourRealmName>/recover will use a Tozny Hosted broker compute function for password recovery flows
     "api_url": "https://api.e3db.com" // Default value for SaaS customers
   });
   var realmClient = PluginRealm(realmConfig);

   try {
     var username = 'example';
     var email = 'example@example.com'; // Note that username and password can be the same if the username is a valid email
     var password = 'StrongpassW0rd1!';
     var realmIdentity = await realmClient.register(
         username,
         password,
         '10a0cd84416e0950e345EXAMPLE813ec34a32ce1e9f76e3c192c932d2add', // Your Registration Token goes here
         email,
         'FirstName',
         'LastName',
         60);
     print("Registered Realm Identity ${realmIdentity.toJson().toString()}");

     try {
       var loggedInIdentity = await realmClient.login(username, password);
       print(
           "Logged  into Realm as Identity ${loggedInIdentity.config.toJson().toString()}");

       try {
         var absoluteFilePath = await writeExampleFile();
         var recordType = "android-gyroscope-sensor-data";
         var searchableRecordMetadata = {
           "sensor-category": "movement",
           "collection-timestamp": "1615146901",
           "anonymous-participant-id": "u-u-i-d",
         };
         var storedRecordDetails = await loggedInIdentity.client.writeFile(
             recordType, absoluteFilePath, searchableRecordMetadata);
         print("Wrote file Record ${storedRecordDetails.toJson().toString()}");

       } catch (e, s) {
         print(e);
         print(s);
       }
     } catch (e, s) {
       print(e);
       print(s);
     }
   } catch (e, s) {
     print(e);
     print(s);
   }
}

Future<String> writeExampleFile() async {
   final directory = await getApplicationDocumentsDirectory();
   var filename = "example.txt";
   final path = '${directory.path}/$filename';
   var file = new File(path);
   var sink = file.openWrite();
   sink.write('example');
   await sink.close();
   return file.absolute.path;
}

Running the example above after replacing the example values (realm name, registration token, username and email) will output text similar to the below to the emulator or device console:

I/flutter ( 6719): Registered Realm Identity {client_credentials: {api_key_id: fbd4b8EXAMPLE8b180a88435eec7c4e7e60e6873e820a9d, api_secret: b43de1815737df6c4EXAMPLE83ccf45991a0118c415ba3d0cd86735f, client_id: fa7da2d4-1486-41ab-8d68-accf01c27a3e, client_email: , public_key: xCNRuxVh-83qYV7WQ1EXAMPLLUygwN_-GbijgQ, private_key: yi_UZqiQ1BpYxF2X3i0kGjUmP3AmvkEXAMPL, public_signing_key: QI8-D-dl5y3bgl2CFUFIykfPJ0KaXdz505YPGpYRYeg, private_signing_key: kradKCZbLCVu0m61-rZILQtgEjqhVBRsW3MhilYLnG1Ajz4P52XnLduCXYIVQUjKR88nQppdEXAMPL, api_url: https://api.e3db.com}, identity_config: {api_url: , appName: null, broker_target_url: https://id.tozny.com/flutter/recover, realm_name: flutter, user_id: 1786, username: example2}}
I/flutter ( 6719): Logged  into Realm as Identity {client_credentials: {api_key_id: fbd4b81604971a8fa5977958c646EXAMPL7c4e7e60e6873e820a9d, api_secret: b43de1815737df6EXAMPELcf45991a0118c415ba3d0cd86735f, client_id: fa7da2d4-1486-41ab-8d68-accf01c27a3e, client_email: , public_key: xCNRuxVh-83EXAMPLCkLoLUygwN_-GbijgQ, private_key: yi_UZqiQ1BpYxF2X3i0kGjUmP3AmEXAMPL, public_signing_key: QI8-D-dl5y3bgl2CFUFIykfPJ0KaXdz505YPGpYRYeg, private_signing_key: kradKCZbLCVu0m61-rZILQtgEjqhVBRsW3MhilYLnG1Ajz4P52XnLduCXYIVQUjKR88nEXAMPL, api_url: https://api.e3db.com}, identity_config: {api_url: , appName: null, broker_target_url: https://id.tozny.com/flutter/recover, realm_name: flutter, user_id: 1786, username: example2}, user_agent_token: {access_token: eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJnTWlGYWVxMFZVRjFzN1NXTW90UzJEWU9nT0s1UC1zQ2N2UkZhcVV1N2EwIn0.eyJleHAiOjE2MTUxNjQ1NzIsImlhdCI6MTYxNTE2MDk3MiwiYXV0aF90aW1lIjoxNjE1MTYwOTcyLCJqdGkiOiI0NDI3MWRiMC00ZmFmLTQ0NzQtEXAMPL
I/flutter ( 6719): Wrote file Record {record_id: 0901582a-1ae2-4e42-8435-f74212ea86f8, writer_id: fa7da2d4-1486-41ab-8d68-accf01c27a3e, user_id: fa7da2d4-1486-41ab-8d68-accf01c27a3e, created: 2021-03-08T07:49:33.000Z, last_modified: 2021-03-08T07:49:33.000Z, version: 91af53ee-0575-4a73-bbc2-ee0803038f25, type: android-gyroscope-sensor-data, plain: {sensor-category: movement, anonymous-participant-id: u-u-i-d, collection-timestamp: 1615146901}, file: {file_url: null, file_name: 91b18cc7-cb08-4372-ac94-baab6cae31b4-1615160973, checksum: vwItq0yNXV2q/QzrhLd6Fw==, compression: RAW, size: null}}

Current Limitations #

  • Plugin implements a partial set of all the methods and classes provided by the native SDK (e3db-java/e3db-swift).
0
likes
80
pub points
0%
popularity

Publisher

unverified uploader

Tozny flutter plugin to communicate with native SDKs.

Repository (GitHub)
View/report issues

Documentation

API reference

License

unknown (LICENSE)

Dependencies

flutter, json_annotation, json_serializable, uuid

More

Packages that depend on plugin_tozny