{"id":15294004,"url":"https://github.com/animo/expo-secure-environment","last_synced_at":"2026-02-16T09:03:07.433Z","repository":{"id":250304177,"uuid":"833584636","full_name":"animo/expo-secure-environment","owner":"animo","description":"Expo Module for cryptographic operations using the devices Secure Environment behind biometric authentication.","archived":false,"fork":false,"pushed_at":"2025-11-11T09:19:36.000Z","size":1794,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-11T11:19:56.555Z","etag":null,"topics":["android","biometry","cryptography","expo","ios","react-native","secure-environments","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/animo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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-07-25T10:45:30.000Z","updated_at":"2025-11-11T09:16:54.000Z","dependencies_parsed_at":"2024-08-06T11:58:01.986Z","dependency_job_id":"a956a031-3513-4832-8fbd-72a5d451f505","html_url":"https://github.com/animo/expo-secure-environment","commit_stats":null,"previous_names":["animo/expo-secure-environment"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/animo/expo-secure-environment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/animo%2Fexpo-secure-environment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/animo%2Fexpo-secure-environment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/animo%2Fexpo-secure-environment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/animo%2Fexpo-secure-environment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/animo","download_url":"https://codeload.github.com/animo/expo-secure-environment/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/animo%2Fexpo-secure-environment/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29504684,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T08:14:25.707Z","status":"ssl_error","status_checked_at":"2026-02-16T08:14:25.334Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["android","biometry","cryptography","expo","ios","react-native","secure-environments","typescript"],"created_at":"2024-09-30T16:54:45.896Z","updated_at":"2026-02-16T09:03:07.427Z","avatar_url":"https://github.com/animo.png","language":"TypeScript","funding_links":[],"categories":["🛠 Tools \u0026 Technologies"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://res.cloudinary.com/animo-solutions/image/upload/v1656578320/animo-logo-light-no-text_ok9auy.svg\"\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://res.cloudinary.com/animo-solutions/image/upload/v1656578320/animo-logo-dark-no-text_fqqdq9.svg\"\u003e\n   \u003cimg alt=\"Animo Logo\" height=\"200px\" /\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\" \u003e\u003cb\u003eExpo - Secure Environment\u003c/b\u003e\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003ePowered by \u0026nbsp; \n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://res.cloudinary.com/animo-solutions/image/upload/v1656579715/animo-logo-light-text_cma2yo.svg\"\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://res.cloudinary.com/animo-solutions/image/upload/v1656579715/animo-logo-dark-text_uccvqa.svg\"\u003e\n    \u003cimg alt=\"Animo Logo\" height=\"12px\" /\u003e\n  \u003c/picture\u003e\n\u003c/h4\u003e\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://typescriptlang.org\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@animo-id/expo-secure-environment\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/v/@animo-id/expo-secure-environment\" /\u003e\n  \u003c/a\u003e\n  \u003ca\n    href=\"https://raw.githubusercontent.com/animo/expo-secure-environment/main/LICENSE\"\n    \u003e\u003cimg\n      alt=\"License\"\n      src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\"\n  /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e \n  \u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e \n  \u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e \n  \u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#contributing\"\u003eLicense\u003c/a\u003e \n\u003c/p\u003e\n\n---\n\nAn [Expo Module](https://docs.expo.dev/modules/overview/) with support for cryptographic operations using the device's Secure Environment (HSM, SE, etc.) locked behing biometric authentication.\n\nCurrently supports Android API 30+ and the minimum supported version of iOS for Expo.\n\n## Getting Started\n\nFirst, install the module using your package manager.\n\n```sh\nnpm install @animo-id/expo-secure-environment\n```\n\nThen prebuild the application so the Expo Module wrapper can be added as native dependency:\n\n```sh\nnpx expo prebuild\n```\n\nYou now have the Secure Environment module installed and configured.\n\n## Usage\n\nYou can now import `@animo-id/expo-secure-environment` in your application.\n\n### Supported cryptographic algorithms\n\n**Key algorithm**: Secp256r1\n\n**Signature algorithm**: ECDSA with SHA256\n\n### Create a key pair\n\n```typescript\nimport { generateKeypair } from \"@animo-id/expo-secure-environment\";\n\nconst myId = \"keypair-id\";\n\n// Make sure it is backed by biometrics\ngenerateKeypair(myId, true);\n```\n\n### Get the public bytes by the id\n\nReturns the compressed form of a P-256 public key (and not the DER-encoded SubjectPublicKeyInfo):\n\n```typescript\nimport {\n    generateKeypair,\n    getPublicBytesForKeyId,\n} from \"@animo-id/expo-secure-environment\";\n\nconst myId = \"keypair-id\";\n\n// Make sure it is backed by biometrics\ngenerateKeypair(myId, true);\n\nconst publicBytes: Uint8Array = getPublicBytesForKeyId(myId);\n```\n\n### Sign data\n\nReturns the raw signature (and not a DER-Encoded ECDA-Sig-Value):\n\n```typescript\nimport {\n    generateKeypair,\n    sign\n} from \"@animo-id/expo-secure-environment\";\n\nconst myId = \"keypair-id\";\n\n// Make sure it is backed by biometrics\ngenerateKeypair(myId, true);\n\n// Make sure that when we sign we pass the third argument as true to indicate we would like to use biometrics\nconst signature = sign(myId, new Uint8Array(10).fill(7), true);\n```\n\n## Contributing\n\nIs there something you'd like to fix or add? Great, we love community contributions! To get involved, please follow our [contribution guidelines](https://github.com/animo/.github/blob/main/CONTRIBUTING.md).\n\n## License\n\nThis repository is licensed under the [Apache 2.0](./LICENSE) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanimo%2Fexpo-secure-environment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanimo%2Fexpo-secure-environment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanimo%2Fexpo-secure-environment/lists"}