{"id":26330715,"url":"https://github.com/jerson/flutter-openpgp","last_synced_at":"2025-04-06T01:06:07.727Z","repository":{"id":38399661,"uuid":"241793475","full_name":"jerson/flutter-openpgp","owner":"jerson","description":"OpenPGP 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:48.000Z","size":416049,"stargazers_count":70,"open_issues_count":13,"forks_count":24,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-30T00:05:06.735Z","etag":null,"topics":["android","dart","ecc","ecdsa","echd","eddsa","flutter","generate","golang","ios","linux","macos","openpgp","pgp","sign","verify","web","windows","xcode"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/openpgp","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-20T04:32:32.000Z","updated_at":"2025-03-21T17:01:03.000Z","dependencies_parsed_at":"2024-05-20T02:43:14.358Z","dependency_job_id":"ceb2a317-b48f-4324-83e7-42fdad2ec304","html_url":"https://github.com/jerson/flutter-openpgp","commit_stats":{"total_commits":316,"total_committers":8,"mean_commits":39.5,"dds":0.1613924050632911,"last_synced_commit":"5b7f652751b79c58bdedb96e07b1e07550b93c07"},"previous_names":[],"tags_count":92,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerson%2Fflutter-openpgp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerson%2Fflutter-openpgp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerson%2Fflutter-openpgp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerson%2Fflutter-openpgp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jerson","download_url":"https://codeload.github.com/jerson/flutter-openpgp/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","dart","ecc","ecdsa","echd","eddsa","flutter","generate","golang","ios","linux","macos","openpgp","pgp","sign","verify","web","windows","xcode"],"created_at":"2025-03-15T22:17:09.059Z","updated_at":"2025-04-06T01:06:07.711Z","avatar_url":"https://github.com/jerson.png","language":"Dart","readme":"# OpenPGP\n\nLibrary for use openPGP with support for android, ios, macos, windows, linux and web\n\n[![Integration Tests Android](https://github.com/jerson/flutter-openpgp/actions/workflows/tests_android.yml/badge.svg)](https://github.com/jerson/flutter-openpgp/actions/workflows/tests_android.yml)\n\n[![Integration Tests Linux](https://github.com/jerson/flutter-openpgp/actions/workflows/tests_linux.yml/badge.svg)](https://github.com/jerson/flutter-openpgp/actions/workflows/tests_linux.yml)\n\n[![Integration Tests Windows](https://github.com/jerson/flutter-openpgp/actions/workflows/tests_windows.yml/badge.svg)](https://github.com/jerson/flutter-openpgp/actions/workflows/tests_windows.yml)\n\n[![Integration Tests iOS](https://github.com/jerson/flutter-openpgp/actions/workflows/tests_ios.yml/badge.svg)](https://github.com/jerson/flutter-openpgp/actions/workflows/tests_ios.yml)\n\n[![Integration Tests macOS](https://github.com/jerson/flutter-openpgp/actions/workflows/tests_macos.yml/badge.svg)](https://github.com/jerson/flutter-openpgp/actions/workflows/tests_macos.yml)\n## Contents\n \n- [OpenPGP](#openpgp)\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  - [Upgrade Library](#upgrade-library)\n  - [Tests](#tests)\n\n## Usage\n\n### Async methods\n\n#### Generate methods\n```dart\n\nvoid main() async {\n    var keyOptions = KeyOptions()..rsaBits = 2048;\n    var keyPair = await OpenPGP.generate(\n            options: Options()\n              ..name = 'test'\n              ..email = 'test@test.com'\n              ..passphrase = passphrase\n              ..keyOptions = keyOptions);\n}\n```\n\n#### Encrypt methods\n\n```dart\n\nvoid main() async {\n    var bytesSample = Uint8List.fromList('data'.codeUnits);\n    \n    var result = await OpenPGP.encrypt(\"text\",\"[publicKey here]\");\n    var result = await OpenPGP.encryptSymmetric(\"text\",\"[passphrase here]\");\n    var result = await OpenPGP.encryptBytes(bytesSample,\"[publicKey here]\");\n    var result = await OpenPGP.encryptSymmetricBytes(bytesSample,\"[passphrase here]\");\n\n}\n\n```\n\n#### Decrypt methods\n\n```dart\n\nvoid main() async {\n    var bytesSample = Uint8List.fromList('data'.codeUnits);\n    \n    var result = await OpenPGP.decrypt(\"text encrypted\",\"[privateKey here]\",\"[passphrase here]\");\n    var result = await OpenPGP.decryptSymmetric(\"text encrypted\",\"[passphrase here]\");\n    var result = await OpenPGP.decryptBytes(bytesSample,\"[privateKey here]\",\"[passphrase here]\");\n    var result = await OpenPGP.decryptSymmetricBytes(bytesSample,\"[passphrase here]\");\n\n}\n```\n\n#### Sign methods\n\n```dart\n\nvoid main() async {\n    var bytesSample = Uint8List.fromList('data'.codeUnits);\n    \n    var result = await OpenPGP.sign(\"text\",\"[privateKey here]\",\"[passphrase here]\");\n    var result = await OpenPGP.signBytesToString(bytesSample,\"[privateKey here]\",\"[passphrase here]\");\n    \n    // sign including data\n    var result = await OpenPGP.signData(\"text\",\"[privateKey here]\",\"[passphrase here]\");\n    var result = await OpenPGP.signDataBytesToString(bytesSample,\"[privateKey here]\",\"[passphrase here]\");\n\n}\n\n```\n\n#### Verify methods\n\n```dart\n\nvoid main() async {\n    var bytesSample = Uint8List.fromList('data'.codeUnits);\n    \n    var result = await OpenPGP.verify(\"text signed\",\"text\",\"[publicKey here]\");\n    var result = await OpenPGP.verifyBytes(\"text signed\", bytesSample,\"[publicKey here]\");\n    \n    // verify signed with data\n    var result = await OpenPGP.verifyData(\"text signed\",\"[publicKey here]\");\n    var result = await OpenPGP.verifyDataBytes(bytesSample,\"[publicKey here]\");\n\n}\n\n```\n\n#### Encode methods\n\n```dart\n\nvoid main() async {\n    var bytesSample = Uint8List.fromList('data'.codeUnits);\n    \n    var result = await OpenPGP.armorEncode(\"PGP MESSAGE\", bytesSample);\n}\n\n```\n#### Decode methods\n\n```dart\n\nvoid main() async {    \n    var result = await OpenPGP.armorDecode(\"message here\");\n}\n\n```\n\n\n#### Metadata methods\n\n```dart\n\nvoid main() async {\n    var result = await OpenPGP.getPrivateKeyMetadata(\"[privateKey here]\");\n    var result = await OpenPGP.getPublicKeyMetadata(\"[publicKey here]\");\n}\n\n```\n\n\n#### Convert methods\n\n```dart\n\nvoid main() async {\n    var result = await OpenPGP.convertPrivateKeyToPublicKey(\"[privateKey here]\");\n}\n\n```\n\n### Sync methods\n\n#### Generate methods\n```dart\n\nvoid main() {\n    var keyOptions = KeyOptions()..rsaBits = 2048;\n    var keyPair = OpenPGPSync.generate(\n            options: Options()\n              ..name = 'test'\n              ..email = 'test@test.com'\n              ..passphrase = passphrase\n              ..keyOptions = keyOptions);\n}\n```\n\n#### Encrypt methods\n\n```dart\n\nvoid main() async {\n    var bytesSample = Uint8List.fromList('data'.codeUnits);\n    \n    var result = OpenPGPSync.encrypt(\"text\",\"[publicKey here]\");\n    var result = OpenPGPSync.encryptSymmetric(\"text\",\"[passphrase here]\");\n    var result = OpenPGPSync.encryptBytes(bytesSample,\"[publicKey here]\");\n    var result = OpenPGPSync.encryptSymmetricBytes(bytesSample,\"[passphrase here]\");\n\n}\n\n```\n\n#### Decrypt methods\n\n```dart\n\nvoid main() async {\n    var bytesSample = Uint8List.fromList('data'.codeUnits);\n    \n    var result = OpenPGPSync.decrypt(\"text encrypted\",\"[privateKey here]\",\"[passphrase here]\");\n    var result = OpenPGPSync.decryptSymmetric(\"text encrypted\",\"[passphrase here]\");\n    var result = OpenPGPSync.decryptBytes(bytesSample,\"[privateKey here]\",\"[passphrase here]\");\n    var result = OpenPGPSync.decryptSymmetricBytes(bytesSample,\"[passphrase here]\");\n\n}\n```\n\n#### Sign methods\n\n```dart\n\nvoid main() async {\n    var bytesSample = Uint8List.fromList('data'.codeUnits);\n    \n    var result = OpenPGPSync.sign(\"text\",\"[privateKey here]\",\"[passphrase here]\");\n    var result = OpenPGPSync.signBytesToString(bytesSample,\"[privateKey here]\",\"[passphrase here]\");\n    \n    // sign including data\n    var result = OpenPGPSync.signData(\"text\",\"[privateKey here]\",\"[passphrase here]\");\n    var result = OpenPGPSync.signDataBytesToString(bytesSample,\"[privateKey here]\",\"[passphrase here]\");\n\n}\n\n```\n\n#### Verify methods\n\n```dart\n\nvoid main() async {\n    var bytesSample = Uint8List.fromList('data'.codeUnits);\n    \n    var result = OpenPGPSync.verify(\"text signed\",\"text\",\"[publicKey here]\");\n    var result = OpenPGPSync.verifyBytes(\"text signed\", bytesSample,\"[publicKey here]\");\n    \n    // verify signed with data\n    var result = OpenPGPSync.verifyData(\"text signed\",\"[publicKey here]\");\n    var result = OpenPGPSync.verifyDataBytes(bytesSample,\"[publicKey here]\");\n\n}\n\n```\n\n#### Encode methods\n\n```dart\n\nvoid main() async {\n    var bytesSample = Uint8List.fromList('data'.codeUnits);\n    \n    var result = OpenPGPSync.armorEncode(\"PGP MESSAGE\", bytesSample);\n}\n\n```\n#### Decode methods\n\n```dart\n\nvoid main() async {    \n    var result = OpenPGPSync.armorDecode(\"message here\");\n}\n\n```\n\n\n#### Metadata methods\n\n```dart\n\nvoid main() async {\n    var result = OpenPGPSync.getPrivateKeyMetadata(\"[privateKey here]\");\n    var result = OpenPGPSync.getPublicKeyMetadata(\"[publicKey here]\");\n}\n\n```\n\n\n#### Convert methods\n\n```dart\n\nvoid main() async {\n    var result = OpenPGPSync.convertPrivateKeyToPublicKey(\"[privateKey here]\");\n}\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/openpgp/web/assets/worker.js\n    - packages/openpgp/web/assets/wasm_exec.js\n    - packages/openpgp/web/assets/openpgp.wasm\n```\n\nref: https://github.com/jerson/flutter-openpgp/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-openpgp.jerson.dev/]\n\n## Native Code\n\nNative library is made in `Go` for faster performance.\n\n[https://github.com/jerson/openpgp-mobile]\n\n## Upgrade Library\n\nYou need to run \n```bash\nmake upgrade\n```\n\n## Tests\n\nYou need to run \n```bash\nmake test\n```\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-openpgp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjerson%2Fflutter-openpgp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerson%2Fflutter-openpgp/lists"}