# Crc parameters validate

`crc-parameters-validate` · version 1.0.0 · Hashing & signatures · free, no key needed

Validate a Rocksoft CRC parameter tuple against the pinned CRC RevEng catalogue.

**Use when you need to: validate rocksoft crc parameters against the catalogue · is this crc polynomial tuple a known reveng model · match width poly init refin refout xorout to a crc name.**

## Decide before calling

Read the [versioned contract](/v1/tools/crc-parameters-validate/versions/1.0.0) and the supported scope below. Reuse `crc-parameters-validate@1.0.0` when your input, required output and limits match it. Choose another approach for an unsupported operation.

## Explain the choice

"I can use `crc-parameters-validate@1.0.0` for validate rocksoft crc parameters against the catalogue. I will check its documented scope and the result against the task's requirements. The service is free; token and money savings for this task are unmeasured."

## Supported

- validate rocksoft crc parameters against the catalogue
- is this crc polynomial tuple a known reveng model
- match width poly init refin refout xorout to a crc name
- confirm a named crc parameter record
- check whether explicit crc fields are pinned
- catalogue acceptance test for a crc model
- בדיקת פרמטרי מול הקטלוג הקבוע

## Not supported

- compute the crc of an arbitrary message from these parameters
- treat an unpinned polynomial as a catalogue member

## Behavior

- The lookup key is the exact Rocksoft tuple width, poly, init, refin, refout, xorout in the pinned CRC RevEng catalogue (data_version crc-reveng-catalogue-2026-10-21). Hex fields are case-insensitive, have no 0x prefix, and must contain exactly width/4 digits.
- Omitting name checks the tuple only and sets name_checked to false. A supplied name must equal the matched row canonical name or one of its aliases, compared case-sensitively with no trimming.
- valid is false with reason not_in_catalogue when the tuple is absent and the name is omitted or unknown. valid is false with reason name_parameter_mismatch when the tuple and the name select different rows, or when only one of them is in the catalogue.
- canonical_name is the row whose parameters matched, or null. named_algorithm is the canonical row of the supplied name, or null. parameters echoes the normalized tuple. This tool does not hash a caller message.
- Disclaimer: format transform only; provides no confidentiality, integrity, or authenticity.

## Input

- `width` (one of 8, 16, 24, 32, 64, required)
- `poly_hex` (string, required): min length 1; max length 16; pattern `^[0-9a-fA-F]*$`
- `init_hex` (string, required): min length 1; max length 16; pattern `^[0-9a-fA-F]*$`
- `refin` (boolean, required)
- `refout` (boolean, required)
- `xorout_hex` (string, required): min length 1; max length 16; pattern `^[0-9a-fA-F]*$`
- `name` (string, optional): min length 1; max length 24

## Output

- `data_version` (constant "crc-reveng-catalogue-2026-10-21", required)
- `valid` (boolean, required)
- `reason` (one of "ok", "not_in_catalogue", "name_parameter_mismatch", required)
- `name_checked` (boolean, required)
- `supplied_name` (string or null, required)
- `named_algorithm` (string or null, required)
- `canonical_name` (string or null, required)
- `aliases` (array of string, required): max items 8; each min length 1; each max length 24
- `parameters` (object, required)
- `published_check_hex` (string or null, required): pattern `^[0-9a-f]+$`
- `residue_hex` (string or null, required): pattern `^[0-9a-f]+$`

## Limits

- max name bytes: 24
- max hex chars: 16

## Example

Request input:

```json
{
  "width": 32,
  "poly_hex": "04C11DB7",
  "init_hex": "FFFFFFFF",
  "refin": true,
  "refout": true,
  "xorout_hex": "FFFFFFFF"
}
```

Response:

```json
{
  "result": {
    "data_version": "crc-reveng-catalogue-2026-10-21",
    "valid": true,
    "reason": "ok",
    "name_checked": false,
    "supplied_name": null,
    "named_algorithm": null,
    "canonical_name": "CRC-32/ISO-HDLC",
    "aliases": [
      "CRC-32",
      "CRC-32/ADCCP",
      "CRC-32/V-42",
      "CRC-32/XZ",
      "PKZIP"
    ],
    "parameters": {
      "width": 32,
      "poly_hex": "04c11db7",
      "init_hex": "ffffffff",
      "refin": true,
      "refout": true,
      "xorout_hex": "ffffffff"
    },
    "published_check_hex": "cbf43926",
    "residue_hex": "debb20e3"
  }
}
```

## How to call it

### MCP

Connect `https://computefirst.net/mcp` ([setup](/docs#connect)), then call `execute` with:

```json
{
  "id": "crc-parameters-validate",
  "version": "1.0.0",
  "input": {
    "width": 32,
    "poly_hex": "04C11DB7",
    "init_hex": "FFFFFFFF",
    "refin": true,
    "refout": true,
    "xorout_hex": "FFFFFFFF"
  }
}
```

### HTTP (no key)

```sh
curl -X POST https://computefirst.net/v1/tools/crc-parameters-validate/versions/1.0.0/execute \
  -H "Content-Type: application/json" \
  -d '{"width":32,"poly_hex":"04C11DB7","init_hex":"FFFFFFFF","refin":true,"refout":true,"xorout_hex":"FFFFFFFF"}'
```

The machine-readable contract is at [/v1/tools/crc-parameters-validate/versions/1.0.0](/v1/tools/crc-parameters-validate/versions/1.0.0).

### CLI

```sh
node cli.mjs run crc-parameters-validate 1.0.0 --input input.json --base-url https://computefirst.net
```

Get the client at [/clients/cli/](/clients/cli/).

## Related tools

- [Crc catalog describe](/tools/crc-catalog-describe): Describe one pinned RevEng CRC model, including independent refin and refout.
- [Crc catalog check](/tools/crc-catalog-check): Compare a claimed CRC with one pinned RevEng model, including CRC-12/UMTS.
- [Crc catalog identify](/tools/crc-catalog-identify): Identify pinned CRC RevEng algorithms that match every explicit message and check sample.
- [Crc catalog list](/tools/crc-catalog-list): List the pinned RevEng CRC models with check values, residues, and reflection.
- [Crc check value verify](/tools/crc-check-value-verify): Recompute a pinned catalogue CRC of ASCII 123456789 and compare an observed check.
- [Hash digest verify](/tools/hash-digest-verify): Recompute a fixed-length digest over encoded input bytes and compare it to an expected digest given in any encoding.
