{
  "slug": "secp256k1-pubkey-derive",
  "name": "gizza-ai/secp256k1-pubkey-derive",
  "version": "0.1.0",
  "title": "secp256k1 Public Key from Private Key — gizza.ai",
  "description": "Derive the secp256k1 public key from a private key: compressed (02/03) and uncompressed (04) SEC1 points, plus X and Y coordinates. Hex or WIF input, all in your browser.",
  "tags": [
    "secp256k1",
    "public-key",
    "private-key",
    "bitcoin",
    "ethereum",
    "elliptic-curve"
  ],
  "category": "security",
  "urls": {
    "page": "https://gizza.ai/tools/secp256k1-pubkey-derive/",
    "markdown": "https://gizza.ai/tools/secp256k1-pubkey-derive/index.md",
    "descriptor": "https://gizza.ai/tools/secp256k1-pubkey-derive/tool.json",
    "deep_link_example": "https://gizza.ai/tools/secp256k1-pubkey-derive/?key=0000000000000000000000000000000000000000000000000000000000000001&format=all"
  },
  "cli": "gizza tool secp256k1-pubkey-derive \"0000000000000000000000000000000000000000000000000000000000000001\"",
  "tool": {
    "description": "Derive the secp256k1 public key from a private key. Give key= as 64-char hex (0x/spaces/underscores allowed) or a WIF; the tool computes pubkey = key·G and returns the compressed SEC1 point (33 bytes, 02/03 prefix), the uncompressed point (65 bytes, 04 prefix), the raw X coordinate (32 bytes, also the Taproot x-only key), the raw Y coordinate, and the Y parity. The point is chain-agnostic (Bitcoin/Ethereum/Tron/...). Set format= to compressed, uncompressed, x, or y to return just that bare hex value; default 'all' lists everything. This tool derives from a GIVEN key — it does not generate random keys or emit addresses.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "format": {
          "default": "all",
          "description": "Which representation to return. 'all' (default) lists every field; 'compressed' = 33-byte SEC1 point (02/03 prefix); 'uncompressed' = 65-byte SEC1 point (04 prefix); 'x' = the 32-byte X coordinate (also the Taproot x-only key); 'y' = the 32-byte Y coordinate. Single formats return the bare hex value.",
          "enum": [
            "all",
            "compressed",
            "uncompressed",
            "x",
            "y"
          ],
          "type": "string"
        },
        "key": {
          "description": "The secp256k1 private key: 64 hex characters (0x prefix, spaces, and underscores allowed) or a WIF (base58check, e.g. 5.../K.../L... mainnet, 9.../c... testnet). The WIF's network and compression flag don't affect the public-key point and are ignored.",
          "type": "string"
        }
      },
      "required": [
        "key"
      ],
      "type": "object"
    }
  }
}