{"id":20060604,"url":"https://github.com/oasisprotocol/deoxysii-js","last_synced_at":"2026-01-12T02:18:07.708Z","repository":{"id":34674785,"uuid":"178383946","full_name":"oasisprotocol/deoxysii-js","owner":"oasisprotocol","description":"JavaScript Deoxys-II-256-128","archived":false,"fork":false,"pushed_at":"2024-09-24T00:52:05.000Z","size":522,"stargazers_count":6,"open_issues_count":4,"forks_count":1,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-10-08T23:29:19.079Z","etag":null,"topics":["aead","cryptography","javascript","mrae"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@oasisprotocol/deoxysii","language":"TypeScript","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/oasisprotocol.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-29T10:23:35.000Z","updated_at":"2024-05-08T14:37:39.000Z","dependencies_parsed_at":"2024-11-20T15:43:39.822Z","dependency_job_id":"664bdd39-debc-40db-9282-ae3c5c78f4a0","html_url":"https://github.com/oasisprotocol/deoxysii-js","commit_stats":{"total_commits":33,"total_committers":7,"mean_commits":4.714285714285714,"dds":0.6363636363636364,"last_synced_commit":"7018d8386bad34f5968f56870e59219f634672b4"},"previous_names":["oasislabs/deoxysii.js"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/oasisprotocol/deoxysii-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oasisprotocol%2Fdeoxysii-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oasisprotocol%2Fdeoxysii-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oasisprotocol%2Fdeoxysii-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oasisprotocol%2Fdeoxysii-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oasisprotocol","download_url":"https://codeload.github.com/oasisprotocol/deoxysii-js/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oasisprotocol%2Fdeoxysii-js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28331929,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"online","status_checked_at":"2026-01-12T02:00:08.677Z","response_time":98,"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":["aead","cryptography","javascript","mrae"],"created_at":"2024-11-13T13:15:53.882Z","updated_at":"2026-01-12T02:18:07.694Z","avatar_url":"https://github.com/oasisprotocol.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"### deoxysii.js - JavaScript Deoxys-II-256-128\n![GitHub CI](https://github.com/oasisprotocol/deoxysii-js/actions/workflows/config.yml/badge.svg)\n[![version][deoxysii-version]][deoxysii-npm]\n[![size][deoxysii-size]][deoxysii-bundlephobia]\n![downloads][deoxysii-downloads]\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n[deoxysii-npm]: https://www.npmjs.com/package/@oasisprotocol/deoxysii\n[deoxysii-version]: https://img.shields.io/npm/v/@oasisprotocol/deoxysii\n[deoxysii-size]: https://img.shields.io/bundlephobia/minzip/@oasisprotocol/deoxysii\n[deoxysii-bundlephobia]: https://bundlephobia.com/package/@oasisprotocol/deoxysii\n[deoxysii-downloads]: https://img.shields.io/npm/dm/@oasisprotocol/deoxysii.svg\n\nThis package provides a pure-JavaScript implementation of the\n[Deoxys-II-256-128 v1.43][1] algorithm from the [final CAESAR portfolio][2].\n\n\u003e Deoxys is an authenticated encryption scheme based on a 128-bit lightweight\n\u003e ad-hoc tweakable block cipher. It may be used in two modes to handle\n\u003e nonce-respecting users (Deoxys-I) or nonce-reusing user (Deoxys-II).\n\u003e\n\u003e It has been designed by [Jérémy Jean][3], [Ivica Nikolić][4], [Thomas Peyrin][5] and [Yannick Seurin][6].\n\n[1]: https://sites.google.com/view/deoxyscipher\n[2]: https://competitions.cr.yp.to/caesar-submissions.html\n[3]: http://jeremy.jean.free.fr/\n[4]: https://sites.google.com/view/ivica-nikolic-sg/home\n[5]: https://thomaspeyrin.github.io/web/\n[6]: https://yannickseurin.github.io/\n\n## Usage\n\nInstall the package as a dependency of your project:\n\n```shell\nnpm add '@oasisprotocol/deoxysii'\n```\n\nThe `AEAD` class can then be used to encrypt and decrypt, with an optional\nauthenticated data field which can be very useful when constructing protocols.\n\n```typescript\nimport { AEAD, KeySize, NonceSize } from '@oasisprotocol/deoxysii';\n\n// Define a key (ensure the size matches requirements)\nconst key = crypto.getRandomValues(new Uint8Array(KeySize));\nconst aead = new AEAD(key);\n\n// Encryption\nconst nonce = crypto.getRandomValues(new Uint8Array(NonceSize));\nconst plaintext = new TextEncoder().encode(\"Hello World\");\nconst associatedData = new Uint8Array([0x1, 0x2, 0x3]);\n\nconst encrypted = aead.encrypt(nonce, plaintext, associatedData);\nconsole.log('Encrypted:', encrypted);\n\n// Decryption\ntry {\n    const decrypted = aead.decrypt(nonce, encrypted, associatedData);\n    console.log('Decrypted:', new TextDecoder().decode(decrypted));\n} catch (error) {\n    console.error('Decryption failed:', error);\n}\n```\n\n## Notes\n\n\u003e [!WARNING]\n\u003e It is unclear what the various JavaScript implementations will do to the\n\u003e `ct32` code or the underlying bitsliced AES round function, and it is\n\u003e quite possible that it may be vulnerable to side channels.\n\u003e\n\u003e Users that require a more performant and secure implementation are suggested\n\u003e to investigate WebAssembly, or (even better) calling native code.\n\n#### Development\n\n * [Node.js](https://nodejs.org/en/about/previous-releases) - version 18+\n * [typescript](https://www.typescriptlang.org/) - version 5.x, for type safety\n * [pnpm](https://pnpm.io/) - package manager\n * [`gh act`](https://github.com/nektos/act) - run GitHub actions locally\n * [vitest](https://vitest.dev/) - tests, benchmarking \u0026 coverage\n * [biome](https://biomejs.dev/) - lint \u0026 formatting\n * [tsup](https://tsup.egoist.dev/) - compilation \u0026 bundling\n * [publint](https://publint.dev/) - packaging checks\n\n#### License \u0026 Acknowledgements\n\nThis project is released under the MIT License.\n\nThis project utilizes modified code originally developed by Franz X Antesberger.\nThe original code for `uint32.js` is available at [fxa/uint32.js]. We have\nadapted this code for TypeScript. We appreciate the contributions of Franz X\nAntesberger to the open-source community.\n\n[fxa/uint32.js]: https://github.com/fxa/uint32.js\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foasisprotocol%2Fdeoxysii-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foasisprotocol%2Fdeoxysii-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foasisprotocol%2Fdeoxysii-js/lists"}