{"id":13561707,"url":"https://github.com/synrc/chat","last_synced_at":"2025-08-23T18:14:51.901Z","repository":{"id":174518717,"uuid":"652351643","full_name":"synrc/chat","owner":"synrc","description":"💬 CHAT: Instant Messenger. ISO/IEC: 20922; ITU/IETF: 3394, 3565, 5280, 5480, 5652, 5755 8551, X.509, CMS, PKCS-10, PCKS-7, OCSP, LDAP, DNS; ANSI: X9-42, X9-62, X25519, X488; NIST: SECP384r1.","archived":false,"fork":false,"pushed_at":"2024-09-12T16:02:13.000Z","size":47389,"stargazers_count":9,"open_issues_count":16,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-19T00:43:06.509Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://chat.erp.uno","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/synrc.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":"2023-06-11T21:44:16.000Z","updated_at":"2025-08-07T12:24:28.000Z","dependencies_parsed_at":"2025-04-19T07:50:18.936Z","dependency_job_id":null,"html_url":"https://github.com/synrc/chat","commit_stats":{"total_commits":381,"total_committers":4,"mean_commits":95.25,"dds":"0.013123359580052507","last_synced_commit":"d50195c1bb3f228ece4a6703f527077da1209514"},"previous_names":["erpuno/chat","synrc/chat"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/synrc/chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synrc%2Fchat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synrc%2Fchat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synrc%2Fchat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synrc%2Fchat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/synrc","download_url":"https://codeload.github.com/synrc/chat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synrc%2Fchat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271760532,"owners_count":24816441,"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","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"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":[],"created_at":"2024-08-01T13:01:00.197Z","updated_at":"2025-08-23T18:14:51.874Z","avatar_url":"https://github.com/synrc.png","language":"Erlang","funding_links":[],"categories":["Applications"],"sub_categories":[],"readme":"SYNRC 💬 CHAT\n=============\n\n![image](https://github.com/erpuno/chat/assets/144776/b7e0b60b-4b61-4ff6-a8c9-e27f2e4c4e7c)\n\n💬 CHAT: Instant Messenger respects ISO 20922 IETF 3394 3565 5280 5480\n5652 5755 8551 ITU ASN.1 X.509 CMS PKCS-10 PCKS-7 OCSP LDAP DNS X9-42\nX9-62 X25519 X488 SECP384r1.\n\nFeatures\n--------\n\n* X.509 OpenSSL, LiberSSL for security;\n* MQTT for CHAT application;\n* NS for DNSSEC domain security;\n* LDAP for user directory;\n* SYN/MAIL message delivery system;\n* CA for X.509 client certificate enrollment;\n* N2O based CHAT protocol.\n\nCHAT protocol\n-------------\n\nThe CHAT protocols communicates with `actions/:client`, `events/:client`, `devices/:phone`,\n`contacts/:roster`, `private/:roster/:roster` MQTT topics, sending through them\n`Index`, `Typing`, `Search`, `Feature`, `Service`, `Desc`, `Presence`,\n`Friend`, `Tag`,  `Link`, `Message`, `Member`, `Room`, `Contact`,\n`Star`, `RoomStar`, `Ack`, `Auth`, `Roster`, `Profile`, `History`, `push`, `io`\nETF-serialized messages.\n\nThe CHAT protocol is implemented in the set of sub-protocol modules:\nFILE, HISTORY, LINK, MESSAGE, PRESENSE, PROFILE, PUSH, ROOM, ROSTER,\nSEARCH, AUTH. For full specification follow `priv/design` folder. \nThe CHAT server implementation relies only on ISO/IETF connections\nsuch as DNSSEC, X.509 CSR, LDAP, QUIC, WebSocket, MQTT.\n\n* [CHAT N2O PROTO SPEC](priv/proto/CHAT.asn1) Erlang Term Format ETF/BERT over MQTT/QUIC\n\nCHAT is a simple instant messaging server based on ISO standards.\nIt uses MQTT protocol and ETF binary serialization from Erlang/OTP\nacross applications: MQTT, N2O, KVS, MAIL, LDAP, NS, CA. Secure by default.\nThe CHAT application has Sign/Verify, Encrypt/Decrypt feature enabled for\nevery single message passed by. The delivered messages are being deleted\nfrom MQTT instance after recipient acknowledgment.\nThis is Keybase, OTR, PGP (you name it) replacement for secure X.509 ASN.1 defined communications.\n\nMQTT server\n-----------\n\n```sh\n$ sudo apt install mosquitto mosquitto-clients\n$ mosquitto -c mosquitto.conf\n$ mosquitto_sub -p 8883 -t topic --cafile \"caroot.pem\" \\\n                --cert \"client.pem\" --key \"client.key\"\n$ mosquitto_pub -p 8883 -t topic --cafile \"caroot.pem\" \\\n                --cert \"client.pem\" --key \"client.key\" -m \"HELLO\"\n```\n\n\nCHAT server\n-----------\n\n```sh\n$ sudo apt install erlang elixir build-essential libcsv3 libcsv-dev cmake\n$ git clone git@github.com:synrc/mq \u0026\u0026 cd mq\n$ mix deps.get\n$ mix release\n$ _build/dev/rel/chat/bin/chat daemon\n$ _build/dev/rel/chat/bin/chat remote\n```\n\n```elixir\nErlang/OTP 24 [erts-12.2.1] [source] [64-bit] [smp:12:12]\n    [ds:12:12:10] [async-threads:1] [jit]\n\nInteractive Elixir (1.12.2) - press Ctrl+C to exit (type h() ENTER for help)\niex(1)\u003e :application.which_applications\n[\n  {:chat, 'CHAT X.509 Instant Messenger mqtt://chat.synrc.com', '6.6.14'},\n  {:kvs, 'KVS Abstract Chain Database', '8.10.4'},\n  {:ssl_verify_fun, 'SSL verification functions for Erlang\\n', '1.1.6'},\n  {:n2o, 'N2O MQTT TCP WebSocket', '8.8.1'},\n  {:emqtt, 'Erlang MQTT v5.0 Client', '1.2.1'},\n  {:mnesia, 'MNESIA  CXC 138 12', '4.20.1'},\n  {:cowboy, 'Small, fast, modern HTTP server.', '2.5.0'},\n  {:ranch, 'Socket acceptor pool for TCP protocols.', '1.6.2'},\n  {:cowlib, 'Support library for manipulating Web protocols.', '2.6.0'},\n  {:hex, 'hex', '2.0.0'},\n  {:inets, 'INETS  CXC 138 49', '7.5'},\n  {:ssl, 'Erlang/OTP SSL application', '10.6.1'},\n  {:public_key, 'Public key infrastructure', '1.11.3'},\n  {:asn1, 'The Erlang ASN1 compiler version 5.0.17', '5.0.17'},\n  {:crypto, 'CRYPTO', '5.0.5'},\n  {:mix, 'mix', '1.12.2'},\n  {:iex, 'iex', '1.12.2'},\n  {:elixir, 'elixir', '1.12.2'},\n  {:compiler, 'ERTS  CXC 138 10', '8.0.4'},\n  {:stdlib, 'ERTS  CXC 138 10', '3.17'},\n  {:kernel, 'ERTS  CXC 138 10', '8.2'}\n]\n```\n\nMQTT client\n-----------\n\n```elixir\niex(2)\u003e pid = :chat.connect\nMQTT Server Connection: \u003c0.790.0\u003e#PID\u003c0.790.0\u003e\niex(3)\u003e :chat.sub pid\n{:ok, :undefined, [0]}\niex(4)\u003e :chat.pub pid\n:ok\niex(5)\u003e flush\n{:publish,\n %{\n   client_pid: #PID\u003c0.790.0\u003e,\n   dup: false,\n   packet_id: :undefined,\n   payload: \"Hello World!\",\n   properties: :undefined,\n   qos: 0,\n   retain: false,\n   topic: \"hello\"\n }}\n:ok\n```\n\nCHAT client\n-----------\n\nThe CHAT comes with Elixir shell console `chat_x509` module.\n\n\u003cimg src=\"https://github.com/synrc/chat/assets/144776/2593b330-8c19-4813-a3c6-59f1b6f120d3\" width=500\u003e\n\n\u003cimg src=\"https://github.com/synrc/chat/assets/144776/ae0ab82b-48c2-4617-951c-c15344c558a1\" width=500\u003e\n\n\u003cimg src=\"https://github.com/synrc/chat/assets/144776/c6ed4fc5-d077-473b-b18c-62f82a41fa98\" width=500\u003e\n\n\nDevelopment Reports\n-------------------\n\n* [DR-1] \u003ca href=\"https://tonpa.guru/stream/2010/2010-10-18 LDAP.htm\"\u003e2010-10-18 LDAP\u003c/a\u003e\u003cbr\u003e\n* [DR-2] \u003ca href=\"https://tonpa.guru/stream/2020/2020-02-03 Кваліфікований Електронний Підпис.htm\"\u003e2020-02-03 Кваліфікований Підпис\u003c/a\u003e\u003cbr\u003e\n* [DR-3] \u003ca href=\"https://tonpa.guru/stream/2023/2023-06-22 Месенжер.htm\"\u003e2023-06-22 CMS Месенжер (Пітч)\u003c/a\u003e\u003cbr\u003e\n* [DR-4] \u003ca href=\"https://chat.erp.uno\"\u003e2023-06-30 ЧАТ X.509 (Домашня сторінка)\u003c/a\u003e\u003cbr\u003e\n* [DR-5] \u003ca href=\"https://tonpa.guru/stream/2023/2023-07-05 CMS SMIME.htm\"\u003e2023-07-05 CMS S/MIME\u003c/a\u003e\u003cbr\u003e\n* [DR-6] \u003ca href=\"https://tonpa.guru/stream/2023/2023-07-16 CMS Compliance.htm\"\u003e2023-07-16 CMS Compliance\u003c/a\u003e\u003cbr\u003e\n* [DR-7] \u003ca href=\"https://tonpa.guru/stream/2023/2023-07-20 LDAP Compliance.htm\"\u003e2023-07-20 LDAP Compliance\u003c/a\u003e\u003cbr\u003e\n* [DR-8] \u003ca href=\"https://ldap.erp.uno\"\u003e2023-07-25 LDAP 13.7.24 (Домашня сторінка)\u003c/a\u003e\u003cbr\u003e\n* [DR-9] \u003ca href=\"https://ca.erp.uno\"\u003e2023-07-30 CA X.509 (Домашня сторінка)\u003c/a\u003e\u003cbr\u003e\n* [DR-10] \u003ca href=\"https://tonpa.guru/stream/2023/2023-07-21 CMP CMC EST.htm\"\u003e2023-07-21 CMP/CMC/EST\u003c/a\u003e\u003cbr\u003e\n* [DR-11] \u003ca href=\"https://tonpa.guru/stream/2023/2023-07-27 MLS.htm\"\u003e2023-07-21 MLS ROOM CHAT\u003c/a\u003e\u003cbr\u003e\n* [DR-12] \u003ca href=\"https://tonpa.guru/stream/2023/2023-08-05 CA CURVE.htm\"\u003e2023-08-05 CA CURVE\u003c/a\u003e\u003cbr\u003e\n* [DR-13] \u003ca href=\"https://tonpa.guru/stream/2023/2023-08-07 CHAT ASN.1.htm\"\u003e2023-08-07 CHAT ASN.1\u003c/a\u003e\u003cbr\u003e\n* [DR-14] \u003ca href=\"https://tonpa.guru/stream/2023/2023-08-08 ASN.1 Компілятор.htm\"\u003e2023-08-08 ASN.1 Компілятор\u003c/a\u003e\u003cbr\u003e\n* [DR-15] \u003ca href=\"https://tonpa.guru/stream/2023/2023-08-10 CHAT Техзавдання.htm\"\u003e2023-08-10 CHAT Техзавдання\u003c/a\u003e\u003cbr\u003e\n* [DR-16] \u003ca href=\"https://tonpa.guru/stream/2023/2023-08-11 ITU X Series.htm\"\u003e2023-08-11 ITU X Series\u003c/a\u003e\u003cbr\u003e\n* [DR-17] \u003ca href=\"https://tonpa.guru/stream/2023/2023-08-13 SWIFT X.509.htm\"\u003e2023-08-13 SWIFT X.509\u003c/a\u003e\u003cbr\u003e\n* [DR-18] \u003ca href=\"https://tonpa.guru/stream/2023/2023-08-15 CHAT Техноробочий проєкт.htm\"\u003e2023-08-15 CHAT Техноробочий проєкт\u003c/a\u003e\u003cbr\u003e\n* [DR-19] \u003ca href=\"https://tonpa.guru/stream/2023/2023-09-01 ASN1.EX X.680.htm\"\u003e2023-09-01 ASN1.EX X.680 Тензори\u003c/a\u003e\u003cbr\u003e\n* [DR-20] \u003ca href=\"https://tonpa.guru/stream/2023/2023-09-07 Криптоніт.htm\"\u003e2023-09-07 Криптоніт\u003c/a\u003e\u003cbr\u003e\n\nCredits\n-------\n\n* Namdak Tonpa\n\nOM A HUM\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsynrc%2Fchat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsynrc%2Fchat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsynrc%2Fchat/lists"}