{"id":34619743,"url":"https://github.com/b0xtch/enzypt","last_synced_at":"2026-05-26T01:03:56.673Z","repository":{"id":95854354,"uuid":"152100818","full_name":"b0xtch/enzypt","owner":"b0xtch","description":"A p2p, end to end encrypted file selling platform utilising Ethereum and IPFS.","archived":false,"fork":false,"pushed_at":"2018-07-25T10:26:49.000Z","size":32,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-26T03:59:43.092Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/b0xtch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-10-08T15:14:05.000Z","updated_at":"2024-10-29T17:42:11.000Z","dependencies_parsed_at":"2023-03-18T10:18:59.265Z","dependency_job_id":null,"html_url":"https://github.com/b0xtch/enzypt","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/b0xtch/enzypt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/b0xtch%2Fenzypt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/b0xtch%2Fenzypt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/b0xtch%2Fenzypt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/b0xtch%2Fenzypt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/b0xtch","download_url":"https://codeload.github.com/b0xtch/enzypt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/b0xtch%2Fenzypt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33499282,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-25T14:31:05.219Z","status":"ssl_error","status_checked_at":"2026-05-25T14:31:02.878Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2025-12-24T15:00:00.913Z","updated_at":"2026-05-26T01:03:56.666Z","avatar_url":"https://github.com/b0xtch.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Enzypt.io\n\n## Contents\n\n- [Overview](#overview)\n- [How does it work?](#how-does-it-work)\n- [API Specification](#api-specification)\n- [Development](#development)\n\n## Overview\nThis is the repository for the [enzypt.io](https://enzypt.io) backend which is hosted at api.enzypt.io. The \"official\" gateway is hosted by [Flex Dapps](https://flexdapps.com), however this code can be used to host your own payment verification gateway.\n\nCrucially, regardless of whoever hosts the server, no server (running this code) can see what's in the files that are being sold through enzypt.\n\nHowever, it should be noted that since the decryption key is passed around in the URL, it is possible for servers to retrieve this key in the event that you are hitting them (for example by navigating to a hosted frontend) instead of using _just_ the API.\n\nEnzypt was made because we thought it was a neat idea, but we don't guarantee anything, this software is provided as-is blah blah blah.\n\n## How Does it Work?\nEnzypt.io hosts a frontend application, which is responsible for handling file zipping/encrypting/uploading. Once the files are uploaded, the enzypt backend API is responsible for verifying that a payment is correct. [ipfs.enzypt.io](https://ipfs.enzypt.io) is a publicly writable IPFS gateway (and we ask you to use it nicely).\n\nIn relatively broad strokes:\n\n- Payload is zipped and encrypted\n- Metadata is encrypted\n- Payload and metadata are uploaded to separate IPFS locations using [ipfs.enzypt.io](https://ipfs.enzypt.io)\n- Payload and metadata hashes are posted to the API\n- Unique payment link is returned to the seller\n- Seller shares the link with buyers\n- Buyer loads the metadata file from /:urlSlug\n- Buyer requests a random string to sign from /rand\n- Buyer posts a signed message to /msg\n- Buyer sends the transaction with the data equal to the return from /msg\n- Buyer sends the transaction hash to /buy\n- API returns the IPFS hash of the payload\n- Buyer downloads and decrypts the payload\n\nMake an issue for any questions.\n\n## API Specification\nAll endpoints should be hit with a `\"Content-Type\": \"application/json\"` header.\n\n### POST /sell\n\nHit this when we have encrypted and uploaded both the zip file and the meta file to IPFS, and we're ready to entrust an enzypt gateway to release the IPFS hash when someone pays for it.\n\nParams\n\n```\n{\n    zipFileHash: String, // IPFS hash of the zip file\n    metaFileHash: String // IPFS hash of the meta file\n    // @todo add the meta file format\n}\n```\n\nReturns\n\n```\nString // The unique url slug for the file\n```\n\n### Buying a File\n\n#### GET /:urlSlug\n\nGet the metadata IPFS hash of a particular file for sale.\n\nReturns\n\n```\nString // The IPFS hash of the metadata file\n```\n\n#### POST /rand\n\nGet a random string to sign to prove that you own a public key.\n\nParams\n\n```\n{\n    publicKey: String // Public key that we're going to prove we own\n}\n```\n\nReturns\n\n```\nString // Random 16 character alphanumeric string\n```\n\n#### POST /msg\n\nPost a signed message to prove that we own a public key and that we want to purchase a particular file.\n\nParams\n\n```\n{\n    signedMessage: String,  // Message signature\n    publicKey: String,      // Key which should be recovered from the signature\n    urlSlug: String         // URL of the file which we're going to buy\n}\n```\n\nReturns\n\n```\nString // Random 32 char hex string to add as data to payment transaction\n```\n\n#### POST /buy\n\nPost a transaction hash to inform the server of a purchase and receive the IPFS file hash of that purchase.\n\nParams\n\n```\n{\n    txHash: String // Transaction hash of the payment transaction\n}\n```\n\nReturns\n\n```\nString // IPFS hash of the purchased zip file\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fb0xtch%2Fenzypt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fb0xtch%2Fenzypt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fb0xtch%2Fenzypt/lists"}