{"id":26330714,"url":"https://github.com/jerson/flutter-rsa","last_synced_at":"2025-04-06T01:06:00.148Z","repository":{"id":38447489,"uuid":"242208986","full_name":"jerson/flutter-rsa","owner":"jerson","description":"RSA for flutter made with golang for fast performance with support for android, ios, macos, linux, windows, web and hover","archived":false,"fork":false,"pushed_at":"2025-03-15T17:51:28.000Z","size":339376,"stargazers_count":82,"open_issues_count":14,"forks_count":24,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-30T00:05:04.010Z","etag":null,"topics":["android","decrypt","encrypt","flutter","golang","ios","jwk","linux","macos","oaep","pem","pkcs1","pkcs8","pkix","pss","rsa","sign","web","xcode"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/fast_rsa","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jerson.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"jerson","patreon":"jerson","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":"https://paypal.me/gpardogamez"}},"created_at":"2020-02-21T18:51:37.000Z","updated_at":"2025-03-15T17:50:40.000Z","dependencies_parsed_at":"2024-01-12T15:48:32.350Z","dependency_job_id":"580af09e-4e69-49ac-bfc5-cd181f12159d","html_url":"https://github.com/jerson/flutter-rsa","commit_stats":{"total_commits":290,"total_committers":7,"mean_commits":41.42857142857143,"dds":"0.11724137931034484","last_synced_commit":"1686db5636b54d7ea2777db3e1d55deef887fbb6"},"previous_names":[],"tags_count":85,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerson%2Fflutter-rsa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerson%2Fflutter-rsa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerson%2Fflutter-rsa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerson%2Fflutter-rsa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jerson","download_url":"https://codeload.github.com/jerson/flutter-rsa/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247419859,"owners_count":20936012,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","decrypt","encrypt","flutter","golang","ios","jwk","linux","macos","oaep","pem","pkcs1","pkcs8","pkix","pss","rsa","sign","web","xcode"],"created_at":"2025-03-15T22:17:08.890Z","updated_at":"2025-04-06T01:06:00.128Z","avatar_url":"https://github.com/jerson.png","language":"Dart","readme":"# Fast RSA\n\nLibrary for use RSA with support for android, ios, macos, windows, linux and web\n\n[![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)\n\n[![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)\n\n[![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)\n\n[![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)\n\n[![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)\n\n## Contents\n\n- [Fast RSA](#fast-rsa)\n  - [Contents](#contents)\n  - [Usage](#usage)\n    - [Async methods](#async-methods)\n    - [Sync methods](#sync-methods)\n  - [Setup](#setup)\n    - [Android](#android)\n    - [iOS](#ios)\n    - [Web](#web)\n    - [MacOS](#macos)\n    - [Linux](#linux)\n    - [Windows](#windows)\n  - [Example](#example)\n  - [Native Code](#native-code)\n\n## Usage\n\n### Async Methods\n\n#### Encrypt methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa.dart';\n\nvar result = await RSA.encryptOAEP(message, label, Hash.HASH_SHA256, publicKey)\nvar result = await RSA.encryptPKCS1v15(message, publicKey)\n\nvar result = await RSA.encryptOAEPBytes(messageBytes, label, Hash.SHA256, publicKey)\nvar result = await RSA.encryptPKCS1v15Bytes(messageBytes, publicKey)\n\n```\n\n#### Decrypt methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa.dart';\n\nvar result = await RSA.decryptOAEP(message, label, Hash.HASH_SHA256, privateKey)\nvar result = await RSA.decryptPKCS1v15(message, privateKey)\n\nvar result = await RSA.decryptOAEPBytes(messageBytes, label, Hash.SHA256, privateKey)\nvar result = await RSA.decryptPKCS1v15Bytes(messageBytes, privateKey)\n\n```\n\n#### Sign methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa.dart';\n\nvar result = await RSA.signPSS(message, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, privateKey)\nvar result = await RSA.signPKCS1v15(message, Hash.SHA256, privateKey)\n\nvar result = await RSA.signPSSBytes(messageBytes, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, privateKey)\nvar result = await RSA.signPKCS1v15Bytes(messageBytes, Hash.SHA256, privateKey)\n\n```\n\n#### Verify methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa.dart';\n\nvar result = await RSA.verifyPSS(signature, message, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, publicKey)\nvar result = await RSA.verifyPKCS1v15(signature, message, Hash.SHA256, publicKey)\n\nvar result = await RSA.verifyPSSBytes(signatureBytes, messageBytes, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, publicKey)\nvar result = await RSA.verifyPKCS1v15Bytes(signatureBytes, messageBytes, Hash.SHA256, publicKey)\n\n```\n\n#### Generate Methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa.dart';\n\nvar result = await RSA.generate(2048)\n\n```\n\n#### Convert Methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa.dart';\n\nvar result = await RSA.convertJWKToPrivateKey(data, keyId);\nvar result = await RSA.convertJWKToPublicKey(data, keyId);\n\nvar result = await RSA.convertKeyPairToPKCS12(privateKey, certificate, password);\nvar result = await RSA.convertPKCS12ToKeyPair(pkcs12, password);\n\nvar result = await RSA.convertPrivateKeyToPKCS8(privateKey);\nvar result = await RSA.convertPrivateKeyToPKCS1(privateKey);\nvar result = await RSA.convertPrivateKeyToJWK(privateKey);\n\nvar result = await RSA.convertPrivateKeyToPublicKey(privateKey);\n\nvar result = await RSA.convertPublicKeyToPKIX(publicKey);\nvar result = await RSA.convertPublicKeyToPKCS1(publicKey);\nvar result = await RSA.convertPublicKeyToJWK(publicKey);\n\nvar result = await RSA.encryptPrivateKey(privateKey, password, PEMCipher.PEMCIPHER_AES256);\nvar result = await RSA.decryptPrivateKey(privateKeyEncrypted, password);\n```\n\n#### Util Methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa.dart';\n\nvar result = await RSA.hash(message, Hash.SHA256);\nvar result = await RSA.base64(message);\n\n```\n\n### Sync Methods\n\n#### Encrypt methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa_sync.dart';\n\nvar result = RSASync.encryptOAEP(message, label, Hash.HASH_SHA256, publicKey);\nvar result = RSASync.encryptPKCS1v15(message, publicKey);\n\nvar result = RSASync.encryptOAEPBytes(messageBytes, label, Hash.SHA256, publicKey);\nvar result = RSASync.encryptPKCS1v15Bytes(messageBytes, publicKey);\n\n```\n\n#### Decrypt methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa_sync.dart';\n\nvar result = RSASync.decryptOAEP(message, label, Hash.HASH_SHA256, privateKey);\nvar result = RSASync.decryptPKCS1v15(message, privateKey);\n\nvar result = RSASync.decryptOAEPBytes(messageBytes, label, Hash.SHA256, privateKey);\nvar result = RSASync.decryptPKCS1v15Bytes(messageBytes, privateKey);\n\n```\n\n#### Sign methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa_sync.dart';\n\nvar result = RSASync.signPSS(message, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, privateKey);\nvar result = RSASync.signPKCS1v15(message, Hash.SHA256, privateKey);\n\nvar result = RSASync.signPSSBytes(messageBytes, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, privateKey);\nvar result = RSASync.signPKCS1v15Bytes(messageBytes, Hash.SHA256, privateKey);\n\n```\n\n#### Verify methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa_sync.dart';\n\nvar result = RSASync.verifyPSS(signature, message, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, publicKey);\nvar result = RSASync.verifyPKCS1v15(signature, message, Hash.SHA256, publicKey);\n\nvar result = RSASync.verifyPSSBytes(signatureBytes, messageBytes, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, publicKey);\nvar result = RSASync.verifyPKCS1v15Bytes(signatureBytes, messageBytes, Hash.SHA256, publicKey);\n\n```\n\n#### Generate Methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa_sync.dart';\n\nvar result = RSASync.generate(2048)\n\n```\n\n#### Convert Methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa_sync.dart';\n\nvar result = RSASync.convertJWKToPrivateKey(data, keyId);\nvar result = RSASync.convertJWKToPublicKey(data, keyId);\n\nvar result = RSASync.convertKeyPairToPKCS12(privateKey, certificate, password);\nvar result = RSASync.convertPKCS12ToKeyPair(pkcs12, password);\n\nvar result = RSASync.convertPrivateKeyToPKCS8(privateKey);\nvar result = RSASync.convertPrivateKeyToPKCS1(privateKey);\nvar result = RSASync.convertPrivateKeyToJWK(privateKey);\n\nvar result = RSASync.convertPrivateKeyToPublicKey(privateKey);\n\nvar result = RSASync.convertPublicKeyToPKIX(publicKey);\nvar result = RSASync.convertPublicKeyToPKCS1(publicKey);\nvar result = RSASync.convertPublicKeyToJWK(publicKey);\n\nvar result = RSASync.encryptPrivateKey(privateKey, password, PEMCipher.PEMCIPHER_AES256);\nvar result = RSASync.decryptPrivateKey(privateKeyEncrypted, password);\n```\n\n#### Util Methods\n\n```dart\nimport 'package:fast_rsa/fast_rsa_sync.dart';\n\nvar result = RSASync.hash(message, Hash.SHA256);\nvar result = RSASync.base64(message);\n\n```\n\n## Setup\n\n### Android\n\nNo additional setup required.\n\n### iOS\n\nNo additional setup required.\n\n### Web\n\nadd to you `pubspec.yaml`\n\n```yaml\nassets:\n  - packages/fast_rsa/web/assets/worker.js\n  - packages/fast_rsa/web/assets/wasm_exec.js\n  - packages/fast_rsa/web/assets/rsa.wasm\n```\n\nref: https://github.com/jerson/flutter-rsa/blob/master/example/pubspec.yaml\n\n### MacOS\n\nno additional setup required\n\n### Linux\n\nNo additional setup required.\n\n### Windows\n\nNo additional setup required.\n\n## Example\n\nInside example folder\n\n```bash\ncd example \u0026\u0026 flutter run\n```\n\ncheck our web demo: [https://flutter-rsa.jerson.dev/]\n\n## Native Code\n\nthe native library is made in Golang and build with gomobile for faster performance\n\nhttps://github.com/jerson/rsa-mobile\n","funding_links":["https://github.com/sponsors/jerson","https://patreon.com/jerson","https://paypal.me/gpardogamez"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerson%2Fflutter-rsa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjerson%2Fflutter-rsa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerson%2Fflutter-rsa/lists"}