An open API service indexing awesome lists of open source software.

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

RSA for flutter made with golang for fast performance with support for android, ios, macos, linux, windows, web and hover
https://github.com/jerson/flutter-rsa

android decrypt encrypt flutter golang ios jwk linux macos oaep pem pkcs1 pkcs8 pkix pss rsa sign web xcode

Last synced: 10 months ago
JSON representation

RSA for flutter made with golang for fast performance with support for android, ios, macos, linux, windows, web and hover

Awesome Lists containing this project

README

          

# Fast RSA

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

[![Integration Tests Android](https://github.com/jerson/flutter-rsa/actions/workflows/tests_android.yml/badge.svg)](https://github.com/jerson/flutter-rsa/actions/workflows/tests_android.yml)

[![Integration Tests Linux](https://github.com/jerson/flutter-rsa/actions/workflows/tests_linux.yml/badge.svg)](https://github.com/jerson/flutter-rsa/actions/workflows/tests_linux.yml)

[![Integration Tests Windows](https://github.com/jerson/flutter-rsa/actions/workflows/tests_windows.yml/badge.svg)](https://github.com/jerson/flutter-rsa/actions/workflows/tests_windows.yml)

[![Integration Tests iOS](https://github.com/jerson/flutter-rsa/actions/workflows/tests_ios.yml/badge.svg)](https://github.com/jerson/flutter-rsa/actions/workflows/tests_ios.yml)

[![Integration Tests macOS](https://github.com/jerson/flutter-rsa/actions/workflows/tests_macos.yml/badge.svg)](https://github.com/jerson/flutter-rsa/actions/workflows/tests_macos.yml)

## Contents

- [Fast RSA](#fast-rsa)
- [Contents](#contents)
- [Usage](#usage)
- [Async methods](#async-methods)
- [Sync methods](#sync-methods)
- [Setup](#setup)
- [Android](#android)
- [iOS](#ios)
- [Web](#web)
- [MacOS](#macos)
- [Linux](#linux)
- [Windows](#windows)
- [Example](#example)
- [Native Code](#native-code)

## Usage

### Async Methods

#### Encrypt methods

```dart
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.SHA256, publicKey)
var result = await RSA.encryptPKCS1v15Bytes(messageBytes, publicKey)

```

#### Decrypt methods

```dart
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.SHA256, privateKey)
var result = await RSA.decryptPKCS1v15Bytes(messageBytes, privateKey)

```

#### Sign methods

```dart
import 'package:fast_rsa/fast_rsa.dart';

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

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

```

#### Verify methods

```dart
import 'package:fast_rsa/fast_rsa.dart';

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

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

```

#### Generate Methods

```dart
import 'package:fast_rsa/fast_rsa.dart';

var result = await RSA.generate(2048)

```

#### Convert Methods

```dart
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

```dart
import 'package:fast_rsa/fast_rsa.dart';

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

```

### Sync Methods

#### Encrypt methods

```dart
import 'package:fast_rsa/fast_rsa_sync.dart';

var result = RSASync.encryptOAEP(message, label, Hash.HASH_SHA256, publicKey);
var result = RSASync.encryptPKCS1v15(message, publicKey);

var result = RSASync.encryptOAEPBytes(messageBytes, label, Hash.SHA256, publicKey);
var result = RSASync.encryptPKCS1v15Bytes(messageBytes, publicKey);

```

#### Decrypt methods

```dart
import 'package:fast_rsa/fast_rsa_sync.dart';

var result = RSASync.decryptOAEP(message, label, Hash.HASH_SHA256, privateKey);
var result = RSASync.decryptPKCS1v15(message, privateKey);

var result = RSASync.decryptOAEPBytes(messageBytes, label, Hash.SHA256, privateKey);
var result = RSASync.decryptPKCS1v15Bytes(messageBytes, privateKey);

```

#### Sign methods

```dart
import 'package:fast_rsa/fast_rsa_sync.dart';

var result = RSASync.signPSS(message, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, privateKey);
var result = RSASync.signPKCS1v15(message, Hash.SHA256, privateKey);

var result = RSASync.signPSSBytes(messageBytes, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, privateKey);
var result = RSASync.signPKCS1v15Bytes(messageBytes, Hash.SHA256, privateKey);

```

#### Verify methods

```dart
import 'package:fast_rsa/fast_rsa_sync.dart';

var result = RSASync.verifyPSS(signature, message, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, publicKey);
var result = RSASync.verifyPKCS1v15(signature, message, Hash.SHA256, publicKey);

var result = RSASync.verifyPSSBytes(signatureBytes, messageBytes, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, publicKey);
var result = RSASync.verifyPKCS1v15Bytes(signatureBytes, messageBytes, Hash.SHA256, publicKey);

```

#### Generate Methods

```dart
import 'package:fast_rsa/fast_rsa_sync.dart';

var result = RSASync.generate(2048)

```

#### Convert Methods

```dart
import 'package:fast_rsa/fast_rsa_sync.dart';

var result = RSASync.convertJWKToPrivateKey(data, keyId);
var result = RSASync.convertJWKToPublicKey(data, keyId);

var result = RSASync.convertKeyPairToPKCS12(privateKey, certificate, password);
var result = RSASync.convertPKCS12ToKeyPair(pkcs12, password);

var result = RSASync.convertPrivateKeyToPKCS8(privateKey);
var result = RSASync.convertPrivateKeyToPKCS1(privateKey);
var result = RSASync.convertPrivateKeyToJWK(privateKey);

var result = RSASync.convertPrivateKeyToPublicKey(privateKey);

var result = RSASync.convertPublicKeyToPKIX(publicKey);
var result = RSASync.convertPublicKeyToPKCS1(publicKey);
var result = RSASync.convertPublicKeyToJWK(publicKey);

var result = RSASync.encryptPrivateKey(privateKey, password, PEMCipher.PEMCIPHER_AES256);
var result = RSASync.decryptPrivateKey(privateKeyEncrypted, password);
```

#### Util Methods

```dart
import 'package:fast_rsa/fast_rsa_sync.dart';

var result = RSASync.hash(message, Hash.SHA256);
var result = RSASync.base64(message);

```

## Setup

### Android

No additional setup required.

### iOS

No additional setup required.

### Web

add to you `pubspec.yaml`

```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

### Linux

No additional setup required.

### Windows

No additional setup required.

## Example

Inside example folder

```bash
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