{"id":13822481,"url":"https://github.com/whisperfish/libsignal-protocol-rs","last_synced_at":"2025-09-29T05:30:51.175Z","repository":{"id":54907919,"uuid":"184256108","full_name":"whisperfish/libsignal-protocol-rs","owner":"whisperfish","description":"A Rust interface to the Signal Protocol. DEPRECATED in favour of https://github.com/signalapp/libsignal-client ! Signal reimplemented the whole thing in Rust.","archived":true,"fork":false,"pushed_at":"2021-05-03T09:40:17.000Z","size":56435,"stargazers_count":44,"open_issues_count":3,"forks_count":10,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-16T09:14:47.009Z","etag":null,"topics":["encryption","rust","signal-protocol"],"latest_commit_sha":null,"homepage":"https://michael-f-bryan.github.io/libsignal-protocol-rs","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/whisperfish.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-30T12:14:04.000Z","updated_at":"2023-11-15T19:51:12.000Z","dependencies_parsed_at":"2022-08-14T06:20:25.861Z","dependency_job_id":null,"html_url":"https://github.com/whisperfish/libsignal-protocol-rs","commit_stats":null,"previous_names":["michael-f-bryan/libsignal-protocol-rs"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whisperfish%2Flibsignal-protocol-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whisperfish%2Flibsignal-protocol-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whisperfish%2Flibsignal-protocol-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whisperfish%2Flibsignal-protocol-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/whisperfish","download_url":"https://codeload.github.com/whisperfish/libsignal-protocol-rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234594035,"owners_count":18857417,"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":["encryption","rust","signal-protocol"],"created_at":"2024-08-04T08:02:02.071Z","updated_at":"2025-09-29T05:30:50.624Z","avatar_url":"https://github.com/whisperfish.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# libsignal-protocol-rs\n\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/82a990f6d0b441038ff00c11a685b876)](https://app.codacy.com/app/shekohex/libsignal-protocol-rs?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=Michael-F-Bryan/libsignal-protocol-rs\u0026utm_campaign=Badge_Grade_Settings)\n[![Build Status](https://travis-ci.com/Michael-F-Bryan/libsignal-protocol-rs.svg?branch=master)](https://travis-ci.com/Michael-F-Bryan/libsignal-protocol-rs)\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FMichael-F-Bryan%2Flibsignal-protocol-rs.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2FMichael-F-Bryan%2Flibsignal-protocol-rs?ref=badge_shield)\n[![License](https://img.shields.io/crates/l/libsignal-protocol.svg)](LICENSE.md)\n[![libsignal-protocol on crates.io](https://img.shields.io/crates/v/libsignal-protocol.svg)](https://crates.io/crates/libsignal-protocol)\n[![Docs for libsignal-protocol](https://docs.rs/libsignal-protocol/badge.svg)](https://docs.rs/libsignal-protocol)\n\n([API Docs for `master`](https://michael-f-bryan.github.io/libsignal-protocol-rs))\n\nA Rust interface to the [Signal Protocol][upstream].\n\n**DEPRECATED** in favour of https://github.com/signalapp/libsignal-client!\nSignal reimplemented the whole thing in Rust, and `libsignal-service-rs` is now based on that.\n\n## Examples\n\nThe simplest thing you can do with this library is generate a private identity\nkey. This is normally only ever done once when you first start (sometimes called\n*install time*).\n\n```rust,skt-main\n// create our global context (for things like crypto and locking)\nlet ctx = Context::default();\n\nlet identity = libsignal_protocol::generate_identity_key_pair(\u0026ctx)?;\n```\n\nNext, you'll normally want to generate a bunch of unsigned pre-keys which \npeople can use when contacting you, and one signed pre-key.\n\n```rust,skt-main\nlet ctx = Context::default();\n\nlet identity = libsignal_protocol::generate_identity_key_pair(\u0026ctx)?;\n\nlet signed_pre_key = libsignal_protocol::generate_signed_pre_key(\n    \u0026ctx,\n    \u0026identity,\n    5,\n    SystemTime::now(),\n)?;\n\nlet start = 123;\nlet count = 20;\n\nlet pre_keys = libsignal_protocol::generate_pre_keys(\u0026ctx, start, count)?\n    .collect::\u003cVec\u003cPreKey\u003e\u003e();\n```\n\nA Registration ID should also be created at install time.\n\n```rust,skt-main\nlet ctx = Context::default();\nlet extended_range = 42;\n\nlet registration_id = libsignal_protocol::generate_registration_id(\u0026ctx, extended_range)?;\n```\n\n## Legal things\n\n### Cryptography Notice\n\nThis distribution includes cryptographic software. The country in which you\ncurrently reside may have restrictions on the import, possession, use, and/or\nre-export to another country, of encryption software. BEFORE using any\nencryption software, please check your country's laws, regulations and\npolicies concerning the import, possession, or use, and re-export of\nencryption software, to see if this is permitted. See\n\u003chttp://www.wassenaar.org/\u003e for more information.\n\nThe U.S. Government Department of Commerce, Bureau of Industry and Security\n(BIS), has classified this software as Export Commodity Control Number (ECCN)\n5D002.C.1, which includes information security software using or performing\ncryptographic functions with asymmetric algorithms. The form and manner of\nthis distribution makes it eligible for export under the License Exception\nENC Technology Software Unrestricted (TSU) exception (see the BIS Export\nAdministration Regulations, Section 740.13) for both object code and source\ncode.\n\n### License\n\nCopyright 2015-2019 Open Whisper Systems\n\nLicensed under the GPLv3: http://www.gnu.org/licenses/gpl-3.0.html\n\nAdditional Permissions For Submission to Apple App Store: Provided that you\nare otherwise in compliance with the GPLv3 for each covered work you convey\n(including without limitation making the Corresponding Source available in\ncompliance with Section 6 of the GPLv3), Open Whisper Systems also grants you\nthe additional permission to convey through the Apple App Store non-source\nexecutable versions of the Program as incorporated into each applicable\ncovered work as Executable Versions only under the Mozilla Public License\nversion 2.0 (https://www.mozilla.org/en-US/MPL/2.0/).\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FMichael-F-Bryan%2Flibsignal-protocol-rs.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2FMichael-F-Bryan%2Flibsignal-protocol-rs?ref=badge_large)\n\n[upstream]: https://github.com/signalapp/libsignal-protocol-c\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhisperfish%2Flibsignal-protocol-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhisperfish%2Flibsignal-protocol-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhisperfish%2Flibsignal-protocol-rs/lists"}