s32sdaf-register-key
Register a device UID and associated smart-card key for S32SDAF / Volkano workflows using the current MCP tool surface. Covers plain ADKP plus wrapped and OID-sensitive families such as ODAK, ADK1, AD
Files2
View on GitHubSKILL.mdskills/s32sdaf/s32sdaf-register-key/SKILL.md
GitHubRegister a Key on the Smart Card
Register a device UID and its associated key on a Volkano smart card. Covers
plain ADKP registration, wrapped families (KUID, KUID_RF,
KUID_PRE_FA, ODAK), and OID-sensitive families (ADK1, ADK2). The
preferred write tool is the generic execute_action(action="register_key", params={...}), which
covers all currently confirmed register commands.
ADKP is the only key type that may be registered in plain form. All other families use wrapped key material.
When to use
Use this skill to register a new UID + key, add/replace a key for an existing UID, choose the correct registration path per family, validate UID/OID/key/ selector inputs, and surface applet-version requirements. Also use it to decide whether the user already has final registration-ready material or must first wrap a plain key.
Do not use it to wrap a plain non-ADKP key (use s32sdaf-wrap-and-register),
delete records, perform challenge-response by itself, generate a debug card by
itself, or guess passwords/UIDs/OIDs/keys/indexes.
Available Capabilities
| Type | Name | Invocation |
|---|---|---|
| Tool | status |
verify MCP server reachability/config |
| Tool | execute_action(action="discover", params={...}) |
inspect registered UIDs before/after |
| Tool | execute_action(action="register_key", params={...}) |
primary generic register (all families) |
| Tool | execute_action(action="register_key", params={"key_type":"ADKP", ...}) |
compatibility wrapper for ADKP |
| Tool | execute_action(action="register_key", params={"key_type":"kUID", ...}) |
compatibility wrapper for plain KUID |
| Tool | execute_action(action="find_installation") |
locate Volkano install |
| Reference | Per-family rules, decision logic, errors | references/key-families.md |
Prefer the generic register tool for new automation. For applet-gated commands
it returns a warning field. Family-specific rules (formats, OID, key_index,
adk2_key_type, applet 1.4+/1.5+) live in references/key-families.md.
Quickstart
- If readiness is unknown, run
status; inspect withexecute_action(action="discover", params={...})if needed. - Determine the family; validate inputs per
references/key-families.md. - Plain ADKP ->
register_key(key_type="ADKP", ...). - Already-wrapped KUID/KUID_RF/KUID_PRE_FA/ODAK/ADK1/ADK2 (512 hex, with
required selectors) ->
register_key(...). - Plain non-ADKP -> switch to
s32sdaf-wrap-and-register. - Optionally verify with
execute_action(action="discover", params={...}).
Workflow
- Confirm readiness. Use
status; confirm what is registered withexecute_action(action="discover", params={...}). For explicit applet-version proof (1.4+/1.5+), route throughs32sdaf-discovery-and-statusand usevolkano.exe --versionrather than inferring from command success. - Validate inputs locally. UID hex (16/32); wrapped keys 512 hex; OID valid
hex/32 chars when required; ODAK/ADK1/ADK2 need a 32-hex UID; ADK1/ADK2
key_index 0..15; ADK2 key type AES/ECC. Reject invalid formatting before any
tool call. See
references/key-families.md. - Choose the path.
- Plain ADKP ->
register_key(key_type="ADKP"). - Already-wrapped KUID/KUID_RF/KUID_PRE_FA/ODAK ->
register_key. - Already-wrapped ADK1/ADK2 with all selectors ->
register_key. - Plain non-ADKP -> switch to
s32sdaf-wrap-and-register.
- Plain ADKP ->
- Execute registration with
uid,key_type,keyorkeybin, and optionaloid,key_index,adk2_key_type,password,volkano_folder. - Verify result. Optionally confirm the UID is present via
execute_action(action="discover", params={...}); provide next-step guidance (authentication or debug-card generation).
Do not collapse ADK1/ADK2 semantics into generic KUID registration. Prefer rejecting ambiguous input over guessing a key type.
Guardrails
Scope - Persistent smart-card write: creates a UID record, adds/replaces key material, and consumes limited storage. Not a read-only workflow.
Destructive actions - Registration mutates the card and can replace existing key material for a UID. Confirm intent before writing. Never invent UIDs, OIDs, keys, indexes, or passwords.
Secrets - Do not echo the smart-card password unnecessarily.
Refuse-and-escalate -
- Plain non-ADKP key: stop; switch to
s32sdaf-wrap-and-register. - Wrapped key not 512 hex chars, or missing family selector: stop and request correct input.
- ODAK with 8-byte UID: reject; requires a 16-byte UID.
- Card full: recommend discovery + deleting unused records before retry.
- Auth/password failure: report; do not retry with invented credentials.
- Full failure catalog:
references/key-families.md.
Validation loop
- Confirm the correct registration path was selected for the family.
- Confirm UID/OID/key/selector values validated before execution.
- Confirm applet-version sensitivity was reported where relevant.
- Execute via the generic register tool (or compat wrapper).
- Pass criterion: registration succeeds (persistent state confirmed when executed) and next-step guidance is provided.
Out of scope
- Wrapping a plain non-ADKP key (use
s32sdaf-wrap-and-register). - Deleting UID records; challenge-response authentication by itself.
- Generating a debug card / DCAT by itself.
See Also
references/key-families.md- per-family requirements, decision logic, and the full error-handling catalog.- Related skills:
s32sdaf-wrap-and-register(wrap plain non-ADKP first),s32sdaf-auth-device/s32sdaf-hse2-authentication(next-step auth),s32sdaf-generate-debug-card(ADK2 debug-card target),s32sdaf-discovery-and-status(readiness / applet-version proof).