{"id":14967146,"url":"https://github.com/golemfactory/gmorph","last_synced_at":"2025-07-17T12:35:04.464Z","repository":{"id":62439621,"uuid":"205144594","full_name":"golemfactory/gMorph","owner":"golemfactory","description":"Fully Homomorphic Encryption library","archived":false,"fork":false,"pushed_at":"2020-03-25T10:53:00.000Z","size":852,"stargazers_count":25,"open_issues_count":1,"forks_count":4,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-07-02T00:48:34.480Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/golemfactory.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}},"created_at":"2019-08-29T11:06:45.000Z","updated_at":"2023-10-04T23:42:44.000Z","dependencies_parsed_at":"2022-11-01T21:52:52.422Z","dependency_job_id":null,"html_url":"https://github.com/golemfactory/gMorph","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/golemfactory/gMorph","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/golemfactory%2FgMorph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/golemfactory%2FgMorph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/golemfactory%2FgMorph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/golemfactory%2FgMorph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/golemfactory","download_url":"https://codeload.github.com/golemfactory/gMorph/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/golemfactory%2FgMorph/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265606889,"owners_count":23797033,"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":[],"created_at":"2024-09-24T13:37:31.520Z","updated_at":"2025-07-17T12:35:04.448Z","avatar_url":"https://github.com/golemfactory.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003e\u003ccode\u003egmorph\u003c/code\u003e\u003c/h1\u003e\n\n  \u003cp\u003e\n    \u003cstrong\u003eFully homomorphic encryption library for gWasm.\u003c/strong\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/golemfactory/gmorph/actions\"\u003e\u003cimg src=\"https://github.com/golemfactory/gmorph/workflows/Continuous%20Integration/badge.svg\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://crates.io/crates/gmorph\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/gmorph.svg?style=flat-square\" alt=\"Crates.io version\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://crates.io/crates/gmorph\"\u003e\u003cimg src=\"https://img.shields.io/crates/d/gmorph.svg?style=flat-square\" alt=\"Download\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://docs.rs/gmorph/\"\u003e\u003cimg src=\"https://img.shields.io/badge/docs-latest-blue.svg?style=flat-square\" alt=\"docs.rs docs\" /\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n`gMorph` is written entirely in Rust and is meant to be easily cross-compiled to WebAssembly for use in [gWasm].\n\n[gWasm]: https://docs.golem.network/#/Products/Brass-Beta/gWASM\n[here]: https://github.com/golemfactory/gmorph/issues\n\n## Disclaimer\n\n`gMorph` is very much experimental in nature so things are expected\nto break unexpectedly. Also, please note that we make no claims about security of the encryption scheme.\nThis work is provided as the Proof of Concept for FHE on gWASM, basically for demonstration purposes.\nIf you find a bug, please file a bug report [here].\n\n```toml\n# Cargo.toml\n[dependencies]\ngmorph = \"0.1\"\n```\n\n## Example usage:\n\n```rust\nuse gmorph::*;\nuse num_traits::Zero;\n\nlet key_pair = KeyPair::default();\nlet enc: Vec\u003c_\u003e = (1..10)\n    .map(|x| Encoded::encode(x).encrypt(\u0026key_pair))\n    .collect();\nlet enc = enc.into_iter().fold(Encoded::zero(), |acc, x| acc + x);\nlet given = enc.decrypt(\u0026key_pair).decode();\nlet expected: u32 = (1..10).sum();\n\nassert_eq!(expected, given, \"the sums should be equal, and equal to 45\");\n```\n\n## Examples\nYou can find some more examples in [examples](examples) folder.\nFor instance, to run `examples/simple_mul.rs`, invoke:\n\n```\ncargo run --release --example simple_mul\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgolemfactory%2Fgmorph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgolemfactory%2Fgmorph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgolemfactory%2Fgmorph/lists"}