{"id":16124549,"url":"https://github.com/ahdinosaur/secret-channel","last_synced_at":"2025-09-20T13:31:11.080Z","repository":{"id":209159038,"uuid":"722992524","full_name":"ahdinosaur/secret-channel","owner":"ahdinosaur","description":"🤫 A protocol for an authenticated and encrypted message stream","archived":false,"fork":false,"pushed_at":"2023-12-15T10:50:01.000Z","size":44,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-11T06:35:33.160Z","etag":null,"topics":["aead","authenticated","authenticated-encryption","chacha20-poly1305","chacha20poly1305","crypto","cryptography","encryption","scuttlebutt","secure-scuttlebutt","ssb","stream","streaming"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ahdinosaur.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-24T12:29:31.000Z","updated_at":"2024-01-14T04:47:37.000Z","dependencies_parsed_at":"2023-11-29T02:32:34.167Z","dependency_job_id":"dfc5c281-342d-4744-8640-0a20f3274296","html_url":"https://github.com/ahdinosaur/secret-channel","commit_stats":null,"previous_names":["ahdinosaur/secret-channel"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahdinosaur%2Fsecret-channel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahdinosaur%2Fsecret-channel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahdinosaur%2Fsecret-channel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahdinosaur%2Fsecret-channel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ahdinosaur","download_url":"https://codeload.github.com/ahdinosaur/secret-channel/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233575917,"owners_count":18696694,"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":["aead","authenticated","authenticated-encryption","chacha20-poly1305","chacha20poly1305","crypto","cryptography","encryption","scuttlebutt","secure-scuttlebutt","ssb","stream","streaming"],"created_at":"2024-10-09T21:21:24.128Z","updated_at":"2025-09-20T13:31:05.795Z","avatar_url":"https://github.com/ahdinosaur.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \"Secret Channel\" 🤫\n\n\u003e Streaming authenticated encryption using ChaCha20-Poly1305 ([RFC 8439](https://datatracker.ietf.org/doc/html/rfc8439)) (or other [AEADs](https://libsodium.gitbook.io/doc/secret-key_cryptography/aead)).\n\nA protocol for a secure message stream, after you've done a [secure key exchange](https://github.com/ahdinosaur/secret-handshake).\n\n![Fig 7 Le Telephone by T du Moncel Paris 1880](./tin-can-telephone.jpg)\n\n(Note: This protocol has not been audited to be safe. Use at your own risk.)\n\n## Specification\n\nSee [SPEC.md](./SPEC.md)\n\n## Packages\n\n### JavaScript\n\n[![ci status](https://img.shields.io/github/actions/workflow/status/ahdinosaur/secret-channel/node.js.yml?style=flat-square)](https://github.com/ahdinosaur/secret-channel/actions/workflows/node.js.yml?query=branch%3Amain)\n\n#### Protocol: [`secret-channel`](./js/secret-channel)\n\n[![npm version](https://img.shields.io/npm/v/secret-channel.svg?style=flat-square)](https://www.npmjs.com/package/secret-channel) [![npm downloads](https://img.shields.io/npm/dt/secret-channel?style=flat-square)](https://www.npmjs.com/package/secret-channel)\n\n#### Pull Stream: [`pull-secret-channel`](./js/pull-secret-channel)\n\n[![npm version](https://img.shields.io/npm/v/pull-secret-channel.svg?style=flat-square)](https://www.npmjs.com/package/pull-secret-channel) [![npm downloads](https://img.shields.io/npm/dt/pull-secret-channel?style=flat-square)](https://www.npmjs.com/package/pull-secret-channel)\n\n#### Node Stream\n\nTODO\n\n### Rust\n\n#### Protocol\n\nTODO\n\n#### Async Stream\n\nTODO\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahdinosaur%2Fsecret-channel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahdinosaur%2Fsecret-channel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahdinosaur%2Fsecret-channel/lists"}