{"id":31236925,"url":"https://github.com/maymeow/verifier","last_synced_at":"2025-09-22T16:12:45.032Z","repository":{"id":313287454,"uuid":"960477541","full_name":"MayMeow/verifier","owner":"MayMeow","description":"MinSig provides a decentralized and secure way to create, verify, and manage claims using cryptographic signatures and key attestations.","archived":false,"fork":false,"pushed_at":"2025-09-02T11:32:41.000Z","size":151,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-17T10:01:11.674Z","etag":null,"topics":["claim","cryptography","decentralized","php","verification"],"latest_commit_sha":null,"homepage":"https://claims.maymeow.dev","language":"HTML","has_issues":true,"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/MayMeow.png","metadata":{"files":{"readme":"Readme.jp.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":"2025-04-04T13:58:49.000Z","updated_at":"2025-09-02T11:32:45.000Z","dependencies_parsed_at":"2025-09-05T03:43:35.988Z","dependency_job_id":"1d6de106-c00d-4624-aa27-1f831dc25ce2","html_url":"https://github.com/MayMeow/verifier","commit_stats":null,"previous_names":["maymeow/verifier"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MayMeow/verifier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayMeow%2Fverifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayMeow%2Fverifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayMeow%2Fverifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayMeow%2Fverifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MayMeow","download_url":"https://codeload.github.com/MayMeow/verifier/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayMeow%2Fverifier/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276431592,"owners_count":25641296,"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-09-22T02:00:08.972Z","response_time":79,"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":["claim","cryptography","decentralized","php","verification"],"created_at":"2025-09-22T16:12:41.144Z","updated_at":"2025-09-22T16:12:45.026Z","avatar_url":"https://github.com/MayMeow.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MinSig: 公開鍵を用いた所有権の証明ツール\n\n\u003e [!CAUTION]\n\u003e このツールは、公開鍵を用いた所有権証明の初期アルファ版デモです。テストと探索のみを目的として提供されており、本番環境での使用は推奨されません。仕様は変更される可能性があり、ご自身の責任においてご利用ください。\n\nMinSigは、ブラウザ上で動作する軽量なツール（オプションでPHPバックエンドを搭載）で、公開鍵暗号技術を用いて署名された主張（クレーム）を生成および検証します。\n\nこのツールを使用すると、以下のことができます：\n\n- 🔐 ブラウザ上でRSAキーペアを生成し、保存する\n- ✍️ 署名付きのデジタルクレーム（所有権、メンバーシップ、身元確認などの主張）を作成する\n- 🧾 Base64またはJSON形式で署名付きのクレームバンドルをダウンロードする\n- 🔍 公開鍵暗号技術を用いて、クレームの真正性を検証する\n\nこのツールは、ポータブルで検証可能な形式で、メッセージや声明の所有権または作者の証明が必要な場合に最適です。\n\n## 使用例\n\n- ドメイン、アプリケーション、アカウントの所有権を証明する\n- 暗号化されたアテステーションまたは証明書を発行する\n- 分散型または相互運用型システムで身元を検証する\n- 他のアプリケーションに検証可能なクレームを埋め込む\n- 自身のクレームをレポジトリに保存する\n    - `claim=claim:64fc94e2@github.com/yuna/claims`\n\nBase64文字列での検証を可能にする `claim.json` またはクレームIDでシンプル `claim:64fc94e2@github.com/yuna/claims` のようにすることで、誰でもすべてのクレームを単一のレポジトリに保存できます。これは、メタタグ `\u003cmeta name=\"claim\" content=\"claim:...\" /\u003e` やDNS、App Manifestで使用するのに便利です。\n\n誰でも自分のレポジトリにクレームを登録して所有権を証明できます。\n\n## 署名の形式\n\n```json\n{\n    \"claim\": {\n        \"id\": \"lz628BlfMsVdOXvaub+dCKcChbLheaudPYkRBbI3Ae4=\", // claim id in base64, filenames are using hex notation\n        \"version\": \"1.1\",\n        \"type\": \"ownership-claim\",\n        \"subject\": \"maymeow/app-store\",\n        \"message\": \"I, MayMeow, claim ownership of the GitHub project above.\",\n        \"timestamp\": \"2025-04-05T16:37:03Z\"\n    },\n    \"signature\": \"ReDTcD5QzE60HACIZzD/rg...t8=\",\n    \"publicKey\": \"MIICI...8CAwEAAQ==\",\n    \"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIC...Q==\\n-----END PUBLIC KEY-----\\n\",\n}\n```\n\n## DNSへのクレームの登録\n\nSwiftコードを使用します：\n\n```bash\nclaim:{{ claim_id_in_hex }}@{{ url_to_claim }}\n\n# claim:cc59e45d39a6f44552470d7a44149a28e7c02d92e69363a9294b21d50da9d138@github:maymeow/claims\n# claim:cc59e45d39a6f44552470d7a44149a28e7c02d92e69363a9294b21d50da9d138@mydomain.tld\n# claim:identity@codeberg.org/maymeow/claims\n```\n\n`{{ claim_id }}.claim.json` ファイルをインターネットからアクセス可能な場所に保存します\n\n\n```bash\n# TXT Record _claim.domainname.com With content\nclaim:cc59e45d39a6f44552470d7a44149a28e7c02d92e69363a9294b21d50da9d138@github:maymeow/claims\nclaim:cc59e45d39a6f44552470d7a44149a28e7c02d92e69363a9294b21d50da9d138@url:mydomain.tld\n```\n\n```bash\nclaim:d2113ed048caa66efd26565d3a6b0ebe80587edce8f28263dcbff5c7867ca345@codeberg:maymeow/claims\n```\n\n`{{ server_url }}/.well-known/{{ claim_id }}.claim.json` を参照します。\n\n## 公開鍵の登録\n\n他の人があなたの鍵を見つけられるようにするには、Swiftコードを使ってパスに鍵を配置し `.keys` フォルダに配置します。 `public_key_{{ key_id }}.txt` を公開しないでください。 サービスは承認されていないリクエストをブロックするため、認証されていないリクエストが送信される可能性があります。\n\n```bash\nkey-id:64905ab2ecf4ca4f9003f3e70e28d4d36fe2def2884734bb1dc1889a0e5ba5ec@your-domain.tld\n```\n\n## メタタグへのクレームの登録\n\n```html\n\u003cmeta name=\"claim\" content=\"claim:cc59e45d39a6f44552470d7a44149a28e7c02d92e69363a9294b21d50da9d138@github.com/maymeow/claims\" /\u003e\n```\n\n## URLs \n\nウェブサイトのリンクにクレームを含めるには、URLに安全なエンコードされたSwiftコードを作成する必要があります。 `urlencode.php` ファイルをリポジトリのルートに保存します。\n\nリンクは次のようになります。\n\n```bash\nhttp://localhost:8000/swift?q=Y2xhaW06ODNhODg3YjU1YjkwOTNmYTBjMDEzYzFiM2U2MTYyODNiMWMyNmJiMGQzMGI5ZmM0YzI3ZWZiNzAyYjQxZDk3M0BnaXRodWI6bWF5bWVvdy9jbGFpbXM%3D\n```\n\nローカルホストでサーバーを実行した場合、ウェブサイトの検証が成功するかどうかを確認できます。\n\n## Githubリポジトリ\n\nクレームファイルをリポジトリのルートに保存します。例えば `.claim.json` または `.claims/claim-name.claim.json`. フォルダを使用します。\n\nWhen you want use your repoisotry as a storage for your claims put them into `.well-known/{{ claim_id_in_hex }}.claim.json`\n\n## 目的と活用方法\n\n- **主張（クレーム）の作成**: 何かの所有権や所属を証明するための主張を作成します。\n- **オープンソースで使いやすいツール**: オープンソースであり、CLI（コマンドラインインターフェ\n- **DNSへの登録**: DNSレコード (`_claim.domain.tld`) にクレーム情報を登録し、ウェブページで `\u003cmeta name=\"claim\" content=\"...\"\u003e` や `rel=\"claim\"` などのメタタグにクレーム情報を関連付けます。\n- **分散型アーキテクチャ**: クレームには署名と公開鍵を含め、分散型アーキテクチャをサポートします。\n- **ユーザーによるレポジトリホスティング**: ユーザーがGitHubやウェブ上の任意のストレージに自身のクレームレポジトリをホスティングできるようにします\n\n## More to come\n\n- Derive key fingerprints: hash the public key (e.g. SHA256) to use as an identity hash.\n- QR code generator with embedded claim\n- Consider offline key for master identity, Use one key to sign sub-identity keys (a mini Web-of-Trust)\n\n## How i can provide connection between owner and key?\n\nIn current state You can place keys into reposiotory, dns and meta tags as a reference to your storage. The verifier will check signature and tell thats if it is valid or no.\n\nHow to providfe connection? \"web-of-trust\"?\n\n## プロキシ\n\nCORS（クロスオリジンリソース共有）を許可されないサービスが存在する問題に対処するため、プロキシを実装しました。\n\n当初は、シンプルかつ分散型の仕組みを目指していましたが、現時点ではプロキシをホストするか、私の環境を利用する必要があります。後ほどドキュメントとDockerイメージで対応する方法を追加します。\n\nフロントエンドに関しては、GitHub PagesやVercelなど、一般的なホスティング環境であれば問題なく動作します。\n\nCORS問題を回避するために、プロキシをフロントエンドに組み込む方法や、CORS設定を無効にする方法が存在しましたが、いずれも推奨されません。特に後者の方法は危険であるため、安全性を確保し、ブラウザの設定を変更しないため、シンプルにプロキシを導入するのが最良の選択肢となります。\n\n## From start to end\n\n- Created php CLI\n- Verifier that can verify json files\n- added option to verify base64\n- added claim reference (Swift codes) that can be applied on sites, dns, etc\n- discused how to add relationship between key and owner\n- added support for master-keys and subkeys\n- added key-attestation-claim\n- added option to fetch claim from SWIFT code\n- find that some blocked requests with CORS\n- added proxy with php\n- find that the proxy can be used to ddosing because of lack of authorizadion and so it need to be protected or not hosted public\n- discused rate limiting\n- considering to make docker for frontend and backend (this stop me from first idea to host this system just on static sites)\n- discusing to use Redis (again it is become more complex)\n\n## Current state\n\n- PHP cli for creating new claims\n- Frontend javascript (verifier)\n- Claim-Proxy (fetching claims)\n  - php-fpm\n  - Redis (?)\n\n\n## Features\n\n- CLI signing (PHP)\n- JS browser signing and verifying\n- allow to backup keys\n- Verify json claims\n- Verify base 64 claims\n- fetch claims from url\n- fetch claims from meta takgs\n- fetch claims from dns\n- allow selfhosting\n  - Docker is needed to allow host claims anywhere\n- Badge that can be implemented on website\n\n## 識別子の付与（オプション）\n\n1. `identity-claim` を作成し署名します。\n2. どこかにこのIDを公開します（例えば、GitHubリポジトリ）。\n3. JSONファイルを開き、あなたのIDの内容をコピーします。\n4. このIDをすべてのクレームの `identityClaimId` に設定します。\n\n## 識別子の付与（オプション）\n\nこれはオプションの機能であり、単一のキーを使用することもできます。\n\n1. マスターキーを作成します。\n2. 別のキーを作成します。\n3. `key-attestation-claim` を作成し、あなたの公開キーIDを件名として指定します。\n\n# クレームとキーの公開\n\n| ID | 用途 | 配置場所 |\n| :--- | :--- | :--- |\n| `key-id:{{ key_id }}@{{ source }}` | 公開鍵 | `.keys` |\n| `claim:{{ key_id }}@{{ source }}` | ドメインレベルのクレーム | `.well-known` |\n| `claim:claim@{{ source }}` | リポジトリレベルのクレーム | リポジトリのルート `.claim.json` or `.claims` (複数のクレームを 1 つのリポジトリに保存する場合) |\n\n**注記**: この翻訳は、元のテキストの意図を反映するよう努めましたが、技術的な詳細や特定のフレーズにおいて若干の解釈が異なる可能性があります。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaymeow%2Fverifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaymeow%2Fverifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaymeow%2Fverifier/lists"}