{"id":37027006,"url":"https://github.com/evervault/evervault-multiplatform","last_synced_at":"2026-01-14T03:11:36.364Z","repository":{"id":182268455,"uuid":"658816254","full_name":"evervault/evervault-multiplatform","owner":"evervault","description":null,"archived":true,"fork":false,"pushed_at":"2023-10-25T13:13:22.000Z","size":232,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-04-20T00:16:17.188Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/evervault.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null}},"created_at":"2023-06-26T14:46:50.000Z","updated_at":"2023-10-27T13:25:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"af853d7c-9ce9-46af-9505-c43a3336885f","html_url":"https://github.com/evervault/evervault-multiplatform","commit_stats":null,"previous_names":["evervault/evervault-multiplatform"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/evervault/evervault-multiplatform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evervault%2Fevervault-multiplatform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evervault%2Fevervault-multiplatform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evervault%2Fevervault-multiplatform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evervault%2Fevervault-multiplatform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/evervault","download_url":"https://codeload.github.com/evervault/evervault-multiplatform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evervault%2Fevervault-multiplatform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408815,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2026-01-14T03:11:35.750Z","updated_at":"2026-01-14T03:11:36.357Z","avatar_url":"https://github.com/evervault.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Evervault Kotlin Multiplatform SDK\n\nThe [Evervault](https://evervault.com/) Kotlin Multiplatform SDK is a library that provides secure data encryption for your Kotlin Multiplatform applications. It's simple to integrate, easy to use and it supports a wide range of data types. The package includes the core encryption functionality.\n\n## Features\n- Core encryption capabilities for various data types.\n- Built-in data type recognition and appropriate encryption handling.\n\n## Supported Platforms\n- JVM, including Android\n\nNote: iOS is not currently supported due to Kotlin Multiplatform limitations of including Swift packages, which is required to use CryptoKit. To use Evervault on iOS, use the [Evervault iOS SDK](https://github.com/evervault/evervault-ios) instead.\n\n## Related Projects\n\nAlthough the Evervault Kotlin Multiplatform SDK provides the core encryption functionality, it does not provide any UI components for capturing sensitive data. For this, we recommend using the [Evervault Android SDK](https://github.com/evervault/evervault-android)\n\nSimilarly, to use the full feature set for Java (Server-side), we recommend using the [Evervault Java SDK](https://github.com/evervault/evervault-java).\n\n## Installation\n\nOur Kotlin Multiplatform SDK distributed via [maven](https://search.maven.org/artifact/com.evervault.sdk/lib), and can be installed using your preferred build tool.\n\n### Gradle DSL\n\n```kotlin\nimplementation(\"com.evervault.sdk:evervault-core:1.0.0\")\n```\n\n### Maven\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.evervault.sdk\u003c/groupId\u003e\n  \u003cartifactId\u003eevervault-core\u003c/artifactId\u003e\n  \u003cversion\u003e1.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Usage\n\n### Configuration\n\nBefore using the Evervault Kotlin Multiplatform SDK, you need to configure it with your Evervault Team ID and App ID. This step is essential for establishing a connection with the Evervault encryption service.\n\n```kotlin\nEvervault.shared.configure(\"\u003cTEAM_ID\u003e\", \"\u003cAPP_ID\u003e\")\n```\n\nMake sure to replace `\u003cTEAM_ID\u003e` and `\u003cAPP_ID\u003e` with your actual Evervault Team ID and App ID.\n\n### Encrypting Data\n\nOnce the SDK is configured, you can use the `encrypt` method to encrypt your sensitive data. The `encrypt` method accepts various data types, including Boolean, Numerics, Strings, Arrays, Lists, Maps and ByteArrays.\n\nHere's an example of encrypting a password:\n\n```kotlin\nval encryptedPassword = Evervault.shared.encrypt(\"Super Secret Password\")\n```\n\nThe `encrypt` method returns an `Any` type, so you will need to safely cast the result based on the data type you provided. For Boolean, Numerics, and Strings, the encrypted data is returned as a String. For Arrays, Lists and Maps, the encrypted data maintains the same structure but is encrypted (except that Arrays become Lists). For ByteArray, the encrypted data is returned as encrypted ByteArray, which can be useful for encrypting files.\n\n### Decrypting Data\n\nYou can use the `decrypt` method to decrypt data previously encrypted through Evervault. To perform decryptions you will be required to provide a Client Side Token. The token is a time bound token for decrypting data. The token can be generated using our backend SDKs for use in our client-side SDKs. The payload provided to the `decrypt` method must be the same as the payload used to generate the token.\n\n\nHere's an example of decrypting data.\n\n```kotlin\nval encrypted = Evervault.shared.encrypt(\"John Doe\")\n\nval decrypted = Evervault.shared.decrypt(\"\u003cCLIENT_SIDE_TOKEN\u003e\", mapOf(\"name\" to encrypted)) as Map\u003cString, Any\u003e\nprintln(decrypted[\"name\"]) // Prints \"John Doe\"\n```\n\nThe `decrypt` function will return `Any`, however this can be cast to `Map\u003cString, Any\u003e`. The data argument must be a map.\n\n## Sample App\n\nThe Evervault Kotlin Multiplatform SDK Package includes a sample app, located in the `examples` directory. The sample app consist of a `shared` module, which contains the Evervault Kotlin Multiplatform SDK, and an `android` module, which contains the sample app.\n\n## Running Tests\n\nAll tests run out of the box with the exception of `HttpRequestTest` and `HttpKeysLoaderTest`. To test these, you'll need to provide App and Team IDs as well as an API key. You will also need a role named `test-deny-role` in the provided App that denies decryption.\n\nYou can add these as environment variables by adding the following to `build.gradle.kts` in `evervault-core`:\n\n```\ntasks.withType\u003cTest\u003e {\n    environment(\"VITE_EV_API_KEY\", \"\u003cAPI_KEY\u003e\")\n    environment(\"VITE_EV_APP_UUID\", \"\u003cAPP_ID\u003e\")\n    environment(\"VITE_EV_TEAM_UUID\", \"\u003cTEAM_ID\u003e\")\n}\n```\n\n## License\n\nThe sample app is released under the MIT License. See the [LICENSE](https://github.com/evervault/evervault-multiplatform/blob/main/LICENSE) file for more information.\n\nFeel free to experiment with the sample app to understand the capabilities of the Evervault iOS SDK and explore different integration options for your own projects.\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/evervault/evervault-multiplatform.\n\n## Feedback\n\nQuestions or feedback? [Let us know](mailto:support@evervault.com).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevervault%2Fevervault-multiplatform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevervault%2Fevervault-multiplatform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevervault%2Fevervault-multiplatform/lists"}