{"id":13578886,"url":"https://github.com/hoehermann/purple-signal","last_synced_at":"2025-04-05T19:34:01.766Z","repository":{"id":55452893,"uuid":"228482096","full_name":"hoehermann/purple-signal","owner":"hoehermann","description":"Pidgin/libpurple plugin for signal using libsignal-service-java (and parts of signal-cli). ","archived":true,"fork":false,"pushed_at":"2022-03-20T11:39:30.000Z","size":280,"stargazers_count":24,"open_issues_count":4,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-11-05T16:49:45.807Z","etag":null,"topics":["instant-messaging","libpurple","libpurple-plugin","pidgin","pidgin-plugins","signal","signal-client","textsecure","textsecure-client"],"latest_commit_sha":null,"homepage":"","language":"C++","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/hoehermann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-16T21:50:13.000Z","updated_at":"2024-01-18T13:44:32.000Z","dependencies_parsed_at":"2022-08-15T00:31:24.065Z","dependency_job_id":null,"html_url":"https://github.com/hoehermann/purple-signal","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoehermann%2Fpurple-signal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoehermann%2Fpurple-signal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoehermann%2Fpurple-signal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoehermann%2Fpurple-signal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hoehermann","download_url":"https://codeload.github.com/hoehermann/purple-signal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247393095,"owners_count":20931804,"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":["instant-messaging","libpurple","libpurple-plugin","pidgin","pidgin-plugins","signal","signal-client","textsecure","textsecure-client"],"created_at":"2024-08-01T15:01:34.743Z","updated_at":"2025-04-05T19:34:01.760Z","avatar_url":"https://github.com/hoehermann.png","language":"C++","funding_links":[],"categories":["\u003ca name=\"cpp\"\u003e\u003c/a\u003eC++"],"sub_categories":[],"readme":"# purple-signal\n\nA libpurple/Pidgin plugin for signal (formerly textsecure). Using [modified parts](https://github.com/hoehermann/signal-cli/) of [signal-cli](https://github.com/AsamK/signal-cli) which in turn is employing [a fork of the official implementation](https://github.com/Turasa/libsignal-service-java).\n\n![Instant Message](/screenshot_win32.png?raw=true \"Instant Message on Windows Screenshot\")  \n\n### State\n\n**This plug-in is no longer being developed.** The author writes:\n\n\u003e This plug-in essentially was a C/C++ wrapper around the (official) Java implementation libsignal-service-java. However, Signal itself is moving away from their own reference implementation. They now favour libsignal-client, which implements the same functionality in Rust. This plug-in ended up as a C wrapper around a Java compatibility layer around a Rust binary which is hard to build. Everything is moving in different directions and nothing is stable. Even nodejs seems to be involved at some point. \n\u003e\n\u003e Moving away from the platform-independent Java implementation, Signal has pulled support win32 so hard [not even third parties can maintain it](https://github.com/signalapp/Signal-Desktop/issues/1636#issuecomment-1051237708). Maybe [purple-signald](https://github.com/hoehermann/libpurple-signald) will be revived so at least Linux users can have Signal in Pidgin again.\n\n### Download\n\nBinaries once were availiable at https://buildbot.hehoe.de/purple-signal/builds/.  \n\nSee [INSTALL](INSTALL.md) on how to install this plug-in.  \nIf you want to build the plug-in yourself see [BUILD](BUILD.md).\n\n### Concept\n\nlibpurple plug-ins are written in C.  \nThe signal client library is written in Java.  \nThis project uses JNI to create a Java VM instance within the C part of the plug-in. An instance of the Java Class implementing the signal client is created. Upon receival of a message, a static method is called. This call-back method is a native method implemented in C. It forwards the data to libpurple.  \nThis may be considered dark magic by some.\n\nPlease note this is the third purple plugin I have ever written. I still have no idea what I am doing.\n\n### Alternative Backends\n\nThese back-ends were considered, but not used:\n\n* [libsignal-service-java](https://github.com/signalapp/Signal-Android/tree/master/libsignal/service) cannot link to existing accounts\n* [SignalProtocolKit](https://github.com/signalapp/SignalProtocolKit) deprecated, recommends libsignal-protocol-c\n* [libsignal-protocol-c](https://github.com/signalapp/libsignal-protocol-c) development seems to have stalled in 2018\n* [textsecure](https://github.com/nanu-c/textsecure) \"The API (…) is in flux\"\n* [libsignal-client](https://github.com/signalapp/libsignal-client) \"use outside Signal not yet recommended\"\n\n### Features\n\nThis plug-in is a proof-of-concept with very little features:\n\n* Register a new account (without captcha only)\n* Link to an existing account  \n  Use the provided code text with signal-cli  \n  or  \n  Scan the provided QR code with with the official app\n* Simple Messaging\n  * one-to-one conversation\n  * group conversations (linked only)\n  * receiving attachments\n* Contact list download\n\nPlease note that, as of now, you have to add your contacts manually and they appear \"offline\" in the buddy list.\n\nFor more functionality, check out [purple-signald](https://github.com/hoehermann/libpurple-signald). It offers more features, but it depends on a third-party service and thus is Linux only.\n\n### Missing Features\n\n* Retry failed messages\n* Sending attachments\n* Proper group chats\n* Group chat management (explicit join, leave, administration, …)\n* everything else\n\n### Known Problems\n\n* May require new link or registration after a crash. Your number can be banned temporarily.\n* If the plug-in crashes while handling a message, the message is lost.\n* The message cache is not implemented and I have no idea what that may entrail. Probably the above.\n* First message from purple-signal to official signal is not sent properly.\n* Avatars are downloaded into working directory.\n* It takes two minutes for the internal JVM to shut down. Or it crashes when terminating Pidgin. This issue disappears and reappears erratically.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoehermann%2Fpurple-signal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhoehermann%2Fpurple-signal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoehermann%2Fpurple-signal/lists"}