{"id":15061131,"url":"https://github.com/erueri/oangou","last_synced_at":"2026-02-07T19:33:22.970Z","repository":{"id":230288535,"uuid":"778523276","full_name":"EruEri/oangou","owner":"EruEri","description":"A peer-to-peer message encryptor","archived":false,"fork":false,"pushed_at":"2024-07-11T21:51:51.000Z","size":14,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-16T20:34:54.633Z","etag":null,"topics":["cli","diffie-hellman","encryption-decryption","ocaml"],"latest_commit_sha":null,"homepage":"","language":null,"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/EruEri.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2024-03-27T21:58:04.000Z","updated_at":"2024-12-13T14:49:15.000Z","dependencies_parsed_at":"2024-03-28T22:24:47.496Z","dependency_job_id":"d74b197e-9759-4c56-8500-760541f0a889","html_url":"https://github.com/EruEri/oangou","commit_stats":null,"previous_names":["erueri/oangou"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EruEri%2Foangou","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EruEri%2Foangou/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EruEri%2Foangou/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EruEri%2Foangou/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EruEri","download_url":"https://codeload.github.com/EruEri/oangou/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243180891,"owners_count":20249388,"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":["cli","diffie-hellman","encryption-decryption","ocaml"],"created_at":"2024-09-24T23:09:43.895Z","updated_at":"2026-02-07T19:33:22.913Z","avatar_url":"https://github.com/EruEri.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Oangou\n\nThe code source is now hosted on [Codeberg](https://codeberg.org/EruEri/oangou)\n\nA program to encrypt data, send it over an channel, and decrypt it on the other side.\n\n`oangou` works by using public and private keys and the **Diffie–Hellman** key-exchange protocol.\n\n\n## Installation\n\nFirst you will need to install those opam packages.\n```sh\n$ opam install dune xdg yojson cmdliner ppx_deriving_yojson mirage_crypto_ec\n```\n\nBy default the prefix install is `/usr/local`. So oangou binary is installed in `/usr/local/bin` and the man pages in `/usr/local/share/man`. \nBut the `make install` rule reacts to 3 variables:\n- `PREFIX`: \n  - default: `/usr/local`\n- `BINDIR`: \n    - default: `$(PREFIX)/bin`\n- `MANDIR`: \n    - default: `$(PREFIX)/share/man`\n\n```sh\n$ git clone https://github.com/EruEri/oangou\n$ cd oangou\n$ make \n$ make install \n```\n\n## Initialization\n\nTo start with oangou, you first need to initialize it\n\n```\n$ oangou init --help\nNAME\n       oangou-init - Initialize oangou\n\nSYNOPSIS\n       oangou init [--force] [OPTION]…\n\nDESCRIPTION\n       Initialize oangou by creating XDG_DATA_HOME/oangou/.oangourc file\n\n       If oangou has already been initialized, oangou init will raise an\n       exception unless the --force option is given which will delete the\n       existing oangou installation\n\nOPTIONS\n       -f, --force\n           Force the initialisation\n```\n\n## Add\n\nTo add a peer to oangou, you need to get it public key. Once you have it, use `oangou-add`\n```\n$ oangou add --help\nNAME\n       oangou-add - Add peers\n\nSYNOPSIS\n       oangou add [-k \u003cPUBLIC_KEY\u003e] [-p \u003cPEER\u003e] [-x] [OPTION]…\n\nOPTIONS\n       -k \u003cPUBLIC_KEY\u003e (absent=stdin)\n           Associate \u003cPUBLIC_KEY\u003e to \u003cPEER\u003e\n\n       -p \u003cPEER\u003e (required)\n           Add \u003cPEER\u003e to known peers\n\n       -x  Treat the input key as a hexadecimal string\n```\n\nOnce a peer is added, a secret is generated by combining your private key with the peer's public key based on the Elliptic curve Diffie–Hellman.\n\nThe peer will also need of your public key to decrypt your message.\n\n## Export\n\nTo export keys from `oangou` use `oangou export keys` command.\n\n## Encrypt\n\nOnce you have the public key targeted peer, you can encrypt a message from stdin or from a file using `oangou encrypt`\n\n```\n$ oangou encrypt --help\nNAME\n       oangou-encrypt - Encrypt data\n\nSYNOPSIS\n       oangou encrypt [OPTION]…\n\nOPTIONS\n       -i \u003cFILE\u003e (absent=stdin)\n           Encrypt a specific file\n\n       -o \u003cOUTFILE\u003e (absent=stdout)\n           Output the encrypt file to \u003cOUTFILE\u003e\n\n       -p \u003cPEER\u003e (required)\n           Encrypt the file for \u003cPEER\u003e\n\n       -x  Output as a hexadecimal string\n```\n\n## Decrypt\n\nAfter receiving the receiving the encrypted message or file, you can decrypt it using `oangou decrypt`\n\n```\nNAME\n       oangou-decrypt - Decrypt data\n\nSYNOPSIS\n       oangou decrypt [OPTION]…\n\nOPTIONS\n       -i \u003cFILE\u003e (absent=stdin)\n           Decrypt a specific file\n\n       -o \u003cOUTFILE\u003e (absent=stdout)\n           Output the encrypt file to \u003cOUTFILE\u003e\n\n       -p \u003cPEER\u003e (required)\n           Decrypt the file for \u003cPEER\u003e\n\n       -x  Treat input as a hexadecimal string\n```\n\n## Exemple\n\nAlice wants to send the message \"Hello bob from alice\" to Bob.\n\nThis exemple assumes that Alice and Bob know the public key of the other one. \n\n```\n# Alice \n\n$ echo \"Hello bob from alice\" | oangou encrypt -x -p bob\n\u003can_hexadecimal_string\u003e\n```\n\n```\n# Bob\n\n$ echo \"\u003can_hexadecimal_string\u003e\" | oangou decrypt -x -p alice \n\"Hello bob from alice\"\n```\n\n## Warning\n\nMy knownledge on cryptographic is quite limited and don't know if what I do is really that safe or useful so use it at your own risk.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferueri%2Foangou","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferueri%2Foangou","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferueri%2Foangou/lists"}