BROWSER IMPLEMENTATIONVerification matrix.
Recorded 2026-11-02 · 226 passed · 0 skipped · 53 tools · Node v26.7.0.
Source files changed since this snapshot. Results need a fresh regression run. These are automated library checks, not an EMVCo certification, a security audit or a full browser interaction test.
Evidence matters: an independent known answer comes from a separate published vector or implementation. Round trips and synthetic examples are useful, but cannot establish correctness on their own. Desktop C++ results are documented separately under Help → Verification.
← All tools Connected workflows
Key generation → KCV → TR-31 and UDK → Session → ARQC → ARPC use explicit transfers and page-local memory.
Key workspace model checks cover all six key types, authenticated TR-31 round trips, invalid-input rejection and stale-state clearing. These are workflow consistency tests, not new independent cryptographic vectors. The underlying calculators retain the evidence and limitations below.
Recorded workspace model checks
- passed: key workflow preserves the exact key through KCV and TR-31 for every generated type
- passed: key workflow rejects wrapping before checking and invalidates downstream data on source changes
- passed: key workflow failed checks and wraps discard stale output, and clear discards all key state
Developer interaction check: npm run test:workflows checks actual page controls, explicit TDES/AES transfers, invalidation, pagehide, clear, and absence of key storage. Its result is separate from the library snapshot above.
Needs rerun · 7 recorded checks
Supported methods
ATR HEX bytes in Parse; HEX patterns or descriptive text in Search.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
An ATR is not a unique card identifier. Contactless pseudo-ATRs and malformed data may need reader-specific interpretation.
PC/SC specifications · Specification/reference, not a certification.
Recorded checks and worked example
- passed — ATR patterns support nibbles, ranges, and bounded variable tails
tests/atr-catalog.test.mjs - passed — masked matches apply each byte mask, including partial nibbles
tests/atr-catalog.test.mjs - passed — source parsers preserve descriptions, masks and locations
tests/atr-catalog.test.mjs - passed — imported catalog is populated, deduplicated and fully attributable
tests/atr-catalog.test.mjs - passed — ATR conventions, protocols and checksum
tests/atr-parser.test.mjs - passed — ATR historical data and trailing bytes
tests/atr-parser.test.mjs - passed — Reject malformed and truncated ATRs
tests/atr-parser.test.mjs
Worked example (not necessarily independent)
In Parse, enter 3B00.
Direct convention
Historical bytes: 0
Default protocol: T=0
Needs rerun · 3 recorded checks
Supported methods
Find application identifiers and their sources.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Reference and parser checks cover the tested data and cases. Catalog accuracy and external coverage are not guaranteed.
Recorded checks and worked example
- passed — AID search accepts spaced bytes, mixed case, vendors and categories
tests/aid-catalog.test.mjs - passed — References have valid identifiers, sources and distinct entries
tests/aid-catalog.test.mjs - passed — Merged AID catalog retains both upstream sources and alternate names
tests/aid-merge.test.mjs
Needs rerun · 7 recorded checks
Supported methods
Look up tags, meanings, formats, and byte lengths.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Reference and parser checks cover the tested data and cases. Catalog accuracy and external coverage are not guaranteed.
Recorded checks and worked example
- passed — dictionary adds exactly 33 profile tags with explicit version and reference
tests/emv-tag-profiles.test.mjs - passed — dictionary renders alternate meanings, network filters, links and reset
tests/emv-tag-profiles.test.mjs - passed — profile links restore scope and empty searches stay safe
tests/emv-tag-profiles.test.mjs - passed — unscoped TLV parsing never assigns one network meaning to a shared tag
tests/emv-tag-profiles.test.mjs - passed — follow-up tags retain only confirmed meanings and filter by profile
tests/emv-tag-profiles.test.mjs - passed — Country codes preserve zeros and current currency transitions
tests/references.test.mjs - passed — Languages deduplicate bibliographic and terminologic aliases
tests/references.test.mjs
Needs rerun · 1 recorded checks
Supported methods
Two-byte HEX SW1/SW2 value; meanings may depend on the application.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
A success status says the command completed; it does not identify the returned data format.
EMV specifications · Specification/reference, not a certification.
Recorded checks and worked example
- passed — Status lookup handles exact codes and parameterized responses
tests/apdu-status.test.mjs
Worked example (not necessarily independent)
Enter 9000.
Success
Needs rerun · 4 recorded checks
Supported methods
Look up issuer, network, type, and country.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Reference and parser checks cover the tested data and cases. Catalog accuracy and external coverage are not guaranteed.
Recorded checks and worked example
- passed — BIN input preserves zeros, accepts 6-20 digits and rejects malformed input
tests/bin-lookup.test.mjs - passed — network rule boundaries do not mislabel adjacent ranges
tests/bin-lookup.test.mjs - passed — bundled data contains the declared number of unique six-digit BINs
tests/bin-lookup.test.mjs - passed — merge keeps original values and attributes added and differing BINs
tests/bin-lookup.test.mjs
Needs rerun · 7 recorded checks
Supported methods
Pasted track data or a number up to 19 digits for Luhn. Track checks depend on the chosen input representation.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Luhn does not verify an account. CRC16 is not the magnetic-track LRC; character parity requires encoded track bits.
ISO standards catalogue · Specification/reference, not a certification.
Recorded checks and worked example
- passed — Generated numbers have the selected length and valid Luhn parity at every length
tests/luhn-generator.test.mjs - passed — Generator rejects unsupported lengths
tests/luhn-generator.test.mjs - passed — MagTek Track 2 example ;123? yields LRC 4 with odd parity
tests/magstripe-encoding.test.mjs - passed — Track 1 alphabet and both parity dimensions
tests/magstripe-encoding.test.mjs - passed — Luhn known vectors, separators and invalid input
tests/magstripe.test.mjs - passed — Track decoder extracts both formats and does not retain discretionary values
tests/magstripe.test.mjs - passed — Malformed and unsupported tracks do not silently pass
tests/magstripe.test.mjs
Worked example (not necessarily independent)
In Luhn, enter synthetic number 4111111111111111.
Luhn: passed
Needs rerun · 2 recorded checks
Supported methods
Ten decimal digits; select the documented AMEX method or the separate MOD 9 convention.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
The two methods are not interchangeable. A passing check digit does not establish merchant registration.
American Express merchant resources · Specification/reference, not a certification.
Recorded checks and worked example
- passed — MOD9 supplied example and AMEX documented example
tests/amex-se.test.mjs - passed — SE prefix exceptions and strict format
tests/amex-se.test.mjs
Worked example (not necessarily independent)
Select MOD 9 and enter test value 7992739874.
Check passed
Needs rerun · 2 recorded checks
Supported methods
12-19 digit PAN; first 6/last 4, first 4/last 4, or last 4 only.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Masking changes display only. It is not encryption or proof that a number identifies a real card.
PCI SSC standards · Specification/reference, not a certification.
Recorded checks and worked example
- passed — PAN formats preserve requested digits and total length
tests/pan-masking.test.mjs - passed — Malformed input and invalid formats do not produce a mask
tests/pan-masking.test.mjs
Worked example (not necessarily independent)
Enter synthetic PAN 4111111111111111 and choose First 6 Last 4.
411111******1111
Needs rerun · 30 recorded checks
Supported methods
HEX master keys, PAN, PSN, ATC and exact transaction bytes. TDES and AES workflows have different rules.
Evidence
Mixed evidence: published PyEMV answers, RFC 4493 CMAC, gematik Option C primitive vectors and OpenSSL comparisons. Bulletin 162 full-block complement has a regression case; this does not certify every payment profile.
Limitations
Profile labels are presets, not certification. Select the algorithm, padding and data layout required by the card.
EMV specifications · Specification/reference, not a certification.
Recorded checks and worked example
- passed — AC matches published PyEMV cryptograms
tests/application-cryptogram.test.mjs - passed — both MAC paddings agree with independent OpenSSL at block boundaries
tests/application-cryptogram.test.mjs - passed — AC rejects malformed input, keys and padding
tests/application-cryptogram.test.mjs - passed — ICC input assembly includes AIP, ATC and optional CVR in explicit order
tests/application-cryptogram.test.mjs - passed — ARPC Method 1 matches supplied Y3 example
tests/arpc.test.mjs - passed — ARPC agrees with independent OpenSSL and ASCII response encoding
tests/arpc.test.mjs - passed — ARPC validates key, cryptogram and response code
tests/arpc.test.mjs - passed — AES CMAC matches RFC 4493 published vectors
tests/emv-aes.test.mjs - passed — AES-128/192/256 EMV derivations agree with independent OpenSSL AES
tests/emv-aes.test.mjs - passed — AES CMAC and EMV AC/ARPC method 2 match OpenSSL for all key lengths
tests/emv-aes.test.mjs - passed — AES rejects invalid lengths, options and malformed inputs
tests/emv-aes.test.mjs - passed — TDES None/Odd/Even controls preserve KCV and apply requested byte parity
tests/emv-aes.test.mjs - passed — Option C matches independent gematik AES-128/256 published vectors
tests/emv-aes.test.mjs - passed — Bulletin 162 complements the entire block for AES-192 and AES-256
tests/emv-aes.test.mjs - passed — EFTLab UDK and all four independent AC examples match exactly
tests/emv-profiles.test.mjs - passed — EFTLab session samples preserve requested parity and match byte for byte
tests/emv-profiles.test.mjs - passed — EFTLab ARPC examples match with Mastercard UDK; printed session key differs
tests/emv-profiles.test.mjs - passed — separate terminal and ICC inputs validate byte boundaries before joining
tests/emv-profiles.test.mjs - passed — EMV 4.4 TDES preset uses CSK and method-2 MAC matching OpenSSL
tests/emv-profiles.test.mjs - passed — EMV2000 tree matches published PyEMV vector
tests/session-key.test.mjs - passed — tree configurations and nonzero IV match PyEMV HSM regression vectors
tests/session-key.test.mjs - passed — ARQC-based common derivation matches published common SK vector
tests/session-key.test.mjs - passed — new modes reject incomplete inputs and unsupported tree settings
tests/session-key.test.mjs - passed — EMV Common AC matches published PyEMV vector
tests/session-key.test.mjs - passed — ATC + UN derivation agrees with independent OpenSSL encryption
tests/session-key.test.mjs - passed — session key validates input and never silently ignores UN
tests/session-key.test.mjs - passed — UDK matches independent published Option A and B vectors
tests/udk.test.mjs - passed — KCV agrees with OpenSSL TDES and derived keys have odd parity
tests/udk.test.mjs - passed — Option B falls back to A for short PANs; PSN defaults to 00
tests/udk.test.mjs - passed — UDK rejects malformed inputs
tests/udk.test.mjs
Worked example (not necessarily independent)
UDK: Option A, odd parity, MDK 0123456789ABCDEFFEDCBA9876543210, PAN 4761739001010010, PSN 01.
2F02C8B0E9CBC7B05B5167F7A1CDE6E5
Needs rerun · 4 recorded checks
Supported methods
CA and issuer RSA key fields, certificate, remainder, exponent and assembled static bytes.
Evidence
Synthetic and reference chains, independent OpenSSL RSA recovery and negative cases. Trust-anchor selection and revocation are not established.
Limitations
RSA/SHA-1 checks do not establish CA trust, revocation status or physical-card authenticity. Example data are not live card credentials.
EMV specifications · Specification/reference, not a certification.
Recorded checks and worked example
- passed — SDA tutorial and synthetic chain match independent OpenSSL recovery
tests/sda.test.mjs - passed — SDA rejects tampering and reports optional/trust checks explicitly
tests/sda.test.mjs - passed — SSAD structural validation catches bad padding even with a valid hash
tests/sda.test.mjs - passed — second EFTLab SDA example recovers DAC5 and expected hash
tests/sda.test.mjs
Worked example (not necessarily independent)
Load the built-in synthetic example; recover the issuer key, then use it in Verify SDA.
Static signature: verified
DAC: ABCD
Needs rerun · 3 recorded checks
Supported methods
RSA certificates, exponents, remainders, signed dynamic data and the exact DDOL input bytes.
Evidence
Synthetic and reference chains, independent OpenSSL RSA recovery and tamper cases. No physical card possession test or CA trust qualification.
Limitations
Only the supplied chain and signed bytes are checked. Terminal trust, revocation and live-card communication remain outside this tool.
EMV specifications · Specification/reference, not a certification.
Recorded checks and worked example
- passed — DDA tutorial and synthetic chain match independent OpenSSL RSA recovery
tests/dda.test.mjs - passed — DDA rejects mismatched inputs, expired certificates and malformed RSA values
tests/dda.test.mjs - passed — DDA structural checks reject signed malformed blocks even when SHA-1 matches
tests/dda.test.mjs
Worked example (not necessarily independent)
Load the built-in synthetic example and run issuer recovery, ICC recovery and signed-data verification.
Dynamic signature: verified
Needs rerun · 7 recorded checks
Supported methods
Enter the HEX and decimal fields labelled on each tab. Profile-specific lengths are enforced.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
This demonstrates the first tab only. Other stages need their own profile inputs; outputs do not prove issuer authorization.
M/Chip algorithms · Specification/reference, not a certification.
Recorded checks and worked example
- passed — data-storage matches supplied reference vectors
tests/emv-extra.test.mjs - passed — mastercard-secure-messaging matches supplied reference vectors
tests/emv-extra.test.mjs - passed — visa-secure-messaging matches supplied reference vectors
tests/emv-extra.test.mjs - passed — cap-token matches supplied reference vectors
tests/emv-extra.test.mjs - passed — visa-hce matches supplied reference vectors
tests/emv-extra.test.mjs - passed — CAP preserves bit order and uses arbitrary precision
tests/emv-extra.test.mjs - passed — Input lengths, numeric DS ID, PIN and padding validation
tests/emv-extra.test.mjs
Worked example (not necessarily independent)
Worked DSPK example: DS ID · packed decimal HEX: 1234567890123456
DSPK: 1844709CB418709CB4184470
Needs rerun · 7 recorded checks
Supported methods
Enter the HEX and decimal fields labelled on each tab. Profile-specific lengths are enforced.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
This demonstrates the first tab only. Other stages need their own profile inputs; outputs do not prove issuer authorization.
PyEMV · Specification/reference, not a certification.
Recorded checks and worked example
- passed — data-storage matches supplied reference vectors
tests/emv-extra.test.mjs - passed — mastercard-secure-messaging matches supplied reference vectors
tests/emv-extra.test.mjs - passed — visa-secure-messaging matches supplied reference vectors
tests/emv-extra.test.mjs - passed — cap-token matches supplied reference vectors
tests/emv-extra.test.mjs - passed — visa-hce matches supplied reference vectors
tests/emv-extra.test.mjs - passed — CAP preserves bit order and uses arbitrary precision
tests/emv-extra.test.mjs - passed — Input lengths, numeric DS ID, PIN and padding validation
tests/emv-extra.test.mjs
Worked example (not necessarily independent)
Worked Session keys example: UDK-SMI · HEX, 16 bytes: 0123456789ABCDEFFEDCBA9876543210; UDK-SMC · HEX, 16 bytes: 0123456789ABCDEFFEDCBA9876543210; Application cryptogram · HEX, 8 bytes: 0102030405060708
Diversification value: 0102030405060708
SK-SMI: 72069E08CAC5BC2A1E06947B7B12B20E
SMI KCV: DF2591
SK-SMC: 72069E08CAC5BC2A1E06947B7B12B20E
SMC KCV: DF2591
Needs rerun · 7 recorded checks
Supported methods
Enter the HEX and decimal fields labelled on each tab. Profile-specific lengths are enforced.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
This demonstrates the first tab only. Other stages need their own profile inputs; outputs do not prove issuer authorization.
PyEMV · Specification/reference, not a certification.
Recorded checks and worked example
- passed — data-storage matches supplied reference vectors
tests/emv-extra.test.mjs - passed — mastercard-secure-messaging matches supplied reference vectors
tests/emv-extra.test.mjs - passed — visa-secure-messaging matches supplied reference vectors
tests/emv-extra.test.mjs - passed — cap-token matches supplied reference vectors
tests/emv-extra.test.mjs - passed — visa-hce matches supplied reference vectors
tests/emv-extra.test.mjs - passed — CAP preserves bit order and uses arbitrary precision
tests/emv-extra.test.mjs - passed — Input lengths, numeric DS ID, PIN and padding validation
tests/emv-extra.test.mjs
Worked example (not necessarily independent)
Worked Session key example: UDK · HEX, 16 bytes: 0123456789ABCDEFFEDCBA9876543210; ATC · HEX, 2 bytes: 0001
Session key: 0123456789ABCDEEFEDCBA987654CDEE
KCV: 2CE56C
Needs rerun · 7 recorded checks
Supported methods
Enter the HEX and decimal fields labelled on each tab. Profile-specific lengths are enforced.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
This demonstrates the first tab only. Other stages need their own profile inputs; outputs do not prove issuer authorization.
CAP compression reference · Specification/reference, not a certification.
Recorded checks and worked example
- passed — data-storage matches supplied reference vectors
tests/emv-extra.test.mjs - passed — mastercard-secure-messaging matches supplied reference vectors
tests/emv-extra.test.mjs - passed — visa-secure-messaging matches supplied reference vectors
tests/emv-extra.test.mjs - passed — cap-token matches supplied reference vectors
tests/emv-extra.test.mjs - passed — visa-hce matches supplied reference vectors
tests/emv-extra.test.mjs - passed — CAP preserves bit order and uses arbitrary precision
tests/emv-extra.test.mjs - passed — Input lengths, numeric DS ID, PIN and padding validation
tests/emv-extra.test.mjs
Worked example (not necessarily independent)
Worked CAP token example: Token data · HEX: AB; IPB · HEX: AA
Binary token data: 10101011
Binary IPB: 10101010
Compressed data: 1111
Token: 15
Needs rerun · 9 recorded checks
Supported methods
Enter the HEX and decimal fields labelled on each tab. Profile-specific lengths are enforced.
Evidence
LUK block construction compared with independent OpenSSL; other exposed stages have reference examples. Hidden MSD and legacy ICC Dynamic Number are not verified.
Limitations
This demonstrates the first tab only. Other stages need their own profile inputs; outputs do not prove issuer authorization.
Visa specification library · Specification/reference, not a certification.
Recorded checks and worked example
- passed — data-storage matches supplied reference vectors
tests/emv-extra.test.mjs - passed — mastercard-secure-messaging matches supplied reference vectors
tests/emv-extra.test.mjs - passed — visa-secure-messaging matches supplied reference vectors
tests/emv-extra.test.mjs - passed — cap-token matches supplied reference vectors
tests/emv-extra.test.mjs - passed — visa-hce matches supplied reference vectors
tests/emv-extra.test.mjs - passed — CAP preserves bit order and uses arbitrary precision
tests/emv-extra.test.mjs - passed — Input lengths, numeric DS ID, PIN and padding validation
tests/emv-extra.test.mjs - passed — LUK matches patent block construction and independent OpenSSL encryption
tests/hce-luk.test.mjs - passed — LUK rejects ambiguous dates and incomplete fields
tests/hce-luk.test.mjs
Worked example (not necessarily independent)
Worked UDK example: MDK · HEX, 16 bytes: 0123456789ABCDEFFEDCBA9876543210; PAN · decimal digits: 4111111111111111; PAN sequence number · 2 digits: 00
UDK: 31089464674C73EC851A6E0737029D19
KCV: 9595D5
Needs rerun · 6 recorded checks
Supported methods
Parse, verify and create two-pass RSA key transport blocks.
Evidence
Independent Python cryptography AES/TDES fixtures, round trips and tamper checks. Two-pass profile only.
Limitations
Reference and parser checks cover the tested data and cases. Catalog accuracy and external coverage are not guaranteed.
Recorded checks and worked example
- passed — TR-34 verifies and decrypts independent Python AES/TDES fixtures
tests/tr34.test.mjs - passed — TR-34 create recovers the key for both envelope ciphers and all wrapped key sizes
tests/tr34.test.mjs - passed — TR-34 distinguishes unauthenticated inspection from signature verification and decryption
tests/tr34.test.mjs - passed — TR-34 rejects wrong signing certificate, recipient key, nonce, signature and digest
tests/tr34.test.mjs - passed — TR-34 malformed structures and unsupported profiles fail explicitly
tests/tr34.test.mjs - passed — TR-34 accepts Base64 and PEM textual transport representations
tests/tr34.test.mjs
Needs rerun · 4 recorded checks
Supported methods
Parse, create and authenticate version 1 AES key blocks.
Evidence
Fixed AES-128/256 type-1 vectors and authentication tamper checks; not all payShield formats.
Limitations
Reference and parser checks cover the tested data and cases. Catalog accuracy and external coverage are not guaranteed.
Recorded checks and worked example
- passed — Thales type 1 matches published AES-128/256 creation and decode vectors
tests/thales-key-block.test.mjs - passed — Thales refuses every modified header/ciphertext/authenticator character
tests/thales-key-block.test.mjs - passed — Thales all AES KBPK sizes preserve authenticated LMK ID and optional blocks
tests/thales-key-block.test.mjs - passed — Thales screen retains TR-31 A-D compatibility and scheme prefix validation
tests/thales-key-block.test.mjs
Needs rerun · 5 recorded checks
Supported methods
Parse, create and authenticate A-D symmetric key blocks.
Evidence
18 independent A-D decode vectors and psec 1.3.0 creation fixtures across 11 protection-key profiles.
Limitations
Reference and parser checks cover the tested data and cases. Catalog accuracy and external coverage are not guaranteed.
Recorded checks and worked example
- passed — TR-31 creation matches independent psec 1.3.0 output for all 11 protection-key profiles
tests/tr31.test.mjs - passed — TR-31 decodes 18 independent published A-D vectors
tests/tr31.test.mjs - passed — TR-31 rejects altered header, ciphertext, MAC and wrong protection key
tests/tr31.test.mjs - passed — TR-31 creation round-trips every protection-key size and extended optional data
tests/tr31.test.mjs - passed — TR-31 malformed inputs fail without producing a key
tests/tr31.test.mjs
Needs rerun · 6 recorded checks
Supported methods
AES-128/192/256; BDK or IK; 8-byte initial ID or 12-byte KSN. PIN: 16-byte fields; MAC: AES-CMAC; data: ECB/CBC without padding.
Evidence
ASC X9 / OpenEMV fixture comparisons; derivation and usage operations are tested.
Limitations
Host calculation only; no device state, update keys or TDES working keys. Counter zero returns only IK. Full ISO-4 requires a PAN field.
ASC X9 published test vectors · Specification/reference, not a certification.
Recorded checks and worked example
- passed — X9 AES-128 IK, transaction keys, sparse/high counters and initial-key path
tests/dukpt-aes.test.mjs - passed — X9 AES-256 BDK with AES-256 and AES-128 working keys
tests/dukpt-aes.test.mjs - passed — AES-192 derivation blocks independently encrypted using OpenSSL
tests/dukpt-aes.test.mjs - passed — X9 Format 4 PIN example and inverse; raw AES distinctly supported
tests/dukpt-aes.test.mjs - passed — NIST CMAC known answers and independent ECB/CBC at every AES size
tests/dukpt-aes.test.mjs - passed — reject invalid KSN, counter, key length, partial blocks and over-limit data
tests/dukpt-aes.test.mjs
Worked example (not necessarily independent)
BDK FEDCBA9876543210F1F1F1F1F1F1F1F1, KSN 123456789012345600000001, AES-128.
PIN key: AF8CB133A78F8DC2D1359F18527593FB
Needs rerun · 3 recorded checks
Supported methods
16-byte starting key and 10-byte KSN. PIN blocks use 8 bytes; data supports ECB/CBC with whole blocks.
Evidence
OpenEMV published transaction-key, PIN, MAC and data fixtures, plus OpenSSL comparisons.
Limitations
This is the TDES profile, not AES DUKPT. The calculator does not manage terminal key erasure or transaction counters.
OpenEMV ANSI test vectors · Specification/reference, not a certification.
Recorded checks and worked example
- passed — 21 ANSI transactions: IPEK, BDK/IPEK derivation, PIN, request/response MAC, CBC data
tests/dukpt-tdes.test.mjs - passed — data variants, ECB/CBC and PIN variant match independent OpenSSL encryption
tests/dukpt-tdes.test.mjs - passed — PAN XOR inverse, zero counter and invalid inputs
tests/dukpt-tdes.test.mjs
Worked example (not necessarily independent)
BDK 0123456789ABCDEFFEDCBA9876543210, KSN FFFF9876543210E00001.
IPEK: 6AC292FAA1315B4D858AB3A3D7D5933A
Current key: 042666B49184CFA368DE9628D0397BC9
Needs rerun · 4 recorded checks
Supported methods
TDES-ECB or AES-ECB; AES also supports RFC 3394 Key Wrap. Key and KEK are HEX.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
AES wrap checks integrity. ECB has no integrity check. Outputs are not TR-31 blocks.
RFC 3394 · Specification/reference, not a certification.
Recorded checks and worked example
- passed — RFC3394 vectors with 128/192/256 bit KEKs
tests/key-encryption.test.mjs - passed — AES wrap all supported sizes against OpenSSL
tests/key-encryption.test.mjs - passed — ECB interop and inverse
tests/key-encryption.test.mjs - passed — bad lengths and methods rejected
tests/key-encryption.test.mjs
Worked example (not necessarily independent)
Select AES Key Wrap. KEK: 000102030405060708090A0B0C0D0E0F. Key: 00112233445566778899AABBCCDDEEFF.
1FA68B0A8112B447AEF34BD8FB5A7B829D3E862371D2CFE5
Needs rerun · 4 recorded checks
Supported methods
8/16/24/32-byte HEX key and Odd or Even target.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
DES effective key bits are preserved. Applying parity changes to AES changes the key.
DES specification (historical FIPS 46-3) · Specification/reference, not a certification.
Recorded checks and worked example
- passed — all 256 byte values, both targets, preserve high bits and are idempotent
tests/key-parity.test.mjs - passed — parity detection and changed positions
tests/key-parity.test.mjs - passed — effective DES keys and KCVs preserved for all DES sizes
tests/key-parity.test.mjs - passed — validation and formatted input
tests/key-parity.test.mjs
Worked example (not necessarily independent)
Enter 0000000000000000 and select Odd.
0101010101010101
Needs rerun · 17 recorded checks
Supported methods
8/16/24/32-byte HEX key. Analysis includes all eight KCV variants when the key length permits them.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Length does not identify an algorithm or certify strength. This is not exhaustive weak-key screening.
KCV method conventions · Specification/reference, not a certification.
Recorded checks and worked example
- passed — DES aliases 8
tests/kcv.test.mjs - passed — SHA256 8
tests/kcv.test.mjs - passed — DES aliases 16
tests/kcv.test.mjs - passed — AES and CMAC 16
tests/kcv.test.mjs - passed — TDEA CMAC 16
tests/kcv.test.mjs - passed — SHA256 16
tests/kcv.test.mjs - passed — DES aliases 24
tests/kcv.test.mjs - passed — AES and CMAC 24
tests/kcv.test.mjs - passed — TDEA CMAC 24
tests/kcv.test.mjs - passed — SHA256 24
tests/kcv.test.mjs - passed — AES and CMAC 32
tests/kcv.test.mjs - passed — SHA256 32
tests/kcv.test.mjs - passed — published EFTLab example and input validation
tests/kcv.test.mjs - passed — odd, even and mixed parity
tests/key-validation.test.mjs - passed — DES component equality ignores parity
tests/key-validation.test.mjs - passed — KCV applicability and published DES vector
tests/key-validation.test.mjs - passed — malformed inputs rejected, spaces accepted
tests/key-validation.test.mjs
Worked example (not necessarily independent)
Enter 0101010101010101.
8 bytes / 64 stored bits
Parity: Odd
Distinct byte values: 1
DES KCV: 8CA64D
Needs rerun · 13 recorded checks
Supported methods
HEX keys of 8, 16, 24 or 32 bytes; the selected KCV method determines accepted sizes.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Eight named methods are available. Equal KCVs do not guarantee equal keys; DES, VISA and ATALLA share the stated zero-block convention.
MagTek KCV conventions · Specification/reference, not a certification.
Recorded checks and worked example
- passed — DES aliases 8
tests/kcv.test.mjs - passed — SHA256 8
tests/kcv.test.mjs - passed — DES aliases 16
tests/kcv.test.mjs - passed — AES and CMAC 16
tests/kcv.test.mjs - passed — TDEA CMAC 16
tests/kcv.test.mjs - passed — SHA256 16
tests/kcv.test.mjs - passed — DES aliases 24
tests/kcv.test.mjs - passed — AES and CMAC 24
tests/kcv.test.mjs - passed — TDEA CMAC 24
tests/kcv.test.mjs - passed — SHA256 24
tests/kcv.test.mjs - passed — AES and CMAC 32
tests/kcv.test.mjs - passed — SHA256 32
tests/kcv.test.mjs - passed — published EFTLab example and input validation
tests/kcv.test.mjs
Worked example (not necessarily independent)
Select DES and enter test key 0123456789ABCDEFFEDCBA9876543210.
KCV: 08D7B4
Needs rerun · 3 recorded checks
Supported methods
HEX or ASCII input, HEX salt, SHA-256/384/512, output length; PBKDF2 iterations or HKDF info.
Evidence
RFC 5869 HKDF known answer and platform-crypto comparisons.
Limitations
The two-iteration example is for reproducibility, not password protection. HKDF is not password stretching.
RFC 8018 · Specification/reference, not a certification.
Recorded checks and worked example
- passed — PBKDF2 and HKDF match Node crypto for every supported hash
tests/key-derivation.test.mjs - passed — RFC 5869 SHA-256 test vector
tests/key-derivation.test.mjs - passed — empty input and validation
tests/key-derivation.test.mjs
Worked example (not necessarily independent)
PBKDF2, SHA-256, ASCII password, salt HEX 73616C74, 2 iterations, 32 bytes.
AE4D0C95AF6B46D32D0ADFF928F06DD02A303F8EF3C251DFD6E2D85A95474C43
Needs rerun · 2 recorded checks
Supported methods
16-byte HEX CVK, 12-19 digit PAN, four-digit expiry and service code; CVV2 fixes service code 000.
Evidence
Independent OpenSSL CBC-MAC and decimalization comparison using test keys.
Limitations
Requires the actual chosen key and byte conventions. This example uses a public test key, not issuer credentials.
EMV specifications · Specification/reference, not a certification.
Recorded checks and worked example
- passed — CVV and CVV2 agree with independent OpenSSL CBC MAC
tests/cvv.test.mjs - passed — Reject malformed inputs and keep leading zero results
tests/cvv.test.mjs
Worked example (not necessarily independent)
Test CVK 0123456789ABCDEFFEDCBA9876543210, PAN 4111111111111111, expiry 3012 in YYMM order, service code 101.
828
Needs rerun · 2 recorded checks
Supported methods
16-byte HEX CVK, 12-19 digit PAN, four-digit expiry and service code; CVV2 fixes service code 000.
Evidence
Independent OpenSSL comparison using test keys and service code 000.
Limitations
Requires the actual chosen key and byte conventions. This example uses a public test key, not issuer credentials.
EMV specifications · Specification/reference, not a certification.
Recorded checks and worked example
- passed — CVV and CVV2 agree with independent OpenSSL CBC MAC
tests/cvv.test.mjs - passed — Reject malformed inputs and keep leading zero results
tests/cvv.test.mjs
Worked example (not necessarily independent)
Test CVK 0123456789ABCDEFFEDCBA9876543210, PAN 4111111111111111, expiry 3012 in YYMM order, service code 000.
597
Needs rerun · 4 recorded checks
Supported methods
16-byte HEX keys; two or three XOR components. Component operations enforce odd parity.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Random components vary on every generation. KEK encryption uses ECB without an integrity check.
KCV method conventions · Specification/reference, not a certification.
Recorded checks and worked example
- passed — KEK tutorial components, XOR, KCV and cryptogram match
tests/key-tools.test.mjs - passed — KEK encryption matches OpenSSL and preserves all key bytes
tests/key-tools.test.mjs - passed — generated components have odd parity and validation rejects malformed keys
tests/key-tools.test.mjs - passed — split components preserve effective key and KCV with both counts
tests/key-tools.test.mjs
Worked example (not necessarily independent)
In KCV/Combine, enter one key: 0123456789ABCDEFFEDCBA9876543210.
KCV: 08D7B4
Needs rerun · 3 recorded checks
Supported methods
DES/TDES PVK, 4-12 PIN or offset digits, 16-digit decimalization table, and eight-byte validation data.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Blank validation uses the rightmost 12 PAN digits before the check digit plus FFFF. Issuer layouts vary. Check length equals PIN length; no truncated-offset recovery.
IBM PIN offset generation · Specification/reference, not a certification.
Recorded checks and worked example
- passed — synthetic offset and recovery
tests/pin-offset.test.mjs - passed — independent OpenSSL encryption with all key sizes, PIN lengths and custom tables
tests/pin-offset.test.mjs - passed — explicit validation overrides PAN and malformed inputs fail
tests/pin-offset.test.mjs
Worked example (not necessarily independent)
Key 0123456789ABCDEFFEDCBA9876543210; PAN 4111111111111111; PIN 1234; default table and validation convention.
Offset: 3104; recovered PIN: 1234
Needs rerun · 3 recorded checks
Supported methods
16 HEX character encrypted block; source and destination ZPKs of 16 or 24 bytes. TDES-ECB, no padding.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Preserves format and PAN binding. No AES, key derivation, PIN validation or key integrity check. This is a local test calculator, not an HSM.
IBM PIN translation overview · Specification/reference, not a certification.
Recorded checks and worked example
- passed — known PIN block translated and decrypted independently by OpenSSL
tests/pin-translation.test.mjs - passed — all two-key/three-key combinations, identity and round trip
tests/pin-translation.test.mjs - passed — reject malformed blocks and keys; accept whitespace
tests/pin-translation.test.mjs
Worked example (not necessarily independent)
Block 1B9C1845EB993A7A; source 042666B49184CF5C68DE9628D0397B36; destination 0123456789ABCDEFFEDCBA9876543210.
C03D21CDBCB0C58B
Needs rerun · 3 recorded checks
Supported methods
PAN: 12-19 digits; PIN: four digits; PVKI: one digit; PVV key: 16 bytes HEX.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Uses two-key TDES and two-pass decimalization. Indices outside 1-6 are test options; no issuer key lookup or PIN verification is performed.
IBM PVV generation · Specification/reference, not a certification.
Recorded checks and worked example
- passed — PVV synthetic example and independent OpenSSL encryption for every index
tests/pvv.test.mjs - passed — decimalization second pass and leading zero preservation
tests/pvv.test.mjs - passed — PAN check digit excluded, malformed input rejected without truncation
tests/pvv.test.mjs
Worked example (not necessarily independent)
PAN 4111111111111111, PIN 1234, PVKI 1, key 0123456789ABCDEFFEDCBA9876543210.
9464
Needs rerun · 6 recorded checks
Supported methods
Select a format, enter the allowed PIN length, and supply PAN, padding or sequence only when required. ISO-4 optionally accepts an AES key.
Evidence
Mixed evidence: fixed examples, CEN ECI-3 rules, IBM equipment documentation and independent OpenSSL ISO-4 encipherment. Not every legacy alias has an authoritative cryptogram.
Limitations
Most results are clear fields. ISO-4 encrypts only when an AES key is supplied. Randomized formats vary on each run.
ISO-4 implementation guidance · Specification/reference, not a certification.
Recorded checks and worked example
- passed — published deterministic legacy examples and aliases
tests/pin-formats.test.mjs - passed — random field layouts, all 21 choices and explicit ECI-3 convention
tests/pin-formats.test.mjs - passed — ISO-4 includes full PAN and matches independent AES encrypt-XOR-encrypt
tests/pin-formats.test.mjs - passed — reject invalid lengths, sequence, delimiter and key; flag custom ISO padding
tests/pin-formats.test.mjs - passed — CEN ECI-3 fills directly after the PIN; VISA-2 retains its zero-filled slot
tests/pin-formats.test.mjs - passed — IBM EPP/3624 boundary layouts and nonzero sequence numbers
tests/pin-formats.test.mjs
Worked example (not necessarily independent)
ISO-2, PIN 1234. No PAN or key is needed.
241234FFFFFFFFFF
Needs rerun · 3 recorded checks
Supported methods
4-12 decimal PIN digits, 12-19 PAN digits, and F padding. Reverse accepts an 8-byte HEX block.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Custom padding is non-standard. This tool does not decrypt encrypted blocks or verify a cardholder PIN.
Format 0 layout · Specification/reference, not a certification.
Recorded checks and worked example
- passed — ANSI published PIN block example
tests/pin-block.test.mjs - passed — lengths, leading zeros and all custom padding choices
tests/pin-block.test.mjs - passed — malformed PIN, PAN and blocks rejected
tests/pin-block.test.mjs
Worked example (not necessarily independent)
PIN 1234, PAN 4012345678909, padding F.
PIN block: 041274EDCBA9876F
Reverse result: 1234
Needs rerun · 3 recorded checks
Supported methods
8/16/24-byte keys; ECB, CBC, CFB-8/64, OFB-8/64, and selectable padding.
Evidence
OpenSSL mode/key-size comparisons, feedback and padding checks.
Limitations
DES/TDEA are legacy ciphers. Padding and feedback size must match the other implementation.
Historical DES specification · Specification/reference, not a certification.
Recorded checks and worked example
- passed — all key sizes and native modes match OpenSSL
tests/des-cipher.test.mjs - passed — OFB-8 matches independent OpenSSL block feedback for all keys
tests/des-cipher.test.mjs - passed — padding boundaries and validation
tests/des-cipher.test.mjs
Worked example (not necessarily independent)
DES, ECB, no padding. Key: 133457799BBCDFF1. Data: 0123456789ABCDEF.
85E813540F0AB405
Needs rerun · 2 recorded checks
Supported methods
HEX modulus and exponent, or a DER sequence containing two INTEGER values.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
This toy key is not secure. The decoder expects PKCS#1, not a SubjectPublicKeyInfo wrapper.
RFC 8017 · Specification/reference, not a certification.
Recorded checks and worked example
- passed — provided example is byte-exact and accepted by OpenSSL
tests/rsa-der.test.mjs - passed — strict DER lengths and signed integer handling
tests/rsa-der.test.mjs
Worked example (not necessarily independent)
Encode toy modulus 0CA1 and exponent 11.
300702020CA1020111
Needs rerun · 4 recorded checks
Supported methods
PEM keys; 1024/2048/4096-bit generation. OAEP, PKCS#1 v1.5 and raw encryption; SHA-256 signatures.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Keys and OAEP ciphertext are random; exact ciphertext changes. Encryption has modulus-dependent length limits. Raw RSA is provided for inspection.
RFC 8017 · Specification/reference, not a certification.
Recorded checks and worked example
- passed — RSA OAEP interoperates with Node and accepts PKCS1 PEM
tests/rsa-tool.test.mjs - passed — legacy encryption and raw RSA interoperate
tests/rsa-tool.test.mjs - passed — signature generation and verification use Web Crypto and match Node
tests/rsa-tool.test.mjs - passed — invalid inputs rejected
tests/rsa-tool.test.mjs
Worked example (not necessarily independent)
Generate a 2048-bit pair. Encrypt ASCII Hello using OAEP SHA-256, then decrypt with the generated private key.
Recovered HEX: 48656C6C6F
Needs rerun · 2 recorded checks
Supported methods
P-256, P-384, P-521 or secp256k1; HEX private scalars and SEC1 public keys; HEX or ASCII messages.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Key generation is random. Signature encoding and the curve-specific hash must match the verifier.
noble-curves documentation · Specification/reference, not a certification.
Recorded checks and worked example
- passed — all curves and signature formats interoperate with OpenSSL
tests/ecc-tool.test.mjs - passed — key and signature validation; empty messages
tests/ecc-tool.test.mjs
Worked example (not necessarily independent)
Generate a P-256 pair, sign ASCII Hello, then verify using its public key and the unchanged message.
Signature verification: valid
Change message to Hello!: invalid
Needs rerun · 3 recorded checks
Supported methods
Classic DH groups 14/15/16, or ECDH on P-256/P-384/P-521/secp256k1.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
The tiny private value is for demonstration only. Raw secrets need a KDF; DH alone does not authenticate peers.
RFC 3526 · Specification/reference, not a certification.
Recorded checks and worked example
- passed — RFC groups match OpenSSL and two parties agree
tests/dh-tool.test.mjs - passed — ECDH all curves agree with OpenSSL and each other
tests/dh-tool.test.mjs - passed — reject invalid groups, private keys and peer points
tests/dh-tool.test.mjs
Worked example (not necessarily independent)
Classic DH group 14: private key 02, peer public key 04.
Shared secret: 10, left-padded with zeros to 256 bytes
Needs rerun · 3 recorded checks
Supported methods
128/192/256-bit HEX keys; ECB, CBC, CFB, OFB or GCM. IV, padding and authentication fields depend on mode.
Evidence
OpenSSL mode/key-size comparisons, NIST GCM zero vector, padding and tamper checks.
Limitations
This fixed input is a test vector. GCM requires correct nonce and tag handling; ECB does not authenticate data.
FIPS 197 · Specification/reference, not a certification.
Recorded checks and worked example
- passed — AES modes and key sizes agree with OpenSSL, including partial stream blocks
tests/aes-cipher.test.mjs - passed — padding round trips and malformed padding rejection
tests/aes-cipher.test.mjs - passed — GCM NIST zero vector, AAD and tampering
tests/aes-cipher.test.mjs
Worked example (not necessarily independent)
AES-128, ECB, no padding. Key and plaintext are each 16 zero bytes.
66E94BD4EF8A2C3B884CFA59CA342B2E
Needs rerun · 9 recorded checks
Supported methods
ML-DSA 44/65/87, ML-KEM 512/768/1024, SLH-DSA SHA2 128f/192f/256f; raw HEX keys and signatures.
Evidence
Library-backed generation, sign/verify or encapsulate/decapsulate round trips and tamper checks. No external NIST known-answer suite is claimed.
Limitations
Generated values are random. ML-KEM decapsulation uses implicit rejection; it is not a peer-authentication check.
NIST FIPS 203 · Specification/reference, not a certification.
Recorded checks and worked example
- passed — ML-DSA-44 operations and tamper checks
tests/pq-tool.test.mjs - passed — ML-DSA-65 operations and tamper checks
tests/pq-tool.test.mjs - passed — ML-DSA-87 operations and tamper checks
tests/pq-tool.test.mjs - passed — ML-KEM-512 operations and tamper checks
tests/pq-tool.test.mjs - passed — ML-KEM-768 operations and tamper checks
tests/pq-tool.test.mjs - passed — ML-KEM-1024 operations and tamper checks
tests/pq-tool.test.mjs - passed — SLH-DSA-SHA2-128f operations and tamper checks
tests/pq-tool.test.mjs - passed — SLH-DSA-SHA2-192f operations and tamper checks
tests/pq-tool.test.mjs - passed — SLH-DSA-SHA2-256f operations and tamper checks
tests/pq-tool.test.mjs
Worked example (not necessarily independent)
Choose ML-KEM-768. Generate a pair, encapsulate using its public key, then decapsulate using its secret key.
Both parties obtain the same 32-byte shared secret.
Needs rerun · 4 recorded checks
Supported methods
HEX or ASCII input; MD5, SHA-1/2/3, RIPEMD-160 and BLAKE families. Multi-hash and file modes are available.
Evidence
Platform-crypto comparisons and official BLAKE3 known answers.
Limitations
MD5 and SHA-1 are legacy algorithms. A plain hash does not authenticate who supplied the data.
FIPS 180-4 · Specification/reference, not a certification.
Recorded checks and worked example
- passed — thirteen algorithms agree with OpenSSL for empty and binary data
tests/hashes.test.mjs - passed — BLAKE3 official empty and abc vectors
tests/hashes.test.mjs - passed — chunked file hashes match byte hashes, including empty files
tests/hashes.test.mjs - passed — input parsing and comparison are strict
tests/hashes.test.mjs
Worked example (not necessarily independent)
Choose SHA-256 and ASCII. Enter Hello with no trailing newline.
185F8DB32271FE25F561A6FC938B2E264306EC304EDA518007D1764826381969
Needs rerun · 3 recorded checks
Supported methods
HEX key, HEX or ASCII data; MD5, SHA-1, SHA-256, SHA-384 or SHA-512.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
The output is the full HMAC. Sender and verifier must use the same key, input bytes and hash.
RFC 4231 · Specification/reference, not a certification.
Recorded checks and worked example
- passed — HMAC matches RFC 2202 and RFC 4231 samples
tests/hmac.test.mjs - passed — HMAC handles empty and long keys and binary data independently
tests/hmac.test.mjs - passed — HMAC rejects malformed keys and input
tests/hmac.test.mjs
Worked example (not necessarily independent)
HMAC-SHA-256, key HEX 0B repeated 20 times, ASCII data Hi There.
B0344C61D8DB38535CA8AFCEAF0BF12B881DC200C9833DA726E9376C2E32CFF7
Needs rerun · 5 recorded checks
Supported methods
HEX or ASCII data; selectable CRC16 variants, CRC32 and Adler-32.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
CRC16 is a family of algorithms; polynomial, initial value and reflection must match your protocol. Checksums are not authentication.
RFC 1952 · Specification/reference, not a certification.
Recorded checks and worked example
- passed — standard checksum check strings
tests/checksum.test.mjs - passed — binary CRC32 and Adler32 match zlib independently
tests/checksum.test.mjs - passed — checksum rejects invalid formats and supports high bytes
tests/checksum.test.mjs - passed — CRC-16 catalogue check vectors
tests/crc16.test.mjs - passed — Track CRC includes sentinels and excludes inter-track whitespace
tests/crc16.test.mjs
Worked example (not necessarily independent)
Select CRC32 and enter ASCII 123456789.
CBF43926
Needs rerun · 6 recorded checks
Supported methods
16-byte HEX key; HEX or ASCII message, including empty input; maximum 65,536 bytes.
Evidence
All four RFC 4493 known-answer vectors (empty, 16, 40 and 64 bytes), ASCII/HEX equivalence and invalid-input checks.
Limitations
Full 128-bit tag only. No message encryption, key storage or sender identity validation.
RFC 4493 — The AES-CMAC Algorithm · Specification/reference, not a certification.
Recorded checks and worked example
- passed — RFC 4493: 0-byte message
tests/cmac.test.mjs - passed — RFC 4493: 16-byte message
tests/cmac.test.mjs - passed — RFC 4493: 40-byte message
tests/cmac.test.mjs - passed — RFC 4493: 64-byte message
tests/cmac.test.mjs - passed — CMAC ASCII/HEX equivalence and spaced hex
tests/cmac.test.mjs - passed — CMAC rejects incorrect keys, malformed data and oversized messages
tests/cmac.test.mjs
Worked example (not necessarily independent)
Load RFC 4493 Example 1: key 2B7E151628AED2A6ABF7158809CF4F3C; empty message.
BB1D6929E95937287FA37D129B756746
Needs rerun · 3 recorded checks
Supported methods
Algorithm 1 uses an 8-byte DES key; Algorithm 3 uses a 16-byte TDES key. HEX input and mode-specific padding.
Evidence
Independent OpenSSL comparison across algorithms and padding boundaries.
Limitations
The example is ASCII “Now is the time for all ” including its final space. Input padding changes the result.
ISO 9797-1 catalogue · Specification/reference, not a certification.
Recorded checks and worked example
- passed — DES MAC agrees with independent OpenSSL for both algorithms and padding boundaries
tests/des-mac.test.mjs - passed — retail MAC example and ANSI equivalence
tests/des-mac.test.mjs - passed — padding and input validation are explicit
tests/des-mac.test.mjs
Worked example (not necessarily independent)
Select X9.19, key 0123456789ABCDEFFEDCBA9876543210, data HEX 4E6F77206973207468652074696D6520666F7220616C6C20.
A1C72E74EA3FA9B6
Needs rerun · 3 recorded checks
Supported methods
Algorithm 1 uses an 8-byte DES key; Algorithm 3 uses a 16-byte TDES key. HEX input and mode-specific padding.
Evidence
Independent OpenSSL comparison across algorithms and padding boundaries.
Limitations
The example is ASCII “Now is the time for all ” including its final space. Input padding changes the result.
ISO 9797-1 catalogue · Specification/reference, not a certification.
Recorded checks and worked example
- passed — DES MAC agrees with independent OpenSSL for both algorithms and padding boundaries
tests/des-mac.test.mjs - passed — retail MAC example and ANSI equivalence
tests/des-mac.test.mjs - passed — padding and input validation are explicit
tests/des-mac.test.mjs
Worked example (not necessarily independent)
Select Algorithm 3, Method 1, key 0123456789ABCDEFFEDCBA9876543210, data HEX 4E6F77206973207468652074696D6520666F7220616C6C20.
A1C72E74EA3FA9B6
Needs rerun · 5 recorded checks
Supported methods
pyiso8583 4.0.1 ASCII and mixed ASCII/binary profiles. Four ASCII MTI digits; HEX or ASCII wire input; fixed, LLVAR and LLLVAR fields up to DE 128.
Evidence
358 independent pyiso8583 4.0.1 wire encode/decode fixtures cover both named profiles, every supported field, length boundaries and secondary bitmaps. Additional tests check truncation at every byte, malformed input, significant spaces and field 55 TLV. This does not establish compatibility with a particular host.
Limitations
No transport framing, tertiary bitmap, BCD/EBCDIC, custom schemas, network-required-field checks, semantic field validation or MAC verification. Field 55 TLV failures are separate from wire parsing.
pyiso8583 sample profiles · Specification/reference, not a certification.
Recorded checks and worked example
- passed — ISO 8583 wire encoding and decoding match 358 independent pyiso8583 4.0.1 cases
tests/iso8583.test.mjs - passed — ISO 8583 secondary bitmaps, field offsets and field 55 TLV preserve exact bytes
tests/iso8583.test.mjs - passed — ISO 8583 rejects truncation at every byte, trailing input, malformed bitmaps and length prefixes
tests/iso8583.test.mjs - passed — ISO 8583 builder rejects duplicates, bitmap fields, bad MTI, encodings, size and profile
tests/iso8583.test.mjs - passed — ISO 8583 preserves significant spaces and zero-length variable data; malformed field 55 is a separate error
tests/iso8583.test.mjs
Worked example (not necessarily independent)
Choose ASCII input and paste 02000000000000000000.
MTI: 0200
Primary bitmap: 0000000000000000
20 bytes; no data elements.
Needs rerun · 6 recorded checks
Supported methods
Parse nested EMV tags, lengths and values.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Reference and parser checks cover the tested data and cases. Catalog accuracy and external coverage are not guaranteed.
Recorded checks and worked example
- passed — ASN.1 DER example decodes integer, RSA OID, UTF8 and offsets
tests/structure-decoders.test.mjs - passed — ASN.1 BER nested indefinite containers close at the correct boundary
tests/structure-decoders.test.mjs - passed — ASN.1 PEM input decodes a real generated X.509 certificate
tests/structure-decoders.test.mjs - passed — EMV nested tags retain names, values and unknown objects
tests/structure-decoders.test.mjs - passed — Truncated data, primitive indefinite, unexpected EOC and limits are rejected
tests/structure-decoders.test.mjs - passed — ASN.1 flags invalid primitive contents without claiming schema validation
tests/structure-decoders.test.mjs
Needs rerun · 6 recorded checks
Supported methods
Decode DER/BER structures from HEX or PEM.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Reference and parser checks cover the tested data and cases. Catalog accuracy and external coverage are not guaranteed.
Recorded checks and worked example
- passed — ASN.1 DER example decodes integer, RSA OID, UTF8 and offsets
tests/structure-decoders.test.mjs - passed — ASN.1 BER nested indefinite containers close at the correct boundary
tests/structure-decoders.test.mjs - passed — ASN.1 PEM input decodes a real generated X.509 certificate
tests/structure-decoders.test.mjs - passed — EMV nested tags retain names, values and unknown objects
tests/structure-decoders.test.mjs - passed — Truncated data, primitive indefinite, unexpected EOC and limits are rejected
tests/structure-decoders.test.mjs - passed — ASN.1 flags invalid primitive contents without claiming schema validation
tests/structure-decoders.test.mjs
Needs rerun · 4 recorded checks
Supported methods
HEX, ASCII, binary, decimal, octal, Base64 and Base94.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Encoding is reversible and provides no encryption. Base94 conventions are not universal.
RFC 4648 · Specification/reference, not a certification.
Recorded checks and worked example
- passed — all seven formats round-trip Hello
tests/data-converter.test.mjs - passed — preserves all bytes and leading zeros without inventing ASCII
tests/data-converter.test.mjs - passed — rejects malformed and out-of-range data
tests/data-converter.test.mjs - passed — Base94 alphabet boundaries, leading zeros and limits
tests/data-converter.test.mjs
Worked example (not necessarily independent)
Select ASCII and enter Hello.
HEX: 48656C6C6F
Base64: SGVsbG8=
Needs rerun · 2 recorded checks
Supported methods
Country codes and currencies.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Reference and parser checks cover the tested data and cases. Catalog accuracy and external coverage are not guaranteed.
Recorded checks and worked example
- passed — Country codes preserve zeros and current currency transitions
tests/references.test.mjs - passed — Languages deduplicate bibliographic and terminologic aliases
tests/references.test.mjs
Needs rerun · 2 recorded checks
Supported methods
Language names and ISO codes.
Evidence
Regression examples, boundary checks and/or round trips are listed below. A specification link alone is not evidence of an independent known-answer vector.
Limitations
Reference and parser checks cover the tested data and cases. Catalog accuracy and external coverage are not guaranteed.
Recorded checks and worked example
- passed — Country codes preserve zeros and current currency transitions
tests/references.test.mjs - passed — Languages deduplicate bibliographic and terminologic aliases
tests/references.test.mjs