{
  "title": "File signature verifier",
  "human_url": "https://happytails.ai/en/developer-tools/file-signature-verifier/",
  "agent_url": "https://happytails.ai/agents/en/developer-tools/file-signature-verifier/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/developer-tools/file-signature-verifier.md",
  "content": "File signature verifier\nCheck a detached signature for a file in your browser against a public key you trust. Supports SSH signatures from ssh-keygen -Y sign, minisign signatures and raw RSA, ECDSA or Ed25519 signatures from OpenSSL.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nHow to use File signature verifier\nChoose the file that was signed.\nPaste the public key you expect the signer to use.\nPaste the signature text, such as the SSH SIGNATURE block or the .minisig file.\nRun the tool and read the verdict and each check.\nUseful next steps\nFile hash\nHMAC generator\nRSA key generator\nFormats\nSSH signatures follow the OpenSSH PROTOCOL.sshsig format: the namespace must match and the key inside the signature must equal the key you paste. minisign signatures are checked for the key ID, the file signature (Ed25519, or Ed25519 over BLAKE2b-512 from RFC 7693 for prehashed signatures) and the trusted comment signature. Raw signatures from openssl dgst -sign or pkeyutl are checked with the algorithm you pick, or one chosen from the key type.\nWhat a valid result means\nThe file matches a signature made with the private key that belongs to your public key. Whether that key really belongs to the publisher is up to you, so get the key from a source you trust, not from the same download page as the file.\nNot supported\nOpenPGP signatures, FIDO security key SSH signatures, SHA-1 based ssh-rsa signatures and RSA-PSS raw signatures are not checked here.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "File hash",
      "url": "https://happytails.ai/en/developer-tools/file-hash/"
    },
    {
      "name": "HMAC generator",
      "url": "https://happytails.ai/en/developer-tools/hmac-generator/"
    },
    {
      "name": "RSA key generator",
      "url": "https://happytails.ai/en/developer-tools/rsa-key-generator/"
    }
  ],
  "tool": {
    "id": "file-signature-verifier",
    "category": "developer-tools",
    "built": true,
    "requirements": "One file of up to 64 MiB, a public key and a signature of up to 20000 characters each. The file is read and hashed locally in a background worker; nothing is uploaded. Download a JSON report.",
    "implementation": {
      "fields": [
        {
          "key": "publicKey",
          "label": "Public key you trust",
          "value": "",
          "type": "textarea",
          "help": "OpenSSH public key line, PEM public key or certificate, public JWK, or minisign public key."
        },
        {
          "key": "signature",
          "label": "Signature",
          "value": "",
          "type": "textarea",
          "help": "SSH SIGNATURE block, all four lines of a .minisig file, or a Base64 or hex signature."
        },
        {
          "key": "format",
          "label": "Signature format",
          "value": "auto",
          "type": "select",
          "values": [
            "auto",
            "sshsig",
            "minisign",
            "raw"
          ]
        },
        {
          "key": "namespace",
          "label": "SSH signature namespace",
          "value": "file",
          "type": "text"
        },
        {
          "key": "rawAlgorithm",
          "label": "Algorithm for raw signatures",
          "value": "auto",
          "type": "select",
          "values": [
            "auto",
            "RSASSA-PKCS1-v1_5 SHA-256",
            "RSASSA-PKCS1-v1_5 SHA-384",
            "RSASSA-PKCS1-v1_5 SHA-512",
            "ECDSA SHA-256",
            "ECDSA SHA-384",
            "ECDSA SHA-512",
            "Ed25519"
          ]
        }
      ],
      "registrationFamily": "crypto-formats-key-material",
      "files": true,
      "input": false,
      "maxFileBytes": 67108864,
      "note": "The file is checked in your browser and never uploaded. One file of up to 64 MiB.",
      "experience": {
        "automatic": false,
        "single": false,
        "inputMaxLength": 1000000,
        "inputMode": "text",
        "label": "File",
        "placeholder": "Choose the signed file",
        "help": "Pick the exact file that was signed, such as a release archive. Up to 1,000,000 characters. Review the settings before running.",
        "action": null
      },
      "mode": "explicit",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# File signature verifier\n\n- Human page: https://happytails.ai/en/developer-tools/file-signature-verifier/\n- Markdown: https://happytails.ai/en/developer-tools/file-signature-verifier.md\n- Structured JSON: https://happytails.ai/agents/en/developer-tools/file-signature-verifier/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `file-signature-verifier` |\n| Category | developer-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Use the visible action or interactive controls. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nThe file is checked in your browser and never uploaded. One file of up to 64 MiB.\n\n### Inputs and settings\n\nNo free-text input is required. Use the file inputs and/or settings below.\n\nAccepted browser files: `See implementation notes`. Choose one file.\n\nBrowser file-input limit: 67108864 bytes in total. HTTP limits can differ.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `publicKey` | Public key you trust | textarea | \"\" |  |\n| `signature` | Signature | textarea | \"\" |  |\n| `format` | Signature format | select | \"auto\" | Allowed: auto, sshsig, minisign, raw |\n| `namespace` | SSH signature namespace | text | \"file\" |  |\n| `rawAlgorithm` | Algorithm for raw signatures | select | \"auto\" | Allowed: auto, RSASSA-PKCS1-v1_5 SHA-256, RSASSA-PKCS1-v1_5 SHA-384, RSASSA-PKCS1-v1_5 SHA-512, ECDSA SHA-256, ECDSA SHA-384, ECDSA SHA-512, Ed25519 |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nOne file of up to 64 MiB, a public key and a signature of up to 20000 characters each. The file is read and hashed locally in a background worker; nothing is uploaded. Download a JSON report.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"file-signature-verifier\",\n  \"category\": \"developer-tools\",\n  \"built\": true,\n  \"requirements\": \"One file of up to 64 MiB, a public key and a signature of up to 20000 characters each. The file is read and hashed locally in a background worker; nothing is uploaded. Download a JSON report.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"publicKey\",\n        \"label\": \"Public key you trust\",\n        \"value\": \"\",\n        \"type\": \"textarea\",\n        \"help\": \"OpenSSH public key line, PEM public key or certificate, public JWK, or minisign public key.\"\n      },\n      {\n        \"key\": \"signature\",\n        \"label\": \"Signature\",\n        \"value\": \"\",\n        \"type\": \"textarea\",\n        \"help\": \"SSH SIGNATURE block, all four lines of a .minisig file, or a Base64 or hex signature.\"\n      },\n      {\n        \"key\": \"format\",\n        \"label\": \"Signature format\",\n        \"value\": \"auto\",\n        \"type\": \"select\",\n        \"values\": [\n          \"auto\",\n          \"sshsig\",\n          \"minisign\",\n          \"raw\"\n        ]\n      },\n      {\n        \"key\": \"namespace\",\n        \"label\": \"SSH signature namespace\",\n        \"value\": \"file\",\n        \"type\": \"text\"\n      },\n      {\n        \"key\": \"rawAlgorithm\",\n        \"label\": \"Algorithm for raw signatures\",\n        \"value\": \"auto\",\n        \"type\": \"select\",\n        \"values\": [\n          \"auto\",\n          \"RSASSA-PKCS1-v1_5 SHA-256\",\n          \"RSASSA-PKCS1-v1_5 SHA-384\",\n          \"RSASSA-PKCS1-v1_5 SHA-512\",\n          \"ECDSA SHA-256\",\n          \"ECDSA SHA-384\",\n          \"ECDSA SHA-512\",\n          \"Ed25519\"\n        ]\n      }\n    ],\n    \"registrationFamily\": \"crypto-formats-key-material\",\n    \"files\": true,\n    \"input\": false,\n    \"maxFileBytes\": 67108864,\n    \"note\": \"The file is checked in your browser and never uploaded. One file of up to 64 MiB.\",\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"File\",\n      \"placeholder\": \"Choose the signed file\",\n      \"help\": \"Pick the exact file that was signed, such as a release archive. Up to 1,000,000 characters. Review the settings before running.\",\n      \"action\": null\n    },\n    \"mode\": \"explicit\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nCheck a detached signature for a file in your browser against a public key you trust. Supports SSH signatures from ssh-keygen -Y sign, minisign signatures and raw RSA, ECDSA or Ed25519 signatures from OpenSSL.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n### How to use File signature verifier\n\n1. Choose the file that was signed.\n2. Paste the public key you expect the signer to use.\n3. Paste the signature text, such as the SSH SIGNATURE block or the .minisig file.\n4. Run the tool and read the verdict and each check.\n\n## Useful next steps\n\n- [File hash](https://happytails.ai/en/developer-tools/file-hash/) ([Markdown](https://happytails.ai/en/developer-tools/file-hash.md))\n\n- [HMAC generator](https://happytails.ai/en/developer-tools/hmac-generator/) ([Markdown](https://happytails.ai/en/developer-tools/hmac-generator.md))\n\n- [RSA key generator](https://happytails.ai/en/developer-tools/rsa-key-generator/) ([Markdown](https://happytails.ai/en/developer-tools/rsa-key-generator.md))\n\n## Formats\n\nSSH signatures follow the OpenSSH PROTOCOL.sshsig format: the namespace must match and the key inside the signature must equal the key you paste. minisign signatures are checked for the key ID, the file signature (Ed25519, or Ed25519 over BLAKE2b-512 from RFC 7693 for prehashed signatures) and the trusted comment signature. Raw signatures from openssl dgst -sign or pkeyutl are checked with the algorithm you pick, or one chosen from the key type.\n\n### What a valid result means\n\nThe file matches a signature made with the private key that belongs to your public key. Whether that key really belongs to the publisher is up to you, so get the key from a source you trust, not from the same download page as the file.\n\n### Not supported\n\nOpenPGP signatures, FIDO security key SSH signatures, SHA-1 based ssh-rsa signatures and RSA-PSS raw signatures are not checked here.\n"
}