Crc catalog check
crc-catalog-check · version 1.0.0 · Hashing & signatures · free, no key needed
Compare a claimed CRC with one pinned RevEng model, including CRC-12/UMTS.
Use when you need to: compare a claimed crc with the catalogue · does this hex crc match crc-12 umts · detect a catalogue crc mismatch.
Decide before calling
Read the versioned contract and the supported scope below. Reuse crc-catalog-check@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-catalog-check@1.0.0 for compare a claimed crc with 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
- compare a claimed crc with the catalogue
- does this hex crc match crc-12 umts
- detect a catalogue crc mismatch
- check an augmented crc claim
- verify pkzip crc against the pinned model
- test a crc-16 modbus claim
- confirm a crc-8 smbus checksum
Not supported
- repairing or searching for an unknown polynomial
- cryptographic signature verification
Behavior
- refin and refout are independent. refin false reads each input byte most-significant bit first; refin true reads each input byte least-significant bit first. After the message bits and any width-bit zero augmentation, refout true reverses the whole width-bit register and refout false leaves it unreflected. refout is not taken from refin. CRC-12/UMTS (alias CRC-12/3GPP) is the pinned crossed-endian record: refin is false and refout is true, so its bytes are read most-significant bit first and its register is still reflected before xorout.
- Catalogue names, aliases and list queries match by ASCII case-folding only: code units U+0061 through U+007A map to U+0041 through U+005A and every other code unit is unchanged. There is no trimming and no Unicode normalization. crc-8/smbus and the alias crc-8 select CRC-8/SMBUS. CRC-8/SMBU followed by U+017F does not select CRC-8/SMBUS.
- poly, init, xorout and the running register are kept inside the unsigned mask 2^width-1 after every shift and after xorout. Hex is lowercase, zero-padded to ceil(width/4) digits, with no sign and no 0x prefix. Integers wider than 53 bits are returned as base-10 strings.
- augment may be omitted; omission means false. When augment is true, the engine reads exactly width extra zero bits after the message bytes and before refout and xorout. Those bits are not an extra zero byte.
- data_version is the pinned catalogue version reveng-catalogue-2024-12-11 (CRC RevEng catalogue page last updated 11 December 2024, retrieved 2026-10-21). The pin has 27 named records, widths 3 through 64, each with its published check and residue.
- crc_hex is a claim of ceil(width/4) ASCII hex digits. A different length, or a non-hex character, is invalid_input rather than a mismatch. valid is false and reason is crc_mismatch when the claim differs from the CRC of message_hex under the same augment flag; that mismatch is a normal result. claimed_crc_hex folds only ASCII A-F.
- Disclaimer: format transform only; provides no confidentiality, integrity, or authenticity.
Input
algorithm(string, required): min length 1; max length 16message_hex(string, required): min length 0; max length 4096; pattern^(?:[0-9a-fA-F]{2})*$crc_hex(string, required): min length 1; max length 16; pattern^[0-9a-fA-F]+$augment(boolean, optional)
Output
data_version(constant "reveng-catalogue-2024-12-11", required)algorithm(string, required): pattern^[A-Z0-9][A-Z0-9/-]*$width(one of 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 21, 24, 31, 32, 40, 64, required)refin(boolean, required)refout(boolean, required)crossed_endian(boolean, required)augmented(boolean, required)valid(boolean, required)reason(one of "match", "crc_mismatch", required)expected_crc_hex(string, required): min length 1; max length 16; pattern^[0-9a-f]+$claimed_crc_hex(string, required): min length 1; max length 16; pattern^[0-9a-f]+$residue_hex(string, required): min length 1; max length 16; pattern^[0-9a-f]+$
Limits
- max message hex bytes: 4096
- max algorithm bytes: 16
- max crc hex bytes: 16
Example
Request input:
{
"algorithm": "CRC-12/UMTS",
"message_hex": "313233343536373839",
"crc_hex": "DAF"
}
Response:
{
"result": {
"data_version": "reveng-catalogue-2024-12-11",
"algorithm": "CRC-12/UMTS",
"width": 12,
"refin": false,
"refout": true,
"crossed_endian": true,
"augmented": false,
"valid": true,
"reason": "match",
"expected_crc_hex": "daf",
"claimed_crc_hex": "daf",
"residue_hex": "000"
}
}
How to call it
MCP
Connect https://computefirst.net/mcp (setup), then call execute with:
{
"id": "crc-catalog-check",
"version": "1.0.0",
"input": {
"algorithm": "CRC-12/UMTS",
"message_hex": "313233343536373839",
"crc_hex": "DAF"
}
}
HTTP (no key)
curl -X POST https://computefirst.net/v1/tools/crc-catalog-check/versions/1.0.0/execute \
-H "Content-Type: application/json" \
-d '{"algorithm":"CRC-12/UMTS","message_hex":"313233343536373839","crc_hex":"DAF"}'
The machine-readable contract is at /v1/tools/crc-catalog-check/versions/1.0.0.
CLI
node cli.mjs run crc-catalog-check 1.0.0 --input input.json --base-url https://computefirst.net
Get the client at /clients/cli/.
Related tools
- Crc check value verify: Recompute a pinned catalogue CRC of ASCII 123456789 and compare an observed check.
- Crc parameters validate: Validate a Rocksoft CRC parameter tuple against the pinned CRC RevEng catalogue.
- Crc catalog compute: Compute a pinned RevEng CRC of hex bytes, including crossed-endian CRC-12/UMTS.
- Hash digest verify: Recompute a fixed-length digest over encoded input bytes and compare it to an expected digest given in any encoding.
- Crc catalog describe: Describe one pinned RevEng CRC model, including independent refin and refout.
- Crc catalog identify: Identify pinned CRC RevEng algorithms that match every explicit message and check sample.