Skip to content

jerson/flutter-rsa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7eb2252 · Apr 16, 2022
Mar 3, 2022
Mar 3, 2022
Apr 16, 2022
Mar 3, 2022
Mar 7, 2022
Apr 16, 2022
Mar 5, 2022
Mar 5, 2022
Aug 4, 2021
Mar 7, 2022
Mar 6, 2020
Mar 6, 2020
Apr 16, 2022
Mar 6, 2020
Feb 15, 2022
Feb 19, 2022
Feb 7, 2021
Mar 6, 2020
Feb 19, 2022
Mar 5, 2022
Apr 16, 2022

Repository files navigation

Fast RSA

Library for use RSA with support for android, ios, macos, windows, linux, web and hover

Integration Tests Android

Integration Tests Linux

Integration Tests Windows

Integration Tests iOS

Integration Tests macOS

Contents

Usage

Encrypt methods

import 'package:fast_rsa/fast_rsa.dart';

var result = await RSA.encryptOAEP(message, label, Hash.HASH_SHA256, publicKey)
var result = await RSA.encryptPKCS1v15(message, publicKey)

var result = await RSA.encryptOAEPBytes(messageBytes, label, Hash.HASH_SHA256, publicKey)
var result = await RSA.encryptPKCS1v15Bytes(messageBytes, publicKey)

Decrypt methods

import 'package:fast_rsa/fast_rsa.dart';

var result = await RSA.decryptOAEP(message, label, Hash.HASH_SHA256, privateKey)
var result = await RSA.decryptPKCS1v15(message, privateKey)

var result = await RSA.decryptOAEPBytes(messageBytes, label, Hash.HASH_SHA256, privateKey)
var result = await RSA.decryptPKCS1v15Bytes(messageBytes, privateKey)

Sign methods

import 'package:fast_rsa/fast_rsa.dart';

var result = await RSA.signPSS(message, Hash.HASH_SHA256, SaltLength.SALTLENGTH_AUTO, privateKey)
var result = await RSA.signPKCS1v15(message, Hash.HASH_SHA256, privateKey)

var result = await RSA.signPSSBytes(messageBytes, Hash.HASH_SHA256, SaltLength.SALTLENGTH_AUTO, privateKey)
var result = await RSA.signPKCS1v15Bytes(messageBytes, Hash.HASH_SHA256, privateKey)

Verify methods

import 'package:fast_rsa/fast_rsa.dart';

var result = await RSA.verifyPSS(signature, message, Hash.HASH_SHA256, SaltLength.SALTLENGTH_AUTO, publicKey)
var result = await RSA.verifyPKCS1v15(signature, message, Hash.HASH_SHA256, publicKey)

var result = await RSA.verifyPSSBytes(signatureBytes, messageBytes, Hash.HASH_SHA256, SaltLength.SALTLENGTH_AUTO, publicKey)
var result = await RSA.verifyPKCS1v15Bytes(signatureBytes, messageBytes, Hash.HASH_SHA256, publicKey)

Generate Methods

import 'package:fast_rsa/fast_rsa.dart';

var result = await RSA.generate(2048)

Convert Methods

import 'package:fast_rsa/fast_rsa.dart';

var result = await RSA.convertJWKToPrivateKey(data, keyId)
var result = await RSA.convertJWKToPublicKey(data, keyId)

var result = await RSA.convertKeyPairToPKCS12(privateKey, certificate, password)
var result = await RSA.convertPKCS12ToKeyPair(pkcs12, password)

var result = await RSA.convertPrivateKeyToPKCS8(privateKey)
var result = await RSA.convertPrivateKeyToPKCS1(privateKey)
var result = await RSA.convertPrivateKeyToJWK(privateKey)

var result = await RSA.convertPrivateKeyToPublicKey(privateKey)

var result = await RSA.convertPublicKeyToPKIX(publicKey)
var result = await RSA.convertPublicKeyToPKCS1(publicKey)
var result = await RSA.convertPublicKeyToJWK(publicKey)

var result = await RSA.encryptPrivateKey(privateKey, password, PEMCipher.PEMCIPHER_AES256)
var result = await RSA.decryptPrivateKey(privateKeyEncrypted, password)

Util Methods

import 'package:fast_rsa/fast_rsa.dart';

var result = await RSA.hash(message, Hash.HASH_SHA256)
var result = await RSA.base64(message)

Setup

Android

No additional setup required.

iOS

No additional setup required.

Web

add to you pubspec.yaml

assets:
  - packages/fast_rsa/web/assets/worker.js
  - packages/fast_rsa/web/assets/wasm_exec.js
  - packages/fast_rsa/web/assets/rsa.wasm

ref: https://github.com/jerson/flutter-rsa/blob/master/example/pubspec.yaml

MacOS

no additional setup required

Hover

Update your plugins.

hover plugins get

In you main_desktop.dart by now you need to add RSA.bindingEnabled = false in order to use channels instead of shared objects

import 'main.dart' as original_main;
import 'package:fast_rsa/fast_rsa.dart';

void main() {
  RSA.bindingEnabled = false;
  original_main.main();
}

Linux

No additional setup required.

Windows

No additional setup required.

Example

Inside example folder

cd example && flutter run

check our web demo: [https://flutter-rsa.jerson.dev/]

Native Code

the native library is made in Golang and build with gomobile for faster performance

https://github.com/jerson/rsa-mobile