{"id":28405584,"url":"https://github.com/simplito/privmx-endpoint-kotlin","last_synced_at":"2026-06-07T00:32:36.361Z","repository":{"id":295050314,"uuid":"906121930","full_name":"simplito/privmx-endpoint-kotlin","owner":"simplito","description":"Kotlin wrappers for the native C++ library used by PrivMX to handle end-to-end (e2e) encryption.","archived":false,"fork":false,"pushed_at":"2025-06-26T10:17:03.000Z","size":120648,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-26T11:18:32.170Z","etag":null,"topics":["communication","encryption","end-to-end-encryption","kotlin","kotlin-android","kotlin-ios","kotlin-jvm","kotlin-multiplatform-library","mobile","privmx","security"],"latest_commit_sha":null,"homepage":"https://privmx.dev","language":"Kotlin","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/simplito.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"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,"zenodo":null}},"created_at":"2024-12-20T08:00:18.000Z","updated_at":"2025-06-05T11:12:14.000Z","dependencies_parsed_at":"2025-06-26T18:32:07.330Z","dependency_job_id":null,"html_url":"https://github.com/simplito/privmx-endpoint-kotlin","commit_stats":null,"previous_names":["simplito/privmx-endpoint-kotlin"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/simplito/privmx-endpoint-kotlin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplito%2Fprivmx-endpoint-kotlin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplito%2Fprivmx-endpoint-kotlin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplito%2Fprivmx-endpoint-kotlin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplito%2Fprivmx-endpoint-kotlin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simplito","download_url":"https://codeload.github.com/simplito/privmx-endpoint-kotlin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplito%2Fprivmx-endpoint-kotlin/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262546799,"owners_count":23327034,"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":["communication","encryption","end-to-end-encryption","kotlin","kotlin-android","kotlin-ios","kotlin-jvm","kotlin-multiplatform-library","mobile","privmx","security"],"created_at":"2025-06-01T21:37:17.114Z","updated_at":"2025-10-23T20:02:10.264Z","avatar_url":"https://github.com/simplito.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PrivMX Endpoint Kotlin\n\nThis repository provides Kotlin wrappers for the native C++ library used by PrivMX to handle\nend-to-end (e2e) encryption.\n\nPrivMX is a privacy-focused platform designed to offer secure collaboration solutions by integrating\nrobust encryption across various data types and communication methods. This project enables seamless\nintegration of PrivMX’s encryption functionalities in Java/Kotlin applications, preserving the\nsecurity and performance of the original C++ library while making its capabilities accessible in the\nKotlin multiplatform projects.\n\n## About PrivMX\n\n[PrivMX](https://privmx.dev) allows developers to build end-to-end encrypted apps used for\ncommunication. The Platform works according to privacy-by-design mindset, so all of our solutions\nare based on Zero-Knowledge architecture. This project extends PrivMX’s commitment to security by\nmaking its encryption features accessible to developers using Java/Kotlin.\n\n### Key Features\n\n- **End-to-End Encryption:** Ensures that data is encrypted at the source and can only be decrypted\n  by the intended recipient.\n- **Native C++ Library Integration:** Leverages the performance and security of C++ while making it\n  accessible in Java/Kotlin applications.\n- **Cross-Platform Compatibility:** Designed to support PrivMX on multiple operating systems and\n  environments.\n- **Simple API:** Easy-to-use interface for Java/Kotlin developers without compromising security.\n\n## Modules\n\n### 1. PrivMX Endpoint Kotlin Extra\n\nPrivMX Endpoint Kotlin Extra is the fundamental **recommended library** for using the platform\nin the majority of cases. It encompasses all the essential logic that simplifies and secures the\nusage of our libraries.\n\nThis library implements:\n\n- Enums and static fields to minimize errors while invoking the methods.\n- `PrivMXEndpoint` for managing the connection and registering callbacks for any events.\n- `PrivMXEndpointContainer` for managing the global session with an implemented event loop.\n- Classes to simplify reading and writing to files using byte arrays, InputStream/OutputStream or\n  Source/Sink (kotlinx.io), depending on the platform and use case.\n\n### 2. PrivMX Endpoint Kotlin\n\nPrivMX Endpoint Kotlin is the minimal wrapper library, essential for the platform’s operational\nfunctionality. It declares native functions in Kotlin using JNI. As the most minimalist library\navailable, it provides the highest degree of flexibility in customizing the platform to meet your\nspecific requirements.\n\nThis library implements models, exception catching, and the following modules:\n\n- `CryptoApi` - Cryptographic methods used to encrypt/decrypt and sign your data or generate keys to\n  work with PrivMX Bridge.\n- `Connection` - Methods for managing connection with PrivMX Bridge.\n- `ThreadApi` - Methods for managing Threads and sending/reading messages.\n- `StoreApi` - Methods for managing Stores and sending/reading files.\n- `InboxApi` - Methods for managing Inboxes and entries.\n\n## Supported Platforms\n\n* JVM (minimum JDK 8)\n  * Android\n    * arm64-v8a\n    * armeabi-v7a\n    * x86\n    * x86_64\n  * Darwin\n    * arm64\n  * Linux\n    * x86_64 (comming soon)\n  * Windows\n    * x86_64 (comming soon)\n* iOS\n  * arm64\n  * arm64Simulator\n\n## Usage\n\n### Add Dependencies\n\n1. Add `mavenCentral()` repository to your `settings.gradle.kts`:\n\n```groovy\npluginManagement {\n  repositories {\n      mavenCentral()\n  }\n}\n\ndependencyResolutionManagement {\n    repositories {\n        mavenCentral()\n    }\n}\n```\n\n2. Add dependency to `build.gradle.kts`:\n\n```groovy\nkotlin {\n  sourceSets {\n    val commonMain by getting {\n      dependencies {\n        implementation(\"com.simplito.kotlin:privmx-endpoint:$privmxLibVersion\")\n        // optionally you can add privmx-endpoint-extra dependency\n//        implementation(\"com.simplito.kotlin:privmx-endpoint-extra:$privmxLibVersion\")\n      }\n    }\n  }\n}\n```\n\n3. Add PrivMX plugin to `build.gradle`:\n\n```groovy\nplugins {\n    id(\"com.simplito.privmx-endpoint-install-native\") version \"2.0.0\"\n}\n```\n\n## JVM\n### Native Libraries\nThe plugin automatically adds the necessary native libraries to the runtime in your **Java**, **Android**,\nor **Kotlin** project. For Java applications, it includes libraries for all supported desktop platforms.\nThe source code of the plugin is available on [GitHub](https://github.com/simplito/privmx-endpoint-java-tools).\n\nWhen you first use the API, the PrivMX wrapper unpacks and loads these native libraries.\nThey are unpacked to your working directory if your `java.library.path` includes `.`.\nOtherwise, they are unpacked to the last path specified in the `java.library.path`.\n\n## Android\n### Native Libraries\nThe plugin automatically adds the necessary native libraries to the runtime in your **Java**, **Android**,\nor **Kotlin** project. For Android applications, it includes Android-specific binaries.\nThe source code of the plugin is available on [GitHub](https://github.com/simplito/privmx-endpoint-java-tools).\n\nOn Android, the native libraries are extracted by the installer and then the PrivMX wrapper loads them in the runtime.\n### Required Permissions\nPrivMX Endpoint requires to add the following permissions to your AndroidManifest.xml:\n* `\u003cuses-permission android:name=\"android.permission.INTERNET\" /\u003e`\n\n## License Information\n\n**PrivMX Endpoint Kotlin**\\\nCopyright © 2025 Simplito sp. z o.o.\n\nThis project is part of the PrivMX Platform (https://privmx.dev). \\\nThis project is Licensed under the MIT License.\n\nPrivMX Endpoint and PrivMX Bridge are licensed under the PrivMX Free License.\\\nSee the License for the specific language governing permissions and limitations under the License.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimplito%2Fprivmx-endpoint-kotlin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimplito%2Fprivmx-endpoint-kotlin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimplito%2Fprivmx-endpoint-kotlin/lists"}